effect 4.0.4 → 4.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai-docs/package.json +1 -1
- package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
- package/ai-docs/src/52_graphql/10_basics.ts +19 -13
- package/ai-docs/src/52_graphql/30_batching.ts +6 -4
- package/ai-docs/src/52_graphql/40_aliased-batching.ts +6 -4
- package/ai-docs/tsconfig.json +3 -1
- package/dist/Array.d.ts +207 -58
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +45 -22
- package/dist/Array.js.map +1 -1
- package/dist/Bytes.d.ts +79 -0
- package/dist/Bytes.d.ts.map +1 -0
- package/dist/Bytes.js +109 -0
- package/dist/Bytes.js.map +1 -0
- package/dist/Channel.d.ts +187 -14
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +142 -33
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +39 -21
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +26 -17
- package/dist/Chunk.js.map +1 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +8 -3
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +34 -32
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Cron.d.ts +2 -2
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +6 -3
- package/dist/Cron.js.map +1 -1
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +58 -21
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +548 -182
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +261 -76
- package/dist/Effect.js.map +1 -1
- package/dist/Equivalence.d.ts +2 -1
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +12 -8
- package/dist/Equivalence.js.map +1 -1
- package/dist/Exit.d.ts +24 -9
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +8 -3
- package/dist/Exit.js.map +1 -1
- package/dist/FiberHandle.d.ts +2 -0
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +9 -4
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +2 -0
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +5 -2
- package/dist/FiberMap.js.map +1 -1
- package/dist/FileSystem.d.ts +28 -9
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +3 -0
- package/dist/FileSystem.js.map +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js.map +1 -1
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +18 -17
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonSchema.d.ts +9 -3
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +19 -3
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +2 -2
- package/dist/Layer.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +19 -1
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +62 -6
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Match.d.ts +20 -6
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +2 -2
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +132 -0
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +197 -25
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/Number.js +2 -2
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js.map +1 -1
- package/dist/Path.d.ts +37 -5
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +44 -6
- package/dist/Path.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +12 -7
- package/dist/PubSub.js.map +1 -1
- package/dist/Queue.d.ts +4 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +4 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +1 -1
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +12 -7
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +9 -6
- package/dist/RcMap.js.map +1 -1
- package/dist/Record.d.ts +51 -0
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +17 -0
- package/dist/Record.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +5 -4
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +5 -4
- package/dist/References.js.map +1 -1
- package/dist/RequestResolver.d.ts +31 -1
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +39 -4
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Runtime.d.ts +3 -3
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +18 -15
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +383 -326
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +338 -17
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +5 -5
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +24 -8
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +8 -3
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +15 -5
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +4 -4
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +29 -51
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +56 -1
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +18 -0
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +1 -1
- package/dist/SchemaTransformation.js +1 -1
- package/dist/Scope.d.ts +12 -2
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +5 -0
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.d.ts +10 -7
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +9 -5
- package/dist/ScopedCache.js.map +1 -1
- package/dist/SemVer.d.ts +1196 -0
- package/dist/SemVer.d.ts.map +1 -0
- package/dist/SemVer.js +756 -0
- package/dist/SemVer.js.map +1 -0
- package/dist/SemVerRange.d.ts +559 -0
- package/dist/SemVerRange.d.ts.map +1 -0
- package/dist/SemVerRange.js +551 -0
- package/dist/SemVerRange.js.map +1 -0
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +6 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +235 -8
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +145 -60
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +16 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +25 -10
- package/dist/String.js.map +1 -1
- package/dist/TextDiff.d.ts +399 -0
- package/dist/TextDiff.d.ts.map +1 -0
- package/dist/TextDiff.js +634 -0
- package/dist/TextDiff.js.map +1 -0
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js.map +1 -1
- package/dist/TxRef.d.ts.map +1 -1
- package/dist/TxRef.js +3 -2
- package/dist/TxRef.js.map +1 -1
- package/dist/ai/AiError.d.ts +78 -14
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +51 -3
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Chat.d.ts +1 -2
- package/dist/ai/Chat.d.ts.map +1 -1
- package/dist/ai/Chat.js +6 -3
- package/dist/ai/Chat.js.map +1 -1
- package/dist/ai/Decision.d.ts +116 -20
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js +37 -3
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +129 -11
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +183 -95
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/EmbeddingModel.d.ts +10 -0
- package/dist/ai/EmbeddingModel.d.ts.map +1 -1
- package/dist/ai/EmbeddingModel.js +21 -7
- package/dist/ai/EmbeddingModel.js.map +1 -1
- package/dist/ai/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +47 -35
- package/dist/ai/LanguageModel.js.map +1 -1
- package/dist/ai/McpClient.d.ts +289 -0
- package/dist/ai/McpClient.d.ts.map +1 -0
- package/dist/ai/McpClient.js +819 -0
- package/dist/ai/McpClient.js.map +1 -0
- package/dist/ai/McpClientError.d.ts +254 -0
- package/dist/ai/McpClientError.d.ts.map +1 -0
- package/dist/ai/McpClientError.js +260 -0
- package/dist/ai/McpClientError.js.map +1 -0
- package/dist/ai/McpProtocol.d.ts +2 -2
- package/dist/ai/McpProtocol.d.ts.map +1 -1
- package/dist/ai/McpSchema.d.ts +368 -235
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +94 -24
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts +6 -52
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +27 -50
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +22 -20
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +23 -1
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +148 -4
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +35 -37
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +12 -4
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts +48 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +65 -12
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +10 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +16 -2
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +3 -4
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
- package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
- package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
- package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
- package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
- package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
- package/dist/cli/CliError.d.ts +42 -2
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +44 -5
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/Command.d.ts +286 -2
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +107 -6
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +10 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +215 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +89 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +3 -3
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +194 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +86 -0
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +84 -0
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
- package/dist/cli/TerminalCapabilities.js +122 -0
- package/dist/cli/TerminalCapabilities.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/internal/command.d.ts +2 -1
- package/dist/cli/internal/command.d.ts.map +1 -1
- package/dist/cli/internal/command.js +7 -3
- package/dist/cli/internal/command.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +7 -5
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/completions/descriptor.js +16 -1
- package/dist/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/cli/internal/completions/fish.js +12 -10
- package/dist/cli/internal/completions/fish.js.map +1 -1
- package/dist/cli/internal/completions/powershell.js +20 -10
- package/dist/cli/internal/completions/powershell.js.map +1 -1
- package/dist/cli/internal/completions/zsh.js +15 -8
- package/dist/cli/internal/completions/zsh.js.map +1 -1
- package/dist/cli/internal/formatter.d.ts +2 -0
- package/dist/cli/internal/formatter.d.ts.map +1 -0
- package/dist/cli/internal/formatter.js +15 -0
- package/dist/cli/internal/formatter.js.map +1 -0
- package/dist/cli/internal/lexer.js +24 -10
- package/dist/cli/internal/lexer.js.map +1 -1
- package/dist/cli/internal/parser.js +35 -15
- package/dist/cli/internal/parser.js.map +1 -1
- package/dist/cli/internal/wizard.d.ts.map +1 -1
- package/dist/cli/internal/wizard.js +2 -1
- package/dist/cli/internal/wizard.js.map +1 -1
- package/dist/cluster/ClusterCron.d.ts +29 -1
- package/dist/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/cluster/ClusterCron.js +64 -32
- package/dist/cluster/ClusterCron.js.map +1 -1
- package/dist/cluster/ClusterMetrics.d.ts +143 -7
- package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
- package/dist/cluster/ClusterMetrics.js +151 -7
- package/dist/cluster/ClusterMetrics.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts +2 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +98 -18
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Entity.d.ts +2 -0
- package/dist/cluster/Entity.d.ts.map +1 -1
- package/dist/cluster/Entity.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +21 -0
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +20 -12
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +96 -37
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts +1 -0
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +95 -32
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +20 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js +4 -0
- package/dist/cluster/ShardingConfig.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +40 -50
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +10 -4
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +66 -9
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/devtools/DevTools.d.ts +3 -2
- package/dist/devtools/DevTools.d.ts.map +1 -1
- package/dist/devtools/DevTools.js +3 -2
- package/dist/devtools/DevTools.js.map +1 -1
- package/dist/devtools/DevToolsClient.d.ts +11 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +31 -4
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts +29 -0
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +29 -0
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Ini.d.ts.map +1 -1
- package/dist/encoding/Ini.js +3 -0
- package/dist/encoding/Ini.js.map +1 -1
- package/dist/encoding/JsonArray.d.ts +270 -0
- package/dist/encoding/JsonArray.d.ts.map +1 -0
- package/dist/encoding/JsonArray.js +691 -0
- package/dist/encoding/JsonArray.js.map +1 -0
- package/dist/encoding/Ndjson.d.ts +43 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +169 -18
- package/dist/encoding/Ndjson.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts +9 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +12 -19
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Sse.js +1 -1
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/encoding/Tar.d.ts +309 -0
- package/dist/encoding/Tar.d.ts.map +1 -0
- package/dist/encoding/Tar.js +1182 -0
- package/dist/encoding/Tar.js.map +1 -0
- package/dist/encoding/Toml.js +3 -3
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Xml.d.ts +464 -0
- package/dist/encoding/Xml.d.ts.map +1 -0
- package/dist/encoding/Xml.js +1619 -0
- package/dist/encoding/Xml.js.map +1 -0
- package/dist/encoding/Yaml.d.ts +6 -2
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +97 -34
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/Zip.d.ts +413 -0
- package/dist/encoding/Zip.d.ts.map +1 -0
- package/dist/encoding/Zip.js +1255 -0
- package/dist/encoding/Zip.js.map +1 -0
- package/dist/encoding/index.d.ts +20 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +20 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts +90 -5
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +488 -228
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +180 -12
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +394 -146
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +36 -30
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +97 -38
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +74 -34
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +45 -11
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +45 -8
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +51 -14
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +46 -3
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +119 -19
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +97 -70
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +288 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -0
- package/dist/eventlog/EventRow.js +435 -0
- package/dist/eventlog/EventRow.js.map +1 -0
- package/dist/eventlog/SqlEventJournal.d.ts +18 -18
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +387 -159
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/index.d.ts +5 -0
- package/dist/eventlog/index.d.ts.map +1 -1
- package/dist/eventlog/index.js +5 -0
- package/dist/eventlog/index.js.map +1 -1
- package/dist/eventlog/internal/conflicts.d.ts +47 -0
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
- package/dist/eventlog/internal/conflicts.js +92 -0
- package/dist/eventlog/internal/conflicts.js.map +1 -0
- package/dist/graphql/GraphQLClient.d.ts.map +1 -1
- package/dist/graphql/GraphQLClient.js +12 -5
- package/dist/graphql/GraphQLClient.js.map +1 -1
- package/dist/graphql/GraphQLClientError.d.ts +2 -2
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +4 -18
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +252 -11
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +99 -8
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/graphql/GraphQLResolver.d.ts +3 -1
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
- package/dist/graphql/GraphQLResolver.js +91 -19
- package/dist/graphql/GraphQLResolver.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +13 -3
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +56 -6
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +12 -1
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/Headers.d.ts +230 -3
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +267 -5
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +105 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +69 -17
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +8 -6
- package/dist/http/HttpClientError.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +274 -7
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +91 -3
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts +53 -0
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +47 -0
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpEffect.d.ts +6 -2
- package/dist/http/HttpEffect.d.ts.map +1 -1
- package/dist/http/HttpEffect.js +21 -17
- package/dist/http/HttpEffect.js.map +1 -1
- package/dist/http/HttpIncomingMessage.d.ts +2 -1
- package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/http/HttpIncomingMessage.js +3 -23
- package/dist/http/HttpIncomingMessage.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +179 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +226 -18
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +58 -14
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.d.ts +5 -2
- package/dist/http/HttpServerError.d.ts.map +1 -1
- package/dist/http/HttpServerError.js +11 -7
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +25 -5
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +38 -12
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts +17 -8
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +37 -21
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts +0 -12
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +25 -17
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/HttpTraceContext.js +1 -1
- package/dist/http/HttpTraceContext.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +87 -5
- package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
- package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/headers.js +4 -12
- package/dist/http/MultipartParser/internal/headers.js.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.js +6 -27
- package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
- package/dist/http/Url.d.ts.map +1 -1
- package/dist/http/Url.js +8 -2
- package/dist/http/Url.js.map +1 -1
- package/dist/http/UrlParams.d.ts +112 -8
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +141 -14
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/internal/compression.d.ts +1 -1
- package/dist/http/internal/compression.d.ts.map +1 -1
- package/dist/http/internal/compression.js +2 -10
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/compressionBody.d.ts +2 -0
- package/dist/http/internal/compressionBody.d.ts.map +1 -0
- package/dist/http/internal/compressionBody.js +36 -0
- package/dist/http/internal/compressionBody.js.map +1 -0
- package/dist/http/internal/decompression.d.ts +2 -0
- package/dist/http/internal/decompression.d.ts.map +1 -0
- package/dist/http/internal/decompression.js +168 -0
- package/dist/http/internal/decompression.js.map +1 -0
- package/dist/http/internal/lazyStream.d.ts +2 -0
- package/dist/http/internal/lazyStream.d.ts.map +1 -0
- package/dist/http/internal/lazyStream.js +18 -0
- package/dist/http/internal/lazyStream.js.map +1 -0
- package/dist/http/internal/requestState.d.ts +2 -0
- package/dist/http/internal/requestState.d.ts.map +1 -0
- package/dist/http/internal/requestState.js +28 -0
- package/dist/http/internal/requestState.js.map +1 -0
- package/dist/http/internal/tracing.js +14 -4
- package/dist/http/internal/tracing.js.map +1 -1
- package/dist/http/internal/urlParams.d.ts +2 -0
- package/dist/http/internal/urlParams.d.ts.map +1 -0
- package/dist/http/internal/urlParams.js +4 -0
- package/dist/http/internal/urlParams.js.map +1 -0
- package/dist/http/internal/webResponse.d.ts +2 -0
- package/dist/http/internal/webResponse.d.ts.map +1 -0
- package/dist/http/internal/webResponse.js +12 -0
- package/dist/http/internal/webResponse.js.map +1 -0
- package/dist/http-api/HttpApi.js +1 -1
- package/dist/http-api/HttpApi.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +121 -18
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +29 -4
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +85 -24
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +55 -29
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +49 -5
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +58 -0
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +38 -12
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiScalar.d.ts +2 -1
- package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
- package/dist/http-api/HttpApiScalar.js +6 -3
- package/dist/http-api/HttpApiScalar.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +191 -9
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +137 -4
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiSwagger.d.ts +5 -0
- package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
- package/dist/http-api/HttpApiSwagger.js +14 -4
- package/dist/http-api/HttpApiSwagger.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts +13 -2
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +30 -9
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts +17 -3
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +57 -32
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/path.js +35 -10
- package/dist/http-api/internal/path.js.map +1 -1
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/core.js +18 -2
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +19 -7
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +89 -76
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/graphql.js +12 -2
- package/dist/internal/graphql.js.map +1 -1
- package/dist/internal/hashMap.js +2 -2
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hydration.d.ts +2 -0
- package/dist/internal/hydration.d.ts.map +1 -0
- package/dist/internal/hydration.js +15 -0
- package/dist/internal/hydration.js.map +1 -0
- package/dist/internal/inflate.d.ts +2 -0
- package/dist/internal/inflate.d.ts.map +1 -0
- package/dist/internal/inflate.js +680 -0
- package/dist/internal/inflate.js.map +1 -0
- package/dist/internal/record.js +6 -0
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/request.js +20 -7
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schedule.js +17 -22
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +136 -126
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/interpreter.js +51 -36
- package/dist/internal/schema/interpreter.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +34 -33
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +7 -2
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +86 -1
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toFormatter.js +5 -5
- package/dist/internal/schema/toFormatter.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +60 -38
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/trie.js +1 -3
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/uuid.js +7 -3
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/net/NetAddress.d.ts.map +1 -1
- package/dist/net/NetAddress.js +2 -8
- package/dist/net/NetAddress.js.map +1 -1
- package/dist/observability/Otlp.d.ts +15 -0
- package/dist/observability/Otlp.d.ts.map +1 -1
- package/dist/observability/Otlp.js +3 -0
- package/dist/observability/Otlp.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts +8 -0
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +15 -13
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpLogger.d.ts +17 -0
- package/dist/observability/OtlpLogger.d.ts.map +1 -1
- package/dist/observability/OtlpLogger.js +14 -1
- package/dist/observability/OtlpLogger.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts +17 -0
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +18 -3
- package/dist/observability/OtlpMetrics.js.map +1 -1
- package/dist/observability/OtlpResource.d.ts +3 -1
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -4
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpSerialization.d.ts +5 -0
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +14 -3
- package/dist/observability/OtlpSerialization.js.map +1 -1
- package/dist/observability/OtlpTracer.d.ts +17 -0
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +15 -2
- package/dist/observability/OtlpTracer.js.map +1 -1
- package/dist/observability/internal/protobuf.d.ts +0 -9
- package/dist/observability/internal/protobuf.d.ts.map +1 -1
- package/dist/observability/internal/protobuf.js +2 -10
- package/dist/observability/internal/protobuf.js.map +1 -1
- package/dist/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/persistence/PersistedCache.js +1 -1
- package/dist/persistence/PersistedCache.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +6 -2
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +162 -84
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +28 -0
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +36 -8
- package/dist/persistence/Persistence.js.map +1 -1
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +8 -12
- package/dist/persistence/RateLimiter.js.map +1 -1
- package/dist/persistence/UserDirectories.d.ts +129 -0
- package/dist/persistence/UserDirectories.d.ts.map +1 -0
- package/dist/persistence/UserDirectories.js +178 -0
- package/dist/persistence/UserDirectories.js.map +1 -0
- package/dist/persistence/index.d.ts +5 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +5 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +2 -1
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +6 -0
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/AsyncResult.js +28 -1
- package/dist/reactivity/AsyncResult.js.map +1 -1
- package/dist/reactivity/Atom.d.ts +69 -30
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +40 -15
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomHttpApi.d.ts +5 -5
- package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/reactivity/AtomHttpApi.js +1 -1
- package/dist/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/reactivity/AtomRegistry.d.ts +2 -2
- package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/reactivity/AtomRegistry.js +47 -10
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/reactivity/AtomRpc.d.ts +3 -3
- package/dist/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/reactivity/AtomRpc.js +1 -1
- package/dist/reactivity/AtomRpc.js.map +1 -1
- package/dist/reactivity/Hydration.d.ts.map +1 -1
- package/dist/reactivity/Hydration.js +46 -12
- package/dist/reactivity/Hydration.js.map +1 -1
- package/dist/reactivity/Reactivity.d.ts +71 -7
- package/dist/reactivity/Reactivity.d.ts.map +1 -1
- package/dist/reactivity/Reactivity.js +21 -12
- package/dist/reactivity/Reactivity.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +18 -0
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js +20 -0
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +26 -2
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +202 -61
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +15 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +21 -5
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +9 -18
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/schema/Model.d.ts +1 -1
- package/dist/schema/VariantSchema.d.ts +22 -3
- package/dist/schema/VariantSchema.d.ts.map +1 -1
- package/dist/schema/VariantSchema.js +32 -18
- package/dist/schema/VariantSchema.js.map +1 -1
- package/dist/socket/Socket.d.ts +23 -1
- package/dist/socket/Socket.d.ts.map +1 -1
- package/dist/socket/Socket.js +36 -3
- package/dist/socket/Socket.js.map +1 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +15 -3
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +151 -12
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +156 -34
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +9 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +9 -0
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +3 -1
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +24 -5
- package/dist/sql/Statement.js.map +1 -1
- package/dist/testing/TestClock.d.ts +16 -3
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +115 -23
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +7 -1
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +9 -3
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/workflow/Activity.js +1 -0
- package/dist/workflow/Activity.js.map +1 -1
- package/dist/workflow/Workflow.d.ts +22 -0
- package/dist/workflow/Workflow.d.ts.map +1 -1
- package/dist/workflow/Workflow.js +15 -3
- package/dist/workflow/Workflow.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts +20 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +52 -24
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +13 -3
- package/src/Array.ts +223 -61
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +287 -439
- package/src/ChannelSchema.ts +1 -49
- package/src/Chunk.ts +55 -61
- package/src/Config.ts +12 -86
- package/src/ConfigProvider.ts +41 -44
- package/src/Cron.ts +6 -3
- package/src/Duration.ts +70 -21
- package/src/Effect.ts +642 -220
- package/src/Equivalence.ts +7 -4
- package/src/Exit.ts +24 -9
- package/src/FiberHandle.ts +10 -9
- package/src/FiberMap.ts +13 -66
- package/src/FileSystem.ts +33 -9
- package/src/Graph.ts +171 -1263
- package/src/HashSet.ts +0 -60
- package/src/Iterable.ts +15 -14
- package/src/JsonSchema.ts +28 -3
- package/src/Layer.ts +2 -2
- package/src/ManagedRuntime.ts +72 -6
- package/src/Match.ts +65 -12
- package/src/Metric.ts +249 -507
- package/src/MutableHashMap.ts +4 -473
- package/src/Number.ts +2 -2
- package/src/Optic.ts +17 -332
- package/src/Path.ts +61 -8
- package/src/PubSub.ts +12 -7
- package/src/Queue.ts +5 -37
- package/src/Random.ts +1 -1
- package/src/RcMap.ts +14 -8
- package/src/Record.ts +51 -0
- package/src/Ref.ts +7 -104
- package/src/References.ts +5 -4
- package/src/RequestResolver.ts +46 -87
- package/src/Resource.ts +1 -1
- package/src/Runtime.ts +19 -18
- package/src/Schedule.ts +2 -94
- package/src/Schema.ts +596 -348
- package/src/SchemaAST.ts +20 -9
- package/src/SchemaGetter.ts +22 -5
- package/src/SchemaIssue.ts +44 -53
- package/src/SchemaRepresentation.ts +64 -1
- package/src/SchemaTransformation.ts +1 -1
- package/src/Scope.ts +12 -2
- package/src/ScopedCache.ts +17 -142
- package/src/SemVer.ts +1528 -0
- package/src/SemVerRange.ts +883 -0
- package/src/Sink.ts +6 -2
- package/src/Stream.ts +334 -1011
- package/src/String.ts +25 -12
- package/src/TextDiff.ts +766 -0
- package/src/TxHashMap.ts +1 -103
- package/src/TxHashSet.ts +48 -753
- package/src/TxRef.ts +4 -2
- package/src/ai/AiError.ts +69 -5
- package/src/ai/Chat.ts +10 -5
- package/src/ai/Decision.ts +119 -22
- package/src/ai/DecisionModel.ts +265 -109
- package/src/ai/EmbeddingModel.ts +25 -13
- package/src/ai/LanguageModel.ts +57 -51
- package/src/ai/McpClient.ts +1211 -0
- package/src/ai/McpClientError.ts +329 -0
- package/src/ai/McpProtocol.ts +2 -2
- package/src/ai/McpSchema.ts +153 -35
- package/src/ai/McpServer.ts +232 -275
- package/src/ai/Prompt.ts +49 -35
- package/src/ai/Response.ts +195 -65
- package/src/ai/Tool.ts +12 -4
- package/src/ai/Toolkit.ts +78 -10
- package/src/ai/index.ts +12 -0
- package/src/ai/internal/mcpCore.ts +13 -14
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
- package/src/ai/internal/mcpProtocol.ts +22 -2
- package/src/ai/internal/mcpRuntime.ts +3 -4
- package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
- package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
- package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
- package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
- package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
- package/src/cli/CliError.ts +49 -4
- package/src/cli/Command.ts +316 -9
- package/src/cli/Completions.ts +10 -0
- package/src/cli/Flag.ts +218 -0
- package/src/cli/GlobalFlag.ts +3 -3
- package/src/cli/Param.ts +218 -0
- package/src/cli/TerminalCapabilities.ts +156 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +10 -4
- package/src/cli/internal/completions/bash.ts +7 -5
- package/src/cli/internal/completions/descriptor.ts +20 -1
- package/src/cli/internal/completions/fish.ts +12 -10
- package/src/cli/internal/completions/powershell.ts +25 -13
- package/src/cli/internal/completions/zsh.ts +15 -8
- package/src/cli/internal/formatter.ts +18 -0
- package/src/cli/internal/lexer.ts +12 -5
- package/src/cli/internal/parser.ts +43 -14
- package/src/cli/internal/wizard.ts +2 -1
- package/src/cluster/ClusterCron.ts +94 -35
- package/src/cluster/ClusterMetrics.ts +149 -7
- package/src/cluster/ClusterWorkflowEngine.ts +164 -53
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +21 -3
- package/src/cluster/Runners.ts +145 -72
- package/src/cluster/Sharding.ts +118 -38
- package/src/cluster/ShardingConfig.ts +15 -0
- package/src/cluster/SqlMessageStorage.ts +58 -55
- package/src/cluster/SqlRunnerStorage.ts +10 -4
- package/src/cluster/internal/entityManager.ts +81 -11
- package/src/devtools/DevTools.ts +3 -2
- package/src/devtools/DevToolsClient.ts +27 -10
- package/src/encoding/Base64Url.ts +31 -0
- package/src/encoding/Ini.ts +3 -0
- package/src/encoding/JsonArray.ts +849 -0
- package/src/encoding/Ndjson.ts +211 -20
- package/src/encoding/SchemaBinary.ts +14 -48
- package/src/encoding/Sse.ts +1 -1
- package/src/encoding/Tar.ts +1417 -0
- package/src/encoding/Toml.ts +3 -3
- package/src/encoding/Xml.ts +2037 -0
- package/src/encoding/Yaml.ts +108 -36
- package/src/encoding/Zip.ts +1558 -0
- package/src/encoding/index.ts +24 -0
- package/src/eventlog/EventJournal.ts +611 -227
- package/src/eventlog/EventLog.ts +496 -196
- package/src/eventlog/EventLogEncryption.ts +128 -43
- package/src/eventlog/EventLogMessage.ts +62 -11
- package/src/eventlog/EventLogRemote.ts +77 -21
- package/src/eventlog/EventLogServer.ts +162 -20
- package/src/eventlog/EventLogServerEncrypted.ts +121 -80
- package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
- package/src/eventlog/EventRow.ts +706 -0
- package/src/eventlog/SqlEventJournal.ts +453 -173
- package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
- package/src/eventlog/index.ts +6 -0
- package/src/eventlog/internal/conflicts.ts +123 -0
- package/src/graphql/GraphQLClient.ts +17 -5
- package/src/graphql/GraphQLClientError.ts +5 -12
- package/src/graphql/GraphQLProtocol.ts +277 -20
- package/src/graphql/GraphQLResolver.ts +109 -230
- package/src/http/FetchHttpClient.ts +61 -8
- package/src/http/FindMyWay/internal/router.ts +13 -1
- package/src/http/Headers.ts +343 -163
- package/src/http/HttpClient.ts +144 -136
- package/src/http/HttpClientError.ts +10 -6
- package/src/http/HttpClientRequest.ts +315 -11
- package/src/http/HttpClientResponse.ts +71 -0
- package/src/http/HttpEffect.ts +25 -33
- package/src/http/HttpIncomingMessage.ts +3 -23
- package/src/http/HttpMiddleware.ts +265 -28
- package/src/http/HttpRouter.ts +67 -14
- package/src/http/HttpServerError.ts +14 -7
- package/src/http/HttpServerRequest.ts +73 -14
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +29 -19
- package/src/http/HttpTraceContext.ts +1 -1
- package/src/http/MultipartParser/internal/contentType.ts +107 -6
- package/src/http/MultipartParser/internal/headers.ts +4 -16
- package/src/http/MultipartParser/internal/multipart.ts +10 -32
- package/src/http/Url.ts +8 -2
- package/src/http/UrlParams.ts +225 -26
- package/src/http/internal/compression.ts +3 -17
- package/src/http/internal/compressionBody.ts +56 -0
- package/src/http/internal/decompression.ts +235 -0
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/tracing.ts +21 -4
- package/src/http/internal/urlParams.ts +5 -0
- package/src/http/internal/webResponse.ts +20 -0
- package/src/http-api/HttpApi.ts +1 -1
- package/src/http-api/HttpApiBuilder.ts +151 -23
- package/src/http-api/HttpApiClient.ts +160 -31
- package/src/http-api/HttpApiEndpoint.ts +144 -33
- package/src/http-api/HttpApiError.ts +55 -0
- package/src/http-api/HttpApiScalar.ts +4 -3
- package/src/http-api/HttpApiSchema.ts +275 -13
- package/src/http-api/HttpApiSwagger.ts +11 -4
- package/src/http-api/HttpApiTest.ts +33 -9
- package/src/http-api/OpenApi.ts +84 -42
- package/src/http-api/internal/path.ts +40 -12
- package/src/index.ts +24 -0
- package/src/internal/core.ts +22 -2
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +125 -88
- package/src/internal/graphql.ts +30 -7
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/hydration.ts +15 -0
- package/src/internal/inflate.ts +710 -0
- package/src/internal/record.ts +6 -0
- package/src/internal/request.ts +21 -6
- package/src/internal/schedule.ts +20 -39
- package/src/internal/schema/fromJsonSchemaDocument.ts +262 -193
- package/src/internal/schema/interpreter.ts +58 -45
- package/src/internal/schema/standardSchema.ts +32 -30
- package/src/internal/schema/toCodeDocument.ts +8 -3
- package/src/internal/schema/toCodec.ts +116 -1
- package/src/internal/schema/toFormatter.ts +6 -6
- package/src/internal/schema/toJsonSchemaDocument.ts +69 -39
- package/src/internal/trie.ts +1 -3
- package/src/internal/uuid.ts +15 -10
- package/src/internal/version.ts +1 -1
- package/src/net/NetAddress.ts +2 -9
- package/src/observability/Otlp.ts +18 -0
- package/src/observability/OtlpExporter.ts +19 -15
- package/src/observability/OtlpLogger.ts +31 -2
- package/src/observability/OtlpMetrics.ts +35 -4
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/OtlpTracer.ts +32 -3
- package/src/observability/internal/protobuf.ts +2 -10
- package/src/persistence/PersistedCache.ts +3 -1
- package/src/persistence/PersistedQueue.ts +223 -153
- package/src/persistence/Persistence.ts +64 -30
- package/src/persistence/RateLimiter.ts +18 -21
- package/src/persistence/UserDirectories.ts +273 -0
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +2 -1
- package/src/reactivity/AsyncResult.ts +35 -38
- package/src/reactivity/Atom.ts +134 -166
- package/src/reactivity/AtomHttpApi.ts +10 -16
- package/src/reactivity/AtomRegistry.ts +53 -30
- package/src/reactivity/AtomRpc.ts +6 -22
- package/src/reactivity/Hydration.ts +53 -12
- package/src/reactivity/Reactivity.ts +97 -39
- package/src/rpc/Rpc.ts +21 -0
- package/src/rpc/RpcClient.ts +285 -104
- package/src/rpc/RpcSerialization.ts +21 -5
- package/src/rpc/RpcServer.ts +11 -20
- package/src/schema/VariantSchema.ts +86 -22
- package/src/socket/Socket.ts +45 -20
- package/src/sql/Migrator.ts +19 -9
- package/src/sql/SqlClient.ts +275 -36
- package/src/sql/SqlResolver.ts +9 -0
- package/src/sql/Statement.ts +35 -8
- package/src/testing/TestClock.ts +147 -29
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/Activity.ts +1 -0
- package/src/workflow/Workflow.ts +31 -5
- package/src/workflow/WorkflowEngine.ts +93 -31
- package/dist/http/internal/preResponseHandler.d.ts +0 -2
- package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
- package/dist/http/internal/preResponseHandler.js +0 -14
- package/dist/http/internal/preResponseHandler.js.map +0 -1
- package/src/http/internal/preResponseHandler.ts +0 -19
package/src/cluster/Runners.ts
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
import * as Context from "../Context.ts"
|
|
15
15
|
import * as Effect from "../Effect.ts"
|
|
16
16
|
import * as Exit from "../Exit.ts"
|
|
17
|
+
import * as Fiber from "../Fiber.ts"
|
|
17
18
|
import * as Latch from "../Latch.ts"
|
|
18
19
|
import * as Layer from "../Layer.ts"
|
|
19
20
|
import * as Option from "../Option.ts"
|
|
@@ -247,78 +248,149 @@ export const make: (
|
|
|
247
248
|
|
|
248
249
|
type StorageRequestEntry = {
|
|
249
250
|
readonly latch: Latch.Latch
|
|
250
|
-
doneLatch: Latch.Latch | undefined
|
|
251
251
|
readonly messages: Set<Message.OutgoingRequest<any>>
|
|
252
|
+
readonly pump: Fiber.Fiber<void>
|
|
252
253
|
replies: Array<Reply.Reply<any>>
|
|
253
254
|
}
|
|
254
255
|
const storageRequests = new Map<Snowflake.Snowflake, StorageRequestEntry>()
|
|
255
256
|
const waitingStorageRequests = new Map<Snowflake.Snowflake, Message.OutgoingRequest<any>>()
|
|
256
|
-
const replyFromStorage = Effect.fnUntraced(
|
|
257
|
-
function*(message: Message.OutgoingRequest<any>) {
|
|
258
|
-
let entry = storageRequests.get(message.envelope.requestId)
|
|
259
|
-
if (entry) {
|
|
260
|
-
entry.messages.add(message)
|
|
261
|
-
entry.doneLatch ??= Latch.makeUnsafe(false)
|
|
262
|
-
return yield* entry.doneLatch.await
|
|
263
|
-
} else {
|
|
264
|
-
entry = {
|
|
265
|
-
latch: Latch.makeUnsafe(false),
|
|
266
|
-
doneLatch: undefined,
|
|
267
|
-
replies: [],
|
|
268
|
-
messages: new Set([message])
|
|
269
|
-
}
|
|
270
|
-
storageRequests.set(message.envelope.requestId, entry)
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
while (true) {
|
|
274
|
-
// wait for the storage loop to notify us
|
|
275
|
-
entry.latch.closeUnsafe()
|
|
276
|
-
waitingStorageRequests.set(message.envelope.requestId, message)
|
|
277
|
-
storageLatch.openUnsafe()
|
|
278
|
-
yield* entry.latch.await
|
|
279
257
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
storageRequests.delete(message.envelope.requestId)
|
|
288
|
-
waitingStorageRequests.delete(message.envelope.requestId)
|
|
289
|
-
for (const message of entry.messages) {
|
|
290
|
-
yield* message.respond(reply)
|
|
291
|
-
}
|
|
292
|
-
entry.doneLatch?.openUnsafe()
|
|
293
|
-
return
|
|
294
|
-
}
|
|
258
|
+
// A reset request can register a replacement entry under the same id, which
|
|
259
|
+
// must survive the old entry's cleanup.
|
|
260
|
+
const removeStorageRequest = (requestId: Snowflake.Snowflake, entry: Omit<StorageRequestEntry, "pump">) => {
|
|
261
|
+
if (storageRequests.get(requestId) !== entry) return
|
|
262
|
+
storageRequests.delete(requestId)
|
|
263
|
+
waitingStorageRequests.delete(requestId)
|
|
264
|
+
}
|
|
295
265
|
|
|
296
|
-
|
|
266
|
+
// The pump is owned by the shared entry rather than the first caller, so any
|
|
267
|
+
// waiter can be interrupted without stopping delivery to the others.
|
|
268
|
+
//
|
|
269
|
+
// `replyFromStorage` registers the request with the storage loop before the
|
|
270
|
+
// pump starts, so the pump only re-registers after a stream chunk is acked.
|
|
271
|
+
const pumpReplies = Effect.fnUntraced(function*(
|
|
272
|
+
requestId: Snowflake.Snowflake,
|
|
273
|
+
entry: Omit<StorageRequestEntry, "pump">
|
|
274
|
+
) {
|
|
275
|
+
while (true) {
|
|
276
|
+
// wait for the storage loop to notify us
|
|
277
|
+
yield* entry.latch.await
|
|
278
|
+
|
|
279
|
+
// send the replies back
|
|
280
|
+
for (let i = 0; i < entry.replies.length; i++) {
|
|
281
|
+
const reply = entry.replies[i]
|
|
282
|
+
// we have reached the end
|
|
283
|
+
if (reply._tag === "WithExit") {
|
|
284
|
+
// A reply can immediately reset and resend the same request. Do not
|
|
285
|
+
// let that sender attach to this completed entry.
|
|
286
|
+
removeStorageRequest(requestId, entry)
|
|
297
287
|
for (const message of entry.messages) {
|
|
298
288
|
yield* message.respond(reply)
|
|
299
289
|
}
|
|
300
|
-
|
|
301
|
-
yield* entry.latch.await
|
|
290
|
+
return
|
|
302
291
|
}
|
|
303
|
-
|
|
292
|
+
|
|
293
|
+
entry.latch.closeUnsafe()
|
|
294
|
+
for (const message of entry.messages) {
|
|
295
|
+
yield* message.respond(reply)
|
|
296
|
+
}
|
|
297
|
+
// wait for ack
|
|
298
|
+
yield* entry.latch.await
|
|
304
299
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
300
|
+
entry.replies = []
|
|
301
|
+
|
|
302
|
+
// ask the storage loop for the next chunk
|
|
303
|
+
entry.latch.closeUnsafe()
|
|
304
|
+
const message = entry.messages.values().next().value
|
|
305
|
+
if (!message) return
|
|
306
|
+
waitingStorageRequests.set(requestId, message)
|
|
307
|
+
storageLatch.openUnsafe()
|
|
308
|
+
}
|
|
309
|
+
})
|
|
310
|
+
|
|
311
|
+
const replyFromStorage = (message: Message.OutgoingRequest<any>) =>
|
|
312
|
+
Effect.uninterruptibleMask((restore) =>
|
|
313
|
+
Effect.gen(function*() {
|
|
314
|
+
const requestId = message.envelope.requestId
|
|
315
|
+
let entry = storageRequests.get(requestId)
|
|
316
|
+
if (!entry) {
|
|
317
|
+
const state = {
|
|
318
|
+
latch: Latch.makeUnsafe(false),
|
|
319
|
+
messages: new Set<Message.OutgoingRequest<any>>(),
|
|
320
|
+
replies: [] as Array<Reply.Reply<any>>
|
|
316
321
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
322
|
+
entry = Object.assign(state, { pump: yield* Effect.forkIn(pumpReplies(requestId, state), runnersScope) })
|
|
323
|
+
storageRequests.set(requestId, entry)
|
|
324
|
+
waitingStorageRequests.set(requestId, message)
|
|
325
|
+
}
|
|
326
|
+
const current = entry
|
|
327
|
+
current.messages.add(message)
|
|
328
|
+
// A waiter that joins an existing entry, such as a duplicate, reads
|
|
329
|
+
// now. A reply committed without a notification would otherwise wait
|
|
330
|
+
// for the next poll.
|
|
331
|
+
storageLatch.openUnsafe()
|
|
332
|
+
return yield* restore(Fiber.join(current.pump)).pipe(
|
|
333
|
+
Effect.ensuring(Effect.suspend(() => {
|
|
334
|
+
current.messages.delete(message)
|
|
335
|
+
if (current.messages.size === 0) {
|
|
336
|
+
removeStorageRequest(requestId, current)
|
|
337
|
+
return Fiber.interrupt(current.pump)
|
|
338
|
+
}
|
|
339
|
+
// The storage loop decodes replies using the waiting message.
|
|
340
|
+
if (waitingStorageRequests.get(requestId) === message) {
|
|
341
|
+
waitingStorageRequests.set(requestId, current.messages.values().next().value!)
|
|
342
|
+
}
|
|
343
|
+
return Effect.void
|
|
344
|
+
}))
|
|
345
|
+
)
|
|
346
|
+
})
|
|
347
|
+
)
|
|
348
|
+
|
|
349
|
+
// A request that may already be processing has to read its replies back
|
|
350
|
+
// from storage. A local reply handler wakes the storage loop, so streams do
|
|
351
|
+
// not have to wait for the next poll.
|
|
352
|
+
const replyFromStorageWithWake = (message: Message.OutgoingRequest<any>) =>
|
|
353
|
+
Effect.raceFirst(
|
|
354
|
+
replyFromStorage(message),
|
|
355
|
+
storage.registerReplyHandler(
|
|
356
|
+
new Message.OutgoingRequest({ ...message, respond: () => storageLatch.open })
|
|
357
|
+
).pipe(Effect.ignore, Effect.andThen(Effect.never))
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
// Stream replies stay on the storage loop, which delivers chunks in order
|
|
361
|
+
// and waits for their acks.
|
|
362
|
+
const canReplyLocally = (message: Message.OutgoingRequest<any>) => {
|
|
363
|
+
const rpc = message.rpc as any as Rpc.AnyWithProps
|
|
364
|
+
return storage !== MessageStorage.noop && Context.get(rpc.annotations, Persisted) &&
|
|
365
|
+
!RpcSchema.isStreamSchema(rpc.successSchema)
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// A request can be processed as soon as it is saved, so its reply handler is
|
|
369
|
+
// registered first. `registerReplyHandler` registers as soon as it starts,
|
|
370
|
+
// so a fresh request gets its reply from the handler without reading it
|
|
371
|
+
// back from storage.
|
|
372
|
+
const notifyLocalRequest = Effect.fnUntraced(function*(
|
|
373
|
+
message: Message.OutgoingRequest<any>,
|
|
374
|
+
notifyEntity: (message: Message.Outgoing<any>) => Effect.Effect<void>
|
|
375
|
+
) {
|
|
376
|
+
const handler = yield* Effect.forkScoped(storage.registerReplyHandler(message), { startImmediately: true })
|
|
377
|
+
return yield* notifyWith(message, (message, duplicate) => {
|
|
378
|
+
const outgoing = message as Message.OutgoingRequest<any>
|
|
379
|
+
// A duplicate is answered under its original request id.
|
|
380
|
+
if (duplicate) {
|
|
381
|
+
return Fiber.interrupt(handler).pipe(
|
|
382
|
+
Effect.andThen(notifyEntity(message)),
|
|
383
|
+
Effect.andThen(replyFromStorageWithWake(outgoing))
|
|
384
|
+
)
|
|
385
|
+
}
|
|
386
|
+
// The handler can be dropped, for example when its shard moves or a
|
|
387
|
+
// commit error hides the notification. The reply is then in storage.
|
|
388
|
+
return notifyEntity(message).pipe(
|
|
389
|
+
Effect.andThen(Fiber.join(handler)),
|
|
390
|
+
Effect.catchTag("EntityNotAssignedToRunner", () => replyFromStorage(outgoing))
|
|
320
391
|
)
|
|
321
|
-
|
|
392
|
+
})
|
|
393
|
+
}, Effect.scoped)
|
|
322
394
|
|
|
323
395
|
const storageLatch = Latch.makeUnsafe(false)
|
|
324
396
|
if (storage !== MessageStorage.noop) {
|
|
@@ -415,22 +487,23 @@ export const make: (
|
|
|
415
487
|
})
|
|
416
488
|
},
|
|
417
489
|
notifyLocal(options) {
|
|
418
|
-
|
|
490
|
+
const message = options.message
|
|
491
|
+
const notifyEntity = (message: Message.Outgoing<any>) =>
|
|
492
|
+
Effect.catchTag(
|
|
493
|
+
options.notify(Message.incomingLocalFromOutgoing(message)),
|
|
494
|
+
"EntityNotAssignedToRunner",
|
|
495
|
+
() => Effect.void
|
|
496
|
+
)
|
|
497
|
+
if (message._tag === "OutgoingRequest" && !options.discard && !options.storageOnly && canReplyLocally(message)) {
|
|
498
|
+
return notifyLocalRequest(message, notifyEntity)
|
|
499
|
+
}
|
|
500
|
+
return notifyWith(message, (message) => {
|
|
419
501
|
if (options.discard || message._tag === "OutgoingEnvelope") {
|
|
420
|
-
return
|
|
421
|
-
options.notify(Message.incomingLocalFromOutgoing(message)),
|
|
422
|
-
"EntityNotAssignedToRunner",
|
|
423
|
-
() => Effect.void
|
|
424
|
-
)
|
|
425
|
-
} else if (!duplicate && options.storageOnly !== true) {
|
|
426
|
-
return options.notify(Message.incomingLocalFromOutgoing(message)).pipe(
|
|
427
|
-
Effect.andThen(storage.registerReplyHandler(message)),
|
|
428
|
-
Effect.catchTag("EntityNotAssignedToRunner", () => replyFromStorage(message))
|
|
429
|
-
)
|
|
502
|
+
return notifyEntity(message)
|
|
430
503
|
}
|
|
431
|
-
return
|
|
432
|
-
|
|
433
|
-
|
|
504
|
+
return Effect.andThen(
|
|
505
|
+
notifyEntity(message),
|
|
506
|
+
options.storageOnly ? replyFromStorage(message) : replyFromStorageWithWake(message)
|
|
434
507
|
)
|
|
435
508
|
})
|
|
436
509
|
}
|
package/src/cluster/Sharding.ts
CHANGED
|
@@ -27,6 +27,7 @@ import * as HashRing from "../HashRing.ts"
|
|
|
27
27
|
import * as InternalRecord from "../internal/record.ts"
|
|
28
28
|
import * as Latch from "../Latch.ts"
|
|
29
29
|
import * as Layer from "../Layer.ts"
|
|
30
|
+
import * as Metric from "../Metric.ts"
|
|
30
31
|
import * as MutableHashMap from "../MutableHashMap.ts"
|
|
31
32
|
import * as MutableHashSet from "../MutableHashSet.ts"
|
|
32
33
|
import * as MutableRef from "../MutableRef.ts"
|
|
@@ -141,6 +142,7 @@ export class Sharding extends Context.Service<Sharding, {
|
|
|
141
142
|
readonly maxIdleTime?: Input | undefined
|
|
142
143
|
readonly concurrency?: number | "unbounded" | undefined
|
|
143
144
|
readonly mailboxCapacity?: number | "unbounded" | undefined
|
|
145
|
+
readonly mailboxMetrics?: boolean | undefined
|
|
144
146
|
readonly disableFatalDefects?: boolean | undefined
|
|
145
147
|
readonly defectRetryPolicy?: Schedule.Schedule<any, unknown> | undefined
|
|
146
148
|
readonly spanAttributes?: Record<string, string> | undefined
|
|
@@ -276,6 +278,17 @@ const make = Effect.gen(function*() {
|
|
|
276
278
|
|
|
277
279
|
// the active shards are the ones that we have acquired the lock for
|
|
278
280
|
const acquiredShards = MutableHashSet.empty<ShardId>()
|
|
281
|
+
// shards still held by this runner while their entities stop and their locks
|
|
282
|
+
// are released
|
|
283
|
+
const releasingShards = MutableHashSet.empty<ShardId>()
|
|
284
|
+
// The releasing gauge reports to the metric registry and attributes the
|
|
285
|
+
// layer was built with.
|
|
286
|
+
const updateReleasingShardsGauge = () =>
|
|
287
|
+
ClusterMetrics.shardsReleasing.updateUnsafe(BigInt(MutableHashSet.size(releasingShards)), services)
|
|
288
|
+
const updateShardGauges = () => {
|
|
289
|
+
ClusterMetrics.shards.updateUnsafe(BigInt(MutableHashSet.size(acquiredShards)), Context.empty())
|
|
290
|
+
updateReleasingShardsGauge()
|
|
291
|
+
}
|
|
279
292
|
const activeShardsLatch = yield* Latch.make(false)
|
|
280
293
|
// open once shutdown starts handing every shard off
|
|
281
294
|
const handoffLatch = Latch.makeUnsafe(false)
|
|
@@ -343,7 +356,9 @@ const make = Effect.gen(function*() {
|
|
|
343
356
|
// This should be shutdown last, when all entities have been shutdown, to
|
|
344
357
|
// allow them to move to another runner.
|
|
345
358
|
|
|
346
|
-
|
|
359
|
+
// Keep startup fibers behind singleton initialization without moving resource
|
|
360
|
+
// acquisition (and therefore changing the shutdown finalizer order).
|
|
361
|
+
const singletonsReady = Latch.makeUnsafe(false)
|
|
347
362
|
// Hands every held shard off on shutdown, set when this is a runner
|
|
348
363
|
let handoff: Effect.Effect<void> = Effect.void
|
|
349
364
|
// Shards whose entities must be force interrupted and locks fully released
|
|
@@ -352,6 +367,7 @@ const make = Effect.gen(function*() {
|
|
|
352
367
|
const initialRunnerAddress = getRunnerAddress()
|
|
353
368
|
if (initialRunnerAddress) {
|
|
354
369
|
const selfAddress = initialRunnerAddress
|
|
370
|
+
updateReleasingShardsGauge()
|
|
355
371
|
yield* Scope.addFinalizerExit(shardingScope, () => {
|
|
356
372
|
// the locks expire over time, so if this fails we ignore it
|
|
357
373
|
return Effect.ignore(runnerStorage.releaseAll(selfAddress))
|
|
@@ -405,6 +421,7 @@ const make = Effect.gen(function*() {
|
|
|
405
421
|
for (const shardId of shardIds) {
|
|
406
422
|
MutableHashSet.remove(releasingShards, shardId)
|
|
407
423
|
MutableHashSet.remove(forceReleasingShards, shardId)
|
|
424
|
+
updateReleasingShardsGauge()
|
|
408
425
|
// During shutdown, parked waiters are interrupted: this runner will
|
|
409
426
|
// never observe the reply. During a rebalance the waiters are resumed
|
|
410
427
|
// with `EntityNotAssignedToRunner`, and the client falls back to
|
|
@@ -419,22 +436,30 @@ const make = Effect.gen(function*() {
|
|
|
419
436
|
const retryShardRelease =
|
|
420
437
|
(annotations: { readonly fiber: string; readonly shardId?: ShardId }) =>
|
|
421
438
|
<A, E, R>(effect: Effect.Effect<A, E, R>) =>
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
Effect.
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
439
|
+
Effect.suspend(() => {
|
|
440
|
+
let lastWarning = -Infinity
|
|
441
|
+
return effect.pipe(
|
|
442
|
+
Effect.sandbox,
|
|
443
|
+
Effect.tapError((cause) =>
|
|
444
|
+
Effect.suspend(() => {
|
|
445
|
+
const now = clock.currentTimeMillisUnsafe()
|
|
446
|
+
if (now - lastWarning < 30_000) return Effect.void
|
|
447
|
+
lastWarning = now
|
|
448
|
+
return Effect.logWarning("Could not release shards, retrying", cause)
|
|
449
|
+
}).pipe(
|
|
450
|
+
Effect.annotateLogs({
|
|
451
|
+
module: "effect/cluster/Sharding",
|
|
452
|
+
runner: selfAddress,
|
|
453
|
+
...annotations
|
|
454
|
+
}),
|
|
455
|
+
// Effect.eventually retries immediately, so space failures to
|
|
456
|
+
// avoid hot-looping while storage is unavailable.
|
|
457
|
+
Effect.andThen(Effect.sleep(50))
|
|
458
|
+
)
|
|
459
|
+
),
|
|
460
|
+
Effect.eventually
|
|
461
|
+
)
|
|
462
|
+
})
|
|
438
463
|
const releaseShard = Effect.fnUntraced(
|
|
439
464
|
function*(shardId: ShardId) {
|
|
440
465
|
yield* runShardRelease(
|
|
@@ -446,6 +471,8 @@ const make = Effect.gen(function*() {
|
|
|
446
471
|
(effect, shardId) =>
|
|
447
472
|
effect.pipe(
|
|
448
473
|
retryShardRelease({ fiber: "releaseShard", shardId }),
|
|
474
|
+
Effect.timed,
|
|
475
|
+
Effect.flatMap(([duration]) => Metric.update(ClusterMetrics.shardReleaseDuration, duration)),
|
|
449
476
|
FiberMap.run(releaseShardsMap, shardId, { onlyIfMissing: true })
|
|
450
477
|
)
|
|
451
478
|
)
|
|
@@ -454,14 +481,62 @@ const make = Effect.gen(function*() {
|
|
|
454
481
|
// normal path while it is pending, otherwise the bulk release wipes a lock
|
|
455
482
|
// the runner already considers acquired.
|
|
456
483
|
const forcedShardReleasePending = () => forcedShardReleaseRunning || MutableHashSet.size(forceReleasingShards) > 0
|
|
484
|
+
// Repeat while pending, but no more often than every 30 seconds
|
|
485
|
+
const forcedReleaseWarningInterval = Duration.max(
|
|
486
|
+
Duration.fromInputUnsafe(config.shardLockExpiration),
|
|
487
|
+
Duration.seconds(30)
|
|
488
|
+
)
|
|
489
|
+
// Names the shards still blocking reacquisition and the entity types and
|
|
490
|
+
// singletons still stopping on them
|
|
491
|
+
const warnForcedReleasePending = Effect.suspend(() => {
|
|
492
|
+
const entityTypes = Arr.empty<string>()
|
|
493
|
+
for (const [entityType, state] of entityManagers) {
|
|
494
|
+
for (const shardId of forceReleasingShards) {
|
|
495
|
+
if (state.manager.hasServersUnsafe(shardId)) {
|
|
496
|
+
entityTypes.push(entityType)
|
|
497
|
+
break
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
const singletonNames = new Set<string>()
|
|
502
|
+
for (const shardId of forceReleasingShards) {
|
|
503
|
+
for (const [address] of singletons.get(shardId) ?? []) {
|
|
504
|
+
if (FiberMap.hasUnsafe(singletonFibers, address)) singletonNames.add(address.name)
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
MutableHashMap.forEach(stoppingSingletons, (_, address) => {
|
|
508
|
+
if (MutableHashSet.has(forceReleasingShards, address.shardId)) singletonNames.add(address.name)
|
|
509
|
+
})
|
|
510
|
+
return Effect.logWarning(
|
|
511
|
+
"Forced shard release is still pending; reacquisition is blocked until release completes"
|
|
512
|
+
).pipe(Effect.annotateLogs({
|
|
513
|
+
module: "effect/cluster/Sharding",
|
|
514
|
+
runner: selfAddress,
|
|
515
|
+
shardIds: Array.from(forceReleasingShards, String),
|
|
516
|
+
entityTypes,
|
|
517
|
+
singletonNames: [...singletonNames]
|
|
518
|
+
}))
|
|
519
|
+
})
|
|
457
520
|
const releaseForcedShards = Effect.suspend(() => {
|
|
458
521
|
if (forcedShardReleaseRunning || MutableHashSet.size(forceReleasingShards) === 0) {
|
|
459
522
|
return Effect.void
|
|
460
523
|
}
|
|
461
524
|
forcedShardReleaseRunning = true
|
|
462
525
|
const shardIds = [...forceReleasingShards]
|
|
463
|
-
return
|
|
464
|
-
|
|
526
|
+
return Effect.gen(function*() {
|
|
527
|
+
// Observe independently: a timeout around release cannot interrupt
|
|
528
|
+
// uninterruptible work, and must not allow locks to be reacquired.
|
|
529
|
+
const monitor = yield* warnForcedReleasePending.pipe(
|
|
530
|
+
Effect.repeat(Schedule.spaced(forcedReleaseWarningInterval)),
|
|
531
|
+
Effect.delay(config.shardLockExpiration),
|
|
532
|
+
Effect.interruptible,
|
|
533
|
+
Effect.forkIn(releaseScope)
|
|
534
|
+
)
|
|
535
|
+
yield* runShardRelease(shardIds, true, runnerStorage.releaseAll(selfAddress)).pipe(
|
|
536
|
+
retryShardRelease({ fiber: "releaseForcedShards" }),
|
|
537
|
+
Effect.ensuring(Fiber.interrupt(monitor))
|
|
538
|
+
)
|
|
539
|
+
}).pipe(
|
|
465
540
|
Effect.ensuring(Effect.sync(() => {
|
|
466
541
|
forcedShardReleaseRunning = false
|
|
467
542
|
activeShardsLatch.openUnsafe()
|
|
@@ -480,6 +555,7 @@ const make = Effect.gen(function*() {
|
|
|
480
555
|
})
|
|
481
556
|
|
|
482
557
|
yield* Effect.gen(function*() {
|
|
558
|
+
yield* singletonsReady.await
|
|
483
559
|
activeShardsLatch.openUnsafe()
|
|
484
560
|
|
|
485
561
|
while (true) {
|
|
@@ -494,6 +570,7 @@ const make = Effect.gen(function*() {
|
|
|
494
570
|
MutableHashSet.remove(acquiredShards, shardId)
|
|
495
571
|
MutableHashSet.add(releasingShards, shardId)
|
|
496
572
|
}
|
|
573
|
+
updateShardGauges()
|
|
497
574
|
|
|
498
575
|
if (MutableHashSet.size(releasingShards) > 0 || MutableHashSet.size(forceReleasingShards) > 0) {
|
|
499
576
|
yield* Effect.forkIn(syncSingletons, shardingScope)
|
|
@@ -555,13 +632,11 @@ const make = Effect.gen(function*() {
|
|
|
555
632
|
}
|
|
556
633
|
MutableHashSet.add(acquiredShards, shardId)
|
|
557
634
|
}
|
|
635
|
+
updateShardGauges()
|
|
558
636
|
if (acquired.length > 0) {
|
|
559
637
|
yield* notifyShardLockWaiters
|
|
560
638
|
yield* storageReadLatch.open
|
|
561
639
|
yield* Effect.forkIn(syncSingletons, shardingScope)
|
|
562
|
-
|
|
563
|
-
// update metrics
|
|
564
|
-
ClusterMetrics.shards.updateUnsafe(BigInt(MutableHashSet.size(acquiredShards)), Context.empty())
|
|
565
640
|
}
|
|
566
641
|
// the shutdown handoff releases the shards acquired here without waiting
|
|
567
642
|
yield* Effect.raceFirst(Effect.sleep(1000), handoffLatch.await)
|
|
@@ -589,7 +664,7 @@ const make = Effect.gen(function*() {
|
|
|
589
664
|
MutableHashSet.add(releasingShards, shardId)
|
|
590
665
|
MutableHashSet.add(forceReleasingShards, shardId)
|
|
591
666
|
}
|
|
592
|
-
|
|
667
|
+
updateShardGauges()
|
|
593
668
|
activeShardsLatch.openUnsafe()
|
|
594
669
|
|
|
595
670
|
return Effect.gen(function*() {
|
|
@@ -632,6 +707,7 @@ const make = Effect.gen(function*() {
|
|
|
632
707
|
MutableHashSet.add(releasingShards, shardId)
|
|
633
708
|
}
|
|
634
709
|
}
|
|
710
|
+
updateShardGauges()
|
|
635
711
|
if (MutableHashSet.size(releasingShards) > 0) {
|
|
636
712
|
yield* activeShardsLatch.open
|
|
637
713
|
}
|
|
@@ -655,6 +731,7 @@ const make = Effect.gen(function*() {
|
|
|
655
731
|
yield* Effect.suspend(() => shardLocksHealthyLatch.isOpen() ? refreshShardLocks : probeShardLocks).pipe(
|
|
656
732
|
Effect.repeat(Schedule.fixed(shardLockInterval)),
|
|
657
733
|
Effect.forever,
|
|
734
|
+
(effect) => Effect.andThen(singletonsReady.await, effect),
|
|
658
735
|
Effect.forkIn(shardingScope)
|
|
659
736
|
)
|
|
660
737
|
|
|
@@ -941,20 +1018,18 @@ const make = Effect.gen(function*() {
|
|
|
941
1018
|
}
|
|
942
1019
|
removableNotifications.clear()
|
|
943
1020
|
}
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
)
|
|
949
|
-
yield* Effect.forkIn(storage.resetAddress(address), shardingScope)
|
|
950
|
-
}
|
|
951
|
-
MutableHashSet.clear(resetAddresses)
|
|
1021
|
+
for (const address of resetAddresses) {
|
|
1022
|
+
yield* Effect.logWarning("Could not find entity manager for address, retrying").pipe(
|
|
1023
|
+
Effect.annotateLogs({ address })
|
|
1024
|
+
)
|
|
952
1025
|
}
|
|
953
|
-
// Capture claims
|
|
954
|
-
//
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
1026
|
+
// Capture claims for unregistered entity types, and claims skipped
|
|
1027
|
+
// because of the entity cap. They are reset in one storage operation
|
|
1028
|
+
// after releasing the read lock, and before the next read starts.
|
|
1029
|
+
let addressesToReset: Array<EntityAddress> | undefined
|
|
1030
|
+
if (MutableHashSet.size(resetAddresses) > 0 || MutableHashSet.size(cappedAddresses) > 0) {
|
|
1031
|
+
addressesToReset = [...resetAddresses, ...cappedAddresses]
|
|
1032
|
+
MutableHashSet.clear(resetAddresses)
|
|
958
1033
|
MutableHashSet.clear(cappedAddresses)
|
|
959
1034
|
}
|
|
960
1035
|
|
|
@@ -966,8 +1041,8 @@ const make = Effect.gen(function*() {
|
|
|
966
1041
|
resetRequestIds.length = 0
|
|
967
1042
|
}
|
|
968
1043
|
|
|
969
|
-
if (
|
|
970
|
-
yield* Effect.ignore(storage.resetAddresses(
|
|
1044
|
+
if (addressesToReset !== undefined) {
|
|
1045
|
+
yield* Effect.ignore(storage.resetAddresses(addressesToReset))
|
|
971
1046
|
}
|
|
972
1047
|
|
|
973
1048
|
// A full batch means more messages could be waiting; start the next
|
|
@@ -1796,6 +1871,8 @@ const make = Effect.gen(function*() {
|
|
|
1796
1871
|
(stops) => Effect.all(stops, { discard: true })
|
|
1797
1872
|
)
|
|
1798
1873
|
|
|
1874
|
+
singletonsReady.openUnsafe()
|
|
1875
|
+
|
|
1799
1876
|
// --- Entities ---
|
|
1800
1877
|
|
|
1801
1878
|
const reaper = yield* EntityReaper
|
|
@@ -1851,6 +1928,9 @@ const make = Effect.gen(function*() {
|
|
|
1851
1928
|
yield* withStorageReadLock(Effect.sync(() => {
|
|
1852
1929
|
entityRegistrationStartMillis ??= clock.currentTimeMillisUnsafe()
|
|
1853
1930
|
entityManagers.set(entity.type, state)
|
|
1931
|
+
// persisted messages read before this registration were reset, so
|
|
1932
|
+
// read storage again instead of waiting for the next poll interval
|
|
1933
|
+
storageReadLatch.openUnsafe()
|
|
1854
1934
|
if (entityManagerLatches.has(entity.type)) {
|
|
1855
1935
|
entityManagerLatches.get(entity.type)!.openUnsafe()
|
|
1856
1936
|
entityManagerLatches.delete(entity.type)
|
|
@@ -85,6 +85,8 @@ export class ShardingConfig extends Context.Service<ShardingConfig, {
|
|
|
85
85
|
readonly shardLockExpiration: Duration.Input
|
|
86
86
|
/**
|
|
87
87
|
* Disable the use of advisory locks for shard locking.
|
|
88
|
+
*
|
|
89
|
+
* PGlite clients never use advisory locks.
|
|
88
90
|
*/
|
|
89
91
|
readonly shardLockDisableAdvisory: boolean
|
|
90
92
|
/**
|
|
@@ -97,6 +99,14 @@ export class ShardingConfig extends Context.Service<ShardingConfig, {
|
|
|
97
99
|
* The default capacity of the mailbox for entities.
|
|
98
100
|
*/
|
|
99
101
|
readonly entityMailboxCapacity: number | "unbounded"
|
|
102
|
+
/**
|
|
103
|
+
* Report the mailbox size of each resident entity with the
|
|
104
|
+
* `effect_cluster_entity_mailbox_size` gauge, unless overridden by the
|
|
105
|
+
* `mailboxMetrics` entity option.
|
|
106
|
+
*
|
|
107
|
+
* Defaults to `false`.
|
|
108
|
+
*/
|
|
109
|
+
readonly entityMailboxMetrics: boolean
|
|
100
110
|
/**
|
|
101
111
|
* The maximum number of entities that can be resident on this runner at the
|
|
102
112
|
* same time.
|
|
@@ -188,6 +198,7 @@ export const defaults: ShardingConfig["Service"] = {
|
|
|
188
198
|
shardLockExpiration: Duration.seconds(35),
|
|
189
199
|
shardLockDisableAdvisory: false,
|
|
190
200
|
entityMailboxCapacity: 4096,
|
|
201
|
+
entityMailboxMetrics: false,
|
|
191
202
|
maxResidentEntities: 10_000,
|
|
192
203
|
unprocessedMessageBatchSize: 1024,
|
|
193
204
|
entityMaxIdleTime: Duration.minutes(1),
|
|
@@ -307,6 +318,10 @@ export const config: Config.Config<ShardingConfig["Service"]> = Config.all({
|
|
|
307
318
|
Config.withDefault(defaults.entityMailboxCapacity)
|
|
308
319
|
// Config.withDescription("The default capacity of the mailbox for entities.")
|
|
309
320
|
),
|
|
321
|
+
entityMailboxMetrics: Config.Boolean("entityMailboxMetrics").pipe(
|
|
322
|
+
Config.withDefault(defaults.entityMailboxMetrics)
|
|
323
|
+
// Config.withDescription("Report the mailbox size of each resident entity.")
|
|
324
|
+
),
|
|
310
325
|
maxResidentEntities: Config.schema(
|
|
311
326
|
Schema.Int.check(Schema.isGreaterThan(0)),
|
|
312
327
|
"maxResidentEntities"
|