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
|
@@ -16,9 +16,11 @@ import type { NonEmptyReadonlyArray } from "../Array.ts";
|
|
|
16
16
|
import * as Context from "../Context.ts";
|
|
17
17
|
import * as Duration from "../Duration.ts";
|
|
18
18
|
import * as Effect from "../Effect.ts";
|
|
19
|
+
import * as Exit from "../Exit.ts";
|
|
19
20
|
import * as Fiber from "../Fiber.ts";
|
|
20
21
|
import * as Inspectable from "../Inspectable.ts";
|
|
21
22
|
import * as Layer from "../Layer.ts";
|
|
23
|
+
import type * as CircuitBreaker from "../persistence/CircuitBreaker.ts";
|
|
22
24
|
import type * as RateLimiter from "../persistence/RateLimiter.ts";
|
|
23
25
|
import { type Pipeable } from "../Pipeable.ts";
|
|
24
26
|
import * as Predicate from "../Predicate.ts";
|
|
@@ -931,6 +933,427 @@ export declare const withRateLimiter: {
|
|
|
931
933
|
*/
|
|
932
934
|
<E, R>(self: HttpClient.With<E, R>, options: WithRateLimiter.Options): HttpClient.With<E | RateLimiter.RateLimiterError, R>;
|
|
933
935
|
};
|
|
936
|
+
/**
|
|
937
|
+
* Namespace containing configuration types for `withCircuitBreaker`.
|
|
938
|
+
*
|
|
939
|
+
* @stability experimental
|
|
940
|
+
* @since 4.0.6
|
|
941
|
+
*/
|
|
942
|
+
export declare namespace WithCircuitBreaker {
|
|
943
|
+
/**
|
|
944
|
+
* Options used to configure `withCircuitBreaker`.
|
|
945
|
+
*
|
|
946
|
+
* @stability experimental
|
|
947
|
+
* @category circuit breaking
|
|
948
|
+
* @since 4.0.6
|
|
949
|
+
*/
|
|
950
|
+
interface Options<E, R2 = never> {
|
|
951
|
+
/**
|
|
952
|
+
* The `CircuitBreaker` service that guards each request.
|
|
953
|
+
*/
|
|
954
|
+
readonly breaker: CircuitBreaker.CircuitBreaker;
|
|
955
|
+
/**
|
|
956
|
+
* The circuit key for a request. Requests with the same key share one
|
|
957
|
+
* circuit. Defaults to the request origin, falling back to the raw request
|
|
958
|
+
* URL when it cannot be parsed.
|
|
959
|
+
*/
|
|
960
|
+
readonly key?: string | ((request: HttpClientRequest.HttpClientRequest) => string) | undefined;
|
|
961
|
+
/**
|
|
962
|
+
* Classifies the `Exit` of each request that the breaker admitted.
|
|
963
|
+
* Defaults to `circuitBreakerClassifier`.
|
|
964
|
+
*/
|
|
965
|
+
readonly classify?: ((exit: Exit.Exit<HttpClientResponse.HttpClientResponse, E>) => CircuitBreaker.Outcome | Effect.Effect<CircuitBreaker.Outcome, never, R2>) | undefined;
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
/**
|
|
969
|
+
* Guards requests with a `CircuitBreaker`.
|
|
970
|
+
*
|
|
971
|
+
* **Details**
|
|
972
|
+
*
|
|
973
|
+
* Requests are keyed by origin unless `key` is set, and classified with
|
|
974
|
+
* `circuitBreakerClassifier` unless `classify` is set. A rejected request
|
|
975
|
+
* fails with `CircuitBreakerError` without reaching the wrapped client.
|
|
976
|
+
*
|
|
977
|
+
* Apply it after `withRateLimiter` and `retryTransient`, so the breaker sees
|
|
978
|
+
* one outcome per call and an open circuit skips the retry loop.
|
|
979
|
+
* `retryTransient` never retries a `CircuitBreakerError`. A custom `classify`
|
|
980
|
+
* can delegate the cases it doesn't handle to `circuitBreakerClassifier`.
|
|
981
|
+
*
|
|
982
|
+
* **Gotchas**
|
|
983
|
+
*
|
|
984
|
+
* - The breaker only sees the response headers. To count an error in the
|
|
985
|
+
* body, lift it into the error channel below the breaker with
|
|
986
|
+
* `transformResponse` and count it in `classify`.
|
|
987
|
+
* - `withRateLimiter` retries `429` without limit by default, which can hold
|
|
988
|
+
* the probe slot for minutes. Set its `times`.
|
|
989
|
+
* - A rejected request has no client span. The rejection fails the caller's
|
|
990
|
+
* span instead.
|
|
991
|
+
*
|
|
992
|
+
* **Example** (Guarding an API in the recommended order)
|
|
993
|
+
*
|
|
994
|
+
* ```ts import.meta.vitest
|
|
995
|
+
* import { Effect, Layer, Ref, Schedule } from "effect"
|
|
996
|
+
* import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
|
|
997
|
+
* import { CircuitBreaker, RateLimiter } from "effect/persistence"
|
|
998
|
+
*
|
|
999
|
+
* const program = Effect.gen(function*() {
|
|
1000
|
+
* const requests = yield* Ref.make(0)
|
|
1001
|
+
* // A dependency that always answers 503.
|
|
1002
|
+
* const unavailable = HttpClient.make((request) =>
|
|
1003
|
+
* Effect.as(Ref.update(requests, (n) => n + 1), HttpClientResponse.fromWeb(request, new Response(null, { status: 503 })))
|
|
1004
|
+
* )
|
|
1005
|
+
*
|
|
1006
|
+
* const breaker = yield* CircuitBreaker.make({
|
|
1007
|
+
* tripPolicy: CircuitBreaker.consecutive(1),
|
|
1008
|
+
* openDuration: "30 seconds"
|
|
1009
|
+
* })
|
|
1010
|
+
* const client = unavailable.pipe(
|
|
1011
|
+
* HttpClient.withRateLimiter({
|
|
1012
|
+
* limiter: yield* RateLimiter.RateLimiter,
|
|
1013
|
+
* key: "inventory",
|
|
1014
|
+
* limit: 100,
|
|
1015
|
+
* window: "1 second",
|
|
1016
|
+
* times: 3
|
|
1017
|
+
* }),
|
|
1018
|
+
* HttpClient.retryTransient({ times: 2, schedule: Schedule.exponential("1 millis") }),
|
|
1019
|
+
* HttpClient.withCircuitBreaker({ breaker })
|
|
1020
|
+
* )
|
|
1021
|
+
*
|
|
1022
|
+
* // Three attempts, then the breaker records one failure and opens.
|
|
1023
|
+
* yield* client.execute(HttpClientRequest.get("http://inventory.test/items"))
|
|
1024
|
+
* // Rejected before the retry loop starts, so no further request is sent.
|
|
1025
|
+
* const rejected = yield* Effect.flip(client.execute(HttpClientRequest.get("http://inventory.test/items")))
|
|
1026
|
+
*
|
|
1027
|
+
* return [yield* Ref.get(requests), rejected._tag]
|
|
1028
|
+
* }).pipe(
|
|
1029
|
+
* Effect.scoped,
|
|
1030
|
+
* Effect.provide(Layer.merge(
|
|
1031
|
+
* CircuitBreaker.layerStoreMemory(),
|
|
1032
|
+
* RateLimiter.layer.pipe(Layer.provide(RateLimiter.layerStoreMemory))
|
|
1033
|
+
* ))
|
|
1034
|
+
* )
|
|
1035
|
+
*
|
|
1036
|
+
* await Effect.runPromise(program) // => [3, "CircuitBreakerError"]
|
|
1037
|
+
* ```
|
|
1038
|
+
*
|
|
1039
|
+
* **Example** (Counting an error in the body as a failure)
|
|
1040
|
+
*
|
|
1041
|
+
* This API answers `200` with `{ "status": "degraded" }` when it is failing.
|
|
1042
|
+
*
|
|
1043
|
+
* ```ts import.meta.vitest
|
|
1044
|
+
* import { Data, Effect, Exit, Option } from "effect"
|
|
1045
|
+
* import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
|
|
1046
|
+
* import { CircuitBreaker } from "effect/persistence"
|
|
1047
|
+
*
|
|
1048
|
+
* class Degraded extends Data.TaggedError("Degraded") {}
|
|
1049
|
+
*
|
|
1050
|
+
* const degraded = HttpClient.make((request) =>
|
|
1051
|
+
* Effect.succeed(HttpClientResponse.fromWeb(request, Response.json({ status: "degraded" })))
|
|
1052
|
+
* )
|
|
1053
|
+
*
|
|
1054
|
+
* const program = Effect.gen(function*() {
|
|
1055
|
+
* const breaker = yield* CircuitBreaker.make({
|
|
1056
|
+
* tripPolicy: CircuitBreaker.consecutive(1),
|
|
1057
|
+
* openDuration: "30 seconds"
|
|
1058
|
+
* })
|
|
1059
|
+
* const client = degraded.pipe(
|
|
1060
|
+
* HttpClient.transformResponse(Effect.flatMap((response) =>
|
|
1061
|
+
* Effect.flatMap(response.json, (body) =>
|
|
1062
|
+
* typeof body === "object" && body !== null && "status" in body && body.status === "degraded"
|
|
1063
|
+
* ? Effect.fail(new Degraded())
|
|
1064
|
+
* : Effect.succeed(response))
|
|
1065
|
+
* )),
|
|
1066
|
+
* HttpClient.withCircuitBreaker({
|
|
1067
|
+
* breaker,
|
|
1068
|
+
* classify: (exit) =>
|
|
1069
|
+
* Option.exists(Exit.findErrorOption(exit), (error) => error._tag === "Degraded")
|
|
1070
|
+
* ? CircuitBreaker.failure()
|
|
1071
|
+
* : HttpClient.circuitBreakerClassifier(exit)
|
|
1072
|
+
* })
|
|
1073
|
+
* )
|
|
1074
|
+
*
|
|
1075
|
+
* yield* Effect.flip(client.get("http://status.test/"))
|
|
1076
|
+
* const state = yield* breaker.state("http://status.test")
|
|
1077
|
+
* return state._tag
|
|
1078
|
+
* }).pipe(Effect.scoped, Effect.provide(CircuitBreaker.layerStoreMemory()))
|
|
1079
|
+
*
|
|
1080
|
+
* await Effect.runPromise(program) // => "Open"
|
|
1081
|
+
* ```
|
|
1082
|
+
*
|
|
1083
|
+
* @stability experimental
|
|
1084
|
+
* @category circuit breaking
|
|
1085
|
+
* @since 4.0.6
|
|
1086
|
+
*/
|
|
1087
|
+
export declare const withCircuitBreaker: {
|
|
1088
|
+
/**
|
|
1089
|
+
* Guards requests with a `CircuitBreaker`.
|
|
1090
|
+
*
|
|
1091
|
+
* **Details**
|
|
1092
|
+
*
|
|
1093
|
+
* Requests are keyed by origin unless `key` is set, and classified with
|
|
1094
|
+
* `circuitBreakerClassifier` unless `classify` is set. A rejected request
|
|
1095
|
+
* fails with `CircuitBreakerError` without reaching the wrapped client.
|
|
1096
|
+
*
|
|
1097
|
+
* Apply it after `withRateLimiter` and `retryTransient`, so the breaker sees
|
|
1098
|
+
* one outcome per call and an open circuit skips the retry loop.
|
|
1099
|
+
* `retryTransient` never retries a `CircuitBreakerError`. A custom `classify`
|
|
1100
|
+
* can delegate the cases it doesn't handle to `circuitBreakerClassifier`.
|
|
1101
|
+
*
|
|
1102
|
+
* **Gotchas**
|
|
1103
|
+
*
|
|
1104
|
+
* - The breaker only sees the response headers. To count an error in the
|
|
1105
|
+
* body, lift it into the error channel below the breaker with
|
|
1106
|
+
* `transformResponse` and count it in `classify`.
|
|
1107
|
+
* - `withRateLimiter` retries `429` without limit by default, which can hold
|
|
1108
|
+
* the probe slot for minutes. Set its `times`.
|
|
1109
|
+
* - A rejected request has no client span. The rejection fails the caller's
|
|
1110
|
+
* span instead.
|
|
1111
|
+
*
|
|
1112
|
+
* **Example** (Guarding an API in the recommended order)
|
|
1113
|
+
*
|
|
1114
|
+
* ```ts import.meta.vitest
|
|
1115
|
+
* import { Effect, Layer, Ref, Schedule } from "effect"
|
|
1116
|
+
* import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
|
|
1117
|
+
* import { CircuitBreaker, RateLimiter } from "effect/persistence"
|
|
1118
|
+
*
|
|
1119
|
+
* const program = Effect.gen(function*() {
|
|
1120
|
+
* const requests = yield* Ref.make(0)
|
|
1121
|
+
* // A dependency that always answers 503.
|
|
1122
|
+
* const unavailable = HttpClient.make((request) =>
|
|
1123
|
+
* Effect.as(Ref.update(requests, (n) => n + 1), HttpClientResponse.fromWeb(request, new Response(null, { status: 503 })))
|
|
1124
|
+
* )
|
|
1125
|
+
*
|
|
1126
|
+
* const breaker = yield* CircuitBreaker.make({
|
|
1127
|
+
* tripPolicy: CircuitBreaker.consecutive(1),
|
|
1128
|
+
* openDuration: "30 seconds"
|
|
1129
|
+
* })
|
|
1130
|
+
* const client = unavailable.pipe(
|
|
1131
|
+
* HttpClient.withRateLimiter({
|
|
1132
|
+
* limiter: yield* RateLimiter.RateLimiter,
|
|
1133
|
+
* key: "inventory",
|
|
1134
|
+
* limit: 100,
|
|
1135
|
+
* window: "1 second",
|
|
1136
|
+
* times: 3
|
|
1137
|
+
* }),
|
|
1138
|
+
* HttpClient.retryTransient({ times: 2, schedule: Schedule.exponential("1 millis") }),
|
|
1139
|
+
* HttpClient.withCircuitBreaker({ breaker })
|
|
1140
|
+
* )
|
|
1141
|
+
*
|
|
1142
|
+
* // Three attempts, then the breaker records one failure and opens.
|
|
1143
|
+
* yield* client.execute(HttpClientRequest.get("http://inventory.test/items"))
|
|
1144
|
+
* // Rejected before the retry loop starts, so no further request is sent.
|
|
1145
|
+
* const rejected = yield* Effect.flip(client.execute(HttpClientRequest.get("http://inventory.test/items")))
|
|
1146
|
+
*
|
|
1147
|
+
* return [yield* Ref.get(requests), rejected._tag]
|
|
1148
|
+
* }).pipe(
|
|
1149
|
+
* Effect.scoped,
|
|
1150
|
+
* Effect.provide(Layer.merge(
|
|
1151
|
+
* CircuitBreaker.layerStoreMemory(),
|
|
1152
|
+
* RateLimiter.layer.pipe(Layer.provide(RateLimiter.layerStoreMemory))
|
|
1153
|
+
* ))
|
|
1154
|
+
* )
|
|
1155
|
+
*
|
|
1156
|
+
* await Effect.runPromise(program) // => [3, "CircuitBreakerError"]
|
|
1157
|
+
* ```
|
|
1158
|
+
*
|
|
1159
|
+
* **Example** (Counting an error in the body as a failure)
|
|
1160
|
+
*
|
|
1161
|
+
* This API answers `200` with `{ "status": "degraded" }` when it is failing.
|
|
1162
|
+
*
|
|
1163
|
+
* ```ts import.meta.vitest
|
|
1164
|
+
* import { Data, Effect, Exit, Option } from "effect"
|
|
1165
|
+
* import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
|
|
1166
|
+
* import { CircuitBreaker } from "effect/persistence"
|
|
1167
|
+
*
|
|
1168
|
+
* class Degraded extends Data.TaggedError("Degraded") {}
|
|
1169
|
+
*
|
|
1170
|
+
* const degraded = HttpClient.make((request) =>
|
|
1171
|
+
* Effect.succeed(HttpClientResponse.fromWeb(request, Response.json({ status: "degraded" })))
|
|
1172
|
+
* )
|
|
1173
|
+
*
|
|
1174
|
+
* const program = Effect.gen(function*() {
|
|
1175
|
+
* const breaker = yield* CircuitBreaker.make({
|
|
1176
|
+
* tripPolicy: CircuitBreaker.consecutive(1),
|
|
1177
|
+
* openDuration: "30 seconds"
|
|
1178
|
+
* })
|
|
1179
|
+
* const client = degraded.pipe(
|
|
1180
|
+
* HttpClient.transformResponse(Effect.flatMap((response) =>
|
|
1181
|
+
* Effect.flatMap(response.json, (body) =>
|
|
1182
|
+
* typeof body === "object" && body !== null && "status" in body && body.status === "degraded"
|
|
1183
|
+
* ? Effect.fail(new Degraded())
|
|
1184
|
+
* : Effect.succeed(response))
|
|
1185
|
+
* )),
|
|
1186
|
+
* HttpClient.withCircuitBreaker({
|
|
1187
|
+
* breaker,
|
|
1188
|
+
* classify: (exit) =>
|
|
1189
|
+
* Option.exists(Exit.findErrorOption(exit), (error) => error._tag === "Degraded")
|
|
1190
|
+
* ? CircuitBreaker.failure()
|
|
1191
|
+
* : HttpClient.circuitBreakerClassifier(exit)
|
|
1192
|
+
* })
|
|
1193
|
+
* )
|
|
1194
|
+
*
|
|
1195
|
+
* yield* Effect.flip(client.get("http://status.test/"))
|
|
1196
|
+
* const state = yield* breaker.state("http://status.test")
|
|
1197
|
+
* return state._tag
|
|
1198
|
+
* }).pipe(Effect.scoped, Effect.provide(CircuitBreaker.layerStoreMemory()))
|
|
1199
|
+
*
|
|
1200
|
+
* await Effect.runPromise(program) // => "Open"
|
|
1201
|
+
* ```
|
|
1202
|
+
*
|
|
1203
|
+
* @stability experimental
|
|
1204
|
+
* @category circuit breaking
|
|
1205
|
+
* @since 4.0.6
|
|
1206
|
+
*/
|
|
1207
|
+
<E, R2 = never>(options: WithCircuitBreaker.Options<E, R2>): <R>(self: HttpClient.With<E, R>) => HttpClient.With<E | CircuitBreaker.CircuitBreakerError, R | R2>;
|
|
1208
|
+
/**
|
|
1209
|
+
* Guards requests with a `CircuitBreaker`.
|
|
1210
|
+
*
|
|
1211
|
+
* **Details**
|
|
1212
|
+
*
|
|
1213
|
+
* Requests are keyed by origin unless `key` is set, and classified with
|
|
1214
|
+
* `circuitBreakerClassifier` unless `classify` is set. A rejected request
|
|
1215
|
+
* fails with `CircuitBreakerError` without reaching the wrapped client.
|
|
1216
|
+
*
|
|
1217
|
+
* Apply it after `withRateLimiter` and `retryTransient`, so the breaker sees
|
|
1218
|
+
* one outcome per call and an open circuit skips the retry loop.
|
|
1219
|
+
* `retryTransient` never retries a `CircuitBreakerError`. A custom `classify`
|
|
1220
|
+
* can delegate the cases it doesn't handle to `circuitBreakerClassifier`.
|
|
1221
|
+
*
|
|
1222
|
+
* **Gotchas**
|
|
1223
|
+
*
|
|
1224
|
+
* - The breaker only sees the response headers. To count an error in the
|
|
1225
|
+
* body, lift it into the error channel below the breaker with
|
|
1226
|
+
* `transformResponse` and count it in `classify`.
|
|
1227
|
+
* - `withRateLimiter` retries `429` without limit by default, which can hold
|
|
1228
|
+
* the probe slot for minutes. Set its `times`.
|
|
1229
|
+
* - A rejected request has no client span. The rejection fails the caller's
|
|
1230
|
+
* span instead.
|
|
1231
|
+
*
|
|
1232
|
+
* **Example** (Guarding an API in the recommended order)
|
|
1233
|
+
*
|
|
1234
|
+
* ```ts import.meta.vitest
|
|
1235
|
+
* import { Effect, Layer, Ref, Schedule } from "effect"
|
|
1236
|
+
* import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
|
|
1237
|
+
* import { CircuitBreaker, RateLimiter } from "effect/persistence"
|
|
1238
|
+
*
|
|
1239
|
+
* const program = Effect.gen(function*() {
|
|
1240
|
+
* const requests = yield* Ref.make(0)
|
|
1241
|
+
* // A dependency that always answers 503.
|
|
1242
|
+
* const unavailable = HttpClient.make((request) =>
|
|
1243
|
+
* Effect.as(Ref.update(requests, (n) => n + 1), HttpClientResponse.fromWeb(request, new Response(null, { status: 503 })))
|
|
1244
|
+
* )
|
|
1245
|
+
*
|
|
1246
|
+
* const breaker = yield* CircuitBreaker.make({
|
|
1247
|
+
* tripPolicy: CircuitBreaker.consecutive(1),
|
|
1248
|
+
* openDuration: "30 seconds"
|
|
1249
|
+
* })
|
|
1250
|
+
* const client = unavailable.pipe(
|
|
1251
|
+
* HttpClient.withRateLimiter({
|
|
1252
|
+
* limiter: yield* RateLimiter.RateLimiter,
|
|
1253
|
+
* key: "inventory",
|
|
1254
|
+
* limit: 100,
|
|
1255
|
+
* window: "1 second",
|
|
1256
|
+
* times: 3
|
|
1257
|
+
* }),
|
|
1258
|
+
* HttpClient.retryTransient({ times: 2, schedule: Schedule.exponential("1 millis") }),
|
|
1259
|
+
* HttpClient.withCircuitBreaker({ breaker })
|
|
1260
|
+
* )
|
|
1261
|
+
*
|
|
1262
|
+
* // Three attempts, then the breaker records one failure and opens.
|
|
1263
|
+
* yield* client.execute(HttpClientRequest.get("http://inventory.test/items"))
|
|
1264
|
+
* // Rejected before the retry loop starts, so no further request is sent.
|
|
1265
|
+
* const rejected = yield* Effect.flip(client.execute(HttpClientRequest.get("http://inventory.test/items")))
|
|
1266
|
+
*
|
|
1267
|
+
* return [yield* Ref.get(requests), rejected._tag]
|
|
1268
|
+
* }).pipe(
|
|
1269
|
+
* Effect.scoped,
|
|
1270
|
+
* Effect.provide(Layer.merge(
|
|
1271
|
+
* CircuitBreaker.layerStoreMemory(),
|
|
1272
|
+
* RateLimiter.layer.pipe(Layer.provide(RateLimiter.layerStoreMemory))
|
|
1273
|
+
* ))
|
|
1274
|
+
* )
|
|
1275
|
+
*
|
|
1276
|
+
* await Effect.runPromise(program) // => [3, "CircuitBreakerError"]
|
|
1277
|
+
* ```
|
|
1278
|
+
*
|
|
1279
|
+
* **Example** (Counting an error in the body as a failure)
|
|
1280
|
+
*
|
|
1281
|
+
* This API answers `200` with `{ "status": "degraded" }` when it is failing.
|
|
1282
|
+
*
|
|
1283
|
+
* ```ts import.meta.vitest
|
|
1284
|
+
* import { Data, Effect, Exit, Option } from "effect"
|
|
1285
|
+
* import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"
|
|
1286
|
+
* import { CircuitBreaker } from "effect/persistence"
|
|
1287
|
+
*
|
|
1288
|
+
* class Degraded extends Data.TaggedError("Degraded") {}
|
|
1289
|
+
*
|
|
1290
|
+
* const degraded = HttpClient.make((request) =>
|
|
1291
|
+
* Effect.succeed(HttpClientResponse.fromWeb(request, Response.json({ status: "degraded" })))
|
|
1292
|
+
* )
|
|
1293
|
+
*
|
|
1294
|
+
* const program = Effect.gen(function*() {
|
|
1295
|
+
* const breaker = yield* CircuitBreaker.make({
|
|
1296
|
+
* tripPolicy: CircuitBreaker.consecutive(1),
|
|
1297
|
+
* openDuration: "30 seconds"
|
|
1298
|
+
* })
|
|
1299
|
+
* const client = degraded.pipe(
|
|
1300
|
+
* HttpClient.transformResponse(Effect.flatMap((response) =>
|
|
1301
|
+
* Effect.flatMap(response.json, (body) =>
|
|
1302
|
+
* typeof body === "object" && body !== null && "status" in body && body.status === "degraded"
|
|
1303
|
+
* ? Effect.fail(new Degraded())
|
|
1304
|
+
* : Effect.succeed(response))
|
|
1305
|
+
* )),
|
|
1306
|
+
* HttpClient.withCircuitBreaker({
|
|
1307
|
+
* breaker,
|
|
1308
|
+
* classify: (exit) =>
|
|
1309
|
+
* Option.exists(Exit.findErrorOption(exit), (error) => error._tag === "Degraded")
|
|
1310
|
+
* ? CircuitBreaker.failure()
|
|
1311
|
+
* : HttpClient.circuitBreakerClassifier(exit)
|
|
1312
|
+
* })
|
|
1313
|
+
* )
|
|
1314
|
+
*
|
|
1315
|
+
* yield* Effect.flip(client.get("http://status.test/"))
|
|
1316
|
+
* const state = yield* breaker.state("http://status.test")
|
|
1317
|
+
* return state._tag
|
|
1318
|
+
* }).pipe(Effect.scoped, Effect.provide(CircuitBreaker.layerStoreMemory()))
|
|
1319
|
+
*
|
|
1320
|
+
* await Effect.runPromise(program) // => "Open"
|
|
1321
|
+
* ```
|
|
1322
|
+
*
|
|
1323
|
+
* @stability experimental
|
|
1324
|
+
* @category circuit breaking
|
|
1325
|
+
* @since 4.0.6
|
|
1326
|
+
*/
|
|
1327
|
+
<E, R, R2 = never>(self: HttpClient.With<E, R>, options: WithCircuitBreaker.Options<E, R2>): HttpClient.With<E | CircuitBreaker.CircuitBreakerError, R | R2>;
|
|
1328
|
+
};
|
|
1329
|
+
/**
|
|
1330
|
+
* The default `withCircuitBreaker` classifier.
|
|
1331
|
+
*
|
|
1332
|
+
* **Details**
|
|
1333
|
+
*
|
|
1334
|
+
* - Failure: status 408, 500, 502, 503 or 504, returned or wrapped in a
|
|
1335
|
+
* `StatusCodeError`, and any `TransportError` or `Cause.TimeoutError`.
|
|
1336
|
+
* - Success: any other response, including other 4xx, since the dependency
|
|
1337
|
+
* answered.
|
|
1338
|
+
* - Ignored: status 429 (left to `withRateLimiter`), `EncodeError`,
|
|
1339
|
+
* `InvalidUrlError`, `DecodeError`, `EmptyBodyError`, unknown typed errors
|
|
1340
|
+
* and defects. HttpClient errors are typed, so a defect here is a bug in
|
|
1341
|
+
* the caller.
|
|
1342
|
+
*
|
|
1343
|
+
* When a cause holds several errors, a failure beats a success and a success
|
|
1344
|
+
* beats an ignored outcome. A failure carries the longest `Retry-After` it
|
|
1345
|
+
* saw. The result is an `Effect` only because parsing an HTTP-date
|
|
1346
|
+
* `Retry-After` reads `Clock`.
|
|
1347
|
+
*
|
|
1348
|
+
* **Gotchas**
|
|
1349
|
+
*
|
|
1350
|
+
* `TransportError` also covers client-side refusals, which count as failures.
|
|
1351
|
+
*
|
|
1352
|
+
* @stability experimental
|
|
1353
|
+
* @category circuit breaking
|
|
1354
|
+
* @since 4.0.6
|
|
1355
|
+
*/
|
|
1356
|
+
export declare const circuitBreakerClassifier: <E>(exit: Exit.Exit<HttpClientResponse.HttpClientResponse, E>) => Effect.Effect<CircuitBreaker.Outcome>;
|
|
934
1357
|
/**
|
|
935
1358
|
* Performs an additional effect after a successful request.
|
|
936
1359
|
*
|
|
@@ -1007,12 +1430,20 @@ export declare const tapRequest: {
|
|
|
1007
1430
|
<E, R, _, E2, R2>(self: HttpClient.With<E, R>, f: (a: HttpClientRequest.HttpClientRequest) => Effect.Effect<_, E2, R2>): HttpClient.With<E | E2, R | R2>;
|
|
1008
1431
|
};
|
|
1009
1432
|
/**
|
|
1010
|
-
* Adds a `Ref` of cookies to the client for handling cookies across
|
|
1433
|
+
* Adds a `Ref` of stored cookies to the client for handling cookies across
|
|
1434
|
+
* requests.
|
|
1011
1435
|
*
|
|
1012
1436
|
* **When to use**
|
|
1013
1437
|
*
|
|
1014
1438
|
* Use to add shared cookie storage to a client so response cookies are retained
|
|
1015
|
-
* and sent by later requests.
|
|
1439
|
+
* and sent by later requests to a matching host, path, and scheme.
|
|
1440
|
+
*
|
|
1441
|
+
* **Details**
|
|
1442
|
+
*
|
|
1443
|
+
* Response cookies are merged into the ref with `Cookies.mergeIntoArray` for
|
|
1444
|
+
* the response URL. Before each request, `Cookies.toRequestCookieHeader` selects
|
|
1445
|
+
* the cookies for the request URL and sets them as the `cookie` header. Expiry
|
|
1446
|
+
* uses the current `Clock`.
|
|
1016
1447
|
*
|
|
1017
1448
|
* @stability unstable
|
|
1018
1449
|
* @category cookies
|
|
@@ -1020,31 +1451,47 @@ export declare const tapRequest: {
|
|
|
1020
1451
|
*/
|
|
1021
1452
|
export declare const withCookiesRef: {
|
|
1022
1453
|
/**
|
|
1023
|
-
* Adds a `Ref` of cookies to the client for handling cookies across
|
|
1454
|
+
* Adds a `Ref` of stored cookies to the client for handling cookies across
|
|
1455
|
+
* requests.
|
|
1024
1456
|
*
|
|
1025
1457
|
* **When to use**
|
|
1026
1458
|
*
|
|
1027
1459
|
* Use to add shared cookie storage to a client so response cookies are retained
|
|
1028
|
-
* and sent by later requests.
|
|
1460
|
+
* and sent by later requests to a matching host, path, and scheme.
|
|
1461
|
+
*
|
|
1462
|
+
* **Details**
|
|
1463
|
+
*
|
|
1464
|
+
* Response cookies are merged into the ref with `Cookies.mergeIntoArray` for
|
|
1465
|
+
* the response URL. Before each request, `Cookies.toRequestCookieHeader` selects
|
|
1466
|
+
* the cookies for the request URL and sets them as the `cookie` header. Expiry
|
|
1467
|
+
* uses the current `Clock`.
|
|
1029
1468
|
*
|
|
1030
1469
|
* @stability unstable
|
|
1031
1470
|
* @category cookies
|
|
1032
1471
|
* @since 4.0.0
|
|
1033
1472
|
*/
|
|
1034
|
-
(ref: Ref.Ref<Cookies.
|
|
1473
|
+
(ref: Ref.Ref<ReadonlyArray<Cookies.Cookie>>): <E, R>(self: HttpClient.With<E, R>) => HttpClient.With<E, R>;
|
|
1035
1474
|
/**
|
|
1036
|
-
* Adds a `Ref` of cookies to the client for handling cookies across
|
|
1475
|
+
* Adds a `Ref` of stored cookies to the client for handling cookies across
|
|
1476
|
+
* requests.
|
|
1037
1477
|
*
|
|
1038
1478
|
* **When to use**
|
|
1039
1479
|
*
|
|
1040
1480
|
* Use to add shared cookie storage to a client so response cookies are retained
|
|
1041
|
-
* and sent by later requests.
|
|
1481
|
+
* and sent by later requests to a matching host, path, and scheme.
|
|
1482
|
+
*
|
|
1483
|
+
* **Details**
|
|
1484
|
+
*
|
|
1485
|
+
* Response cookies are merged into the ref with `Cookies.mergeIntoArray` for
|
|
1486
|
+
* the response URL. Before each request, `Cookies.toRequestCookieHeader` selects
|
|
1487
|
+
* the cookies for the request URL and sets them as the `cookie` header. Expiry
|
|
1488
|
+
* uses the current `Clock`.
|
|
1042
1489
|
*
|
|
1043
1490
|
* @stability unstable
|
|
1044
1491
|
* @category cookies
|
|
1045
1492
|
* @since 4.0.0
|
|
1046
1493
|
*/
|
|
1047
|
-
<E, R>(self: HttpClient.With<E, R>, ref: Ref.Ref<Cookies.
|
|
1494
|
+
<E, R>(self: HttpClient.With<E, R>, ref: Ref.Ref<ReadonlyArray<Cookies.Cookie>>): HttpClient.With<E, R>;
|
|
1048
1495
|
};
|
|
1049
1496
|
/**
|
|
1050
1497
|
* Attaches the lifetime of the `HttpClientRequest` to a `Scope`.
|
|
@@ -1233,4 +1680,51 @@ export declare const SpanNameGenerator: Context.Reference<(request: HttpClientRe
|
|
|
1233
1680
|
* @since 4.0.0
|
|
1234
1681
|
*/
|
|
1235
1682
|
export declare const layerMergedContext: <E, R>(effect: Effect.Effect<HttpClient, E, R>) => Layer.Layer<HttpClient, E, R>;
|
|
1683
|
+
/**
|
|
1684
|
+
* Returns `true` for an error that `retryTransient` retries by default: a
|
|
1685
|
+
* timeout, a transport error, or a status code error with a transient response.
|
|
1686
|
+
*
|
|
1687
|
+
* **When to use**
|
|
1688
|
+
*
|
|
1689
|
+
* Use to classify failures the same way `retryTransient` does, for example in a
|
|
1690
|
+
* custom retry policy or a circuit breaker.
|
|
1691
|
+
*
|
|
1692
|
+
* **Example** (Classifying client errors)
|
|
1693
|
+
*
|
|
1694
|
+
* ```ts import.meta.vitest
|
|
1695
|
+
* import { Cause } from "effect"
|
|
1696
|
+
* import { HttpClient, HttpClientError, HttpClientRequest } from "effect/http"
|
|
1697
|
+
*
|
|
1698
|
+
* const request = HttpClientRequest.get("https://example.com")
|
|
1699
|
+
* const transportError = new HttpClientError.HttpClientError({
|
|
1700
|
+
* reason: new HttpClientError.TransportError({ request })
|
|
1701
|
+
* })
|
|
1702
|
+
*
|
|
1703
|
+
* HttpClient.isTransientError(transportError) // => true
|
|
1704
|
+
* HttpClient.isTransientError(new Cause.TimeoutError()) // => true
|
|
1705
|
+
* HttpClient.isTransientError(new Error("boom")) // => false
|
|
1706
|
+
* ```
|
|
1707
|
+
*
|
|
1708
|
+
* @see {@link isTransientResponse} for the response statuses it accepts
|
|
1709
|
+
* @see {@link retryTransient} for the retry policy that uses it
|
|
1710
|
+
* @stability unstable
|
|
1711
|
+
* @category predicates
|
|
1712
|
+
* @since 4.1.0
|
|
1713
|
+
*/
|
|
1714
|
+
export declare const isTransientError: (error: unknown) => boolean;
|
|
1715
|
+
/**
|
|
1716
|
+
* Returns `true` for a response whose status `retryTransient` retries by
|
|
1717
|
+
* default: 408, 429, 500, 502, 503 or 504.
|
|
1718
|
+
*
|
|
1719
|
+
* **When to use**
|
|
1720
|
+
*
|
|
1721
|
+
* Use to retry the same responses as `retryTransient` in a custom retry policy.
|
|
1722
|
+
*
|
|
1723
|
+
* @see {@link isTransientError} for the matching error predicate
|
|
1724
|
+
* @see {@link retryTransient} for the retry policy that uses it
|
|
1725
|
+
* @stability unstable
|
|
1726
|
+
* @category predicates
|
|
1727
|
+
* @since 4.1.0
|
|
1728
|
+
*/
|
|
1729
|
+
export declare const isTransientResponse: (response: HttpClientResponse.HttpClientResponse) => boolean;
|
|
1236
1730
|
//# sourceMappingURL=HttpClient.d.ts.map
|