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
package/src/Match.ts
CHANGED
|
@@ -37,6 +37,31 @@ type ValueTagHandlers<I> = {
|
|
|
37
37
|
readonly [Tag in Types.Tags<"_tag", I> & string]: (_: Extract<I, { readonly _tag: Tag }>) => any
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
+
// Members of `R` that a literal record can dispatch on: finite string / number
|
|
41
|
+
// literals whose runtime key no other string / number member can produce.
|
|
42
|
+
// Widened `string` / `number` and template literals add no keys, and a literal
|
|
43
|
+
// is dropped when another member spells the same key (`1` with `"1"` or
|
|
44
|
+
// `string`, `"1"` or `"NaN"` with `number`).
|
|
45
|
+
type LiteralKeys<R, All = Extract<R, string | number>> = R extends string | number
|
|
46
|
+
? {} extends Record<R, unknown> ? never
|
|
47
|
+
: R extends number ? `${R}` extends All ? never : R
|
|
48
|
+
: R extends `${infer N extends number}` ? N extends All ? never : R
|
|
49
|
+
: R extends "NaN" | "Infinity" | "-Infinity" ? number extends All ? never : R
|
|
50
|
+
: R
|
|
51
|
+
: never
|
|
52
|
+
|
|
53
|
+
type LiteralHandlers<R, Ret> = [Exclude<R, LiteralKeys<R>>] extends [never] ? {
|
|
54
|
+
readonly [K in LiteralKeys<R>]: (_: K) => Ret
|
|
55
|
+
}
|
|
56
|
+
: never
|
|
57
|
+
|
|
58
|
+
type PartialLiteralHandlers<R, Ret> = {
|
|
59
|
+
readonly [K in LiteralKeys<R>]?: ((_: K) => Ret) | undefined
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Only keys with a defined handler remove a literal from the remaining input.
|
|
63
|
+
type HandledLiterals<P> = { readonly [K in keyof P]-?: undefined extends P[K] ? never : K }[keyof P]
|
|
64
|
+
|
|
40
65
|
/**
|
|
41
66
|
* Marker used by `Matcher` to distinguish matchers created with `Match.value`.
|
|
42
67
|
*
|
|
@@ -1391,6 +1416,108 @@ export const tagsExhaustive: <
|
|
|
1391
1416
|
) => [Pr] extends [never] ? (u: I) => Unify<A | ReturnType<P[keyof P]>> : Unify<A | ReturnType<P[keyof P]>> =
|
|
1392
1417
|
internal.tagsExhaustive
|
|
1393
1418
|
|
|
1419
|
+
/**
|
|
1420
|
+
* Matches string and number literal values, mapping each literal to a
|
|
1421
|
+
* corresponding handler.
|
|
1422
|
+
*
|
|
1423
|
+
* **Details**
|
|
1424
|
+
*
|
|
1425
|
+
* Each handler receives the matched literal. Handled literals are removed from
|
|
1426
|
+
* the remaining input, while unhandled literals and any other members (such as
|
|
1427
|
+
* `null`, objects, or widened `string` / `number` types) are left for later
|
|
1428
|
+
* cases. Keys must be finite string or number literals of the remaining input;
|
|
1429
|
+
* unions containing both a number and its string spelling, such as
|
|
1430
|
+
* `1 | "1"`, are rejected because both share the same runtime key.
|
|
1431
|
+
*
|
|
1432
|
+
* **Example** (Mapping literal handlers)
|
|
1433
|
+
*
|
|
1434
|
+
* ```ts import.meta.vitest
|
|
1435
|
+
* import { Match } from "effect"
|
|
1436
|
+
*
|
|
1437
|
+
* type Status = "draft" | "review" | "published"
|
|
1438
|
+
*
|
|
1439
|
+
* const isEditable = Match.type<Status>().pipe(
|
|
1440
|
+
* Match.literals({ draft: () => true, review: () => true }),
|
|
1441
|
+
* Match.orElse(() => false)
|
|
1442
|
+
* )
|
|
1443
|
+
*
|
|
1444
|
+
* isEditable("review") // => true
|
|
1445
|
+
* isEditable("published") // => false
|
|
1446
|
+
* ```
|
|
1447
|
+
*
|
|
1448
|
+
* @see {@link literalsExhaustive} for handling every literal and finalizing the matcher
|
|
1449
|
+
*
|
|
1450
|
+
* @stability unstable
|
|
1451
|
+
* @category defining patterns
|
|
1452
|
+
* @since 4.1.0
|
|
1453
|
+
*/
|
|
1454
|
+
export const literals: <
|
|
1455
|
+
R,
|
|
1456
|
+
Ret,
|
|
1457
|
+
P extends
|
|
1458
|
+
& PartialLiteralHandlers<R, Ret>
|
|
1459
|
+
& { readonly [K in Exclude<keyof P, LiteralKeys<R>>]: never }
|
|
1460
|
+
>(
|
|
1461
|
+
fields: Contextual<P, PartialLiteralHandlers<R, Ret>>
|
|
1462
|
+
) => <I, F, A, Pr>(
|
|
1463
|
+
self: Matcher<I, F, R, A, Pr, Ret>
|
|
1464
|
+
) => Matcher<
|
|
1465
|
+
I,
|
|
1466
|
+
Types.AddWithout<F, Extract<R, HandledLiterals<P>>>,
|
|
1467
|
+
Types.ApplyFilters<I, Types.AddWithout<F, Extract<R, HandledLiterals<P>>>>,
|
|
1468
|
+
A | ReturnType<P[keyof P] & {}>,
|
|
1469
|
+
Pr,
|
|
1470
|
+
Ret
|
|
1471
|
+
> = internal.literals
|
|
1472
|
+
|
|
1473
|
+
/**
|
|
1474
|
+
* Matches string and number literal values and requires handling of all
|
|
1475
|
+
* remaining cases.
|
|
1476
|
+
*
|
|
1477
|
+
* **Details**
|
|
1478
|
+
*
|
|
1479
|
+
* This is the exhaustive variant of {@link literals}. Every remaining member
|
|
1480
|
+
* must be a finite string or number literal with a corresponding handler, so a
|
|
1481
|
+
* missing literal, a widened `string` / `number` type, or any other unhandled
|
|
1482
|
+
* member is reported by TypeScript.
|
|
1483
|
+
*
|
|
1484
|
+
* **Example** (Handling all literal cases)
|
|
1485
|
+
*
|
|
1486
|
+
* ```ts import.meta.vitest
|
|
1487
|
+
* import { Match } from "effect"
|
|
1488
|
+
*
|
|
1489
|
+
* type Status = "draft" | "review" | "published"
|
|
1490
|
+
*
|
|
1491
|
+
* const label = Match.type<Status>().pipe(
|
|
1492
|
+
* Match.literalsExhaustive({
|
|
1493
|
+
* draft: () => "Draft",
|
|
1494
|
+
* review: () => "In review",
|
|
1495
|
+
* published: () => "Live"
|
|
1496
|
+
* })
|
|
1497
|
+
* )
|
|
1498
|
+
*
|
|
1499
|
+
* label("review") // => "In review"
|
|
1500
|
+
* ```
|
|
1501
|
+
*
|
|
1502
|
+
* @see {@link literals} for defining literal handlers without finalizing the matcher
|
|
1503
|
+
*
|
|
1504
|
+
* @stability unstable
|
|
1505
|
+
* @category defining patterns
|
|
1506
|
+
* @since 4.1.0
|
|
1507
|
+
*/
|
|
1508
|
+
export const literalsExhaustive: <
|
|
1509
|
+
R,
|
|
1510
|
+
Ret,
|
|
1511
|
+
P extends
|
|
1512
|
+
& LiteralHandlers<R, Ret>
|
|
1513
|
+
& { readonly [K in Exclude<keyof P, LiteralKeys<R>>]: never }
|
|
1514
|
+
>(
|
|
1515
|
+
fields: Contextual<P, LiteralHandlers<R, Ret>>
|
|
1516
|
+
) => <I, F, A, Pr>(
|
|
1517
|
+
self: Matcher<I, F, R, A, Pr, Ret>
|
|
1518
|
+
) => [Pr] extends [never] ? (u: I) => Unify<A | ReturnType<P[keyof P]>> : Unify<A | ReturnType<P[keyof P]>> =
|
|
1519
|
+
internal.literalsExhaustive
|
|
1520
|
+
|
|
1394
1521
|
/**
|
|
1395
1522
|
* Creates a pattern that excludes a specific value while allowing all others.
|
|
1396
1523
|
*
|
package/src/Metric.ts
CHANGED
|
@@ -576,7 +576,7 @@ export interface GaugeState<in Input extends number | bigint> {
|
|
|
576
576
|
* start: 1,
|
|
577
577
|
* factor: 2,
|
|
578
578
|
* count: 10
|
|
579
|
-
* }) // 1, 2, 4, 8, ...,
|
|
579
|
+
* }) // 1, 2, 4, 8, ..., 256, Infinity
|
|
580
580
|
* }
|
|
581
581
|
* )
|
|
582
582
|
*
|
|
@@ -696,8 +696,8 @@ export interface Histogram<Input> extends Metric<Input, HistogramState> {}
|
|
|
696
696
|
* totalRequests: state.count, // 5
|
|
697
697
|
* fastestResponse: state.min, // 50
|
|
698
698
|
* slowestResponse: state.max, // 750
|
|
699
|
-
* averageResponse: state.sum / state.count, //
|
|
700
|
-
* totalTime: state.sum, //
|
|
699
|
+
* averageResponse: state.sum / state.count, // 259
|
|
700
|
+
* totalTime: state.sum, // 1295
|
|
701
701
|
* distribution: bucketAnalysis
|
|
702
702
|
* // Example distribution:
|
|
703
703
|
* // [{ range: "0-100ms", count: 2, percentage: 40.0 },
|
package/src/MutableList.ts
CHANGED
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
* @stability stable
|
|
10
10
|
* @since 4.0.0
|
|
11
11
|
*/
|
|
12
|
-
import * as Arr from "./Array.ts"
|
|
13
12
|
import * as Count from "./internal/count.ts"
|
|
14
13
|
|
|
15
14
|
/**
|
|
@@ -259,7 +258,8 @@ export const prepend = <A>(self: MutableList<A>, message: A): void => {
|
|
|
259
258
|
/**
|
|
260
259
|
* Prepends all elements from an iterable to the beginning of the MutableList.
|
|
261
260
|
* The elements are added in order, so the first element in the iterable becomes
|
|
262
|
-
* the new head of the list.
|
|
261
|
+
* the new head of the list. The elements are copied, so the input can be reused
|
|
262
|
+
* afterward. Use `prependAllUnsafe` to transfer ownership of an array instead.
|
|
263
263
|
*
|
|
264
264
|
* **Example** (Prepending multiple elements)
|
|
265
265
|
*
|
|
@@ -279,7 +279,7 @@ export const prepend = <A>(self: MutableList<A>, message: A): void => {
|
|
|
279
279
|
* @since 4.0.0
|
|
280
280
|
*/
|
|
281
281
|
export const prependAll = <A>(self: MutableList<A>, messages: Iterable<A>): void =>
|
|
282
|
-
prependAllUnsafe(self,
|
|
282
|
+
prependAllUnsafe(self, Array.from(messages), true)
|
|
283
283
|
|
|
284
284
|
/**
|
|
285
285
|
* Prepends all elements from a ReadonlyArray to the beginning of the MutableList.
|
|
@@ -328,7 +328,9 @@ export const prependAllUnsafe = <A>(self: MutableList<A>, messages: ReadonlyArra
|
|
|
328
328
|
|
|
329
329
|
/**
|
|
330
330
|
* Appends all elements from an iterable to the end of the MutableList.
|
|
331
|
-
* Returns the number of elements added.
|
|
331
|
+
* Returns the number of elements added. The elements are copied, so the input
|
|
332
|
+
* can be reused afterward. Use `appendAllUnsafe` to transfer ownership of an
|
|
333
|
+
* array instead.
|
|
332
334
|
*
|
|
333
335
|
* **Example** (Appending multiple elements)
|
|
334
336
|
*
|
|
@@ -349,7 +351,7 @@ export const prependAllUnsafe = <A>(self: MutableList<A>, messages: ReadonlyArra
|
|
|
349
351
|
* @since 4.0.0
|
|
350
352
|
*/
|
|
351
353
|
export const appendAll = <A>(self: MutableList<A>, messages: Iterable<A>): number =>
|
|
352
|
-
appendAllUnsafe(self,
|
|
354
|
+
appendAllUnsafe(self, Array.from(messages), true)
|
|
353
355
|
|
|
354
356
|
/**
|
|
355
357
|
* Appends all elements from a ReadonlyArray to the end of the MutableList.
|
package/src/MutableRef.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import * as Equal from "./Equal.ts"
|
|
14
14
|
import * as Dual from "./Function.ts"
|
|
15
|
+
import * as Hash from "./Hash.ts"
|
|
15
16
|
import { type Inspectable, toJson } from "./Inspectable.ts"
|
|
16
17
|
import { PipeInspectableProto } from "./internal/core.ts"
|
|
17
18
|
import type { Pipeable } from "./Pipeable.ts"
|
|
@@ -74,9 +75,15 @@ export interface MutableRef<out T> extends Pipeable, Inspectable {
|
|
|
74
75
|
current: T
|
|
75
76
|
}
|
|
76
77
|
|
|
77
|
-
const MutableRefProto: Omit<MutableRef<unknown>, "current"> = {
|
|
78
|
+
const MutableRefProto: Omit<MutableRef<unknown>, "current"> & Equal.Equal = {
|
|
78
79
|
[TypeId]: TypeId,
|
|
79
80
|
...PipeInspectableProto,
|
|
81
|
+
[Equal.symbol](that: unknown): boolean {
|
|
82
|
+
return this === that
|
|
83
|
+
},
|
|
84
|
+
[Hash.symbol](): number {
|
|
85
|
+
return Hash.random(this)
|
|
86
|
+
},
|
|
80
87
|
toJSON<A>(this: MutableRef<A>) {
|
|
81
88
|
return {
|
|
82
89
|
_id: "MutableRef",
|
|
@@ -59,7 +59,8 @@ export type PartitionedTypeId = "~effect/PartitionedSemaphore"
|
|
|
59
59
|
*
|
|
60
60
|
* **Details**
|
|
61
61
|
*
|
|
62
|
-
*
|
|
62
|
+
* Waiters are served across partitions in round-robin order, completing each
|
|
63
|
+
* waiter's permit request before moving to the next partition.
|
|
63
64
|
*
|
|
64
65
|
* @stability unstable
|
|
65
66
|
* @category models
|
|
@@ -150,6 +151,7 @@ export const makeUnsafe = <K = unknown>(options: {
|
|
|
150
151
|
let iterator = partitions[Symbol.iterator]()
|
|
151
152
|
let releasing = false
|
|
152
153
|
let pendingPermits = 0
|
|
154
|
+
let partial: Waiter | undefined
|
|
153
155
|
|
|
154
156
|
const releaseUnsafe = (permits: number): number => {
|
|
155
157
|
if (permits > 0) {
|
|
@@ -162,26 +164,32 @@ export const makeUnsafe = <K = unknown>(options: {
|
|
|
162
164
|
releasing = true
|
|
163
165
|
try {
|
|
164
166
|
while (pendingPermits > 0 && waitingPermits > 0) {
|
|
165
|
-
let
|
|
166
|
-
if (
|
|
167
|
-
|
|
168
|
-
state = iterator.next()
|
|
167
|
+
let waiter = partial
|
|
168
|
+
if (waiter === undefined) {
|
|
169
|
+
let state = iterator.next()
|
|
169
170
|
if (state.done) {
|
|
170
|
-
|
|
171
|
+
iterator = partitions[Symbol.iterator]()
|
|
172
|
+
state = iterator.next()
|
|
173
|
+
if (state.done) {
|
|
174
|
+
break
|
|
175
|
+
}
|
|
171
176
|
}
|
|
172
|
-
}
|
|
173
177
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
178
|
+
waiter = state.value[1].values().next().value
|
|
179
|
+
if (waiter === undefined) {
|
|
180
|
+
continue
|
|
181
|
+
}
|
|
177
182
|
}
|
|
178
183
|
|
|
179
|
-
waiter.permits
|
|
180
|
-
|
|
181
|
-
|
|
184
|
+
const granted = Math.min(waiter.permits, pendingPermits)
|
|
185
|
+
waiter.permits -= granted
|
|
186
|
+
waitingPermits -= granted
|
|
187
|
+
pendingPermits -= granted
|
|
182
188
|
|
|
183
189
|
if (waiter.permits === 0) {
|
|
184
190
|
waiter.resume()
|
|
191
|
+
} else {
|
|
192
|
+
partial = waiter
|
|
185
193
|
}
|
|
186
194
|
}
|
|
187
195
|
} finally {
|
|
@@ -249,6 +257,9 @@ export const makeUnsafe = <K = unknown>(options: {
|
|
|
249
257
|
}
|
|
250
258
|
|
|
251
259
|
const cleanup = () => {
|
|
260
|
+
if (partial === entry) {
|
|
261
|
+
partial = undefined
|
|
262
|
+
}
|
|
252
263
|
if (waiters.delete(entry) && waiters.size === 0) {
|
|
253
264
|
MutableHashMap.remove(partitions, key)
|
|
254
265
|
}
|
package/src/Pool.ts
CHANGED
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
* @stability stable
|
|
11
11
|
* @since 2.0.0
|
|
12
12
|
*/
|
|
13
|
-
import type * as Cause from "./Cause.ts"
|
|
14
13
|
import { Clock } from "./Clock.ts"
|
|
15
14
|
import * as Context from "./Context.ts"
|
|
16
15
|
import * as Duration from "./Duration.ts"
|
|
@@ -23,7 +22,6 @@ import * as internal from "./internal/effect.ts"
|
|
|
23
22
|
import { type Pipeable, pipeArguments } from "./Pipeable.ts"
|
|
24
23
|
import { hasProperty } from "./Predicate.ts"
|
|
25
24
|
import * as Queue from "./Queue.ts"
|
|
26
|
-
import { UnhandledLogLevel } from "./References.ts"
|
|
27
25
|
import * as Scope from "./Scope.ts"
|
|
28
26
|
import * as Semaphore from "./Semaphore.ts"
|
|
29
27
|
|
|
@@ -96,6 +94,29 @@ export interface Config<A, E> {
|
|
|
96
94
|
readonly targetUtilization: number
|
|
97
95
|
}
|
|
98
96
|
|
|
97
|
+
/**
|
|
98
|
+
* A point-in-time count of a pool's items and waiting borrowers.
|
|
99
|
+
*
|
|
100
|
+
* **Details**
|
|
101
|
+
*
|
|
102
|
+
* `idle` and `used` count acquired items, not borrowers, so an item shared by
|
|
103
|
+
* several borrowers counts once. `pending` counts borrowers waiting for an
|
|
104
|
+
* item. `min` and `max` are the configured size bounds.
|
|
105
|
+
*
|
|
106
|
+
* @see {@link stats} for reading a snapshot
|
|
107
|
+
*
|
|
108
|
+
* @stability unstable
|
|
109
|
+
* @category models
|
|
110
|
+
* @since 4.0.0
|
|
111
|
+
*/
|
|
112
|
+
export interface Stats {
|
|
113
|
+
readonly idle: number
|
|
114
|
+
readonly used: number
|
|
115
|
+
readonly pending: number
|
|
116
|
+
readonly min: number
|
|
117
|
+
readonly max: number
|
|
118
|
+
}
|
|
119
|
+
|
|
99
120
|
/**
|
|
100
121
|
* Mutable runtime state maintained by a `Pool`.
|
|
101
122
|
*
|
|
@@ -463,7 +484,7 @@ export const get = <A, E>(self: Pool<A, E>): Effect.Effect<A, E, Scope.Scope> =>
|
|
|
463
484
|
core.withFiber((fiber) => {
|
|
464
485
|
const state = self.state
|
|
465
486
|
if (state.isShuttingDown) return internal.interrupt
|
|
466
|
-
if (state.availableHead?.exit._tag === "Success") {
|
|
487
|
+
if (state.waiters.size === 0 && state.availableHead?.exit._tag === "Success") {
|
|
467
488
|
state.usage++
|
|
468
489
|
if (self.config.isFixed || targetSize(self) <= activeSize(self)) {
|
|
469
490
|
return leaseItem(self, state.availableHead, fiber)
|
|
@@ -570,7 +591,7 @@ export const use: {
|
|
|
570
591
|
core.withFiber((fiber) => {
|
|
571
592
|
const state = self.state
|
|
572
593
|
if (state.isShuttingDown) return internal.interrupt
|
|
573
|
-
if (state.availableHead?.exit._tag === "Success") {
|
|
594
|
+
if (state.waiters.size === 0 && state.availableHead?.exit._tag === "Success") {
|
|
574
595
|
state.usage++
|
|
575
596
|
if (self.config.isFixed || targetSize(self) <= activeSize(self)) {
|
|
576
597
|
return useItem(self, state.availableHead, f, fiber)
|
|
@@ -611,12 +632,18 @@ const getSlowWith = <A, E, X, R>(
|
|
|
611
632
|
internal.uninterruptibleMask((restore) => {
|
|
612
633
|
const state = self.state
|
|
613
634
|
state.usage++
|
|
635
|
+
const waiter = makeWaiter<A, E>()
|
|
614
636
|
const wait: Effect.Effect<X, any, R> = internal.flatMap(
|
|
615
637
|
internal.onError(
|
|
616
|
-
restore(waitForItem(self)),
|
|
638
|
+
restore(waitForItem(self, waiter)),
|
|
617
639
|
() =>
|
|
618
|
-
|
|
640
|
+
core.withFiber((fiber) => {
|
|
619
641
|
state.usage--
|
|
642
|
+
// Only a woken waiter is still registered here: one cancelled while
|
|
643
|
+
// asleep already left. It passes its wake on, so the capacity it was
|
|
644
|
+
// woken for is not stranded.
|
|
645
|
+
if (state.waiters.delete(waiter)) wakeWaiters(self, fiber, 1)
|
|
646
|
+
return internal.void
|
|
620
647
|
})
|
|
621
648
|
),
|
|
622
649
|
() => loop
|
|
@@ -626,6 +653,12 @@ const getSlowWith = <A, E, X, R>(
|
|
|
626
653
|
state.usage--
|
|
627
654
|
return internal.interrupt
|
|
628
655
|
}
|
|
656
|
+
// A borrower that has not waited yet queues behind the borrowers already
|
|
657
|
+
// waiting. Waiters keep their place until they take an item, so this
|
|
658
|
+
// also holds while a woken waiter has yet to run.
|
|
659
|
+
if (state.waiters.size > 0 && !state.waiters.has(waiter)) {
|
|
660
|
+
return wait
|
|
661
|
+
}
|
|
629
662
|
// Replace failed slots only when the pool cannot grow.
|
|
630
663
|
const item = firstHealthyAvailable(self) ??
|
|
631
664
|
(targetSize(self) <= activeSize(self) ? state.availableHead : undefined)
|
|
@@ -636,6 +669,7 @@ const getSlowWith = <A, E, X, R>(
|
|
|
636
669
|
removeFailedItem(self, item)
|
|
637
670
|
return loop
|
|
638
671
|
}
|
|
672
|
+
state.waiters.delete(waiter)
|
|
639
673
|
return lease(self, item, fiber, restore)
|
|
640
674
|
})
|
|
641
675
|
const loop: Effect.Effect<X, any, R> = internal.suspend(() => {
|
|
@@ -718,19 +752,49 @@ const firstHealthyAvailable = <A, E>(self: Pool<A, E>): PoolItem<A, E> | undefin
|
|
|
718
752
|
return item
|
|
719
753
|
}
|
|
720
754
|
|
|
721
|
-
|
|
755
|
+
/**
|
|
756
|
+
* A borrower's entry in `State.waiters`. It stays registered from the first
|
|
757
|
+
* wait until the borrower takes an item or leaves, so the borrower keeps its
|
|
758
|
+
* place in the queue across wakes.
|
|
759
|
+
*
|
|
760
|
+
* `resume` is set while the borrower is asleep. A registered waiter without
|
|
761
|
+
* one has been woken and has yet to take an item, wait again or leave.
|
|
762
|
+
*/
|
|
763
|
+
interface Waiter<A, E> {
|
|
764
|
+
(failure?: Exit.Failure<A, E>): void
|
|
765
|
+
resume: ((effect: Effect.Effect<void, E>) => void) | undefined
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
const makeWaiter = <A, E>(): Waiter<A, E> => {
|
|
769
|
+
const waiter = ((failure?: Exit.Failure<A, E>) => {
|
|
770
|
+
const resume = waiter.resume
|
|
771
|
+
if (resume === undefined) return
|
|
772
|
+
waiter.resume = undefined
|
|
773
|
+
resume(failure ?? internal.void)
|
|
774
|
+
}) as Waiter<A, E>
|
|
775
|
+
waiter.resume = undefined
|
|
776
|
+
return waiter
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
const waitForItem = <A, E>(self: Pool<A, E>, waiter: Waiter<A, E>): Effect.Effect<void, E> =>
|
|
722
780
|
internal.callback((resume) => {
|
|
723
781
|
const state = self.state
|
|
724
|
-
if (
|
|
782
|
+
if (
|
|
783
|
+
state.isShuttingDown ||
|
|
784
|
+
(state.waiters.size === 0 && firstHealthyAvailable(self) !== undefined)
|
|
785
|
+
) {
|
|
725
786
|
return resume(internal.void)
|
|
726
787
|
}
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
}
|
|
731
|
-
state.waiters.add(observer)
|
|
788
|
+
waiter.resume = resume
|
|
789
|
+
// Re-adding a registered waiter keeps its position.
|
|
790
|
+
state.waiters.add(waiter)
|
|
732
791
|
return internal.sync(() => {
|
|
733
|
-
|
|
792
|
+
// Cancelled while asleep: leave at once, so no wake or failure is spent
|
|
793
|
+
// on it. Cancelled after a wake: stay until the wake is passed on.
|
|
794
|
+
if (waiter.resume !== undefined) {
|
|
795
|
+
waiter.resume = undefined
|
|
796
|
+
state.waiters.delete(waiter)
|
|
797
|
+
}
|
|
734
798
|
})
|
|
735
799
|
})
|
|
736
800
|
|
|
@@ -738,23 +802,36 @@ const wakeWaiters = <A, E>(self: Pool<A, E>, fiber: Fiber.Fiber<unknown, unknown
|
|
|
738
802
|
const waiters = self.state.waiters
|
|
739
803
|
if (waiters.size === 0) return
|
|
740
804
|
fiber.currentDispatcher.scheduleTask(() => {
|
|
805
|
+
// Walk the live set, so a waiter that leaves during the walk does not use
|
|
806
|
+
// up a wake. Skip waiters already woken, and stop once nothing is left to
|
|
807
|
+
// take.
|
|
741
808
|
let remaining = count
|
|
742
|
-
const toWake: Array<(failure?: Exit.Failure<A, E>) => void> = []
|
|
743
809
|
for (const notify of waiters) {
|
|
744
|
-
if (remaining
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
toWake[i]()
|
|
810
|
+
if (remaining <= 0 || self.state.availableHead === undefined) break
|
|
811
|
+
if ((notify as Waiter<A, E>).resume === undefined) continue
|
|
812
|
+
remaining--
|
|
813
|
+
notify()
|
|
749
814
|
}
|
|
750
815
|
}, 0)
|
|
751
816
|
}
|
|
752
817
|
|
|
753
|
-
const
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
818
|
+
const firstSleepingWaiter = <A, E>(self: Pool<A, E>) => {
|
|
819
|
+
for (const notify of self.state.waiters) {
|
|
820
|
+
if ((notify as Waiter<A, E>).resume !== undefined) return notify
|
|
821
|
+
}
|
|
822
|
+
return undefined
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
// Wakes every waiter so it can retry after a failed acquisition. A waiter that
|
|
826
|
+
// could not start a resize while another was running depends on this. Waking
|
|
827
|
+
// a waiter that is already awake is a no-op.
|
|
828
|
+
const wakeAll = <A, E>(self: Pool<A, E>, fiber: Fiber.Fiber<unknown, unknown>) => {
|
|
829
|
+
const waiters = self.state.waiters
|
|
830
|
+
if (waiters.size === 0) return
|
|
831
|
+
fiber.currentDispatcher.scheduleTask(() => {
|
|
832
|
+
for (const notify of Array.from(waiters)) notify()
|
|
833
|
+
}, 0)
|
|
834
|
+
}
|
|
758
835
|
|
|
759
836
|
// Reservations prevent reuse without extending the lifetime of borrowed items.
|
|
760
837
|
const reservations = new WeakMap<PoolItem<unknown, unknown>, number>()
|
|
@@ -970,6 +1047,52 @@ export const reserve: {
|
|
|
970
1047
|
))
|
|
971
1048
|
)
|
|
972
1049
|
|
|
1050
|
+
/**
|
|
1051
|
+
* Returns a snapshot of how many items are idle or in use and how many
|
|
1052
|
+
* borrowers are waiting.
|
|
1053
|
+
*
|
|
1054
|
+
* **When to use**
|
|
1055
|
+
*
|
|
1056
|
+
* Use to sample pool occupancy for metrics, such as connection counts for a
|
|
1057
|
+
* database driver.
|
|
1058
|
+
*
|
|
1059
|
+
* **Details**
|
|
1060
|
+
*
|
|
1061
|
+
* - Only successfully acquired items are counted. Items still being acquired
|
|
1062
|
+
* and failed acquisitions are not.
|
|
1063
|
+
* - An item is used while it has a borrower or a reservation, otherwise idle.
|
|
1064
|
+
* - An invalidated item counts as used until its last borrower returns it.
|
|
1065
|
+
*
|
|
1066
|
+
* **Gotchas**
|
|
1067
|
+
*
|
|
1068
|
+
* The replacement for an invalidated item is acquired while the old one is
|
|
1069
|
+
* still borrowed, so `idle + used` can briefly exceed `max`. A borrower that
|
|
1070
|
+
* has been woken but has not yet taken its item is not counted as pending.
|
|
1071
|
+
*
|
|
1072
|
+
* @see {@link Stats} for the snapshot fields
|
|
1073
|
+
*
|
|
1074
|
+
* @stability unstable
|
|
1075
|
+
* @category getters
|
|
1076
|
+
* @since 4.0.0
|
|
1077
|
+
*/
|
|
1078
|
+
export const stats = <A, E>(self: Pool<A, E>): Effect.Effect<Stats> =>
|
|
1079
|
+
Effect.sync(() => {
|
|
1080
|
+
let idle = 0
|
|
1081
|
+
let used = 0
|
|
1082
|
+
for (const item of self.state.items) {
|
|
1083
|
+
if (item.exit._tag !== "Success") continue
|
|
1084
|
+
if (item.refCount > 0 || reservations.has(item)) used++
|
|
1085
|
+
else idle++
|
|
1086
|
+
}
|
|
1087
|
+
return {
|
|
1088
|
+
idle,
|
|
1089
|
+
used,
|
|
1090
|
+
pending: self.state.waiters.size,
|
|
1091
|
+
min: self.config.minSize,
|
|
1092
|
+
max: self.config.maxSize
|
|
1093
|
+
}
|
|
1094
|
+
})
|
|
1095
|
+
|
|
973
1096
|
const invalidatePoolItem = <A, E>(self: Pool<A, E>, poolItem: PoolItem<A, E>): Effect.Effect<void> =>
|
|
974
1097
|
Effect.suspend(() => {
|
|
975
1098
|
if (!self.state.items.has(poolItem)) {
|
|
@@ -1005,22 +1128,38 @@ const resizeLoop = <A, E>(self: Pool<A, E>): Effect.Effect<void> =>
|
|
|
1005
1128
|
return Effect.void
|
|
1006
1129
|
}
|
|
1007
1130
|
const toAcquire = target - active
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1131
|
+
// Wake waiters as each item arrives. Waiting for the whole batch would
|
|
1132
|
+
// leave acquired items idle behind a slow acquisition, with every borrower
|
|
1133
|
+
// queued behind the waiters.
|
|
1134
|
+
const acquireOne = Effect.tap(
|
|
1135
|
+
self.config.strategy === strategyNoop
|
|
1136
|
+
? allocate(self)
|
|
1137
|
+
: Effect.flatMap(
|
|
1138
|
+
self.config.strategy.reclaim(self),
|
|
1139
|
+
(item) =>
|
|
1140
|
+
item
|
|
1141
|
+
? Effect.sync(() => {
|
|
1142
|
+
// A reclaimed item rejoins circulation like a released one.
|
|
1143
|
+
if (self.state.items.has(item) && !self.state.invalidated.has(item)) addAvailableFront(self, item)
|
|
1144
|
+
return item
|
|
1145
|
+
})
|
|
1146
|
+
: allocate(self)
|
|
1147
|
+
),
|
|
1148
|
+
(item) =>
|
|
1149
|
+
core.withFiber((fiber) => {
|
|
1150
|
+
// A failed acquisition wakes everyone so they can retry it. A new
|
|
1151
|
+
// item can only serve as many waiters as it has slots.
|
|
1152
|
+
if (item.exit._tag === "Failure") wakeAll(self, fiber)
|
|
1153
|
+
else wakeWaiters(self, fiber, self.config.concurrency)
|
|
1154
|
+
return internal.void
|
|
1155
|
+
})
|
|
1156
|
+
)
|
|
1014
1157
|
if (toAcquire === 1) {
|
|
1015
|
-
const acquired = Effect.tap(acquireOne, wakeAll(self))
|
|
1016
1158
|
return self.config.isFixed
|
|
1017
|
-
? Effect.asVoid(
|
|
1018
|
-
: Effect.flatMap(
|
|
1159
|
+
? Effect.asVoid(acquireOne)
|
|
1160
|
+
: Effect.flatMap(acquireOne, (item) => item.exit._tag === "Failure" ? Effect.void : resizeLoop(self))
|
|
1019
1161
|
}
|
|
1020
|
-
const acquired =
|
|
1021
|
-
Effect.replicateEffect(toAcquire, { concurrency: toAcquire }),
|
|
1022
|
-
Effect.tap(wakeAll(self))
|
|
1023
|
-
)
|
|
1162
|
+
const acquired = Effect.replicateEffect(acquireOne, toAcquire, { concurrency: toAcquire })
|
|
1024
1163
|
return self.config.isFixed
|
|
1025
1164
|
? Effect.asVoid(acquired)
|
|
1026
1165
|
: Effect.flatMap(
|
|
@@ -1039,7 +1178,10 @@ const allocate = <A, E>(self: Pool<A, E>): Effect.Effect<PoolItem<A, E>> =>
|
|
|
1039
1178
|
const use = Effect.flatMap(Effect.exit(impl[Acquire]), (exit) => {
|
|
1040
1179
|
const item: PoolItem<A, E> = {
|
|
1041
1180
|
exit,
|
|
1042
|
-
finalizer: Effect.
|
|
1181
|
+
finalizer: Effect.ignoreCause(Scope.close(scope, exit), {
|
|
1182
|
+
log: "Unhandled",
|
|
1183
|
+
message: "Unhandled error in pool finalizer"
|
|
1184
|
+
}),
|
|
1043
1185
|
refCount: 0,
|
|
1044
1186
|
idleSince: impl[PoolClock].currentTimeMillisUnsafe(),
|
|
1045
1187
|
disableReclaim: false,
|
|
@@ -1059,7 +1201,7 @@ const allocate = <A, E>(self: Pool<A, E>): Effect.Effect<PoolItem<A, E>> =>
|
|
|
1059
1201
|
return self.config.strategy === strategyNoop ? Effect.succeed(item) : Effect.as(onAcquire, item)
|
|
1060
1202
|
}
|
|
1061
1203
|
// Deliver a waiting borrower its own failure; otherwise retain the slot.
|
|
1062
|
-
const waiter = firstHealthyAvailable(self) === undefined ? self
|
|
1204
|
+
const waiter = firstHealthyAvailable(self) === undefined ? firstSleepingWaiter(self) : undefined
|
|
1063
1205
|
if (waiter !== undefined) {
|
|
1064
1206
|
waiter(exit)
|
|
1065
1207
|
} else {
|
|
@@ -1163,15 +1305,3 @@ const strategyUsageTTL = Effect.fnUntraced(function*<A, E>(ttl: Duration.Input)
|
|
|
1163
1305
|
reclaim: (_) => Effect.undefined
|
|
1164
1306
|
})
|
|
1165
1307
|
})
|
|
1166
|
-
|
|
1167
|
-
const reportUnhandledError = <E>(cause: Cause.Cause<E>) =>
|
|
1168
|
-
Effect.withFiber<void>((fiber) => {
|
|
1169
|
-
const unhandledLogLevel = fiber.getRef(UnhandledLogLevel)
|
|
1170
|
-
if (unhandledLogLevel) {
|
|
1171
|
-
return Effect.logWithLevel(unhandledLogLevel)(
|
|
1172
|
-
"Unhandled error in pool finalizer",
|
|
1173
|
-
cause
|
|
1174
|
-
)
|
|
1175
|
-
}
|
|
1176
|
-
return Effect.void
|
|
1177
|
-
})
|
package/src/PubSub.ts
CHANGED
|
@@ -3129,14 +3129,13 @@ export class BackPressureStrategy<in out A> implements PubSub.Strategy<A> {
|
|
|
3129
3129
|
if (publisher === MutableList.Empty) {
|
|
3130
3130
|
keepPolling = false
|
|
3131
3131
|
} else {
|
|
3132
|
-
const [value, deferred] = publisher
|
|
3132
|
+
const [value, deferred, last] = publisher
|
|
3133
3133
|
const published = pubsub.publish(value)
|
|
3134
|
-
if (published
|
|
3135
|
-
Deferred.doneUnsafe(deferred, Exit.succeed(true))
|
|
3136
|
-
} else if (!published) {
|
|
3137
|
-
MutableList.prepend(this.publishers, publisher)
|
|
3138
|
-
}
|
|
3134
|
+
if (!published) MutableList.prepend(this.publishers, publisher)
|
|
3139
3135
|
this.completeSubscribersUnsafe(pubsub, subscribers)
|
|
3136
|
+
// Resuming the publisher can synchronously end the PubSub, so notify
|
|
3137
|
+
// waiting subscribers first.
|
|
3138
|
+
if (published && last) Deferred.doneUnsafe(deferred, Exit.succeed(true))
|
|
3140
3139
|
}
|
|
3141
3140
|
}
|
|
3142
3141
|
}
|