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
package/src/http/Cookies.ts
CHANGED
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* `Set-Cookie` headers, and provides helpers for adding, removing, merging, and
|
|
8
8
|
* expiring cookies.
|
|
9
9
|
*
|
|
10
|
+
* For client-side storage, `mergeIntoArray` and `toRequestCookieHeader`
|
|
11
|
+
* work on a plain array of cookies scoped by domain, path and scheme, following
|
|
12
|
+
* RFC 6265.
|
|
13
|
+
*
|
|
10
14
|
* @stability unstable
|
|
11
15
|
* @since 4.0.0
|
|
12
16
|
*/
|
|
@@ -51,6 +55,12 @@ const CookieTypeId = "~effect/http/Cookies/Cookie"
|
|
|
51
55
|
* HTTP cookie value with its decoded value, encoded value, and optional cookie
|
|
52
56
|
* attributes such as domain, path, expiration, security, and same-site settings.
|
|
53
57
|
*
|
|
58
|
+
* **Details**
|
|
59
|
+
*
|
|
60
|
+
* `hostOnly` marks a stored client cookie that is sent only to the exact
|
|
61
|
+
* `domain`, not its subdomains. It is not serialized, and `serializeCookie`
|
|
62
|
+
* omits `Domain` when it is set.
|
|
63
|
+
*
|
|
54
64
|
* @stability unstable
|
|
55
65
|
* @category cookies
|
|
56
66
|
* @since 4.0.0
|
|
@@ -70,6 +80,7 @@ export interface Cookie extends Inspectable.Inspectable {
|
|
|
70
80
|
readonly secure?: boolean | undefined
|
|
71
81
|
readonly partitioned?: boolean | undefined
|
|
72
82
|
readonly sameSite?: "lax" | "strict" | "none" | undefined
|
|
83
|
+
readonly hostOnly?: boolean | undefined
|
|
73
84
|
} | undefined
|
|
74
85
|
}
|
|
75
86
|
|
|
@@ -226,12 +237,12 @@ function parseSetCookie(header: string): Cookie | undefined {
|
|
|
226
237
|
if (firstEqual === -1) {
|
|
227
238
|
return undefined
|
|
228
239
|
}
|
|
229
|
-
const name = parts[0].slice(0, firstEqual)
|
|
240
|
+
const name = parts[0].slice(0, firstEqual).replace(cookieWhitespaceRegExp, "")
|
|
230
241
|
if (!cookieNameRegExp.test(name)) {
|
|
231
242
|
return undefined
|
|
232
243
|
}
|
|
233
244
|
|
|
234
|
-
const valueEncoded = parts[0].slice(firstEqual + 1)
|
|
245
|
+
const valueEncoded = parts[0].slice(firstEqual + 1).replace(cookieWhitespaceRegExp, "")
|
|
235
246
|
const value = tryDecodeURIComponent(valueEncoded)
|
|
236
247
|
|
|
237
248
|
if (parts.length === 1) {
|
|
@@ -272,13 +283,10 @@ function parseSetCookie(header: string): Cookie | undefined {
|
|
|
272
283
|
break
|
|
273
284
|
}
|
|
274
285
|
case "max-age": {
|
|
275
|
-
if (value === undefined) {
|
|
286
|
+
if (value === undefined || !maxAgeRegExp.test(value)) {
|
|
276
287
|
break
|
|
277
288
|
}
|
|
278
|
-
|
|
279
|
-
if (!isNaN(maxAge)) {
|
|
280
|
-
options.maxAge = Duration.seconds(maxAge)
|
|
281
|
-
}
|
|
289
|
+
options.maxAge = Duration.seconds(parseInt(value, 10))
|
|
282
290
|
break
|
|
283
291
|
}
|
|
284
292
|
case "path": {
|
|
@@ -368,6 +376,9 @@ export const isEmpty = (self: Cookies): boolean => Record.isEmptyRecord(self.coo
|
|
|
368
376
|
// oxlint-disable-next-line no-control-regex
|
|
369
377
|
const fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/
|
|
370
378
|
const cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/
|
|
379
|
+
const cookieWhitespaceRegExp = /^[\t ]+|[\t ]+$/g
|
|
380
|
+
// RFC 6265 section 5.2.2
|
|
381
|
+
const maxAgeRegExp = /^-?[0-9]+$/
|
|
371
382
|
// oxlint-disable-next-line no-control-regex
|
|
372
383
|
const cookieDomainRegExp = /^[\u0009\u0020-\u003a\u003c-\u007e\u0080-\u00ff]+$/
|
|
373
384
|
const cookiePathRegExp = /^[\u0020-\u003a\u003c-\u007e]+$/
|
|
@@ -948,7 +959,7 @@ export function serializeCookie(self: Cookie): string {
|
|
|
948
959
|
str += "; Max-Age=" + Math.trunc(maxAge)
|
|
949
960
|
}
|
|
950
961
|
|
|
951
|
-
if (options.domain !== undefined) {
|
|
962
|
+
if (options.domain !== undefined && !options.hostOnly) {
|
|
952
963
|
str += "; Domain=" + options.domain
|
|
953
964
|
}
|
|
954
965
|
|
|
@@ -1041,6 +1052,275 @@ export const toRecord = (self: Cookies): Record<string, string> => {
|
|
|
1041
1052
|
*/
|
|
1042
1053
|
export const toSetCookieHeaders = (self: Cookies): Array<string> => Object.values(self.cookies).map(serializeCookie)
|
|
1043
1054
|
|
|
1055
|
+
/**
|
|
1056
|
+
* Merges cookies set by `url` into an array of client cookies, returning a new
|
|
1057
|
+
* array.
|
|
1058
|
+
*
|
|
1059
|
+
* **When to use**
|
|
1060
|
+
*
|
|
1061
|
+
* Use to record the cookies of a response, or to seed an array of client
|
|
1062
|
+
* cookies from `Set-Cookie` values for a base URL.
|
|
1063
|
+
*
|
|
1064
|
+
* **Details**
|
|
1065
|
+
*
|
|
1066
|
+
* A cookie without a `Domain` attribute is scoped as `hostOnly` to the exact
|
|
1067
|
+
* host of `url`. A `Domain` attribute is accepted only when the host of `url`
|
|
1068
|
+
* domain-matches it. Without a `Path` attribute the cookie uses the default
|
|
1069
|
+
* path of `url`. `Max-Age` takes precedence over `Expires`, and both are
|
|
1070
|
+
* converted to an absolute `expires` computed from `now` (epoch milliseconds).
|
|
1071
|
+
*
|
|
1072
|
+
* A cookie replaces the existing cookie with the same name, domain and path,
|
|
1073
|
+
* keeping its position. A cookie that is already expired removes that existing
|
|
1074
|
+
* cookie instead. The array is returned unchanged when `url` is not a valid
|
|
1075
|
+
* absolute URL.
|
|
1076
|
+
*
|
|
1077
|
+
* **Gotchas**
|
|
1078
|
+
*
|
|
1079
|
+
* - There is no public suffix list. A `Domain` attribute is accepted whenever
|
|
1080
|
+
* the request host domain-matches it, unless the host is an IP address or the
|
|
1081
|
+
* domain is a single label such as `com`, so `foo.co.uk` can set
|
|
1082
|
+
* `Domain=co.uk`.
|
|
1083
|
+
*
|
|
1084
|
+
* @stability unstable
|
|
1085
|
+
* @category client storage
|
|
1086
|
+
* @since 4.0.0
|
|
1087
|
+
*/
|
|
1088
|
+
export const mergeIntoArray: {
|
|
1089
|
+
/**
|
|
1090
|
+
* Merges cookies set by `url` into an array of client cookies, returning a new
|
|
1091
|
+
* array.
|
|
1092
|
+
*
|
|
1093
|
+
* **When to use**
|
|
1094
|
+
*
|
|
1095
|
+
* Use to record the cookies of a response, or to seed an array of client
|
|
1096
|
+
* cookies from `Set-Cookie` values for a base URL.
|
|
1097
|
+
*
|
|
1098
|
+
* **Details**
|
|
1099
|
+
*
|
|
1100
|
+
* A cookie without a `Domain` attribute is scoped as `hostOnly` to the exact
|
|
1101
|
+
* host of `url`. A `Domain` attribute is accepted only when the host of `url`
|
|
1102
|
+
* domain-matches it. Without a `Path` attribute the cookie uses the default
|
|
1103
|
+
* path of `url`. `Max-Age` takes precedence over `Expires`, and both are
|
|
1104
|
+
* converted to an absolute `expires` computed from `now` (epoch milliseconds).
|
|
1105
|
+
*
|
|
1106
|
+
* A cookie replaces the existing cookie with the same name, domain and path,
|
|
1107
|
+
* keeping its position. A cookie that is already expired removes that existing
|
|
1108
|
+
* cookie instead. The array is returned unchanged when `url` is not a valid
|
|
1109
|
+
* absolute URL.
|
|
1110
|
+
*
|
|
1111
|
+
* **Gotchas**
|
|
1112
|
+
*
|
|
1113
|
+
* - There is no public suffix list. A `Domain` attribute is accepted whenever
|
|
1114
|
+
* the request host domain-matches it, unless the host is an IP address or the
|
|
1115
|
+
* domain is a single label such as `com`, so `foo.co.uk` can set
|
|
1116
|
+
* `Domain=co.uk`.
|
|
1117
|
+
*
|
|
1118
|
+
* @stability unstable
|
|
1119
|
+
* @category client storage
|
|
1120
|
+
* @since 4.0.0
|
|
1121
|
+
*/
|
|
1122
|
+
(url: string, cookies: Cookies, now: number): (self: ReadonlyArray<Cookie>) => ReadonlyArray<Cookie>
|
|
1123
|
+
/**
|
|
1124
|
+
* Merges cookies set by `url` into an array of client cookies, returning a new
|
|
1125
|
+
* array.
|
|
1126
|
+
*
|
|
1127
|
+
* **When to use**
|
|
1128
|
+
*
|
|
1129
|
+
* Use to record the cookies of a response, or to seed an array of client
|
|
1130
|
+
* cookies from `Set-Cookie` values for a base URL.
|
|
1131
|
+
*
|
|
1132
|
+
* **Details**
|
|
1133
|
+
*
|
|
1134
|
+
* A cookie without a `Domain` attribute is scoped as `hostOnly` to the exact
|
|
1135
|
+
* host of `url`. A `Domain` attribute is accepted only when the host of `url`
|
|
1136
|
+
* domain-matches it. Without a `Path` attribute the cookie uses the default
|
|
1137
|
+
* path of `url`. `Max-Age` takes precedence over `Expires`, and both are
|
|
1138
|
+
* converted to an absolute `expires` computed from `now` (epoch milliseconds).
|
|
1139
|
+
*
|
|
1140
|
+
* A cookie replaces the existing cookie with the same name, domain and path,
|
|
1141
|
+
* keeping its position. A cookie that is already expired removes that existing
|
|
1142
|
+
* cookie instead. The array is returned unchanged when `url` is not a valid
|
|
1143
|
+
* absolute URL.
|
|
1144
|
+
*
|
|
1145
|
+
* **Gotchas**
|
|
1146
|
+
*
|
|
1147
|
+
* - There is no public suffix list. A `Domain` attribute is accepted whenever
|
|
1148
|
+
* the request host domain-matches it, unless the host is an IP address or the
|
|
1149
|
+
* domain is a single label such as `com`, so `foo.co.uk` can set
|
|
1150
|
+
* `Domain=co.uk`.
|
|
1151
|
+
*
|
|
1152
|
+
* @stability unstable
|
|
1153
|
+
* @category client storage
|
|
1154
|
+
* @since 4.0.0
|
|
1155
|
+
*/
|
|
1156
|
+
(self: ReadonlyArray<Cookie>, url: string, cookies: Cookies, now: number): ReadonlyArray<Cookie>
|
|
1157
|
+
} = dual(4, (self: ReadonlyArray<Cookie>, url: string, cookies: Cookies, now: number): ReadonlyArray<Cookie> => {
|
|
1158
|
+
const parsed = parseUrl(url)
|
|
1159
|
+
if (parsed === undefined) {
|
|
1160
|
+
return self
|
|
1161
|
+
}
|
|
1162
|
+
const stored = self.slice()
|
|
1163
|
+
for (const cookie of Object.values(cookies.cookies)) {
|
|
1164
|
+
const scoped = scopeCookie(parsed, cookie, now)
|
|
1165
|
+
if (scoped === undefined) {
|
|
1166
|
+
continue
|
|
1167
|
+
}
|
|
1168
|
+
const domain = cookieDomain(scoped)
|
|
1169
|
+
const path = cookiePath(scoped)
|
|
1170
|
+
const index = stored.findIndex((existing) =>
|
|
1171
|
+
existing.name === scoped.name && cookieDomain(existing) === domain && cookiePath(existing) === path
|
|
1172
|
+
)
|
|
1173
|
+
if (scoped.options!.expires !== undefined && scoped.options!.expires.getTime() <= now) {
|
|
1174
|
+
if (index !== -1) stored.splice(index, 1)
|
|
1175
|
+
} else if (index === -1) {
|
|
1176
|
+
stored.push(scoped)
|
|
1177
|
+
} else {
|
|
1178
|
+
stored[index] = scoped
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
return stored
|
|
1182
|
+
})
|
|
1183
|
+
|
|
1184
|
+
/**
|
|
1185
|
+
* Serializes the client cookies to send with a request to `url` into a
|
|
1186
|
+
* `Cookie` header value.
|
|
1187
|
+
*
|
|
1188
|
+
* **Details**
|
|
1189
|
+
*
|
|
1190
|
+
* Selects cookies that have not expired at `now` (epoch milliseconds) and whose
|
|
1191
|
+
* domain and path match `url`, skipping `Secure` cookies unless `url` uses
|
|
1192
|
+
* `https`. Every matching cookie is kept, including cookies with the same name,
|
|
1193
|
+
* ordered by longest path first. Returns `undefined` when no cookie matches.
|
|
1194
|
+
*
|
|
1195
|
+
* A leading dot and letter case in `domain` are ignored. A cookie without a
|
|
1196
|
+
* `domain` is never sent, and a cookie without a `path` matches every path.
|
|
1197
|
+
*
|
|
1198
|
+
* @stability unstable
|
|
1199
|
+
* @category client storage
|
|
1200
|
+
* @since 4.0.0
|
|
1201
|
+
*/
|
|
1202
|
+
export const toRequestCookieHeader: {
|
|
1203
|
+
/**
|
|
1204
|
+
* Serializes the client cookies to send with a request to `url` into a
|
|
1205
|
+
* `Cookie` header value.
|
|
1206
|
+
*
|
|
1207
|
+
* **Details**
|
|
1208
|
+
*
|
|
1209
|
+
* Selects cookies that have not expired at `now` (epoch milliseconds) and whose
|
|
1210
|
+
* domain and path match `url`, skipping `Secure` cookies unless `url` uses
|
|
1211
|
+
* `https`. Every matching cookie is kept, including cookies with the same name,
|
|
1212
|
+
* ordered by longest path first. Returns `undefined` when no cookie matches.
|
|
1213
|
+
*
|
|
1214
|
+
* A leading dot and letter case in `domain` are ignored. A cookie without a
|
|
1215
|
+
* `domain` is never sent, and a cookie without a `path` matches every path.
|
|
1216
|
+
*
|
|
1217
|
+
* @stability unstable
|
|
1218
|
+
* @category client storage
|
|
1219
|
+
* @since 4.0.0
|
|
1220
|
+
*/
|
|
1221
|
+
(url: string, now: number): (self: ReadonlyArray<Cookie>) => string | undefined
|
|
1222
|
+
/**
|
|
1223
|
+
* Serializes the client cookies to send with a request to `url` into a
|
|
1224
|
+
* `Cookie` header value.
|
|
1225
|
+
*
|
|
1226
|
+
* **Details**
|
|
1227
|
+
*
|
|
1228
|
+
* Selects cookies that have not expired at `now` (epoch milliseconds) and whose
|
|
1229
|
+
* domain and path match `url`, skipping `Secure` cookies unless `url` uses
|
|
1230
|
+
* `https`. Every matching cookie is kept, including cookies with the same name,
|
|
1231
|
+
* ordered by longest path first. Returns `undefined` when no cookie matches.
|
|
1232
|
+
*
|
|
1233
|
+
* A leading dot and letter case in `domain` are ignored. A cookie without a
|
|
1234
|
+
* `domain` is never sent, and a cookie without a `path` matches every path.
|
|
1235
|
+
*
|
|
1236
|
+
* @stability unstable
|
|
1237
|
+
* @category client storage
|
|
1238
|
+
* @since 4.0.0
|
|
1239
|
+
*/
|
|
1240
|
+
(self: ReadonlyArray<Cookie>, url: string, now: number): string | undefined
|
|
1241
|
+
} = dual(3, (self: ReadonlyArray<Cookie>, url: string, now: number): string | undefined => {
|
|
1242
|
+
const parsed = parseUrl(url)
|
|
1243
|
+
if (parsed === undefined) {
|
|
1244
|
+
return undefined
|
|
1245
|
+
}
|
|
1246
|
+
const host = parsed.hostname
|
|
1247
|
+
const secure = parsed.protocol === "https:"
|
|
1248
|
+
const matching = self.filter((cookie) => {
|
|
1249
|
+
const domain = cookieDomain(cookie)
|
|
1250
|
+
return domain !== undefined &&
|
|
1251
|
+
(cookie.options?.hostOnly ? host === domain : domainMatches(host, domain)) &&
|
|
1252
|
+
pathMatches(parsed.pathname, cookiePath(cookie)) &&
|
|
1253
|
+
(cookie.options?.expires === undefined || cookie.options.expires.getTime() > now) &&
|
|
1254
|
+
(secure || !cookie.options?.secure)
|
|
1255
|
+
})
|
|
1256
|
+
return matching.length === 0
|
|
1257
|
+
? undefined
|
|
1258
|
+
: matching
|
|
1259
|
+
.sort((a, b) => cookiePath(b).length - cookiePath(a).length)
|
|
1260
|
+
.map((cookie) => `${cookie.name}=${cookie.valueEncoded}`)
|
|
1261
|
+
.join("; ")
|
|
1262
|
+
})
|
|
1263
|
+
|
|
1264
|
+
const parseUrl = (url: string): URL | undefined => {
|
|
1265
|
+
try {
|
|
1266
|
+
return new URL(url)
|
|
1267
|
+
} catch {
|
|
1268
|
+
return undefined
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
const cookieDomain = (cookie: Cookie): string | undefined =>
|
|
1273
|
+
cookie.options?.domain?.replace(/^\./, "").toLowerCase() || undefined
|
|
1274
|
+
|
|
1275
|
+
const cookiePath = (cookie: Cookie): string => cookie.options?.path?.startsWith("/") ? cookie.options.path : "/"
|
|
1276
|
+
|
|
1277
|
+
const isIpAddress = (host: string): boolean => host.startsWith("[") || /^\d+\.\d+\.\d+\.\d+$/.test(host)
|
|
1278
|
+
|
|
1279
|
+
const domainMatches = (host: string, domain: string): boolean =>
|
|
1280
|
+
host === domain || (host.endsWith("." + domain) && !isIpAddress(host))
|
|
1281
|
+
|
|
1282
|
+
const pathMatches = (requestPath: string, cookiePath: string): boolean =>
|
|
1283
|
+
requestPath === cookiePath ||
|
|
1284
|
+
(requestPath.startsWith(cookiePath) &&
|
|
1285
|
+
(cookiePath.endsWith("/") || requestPath[cookiePath.length] === "/"))
|
|
1286
|
+
|
|
1287
|
+
const defaultPath = (pathname: string): string => {
|
|
1288
|
+
const index = pathname.lastIndexOf("/")
|
|
1289
|
+
return index <= 0 ? "/" : pathname.slice(0, index)
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1292
|
+
const scopeCookie = (url: URL, cookie: Cookie, now: number): Cookie | undefined => {
|
|
1293
|
+
const host = url.hostname
|
|
1294
|
+
let domain = host
|
|
1295
|
+
let hostOnly = true
|
|
1296
|
+
const attribute = cookieDomain(cookie)
|
|
1297
|
+
if (attribute !== undefined) {
|
|
1298
|
+
if (isIpAddress(host) || !domainMatches(host, attribute)) {
|
|
1299
|
+
return undefined
|
|
1300
|
+
}
|
|
1301
|
+
if (attribute.includes(".")) {
|
|
1302
|
+
domain = attribute
|
|
1303
|
+
hostOnly = false
|
|
1304
|
+
} else if (attribute !== host) {
|
|
1305
|
+
// a single-label domain such as "com" is treated like a public suffix
|
|
1306
|
+
return undefined
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
const { maxAge, ...options } = cookie.options ?? {}
|
|
1310
|
+
return Object.assign(Object.create(CookieProto), {
|
|
1311
|
+
name: cookie.name,
|
|
1312
|
+
value: cookie.value,
|
|
1313
|
+
valueEncoded: cookie.valueEncoded,
|
|
1314
|
+
options: {
|
|
1315
|
+
...options,
|
|
1316
|
+
domain,
|
|
1317
|
+
hostOnly: hostOnly || undefined,
|
|
1318
|
+
path: options.path?.startsWith("/") ? options.path : defaultPath(url.pathname),
|
|
1319
|
+
expires: maxAge !== undefined ? new Date(now + Duration.toMillis(maxAge)) : options.expires
|
|
1320
|
+
}
|
|
1321
|
+
})
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1044
1324
|
/**
|
|
1045
1325
|
* Parses a cookie header into a record of key-value pairs
|
|
1046
1326
|
*
|
|
@@ -1074,14 +1354,13 @@ export function parseHeader(header: string): Record<string, string> {
|
|
|
1074
1354
|
|
|
1075
1355
|
const key = header.substring(pos, eqIdx++).trim()
|
|
1076
1356
|
if (!Object.hasOwn(result, key)) {
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
: header.substring(eqIdx, terminatorPos).trim()
|
|
1357
|
+
let value = header.substring(eqIdx, terminatorPos).trim()
|
|
1358
|
+
if (value.charCodeAt(0) === 0x22) value = value.slice(1, -1).trim()
|
|
1080
1359
|
|
|
1081
1360
|
InternalRecord.assignProperty(
|
|
1082
1361
|
result,
|
|
1083
1362
|
key,
|
|
1084
|
-
!(
|
|
1363
|
+
!(value.indexOf("%") === -1) ? tryDecodeURIComponent(value) : value
|
|
1085
1364
|
)
|
|
1086
1365
|
}
|
|
1087
1366
|
|
|
@@ -36,6 +36,32 @@ export const Fetch = Context.Reference<typeof globalThis.fetch>("effect/http/Fet
|
|
|
36
36
|
defaultValue: () => globalThis.fetch
|
|
37
37
|
})
|
|
38
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Context reference controlling stream bodies when the runtime does not support streaming requests.
|
|
41
|
+
*
|
|
42
|
+
* **Details**
|
|
43
|
+
*
|
|
44
|
+
* Defaults to `"error"`, which fails with an `EncodeError` without sending the
|
|
45
|
+
* request. Set to `"buffer"` to collect the entire stream in memory and send it
|
|
46
|
+
* as a single body instead. Runtimes with streaming support always send the stream.
|
|
47
|
+
*
|
|
48
|
+
* **Gotchas**
|
|
49
|
+
*
|
|
50
|
+
* Buffering keeps the entire upload in memory and can exhaust memory for large
|
|
51
|
+
* or unbounded uploads. Support is detected once, on the first stream body sent,
|
|
52
|
+
* using the global `Request` implementation even when a custom `Fetch` is provided.
|
|
53
|
+
*
|
|
54
|
+
* @stability unstable
|
|
55
|
+
* @category services
|
|
56
|
+
* @since 4.0.0
|
|
57
|
+
*/
|
|
58
|
+
export const StreamBodyFallback = Context.Reference<"error" | "buffer">(
|
|
59
|
+
"effect/http/FetchHttpClient/StreamBodyFallback",
|
|
60
|
+
{
|
|
61
|
+
defaultValue: () => "error"
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
|
|
39
65
|
/**
|
|
40
66
|
* Service that contains default fetch options for the fetch-based HTTP client.
|
|
41
67
|
*
|
|
@@ -58,6 +84,27 @@ export class RequestInit extends Context.Service<RequestInit, globalThis.Request
|
|
|
58
84
|
"effect/http/FetchHttpClient/RequestInit"
|
|
59
85
|
) {}
|
|
60
86
|
|
|
87
|
+
// https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests
|
|
88
|
+
let supportsStreamBody: boolean | undefined
|
|
89
|
+
const detectStreamBodySupport = () => {
|
|
90
|
+
try {
|
|
91
|
+
let duplexAccessed = false
|
|
92
|
+
const body = new ReadableStream()
|
|
93
|
+
const request = new Request("https://example.com", {
|
|
94
|
+
method: "POST",
|
|
95
|
+
body,
|
|
96
|
+
get duplex() {
|
|
97
|
+
duplexAccessed = true
|
|
98
|
+
return "half"
|
|
99
|
+
}
|
|
100
|
+
} as globalThis.RequestInit)
|
|
101
|
+
// Bun and Deno preserve the stream without reading the duplex option.
|
|
102
|
+
return (duplexAccessed || request.body === body) && !request.headers.has("Content-Type")
|
|
103
|
+
} catch {
|
|
104
|
+
return false
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
61
108
|
const fetch: HttpClient.HttpClient = HttpClient.make((request, url, signal, fiber) => {
|
|
62
109
|
if (request.headers.upgrade !== undefined) {
|
|
63
110
|
return Effect.fail(
|
|
@@ -124,20 +171,41 @@ const fetch: HttpClient.HttpClient = HttpClient.make((request, url, signal, fibe
|
|
|
124
171
|
case "FormData":
|
|
125
172
|
return send(request.body.formData)
|
|
126
173
|
case "Stream": {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
onAbort()
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
174
|
+
supportsStreamBody ??= detectStreamBodySupport()
|
|
175
|
+
if (supportsStreamBody) {
|
|
176
|
+
uploadController = new AbortController()
|
|
177
|
+
const uploadSignal = AbortSignal.any([signal, uploadController.signal])
|
|
178
|
+
const stopped = Effect.callback<void>((resume) => {
|
|
179
|
+
const onAbort = () => resume(Effect.interrupt)
|
|
180
|
+
if (uploadSignal.aborted) {
|
|
181
|
+
onAbort()
|
|
182
|
+
return
|
|
183
|
+
}
|
|
184
|
+
uploadSignal.addEventListener("abort", onAbort, { once: true })
|
|
185
|
+
return Effect.sync(() => uploadSignal.removeEventListener("abort", onAbort))
|
|
186
|
+
})
|
|
187
|
+
return Effect.flatMap(
|
|
188
|
+
Stream.toReadableStreamEffect(Stream.interruptWhen(request.body.stream, stopped)),
|
|
189
|
+
send
|
|
190
|
+
)
|
|
191
|
+
}
|
|
192
|
+
if (fiber.getRef(StreamBodyFallback) === "error") {
|
|
193
|
+
return Effect.fail(
|
|
194
|
+
new HttpClientError.HttpClientError({
|
|
195
|
+
reason: new HttpClientError.EncodeError({
|
|
196
|
+
request,
|
|
197
|
+
description: "Streaming request bodies are not supported in this runtime"
|
|
198
|
+
})
|
|
199
|
+
})
|
|
200
|
+
)
|
|
201
|
+
}
|
|
202
|
+
return Stream.mkArrayBuffer(request.body.stream).pipe(
|
|
203
|
+
Effect.mapError((cause) =>
|
|
204
|
+
new HttpClientError.HttpClientError({
|
|
205
|
+
reason: new HttpClientError.EncodeError({ request, cause })
|
|
206
|
+
})
|
|
207
|
+
),
|
|
208
|
+
Effect.flatMap(send)
|
|
141
209
|
)
|
|
142
210
|
}
|
|
143
211
|
}
|
|
@@ -168,11 +236,15 @@ const fetch: HttpClient.HttpClient = HttpClient.make((request, url, signal, fibe
|
|
|
168
236
|
* has no effect unless `RequestInit` sets `redirect: "manual"`. Trace
|
|
169
237
|
* propagation is on by default, and a browser preflight fails unless the
|
|
170
238
|
* target allows `b3` and `traceparent`. Stream request bodies are sent as Web
|
|
171
|
-
* streams with `duplex: "half"
|
|
172
|
-
*
|
|
239
|
+
* streams with `duplex: "half"` when the runtime supports it; see
|
|
240
|
+
* `StreamBodyFallback` for the unsupported case. Any `content-length` header is
|
|
241
|
+
* removed before calling `fetch`. Chrome passes the support check but rejects
|
|
242
|
+
* streaming uploads over HTTP/1.1, which surfaces as a `TransportError`, and
|
|
243
|
+
* browsers only deliver the response after the entire request body has been sent.
|
|
173
244
|
*
|
|
174
245
|
* @see {@link Fetch} for supplying the fetch implementation used by this layer
|
|
175
246
|
* @see {@link RequestInit} for default `RequestInit` options applied before request-specific fields
|
|
247
|
+
* @see {@link StreamBodyFallback} for opting into buffering on unsupported runtimes
|
|
176
248
|
* @see {@link HttpClient.TracerPropagationEnabled} for leaving `b3` and `traceparent` off a browser request
|
|
177
249
|
*
|
|
178
250
|
* @stability unstable
|