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
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
* @stability unstable
|
|
11
11
|
* @since 4.0.0
|
|
12
12
|
*/
|
|
13
|
+
import * as Arr from "../Array.js";
|
|
14
|
+
import * as Cause from "../Cause.js";
|
|
13
15
|
import * as Context from "../Context.js";
|
|
14
16
|
import * as Effect from "../Effect.js";
|
|
15
17
|
import * as FiberMap from "../FiberMap.js";
|
|
@@ -23,12 +25,15 @@ import * as Queue from "../Queue.js";
|
|
|
23
25
|
import { Reactivity } from "../reactivity/Reactivity.js";
|
|
24
26
|
import * as ReactivityLayer from "../reactivity/Reactivity.js";
|
|
25
27
|
import * as Redacted from "../Redacted.js";
|
|
28
|
+
import { CurrentLogAnnotations } from "../References.js";
|
|
29
|
+
import * as Result from "../Result.js";
|
|
26
30
|
import * as Schedule from "../Schedule.js";
|
|
27
31
|
import * as Schema from "../Schema.js";
|
|
28
32
|
import * as SchemaGetter from "../SchemaGetter.js";
|
|
29
33
|
import { Entry, EventJournal, makeEntryIdUnsafe } from "./EventJournal.js";
|
|
30
34
|
import * as EventLogEncryption from "./EventLogEncryption.js";
|
|
31
35
|
import { StoreId } from "./EventLogMessage.js";
|
|
36
|
+
import { setAnchor } from "./internal/conflicts.js";
|
|
32
37
|
/**
|
|
33
38
|
* Service for writing typed event-log events through registered handlers.
|
|
34
39
|
*
|
|
@@ -171,6 +176,65 @@ export const HandlersTypeId = "~effect/eventlog/EventLog/Handlers";
|
|
|
171
176
|
export class CurrentStoreId extends /*#__PURE__*/Context.Reference("effect/eventlog/EventLog/CurrentStoreId", {
|
|
172
177
|
defaultValue: /*#__PURE__*/constant(/*#__PURE__*/StoreId.make("default"))
|
|
173
178
|
}) {}
|
|
179
|
+
/**
|
|
180
|
+
* Context reference for a transaction that wraps the event handlers of each
|
|
181
|
+
* batch replayed from a remote and of each local `write` or `writeMany`.
|
|
182
|
+
*
|
|
183
|
+
* **When to use**
|
|
184
|
+
*
|
|
185
|
+
* Use when handlers project into a store with transactions, such as
|
|
186
|
+
* `sql.withTransaction` or an IndexedDB transaction over the projection
|
|
187
|
+
* tables, so a batch of N events commits once instead of N times.
|
|
188
|
+
*
|
|
189
|
+
* **Details**
|
|
190
|
+
*
|
|
191
|
+
* The journal performs no I/O while the transaction is open: it reads replay
|
|
192
|
+
* conflicts before the transaction starts and commits the batch after it
|
|
193
|
+
* completes. Defaults to running the handlers without a transaction.
|
|
194
|
+
*
|
|
195
|
+
* If the transaction fails, the journal commits nothing from the batch. For a
|
|
196
|
+
* replayed batch, the remote is subscribed again after a backoff of up to 10
|
|
197
|
+
* seconds and the batch is delivered again, so later batches from that remote
|
|
198
|
+
* wait until it succeeds; local writes and other remotes are not blocked. A
|
|
199
|
+
* local write fails with the error and is not retried.
|
|
200
|
+
*
|
|
201
|
+
* **Gotchas**
|
|
202
|
+
*
|
|
203
|
+
* - A replayed entry that fails to decode, or whose handler fails or dies,
|
|
204
|
+
* fails the whole batch, which is retried as above. A failure that repeats
|
|
205
|
+
* on every attempt, such as a payload written by a newer schema, stops sync
|
|
206
|
+
* from that remote until the app is updated to handle it.
|
|
207
|
+
* - In a local write, an error returned by a handler fails the transaction
|
|
208
|
+
* and the write, and the journal commits none of its events.
|
|
209
|
+
* - Failures that abort the underlying transaction fail the whole batch, even
|
|
210
|
+
* when the handler recovers from them. In IndexedDB, any failed request that
|
|
211
|
+
* is not prevented aborts the whole transaction, and in PostgreSQL so does a
|
|
212
|
+
* failed statement outside a savepoint.
|
|
213
|
+
* - Failing the batch does not undo side effects of handlers that already ran.
|
|
214
|
+
* Only changes made inside a transaction that rolls back are undone.
|
|
215
|
+
* - Replay handlers must tolerate running more than once for the same entry.
|
|
216
|
+
* - Unless the transaction and the journal share a database connection, the
|
|
217
|
+
* transaction commits before the journal does, and the two commits are not
|
|
218
|
+
* atomic. A crash between them replays a remote batch on restart, but a
|
|
219
|
+
* local write is lost from the journal while its projection changes remain.
|
|
220
|
+
* - An IndexedDB transaction commits once it has no pending requests and
|
|
221
|
+
* control returns to the event loop. A custom wrapper must stop the fiber
|
|
222
|
+
* from yielding to the scheduler while it is open, by providing
|
|
223
|
+
* `References.PreventSchedulerYield` as `withTransaction` from
|
|
224
|
+
* `@effect/platform-browser` does. Otherwise it can commit partway through a
|
|
225
|
+
* batch, and the remaining handlers fail.
|
|
226
|
+
* - The transaction stays open for the whole batch, so other read-write
|
|
227
|
+
* transactions on the same tables wait for it.
|
|
228
|
+
* - The transaction must not change the error or success of the wrapped
|
|
229
|
+
* effect. Convert its own failures into defects.
|
|
230
|
+
*
|
|
231
|
+
* @stability unstable
|
|
232
|
+
* @category services
|
|
233
|
+
* @since 4.0.6
|
|
234
|
+
*/
|
|
235
|
+
export class HandlerTransaction extends /*#__PURE__*/Context.Reference("effect/eventlog/EventLog/HandlerTransaction", {
|
|
236
|
+
defaultValue: /*#__PURE__*/constant(identity)
|
|
237
|
+
}) {}
|
|
174
238
|
const RedactedUint8Array = /*#__PURE__*/Schema.Uint8ArrayFromBase64.pipe(/*#__PURE__*/Schema.decodeTo(/*#__PURE__*/Schema.Redacted(Schema.Uint8Array), {
|
|
175
239
|
decode: /*#__PURE__*/SchemaGetter.transform(value => Redacted.make(value)),
|
|
176
240
|
encode: /*#__PURE__*/SchemaGetter.transform(value => Redacted.value(value))
|
|
@@ -282,19 +346,7 @@ export const group = (group, f) => Layer.effectDiscard(Effect.gen(function* () {
|
|
|
282
346
|
});
|
|
283
347
|
}
|
|
284
348
|
}));
|
|
285
|
-
|
|
286
|
-
* Registers a compaction handler for an event group.
|
|
287
|
-
*
|
|
288
|
-
* **Details**
|
|
289
|
-
*
|
|
290
|
-
* During remote replay, matching entries are decoded, grouped by primary key, and
|
|
291
|
-
* passed to the compaction effect, which may write replacement entries.
|
|
292
|
-
*
|
|
293
|
-
* @stability unstable
|
|
294
|
-
* @category compaction
|
|
295
|
-
* @since 4.0.0
|
|
296
|
-
*/
|
|
297
|
-
export const groupCompaction = (group, effect) => Layer.effectDiscard(Effect.gen(function* () {
|
|
349
|
+
const registerBatchCompaction = (group, effect) => Layer.effectDiscard(Effect.gen(function* () {
|
|
298
350
|
const registry = yield* Registry;
|
|
299
351
|
const services = yield* Effect.context();
|
|
300
352
|
yield* registry.registerCompaction({
|
|
@@ -304,12 +356,12 @@ export const groupCompaction = (group, effect) => Layer.effectDiscard(Effect.gen
|
|
|
304
356
|
write
|
|
305
357
|
}) {
|
|
306
358
|
const isEventTag = tag => Object.hasOwn(group.events, tag);
|
|
307
|
-
const decodePayload = (tag, payload) => Schema.decodeUnknownEffect(group.events[tag].payloadSchemaBinary)(payload).pipe(Effect.updateContext(input => Context.merge(services, input))
|
|
308
|
-
const
|
|
359
|
+
const decodePayload = (tag, payload) => Schema.decodeUnknownEffect(group.events[tag].payloadSchemaBinary)(payload).pipe(Effect.updateContext(input => Context.merge(services, input)));
|
|
360
|
+
const writeFrom = Effect.fnUntraced(function* (source, tag, payload) {
|
|
309
361
|
const event = Object.hasOwn(group.events, tag) ? group.events[tag] : undefined;
|
|
310
362
|
const entry = new Entry({
|
|
311
363
|
id: makeEntryIdUnsafe({
|
|
312
|
-
msecs:
|
|
364
|
+
msecs: source.createdAtMillis
|
|
313
365
|
}),
|
|
314
366
|
event: tag,
|
|
315
367
|
payload: yield* Schema.encodeUnknownEffect(event.payloadSchemaBinary)(payload).pipe(Effect.orDie),
|
|
@@ -317,45 +369,150 @@ export const groupCompaction = (group, effect) => Layer.effectDiscard(Effect.gen
|
|
|
317
369
|
}, {
|
|
318
370
|
disableChecks: true
|
|
319
371
|
});
|
|
320
|
-
yield* write(entry);
|
|
372
|
+
yield* write(entry, source);
|
|
321
373
|
});
|
|
322
|
-
const
|
|
374
|
+
const forward = entry => write(entry);
|
|
375
|
+
const batch = [];
|
|
323
376
|
for (const entry of entries) {
|
|
324
377
|
if (!isEventTag(entry.event)) {
|
|
325
378
|
continue;
|
|
326
379
|
}
|
|
327
|
-
const payload = yield* decodePayload(entry.event, entry.payload);
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
if (record) {
|
|
334
|
-
record.entries.push(entry);
|
|
335
|
-
record.taggedPayloads.push(taggedPayload);
|
|
336
|
-
} else {
|
|
337
|
-
byPrimaryKey.set(entry.primaryKey, {
|
|
338
|
-
entries: [entry],
|
|
339
|
-
taggedPayloads: [taggedPayload]
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
for (const [primaryKey, {
|
|
344
|
-
entries,
|
|
345
|
-
taggedPayloads
|
|
346
|
-
}] of byPrimaryKey) {
|
|
347
|
-
yield* Effect.orDie(effect({
|
|
348
|
-
primaryKey,
|
|
349
|
-
entries,
|
|
350
|
-
events: taggedPayloads,
|
|
351
|
-
write(tag, payload) {
|
|
352
|
-
return Effect.orDie(writePayload(entries[0].createdAtMillis, tag, payload));
|
|
380
|
+
const payload = yield* Effect.result(decodePayload(entry.event, entry.payload));
|
|
381
|
+
batch.push({
|
|
382
|
+
entry,
|
|
383
|
+
event: Result.isFailure(payload) ? undefined : {
|
|
384
|
+
_tag: entry.event,
|
|
385
|
+
payload: payload.success
|
|
353
386
|
}
|
|
354
|
-
})
|
|
387
|
+
});
|
|
355
388
|
}
|
|
389
|
+
yield* Effect.orDie(effect({
|
|
390
|
+
entries: batch,
|
|
391
|
+
writeFrom,
|
|
392
|
+
forward
|
|
393
|
+
}).pipe(Effect.updateContext(input => Context.merge(services, input))));
|
|
356
394
|
})
|
|
357
395
|
});
|
|
358
396
|
}));
|
|
397
|
+
/**
|
|
398
|
+
* Registers a batch compaction handler for an event group.
|
|
399
|
+
*
|
|
400
|
+
* **When to use**
|
|
401
|
+
*
|
|
402
|
+
* Use when an event under one primary key affects entries under other keys.
|
|
403
|
+
*
|
|
404
|
+
* **Details**
|
|
405
|
+
*
|
|
406
|
+
* The compaction effect receives every entry for the group in batch order, with
|
|
407
|
+
* its decoded event or `event: undefined` if the payload cannot be decoded.
|
|
408
|
+
*
|
|
409
|
+
* Only entries that the effect outputs are kept:
|
|
410
|
+
*
|
|
411
|
+
* - `forward(entry)` keeps an input entry unchanged, with the same id, payload,
|
|
412
|
+
* and primary key.
|
|
413
|
+
* - `write(tag, payload)` encodes a replacement entry anchored to the first
|
|
414
|
+
* entry in the batch, with a fresh id in that entry's millisecond.
|
|
415
|
+
*
|
|
416
|
+
* Entries that are neither forwarded nor replaced are dropped, including entries
|
|
417
|
+
* that could not be decoded. During remote replay, kept entries are replayed in
|
|
418
|
+
* the id order of their anchors, then in write order, and a replacement's
|
|
419
|
+
* conflicts are the stored entries newer than its anchor.
|
|
420
|
+
*
|
|
421
|
+
* **Gotchas**
|
|
422
|
+
*
|
|
423
|
+
* Compaction runs before conflicts are read, so it never sees stored entries.
|
|
424
|
+
* Collapsing several entries into one is only safe when no stored entry for
|
|
425
|
+
* the same event and primary key has an id between theirs. Otherwise that
|
|
426
|
+
* stored entry should have applied between the collapsed ones, and replicas
|
|
427
|
+
* that received the entries in separate batches end up different.
|
|
428
|
+
*
|
|
429
|
+
* @see {@link groupCompaction} for compaction grouped by primary key
|
|
430
|
+
*
|
|
431
|
+
* @stability unstable
|
|
432
|
+
* @category compaction
|
|
433
|
+
* @since 4.0.0
|
|
434
|
+
*/
|
|
435
|
+
export const groupBatchCompaction = (group, effect) => registerBatchCompaction(group, ({
|
|
436
|
+
entries,
|
|
437
|
+
writeFrom,
|
|
438
|
+
forward
|
|
439
|
+
}) => effect({
|
|
440
|
+
entries,
|
|
441
|
+
write: (tag, payload) => writeFrom(entries[0].entry, tag, payload),
|
|
442
|
+
forward
|
|
443
|
+
}));
|
|
444
|
+
/**
|
|
445
|
+
* Registers a compaction handler for an event group.
|
|
446
|
+
*
|
|
447
|
+
* **Details**
|
|
448
|
+
*
|
|
449
|
+
* During remote replay, decoded entries are grouped by primary key and passed to
|
|
450
|
+
* the compaction effect, which outputs the entries to keep:
|
|
451
|
+
*
|
|
452
|
+
* - `forward(entry)` keeps an input entry unchanged, with the same id, payload,
|
|
453
|
+
* and primary key.
|
|
454
|
+
* - `write(tag, payload)` encodes a replacement entry anchored to the first
|
|
455
|
+
* decoded entry for the primary key, with a fresh id in that entry's
|
|
456
|
+
* millisecond.
|
|
457
|
+
*
|
|
458
|
+
* Entries that are neither forwarded nor replaced are dropped. Entries that
|
|
459
|
+
* cannot be decoded are not passed to the effect and are kept unchanged.
|
|
460
|
+
* During remote replay, kept entries are replayed in the id order of their
|
|
461
|
+
* anchors, then in write order, and a replacement's conflicts are the stored
|
|
462
|
+
* entries newer than its anchor.
|
|
463
|
+
*
|
|
464
|
+
* **Gotchas**
|
|
465
|
+
*
|
|
466
|
+
* Compaction runs before conflicts are read, so it never sees stored entries.
|
|
467
|
+
* Collapsing several entries into one is only safe when no stored entry for
|
|
468
|
+
* the same event and primary key has an id between theirs. Otherwise that
|
|
469
|
+
* stored entry should have applied between the collapsed ones, and replicas
|
|
470
|
+
* that received the entries in separate batches end up different.
|
|
471
|
+
*
|
|
472
|
+
* @see {@link groupBatchCompaction} for compaction across primary keys
|
|
473
|
+
*
|
|
474
|
+
* @stability unstable
|
|
475
|
+
* @category compaction
|
|
476
|
+
* @since 4.0.0
|
|
477
|
+
*/
|
|
478
|
+
export const groupCompaction = (group, effect) => registerBatchCompaction(group, Effect.fnUntraced(function* ({
|
|
479
|
+
entries,
|
|
480
|
+
writeFrom,
|
|
481
|
+
forward
|
|
482
|
+
}) {
|
|
483
|
+
const byPrimaryKey = new Map();
|
|
484
|
+
for (const {
|
|
485
|
+
entry,
|
|
486
|
+
event
|
|
487
|
+
} of entries) {
|
|
488
|
+
if (event === undefined) {
|
|
489
|
+
yield* forward(entry);
|
|
490
|
+
continue;
|
|
491
|
+
}
|
|
492
|
+
const record = byPrimaryKey.get(entry.primaryKey);
|
|
493
|
+
if (record) {
|
|
494
|
+
record.entries.push(entry);
|
|
495
|
+
record.events.push(event);
|
|
496
|
+
} else {
|
|
497
|
+
byPrimaryKey.set(entry.primaryKey, {
|
|
498
|
+
entries: [entry],
|
|
499
|
+
events: [event]
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
for (const [primaryKey, {
|
|
504
|
+
entries,
|
|
505
|
+
events
|
|
506
|
+
}] of byPrimaryKey) {
|
|
507
|
+
yield* effect({
|
|
508
|
+
primaryKey,
|
|
509
|
+
entries,
|
|
510
|
+
events,
|
|
511
|
+
write: (tag, payload) => writeFrom(entries[0], tag, payload),
|
|
512
|
+
forward
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
}));
|
|
359
516
|
/**
|
|
360
517
|
* Registers reactivity keys to invalidate when events from a group are written or
|
|
361
518
|
* replayed.
|
|
@@ -386,49 +543,106 @@ export const groupReactivity = (group, keys) => Effect.gen(function* () {
|
|
|
386
543
|
* **Details**
|
|
387
544
|
*
|
|
388
545
|
* The returned handler decodes the entry and conflicts with the registered event
|
|
389
|
-
* schema, runs the matching handler with the supplied identity and store id,
|
|
390
|
-
*
|
|
546
|
+
* schema, runs the matching handler with the supplied identity and store id, and
|
|
547
|
+
* invalidates configured reactivity keys. Decode and handler failures are logged
|
|
548
|
+
* and fail the effect. Invalidations are deferred until the end of an enclosing
|
|
549
|
+
* `Reactivity.withBatch`.
|
|
391
550
|
*
|
|
392
551
|
* @stability unstable
|
|
393
552
|
* @category handlers
|
|
394
553
|
* @since 4.0.0
|
|
395
554
|
*/
|
|
396
|
-
export const makeReplayFromRemote = options =>
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
555
|
+
export const makeReplayFromRemote = options => {
|
|
556
|
+
const replayBatch = makeReplayBatchFromRemote(options);
|
|
557
|
+
return input => replayBatch([input]);
|
|
558
|
+
};
|
|
559
|
+
/**
|
|
560
|
+
* Replays a batch, merging each handler's context with the batch context once
|
|
561
|
+
* and decoding each conflict entry shared by several entries once. The batch
|
|
562
|
+
* state is created per execution, so transaction retries start fresh.
|
|
563
|
+
*/
|
|
564
|
+
const makeReplayBatchFromRemote = options => {
|
|
565
|
+
const replayEntry = makeReplayEntryFromRemote(options);
|
|
566
|
+
return batch => Effect.contextWith(context => {
|
|
567
|
+
const state = {
|
|
568
|
+
context,
|
|
569
|
+
handlerContexts: new Map(),
|
|
570
|
+
decodedConflicts: new Map()
|
|
410
571
|
};
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
572
|
+
return Effect.forEach(batch, input => replayEntry(input, state), {
|
|
573
|
+
discard: true
|
|
574
|
+
});
|
|
575
|
+
});
|
|
576
|
+
};
|
|
577
|
+
// An entry's context is the batch context plus its log annotations, so only
|
|
578
|
+
// the annotations need to be copied into the merged handler context.
|
|
579
|
+
const withEntryAnnotations = (context, entryContext) => Context.add(context, CurrentLogAnnotations, Context.get(entryContext, CurrentLogAnnotations));
|
|
580
|
+
const makeReplayEntryFromRemote = options => {
|
|
581
|
+
// Decoders depend only on the event schema, so they are shared across batches.
|
|
582
|
+
const decoders = new WeakMap();
|
|
583
|
+
const decoderFor = handler => {
|
|
584
|
+
let decoder = decoders.get(handler);
|
|
585
|
+
if (decoder === undefined) {
|
|
586
|
+
decoder = Schema.decodeUnknownEffect(handler.event.payloadSchemaBinary);
|
|
587
|
+
decoders.set(handler, decoder);
|
|
424
588
|
}
|
|
425
|
-
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
589
|
+
return decoder;
|
|
590
|
+
};
|
|
591
|
+
const contextFor = (batch, handler) => {
|
|
592
|
+
let context = batch.handlerContexts.get(handler);
|
|
593
|
+
if (context === undefined) {
|
|
594
|
+
context = Context.merge(handler.context, batch.context);
|
|
595
|
+
batch.handlerContexts.set(handler, context);
|
|
596
|
+
}
|
|
597
|
+
return context;
|
|
598
|
+
};
|
|
599
|
+
return Effect.fnUntraced(function* ({
|
|
600
|
+
conflicts,
|
|
601
|
+
entry
|
|
602
|
+
}, batch) {
|
|
603
|
+
const handler = options.handlers.get(entry.event);
|
|
604
|
+
if (!handler) {
|
|
605
|
+
return yield* Effect.logDebug(`Event handler not found for: "${entry.event}"`);
|
|
606
|
+
}
|
|
607
|
+
const decodePayload = decoderFor(handler);
|
|
608
|
+
const context = contextFor(batch, handler);
|
|
609
|
+
const conflictPayloads = new Array(conflicts.length);
|
|
610
|
+
for (let i = 0; i < conflicts.length; i++) {
|
|
611
|
+
const conflict = conflicts[i];
|
|
612
|
+
let decoded = batch.decodedConflicts.get(conflict);
|
|
613
|
+
if (!decoded) {
|
|
614
|
+
decoded = {
|
|
615
|
+
entry: conflict,
|
|
616
|
+
payload: yield* decodePayload(conflict.payload).pipe(Effect.updateContext(input => withEntryAnnotations(context, input)))
|
|
617
|
+
};
|
|
618
|
+
batch.decodedConflicts.set(conflict, decoded);
|
|
619
|
+
}
|
|
620
|
+
conflictPayloads[i] = decoded;
|
|
621
|
+
}
|
|
622
|
+
// Conflicts decode with the caller's Identity; the payload and handler use the log's.
|
|
623
|
+
yield* decodePayload(entry.payload).pipe(Effect.flatMap(payload => handler.handler({
|
|
624
|
+
storeId: options.storeId,
|
|
625
|
+
payload,
|
|
626
|
+
entry,
|
|
627
|
+
conflicts: conflictPayloads
|
|
628
|
+
})), Effect.updateContext(input => Context.add(withEntryAnnotations(context, input), Identity, options.identity)), Effect.asVoid);
|
|
629
|
+
yield* invalidateEntry(options.reactivity, options.reactivityKeys, entry);
|
|
630
|
+
}, Effect.tapCauseIf(cause => !Cause.hasInterruptsOnly(cause), Effect.logError), (effect, {
|
|
631
|
+
entry
|
|
632
|
+
}) => Effect.annotateLogs(effect, {
|
|
633
|
+
...options.logAnnotations,
|
|
634
|
+
entryId: entry.idString
|
|
635
|
+
}));
|
|
636
|
+
};
|
|
637
|
+
const invalidateEntry = (reactivity, reactivityKeys, entry) => {
|
|
638
|
+
const keys = Object.hasOwn(reactivityKeys, entry.event) ? reactivityKeys[entry.event] : undefined;
|
|
639
|
+
if (!keys) return Effect.void;
|
|
640
|
+
return Effect.forEach(keys, key => reactivity.invalidate({
|
|
641
|
+
[key]: [entry.primaryKey]
|
|
642
|
+
}), {
|
|
643
|
+
discard: true
|
|
644
|
+
});
|
|
645
|
+
};
|
|
432
646
|
const remoteRetrySchedule = /*#__PURE__*/Schedule.min([/*#__PURE__*/Schedule.exponential(200, 1.5), /*#__PURE__*/Schedule.spaced({
|
|
433
647
|
seconds: 10
|
|
434
648
|
})]);
|
|
@@ -438,7 +652,8 @@ const make = /*#__PURE__*/Effect.gen(function* () {
|
|
|
438
652
|
const journal = yield* EventJournal;
|
|
439
653
|
const registry = yield* Registry;
|
|
440
654
|
const reactivity = yield* Reactivity;
|
|
441
|
-
const
|
|
655
|
+
const handlerTransaction = yield* HandlerTransaction;
|
|
656
|
+
const replayFromRemote = makeReplayBatchFromRemote({
|
|
442
657
|
handlers: registry.handlers,
|
|
443
658
|
storeId,
|
|
444
659
|
identity,
|
|
@@ -449,66 +664,71 @@ const make = /*#__PURE__*/Effect.gen(function* () {
|
|
|
449
664
|
effect: "writeFromRemote"
|
|
450
665
|
}
|
|
451
666
|
});
|
|
452
|
-
const invalidateReactivityEntries = entries => Effect.
|
|
453
|
-
|
|
454
|
-
const keys = Object.hasOwn(registry.reactivityKeys, entry.event) ? registry.reactivityKeys[entry.event] : undefined;
|
|
455
|
-
if (!keys) {
|
|
456
|
-
continue;
|
|
457
|
-
}
|
|
458
|
-
for (const key of keys) {
|
|
459
|
-
reactivity.invalidateUnsafe({
|
|
460
|
-
[key]: [entry.primaryKey]
|
|
461
|
-
});
|
|
462
|
-
}
|
|
463
|
-
}
|
|
667
|
+
const invalidateReactivityEntries = entries => Effect.forEach(entries, entry => invalidateEntry(reactivity, registry.reactivityKeys, entry), {
|
|
668
|
+
discard: true
|
|
464
669
|
});
|
|
465
670
|
const runRemote = Effect.fnUntraced(function* (remote) {
|
|
466
|
-
const startSequence = yield* journal.nextRemoteSequence(remote.id);
|
|
467
671
|
yield* Effect.gen(function* () {
|
|
672
|
+
const startSequence = yield* journal.nextRemoteSequence(remote.id);
|
|
468
673
|
const changes = yield* remote.changes({
|
|
469
674
|
identity,
|
|
470
675
|
startSequence,
|
|
471
|
-
storeId
|
|
676
|
+
storeId,
|
|
677
|
+
knownEntries: journal.entriesById
|
|
472
678
|
});
|
|
473
679
|
while (true) {
|
|
474
680
|
const entries = yield* Queue.takeAll(changes);
|
|
475
681
|
yield* journal.writeFromRemote({
|
|
476
682
|
remoteId: remote.id,
|
|
477
|
-
entries
|
|
683
|
+
entries,
|
|
478
684
|
compact: registry.compactors.size > 0 ? Effect.fnUntraced(function* (remoteEntries) {
|
|
479
|
-
|
|
685
|
+
// The journal sorts the batch by anchor, so output order is irrelevant.
|
|
686
|
+
const output = [];
|
|
687
|
+
const inputs = new Map();
|
|
688
|
+
const outputCounts = new Map();
|
|
480
689
|
const compactable = new Map();
|
|
481
|
-
for (
|
|
482
|
-
|
|
483
|
-
|
|
690
|
+
for (const {
|
|
691
|
+
entry
|
|
692
|
+
} of remoteEntries) {
|
|
693
|
+
inputs.set(entry.idString, entry);
|
|
484
694
|
const compactor = registry.compactors.get(entry.event);
|
|
485
695
|
if (!compactor) {
|
|
486
|
-
|
|
696
|
+
output.push(entry);
|
|
487
697
|
continue;
|
|
488
698
|
}
|
|
489
|
-
let
|
|
490
|
-
if (!
|
|
491
|
-
|
|
492
|
-
compactable.set(compactor.effect,
|
|
699
|
+
let group = compactable.get(compactor.effect);
|
|
700
|
+
if (!group) {
|
|
701
|
+
group = [];
|
|
702
|
+
compactable.set(compactor.effect, group);
|
|
493
703
|
}
|
|
494
|
-
|
|
704
|
+
group.push(entry);
|
|
495
705
|
}
|
|
496
706
|
for (const [compact, entries] of compactable) {
|
|
497
707
|
yield* compact({
|
|
498
708
|
entries,
|
|
499
|
-
write(entry) {
|
|
709
|
+
write(entry, source) {
|
|
500
710
|
return Effect.sync(() => {
|
|
501
|
-
|
|
711
|
+
// Each output is ordered and conflict-checked by its source,
|
|
712
|
+
// then by write order, not by its own fresh id. An output
|
|
713
|
+
// without a known source stands for the group's first entry.
|
|
714
|
+
const anchor = inputs.get((source ?? entry).idString) ?? entries[0];
|
|
715
|
+
const index = outputCounts.get(anchor) ?? 0;
|
|
716
|
+
outputCounts.set(anchor, index + 1);
|
|
717
|
+
setAnchor(entry, anchor, index);
|
|
718
|
+
output.push(entry);
|
|
502
719
|
});
|
|
503
720
|
}
|
|
504
721
|
});
|
|
505
722
|
}
|
|
506
|
-
return
|
|
723
|
+
return output;
|
|
507
724
|
}) : undefined,
|
|
508
|
-
|
|
725
|
+
// A failed batch is not committed, so the remote redelivers it on retry.
|
|
726
|
+
effect: batch => handlerTransaction(replayFromRemote(batch)).pipe(Effect.orDie)
|
|
509
727
|
}).pipe(Effect.tap(({
|
|
510
728
|
duplicateEntries
|
|
511
|
-
}) => invalidateReactivityEntries(duplicateEntries)), journal.withLock(storeId)
|
|
729
|
+
}) => invalidateReactivityEntries(duplicateEntries)), journal.withLock(storeId),
|
|
730
|
+
// Outside the lock, so queries re-run after the journal transaction commits.
|
|
731
|
+
reactivity.withBatch);
|
|
512
732
|
}
|
|
513
733
|
}).pipe(Effect.scoped, Effect.catchCause(Effect.logError), Effect.repeat(remoteRetrySchedule), Effect.annotateLogs({
|
|
514
734
|
service: "EventLog",
|
|
@@ -518,7 +738,11 @@ const make = /*#__PURE__*/Effect.gen(function* () {
|
|
|
518
738
|
identity,
|
|
519
739
|
entries,
|
|
520
740
|
storeId
|
|
521
|
-
})
|
|
741
|
+
}).pipe(Effect.flatMap(acks => acks === undefined || acks.length === 0 ? Effect.void : journal.writeRemoteAcks({
|
|
742
|
+
remoteId: remote.id,
|
|
743
|
+
acks,
|
|
744
|
+
firstSequence: remote.firstSequence
|
|
745
|
+
}).pipe(journal.withLock(storeId)))));
|
|
522
746
|
const writeUntilSuccess = write.pipe(Effect.tapCause(Effect.logDebug), Effect.retry(remoteRetrySchedule));
|
|
523
747
|
yield* Effect.addFinalizer(() => Effect.ignore(write));
|
|
524
748
|
const changesSub = yield* journal.changes;
|
|
@@ -527,40 +751,45 @@ const make = /*#__PURE__*/Effect.gen(function* () {
|
|
|
527
751
|
yield* writeUntilSuccess;
|
|
528
752
|
return yield* Queue.take(changes).pipe(Effect.andThen(writeUntilSuccess), Effect.catchCause(Effect.logError), Effect.forever);
|
|
529
753
|
}, Effect.scoped, Effect.provideService(Identity, identity), Effect.orDie);
|
|
530
|
-
const
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
754
|
+
const writeEvents = events => Effect.forEach(events, ({
|
|
755
|
+
event,
|
|
756
|
+
payload
|
|
757
|
+
}) => {
|
|
758
|
+
const handler = registry.handlers.get(event);
|
|
759
|
+
if (handler === undefined) {
|
|
760
|
+
return Effect.die(`Event handler not found for: "${event}"`);
|
|
761
|
+
}
|
|
762
|
+
return Schema.encodeUnknownEffect(handler.event.payloadSchemaBinary)(payload).pipe(Effect.orDie, Effect.map(encoded => ({
|
|
763
|
+
handler,
|
|
535
764
|
payload,
|
|
536
|
-
|
|
765
|
+
entry: {
|
|
766
|
+
event,
|
|
767
|
+
primaryKey: handler.event.primaryKey(payload),
|
|
768
|
+
payload: encoded
|
|
769
|
+
}
|
|
770
|
+
})));
|
|
771
|
+
}).pipe(Effect.flatMap(writes => journal.withLock(storeId)(journal.writeMany({
|
|
772
|
+
entries: Arr.map(writes, write => write.entry),
|
|
773
|
+
effect: written => handlerTransaction(Effect.forEach(written, (entry, i) => {
|
|
774
|
+
const {
|
|
775
|
+
handler,
|
|
776
|
+
payload
|
|
777
|
+
} = writes[i];
|
|
778
|
+
return handler.handler({
|
|
537
779
|
storeId,
|
|
538
|
-
payload
|
|
780
|
+
payload,
|
|
539
781
|
entry,
|
|
540
782
|
conflicts: []
|
|
541
|
-
}).pipe(Effect.updateContext(input => Context.merge(handler.context, input)), Effect.provideService(Identity, identity), Effect.tap(() =>
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
});
|
|
548
|
-
}
|
|
549
|
-
}
|
|
550
|
-
return Effect.void;
|
|
551
|
-
}))
|
|
552
|
-
}));
|
|
553
|
-
});
|
|
554
|
-
const eventLogWrite = options => {
|
|
555
|
-
const handler = registry.handlers.get(options.event);
|
|
556
|
-
if (handler === undefined) {
|
|
557
|
-
return Effect.die(`Event handler not found for: "${options.event}"`);
|
|
558
|
-
}
|
|
559
|
-
return writeHandler(handler, options);
|
|
560
|
-
};
|
|
783
|
+
}).pipe(Effect.updateContext(input => Context.merge(handler.context, input)), Effect.provideService(Identity, identity), Effect.tap(() => invalidateEntry(reactivity, registry.reactivityKeys, entry)));
|
|
784
|
+
}))
|
|
785
|
+
}))),
|
|
786
|
+
// Outside the lock, so queries re-run after the handler transaction and
|
|
787
|
+
// the journal commit.
|
|
788
|
+
reactivity.withBatch);
|
|
561
789
|
yield* registry.handleRemote(runRemote);
|
|
562
790
|
return EventLog.of({
|
|
563
|
-
write:
|
|
791
|
+
write: options => Effect.map(writeEvents([options]), Arr.headNonEmpty),
|
|
792
|
+
writeMany: options => writeEvents(options.events),
|
|
564
793
|
entries: journal.entries,
|
|
565
794
|
destroy: journal.destroy
|
|
566
795
|
});
|
|
@@ -611,8 +840,27 @@ export const layer = (_schema, layer) => layer.pipe(Layer.provideMerge(layerEven
|
|
|
611
840
|
*
|
|
612
841
|
* **Details**
|
|
613
842
|
*
|
|
614
|
-
* The returned function
|
|
615
|
-
* event
|
|
843
|
+
* The returned function takes one `{ event, payload }` object, typed so the
|
|
844
|
+
* payload matches the event, as `writeMany` items are. It delegates to the
|
|
845
|
+
* `EventLog` service and preserves each event's success and error types.
|
|
846
|
+
*
|
|
847
|
+
* **Example** (Writing events with a client)
|
|
848
|
+
*
|
|
849
|
+
* ```ts
|
|
850
|
+
* import { Effect, Schema } from "effect"
|
|
851
|
+
* import { EventGroup, EventLog } from "effect/eventlog"
|
|
852
|
+
*
|
|
853
|
+
* const Users = EventGroup.empty.add({
|
|
854
|
+
* tag: "UserCreated",
|
|
855
|
+
* primaryKey: (payload) => payload.id,
|
|
856
|
+
* payload: Schema.Struct({ id: Schema.String })
|
|
857
|
+
* })
|
|
858
|
+
*
|
|
859
|
+
* export const createUser = Effect.gen(function*() {
|
|
860
|
+
* const client = yield* EventLog.makeClient(EventLog.schema(Users))
|
|
861
|
+
* yield* client({ event: "UserCreated", payload: { id: "user-1" } })
|
|
862
|
+
* })
|
|
863
|
+
* ```
|
|
616
864
|
*
|
|
617
865
|
* @stability unstable
|
|
618
866
|
* @category constructors
|
|
@@ -620,10 +868,10 @@ export const layer = (_schema, layer) => layer.pipe(Layer.provideMerge(layerEven
|
|
|
620
868
|
*/
|
|
621
869
|
export const makeClient = schema => Effect.gen(function* () {
|
|
622
870
|
const log = yield* EventLog;
|
|
623
|
-
return
|
|
871
|
+
return item => log.write({
|
|
624
872
|
schema,
|
|
625
|
-
event,
|
|
626
|
-
payload
|
|
873
|
+
event: item.event,
|
|
874
|
+
payload: item.payload
|
|
627
875
|
});
|
|
628
876
|
});
|
|
629
877
|
//# sourceMappingURL=EventLog.js.map
|