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
package/src/sql/SqlClient.ts
CHANGED
|
@@ -18,8 +18,9 @@ import { identity } from "../Function.ts"
|
|
|
18
18
|
import * as Option from "../Option.ts"
|
|
19
19
|
import { hasProperty } from "../Predicate.ts"
|
|
20
20
|
import type * as Queue from "../Queue.ts"
|
|
21
|
-
import { Reactivity } from "../reactivity/Reactivity.ts"
|
|
21
|
+
import { type KeysInput, Reactivity } from "../reactivity/Reactivity.ts"
|
|
22
22
|
import type { ReadonlyRecord } from "../Record.ts"
|
|
23
|
+
import { UnhandledLogLevel } from "../References.ts"
|
|
23
24
|
import * as Scope from "../Scope.ts"
|
|
24
25
|
import * as Semaphore from "../Semaphore.ts"
|
|
25
26
|
import * as Stream from "../Stream.ts"
|
|
@@ -55,8 +56,39 @@ export interface SqlClient extends Constructor {
|
|
|
55
56
|
|
|
56
57
|
readonly reserve: Effect.Effect<Connection.Connection, SqlError, Scope.Scope>
|
|
57
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Identifies the driver that created this client.
|
|
61
|
+
*
|
|
62
|
+
* **Details**
|
|
63
|
+
*
|
|
64
|
+
* Effect drivers use their package name without the `@effect/sql-` prefix,
|
|
65
|
+
* such as `"pg"`, `"pglite"` or `"sqlite-node"`. Unlike the compiler
|
|
66
|
+
* dialect, it distinguishes drivers that share a SQL dialect but manage
|
|
67
|
+
* connections differently.
|
|
68
|
+
*/
|
|
69
|
+
readonly driver: string
|
|
70
|
+
|
|
58
71
|
/**
|
|
59
72
|
* With the given effect, ensure all sql queries are run in a transaction.
|
|
73
|
+
*
|
|
74
|
+
* **Details**
|
|
75
|
+
*
|
|
76
|
+
* Inside the transaction, `Reactivity.invalidate` and `Reactivity.mutation`
|
|
77
|
+
* invalidate once the outermost transaction commits, and not at all if it
|
|
78
|
+
* rolls back.
|
|
79
|
+
*
|
|
80
|
+
* To start a top-level transaction with a statement other than the
|
|
81
|
+
* client's, such as one that sets its isolation level, provide
|
|
82
|
+
* `BeginTransaction`.
|
|
83
|
+
*
|
|
84
|
+
* **Gotchas**
|
|
85
|
+
*
|
|
86
|
+
* Deferred invalidations run individually after the commit and don't join an
|
|
87
|
+
* enclosing `Reactivity.withBatch`. Only the `Reactivity` service read from
|
|
88
|
+
* the transaction's context defers, and a fiber that outlives the
|
|
89
|
+
* transaction can't defer through it, as with `afterCommit`. Transactions
|
|
90
|
+
* that don't go through `makeWithTransaction`, such as those of
|
|
91
|
+
* `@effect/sql-sqlite-do`, invalidate immediately.
|
|
60
92
|
*/
|
|
61
93
|
readonly withTransaction: <R, E, A>(
|
|
62
94
|
self: Effect.Effect<A, E, R>
|
|
@@ -67,11 +99,53 @@ export interface SqlClient extends Constructor {
|
|
|
67
99
|
*/
|
|
68
100
|
readonly transactionService: Context.Service<TransactionConnection, TransactionConnection.Service>
|
|
69
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Runs `effect` once the outermost transaction of this client commits, or
|
|
104
|
+
* immediately, and interruptibly, when no transaction is open.
|
|
105
|
+
*
|
|
106
|
+
* **When to use**
|
|
107
|
+
*
|
|
108
|
+
* Use to signal committed changes, such as waking workers, invalidating
|
|
109
|
+
* caches or notifying subscribers.
|
|
110
|
+
*
|
|
111
|
+
* **Details**
|
|
112
|
+
*
|
|
113
|
+
* Callbacks are discarded if the transaction rolls back or its `COMMIT`
|
|
114
|
+
* fails, and callbacks registered in a savepoint that rolls back are
|
|
115
|
+
* discarded even if the outer transaction commits. After a successful
|
|
116
|
+
* `COMMIT`, callbacks run once releasing the connection has been attempted,
|
|
117
|
+
* before `withTransaction` returns.
|
|
118
|
+
*
|
|
119
|
+
* A callback runs with the services that were in scope when it was
|
|
120
|
+
* registered, minus this client's transaction, so a callback that queries
|
|
121
|
+
* uses a new connection. A callback that dies is logged at
|
|
122
|
+
* `References.UnhandledLogLevel` and the rest still run.
|
|
123
|
+
*
|
|
124
|
+
* Callbacks run in registration order within a transaction or savepoint,
|
|
125
|
+
* and a committed savepoint's callbacks follow those already registered in
|
|
126
|
+
* the enclosing level. Callbacks registered concurrently from several
|
|
127
|
+
* fibers are not guaranteed to run in registration order.
|
|
128
|
+
*
|
|
129
|
+
* **Gotchas**
|
|
130
|
+
*
|
|
131
|
+
* Callbacks are lost if the process exits before they run or the outcome of
|
|
132
|
+
* `COMMIT` is unknown, so work that must happen belongs in a table written
|
|
133
|
+
* in the same transaction. After `COMMIT`, callbacks run uninterruptibly,
|
|
134
|
+
* even if the fiber was interrupted or releasing the connection failed, and
|
|
135
|
+
* `withTransaction` waits for them, so keep them short and fork
|
|
136
|
+
* long-running work.
|
|
137
|
+
* Registering after the transaction has ended is a defect.
|
|
138
|
+
*
|
|
139
|
+
* Transactions that don't go through `makeWithTransaction`, such as those
|
|
140
|
+
* of `@effect/sql-sqlite-do`, run callbacks immediately.
|
|
141
|
+
*/
|
|
142
|
+
readonly afterCommit: <R>(effect: Effect.Effect<void, never, R>) => Effect.Effect<void, never, R>
|
|
143
|
+
|
|
70
144
|
/**
|
|
71
145
|
* Use the Reactivity service to create a reactive query.
|
|
72
146
|
*/
|
|
73
147
|
readonly reactive: <A, E, R>(
|
|
74
|
-
keys:
|
|
148
|
+
keys: KeysInput,
|
|
75
149
|
effect: Effect.Effect<A, E, R>
|
|
76
150
|
) => Stream.Stream<A, E, R>
|
|
77
151
|
|
|
@@ -80,7 +154,7 @@ export interface SqlClient extends Constructor {
|
|
|
80
154
|
* query.
|
|
81
155
|
*/
|
|
82
156
|
readonly reactiveMailbox: <A, E, R>(
|
|
83
|
-
keys:
|
|
157
|
+
keys: KeysInput,
|
|
84
158
|
effect: Effect.Effect<A, E, R>
|
|
85
159
|
) => Effect.Effect<Queue.Dequeue<A, E>, never, R | Scope.Scope>
|
|
86
160
|
}
|
|
@@ -126,6 +200,10 @@ export declare namespace SqlClient {
|
|
|
126
200
|
readonly borrower?: Connection.Borrower | undefined
|
|
127
201
|
readonly compiler: Compiler
|
|
128
202
|
readonly transactionAcquirer?: Connection.Acquirer
|
|
203
|
+
/**
|
|
204
|
+
* Identifies the driver creating the client, exposed as `SqlClient.driver`.
|
|
205
|
+
*/
|
|
206
|
+
readonly driver: string
|
|
129
207
|
readonly spanAttributes: ReadonlyArray<readonly [string, unknown]>
|
|
130
208
|
readonly transactionService?: Context.Service<TransactionConnection, TransactionConnection.Service>
|
|
131
209
|
/**
|
|
@@ -147,6 +225,11 @@ export declare namespace SqlClient {
|
|
|
147
225
|
readonly commit?: string | ((conn: Connection.Connection) => Effect.Effect<void, SqlError>) | undefined
|
|
148
226
|
/** Cleanup on the same connection when COMMIT fails. Omit when the driver already ends the transaction. */
|
|
149
227
|
readonly onCommitFailure?: ((conn: Connection.Connection) => Effect.Effect<void, SqlError>) | undefined
|
|
228
|
+
/**
|
|
229
|
+
* Reports whether a transaction is open. If false, rollback and savepoint
|
|
230
|
+
* cleanup are skipped.
|
|
231
|
+
*/
|
|
232
|
+
readonly isTransaction?: ((conn: Connection.Connection) => boolean) | undefined
|
|
150
233
|
readonly savepoint?: ((name: string) => string) | undefined
|
|
151
234
|
/**
|
|
152
235
|
* SQL to release a nested savepoint after success or a successful rollback.
|
|
@@ -195,28 +278,29 @@ export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions)
|
|
|
195
278
|
const control = options.prepareTransactionControls === true
|
|
196
279
|
? (conn: Connection.Connection, sql: string) => conn.execute(sql, [], undefined)
|
|
197
280
|
: (conn: Connection.Connection, sql: string) => conn.executeUnprepared(sql, [], undefined)
|
|
281
|
+
const isTransaction = options.isTransaction
|
|
282
|
+
const cleanup = isTransaction
|
|
283
|
+
? (conn: Connection.Connection, sql: string) => isTransaction(conn) ? control(conn, sql) : Effect.void
|
|
284
|
+
: control
|
|
198
285
|
const withTransaction = makeWithTransaction({
|
|
199
286
|
transactionService,
|
|
200
287
|
spanAttributes: options.spanAttributes,
|
|
201
|
-
acquireConnection:
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))),
|
|
206
|
-
Effect.map((conn) => [scope, conn] as const)
|
|
207
|
-
)
|
|
208
|
-
),
|
|
209
|
-
begin: (conn) => control(conn, beginTransaction),
|
|
288
|
+
acquireConnection: (restore) => restore(transactionAcquirer!),
|
|
289
|
+
// Unlike the client's own, a provided statement isn't fixed, so it isn't prepared.
|
|
290
|
+
begin: (conn, statement) =>
|
|
291
|
+
statement === undefined ? control(conn, beginTransaction) : conn.executeUnprepared(statement, [], undefined),
|
|
210
292
|
savepoint: (conn, id) => control(conn, savepoint(`effect_sql_${id}`)),
|
|
211
293
|
releaseSavepoint: releaseSavepoint
|
|
212
|
-
? (conn, id) =>
|
|
294
|
+
? (conn, id) => cleanup(conn, releaseSavepoint(`effect_sql_${id}`))
|
|
213
295
|
: undefined,
|
|
214
296
|
commit: typeof commit === "string" ? (conn) => control(conn, commit) : commit,
|
|
215
297
|
onCommitFailure: options.onCommitFailure,
|
|
216
|
-
rollback: (conn) =>
|
|
217
|
-
rollbackSavepoint: (conn, id) =>
|
|
298
|
+
rollback: (conn) => cleanup(conn, rollback),
|
|
299
|
+
rollbackSavepoint: (conn, id) => cleanup(conn, rollbackSavepoint(`effect_sql_${id}`))
|
|
218
300
|
})
|
|
219
301
|
|
|
302
|
+
const afterCommit = makeAfterCommit(transactionService)
|
|
303
|
+
|
|
220
304
|
const reactivity = yield* Reactivity
|
|
221
305
|
// A statement inside a transaction has to run on that transaction's
|
|
222
306
|
// connection, so borrowing is only for statements that reach the pool.
|
|
@@ -236,7 +320,9 @@ export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions)
|
|
|
236
320
|
safe: undefined as any,
|
|
237
321
|
withTransaction,
|
|
238
322
|
transactionService,
|
|
323
|
+
afterCommit,
|
|
239
324
|
reserve: transactionAcquirer,
|
|
325
|
+
driver: options.driver,
|
|
240
326
|
withoutTransforms(): any {
|
|
241
327
|
if (options.transformRows === undefined) {
|
|
242
328
|
return this
|
|
@@ -275,22 +361,22 @@ export const make = Effect.fnUntraced(function*(options: SqlClient.MakeOptions)
|
|
|
275
361
|
})
|
|
276
362
|
|
|
277
363
|
/**
|
|
278
|
-
* Builds the acquirers and failed-COMMIT cleanup for a SQLite client that
|
|
364
|
+
* Builds the acquirers, borrower and failed-COMMIT cleanup for a SQLite client that
|
|
279
365
|
* shares one connection through a semaphore.
|
|
280
366
|
*
|
|
281
367
|
* **Details**
|
|
282
368
|
*
|
|
283
369
|
* Both acquirers lease the connection into the current scope and hold the
|
|
284
|
-
* semaphore until that scope closes
|
|
285
|
-
*
|
|
286
|
-
* underneath
|
|
287
|
-
* have to run inside `Effect.scoped`.
|
|
370
|
+
* semaphore until that scope closes. The borrower holds the same semaphore
|
|
371
|
+
* until the statement finishes without creating a scope. Another fiber cannot
|
|
372
|
+
* begin a transaction underneath either. Effects that use the connection directly,
|
|
373
|
+
* such as an export, have to run inside `Effect.scoped`.
|
|
288
374
|
*
|
|
289
375
|
* SQLite can keep a transaction open after COMMIT fails, for example on a
|
|
290
376
|
* deferred foreign key violation. `onCommitFailure` rolls it back before the
|
|
291
377
|
* connection is reused. If that ROLLBACK fails, the connection is rejected, and
|
|
292
|
-
* each acquisition retries the ROLLBACK once while holding the semaphore
|
|
293
|
-
* it succeeds. The database is never reopened, and transactions started with a
|
|
378
|
+
* each acquisition or borrow retries the ROLLBACK once while holding the semaphore
|
|
379
|
+
* until it succeeds. The database is never reopened, and transactions started with a
|
|
294
380
|
* plain `BEGIN` are only touched after a failed cleanup.
|
|
295
381
|
*
|
|
296
382
|
* Pass `isTransaction` when the driver can report whether a transaction is
|
|
@@ -307,8 +393,10 @@ export const makeSqliteAcquirers = <C extends Connection.Connection>(options: {
|
|
|
307
393
|
readonly isTransaction?: ((conn: C) => boolean) | undefined
|
|
308
394
|
}): {
|
|
309
395
|
readonly acquirer: Effect.Effect<C, SqlError, Scope.Scope>
|
|
396
|
+
readonly borrower: Connection.Borrower
|
|
310
397
|
readonly transactionAcquirer: Effect.Effect<C, SqlError, Scope.Scope>
|
|
311
398
|
readonly onCommitFailure: (conn: Connection.Connection) => Effect.Effect<void, SqlError>
|
|
399
|
+
readonly isTransaction: ((conn: Connection.Connection) => boolean) | undefined
|
|
312
400
|
} => {
|
|
313
401
|
const { isTransaction, semaphore } = options
|
|
314
402
|
let poisoned: SqlError | undefined
|
|
@@ -352,8 +440,10 @@ export const makeSqliteAcquirers = <C extends Connection.Connection>(options: {
|
|
|
352
440
|
|
|
353
441
|
return {
|
|
354
442
|
acquirer: lease,
|
|
443
|
+
borrower: (f) => semaphore.withPermit(Effect.flatMap(available, f)),
|
|
355
444
|
transactionAcquirer: lease,
|
|
356
|
-
onCommitFailure: (conn) => Effect.tapCause(rollback(conn as C), (cause) => Effect.sync(() => poison(cause)))
|
|
445
|
+
onCommitFailure: (conn) => Effect.tapCause(rollback(conn as C), (cause) => Effect.sync(() => poison(cause))),
|
|
446
|
+
isTransaction: isTransaction && ((conn) => isTransaction(conn as C))
|
|
357
447
|
}
|
|
358
448
|
}
|
|
359
449
|
|
|
@@ -379,6 +469,56 @@ const failuresToDefects = <E>(cause: Cause.Cause<E>): Cause.Cause<never> =>
|
|
|
379
469
|
: reason
|
|
380
470
|
))
|
|
381
471
|
|
|
472
|
+
/**
|
|
473
|
+
* Callbacks registered with `afterCommit` in one transaction level. A
|
|
474
|
+
* committed savepoint hands its callbacks to its parent, and the outermost
|
|
475
|
+
* level runs them after it commits.
|
|
476
|
+
*/
|
|
477
|
+
interface AfterCommitBuffer {
|
|
478
|
+
readonly callbacks: Array<Effect.Effect<void>>
|
|
479
|
+
readonly parent: AfterCommitBuffer | undefined
|
|
480
|
+
open: boolean
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* Keyed by the transaction service value of each level, so removing the
|
|
485
|
+
* transaction service also hides its buffer, and a transaction that
|
|
486
|
+
* `makeWithTransaction` didn't start has none.
|
|
487
|
+
*/
|
|
488
|
+
const afterCommitBuffers = new WeakMap<object, AfterCommitBuffer>()
|
|
489
|
+
|
|
490
|
+
const runAfterCommit = <R>(effect: Effect.Effect<void, never, R>): Effect.Effect<void, never, R> =>
|
|
491
|
+
Effect.catchCause(effect, (cause) =>
|
|
492
|
+
Effect.withFiber((fiber) => {
|
|
493
|
+
const unhandledLogLevel = fiber.getRef(UnhandledLogLevel)
|
|
494
|
+
if (unhandledLogLevel) {
|
|
495
|
+
return Effect.logWithLevel(unhandledLogLevel)("Unhandled error in SqlClient.afterCommit callback", cause)
|
|
496
|
+
}
|
|
497
|
+
return Effect.void
|
|
498
|
+
}))
|
|
499
|
+
|
|
500
|
+
const makeAfterCommit =
|
|
501
|
+
(transactionService: Context.Key<any, any>) =>
|
|
502
|
+
<R>(effect: Effect.Effect<void, never, R>): Effect.Effect<void, never, R> =>
|
|
503
|
+
Effect.withFiber((fiber) => {
|
|
504
|
+
const transaction = Context.getOrUndefined(fiber.context, transactionService)
|
|
505
|
+
const buffer = transaction && afterCommitBuffers.get(transaction)
|
|
506
|
+
// Outside a transaction, or in one that doesn't buffer callbacks.
|
|
507
|
+
if (buffer === undefined) {
|
|
508
|
+
return runAfterCommit(effect)
|
|
509
|
+
}
|
|
510
|
+
for (let current: AfterCommitBuffer | undefined = buffer; current !== undefined; current = current.parent) {
|
|
511
|
+
if (!current.open) {
|
|
512
|
+
return Effect.die(new Error("SqlClient.afterCommit: the transaction has already ended"))
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
// Runs later with the services in scope now, without the transaction.
|
|
516
|
+
buffer.callbacks.push(
|
|
517
|
+
Effect.provideContext(effect, Context.omit(transactionService)(fiber.context) as Context.Context<R>)
|
|
518
|
+
)
|
|
519
|
+
return Effect.void
|
|
520
|
+
})
|
|
521
|
+
|
|
382
522
|
/**
|
|
383
523
|
* Builds a transaction wrapper that begins top-level transactions, uses
|
|
384
524
|
* savepoints for nested transactions, commits on success, and rolls back on
|
|
@@ -392,8 +532,22 @@ const failuresToDefects = <E>(cause: Cause.Cause<E>): Cause.Cause<never> =>
|
|
|
392
532
|
export const makeWithTransaction = <I, S>(options: {
|
|
393
533
|
readonly transactionService: Context.Key<I, readonly [conn: S, counter: number]>
|
|
394
534
|
readonly spanAttributes: ReadonlyArray<readonly [string, unknown]>
|
|
395
|
-
|
|
396
|
-
|
|
535
|
+
/**
|
|
536
|
+
* Acquires the connection for a top-level transaction. Runs under the
|
|
537
|
+
* transaction's uninterruptible mask; wrap the wait for a connection in
|
|
538
|
+
* `restore` so a queued transaction can be interrupted, and register
|
|
539
|
+
* releases on the provided scope. The scope closes with the transaction, or
|
|
540
|
+
* immediately when acquisition fails or is interrupted.
|
|
541
|
+
*/
|
|
542
|
+
readonly acquireConnection: (
|
|
543
|
+
restore: <XA, XE, XR>(effect: Effect.Effect<XA, XE, XR>) => Effect.Effect<XA, XE, XR>
|
|
544
|
+
) => Effect.Effect<S, SqlError, Scope.Scope>
|
|
545
|
+
/**
|
|
546
|
+
* Starts a top-level transaction. `statement` is the `BeginTransaction`
|
|
547
|
+
* provided to the transaction, if any; a driver that doesn't start
|
|
548
|
+
* transactions with a SQL statement ignores it.
|
|
549
|
+
*/
|
|
550
|
+
readonly begin: (conn: NoInfer<S>, statement: string | undefined) => Effect.Effect<void, SqlError>
|
|
397
551
|
readonly savepoint: (conn: NoInfer<S>, id: number) => Effect.Effect<void, SqlError>
|
|
398
552
|
/**
|
|
399
553
|
* Releases a nested savepoint after success or a successful rollback.
|
|
@@ -410,6 +564,12 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
410
564
|
const transactionSemaphore = Context.Service<Semaphore.Semaphore>(
|
|
411
565
|
`effect/sql/SqlClient/TransactionSemaphore/${transactionSemaphoreIdCounter++}`
|
|
412
566
|
)
|
|
567
|
+
const afterCommit = makeAfterCommit(options.transactionService)
|
|
568
|
+
const deferInvalidations = (reactivity: Reactivity): Reactivity => {
|
|
569
|
+
const invalidate = (keys: Parameters<Reactivity["invalidate"]>[0]) =>
|
|
570
|
+
afterCommit(Effect.sync(() => reactivity.invalidateUnsafe(keys)))
|
|
571
|
+
return { ...reactivity, invalidate, mutation: (keys, effect) => Effect.tap(effect, invalidate(keys)) }
|
|
572
|
+
}
|
|
413
573
|
return <R, E, A>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E | SqlError, R> =>
|
|
414
574
|
Effect.uninterruptibleMask((restore) =>
|
|
415
575
|
Effect.useSpan(
|
|
@@ -421,24 +581,38 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
421
581
|
span.attribute(key, value)
|
|
422
582
|
}
|
|
423
583
|
const services = fiber.context
|
|
584
|
+
const reactivity = Context.getOrUndefined(services, Reactivity)
|
|
424
585
|
const clock = fiber.getRef(Clock)
|
|
425
586
|
const connOption = Context.getOption(services, options.transactionService)
|
|
426
|
-
const conn = connOption._tag === "Some"
|
|
587
|
+
const conn: Effect.Effect<readonly [Scope.Closeable | undefined, S], SqlError> = connOption._tag === "Some"
|
|
427
588
|
? Effect.succeed([undefined, connOption.value[0]] as const)
|
|
428
|
-
:
|
|
589
|
+
: Effect.flatMap(Scope.make(), (scope) =>
|
|
590
|
+
Scope.provide(options.acquireConnection(restore), scope).pipe(
|
|
591
|
+
Effect.map((conn) => [scope, conn] as const),
|
|
592
|
+
Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause)))
|
|
593
|
+
))
|
|
429
594
|
const id = connOption._tag === "Some" ? connOption.value[1] + 1 : 0
|
|
595
|
+
const buffer: AfterCommitBuffer = {
|
|
596
|
+
callbacks: [],
|
|
597
|
+
parent: connOption._tag === "Some" ? afterCommitBuffers.get(connOption.value) : undefined,
|
|
598
|
+
open: true
|
|
599
|
+
}
|
|
600
|
+
let committed = false
|
|
430
601
|
const transaction = Effect.flatMap(
|
|
431
602
|
conn,
|
|
432
603
|
(
|
|
433
604
|
[scope, conn]
|
|
434
605
|
) =>
|
|
435
|
-
(id === 0 ? options.begin(conn) : options.savepoint(conn, id)).pipe(
|
|
436
|
-
Effect.flatMap(() =>
|
|
437
|
-
|
|
606
|
+
(id === 0 ? options.begin(conn, fiber.getRef(BeginTransaction)) : options.savepoint(conn, id)).pipe(
|
|
607
|
+
Effect.flatMap(() => {
|
|
608
|
+
const level = [conn, id] as const
|
|
609
|
+
afterCommitBuffers.set(level, buffer)
|
|
610
|
+
return Effect.onExitPrimitive(
|
|
438
611
|
Effect.provideContext(
|
|
439
612
|
restore(effect),
|
|
440
613
|
services.pipe(
|
|
441
|
-
Context.add(options.transactionService,
|
|
614
|
+
Context.add(options.transactionService, level),
|
|
615
|
+
reactivity ? Context.add(Reactivity, deferInvalidations(reactivity)) : identity,
|
|
442
616
|
Context.add(transactionSemaphore, Semaphore.makeUnsafe(1)),
|
|
443
617
|
Context.add(Tracer.ParentSpan, span)
|
|
444
618
|
)
|
|
@@ -472,17 +646,34 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
472
646
|
if (id > 0 && options.releaseSavepoint) {
|
|
473
647
|
effect = Effect.andThen(effect, Effect.orDie(options.releaseSavepoint(conn, id)))
|
|
474
648
|
}
|
|
475
|
-
return Effect.flatMap(effect, () =>
|
|
649
|
+
return Effect.flatMap(effect, () => {
|
|
650
|
+
committed = Exit.isSuccess(exit)
|
|
651
|
+
return exit
|
|
652
|
+
})
|
|
476
653
|
},
|
|
477
654
|
true
|
|
478
655
|
)
|
|
479
|
-
),
|
|
480
|
-
scope
|
|
656
|
+
}),
|
|
657
|
+
scope
|
|
658
|
+
? (eff) => Effect.onExitPrimitive(eff, (exit) => Scope.close(scope, exit), true)
|
|
659
|
+
: identity
|
|
481
660
|
)
|
|
482
661
|
)
|
|
662
|
+
// Runs once the connection is released, whether or not that succeeded.
|
|
663
|
+
const settled = Effect.onExitPrimitive(transaction, () => {
|
|
664
|
+
buffer.open = false
|
|
665
|
+
if (!committed || buffer.callbacks.length === 0) {
|
|
666
|
+
return undefined
|
|
667
|
+
}
|
|
668
|
+
if (buffer.parent !== undefined) {
|
|
669
|
+
buffer.parent.callbacks.push(...buffer.callbacks)
|
|
670
|
+
return undefined
|
|
671
|
+
}
|
|
672
|
+
return Effect.forEach(buffer.callbacks, runAfterCommit, { discard: true })
|
|
673
|
+
}, true)
|
|
483
674
|
return id === 0
|
|
484
|
-
?
|
|
485
|
-
: Context.getUnsafe(services, transactionSemaphore).withPermit(
|
|
675
|
+
? settled
|
|
676
|
+
: Context.getUnsafe(services, transactionSemaphore).withPermit(settled)
|
|
486
677
|
})
|
|
487
678
|
)
|
|
488
679
|
)
|
|
@@ -542,3 +733,51 @@ export const TransactionConnection = (
|
|
|
542
733
|
export const SafeIntegers = Context.Reference<boolean>("effect/sql/SqlClient/SafeIntegers", {
|
|
543
734
|
defaultValue: () => false
|
|
544
735
|
})
|
|
736
|
+
|
|
737
|
+
/**
|
|
738
|
+
* Context reference holding the statement that starts a top-level
|
|
739
|
+
* transaction in place of the client's `BEGIN`; defaults to `undefined`, which
|
|
740
|
+
* keeps the client's.
|
|
741
|
+
*
|
|
742
|
+
* **When to use**
|
|
743
|
+
*
|
|
744
|
+
* Use when one transaction needs its own isolation level or access mode, as
|
|
745
|
+
* in `BEGIN ISOLATION LEVEL SERIALIZABLE` on PostgreSQL, rather than following
|
|
746
|
+
* the client's `BEGIN` with a `SET TRANSACTION`, which costs another round
|
|
747
|
+
* trip.
|
|
748
|
+
*
|
|
749
|
+
* **Details**
|
|
750
|
+
*
|
|
751
|
+
* The statement runs unprepared. Nested transactions ignore it and keep their
|
|
752
|
+
* savepoints.
|
|
753
|
+
*
|
|
754
|
+
* **Gotchas**
|
|
755
|
+
*
|
|
756
|
+
* It applies to every top-level transaction started while it is provided,
|
|
757
|
+
* including in forked fibers, so provide it around the single
|
|
758
|
+
* `withTransaction` it is meant for. `@effect/sql-libsql`, `@effect/sql-mssql`
|
|
759
|
+
* and `@effect/sql-sqlite-do` don't start transactions with a SQL statement
|
|
760
|
+
* and ignore it. The statement is sent as raw SQL, so never build it from
|
|
761
|
+
* untrusted input.
|
|
762
|
+
*
|
|
763
|
+
* **Example** (Starting a serializable transaction)
|
|
764
|
+
*
|
|
765
|
+
* ```ts
|
|
766
|
+
* import { Effect } from "effect"
|
|
767
|
+
* import { SqlClient } from "effect/sql"
|
|
768
|
+
*
|
|
769
|
+
* const program = Effect.gen(function*() {
|
|
770
|
+
* const sql = yield* SqlClient.SqlClient
|
|
771
|
+
* return yield* sql.withTransaction(sql`SELECT 1`).pipe(
|
|
772
|
+
* Effect.provideService(SqlClient.BeginTransaction, "BEGIN ISOLATION LEVEL SERIALIZABLE")
|
|
773
|
+
* )
|
|
774
|
+
* })
|
|
775
|
+
* ```
|
|
776
|
+
*
|
|
777
|
+
* @stability unstable
|
|
778
|
+
* @category services
|
|
779
|
+
* @since 4.0.6
|
|
780
|
+
*/
|
|
781
|
+
export const BeginTransaction = Context.Reference<string | undefined>("effect/sql/SqlClient/BeginTransaction", {
|
|
782
|
+
defaultValue: () => undefined
|
|
783
|
+
})
|
package/src/sql/SqlResolver.ts
CHANGED
|
@@ -8,6 +8,15 @@
|
|
|
8
8
|
* grouped, id-based, and side-effect-only resolver constructors, and keeps
|
|
9
9
|
* batches separated by the active SQL transaction connection.
|
|
10
10
|
*
|
|
11
|
+
* Only the transaction connection separates batches. Other differences in
|
|
12
|
+
* caller services do not: `execute` and result decoding are provided with the
|
|
13
|
+
* first entry's context, while request encoding uses each entry's own context.
|
|
14
|
+
* In particular, callers outside a transaction can share one batch even when
|
|
15
|
+
* they provide different tenant or authorization services. Do not rely on
|
|
16
|
+
* per-caller services to isolate such SQL operations; use separate resolver
|
|
17
|
+
* instances for different tenants or authorization settings, or include those
|
|
18
|
+
* values in the request payload and handle them explicitly in `execute`.
|
|
19
|
+
*
|
|
11
20
|
* @stability unstable
|
|
12
21
|
* @since 4.0.0
|
|
13
22
|
*/
|
package/src/sql/Statement.ts
CHANGED
|
@@ -115,7 +115,9 @@ export const CurrentTransformer = Context.Reference<Transformer | undefined>("ef
|
|
|
115
115
|
|
|
116
116
|
/**
|
|
117
117
|
* Parents driver spans under the statement span for every client in the current scope,
|
|
118
|
-
* including acquisition and stream pulls
|
|
118
|
+
* including acquisition and stream pulls, and records how long each statement
|
|
119
|
+
* waited for a connection as `db.client.connection.wait_time_ms`. Defaults to
|
|
120
|
+
* `false`; ignored when tracing is disabled.
|
|
119
121
|
*
|
|
120
122
|
* @stability unstable
|
|
121
123
|
* @category services
|
|
@@ -1328,6 +1330,7 @@ export const spanName = (spanAttributes: ReadonlyArray<readonly [string, unknown
|
|
|
1328
1330
|
// internal
|
|
1329
1331
|
|
|
1330
1332
|
const ATTR_DB_QUERY_TEXT = "db.query.text"
|
|
1333
|
+
const ATTR_DB_CLIENT_CONNECTION_WAIT_TIME = "db.client.connection.wait_time_ms"
|
|
1331
1334
|
const ATTR_SQL_METHOD = "effect.sql.method"
|
|
1332
1335
|
|
|
1333
1336
|
// the last value wins, matching the order the attributes are applied to spans
|
|
@@ -1435,12 +1438,19 @@ const StatementProto: Omit<
|
|
|
1435
1438
|
}
|
|
1436
1439
|
span.attribute(ATTR_SQL_METHOD, operation)
|
|
1437
1440
|
span.attribute(ATTR_DB_QUERY_TEXT, sql)
|
|
1441
|
+
const propagate = fiber.cache.tracerEnabled && fiber.getRef(SpanPropagationEnabled)
|
|
1442
|
+
const clock = propagate ? waitClock(fiber) : undefined
|
|
1443
|
+
const run = clock === undefined
|
|
1444
|
+
? (connection: Connection) => f(connection, sql, params)
|
|
1445
|
+
: (connection: Connection) =>
|
|
1446
|
+
Effect.suspend(() => {
|
|
1447
|
+
recordConnectionWait(span, clock)
|
|
1448
|
+
return f(connection, sql, params)
|
|
1449
|
+
})
|
|
1438
1450
|
const execute = this.borrower === undefined
|
|
1439
|
-
? Effect.scoped(Effect.flatMap(this.acquirer,
|
|
1440
|
-
: this.borrower(
|
|
1441
|
-
return
|
|
1442
|
-
? Effect.provideService(execute, Tracer.ParentSpan, span)
|
|
1443
|
-
: execute
|
|
1451
|
+
? Effect.scoped(Effect.flatMap(this.acquirer, run))
|
|
1452
|
+
: this.borrower(run)
|
|
1453
|
+
return propagate ? Effect.provideService(execute, Tracer.ParentSpan, span) : execute
|
|
1444
1454
|
})
|
|
1445
1455
|
},
|
|
1446
1456
|
|
|
@@ -1472,8 +1482,13 @@ const StatementProto: Omit<
|
|
|
1472
1482
|
}
|
|
1473
1483
|
span.attribute(ATTR_SQL_METHOD, "executeStream")
|
|
1474
1484
|
span.attribute(ATTR_DB_QUERY_TEXT, sql)
|
|
1475
|
-
const
|
|
1476
|
-
|
|
1485
|
+
const propagate = fiber.cache.tracerEnabled && fiber.getRef(SpanPropagationEnabled)
|
|
1486
|
+
const clock = propagate ? waitClock(fiber) : undefined
|
|
1487
|
+
const acquire = Effect.map(self.acquirer, (connection) => {
|
|
1488
|
+
if (clock !== undefined) recordConnectionWait(span, clock)
|
|
1489
|
+
return connection.executeStream(sql, params, self.transformRows)
|
|
1490
|
+
})
|
|
1491
|
+
return propagate
|
|
1477
1492
|
? Effect.succeed(Stream.provideService(Stream.unwrap(acquire), Tracer.ParentSpan, span))
|
|
1478
1493
|
: acquire
|
|
1479
1494
|
})
|
|
@@ -1540,6 +1555,18 @@ const StatementProto: Omit<
|
|
|
1540
1555
|
}
|
|
1541
1556
|
}
|
|
1542
1557
|
|
|
1558
|
+
// Without span timing, the span has no start time to measure from.
|
|
1559
|
+
const waitClock = (fiber: Fiber.Fiber<unknown, unknown>): Clock | undefined =>
|
|
1560
|
+
fiber.getRef(TracerTimingEnabled) ? fiber.getRef(Clock) : undefined
|
|
1561
|
+
|
|
1562
|
+
// Measured from the statement span's start to the connection hand-off, so it
|
|
1563
|
+
// also covers compiling the statement and any `CurrentTransformer` run first.
|
|
1564
|
+
const recordConnectionWait = (span: Tracer.Span, clock: Clock): void =>
|
|
1565
|
+
span.attribute(
|
|
1566
|
+
ATTR_DB_CLIENT_CONNECTION_WAIT_TIME,
|
|
1567
|
+
Number(clock.currentTimeNanosUnsafe() - span.status.startTime) / 1e6
|
|
1568
|
+
)
|
|
1569
|
+
|
|
1543
1570
|
const withStatement = <A, X, E, R>(
|
|
1544
1571
|
self: StatementImpl<A>,
|
|
1545
1572
|
span: Tracer.Span,
|