effect 4.0.6 → 4.1.0
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/README.md +1 -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/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +3 -0
- package/dist/BigDecimal.js.map +1 -1
- package/dist/Channel.d.ts +12 -6
- package/dist/Channel.d.ts.map +1 -1
- package/dist/Channel.js +30 -9
- package/dist/Channel.js.map +1 -1
- package/dist/Config.d.ts +7 -1
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js.map +1 -1
- package/dist/Context.d.ts +18 -1
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +27 -8
- package/dist/Context.js.map +1 -1
- package/dist/Cron.d.ts +81 -11
- package/dist/Cron.d.ts.map +1 -1
- package/dist/Cron.js +101 -26
- 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 +78 -0
- package/dist/Duration.d.ts.map +1 -1
- package/dist/Duration.js +123 -0
- package/dist/Duration.js.map +1 -1
- package/dist/Effect.d.ts +165 -8
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +12 -2
- 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/Exit.d.ts +3 -3
- package/dist/Exit.d.ts.map +1 -1
- package/dist/Exit.js.map +1 -1
- package/dist/FileSystem.d.ts +59 -4
- package/dist/FileSystem.d.ts.map +1 -1
- package/dist/FileSystem.js +9 -2
- 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/Glob.d.ts +165 -0
- package/dist/Glob.d.ts.map +1 -0
- package/dist/Glob.js +127 -0
- package/dist/Glob.js.map +1 -0
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +4 -1
- package/dist/Hash.js.map +1 -1
- package/dist/JsonPatch.js +4 -0
- package/dist/JsonPatch.js.map +1 -1
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +13 -40
- package/dist/JsonSchema.js.map +1 -1
- package/dist/Match.d.ts +86 -0
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +72 -0
- package/dist/Match.js.map +1 -1
- package/dist/Metric.d.ts +3 -3
- 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/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/Pool.d.ts +51 -0
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +136 -36
- package/dist/Pool.js.map +1 -1
- package/dist/PubSub.d.ts.map +1 -1
- package/dist/PubSub.js +5 -6
- package/dist/PubSub.js.map +1 -1
- package/dist/Random.d.ts.map +1 -1
- package/dist/Random.js +3 -3
- package/dist/Random.js.map +1 -1
- package/dist/RcMap.d.ts.map +1 -1
- package/dist/RcMap.js +8 -2
- package/dist/RcMap.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/Schedule.d.ts +18 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +8 -3
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +690 -49
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +687 -28
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaAST.d.ts +4 -2
- package/dist/SchemaAST.d.ts.map +1 -1
- package/dist/SchemaAST.js +14 -17
- package/dist/SchemaAST.js.map +1 -1
- package/dist/SchemaGetter.d.ts +6 -1
- package/dist/SchemaGetter.d.ts.map +1 -1
- package/dist/SchemaGetter.js +22 -11
- package/dist/SchemaGetter.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 +33 -10
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +39 -13
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +12 -4
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +15 -5
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +5 -7
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Semaphore.d.ts +130 -0
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +94 -35
- package/dist/Semaphore.js.map +1 -1
- package/dist/Sink.d.ts.map +1 -1
- package/dist/Sink.js +7 -2
- package/dist/Sink.js.map +1 -1
- package/dist/Stream.d.ts +13 -4
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +31 -10
- package/dist/Stream.js.map +1 -1
- package/dist/String.d.ts +3 -0
- package/dist/String.d.ts.map +1 -1
- package/dist/String.js +3 -0
- package/dist/String.js.map +1 -1
- package/dist/Terminal.d.ts +18 -1
- package/dist/Terminal.d.ts.map +1 -1
- package/dist/Terminal.js +1 -1
- package/dist/Terminal.js.map +1 -1
- 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/ai/AiError.d.ts +43 -116
- package/dist/ai/AiError.d.ts.map +1 -1
- package/dist/ai/AiError.js +53 -72
- package/dist/ai/AiError.js.map +1 -1
- package/dist/ai/Decision.d.ts +196 -15
- package/dist/ai/Decision.d.ts.map +1 -1
- package/dist/ai/Decision.js +130 -0
- package/dist/ai/Decision.js.map +1 -1
- package/dist/ai/DecisionModel.d.ts +54 -13
- package/dist/ai/DecisionModel.d.ts.map +1 -1
- package/dist/ai/DecisionModel.js +123 -12
- package/dist/ai/DecisionModel.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/McpSchema.d.ts +110 -110
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpServer.d.ts +630 -29
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +583 -131
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/McpTest.d.ts +130 -0
- package/dist/ai/McpTest.d.ts.map +1 -0
- package/dist/ai/McpTest.js +237 -0
- package/dist/ai/McpTest.js.map +1 -0
- package/dist/ai/Prompt.d.ts +52 -0
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +38 -0
- package/dist/ai/Prompt.js.map +1 -1
- package/dist/ai/Response.d.ts +17 -28
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +5 -10
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +43 -1
- 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.map +1 -1
- package/dist/ai/Toolkit.js +8 -1
- package/dist/ai/Toolkit.js.map +1 -1
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +5 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/internal/mcpCore.js +17 -12
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +4 -5
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +18 -10
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +13 -0
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +5 -3
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpStatefulRuntime.js +6 -1
- package/dist/ai/internal/mcpStatefulRuntime.js.map +1 -1
- package/dist/cli/Argument.d.ts +21 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +7 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliError.d.ts +78 -0
- package/dist/cli/CliError.d.ts.map +1 -1
- package/dist/cli/CliError.js +65 -3
- package/dist/cli/CliError.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +220 -7
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +156 -43
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +47 -16
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +67 -29
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Completions.d.ts +58 -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 +122 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +42 -0
- package/dist/cli/Flag.js.map +1 -1
- package/dist/cli/GlobalFlag.d.ts.map +1 -1
- package/dist/cli/GlobalFlag.js +15 -7
- package/dist/cli/GlobalFlag.js.map +1 -1
- package/dist/cli/HelpDoc.d.ts +15 -1
- package/dist/cli/HelpDoc.d.ts.map +1 -1
- package/dist/cli/Param.d.ts +15 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +23 -2
- package/dist/cli/Param.js.map +1 -1
- package/dist/cli/Primitive.d.ts +14 -0
- package/dist/cli/Primitive.d.ts.map +1 -1
- package/dist/cli/Primitive.js +15 -1
- package/dist/cli/Primitive.js.map +1 -1
- package/dist/cli/Prompt.d.ts +1 -0
- package/dist/cli/Prompt.d.ts.map +1 -1
- package/dist/cli/Prompt.js +1 -0
- package/dist/cli/Prompt.js.map +1 -1
- package/dist/cli/TerminalCapabilities.d.ts +3 -2
- package/dist/cli/TerminalCapabilities.d.ts.map +1 -1
- package/dist/cli/TerminalCapabilities.js +3 -1
- package/dist/cli/TerminalCapabilities.js.map +1 -1
- package/dist/cli/internal/completions/bash.js +73 -27
- package/dist/cli/internal/completions/bash.js.map +1 -1
- package/dist/cli/internal/help.d.ts.map +1 -1
- package/dist/cli/internal/help.js +17 -10
- package/dist/cli/internal/help.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +45 -10
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +23 -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/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +151 -49
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +76 -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/SingleRunner.d.ts +3 -3
- package/dist/cluster/SingleRunner.d.ts.map +1 -1
- package/dist/cluster/SingleRunner.js +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 +37 -6
- package/dist/cluster/SqlMessageStorage.d.ts.map +1 -1
- package/dist/cluster/SqlMessageStorage.js +34 -7
- package/dist/cluster/SqlMessageStorage.js.map +1 -1
- package/dist/cluster/SqlRunnerStorage.d.ts.map +1 -1
- package/dist/cluster/SqlRunnerStorage.js +109 -46
- package/dist/cluster/SqlRunnerStorage.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +54 -20
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/crypto/Aead.d.ts +322 -0
- package/dist/crypto/Aead.d.ts.map +1 -0
- package/dist/crypto/Aead.js +331 -0
- package/dist/crypto/Aead.js.map +1 -0
- package/dist/crypto/Cipher.d.ts +235 -0
- package/dist/crypto/Cipher.d.ts.map +1 -0
- package/dist/crypto/Cipher.js +233 -0
- package/dist/crypto/Cipher.js.map +1 -0
- package/dist/crypto/CryptoError.d.ts +212 -0
- package/dist/crypto/CryptoError.d.ts.map +1 -0
- package/dist/crypto/CryptoError.js +202 -0
- package/dist/crypto/CryptoError.js.map +1 -0
- package/dist/crypto/Digest.d.ts +143 -0
- package/dist/crypto/Digest.d.ts.map +1 -0
- package/dist/crypto/Digest.js +146 -0
- package/dist/crypto/Digest.js.map +1 -0
- package/dist/crypto/Kdf.d.ts +220 -0
- package/dist/crypto/Kdf.d.ts.map +1 -0
- package/dist/crypto/Kdf.js +212 -0
- package/dist/crypto/Kdf.js.map +1 -0
- package/dist/crypto/KeyAgreement.d.ts +323 -0
- package/dist/crypto/KeyAgreement.d.ts.map +1 -0
- package/dist/crypto/KeyAgreement.js +303 -0
- package/dist/crypto/KeyAgreement.js.map +1 -0
- package/dist/crypto/KeyFormat.d.ts +309 -0
- package/dist/crypto/KeyFormat.d.ts.map +1 -0
- package/dist/crypto/KeyFormat.js +556 -0
- package/dist/crypto/KeyFormat.js.map +1 -0
- package/dist/crypto/KeyWrap.d.ts +389 -0
- package/dist/crypto/KeyWrap.d.ts.map +1 -0
- package/dist/crypto/KeyWrap.js +381 -0
- package/dist/crypto/KeyWrap.js.map +1 -0
- package/dist/crypto/Mac.d.ts +277 -0
- package/dist/crypto/Mac.d.ts.map +1 -0
- package/dist/crypto/Mac.js +288 -0
- package/dist/crypto/Mac.js.map +1 -0
- package/dist/crypto/SecureRandom.d.ts +340 -0
- package/dist/crypto/SecureRandom.d.ts.map +1 -0
- package/dist/crypto/SecureRandom.js +257 -0
- package/dist/crypto/SecureRandom.js.map +1 -0
- package/dist/crypto/Signature.d.ts +448 -0
- package/dist/crypto/Signature.d.ts.map +1 -0
- package/dist/crypto/Signature.js +484 -0
- package/dist/crypto/Signature.js.map +1 -0
- package/dist/crypto/WebCrypto.d.ts +61 -0
- package/dist/crypto/WebCrypto.d.ts.map +1 -0
- package/dist/crypto/WebCrypto.js +63 -0
- package/dist/crypto/WebCrypto.js.map +1 -0
- package/dist/crypto/index.d.ts +65 -0
- package/dist/crypto/index.d.ts.map +1 -0
- package/dist/crypto/index.js +66 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/internal/asymmetric.d.ts +2 -0
- package/dist/crypto/internal/asymmetric.d.ts.map +1 -0
- package/dist/crypto/internal/asymmetric.js +210 -0
- package/dist/crypto/internal/asymmetric.js.map +1 -0
- package/dist/crypto/internal/chacha.d.ts +46 -0
- package/dist/crypto/internal/chacha.d.ts.map +1 -0
- package/dist/crypto/internal/chacha.js +885 -0
- package/dist/crypto/internal/chacha.js.map +1 -0
- package/dist/crypto/internal/der.d.ts +6 -0
- package/dist/crypto/internal/der.d.ts.map +1 -0
- package/dist/crypto/internal/der.js +86 -0
- package/dist/crypto/internal/der.js.map +1 -0
- package/dist/crypto/internal/digest.d.ts +2 -0
- package/dist/crypto/internal/digest.d.ts.map +1 -0
- package/dist/crypto/internal/digest.js +15 -0
- package/dist/crypto/internal/digest.js.map +1 -0
- package/dist/crypto/internal/key.d.ts +2 -0
- package/dist/crypto/internal/key.d.ts.map +1 -0
- package/dist/crypto/internal/key.js +170 -0
- package/dist/crypto/internal/key.js.map +1 -0
- package/dist/crypto/internal/md5.d.ts +39 -0
- package/dist/crypto/internal/md5.d.ts.map +1 -0
- package/dist/crypto/internal/md5.js +179 -0
- package/dist/crypto/internal/md5.js.map +1 -0
- package/dist/crypto/internal/webCrypto.d.ts +2 -0
- package/dist/crypto/internal/webCrypto.d.ts.map +1 -0
- package/dist/crypto/internal/webCrypto.js +111 -0
- package/dist/crypto/internal/webCrypto.js.map +1 -0
- package/dist/devtools/DevToolsClient.d.ts.map +1 -1
- package/dist/devtools/DevToolsClient.js +2 -0
- 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.map +1 -1
- package/dist/encoding/Base64Url.js +3 -2
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Csv.d.ts +608 -0
- package/dist/encoding/Csv.d.ts.map +1 -0
- package/dist/encoding/Csv.js +718 -0
- package/dist/encoding/Csv.js.map +1 -0
- package/dist/encoding/Hex.d.ts +3 -2
- package/dist/encoding/Hex.d.ts.map +1 -1
- package/dist/encoding/Hex.js +3 -2
- package/dist/encoding/Hex.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +42 -4
- 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/Toml.d.ts +17 -3
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +124 -31
- package/dist/encoding/Toml.js.map +1 -1
- package/dist/encoding/Yaml.d.ts +8 -1
- package/dist/encoding/Yaml.d.ts.map +1 -1
- package/dist/encoding/Yaml.js +54 -18
- package/dist/encoding/Yaml.js.map +1 -1
- package/dist/encoding/index.d.ts +5 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +5 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventJournal.d.ts.map +1 -1
- package/dist/eventlog/EventJournal.js +6 -3
- package/dist/eventlog/EventJournal.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +119 -4
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +200 -12
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogEncryption.d.ts +41 -4
- package/dist/eventlog/EventLogEncryption.d.ts.map +1 -1
- package/dist/eventlog/EventLogEncryption.js +83 -64
- package/dist/eventlog/EventLogEncryption.js.map +1 -1
- package/dist/eventlog/EventLogMessage.d.ts +279 -0
- package/dist/eventlog/EventLogMessage.d.ts.map +1 -1
- package/dist/eventlog/EventLogMessage.js +217 -1
- package/dist/eventlog/EventLogMessage.js.map +1 -1
- package/dist/eventlog/EventLogRemote.d.ts +200 -28
- package/dist/eventlog/EventLogRemote.d.ts.map +1 -1
- package/dist/eventlog/EventLogRemote.js +186 -16
- package/dist/eventlog/EventLogRemote.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +3 -0
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +18 -10
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +326 -5
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.js +769 -14
- package/dist/eventlog/EventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.d.ts +5 -3
- package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.js +41 -64
- package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
- package/dist/eventlog/EventRow.d.ts +4 -0
- package/dist/eventlog/EventRow.d.ts.map +1 -1
- package/dist/eventlog/EventRow.js +12 -2
- package/dist/eventlog/EventRow.js.map +1 -1
- package/dist/eventlog/SqlEventJournal.d.ts.map +1 -1
- package/dist/eventlog/SqlEventJournal.js +47 -27
- package/dist/eventlog/SqlEventJournal.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts +21 -5
- package/dist/eventlog/SqlEventLogServerEncrypted.d.ts.map +1 -1
- package/dist/eventlog/SqlEventLogServerEncrypted.js +1048 -113
- package/dist/eventlog/SqlEventLogServerEncrypted.js.map +1 -1
- package/dist/eventlog/SqlEventLogServerUnencrypted.js +2 -2
- package/dist/eventlog/SqlEventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/internal/batches.d.ts +12 -0
- package/dist/eventlog/internal/batches.d.ts.map +1 -0
- package/dist/eventlog/internal/batches.js +26 -0
- package/dist/eventlog/internal/batches.js.map +1 -0
- package/dist/eventlog/internal/compaction.d.ts +38 -0
- package/dist/eventlog/internal/compaction.d.ts.map +1 -0
- package/dist/eventlog/internal/compaction.js +33 -0
- package/dist/eventlog/internal/compaction.js.map +1 -0
- package/dist/eventlog/internal/conflicts.d.ts +0 -1
- package/dist/eventlog/internal/conflicts.d.ts.map +1 -1
- package/dist/eventlog/internal/conflicts.js +0 -3
- package/dist/eventlog/internal/conflicts.js.map +1 -1
- package/dist/eventlog/internal/identityRootSecretDerivation.js +66 -67
- package/dist/eventlog/internal/identityRootSecretDerivation.js.map +1 -1
- package/dist/eventlog/internal/remoteCompaction.d.ts +31 -0
- package/dist/eventlog/internal/remoteCompaction.d.ts.map +1 -0
- package/dist/eventlog/internal/remoteCompaction.js +76 -0
- package/dist/eventlog/internal/remoteCompaction.js.map +1 -0
- package/dist/http/Cookies.d.ts +172 -0
- package/dist/http/Cookies.d.ts.map +1 -1
- package/dist/http/Cookies.js +153 -10
- package/dist/http/Cookies.js.map +1 -1
- package/dist/http/FetchHttpClient.d.ts +26 -2
- package/dist/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/http/FetchHttpClient.js +78 -15
- package/dist/http/FetchHttpClient.js.map +1 -1
- package/dist/http/HttpClient.d.ts +502 -8
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +296 -12
- 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 +9 -5
- package/dist/http/HttpClientRequest.d.ts.map +1 -1
- package/dist/http/HttpClientRequest.js +3 -4
- package/dist/http/HttpClientRequest.js.map +1 -1
- package/dist/http/HttpClientResponse.d.ts.map +1 -1
- package/dist/http/HttpClientResponse.js +3 -2
- package/dist/http/HttpClientResponse.js.map +1 -1
- package/dist/http/HttpMethod.d.ts +7 -1
- package/dist/http/HttpMethod.d.ts.map +1 -1
- package/dist/http/HttpMethod.js +3 -8
- package/dist/http/HttpMethod.js.map +1 -1
- package/dist/http/HttpMiddleware.d.ts +1 -1
- package/dist/http/HttpMiddleware.d.ts.map +1 -1
- package/dist/http/HttpMiddleware.js +14 -16
- package/dist/http/HttpMiddleware.js.map +1 -1
- package/dist/http/HttpRouter.d.ts.map +1 -1
- package/dist/http/HttpRouter.js +2 -1
- package/dist/http/HttpRouter.js.map +1 -1
- package/dist/http/HttpServerError.js +2 -2
- package/dist/http/HttpServerError.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts +11 -3
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +77 -25
- package/dist/http/HttpServerRequest.js.map +1 -1
- package/dist/http/HttpServerResponse.d.ts.map +1 -1
- package/dist/http/HttpServerResponse.js +3 -2
- package/dist/http/HttpServerResponse.js.map +1 -1
- package/dist/http/HttpStaticServer.d.ts.map +1 -1
- package/dist/http/HttpStaticServer.js +48 -21
- package/dist/http/HttpStaticServer.js.map +1 -1
- package/dist/http/HttpTraceContext.d.ts +2 -1
- package/dist/http/HttpTraceContext.d.ts.map +1 -1
- package/dist/http/HttpTraceContext.js +7 -5
- package/dist/http/HttpTraceContext.js.map +1 -1
- package/dist/http/MultipartParser/internal/contentType.js +3 -3
- package/dist/http/ProblemDetails.d.ts +96 -0
- package/dist/http/ProblemDetails.d.ts.map +1 -0
- package/dist/http/ProblemDetails.js +98 -0
- package/dist/http/ProblemDetails.js.map +1 -0
- 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/index.d.ts +5 -0
- package/dist/http/index.d.ts.map +1 -1
- package/dist/http/index.js +5 -0
- package/dist/http/index.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 +6 -2
- 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/urlParams.js +33 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- 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 +3 -6
- 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 +43 -13
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +140 -7
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +193 -44
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts +24 -7
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +123 -32
- package/dist/http-api/HttpApiEndpoint.js.map +1 -1
- package/dist/http-api/HttpApiError.d.ts +185 -13
- package/dist/http-api/HttpApiError.d.ts.map +1 -1
- package/dist/http-api/HttpApiError.js +128 -0
- package/dist/http-api/HttpApiError.js.map +1 -1
- package/dist/http-api/HttpApiMiddleware.d.ts +64 -17
- package/dist/http-api/HttpApiMiddleware.d.ts.map +1 -1
- package/dist/http-api/HttpApiMiddleware.js +85 -1
- package/dist/http-api/HttpApiMiddleware.js.map +1 -1
- package/dist/http-api/HttpApiSchema.d.ts +142 -33
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +123 -59
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/http-api/HttpApiTest.d.ts.map +1 -1
- package/dist/http-api/HttpApiTest.js +3 -2
- package/dist/http-api/HttpApiTest.js.map +1 -1
- package/dist/http-api/OpenApi.d.ts.map +1 -1
- package/dist/http-api/OpenApi.js +25 -16
- package/dist/http-api/OpenApi.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 +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- 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 +2 -0
- package/dist/internal/core.js.map +1 -1
- package/dist/internal/effect.js +46 -27
- 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/glob.d.ts +2 -0
- package/dist/internal/glob.d.ts.map +1 -0
- package/dist/internal/glob.js +630 -0
- package/dist/internal/glob.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 +11 -1
- package/dist/internal/matcher.js.map +1 -1
- package/dist/internal/persistence.js +9 -0
- package/dist/internal/persistence.js.map +1 -1
- package/dist/internal/rcRef.js +4 -1
- package/dist/internal/rcRef.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 +173 -185
- 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/standardSchema.js +8 -2
- package/dist/internal/schema/standardSchema.js.map +1 -1
- package/dist/internal/schema/toCodeDocument.js +9 -6
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- package/dist/internal/schema/toCodec.js +21 -24
- package/dist/internal/schema/toCodec.js.map +1 -1
- package/dist/internal/schema/toJsonSchemaDocument.js +205 -140
- 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 +42 -13
- package/dist/internal/trie.js.map +1 -1
- package/dist/internal/ulid.js +41 -0
- package/dist/internal/ulid.js.map +1 -1
- package/dist/internal/uuid.js +52 -8
- package/dist/internal/uuid.js.map +1 -1
- package/dist/internal/version.js +1 -1
- package/dist/observability/Otlp.d.ts +15 -4
- package/dist/observability/Otlp.d.ts.map +1 -1
- package/dist/observability/Otlp.js +10 -0
- package/dist/observability/Otlp.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 +7 -0
- package/dist/observability/OtlpResource.d.ts.map +1 -1
- package/dist/observability/OtlpResource.js +11 -1
- package/dist/observability/OtlpResource.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/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/KeyValueStore.d.ts +47 -2
- package/dist/persistence/KeyValueStore.d.ts.map +1 -1
- package/dist/persistence/KeyValueStore.js +129 -18
- package/dist/persistence/KeyValueStore.js.map +1 -1
- package/dist/persistence/PersistedQueue.d.ts +9 -0
- package/dist/persistence/PersistedQueue.d.ts.map +1 -1
- package/dist/persistence/PersistedQueue.js +94 -52
- package/dist/persistence/PersistedQueue.js.map +1 -1
- package/dist/persistence/Persistence.d.ts +10 -4
- package/dist/persistence/Persistence.d.ts.map +1 -1
- package/dist/persistence/Persistence.js +18 -11
- package/dist/persistence/Persistence.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/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 +237 -71
- package/dist/process/ChildProcess.d.ts.map +1 -1
- package/dist/process/ChildProcess.js +56 -158
- package/dist/process/ChildProcess.js.map +1 -1
- package/dist/process/ChildProcessSpawner.d.ts +35 -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/process/CommandLine.d.ts +294 -0
- package/dist/process/CommandLine.d.ts.map +1 -0
- package/dist/process/CommandLine.js +481 -0
- package/dist/process/CommandLine.js.map +1 -0
- package/dist/process/index.d.ts +5 -0
- package/dist/process/index.d.ts.map +1 -1
- package/dist/process/index.js +5 -0
- package/dist/process/index.js.map +1 -1
- package/dist/reactivity/AsyncResult.d.ts +1 -1
- package/dist/reactivity/AsyncResult.d.ts.map +1 -1
- package/dist/reactivity/Atom.d.ts +2 -1
- package/dist/reactivity/Atom.d.ts.map +1 -1
- package/dist/reactivity/Atom.js +3 -4
- package/dist/reactivity/Atom.js.map +1 -1
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +16 -1
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +59 -24
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcMessage.d.ts +10 -1
- package/dist/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/rpc/RpcMessage.js +1 -0
- package/dist/rpc/RpcMessage.js.map +1 -1
- package/dist/rpc/RpcSerialization.d.ts +14 -0
- package/dist/rpc/RpcSerialization.d.ts.map +1 -1
- package/dist/rpc/RpcSerialization.js +26 -8
- package/dist/rpc/RpcSerialization.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts +31 -0
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +139 -56
- 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 +14 -0
- package/dist/schema/Model.d.ts.map +1 -1
- package/dist/schema/Model.js +18 -3
- package/dist/schema/Model.js.map +1 -1
- package/dist/sql/Migrator.d.ts +2 -20
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +13 -55
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/MigratorFileSystem.d.ts +21 -0
- package/dist/sql/MigratorFileSystem.d.ts.map +1 -0
- package/dist/sql/MigratorFileSystem.js +57 -0
- package/dist/sql/MigratorFileSystem.js.map +1 -0
- package/dist/sql/SqlClient.d.ts +9 -4
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +13 -10
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/SqlResolver.d.ts +4 -0
- package/dist/sql/SqlResolver.d.ts.map +1 -1
- package/dist/sql/SqlResolver.js +18 -4
- package/dist/sql/SqlResolver.js.map +1 -1
- package/dist/sql/Statement.d.ts +27 -6
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +21 -15
- package/dist/sql/Statement.js.map +1 -1
- package/dist/sql/index.js +1 -1
- package/dist/testing/index.d.ts +0 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +0 -5
- package/dist/testing/index.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/internal/crypto.js +9 -8
- package/dist/workflow/internal/crypto.js.map +1 -1
- package/package.json +3 -1
- package/src/Arbitrary.ts +10 -2
- package/src/BigDecimal.ts +3 -0
- package/src/Channel.ts +64 -29
- package/src/Config.ts +7 -1
- package/src/Context.ts +34 -10
- package/src/Cron.ts +178 -29
- package/src/Data.ts +60 -265
- package/src/Duration.ts +140 -0
- package/src/Effect.ts +915 -86
- package/src/Equal.ts +8 -1
- package/src/Exit.ts +3 -3
- package/src/FileSystem.ts +65 -4
- package/src/Formatter.ts +28 -13
- package/src/Glob.ts +205 -0
- package/src/Hash.ts +4 -1
- package/src/JsonPatch.ts +4 -0
- package/src/JsonSchema.ts +12 -40
- package/src/Match.ts +127 -0
- package/src/Metric.ts +3 -3
- package/src/MutableList.ts +7 -5
- package/src/MutableRef.ts +8 -1
- package/src/PartitionedSemaphore.ts +24 -13
- package/src/Pool.ts +182 -52
- package/src/PubSub.ts +5 -6
- package/src/Random.ts +3 -3
- package/src/RcMap.ts +5 -1
- package/src/Ref.ts +8 -0
- package/src/Schedule.ts +27 -4
- package/src/Schema.ts +1237 -87
- package/src/SchemaAST.ts +20 -20
- package/src/SchemaGetter.ts +27 -11
- package/src/SchemaParser.ts +51 -18
- package/src/SchemaRepresentation.ts +50 -34
- package/src/SchemaTransformation.ts +17 -5
- package/src/ScopedCache.ts +5 -9
- package/src/Semaphore.ts +208 -40
- package/src/Sink.ts +15 -2
- package/src/Stream.ts +48 -22
- package/src/String.ts +3 -0
- package/src/Terminal.ts +19 -1
- package/src/Tracer.ts +15 -1
- package/src/ai/AiError.ts +56 -80
- package/src/ai/Decision.ts +257 -6
- package/src/ai/DecisionModel.ts +171 -28
- package/src/ai/LanguageModel.ts +9 -0
- package/src/ai/McpServer.ts +1283 -299
- package/src/ai/McpTest.ts +380 -0
- package/src/ai/Prompt.ts +65 -0
- package/src/ai/Response.ts +36 -31
- package/src/ai/Tool.ts +65 -10
- package/src/ai/Toolkit.ts +4 -1
- package/src/ai/index.ts +6 -0
- package/src/ai/internal/mcpCore.ts +78 -44
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +4 -7
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +15 -10
- package/src/ai/internal/mcpProtocol.ts +29 -0
- package/src/ai/internal/mcpRuntime.ts +9 -5
- package/src/ai/internal/mcpStatefulRuntime.ts +14 -2
- package/src/cli/Argument.ts +21 -0
- package/src/cli/CliError.ts +90 -3
- package/src/cli/CliOutput.ts +300 -55
- package/src/cli/Command.ts +76 -41
- package/src/cli/Completions.ts +51 -0
- package/src/cli/Flag.ts +122 -0
- package/src/cli/GlobalFlag.ts +6 -7
- package/src/cli/HelpDoc.ts +18 -1
- package/src/cli/Param.ts +35 -6
- package/src/cli/Primitive.ts +16 -1
- package/src/cli/Prompt.ts +1 -0
- package/src/cli/TerminalCapabilities.ts +6 -3
- package/src/cli/internal/completions/bash.ts +79 -29
- package/src/cli/internal/help.ts +21 -9
- package/src/cluster/ClusterWorkflowEngine.ts +46 -16
- package/src/cluster/MessageStorage.ts +19 -14
- package/src/cluster/Sharding.ts +176 -47
- package/src/cluster/ShardingConfig.ts +43 -0
- package/src/cluster/SingleRunner.ts +3 -3
- package/src/cluster/Snowflake.ts +3 -7
- package/src/cluster/SqlMessageStorage.ts +49 -17
- package/src/cluster/SqlRunnerStorage.ts +143 -70
- package/src/cluster/internal/entityManager.ts +75 -22
- package/src/crypto/Aead.ts +517 -0
- package/src/crypto/Cipher.ts +326 -0
- package/src/crypto/CryptoError.ts +242 -0
- package/src/crypto/Digest.ts +167 -0
- package/src/crypto/Kdf.ts +315 -0
- package/src/crypto/KeyAgreement.ts +489 -0
- package/src/crypto/KeyFormat.ts +712 -0
- package/src/crypto/KeyWrap.ts +639 -0
- package/src/crypto/Mac.ts +386 -0
- package/src/crypto/SecureRandom.ts +459 -0
- package/src/crypto/Signature.ts +673 -0
- package/src/crypto/WebCrypto.ts +64 -0
- package/src/crypto/index.ts +78 -0
- package/src/crypto/internal/asymmetric.ts +329 -0
- package/src/crypto/internal/chacha.ts +1088 -0
- package/src/crypto/internal/der.ts +110 -0
- package/src/crypto/internal/digest.ts +16 -0
- package/src/crypto/internal/key.ts +235 -0
- package/src/crypto/internal/md5.ts +170 -0
- package/src/crypto/internal/webCrypto.ts +150 -0
- package/src/devtools/DevToolsClient.ts +2 -0
- package/src/encoding/Base64.ts +38 -0
- package/src/encoding/Base64Url.ts +5 -2
- package/src/encoding/Csv.ts +1298 -0
- package/src/encoding/Hex.ts +3 -2
- package/src/encoding/SchemaBinary.ts +40 -4
- package/src/encoding/Sse.ts +4 -3
- package/src/encoding/Toml.ts +117 -35
- package/src/encoding/Yaml.ts +61 -18
- package/src/encoding/index.ts +6 -0
- package/src/eventlog/EventJournal.ts +4 -3
- package/src/eventlog/EventLog.ts +340 -15
- package/src/eventlog/EventLogEncryption.ts +118 -110
- package/src/eventlog/EventLogMessage.ts +273 -1
- package/src/eventlog/EventLogRemote.ts +367 -23
- package/src/eventlog/EventLogServer.ts +23 -8
- package/src/eventlog/EventLogServerEncrypted.ts +1130 -67
- package/src/eventlog/EventLogSessionAuth.ts +56 -70
- package/src/eventlog/EventRow.ts +12 -3
- package/src/eventlog/SqlEventJournal.ts +68 -45
- package/src/eventlog/SqlEventLogServerEncrypted.ts +1244 -136
- package/src/eventlog/SqlEventLogServerUnencrypted.ts +2 -2
- package/src/eventlog/internal/batches.ts +30 -0
- package/src/eventlog/internal/compaction.ts +64 -0
- package/src/eventlog/internal/conflicts.ts +0 -4
- package/src/eventlog/internal/identityRootSecretDerivation.ts +93 -123
- package/src/eventlog/internal/remoteCompaction.ts +92 -0
- package/src/http/Cookies.ts +291 -12
- package/src/http/FetchHttpClient.ts +88 -16
- package/src/http/HttpClient.ts +636 -29
- package/src/http/HttpClientError.ts +35 -1
- package/src/http/HttpClientRequest.ts +21 -10
- package/src/http/HttpClientResponse.ts +3 -2
- package/src/http/HttpMethod.ts +10 -2
- package/src/http/HttpMiddleware.ts +15 -18
- package/src/http/HttpRouter.ts +2 -1
- package/src/http/HttpServerError.ts +2 -2
- package/src/http/HttpServerRequest.ts +101 -30
- package/src/http/HttpServerResponse.ts +3 -2
- package/src/http/HttpStaticServer.ts +51 -22
- package/src/http/HttpTraceContext.ts +7 -4
- package/src/http/MultipartParser/internal/contentType.ts +3 -3
- package/src/http/ProblemDetails.ts +149 -0
- package/src/http/UrlParams.ts +6 -1
- package/src/http/index.ts +6 -0
- package/src/http/internal/compression.ts +4 -5
- package/src/http/internal/decompression.ts +10 -4
- package/src/http/internal/httpBody.ts +10 -2
- package/src/http/internal/urlParams.ts +37 -0
- package/src/http-api/HttpApi.ts +3 -6
- package/src/http-api/HttpApiBuilder.ts +61 -19
- package/src/http-api/HttpApiClient.ts +284 -72
- package/src/http-api/HttpApiEndpoint.ts +135 -35
- package/src/http-api/HttpApiError.ts +250 -0
- package/src/http-api/HttpApiMiddleware.ts +95 -1
- package/src/http-api/HttpApiSchema.ts +236 -52
- package/src/http-api/HttpApiTest.ts +3 -2
- package/src/http-api/OpenApi.ts +20 -17
- package/src/http-api/internal/toCodecHttpProperties.ts +56 -0
- package/src/index.ts +6 -6
- package/src/internal/arbitrary/runner.ts +133 -36
- package/src/internal/core.ts +2 -0
- package/src/internal/effect.ts +58 -34
- package/src/internal/equal.ts +17 -0
- package/src/internal/glob.ts +736 -0
- package/src/internal/jsonSchema.ts +27 -0
- package/src/internal/matcher.ts +18 -1
- package/src/internal/persistence.ts +11 -0
- package/src/internal/rcRef.ts +4 -1
- package/src/internal/schema/compilerRegistry.ts +6 -1
- package/src/internal/schema/content.ts +18 -0
- package/src/internal/schema/fromJsonSchemaDocument.ts +228 -190
- package/src/internal/schema/fromRepresentation.ts +2 -1
- package/src/internal/schema/standardSchema.ts +2 -2
- package/src/internal/schema/toCodeDocument.ts +11 -7
- package/src/internal/schema/toCodec.ts +26 -22
- package/src/internal/schema/toJsonSchemaDocument.ts +189 -167
- package/src/internal/schema/toRepresentation.ts +122 -140
- package/src/internal/sql.ts +14 -0
- package/src/internal/trie.ts +43 -14
- package/src/internal/ulid.ts +44 -0
- package/src/internal/uuid.ts +57 -16
- package/src/internal/version.ts +1 -1
- package/src/observability/Otlp.ts +21 -4
- package/src/observability/OtlpProxy.ts +314 -0
- package/src/observability/OtlpResource.ts +9 -1
- package/src/observability/OtlpTracer.ts +4 -0
- package/src/observability/index.ts +6 -0
- package/src/persistence/CircuitBreaker.ts +1678 -0
- package/src/persistence/KeyValueStore.ts +219 -22
- package/src/persistence/PersistedQueue.ts +128 -59
- package/src/persistence/Persistence.ts +20 -13
- package/src/persistence/Redis.ts +129 -8
- package/src/persistence/index.ts +6 -0
- package/src/process/ChildProcess.ts +285 -264
- package/src/process/ChildProcessSpawner.ts +46 -2
- package/src/process/CommandLine.ts +630 -0
- package/src/process/index.ts +6 -0
- package/src/reactivity/AsyncResult.ts +1 -1
- package/src/reactivity/Atom.ts +5 -5
- package/src/reactivity/AtomRegistry.ts +1 -1
- package/src/rpc/RpcClient.ts +75 -36
- package/src/rpc/RpcMessage.ts +10 -1
- package/src/rpc/RpcSerialization.ts +35 -9
- package/src/rpc/RpcServer.ts +176 -63
- package/src/rpc/RpcTest.ts +3 -0
- package/src/schema/Model.ts +26 -3
- package/src/sql/Migrator.ts +15 -69
- package/src/sql/MigratorFileSystem.ts +71 -0
- package/src/sql/SqlClient.ts +13 -20
- package/src/sql/SqlResolver.ts +23 -9
- package/src/sql/Statement.ts +38 -9
- package/src/sql/index.ts +1 -1
- package/src/testing/index.ts +0 -6
- package/src/workflow/DurableDeferred.ts +23 -6
- package/src/workflow/internal/crypto.ts +15 -11
- package/dist/Crypto.d.ts +0 -244
- package/dist/Crypto.d.ts.map +0 -1
- package/dist/Crypto.js +0 -139
- package/dist/Crypto.js.map +0 -1
- package/dist/testing/TestCrypto.d.ts +0 -73
- package/dist/testing/TestCrypto.d.ts.map +0 -1
- package/dist/testing/TestCrypto.js +0 -87
- package/dist/testing/TestCrypto.js.map +0 -1
- package/src/Crypto.ts +0 -347
- package/src/testing/TestCrypto.ts +0 -94
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { NonEmptyArray } from "../Array.ts"
|
|
13
13
|
import * as Context from "../Context.ts"
|
|
14
|
+
import * as Aead from "../crypto/Aead.ts"
|
|
15
|
+
import * as Digest from "../crypto/Digest.ts"
|
|
16
|
+
import * as SecureRandom from "../crypto/SecureRandom.ts"
|
|
17
|
+
import * as WebCrypto from "../crypto/WebCrypto.ts"
|
|
14
18
|
import * as Effect from "../Effect.ts"
|
|
15
19
|
import * as SchemaBinary from "../encoding/SchemaBinary.ts"
|
|
16
20
|
import * as Layer from "../Layer.ts"
|
|
@@ -19,7 +23,8 @@ import * as Schema from "../Schema.ts"
|
|
|
19
23
|
import * as Transferable from "../workers/Transferable.ts"
|
|
20
24
|
import { type Entry, EntryFields, entryFromFields, EntryId, RemoteEntry } from "./EventJournal.ts"
|
|
21
25
|
import type { Identity } from "./EventLog.ts"
|
|
22
|
-
import {
|
|
26
|
+
import { toBatches } from "./internal/batches.ts"
|
|
27
|
+
import { cachedByIdentity, deriveEncryptionKey } from "./internal/identityRootSecretDerivation.ts"
|
|
23
28
|
|
|
24
29
|
/**
|
|
25
30
|
* Schema for a batch of journal entries encrypted as one AES-GCM message.
|
|
@@ -77,33 +82,10 @@ export const EncryptedRemoteBatch = Schema.Struct({
|
|
|
77
82
|
...EncryptedBatch.fields
|
|
78
83
|
})
|
|
79
84
|
|
|
80
|
-
const maxBatchEntries = 100
|
|
81
|
-
const maxBatchPayloadBytes = 256 * 1024
|
|
82
|
-
|
|
83
|
-
// A batch holds at most `maxBatchEntries` entries or `maxBatchPayloadBytes` of
|
|
84
|
-
// payload, whichever comes first. A single larger entry is a batch on its own.
|
|
85
|
-
const toBatches = (entries: ReadonlyArray<Entry>): Array<NonEmptyArray<Entry>> => {
|
|
86
|
-
const batches: Array<NonEmptyArray<Entry>> = []
|
|
87
|
-
let current: Array<Entry> = []
|
|
88
|
-
let bytes = 0
|
|
89
|
-
for (const entry of entries) {
|
|
90
|
-
const size = entry.payload.byteLength
|
|
91
|
-
if (current.length > 0 && (current.length === maxBatchEntries || bytes + size > maxBatchPayloadBytes)) {
|
|
92
|
-
batches.push(current as NonEmptyArray<Entry>)
|
|
93
|
-
current = []
|
|
94
|
-
bytes = 0
|
|
95
|
-
}
|
|
96
|
-
current.push(entry)
|
|
97
|
-
bytes += size
|
|
98
|
-
}
|
|
99
|
-
if (current.length > 0) batches.push(current as NonEmptyArray<Entry>)
|
|
100
|
-
return batches
|
|
101
|
-
}
|
|
102
|
-
|
|
103
85
|
const textEncoder = new TextEncoder()
|
|
104
86
|
|
|
105
87
|
// The store id is length-prefixed, followed by the 16-byte entry ids.
|
|
106
|
-
const additionalData = (storeId: string, entryIds: ReadonlyArray<EntryId>): Uint8Array
|
|
88
|
+
const additionalData = (storeId: string, entryIds: ReadonlyArray<EntryId>): Uint8Array => {
|
|
107
89
|
const store = textEncoder.encode(storeId)
|
|
108
90
|
const data = new Uint8Array(4 + store.byteLength + entryIds.length * 16)
|
|
109
91
|
new DataView(data.buffer).setUint32(0, store.byteLength)
|
|
@@ -128,12 +110,6 @@ const BatchFromSchemaBinary = SchemaBinary.toCodec(Schema.NonEmptyArray(EntryFie
|
|
|
128
110
|
const encodeBatch = Schema.encodeEffect(BatchFromSchemaBinary)
|
|
129
111
|
const decodeBatch = Schema.decodeEffect(BatchFromSchemaBinary)
|
|
130
112
|
|
|
131
|
-
const toArrayBuffer = (data: Uint8Array): ArrayBuffer => {
|
|
132
|
-
const buffer = new ArrayBuffer(data.byteLength)
|
|
133
|
-
new Uint8Array(buffer).set(data)
|
|
134
|
-
return buffer
|
|
135
|
-
}
|
|
136
|
-
|
|
137
113
|
/**
|
|
138
114
|
* Service that provides identity generation, entry
|
|
139
115
|
* encryption and decryption, and SHA-256 hashing for event-log replication.
|
|
@@ -158,103 +134,135 @@ export class EventLogEncryption extends Context.Service<EventLogEncryption, {
|
|
|
158
134
|
storeId: string,
|
|
159
135
|
batches: ReadonlyArray<EncryptedRemoteBatch>
|
|
160
136
|
) => Effect.Effect<Array<RemoteEntry>>
|
|
161
|
-
readonly sha256String: (data: Uint8Array) => Effect.Effect<string>
|
|
162
137
|
readonly sha256: (data: Uint8Array) => Effect.Effect<Uint8Array>
|
|
163
138
|
readonly generateIdentity: Effect.Effect<Identity["Service"]>
|
|
164
139
|
}>()("effect/eventlog/EventLogEncryption") {}
|
|
165
140
|
|
|
166
141
|
/**
|
|
167
|
-
* Creates an `EventLogEncryption` service
|
|
168
|
-
*
|
|
142
|
+
* Creates an `EventLogEncryption` service from the `effect/crypto` services.
|
|
143
|
+
*
|
|
144
|
+
* **Details**
|
|
145
|
+
*
|
|
146
|
+
* Each identity's AES-256-GCM key is derived from its root secret with
|
|
147
|
+
* `Digest` and cached per identity. Batches are encrypted with `Aead` under a
|
|
148
|
+
* random 12-byte nonce from `SecureRandom`, which also generates identities.
|
|
149
|
+
* A batch that fails authentication, or whose entries do not match its entry
|
|
150
|
+
* ids, is a defect.
|
|
169
151
|
*
|
|
170
152
|
* @stability unstable
|
|
171
|
-
* @category
|
|
153
|
+
* @category constructors
|
|
172
154
|
* @since 4.0.0
|
|
173
155
|
*/
|
|
174
|
-
export const
|
|
175
|
-
|
|
176
|
-
|
|
156
|
+
export const make: Effect.Effect<
|
|
157
|
+
EventLogEncryption["Service"],
|
|
158
|
+
never,
|
|
159
|
+
Aead.Aead | Digest.Digest | SecureRandom.SecureRandom
|
|
160
|
+
> = Effect.gen(function*() {
|
|
161
|
+
const aead = yield* Aead.Aead
|
|
162
|
+
const digest = yield* Digest.Digest
|
|
163
|
+
const random = yield* SecureRandom.SecureRandom
|
|
164
|
+
const getEncryptionKey = cachedByIdentity((rootSecret) =>
|
|
165
|
+
deriveEncryptionKey(rootSecret).pipe(
|
|
166
|
+
Effect.map(({ encryptionKey }) => encryptionKey),
|
|
167
|
+
Effect.provideService(Digest.Digest, digest)
|
|
168
|
+
)
|
|
169
|
+
)
|
|
177
170
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
)
|
|
194
|
-
}),
|
|
195
|
-
decrypt: Effect.fnUntraced(function*(identity, storeId, batches) {
|
|
196
|
-
const key = (yield* getIdentityRootSecretMaterial(identity)).encryptionKey
|
|
197
|
-
const decrypted = yield* Effect.promise(() =>
|
|
198
|
-
Promise.all(batches.map((batch) =>
|
|
199
|
-
crypto.subtle.decrypt(
|
|
200
|
-
{
|
|
201
|
-
name: "AES-GCM",
|
|
202
|
-
iv: batch.iv,
|
|
203
|
-
additionalData: additionalData(storeId, batch.entryIds),
|
|
204
|
-
tagLength: 128
|
|
205
|
-
},
|
|
206
|
-
key,
|
|
207
|
-
batch.encryptedBatch
|
|
208
|
-
)
|
|
171
|
+
return EventLogEncryption.of({
|
|
172
|
+
encrypt: Effect.fnUntraced(function*(identity, storeId, entries) {
|
|
173
|
+
const key = yield* getEncryptionKey(identity)
|
|
174
|
+
const batches = toBatches(entries)
|
|
175
|
+
const data = yield* Effect.orDie(Effect.forEach(batches, (batch) => encodeBatch(batch)))
|
|
176
|
+
return yield* Effect.forEach(batches, (batch, i) => {
|
|
177
|
+
const entryIds = batch.map((entry) => entry.id) as NonEmptyArray<EntryId>
|
|
178
|
+
return Effect.flatMap(random.randomBytes(12), (iv) =>
|
|
179
|
+
Effect.map(
|
|
180
|
+
aead.encrypt(key, data[i], { nonce: iv, aad: additionalData(storeId, entryIds) }),
|
|
181
|
+
(encryptedBatch) => ({
|
|
182
|
+
entryIds,
|
|
183
|
+
iv: iv as Uint8Array<ArrayBuffer>,
|
|
184
|
+
encryptedBatch: encryptedBatch as Uint8Array<ArrayBuffer>
|
|
185
|
+
})
|
|
209
186
|
))
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
187
|
+
}, { concurrency: "unbounded" }).pipe(Effect.orDie)
|
|
188
|
+
}),
|
|
189
|
+
decrypt: Effect.fnUntraced(function*(identity, storeId, batches) {
|
|
190
|
+
const key = yield* getEncryptionKey(identity)
|
|
191
|
+
const decrypted = yield* Effect.forEach(
|
|
192
|
+
batches,
|
|
193
|
+
(batch) =>
|
|
194
|
+
aead.decrypt(key, batch.encryptedBatch, { nonce: batch.iv, aad: additionalData(storeId, batch.entryIds) }),
|
|
195
|
+
{ concurrency: "unbounded" }
|
|
196
|
+
).pipe(Effect.orDie)
|
|
197
|
+
const result: Array<RemoteEntry> = []
|
|
198
|
+
for (let i = 0; i < batches.length; i++) {
|
|
199
|
+
const batch = batches[i]
|
|
200
|
+
const fields = yield* Effect.orDie(decodeBatch(decrypted[i] as Uint8Array<ArrayBuffer>))
|
|
201
|
+
const entries = fields.map(entryFromFields)
|
|
202
|
+
if (
|
|
203
|
+
entries.length !== batch.entryIds.length ||
|
|
204
|
+
entries.some((entry, j) => !equalBytes(entry.id, batch.entryIds[j]))
|
|
205
|
+
) {
|
|
206
|
+
return yield* Effect.die(new Error("Encrypted batch entries do not match its entry ids"))
|
|
207
|
+
}
|
|
208
|
+
for (let j = 0; j < entries.length; j++) {
|
|
209
|
+
result.push(new RemoteEntry({ remoteSequence: batch.sequence + j, entry: entries[j] }))
|
|
225
210
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
(hash) => {
|
|
236
|
-
const hashArray = Array.from(new Uint8Array(hash))
|
|
237
|
-
const hashHex = hashArray
|
|
238
|
-
.map((bytes) => bytes.toString(16).padStart(2, "0"))
|
|
239
|
-
.join("")
|
|
240
|
-
return hashHex
|
|
241
|
-
}
|
|
242
|
-
),
|
|
243
|
-
generateIdentity: Effect.sync(() => ({
|
|
244
|
-
publicKey: crypto.randomUUID(),
|
|
245
|
-
privateKey: Redacted.make(crypto.getRandomValues(new Uint8Array(32)))
|
|
246
|
-
}))
|
|
247
|
-
})
|
|
211
|
+
}
|
|
212
|
+
return result
|
|
213
|
+
}),
|
|
214
|
+
sha256: (data) => digest.digest(Digest.sha256, data),
|
|
215
|
+
generateIdentity: Effect.zipWith(
|
|
216
|
+
random.uuidV4(),
|
|
217
|
+
random.randomBytes(32),
|
|
218
|
+
(publicKey, privateKey) => ({ publicKey, privateKey: Redacted.make(privateKey as Uint8Array<ArrayBuffer>) })
|
|
219
|
+
)
|
|
248
220
|
})
|
|
221
|
+
})
|
|
249
222
|
|
|
250
223
|
/**
|
|
251
|
-
* Provides `EventLogEncryption`
|
|
224
|
+
* Provides `EventLogEncryption` from the `Aead`, `Digest` and `SecureRandom`
|
|
225
|
+
* services.
|
|
226
|
+
*
|
|
227
|
+
* **When to use**
|
|
228
|
+
*
|
|
229
|
+
* Use to choose the crypto layers yourself, such as the `NodeCrypto` layers.
|
|
252
230
|
*
|
|
253
231
|
* @stability unstable
|
|
254
232
|
* @category layers
|
|
255
233
|
* @since 4.0.0
|
|
256
234
|
*/
|
|
257
|
-
export const
|
|
258
|
-
EventLogEncryption,
|
|
259
|
-
|
|
235
|
+
export const layer: Layer.Layer<EventLogEncryption, never, Aead.Aead | Digest.Digest | SecureRandom.SecureRandom> =
|
|
236
|
+
Layer.effect(EventLogEncryption, make)
|
|
237
|
+
|
|
238
|
+
const layerWebCrypto = Layer.mergeAll(Aead.layerWebCrypto, Digest.layerWebCrypto).pipe(
|
|
239
|
+
Layer.provideMerge(SecureRandom.layerWebCrypto)
|
|
260
240
|
)
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Creates an `EventLogEncryption` service on the Web Crypto layers of
|
|
244
|
+
* `Aead`, `Digest` and `SecureRandom`, using the supplied `Crypto` object.
|
|
245
|
+
*
|
|
246
|
+
* @stability unstable
|
|
247
|
+
* @category encryption
|
|
248
|
+
* @since 4.0.0
|
|
249
|
+
*/
|
|
250
|
+
export const makeEncryptionSubtle = (crypto: Crypto): Effect.Effect<EventLogEncryption["Service"]> =>
|
|
251
|
+
// `local` keeps enclosing Web Crypto layers, built on another `Crypto`, from
|
|
252
|
+
// being reused.
|
|
253
|
+
Effect.provide(make, Layer.provide(layerWebCrypto, WebCrypto.layer(crypto)), { local: true })
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Provides `EventLogEncryption` on the Web Crypto layers of `Aead`, `Digest`
|
|
257
|
+
* and `SecureRandom`.
|
|
258
|
+
*
|
|
259
|
+
* **Details**
|
|
260
|
+
*
|
|
261
|
+
* The layers use the `Crypto` object of the `WebCrypto` reference, which
|
|
262
|
+
* defaults to `globalThis.crypto`.
|
|
263
|
+
*
|
|
264
|
+
* @stability unstable
|
|
265
|
+
* @category layers
|
|
266
|
+
* @since 4.0.0
|
|
267
|
+
*/
|
|
268
|
+
export const layerSubtle: Layer.Layer<EventLogEncryption> = Layer.provide(layer, layerWebCrypto)
|
|
@@ -113,6 +113,7 @@ export class EventLogAuthentication extends RpcMiddleware.Service<EventLogAuthen
|
|
|
113
113
|
*
|
|
114
114
|
* Contains the remote id, a challenge for the client to sign, and the lowest
|
|
115
115
|
* assigned sequence (default 0) for initializing acknowledgement cursors.
|
|
116
|
+
* `compaction` is `true` when the server serves `EventLogCompactionRpcs`.
|
|
116
117
|
*
|
|
117
118
|
* @stability unstable
|
|
118
119
|
* @category protocols
|
|
@@ -121,7 +122,8 @@ export class EventLogAuthentication extends RpcMiddleware.Service<EventLogAuthen
|
|
|
121
122
|
export class HelloResponse extends Schema.Class<HelloResponse>("effect/eventlog/EventLogRemote/HelloResponse")({
|
|
122
123
|
remoteId: RemoteId,
|
|
123
124
|
challenge: Transferable.Uint8Array,
|
|
124
|
-
firstSequence: Schema.optional(Schema.Natural)
|
|
125
|
+
firstSequence: Schema.optional(Schema.Natural),
|
|
126
|
+
compaction: Schema.optional(Schema.Literal(true))
|
|
125
127
|
}) {}
|
|
126
128
|
|
|
127
129
|
/**
|
|
@@ -441,3 +443,273 @@ export class EventLogRemoteRpcs extends RpcGroup.make(
|
|
|
441
443
|
WriteSingleRpc,
|
|
442
444
|
ChangesRpc
|
|
443
445
|
) {}
|
|
446
|
+
|
|
447
|
+
const compactionScope = {
|
|
448
|
+
publicKey: Schema.String,
|
|
449
|
+
storeId: StoreId
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
const compactionStage = {
|
|
453
|
+
...compactionScope,
|
|
454
|
+
stageId: Schema.String
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
/**
|
|
458
|
+
* The compaction state of a store, as reported to clients.
|
|
459
|
+
*
|
|
460
|
+
* **Details**
|
|
461
|
+
*
|
|
462
|
+
* `wanted` is `true` when the server would open a compaction stage. `head` is
|
|
463
|
+
* the highest stored sequence.
|
|
464
|
+
*
|
|
465
|
+
* @stability unstable
|
|
466
|
+
* @category protocols
|
|
467
|
+
* @since 4.0.0
|
|
468
|
+
*/
|
|
469
|
+
export class CompactionStatus
|
|
470
|
+
extends Schema.Class<CompactionStatus>("effect/eventlog/EventLogRemote/CompactionStatus")({
|
|
471
|
+
wanted: Schema.Boolean,
|
|
472
|
+
head: Schema.Int
|
|
473
|
+
})
|
|
474
|
+
{}
|
|
475
|
+
|
|
476
|
+
/**
|
|
477
|
+
* RPC that reports a store's compaction state.
|
|
478
|
+
*
|
|
479
|
+
* @stability unstable
|
|
480
|
+
* @category protocols
|
|
481
|
+
* @since 4.0.0
|
|
482
|
+
*/
|
|
483
|
+
export class CompactionStatusRpc extends Rpc.make("EventLog.CompactionStatus", {
|
|
484
|
+
payload: compactionScope,
|
|
485
|
+
success: CompactionStatus,
|
|
486
|
+
error: EventLogProtocolError
|
|
487
|
+
}).middleware(EventLogAuthentication) {}
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Schema for the result of opening a compaction stage.
|
|
491
|
+
*
|
|
492
|
+
* **Details**
|
|
493
|
+
*
|
|
494
|
+
* `Started` pins the stage to the active generation and to the last input
|
|
495
|
+
* sequence. `Busy` means another stage is open on the store. `NotWanted` means
|
|
496
|
+
* the store doesn't need compacting.
|
|
497
|
+
*
|
|
498
|
+
* @stability unstable
|
|
499
|
+
* @category protocols
|
|
500
|
+
* @since 4.0.0
|
|
501
|
+
*/
|
|
502
|
+
export const CompactionBeginResult = Schema.Union([
|
|
503
|
+
Schema.TaggedStruct("Started", {
|
|
504
|
+
stageId: Schema.String
|
|
505
|
+
}),
|
|
506
|
+
Schema.TaggedStruct("Busy", {}),
|
|
507
|
+
Schema.TaggedStruct("NotWanted", {})
|
|
508
|
+
])
|
|
509
|
+
|
|
510
|
+
/**
|
|
511
|
+
* The result of opening a compaction stage.
|
|
512
|
+
*
|
|
513
|
+
* @stability unstable
|
|
514
|
+
* @category protocols
|
|
515
|
+
* @since 4.0.0
|
|
516
|
+
*/
|
|
517
|
+
export type CompactionBeginResult = typeof CompactionBeginResult.Type
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* RPC that opens a compaction stage.
|
|
521
|
+
*
|
|
522
|
+
* @stability unstable
|
|
523
|
+
* @category protocols
|
|
524
|
+
* @since 4.0.0
|
|
525
|
+
*/
|
|
526
|
+
export class CompactionBeginRpc extends Rpc.make("EventLog.CompactionBegin", {
|
|
527
|
+
payload: compactionScope,
|
|
528
|
+
success: CompactionBeginResult,
|
|
529
|
+
error: EventLogProtocolError
|
|
530
|
+
}).middleware(EventLogAuthentication) {}
|
|
531
|
+
|
|
532
|
+
/**
|
|
533
|
+
* Schema for the header of one compaction input batch.
|
|
534
|
+
*
|
|
535
|
+
* **Details**
|
|
536
|
+
*
|
|
537
|
+
* An entry's input sequence is the batch `sequence` plus its position in
|
|
538
|
+
* `entryIds`.
|
|
539
|
+
*
|
|
540
|
+
* @stability unstable
|
|
541
|
+
* @category protocols
|
|
542
|
+
* @since 4.0.0
|
|
543
|
+
*/
|
|
544
|
+
export const CompactionInputHeader = Schema.Struct({
|
|
545
|
+
sequence: Schema.Natural,
|
|
546
|
+
entryIds: Schema.NonEmptyArray(EntryId)
|
|
547
|
+
})
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* The header of one compaction input batch.
|
|
551
|
+
*
|
|
552
|
+
* @stability unstable
|
|
553
|
+
* @category protocols
|
|
554
|
+
* @since 4.0.0
|
|
555
|
+
*/
|
|
556
|
+
export type CompactionInputHeader = typeof CompactionInputHeader.Type
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* RPC that streams a stage's input batch headers in input order.
|
|
560
|
+
*
|
|
561
|
+
* **Details**
|
|
562
|
+
*
|
|
563
|
+
* The input is the pinned snapshot, then the originals up to the stage's
|
|
564
|
+
* `through`. Headers are framed as `SingleMessage` values or `ChunkedMessage`
|
|
565
|
+
* parts, as in `ChangesRpc`. It fails with a `NotFound` error once the stage
|
|
566
|
+
* or its pin is gone.
|
|
567
|
+
*
|
|
568
|
+
* @stability unstable
|
|
569
|
+
* @category protocols
|
|
570
|
+
* @since 4.0.0
|
|
571
|
+
*/
|
|
572
|
+
export class CompactionInputRpc extends Rpc.make("EventLog.CompactionInput", {
|
|
573
|
+
payload: compactionStage,
|
|
574
|
+
success: Schema.Union([SingleMessage, ChunkedMessage]),
|
|
575
|
+
error: EventLogProtocolError,
|
|
576
|
+
stream: true
|
|
577
|
+
}).middleware(EventLogAuthentication) {
|
|
578
|
+
static HeadersFromSchemaBinary = SchemaBinary.toCodec(Schema.NonEmptyArray(CompactionInputHeader))
|
|
579
|
+
static encodeHeaders = Schema.encodeEffect(CompactionInputRpc.HeadersFromSchemaBinary)
|
|
580
|
+
static decodeHeaders = Schema.decodeEffect(CompactionInputRpc.HeadersFromSchemaBinary)
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* RPC that streams the encrypted input batches at the given input sequences.
|
|
585
|
+
*
|
|
586
|
+
* **Details**
|
|
587
|
+
*
|
|
588
|
+
* `batches` holds the input sequence of each batch to fetch. Batches are framed
|
|
589
|
+
* and encoded as in `ChangesRpc`. It fails with a `NotFound` error once the
|
|
590
|
+
* stage or its pin is gone.
|
|
591
|
+
*
|
|
592
|
+
* @stability unstable
|
|
593
|
+
* @category protocols
|
|
594
|
+
* @since 4.0.0
|
|
595
|
+
*/
|
|
596
|
+
export class CompactionFetchRpc extends Rpc.make("EventLog.CompactionFetch", {
|
|
597
|
+
payload: {
|
|
598
|
+
...compactionStage,
|
|
599
|
+
batches: Schema.Array(Schema.Natural)
|
|
600
|
+
},
|
|
601
|
+
success: Schema.Union([SingleMessage, ChunkedMessage]),
|
|
602
|
+
error: EventLogProtocolError,
|
|
603
|
+
stream: true
|
|
604
|
+
}).middleware(EventLogAuthentication) {}
|
|
605
|
+
|
|
606
|
+
/**
|
|
607
|
+
* RPC that uploads one piece of a compaction snapshot segment.
|
|
608
|
+
*
|
|
609
|
+
* **Details**
|
|
610
|
+
*
|
|
611
|
+
* A segment is an encoded non-empty array of encrypted batches, indexed by
|
|
612
|
+
* `chunk.id`, and is split into pieces when larger than
|
|
613
|
+
* `ChunkedMessage.chunkSize`. Re-uploading a stored segment is acknowledged
|
|
614
|
+
* without storing it again. A segment that fails validation aborts the stage
|
|
615
|
+
* with an `InvalidRequest` error.
|
|
616
|
+
*
|
|
617
|
+
* @stability unstable
|
|
618
|
+
* @category protocols
|
|
619
|
+
* @since 4.0.0
|
|
620
|
+
*/
|
|
621
|
+
export class CompactionPartRpc extends Rpc.make("EventLog.CompactionPart", {
|
|
622
|
+
payload: {
|
|
623
|
+
...compactionStage,
|
|
624
|
+
chunk: ChunkedMessage
|
|
625
|
+
},
|
|
626
|
+
error: EventLogProtocolError
|
|
627
|
+
}).middleware(EventLogAuthentication) {
|
|
628
|
+
static SegmentFromSchemaBinary = SchemaBinary.toCodec(Schema.NonEmptyArray(EncryptedBatch))
|
|
629
|
+
static encodeSegment = Schema.encodeEffect(CompactionPartRpc.SegmentFromSchemaBinary)
|
|
630
|
+
static decodeSegment = Schema.decodeEffect(CompactionPartRpc.SegmentFromSchemaBinary)
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* RPC that releases an open compaction stage. A late abort is a no-op.
|
|
635
|
+
*
|
|
636
|
+
* @stability unstable
|
|
637
|
+
* @category protocols
|
|
638
|
+
* @since 4.0.0
|
|
639
|
+
*/
|
|
640
|
+
export class CompactionAbortRpc extends Rpc.make("EventLog.CompactionAbort", {
|
|
641
|
+
payload: compactionStage,
|
|
642
|
+
error: EventLogProtocolError
|
|
643
|
+
}).middleware(EventLogAuthentication) {}
|
|
644
|
+
|
|
645
|
+
/**
|
|
646
|
+
* Schema for the outcome of a compaction run reported at commit.
|
|
647
|
+
*
|
|
648
|
+
* **Details**
|
|
649
|
+
*
|
|
650
|
+
* `Snapshot` activates the `segmentCount` uploaded segments. `NoOp` reports a
|
|
651
|
+
* run that dropped nothing.
|
|
652
|
+
*
|
|
653
|
+
* @stability unstable
|
|
654
|
+
* @category protocols
|
|
655
|
+
* @since 4.0.0
|
|
656
|
+
*/
|
|
657
|
+
export const CompactionResult = Schema.Union([
|
|
658
|
+
Schema.TaggedStruct("Snapshot", { segmentCount: Schema.Natural }),
|
|
659
|
+
Schema.TaggedStruct("NoOp", {})
|
|
660
|
+
])
|
|
661
|
+
|
|
662
|
+
/**
|
|
663
|
+
* The outcome of a compaction run reported at commit.
|
|
664
|
+
*
|
|
665
|
+
* @stability unstable
|
|
666
|
+
* @category protocols
|
|
667
|
+
* @since 4.0.0
|
|
668
|
+
*/
|
|
669
|
+
export type CompactionResult = typeof CompactionResult.Type
|
|
670
|
+
|
|
671
|
+
/**
|
|
672
|
+
* RPC that commits a compaction stage.
|
|
673
|
+
*
|
|
674
|
+
* **Details**
|
|
675
|
+
*
|
|
676
|
+
* Answers `Superseded` when the stage's pinned generation is no longer active.
|
|
677
|
+
* Fails with `InvalidRequest`, aborting the stage, when the segments are
|
|
678
|
+
* incomplete or the kept ids are not a non-empty, repeat-free subsequence of
|
|
679
|
+
* the pinned input. Fails with `NotFound` when the stage expired, was aborted
|
|
680
|
+
* or committed, or is unknown, so a retried commit fails too.
|
|
681
|
+
*
|
|
682
|
+
* @stability unstable
|
|
683
|
+
* @category protocols
|
|
684
|
+
* @since 4.0.0
|
|
685
|
+
*/
|
|
686
|
+
export class CompactionCommitRpc extends Rpc.make("EventLog.CompactionCommit", {
|
|
687
|
+
payload: {
|
|
688
|
+
...compactionStage,
|
|
689
|
+
result: CompactionResult
|
|
690
|
+
},
|
|
691
|
+
success: Schema.Literals(["Committed", "Superseded"]),
|
|
692
|
+
error: EventLogProtocolError
|
|
693
|
+
}).middleware(EventLogAuthentication) {}
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* RPC group for encrypted remote compaction.
|
|
697
|
+
*
|
|
698
|
+
* **Details**
|
|
699
|
+
*
|
|
700
|
+
* Served by the encrypted server alongside `EventLogRemoteRpcs`. Clients call
|
|
701
|
+
* it only when `HelloResponse.compaction` is set.
|
|
702
|
+
*
|
|
703
|
+
* @stability unstable
|
|
704
|
+
* @category protocols
|
|
705
|
+
* @since 4.0.0
|
|
706
|
+
*/
|
|
707
|
+
export class EventLogCompactionRpcs extends RpcGroup.make(
|
|
708
|
+
CompactionStatusRpc,
|
|
709
|
+
CompactionBeginRpc,
|
|
710
|
+
CompactionInputRpc,
|
|
711
|
+
CompactionFetchRpc,
|
|
712
|
+
CompactionPartRpc,
|
|
713
|
+
CompactionAbortRpc,
|
|
714
|
+
CompactionCommitRpc
|
|
715
|
+
) {}
|