effect 4.0.5 → 4.0.6
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/ai-docs/package.json +1 -1
- package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
- package/ai-docs/tsconfig.json +3 -1
- package/dist/Array.d.ts +117 -52
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +41 -20
- package/dist/Array.js.map +1 -1
- package/dist/Bytes.d.ts +79 -0
- package/dist/Bytes.d.ts.map +1 -0
- package/dist/Bytes.js +109 -0
- package/dist/Bytes.js.map +1 -0
- package/dist/Channel.d.ts +181 -13
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +125 -30
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +39 -21
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +26 -17
- package/dist/Chunk.js.map +1 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +8 -3
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +2 -1
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Cron.d.ts +2 -2
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +6 -3
- package/dist/Cron.js.map +1 -1
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +56 -16
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +487 -163
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +203 -37
- package/dist/Effect.js.map +1 -1
- package/dist/Equivalence.d.ts +2 -1
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +12 -8
- package/dist/Equivalence.js.map +1 -1
- package/dist/Exit.d.ts +24 -9
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +8 -3
- package/dist/Exit.js.map +1 -1
- package/dist/FiberHandle.d.ts +2 -0
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +9 -4
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +2 -0
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +5 -2
- package/dist/FiberMap.js.map +1 -1
- package/dist/FileSystem.d.ts +5 -0
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +3 -0
- package/dist/FileSystem.js.map +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js.map +1 -1
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +18 -17
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonSchema.d.ts +9 -3
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +19 -3
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +2 -2
- package/dist/Layer.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +19 -1
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +62 -6
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Metric.d.ts +132 -0
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +197 -25
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/Number.js +2 -2
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js.map +1 -1
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +8 -1
- package/dist/Path.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +12 -7
- package/dist/PubSub.js.map +1 -1
- package/dist/Queue.d.ts +4 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +4 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +1 -1
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +12 -7
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +9 -6
- package/dist/RcMap.js.map +1 -1
- package/dist/Record.d.ts +51 -0
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +17 -0
- package/dist/Record.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +5 -4
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +5 -4
- package/dist/References.js.map +1 -1
- package/dist/RequestResolver.d.ts +31 -1
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +39 -4
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Runtime.d.ts +3 -3
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +18 -15
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +384 -332
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +333 -19
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +5 -5
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +24 -8
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +8 -3
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +15 -5
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +4 -4
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +29 -51
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +56 -1
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +18 -0
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +1 -1
- package/dist/SchemaTransformation.js +1 -1
- package/dist/Scope.d.ts +12 -2
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +5 -0
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.d.ts +10 -7
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +9 -5
- package/dist/ScopedCache.js.map +1 -1
- package/dist/SemVer.d.ts +1196 -0
- package/dist/SemVer.d.ts.map +1 -0
- package/dist/SemVer.js +756 -0
- package/dist/SemVer.js.map +1 -0
- package/dist/SemVerRange.d.ts +559 -0
- package/dist/SemVerRange.d.ts.map +1 -0
- package/dist/SemVerRange.js +551 -0
- package/dist/SemVerRange.js.map +1 -0
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +6 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +235 -8
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +145 -60
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +4 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +8 -6
- package/dist/String.js.map +1 -1
- package/dist/TextDiff.d.ts +399 -0
- package/dist/TextDiff.d.ts.map +1 -0
- package/dist/TextDiff.js +634 -0
- package/dist/TextDiff.js.map +1 -0
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js.map +1 -1
- package/dist/ai/AiError.d.ts +68 -4
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +50 -2
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Chat.d.ts +1 -2
- package/dist/ai/Chat.d.ts.map +1 -1
- package/dist/ai/Chat.js +6 -3
- package/dist/ai/Chat.js.map +1 -1
- package/dist/ai/Decision.d.ts +46 -1
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +129 -11
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +182 -94
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/EmbeddingModel.d.ts +10 -0
- package/dist/ai/EmbeddingModel.d.ts.map +1 -1
- package/dist/ai/EmbeddingModel.js +21 -7
- package/dist/ai/EmbeddingModel.js.map +1 -1
- package/dist/ai/McpClient.d.ts +289 -0
- package/dist/ai/McpClient.d.ts.map +1 -0
- package/dist/ai/McpClient.js +819 -0
- package/dist/ai/McpClient.js.map +1 -0
- package/dist/ai/McpClientError.d.ts +254 -0
- package/dist/ai/McpClientError.d.ts.map +1 -0
- package/dist/ai/McpClientError.js +260 -0
- package/dist/ai/McpClientError.js.map +1 -0
- package/dist/ai/McpProtocol.d.ts +2 -2
- package/dist/ai/McpProtocol.d.ts.map +1 -1
- package/dist/ai/McpSchema.d.ts +368 -235
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +94 -24
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +25 -22
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +22 -20
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +23 -1
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +147 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +35 -37
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +12 -4
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts +48 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +65 -12
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +10 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +16 -2
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +3 -4
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
- package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
- package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
- package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
- package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
- package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
- package/dist/cli/CliError.d.ts +42 -2
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +44 -5
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/Command.d.ts +286 -2
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +107 -6
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +5 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +115 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +56 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +3 -3
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +107 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +56 -0
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +84 -0
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
- package/dist/cli/TerminalCapabilities.js +122 -0
- package/dist/cli/TerminalCapabilities.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/internal/command.d.ts +2 -1
- package/dist/cli/internal/command.d.ts.map +1 -1
- package/dist/cli/internal/command.js +5 -2
- package/dist/cli/internal/command.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +4 -3
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/completions/descriptor.js +9 -1
- package/dist/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/cli/internal/completions/fish.js +10 -8
- package/dist/cli/internal/completions/fish.js.map +1 -1
- package/dist/cli/internal/completions/powershell.js +18 -9
- package/dist/cli/internal/completions/powershell.js.map +1 -1
- package/dist/cli/internal/completions/zsh.js +8 -5
- package/dist/cli/internal/completions/zsh.js.map +1 -1
- package/dist/cli/internal/formatter.d.ts +2 -0
- package/dist/cli/internal/formatter.d.ts.map +1 -0
- package/dist/cli/internal/formatter.js +15 -0
- package/dist/cli/internal/formatter.js.map +1 -0
- package/dist/cli/internal/lexer.js +24 -10
- package/dist/cli/internal/lexer.js.map +1 -1
- package/dist/cli/internal/parser.js +24 -12
- package/dist/cli/internal/parser.js.map +1 -1
- package/dist/cluster/ClusterCron.d.ts +29 -1
- package/dist/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/cluster/ClusterCron.js +64 -32
- package/dist/cluster/ClusterCron.js.map +1 -1
- package/dist/cluster/ClusterMetrics.d.ts +143 -7
- package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
- package/dist/cluster/ClusterMetrics.js +151 -7
- package/dist/cluster/ClusterMetrics.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +37 -11
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Entity.d.ts +2 -0
- package/dist/cluster/Entity.d.ts.map +1 -1
- package/dist/cluster/Entity.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +21 -0
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +54 -15
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts +1 -0
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +95 -32
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +20 -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/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +40 -50
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +10 -4
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +65 -8
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/devtools/DevTools.d.ts +3 -2
- package/dist/devtools/DevTools.d.ts.map +1 -1
- package/dist/devtools/DevTools.js +3 -2
- package/dist/devtools/DevTools.js.map +1 -1
- package/dist/devtools/DevToolsClient.d.ts +11 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +31 -4
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts +29 -0
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +29 -0
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Ini.d.ts.map +1 -1
- package/dist/encoding/Ini.js +3 -0
- package/dist/encoding/Ini.js.map +1 -1
- package/dist/encoding/JsonArray.d.ts +270 -0
- package/dist/encoding/JsonArray.d.ts.map +1 -0
- package/dist/encoding/JsonArray.js +691 -0
- package/dist/encoding/JsonArray.js.map +1 -0
- package/dist/encoding/Ndjson.d.ts +43 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +169 -18
- package/dist/encoding/Ndjson.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts +9 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +12 -19
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Tar.d.ts +309 -0
- package/dist/encoding/Tar.d.ts.map +1 -0
- package/dist/encoding/Tar.js +1182 -0
- package/dist/encoding/Tar.js.map +1 -0
- package/dist/encoding/Toml.js +3 -3
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Xml.d.ts +464 -0
- package/dist/encoding/Xml.d.ts.map +1 -0
- package/dist/encoding/Xml.js +1619 -0
- package/dist/encoding/Xml.js.map +1 -0
- package/dist/encoding/Yaml.d.ts +6 -2
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +97 -34
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/Zip.d.ts +413 -0
- package/dist/encoding/Zip.d.ts.map +1 -0
- package/dist/encoding/Zip.js +1255 -0
- package/dist/encoding/Zip.js.map +1 -0
- package/dist/encoding/index.d.ts +20 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +20 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts +90 -5
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +488 -228
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +180 -12
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +394 -146
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +36 -30
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +97 -38
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +74 -34
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +45 -11
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +45 -8
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +51 -14
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +46 -3
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +119 -19
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +97 -70
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +288 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -0
- package/dist/eventlog/EventRow.js +435 -0
- package/dist/eventlog/EventRow.js.map +1 -0
- package/dist/eventlog/SqlEventJournal.d.ts +18 -18
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +387 -159
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/index.d.ts +5 -0
- package/dist/eventlog/index.d.ts.map +1 -1
- package/dist/eventlog/index.js +5 -0
- package/dist/eventlog/index.js.map +1 -1
- package/dist/eventlog/internal/conflicts.d.ts +47 -0
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
- package/dist/eventlog/internal/conflicts.js +92 -0
- package/dist/eventlog/internal/conflicts.js.map +1 -0
- package/dist/graphql/GraphQLClientError.d.ts +2 -2
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +4 -18
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +12 -9
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +4 -3
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/graphql/GraphQLResolver.d.ts +2 -0
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
- package/dist/graphql/GraphQLResolver.js +74 -32
- package/dist/graphql/GraphQLResolver.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +8 -1
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +51 -4
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +10 -0
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/Headers.d.ts +227 -0
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +261 -0
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +93 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +55 -16
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +127 -3
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +44 -2
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts +53 -0
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +47 -0
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpEffect.d.ts +6 -2
- package/dist/http/HttpEffect.d.ts.map +1 -1
- package/dist/http/HttpEffect.js +21 -17
- package/dist/http/HttpEffect.js.map +1 -1
- package/dist/http/HttpIncomingMessage.d.ts +2 -1
- package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/http/HttpIncomingMessage.js +3 -23
- package/dist/http/HttpIncomingMessage.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +119 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +159 -13
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +7 -2
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.d.ts +5 -2
- package/dist/http/HttpServerError.d.ts.map +1 -1
- package/dist/http/HttpServerError.js +5 -3
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +25 -5
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +36 -10
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts +17 -8
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +37 -21
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts +0 -12
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +21 -7
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +87 -5
- package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
- package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/headers.js +4 -12
- package/dist/http/MultipartParser/internal/headers.js.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.js +6 -27
- package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
- package/dist/http/Url.d.ts.map +1 -1
- package/dist/http/Url.js +6 -1
- package/dist/http/Url.js.map +1 -1
- package/dist/http/internal/decompression.js +17 -11
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/lazyStream.d.ts +2 -0
- package/dist/http/internal/lazyStream.d.ts.map +1 -0
- package/dist/http/internal/lazyStream.js +18 -0
- package/dist/http/internal/lazyStream.js.map +1 -0
- package/dist/http/internal/requestState.d.ts +2 -0
- package/dist/http/internal/requestState.d.ts.map +1 -0
- package/dist/http/internal/requestState.js +28 -0
- package/dist/http/internal/requestState.js.map +1 -0
- package/dist/http/internal/webResponse.d.ts +2 -0
- package/dist/http/internal/webResponse.d.ts.map +1 -0
- package/dist/http/internal/webResponse.js +12 -0
- package/dist/http/internal/webResponse.js.map +1 -0
- package/dist/http-api/HttpApi.js +1 -1
- 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 +121 -18
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +29 -4
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +83 -23
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +49 -5
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +58 -0
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +38 -12
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiScalar.d.ts +2 -1
- package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
- package/dist/http-api/HttpApiScalar.js +6 -3
- package/dist/http-api/HttpApiScalar.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +191 -9
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +137 -4
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiSwagger.d.ts +5 -0
- package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
- package/dist/http-api/HttpApiSwagger.js +14 -4
- package/dist/http-api/HttpApiSwagger.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts +13 -2
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +30 -9
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts +17 -3
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +57 -32
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/path.js +35 -10
- package/dist/http-api/internal/path.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js +1 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +19 -7
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +85 -74
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +2 -2
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hydration.d.ts +2 -0
- package/dist/internal/hydration.d.ts.map +1 -0
- package/dist/internal/hydration.js +15 -0
- package/dist/internal/hydration.js.map +1 -0
- package/dist/internal/inflate.d.ts +2 -0
- package/dist/internal/inflate.d.ts.map +1 -0
- package/dist/internal/inflate.js +680 -0
- package/dist/internal/inflate.js.map +1 -0
- package/dist/internal/record.js +6 -0
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/request.js +20 -7
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schedule.js +17 -22
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/interpreter.js +51 -36
- package/dist/internal/schema/interpreter.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +34 -33
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +7 -2
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +86 -1
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toFormatter.js +5 -5
- package/dist/internal/schema/toFormatter.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/trie.js +1 -3
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/uuid.js +7 -3
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/net/NetAddress.d.ts.map +1 -1
- package/dist/net/NetAddress.js +2 -8
- package/dist/net/NetAddress.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +5 -12
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +5 -3
- package/dist/observability/OtlpMetrics.js.map +1 -1
- package/dist/observability/OtlpResource.d.ts +3 -1
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -4
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpSerialization.d.ts +5 -0
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +14 -3
- package/dist/observability/OtlpSerialization.js.map +1 -1
- package/dist/observability/internal/protobuf.d.ts +0 -9
- package/dist/observability/internal/protobuf.d.ts.map +1 -1
- package/dist/observability/internal/protobuf.js +2 -10
- package/dist/observability/internal/protobuf.js.map +1 -1
- package/dist/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/persistence/PersistedCache.js +1 -1
- package/dist/persistence/PersistedCache.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +6 -2
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +162 -84
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +28 -0
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +36 -8
- package/dist/persistence/Persistence.js.map +1 -1
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +8 -12
- package/dist/persistence/RateLimiter.js.map +1 -1
- package/dist/persistence/UserDirectories.d.ts +129 -0
- package/dist/persistence/UserDirectories.d.ts.map +1 -0
- package/dist/persistence/UserDirectories.js +178 -0
- package/dist/persistence/UserDirectories.js.map +1 -0
- 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 +2 -1
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/AsyncResult.js +1 -1
- package/dist/reactivity/AsyncResult.js.map +1 -1
- package/dist/reactivity/Atom.d.ts +69 -30
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +40 -15
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomHttpApi.d.ts +5 -5
- package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/reactivity/AtomHttpApi.js +1 -1
- package/dist/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/reactivity/AtomRegistry.d.ts +2 -2
- package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/reactivity/AtomRegistry.js +44 -9
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/reactivity/AtomRpc.d.ts +3 -3
- package/dist/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/reactivity/AtomRpc.js +1 -1
- package/dist/reactivity/AtomRpc.js.map +1 -1
- package/dist/reactivity/Hydration.d.ts.map +1 -1
- package/dist/reactivity/Hydration.js +46 -12
- package/dist/reactivity/Hydration.js.map +1 -1
- package/dist/reactivity/Reactivity.d.ts +71 -7
- package/dist/reactivity/Reactivity.d.ts.map +1 -1
- package/dist/reactivity/Reactivity.js +21 -12
- package/dist/reactivity/Reactivity.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +18 -0
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js +20 -0
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +26 -2
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +196 -60
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +15 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +21 -5
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +9 -18
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/schema/Model.d.ts +1 -1
- package/dist/schema/VariantSchema.d.ts +22 -3
- package/dist/schema/VariantSchema.d.ts.map +1 -1
- package/dist/schema/VariantSchema.js +32 -18
- package/dist/schema/VariantSchema.js.map +1 -1
- package/dist/socket/Socket.d.ts +23 -1
- package/dist/socket/Socket.d.ts.map +1 -1
- package/dist/socket/Socket.js +36 -3
- package/dist/socket/Socket.js.map +1 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +15 -3
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +143 -5
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +148 -27
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +9 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +9 -0
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +3 -1
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +24 -5
- package/dist/sql/Statement.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +4 -2
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +7 -1
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +9 -3
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +18 -4
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +13 -3
- package/src/Array.ts +128 -55
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +263 -436
- package/src/ChannelSchema.ts +1 -49
- package/src/Chunk.ts +55 -61
- package/src/Config.ts +12 -86
- package/src/ConfigProvider.ts +2 -1
- package/src/Cron.ts +6 -3
- package/src/Duration.ts +66 -16
- package/src/Effect.ts +502 -167
- package/src/Equivalence.ts +7 -4
- package/src/Exit.ts +24 -9
- package/src/FiberHandle.ts +10 -9
- package/src/FiberMap.ts +13 -66
- package/src/FileSystem.ts +10 -0
- package/src/Graph.ts +171 -1263
- package/src/HashSet.ts +0 -60
- package/src/Iterable.ts +15 -14
- package/src/JsonSchema.ts +28 -3
- package/src/Layer.ts +2 -2
- package/src/ManagedRuntime.ts +72 -6
- package/src/Metric.ts +249 -507
- package/src/MutableHashMap.ts +4 -473
- package/src/Number.ts +2 -2
- package/src/Optic.ts +17 -332
- package/src/Path.ts +9 -1
- package/src/PubSub.ts +12 -7
- package/src/Queue.ts +5 -37
- package/src/Random.ts +1 -1
- package/src/RcMap.ts +14 -8
- package/src/Record.ts +51 -0
- package/src/Ref.ts +7 -104
- package/src/References.ts +5 -4
- package/src/RequestResolver.ts +46 -87
- package/src/Resource.ts +1 -1
- package/src/Runtime.ts +19 -18
- package/src/Schedule.ts +2 -94
- package/src/Schema.ts +591 -356
- package/src/SchemaAST.ts +20 -9
- package/src/SchemaGetter.ts +22 -5
- package/src/SchemaIssue.ts +44 -53
- package/src/SchemaRepresentation.ts +64 -1
- package/src/SchemaTransformation.ts +1 -1
- package/src/Scope.ts +12 -2
- package/src/ScopedCache.ts +17 -142
- package/src/SemVer.ts +1528 -0
- package/src/SemVerRange.ts +883 -0
- package/src/Sink.ts +6 -2
- package/src/Stream.ts +334 -1011
- package/src/String.ts +8 -8
- package/src/TextDiff.ts +766 -0
- package/src/TxHashMap.ts +1 -103
- package/src/TxHashSet.ts +48 -753
- package/src/ai/AiError.ts +66 -4
- package/src/ai/Chat.ts +10 -5
- package/src/ai/Decision.ts +49 -1
- package/src/ai/DecisionModel.ts +264 -108
- package/src/ai/EmbeddingModel.ts +25 -13
- package/src/ai/McpClient.ts +1211 -0
- package/src/ai/McpClientError.ts +329 -0
- package/src/ai/McpProtocol.ts +2 -2
- package/src/ai/McpSchema.ts +153 -35
- package/src/ai/McpServer.ts +217 -220
- package/src/ai/Prompt.ts +49 -35
- package/src/ai/Response.ts +195 -65
- package/src/ai/Tool.ts +12 -4
- package/src/ai/Toolkit.ts +78 -10
- package/src/ai/index.ts +12 -0
- package/src/ai/internal/mcpCore.ts +13 -14
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
- package/src/ai/internal/mcpProtocol.ts +22 -2
- package/src/ai/internal/mcpRuntime.ts +3 -4
- package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
- package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
- package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
- package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
- package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
- package/src/cli/CliError.ts +49 -4
- package/src/cli/Command.ts +316 -9
- package/src/cli/Completions.ts +5 -0
- package/src/cli/Flag.ts +117 -0
- package/src/cli/GlobalFlag.ts +3 -3
- package/src/cli/Param.ts +122 -0
- package/src/cli/TerminalCapabilities.ts +156 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +8 -3
- package/src/cli/internal/completions/bash.ts +4 -3
- package/src/cli/internal/completions/descriptor.ts +11 -1
- package/src/cli/internal/completions/fish.ts +10 -8
- package/src/cli/internal/completions/powershell.ts +23 -14
- package/src/cli/internal/completions/zsh.ts +8 -5
- package/src/cli/internal/formatter.ts +18 -0
- package/src/cli/internal/lexer.ts +12 -5
- package/src/cli/internal/parser.ts +31 -11
- package/src/cluster/ClusterCron.ts +94 -35
- package/src/cluster/ClusterMetrics.ts +149 -7
- package/src/cluster/ClusterWorkflowEngine.ts +84 -41
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +7 -0
- package/src/cluster/Runners.ts +76 -25
- package/src/cluster/Sharding.ts +118 -38
- package/src/cluster/ShardingConfig.ts +15 -0
- package/src/cluster/SqlMessageStorage.ts +58 -55
- package/src/cluster/SqlRunnerStorage.ts +10 -4
- package/src/cluster/internal/entityManager.ts +80 -10
- package/src/devtools/DevTools.ts +3 -2
- package/src/devtools/DevToolsClient.ts +27 -10
- package/src/encoding/Base64Url.ts +31 -0
- package/src/encoding/Ini.ts +3 -0
- package/src/encoding/JsonArray.ts +849 -0
- package/src/encoding/Ndjson.ts +211 -20
- package/src/encoding/SchemaBinary.ts +14 -48
- package/src/encoding/Tar.ts +1417 -0
- package/src/encoding/Toml.ts +3 -3
- package/src/encoding/Xml.ts +2037 -0
- package/src/encoding/Yaml.ts +108 -36
- package/src/encoding/Zip.ts +1558 -0
- package/src/encoding/index.ts +24 -0
- package/src/eventlog/EventJournal.ts +611 -227
- package/src/eventlog/EventLog.ts +496 -196
- package/src/eventlog/EventLogEncryption.ts +128 -43
- package/src/eventlog/EventLogMessage.ts +62 -11
- package/src/eventlog/EventLogRemote.ts +77 -21
- package/src/eventlog/EventLogServer.ts +162 -20
- package/src/eventlog/EventLogServerEncrypted.ts +121 -80
- package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
- package/src/eventlog/EventRow.ts +706 -0
- package/src/eventlog/SqlEventJournal.ts +453 -173
- package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
- package/src/eventlog/index.ts +6 -0
- package/src/eventlog/internal/conflicts.ts +123 -0
- package/src/graphql/GraphQLClientError.ts +5 -12
- package/src/graphql/GraphQLProtocol.ts +12 -9
- package/src/graphql/GraphQLResolver.ts +90 -239
- package/src/http/FetchHttpClient.ts +56 -6
- package/src/http/FindMyWay/internal/router.ts +11 -0
- package/src/http/Headers.ts +337 -154
- package/src/http/HttpClient.ts +126 -135
- package/src/http/HttpClientRequest.ts +142 -4
- package/src/http/HttpClientResponse.ts +71 -0
- package/src/http/HttpEffect.ts +25 -33
- package/src/http/HttpIncomingMessage.ts +3 -23
- package/src/http/HttpMiddleware.ts +180 -23
- package/src/http/HttpRouter.ts +8 -2
- package/src/http/HttpServerError.ts +6 -3
- package/src/http/HttpServerRequest.ts +71 -12
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +25 -9
- package/src/http/MultipartParser/internal/contentType.ts +107 -6
- package/src/http/MultipartParser/internal/headers.ts +4 -16
- package/src/http/MultipartParser/internal/multipart.ts +10 -32
- package/src/http/Url.ts +6 -1
- package/src/http/internal/decompression.ts +26 -17
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/webResponse.ts +20 -0
- package/src/http-api/HttpApi.ts +1 -1
- package/src/http-api/HttpApiBuilder.ts +151 -23
- package/src/http-api/HttpApiClient.ts +158 -30
- package/src/http-api/HttpApiEndpoint.ts +144 -33
- package/src/http-api/HttpApiError.ts +55 -0
- package/src/http-api/HttpApiScalar.ts +4 -3
- package/src/http-api/HttpApiSchema.ts +275 -13
- package/src/http-api/HttpApiSwagger.ts +11 -4
- package/src/http-api/HttpApiTest.ts +33 -9
- package/src/http-api/OpenApi.ts +84 -42
- package/src/http-api/internal/path.ts +40 -12
- package/src/index.ts +24 -0
- package/src/internal/core.ts +1 -1
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +120 -84
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/hydration.ts +15 -0
- package/src/internal/inflate.ts +710 -0
- package/src/internal/record.ts +6 -0
- package/src/internal/request.ts +21 -6
- package/src/internal/schedule.ts +20 -39
- package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
- package/src/internal/schema/interpreter.ts +58 -45
- package/src/internal/schema/standardSchema.ts +32 -30
- package/src/internal/schema/toCodeDocument.ts +8 -3
- package/src/internal/schema/toCodec.ts +116 -1
- package/src/internal/schema/toFormatter.ts +6 -6
- package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
- package/src/internal/trie.ts +1 -3
- package/src/internal/uuid.ts +15 -10
- package/src/internal/version.ts +1 -1
- package/src/net/NetAddress.ts +2 -9
- package/src/observability/OtlpExporter.ts +5 -12
- package/src/observability/OtlpMetrics.ts +5 -3
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/internal/protobuf.ts +2 -10
- package/src/persistence/PersistedCache.ts +3 -1
- package/src/persistence/PersistedQueue.ts +223 -153
- package/src/persistence/Persistence.ts +64 -30
- package/src/persistence/RateLimiter.ts +18 -21
- package/src/persistence/UserDirectories.ts +273 -0
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +2 -1
- package/src/reactivity/AsyncResult.ts +4 -38
- package/src/reactivity/Atom.ts +134 -166
- package/src/reactivity/AtomHttpApi.ts +10 -16
- package/src/reactivity/AtomRegistry.ts +50 -29
- package/src/reactivity/AtomRpc.ts +6 -22
- package/src/reactivity/Hydration.ts +53 -12
- package/src/reactivity/Reactivity.ts +97 -39
- package/src/rpc/Rpc.ts +21 -0
- package/src/rpc/RpcClient.ts +279 -103
- package/src/rpc/RpcSerialization.ts +21 -5
- package/src/rpc/RpcServer.ts +11 -20
- package/src/schema/VariantSchema.ts +86 -22
- package/src/socket/Socket.ts +45 -20
- package/src/sql/Migrator.ts +19 -9
- package/src/sql/SqlClient.ts +266 -29
- package/src/sql/SqlResolver.ts +9 -0
- package/src/sql/Statement.ts +35 -8
- package/src/testing/TestClock.ts +4 -1
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/WorkflowEngine.ts +34 -10
- package/dist/http/internal/preResponseHandler.d.ts +0 -2
- package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
- package/dist/http/internal/preResponseHandler.js +0 -14
- package/dist/http/internal/preResponseHandler.js.map +0 -1
- package/src/http/internal/preResponseHandler.ts +0 -19
|
@@ -35,6 +35,7 @@ import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
|
|
|
35
35
|
import { hasBody, type HttpMethod } from "./HttpMethod.ts"
|
|
36
36
|
import { HttpServerError, type RequestError, RequestParseError } from "./HttpServerError.ts"
|
|
37
37
|
import * as bodyInternal from "./internal/httpBody.ts"
|
|
38
|
+
import * as lazyStream from "./internal/lazyStream.ts"
|
|
38
39
|
import * as Multipart from "./Multipart.ts"
|
|
39
40
|
import * as UrlParams from "./UrlParams.ts"
|
|
40
41
|
|
|
@@ -72,8 +73,11 @@ export const TypeId = "~effect/http/HttpServerRequest"
|
|
|
72
73
|
* **Details**
|
|
73
74
|
*
|
|
74
75
|
* It extends `HttpIncomingMessage` with request metadata, parsed cookies,
|
|
75
|
-
* multipart accessors,
|
|
76
|
-
* creating adjusted request views.
|
|
76
|
+
* multipart accessors, connection upgrades, and a `modify` method for
|
|
77
|
+
* creating adjusted request views. `upgrade` completes a WebSocket handshake
|
|
78
|
+
* for `Upgrade: websocket`. Platforms that can hand over the connection, such
|
|
79
|
+
* as Node, answer other protocols with `101 Switching Protocols` and expose
|
|
80
|
+
* the raw connection.
|
|
77
81
|
*
|
|
78
82
|
* @stability unstable
|
|
79
83
|
* @category models
|
|
@@ -96,11 +100,26 @@ export interface HttpServerRequest extends HttpIncomingMessage.HttpIncomingMessa
|
|
|
96
100
|
|
|
97
101
|
readonly upgrade: Effect.Effect<Socket.Socket, HttpServerError>
|
|
98
102
|
|
|
103
|
+
/**
|
|
104
|
+
* Address of the directly connected peer. Trusted proxy middleware replaces
|
|
105
|
+
* `remoteAddress` with the forwarded client address and keeps the previous
|
|
106
|
+
* value here; otherwise it equals `remoteAddress`.
|
|
107
|
+
*/
|
|
108
|
+
readonly peerAddress: Option.Option<string>
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Scheme validated by trusted proxy middleware. `toURL` prefers it over the
|
|
112
|
+
* scheme of the transport connection.
|
|
113
|
+
*/
|
|
114
|
+
readonly protocol: "http" | "https" | undefined
|
|
115
|
+
|
|
99
116
|
readonly modify: (
|
|
100
117
|
options: {
|
|
101
118
|
readonly url?: string
|
|
102
119
|
readonly headers?: Headers.Headers
|
|
103
120
|
readonly remoteAddress?: Option.Option<string>
|
|
121
|
+
readonly peerAddress?: Option.Option<string>
|
|
122
|
+
readonly protocol?: "http" | "https"
|
|
104
123
|
}
|
|
105
124
|
) => HttpServerRequest
|
|
106
125
|
}
|
|
@@ -493,12 +512,16 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
493
512
|
readonly url: string
|
|
494
513
|
public headersOverride?: Headers.Headers | undefined
|
|
495
514
|
private remoteAddressOverride?: Option.Option<string> | undefined
|
|
515
|
+
private peerAddressOverride?: Option.Option<string> | undefined
|
|
516
|
+
readonly protocol: "http" | "https" | undefined
|
|
496
517
|
|
|
497
518
|
constructor(
|
|
498
519
|
source: Request,
|
|
499
520
|
url: string,
|
|
500
521
|
headersOverride?: Headers.Headers,
|
|
501
|
-
remoteAddressOverride?: Option.Option<string
|
|
522
|
+
remoteAddressOverride?: Option.Option<string>,
|
|
523
|
+
peerAddressOverride?: Option.Option<string>,
|
|
524
|
+
protocol?: "http" | "https"
|
|
502
525
|
) {
|
|
503
526
|
super()
|
|
504
527
|
this[TypeId] = TypeId
|
|
@@ -507,6 +530,8 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
507
530
|
this.url = url
|
|
508
531
|
this.headersOverride = headersOverride
|
|
509
532
|
this.remoteAddressOverride = remoteAddressOverride
|
|
533
|
+
this.peerAddressOverride = peerAddressOverride
|
|
534
|
+
this.protocol = protocol
|
|
510
535
|
}
|
|
511
536
|
toJSON(): unknown {
|
|
512
537
|
return HttpIncomingMessage.inspect(this, {
|
|
@@ -520,13 +545,17 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
520
545
|
readonly url?: string | undefined
|
|
521
546
|
readonly headers?: Headers.Headers | undefined
|
|
522
547
|
readonly remoteAddress?: Option.Option<string> | undefined
|
|
548
|
+
readonly peerAddress?: Option.Option<string> | undefined
|
|
549
|
+
readonly protocol?: "http" | "https" | undefined
|
|
523
550
|
}
|
|
524
551
|
) {
|
|
525
552
|
return new ServerRequestImpl(
|
|
526
553
|
this.source,
|
|
527
554
|
options.url ?? this.url,
|
|
528
555
|
options.headers ?? this.headersOverride,
|
|
529
|
-
"remoteAddress" in options ? options.remoteAddress : this.remoteAddressOverride
|
|
556
|
+
"remoteAddress" in options ? options.remoteAddress : this.remoteAddressOverride,
|
|
557
|
+
options.peerAddress ?? this.peerAddressOverride,
|
|
558
|
+
options.protocol ?? this.protocol
|
|
530
559
|
)
|
|
531
560
|
}
|
|
532
561
|
get method(): HttpMethod {
|
|
@@ -538,6 +567,9 @@ class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
538
567
|
get remoteAddress(): Option.Option<string> {
|
|
539
568
|
return this.remoteAddressOverride ?? Option.none()
|
|
540
569
|
}
|
|
570
|
+
get peerAddress(): Option.Option<string> {
|
|
571
|
+
return this.peerAddressOverride ?? this.remoteAddress
|
|
572
|
+
}
|
|
541
573
|
get headers(): Headers.Headers {
|
|
542
574
|
this.headersOverride ??= Headers.fromInput(this.source.headers as any)
|
|
543
575
|
return this.headersOverride
|
|
@@ -688,6 +720,8 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
688
720
|
public originalUrl: string
|
|
689
721
|
public headersOverride?: Headers.Headers | undefined
|
|
690
722
|
private remoteAddressOverride?: Option.Option<string> | undefined
|
|
723
|
+
private peerAddressOverride?: Option.Option<string> | undefined
|
|
724
|
+
readonly protocol: "http" | "https" | undefined
|
|
691
725
|
private urlOverride?: string | undefined
|
|
692
726
|
|
|
693
727
|
constructor(
|
|
@@ -695,7 +729,9 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
695
729
|
originalUrl: string,
|
|
696
730
|
urlOverride?: string,
|
|
697
731
|
headersOverride?: Headers.Headers,
|
|
698
|
-
remoteAddressOverride?: Option.Option<string
|
|
732
|
+
remoteAddressOverride?: Option.Option<string>,
|
|
733
|
+
peerAddressOverride?: Option.Option<string>,
|
|
734
|
+
protocol?: "http" | "https"
|
|
699
735
|
) {
|
|
700
736
|
super()
|
|
701
737
|
this[TypeId] = TypeId
|
|
@@ -705,6 +741,8 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
705
741
|
this.urlOverride = urlOverride
|
|
706
742
|
this.headersOverride = headersOverride
|
|
707
743
|
this.remoteAddressOverride = remoteAddressOverride
|
|
744
|
+
this.peerAddressOverride = peerAddressOverride
|
|
745
|
+
this.protocol = protocol
|
|
708
746
|
}
|
|
709
747
|
|
|
710
748
|
toJSON(): unknown {
|
|
@@ -720,6 +758,8 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
720
758
|
readonly url?: string | undefined
|
|
721
759
|
readonly headers?: Headers.Headers | undefined
|
|
722
760
|
readonly remoteAddress?: Option.Option<string> | undefined
|
|
761
|
+
readonly peerAddress?: Option.Option<string> | undefined
|
|
762
|
+
readonly protocol?: "http" | "https" | undefined
|
|
723
763
|
}
|
|
724
764
|
) {
|
|
725
765
|
return new ClientRequestImpl(
|
|
@@ -727,7 +767,9 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
727
767
|
this.originalUrl,
|
|
728
768
|
options.url ?? this.url,
|
|
729
769
|
options.headers ?? this.headersOverride,
|
|
730
|
-
"remoteAddress" in options ? options.remoteAddress : this.remoteAddressOverride
|
|
770
|
+
"remoteAddress" in options ? options.remoteAddress : this.remoteAddressOverride,
|
|
771
|
+
options.peerAddress ?? this.peerAddressOverride,
|
|
772
|
+
options.protocol ?? this.protocol
|
|
731
773
|
)
|
|
732
774
|
}
|
|
733
775
|
|
|
@@ -743,6 +785,10 @@ class ClientRequestImpl extends Inspectable.Class implements HttpServerRequest {
|
|
|
743
785
|
return this.remoteAddressOverride ?? Option.none()
|
|
744
786
|
}
|
|
745
787
|
|
|
788
|
+
get peerAddress(): Option.Option<string> {
|
|
789
|
+
return this.peerAddressOverride ?? this.remoteAddress
|
|
790
|
+
}
|
|
791
|
+
|
|
746
792
|
get headers(): Headers.Headers {
|
|
747
793
|
return this.headersOverride ??= this.source.headers
|
|
748
794
|
}
|
|
@@ -1039,9 +1085,13 @@ const textDecoder = new TextDecoder()
|
|
|
1039
1085
|
*
|
|
1040
1086
|
* **Details**
|
|
1041
1087
|
*
|
|
1042
|
-
*
|
|
1043
|
-
*
|
|
1044
|
-
*
|
|
1088
|
+
* Uses `host` (defaulting to `localhost`) and the request `protocol` set by
|
|
1089
|
+
* trusted proxy middleware. Otherwise, infers HTTPS from a case-insensitive
|
|
1090
|
+
* `https:` prefix in `originalUrl`, defaulting to HTTP. Forwarding headers such
|
|
1091
|
+
* as `x-forwarded-proto` are never read directly; use
|
|
1092
|
+
* `HttpMiddleware.xForwardedHeaders` behind a TLS-terminating proxy. An
|
|
1093
|
+
* absolute `url` keeps its own protocol and host. Invalid URLs return
|
|
1094
|
+
* `Option.none`.
|
|
1045
1095
|
*
|
|
1046
1096
|
* @stability unstable
|
|
1047
1097
|
* @category converting
|
|
@@ -1049,9 +1099,10 @@ const textDecoder = new TextDecoder()
|
|
|
1049
1099
|
*/
|
|
1050
1100
|
export const toURL = (self: HttpServerRequest): Option.Option<URL> => {
|
|
1051
1101
|
const host = self.headers.host ?? "localhost"
|
|
1052
|
-
const protocol = self.
|
|
1102
|
+
const protocol = self.protocol ?? (/^https:/i.test(self.originalUrl) ? "https" : "http")
|
|
1053
1103
|
try {
|
|
1054
|
-
|
|
1104
|
+
// Prefix paths with `.` so leading `//` cannot replace the host.
|
|
1105
|
+
return Option.some(new URL(self.url.startsWith("/") ? `.${self.url}` : self.url, `${protocol}://${host}`))
|
|
1055
1106
|
} catch {
|
|
1056
1107
|
return Option.none()
|
|
1057
1108
|
}
|
|
@@ -1094,7 +1145,15 @@ export const toWebResult = (self: HttpServerRequest, options?: {
|
|
|
1094
1145
|
requestInit.signal = options.signal
|
|
1095
1146
|
}
|
|
1096
1147
|
if (hasBody(self.method)) {
|
|
1097
|
-
|
|
1148
|
+
// Opening on the first pull with a zero high-water mark reads the body only
|
|
1149
|
+
// when the Web body is read, so converting a request leaves it readable.
|
|
1150
|
+
requestInit.body = Stream.toReadableStreamWith(
|
|
1151
|
+
lazyStream.openOnFirstPull(self.stream),
|
|
1152
|
+
options?.context ?? Context.empty(),
|
|
1153
|
+
{
|
|
1154
|
+
strategy: { highWaterMark: 0 }
|
|
1155
|
+
}
|
|
1156
|
+
)
|
|
1098
1157
|
;(requestInit as any).duplex = "half"
|
|
1099
1158
|
}
|
|
1100
1159
|
return Result.succeed(new Request(url.value, requestInit))
|
|
@@ -25,6 +25,7 @@ import { hasProperty } from "../Predicate.ts"
|
|
|
25
25
|
import { redact } from "../Redactable.ts"
|
|
26
26
|
import type * as Schema from "../Schema.ts"
|
|
27
27
|
import type { ParseOptions } from "../SchemaAST.ts"
|
|
28
|
+
import type * as Socket from "../socket/Socket.ts"
|
|
28
29
|
import * as Stream from "../Stream.ts"
|
|
29
30
|
import type { Mutable } from "../Types.ts"
|
|
30
31
|
import * as Cookies from "./Cookies.ts"
|
|
@@ -76,6 +77,9 @@ export interface Options {
|
|
|
76
77
|
readonly headers?: Headers.Input | undefined
|
|
77
78
|
readonly cookies?: Cookies.Cookies | undefined
|
|
78
79
|
readonly contentType?: string | undefined
|
|
80
|
+
/**
|
|
81
|
+
* Sent as `content-length`, so it must equal the body's byte length.
|
|
82
|
+
*/
|
|
79
83
|
readonly contentLength?: number | undefined
|
|
80
84
|
}
|
|
81
85
|
|
|
@@ -1346,6 +1350,9 @@ export const setStatus: {
|
|
|
1346
1350
|
export const omitsBody = (response: HttpServerResponse, withoutBody = false): boolean =>
|
|
1347
1351
|
withoutBody || response.status === 204 || response.status === 205 || response.status === 304
|
|
1348
1352
|
|
|
1353
|
+
// HEAD and 304 retain the representation length; 204 and 205 omit it.
|
|
1354
|
+
const omitsContentLength = (status: number): boolean => status === 204 || status === 205
|
|
1355
|
+
|
|
1349
1356
|
const mergeHeaders = (target: globalThis.Headers, headers: globalThis.Headers): globalThis.Headers => {
|
|
1350
1357
|
for (const [key, value] of headers as any) {
|
|
1351
1358
|
if (key === "set-cookie") {
|
|
@@ -1366,15 +1373,15 @@ const mergeHeaders = (target: globalThis.Headers, headers: globalThis.Headers):
|
|
|
1366
1373
|
* the supplied context, and are interrupted when `signal` aborts.
|
|
1367
1374
|
*
|
|
1368
1375
|
* Bodies are omitted for statuses 204, 205, and 304, or when `withoutBody` is true
|
|
1369
|
-
* (for example, for HEAD responses).
|
|
1370
|
-
*
|
|
1376
|
+
* (for example, for HEAD responses). Statuses 204 and 205 also omit
|
|
1377
|
+
* `content-length`. Omitted raw `ReadableStream` bodies are cancelled without
|
|
1378
|
+
* awaiting completion, and cancellation errors are ignored.
|
|
1371
1379
|
*
|
|
1372
|
-
* A raw `Response` is returned as-is
|
|
1373
|
-
*
|
|
1374
|
-
*
|
|
1375
|
-
*
|
|
1376
|
-
*
|
|
1377
|
-
* status otherwise.
|
|
1380
|
+
* A raw `Response` is returned as-is unless its body or `content-length` must
|
|
1381
|
+
* be omitted, or outer headers or cookies must be merged. Copies leave the
|
|
1382
|
+
* original unchanged: outer headers replace native ones, and cookies append.
|
|
1383
|
+
* Bodyless copies use the outer status for 204, 205 and 304; otherwise they keep
|
|
1384
|
+
* the raw status.
|
|
1378
1385
|
*
|
|
1379
1386
|
* @stability unstable
|
|
1380
1387
|
* @category converting
|
|
@@ -1400,27 +1407,28 @@ export const toWeb = (
|
|
|
1400
1407
|
const withoutBody = outerOmitsBody || options?.withoutBody === true
|
|
1401
1408
|
if (body._tag === "Raw" && body.body instanceof Response) {
|
|
1402
1409
|
const raw = body.body
|
|
1403
|
-
|
|
1404
|
-
if (headers.keys().next().done) {
|
|
1405
|
-
return raw
|
|
1406
|
-
}
|
|
1407
|
-
const copy = new Response(raw.body, raw)
|
|
1408
|
-
mergeHeaders(copy.headers, headers)
|
|
1409
|
-
return copy
|
|
1410
|
-
}
|
|
1411
|
-
// A bodyless outer status is what the caller chose to send; otherwise the
|
|
1412
|
-
// body is only omitted for HEAD and the raw Response describes the resource.
|
|
1410
|
+
// HEAD preserves the raw status; an explicit bodyless status overrides it.
|
|
1413
1411
|
const source = outerOmitsBody ? response : raw
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1412
|
+
const omitContentLength = omitsContentLength(source.status)
|
|
1413
|
+
if (!withoutBody && headers.keys().next().done && !(omitContentLength && raw.headers.has("content-length"))) {
|
|
1414
|
+
return raw
|
|
1415
|
+
}
|
|
1416
|
+
const copy = withoutBody
|
|
1417
|
+
? new Response(undefined, {
|
|
1418
|
+
status: source.status,
|
|
1419
|
+
statusText: source.statusText as string,
|
|
1420
|
+
headers: raw.headers
|
|
1421
|
+
})
|
|
1422
|
+
: new Response(raw.body, raw)
|
|
1423
|
+
mergeHeaders(copy.headers, headers)
|
|
1424
|
+
if (omitContentLength) copy.headers.delete("content-length")
|
|
1425
|
+
return copy
|
|
1419
1426
|
}
|
|
1420
1427
|
if (withoutBody) {
|
|
1421
1428
|
if (body._tag === "Raw" && isReadableStream(body.body)) {
|
|
1422
1429
|
body.body.cancel().catch(constVoid)
|
|
1423
1430
|
}
|
|
1431
|
+
if (omitsContentLength(response.status)) headers.delete("content-length")
|
|
1424
1432
|
return new Response(undefined, {
|
|
1425
1433
|
status: response.status,
|
|
1426
1434
|
statusText: response.statusText as string,
|
|
@@ -1696,6 +1704,18 @@ class ServerHttpClientResponse extends Inspectable.Class implements HttpClientRe
|
|
|
1696
1704
|
return this.formDataResponse ??= new Response((this.response.body as Body.FormData).formData)
|
|
1697
1705
|
}
|
|
1698
1706
|
|
|
1707
|
+
get upgrade(): Effect.Effect<Socket.Socket, HttpClientError.HttpClientError> {
|
|
1708
|
+
return Effect.fail(
|
|
1709
|
+
new HttpClientError.HttpClientError({
|
|
1710
|
+
reason: new HttpClientError.StatusCodeError({
|
|
1711
|
+
request: this.request,
|
|
1712
|
+
response: this,
|
|
1713
|
+
description: "a server response has no connection to hand over"
|
|
1714
|
+
})
|
|
1715
|
+
})
|
|
1716
|
+
)
|
|
1717
|
+
}
|
|
1718
|
+
|
|
1699
1719
|
pipe() {
|
|
1700
1720
|
return pipeArguments(this, arguments)
|
|
1701
1721
|
}
|
|
@@ -1804,6 +1824,12 @@ const makeResponse = (options: {
|
|
|
1804
1824
|
* `Set-Cookie` headers are parsed into the response cookie collection and removed
|
|
1805
1825
|
* from the header map. A present Web body is exposed as a stream body.
|
|
1806
1826
|
*
|
|
1827
|
+
* **Gotchas**
|
|
1828
|
+
*
|
|
1829
|
+
* Preserves `content-length`, which must match the body. When proxying a
|
|
1830
|
+
* compressed response decoded by `fetch`, remove the stale length from a copy
|
|
1831
|
+
* (`new Response(response.body, response)`) before converting it.
|
|
1832
|
+
*
|
|
1807
1833
|
* @stability unstable
|
|
1808
1834
|
* @category converting
|
|
1809
1835
|
* @since 4.0.0
|
|
@@ -10,12 +10,15 @@
|
|
|
10
10
|
* @stability unstable
|
|
11
11
|
* @since 4.0.0
|
|
12
12
|
*/
|
|
13
|
+
import * as DateTime from "../DateTime.ts"
|
|
13
14
|
import * as Effect from "../Effect.ts"
|
|
14
15
|
import * as FileSystem from "../FileSystem.ts"
|
|
15
16
|
import * as Layer from "../Layer.ts"
|
|
16
17
|
import * as Option from "../Option.ts"
|
|
17
18
|
import * as Path from "../Path.ts"
|
|
18
19
|
import type { PlatformError } from "../PlatformError.ts"
|
|
20
|
+
import * as Result from "../Result.ts"
|
|
21
|
+
import * as Headers from "./Headers.ts"
|
|
19
22
|
import * as HttpPlatform from "./HttpPlatform.ts"
|
|
20
23
|
import * as HttpRouter from "./HttpRouter.ts"
|
|
21
24
|
import * as HttpServerError from "./HttpServerError.ts"
|
|
@@ -207,12 +210,26 @@ export const make: (options: {
|
|
|
207
210
|
return serveFile(request, resolvedPath, info.size)
|
|
208
211
|
}
|
|
209
212
|
if (info.type === "Directory" && index !== undefined) {
|
|
213
|
+
let originalUrl = request.originalUrl
|
|
214
|
+
if (!originalUrl.startsWith("/")) {
|
|
215
|
+
const url = new URL(originalUrl)
|
|
216
|
+
originalUrl = url.pathname + url.search
|
|
217
|
+
}
|
|
218
|
+
const pathname = stripQueryString(originalUrl)
|
|
219
|
+
if (!pathname.endsWith("/")) {
|
|
220
|
+
// Keep the redirect local even when the path starts with multiple separators.
|
|
221
|
+
const location = pathname.replace(/^\/+/, "/").replace(/\\/g, "%5C")
|
|
222
|
+
return Effect.succeed(HttpServerResponse.redirect(
|
|
223
|
+
`${location}/${originalUrl.slice(pathname.length)}`,
|
|
224
|
+
{ status: 301 }
|
|
225
|
+
))
|
|
226
|
+
}
|
|
210
227
|
return serveFile(request, path.join(resolvedPath, index))
|
|
211
228
|
}
|
|
212
229
|
return Effect.fail(toRouteNotFoundError(request))
|
|
213
230
|
}
|
|
214
|
-
})
|
|
215
|
-
})
|
|
231
|
+
});
|
|
232
|
+
});
|
|
216
233
|
})
|
|
217
234
|
|
|
218
235
|
/**
|
|
@@ -446,19 +463,18 @@ const matchesIfNoneMatch = (ifNoneMatch: string, etag: string | undefined): bool
|
|
|
446
463
|
return false
|
|
447
464
|
}
|
|
448
465
|
|
|
466
|
+
// An invalid date on either side disables the precondition (RFC 9110 §13.1.3).
|
|
449
467
|
const isNotModifiedSince = (ifModifiedSince: string, lastModified: string | undefined): boolean => {
|
|
450
468
|
if (lastModified === undefined) {
|
|
451
469
|
return false
|
|
452
470
|
}
|
|
453
|
-
const
|
|
454
|
-
if (
|
|
455
|
-
return false
|
|
456
|
-
}
|
|
457
|
-
const lastModifiedMs = Date.parse(lastModified)
|
|
458
|
-
if (Number.isNaN(lastModifiedMs)) {
|
|
471
|
+
const ifModifiedSinceDate = Headers.parseHttpDate(ifModifiedSince)
|
|
472
|
+
if (Result.isFailure(ifModifiedSinceDate)) {
|
|
459
473
|
return false
|
|
460
474
|
}
|
|
461
|
-
|
|
475
|
+
const lastModifiedDate = Headers.parseHttpDate(lastModified)
|
|
476
|
+
return Result.isSuccess(lastModifiedDate) &&
|
|
477
|
+
DateTime.toEpochMillis(lastModifiedDate.success) <= DateTime.toEpochMillis(ifModifiedSinceDate.success)
|
|
462
478
|
}
|
|
463
479
|
|
|
464
480
|
// Only a strong entity-tag can match (RFC 9110 §13.1.5). Weak tags start
|
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
const paramRE =
|
|
19
19
|
/; *([!#$%&'*+.^\w`|~-]+)=("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u{10ffff}]|\\[\v\u0020-\u{10ffff}])*"|[!#$%&'*+.^\w`|~-]+) */gu
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* RegExp to match *( ";" disposition-parm ) in RFC 6266 sec 4.1, which allows
|
|
23
|
+
* optional whitespace around separators
|
|
24
|
+
*/
|
|
25
|
+
const dispositionParamRE =
|
|
26
|
+
/;[ \t]*([!#$%&'*+.^\w`|~-]+)[ \t]*=[ \t]*("(?:[\v\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u{10ffff}]|\\[\v\u0020-\u{10ffff}])*"|[!#$%&'*+.^\w`|~-]+)[ \t]*/gu
|
|
27
|
+
|
|
21
28
|
/**
|
|
22
29
|
* RegExp to match quoted-pair in RFC 7230 sec 3.2.6
|
|
23
30
|
*
|
|
@@ -34,14 +41,13 @@ const quotedPairRE = /\\([\v\u0020-\u{10ffff}])/gu
|
|
|
34
41
|
* subtype = token
|
|
35
42
|
*/
|
|
36
43
|
const mediaTypeRE = /^[!#$%&'*+.^\w|~-]+\/[!#$%&'*+.^\w|~-]+$/u
|
|
37
|
-
const
|
|
44
|
+
const dispositionTypeRE = /^[!#$%&'*+.^\w|~-]+$/u
|
|
38
45
|
|
|
39
46
|
// default ContentType to prevent repeated object creation
|
|
40
47
|
const defaultContentType = { value: "", parameters: Object.create(null) }
|
|
41
48
|
|
|
42
49
|
export function parse(
|
|
43
|
-
header: string | undefined
|
|
44
|
-
withoutSlash = false
|
|
50
|
+
header: string | undefined
|
|
45
51
|
): {
|
|
46
52
|
readonly value: string
|
|
47
53
|
readonly parameters: Record<string, string>
|
|
@@ -52,9 +58,8 @@ export function parse(
|
|
|
52
58
|
|
|
53
59
|
let index = header.indexOf(";")
|
|
54
60
|
const type = index !== -1 ? header.slice(0, index).trim() : header.trim()
|
|
55
|
-
const mediaRE = withoutSlash ? mediaTypeRENoSlash : mediaTypeRE
|
|
56
61
|
|
|
57
|
-
if (
|
|
62
|
+
if (mediaTypeRE.test(type) === false) {
|
|
58
63
|
return defaultContentType
|
|
59
64
|
}
|
|
60
65
|
|
|
@@ -87,7 +92,7 @@ export function parse(
|
|
|
87
92
|
// remove quotes and escapes
|
|
88
93
|
value = value.slice(1, value.length - 1)
|
|
89
94
|
|
|
90
|
-
if (
|
|
95
|
+
if (quotedPairRE.test(value)) {
|
|
91
96
|
value = value.replace(quotedPairRE, "$1")
|
|
92
97
|
}
|
|
93
98
|
}
|
|
@@ -101,3 +106,99 @@ export function parse(
|
|
|
101
106
|
|
|
102
107
|
return result
|
|
103
108
|
}
|
|
109
|
+
|
|
110
|
+
// RFC 8187 ext-value: charset "'" [ language ] "'" value-chars
|
|
111
|
+
const extValueRE = /^(utf-8|iso-8859-1)'[a-z0-9-]*'((?:%[0-9a-f]{2}|[!#$&+.^_`|~\w-])*)$/i
|
|
112
|
+
const pctEncodedRE = /%([0-9a-f]{2})/gi
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Decodes an RFC 8187 ext-value, returning `undefined` when it is malformed.
|
|
116
|
+
* ISO-8859-1 is decoded byte by byte because `TextDecoder` treats it as
|
|
117
|
+
* windows-1252.
|
|
118
|
+
*/
|
|
119
|
+
function decodeExtValue(value: string): string | undefined {
|
|
120
|
+
const match = extValueRE.exec(value)
|
|
121
|
+
if (match === null) {
|
|
122
|
+
return undefined
|
|
123
|
+
}
|
|
124
|
+
if (match[1].toLowerCase() === "iso-8859-1") {
|
|
125
|
+
return match[2].replace(pctEncodedRE, (_, hex: string) => String.fromCharCode(parseInt(hex, 16)))
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
return decodeURIComponent(match[2])
|
|
129
|
+
} catch {
|
|
130
|
+
return undefined
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
export interface ContentDisposition {
|
|
135
|
+
readonly value: string
|
|
136
|
+
readonly parameters: Record<string, string>
|
|
137
|
+
/** `filename*` decoded per RFC 8187, falling back to `filename` */
|
|
138
|
+
readonly filename: string | undefined
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// default ContentDisposition to prevent repeated object creation
|
|
142
|
+
const defaultContentDisposition: ContentDisposition = { ...defaultContentType, filename: undefined }
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Parses a Content-Disposition header according to RFC 6266, returning
|
|
146
|
+
* `undefined` when it is malformed, repeats a parameter or carries an
|
|
147
|
+
* undecodable `filename*`.
|
|
148
|
+
*
|
|
149
|
+
* Quoted-pairs are left as-is, so unescaped backslashes in file paths survive.
|
|
150
|
+
*/
|
|
151
|
+
export function parseDisposition(
|
|
152
|
+
header: string | ReadonlyArray<string> | undefined
|
|
153
|
+
): ContentDisposition | undefined {
|
|
154
|
+
if (header === undefined) {
|
|
155
|
+
return defaultContentDisposition
|
|
156
|
+
} else if (typeof header !== "string") {
|
|
157
|
+
return undefined
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
let index = header.indexOf(";")
|
|
161
|
+
const type = index !== -1 ? header.slice(0, index).trim() : header.trim()
|
|
162
|
+
|
|
163
|
+
if (dispositionTypeRE.test(type) === false) {
|
|
164
|
+
return undefined
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const parameters: Record<string, string> = Object.create(null)
|
|
168
|
+
|
|
169
|
+
if (index !== -1) {
|
|
170
|
+
let match: RegExpExecArray | null
|
|
171
|
+
|
|
172
|
+
dispositionParamRE.lastIndex = index
|
|
173
|
+
|
|
174
|
+
while ((match = dispositionParamRE.exec(header))) {
|
|
175
|
+
if (match.index !== index) {
|
|
176
|
+
return undefined
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
index += match[0].length
|
|
180
|
+
const key = match[1].toLowerCase()
|
|
181
|
+
const value = match[2]
|
|
182
|
+
|
|
183
|
+
if (key in parameters) {
|
|
184
|
+
return undefined
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
parameters[key] = value[0] === "\"" ? value.slice(1, value.length - 1) : value
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (index !== header.length) {
|
|
191
|
+
return undefined
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
let filename: string | undefined = parameters.filename
|
|
196
|
+
if ("filename*" in parameters) {
|
|
197
|
+
filename = decodeExtValue(parameters["filename*"])
|
|
198
|
+
if (filename === undefined) {
|
|
199
|
+
return undefined
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
return { value: type.toLowerCase(), parameters, filename }
|
|
204
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as Bytes from "../../../Bytes.ts"
|
|
1
2
|
import type { Continue, FailureReason, ReturnValue } from "../HeadersParser.ts"
|
|
2
3
|
|
|
3
4
|
const constMaxPairs = 100
|
|
@@ -55,13 +56,6 @@ export function make() {
|
|
|
55
56
|
return value
|
|
56
57
|
}
|
|
57
58
|
|
|
58
|
-
function concatUint8Array(a: Uint8Array, b: Uint8Array): Uint8Array {
|
|
59
|
-
const newUint8Array = new Uint8Array(a.length + b.length)
|
|
60
|
-
newUint8Array.set(a)
|
|
61
|
-
newUint8Array.set(b, a.length)
|
|
62
|
-
return newUint8Array
|
|
63
|
-
}
|
|
64
|
-
|
|
65
59
|
function error(reason: FailureReason) {
|
|
66
60
|
return reset({ _tag: "Failure", reason, headers: state.headers })
|
|
67
61
|
}
|
|
@@ -73,11 +67,8 @@ export function make() {
|
|
|
73
67
|
endOffset = state.previousChunk.length
|
|
74
68
|
previousCursor = endOffset
|
|
75
69
|
|
|
76
|
-
|
|
77
|
-
newChunk.set(state.previousChunk)
|
|
78
|
-
newChunk.set(chunk, endOffset)
|
|
70
|
+
chunk = Bytes.concat([state.previousChunk, chunk])
|
|
79
71
|
state.previousChunk = undefined
|
|
80
|
-
chunk = newChunk
|
|
81
72
|
}
|
|
82
73
|
const end = chunk.length
|
|
83
74
|
|
|
@@ -182,10 +173,7 @@ export function make() {
|
|
|
182
173
|
} else if (state.crlf >= 2) {
|
|
183
174
|
state.value = state.value === undefined
|
|
184
175
|
? chunk.subarray(start, i - state.crlf)
|
|
185
|
-
:
|
|
186
|
-
state.value,
|
|
187
|
-
chunk.subarray(start, i - state.crlf)
|
|
188
|
-
)
|
|
176
|
+
: Bytes.concat([state.value, chunk.subarray(start, i - state.crlf)])
|
|
189
177
|
const value = decoder.decode(state.value)
|
|
190
178
|
if (state.headers[state.key] === undefined) {
|
|
191
179
|
state.headers[state.key] = value
|
|
@@ -229,7 +217,7 @@ export function make() {
|
|
|
229
217
|
if (i === end) {
|
|
230
218
|
state.value = state.value === undefined
|
|
231
219
|
? chunk.subarray(start, end)
|
|
232
|
-
:
|
|
220
|
+
: Bytes.concat([state.value, chunk.subarray(start, end)])
|
|
233
221
|
return constContinue
|
|
234
222
|
}
|
|
235
223
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as Bytes from "../../../Bytes.ts"
|
|
1
2
|
import * as ByteSize from "../../../ByteSize.ts"
|
|
2
3
|
import type { Config, MultipartError, PartInfo } from "../../MultipartParser.ts"
|
|
3
4
|
import * as CT from "./contentType.ts"
|
|
@@ -117,18 +118,10 @@ export function make({
|
|
|
117
118
|
if (state.isFile) {
|
|
118
119
|
state.onChunk(null)
|
|
119
120
|
} else {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
let offset = 0
|
|
125
|
-
for (let i = 0; i < state.fieldChunks.length; i++) {
|
|
126
|
-
const chunk = state.fieldChunks[i]
|
|
127
|
-
buf.set(chunk, offset)
|
|
128
|
-
offset += chunk.length
|
|
129
|
-
}
|
|
130
|
-
onField(state.info, buf)
|
|
131
|
-
}
|
|
121
|
+
onField(
|
|
122
|
+
state.info,
|
|
123
|
+
state.fieldChunks.length === 1 ? state.fieldChunks[0] : Bytes.concat(state.fieldChunks)
|
|
124
|
+
)
|
|
132
125
|
state.fieldSize = 0
|
|
133
126
|
state.fieldChunks = []
|
|
134
127
|
}
|
|
@@ -167,36 +160,21 @@ export function make({
|
|
|
167
160
|
}
|
|
168
161
|
|
|
169
162
|
const contentType = CT.parse(result.headers["content-type"] as string)
|
|
170
|
-
const contentDisposition = CT.
|
|
171
|
-
result.headers["content-disposition"] as string,
|
|
172
|
-
true
|
|
173
|
-
)
|
|
163
|
+
const contentDisposition = CT.parseDisposition(result.headers["content-disposition"])
|
|
174
164
|
|
|
175
165
|
if (
|
|
176
|
-
|
|
177
|
-
!("name" in contentDisposition.parameters)
|
|
166
|
+
contentDisposition === undefined ||
|
|
167
|
+
("form-data" === contentDisposition.value && !("name" in contentDisposition.parameters))
|
|
178
168
|
) {
|
|
179
169
|
skipBody()
|
|
180
170
|
return onError(errInvalidDisposition)
|
|
181
171
|
}
|
|
182
172
|
|
|
183
|
-
let encodedFilename: string | undefined
|
|
184
|
-
if ("filename*" in contentDisposition.parameters) {
|
|
185
|
-
const parts = contentDisposition.parameters["filename*"].split("''")
|
|
186
|
-
if (parts.length === 2) {
|
|
187
|
-
try {
|
|
188
|
-
encodedFilename = decodeURIComponent(parts[1])
|
|
189
|
-
} catch {
|
|
190
|
-
encodedFilename = parts[1]
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
173
|
state.info = {
|
|
196
174
|
name: contentDisposition.parameters.name ?? "",
|
|
197
|
-
filename:
|
|
175
|
+
filename: contentDisposition.filename,
|
|
198
176
|
contentType: contentType.value === ""
|
|
199
|
-
? contentDisposition.
|
|
177
|
+
? contentDisposition.filename !== undefined
|
|
200
178
|
? "application/octet-stream"
|
|
201
179
|
: "text/plain"
|
|
202
180
|
: contentType.value,
|