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
package/src/http/HttpEffect.ts
CHANGED
|
@@ -28,7 +28,7 @@ import { HttpServerRequest } from "./HttpServerRequest.ts"
|
|
|
28
28
|
import * as Request from "./HttpServerRequest.ts"
|
|
29
29
|
import type { HttpServerResponse } from "./HttpServerResponse.ts"
|
|
30
30
|
import * as Response from "./HttpServerResponse.ts"
|
|
31
|
-
import * as
|
|
31
|
+
import * as requestState from "./internal/requestState.ts"
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Runs an HTTP server effect, sends the produced response with the supplied handler, and converts failures into HTTP responses.
|
|
@@ -55,7 +55,7 @@ export const toHandled = <E, R, EH, RH>(
|
|
|
55
55
|
return Effect.flatMapEager(causeResponse(cause), ([response, cause]) => {
|
|
56
56
|
const fiber = Fiber.getCurrent()!
|
|
57
57
|
reportCauseUnsafe(fiber, cause)
|
|
58
|
-
const handler = preResponseHandler
|
|
58
|
+
const handler = frame.preResponseHandler
|
|
59
59
|
const cont = cause.reasons.length === 0 ? Effect.succeed(response) : Effect.failCause(cause)
|
|
60
60
|
if (handler === undefined) {
|
|
61
61
|
;(request as any)[handledSymbol] = true
|
|
@@ -78,10 +78,11 @@ export const toHandled = <E, R, EH, RH>(
|
|
|
78
78
|
// Writes the response, applying any registered pre-response handler first.
|
|
79
79
|
// Returns an `Exit` when the write completes synchronously.
|
|
80
80
|
const sendResponse = (
|
|
81
|
-
|
|
81
|
+
frame: RequestFrame,
|
|
82
82
|
response: HttpServerResponse
|
|
83
83
|
): Effect.Effect<HttpServerResponse, EH | HttpServerError, RH> => {
|
|
84
|
-
const
|
|
84
|
+
const request = frame.request
|
|
85
|
+
const handler = frame.preResponseHandler
|
|
85
86
|
if (handler === undefined) {
|
|
86
87
|
;(request as any)[handledSymbol] = true
|
|
87
88
|
return Effect.mapEager(
|
|
@@ -105,7 +106,7 @@ export const toHandled = <E, R, EH, RH>(
|
|
|
105
106
|
> => {
|
|
106
107
|
const request = frame.request
|
|
107
108
|
const responded = Effect.matchCauseEffect(self, {
|
|
108
|
-
onSuccess: (response) => sendResponse(
|
|
109
|
+
onSuccess: (response) => sendResponse(frame, response),
|
|
109
110
|
onFailure: (cause) => handleCause(frame, cause)
|
|
110
111
|
})
|
|
111
112
|
return middleware === undefined ?
|
|
@@ -152,18 +153,19 @@ export const toHandled = <E, R, EH, RH>(
|
|
|
152
153
|
return Scope.closeUnsafe(frame.scope, frame.cause === undefined ? exit : Exit.failCause(frame.cause))
|
|
153
154
|
}, true)
|
|
154
155
|
|
|
155
|
-
class RequestFrame {
|
|
156
|
+
class RequestFrame extends requestState.RequestState {
|
|
156
157
|
readonly scope: Scope.Closeable
|
|
157
158
|
readonly prev: Context.Context<never>
|
|
158
159
|
readonly request: HttpServerRequest
|
|
159
160
|
cause: Cause.Cause<E | EH | HttpServerError> | undefined
|
|
160
161
|
constructor(scope: Scope.Closeable, prev: Context.Context<never>, request: HttpServerRequest) {
|
|
162
|
+
super()
|
|
161
163
|
this.scope = scope
|
|
162
164
|
this.prev = prev
|
|
163
165
|
this.request = request
|
|
164
166
|
}
|
|
165
167
|
[contA](response: HttpServerResponse, fiber: Fiber.Fiber<unknown, unknown>) {
|
|
166
|
-
const sent = sendResponse(this
|
|
168
|
+
const sent = sendResponse(this, response)
|
|
167
169
|
// Most response writes complete synchronously.
|
|
168
170
|
if (effectIsExit(sent) && sent._tag === "Success") {
|
|
169
171
|
fiber.setContext(this.prev)
|
|
@@ -182,7 +184,7 @@ export const toHandled = <E, R, EH, RH>(
|
|
|
182
184
|
fiberEnterUninterruptibleUnsafe(fiber)
|
|
183
185
|
const scope = Scope.makeUnsafe()
|
|
184
186
|
const frame = new RequestFrame(scope, fiber.context, Context.getUnsafe(fiber.context, HttpServerRequest))
|
|
185
|
-
fiber.setContext(Context.add(frame.prev, Scope.Scope, scope))
|
|
187
|
+
fiber.setContext(Context.add(Context.add(frame.prev, Scope.Scope, scope), requestState.CurrentRequestState, frame))
|
|
186
188
|
// The native tracer has no backend, so its spans are unobservable.
|
|
187
189
|
const currentTracer = fiber.cache.tracer
|
|
188
190
|
if (
|
|
@@ -262,22 +264,20 @@ export type PreResponseHandler = (
|
|
|
262
264
|
* @since 4.0.0
|
|
263
265
|
*/
|
|
264
266
|
export const appendPreResponseHandler = (handler: PreResponseHandler): Effect.Effect<void, never, HttpServerRequest> =>
|
|
265
|
-
|
|
266
|
-
appendPreResponseHandlerUnsafe(request, handler)
|
|
267
|
-
return Effect.void
|
|
268
|
-
})
|
|
267
|
+
withPreResponseHandler(Effect.void, handler)
|
|
269
268
|
|
|
270
269
|
/**
|
|
271
|
-
* Registers a pre-response handler for the
|
|
270
|
+
* Registers a pre-response handler for the HTTP server request that owns the
|
|
271
|
+
* supplied fiber context. Does nothing outside a server request.
|
|
272
272
|
*
|
|
273
273
|
* @stability unstable
|
|
274
274
|
* @category unsafe
|
|
275
275
|
* @since 4.0.0
|
|
276
276
|
*/
|
|
277
277
|
export const appendPreResponseHandlerUnsafe: (
|
|
278
|
-
|
|
278
|
+
context: Context.Context<never>,
|
|
279
279
|
handler: PreResponseHandler
|
|
280
|
-
) => void =
|
|
280
|
+
) => void = requestState.appendPreResponseHandlerUnsafe
|
|
281
281
|
|
|
282
282
|
/**
|
|
283
283
|
* Runs an effect after registering a pre-response handler for the current HTTP server request.
|
|
@@ -304,25 +304,13 @@ export const withPreResponseHandler: {
|
|
|
304
304
|
*/
|
|
305
305
|
<A, E, R>(self: Effect.Effect<A, E, R>, handler: PreResponseHandler): Effect.Effect<A, E, R | HttpServerRequest>
|
|
306
306
|
} = dual<
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
* @stability unstable
|
|
311
|
-
* @category handlers
|
|
312
|
-
* @since 4.0.0
|
|
313
|
-
*/
|
|
314
|
-
(handler: PreResponseHandler) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | HttpServerRequest>,
|
|
315
|
-
/**
|
|
316
|
-
* Runs an effect after registering a pre-response handler for the current HTTP server request.
|
|
317
|
-
*
|
|
318
|
-
* @stability unstable
|
|
319
|
-
* @category handlers
|
|
320
|
-
* @since 4.0.0
|
|
321
|
-
*/
|
|
307
|
+
(
|
|
308
|
+
handler: PreResponseHandler
|
|
309
|
+
) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | HttpServerRequest>,
|
|
322
310
|
<A, E, R>(self: Effect.Effect<A, E, R>, handler: PreResponseHandler) => Effect.Effect<A, E, R | HttpServerRequest>
|
|
323
311
|
>(2, (self, handler) =>
|
|
324
|
-
|
|
325
|
-
appendPreResponseHandlerUnsafe(
|
|
312
|
+
Effect.withFiber((fiber) => {
|
|
313
|
+
appendPreResponseHandlerUnsafe(fiber.context, handler)
|
|
326
314
|
return self
|
|
327
315
|
}))
|
|
328
316
|
|
|
@@ -398,6 +386,9 @@ export const toWebHandler: <E>(
|
|
|
398
386
|
*
|
|
399
387
|
* **Details**
|
|
400
388
|
*
|
|
389
|
+
* Every call to `dispose` returns the same promise, which resolves once the
|
|
390
|
+
* layer resources have been released.
|
|
391
|
+
*
|
|
401
392
|
* The layer is built immediately, so the cost is paid when the handler is
|
|
402
393
|
* created rather than on the first request. A layer that performs asynchronous
|
|
403
394
|
* work while building may still be in progress when the first request arrives,
|
|
@@ -435,7 +426,8 @@ export const toWebHandlerLayerWith = <
|
|
|
435
426
|
) => Promise<globalThis.Response>
|
|
436
427
|
} => {
|
|
437
428
|
const scope = Scope.makeUnsafe()
|
|
438
|
-
|
|
429
|
+
let disposing: Promise<void> | undefined
|
|
430
|
+
const dispose = () => disposing ??= Effect.runPromise(Scope.close(scope, Exit.void))
|
|
439
431
|
|
|
440
432
|
let handlerCache:
|
|
441
433
|
| ((request: Request, context?: Context.Context<ReqR> | undefined) => Promise<globalThis.Response>)
|
|
@@ -145,37 +145,17 @@ export const MaxBodySize = Context.Reference<ByteSize.ByteSize | undefined>(
|
|
|
145
145
|
)
|
|
146
146
|
|
|
147
147
|
/**
|
|
148
|
-
* Builds an inspectable object for an incoming message
|
|
148
|
+
* Builds an inspectable object for an incoming message and redacts headers.
|
|
149
|
+
* The body is left unread.
|
|
149
150
|
*
|
|
150
151
|
* @stability unstable
|
|
151
152
|
* @category converting
|
|
152
153
|
* @since 4.0.0
|
|
153
154
|
*/
|
|
154
155
|
export const inspect = <E>(self: HttpIncomingMessage<E>, that: object): object => {
|
|
155
|
-
|
|
156
|
-
let body: unknown
|
|
157
|
-
if (contentType.includes("application/json")) {
|
|
158
|
-
try {
|
|
159
|
-
body = Effect.runSync(self.json)
|
|
160
|
-
// oxlint-disable-next-line @typescript-eslint/no-unused-vars
|
|
161
|
-
} catch (_) {
|
|
162
|
-
//
|
|
163
|
-
}
|
|
164
|
-
} else if (contentType.includes("text/") || contentType.includes("urlencoded")) {
|
|
165
|
-
try {
|
|
166
|
-
body = Effect.runSync(self.text)
|
|
167
|
-
// oxlint-disable-next-line @typescript-eslint/no-unused-vars
|
|
168
|
-
} catch (_) {
|
|
169
|
-
//
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
const obj: any = {
|
|
156
|
+
return {
|
|
173
157
|
...that,
|
|
174
158
|
headers: redact(self.headers),
|
|
175
159
|
remoteAddress: self.remoteAddress
|
|
176
160
|
}
|
|
177
|
-
if (body !== undefined) {
|
|
178
|
-
obj.body = body
|
|
179
|
-
}
|
|
180
|
-
return obj
|
|
181
161
|
}
|
|
@@ -22,9 +22,12 @@ import { constant, constFalse } from "../Function.ts"
|
|
|
22
22
|
import * as internalEffect from "../internal/effect.ts"
|
|
23
23
|
import { getStackTraceLimit, setStackTraceLimit } from "../internal/stackTraceLimit.ts"
|
|
24
24
|
import * as Layer from "../Layer.ts"
|
|
25
|
+
import * as IpNetwork from "../net/IpNetwork.ts"
|
|
26
|
+
import * as NetAddress from "../net/NetAddress.ts"
|
|
25
27
|
import * as Option from "../Option.ts"
|
|
26
28
|
import type { Predicate } from "../Predicate.ts"
|
|
27
29
|
import type { ReadonlyRecord } from "../Record.ts"
|
|
30
|
+
import * as Result from "../Result.ts"
|
|
28
31
|
import { nativeTracer, ParentSpan, Tracer } from "../Tracer.ts"
|
|
29
32
|
import * as Headers from "./Headers.ts"
|
|
30
33
|
import { hasBody } from "./HttpMethod.ts"
|
|
@@ -39,7 +42,7 @@ import * as TraceContext from "./HttpTraceContext.ts"
|
|
|
39
42
|
import * as compressionInternal from "./internal/compression.ts"
|
|
40
43
|
import * as decompressionInternal from "./internal/decompression.ts"
|
|
41
44
|
import * as bodyInternal from "./internal/httpBody.ts"
|
|
42
|
-
import { appendPreResponseHandlerUnsafe } from "./internal/
|
|
45
|
+
import { appendPreResponseHandlerUnsafe, CurrentRequestState } from "./internal/requestState.ts"
|
|
43
46
|
import * as tracing from "./internal/tracing.ts"
|
|
44
47
|
import * as UrlParams from "./UrlParams.ts"
|
|
45
48
|
|
|
@@ -76,14 +79,62 @@ export declare namespace HttpMiddleware {
|
|
|
76
79
|
/**
|
|
77
80
|
* Defines an `HttpMiddleware` while preserving its precise type.
|
|
78
81
|
*
|
|
82
|
+
* **Gotchas**
|
|
83
|
+
*
|
|
84
|
+
* TypeScript cannot infer the `app` parameter of an `Effect.fn` or
|
|
85
|
+
* `Effect.fnUntraced` generator passed directly to `make`, so `app` becomes
|
|
86
|
+
* `any` and the middleware loses the app's error and service types. Prefer an
|
|
87
|
+
* arrow function, as in the first example. To use `Effect.fn`, declare `E`
|
|
88
|
+
* and `R` type parameters and annotate `app` with them.
|
|
89
|
+
*
|
|
90
|
+
* **Example** (Defining middleware)
|
|
91
|
+
*
|
|
92
|
+
* ```ts import.meta.vitest
|
|
93
|
+
* import { Effect } from "effect"
|
|
94
|
+
* import { HttpMiddleware, HttpServerResponse } from "effect/http"
|
|
95
|
+
*
|
|
96
|
+
* const withHeader = HttpMiddleware.make((app) =>
|
|
97
|
+
* Effect.gen(function*() {
|
|
98
|
+
* const response = yield* app
|
|
99
|
+
* return HttpServerResponse.setHeader(response, "x-service", "example")
|
|
100
|
+
* })
|
|
101
|
+
* )
|
|
102
|
+
*
|
|
103
|
+
* const app: Effect.Effect<HttpServerResponse.HttpServerResponse, "Unauthorized"> =
|
|
104
|
+
* Effect.fail("Unauthorized")
|
|
105
|
+
*
|
|
106
|
+
* // Effect<HttpServerResponse, "Unauthorized", HttpServerRequest>
|
|
107
|
+
* const withHeaderApp = withHeader(app)
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* **Example** (Defining middleware with Effect.fn)
|
|
111
|
+
*
|
|
112
|
+
* ```ts import.meta.vitest
|
|
113
|
+
* import { Effect } from "effect"
|
|
114
|
+
* import { HttpMiddleware, HttpServerResponse } from "effect/http"
|
|
115
|
+
*
|
|
116
|
+
* const withHeader = HttpMiddleware.make(
|
|
117
|
+
* Effect.fn("withHeader")(function*<E, R>(
|
|
118
|
+
* app: Effect.Effect<HttpServerResponse.HttpServerResponse, E, R>
|
|
119
|
+
* ) {
|
|
120
|
+
* const response = yield* app
|
|
121
|
+
* return HttpServerResponse.setHeader(response, "x-service", "example")
|
|
122
|
+
* })
|
|
123
|
+
* )
|
|
124
|
+
*
|
|
125
|
+
* const app: Effect.Effect<HttpServerResponse.HttpServerResponse, "Unauthorized"> =
|
|
126
|
+
* Effect.fail("Unauthorized")
|
|
127
|
+
*
|
|
128
|
+
* // Effect<HttpServerResponse, "Unauthorized", never>
|
|
129
|
+
* const withHeaderApp = withHeader(app)
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
79
132
|
* @stability unstable
|
|
80
133
|
* @category constructors
|
|
81
134
|
* @since 4.0.0
|
|
82
135
|
*/
|
|
83
136
|
export const make = <M extends HttpMiddleware>(middleware: M): M => middleware
|
|
84
137
|
|
|
85
|
-
const loggerDisabledRequests = new WeakSet<object>()
|
|
86
|
-
|
|
87
138
|
const stripSearchAndHash = (url: string): string => {
|
|
88
139
|
const queryIndex = url.indexOf("?")
|
|
89
140
|
const hashIndex = url.indexOf("#")
|
|
@@ -106,8 +157,8 @@ const stripSearchAndHash = (url: string): string => {
|
|
|
106
157
|
*/
|
|
107
158
|
export const withLoggerDisabled = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R | HttpServerRequest> =>
|
|
108
159
|
Effect.withFiber((fiber) => {
|
|
109
|
-
const
|
|
110
|
-
|
|
160
|
+
const state = Context.getOrUndefined(fiber.context, CurrentRequestState)
|
|
161
|
+
if (state !== undefined) state.loggerDisabled = true
|
|
111
162
|
return self
|
|
112
163
|
})
|
|
113
164
|
|
|
@@ -180,10 +231,11 @@ export const logger: <E, R>(
|
|
|
180
231
|
) => Effect.Effect<HttpServerResponse, E, HttpServerRequest | R> = make((httpApp) =>
|
|
181
232
|
Effect.withFiber((fiber) => {
|
|
182
233
|
const request = Context.getUnsafe(fiber.context, HttpServerRequest)
|
|
234
|
+
const state = Context.getOrUndefined(fiber.context, CurrentRequestState)
|
|
183
235
|
const path = stripSearchAndHash(request.url)
|
|
184
236
|
return Effect.withLogSpan(
|
|
185
237
|
Effect.flatMap(Effect.exit(httpApp), (exit) => {
|
|
186
|
-
if (
|
|
238
|
+
if (state?.loggerDisabled) {
|
|
187
239
|
return exit
|
|
188
240
|
} else if (exit._tag === "Failure") {
|
|
189
241
|
const [response, cause] = causeResponseStripped(exit.cause)
|
|
@@ -310,25 +362,131 @@ export const tracer: <E, R>(
|
|
|
310
362
|
)
|
|
311
363
|
|
|
312
364
|
/**
|
|
313
|
-
*
|
|
365
|
+
* Options for `xForwardedHeaders`.
|
|
366
|
+
*
|
|
367
|
+
* **Details**
|
|
368
|
+
*
|
|
369
|
+
* `trustedProxies` is a list of networks or a predicate that decides whether an
|
|
370
|
+
* address belongs to a proxy you operate. IPv4-mapped IPv6 addresses are
|
|
371
|
+
* converted to IPv4 before matching.
|
|
314
372
|
*
|
|
315
373
|
* @stability unstable
|
|
316
374
|
* @category proxying
|
|
317
375
|
* @since 4.0.0
|
|
318
376
|
*/
|
|
319
|
-
export
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
377
|
+
export interface TrustedProxyOptions {
|
|
378
|
+
readonly trustedProxies: ReadonlyArray<IpNetwork.IpNetwork> | Predicate<NetAddress.IpAddress>
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Creates middleware that applies `X-Forwarded-For`, `X-Forwarded-Host`, and
|
|
383
|
+
* `X-Forwarded-Proto` sent by trusted proxies.
|
|
384
|
+
*
|
|
385
|
+
* **When to use**
|
|
386
|
+
*
|
|
387
|
+
* Use when the app runs behind proxies that append to `X-Forwarded-For`, such
|
|
388
|
+
* as most load balancers and TLS terminators.
|
|
389
|
+
*
|
|
390
|
+
* **Details**
|
|
391
|
+
*
|
|
392
|
+
* Headers are ignored unless the original transport peer
|
|
393
|
+
* (`request.peerAddress`) is trusted. `X-Forwarded-For` is then walked from
|
|
394
|
+
* the right, skipping trusted proxies. The first untrusted address becomes
|
|
395
|
+
* `remoteAddress`. When every address is trusted, the leftmost one is used. An
|
|
396
|
+
* entry that is not an IP address, such as `unknown`, stops the walk and
|
|
397
|
+
* leaves the request unchanged.
|
|
398
|
+
*
|
|
399
|
+
* `X-Forwarded-Host` and `X-Forwarded-Proto` are only used when they list one
|
|
400
|
+
* value per `X-Forwarded-For` entry; the value at the selected position
|
|
401
|
+
* replaces the `host` header and sets `protocol` (`http` or `https`), which
|
|
402
|
+
* `HttpServerRequest.toURL` uses. Otherwise the transport values are kept.
|
|
403
|
+
*
|
|
404
|
+
* `request.peerAddress` keeps the transport peer after `remoteAddress` is
|
|
405
|
+
* replaced.
|
|
406
|
+
*
|
|
407
|
+
* **Example** (Reading the client address behind a load balancer)
|
|
408
|
+
*
|
|
409
|
+
* ```ts import.meta.vitest
|
|
410
|
+
* import { Effect, Option } from "effect"
|
|
411
|
+
* import { HttpMiddleware, HttpServerRequest, HttpServerResponse } from "effect/http"
|
|
412
|
+
* import { IpNetwork } from "effect/net"
|
|
413
|
+
*
|
|
414
|
+
* const app = HttpServerRequest.HttpServerRequest.use((request) =>
|
|
415
|
+
* Effect.succeed(HttpServerResponse.text(Option.getOrElse(request.remoteAddress, () => "unknown")))
|
|
416
|
+
* ).pipe(
|
|
417
|
+
* HttpMiddleware.xForwardedHeaders({
|
|
418
|
+
* trustedProxies: [IpNetwork.fromStringUnsafe("10.0.0.0/8")]
|
|
419
|
+
* })
|
|
420
|
+
* )
|
|
421
|
+
*
|
|
422
|
+
* // The load balancer at 10.0.0.1 appended the client address to a spoofed entry
|
|
423
|
+
* const request = HttpServerRequest.fromWeb(
|
|
424
|
+
* new Request("http://app.test/", { headers: { "x-forwarded-for": "6.6.6.6, 198.51.100.7" } })
|
|
425
|
+
* ).modify({ remoteAddress: Option.some("10.0.0.1") })
|
|
426
|
+
*
|
|
427
|
+
* const response = await Effect.runPromise(
|
|
428
|
+
* Effect.provideService(app, HttpServerRequest.HttpServerRequest, request)
|
|
429
|
+
* )
|
|
430
|
+
* await HttpServerResponse.toWeb(response).text() // => "198.51.100.7"
|
|
431
|
+
* ```
|
|
432
|
+
*
|
|
433
|
+
* @stability unstable
|
|
434
|
+
* @category proxying
|
|
435
|
+
* @since 4.0.0
|
|
436
|
+
*/
|
|
437
|
+
export const xForwardedHeaders = (options: TrustedProxyOptions): HttpMiddleware => {
|
|
438
|
+
const { trustedProxies } = options
|
|
439
|
+
const isTrusted: Predicate<NetAddress.IpAddress> = typeof trustedProxies === "function"
|
|
440
|
+
? trustedProxies
|
|
441
|
+
: (address) => trustedProxies.some((network) => IpNetwork.contains(network, address))
|
|
442
|
+
return make((httpApp) =>
|
|
443
|
+
Effect.updateService(httpApp, HttpServerRequest, (request) => applyXForwarded(request, isTrusted))
|
|
444
|
+
)
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
const applyXForwarded = (request: HttpServerRequest, isTrusted: Predicate<NetAddress.IpAddress>): HttpServerRequest => {
|
|
448
|
+
const peer = parseForwardedAddress(Option.getOrUndefined(request.peerAddress))
|
|
449
|
+
if (peer === undefined || !isTrusted(peer)) return request
|
|
450
|
+
const addresses = splitList(request.headers["x-forwarded-for"])
|
|
451
|
+
if (addresses === undefined) return request
|
|
452
|
+
for (let index = addresses.length - 1; index >= 0; index--) {
|
|
453
|
+
const address = parseForwardedAddress(addresses[index])
|
|
454
|
+
if (address === undefined) return request
|
|
455
|
+
if (index > 0 && isTrusted(address)) continue
|
|
456
|
+
const host = alignedValue(request.headers["x-forwarded-host"], addresses.length, index)
|
|
457
|
+
const protocol = alignedValue(request.headers["x-forwarded-proto"], addresses.length, index)?.toLowerCase()
|
|
458
|
+
return request.modify({
|
|
459
|
+
remoteAddress: Option.some(NetAddress.formatIp(address)),
|
|
460
|
+
peerAddress: request.peerAddress,
|
|
461
|
+
...(host !== undefined && isValidHost(host) ? { headers: Headers.set(request.headers, "host", host) } : {}),
|
|
462
|
+
...(protocol === "http" || protocol === "https" ? { protocol } : {})
|
|
463
|
+
})
|
|
464
|
+
}
|
|
465
|
+
return request
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
const splitList = (value: string | undefined): Array<string> | undefined => value?.split(",").map((_) => _.trim())
|
|
469
|
+
|
|
470
|
+
// Host and proto lists are only associated with a hop when they have one value
|
|
471
|
+
// per `X-Forwarded-For` entry.
|
|
472
|
+
const alignedValue = (header: string | undefined, length: number, index: number): string | undefined => {
|
|
473
|
+
const values = splitList(header)
|
|
474
|
+
return values?.length === length ? values[index] : undefined
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
const parseForwardedAddress = (input: string | undefined): NetAddress.IpAddress | undefined => {
|
|
478
|
+
if (input === undefined) return undefined
|
|
479
|
+
const ip = NetAddress.ipFromString(input.startsWith("[") && input.endsWith("]") ? input.slice(1, -1) : input)
|
|
480
|
+
if (Result.isSuccess(ip)) return NetAddress.toCanonical(ip.success)
|
|
481
|
+
const inet = NetAddress.inetAddressFromString(input)
|
|
482
|
+
return Result.isSuccess(inet) ? NetAddress.toCanonical(inet.success.address) : undefined
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
const hostShape = /^(?:\[[0-9a-f:.]+\]|[a-z0-9._-]+)(?::\d{1,5})?$/i
|
|
486
|
+
|
|
487
|
+
// The shape check rules out paths, userinfo and lists; the URL parser rejects
|
|
488
|
+
// invalid IP literals and out-of-range ports, matching what `toURL` accepts.
|
|
489
|
+
const isValidHost = (host: string): boolean => hostShape.test(host) && URL.canParse(`http://${host}`)
|
|
332
490
|
|
|
333
491
|
/**
|
|
334
492
|
* Middleware that parses the current request URL's search parameters and provides them as `ParsedSearchParams`.
|
|
@@ -487,7 +645,7 @@ export const cors = (options?: {
|
|
|
487
645
|
headers: headersFromRequestOptions(request)
|
|
488
646
|
}))
|
|
489
647
|
}
|
|
490
|
-
appendPreResponseHandlerUnsafe(
|
|
648
|
+
appendPreResponseHandlerUnsafe(fiber.context, preResponseHandler)
|
|
491
649
|
return httpApp
|
|
492
650
|
})
|
|
493
651
|
}
|
|
@@ -618,9 +776,8 @@ export const compression = (
|
|
|
618
776
|
httpApp: Effect.Effect<HttpServerResponse, E, R>
|
|
619
777
|
): Effect.Effect<HttpServerResponse, E, R | HttpServerRequest | HttpPlatform> =>
|
|
620
778
|
Effect.withFiber((fiber) => {
|
|
621
|
-
const request = Context.getUnsafe(fiber.context, HttpServerRequest)
|
|
622
779
|
const compression = Context.getUnsafe(fiber.context, HttpPlatform).compression
|
|
623
|
-
appendPreResponseHandlerUnsafe(
|
|
780
|
+
appendPreResponseHandlerUnsafe(fiber.context, (request, response) =>
|
|
624
781
|
transform(compression, request.headers["accept-encoding"], response))
|
|
625
782
|
return httpApp
|
|
626
783
|
})
|
package/src/http/HttpRouter.ts
CHANGED
|
@@ -24,7 +24,7 @@ import * as Scope from "../Scope.ts"
|
|
|
24
24
|
import * as Tracer from "../Tracer.ts"
|
|
25
25
|
import type * as Types from "../Types.ts"
|
|
26
26
|
import * as FindMyWay from "./FindMyWay.ts"
|
|
27
|
-
import { getClosingParenthensePosition } from "./FindMyWay/internal/router.ts"
|
|
27
|
+
import { getClosingParenthensePosition, getMaxParamLengthExceeded } from "./FindMyWay/internal/router.ts"
|
|
28
28
|
import * as HttpEffect from "./HttpEffect.ts"
|
|
29
29
|
import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
|
|
30
30
|
import type * as HttpMethod from "./HttpMethod.ts"
|
|
@@ -213,13 +213,19 @@ export const make = Effect.gen(function*() {
|
|
|
213
213
|
let context = fiber.context
|
|
214
214
|
const request = Context.getUnsafe(context, HttpServerRequest.HttpServerRequest)
|
|
215
215
|
let result = router.find(request.method, request.url)
|
|
216
|
+
let paramLimit = result === undefined ? getMaxParamLengthExceeded(router) : undefined
|
|
216
217
|
if (result === undefined && request.method === "HEAD") {
|
|
217
218
|
result = router.find("GET", request.url)
|
|
219
|
+
paramLimit ??= getMaxParamLengthExceeded(router)
|
|
218
220
|
}
|
|
219
221
|
if (result === undefined) {
|
|
220
222
|
return Effect.fail(
|
|
221
223
|
new HttpServerError.HttpServerError({
|
|
222
|
-
reason: new HttpServerError.RouteNotFound(
|
|
224
|
+
reason: new HttpServerError.RouteNotFound(
|
|
225
|
+
paramLimit === undefined
|
|
226
|
+
? { request }
|
|
227
|
+
: { request, description: `path parameter is longer than maxParamLength (${paramLimit})` }
|
|
228
|
+
)
|
|
223
229
|
})
|
|
224
230
|
)
|
|
225
231
|
}
|
|
@@ -86,7 +86,8 @@ export class HttpServerError extends Data.TaggedError("HttpServerError")<{
|
|
|
86
86
|
*
|
|
87
87
|
* **Details**
|
|
88
88
|
*
|
|
89
|
-
* When converted to a response it produces an empty `
|
|
89
|
+
* When converted to a response it produces an empty `413` response for
|
|
90
|
+
* `BodyTooLarge`, or an empty `400` response for other parse failures.
|
|
90
91
|
*
|
|
91
92
|
* @stability unstable
|
|
92
93
|
* @category errors
|
|
@@ -94,17 +95,19 @@ export class HttpServerError extends Data.TaggedError("HttpServerError")<{
|
|
|
94
95
|
*/
|
|
95
96
|
export class RequestParseError extends Data.TaggedError("RequestParseError")<{
|
|
96
97
|
readonly request: Request.HttpServerRequest
|
|
98
|
+
readonly reason?: "Parse" | "BodyTooLarge"
|
|
97
99
|
readonly description?: string
|
|
98
100
|
readonly cause?: unknown
|
|
99
101
|
}> implements Respondable.Respondable {
|
|
100
102
|
/**
|
|
101
|
-
* Converts the request error into a `
|
|
103
|
+
* Converts the request error into a `413 Content Too Large` response for body
|
|
104
|
+
* size breaches, or a `400 Bad Request` response for other parse failures.
|
|
102
105
|
*
|
|
103
106
|
* @stability unstable
|
|
104
107
|
* @since 4.0.0
|
|
105
108
|
*/
|
|
106
109
|
[Respondable.symbol]() {
|
|
107
|
-
return Effect.succeed(Response.empty({ status: 400 }))
|
|
110
|
+
return Effect.succeed(Response.empty({ status: this.reason === "BodyTooLarge" ? 413 : 400 }))
|
|
108
111
|
}
|
|
109
112
|
|
|
110
113
|
get methodAndUrl() {
|