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
|
@@ -277,13 +277,42 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
277
277
|
const sqlFalse = sql.literal(supportsBooleans ? "FALSE" : "0")
|
|
278
278
|
const sqlTrue = sql.literal(supportsBooleans ? "TRUE" : "1")
|
|
279
279
|
|
|
280
|
+
// Read SQLite IDs as text to avoid rounding on number-returning drivers
|
|
281
|
+
// such as Durable Objects.
|
|
282
|
+
const idsAsText = sql.onDialectOrElse({
|
|
283
|
+
sqlite: () => true,
|
|
284
|
+
orElse: () => false
|
|
285
|
+
})
|
|
286
|
+
const idAs = (column: string, alias: string) =>
|
|
287
|
+
idsAsText ? `CAST(${column} AS TEXT) AS ${alias}` : `${column} AS ${alias}`
|
|
288
|
+
const replyJoinColumns = "r.kind as reply_kind, r.payload as reply_payload, r.sequence as reply_sequence"
|
|
289
|
+
const messageColumns = idsAsText
|
|
290
|
+
? `${idAs("m.id", "id")}, m.message_id, m.shard_id, m.entity_type, m.entity_id, m.kind, m.tag, m.payload, ` +
|
|
291
|
+
`m.headers, m.trace_id, m.span_id, m.sampled, m.processed, ${idAs("m.request_id", "request_id")}, ` +
|
|
292
|
+
`${idAs("m.reply_id", "reply_id")}, ${idAs("m.last_reply_id", "last_reply_id")}, m.last_read, m.deliver_at`
|
|
293
|
+
: "m.*"
|
|
294
|
+
|
|
295
|
+
const idColumn = sql.literal(idAs("id", "id"))
|
|
296
|
+
const replyColumns = sql.literal(
|
|
297
|
+
`${idAs("id", "id")}, kind, ${idAs("request_id", "request_id")}, payload, sequence`
|
|
298
|
+
)
|
|
299
|
+
const duplicateColumns = sql.literal(
|
|
300
|
+
`${idAs("m.id", "id")}, ${idAs("r.id", "reply_id")}, ${replyJoinColumns}`
|
|
301
|
+
)
|
|
302
|
+
const messageJoinColumns = sql.literal(
|
|
303
|
+
`${messageColumns}, ${idAs("r.id", "reply_reply_id")}, ${replyJoinColumns}`
|
|
304
|
+
)
|
|
305
|
+
|
|
280
306
|
const selectByMessageId = (message_id: string): Effect.Effect<ReadonlyArray<Row>, SqlError> =>
|
|
281
307
|
sql`
|
|
282
|
-
SELECT
|
|
308
|
+
SELECT ${duplicateColumns}
|
|
283
309
|
FROM ${messagesTableSql} m
|
|
284
310
|
LEFT JOIN ${repliesTableSql} r ON r.id = m.last_reply_id
|
|
285
311
|
WHERE m.message_id = ${message_id}
|
|
286
312
|
`
|
|
313
|
+
// an insert that returned no rows hit an existing message_id
|
|
314
|
+
const selectUnlessInserted = (message_id: string) => (inserted: ReadonlyArray<unknown>) =>
|
|
315
|
+
inserted.length > 0 ? Effect.succeed([]) : selectByMessageId(message_id)
|
|
287
316
|
|
|
288
317
|
const insertEnvelope: (
|
|
289
318
|
row: MessageRow,
|
|
@@ -294,11 +323,7 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
294
323
|
INSERT INTO ${messagesTableSql} ${sql.insert(row)}
|
|
295
324
|
ON CONFLICT (message_id) DO NOTHING
|
|
296
325
|
RETURNING id
|
|
297
|
-
`.pipe(Effect.flatMap((
|
|
298
|
-
// inserted a new row
|
|
299
|
-
if (rows.length > 0) return Effect.succeed([])
|
|
300
|
-
return selectByMessageId(message_id)
|
|
301
|
-
})),
|
|
326
|
+
`.pipe(Effect.flatMap(selectUnlessInserted(message_id))),
|
|
302
327
|
mysql: () => (row, message_id) =>
|
|
303
328
|
Effect.flatMap(
|
|
304
329
|
sql`INSERT IGNORE INTO ${messagesTableSql} ${sql.insert(row)}`.raw,
|
|
@@ -316,37 +341,8 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
316
341
|
ON target.message_id = source.message_id
|
|
317
342
|
WHEN NOT MATCHED THEN
|
|
318
343
|
INSERT ${sql.insert(row)}
|
|
319
|
-
OUTPUT
|
|
320
|
-
|
|
321
|
-
CASE
|
|
322
|
-
WHEN inserted.id IS NULL THEN (
|
|
323
|
-
SELECT r.id, r.kind, r.payload
|
|
324
|
-
FROM ${repliesTableSql} r
|
|
325
|
-
WHERE r.id = target.last_reply_id
|
|
326
|
-
)
|
|
327
|
-
END as reply_id,
|
|
328
|
-
CASE
|
|
329
|
-
WHEN inserted.id IS NULL THEN (
|
|
330
|
-
SELECT r.kind
|
|
331
|
-
FROM ${repliesTableSql} r
|
|
332
|
-
WHERE r.id = target.last_reply_id
|
|
333
|
-
)
|
|
334
|
-
END as reply_kind,
|
|
335
|
-
CASE
|
|
336
|
-
WHEN inserted.id IS NULL THEN (
|
|
337
|
-
SELECT r.payload
|
|
338
|
-
FROM ${repliesTableSql} r
|
|
339
|
-
WHERE r.id = target.last_reply_id
|
|
340
|
-
)
|
|
341
|
-
END as reply_payload,
|
|
342
|
-
CASE
|
|
343
|
-
WHEN inserted.id IS NULL THEN (
|
|
344
|
-
SELECT r.sequence
|
|
345
|
-
FROM ${repliesTableSql} r
|
|
346
|
-
WHERE r.id = target.last_reply_id
|
|
347
|
-
)
|
|
348
|
-
END as reply_sequence;
|
|
349
|
-
`,
|
|
344
|
+
OUTPUT inserted.id;
|
|
345
|
+
`.pipe(Effect.flatMap(selectUnlessInserted(message_id))),
|
|
350
346
|
orElse: () => (row, message_id) =>
|
|
351
347
|
selectByMessageId(message_id).pipe(
|
|
352
348
|
Effect.tap(sql`INSERT OR IGNORE INTO ${messagesTableSql} ${sql.insert(row)}`),
|
|
@@ -374,9 +370,15 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
374
370
|
orElse: () => (s: string) => `'${s}'`
|
|
375
371
|
})
|
|
376
372
|
const forUpdate = sql.onDialectOrElse({
|
|
373
|
+
mssql: () => sql.literal(""),
|
|
377
374
|
sqlite: () => sql.literal(""),
|
|
378
375
|
orElse: () => sql.literal("FOR UPDATE")
|
|
379
376
|
})
|
|
377
|
+
// mssql locks claimed rows with a table hint instead of FOR UPDATE
|
|
378
|
+
const updateLock = sql.onDialectOrElse({
|
|
379
|
+
mssql: () => sql.literal("WITH (UPDLOCK)"),
|
|
380
|
+
orElse: () => sql.literal("")
|
|
381
|
+
})
|
|
380
382
|
|
|
381
383
|
const emptyFragment = sql.literal("")
|
|
382
384
|
// mssql only limits with OFFSET/FETCH, which requires the ORDER BY that
|
|
@@ -459,8 +461,8 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
459
461
|
`,
|
|
460
462
|
orElse: () => (shardIds: ReadonlyArray<string>, now: number, filters: UnprocessedFilters) =>
|
|
461
463
|
sql<MessageJoinRow>`
|
|
462
|
-
SELECT
|
|
463
|
-
FROM ${messagesTableSql} m
|
|
464
|
+
SELECT ${messageJoinColumns}
|
|
465
|
+
FROM ${messagesTableSql} m ${updateLock}
|
|
464
466
|
LEFT JOIN ${repliesTableSql} r ON r.id = m.last_reply_id
|
|
465
467
|
WHERE m.shard_id IN (${sql.literal(shardIds.map(wrapString).join(","))})
|
|
466
468
|
${filters.addressFilter}
|
|
@@ -630,11 +632,11 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
630
632
|
requestIdForPrimaryKey: (primaryKey) =>
|
|
631
633
|
messageIdForPrimaryKey(primaryKey).pipe(
|
|
632
634
|
Effect.flatMap((messageId) =>
|
|
633
|
-
sql<{ id: string | bigint }>`SELECT
|
|
635
|
+
sql<{ id: string | bigint }>`SELECT ${idColumn} FROM ${messagesTableSql} WHERE message_id = ${messageId}`
|
|
634
636
|
),
|
|
635
637
|
Effect.flatMap((rows) =>
|
|
636
638
|
rows.length === 0 && mayHaveLegacyRow(primaryKey)
|
|
637
|
-
? sql<{ id: string | bigint }>`SELECT
|
|
639
|
+
? sql<{ id: string | bigint }>`SELECT ${idColumn} FROM ${messagesTableSql} WHERE message_id = ${primaryKey}`
|
|
638
640
|
: Effect.succeed(rows)
|
|
639
641
|
),
|
|
640
642
|
Effect.map((rows) => Option.map(Option.fromNullishOr(rows[0]?.id), Snowflake.Snowflake)),
|
|
@@ -649,7 +651,7 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
649
651
|
// - the kind is WithExit
|
|
650
652
|
// - or the kind is Chunk and has not been acked yet
|
|
651
653
|
sql<ReplyRow>`
|
|
652
|
-
SELECT
|
|
654
|
+
SELECT ${replyColumns}
|
|
653
655
|
FROM ${repliesTableSql}
|
|
654
656
|
WHERE request_id IN (${sql.literal(requestIds.join(","))})
|
|
655
657
|
AND (
|
|
@@ -669,7 +671,7 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
669
671
|
|
|
670
672
|
repliesForUnfiltered: (requestIds) =>
|
|
671
673
|
sql<ReplyRow>`
|
|
672
|
-
SELECT
|
|
674
|
+
SELECT ${replyColumns}
|
|
673
675
|
FROM ${repliesTableSql}
|
|
674
676
|
WHERE request_id IN (${sql.literal(requestIds.join(","))})
|
|
675
677
|
ORDER BY rowid ASC
|
|
@@ -705,7 +707,7 @@ const makeEncodedStorage = Effect.fnUntraced(function*(
|
|
|
705
707
|
unprocessedMessagesById(ids, now) {
|
|
706
708
|
const idArr = Array.from(ids, (id) => String(id))
|
|
707
709
|
return sql<MessageRow & ReplyJoinRow>`
|
|
708
|
-
SELECT
|
|
710
|
+
SELECT ${messageJoinColumns}
|
|
709
711
|
FROM ${messagesTableSql} m
|
|
710
712
|
LEFT JOIN ${repliesTableSql} r ON r.id = m.last_reply_id
|
|
711
713
|
WHERE m.id IN (${sql.literal(idArr.join(","))})
|
|
@@ -840,6 +842,8 @@ export const migrations = (options?: {
|
|
|
840
842
|
const messagesTableSql = sql(messagesTable)
|
|
841
843
|
const repliesTableSql = sql(repliesTable)
|
|
842
844
|
|
|
845
|
+
// mssql UNIQUE constraints treat NULLs as equal, so nullable keys use
|
|
846
|
+
// filtered unique indexes instead
|
|
843
847
|
yield* sql.onDialectOrElse({
|
|
844
848
|
mssql: () =>
|
|
845
849
|
sql`
|
|
@@ -853,8 +857,8 @@ export const migrations = (options?: {
|
|
|
853
857
|
entity_id VARCHAR(255) NOT NULL,
|
|
854
858
|
kind INT NOT NULL,
|
|
855
859
|
tag VARCHAR(50),
|
|
856
|
-
payload
|
|
857
|
-
headers
|
|
860
|
+
payload NVARCHAR(MAX),
|
|
861
|
+
headers NVARCHAR(MAX),
|
|
858
862
|
trace_id VARCHAR(32),
|
|
859
863
|
span_id VARCHAR(16),
|
|
860
864
|
sampled BIT,
|
|
@@ -864,7 +868,7 @@ export const migrations = (options?: {
|
|
|
864
868
|
last_reply_id BIGINT,
|
|
865
869
|
last_read DATETIME,
|
|
866
870
|
deliver_at BIGINT,
|
|
867
|
-
UNIQUE (message_id)
|
|
871
|
+
INDEX ${sql(messagesTable + "_message_id_idx")} UNIQUE (message_id) WHERE message_id IS NOT NULL
|
|
868
872
|
)
|
|
869
873
|
`,
|
|
870
874
|
mysql: () =>
|
|
@@ -967,17 +971,16 @@ export const migrations = (options?: {
|
|
|
967
971
|
CREATE INDEX ${sql(requestIdLookupIndex)}
|
|
968
972
|
ON ${messagesTableSql} (request_id);
|
|
969
973
|
`.unprepared.pipe(Effect.ignore),
|
|
970
|
-
pg: ()
|
|
971
|
-
|
|
972
|
-
yield* sql`
|
|
974
|
+
pg: Effect.fnUntraced(function*() {
|
|
975
|
+
yield* sql`
|
|
973
976
|
CREATE INDEX IF NOT EXISTS ${sql(shardLookupIndex)}
|
|
974
977
|
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at)
|
|
975
978
|
`
|
|
976
|
-
|
|
979
|
+
yield* sql`
|
|
977
980
|
CREATE INDEX IF NOT EXISTS ${sql(requestIdLookupIndex)}
|
|
978
981
|
ON ${messagesTableSql} (request_id)
|
|
979
982
|
`
|
|
980
|
-
|
|
983
|
+
}),
|
|
981
984
|
orElse: () =>
|
|
982
985
|
// sqlite
|
|
983
986
|
Effect.all([
|
|
@@ -1001,11 +1004,11 @@ export const migrations = (options?: {
|
|
|
1001
1004
|
rowid BIGINT IDENTITY(1,1),
|
|
1002
1005
|
kind INT,
|
|
1003
1006
|
request_id BIGINT NOT NULL,
|
|
1004
|
-
payload
|
|
1007
|
+
payload NVARCHAR(MAX) NOT NULL,
|
|
1005
1008
|
sequence INT,
|
|
1006
1009
|
acked BIT NOT NULL DEFAULT 0,
|
|
1007
|
-
|
|
1008
|
-
|
|
1010
|
+
INDEX ${sql(repliesTable + "_one_exit")} UNIQUE (request_id, kind) WHERE kind IS NOT NULL,
|
|
1011
|
+
INDEX ${sql(repliesTable + "_sequence")} UNIQUE (request_id, sequence) WHERE sequence IS NOT NULL
|
|
1009
1012
|
)
|
|
1010
1013
|
`,
|
|
1011
1014
|
mysql: () =>
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* shard. This module migrates the required runner and lock tables, supports an
|
|
7
7
|
* optional table prefix, uses advisory locks for PostgreSQL and MySQL when
|
|
8
8
|
* enabled, and provides constructors and layers for the storage service.
|
|
9
|
+
* PGlite clients always use lock table rows on the shared client, so the
|
|
10
|
+
* storage never holds their only connection.
|
|
9
11
|
*
|
|
10
12
|
* `layer`, `layerWith`, and `make` run the migrations before building the
|
|
11
13
|
* storage. To run migrations with a different connection, such as a schema
|
|
@@ -53,9 +55,13 @@ const makeStorage = Effect.fnUntraced(function*(options: {
|
|
|
53
55
|
const config = yield* ShardingConfig.ShardingConfig
|
|
54
56
|
const shardGroups = ShardingConfig.shardGroupConfig(config)
|
|
55
57
|
const availableShardGroups = Array.from(shardGroups.available)
|
|
56
|
-
const disableAdvisoryLocks = config.shardLockDisableAdvisory
|
|
57
58
|
const lockOperationInterval = effectiveInterval(config)
|
|
58
59
|
const sql = (yield* SqlClient.SqlClient).withoutTransforms()
|
|
60
|
+
// PGlite runs every statement on one session, so advisory locks are shared by
|
|
61
|
+
// every user of the client and a reserved connection would block all other
|
|
62
|
+
// statements. Use table leases on the shared client instead.
|
|
63
|
+
const singleSession = sql.driver === "pglite"
|
|
64
|
+
const disableAdvisoryLocks = config.shardLockDisableAdvisory || singleSession
|
|
59
65
|
const layerScope = yield* Effect.scope
|
|
60
66
|
const prefix = options?.prefix ?? "cluster"
|
|
61
67
|
const table = (name: string) => `${prefix}_${name}`
|
|
@@ -65,7 +71,7 @@ const makeStorage = Effect.fnUntraced(function*(options: {
|
|
|
65
71
|
|
|
66
72
|
// Keep all PostgreSQL and MySQL shard-lock operations on a rebuildable
|
|
67
73
|
// reserved connection, including when advisory locks are disabled.
|
|
68
|
-
const acquireLockConn = sql.onDialectOrElse({
|
|
74
|
+
const acquireLockConn = singleSession ? undefined : sql.onDialectOrElse({
|
|
69
75
|
pg: () =>
|
|
70
76
|
Effect.fnUntraced(function*(scope: Scope.Scope) {
|
|
71
77
|
const conn = yield* Effect.orDie(sql.reserve).pipe(
|
|
@@ -667,8 +673,8 @@ const makeStorage = Effect.fnUntraced(function*(options: {
|
|
|
667
673
|
* permission to create tables. When `prefix` is omitted, `make` uses the
|
|
668
674
|
* `cluster` prefix, creating `cluster_runners`, `cluster_locks`, and the
|
|
669
675
|
* `cluster_runner_migrations` history table. PostgreSQL and MySQL use advisory
|
|
670
|
-
* locks unless `ShardingConfig.shardLockDisableAdvisory` is enabled
|
|
671
|
-
* dialects use rows in the locks table.
|
|
676
|
+
* locks unless `ShardingConfig.shardLockDisableAdvisory` is enabled or the
|
|
677
|
+
* client is PGlite; other dialects and PGlite use rows in the locks table.
|
|
672
678
|
*
|
|
673
679
|
* **Gotchas**
|
|
674
680
|
*
|
|
@@ -8,7 +8,7 @@ import * as Effect from "../../Effect.ts"
|
|
|
8
8
|
import * as Equal from "../../Equal.ts"
|
|
9
9
|
import * as Exit from "../../Exit.ts"
|
|
10
10
|
import * as Fiber from "../../Fiber.ts"
|
|
11
|
-
import { identity } from "../../Function.ts"
|
|
11
|
+
import { constVoid, identity } from "../../Function.ts"
|
|
12
12
|
import { scopeAddFinalizerUnsafe, scopeRemoveFinalizerUnsafe } from "../../internal/effect.ts"
|
|
13
13
|
import * as Latch from "../../Latch.ts"
|
|
14
14
|
import * as Metric from "../../Metric.ts"
|
|
@@ -67,6 +67,9 @@ export interface EntityManager {
|
|
|
67
67
|
readonly interruptShard: (shardId: ShardId, options?: {
|
|
68
68
|
readonly force?: boolean
|
|
69
69
|
}) => Effect.Effect<void>
|
|
70
|
+
// Whether any of the shard's entities are still open, including those that
|
|
71
|
+
// `interruptShard` is waiting on
|
|
72
|
+
readonly hasServersUnsafe: (shardId: ShardId) => boolean
|
|
70
73
|
|
|
71
74
|
readonly activeEntityCount: Effect.Effect<number>
|
|
72
75
|
}
|
|
@@ -137,6 +140,7 @@ export const make = Effect.fnUntraced(function*<
|
|
|
137
140
|
readonly maxIdleTime?: Input | undefined
|
|
138
141
|
readonly concurrency?: number | "unbounded" | undefined
|
|
139
142
|
readonly mailboxCapacity?: number | "unbounded" | undefined
|
|
143
|
+
readonly mailboxMetrics?: boolean | undefined
|
|
140
144
|
readonly disableFatalDefects?: boolean | undefined
|
|
141
145
|
readonly defectRetryPolicy?: Schedule.Schedule<any, unknown, never, never> | undefined
|
|
142
146
|
readonly spanAttributes?: Record<string, string> | undefined
|
|
@@ -147,6 +151,7 @@ export const make = Effect.fnUntraced(function*<
|
|
|
147
151
|
const managerScope = yield* Effect.scope
|
|
148
152
|
const storageEnabled = options.storage !== MessageStorage.noop
|
|
149
153
|
const mailboxCapacity = options.mailboxCapacity ?? config.entityMailboxCapacity
|
|
154
|
+
const mailboxMetrics = options.mailboxMetrics ?? config.entityMailboxMetrics
|
|
150
155
|
const clock = yield* Clock
|
|
151
156
|
const context = yield* Effect.context<Rpc.Services<Rpcs> | Rpc.Middleware<Rpcs> | RX>()
|
|
152
157
|
const defectRetryPolicy = options.defectRetryPolicy
|
|
@@ -155,6 +160,22 @@ export const make = Effect.fnUntraced(function*<
|
|
|
155
160
|
const retryDriver = yield* Schedule.toStepWithSleep(defectRetryPolicy)
|
|
156
161
|
const entityRpcs = new Map(entity.protocol.requests)
|
|
157
162
|
|
|
163
|
+
// The series reads the mailbox size on snapshot, so delivery does no extra work.
|
|
164
|
+
const registerMailboxSize = (address: EntityAddress, activeRequests: EntityState["activeRequests"]) =>
|
|
165
|
+
Metric.registerUnsafe(
|
|
166
|
+
Metric.withAttributes(ClusterMetrics.entityMailboxSize, {
|
|
167
|
+
type: entity.type,
|
|
168
|
+
id: address.entityId,
|
|
169
|
+
shard: address.shardId.toString()
|
|
170
|
+
}),
|
|
171
|
+
context as Context.Context<never>,
|
|
172
|
+
{
|
|
173
|
+
get: () => ({ value: BigInt(activeRequests.size) }),
|
|
174
|
+
update: constVoid,
|
|
175
|
+
modify: constVoid
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
|
|
158
179
|
// add internal rpcs
|
|
159
180
|
entityRpcs.set(KeepAliveRpc._tag, KeepAliveRpc as any)
|
|
160
181
|
|
|
@@ -162,6 +183,34 @@ export const make = Effect.fnUntraced(function*<
|
|
|
162
183
|
// Entities finishing their in-flight requests after removal, which still
|
|
163
184
|
// accept interrupts and acks
|
|
164
185
|
const drainingServers = new Map<EntityId, EntityState>()
|
|
186
|
+
// Mailboxes of every resident entity, including draining ones. Unlike the
|
|
187
|
+
// server maps it is not keyed by entity id, which can be resident on several
|
|
188
|
+
// shards at once.
|
|
189
|
+
const residentMailboxes = new Set<EntityState["activeRequests"]>()
|
|
190
|
+
|
|
191
|
+
// Registered before the entities resource map, so the series is removed
|
|
192
|
+
// only after every entity has drained on shutdown.
|
|
193
|
+
yield* Effect.acquireRelease(
|
|
194
|
+
Effect.sync(() =>
|
|
195
|
+
Metric.registerUnsafe(
|
|
196
|
+
Metric.withAttributes(ClusterMetrics.entityMailboxSizeMax, { type: entity.type }),
|
|
197
|
+
context as Context.Context<never>,
|
|
198
|
+
{
|
|
199
|
+
get: () => {
|
|
200
|
+
let max = 0
|
|
201
|
+
for (const mailbox of residentMailboxes) {
|
|
202
|
+
if (mailbox.size > max) max = mailbox.size
|
|
203
|
+
}
|
|
204
|
+
return { value: BigInt(max) }
|
|
205
|
+
},
|
|
206
|
+
update: constVoid,
|
|
207
|
+
modify: constVoid
|
|
208
|
+
}
|
|
209
|
+
)
|
|
210
|
+
),
|
|
211
|
+
(registration) => Effect.sync(registration.remove)
|
|
212
|
+
)
|
|
213
|
+
|
|
165
214
|
const serverCloseLatches = new Map<EntityAddress, {
|
|
166
215
|
readonly closed: Latch.Latch
|
|
167
216
|
readonly force: Latch.Latch
|
|
@@ -196,10 +245,16 @@ export const make = Effect.fnUntraced(function*<
|
|
|
196
245
|
closing: false
|
|
197
246
|
}
|
|
198
247
|
|
|
248
|
+
// Finalizers run in reverse, so the mailbox series and the resident
|
|
249
|
+
// mailbox are removed only after the drain finalizer below has finished.
|
|
250
|
+
const activeRequests: EntityState["activeRequests"] = new Map()
|
|
251
|
+
let mailboxSeries: Metric.Registration | undefined
|
|
199
252
|
yield* Scope.addFinalizer(
|
|
200
253
|
scope,
|
|
201
254
|
Effect.sync(() => {
|
|
202
255
|
releaseEntity(address)
|
|
256
|
+
mailboxSeries?.remove()
|
|
257
|
+
residentMailboxes.delete(activeRequests)
|
|
203
258
|
})
|
|
204
259
|
)
|
|
205
260
|
|
|
@@ -213,7 +268,6 @@ export const make = Effect.fnUntraced(function*<
|
|
|
213
268
|
}
|
|
214
269
|
)
|
|
215
270
|
|
|
216
|
-
const activeRequests: EntityState["activeRequests"] = new Map()
|
|
217
271
|
const retired = Latch.makeUnsafe()
|
|
218
272
|
const isActive = () => !retired.isOpen()
|
|
219
273
|
|
|
@@ -250,7 +304,7 @@ export const make = Effect.fnUntraced(function*<
|
|
|
250
304
|
) as Effect.Effect<Context.Context<Rpc.ToHandler<Rpcs>>>)
|
|
251
305
|
|
|
252
306
|
const server = yield* RpcServer.makeNoSerialization(entity.protocol, {
|
|
253
|
-
spanPrefix:
|
|
307
|
+
spanPrefix: entity.type,
|
|
254
308
|
spanAttributes: {
|
|
255
309
|
...options.spanAttributes,
|
|
256
310
|
"entity.type": entity.type,
|
|
@@ -488,6 +542,9 @@ export const make = Effect.fnUntraced(function*<
|
|
|
488
542
|
yield* state.write(0, { _tag: "Eof" })
|
|
489
543
|
}).pipe(
|
|
490
544
|
Effect.andThen(endLatch.await),
|
|
545
|
+
// A defect restart that finds the entity retired opens `endLatch`
|
|
546
|
+
// without building handlers, so the writes above may never land.
|
|
547
|
+
Effect.raceFirst(endLatch.await),
|
|
491
548
|
Effect.timeoutOption(config.entityTerminationTimeout),
|
|
492
549
|
Effect.interruptible
|
|
493
550
|
),
|
|
@@ -505,6 +562,10 @@ export const make = Effect.fnUntraced(function*<
|
|
|
505
562
|
// Do not make shard interruption wait for an entity that is still building.
|
|
506
563
|
serverCloseLatches.set(address, closeLatches)
|
|
507
564
|
activeServers.set(address.entityId, state)
|
|
565
|
+
residentMailboxes.add(activeRequests)
|
|
566
|
+
if (mailboxMetrics) {
|
|
567
|
+
mailboxSeries = registerMailboxSize(address, activeRequests)
|
|
568
|
+
}
|
|
508
569
|
|
|
509
570
|
return state
|
|
510
571
|
}, Effect.provideService(CurrentLogAnnotations, {})))
|
|
@@ -521,15 +582,18 @@ export const make = Effect.fnUntraced(function*<
|
|
|
521
582
|
})
|
|
522
583
|
}
|
|
523
584
|
|
|
524
|
-
//
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
ClusterMetrics.entities.
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
585
|
+
// The series reads the active entity count on snapshot, so an idle runner
|
|
586
|
+
// does no work.
|
|
587
|
+
const entitiesSeries = Metric.registerUnsafe(
|
|
588
|
+
Metric.withAttributes(ClusterMetrics.entities, { type: entity.type }),
|
|
589
|
+
context as Context.Context<never>,
|
|
590
|
+
{
|
|
591
|
+
get: () => ({ value: BigInt(activeServers.size) }),
|
|
592
|
+
update: constVoid,
|
|
593
|
+
modify: constVoid
|
|
594
|
+
}
|
|
532
595
|
)
|
|
596
|
+
yield* Scope.addFinalizer(managerScope, Effect.sync(entitiesSeries.remove))
|
|
533
597
|
|
|
534
598
|
function sendEnvelope(server: EntityState, message: Message.IncomingEnvelope): Effect.Effect<void> {
|
|
535
599
|
const entry = server.activeRequests.get(message.envelope.requestId)
|
|
@@ -752,6 +816,12 @@ export const make = Effect.fnUntraced(function*<
|
|
|
752
816
|
clearProcessed() {
|
|
753
817
|
processedRequestIds.clear()
|
|
754
818
|
},
|
|
819
|
+
hasServersUnsafe(shardId) {
|
|
820
|
+
for (const address of serverCloseLatches.keys()) {
|
|
821
|
+
if (shardId[Equal.symbol](address.shardId)) return true
|
|
822
|
+
}
|
|
823
|
+
return false
|
|
824
|
+
},
|
|
755
825
|
isResidentUnsafe: (address) => entities.hasUnsafe(address),
|
|
756
826
|
residentAddressesUnsafe: () => entities.keysUnsafe(),
|
|
757
827
|
sendLocal,
|
package/src/devtools/DevTools.ts
CHANGED
|
@@ -56,8 +56,9 @@ export const layerWebSocket = (
|
|
|
56
56
|
* **Gotchas**
|
|
57
57
|
*
|
|
58
58
|
* This layer only installs the client-side tracer; it does not start a devtools
|
|
59
|
-
* server
|
|
60
|
-
*
|
|
59
|
+
* server. The client retries failed connections every second, so the configured
|
|
60
|
+
* endpoint can become reachable after startup. It relies on
|
|
61
|
+
* `globalThis.WebSocket` being available in the runtime.
|
|
61
62
|
*
|
|
62
63
|
* @see {@link layerWebSocket} for installing the devtools tracer with an explicit `WebSocketConstructor` requirement
|
|
63
64
|
* @see {@link layerSocket} for installing the devtools tracer over an existing `Socket` transport
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
* @stability unstable
|
|
10
10
|
* @since 4.0.0
|
|
11
11
|
*/
|
|
12
|
-
import * as Cause from "../Cause.ts"
|
|
13
12
|
import * as Context from "../Context.ts"
|
|
14
13
|
import * as Deferred from "../Deferred.ts"
|
|
15
14
|
import * as Effect from "../Effect.ts"
|
|
@@ -18,6 +17,7 @@ import * as Fiber from "../Fiber.ts"
|
|
|
18
17
|
import * as Layer from "../Layer.ts"
|
|
19
18
|
import * as Metric from "../Metric.ts"
|
|
20
19
|
import * as Queue from "../Queue.ts"
|
|
20
|
+
import * as Schedule from "../Schedule.ts"
|
|
21
21
|
import * as Schema from "../Schema.ts"
|
|
22
22
|
import type * as Scope from "../Scope.ts"
|
|
23
23
|
import * as Socket from "../socket/Socket.ts"
|
|
@@ -49,7 +49,20 @@ const makeEffect = Effect.gen(function*() {
|
|
|
49
49
|
const socket = yield* Socket.Socket
|
|
50
50
|
const services = yield* Effect.context<never>()
|
|
51
51
|
const requests = yield* Queue.unbounded<DevToolsSchema.Request>()
|
|
52
|
+
yield* Queue.offer(requests, { _tag: "Ping" })
|
|
52
53
|
const connected = yield* Deferred.make<void>()
|
|
54
|
+
let closing = false
|
|
55
|
+
let writable = false
|
|
56
|
+
const setWritable = (value: boolean) =>
|
|
57
|
+
Effect.sync(() => {
|
|
58
|
+
writable = value
|
|
59
|
+
})
|
|
60
|
+
// Tracks whether the current connection has a writer that can drain the
|
|
61
|
+
// queue on shutdown.
|
|
62
|
+
const transport = Socket.make({
|
|
63
|
+
reader: socket.reader,
|
|
64
|
+
writer: Effect.tap(socket.writer, Effect.acquireRelease(setWritable(true), () => setWritable(false)))
|
|
65
|
+
})
|
|
53
66
|
|
|
54
67
|
const offerMetricsSnapshot = Effect.sync(() => {
|
|
55
68
|
Queue.offerUnsafe(requests, toMetricsSnapshot(services))
|
|
@@ -70,24 +83,28 @@ const makeEffect = Effect.gen(function*() {
|
|
|
70
83
|
|
|
71
84
|
const fiber = yield* Stream.fromQueue(requests).pipe(
|
|
72
85
|
Stream.pipeThroughChannel(
|
|
73
|
-
Ndjson.duplexSchemaString(Socket.toChannelString(
|
|
86
|
+
Ndjson.duplexSchemaString(Socket.toChannelString(transport), {
|
|
74
87
|
inputSchema: RequestSchema,
|
|
75
88
|
outputSchema: ResponseSchema
|
|
76
89
|
})
|
|
77
90
|
),
|
|
78
91
|
Stream.onFirst(() => Deferred.completeWith(connected, Effect.void)),
|
|
92
|
+
// Each run closes its stream scope, including the socket reader and writer,
|
|
93
|
+
// before retrying with a fresh connection and the same request queue.
|
|
79
94
|
Stream.runForEach(handleResponse),
|
|
95
|
+
Effect.tapError((error) => Effect.logDebug("DevTools connection failed", error)),
|
|
96
|
+
Effect.retry({ schedule: Schedule.spaced("1 second"), while: () => !closing }),
|
|
80
97
|
Effect.forkDetach
|
|
81
98
|
)
|
|
82
99
|
|
|
83
|
-
yield* Effect.addFinalizer(()
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
)
|
|
90
|
-
)
|
|
100
|
+
yield* Effect.addFinalizer(Effect.fnUntraced(function*() {
|
|
101
|
+
closing = true
|
|
102
|
+
yield* offerMetricsSnapshot
|
|
103
|
+
yield* Queue.interrupt(requests)
|
|
104
|
+
// A ready writer drains the queue before stopping. Failed or pending
|
|
105
|
+
// acquisition cannot observe the queue interruption, so stop it directly.
|
|
106
|
+
yield* writable ? Fiber.await(fiber) : Fiber.interrupt(fiber)
|
|
107
|
+
}))
|
|
91
108
|
|
|
92
109
|
yield* Effect.suspend(() => Queue.offer(requests, { _tag: "Ping" })).pipe(
|
|
93
110
|
Effect.delay("3 seconds"),
|
|
@@ -32,6 +32,7 @@ import { EncodingError } from "./EncodingError.ts"
|
|
|
32
32
|
* Base64Url.encode(bytes) // => "SGVsbG8_"
|
|
33
33
|
* ```
|
|
34
34
|
*
|
|
35
|
+
* @see {@link encodePadded} for output that keeps `=` padding
|
|
35
36
|
* @see {@link decode} for decoding URL-safe Base64 to bytes
|
|
36
37
|
* @see {@link decodeString} for decoding URL-safe Base64 to UTF-8 text
|
|
37
38
|
*
|
|
@@ -42,6 +43,36 @@ import { EncodingError } from "./EncodingError.ts"
|
|
|
42
43
|
export const encode: (input: Uint8Array | string) => string = (input) =>
|
|
43
44
|
Base64.encode(input).replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_")
|
|
44
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Encodes the given value into a padded URL-safe Base64 string.
|
|
48
|
+
*
|
|
49
|
+
* **When to use**
|
|
50
|
+
*
|
|
51
|
+
* Use when a consumer requires `=` padding on URL-safe Base64, such as Go's
|
|
52
|
+
* `base64.URLEncoding`.
|
|
53
|
+
*
|
|
54
|
+
* **Details**
|
|
55
|
+
*
|
|
56
|
+
* Same as {@link encode}, but keeps the `=` padding. {@link decode} accepts
|
|
57
|
+
* both forms.
|
|
58
|
+
*
|
|
59
|
+
* **Example** (Encoding padded URL-safe Base64)
|
|
60
|
+
*
|
|
61
|
+
* ```ts import.meta.vitest
|
|
62
|
+
* import { Base64Url } from "effect/encoding"
|
|
63
|
+
*
|
|
64
|
+
* Base64Url.encodePadded("fo") // => "Zm8="
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @see {@link encode} for unpadded output
|
|
68
|
+
*
|
|
69
|
+
* @stability stable
|
|
70
|
+
* @category encoding
|
|
71
|
+
* @since 4.0.6
|
|
72
|
+
*/
|
|
73
|
+
export const encodePadded: (input: Uint8Array | string) => string = (input) =>
|
|
74
|
+
Base64.encode(input).replace(/\+/g, "-").replace(/\//g, "_")
|
|
75
|
+
|
|
45
76
|
/**
|
|
46
77
|
* Decodes a padded or unpadded URL-safe Base64 string into bytes safely.
|
|
47
78
|
*
|