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
|
@@ -92,6 +92,15 @@ const formatMessage = (reason: string, description: string | undefined, info: st
|
|
|
92
92
|
const formatMethodAndUrl = (request: HttpClientRequest.HttpClientRequest) =>
|
|
93
93
|
`${request.method} ${UrlParams.redactUrl(request.url)}`
|
|
94
94
|
|
|
95
|
+
// Serialized reasons carry the same request and response information as the
|
|
96
|
+
// message, so headers, URL parameters and bodies stay out of logs. The full
|
|
97
|
+
// objects remain available through the `request` and `response` properties.
|
|
98
|
+
const reasonToJSON = (reason: HttpClientErrorReason, json: unknown) => ({
|
|
99
|
+
...(json as object),
|
|
100
|
+
request: { _id: "HttpClientRequest", method: reason.request.method, url: UrlParams.redactUrl(reason.request.url) },
|
|
101
|
+
...("response" in reason ? { response: { _id: "HttpClientResponse", status: reason.response.status } } : undefined)
|
|
102
|
+
})
|
|
103
|
+
|
|
95
104
|
/**
|
|
96
105
|
* Error describing transport-level failures that occur while sending an HTTP request.
|
|
97
106
|
*
|
|
@@ -123,6 +132,10 @@ export class TransportError extends Data.TaggedError("TransportError")<{
|
|
|
123
132
|
override get message() {
|
|
124
133
|
return formatMessage(formatReason(this._tag), this.description, this.methodAndUrl)
|
|
125
134
|
}
|
|
135
|
+
|
|
136
|
+
override toJSON(): unknown {
|
|
137
|
+
return reasonToJSON(this, super.toJSON())
|
|
138
|
+
}
|
|
126
139
|
}
|
|
127
140
|
|
|
128
141
|
/**
|
|
@@ -156,6 +169,10 @@ export class EncodeError extends Data.TaggedError("EncodeError")<{
|
|
|
156
169
|
override get message() {
|
|
157
170
|
return formatMessage(formatReason(this._tag), this.description, this.methodAndUrl)
|
|
158
171
|
}
|
|
172
|
+
|
|
173
|
+
override toJSON(): unknown {
|
|
174
|
+
return reasonToJSON(this, super.toJSON())
|
|
175
|
+
}
|
|
159
176
|
}
|
|
160
177
|
|
|
161
178
|
/**
|
|
@@ -189,6 +206,10 @@ export class InvalidUrlError extends Data.TaggedError("InvalidUrlError")<{
|
|
|
189
206
|
override get message() {
|
|
190
207
|
return formatMessage(formatReason(this._tag), this.description, this.methodAndUrl)
|
|
191
208
|
}
|
|
209
|
+
|
|
210
|
+
override toJSON(): unknown {
|
|
211
|
+
return reasonToJSON(this, super.toJSON())
|
|
212
|
+
}
|
|
192
213
|
}
|
|
193
214
|
|
|
194
215
|
/**
|
|
@@ -224,10 +245,15 @@ export class StatusCodeError extends Data.TaggedError("StatusCodeError")<{
|
|
|
224
245
|
const info = `${this.response.status} ${this.methodAndUrl}`
|
|
225
246
|
return formatMessage(formatReason(this._tag), this.description, info)
|
|
226
247
|
}
|
|
248
|
+
|
|
249
|
+
override toJSON(): unknown {
|
|
250
|
+
return reasonToJSON(this, super.toJSON())
|
|
251
|
+
}
|
|
227
252
|
}
|
|
228
253
|
|
|
229
254
|
/**
|
|
230
|
-
* Response error for failures while decoding an HTTP response
|
|
255
|
+
* Response error for failures while decoding an HTTP response, including a
|
|
256
|
+
* response with an undeclared status.
|
|
231
257
|
*
|
|
232
258
|
* @stability unstable
|
|
233
259
|
* @category errors
|
|
@@ -259,6 +285,10 @@ export class DecodeError extends Data.TaggedError("DecodeError")<{
|
|
|
259
285
|
const info = `${this.response.status} ${this.methodAndUrl}`
|
|
260
286
|
return formatMessage(formatReason(this._tag), this.description, info)
|
|
261
287
|
}
|
|
288
|
+
|
|
289
|
+
override toJSON(): unknown {
|
|
290
|
+
return reasonToJSON(this, super.toJSON())
|
|
291
|
+
}
|
|
262
292
|
}
|
|
263
293
|
|
|
264
294
|
/**
|
|
@@ -294,6 +324,10 @@ export class EmptyBodyError extends Data.TaggedError("EmptyBodyError")<{
|
|
|
294
324
|
const info = `${this.response.status} ${this.methodAndUrl}`
|
|
295
325
|
return formatMessage(formatReason(this._tag), this.description, info)
|
|
296
326
|
}
|
|
327
|
+
|
|
328
|
+
override toJSON(): unknown {
|
|
329
|
+
return reasonToJSON(this, super.toJSON())
|
|
330
|
+
}
|
|
297
331
|
}
|
|
298
332
|
|
|
299
333
|
/**
|
|
@@ -56,7 +56,11 @@ export const isHttpClientRequest = (u: unknown): u is HttpClientRequest => hasPr
|
|
|
56
56
|
*/
|
|
57
57
|
export interface HttpClientRequest extends Inspectable.Inspectable, Pipeable {
|
|
58
58
|
readonly [TypeId]: typeof TypeId
|
|
59
|
-
|
|
59
|
+
/**
|
|
60
|
+
* The request method, which may be a method outside the known `HttpMethod`
|
|
61
|
+
* literals when the request was converted from a Web or server request.
|
|
62
|
+
*/
|
|
63
|
+
readonly method: string
|
|
60
64
|
readonly url: string
|
|
61
65
|
readonly urlParams: UrlParams.UrlParams
|
|
62
66
|
readonly hash: Option.Option<string>
|
|
@@ -126,7 +130,7 @@ const Proto = {
|
|
|
126
130
|
* @since 4.0.0
|
|
127
131
|
*/
|
|
128
132
|
export function makeWith(
|
|
129
|
-
method:
|
|
133
|
+
method: string,
|
|
130
134
|
url: string,
|
|
131
135
|
urlParams: UrlParams.Input,
|
|
132
136
|
hash: Option.Option<string>,
|
|
@@ -1171,7 +1175,7 @@ export interface CompressionOptions {
|
|
|
1171
1175
|
* `Content-Length`. The compressed body does not retain the original lazy text.
|
|
1172
1176
|
* Stream bodies are compressed lazily and have their content length removed.
|
|
1173
1177
|
* They still require a client runtime that supports streaming request bodies
|
|
1174
|
-
* (
|
|
1178
|
+
* (stable Safari and Firefox do not; see `FetchHttpClient.StreamBodyFallback`).
|
|
1175
1179
|
*
|
|
1176
1180
|
* Returns the original request unchanged for empty, FormData, and raw bodies,
|
|
1177
1181
|
* bodies with a known length below `options.minSize`, or requests with any
|
|
@@ -1203,7 +1207,7 @@ export const compressBody: {
|
|
|
1203
1207
|
* `Content-Length`. The compressed body does not retain the original lazy text.
|
|
1204
1208
|
* Stream bodies are compressed lazily and have their content length removed.
|
|
1205
1209
|
* They still require a client runtime that supports streaming request bodies
|
|
1206
|
-
* (
|
|
1210
|
+
* (stable Safari and Firefox do not; see `FetchHttpClient.StreamBodyFallback`).
|
|
1207
1211
|
*
|
|
1208
1212
|
* Returns the original request unchanged for empty, FormData, and raw bodies,
|
|
1209
1213
|
* bodies with a known length below `options.minSize`, or requests with any
|
|
@@ -1235,7 +1239,7 @@ export const compressBody: {
|
|
|
1235
1239
|
* `Content-Length`. The compressed body does not retain the original lazy text.
|
|
1236
1240
|
* Stream bodies are compressed lazily and have their content length removed.
|
|
1237
1241
|
* They still require a client runtime that supports streaming request bodies
|
|
1238
|
-
* (
|
|
1242
|
+
* (stable Safari and Firefox do not; see `FetchHttpClient.StreamBodyFallback`).
|
|
1239
1243
|
*
|
|
1240
1244
|
* Returns the original request unchanged for empty, FormData, and raw bodies,
|
|
1241
1245
|
* bodies with a known length below `options.minSize`, or requests with any
|
|
@@ -1273,7 +1277,15 @@ export const compressBody: {
|
|
|
1273
1277
|
}
|
|
1274
1278
|
return Effect.map(
|
|
1275
1279
|
compression.compressBody(self.body, algorithm, options),
|
|
1276
|
-
(body) =>
|
|
1280
|
+
(body) =>
|
|
1281
|
+
body === self.body ? self : makeWith(
|
|
1282
|
+
self.method,
|
|
1283
|
+
self.url,
|
|
1284
|
+
self.urlParams,
|
|
1285
|
+
self.hash,
|
|
1286
|
+
Headers.set(bodyInternal.updateContentLength(self.headers, body), "content-encoding", algorithm),
|
|
1287
|
+
body
|
|
1288
|
+
)
|
|
1277
1289
|
)
|
|
1278
1290
|
}
|
|
1279
1291
|
)
|
|
@@ -1686,16 +1698,15 @@ export function toUrl(self: HttpClientRequest): Option.Option<URL> {
|
|
|
1686
1698
|
* @since 4.0.0
|
|
1687
1699
|
*/
|
|
1688
1700
|
export const fromWeb = (request: globalThis.Request): HttpClientRequest => {
|
|
1689
|
-
const method = request.method.toUpperCase()
|
|
1690
|
-
return modify(empty, {
|
|
1691
|
-
method,
|
|
1701
|
+
const method = request.method.toUpperCase()
|
|
1702
|
+
return modify(makeWith(method, "", UrlParams.empty, Option.none(), Headers.empty, HttpBody.empty), {
|
|
1692
1703
|
url: new URL(request.url),
|
|
1693
1704
|
headers: request.headers,
|
|
1694
1705
|
body: fromWebBody(request, method)
|
|
1695
1706
|
})
|
|
1696
1707
|
}
|
|
1697
1708
|
|
|
1698
|
-
const fromWebBody = (request: globalThis.Request, method:
|
|
1709
|
+
const fromWebBody = (request: globalThis.Request, method: string): HttpBody.HttpBody => {
|
|
1699
1710
|
if (!hasBody(method) || request.body === null) {
|
|
1700
1711
|
return HttpBody.empty
|
|
1701
1712
|
}
|
|
@@ -25,6 +25,7 @@ import * as Headers from "./Headers.ts"
|
|
|
25
25
|
import * as Error from "./HttpClientError.ts"
|
|
26
26
|
import * as HttpClientRequest from "./HttpClientRequest.ts"
|
|
27
27
|
import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
|
|
28
|
+
import * as internalUrlParams from "./internal/urlParams.ts"
|
|
28
29
|
import { getWebSource, WebSourceSymbol } from "./internal/webResponse.ts"
|
|
29
30
|
import * as UrlParams from "./UrlParams.ts"
|
|
30
31
|
|
|
@@ -454,9 +455,9 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
|
|
|
454
455
|
}
|
|
455
456
|
|
|
456
457
|
get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, Error.HttpClientError> {
|
|
457
|
-
return Effect.flatMap(this.
|
|
458
|
+
return Effect.flatMap(this.arrayBuffer, (bytes) =>
|
|
458
459
|
Effect.try({
|
|
459
|
-
try: () => UrlParams.fromInput(
|
|
460
|
+
try: () => UrlParams.fromInput(internalUrlParams.fromBody(bytes)),
|
|
460
461
|
catch: (cause) =>
|
|
461
462
|
new Error.HttpClientError({
|
|
462
463
|
reason: new Error.DecodeError({
|
package/src/http/HttpMethod.ts
CHANGED
|
@@ -57,12 +57,20 @@ export declare namespace HttpMethod {
|
|
|
57
57
|
/**
|
|
58
58
|
* Returns `true` when a method can carry a request body and narrows it to `HttpMethod.WithBody`.
|
|
59
59
|
*
|
|
60
|
+
* **Details**
|
|
61
|
+
*
|
|
62
|
+
* Methods outside the known `HttpMethod` literals, such as a received
|
|
63
|
+
* `"PROPFIND"`, are treated as capable of carrying a body but are not narrowed.
|
|
64
|
+
*
|
|
60
65
|
* @stability unstable
|
|
61
66
|
* @category guards
|
|
62
67
|
* @since 4.0.0
|
|
63
68
|
*/
|
|
64
|
-
export
|
|
65
|
-
|
|
69
|
+
export function hasBody(method: HttpMethod): method is HttpMethod.WithBody
|
|
70
|
+
export function hasBody(method: string): boolean
|
|
71
|
+
export function hasBody(method: string): boolean {
|
|
72
|
+
return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE"
|
|
73
|
+
}
|
|
66
74
|
|
|
67
75
|
/**
|
|
68
76
|
* Provides a readonly set containing every supported `HttpMethod` literal.
|
|
@@ -44,6 +44,7 @@ import * as decompressionInternal from "./internal/decompression.ts"
|
|
|
44
44
|
import * as bodyInternal from "./internal/httpBody.ts"
|
|
45
45
|
import { appendPreResponseHandlerUnsafe, CurrentRequestState } from "./internal/requestState.ts"
|
|
46
46
|
import * as tracing from "./internal/tracing.ts"
|
|
47
|
+
import * as internalUrlParams from "./internal/urlParams.ts"
|
|
47
48
|
import * as UrlParams from "./UrlParams.ts"
|
|
48
49
|
|
|
49
50
|
/**
|
|
@@ -135,19 +136,6 @@ export declare namespace HttpMiddleware {
|
|
|
135
136
|
*/
|
|
136
137
|
export const make = <M extends HttpMiddleware>(middleware: M): M => middleware
|
|
137
138
|
|
|
138
|
-
const stripSearchAndHash = (url: string): string => {
|
|
139
|
-
const queryIndex = url.indexOf("?")
|
|
140
|
-
const hashIndex = url.indexOf("#")
|
|
141
|
-
|
|
142
|
-
if (queryIndex === -1) {
|
|
143
|
-
return hashIndex === -1 ? url : url.slice(0, hashIndex)
|
|
144
|
-
}
|
|
145
|
-
if (hashIndex === -1) {
|
|
146
|
-
return url.slice(0, queryIndex)
|
|
147
|
-
}
|
|
148
|
-
return url.slice(0, Math.min(queryIndex, hashIndex))
|
|
149
|
-
}
|
|
150
|
-
|
|
151
139
|
/**
|
|
152
140
|
* Runs an effect with HTTP response logging disabled for the current server request.
|
|
153
141
|
*
|
|
@@ -232,7 +220,7 @@ export const logger: <E, R>(
|
|
|
232
220
|
Effect.withFiber((fiber) => {
|
|
233
221
|
const request = Context.getUnsafe(fiber.context, HttpServerRequest)
|
|
234
222
|
const state = Context.getOrUndefined(fiber.context, CurrentRequestState)
|
|
235
|
-
const path = stripSearchAndHash(request.url)
|
|
223
|
+
const path = internalUrlParams.stripSearchAndHash(request.url)
|
|
236
224
|
return Effect.withLogSpan(
|
|
237
225
|
Effect.flatMap(Effect.exit(httpApp), (exit) => {
|
|
238
226
|
if (state?.loggerDisabled) {
|
|
@@ -278,12 +266,19 @@ export const isTracerDisabledUnsafe = (
|
|
|
278
266
|
|
|
279
267
|
// OpenTelemetry requires failed server spans for 5xx responses.
|
|
280
268
|
const responseSpanExit = (
|
|
269
|
+
fiber: Fiber.Fiber<unknown, unknown>,
|
|
281
270
|
request: HttpServerRequest,
|
|
282
271
|
response: HttpServerResponse
|
|
283
272
|
): Exit.Exit<HttpServerResponse, HttpServerError> => {
|
|
284
273
|
if (!(response.status >= 500 && response.status < 600)) {
|
|
285
274
|
return Exit.succeed(response)
|
|
286
275
|
}
|
|
276
|
+
// The message is path-only, but exporters can still read `error.request.url`
|
|
277
|
+
// after the request-scoped redacted names are gone.
|
|
278
|
+
const url = UrlParams.redactUrl(request.url, fiber.getRef(UrlParams.CurrentRedactedNames))
|
|
279
|
+
if (url !== request.url) {
|
|
280
|
+
request = request.modify({ url })
|
|
281
|
+
}
|
|
287
282
|
const stackTraceLimit = getStackTraceLimit()
|
|
288
283
|
setStackTraceLimit(0)
|
|
289
284
|
try {
|
|
@@ -319,7 +314,7 @@ export const tracer: <E, R>(
|
|
|
319
314
|
fiber.setContext(prevServices)
|
|
320
315
|
const endTime = fiber.getRef(Clock).currentTimeNanosUnsafe()
|
|
321
316
|
if (Exit.isSuccess(exit) && (!span.sampled || fiber.getRef(Tracer) === nativeTracer)) {
|
|
322
|
-
span.end(endTime, responseSpanExit(request, exit.value))
|
|
317
|
+
span.end(endTime, responseSpanExit(fiber, request, exit.value))
|
|
323
318
|
return undefined
|
|
324
319
|
}
|
|
325
320
|
const redactedHeaderNames = fiber.getRef(Headers.CurrentRedactedNames)
|
|
@@ -333,10 +328,10 @@ export const tracer: <E, R>(
|
|
|
333
328
|
// OpenTelemetry only treats 5xx responses as server span errors; interrupts still fail the span.
|
|
334
329
|
spanExit = Option.isSome(cause) && (response.status >= 500 || Cause.hasInterrupts(cause.value))
|
|
335
330
|
? Exit.failCause(cause.value)
|
|
336
|
-
: responseSpanExit(request, response)
|
|
331
|
+
: responseSpanExit(fiber, request, response)
|
|
337
332
|
} else {
|
|
338
333
|
response = exit.value
|
|
339
|
-
spanExit = responseSpanExit(request, response)
|
|
334
|
+
spanExit = responseSpanExit(fiber, request, response)
|
|
340
335
|
}
|
|
341
336
|
if (span.sampled) {
|
|
342
337
|
span.attribute("http.request.method", request.method)
|
|
@@ -434,7 +429,9 @@ export interface TrustedProxyOptions {
|
|
|
434
429
|
* @category proxying
|
|
435
430
|
* @since 4.0.0
|
|
436
431
|
*/
|
|
437
|
-
export const xForwardedHeaders = (options: TrustedProxyOptions):
|
|
432
|
+
export const xForwardedHeaders = (options: TrustedProxyOptions): <E, R>(
|
|
433
|
+
httpApp: Effect.Effect<HttpServerResponse, E, HttpServerRequest | R>
|
|
434
|
+
) => Effect.Effect<HttpServerResponse, E, HttpServerRequest | R> => {
|
|
438
435
|
const { trustedProxies } = options
|
|
439
436
|
const isTrusted: Predicate<NetAddress.IpAddress> = typeof trustedProxies === "function"
|
|
440
437
|
? trustedProxies
|
package/src/http/HttpRouter.ts
CHANGED
|
@@ -284,7 +284,8 @@ function sliceRequestUrl(
|
|
|
284
284
|
}
|
|
285
285
|
while (index < url.length && !"/?;#".includes(url[index])) index++
|
|
286
286
|
}
|
|
287
|
-
|
|
287
|
+
const rest = url.slice(index)
|
|
288
|
+
return request.modify({ url: rest.startsWith("/") ? rest : "/" + rest })
|
|
288
289
|
}
|
|
289
290
|
|
|
290
291
|
function countSegments(prefix: string, ignoreDuplicateSlashes: boolean) {
|
|
@@ -23,7 +23,7 @@ import { hasProperty } from "../Predicate.ts"
|
|
|
23
23
|
import type * as Request from "./HttpServerRequest.ts"
|
|
24
24
|
import * as Respondable from "./HttpServerRespondable.ts"
|
|
25
25
|
import * as Response from "./HttpServerResponse.ts"
|
|
26
|
-
import * as
|
|
26
|
+
import * as internalUrlParams from "./internal/urlParams.ts"
|
|
27
27
|
|
|
28
28
|
const TypeId = "~effect/http/HttpServerError"
|
|
29
29
|
|
|
@@ -280,7 +280,7 @@ export class ClientAbort extends Context.Service<ClientAbort, true>()("effect/ht
|
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
const formatMethodAndUrl = (request: Request.HttpServerRequest) =>
|
|
283
|
-
`${request.method} ${
|
|
283
|
+
`${request.method} ${internalUrlParams.toPath(request.url)}`
|
|
284
284
|
|
|
285
285
|
const formatRequestMessage = (reason: string, description: string | undefined, info: string) => {
|
|
286
286
|
const prefix = `${reason} (${info})`
|
|
@@ -32,10 +32,11 @@ import * as Headers from "./Headers.ts"
|
|
|
32
32
|
import * as HttpBody from "./HttpBody.ts"
|
|
33
33
|
import * as HttpClientRequest from "./HttpClientRequest.ts"
|
|
34
34
|
import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
|
|
35
|
-
import { hasBody
|
|
35
|
+
import { hasBody } from "./HttpMethod.ts"
|
|
36
36
|
import { HttpServerError, type RequestError, RequestParseError } from "./HttpServerError.ts"
|
|
37
37
|
import * as bodyInternal from "./internal/httpBody.ts"
|
|
38
38
|
import * as lazyStream from "./internal/lazyStream.ts"
|
|
39
|
+
import * as internalUrlParams from "./internal/urlParams.ts"
|
|
39
40
|
import * as Multipart from "./Multipart.ts"
|
|
40
41
|
import * as UrlParams from "./UrlParams.ts"
|
|
41
42
|
|
|
@@ -77,7 +78,9 @@ export const TypeId = "~effect/http/HttpServerRequest"
|
|
|
77
78
|
* creating adjusted request views. `upgrade` completes a WebSocket handshake
|
|
78
79
|
* for `Upgrade: websocket`. Platforms that can hand over the connection, such
|
|
79
80
|
* as Node, answer other protocols with `101 Switching Protocols` and expose
|
|
80
|
-
* the raw connection.
|
|
81
|
+
* the raw connection. `upgradeWith` does the same and adds custom headers to
|
|
82
|
+
* the `101` response; `upgrade` is `upgradeWith({})`. WebSocket upgrades fail
|
|
83
|
+
* when custom headers are given.
|
|
81
84
|
*
|
|
82
85
|
* @stability unstable
|
|
83
86
|
* @category models
|
|
@@ -88,7 +91,11 @@ export interface HttpServerRequest extends HttpIncomingMessage.HttpIncomingMessa
|
|
|
88
91
|
readonly source: object
|
|
89
92
|
readonly url: string
|
|
90
93
|
readonly originalUrl: string
|
|
91
|
-
|
|
94
|
+
/**
|
|
95
|
+
* The uppercase request method as received, which may be a method outside
|
|
96
|
+
* the known `HttpMethod` literals (for example `"PROPFIND"`).
|
|
97
|
+
*/
|
|
98
|
+
readonly method: string
|
|
92
99
|
readonly cookies: ReadonlyRecord<string, string>
|
|
93
100
|
|
|
94
101
|
readonly multipart: Effect.Effect<
|
|
@@ -99,6 +106,9 @@ export interface HttpServerRequest extends HttpIncomingMessage.HttpIncomingMessa
|
|
|
99
106
|
readonly multipartStream: Stream.Stream<Multipart.Part, Multipart.MultipartError>
|
|
100
107
|
|
|
101
108
|
readonly upgrade: Effect.Effect<Socket.Socket, HttpServerError>
|
|
109
|
+
readonly upgradeWith: (options: {
|
|
110
|
+
readonly headers?: Headers.Input | undefined
|
|
111
|
+
}) => Effect.Effect<Socket.Socket, HttpServerError>
|
|
102
112
|
|
|
103
113
|
/**
|
|
104
114
|
* Address of the directly connected peer. Trusted proxy middleware replaces
|
|
@@ -558,8 +568,8 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
558
568
|
options.protocol ?? this.protocol
|
|
559
569
|
)
|
|
560
570
|
}
|
|
561
|
-
get method():
|
|
562
|
-
return this.source.method.toUpperCase()
|
|
571
|
+
get method(): string {
|
|
572
|
+
return this.source.method.toUpperCase()
|
|
563
573
|
}
|
|
564
574
|
get originalUrl() {
|
|
565
575
|
return this.source.url
|
|
@@ -607,22 +617,7 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
607
617
|
|
|
608
618
|
private textEffect: Effect.Effect<string, HttpServerError> | undefined
|
|
609
619
|
get text(): Effect.Effect<string, HttpServerError> {
|
|
610
|
-
|
|
611
|
-
return this.textEffect
|
|
612
|
-
}
|
|
613
|
-
this.textEffect = Effect.runSync(Effect.cached(
|
|
614
|
-
Effect.tryPromise({
|
|
615
|
-
try: () => this.source.text(),
|
|
616
|
-
catch: (cause) =>
|
|
617
|
-
new HttpServerError({
|
|
618
|
-
reason: new RequestParseError({
|
|
619
|
-
request: this,
|
|
620
|
-
cause
|
|
621
|
-
})
|
|
622
|
-
})
|
|
623
|
-
})
|
|
624
|
-
))
|
|
625
|
-
return this.textEffect
|
|
620
|
+
return this.textEffect ??= Effect.map(this.arrayBuffer, (buffer) => textDecoder.decode(buffer))
|
|
626
621
|
}
|
|
627
622
|
|
|
628
623
|
get json(): Effect.Effect<Schema.Json, HttpServerError> {
|
|
@@ -640,9 +635,9 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
640
635
|
}
|
|
641
636
|
|
|
642
637
|
get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, HttpServerError> {
|
|
643
|
-
return Effect.flatMap(this.
|
|
638
|
+
return Effect.flatMap(this.arrayBuffer, (bytes) =>
|
|
644
639
|
Effect.try({
|
|
645
|
-
try: () => UrlParams.fromInput(
|
|
640
|
+
try: () => UrlParams.fromInput(internalUrlParams.fromBody(bytes)),
|
|
646
641
|
catch: (cause) =>
|
|
647
642
|
new HttpServerError({
|
|
648
643
|
reason: new RequestParseError({
|
|
@@ -686,22 +681,36 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
686
681
|
if (this.arrayBufferEffect) {
|
|
687
682
|
return this.arrayBufferEffect
|
|
688
683
|
}
|
|
689
|
-
this.arrayBufferEffect = Effect.
|
|
690
|
-
|
|
691
|
-
|
|
684
|
+
this.arrayBufferEffect = Effect.withFiber((fiber) => {
|
|
685
|
+
const maxBodySize = fiber.getRef(HttpIncomingMessage.MaxBodySize)
|
|
686
|
+
return Effect.tryPromise({
|
|
687
|
+
try: (signal) =>
|
|
688
|
+
maxBodySize === undefined
|
|
689
|
+
? this.source.arrayBuffer()
|
|
690
|
+
: readArrayBufferLimited(this.source, Number(maxBodySize), signal),
|
|
692
691
|
catch: (cause) =>
|
|
693
692
|
new HttpServerError({
|
|
694
693
|
reason: new RequestParseError({
|
|
695
694
|
request: this,
|
|
695
|
+
reason: cause instanceof BodyTooLargeError ? "BodyTooLarge" : "Parse",
|
|
696
696
|
cause
|
|
697
697
|
})
|
|
698
698
|
})
|
|
699
699
|
})
|
|
700
|
-
)
|
|
700
|
+
}).pipe(
|
|
701
|
+
Effect.cached,
|
|
702
|
+
Effect.runSync
|
|
703
|
+
)
|
|
701
704
|
return this.arrayBufferEffect
|
|
702
705
|
}
|
|
703
706
|
|
|
704
707
|
get upgrade(): Effect.Effect<Socket.Socket, HttpServerError> {
|
|
708
|
+
return this.upgradeWith({})
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
upgradeWith(
|
|
712
|
+
_options: { readonly headers?: Headers.Input | undefined }
|
|
713
|
+
): Effect.Effect<Socket.Socket, HttpServerError> {
|
|
705
714
|
return Effect.fail(
|
|
706
715
|
new HttpServerError({
|
|
707
716
|
reason: new RequestParseError({
|
|
@@ -773,7 +782,7 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
773
782
|
)
|
|
774
783
|
}
|
|
775
784
|
|
|
776
|
-
get method():
|
|
785
|
+
get method(): string {
|
|
777
786
|
return this.source.method
|
|
778
787
|
}
|
|
779
788
|
|
|
@@ -868,9 +877,9 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
868
877
|
}
|
|
869
878
|
|
|
870
879
|
get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, HttpServerError> {
|
|
871
|
-
return Effect.flatMap(this.
|
|
880
|
+
return Effect.flatMap(this.bytes, (bytes) =>
|
|
872
881
|
Effect.try({
|
|
873
|
-
try: () => UrlParams.fromInput(
|
|
882
|
+
try: () => UrlParams.fromInput(internalUrlParams.fromBody(bytes)),
|
|
874
883
|
catch: (cause) => requestParseError(this, undefined, cause)
|
|
875
884
|
}))
|
|
876
885
|
}
|
|
@@ -916,6 +925,12 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
916
925
|
}
|
|
917
926
|
|
|
918
927
|
get upgrade(): Effect.Effect<Socket.Socket, HttpServerError> {
|
|
928
|
+
return this.upgradeWith({})
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
upgradeWith(
|
|
932
|
+
_options: { readonly headers?: Headers.Input | undefined }
|
|
933
|
+
): Effect.Effect<Socket.Socket, HttpServerError> {
|
|
919
934
|
return Effect.fail(requestParseError(this, "Not an upgradeable ServerRequest"))
|
|
920
935
|
}
|
|
921
936
|
}
|
|
@@ -1080,6 +1095,62 @@ const isBodyInit = (u: unknown): u is BodyInit =>
|
|
|
1080
1095
|
|
|
1081
1096
|
const textDecoder = new TextDecoder()
|
|
1082
1097
|
|
|
1098
|
+
class BodyTooLargeError extends Error {
|
|
1099
|
+
constructor(maxBytes: number) {
|
|
1100
|
+
super(`Request body exceeds ${maxBytes} bytes`)
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
|
|
1104
|
+
const readArrayBufferLimited = async (
|
|
1105
|
+
source: Request,
|
|
1106
|
+
maxBytes: number,
|
|
1107
|
+
signal: AbortSignal
|
|
1108
|
+
): Promise<ArrayBuffer> => {
|
|
1109
|
+
const header = source.headers.get("content-length")
|
|
1110
|
+
const contentLength = header !== null && /^\d+$/.test(header) ? Number(header) : undefined
|
|
1111
|
+
if (contentLength !== undefined && contentLength > maxBytes) {
|
|
1112
|
+
throw new BodyTooLargeError(maxBytes)
|
|
1113
|
+
}
|
|
1114
|
+
if (source.body === null) {
|
|
1115
|
+
return new ArrayBuffer(0)
|
|
1116
|
+
}
|
|
1117
|
+
// A constructed request can understate its content-length, so bytes are
|
|
1118
|
+
// counted on every runtime. Cancellation is not awaited, as the source's
|
|
1119
|
+
// cleanup may never settle.
|
|
1120
|
+
const limit = contentLength ?? maxBytes
|
|
1121
|
+
const reader = source.body.getReader()
|
|
1122
|
+
const cancel = () => {
|
|
1123
|
+
reader.cancel().catch(() => {})
|
|
1124
|
+
}
|
|
1125
|
+
signal.addEventListener("abort", cancel, { once: true })
|
|
1126
|
+
const chunks: Array<Uint8Array> = []
|
|
1127
|
+
let bytes = 0
|
|
1128
|
+
try {
|
|
1129
|
+
while (true) {
|
|
1130
|
+
const { done, value } = await reader.read()
|
|
1131
|
+
if (done) break
|
|
1132
|
+
bytes += value.byteLength
|
|
1133
|
+
if (bytes > limit) {
|
|
1134
|
+
cancel()
|
|
1135
|
+
throw bytes > maxBytes
|
|
1136
|
+
? new BodyTooLargeError(maxBytes)
|
|
1137
|
+
: new Error(`Request body is longer than its content-length of ${contentLength}`)
|
|
1138
|
+
}
|
|
1139
|
+
chunks.push(value)
|
|
1140
|
+
}
|
|
1141
|
+
} finally {
|
|
1142
|
+
signal.removeEventListener("abort", cancel)
|
|
1143
|
+
reader.releaseLock()
|
|
1144
|
+
}
|
|
1145
|
+
const buffer = new Uint8Array(bytes)
|
|
1146
|
+
let offset = 0
|
|
1147
|
+
for (const chunk of chunks) {
|
|
1148
|
+
buffer.set(chunk, offset)
|
|
1149
|
+
offset += chunk.byteLength
|
|
1150
|
+
}
|
|
1151
|
+
return buffer.buffer
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1083
1154
|
/**
|
|
1084
1155
|
* Attempts to construct an absolute `URL` for a server request safely.
|
|
1085
1156
|
*
|
|
@@ -38,6 +38,7 @@ import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
|
|
|
38
38
|
import type { HttpPlatform } from "./HttpPlatform.ts"
|
|
39
39
|
import * as headersInternal from "./internal/headers.ts"
|
|
40
40
|
import * as bodyInternal from "./internal/httpBody.ts"
|
|
41
|
+
import * as internalUrlParams from "./internal/urlParams.ts"
|
|
41
42
|
import * as Template from "./Template.ts"
|
|
42
43
|
import * as UrlParams from "./UrlParams.ts"
|
|
43
44
|
|
|
@@ -1653,9 +1654,9 @@ class ServerHttpClientResponse extends Inspectable.Class implements HttpClientRe
|
|
|
1653
1654
|
}
|
|
1654
1655
|
|
|
1655
1656
|
get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, HttpClientError.HttpClientError> {
|
|
1656
|
-
return Effect.flatMap(this.
|
|
1657
|
+
return Effect.flatMap(this.bytes, (bytes) =>
|
|
1657
1658
|
Effect.try({
|
|
1658
|
-
try: () => UrlParams.fromInput(
|
|
1659
|
+
try: () => UrlParams.fromInput(internalUrlParams.fromBody(bytes)),
|
|
1659
1660
|
catch: (cause) =>
|
|
1660
1661
|
new HttpClientError.HttpClientError({
|
|
1661
1662
|
reason: new HttpClientError.DecodeError({
|