effect 4.0.5 → 4.0.7
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/Arbitrary.d.ts +10 -2
- package/dist/Arbitrary.d.ts.map +1 -1
- package/dist/Arbitrary.js +2 -1
- package/dist/Arbitrary.js.map +1 -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 +144 -34
- 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/Data.d.ts +54 -235
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.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 +488 -164
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +204 -38
- package/dist/Effect.js.map +1 -1
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +8 -1
- package/dist/Equal.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 +27 -12
- 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/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +27 -13
- package/dist/Formatter.js.map +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js.map +1 -1
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +4 -1
- package/dist/Hash.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/JsonPatch.js +4 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonSchema.d.ts +9 -3
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +32 -43
- 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 +135 -3
- 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/MutableList.d.ts +5 -2
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +7 -5
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +7 -0
- package/dist/MutableRef.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/PartitionedSemaphore.d.ts +2 -1
- package/dist/PartitionedSemaphore.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +22 -12
- package/dist/PartitionedSemaphore.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/Pool.d.ts.map +1 -1
- package/dist/Pool.js +77 -27
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +17 -13
- 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 +8 -0
- 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 +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +408 -340
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +370 -47
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +9 -7
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +38 -25
- 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/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +48 -22
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +75 -11
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +41 -13
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +5 -2
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +10 -3
- package/dist/SchemaTransformation.js.map +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/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +54 -35
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +13 -4
- 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 +167 -70
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +7 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +11 -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/Tracer.d.ts +11 -1
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +6 -1
- package/dist/Tracer.js.map +1 -1
- 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/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +9 -0
- 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 +258 -125
- 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 +46 -37
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +74 -20
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +61 -1
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +160 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +39 -37
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +36 -4
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -2
- 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 +73 -13
- 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/Argument.d.ts +15 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +5 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliError.d.ts +120 -2
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +106 -5
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +155 -6
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +62 -6
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +310 -18
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +164 -33
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +63 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js +49 -9
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +130 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +61 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +14 -6
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +116 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +77 -2
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +85 -0
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
- package/dist/cli/TerminalCapabilities.js +124 -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 +77 -30
- 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 +82 -21
- 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 +44 -45
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +6 -7
- 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 +155 -52
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +30 -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/Snowflake.d.ts.map +1 -1
- package/dist/cluster/Snowflake.js +3 -7
- package/dist/cluster/Snowflake.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 +97 -43
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +119 -28
- 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 +33 -4
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64.js +36 -0
- package/dist/encoding/Base64.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.d.ts.map +1 -1
- package/dist/encoding/Sse.js +3 -3
- 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.d.ts.map +1 -1
- package/dist/encoding/Toml.js +24 -19
- 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 +417 -169
- 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 +46 -0
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
- package/dist/eventlog/internal/conflicts.js +89 -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/Cookies.d.ts.map +1 -1
- package/dist/http/Cookies.js +10 -9
- package/dist/http/Cookies.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 +516 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +286 -23
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts +8 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +37 -1
- package/dist/http/HttpClientError.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 +45 -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 +119 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +173 -29
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +9 -3
- 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 +7 -5
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +30 -5
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +109 -20
- 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 +65 -24
- 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 +89 -7
- 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/UrlParams.d.ts +3 -1
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +4 -2
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/internal/compression.js +4 -5
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/decompression.js +20 -11
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/httpBody.js +8 -1
- package/dist/http/internal/httpBody.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/urlParams.js +25 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- 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.d.ts +3 -6
- package/dist/http-api/HttpApi.d.ts.map +1 -1
- package/dist/http-api/HttpApi.js +4 -7
- 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 +142 -23
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +99 -4
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +218 -60
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +72 -29
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +140 -14
- 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 +242 -13
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +149 -5
- 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 +33 -11
- 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 +81 -47
- 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/http-api/internal/toCodecHttpProperties.d.ts +2 -0
- package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
- package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
- package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
- 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/arbitrary/runner.d.ts.map +1 -1
- package/dist/internal/arbitrary/runner.js +120 -44
- package/dist/internal/arbitrary/runner.js.map +1 -1
- package/dist/internal/core.js +3 -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 +106 -87
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js +14 -0
- package/dist/internal/equal.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/jsonSchema.d.ts +2 -0
- package/dist/internal/jsonSchema.d.ts.map +1 -0
- package/dist/internal/jsonSchema.js +28 -0
- package/dist/internal/jsonSchema.js.map +1 -0
- package/dist/internal/matcher.js +1 -1
- package/dist/internal/matcher.js.map +1 -1
- 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/compilerRegistry.js +4 -1
- package/dist/internal/schema/compilerRegistry.js.map +1 -1
- package/dist/internal/schema/content.d.ts +2 -0
- package/dist/internal/schema/content.d.ts.map +1 -0
- package/dist/internal/schema/content.js +13 -0
- package/dist/internal/schema/content.js.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +253 -255
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +2 -1
- package/dist/internal/schema/fromRepresentation.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 +42 -35
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +10 -5
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +99 -17
- 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 +257 -170
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +107 -129
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/sql.d.ts +2 -0
- package/dist/internal/sql.d.ts.map +1 -0
- package/dist/internal/sql.js +13 -0
- package/dist/internal/sql.js.map +1 -0
- 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/OtlpProxy.d.ts +154 -0
- package/dist/observability/OtlpProxy.d.ts.map +1 -0
- package/dist/observability/OtlpProxy.js +235 -0
- package/dist/observability/OtlpProxy.js.map +1 -0
- 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.map +1 -1
- package/dist/observability/OtlpTracer.js +4 -0
- package/dist/observability/OtlpTracer.js.map +1 -1
- package/dist/observability/index.d.ts +5 -0
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.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/CircuitBreaker.d.ts +897 -0
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
- package/dist/persistence/CircuitBreaker.js +1165 -0
- package/dist/persistence/CircuitBreaker.js.map +1 -0
- 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/Redis.d.ts +78 -2
- package/dist/persistence/Redis.d.ts.map +1 -1
- package/dist/persistence/Redis.js +62 -7
- package/dist/persistence/Redis.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 +10 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +10 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +32 -5
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/process/ChildProcessSpawner.d.ts +30 -0
- package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/process/ChildProcessSpawner.js +5 -2
- package/dist/process/ChildProcessSpawner.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +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 +198 -61
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +29 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +41 -13
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +20 -19
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/rpc/RpcTest.d.ts +1 -0
- package/dist/rpc/RpcTest.d.ts.map +1 -1
- package/dist/rpc/RpcTest.js +1 -0
- package/dist/rpc/RpcTest.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 +2 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +21 -6
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +148 -5
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +155 -27
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +13 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +27 -4
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +10 -1
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +45 -7
- 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/DurableDeferred.d.ts.map +1 -1
- package/dist/workflow/DurableDeferred.js +21 -2
- package/dist/workflow/DurableDeferred.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/Arbitrary.ts +10 -2
- package/src/Array.ts +128 -55
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +308 -452
- 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/Data.ts +60 -265
- package/src/Duration.ts +66 -16
- package/src/Effect.ts +503 -168
- package/src/Equal.ts +8 -1
- package/src/Equivalence.ts +7 -4
- package/src/Exit.ts +27 -12
- package/src/FiberHandle.ts +10 -9
- package/src/FiberMap.ts +13 -66
- package/src/FileSystem.ts +10 -0
- package/src/Formatter.ts +28 -13
- package/src/Graph.ts +171 -1263
- package/src/Hash.ts +4 -1
- package/src/HashSet.ts +0 -60
- package/src/Iterable.ts +15 -14
- package/src/JsonPatch.ts +4 -0
- package/src/JsonSchema.ts +40 -43
- package/src/Layer.ts +2 -2
- package/src/ManagedRuntime.ts +72 -6
- package/src/Metric.ts +252 -510
- package/src/MutableHashMap.ts +4 -473
- package/src/MutableList.ts +7 -5
- package/src/MutableRef.ts +8 -1
- package/src/Number.ts +2 -2
- package/src/Optic.ts +17 -332
- package/src/PartitionedSemaphore.ts +24 -13
- package/src/Path.ts +9 -1
- package/src/Pool.ts +109 -37
- package/src/PubSub.ts +17 -13
- 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 +15 -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 +3 -95
- package/src/Schema.ts +639 -381
- package/src/SchemaAST.ts +40 -29
- package/src/SchemaGetter.ts +22 -5
- package/src/SchemaIssue.ts +44 -53
- package/src/SchemaParser.ts +51 -18
- package/src/SchemaRepresentation.ts +95 -35
- package/src/SchemaTransformation.ts +10 -3
- 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/Semaphore.ts +67 -40
- package/src/Sink.ts +21 -4
- package/src/Stream.ts +367 -1027
- package/src/String.ts +11 -8
- package/src/TextDiff.ts +766 -0
- package/src/Tracer.ts +15 -1
- 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/LanguageModel.ts +9 -0
- 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 +231 -233
- package/src/ai/Prompt.ts +114 -35
- package/src/ai/Response.ts +220 -65
- package/src/ai/Tool.ts +50 -6
- package/src/ai/Toolkit.ts +82 -11
- 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/Argument.ts +15 -0
- package/src/cli/CliError.ts +136 -4
- package/src/cli/CliOutput.ts +183 -6
- package/src/cli/Command.ts +367 -48
- package/src/cli/Completions.ts +56 -0
- package/src/cli/Flag.ts +132 -0
- package/src/cli/GlobalFlag.ts +5 -6
- package/src/cli/Param.ts +151 -6
- package/src/cli/TerminalCapabilities.ts +159 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +8 -3
- package/src/cli/internal/completions/bash.ts +83 -32
- 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 +130 -57
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +26 -14
- package/src/cluster/Runners.ts +76 -25
- package/src/cluster/Sharding.ts +200 -58
- package/src/cluster/ShardingConfig.ts +20 -0
- package/src/cluster/Snowflake.ts +3 -7
- package/src/cluster/SqlMessageStorage.ts +58 -55
- package/src/cluster/SqlRunnerStorage.ts +120 -51
- package/src/cluster/internal/entityManager.ts +155 -32
- package/src/devtools/DevTools.ts +3 -2
- package/src/devtools/DevToolsClient.ts +29 -10
- package/src/encoding/Base64.ts +38 -0
- 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 +4 -3
- package/src/encoding/Tar.ts +1417 -0
- package/src/encoding/Toml.ts +36 -19
- 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 +496 -193
- 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 +119 -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/Cookies.ts +10 -11
- 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 +673 -142
- package/src/http/HttpClientError.ts +35 -1
- package/src/http/HttpClientRequest.ts +151 -5
- 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 +194 -40
- package/src/http/HttpRouter.ts +10 -3
- package/src/http/HttpServerError.ts +8 -5
- package/src/http/HttpServerRequest.ts +172 -27
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +71 -26
- package/src/http/MultipartParser/internal/contentType.ts +109 -8
- 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/UrlParams.ts +6 -1
- package/src/http/internal/compression.ts +4 -5
- package/src/http/internal/decompression.ts +32 -17
- package/src/http/internal/httpBody.ts +10 -2
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/urlParams.ts +29 -0
- package/src/http/internal/webResponse.ts +20 -0
- package/src/http-api/HttpApi.ts +4 -7
- package/src/http-api/HttpApiBuilder.ts +190 -32
- package/src/http-api/HttpApiClient.ts +364 -90
- package/src/http-api/HttpApiEndpoint.ts +248 -46
- package/src/http-api/HttpApiError.ts +55 -0
- package/src/http-api/HttpApiScalar.ts +4 -3
- package/src/http-api/HttpApiSchema.ts +373 -18
- package/src/http-api/HttpApiSwagger.ts +11 -4
- package/src/http-api/HttpApiTest.ts +36 -11
- package/src/http-api/OpenApi.ts +103 -58
- package/src/http-api/internal/path.ts +40 -12
- package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
- package/src/index.ts +24 -0
- package/src/internal/arbitrary/runner.ts +133 -36
- package/src/internal/core.ts +3 -1
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +144 -100
- package/src/internal/equal.ts +17 -0
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/hydration.ts +15 -0
- package/src/internal/inflate.ts +710 -0
- package/src/internal/jsonSchema.ts +27 -0
- package/src/internal/matcher.ts +1 -1
- 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/compilerRegistry.ts +6 -1
- package/src/internal/schema/content.ts +18 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +458 -351
- package/src/internal/schema/fromRepresentation.ts +2 -1
- package/src/internal/schema/interpreter.ts +58 -45
- package/src/internal/schema/standardSchema.ts +34 -32
- package/src/internal/schema/toCodeDocument.ts +12 -7
- package/src/internal/schema/toCodec.ts +134 -15
- package/src/internal/schema/toFormatter.ts +6 -6
- package/src/internal/schema/toJsonSchemaDocument.ts +246 -194
- package/src/internal/schema/toRepresentation.ts +122 -140
- package/src/internal/sql.ts +14 -0
- 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/OtlpProxy.ts +314 -0
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/OtlpTracer.ts +4 -0
- package/src/observability/index.ts +6 -0
- package/src/observability/internal/protobuf.ts +2 -10
- package/src/persistence/CircuitBreaker.ts +1678 -0
- 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/Redis.ts +129 -8
- package/src/persistence/UserDirectories.ts +273 -0
- package/src/persistence/index.ts +12 -0
- package/src/process/ChildProcess.ts +32 -5
- package/src/process/ChildProcessSpawner.ts +41 -2
- package/src/reactivity/AsyncResult.ts +5 -39
- 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 +283 -104
- package/src/rpc/RpcSerialization.ts +53 -14
- package/src/rpc/RpcServer.ts +27 -21
- package/src/rpc/RpcTest.ts +3 -0
- package/src/schema/VariantSchema.ts +86 -22
- package/src/socket/Socket.ts +45 -20
- package/src/sql/Migrator.ts +26 -11
- package/src/sql/SqlClient.ts +273 -29
- package/src/sql/SqlResolver.ts +32 -9
- package/src/sql/Statement.ts +65 -10
- package/src/testing/TestClock.ts +4 -1
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/DurableDeferred.ts +23 -6
- 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
|
@@ -15,11 +15,13 @@ import * as Context from "../Context.ts"
|
|
|
15
15
|
import * as Effect from "../Effect.ts"
|
|
16
16
|
import * as Exit from "../Exit.ts"
|
|
17
17
|
import { identity } from "../Function.ts"
|
|
18
|
+
import { CurrentTransactionService } from "../internal/sql.ts"
|
|
18
19
|
import * as Option from "../Option.ts"
|
|
19
20
|
import { hasProperty } from "../Predicate.ts"
|
|
20
21
|
import type * as Queue from "../Queue.ts"
|
|
21
|
-
import { Reactivity } from "../reactivity/Reactivity.ts"
|
|
22
|
+
import { type KeysInput, Reactivity } from "../reactivity/Reactivity.ts"
|
|
22
23
|
import type { ReadonlyRecord } from "../Record.ts"
|
|
24
|
+
import { UnhandledLogLevel } from "../References.ts"
|
|
23
25
|
import * as Scope from "../Scope.ts"
|
|
24
26
|
import * as Semaphore from "../Semaphore.ts"
|
|
25
27
|
import * as Stream from "../Stream.ts"
|
|
@@ -55,8 +57,38 @@ export interface SqlClient extends Constructor {
|
|
|
55
57
|
|
|
56
58
|
readonly reserve: Effect.Effect<Connection.Connection, SqlError, Scope.Scope>
|
|
57
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Identifies the driver that created this client.
|
|
62
|
+
*
|
|
63
|
+
* **Details**
|
|
64
|
+
*
|
|
65
|
+
* Effect drivers use their package name without the `@effect/sql-` prefix,
|
|
66
|
+
* such as `"pg"`, `"pglite"` or `"sqlite-node"`. Unlike the compiler
|
|
67
|
+
* dialect, it distinguishes drivers that share a SQL dialect but manage
|
|
68
|
+
* connections differently.
|
|
69
|
+
*/
|
|
70
|
+
readonly driver: string
|
|
71
|
+
|
|
58
72
|
/**
|
|
59
73
|
* With the given effect, ensure all sql queries are run in a transaction.
|
|
74
|
+
*
|
|
75
|
+
* **Details**
|
|
76
|
+
*
|
|
77
|
+
* Inside the transaction, `Reactivity.invalidate` and `Reactivity.mutation`
|
|
78
|
+
* invalidate once the outermost transaction commits, and not at all if it
|
|
79
|
+
* rolls back.
|
|
80
|
+
*
|
|
81
|
+
* To start a top-level transaction with a statement other than the
|
|
82
|
+
* client's, such as one that sets its isolation level, provide
|
|
83
|
+
* `BeginTransaction`.
|
|
84
|
+
*
|
|
85
|
+
* **Gotchas**
|
|
86
|
+
*
|
|
87
|
+
* Deferred invalidations run individually after the commit and don't join an
|
|
88
|
+
* enclosing `Reactivity.withBatch`. Only the `Reactivity` service read from
|
|
89
|
+
* the transaction's context defers, and a fiber that outlives the
|
|
90
|
+
* transaction can't defer through it, as with `afterCommit`. Transactions
|
|
91
|
+
* that don't go through `makeWithTransaction` 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` run callbacks
|
|
140
|
+
* 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,12 +469,68 @@ 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
|
|
387
525
|
* failure or interruption. Releases nested savepoints when `releaseSavepoint`
|
|
388
526
|
* is provided.
|
|
389
527
|
*
|
|
528
|
+
* **Details**
|
|
529
|
+
*
|
|
530
|
+
* Transactions started this way are also recognized by `SqlResolver` when the
|
|
531
|
+
* caller's context has no `SqlClient`, so their requests don't share a batch
|
|
532
|
+
* with requests outside the transaction.
|
|
533
|
+
*
|
|
390
534
|
* @stability unstable
|
|
391
535
|
* @category transactions
|
|
392
536
|
* @since 4.0.0
|
|
@@ -394,8 +538,22 @@ const failuresToDefects = <E>(cause: Cause.Cause<E>): Cause.Cause<never> =>
|
|
|
394
538
|
export const makeWithTransaction = <I, S>(options: {
|
|
395
539
|
readonly transactionService: Context.Key<I, readonly [conn: S, counter: number]>
|
|
396
540
|
readonly spanAttributes: ReadonlyArray<readonly [string, unknown]>
|
|
397
|
-
|
|
398
|
-
|
|
541
|
+
/**
|
|
542
|
+
* Acquires the connection for a top-level transaction. Runs under the
|
|
543
|
+
* transaction's uninterruptible mask; wrap the wait for a connection in
|
|
544
|
+
* `restore` so a queued transaction can be interrupted, and register
|
|
545
|
+
* releases on the provided scope. The scope closes with the transaction, or
|
|
546
|
+
* immediately when acquisition fails or is interrupted.
|
|
547
|
+
*/
|
|
548
|
+
readonly acquireConnection: (
|
|
549
|
+
restore: <XA, XE, XR>(effect: Effect.Effect<XA, XE, XR>) => Effect.Effect<XA, XE, XR>
|
|
550
|
+
) => Effect.Effect<S, SqlError, Scope.Scope>
|
|
551
|
+
/**
|
|
552
|
+
* Starts a top-level transaction. `statement` is the `BeginTransaction`
|
|
553
|
+
* provided to the transaction, if any; a driver that doesn't start
|
|
554
|
+
* transactions with a SQL statement ignores it.
|
|
555
|
+
*/
|
|
556
|
+
readonly begin: (conn: NoInfer<S>, statement: string | undefined) => Effect.Effect<void, SqlError>
|
|
399
557
|
readonly savepoint: (conn: NoInfer<S>, id: number) => Effect.Effect<void, SqlError>
|
|
400
558
|
/**
|
|
401
559
|
* Releases a nested savepoint after success or a successful rollback.
|
|
@@ -412,6 +570,12 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
412
570
|
const transactionSemaphore = Context.Service<Semaphore.Semaphore>(
|
|
413
571
|
`effect/sql/SqlClient/TransactionSemaphore/${transactionSemaphoreIdCounter++}`
|
|
414
572
|
)
|
|
573
|
+
const afterCommit = makeAfterCommit(options.transactionService)
|
|
574
|
+
const deferInvalidations = (reactivity: Reactivity): Reactivity => {
|
|
575
|
+
const invalidate = (keys: Parameters<Reactivity["invalidate"]>[0]) =>
|
|
576
|
+
afterCommit(Effect.sync(() => reactivity.invalidateUnsafe(keys)))
|
|
577
|
+
return { ...reactivity, invalidate, mutation: (keys, effect) => Effect.tap(effect, invalidate(keys)) }
|
|
578
|
+
}
|
|
415
579
|
return <R, E, A>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E | SqlError, R> =>
|
|
416
580
|
Effect.uninterruptibleMask((restore) =>
|
|
417
581
|
Effect.useSpan(
|
|
@@ -423,24 +587,39 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
423
587
|
span.attribute(key, value)
|
|
424
588
|
}
|
|
425
589
|
const services = fiber.context
|
|
590
|
+
const reactivity = Context.getOrUndefined(services, Reactivity)
|
|
426
591
|
const clock = fiber.getRef(Clock)
|
|
427
592
|
const connOption = Context.getOption(services, options.transactionService)
|
|
428
|
-
const conn = connOption._tag === "Some"
|
|
593
|
+
const conn: Effect.Effect<readonly [Scope.Closeable | undefined, S], SqlError> = connOption._tag === "Some"
|
|
429
594
|
? Effect.succeed([undefined, connOption.value[0]] as const)
|
|
430
|
-
:
|
|
595
|
+
: Effect.flatMap(Scope.make(), (scope) =>
|
|
596
|
+
Scope.provide(options.acquireConnection(restore), scope).pipe(
|
|
597
|
+
Effect.map((conn) => [scope, conn] as const),
|
|
598
|
+
Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause)))
|
|
599
|
+
))
|
|
431
600
|
const id = connOption._tag === "Some" ? connOption.value[1] + 1 : 0
|
|
601
|
+
const buffer: AfterCommitBuffer = {
|
|
602
|
+
callbacks: [],
|
|
603
|
+
parent: connOption._tag === "Some" ? afterCommitBuffers.get(connOption.value) : undefined,
|
|
604
|
+
open: true
|
|
605
|
+
}
|
|
606
|
+
let committed = false
|
|
432
607
|
const transaction = Effect.flatMap(
|
|
433
608
|
conn,
|
|
434
609
|
(
|
|
435
610
|
[scope, conn]
|
|
436
611
|
) =>
|
|
437
|
-
(id === 0 ? options.begin(conn) : options.savepoint(conn, id)).pipe(
|
|
438
|
-
Effect.flatMap(() =>
|
|
439
|
-
|
|
612
|
+
(id === 0 ? options.begin(conn, fiber.getRef(BeginTransaction)) : options.savepoint(conn, id)).pipe(
|
|
613
|
+
Effect.flatMap(() => {
|
|
614
|
+
const level = [conn, id] as const
|
|
615
|
+
afterCommitBuffers.set(level, buffer)
|
|
616
|
+
return Effect.onExitPrimitive(
|
|
440
617
|
Effect.provideContext(
|
|
441
618
|
restore(effect),
|
|
442
619
|
services.pipe(
|
|
443
|
-
Context.add(options.transactionService,
|
|
620
|
+
Context.add(options.transactionService, level),
|
|
621
|
+
Context.add(CurrentTransactionService, options.transactionService),
|
|
622
|
+
reactivity ? Context.add(Reactivity, deferInvalidations(reactivity)) : identity,
|
|
444
623
|
Context.add(transactionSemaphore, Semaphore.makeUnsafe(1)),
|
|
445
624
|
Context.add(Tracer.ParentSpan, span)
|
|
446
625
|
)
|
|
@@ -474,17 +653,34 @@ export const makeWithTransaction = <I, S>(options: {
|
|
|
474
653
|
if (id > 0 && options.releaseSavepoint) {
|
|
475
654
|
effect = Effect.andThen(effect, Effect.orDie(options.releaseSavepoint(conn, id)))
|
|
476
655
|
}
|
|
477
|
-
return Effect.flatMap(effect, () =>
|
|
656
|
+
return Effect.flatMap(effect, () => {
|
|
657
|
+
committed = Exit.isSuccess(exit)
|
|
658
|
+
return exit
|
|
659
|
+
})
|
|
478
660
|
},
|
|
479
661
|
true
|
|
480
662
|
)
|
|
481
|
-
),
|
|
482
|
-
scope
|
|
663
|
+
}),
|
|
664
|
+
scope
|
|
665
|
+
? (eff) => Effect.onExitPrimitive(eff, (exit) => Scope.close(scope, exit), true)
|
|
666
|
+
: identity
|
|
483
667
|
)
|
|
484
668
|
)
|
|
669
|
+
// Runs once the connection is released, whether or not that succeeded.
|
|
670
|
+
const settled = Effect.onExitPrimitive(transaction, () => {
|
|
671
|
+
buffer.open = false
|
|
672
|
+
if (!committed || buffer.callbacks.length === 0) {
|
|
673
|
+
return undefined
|
|
674
|
+
}
|
|
675
|
+
if (buffer.parent !== undefined) {
|
|
676
|
+
buffer.parent.callbacks.push(...buffer.callbacks)
|
|
677
|
+
return undefined
|
|
678
|
+
}
|
|
679
|
+
return Effect.forEach(buffer.callbacks, runAfterCommit, { discard: true })
|
|
680
|
+
}, true)
|
|
485
681
|
return id === 0
|
|
486
|
-
?
|
|
487
|
-
: Context.getUnsafe(services, transactionSemaphore).withPermit(
|
|
682
|
+
? settled
|
|
683
|
+
: Context.getUnsafe(services, transactionSemaphore).withPermit(settled)
|
|
488
684
|
})
|
|
489
685
|
)
|
|
490
686
|
)
|
|
@@ -544,3 +740,51 @@ export const TransactionConnection = (
|
|
|
544
740
|
export const SafeIntegers = Context.Reference<boolean>("effect/sql/SqlClient/SafeIntegers", {
|
|
545
741
|
defaultValue: () => false
|
|
546
742
|
})
|
|
743
|
+
|
|
744
|
+
/**
|
|
745
|
+
* Context reference holding the statement that starts a top-level
|
|
746
|
+
* transaction in place of the client's `BEGIN`; defaults to `undefined`, which
|
|
747
|
+
* keeps the client's.
|
|
748
|
+
*
|
|
749
|
+
* **When to use**
|
|
750
|
+
*
|
|
751
|
+
* Use when one transaction needs its own isolation level or access mode, as
|
|
752
|
+
* in `BEGIN ISOLATION LEVEL SERIALIZABLE` on PostgreSQL, rather than following
|
|
753
|
+
* the client's `BEGIN` with a `SET TRANSACTION`, which costs another round
|
|
754
|
+
* trip.
|
|
755
|
+
*
|
|
756
|
+
* **Details**
|
|
757
|
+
*
|
|
758
|
+
* The statement runs unprepared. Nested transactions ignore it and keep their
|
|
759
|
+
* savepoints.
|
|
760
|
+
*
|
|
761
|
+
* **Gotchas**
|
|
762
|
+
*
|
|
763
|
+
* It applies to every top-level transaction started while it is provided,
|
|
764
|
+
* including in forked fibers, so provide it around the single
|
|
765
|
+
* `withTransaction` it is meant for. `@effect/sql-libsql`, `@effect/sql-mssql`
|
|
766
|
+
* and `@effect/sql-sqlite-do` don't start transactions with a SQL statement
|
|
767
|
+
* and ignore it. The statement is sent as raw SQL, so never build it from
|
|
768
|
+
* untrusted input.
|
|
769
|
+
*
|
|
770
|
+
* **Example** (Starting a serializable transaction)
|
|
771
|
+
*
|
|
772
|
+
* ```ts
|
|
773
|
+
* import { Effect } from "effect"
|
|
774
|
+
* import { SqlClient } from "effect/sql"
|
|
775
|
+
*
|
|
776
|
+
* const program = Effect.gen(function*() {
|
|
777
|
+
* const sql = yield* SqlClient.SqlClient
|
|
778
|
+
* return yield* sql.withTransaction(sql`SELECT 1`).pipe(
|
|
779
|
+
* Effect.provideService(SqlClient.BeginTransaction, "BEGIN ISOLATION LEVEL SERIALIZABLE")
|
|
780
|
+
* )
|
|
781
|
+
* })
|
|
782
|
+
* ```
|
|
783
|
+
*
|
|
784
|
+
* @stability unstable
|
|
785
|
+
* @category services
|
|
786
|
+
* @since 4.0.6
|
|
787
|
+
*/
|
|
788
|
+
export const BeginTransaction = Context.Reference<string | undefined>("effect/sql/SqlClient/BeginTransaction", {
|
|
789
|
+
defaultValue: () => undefined
|
|
790
|
+
})
|
package/src/sql/SqlResolver.ts
CHANGED
|
@@ -8,6 +8,19 @@
|
|
|
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
|
+
* The active transaction is found through the `SqlClient` in each request's
|
|
12
|
+
* context, and otherwise through the innermost transaction started with
|
|
13
|
+
* `SqlClient.makeWithTransaction`.
|
|
14
|
+
*
|
|
15
|
+
* Only the transaction connection separates batches. Other differences in
|
|
16
|
+
* caller services do not: `execute` and result decoding are provided with the
|
|
17
|
+
* first entry's context, while request encoding uses each entry's own context.
|
|
18
|
+
* In particular, callers outside a transaction can share one batch even when
|
|
19
|
+
* they provide different tenant or authorization services. Do not rely on
|
|
20
|
+
* per-caller services to isolate such SQL operations; use separate resolver
|
|
21
|
+
* instances for different tenants or authorization settings, or include those
|
|
22
|
+
* values in the request payload and handle them explicitly in `execute`.
|
|
23
|
+
*
|
|
11
24
|
* @stability unstable
|
|
12
25
|
* @since 4.0.0
|
|
13
26
|
*/
|
|
@@ -18,6 +31,7 @@ import * as Effect from "../Effect.ts"
|
|
|
18
31
|
import * as Equal from "../Equal.ts"
|
|
19
32
|
import * as Exit from "../Exit.ts"
|
|
20
33
|
import * as Hash from "../Hash.ts"
|
|
34
|
+
import { CurrentTransactionService } from "../internal/sql.ts"
|
|
21
35
|
import * as MutableHashMap from "../MutableHashMap.ts"
|
|
22
36
|
import * as Option from "../Option.ts"
|
|
23
37
|
import * as Request from "../Request.ts"
|
|
@@ -137,7 +151,7 @@ export const ordered = <Req extends Schema.Constraint, Res extends Schema.Constr
|
|
|
137
151
|
E | ResultLengthMismatch,
|
|
138
152
|
Req["EncodingServices"] | Res["DecodingServices"] | R
|
|
139
153
|
>,
|
|
140
|
-
|
|
154
|
+
object | undefined
|
|
141
155
|
>({
|
|
142
156
|
key: transactionKey,
|
|
143
157
|
resolver: Effect.fnUntraced(function*(entries) {
|
|
@@ -195,7 +209,7 @@ export const grouped = <Req extends Schema.Constraint, Res extends Schema.Constr
|
|
|
195
209
|
E | Schema.SchemaError | Cause.NoSuchElementError,
|
|
196
210
|
Req["EncodingServices"] | Res["DecodingServices"] | R
|
|
197
211
|
>,
|
|
198
|
-
|
|
212
|
+
object | undefined
|
|
199
213
|
>({
|
|
200
214
|
key: transactionKey,
|
|
201
215
|
resolver: Effect.fnUntraced(function*(entries) {
|
|
@@ -265,7 +279,7 @@ export const findById = <Id extends Schema.Constraint, Res extends Schema.Constr
|
|
|
265
279
|
E | Schema.SchemaError | Cause.NoSuchElementError,
|
|
266
280
|
Id["EncodingServices"] | Res["DecodingServices"] | R
|
|
267
281
|
>,
|
|
268
|
-
|
|
282
|
+
object | undefined
|
|
269
283
|
>({
|
|
270
284
|
key: transactionKey,
|
|
271
285
|
resolver: Effect.fnUntraced(function*(entries) {
|
|
@@ -319,7 +333,7 @@ const void_ = <Req extends Schema.Constraint, _, E, R>(
|
|
|
319
333
|
E | Schema.SchemaError,
|
|
320
334
|
Req["EncodingServices"] | R
|
|
321
335
|
>,
|
|
322
|
-
|
|
336
|
+
object | undefined
|
|
323
337
|
>({
|
|
324
338
|
key: transactionKey,
|
|
325
339
|
resolver: Effect.fnUntraced(function*(entries) {
|
|
@@ -420,10 +434,19 @@ const partitionRequestsById = function*<In, A, E, R, InE>(
|
|
|
420
434
|
return [inputs, byIdMap] as const
|
|
421
435
|
}
|
|
422
436
|
|
|
423
|
-
function transactionKey<A>(entry: Request.Entry<A>):
|
|
437
|
+
function transactionKey<A>(entry: Request.Entry<A>): object | undefined {
|
|
438
|
+
// The transaction of the request's `SqlClient`, and the innermost transaction
|
|
439
|
+
// started with `SqlClient.makeWithTransaction` by any client.
|
|
424
440
|
const client = Context.getOrUndefined(entry.context, SqlClient.SqlClient)
|
|
425
|
-
|
|
426
|
-
const
|
|
427
|
-
|
|
428
|
-
|
|
441
|
+
const clientTransaction = client && Context.getOrUndefined(entry.context, client.transactionService)
|
|
442
|
+
const currentService = Context.get(entry.context, CurrentTransactionService)
|
|
443
|
+
const currentTransaction = currentService && Context.getOrUndefined(entry.context, currentService)
|
|
444
|
+
if (clientTransaction === undefined || clientTransaction === currentTransaction) {
|
|
445
|
+
return currentTransaction && Equal.byReferenceUnsafe(currentTransaction)
|
|
446
|
+
}
|
|
447
|
+
if (currentTransaction === undefined) {
|
|
448
|
+
return Equal.byReferenceUnsafe(clientTransaction)
|
|
449
|
+
}
|
|
450
|
+
// Two different transactions are active, so neither identifies the request on its own.
|
|
451
|
+
return [Equal.byReferenceUnsafe(clientTransaction), Equal.byReferenceUnsafe(currentTransaction)]
|
|
429
452
|
}
|