effect 4.0.5 → 4.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai-docs/package.json +1 -1
- package/ai-docs/src/06_schedule/10_schedules.ts +5 -4
- package/ai-docs/tsconfig.json +3 -1
- package/dist/Arbitrary.d.ts +10 -2
- package/dist/Arbitrary.d.ts.map +1 -1
- package/dist/Arbitrary.js +2 -1
- package/dist/Arbitrary.js.map +1 -1
- package/dist/Array.d.ts +117 -52
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +41 -20
- package/dist/Array.js.map +1 -1
- package/dist/Bytes.d.ts +79 -0
- package/dist/Bytes.d.ts.map +1 -0
- package/dist/Bytes.js +109 -0
- package/dist/Bytes.js.map +1 -0
- package/dist/Channel.d.ts +181 -13
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +144 -34
- package/dist/Channel.js.map +1 -1
- package/dist/ChannelSchema.d.ts.map +1 -1
- package/dist/ChannelSchema.js.map +1 -1
- package/dist/Chunk.d.ts +39 -21
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +26 -17
- package/dist/Chunk.js.map +1 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +8 -3
- package/dist/Config.js.map +1 -1
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +2 -1
- package/dist/ConfigProvider.js.map +1 -1
- package/dist/Cron.d.ts +2 -2
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +6 -3
- package/dist/Cron.js.map +1 -1
- package/dist/Data.d.ts +54 -235
- package/dist/Data.d.ts.map +1 -1
- package/dist/Data.js.map +1 -1
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +56 -16
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +488 -164
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +204 -38
- package/dist/Effect.js.map +1 -1
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +8 -1
- package/dist/Equal.js.map +1 -1
- package/dist/Equivalence.d.ts +2 -1
- package/dist/Equivalence.d.ts.map +1 -1
- package/dist/Equivalence.js +12 -8
- package/dist/Equivalence.js.map +1 -1
- package/dist/Exit.d.ts +27 -12
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js +8 -3
- package/dist/Exit.js.map +1 -1
- package/dist/FiberHandle.d.ts +2 -0
- package/dist/FiberHandle.d.ts.map +1 -1
- package/dist/FiberHandle.js +9 -4
- package/dist/FiberHandle.js.map +1 -1
- package/dist/FiberMap.d.ts +2 -0
- package/dist/FiberMap.d.ts.map +1 -1
- package/dist/FiberMap.js +5 -2
- package/dist/FiberMap.js.map +1 -1
- package/dist/FileSystem.d.ts +5 -0
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +3 -0
- package/dist/FileSystem.js.map +1 -1
- package/dist/Formatter.d.ts.map +1 -1
- package/dist/Formatter.js +27 -13
- package/dist/Formatter.js.map +1 -1
- package/dist/Graph.d.ts.map +1 -1
- package/dist/Graph.js.map +1 -1
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +4 -1
- package/dist/Hash.js.map +1 -1
- package/dist/HashSet.d.ts.map +1 -1
- package/dist/HashSet.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +18 -17
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonPatch.js +4 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonSchema.d.ts +9 -3
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +32 -43
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +2 -2
- package/dist/Layer.js.map +1 -1
- package/dist/ManagedRuntime.d.ts +19 -1
- package/dist/ManagedRuntime.d.ts.map +1 -1
- package/dist/ManagedRuntime.js +62 -6
- package/dist/ManagedRuntime.js.map +1 -1
- package/dist/Metric.d.ts +135 -3
- package/dist/Metric.d.ts.map +1 -1
- package/dist/Metric.js +197 -25
- package/dist/Metric.js.map +1 -1
- package/dist/MutableHashMap.d.ts.map +1 -1
- package/dist/MutableHashMap.js.map +1 -1
- package/dist/MutableList.d.ts +5 -2
- package/dist/MutableList.d.ts.map +1 -1
- package/dist/MutableList.js +7 -5
- package/dist/MutableList.js.map +1 -1
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +7 -0
- package/dist/MutableRef.js.map +1 -1
- package/dist/Number.js +2 -2
- package/dist/Number.js.map +1 -1
- package/dist/Optic.d.ts.map +1 -1
- package/dist/Optic.js.map +1 -1
- package/dist/PartitionedSemaphore.d.ts +2 -1
- package/dist/PartitionedSemaphore.d.ts.map +1 -1
- package/dist/PartitionedSemaphore.js +22 -12
- package/dist/PartitionedSemaphore.js.map +1 -1
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +8 -1
- package/dist/Path.js.map +1 -1
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +77 -27
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +17 -13
- package/dist/PubSub.js.map +1 -1
- package/dist/Queue.d.ts +4 -1
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +4 -1
- package/dist/Queue.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +1 -1
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts +12 -7
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +9 -6
- package/dist/RcMap.js.map +1 -1
- package/dist/Record.d.ts +51 -0
- package/dist/Record.d.ts.map +1 -1
- package/dist/Record.js +17 -0
- package/dist/Record.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +8 -0
- package/dist/Ref.js.map +1 -1
- package/dist/References.d.ts +5 -4
- package/dist/References.d.ts.map +1 -1
- package/dist/References.js +5 -4
- package/dist/References.js.map +1 -1
- package/dist/RequestResolver.d.ts +31 -1
- package/dist/RequestResolver.d.ts.map +1 -1
- package/dist/RequestResolver.js +39 -4
- package/dist/RequestResolver.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/Runtime.d.ts +3 -3
- package/dist/Runtime.d.ts.map +1 -1
- package/dist/Runtime.js +18 -15
- package/dist/Runtime.js.map +1 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +1 -1
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +408 -340
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +370 -47
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +9 -7
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +38 -25
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +8 -3
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +15 -5
- package/dist/SchemaGetter.js.map +1 -1
- package/dist/SchemaIssue.d.ts +4 -4
- package/dist/SchemaIssue.d.ts.map +1 -1
- package/dist/SchemaIssue.js +29 -51
- package/dist/SchemaIssue.js.map +1 -1
- package/dist/SchemaParser.d.ts.map +1 -1
- package/dist/SchemaParser.js +48 -22
- package/dist/SchemaParser.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +75 -11
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +41 -13
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +5 -2
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +10 -3
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/Scope.d.ts +12 -2
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +5 -0
- package/dist/Scope.js.map +1 -1
- package/dist/ScopedCache.d.ts +10 -7
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +9 -5
- package/dist/ScopedCache.js.map +1 -1
- package/dist/SemVer.d.ts +1196 -0
- package/dist/SemVer.d.ts.map +1 -0
- package/dist/SemVer.js +756 -0
- package/dist/SemVer.js.map +1 -0
- package/dist/SemVerRange.d.ts +559 -0
- package/dist/SemVerRange.d.ts.map +1 -0
- package/dist/SemVerRange.js +551 -0
- package/dist/SemVerRange.js.map +1 -0
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +54 -35
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +13 -4
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +235 -8
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +167 -70
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +7 -2
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +11 -6
- package/dist/String.js.map +1 -1
- package/dist/TextDiff.d.ts +399 -0
- package/dist/TextDiff.d.ts.map +1 -0
- package/dist/TextDiff.js +634 -0
- package/dist/TextDiff.js.map +1 -0
- package/dist/Tracer.d.ts +11 -1
- package/dist/Tracer.d.ts.map +1 -1
- package/dist/Tracer.js +6 -1
- package/dist/Tracer.js.map +1 -1
- package/dist/TxHashMap.d.ts.map +1 -1
- package/dist/TxHashMap.js.map +1 -1
- package/dist/TxHashSet.d.ts.map +1 -1
- package/dist/TxHashSet.js.map +1 -1
- package/dist/ai/AiError.d.ts +68 -4
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +50 -2
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Chat.d.ts +1 -2
- package/dist/ai/Chat.d.ts.map +1 -1
- package/dist/ai/Chat.js +6 -3
- package/dist/ai/Chat.js.map +1 -1
- package/dist/ai/Decision.d.ts +46 -1
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +129 -11
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +182 -94
- package/dist/ai/DecisionModel.js.map +1 -1
- package/dist/ai/EmbeddingModel.d.ts +10 -0
- package/dist/ai/EmbeddingModel.d.ts.map +1 -1
- package/dist/ai/EmbeddingModel.js +21 -7
- package/dist/ai/EmbeddingModel.js.map +1 -1
- package/dist/ai/LanguageModel.d.ts.map +1 -1
- package/dist/ai/LanguageModel.js +9 -0
- package/dist/ai/LanguageModel.js.map +1 -1
- package/dist/ai/McpClient.d.ts +289 -0
- package/dist/ai/McpClient.d.ts.map +1 -0
- package/dist/ai/McpClient.js +819 -0
- package/dist/ai/McpClient.js.map +1 -0
- package/dist/ai/McpClientError.d.ts +254 -0
- package/dist/ai/McpClientError.d.ts.map +1 -0
- package/dist/ai/McpClientError.js +260 -0
- package/dist/ai/McpClientError.js.map +1 -0
- package/dist/ai/McpProtocol.d.ts +2 -2
- package/dist/ai/McpProtocol.d.ts.map +1 -1
- package/dist/ai/McpSchema.d.ts +258 -125
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +94 -24
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +46 -37
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/Prompt.d.ts +74 -20
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +61 -1
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +160 -3
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +39 -37
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +36 -4
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -2
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/Toolkit.d.ts +48 -1
- package/dist/ai/Toolkit.d.ts.map +1 -1
- package/dist/ai/Toolkit.js +73 -13
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +10 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +10 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +2 -2
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +4 -7
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +16 -2
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +3 -4
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2024_11_05.js +19 -13
- package/dist/ai/internal/mcpSchema/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_03_26.js +3 -2
- package/dist/ai/internal/mcpSchema/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_06_18.js +7 -7
- package/dist/ai/internal/mcpSchema/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2025_11_25.js +8 -8
- package/dist/ai/internal/mcpSchema/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpSchema/v2026_07_28.js +43 -42
- package/dist/ai/internal/mcpSchema/v2026_07_28.js.map +1 -1
- package/dist/cli/Argument.d.ts +15 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +5 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliError.d.ts +120 -2
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +106 -5
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +155 -6
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +62 -6
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +310 -18
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +164 -33
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +63 -0
- package/dist/cli/Completions.d.ts.map +1 -1
- package/dist/cli/Completions.js +49 -9
- package/dist/cli/Completions.js.map +1 -1
- package/dist/cli/Flag.d.ts +130 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +61 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +14 -6
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/Param.d.ts +116 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +77 -2
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +85 -0
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -0
- package/dist/cli/TerminalCapabilities.js +124 -0
- package/dist/cli/TerminalCapabilities.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/internal/command.d.ts +2 -1
- package/dist/cli/internal/command.d.ts.map +1 -1
- package/dist/cli/internal/command.js +5 -2
- package/dist/cli/internal/command.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +77 -30
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/completions/descriptor.js +9 -1
- package/dist/cli/internal/completions/descriptor.js.map +1 -1
- package/dist/cli/internal/completions/fish.js +10 -8
- package/dist/cli/internal/completions/fish.js.map +1 -1
- package/dist/cli/internal/completions/powershell.js +18 -9
- package/dist/cli/internal/completions/powershell.js.map +1 -1
- package/dist/cli/internal/completions/zsh.js +8 -5
- package/dist/cli/internal/completions/zsh.js.map +1 -1
- package/dist/cli/internal/formatter.d.ts +2 -0
- package/dist/cli/internal/formatter.d.ts.map +1 -0
- package/dist/cli/internal/formatter.js +15 -0
- package/dist/cli/internal/formatter.js.map +1 -0
- package/dist/cli/internal/lexer.js +24 -10
- package/dist/cli/internal/lexer.js.map +1 -1
- package/dist/cli/internal/parser.js +24 -12
- package/dist/cli/internal/parser.js.map +1 -1
- package/dist/cluster/ClusterCron.d.ts +29 -1
- package/dist/cluster/ClusterCron.d.ts.map +1 -1
- package/dist/cluster/ClusterCron.js +64 -32
- package/dist/cluster/ClusterCron.js.map +1 -1
- package/dist/cluster/ClusterMetrics.d.ts +143 -7
- package/dist/cluster/ClusterMetrics.d.ts.map +1 -1
- package/dist/cluster/ClusterMetrics.js +151 -7
- package/dist/cluster/ClusterMetrics.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +82 -21
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Entity.d.ts +2 -0
- package/dist/cluster/Entity.d.ts.map +1 -1
- package/dist/cluster/Entity.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +44 -45
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +6 -7
- package/dist/cluster/MessageStorage.js.map +1 -1
- package/dist/cluster/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +54 -15
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts +1 -0
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +155 -52
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +30 -0
- package/dist/cluster/ShardingConfig.d.ts.map +1 -1
- package/dist/cluster/ShardingConfig.js +4 -0
- package/dist/cluster/ShardingConfig.js.map +1 -1
- package/dist/cluster/Snowflake.d.ts.map +1 -1
- package/dist/cluster/Snowflake.js +3 -7
- package/dist/cluster/Snowflake.js.map +1 -1
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +40 -50
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts +2 -2
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +97 -43
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +119 -28
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/devtools/DevTools.d.ts +3 -2
- package/dist/devtools/DevTools.d.ts.map +1 -1
- package/dist/devtools/DevTools.js +3 -2
- package/dist/devtools/DevTools.js.map +1 -1
- package/dist/devtools/DevToolsClient.d.ts +11 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +33 -4
- package/dist/devtools/DevToolsClient.js.map +1 -1
- package/dist/encoding/Base64.js +36 -0
- package/dist/encoding/Base64.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts +29 -0
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +29 -0
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Ini.d.ts.map +1 -1
- package/dist/encoding/Ini.js +3 -0
- package/dist/encoding/Ini.js.map +1 -1
- package/dist/encoding/JsonArray.d.ts +270 -0
- package/dist/encoding/JsonArray.d.ts.map +1 -0
- package/dist/encoding/JsonArray.js +691 -0
- package/dist/encoding/JsonArray.js.map +1 -0
- package/dist/encoding/Ndjson.d.ts +43 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +169 -18
- package/dist/encoding/Ndjson.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts +9 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +12 -19
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +3 -3
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/encoding/Tar.d.ts +309 -0
- package/dist/encoding/Tar.d.ts.map +1 -0
- package/dist/encoding/Tar.js +1182 -0
- package/dist/encoding/Tar.js.map +1 -0
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +24 -19
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Xml.d.ts +464 -0
- package/dist/encoding/Xml.d.ts.map +1 -0
- package/dist/encoding/Xml.js +1619 -0
- package/dist/encoding/Xml.js.map +1 -0
- package/dist/encoding/Yaml.d.ts +6 -2
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +97 -34
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/Zip.d.ts +413 -0
- package/dist/encoding/Zip.d.ts.map +1 -0
- package/dist/encoding/Zip.js +1255 -0
- package/dist/encoding/Zip.js.map +1 -0
- package/dist/encoding/index.d.ts +20 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +20 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts +90 -5
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +488 -228
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +180 -12
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +394 -146
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +36 -30
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +97 -38
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +74 -34
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +45 -11
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +45 -8
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +51 -14
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +46 -3
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +119 -19
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +23 -33
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +97 -70
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.d.ts +39 -5
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +151 -69
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +288 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -0
- package/dist/eventlog/EventRow.js +435 -0
- package/dist/eventlog/EventRow.js.map +1 -0
- package/dist/eventlog/SqlEventJournal.d.ts +18 -18
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +417 -169
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +10 -18
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +179 -69
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts +23 -3
- package/dist/eventlog/SqlEventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +102 -51
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/index.d.ts +5 -0
- package/dist/eventlog/index.d.ts.map +1 -1
- package/dist/eventlog/index.js +5 -0
- package/dist/eventlog/index.js.map +1 -1
- package/dist/eventlog/internal/conflicts.d.ts +46 -0
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -0
- package/dist/eventlog/internal/conflicts.js +89 -0
- package/dist/eventlog/internal/conflicts.js.map +1 -0
- package/dist/graphql/GraphQLClientError.d.ts +2 -2
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +4 -18
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +12 -9
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +4 -3
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- package/dist/graphql/GraphQLResolver.d.ts +2 -0
- package/dist/graphql/GraphQLResolver.d.ts.map +1 -1
- package/dist/graphql/GraphQLResolver.js +74 -32
- package/dist/graphql/GraphQLResolver.js.map +1 -1
- package/dist/http/Cookies.d.ts.map +1 -1
- package/dist/http/Cookies.js +10 -9
- package/dist/http/Cookies.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +8 -1
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +51 -4
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/FindMyWay/internal/router.js +10 -0
- package/dist/http/FindMyWay/internal/router.js.map +1 -1
- package/dist/http/Headers.d.ts +227 -0
- package/dist/http/Headers.d.ts.map +1 -1
- package/dist/http/Headers.js +261 -0
- package/dist/http/Headers.js.map +1 -1
- package/dist/http/HttpClient.d.ts +516 -0
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +286 -23
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpClientError.d.ts +8 -1
- package/dist/http/HttpClientError.d.ts.map +1 -1
- package/dist/http/HttpClientError.js +37 -1
- package/dist/http/HttpClientError.js.map +1 -1
- package/dist/http/HttpClientRequest.d.ts +127 -3
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +45 -3
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts +53 -0
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +47 -0
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpEffect.d.ts +6 -2
- package/dist/http/HttpEffect.d.ts.map +1 -1
- package/dist/http/HttpEffect.js +21 -17
- package/dist/http/HttpEffect.js.map +1 -1
- package/dist/http/HttpIncomingMessage.d.ts +2 -1
- package/dist/http/HttpIncomingMessage.d.ts.map +1 -1
- package/dist/http/HttpIncomingMessage.js +3 -23
- package/dist/http/HttpIncomingMessage.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +119 -2
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +173 -29
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +9 -3
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.d.ts +5 -2
- package/dist/http/HttpServerError.d.ts.map +1 -1
- package/dist/http/HttpServerError.js +7 -5
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +30 -5
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +109 -20
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts +17 -8
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +37 -21
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts +0 -12
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +65 -24
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts +15 -1
- package/dist/http/MultipartParser/internal/contentType.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +89 -7
- package/dist/http/MultipartParser/internal/contentType.js.map +1 -1
- package/dist/http/MultipartParser/internal/headers.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/headers.js +4 -12
- package/dist/http/MultipartParser/internal/headers.js.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.d.ts.map +1 -1
- package/dist/http/MultipartParser/internal/multipart.js +6 -27
- package/dist/http/MultipartParser/internal/multipart.js.map +1 -1
- package/dist/http/Url.d.ts.map +1 -1
- package/dist/http/Url.js +6 -1
- package/dist/http/Url.js.map +1 -1
- package/dist/http/UrlParams.d.ts +3 -1
- package/dist/http/UrlParams.d.ts.map +1 -1
- package/dist/http/UrlParams.js +4 -2
- package/dist/http/UrlParams.js.map +1 -1
- package/dist/http/internal/compression.js +4 -5
- package/dist/http/internal/compression.js.map +1 -1
- package/dist/http/internal/decompression.js +20 -11
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/httpBody.js +8 -1
- package/dist/http/internal/httpBody.js.map +1 -1
- package/dist/http/internal/lazyStream.d.ts +2 -0
- package/dist/http/internal/lazyStream.d.ts.map +1 -0
- package/dist/http/internal/lazyStream.js +18 -0
- package/dist/http/internal/lazyStream.js.map +1 -0
- package/dist/http/internal/requestState.d.ts +2 -0
- package/dist/http/internal/requestState.d.ts.map +1 -0
- package/dist/http/internal/requestState.js +28 -0
- package/dist/http/internal/requestState.js.map +1 -0
- package/dist/http/internal/urlParams.js +25 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- package/dist/http/internal/webResponse.d.ts +2 -0
- package/dist/http/internal/webResponse.d.ts.map +1 -0
- package/dist/http/internal/webResponse.js +12 -0
- package/dist/http/internal/webResponse.js.map +1 -0
- package/dist/http-api/HttpApi.d.ts +3 -6
- package/dist/http-api/HttpApi.d.ts.map +1 -1
- package/dist/http-api/HttpApi.js +4 -7
- package/dist/http-api/HttpApi.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.d.ts.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +142 -23
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +99 -4
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +218 -60
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +72 -29
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +140 -14
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +58 -0
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +38 -12
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiScalar.d.ts +2 -1
- package/dist/http-api/HttpApiScalar.d.ts.map +1 -1
- package/dist/http-api/HttpApiScalar.js +6 -3
- package/dist/http-api/HttpApiScalar.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +242 -13
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +149 -5
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiSwagger.d.ts +5 -0
- package/dist/http-api/HttpApiSwagger.d.ts.map +1 -1
- package/dist/http-api/HttpApiSwagger.js +14 -4
- package/dist/http-api/HttpApiSwagger.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts +13 -2
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +33 -11
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts +17 -3
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +81 -47
- package/dist/http-api/OpenApi.js.map +1 -1
- package/dist/http-api/internal/path.js +35 -10
- package/dist/http-api/internal/path.js.map +1 -1
- package/dist/http-api/internal/toCodecHttpProperties.d.ts +2 -0
- package/dist/http-api/internal/toCodecHttpProperties.d.ts.map +1 -0
- package/dist/http-api/internal/toCodecHttpProperties.js +38 -0
- package/dist/http-api/internal/toCodecHttpProperties.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/arbitrary/runner.d.ts.map +1 -1
- package/dist/internal/arbitrary/runner.js +120 -44
- package/dist/internal/arbitrary/runner.js.map +1 -1
- package/dist/internal/core.js +3 -1
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/dateTime.js +19 -7
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +106 -87
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/equal.js +14 -0
- package/dist/internal/equal.js.map +1 -1
- package/dist/internal/hashMap.js +2 -2
- package/dist/internal/hashMap.js.map +1 -1
- package/dist/internal/hydration.d.ts +2 -0
- package/dist/internal/hydration.d.ts.map +1 -0
- package/dist/internal/hydration.js +15 -0
- package/dist/internal/hydration.js.map +1 -0
- package/dist/internal/inflate.d.ts +2 -0
- package/dist/internal/inflate.d.ts.map +1 -0
- package/dist/internal/inflate.js +680 -0
- package/dist/internal/inflate.js.map +1 -0
- package/dist/internal/jsonSchema.d.ts +2 -0
- package/dist/internal/jsonSchema.d.ts.map +1 -0
- package/dist/internal/jsonSchema.js +28 -0
- package/dist/internal/jsonSchema.js.map +1 -0
- package/dist/internal/matcher.js +1 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/record.js +6 -0
- package/dist/internal/record.js.map +1 -1
- package/dist/internal/request.js +20 -7
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schedule.js +17 -22
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/schema/compilerRegistry.js +4 -1
- package/dist/internal/schema/compilerRegistry.js.map +1 -1
- package/dist/internal/schema/content.d.ts +2 -0
- package/dist/internal/schema/content.d.ts.map +1 -0
- package/dist/internal/schema/content.js +13 -0
- package/dist/internal/schema/content.js.map +1 -0
- package/dist/internal/schema/fromJsonSchemaDocument.js +253 -255
- package/dist/internal/schema/fromJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/fromRepresentation.js +2 -1
- package/dist/internal/schema/fromRepresentation.js.map +1 -1
- package/dist/internal/schema/interpreter.js +51 -36
- package/dist/internal/schema/interpreter.js.map +1 -1
- package/dist/internal/schema/standardSchema.js +42 -35
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +10 -5
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +99 -17
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toFormatter.js +5 -5
- package/dist/internal/schema/toFormatter.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +257 -170
- package/dist/internal/schema/toJsonSchemaDocument.js.map +1 -1
- package/dist/internal/schema/toRepresentation.js +107 -129
- package/dist/internal/schema/toRepresentation.js.map +1 -1
- package/dist/internal/sql.d.ts +2 -0
- package/dist/internal/sql.d.ts.map +1 -0
- package/dist/internal/sql.js +13 -0
- package/dist/internal/sql.js.map +1 -0
- package/dist/internal/trie.js +1 -3
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/uuid.js +7 -3
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/net/NetAddress.d.ts.map +1 -1
- package/dist/net/NetAddress.js +2 -8
- package/dist/net/NetAddress.js.map +1 -1
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +5 -12
- package/dist/observability/OtlpExporter.js.map +1 -1
- package/dist/observability/OtlpMetrics.d.ts.map +1 -1
- package/dist/observability/OtlpMetrics.js +5 -3
- package/dist/observability/OtlpMetrics.js.map +1 -1
- package/dist/observability/OtlpProxy.d.ts +154 -0
- package/dist/observability/OtlpProxy.d.ts.map +1 -0
- package/dist/observability/OtlpProxy.js +235 -0
- package/dist/observability/OtlpProxy.js.map +1 -0
- package/dist/observability/OtlpResource.d.ts +3 -1
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -4
- package/dist/observability/OtlpResource.js.map +1 -1
- package/dist/observability/OtlpSerialization.d.ts +5 -0
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +14 -3
- package/dist/observability/OtlpSerialization.js.map +1 -1
- package/dist/observability/OtlpTracer.d.ts.map +1 -1
- package/dist/observability/OtlpTracer.js +4 -0
- package/dist/observability/OtlpTracer.js.map +1 -1
- package/dist/observability/index.d.ts +5 -0
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +5 -0
- package/dist/observability/index.js.map +1 -1
- package/dist/observability/internal/protobuf.d.ts +0 -9
- package/dist/observability/internal/protobuf.d.ts.map +1 -1
- package/dist/observability/internal/protobuf.js +2 -10
- package/dist/observability/internal/protobuf.js.map +1 -1
- package/dist/persistence/CircuitBreaker.d.ts +897 -0
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -0
- package/dist/persistence/CircuitBreaker.js +1165 -0
- package/dist/persistence/CircuitBreaker.js.map +1 -0
- package/dist/persistence/PersistedCache.d.ts.map +1 -1
- package/dist/persistence/PersistedCache.js +1 -1
- package/dist/persistence/PersistedCache.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +6 -2
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +162 -84
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +28 -0
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +36 -8
- package/dist/persistence/Persistence.js.map +1 -1
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +8 -12
- package/dist/persistence/RateLimiter.js.map +1 -1
- package/dist/persistence/Redis.d.ts +78 -2
- package/dist/persistence/Redis.d.ts.map +1 -1
- package/dist/persistence/Redis.js +62 -7
- package/dist/persistence/Redis.js.map +1 -1
- package/dist/persistence/UserDirectories.d.ts +129 -0
- package/dist/persistence/UserDirectories.d.ts.map +1 -0
- package/dist/persistence/UserDirectories.js +178 -0
- package/dist/persistence/UserDirectories.js.map +1 -0
- package/dist/persistence/index.d.ts +10 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +10 -0
- package/dist/persistence/index.js.map +1 -1
- package/dist/process/ChildProcess.d.ts +32 -5
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/process/ChildProcessSpawner.d.ts +30 -0
- package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
- package/dist/process/ChildProcessSpawner.js +5 -2
- package/dist/process/ChildProcessSpawner.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/AsyncResult.js +1 -1
- package/dist/reactivity/AsyncResult.js.map +1 -1
- package/dist/reactivity/Atom.d.ts +69 -30
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +40 -15
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomHttpApi.d.ts +5 -5
- package/dist/reactivity/AtomHttpApi.d.ts.map +1 -1
- package/dist/reactivity/AtomHttpApi.js +1 -1
- package/dist/reactivity/AtomHttpApi.js.map +1 -1
- package/dist/reactivity/AtomRegistry.d.ts +2 -2
- package/dist/reactivity/AtomRegistry.d.ts.map +1 -1
- package/dist/reactivity/AtomRegistry.js +44 -9
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/reactivity/AtomRpc.d.ts +3 -3
- package/dist/reactivity/AtomRpc.d.ts.map +1 -1
- package/dist/reactivity/AtomRpc.js +1 -1
- package/dist/reactivity/AtomRpc.js.map +1 -1
- package/dist/reactivity/Hydration.d.ts.map +1 -1
- package/dist/reactivity/Hydration.js +46 -12
- package/dist/reactivity/Hydration.js.map +1 -1
- package/dist/reactivity/Reactivity.d.ts +71 -7
- package/dist/reactivity/Reactivity.d.ts.map +1 -1
- package/dist/reactivity/Reactivity.js +21 -12
- package/dist/reactivity/Reactivity.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +18 -0
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js +20 -0
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +26 -2
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +198 -61
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +29 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +41 -13
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +20 -19
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/rpc/RpcTest.d.ts +1 -0
- package/dist/rpc/RpcTest.d.ts.map +1 -1
- package/dist/rpc/RpcTest.js +1 -0
- package/dist/rpc/RpcTest.js.map +1 -1
- package/dist/schema/Model.d.ts +1 -1
- package/dist/schema/VariantSchema.d.ts +22 -3
- package/dist/schema/VariantSchema.d.ts.map +1 -1
- package/dist/schema/VariantSchema.js +32 -18
- package/dist/schema/VariantSchema.js.map +1 -1
- package/dist/socket/Socket.d.ts +23 -1
- package/dist/socket/Socket.d.ts.map +1 -1
- package/dist/socket/Socket.js +36 -3
- package/dist/socket/Socket.js.map +1 -1
- package/dist/sql/Migrator.d.ts +2 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +21 -6
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +148 -5
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +155 -27
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +13 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +27 -4
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +10 -1
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +45 -7
- package/dist/sql/Statement.js.map +1 -1
- package/dist/testing/TestClock.d.ts.map +1 -1
- package/dist/testing/TestClock.js +4 -2
- package/dist/testing/TestClock.js.map +1 -1
- package/dist/testing/TestSchema.d.ts +7 -1
- package/dist/testing/TestSchema.d.ts.map +1 -1
- package/dist/testing/TestSchema.js +9 -3
- package/dist/testing/TestSchema.js.map +1 -1
- package/dist/workflow/DurableDeferred.d.ts.map +1 -1
- package/dist/workflow/DurableDeferred.js +21 -2
- package/dist/workflow/DurableDeferred.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +18 -4
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/package.json +13 -3
- package/src/Arbitrary.ts +10 -2
- package/src/Array.ts +128 -55
- package/src/Bytes.ts +111 -0
- package/src/Channel.ts +308 -452
- package/src/ChannelSchema.ts +1 -49
- package/src/Chunk.ts +55 -61
- package/src/Config.ts +12 -86
- package/src/ConfigProvider.ts +2 -1
- package/src/Cron.ts +6 -3
- package/src/Data.ts +60 -265
- package/src/Duration.ts +66 -16
- package/src/Effect.ts +503 -168
- package/src/Equal.ts +8 -1
- package/src/Equivalence.ts +7 -4
- package/src/Exit.ts +27 -12
- package/src/FiberHandle.ts +10 -9
- package/src/FiberMap.ts +13 -66
- package/src/FileSystem.ts +10 -0
- package/src/Formatter.ts +28 -13
- package/src/Graph.ts +171 -1263
- package/src/Hash.ts +4 -1
- package/src/HashSet.ts +0 -60
- package/src/Iterable.ts +15 -14
- package/src/JsonPatch.ts +4 -0
- package/src/JsonSchema.ts +40 -43
- package/src/Layer.ts +2 -2
- package/src/ManagedRuntime.ts +72 -6
- package/src/Metric.ts +252 -510
- package/src/MutableHashMap.ts +4 -473
- package/src/MutableList.ts +7 -5
- package/src/MutableRef.ts +8 -1
- package/src/Number.ts +2 -2
- package/src/Optic.ts +17 -332
- package/src/PartitionedSemaphore.ts +24 -13
- package/src/Path.ts +9 -1
- package/src/Pool.ts +109 -37
- package/src/PubSub.ts +17 -13
- package/src/Queue.ts +5 -37
- package/src/Random.ts +1 -1
- package/src/RcMap.ts +14 -8
- package/src/Record.ts +51 -0
- package/src/Ref.ts +15 -104
- package/src/References.ts +5 -4
- package/src/RequestResolver.ts +46 -87
- package/src/Resource.ts +1 -1
- package/src/Runtime.ts +19 -18
- package/src/Schedule.ts +3 -95
- package/src/Schema.ts +639 -381
- package/src/SchemaAST.ts +40 -29
- package/src/SchemaGetter.ts +22 -5
- package/src/SchemaIssue.ts +44 -53
- package/src/SchemaParser.ts +51 -18
- package/src/SchemaRepresentation.ts +95 -35
- package/src/SchemaTransformation.ts +10 -3
- package/src/Scope.ts +12 -2
- package/src/ScopedCache.ts +17 -142
- package/src/SemVer.ts +1528 -0
- package/src/SemVerRange.ts +883 -0
- package/src/Semaphore.ts +67 -40
- package/src/Sink.ts +21 -4
- package/src/Stream.ts +367 -1027
- package/src/String.ts +11 -8
- package/src/TextDiff.ts +766 -0
- package/src/Tracer.ts +15 -1
- package/src/TxHashMap.ts +1 -103
- package/src/TxHashSet.ts +48 -753
- package/src/ai/AiError.ts +66 -4
- package/src/ai/Chat.ts +10 -5
- package/src/ai/Decision.ts +49 -1
- package/src/ai/DecisionModel.ts +264 -108
- package/src/ai/EmbeddingModel.ts +25 -13
- package/src/ai/LanguageModel.ts +9 -0
- package/src/ai/McpClient.ts +1211 -0
- package/src/ai/McpClientError.ts +329 -0
- package/src/ai/McpProtocol.ts +2 -2
- package/src/ai/McpSchema.ts +153 -35
- package/src/ai/McpServer.ts +231 -233
- package/src/ai/Prompt.ts +114 -35
- package/src/ai/Response.ts +220 -65
- package/src/ai/Tool.ts +50 -6
- package/src/ai/Toolkit.ts +82 -11
- package/src/ai/index.ts +12 -0
- package/src/ai/internal/mcpCore.ts +13 -14
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +1 -1
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -3
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +12 -14
- package/src/ai/internal/mcpProtocol.ts +22 -2
- package/src/ai/internal/mcpRuntime.ts +3 -4
- package/src/ai/internal/mcpSchema/v2024_11_05.ts +20 -13
- package/src/ai/internal/mcpSchema/v2025_03_26.ts +4 -2
- package/src/ai/internal/mcpSchema/v2025_06_18.ts +7 -7
- package/src/ai/internal/mcpSchema/v2025_11_25.ts +8 -8
- package/src/ai/internal/mcpSchema/v2026_07_28.ts +44 -42
- package/src/cli/Argument.ts +15 -0
- package/src/cli/CliError.ts +136 -4
- package/src/cli/CliOutput.ts +183 -6
- package/src/cli/Command.ts +367 -48
- package/src/cli/Completions.ts +56 -0
- package/src/cli/Flag.ts +132 -0
- package/src/cli/GlobalFlag.ts +5 -6
- package/src/cli/Param.ts +151 -6
- package/src/cli/TerminalCapabilities.ts +159 -0
- package/src/cli/index.ts +6 -0
- package/src/cli/internal/command.ts +8 -3
- package/src/cli/internal/completions/bash.ts +83 -32
- package/src/cli/internal/completions/descriptor.ts +11 -1
- package/src/cli/internal/completions/fish.ts +10 -8
- package/src/cli/internal/completions/powershell.ts +23 -14
- package/src/cli/internal/completions/zsh.ts +8 -5
- package/src/cli/internal/formatter.ts +18 -0
- package/src/cli/internal/lexer.ts +12 -5
- package/src/cli/internal/parser.ts +31 -11
- package/src/cluster/ClusterCron.ts +94 -35
- package/src/cluster/ClusterMetrics.ts +149 -7
- package/src/cluster/ClusterWorkflowEngine.ts +130 -57
- package/src/cluster/Entity.ts +4 -0
- package/src/cluster/MessageStorage.ts +26 -14
- package/src/cluster/Runners.ts +76 -25
- package/src/cluster/Sharding.ts +200 -58
- package/src/cluster/ShardingConfig.ts +20 -0
- package/src/cluster/Snowflake.ts +3 -7
- package/src/cluster/SqlMessageStorage.ts +58 -55
- package/src/cluster/SqlRunnerStorage.ts +120 -51
- package/src/cluster/internal/entityManager.ts +155 -32
- package/src/devtools/DevTools.ts +3 -2
- package/src/devtools/DevToolsClient.ts +29 -10
- package/src/encoding/Base64.ts +38 -0
- package/src/encoding/Base64Url.ts +31 -0
- package/src/encoding/Ini.ts +3 -0
- package/src/encoding/JsonArray.ts +849 -0
- package/src/encoding/Ndjson.ts +211 -20
- package/src/encoding/SchemaBinary.ts +14 -48
- package/src/encoding/Sse.ts +4 -3
- package/src/encoding/Tar.ts +1417 -0
- package/src/encoding/Toml.ts +36 -19
- package/src/encoding/Xml.ts +2037 -0
- package/src/encoding/Yaml.ts +108 -36
- package/src/encoding/Zip.ts +1558 -0
- package/src/encoding/index.ts +24 -0
- package/src/eventlog/EventJournal.ts +611 -227
- package/src/eventlog/EventLog.ts +496 -196
- package/src/eventlog/EventLogEncryption.ts +128 -43
- package/src/eventlog/EventLogMessage.ts +62 -11
- package/src/eventlog/EventLogRemote.ts +77 -21
- package/src/eventlog/EventLogServer.ts +162 -20
- package/src/eventlog/EventLogServerEncrypted.ts +121 -80
- package/src/eventlog/EventLogServerUnencrypted.ts +180 -77
- package/src/eventlog/EventRow.ts +706 -0
- package/src/eventlog/SqlEventJournal.ts +496 -193
- package/src/eventlog/SqlEventLogServerEncrypted.ts +212 -83
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +141 -62
- package/src/eventlog/index.ts +6 -0
- package/src/eventlog/internal/conflicts.ts +119 -0
- package/src/graphql/GraphQLClientError.ts +5 -12
- package/src/graphql/GraphQLProtocol.ts +12 -9
- package/src/graphql/GraphQLResolver.ts +90 -239
- package/src/http/Cookies.ts +10 -11
- package/src/http/FetchHttpClient.ts +56 -6
- package/src/http/FindMyWay/internal/router.ts +11 -0
- package/src/http/Headers.ts +337 -154
- package/src/http/HttpClient.ts +673 -142
- package/src/http/HttpClientError.ts +35 -1
- package/src/http/HttpClientRequest.ts +151 -5
- package/src/http/HttpClientResponse.ts +71 -0
- package/src/http/HttpEffect.ts +25 -33
- package/src/http/HttpIncomingMessage.ts +3 -23
- package/src/http/HttpMiddleware.ts +194 -40
- package/src/http/HttpRouter.ts +10 -3
- package/src/http/HttpServerError.ts +8 -5
- package/src/http/HttpServerRequest.ts +172 -27
- package/src/http/HttpServerResponse.ts +49 -23
- package/src/http/HttpStaticServer.ts +71 -26
- package/src/http/MultipartParser/internal/contentType.ts +109 -8
- package/src/http/MultipartParser/internal/headers.ts +4 -16
- package/src/http/MultipartParser/internal/multipart.ts +10 -32
- package/src/http/Url.ts +6 -1
- package/src/http/UrlParams.ts +6 -1
- package/src/http/internal/compression.ts +4 -5
- package/src/http/internal/decompression.ts +32 -17
- package/src/http/internal/httpBody.ts +10 -2
- package/src/http/internal/lazyStream.ts +25 -0
- package/src/http/internal/requestState.ts +33 -0
- package/src/http/internal/urlParams.ts +29 -0
- package/src/http/internal/webResponse.ts +20 -0
- package/src/http-api/HttpApi.ts +4 -7
- package/src/http-api/HttpApiBuilder.ts +190 -32
- package/src/http-api/HttpApiClient.ts +364 -90
- package/src/http-api/HttpApiEndpoint.ts +248 -46
- package/src/http-api/HttpApiError.ts +55 -0
- package/src/http-api/HttpApiScalar.ts +4 -3
- package/src/http-api/HttpApiSchema.ts +373 -18
- package/src/http-api/HttpApiSwagger.ts +11 -4
- package/src/http-api/HttpApiTest.ts +36 -11
- package/src/http-api/OpenApi.ts +103 -58
- package/src/http-api/internal/path.ts +40 -12
- package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
- package/src/index.ts +24 -0
- package/src/internal/arbitrary/runner.ts +133 -36
- package/src/internal/core.ts +3 -1
- package/src/internal/dateTime.ts +20 -7
- package/src/internal/effect.ts +144 -100
- package/src/internal/equal.ts +17 -0
- package/src/internal/hashMap.ts +2 -2
- package/src/internal/hydration.ts +15 -0
- package/src/internal/inflate.ts +710 -0
- package/src/internal/jsonSchema.ts +27 -0
- package/src/internal/matcher.ts +1 -1
- package/src/internal/record.ts +6 -0
- package/src/internal/request.ts +21 -6
- package/src/internal/schedule.ts +20 -39
- package/src/internal/schema/compilerRegistry.ts +6 -1
- package/src/internal/schema/content.ts +18 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +458 -351
- package/src/internal/schema/fromRepresentation.ts +2 -1
- package/src/internal/schema/interpreter.ts +58 -45
- package/src/internal/schema/standardSchema.ts +34 -32
- package/src/internal/schema/toCodeDocument.ts +12 -7
- package/src/internal/schema/toCodec.ts +134 -15
- package/src/internal/schema/toFormatter.ts +6 -6
- package/src/internal/schema/toJsonSchemaDocument.ts +246 -194
- package/src/internal/schema/toRepresentation.ts +122 -140
- package/src/internal/sql.ts +14 -0
- package/src/internal/trie.ts +1 -3
- package/src/internal/uuid.ts +15 -10
- package/src/internal/version.ts +1 -1
- package/src/net/NetAddress.ts +2 -9
- package/src/observability/OtlpExporter.ts +5 -12
- package/src/observability/OtlpMetrics.ts +5 -3
- package/src/observability/OtlpProxy.ts +314 -0
- package/src/observability/OtlpResource.ts +16 -6
- package/src/observability/OtlpSerialization.ts +17 -3
- package/src/observability/OtlpTracer.ts +4 -0
- package/src/observability/index.ts +6 -0
- package/src/observability/internal/protobuf.ts +2 -10
- package/src/persistence/CircuitBreaker.ts +1678 -0
- package/src/persistence/PersistedCache.ts +3 -1
- package/src/persistence/PersistedQueue.ts +223 -153
- package/src/persistence/Persistence.ts +64 -30
- package/src/persistence/RateLimiter.ts +18 -21
- package/src/persistence/Redis.ts +129 -8
- package/src/persistence/UserDirectories.ts +273 -0
- package/src/persistence/index.ts +12 -0
- package/src/process/ChildProcess.ts +32 -5
- package/src/process/ChildProcessSpawner.ts +41 -2
- package/src/reactivity/AsyncResult.ts +5 -39
- package/src/reactivity/Atom.ts +134 -166
- package/src/reactivity/AtomHttpApi.ts +10 -16
- package/src/reactivity/AtomRegistry.ts +50 -29
- package/src/reactivity/AtomRpc.ts +6 -22
- package/src/reactivity/Hydration.ts +53 -12
- package/src/reactivity/Reactivity.ts +97 -39
- package/src/rpc/Rpc.ts +21 -0
- package/src/rpc/RpcClient.ts +283 -104
- package/src/rpc/RpcSerialization.ts +53 -14
- package/src/rpc/RpcServer.ts +27 -21
- package/src/rpc/RpcTest.ts +3 -0
- package/src/schema/VariantSchema.ts +86 -22
- package/src/socket/Socket.ts +45 -20
- package/src/sql/Migrator.ts +26 -11
- package/src/sql/SqlClient.ts +273 -29
- package/src/sql/SqlResolver.ts +32 -9
- package/src/sql/Statement.ts +65 -10
- package/src/testing/TestClock.ts +4 -1
- package/src/testing/TestSchema.ts +9 -3
- package/src/workflow/DurableDeferred.ts +23 -6
- package/src/workflow/WorkflowEngine.ts +34 -10
- package/dist/http/internal/preResponseHandler.d.ts +0 -2
- package/dist/http/internal/preResponseHandler.d.ts.map +0 -1
- package/dist/http/internal/preResponseHandler.js +0 -14
- package/dist/http/internal/preResponseHandler.js.map +0 -1
- package/src/http/internal/preResponseHandler.ts +0 -19
|
@@ -95,6 +95,18 @@ export class MaxBufferSizeExceeded extends Data.TaggedError("MaxBufferSizeExceed
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
+
/**
|
|
99
|
+
* Error raised when a non-empty NDJSON frame is not valid JSON.
|
|
100
|
+
* The `cause` field preserves the original JSON parsing error.
|
|
101
|
+
*
|
|
102
|
+
* @stability unstable
|
|
103
|
+
* @category errors
|
|
104
|
+
* @since 4.0.0
|
|
105
|
+
*/
|
|
106
|
+
export class NdjsonDecodeError extends Data.TaggedError("NdjsonDecodeError")<{
|
|
107
|
+
readonly cause: unknown
|
|
108
|
+
}> {}
|
|
109
|
+
|
|
98
110
|
/**
|
|
99
111
|
* Options shared by streaming RPC serialization formats.
|
|
100
112
|
*
|
|
@@ -150,7 +162,7 @@ export const json: RpcSerialization["Service"] = RpcSerialization.of({
|
|
|
150
162
|
export const makeNdjson = (options?: StreamOptions): RpcSerialization["Service"] => {
|
|
151
163
|
const maxBufferSize = options?.maxBufferSize ?? defaultMaxBufferSize
|
|
152
164
|
return RpcSerialization.of({
|
|
153
|
-
contentType: "application/ndjson",
|
|
165
|
+
contentType: "application/x-ndjson",
|
|
154
166
|
includesFraming: true,
|
|
155
167
|
codecFor: codecForJson,
|
|
156
168
|
makeUnsafe: () => {
|
|
@@ -171,11 +183,15 @@ export const makeNdjson = (options?: StreamOptions): RpcSerialization["Service"]
|
|
|
171
183
|
if (isBufferSizeExceeded(nlIndex - position, maxBufferSize)) {
|
|
172
184
|
failMaxBufferSize(maxBufferSize)
|
|
173
185
|
}
|
|
174
|
-
const line = buffer.slice(position, nlIndex)
|
|
186
|
+
const line = buffer.slice(position, buffer[nlIndex - 1] === "\r" ? nlIndex - 1 : nlIndex)
|
|
175
187
|
position = nlIndex + 1
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
188
|
+
if (line.length > 0) {
|
|
189
|
+
try {
|
|
190
|
+
items.push(JSON.parse(line))
|
|
191
|
+
} catch (cause) {
|
|
192
|
+
buffer = ""
|
|
193
|
+
throw new NdjsonDecodeError({ cause })
|
|
194
|
+
}
|
|
179
195
|
}
|
|
180
196
|
nlIndex = buffer.indexOf("\n", position)
|
|
181
197
|
}
|
|
@@ -214,18 +230,25 @@ export const ndjson: RpcSerialization["Service"] = makeNdjson()
|
|
|
214
230
|
* Creates a JSON-RPC 2.0 serialization for RPC protocol messages without
|
|
215
231
|
* additional message framing.
|
|
216
232
|
*
|
|
233
|
+
* **Details**
|
|
234
|
+
*
|
|
235
|
+
* Set `controlMessages` to `false` for plain JSON-RPC peers, so
|
|
236
|
+
* `@effect/rpc/*` methods are not decoded as RPC control messages.
|
|
237
|
+
*
|
|
217
238
|
* @stability unstable
|
|
218
239
|
* @category serialization
|
|
219
240
|
* @since 4.0.0
|
|
220
241
|
*/
|
|
221
242
|
export const jsonRpc = (options?: {
|
|
222
243
|
readonly contentType?: string | undefined
|
|
244
|
+
readonly controlMessages?: boolean | undefined
|
|
223
245
|
}): RpcSerialization["Service"] =>
|
|
224
246
|
RpcSerialization.of({
|
|
225
247
|
contentType: options?.contentType ?? "application/json",
|
|
226
248
|
includesFraming: false,
|
|
227
249
|
codecFor: codecForJson,
|
|
228
250
|
makeUnsafe: () => {
|
|
251
|
+
const controlMessages = options?.controlMessages ?? true
|
|
229
252
|
const batches = new Map<string | number, {
|
|
230
253
|
readonly size: number
|
|
231
254
|
readonly responses: Map<string | number, RpcMessage.FromServerEncoded>
|
|
@@ -235,7 +258,7 @@ export const jsonRpc = (options?: {
|
|
|
235
258
|
const decoded: unknown = JSON.parse(
|
|
236
259
|
typeof bytes === "string" ? bytes : decodeText(bytes)
|
|
237
260
|
)
|
|
238
|
-
return decodeJsonRpcRaw(decoded, batches)
|
|
261
|
+
return decodeJsonRpcRaw(decoded, batches, controlMessages)
|
|
239
262
|
},
|
|
240
263
|
encode: (response) => {
|
|
241
264
|
const encoded = encodeJsonRpcResponse(response as any, batches)
|
|
@@ -249,6 +272,11 @@ export const jsonRpc = (options?: {
|
|
|
249
272
|
* Creates a newline-delimited JSON-RPC 2.0 serialization for RPC protocol
|
|
250
273
|
* messages.
|
|
251
274
|
*
|
|
275
|
+
* **Details**
|
|
276
|
+
*
|
|
277
|
+
* Set `controlMessages` to `false` for plain JSON-RPC peers, so
|
|
278
|
+
* `@effect/rpc/*` methods are not decoded as RPC control messages.
|
|
279
|
+
*
|
|
252
280
|
* @stability unstable
|
|
253
281
|
* @category serialization
|
|
254
282
|
* @since 4.0.0
|
|
@@ -256,6 +284,7 @@ export const jsonRpc = (options?: {
|
|
|
256
284
|
export const ndJsonRpc = (options?: {
|
|
257
285
|
readonly contentType?: string | undefined
|
|
258
286
|
readonly maxBufferSize?: number | "unbounded" | undefined
|
|
287
|
+
readonly controlMessages?: boolean | undefined
|
|
259
288
|
}): RpcSerialization["Service"] =>
|
|
260
289
|
RpcSerialization.of({
|
|
261
290
|
contentType: options?.contentType ?? "application/json-rpc",
|
|
@@ -263,6 +292,7 @@ export const ndJsonRpc = (options?: {
|
|
|
263
292
|
codecFor: codecForJson,
|
|
264
293
|
makeUnsafe: () => {
|
|
265
294
|
const parser = makeNdjson({ maxBufferSize: options?.maxBufferSize }).makeUnsafe()
|
|
295
|
+
const controlMessages = options?.controlMessages ?? true
|
|
266
296
|
const batches = new Map<string, {
|
|
267
297
|
readonly size: number
|
|
268
298
|
readonly responses: Map<string, RpcMessage.FromServerEncoded>
|
|
@@ -273,7 +303,7 @@ export const ndJsonRpc = (options?: {
|
|
|
273
303
|
if (frames.length === 0) return []
|
|
274
304
|
const messages: Array<RpcMessage.FromClientEncoded | RpcMessage.FromServerEncoded> = []
|
|
275
305
|
for (let i = 0; i < frames.length; i++) {
|
|
276
|
-
messages.push(...decodeJsonRpcRaw(frames[i], batches))
|
|
306
|
+
messages.push(...decodeJsonRpcRaw(frames[i], batches, controlMessages))
|
|
277
307
|
}
|
|
278
308
|
return messages
|
|
279
309
|
},
|
|
@@ -290,7 +320,8 @@ function decodeJsonRpcRaw(
|
|
|
290
320
|
batches: Map<string | number, {
|
|
291
321
|
readonly size: number
|
|
292
322
|
readonly responses: Map<string | number, RpcMessage.FromServerEncoded>
|
|
293
|
-
}
|
|
323
|
+
}>,
|
|
324
|
+
controlMessages: boolean
|
|
294
325
|
) {
|
|
295
326
|
if (Array.isArray(decoded)) {
|
|
296
327
|
const batch = {
|
|
@@ -301,7 +332,7 @@ function decodeJsonRpcRaw(
|
|
|
301
332
|
for (let i = 0; i < decoded.length; i++) {
|
|
302
333
|
const item = decoded[i]
|
|
303
334
|
if (!Predicate.isObject(item)) continue
|
|
304
|
-
const message = decodeJsonRpcMessage(item as unknown as JsonRpcMessage)
|
|
335
|
+
const message = decodeJsonRpcMessage(item as unknown as JsonRpcMessage, controlMessages)
|
|
305
336
|
messages.push(message)
|
|
306
337
|
if (message._tag === "Request" && !message.isNotification) {
|
|
307
338
|
batch.size++
|
|
@@ -310,14 +341,20 @@ function decodeJsonRpcRaw(
|
|
|
310
341
|
}
|
|
311
342
|
return messages
|
|
312
343
|
}
|
|
313
|
-
return Predicate.isObject(decoded)
|
|
344
|
+
return Predicate.isObject(decoded)
|
|
345
|
+
? [decodeJsonRpcMessage(decoded as unknown as JsonRpcMessage, controlMessages)]
|
|
346
|
+
: []
|
|
314
347
|
}
|
|
315
348
|
|
|
316
|
-
function decodeJsonRpcMessage(
|
|
349
|
+
function decodeJsonRpcMessage(
|
|
350
|
+
decoded: JsonRpcMessage,
|
|
351
|
+
controlMessages: boolean
|
|
352
|
+
): RpcMessage.FromClientEncoded | RpcMessage.FromServerEncoded {
|
|
317
353
|
if (Object.hasOwn(decoded, "method")) {
|
|
318
354
|
const request = decoded as JsonRpcRequest
|
|
319
355
|
if (
|
|
320
|
-
Predicate.isNullish(request.id) && Predicate.isString(request.method) &&
|
|
356
|
+
controlMessages && Predicate.isNullish(request.id) && Predicate.isString(request.method) &&
|
|
357
|
+
request.method.startsWith("@effect/rpc/")
|
|
321
358
|
) {
|
|
322
359
|
const tag = request.method.slice("@effect/rpc/".length) as
|
|
323
360
|
| RpcMessage.FromServerEncoded["_tag"]
|
|
@@ -387,13 +424,13 @@ function encodeJsonRpcRaw(
|
|
|
387
424
|
readonly responses: Map<string | number, RpcMessage.FromServerEncoded>
|
|
388
425
|
}>
|
|
389
426
|
) {
|
|
390
|
-
if (
|
|
427
|
+
if (response._tag !== "Exit") {
|
|
391
428
|
return encodeJsonRpcMessage(response)
|
|
392
429
|
}
|
|
393
430
|
const batch = batches.get(response.requestId)
|
|
394
431
|
if (batch) {
|
|
395
432
|
batches.delete(response.requestId)
|
|
396
|
-
batch.responses.set(response.requestId, response
|
|
433
|
+
batch.responses.set(response.requestId, response)
|
|
397
434
|
if (batch.size === batch.responses.size) {
|
|
398
435
|
return Array.from(batch.responses.values(), encodeJsonRpcMessage)
|
|
399
436
|
}
|
|
@@ -628,6 +665,7 @@ export const layerNdjsonWith = (options?: StreamOptions): Layer.Layer<RpcSeriali
|
|
|
628
665
|
*/
|
|
629
666
|
export const layerJsonRpc = (options?: {
|
|
630
667
|
readonly contentType?: string | undefined
|
|
668
|
+
readonly controlMessages?: boolean | undefined
|
|
631
669
|
}): Layer.Layer<RpcSerialization> => Layer.succeed(RpcSerialization)(jsonRpc(options))
|
|
632
670
|
|
|
633
671
|
/**
|
|
@@ -641,6 +679,7 @@ export const layerJsonRpc = (options?: {
|
|
|
641
679
|
export const layerNdJsonRpc = (options?: {
|
|
642
680
|
readonly contentType?: string | undefined
|
|
643
681
|
readonly maxBufferSize?: number | "unbounded" | undefined
|
|
682
|
+
readonly controlMessages?: boolean | undefined
|
|
644
683
|
}): Layer.Layer<RpcSerialization> => Layer.succeed(RpcSerialization)(ndJsonRpc(options))
|
|
645
684
|
|
|
646
685
|
/**
|
package/src/rpc/RpcServer.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* @since 4.0.0
|
|
13
13
|
*/
|
|
14
14
|
import type { NonEmptyReadonlyArray } from "../Array.ts"
|
|
15
|
+
import * as Bytes from "../Bytes.ts"
|
|
15
16
|
import * as Cause from "../Cause.ts"
|
|
16
17
|
import * as Context from "../Context.ts"
|
|
17
18
|
import * as Deferred from "../Deferred.ts"
|
|
@@ -277,7 +278,7 @@ export const makeNoSerialization: <Rpcs extends Rpc.Any>(
|
|
|
277
278
|
headers: request.headers,
|
|
278
279
|
payload: request.payload
|
|
279
280
|
}
|
|
280
|
-
const result = entry
|
|
281
|
+
const result = runHandler(entry, request.payload, metadata)
|
|
281
282
|
|
|
282
283
|
// if the handler requested forking, then we skip the concurrency control
|
|
283
284
|
const isWrapper = Rpc.isWrapper(result)
|
|
@@ -513,14 +514,16 @@ const rpcCodecs = (codecFor: RpcSerialization.CodecFor, rpc: Rpc.AnyWithProps):
|
|
|
513
514
|
let codecs = shared ? sharedRpcCodecs.get(rpc) : undefined
|
|
514
515
|
if (codecs === undefined) {
|
|
515
516
|
const streamSchemas = RpcSchema.getStreamSchemas(rpc.successSchema)
|
|
517
|
+
const parseOptions = Context.get(rpc.annotations, Rpc.ParseOptions)
|
|
516
518
|
codecs = {
|
|
517
|
-
decode: Schema.decodeUnknownEffect(codecFor(rpc.payloadSchema)) as any,
|
|
519
|
+
decode: Schema.decodeUnknownEffect(codecFor(rpc.payloadSchema), parseOptions) as any,
|
|
518
520
|
encodeChunk: Schema.encodeUnknownEffect(
|
|
519
521
|
codecFor(
|
|
520
522
|
Schema.NonEmptyArray(Option.isSome(streamSchemas) ? streamSchemas.value.success : Schema.Any)
|
|
521
|
-
)
|
|
523
|
+
),
|
|
524
|
+
parseOptions
|
|
522
525
|
) as any,
|
|
523
|
-
encodeExit: Schema.encodeUnknownEffect(codecFor(Rpc.exitSchema(rpc as any))) as any
|
|
526
|
+
encodeExit: Schema.encodeUnknownEffect(codecFor(Rpc.exitSchema(rpc as any)), parseOptions) as any
|
|
524
527
|
}
|
|
525
528
|
if (shared) sharedRpcCodecs.set(rpc, codecs)
|
|
526
529
|
}
|
|
@@ -571,6 +574,21 @@ const handlerContext = (
|
|
|
571
574
|
return merged
|
|
572
575
|
}
|
|
573
576
|
|
|
577
|
+
// a synchronous throw is handled like a returned `Effect.die`, so it goes
|
|
578
|
+
// through the request exit handling. Stream handlers may also return an
|
|
579
|
+
// Effect, so a single `Effect.die` covers both kinds of rpc.
|
|
580
|
+
const runHandler = (
|
|
581
|
+
entry: Rpc.Handler<string>,
|
|
582
|
+
payload: unknown,
|
|
583
|
+
metadata: Parameters<Rpc.Handler<string>["handler"]>[1]
|
|
584
|
+
) => {
|
|
585
|
+
try {
|
|
586
|
+
return entry.handler(payload, metadata)
|
|
587
|
+
} catch (defect) {
|
|
588
|
+
return Effect.die(defect)
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
|
|
574
592
|
const applyMiddleware = <A, E, R>(
|
|
575
593
|
context: Context.Context<never>,
|
|
576
594
|
handler: Effect.Effect<A, E, R>,
|
|
@@ -1246,8 +1264,9 @@ export const makeProtocolWithHttpEffect: (
|
|
|
1246
1264
|
|
|
1247
1265
|
yield* writeRequest(id, constEof)
|
|
1248
1266
|
|
|
1267
|
+
// Allow request aborts during response waits without unmasking response construction.
|
|
1249
1268
|
if (!includesFraming) {
|
|
1250
|
-
const responses = yield* Queue.collect(queue)
|
|
1269
|
+
const responses = yield* Effect.interruptible(Queue.collect(queue))
|
|
1251
1270
|
// Notification-only batches encode without a response body.
|
|
1252
1271
|
const encoded = parser.encode(responses)
|
|
1253
1272
|
return HttpServerResponse.text(encoded === undefined ? "" : encoded as string, {
|
|
@@ -1255,12 +1274,12 @@ export const makeProtocolWithHttpEffect: (
|
|
|
1255
1274
|
})
|
|
1256
1275
|
}
|
|
1257
1276
|
|
|
1258
|
-
const initialChunk = yield* Pull.catchDone(
|
|
1277
|
+
const initialChunk = yield* Effect.interruptible(Pull.catchDone(
|
|
1259
1278
|
Queue.takeAll(queue as Queue.Dequeue<Uint8Array, Cause.Done>),
|
|
1260
1279
|
() => Effect.succeed([])
|
|
1261
|
-
)
|
|
1280
|
+
))
|
|
1262
1281
|
if (queue.state._tag === "Done") {
|
|
1263
|
-
return HttpServerResponse.uint8Array(
|
|
1282
|
+
return HttpServerResponse.uint8Array(initialChunk.length === 1 ? initialChunk[0] : Bytes.concat(initialChunk), {
|
|
1264
1283
|
contentType: serialization.contentType
|
|
1265
1284
|
})
|
|
1266
1285
|
}
|
|
@@ -1302,19 +1321,6 @@ export const makeProtocolWithHttpEffect: (
|
|
|
1302
1321
|
return { protocol, httpEffect } as const
|
|
1303
1322
|
})
|
|
1304
1323
|
|
|
1305
|
-
const mergeUint8Arrays = (arrays: ReadonlyArray<Uint8Array>) => {
|
|
1306
|
-
if (arrays.length === 0) return new Uint8Array(0)
|
|
1307
|
-
if (arrays.length === 1) return arrays[0]
|
|
1308
|
-
const length = arrays.reduce((acc, arr) => acc + arr.length, 0)
|
|
1309
|
-
const result = new Uint8Array(length)
|
|
1310
|
-
let offset = 0
|
|
1311
|
-
for (const arr of arrays) {
|
|
1312
|
-
result.set(arr, offset)
|
|
1313
|
-
offset += arr.length
|
|
1314
|
-
}
|
|
1315
|
-
return result
|
|
1316
|
-
}
|
|
1317
|
-
|
|
1318
1324
|
/**
|
|
1319
1325
|
* Creates an HTTP server `Protocol` and registers its request handler as a POST
|
|
1320
1326
|
* route on the current `HttpRouter`.
|
package/src/rpc/RpcTest.ts
CHANGED
|
@@ -29,6 +29,7 @@ export const makeClient: <Rpcs extends Rpc.Any, const Flatten extends boolean =
|
|
|
29
29
|
group: RpcGroup.RpcGroup<Rpcs>,
|
|
30
30
|
options?: {
|
|
31
31
|
readonly flatten?: Flatten | undefined
|
|
32
|
+
readonly disableFatalDefects?: boolean | undefined
|
|
32
33
|
}
|
|
33
34
|
) => Effect.Effect<
|
|
34
35
|
Flatten extends true ? RpcClient.RpcClient.Flat<Rpcs> : RpcClient.RpcClient<Rpcs>,
|
|
@@ -38,11 +39,13 @@ export const makeClient: <Rpcs extends Rpc.Any, const Flatten extends boolean =
|
|
|
38
39
|
group: RpcGroup.RpcGroup<Rpcs>,
|
|
39
40
|
options?: {
|
|
40
41
|
readonly flatten?: Flatten | undefined
|
|
42
|
+
readonly disableFatalDefects?: boolean | undefined
|
|
41
43
|
}
|
|
42
44
|
) {
|
|
43
45
|
// oxlint-disable-next-line prefer-const
|
|
44
46
|
let client!: Effect.Success<ReturnType<typeof RpcClient.makeNoSerialization<Rpcs, never, Flatten>>>
|
|
45
47
|
const server = yield* RpcServer.makeNoSerialization(group, {
|
|
48
|
+
disableFatalDefects: options?.disableFatalDefects,
|
|
46
49
|
onFromServer(response) {
|
|
47
50
|
return client.write(response)
|
|
48
51
|
}
|
|
@@ -241,9 +241,9 @@ const extract: {
|
|
|
241
241
|
if (options?.isDefault === true && Schema.isSchema(self)) {
|
|
242
242
|
return self as any
|
|
243
243
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
244
|
+
// own caches only, so extended classes never reuse their parent's variants
|
|
245
|
+
const cacheKey = options?.isDefault === true ? defaultCacheSymbol : cacheSymbol
|
|
246
|
+
const cache = Object.hasOwn(self, cacheKey) ? self[cacheKey]! : (self[cacheKey] = Object.create(null))
|
|
247
247
|
if (Object.hasOwn(cache, variant)) {
|
|
248
248
|
return cache[variant] as any
|
|
249
249
|
}
|
|
@@ -298,8 +298,11 @@ export interface Class<
|
|
|
298
298
|
Fields extends Struct.Fields,
|
|
299
299
|
S extends Schema.Top & {
|
|
300
300
|
readonly fields: Schema.Struct.Fields
|
|
301
|
-
}
|
|
302
|
-
|
|
301
|
+
},
|
|
302
|
+
Variants extends string = never,
|
|
303
|
+
Default extends string = never,
|
|
304
|
+
Inherited = {}
|
|
305
|
+
> extends Schema.Class<Self, S, Inherited>, Struct<Struct_.Simplify<Fields>> {
|
|
303
306
|
readonly "Type": Self
|
|
304
307
|
readonly "Encoded": S["Encoded"]
|
|
305
308
|
readonly "DecodingServices": S["DecodingServices"]
|
|
@@ -313,7 +316,7 @@ export interface Class<
|
|
|
313
316
|
options?: {
|
|
314
317
|
readonly disableChecks?: boolean
|
|
315
318
|
} | undefined
|
|
316
|
-
): S["Type"]
|
|
319
|
+
): S["Type"] & Inherited
|
|
317
320
|
|
|
318
321
|
make<Args extends Array<any>, X>(
|
|
319
322
|
this: { new(...args: Args): X },
|
|
@@ -321,8 +324,57 @@ export interface Class<
|
|
|
321
324
|
): X
|
|
322
325
|
|
|
323
326
|
readonly fields: S["fields"]
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Returns a function that creates a variant schema subclass with this
|
|
330
|
+
* class's fields plus additional fields, regenerating every variant schema
|
|
331
|
+
* from the merged fields.
|
|
332
|
+
*
|
|
333
|
+
* **Gotchas**
|
|
334
|
+
*
|
|
335
|
+
* Fields with the same name replace inherited fields in every variant. A
|
|
336
|
+
* replacement that omits an inherited field from the default variant does
|
|
337
|
+
* not remove it from the class schema; the caller must ensure replacements
|
|
338
|
+
* preserve the base class contract.
|
|
339
|
+
*/
|
|
340
|
+
readonly extend:
|
|
341
|
+
& (<Extended = never, Static = {}, Brand = {}>(
|
|
342
|
+
identifier: string
|
|
343
|
+
) => {
|
|
344
|
+
<const NewFields extends Struct.Fields>(
|
|
345
|
+
fields: NewFields & Struct.Validate<NewFields, Variants>,
|
|
346
|
+
annotations?:
|
|
347
|
+
| Schema.Annotations.Declaration<
|
|
348
|
+
Extended,
|
|
349
|
+
readonly [Schema.Struct<ExtractFields<Default, Struct_.Assign<Fields, NewFields>, true>>]
|
|
350
|
+
>
|
|
351
|
+
| undefined
|
|
352
|
+
): ExtendedClass<Extended, Static, Self & Brand, Struct_.Assign<Fields, NewFields>, Variants, Default>
|
|
353
|
+
<Extension extends Schema.Struct<Schema.Struct.Fields>>(
|
|
354
|
+
schema: Extension,
|
|
355
|
+
annotations?:
|
|
356
|
+
| Schema.Annotations.Declaration<
|
|
357
|
+
Extended,
|
|
358
|
+
readonly [Schema.Struct<ExtractFields<Default, Struct_.Assign<Fields, Extension["fields"]>, true>>]
|
|
359
|
+
>
|
|
360
|
+
| undefined
|
|
361
|
+
): ExtendedClass<Extended, Static, Self & Brand, Struct_.Assign<Fields, Extension["fields"]>, Variants, Default>
|
|
362
|
+
})
|
|
363
|
+
& Schema.Class<Self, S, Inherited>["extend"]
|
|
324
364
|
}
|
|
325
365
|
|
|
366
|
+
type ExtendedClass<
|
|
367
|
+
Self,
|
|
368
|
+
Static,
|
|
369
|
+
Inherited,
|
|
370
|
+
Fields extends Struct.Fields,
|
|
371
|
+
Variants extends string,
|
|
372
|
+
Default extends string
|
|
373
|
+
> = [Self] extends [never] ? "Missing `Self` generic - use `class Self extends Base.extend<Self>(...)`" :
|
|
374
|
+
& Class<Self, Fields, Schema.Struct<ExtractFields<Default, Fields, true>>, Variants, Default, Inherited>
|
|
375
|
+
& { readonly [V in Variants]: Extract<V, Struct<Fields>> }
|
|
376
|
+
& Pick<Static, Exclude<keyof Static, keyof Class<any, any, any> | Variants>>
|
|
377
|
+
|
|
326
378
|
type MissingSelfGeneric<Params extends string = ""> =
|
|
327
379
|
`Missing \`Self\` generic - use \`class Self extends Class<Self>()(${Params}{ ... })\``
|
|
328
380
|
|
|
@@ -444,7 +496,9 @@ export const make = <
|
|
|
444
496
|
& Class<
|
|
445
497
|
Self,
|
|
446
498
|
Fields,
|
|
447
|
-
Schema.Struct<ExtractFields<Default, Fields, true
|
|
499
|
+
Schema.Struct<ExtractFields<Default, Fields, true>>,
|
|
500
|
+
Variants[number],
|
|
501
|
+
Default
|
|
448
502
|
>
|
|
449
503
|
& {
|
|
450
504
|
readonly [V in Variants[number]]: Extract<V, Struct<Fields>>
|
|
@@ -470,24 +524,34 @@ export const make = <
|
|
|
470
524
|
readonly [Schema.Struct<ExtractFields<Default, typeof fields, true>>]
|
|
471
525
|
>
|
|
472
526
|
) {
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
527
|
+
return makeClass(fields, (defaultFields) => (Schema.Class as any)(identifier)(defaultFields, annotations))
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
function makeClass(fields: Struct.Fields, makeSchemaClass: (defaultFields: Schema.Struct.Fields) => any) {
|
|
531
|
+
const struct = Struct(fields)
|
|
532
|
+
const SchemaClass = makeSchemaClass(extract(struct, options.defaultVariant, { isDefault: true }).fields)
|
|
533
|
+
class Base extends SchemaClass {
|
|
534
|
+
static [TypeId] = fields
|
|
535
|
+
static extend(identifier: string) {
|
|
536
|
+
const extend = super.extend(identifier)
|
|
537
|
+
return (
|
|
538
|
+
extension: Struct.Fields | Schema.Struct<Schema.Struct.Fields>,
|
|
539
|
+
annotations?: Schema.Annotations.Declaration<any, readonly [any]>
|
|
540
|
+
) =>
|
|
541
|
+
Schema.isSchema(extension)
|
|
542
|
+
? makeClass({ ...fields, ...extension.fields as Struct.Fields }, () => extend(extension, annotations))
|
|
543
|
+
: makeClass({ ...fields, ...extension }, (defaultFields) => extend(defaultFields, annotations))
|
|
480
544
|
}
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
}
|
|
545
|
+
}
|
|
546
|
+
for (const variant of options.variants) {
|
|
547
|
+
Object.defineProperty(Base, variant, {
|
|
548
|
+
value: extract(struct, variant).annotate({
|
|
549
|
+
id: `${SchemaClass.identifier}.${variant}`,
|
|
550
|
+
title: `${SchemaClass.identifier}.${variant}`
|
|
487
551
|
})
|
|
488
|
-
}
|
|
489
|
-
return Base
|
|
552
|
+
})
|
|
490
553
|
}
|
|
554
|
+
return Base
|
|
491
555
|
}
|
|
492
556
|
function FieldOnly<const Keys extends ReadonlyArray<Variants[number]>>(keys: Keys) {
|
|
493
557
|
return function<S extends Schema.Top>(schema: S) {
|
package/src/socket/Socket.ts
CHANGED
|
@@ -245,7 +245,17 @@ export const readerBytes = (
|
|
|
245
245
|
*
|
|
246
246
|
* **Details**
|
|
247
247
|
*
|
|
248
|
-
*
|
|
248
|
+
* Each acquisition has its own streaming decoder. Characters may span binary
|
|
249
|
+
* frames and pulls; each frame produces one string, possibly empty. A string
|
|
250
|
+
* frame flushes incomplete characters as U+FFFD before its text. Close code 1000
|
|
251
|
+
* flushes remaining text once before propagating the close error; other failures
|
|
252
|
+
* do not flush.
|
|
253
|
+
*
|
|
254
|
+
* **Gotchas**
|
|
255
|
+
*
|
|
256
|
+
* Binary WebSocket messages share decoder state: incomplete characters carry
|
|
257
|
+
* into the next binary frame, and BOM handling resets only after a flush. Use
|
|
258
|
+
* `readerBytes` and decode each frame separately for per-message decoding.
|
|
249
259
|
*
|
|
250
260
|
* @stability unstable
|
|
251
261
|
* @category combinators
|
|
@@ -261,14 +271,31 @@ export const readerString = (
|
|
|
261
271
|
> =>
|
|
262
272
|
Effect.map(self.reader, ({ pull }) => {
|
|
263
273
|
const decoder = new TextDecoder(encoding)
|
|
274
|
+
const streamOptions = { stream: true }
|
|
275
|
+
let needsFlush = false
|
|
264
276
|
return Effect.map(pull, (chunk) => {
|
|
265
277
|
const out = new Array<string>(chunk.length)
|
|
266
278
|
for (let i = 0; i < chunk.length; i++) {
|
|
267
279
|
const item = chunk[i]
|
|
268
|
-
|
|
280
|
+
if (typeof item === "string") {
|
|
281
|
+
out[i] = needsFlush ? decoder.decode() + item : item
|
|
282
|
+
needsFlush = false
|
|
283
|
+
} else {
|
|
284
|
+
out[i] = decoder.decode(item, streamOptions)
|
|
285
|
+
needsFlush = true
|
|
286
|
+
}
|
|
269
287
|
}
|
|
270
288
|
return out as unknown as NonEmptyReadonlyArray<string>
|
|
271
|
-
})
|
|
289
|
+
}).pipe(
|
|
290
|
+
Effect.catch((error) => {
|
|
291
|
+
if (needsFlush && error.reason._tag === "SocketCloseError" && error.reason.code === 1000) {
|
|
292
|
+
needsFlush = false
|
|
293
|
+
const last = decoder.decode()
|
|
294
|
+
if (last.length > 0) return Effect.succeed([last] as const)
|
|
295
|
+
}
|
|
296
|
+
return Effect.fail(error)
|
|
297
|
+
})
|
|
298
|
+
)
|
|
272
299
|
})
|
|
273
300
|
|
|
274
301
|
const CloseEventTypeId = "~effect/socket/Socket/CloseEvent"
|
|
@@ -642,6 +669,10 @@ export const toChannel = <IE = never>(
|
|
|
642
669
|
* Converts a `Socket` into a bidirectional string `Channel`, decoding binary
|
|
643
670
|
* frames with the optional text encoding.
|
|
644
671
|
*
|
|
672
|
+
* **Details**
|
|
673
|
+
*
|
|
674
|
+
* Uses `readerString` for decoding and close handling.
|
|
675
|
+
*
|
|
645
676
|
* @stability unstable
|
|
646
677
|
* @category combinators
|
|
647
678
|
* @since 4.0.0
|
|
@@ -651,6 +682,10 @@ export const toChannelString: {
|
|
|
651
682
|
* Converts a `Socket` into a bidirectional string `Channel`, decoding binary
|
|
652
683
|
* frames with the optional text encoding.
|
|
653
684
|
*
|
|
685
|
+
* **Details**
|
|
686
|
+
*
|
|
687
|
+
* Uses `readerString` for decoding and close handling.
|
|
688
|
+
*
|
|
654
689
|
* @stability unstable
|
|
655
690
|
* @category combinators
|
|
656
691
|
* @since 4.0.0
|
|
@@ -666,6 +701,10 @@ export const toChannelString: {
|
|
|
666
701
|
* Converts a `Socket` into a bidirectional string `Channel`, decoding binary
|
|
667
702
|
* frames with the optional text encoding.
|
|
668
703
|
*
|
|
704
|
+
* **Details**
|
|
705
|
+
*
|
|
706
|
+
* Uses `readerString` for decoding and close handling.
|
|
707
|
+
*
|
|
669
708
|
* @stability unstable
|
|
670
709
|
* @category combinators
|
|
671
710
|
* @since 4.0.0
|
|
@@ -686,23 +725,7 @@ export const toChannelString: {
|
|
|
686
725
|
void,
|
|
687
726
|
NonEmptyReadonlyArray<Uint8Array | string | CloseEvent>,
|
|
688
727
|
IE
|
|
689
|
-
> => toChannelWithReader
|
|
690
|
-
* Converts a `Socket` into a bidirectional string `Channel`, decoding binary
|
|
691
|
-
* frames with the optional text encoding.
|
|
692
|
-
*
|
|
693
|
-
* @stability unstable
|
|
694
|
-
* @category combinators
|
|
695
|
-
* @since 4.0.0
|
|
696
|
-
*/
|
|
697
|
-
string, /**
|
|
698
|
-
* Converts a `Socket` into a bidirectional string `Channel`, decoding binary
|
|
699
|
-
* frames with the optional text encoding.
|
|
700
|
-
*
|
|
701
|
-
* @stability unstable
|
|
702
|
-
* @category combinators
|
|
703
|
-
* @since 4.0.0
|
|
704
|
-
*/
|
|
705
|
-
IE>(self, readerString(self, encoding)))
|
|
728
|
+
> => toChannelWithReader<string, IE>(self, readerString(self, encoding)))
|
|
706
729
|
|
|
707
730
|
/**
|
|
708
731
|
* Creates a `Socket` to binary `Channel` adapter with a fixed upstream error
|
|
@@ -1076,6 +1099,8 @@ export const fromWebSocket = <RO, WS extends WebSocketLike>(
|
|
|
1076
1099
|
// resume a pull blocked in another fiber before detaching
|
|
1077
1100
|
fail(closeError(1006))
|
|
1078
1101
|
ws.removeEventListener("message", onMessage)
|
|
1102
|
+
// Keep late errors handled when release aborts a pending ws handshake.
|
|
1103
|
+
ws.addEventListener("error", constVoid)
|
|
1079
1104
|
ws.removeEventListener("error", onError)
|
|
1080
1105
|
ws.removeEventListener("close", onClose)
|
|
1081
1106
|
// let the close handshake proceed once nothing is pulling
|
package/src/sql/Migrator.ts
CHANGED
|
@@ -98,7 +98,8 @@ export class MigrationError extends Data.TaggedError("MigrationError")<{
|
|
|
98
98
|
/**
|
|
99
99
|
* Creates a migrator that ensures the migrations table exists, runs pending
|
|
100
100
|
* migrations in a transaction, and optionally dumps the schema after successful
|
|
101
|
-
* migrations.
|
|
101
|
+
* migrations. ClickHouse runs without a transaction and records each migration
|
|
102
|
+
* only after it succeeds.
|
|
102
103
|
*
|
|
103
104
|
* @stability unstable
|
|
104
105
|
* @category constructors
|
|
@@ -139,6 +140,14 @@ export const make = <RD = never>({
|
|
|
139
140
|
name VARCHAR(255) NOT NULL,
|
|
140
141
|
PRIMARY KEY (migration_id)
|
|
141
142
|
)`,
|
|
143
|
+
clickhouse: () =>
|
|
144
|
+
// sqlite's `PRIMARY KEY NOT NULL` is a syntax error here
|
|
145
|
+
sql`CREATE TABLE IF NOT EXISTS ${sql(table)} (
|
|
146
|
+
migration_id Int32,
|
|
147
|
+
created_at DateTime DEFAULT now(),
|
|
148
|
+
name String
|
|
149
|
+
) ENGINE = MergeTree
|
|
150
|
+
ORDER BY migration_id`,
|
|
142
151
|
pg: () =>
|
|
143
152
|
Effect.flatMap(
|
|
144
153
|
migrationsTableExists(sql, table),
|
|
@@ -223,17 +232,21 @@ export const make = <RD = never>({
|
|
|
223
232
|
name: string,
|
|
224
233
|
effect: Effect.Effect<unknown, unknown, Client.SqlClient>
|
|
225
234
|
) =>
|
|
226
|
-
Effect.
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
})
|
|
233
|
-
))
|
|
235
|
+
Effect.mapError(effect, (error) =>
|
|
236
|
+
new MigrationError({
|
|
237
|
+
cause: error,
|
|
238
|
+
kind: "Failed",
|
|
239
|
+
message: `Migration "${id}_${name}" failed`
|
|
240
|
+
}))
|
|
234
241
|
|
|
235
242
|
// === run
|
|
236
243
|
|
|
244
|
+
// BEGIN is still experimental on clickhouse
|
|
245
|
+
const transactional = sql.onDialectOrElse({
|
|
246
|
+
clickhouse: () => false,
|
|
247
|
+
orElse: () => true
|
|
248
|
+
})
|
|
249
|
+
|
|
237
250
|
const run = Effect.gen(function*() {
|
|
238
251
|
yield* sql.onDialectOrElse({
|
|
239
252
|
pg: () => sql`LOCK TABLE ${sql(table)} IN ACCESS EXCLUSIVE MODE`,
|
|
@@ -273,7 +286,8 @@ export const make = <RD = never>({
|
|
|
273
286
|
])
|
|
274
287
|
}
|
|
275
288
|
|
|
276
|
-
|
|
289
|
+
// rows recorded up front are only rolled back inside a transaction
|
|
290
|
+
if (transactional && required.length > 0) {
|
|
277
291
|
yield* pipe(
|
|
278
292
|
insertMigrations(required.map(([id, name]) => [id, name])),
|
|
279
293
|
Effect.mapError((error): MigrationError | SqlError =>
|
|
@@ -292,6 +306,7 @@ export const make = <RD = never>({
|
|
|
292
306
|
([id, name, effect]) =>
|
|
293
307
|
Effect.logDebug(`Running migration`).pipe(
|
|
294
308
|
Effect.flatMap(() => runMigration(id, name, effect)),
|
|
309
|
+
Effect.andThen(transactional ? Effect.void : insertMigrations([[id, name]])),
|
|
295
310
|
Effect.annotateLogs("migration_id", String(id)),
|
|
296
311
|
Effect.annotateLogs("migration_name", name),
|
|
297
312
|
Effect.withSpan(`Migrator ${id}_${name}`)
|
|
@@ -319,7 +334,7 @@ export const make = <RD = never>({
|
|
|
319
334
|
yield* ensureMigrationsTable
|
|
320
335
|
|
|
321
336
|
const completed = yield* pipe(
|
|
322
|
-
sql.withTransaction(run),
|
|
337
|
+
transactional ? sql.withTransaction(run) : run,
|
|
323
338
|
Effect.catchTag("MigrationError", (_) =>
|
|
324
339
|
_.kind === "Locked"
|
|
325
340
|
? Effect.as(Effect.logDebug(_.message), [])
|