effect 4.0.4 → 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/src/52_graphql/10_basics.ts +19 -13
- package/ai-docs/src/52_graphql/30_batching.ts +6 -4
- package/ai-docs/src/52_graphql/40_aliased-batching.ts +6 -4
- package/ai-docs/tsconfig.json +3 -1
- package/dist/Array.d.ts +207 -58
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +45 -22
- 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 +187 -14
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +142 -33
- 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 +34 -32
- 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 +58 -21
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +548 -182
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +261 -76
- 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 +28 -9
- 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/Match.d.ts +20 -6
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +2 -2
- package/dist/Match.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 +37 -5
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +44 -6
- 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 +383 -326
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +338 -17
- 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 +16 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +25 -10
- 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/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +3 -2
- package/dist/TxRef.js.map +1 -1
- package/dist/ai/AiError.d.ts +78 -14
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +51 -3
- 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 +116 -20
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js +37 -3
- 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 +183 -95
- 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/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +47 -35
- package/dist/ai/LanguageModel.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 +6 -52
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +27 -50
- 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 +148 -4
- 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 +10 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +215 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +89 -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 +194 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +86 -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 +7 -3
- package/dist/cli/internal/command.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +7 -5
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/completions/descriptor.js +16 -1
- package/dist/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/cli/internal/completions/fish.js +12 -10
- package/dist/cli/internal/completions/fish.js.map +1 -1
- package/dist/cli/internal/completions/powershell.js +20 -10
- package/dist/cli/internal/completions/powershell.js.map +1 -1
- package/dist/cli/internal/completions/zsh.js +15 -8
- 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 +35 -15
- package/dist/cli/internal/parser.js.map +1 -1
- package/dist/cli/internal/wizard.d.ts.map +1 -1
- package/dist/cli/internal/wizard.js +2 -1
- package/dist/cli/internal/wizard.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 +2 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +98 -18
- 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 +20 -12
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +96 -37
- 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 +66 -9
- 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/Sse.js +1 -1
- package/dist/encoding/Sse.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/GraphQLClient.d.ts.map +1 -1
- package/dist/graphql/GraphQLClient.js +12 -5
- package/dist/graphql/GraphQLClient.js.map +1 -1
- 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 +252 -11
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +99 -8
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/graphql/GraphQLResolver.d.ts +3 -1
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
- package/dist/graphql/GraphQLResolver.js +91 -19
- package/dist/graphql/GraphQLResolver.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +13 -3
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +56 -6
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +12 -1
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/Headers.d.ts +230 -3
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +267 -5
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +105 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +69 -17
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +8 -6
- package/dist/http/HttpClientError.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +274 -7
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +91 -3
- 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 +179 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +226 -18
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +58 -14
- 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 +11 -7
- 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 +38 -12
- 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 +25 -17
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/HttpTraceContext.js +1 -1
- package/dist/http/HttpTraceContext.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 +8 -2
- package/dist/http/Url.js.map +1 -1
- package/dist/http/UrlParams.d.ts +112 -8
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +141 -14
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/internal/compression.d.ts +1 -1
- package/dist/http/internal/compression.d.ts.map +1 -1
- package/dist/http/internal/compression.js +2 -10
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/compressionBody.d.ts +2 -0
- package/dist/http/internal/compressionBody.d.ts.map +1 -0
- package/dist/http/internal/compressionBody.js +36 -0
- package/dist/http/internal/compressionBody.js.map +1 -0
- package/dist/http/internal/decompression.d.ts +2 -0
- package/dist/http/internal/decompression.d.ts.map +1 -0
- package/dist/http/internal/decompression.js +168 -0
- package/dist/http/internal/decompression.js.map +1 -0
- 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/tracing.js +14 -4
- package/dist/http/internal/tracing.js.map +1 -1
- package/dist/http/internal/urlParams.d.ts +2 -0
- package/dist/http/internal/urlParams.d.ts.map +1 -0
- package/dist/http/internal/urlParams.js +4 -0
- package/dist/http/internal/urlParams.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 +85 -24
- 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 +18 -2
- 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 +89 -76
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/graphql.js +12 -2
- package/dist/internal/graphql.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/Otlp.d.ts +15 -0
- package/dist/observability/Otlp.d.ts.map +1 -1
- package/dist/observability/Otlp.js +3 -0
- package/dist/observability/Otlp.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts +8 -0
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +15 -13
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpLogger.d.ts +17 -0
- package/dist/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/observability/OtlpLogger.js +14 -1
- package/dist/observability/OtlpLogger.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts +17 -0
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +18 -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/OtlpTracer.d.ts +17 -0
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +15 -2
- package/dist/observability/OtlpTracer.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 +6 -0
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/AsyncResult.js +28 -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 +47 -10
- 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 +202 -61
- 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 +151 -12
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +156 -34
- 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 +16 -3
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +115 -23
- 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/Activity.js +1 -0
- package/dist/workflow/Activity.js.map +1 -1
- package/dist/workflow/Workflow.d.ts +22 -0
- package/dist/workflow/Workflow.d.ts.map +1 -1
- package/dist/workflow/Workflow.js +15 -3
- package/dist/workflow/Workflow.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts +20 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +52 -24
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +13 -3
- package/src/Array.ts +223 -61
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +287 -439
- package/src/ChannelSchema.ts +1 -49
- package/src/Chunk.ts +55 -61
- package/src/Config.ts +12 -86
- package/src/ConfigProvider.ts +41 -44
- package/src/Cron.ts +6 -3
- package/src/Duration.ts +70 -21
- package/src/Effect.ts +642 -220
- 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 +33 -9
- 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/Match.ts +65 -12
- 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 +61 -8
- 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 +596 -348
- 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 +25 -12
- package/src/TextDiff.ts +766 -0
- package/src/TxHashMap.ts +1 -103
- package/src/TxHashSet.ts +48 -753
- package/src/TxRef.ts +4 -2
- package/src/ai/AiError.ts +69 -5
- package/src/ai/Chat.ts +10 -5
- package/src/ai/Decision.ts +119 -22
- package/src/ai/DecisionModel.ts +265 -109
- package/src/ai/EmbeddingModel.ts +25 -13
- package/src/ai/LanguageModel.ts +57 -51
- 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 +232 -275
- 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 +10 -0
- package/src/cli/Flag.ts +218 -0
- package/src/cli/GlobalFlag.ts +3 -3
- package/src/cli/Param.ts +218 -0
- package/src/cli/TerminalCapabilities.ts +156 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +10 -4
- package/src/cli/internal/completions/bash.ts +7 -5
- package/src/cli/internal/completions/descriptor.ts +20 -1
- package/src/cli/internal/completions/fish.ts +12 -10
- package/src/cli/internal/completions/powershell.ts +25 -13
- package/src/cli/internal/completions/zsh.ts +15 -8
- package/src/cli/internal/formatter.ts +18 -0
- package/src/cli/internal/lexer.ts +12 -5
- package/src/cli/internal/parser.ts +43 -14
- package/src/cli/internal/wizard.ts +2 -1
- package/src/cluster/ClusterCron.ts +94 -35
- package/src/cluster/ClusterMetrics.ts +149 -7
- package/src/cluster/ClusterWorkflowEngine.ts +164 -53
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +21 -3
- package/src/cluster/Runners.ts +145 -72
- 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 +81 -11
- 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/Sse.ts +1 -1
- 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/GraphQLClient.ts +17 -5
- package/src/graphql/GraphQLClientError.ts +5 -12
- package/src/graphql/GraphQLProtocol.ts +277 -20
- package/src/graphql/GraphQLResolver.ts +109 -230
- package/src/http/FetchHttpClient.ts +61 -8
- package/src/http/FindMyWay/internal/router.ts +13 -1
- package/src/http/Headers.ts +343 -163
- package/src/http/HttpClient.ts +144 -136
- package/src/http/HttpClientError.ts +10 -6
- package/src/http/HttpClientRequest.ts +315 -11
- 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 +265 -28
- package/src/http/HttpRouter.ts +67 -14
- package/src/http/HttpServerError.ts +14 -7
- package/src/http/HttpServerRequest.ts +73 -14
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +29 -19
- package/src/http/HttpTraceContext.ts +1 -1
- 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 +8 -2
- package/src/http/UrlParams.ts +225 -26
- package/src/http/internal/compression.ts +3 -17
- package/src/http/internal/compressionBody.ts +56 -0
- package/src/http/internal/decompression.ts +235 -0
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/tracing.ts +21 -4
- package/src/http/internal/urlParams.ts +5 -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 +160 -31
- 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 +22 -2
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +125 -88
- package/src/internal/graphql.ts +30 -7
- 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/Otlp.ts +18 -0
- package/src/observability/OtlpExporter.ts +19 -15
- package/src/observability/OtlpLogger.ts +31 -2
- package/src/observability/OtlpMetrics.ts +35 -4
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/OtlpTracer.ts +32 -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 +35 -38
- package/src/reactivity/Atom.ts +134 -166
- package/src/reactivity/AtomHttpApi.ts +10 -16
- package/src/reactivity/AtomRegistry.ts +53 -30
- 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 +285 -104
- 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 +275 -36
- package/src/sql/SqlResolver.ts +9 -0
- package/src/sql/Statement.ts +35 -8
- package/src/testing/TestClock.ts +147 -29
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/Activity.ts +1 -0
- package/src/workflow/Workflow.ts +31 -5
- package/src/workflow/WorkflowEngine.ts +93 -31
- 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
|
@@ -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
|
}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* @stability unstable
|
|
12
12
|
* @since 4.0.0
|
|
13
13
|
*/
|
|
14
|
+
import * as ByteSize from "../ByteSize.ts"
|
|
14
15
|
import * as Cause from "../Cause.ts"
|
|
15
16
|
import { Clock } from "../Clock.ts"
|
|
16
17
|
import * as Context from "../Context.ts"
|
|
@@ -21,11 +22,15 @@ import { constant, constFalse } from "../Function.ts"
|
|
|
21
22
|
import * as internalEffect from "../internal/effect.ts"
|
|
22
23
|
import { getStackTraceLimit, setStackTraceLimit } from "../internal/stackTraceLimit.ts"
|
|
23
24
|
import * as Layer from "../Layer.ts"
|
|
25
|
+
import * as IpNetwork from "../net/IpNetwork.ts"
|
|
26
|
+
import * as NetAddress from "../net/NetAddress.ts"
|
|
24
27
|
import * as Option from "../Option.ts"
|
|
25
28
|
import type { Predicate } from "../Predicate.ts"
|
|
26
29
|
import type { ReadonlyRecord } from "../Record.ts"
|
|
30
|
+
import * as Result from "../Result.ts"
|
|
27
31
|
import { nativeTracer, ParentSpan, Tracer } from "../Tracer.ts"
|
|
28
32
|
import * as Headers from "./Headers.ts"
|
|
33
|
+
import { hasBody } from "./HttpMethod.ts"
|
|
29
34
|
import type { CompressionAlgorithm } from "./HttpPlatform.ts"
|
|
30
35
|
import { HttpPlatform } from "./HttpPlatform.ts"
|
|
31
36
|
import { causeResponseStripped, ClientAbort, HttpServerError, ResponseError } from "./HttpServerError.ts"
|
|
@@ -35,9 +40,11 @@ import * as Response from "./HttpServerResponse.ts"
|
|
|
35
40
|
import type { HttpServerResponse } from "./HttpServerResponse.ts"
|
|
36
41
|
import * as TraceContext from "./HttpTraceContext.ts"
|
|
37
42
|
import * as compressionInternal from "./internal/compression.ts"
|
|
43
|
+
import * as decompressionInternal from "./internal/decompression.ts"
|
|
38
44
|
import * as bodyInternal from "./internal/httpBody.ts"
|
|
39
|
-
import { appendPreResponseHandlerUnsafe } from "./internal/
|
|
45
|
+
import { appendPreResponseHandlerUnsafe, CurrentRequestState } from "./internal/requestState.ts"
|
|
40
46
|
import * as tracing from "./internal/tracing.ts"
|
|
47
|
+
import * as UrlParams from "./UrlParams.ts"
|
|
41
48
|
|
|
42
49
|
/**
|
|
43
50
|
* Middleware that transforms an HTTP server app effect into another HTTP server app effect.
|
|
@@ -72,14 +79,62 @@ export declare namespace HttpMiddleware {
|
|
|
72
79
|
/**
|
|
73
80
|
* Defines an `HttpMiddleware` while preserving its precise type.
|
|
74
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
|
+
*
|
|
75
132
|
* @stability unstable
|
|
76
133
|
* @category constructors
|
|
77
134
|
* @since 4.0.0
|
|
78
135
|
*/
|
|
79
136
|
export const make = <M extends HttpMiddleware>(middleware: M): M => middleware
|
|
80
137
|
|
|
81
|
-
const loggerDisabledRequests = new WeakSet<object>()
|
|
82
|
-
|
|
83
138
|
const stripSearchAndHash = (url: string): string => {
|
|
84
139
|
const queryIndex = url.indexOf("?")
|
|
85
140
|
const hashIndex = url.indexOf("#")
|
|
@@ -102,8 +157,8 @@ const stripSearchAndHash = (url: string): string => {
|
|
|
102
157
|
*/
|
|
103
158
|
export const withLoggerDisabled = <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, E, R | HttpServerRequest> =>
|
|
104
159
|
Effect.withFiber((fiber) => {
|
|
105
|
-
const
|
|
106
|
-
|
|
160
|
+
const state = Context.getOrUndefined(fiber.context, CurrentRequestState)
|
|
161
|
+
if (state !== undefined) state.loggerDisabled = true
|
|
107
162
|
return self
|
|
108
163
|
})
|
|
109
164
|
|
|
@@ -176,10 +231,11 @@ export const logger: <E, R>(
|
|
|
176
231
|
) => Effect.Effect<HttpServerResponse, E, HttpServerRequest | R> = make((httpApp) =>
|
|
177
232
|
Effect.withFiber((fiber) => {
|
|
178
233
|
const request = Context.getUnsafe(fiber.context, HttpServerRequest)
|
|
234
|
+
const state = Context.getOrUndefined(fiber.context, CurrentRequestState)
|
|
179
235
|
const path = stripSearchAndHash(request.url)
|
|
180
236
|
return Effect.withLogSpan(
|
|
181
237
|
Effect.flatMap(Effect.exit(httpApp), (exit) => {
|
|
182
|
-
if (
|
|
238
|
+
if (state?.loggerDisabled) {
|
|
183
239
|
return exit
|
|
184
240
|
} else if (exit._tag === "Failure") {
|
|
185
241
|
const [response, cause] = causeResponseStripped(exit.cause)
|
|
@@ -286,11 +342,7 @@ export const tracer: <E, R>(
|
|
|
286
342
|
span.attribute("http.request.method", request.method)
|
|
287
343
|
const url = Request.toURL(request)
|
|
288
344
|
if (Option.isSome(url)) {
|
|
289
|
-
|
|
290
|
-
url.value.username = "REDACTED"
|
|
291
|
-
url.value.password = "REDACTED"
|
|
292
|
-
}
|
|
293
|
-
tracing.addUrlAttributes(span, url.value)
|
|
345
|
+
tracing.addUrlAttributes(span, url.value, fiber.getRef(UrlParams.CurrentRedactedNames))
|
|
294
346
|
}
|
|
295
347
|
if (request.headers["user-agent"] !== undefined) {
|
|
296
348
|
span.attribute("user_agent.original", request.headers["user-agent"])
|
|
@@ -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,14 +776,93 @@ 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
|
})
|
|
627
784
|
}
|
|
628
785
|
|
|
786
|
+
/**
|
|
787
|
+
* Middleware that decompresses request bodies sent with a `Content-Encoding`
|
|
788
|
+
* of `gzip` or `deflate`.
|
|
789
|
+
*
|
|
790
|
+
* **Details**
|
|
791
|
+
*
|
|
792
|
+
* The request service is replaced with a view whose body accessors (`stream`,
|
|
793
|
+
* `text`, `json`, `arrayBuffer`, `urlParamsBody`, `multipart`) yield the
|
|
794
|
+
* decompressed body, and whose headers no longer include `Content-Encoding`
|
|
795
|
+
* or `Content-Length`. Decompression is lazy and only happens when the body
|
|
796
|
+
* is read. Stacked codings such as `deflate, gzip` are undone in reverse
|
|
797
|
+
* order, and `identity` members are ignored.
|
|
798
|
+
*
|
|
799
|
+
* Requests whose `Content-Encoding` includes any other coding are rejected
|
|
800
|
+
* with `415 Unsupported Media Type` and `Accept-Encoding: gzip, deflate`,
|
|
801
|
+
* without running the app. Malformed compressed data fails the body read
|
|
802
|
+
* with a `RequestParseError`, or a `MultipartError` with reason `Parse` when
|
|
803
|
+
* reading multipart data.
|
|
804
|
+
*
|
|
805
|
+
* The decompressed size is limited to `maxDecompressedSize`, falling back to
|
|
806
|
+
* the `MaxBodySize` reference and then to 10 MiB. Exceeding it fails the body
|
|
807
|
+
* read with a `RequestParseError`, or a `MultipartError` with reason
|
|
808
|
+
* `BodyTooLarge` when reading multipart data. The limit applies to every body
|
|
809
|
+
* accessor, including `stream`.
|
|
810
|
+
*
|
|
811
|
+
* Decompression uses the global `DecompressionStream`. `deflate` means the
|
|
812
|
+
* zlib format (RFC 1950); raw deflate data is rejected.
|
|
813
|
+
*
|
|
814
|
+
* **Gotchas**
|
|
815
|
+
*
|
|
816
|
+
* `request.source` is still the original, compressed request.
|
|
817
|
+
* `HttpServerRequest.toWeb` returns that compressed request only when the
|
|
818
|
+
* source is a Web `Request`. On other platforms, such as Node, it builds a new
|
|
819
|
+
* `Request` from the decompressed body and the stripped headers.
|
|
820
|
+
*
|
|
821
|
+
* @stability unstable
|
|
822
|
+
* @category compression
|
|
823
|
+
* @since 4.0.0
|
|
824
|
+
*/
|
|
825
|
+
export const decompression = (
|
|
826
|
+
options?: {
|
|
827
|
+
/**
|
|
828
|
+
* Maximum number of decompressed body bytes. Defaults to the
|
|
829
|
+
* `MaxBodySize` reference, or 10 MiB when that is unset.
|
|
830
|
+
*/
|
|
831
|
+
readonly maxDecompressedSize?: ByteSize.Input | undefined
|
|
832
|
+
} | undefined
|
|
833
|
+
): <E, R>(
|
|
834
|
+
httpApp: Effect.Effect<HttpServerResponse, E, R>
|
|
835
|
+
) => Effect.Effect<HttpServerResponse, E, R | HttpServerRequest> => {
|
|
836
|
+
const maxDecompressedSize = options?.maxDecompressedSize === undefined
|
|
837
|
+
? undefined
|
|
838
|
+
: ByteSize.fromInputUnsafe(options.maxDecompressedSize)
|
|
839
|
+
return <E, R>(
|
|
840
|
+
httpApp: Effect.Effect<HttpServerResponse, E, R>
|
|
841
|
+
): Effect.Effect<HttpServerResponse, E, R | HttpServerRequest> =>
|
|
842
|
+
Effect.withFiber((fiber) => {
|
|
843
|
+
const request = Context.getUnsafe(fiber.context, HttpServerRequest)
|
|
844
|
+
const contentEncoding = request.headers["content-encoding"]
|
|
845
|
+
if (contentEncoding === undefined || !hasBody(request.method)) {
|
|
846
|
+
return httpApp
|
|
847
|
+
}
|
|
848
|
+
const codings = decompressionInternal.parseContentEncoding(contentEncoding)
|
|
849
|
+
if (codings === undefined) {
|
|
850
|
+
return Effect.succeed(Response.empty({
|
|
851
|
+
status: 415,
|
|
852
|
+
headers: { "accept-encoding": "gzip, deflate" }
|
|
853
|
+
}))
|
|
854
|
+
}
|
|
855
|
+
if (codings.length === 0) {
|
|
856
|
+
return httpApp
|
|
857
|
+
}
|
|
858
|
+
return Effect.provideService(
|
|
859
|
+
httpApp,
|
|
860
|
+
HttpServerRequest,
|
|
861
|
+
new decompressionInternal.DecompressedRequest(request, codings, maxDecompressedSize)
|
|
862
|
+
)
|
|
863
|
+
})
|
|
864
|
+
}
|
|
865
|
+
|
|
629
866
|
const withVary = (response: HttpServerResponse): HttpServerResponse => {
|
|
630
867
|
const vary = compressionInternal.varyWith(response.headers, "Accept-Encoding")
|
|
631
868
|
return Response.setHeader(response, "vary", vary)
|
package/src/http/HttpRouter.ts
CHANGED
|
@@ -24,6 +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, getMaxParamLengthExceeded } from "./FindMyWay/internal/router.ts"
|
|
27
28
|
import * as HttpEffect from "./HttpEffect.ts"
|
|
28
29
|
import * as HttpIncomingMessage from "./HttpIncomingMessage.ts"
|
|
29
30
|
import type * as HttpMethod from "./HttpMethod.ts"
|
|
@@ -123,7 +124,12 @@ export const HttpRouter: Context.Service<HttpRouter, HttpRouter> = Context.Servi
|
|
|
123
124
|
* @since 4.0.0
|
|
124
125
|
*/
|
|
125
126
|
export const make = Effect.gen(function*() {
|
|
126
|
-
const
|
|
127
|
+
const config = yield* RouterConfig
|
|
128
|
+
const ignoreDuplicateSlashes = config.ignoreDuplicateSlashes ?? true
|
|
129
|
+
const router = FindMyWay.make<{
|
|
130
|
+
readonly route: Route<any, never>
|
|
131
|
+
readonly prefixSegments: number | undefined
|
|
132
|
+
}>(config)
|
|
127
133
|
const middleware = new Set<middleware.Fn>()
|
|
128
134
|
|
|
129
135
|
const addAll = <const Routes extends ReadonlyArray<Route<any, any>>>(
|
|
@@ -147,19 +153,25 @@ export const make = Effect.gen(function*() {
|
|
|
147
153
|
...routes[i],
|
|
148
154
|
handler: applyMiddleware(routes[i].handler as Effect.Effect<HttpServerResponse.HttpServerResponse>)
|
|
149
155
|
})
|
|
156
|
+
const handler = {
|
|
157
|
+
route: route as Route<any, never>,
|
|
158
|
+
prefixSegments: Option.isSome(route.prefix)
|
|
159
|
+
? countSegments(route.prefix.value, ignoreDuplicateSlashes)
|
|
160
|
+
: undefined
|
|
161
|
+
}
|
|
150
162
|
if (route.method === "*") {
|
|
151
163
|
if (route.path.endsWith("/*")) {
|
|
152
|
-
router.all(route.path,
|
|
153
|
-
router.all(route.path.slice(0, -2) as any,
|
|
164
|
+
router.all(route.path, handler)
|
|
165
|
+
router.all(route.path.slice(0, -2) as any, handler)
|
|
154
166
|
} else {
|
|
155
|
-
router.all(route.path,
|
|
167
|
+
router.all(route.path, handler)
|
|
156
168
|
}
|
|
157
169
|
} else {
|
|
158
170
|
if (route.path.endsWith("/*")) {
|
|
159
|
-
router.on(route.method, route.path,
|
|
160
|
-
router.on(route.method, route.path.slice(0, -2) as any,
|
|
171
|
+
router.on(route.method, route.path, handler)
|
|
172
|
+
router.on(route.method, route.path.slice(0, -2) as any, handler)
|
|
161
173
|
} else {
|
|
162
|
-
router.on(route.method, route.path,
|
|
174
|
+
router.on(route.method, route.path, handler)
|
|
163
175
|
}
|
|
164
176
|
}
|
|
165
177
|
}
|
|
@@ -201,22 +213,28 @@ export const make = Effect.gen(function*() {
|
|
|
201
213
|
let context = fiber.context
|
|
202
214
|
const request = Context.getUnsafe(context, HttpServerRequest.HttpServerRequest)
|
|
203
215
|
let result = router.find(request.method, request.url)
|
|
216
|
+
let paramLimit = result === undefined ? getMaxParamLengthExceeded(router) : undefined
|
|
204
217
|
if (result === undefined && request.method === "HEAD") {
|
|
205
218
|
result = router.find("GET", request.url)
|
|
219
|
+
paramLimit ??= getMaxParamLengthExceeded(router)
|
|
206
220
|
}
|
|
207
221
|
if (result === undefined) {
|
|
208
222
|
return Effect.fail(
|
|
209
223
|
new HttpServerError.HttpServerError({
|
|
210
|
-
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
|
+
)
|
|
211
229
|
})
|
|
212
230
|
)
|
|
213
231
|
}
|
|
214
|
-
const route = result.handler
|
|
215
|
-
if (
|
|
232
|
+
const { route, prefixSegments } = result.handler
|
|
233
|
+
if (prefixSegments !== undefined) {
|
|
216
234
|
context = Context.add(
|
|
217
235
|
context,
|
|
218
236
|
HttpServerRequest.HttpServerRequest,
|
|
219
|
-
sliceRequestUrl(request,
|
|
237
|
+
sliceRequestUrl(request, prefixSegments, ignoreDuplicateSlashes)
|
|
220
238
|
)
|
|
221
239
|
}
|
|
222
240
|
context = Context.add(context, HttpServerRequest.ParsedSearchParams, result.searchParams)
|
|
@@ -251,9 +269,44 @@ export const make = Effect.gen(function*() {
|
|
|
251
269
|
})
|
|
252
270
|
})
|
|
253
271
|
|
|
254
|
-
function sliceRequestUrl(
|
|
255
|
-
|
|
256
|
-
|
|
272
|
+
function sliceRequestUrl(
|
|
273
|
+
request: HttpServerRequest.HttpServerRequest,
|
|
274
|
+
prefixSegments: number,
|
|
275
|
+
ignoreDuplicateSlashes: boolean
|
|
276
|
+
) {
|
|
277
|
+
const url = request.url
|
|
278
|
+
let index = 0
|
|
279
|
+
for (let segments = prefixSegments; segments > 0; segments--) {
|
|
280
|
+
if (ignoreDuplicateSlashes) {
|
|
281
|
+
while (url[index] === "/") index++
|
|
282
|
+
} else if (url[index] === "/") {
|
|
283
|
+
index++
|
|
284
|
+
}
|
|
285
|
+
while (index < url.length && !"/?;#".includes(url[index])) index++
|
|
286
|
+
}
|
|
287
|
+
return request.modify({ url: index < url.length ? url.slice(index) : "/" })
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
function countSegments(prefix: string, ignoreDuplicateSlashes: boolean) {
|
|
291
|
+
let count = 0
|
|
292
|
+
let inParamName = false
|
|
293
|
+
for (let i = 0; i < prefix.length; i++) {
|
|
294
|
+
const char = prefix[i]
|
|
295
|
+
if (char === "/") {
|
|
296
|
+
if (!ignoreDuplicateSlashes || prefix[i - 1] !== "/") count++
|
|
297
|
+
inParamName = false
|
|
298
|
+
} else if (char === ":") {
|
|
299
|
+
if (prefix[i + 1] === ":") i++
|
|
300
|
+
else inParamName = true
|
|
301
|
+
} else if (char === "-" || char === ".") {
|
|
302
|
+
inParamName = false
|
|
303
|
+
} else if (char === "(" && inParamName) {
|
|
304
|
+
// Slashes inside parameter regexes are not segment boundaries.
|
|
305
|
+
i = getClosingParenthensePosition(prefix, i)
|
|
306
|
+
inParamName = false
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return count
|
|
257
310
|
}
|
|
258
311
|
|
|
259
312
|
/**
|
|
@@ -23,6 +23,7 @@ import { hasProperty } from "../Predicate.ts"
|
|
|
23
23
|
import type * as Request from "./HttpServerRequest.ts"
|
|
24
24
|
import * as Respondable from "./HttpServerRespondable.ts"
|
|
25
25
|
import * as Response from "./HttpServerResponse.ts"
|
|
26
|
+
import * as UrlParams from "./UrlParams.ts"
|
|
26
27
|
|
|
27
28
|
const TypeId = "~effect/http/HttpServerError"
|
|
28
29
|
|
|
@@ -85,7 +86,8 @@ export class HttpServerError extends Data.TaggedError("HttpServerError")<{
|
|
|
85
86
|
*
|
|
86
87
|
* **Details**
|
|
87
88
|
*
|
|
88
|
-
* 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.
|
|
89
91
|
*
|
|
90
92
|
* @stability unstable
|
|
91
93
|
* @category errors
|
|
@@ -93,21 +95,23 @@ export class HttpServerError extends Data.TaggedError("HttpServerError")<{
|
|
|
93
95
|
*/
|
|
94
96
|
export class RequestParseError extends Data.TaggedError("RequestParseError")<{
|
|
95
97
|
readonly request: Request.HttpServerRequest
|
|
98
|
+
readonly reason?: "Parse" | "BodyTooLarge"
|
|
96
99
|
readonly description?: string
|
|
97
100
|
readonly cause?: unknown
|
|
98
101
|
}> implements Respondable.Respondable {
|
|
99
102
|
/**
|
|
100
|
-
* 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.
|
|
101
105
|
*
|
|
102
106
|
* @stability unstable
|
|
103
107
|
* @since 4.0.0
|
|
104
108
|
*/
|
|
105
109
|
[Respondable.symbol]() {
|
|
106
|
-
return Effect.succeed(Response.empty({ status: 400 }))
|
|
110
|
+
return Effect.succeed(Response.empty({ status: this.reason === "BodyTooLarge" ? 413 : 400 }))
|
|
107
111
|
}
|
|
108
112
|
|
|
109
113
|
get methodAndUrl() {
|
|
110
|
-
return
|
|
114
|
+
return formatMethodAndUrl(this.request)
|
|
111
115
|
}
|
|
112
116
|
|
|
113
117
|
override get message() {
|
|
@@ -139,7 +143,7 @@ export class RouteNotFound extends Data.TaggedError("RouteNotFound")<{
|
|
|
139
143
|
override readonly [ErrorReporter.ignore] = true
|
|
140
144
|
|
|
141
145
|
get methodAndUrl() {
|
|
142
|
-
return
|
|
146
|
+
return formatMethodAndUrl(this.request)
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
override get message() {
|
|
@@ -174,7 +178,7 @@ export class InternalError extends Data.TaggedError("InternalError")<{
|
|
|
174
178
|
}
|
|
175
179
|
|
|
176
180
|
get methodAndUrl() {
|
|
177
|
-
return
|
|
181
|
+
return formatMethodAndUrl(this.request)
|
|
178
182
|
}
|
|
179
183
|
|
|
180
184
|
override get message() {
|
|
@@ -214,7 +218,7 @@ export class ResponseError extends Data.TaggedError("ResponseError")<{
|
|
|
214
218
|
}
|
|
215
219
|
|
|
216
220
|
get methodAndUrl() {
|
|
217
|
-
return
|
|
221
|
+
return formatMethodAndUrl(this.request)
|
|
218
222
|
}
|
|
219
223
|
|
|
220
224
|
override get message() {
|
|
@@ -275,6 +279,9 @@ export class ClientAbort extends Context.Service<ClientAbort, true>()("effect/ht
|
|
|
275
279
|
)
|
|
276
280
|
}
|
|
277
281
|
|
|
282
|
+
const formatMethodAndUrl = (request: Request.HttpServerRequest) =>
|
|
283
|
+
`${request.method} ${UrlParams.redactUrl(request.url)}`
|
|
284
|
+
|
|
278
285
|
const formatRequestMessage = (reason: string, description: string | undefined, info: string) => {
|
|
279
286
|
const prefix = `${reason} (${info})`
|
|
280
287
|
return description ? `${prefix}: ${description}` : prefix
|