effect 4.0.5 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai-docs/package.json +1 -1
- package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
- package/ai-docs/tsconfig.json +3 -1
- package/dist/Array.d.ts +117 -52
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +41 -20
- package/dist/Array.js.map +1 -1
- package/dist/Bytes.d.ts +79 -0
- package/dist/Bytes.d.ts.map +1 -0
- package/dist/Bytes.js +109 -0
- package/dist/Bytes.js.map +1 -0
- package/dist/Channel.d.ts +181 -13
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +125 -30
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +39 -21
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +26 -17
- package/dist/Chunk.js.map +1 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +8 -3
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +2 -1
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Cron.d.ts +2 -2
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +6 -3
- package/dist/Cron.js.map +1 -1
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +56 -16
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +487 -163
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +203 -37
- package/dist/Effect.js.map +1 -1
- package/dist/Equivalence.d.ts +2 -1
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +12 -8
- package/dist/Equivalence.js.map +1 -1
- package/dist/Exit.d.ts +24 -9
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +8 -3
- package/dist/Exit.js.map +1 -1
- package/dist/FiberHandle.d.ts +2 -0
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +9 -4
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +2 -0
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +5 -2
- package/dist/FiberMap.js.map +1 -1
- package/dist/FileSystem.d.ts +5 -0
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +3 -0
- package/dist/FileSystem.js.map +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js.map +1 -1
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +18 -17
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonSchema.d.ts +9 -3
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +19 -3
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +2 -2
- package/dist/Layer.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +19 -1
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +62 -6
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Metric.d.ts +132 -0
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +197 -25
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/Number.js +2 -2
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js.map +1 -1
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +8 -1
- package/dist/Path.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +12 -7
- package/dist/PubSub.js.map +1 -1
- package/dist/Queue.d.ts +4 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +4 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +1 -1
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +12 -7
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +9 -6
- package/dist/RcMap.js.map +1 -1
- package/dist/Record.d.ts +51 -0
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +17 -0
- package/dist/Record.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +5 -4
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +5 -4
- package/dist/References.js.map +1 -1
- package/dist/RequestResolver.d.ts +31 -1
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +39 -4
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Runtime.d.ts +3 -3
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +18 -15
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +384 -332
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +333 -19
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +5 -5
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +24 -8
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +8 -3
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +15 -5
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +4 -4
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +29 -51
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +56 -1
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +18 -0
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +1 -1
- package/dist/SchemaTransformation.js +1 -1
- package/dist/Scope.d.ts +12 -2
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +5 -0
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.d.ts +10 -7
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +9 -5
- package/dist/ScopedCache.js.map +1 -1
- package/dist/SemVer.d.ts +1196 -0
- package/dist/SemVer.d.ts.map +1 -0
- package/dist/SemVer.js +756 -0
- package/dist/SemVer.js.map +1 -0
- package/dist/SemVerRange.d.ts +559 -0
- package/dist/SemVerRange.d.ts.map +1 -0
- package/dist/SemVerRange.js +551 -0
- package/dist/SemVerRange.js.map +1 -0
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +6 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +235 -8
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +145 -60
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +4 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +8 -6
- package/dist/String.js.map +1 -1
- package/dist/TextDiff.d.ts +399 -0
- package/dist/TextDiff.d.ts.map +1 -0
- package/dist/TextDiff.js +634 -0
- package/dist/TextDiff.js.map +1 -0
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js.map +1 -1
- package/dist/ai/AiError.d.ts +68 -4
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +50 -2
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Chat.d.ts +1 -2
- package/dist/ai/Chat.d.ts.map +1 -1
- package/dist/ai/Chat.js +6 -3
- package/dist/ai/Chat.js.map +1 -1
- package/dist/ai/Decision.d.ts +46 -1
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +129 -11
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +182 -94
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/EmbeddingModel.d.ts +10 -0
- package/dist/ai/EmbeddingModel.d.ts.map +1 -1
- package/dist/ai/EmbeddingModel.js +21 -7
- package/dist/ai/EmbeddingModel.js.map +1 -1
- package/dist/ai/McpClient.d.ts +289 -0
- package/dist/ai/McpClient.d.ts.map +1 -0
- package/dist/ai/McpClient.js +819 -0
- package/dist/ai/McpClient.js.map +1 -0
- package/dist/ai/McpClientError.d.ts +254 -0
- package/dist/ai/McpClientError.d.ts.map +1 -0
- package/dist/ai/McpClientError.js +260 -0
- package/dist/ai/McpClientError.js.map +1 -0
- package/dist/ai/McpProtocol.d.ts +2 -2
- package/dist/ai/McpProtocol.d.ts.map +1 -1
- package/dist/ai/McpSchema.d.ts +368 -235
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +94 -24
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +25 -22
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +22 -20
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +23 -1
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +147 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +35 -37
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +12 -4
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts +48 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +65 -12
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +10 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +16 -2
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +3 -4
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
- package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
- package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
- package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
- package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
- package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
- package/dist/cli/CliError.d.ts +42 -2
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +44 -5
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/Command.d.ts +286 -2
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +107 -6
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +5 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +115 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +56 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +3 -3
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +107 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +56 -0
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +84 -0
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
- package/dist/cli/TerminalCapabilities.js +122 -0
- package/dist/cli/TerminalCapabilities.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/internal/command.d.ts +2 -1
- package/dist/cli/internal/command.d.ts.map +1 -1
- package/dist/cli/internal/command.js +5 -2
- package/dist/cli/internal/command.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +4 -3
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/completions/descriptor.js +9 -1
- package/dist/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/cli/internal/completions/fish.js +10 -8
- package/dist/cli/internal/completions/fish.js.map +1 -1
- package/dist/cli/internal/completions/powershell.js +18 -9
- package/dist/cli/internal/completions/powershell.js.map +1 -1
- package/dist/cli/internal/completions/zsh.js +8 -5
- package/dist/cli/internal/completions/zsh.js.map +1 -1
- package/dist/cli/internal/formatter.d.ts +2 -0
- package/dist/cli/internal/formatter.d.ts.map +1 -0
- package/dist/cli/internal/formatter.js +15 -0
- package/dist/cli/internal/formatter.js.map +1 -0
- package/dist/cli/internal/lexer.js +24 -10
- package/dist/cli/internal/lexer.js.map +1 -1
- package/dist/cli/internal/parser.js +24 -12
- package/dist/cli/internal/parser.js.map +1 -1
- package/dist/cluster/ClusterCron.d.ts +29 -1
- package/dist/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/cluster/ClusterCron.js +64 -32
- package/dist/cluster/ClusterCron.js.map +1 -1
- package/dist/cluster/ClusterMetrics.d.ts +143 -7
- package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
- package/dist/cluster/ClusterMetrics.js +151 -7
- package/dist/cluster/ClusterMetrics.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +37 -11
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Entity.d.ts +2 -0
- package/dist/cluster/Entity.d.ts.map +1 -1
- package/dist/cluster/Entity.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +21 -0
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +54 -15
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts +1 -0
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +95 -32
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +20 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js +4 -0
- package/dist/cluster/ShardingConfig.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +40 -50
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +10 -4
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +65 -8
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/devtools/DevTools.d.ts +3 -2
- package/dist/devtools/DevTools.d.ts.map +1 -1
- package/dist/devtools/DevTools.js +3 -2
- package/dist/devtools/DevTools.js.map +1 -1
- package/dist/devtools/DevToolsClient.d.ts +11 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +31 -4
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts +29 -0
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +29 -0
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Ini.d.ts.map +1 -1
- package/dist/encoding/Ini.js +3 -0
- package/dist/encoding/Ini.js.map +1 -1
- package/dist/encoding/JsonArray.d.ts +270 -0
- package/dist/encoding/JsonArray.d.ts.map +1 -0
- package/dist/encoding/JsonArray.js +691 -0
- package/dist/encoding/JsonArray.js.map +1 -0
- package/dist/encoding/Ndjson.d.ts +43 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +169 -18
- package/dist/encoding/Ndjson.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts +9 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +12 -19
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Tar.d.ts +309 -0
- package/dist/encoding/Tar.d.ts.map +1 -0
- package/dist/encoding/Tar.js +1182 -0
- package/dist/encoding/Tar.js.map +1 -0
- package/dist/encoding/Toml.js +3 -3
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Xml.d.ts +464 -0
- package/dist/encoding/Xml.d.ts.map +1 -0
- package/dist/encoding/Xml.js +1619 -0
- package/dist/encoding/Xml.js.map +1 -0
- package/dist/encoding/Yaml.d.ts +6 -2
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +97 -34
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/Zip.d.ts +413 -0
- package/dist/encoding/Zip.d.ts.map +1 -0
- package/dist/encoding/Zip.js +1255 -0
- package/dist/encoding/Zip.js.map +1 -0
- package/dist/encoding/index.d.ts +20 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +20 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts +90 -5
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +488 -228
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +180 -12
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +394 -146
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +36 -30
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +97 -38
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +74 -34
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +45 -11
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +45 -8
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +51 -14
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +46 -3
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +119 -19
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +97 -70
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +288 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -0
- package/dist/eventlog/EventRow.js +435 -0
- package/dist/eventlog/EventRow.js.map +1 -0
- package/dist/eventlog/SqlEventJournal.d.ts +18 -18
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +387 -159
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/index.d.ts +5 -0
- package/dist/eventlog/index.d.ts.map +1 -1
- package/dist/eventlog/index.js +5 -0
- package/dist/eventlog/index.js.map +1 -1
- package/dist/eventlog/internal/conflicts.d.ts +47 -0
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
- package/dist/eventlog/internal/conflicts.js +92 -0
- package/dist/eventlog/internal/conflicts.js.map +1 -0
- package/dist/graphql/GraphQLClientError.d.ts +2 -2
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +4 -18
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +12 -9
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +4 -3
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/graphql/GraphQLResolver.d.ts +2 -0
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
- package/dist/graphql/GraphQLResolver.js +74 -32
- package/dist/graphql/GraphQLResolver.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +8 -1
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +51 -4
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +10 -0
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/Headers.d.ts +227 -0
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +261 -0
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +93 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +55 -16
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +127 -3
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +44 -2
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts +53 -0
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +47 -0
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpEffect.d.ts +6 -2
- package/dist/http/HttpEffect.d.ts.map +1 -1
- package/dist/http/HttpEffect.js +21 -17
- package/dist/http/HttpEffect.js.map +1 -1
- package/dist/http/HttpIncomingMessage.d.ts +2 -1
- package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/http/HttpIncomingMessage.js +3 -23
- package/dist/http/HttpIncomingMessage.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +119 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +159 -13
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +7 -2
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.d.ts +5 -2
- package/dist/http/HttpServerError.d.ts.map +1 -1
- package/dist/http/HttpServerError.js +5 -3
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +25 -5
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +36 -10
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts +17 -8
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +37 -21
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts +0 -12
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +21 -7
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +87 -5
- package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
- package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/headers.js +4 -12
- package/dist/http/MultipartParser/internal/headers.js.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.js +6 -27
- package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
- package/dist/http/Url.d.ts.map +1 -1
- package/dist/http/Url.js +6 -1
- package/dist/http/Url.js.map +1 -1
- package/dist/http/internal/decompression.js +17 -11
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/lazyStream.d.ts +2 -0
- package/dist/http/internal/lazyStream.d.ts.map +1 -0
- package/dist/http/internal/lazyStream.js +18 -0
- package/dist/http/internal/lazyStream.js.map +1 -0
- package/dist/http/internal/requestState.d.ts +2 -0
- package/dist/http/internal/requestState.d.ts.map +1 -0
- package/dist/http/internal/requestState.js +28 -0
- package/dist/http/internal/requestState.js.map +1 -0
- package/dist/http/internal/webResponse.d.ts +2 -0
- package/dist/http/internal/webResponse.d.ts.map +1 -0
- package/dist/http/internal/webResponse.js +12 -0
- package/dist/http/internal/webResponse.js.map +1 -0
- package/dist/http-api/HttpApi.js +1 -1
- package/dist/http-api/HttpApi.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +121 -18
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +29 -4
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +83 -23
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +49 -5
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +58 -0
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +38 -12
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiScalar.d.ts +2 -1
- package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
- package/dist/http-api/HttpApiScalar.js +6 -3
- package/dist/http-api/HttpApiScalar.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +191 -9
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +137 -4
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiSwagger.d.ts +5 -0
- package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
- package/dist/http-api/HttpApiSwagger.js +14 -4
- package/dist/http-api/HttpApiSwagger.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts +13 -2
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +30 -9
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts +17 -3
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +57 -32
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/path.js +35 -10
- package/dist/http-api/internal/path.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js +1 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +19 -7
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +85 -74
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/hashMap.js +2 -2
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hydration.d.ts +2 -0
- package/dist/internal/hydration.d.ts.map +1 -0
- package/dist/internal/hydration.js +15 -0
- package/dist/internal/hydration.js.map +1 -0
- package/dist/internal/inflate.d.ts +2 -0
- package/dist/internal/inflate.d.ts.map +1 -0
- package/dist/internal/inflate.js +680 -0
- package/dist/internal/inflate.js.map +1 -0
- package/dist/internal/record.js +6 -0
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/request.js +20 -7
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schedule.js +17 -22
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/interpreter.js +51 -36
- package/dist/internal/schema/interpreter.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +34 -33
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +7 -2
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +86 -1
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toFormatter.js +5 -5
- package/dist/internal/schema/toFormatter.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/trie.js +1 -3
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/uuid.js +7 -3
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/net/NetAddress.d.ts.map +1 -1
- package/dist/net/NetAddress.js +2 -8
- package/dist/net/NetAddress.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +5 -12
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +5 -3
- package/dist/observability/OtlpMetrics.js.map +1 -1
- package/dist/observability/OtlpResource.d.ts +3 -1
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -4
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpSerialization.d.ts +5 -0
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +14 -3
- package/dist/observability/OtlpSerialization.js.map +1 -1
- package/dist/observability/internal/protobuf.d.ts +0 -9
- package/dist/observability/internal/protobuf.d.ts.map +1 -1
- package/dist/observability/internal/protobuf.js +2 -10
- package/dist/observability/internal/protobuf.js.map +1 -1
- package/dist/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/persistence/PersistedCache.js +1 -1
- package/dist/persistence/PersistedCache.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +6 -2
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +162 -84
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +28 -0
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +36 -8
- package/dist/persistence/Persistence.js.map +1 -1
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +8 -12
- package/dist/persistence/RateLimiter.js.map +1 -1
- package/dist/persistence/UserDirectories.d.ts +129 -0
- package/dist/persistence/UserDirectories.d.ts.map +1 -0
- package/dist/persistence/UserDirectories.js +178 -0
- package/dist/persistence/UserDirectories.js.map +1 -0
- package/dist/persistence/index.d.ts +5 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +5 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +2 -1
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/AsyncResult.js +1 -1
- package/dist/reactivity/AsyncResult.js.map +1 -1
- package/dist/reactivity/Atom.d.ts +69 -30
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +40 -15
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomHttpApi.d.ts +5 -5
- package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/reactivity/AtomHttpApi.js +1 -1
- package/dist/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/reactivity/AtomRegistry.d.ts +2 -2
- package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/reactivity/AtomRegistry.js +44 -9
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/reactivity/AtomRpc.d.ts +3 -3
- package/dist/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/reactivity/AtomRpc.js +1 -1
- package/dist/reactivity/AtomRpc.js.map +1 -1
- package/dist/reactivity/Hydration.d.ts.map +1 -1
- package/dist/reactivity/Hydration.js +46 -12
- package/dist/reactivity/Hydration.js.map +1 -1
- package/dist/reactivity/Reactivity.d.ts +71 -7
- package/dist/reactivity/Reactivity.d.ts.map +1 -1
- package/dist/reactivity/Reactivity.js +21 -12
- package/dist/reactivity/Reactivity.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +18 -0
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js +20 -0
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +26 -2
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +196 -60
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +15 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +21 -5
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +9 -18
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/schema/Model.d.ts +1 -1
- package/dist/schema/VariantSchema.d.ts +22 -3
- package/dist/schema/VariantSchema.d.ts.map +1 -1
- package/dist/schema/VariantSchema.js +32 -18
- package/dist/schema/VariantSchema.js.map +1 -1
- package/dist/socket/Socket.d.ts +23 -1
- package/dist/socket/Socket.d.ts.map +1 -1
- package/dist/socket/Socket.js +36 -3
- package/dist/socket/Socket.js.map +1 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +15 -3
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +143 -5
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +148 -27
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +9 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +9 -0
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +3 -1
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +24 -5
- package/dist/sql/Statement.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +4 -2
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +7 -1
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +9 -3
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +18 -4
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +13 -3
- package/src/Array.ts +128 -55
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +263 -436
- package/src/ChannelSchema.ts +1 -49
- package/src/Chunk.ts +55 -61
- package/src/Config.ts +12 -86
- package/src/ConfigProvider.ts +2 -1
- package/src/Cron.ts +6 -3
- package/src/Duration.ts +66 -16
- package/src/Effect.ts +502 -167
- package/src/Equivalence.ts +7 -4
- package/src/Exit.ts +24 -9
- package/src/FiberHandle.ts +10 -9
- package/src/FiberMap.ts +13 -66
- package/src/FileSystem.ts +10 -0
- package/src/Graph.ts +171 -1263
- package/src/HashSet.ts +0 -60
- package/src/Iterable.ts +15 -14
- package/src/JsonSchema.ts +28 -3
- package/src/Layer.ts +2 -2
- package/src/ManagedRuntime.ts +72 -6
- package/src/Metric.ts +249 -507
- package/src/MutableHashMap.ts +4 -473
- package/src/Number.ts +2 -2
- package/src/Optic.ts +17 -332
- package/src/Path.ts +9 -1
- package/src/PubSub.ts +12 -7
- package/src/Queue.ts +5 -37
- package/src/Random.ts +1 -1
- package/src/RcMap.ts +14 -8
- package/src/Record.ts +51 -0
- package/src/Ref.ts +7 -104
- package/src/References.ts +5 -4
- package/src/RequestResolver.ts +46 -87
- package/src/Resource.ts +1 -1
- package/src/Runtime.ts +19 -18
- package/src/Schedule.ts +2 -94
- package/src/Schema.ts +591 -356
- package/src/SchemaAST.ts +20 -9
- package/src/SchemaGetter.ts +22 -5
- package/src/SchemaIssue.ts +44 -53
- package/src/SchemaRepresentation.ts +64 -1
- package/src/SchemaTransformation.ts +1 -1
- package/src/Scope.ts +12 -2
- package/src/ScopedCache.ts +17 -142
- package/src/SemVer.ts +1528 -0
- package/src/SemVerRange.ts +883 -0
- package/src/Sink.ts +6 -2
- package/src/Stream.ts +334 -1011
- package/src/String.ts +8 -8
- package/src/TextDiff.ts +766 -0
- package/src/TxHashMap.ts +1 -103
- package/src/TxHashSet.ts +48 -753
- package/src/ai/AiError.ts +66 -4
- package/src/ai/Chat.ts +10 -5
- package/src/ai/Decision.ts +49 -1
- package/src/ai/DecisionModel.ts +264 -108
- package/src/ai/EmbeddingModel.ts +25 -13
- package/src/ai/McpClient.ts +1211 -0
- package/src/ai/McpClientError.ts +329 -0
- package/src/ai/McpProtocol.ts +2 -2
- package/src/ai/McpSchema.ts +153 -35
- package/src/ai/McpServer.ts +217 -220
- package/src/ai/Prompt.ts +49 -35
- package/src/ai/Response.ts +195 -65
- package/src/ai/Tool.ts +12 -4
- package/src/ai/Toolkit.ts +78 -10
- package/src/ai/index.ts +12 -0
- package/src/ai/internal/mcpCore.ts +13 -14
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
- package/src/ai/internal/mcpProtocol.ts +22 -2
- package/src/ai/internal/mcpRuntime.ts +3 -4
- package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
- package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
- package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
- package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
- package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
- package/src/cli/CliError.ts +49 -4
- package/src/cli/Command.ts +316 -9
- package/src/cli/Completions.ts +5 -0
- package/src/cli/Flag.ts +117 -0
- package/src/cli/GlobalFlag.ts +3 -3
- package/src/cli/Param.ts +122 -0
- package/src/cli/TerminalCapabilities.ts +156 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +8 -3
- package/src/cli/internal/completions/bash.ts +4 -3
- package/src/cli/internal/completions/descriptor.ts +11 -1
- package/src/cli/internal/completions/fish.ts +10 -8
- package/src/cli/internal/completions/powershell.ts +23 -14
- package/src/cli/internal/completions/zsh.ts +8 -5
- package/src/cli/internal/formatter.ts +18 -0
- package/src/cli/internal/lexer.ts +12 -5
- package/src/cli/internal/parser.ts +31 -11
- package/src/cluster/ClusterCron.ts +94 -35
- package/src/cluster/ClusterMetrics.ts +149 -7
- package/src/cluster/ClusterWorkflowEngine.ts +84 -41
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +7 -0
- package/src/cluster/Runners.ts +76 -25
- package/src/cluster/Sharding.ts +118 -38
- package/src/cluster/ShardingConfig.ts +15 -0
- package/src/cluster/SqlMessageStorage.ts +58 -55
- package/src/cluster/SqlRunnerStorage.ts +10 -4
- package/src/cluster/internal/entityManager.ts +80 -10
- package/src/devtools/DevTools.ts +3 -2
- package/src/devtools/DevToolsClient.ts +27 -10
- package/src/encoding/Base64Url.ts +31 -0
- package/src/encoding/Ini.ts +3 -0
- package/src/encoding/JsonArray.ts +849 -0
- package/src/encoding/Ndjson.ts +211 -20
- package/src/encoding/SchemaBinary.ts +14 -48
- package/src/encoding/Tar.ts +1417 -0
- package/src/encoding/Toml.ts +3 -3
- package/src/encoding/Xml.ts +2037 -0
- package/src/encoding/Yaml.ts +108 -36
- package/src/encoding/Zip.ts +1558 -0
- package/src/encoding/index.ts +24 -0
- package/src/eventlog/EventJournal.ts +611 -227
- package/src/eventlog/EventLog.ts +496 -196
- package/src/eventlog/EventLogEncryption.ts +128 -43
- package/src/eventlog/EventLogMessage.ts +62 -11
- package/src/eventlog/EventLogRemote.ts +77 -21
- package/src/eventlog/EventLogServer.ts +162 -20
- package/src/eventlog/EventLogServerEncrypted.ts +121 -80
- package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
- package/src/eventlog/EventRow.ts +706 -0
- package/src/eventlog/SqlEventJournal.ts +453 -173
- package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
- package/src/eventlog/index.ts +6 -0
- package/src/eventlog/internal/conflicts.ts +123 -0
- package/src/graphql/GraphQLClientError.ts +5 -12
- package/src/graphql/GraphQLProtocol.ts +12 -9
- package/src/graphql/GraphQLResolver.ts +90 -239
- package/src/http/FetchHttpClient.ts +56 -6
- package/src/http/FindMyWay/internal/router.ts +11 -0
- package/src/http/Headers.ts +337 -154
- package/src/http/HttpClient.ts +126 -135
- package/src/http/HttpClientRequest.ts +142 -4
- package/src/http/HttpClientResponse.ts +71 -0
- package/src/http/HttpEffect.ts +25 -33
- package/src/http/HttpIncomingMessage.ts +3 -23
- package/src/http/HttpMiddleware.ts +180 -23
- package/src/http/HttpRouter.ts +8 -2
- package/src/http/HttpServerError.ts +6 -3
- package/src/http/HttpServerRequest.ts +71 -12
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +25 -9
- package/src/http/MultipartParser/internal/contentType.ts +107 -6
- package/src/http/MultipartParser/internal/headers.ts +4 -16
- package/src/http/MultipartParser/internal/multipart.ts +10 -32
- package/src/http/Url.ts +6 -1
- package/src/http/internal/decompression.ts +26 -17
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/webResponse.ts +20 -0
- package/src/http-api/HttpApi.ts +1 -1
- package/src/http-api/HttpApiBuilder.ts +151 -23
- package/src/http-api/HttpApiClient.ts +158 -30
- package/src/http-api/HttpApiEndpoint.ts +144 -33
- package/src/http-api/HttpApiError.ts +55 -0
- package/src/http-api/HttpApiScalar.ts +4 -3
- package/src/http-api/HttpApiSchema.ts +275 -13
- package/src/http-api/HttpApiSwagger.ts +11 -4
- package/src/http-api/HttpApiTest.ts +33 -9
- package/src/http-api/OpenApi.ts +84 -42
- package/src/http-api/internal/path.ts +40 -12
- package/src/index.ts +24 -0
- package/src/internal/core.ts +1 -1
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +120 -84
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/hydration.ts +15 -0
- package/src/internal/inflate.ts +710 -0
- package/src/internal/record.ts +6 -0
- package/src/internal/request.ts +21 -6
- package/src/internal/schedule.ts +20 -39
- package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
- package/src/internal/schema/interpreter.ts +58 -45
- package/src/internal/schema/standardSchema.ts +32 -30
- package/src/internal/schema/toCodeDocument.ts +8 -3
- package/src/internal/schema/toCodec.ts +116 -1
- package/src/internal/schema/toFormatter.ts +6 -6
- package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
- package/src/internal/trie.ts +1 -3
- package/src/internal/uuid.ts +15 -10
- package/src/internal/version.ts +1 -1
- package/src/net/NetAddress.ts +2 -9
- package/src/observability/OtlpExporter.ts +5 -12
- package/src/observability/OtlpMetrics.ts +5 -3
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/internal/protobuf.ts +2 -10
- package/src/persistence/PersistedCache.ts +3 -1
- package/src/persistence/PersistedQueue.ts +223 -153
- package/src/persistence/Persistence.ts +64 -30
- package/src/persistence/RateLimiter.ts +18 -21
- package/src/persistence/UserDirectories.ts +273 -0
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +2 -1
- package/src/reactivity/AsyncResult.ts +4 -38
- package/src/reactivity/Atom.ts +134 -166
- package/src/reactivity/AtomHttpApi.ts +10 -16
- package/src/reactivity/AtomRegistry.ts +50 -29
- package/src/reactivity/AtomRpc.ts +6 -22
- package/src/reactivity/Hydration.ts +53 -12
- package/src/reactivity/Reactivity.ts +97 -39
- package/src/rpc/Rpc.ts +21 -0
- package/src/rpc/RpcClient.ts +279 -103
- package/src/rpc/RpcSerialization.ts +21 -5
- package/src/rpc/RpcServer.ts +11 -20
- package/src/schema/VariantSchema.ts +86 -22
- package/src/socket/Socket.ts +45 -20
- package/src/sql/Migrator.ts +19 -9
- package/src/sql/SqlClient.ts +266 -29
- package/src/sql/SqlResolver.ts +9 -0
- package/src/sql/Statement.ts +35 -8
- package/src/testing/TestClock.ts +4 -1
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/WorkflowEngine.ts +34 -10
- package/dist/http/internal/preResponseHandler.d.ts +0 -2
- package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
- package/dist/http/internal/preResponseHandler.js +0 -14
- package/dist/http/internal/preResponseHandler.js.map +0 -1
- package/src/http/internal/preResponseHandler.ts +0 -19
package/src/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
|
|
@@ -310,6 +396,7 @@ export const makeSqliteAcquirers = <C extends Connection.Connection>(options: {
|
|
|
310
396
|
readonly borrower: Connection.Borrower
|
|
311
397
|
readonly transactionAcquirer: Effect.Effect<C, SqlError, Scope.Scope>
|
|
312
398
|
readonly onCommitFailure: (conn: Connection.Connection) => Effect.Effect<void, SqlError>
|
|
399
|
+
readonly isTransaction: ((conn: Connection.Connection) => boolean) | undefined
|
|
313
400
|
} => {
|
|
314
401
|
const { isTransaction, semaphore } = options
|
|
315
402
|
let poisoned: SqlError | undefined
|
|
@@ -355,7 +442,8 @@ export const makeSqliteAcquirers = <C extends Connection.Connection>(options: {
|
|
|
355
442
|
acquirer: lease,
|
|
356
443
|
borrower: (f) => semaphore.withPermit(Effect.flatMap(available, f)),
|
|
357
444
|
transactionAcquirer: lease,
|
|
358
|
-
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))
|
|
359
447
|
}
|
|
360
448
|
}
|
|
361
449
|
|
|
@@ -381,6 +469,56 @@ const failuresToDefects = <E>(cause: Cause.Cause<E>): Cause.Cause<never> =>
|
|
|
381
469
|
: reason
|
|
382
470
|
))
|
|
383
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
|
+
|
|
384
522
|
/**
|
|
385
523
|
* Builds a transaction wrapper that begins top-level transactions, uses
|
|
386
524
|
* savepoints for nested transactions, commits on success, and rolls back on
|
|
@@ -394,8 +532,22 @@ const failuresToDefects = <E>(cause: Cause.Cause<E>): Cause.Cause<never> =>
|
|
|
394
532
|
export const makeWithTransaction = <I, S>(options: {
|
|
395
533
|
readonly transactionService: Context.Key<I, readonly [conn: S, counter: number]>
|
|
396
534
|
readonly spanAttributes: ReadonlyArray<readonly [string, unknown]>
|
|
397
|
-
|
|
398
|
-
|
|
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>
|
|
399
551
|
readonly savepoint: (conn: NoInfer<S>, id: number) => Effect.Effect<void, SqlError>
|
|
400
552
|
/**
|
|
401
553
|
* Releases a nested savepoint after success or a successful rollback.
|
|
@@ -412,6 +564,12 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
412
564
|
const transactionSemaphore = Context.Service<Semaphore.Semaphore>(
|
|
413
565
|
`effect/sql/SqlClient/TransactionSemaphore/${transactionSemaphoreIdCounter++}`
|
|
414
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
|
+
}
|
|
415
573
|
return <R, E, A>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E | SqlError, R> =>
|
|
416
574
|
Effect.uninterruptibleMask((restore) =>
|
|
417
575
|
Effect.useSpan(
|
|
@@ -423,24 +581,38 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
423
581
|
span.attribute(key, value)
|
|
424
582
|
}
|
|
425
583
|
const services = fiber.context
|
|
584
|
+
const reactivity = Context.getOrUndefined(services, Reactivity)
|
|
426
585
|
const clock = fiber.getRef(Clock)
|
|
427
586
|
const connOption = Context.getOption(services, options.transactionService)
|
|
428
|
-
const conn = connOption._tag === "Some"
|
|
587
|
+
const conn: Effect.Effect<readonly [Scope.Closeable | undefined, S], SqlError> = connOption._tag === "Some"
|
|
429
588
|
? Effect.succeed([undefined, connOption.value[0]] as const)
|
|
430
|
-
:
|
|
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
|
+
))
|
|
431
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
|
|
432
601
|
const transaction = Effect.flatMap(
|
|
433
602
|
conn,
|
|
434
603
|
(
|
|
435
604
|
[scope, conn]
|
|
436
605
|
) =>
|
|
437
|
-
(id === 0 ? options.begin(conn) : options.savepoint(conn, id)).pipe(
|
|
438
|
-
Effect.flatMap(() =>
|
|
439
|
-
|
|
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(
|
|
440
611
|
Effect.provideContext(
|
|
441
612
|
restore(effect),
|
|
442
613
|
services.pipe(
|
|
443
|
-
Context.add(options.transactionService,
|
|
614
|
+
Context.add(options.transactionService, level),
|
|
615
|
+
reactivity ? Context.add(Reactivity, deferInvalidations(reactivity)) : identity,
|
|
444
616
|
Context.add(transactionSemaphore, Semaphore.makeUnsafe(1)),
|
|
445
617
|
Context.add(Tracer.ParentSpan, span)
|
|
446
618
|
)
|
|
@@ -474,17 +646,34 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
474
646
|
if (id > 0 && options.releaseSavepoint) {
|
|
475
647
|
effect = Effect.andThen(effect, Effect.orDie(options.releaseSavepoint(conn, id)))
|
|
476
648
|
}
|
|
477
|
-
return Effect.flatMap(effect, () =>
|
|
649
|
+
return Effect.flatMap(effect, () => {
|
|
650
|
+
committed = Exit.isSuccess(exit)
|
|
651
|
+
return exit
|
|
652
|
+
})
|
|
478
653
|
},
|
|
479
654
|
true
|
|
480
655
|
)
|
|
481
|
-
),
|
|
482
|
-
scope
|
|
656
|
+
}),
|
|
657
|
+
scope
|
|
658
|
+
? (eff) => Effect.onExitPrimitive(eff, (exit) => Scope.close(scope, exit), true)
|
|
659
|
+
: identity
|
|
483
660
|
)
|
|
484
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)
|
|
485
674
|
return id === 0
|
|
486
|
-
?
|
|
487
|
-
: Context.getUnsafe(services, transactionSemaphore).withPermit(
|
|
675
|
+
? settled
|
|
676
|
+
: Context.getUnsafe(services, transactionSemaphore).withPermit(settled)
|
|
488
677
|
})
|
|
489
678
|
)
|
|
490
679
|
)
|
|
@@ -544,3 +733,51 @@ export const TransactionConnection = (
|
|
|
544
733
|
export const SafeIntegers = Context.Reference<boolean>("effect/sql/SqlClient/SafeIntegers", {
|
|
545
734
|
defaultValue: () => false
|
|
546
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,
|
package/src/testing/TestClock.ts
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import * as Arr from "../Array.ts"
|
|
15
15
|
import * as Clock from "../Clock.ts"
|
|
16
|
+
import * as Console from "../Console.ts"
|
|
16
17
|
import * as Context from "../Context.ts"
|
|
17
18
|
import * as Data from "../Data.ts"
|
|
18
19
|
import * as Duration from "../Duration.ts"
|
|
@@ -286,6 +287,7 @@ const makeWithScheduler = Effect.fnUntraced(function*(
|
|
|
286
287
|
}> = []
|
|
287
288
|
const currentClock = yield* Clock.clockWith(Effect.succeed)
|
|
288
289
|
const liveClock = liveClocks.get(currentClock) ?? currentClock
|
|
290
|
+
const liveConsole = yield* Console.Console
|
|
289
291
|
const warningSemaphore = yield* Semaphore.make(1)
|
|
290
292
|
const parentScheduler = yield* Scheduler.Scheduler
|
|
291
293
|
|
|
@@ -322,6 +324,7 @@ const makeWithScheduler = Effect.fnUntraced(function*(
|
|
|
322
324
|
Effect.suspend(() => {
|
|
323
325
|
if (warningState._tag === "Start") {
|
|
324
326
|
return Effect.logWarning(warningMessage).pipe(
|
|
327
|
+
Effect.provideService(Console.Console, liveConsole),
|
|
325
328
|
Effect.delay(config.warningDelay),
|
|
326
329
|
withLive,
|
|
327
330
|
Effect.forkChild,
|
|
@@ -447,7 +450,7 @@ const makeWithScheduler = Effect.fnUntraced(function*(
|
|
|
447
450
|
}).pipe(
|
|
448
451
|
Effect.timeoutOrElse({
|
|
449
452
|
duration: config.warningDelay,
|
|
450
|
-
orElse: () => Effect.logWarning(busyWarningMessage)
|
|
453
|
+
orElse: () => Effect.provideService(Effect.logWarning(busyWarningMessage), Console.Console, liveConsole)
|
|
451
454
|
}),
|
|
452
455
|
withLive,
|
|
453
456
|
Effect.andThen(Effect.yieldNow)
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
* @since 4.0.0
|
|
16
16
|
*/
|
|
17
17
|
import * as assert from "node:assert"
|
|
18
|
-
import { isDeepStrictEqual } from "node:util"
|
|
19
18
|
import * as Arbitrary from "../Arbitrary.ts"
|
|
20
19
|
import * as Cause from "../Cause.ts"
|
|
21
20
|
import type * as Context from "../Context.ts"
|
|
@@ -242,7 +241,7 @@ export class Asserts<S extends Schema.Constraint> {
|
|
|
242
241
|
}
|
|
243
242
|
}
|
|
244
243
|
/**
|
|
245
|
-
* Runs a property-based test that encodes arbitrary values and then decodes them, asserting the decoded value
|
|
244
|
+
* Runs a property-based test that encodes arbitrary values and then decodes them, asserting the decoded value is equivalent to the original.
|
|
246
245
|
*
|
|
247
246
|
* **When to use**
|
|
248
247
|
*
|
|
@@ -254,6 +253,9 @@ export class Asserts<S extends Schema.Constraint> {
|
|
|
254
253
|
* The native Schema arbitrary generates values matching the schema's `Type`. The assertion fails with the minimized
|
|
255
254
|
* shrunk input and replay token if any generated value does not round-trip.
|
|
256
255
|
*
|
|
256
|
+
* Uses {@link Schema.toEquivalence}, including custom equivalence annotations,
|
|
257
|
+
* to compare each decoded value with the original.
|
|
258
|
+
*
|
|
257
259
|
* **Example** (Verifying round trips)
|
|
258
260
|
*
|
|
259
261
|
* ```ts import.meta.vitest
|
|
@@ -284,6 +286,9 @@ export class Asserts<S extends Schema.Constraint> {
|
|
|
284
286
|
*
|
|
285
287
|
* **Details**
|
|
286
288
|
*
|
|
289
|
+
* Uses {@link Schema.toEquivalence}, including custom equivalence annotations,
|
|
290
|
+
* to compare each decoded value with the original.
|
|
291
|
+
*
|
|
287
292
|
* Assertion mismatches are defects containing the shrunk input and replay token.
|
|
288
293
|
* Schema defects and interruption propagate without becoming assertion failures.
|
|
289
294
|
*
|
|
@@ -310,6 +315,7 @@ export class Asserts<S extends Schema.Constraint> {
|
|
|
310
315
|
return Effect.suspend(() => {
|
|
311
316
|
const decodeUnknownEffect = SchemaParser.decodeUnknownEffect(this.schema)
|
|
312
317
|
const encodeEffect = SchemaParser.encodeEffect(this.schema)
|
|
318
|
+
const equivalence = Schema.toEquivalence(this.schema as unknown as Schema.Schema<S["Type"]>)
|
|
313
319
|
const arbitrary = Arbitrary.schema(this.schema)
|
|
314
320
|
return Arbitrary.checkEffect(
|
|
315
321
|
arbitrary,
|
|
@@ -317,7 +323,7 @@ export class Asserts<S extends Schema.Constraint> {
|
|
|
317
323
|
Effect.suspend(() => encodeEffect(value)).pipe(
|
|
318
324
|
Effect.flatMapEager((encoded) => decodeUnknownEffect(encoded)),
|
|
319
325
|
schemaResult,
|
|
320
|
-
Effect.mapEager((result) =>
|
|
326
|
+
Effect.mapEager((result) => Result.isSuccess(result) && equivalence(result.success, value))
|
|
321
327
|
),
|
|
322
328
|
options
|
|
323
329
|
).pipe(Effect.mapEager(assertPropertyPassed))
|