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
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key agreement: X25519, and ECDH on P-256, P-384 and P-521.
|
|
3
|
+
*
|
|
4
|
+
* The {@link KeyAgreement} service generates key pairs, derives a shared
|
|
5
|
+
* secret from a private key and a peer's public key, and computes a private
|
|
6
|
+
* key's public key. The top-level {@link privateKey}, {@link publicKey},
|
|
7
|
+
* {@link privateKeyFromCryptoKey}, {@link publicKeyFromCryptoKey}, and
|
|
8
|
+
* {@link toBytes} functions build and export keys without a service.
|
|
9
|
+
*
|
|
10
|
+
* Keys carry their algorithm in their type, so deriving a secret from keys on
|
|
11
|
+
* different curves is a type error. The shared secret is plain bytes: pass it
|
|
12
|
+
* through `Kdf` before using it as a key.
|
|
13
|
+
*
|
|
14
|
+
* Keys are opaque. They hold either bytes or a `CryptoKey`, display only their
|
|
15
|
+
* algorithm, and compare by reference. The bytes are:
|
|
16
|
+
*
|
|
17
|
+
* - X25519: the 32-byte private key and the 32-byte public key;
|
|
18
|
+
* - ECDH: PKCS#8 for private keys, and the uncompressed SEC1 point for public
|
|
19
|
+
* keys.
|
|
20
|
+
*
|
|
21
|
+
* Only X25519 private keys and X25519 and ECDH public keys have a raw
|
|
22
|
+
* constructor. ECDH private keys come from
|
|
23
|
+
* `KeyAgreement.generateKeyPair`, `CryptoKey`s, or key formats.
|
|
24
|
+
*
|
|
25
|
+
* **Gotchas**
|
|
26
|
+
*
|
|
27
|
+
* - X25519 needs Chrome 133, Firefox 130, or Safari 17. There is no fallback
|
|
28
|
+
* for older browsers.
|
|
29
|
+
* - X25519 private keys are generated from `SecureRandom` bytes, so a seeded
|
|
30
|
+
* `SecureRandom` reproduces them. ECDH key generation uses WebCrypto's own
|
|
31
|
+
* randomness and cannot be seeded.
|
|
32
|
+
*
|
|
33
|
+
* @stability unstable
|
|
34
|
+
* @since 4.0.0
|
|
35
|
+
*/
|
|
36
|
+
import * as Context from "../Context.js";
|
|
37
|
+
import * as Effect from "../Effect.js";
|
|
38
|
+
import * as Layer from "../Layer.js";
|
|
39
|
+
import * as Predicate from "../Predicate.js";
|
|
40
|
+
import * as CryptoError from "./CryptoError.js";
|
|
41
|
+
import * as Asymmetric from "./internal/asymmetric.js";
|
|
42
|
+
import * as KeyModel from "./internal/key.js";
|
|
43
|
+
import * as internal from "./internal/webCrypto.js";
|
|
44
|
+
import * as SecureRandom from "./SecureRandom.js";
|
|
45
|
+
import { WebCrypto } from "./WebCrypto.js";
|
|
46
|
+
const PrivateKeyTypeId = "~effect/crypto/KeyAgreement/PrivateKey";
|
|
47
|
+
const PublicKeyTypeId = "~effect/crypto/KeyAgreement/PublicKey";
|
|
48
|
+
/**
|
|
49
|
+
* X25519 (RFC 7748).
|
|
50
|
+
*
|
|
51
|
+
* @stability unstable
|
|
52
|
+
* @category algorithms
|
|
53
|
+
* @since 4.0.0
|
|
54
|
+
*/
|
|
55
|
+
export const x25519 = {
|
|
56
|
+
_tag: "X25519",
|
|
57
|
+
name: "x25519"
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* ECDH on P-256, with 32-byte shared secrets.
|
|
61
|
+
*
|
|
62
|
+
* @stability unstable
|
|
63
|
+
* @category algorithms
|
|
64
|
+
* @since 4.0.0
|
|
65
|
+
*/
|
|
66
|
+
export const ecdhP256 = {
|
|
67
|
+
_tag: "Ecdh",
|
|
68
|
+
name: "ecdhP256",
|
|
69
|
+
namedCurve: "P-256"
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* ECDH on P-384, with 48-byte shared secrets.
|
|
73
|
+
*
|
|
74
|
+
* @stability unstable
|
|
75
|
+
* @category algorithms
|
|
76
|
+
* @since 4.0.0
|
|
77
|
+
*/
|
|
78
|
+
export const ecdhP384 = {
|
|
79
|
+
_tag: "Ecdh",
|
|
80
|
+
name: "ecdhP384",
|
|
81
|
+
namedCurve: "P-384"
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* ECDH on P-521, with 66-byte shared secrets.
|
|
85
|
+
*
|
|
86
|
+
* @stability unstable
|
|
87
|
+
* @category algorithms
|
|
88
|
+
* @since 4.0.0
|
|
89
|
+
*/
|
|
90
|
+
export const ecdhP521 = {
|
|
91
|
+
_tag: "Ecdh",
|
|
92
|
+
name: "ecdhP521",
|
|
93
|
+
namedCurve: "P-521"
|
|
94
|
+
};
|
|
95
|
+
const PrivateKeyProto = /*#__PURE__*/KeyModel.redactedProto(PrivateKeyTypeId, "KeyAgreement.PrivateKey");
|
|
96
|
+
const PublicKeyProto = /*#__PURE__*/KeyModel.redactedProto(PublicKeyTypeId, "KeyAgreement.PublicKey");
|
|
97
|
+
/**
|
|
98
|
+
* Checks whether a value is a {@link PrivateKey}.
|
|
99
|
+
*
|
|
100
|
+
* @stability unstable
|
|
101
|
+
* @category guards
|
|
102
|
+
* @since 4.0.0
|
|
103
|
+
*/
|
|
104
|
+
export const isPrivateKey = u => Predicate.hasProperty(u, PrivateKeyTypeId);
|
|
105
|
+
/**
|
|
106
|
+
* Checks whether a value is a {@link PublicKey}.
|
|
107
|
+
*
|
|
108
|
+
* @stability unstable
|
|
109
|
+
* @category guards
|
|
110
|
+
* @since 4.0.0
|
|
111
|
+
*/
|
|
112
|
+
export const isPublicKey = u => Predicate.hasProperty(u, PublicKeyTypeId);
|
|
113
|
+
const specOf = algorithm => algorithm._tag === "X25519" ? {
|
|
114
|
+
name: "X25519",
|
|
115
|
+
importParams: {
|
|
116
|
+
name: "X25519"
|
|
117
|
+
},
|
|
118
|
+
privateUsages: ["deriveBits"],
|
|
119
|
+
publicUsages: [],
|
|
120
|
+
seedPrefix: Asymmetric.x25519Prefix,
|
|
121
|
+
publicFormat: "raw"
|
|
122
|
+
} : {
|
|
123
|
+
name: "ECDH",
|
|
124
|
+
importParams: {
|
|
125
|
+
name: "ECDH",
|
|
126
|
+
namedCurve: algorithm.namedCurve
|
|
127
|
+
},
|
|
128
|
+
privateUsages: ["deriveBits"],
|
|
129
|
+
publicUsages: [],
|
|
130
|
+
seedPrefix: undefined,
|
|
131
|
+
publicFormat: "raw",
|
|
132
|
+
check: Asymmetric.checkNamedCurve(algorithm.namedCurve)
|
|
133
|
+
};
|
|
134
|
+
/** @internal */
|
|
135
|
+
export const family = {
|
|
136
|
+
module: "KeyAgreement",
|
|
137
|
+
specOf,
|
|
138
|
+
privateKeyProto: PrivateKeyProto,
|
|
139
|
+
publicKeyProto: PublicKeyProto,
|
|
140
|
+
isPrivateKey
|
|
141
|
+
};
|
|
142
|
+
// P-521 coordinates are 521 bits, padded to 66 bytes.
|
|
143
|
+
const sharedSecretBits = algorithm => algorithm._tag === "X25519" ? 256 : 8 * Asymmetric.coordinateSizes[algorithm.namedCurve];
|
|
144
|
+
const invalidPeer = (description, cause) => new CryptoError.CryptoError({
|
|
145
|
+
module: "KeyAgreement",
|
|
146
|
+
method: "deriveSharedSecret",
|
|
147
|
+
reason: new CryptoError.InvalidKey(cause === undefined ? {
|
|
148
|
+
description
|
|
149
|
+
} : {
|
|
150
|
+
description,
|
|
151
|
+
cause
|
|
152
|
+
})
|
|
153
|
+
});
|
|
154
|
+
/**
|
|
155
|
+
* Service that generates key pairs, derives shared secrets, and computes
|
|
156
|
+
* public keys.
|
|
157
|
+
*
|
|
158
|
+
* **Example** (Agreeing on a secret with X25519)
|
|
159
|
+
*
|
|
160
|
+
* ```ts import.meta.vitest
|
|
161
|
+
* import { Effect, Layer } from "effect"
|
|
162
|
+
* import { KeyAgreement, SecureRandom } from "effect/crypto"
|
|
163
|
+
*
|
|
164
|
+
* const program = Effect.gen(function*() {
|
|
165
|
+
* const keyAgreement = yield* KeyAgreement.KeyAgreement
|
|
166
|
+
* const alice = yield* keyAgreement.generateKeyPair(KeyAgreement.x25519)
|
|
167
|
+
* const bob = yield* keyAgreement.generateKeyPair(KeyAgreement.x25519)
|
|
168
|
+
* const aliceSecret = yield* keyAgreement.deriveSharedSecret(alice.privateKey, bob.publicKey)
|
|
169
|
+
* const bobSecret = yield* keyAgreement.deriveSharedSecret(bob.privateKey, alice.publicKey)
|
|
170
|
+
* return aliceSecret.every((byte, i) => byte === bobSecret[i])
|
|
171
|
+
* })
|
|
172
|
+
*
|
|
173
|
+
* const layer = KeyAgreement.layerWebCrypto.pipe(Layer.provide(SecureRandom.layerWebCrypto))
|
|
174
|
+
* await Effect.runPromise(program.pipe(Effect.provide(layer))) // => true
|
|
175
|
+
* ```
|
|
176
|
+
*
|
|
177
|
+
* @stability unstable
|
|
178
|
+
* @category services
|
|
179
|
+
* @since 4.0.0
|
|
180
|
+
*/
|
|
181
|
+
export class KeyAgreement extends /*#__PURE__*/Context.Service()("effect/crypto/KeyAgreement") {}
|
|
182
|
+
/**
|
|
183
|
+
* Layer that provides `KeyAgreement` on the `WebCrypto` reference.
|
|
184
|
+
*
|
|
185
|
+
* **Details**
|
|
186
|
+
*
|
|
187
|
+
* Every algorithm runs on `crypto.subtle`. The layer imports a byte-backed
|
|
188
|
+
* key on first use and caches the `CryptoKey`. X25519 private keys come from
|
|
189
|
+
* `SecureRandom`, so a seeded `SecureRandom` reproduces them.
|
|
190
|
+
*
|
|
191
|
+
* @stability unstable
|
|
192
|
+
* @category layers
|
|
193
|
+
* @since 4.0.0
|
|
194
|
+
*/
|
|
195
|
+
export const layerWebCrypto = /*#__PURE__*/Layer.effect(KeyAgreement, /*#__PURE__*/Effect.gen(function* () {
|
|
196
|
+
const random = yield* SecureRandom.SecureRandom;
|
|
197
|
+
const crypto = yield* WebCrypto;
|
|
198
|
+
const caches = Asymmetric.makeCaches(family);
|
|
199
|
+
return KeyAgreement.of({
|
|
200
|
+
generateKeyPair: algorithm => Asymmetric.generateKeyPair(family, crypto, random, algorithm, specOf(algorithm).importParams),
|
|
201
|
+
deriveSharedSecret: (privateKey, publicKey) => Effect.suspend(() => {
|
|
202
|
+
const algorithm = privateKey.algorithm;
|
|
203
|
+
// The types keep curves apart, but keys typed with the default
|
|
204
|
+
// `Algorithm` can still differ at run time.
|
|
205
|
+
if (algorithm.name !== publicKey.algorithm.name) {
|
|
206
|
+
return Effect.fail(invalidPeer(`Expected a ${algorithm.name} public key, not ${publicKey.algorithm.name}`));
|
|
207
|
+
}
|
|
208
|
+
const onError = cause => Asymmetric.publicKeyError("KeyAgreement", "deriveSharedSecret", publicKey, cause);
|
|
209
|
+
// The keys are imported before deriving, so an `OperationError` from
|
|
210
|
+
// `deriveBits` can only come from the peer key.
|
|
211
|
+
return internal.run("KeyAgreement", "deriveSharedSecret", algorithm.name, crypto, async subtle => ({
|
|
212
|
+
privateKey: await caches.privateKey(subtle, privateKey),
|
|
213
|
+
publicKey: await caches.publicKey(subtle, publicKey)
|
|
214
|
+
}), onError).pipe(Effect.flatMap(keys => internal.run("KeyAgreement", "deriveSharedSecret", algorithm.name, crypto, async subtle => new Uint8Array(await subtle.deriveBits({
|
|
215
|
+
name: specOf(algorithm).name,
|
|
216
|
+
public: keys.publicKey
|
|
217
|
+
}, keys.privateKey, sharedSecretBits(algorithm))), cause => internal.isOperationError(cause) ? invalidPeer("Invalid peer public key", cause) : onError(cause))), Effect.flatMap(secret =>
|
|
218
|
+
// RFC 7748, section 6.1: an all-zero X25519 output means the peer
|
|
219
|
+
// sent a low-order point, and protocols such as SSH must abort.
|
|
220
|
+
algorithm._tag === "X25519" && secret.every(byte => byte === 0) ? Effect.fail(invalidPeer("X25519 shared secret must not be all zeros")) : Effect.succeed(secret)));
|
|
221
|
+
}),
|
|
222
|
+
publicKeyOf: privateKey => Asymmetric.publicKeyOf(family, crypto, privateKey)
|
|
223
|
+
});
|
|
224
|
+
}));
|
|
225
|
+
/**
|
|
226
|
+
* Builds an X25519 private key from its 32 bytes.
|
|
227
|
+
*
|
|
228
|
+
* **Details**
|
|
229
|
+
*
|
|
230
|
+
* The bytes are copied. Another length fails with an `InvalidKey` reason,
|
|
231
|
+
* including the 64-byte `private key‖public key` form libsodium uses: pass
|
|
232
|
+
* its first 32 bytes. ECDH private keys have no raw form, so passing them is
|
|
233
|
+
* a type error.
|
|
234
|
+
*
|
|
235
|
+
* @stability unstable
|
|
236
|
+
* @category constructors
|
|
237
|
+
* @since 4.0.0
|
|
238
|
+
*/
|
|
239
|
+
export const privateKey = (algorithm, bytes) => KeyModel.fromBytes("KeyAgreement", "privateKey", PrivateKeyProto, algorithm, bytes, Asymmetric.checkSeedLength("X25519", "private"));
|
|
240
|
+
/**
|
|
241
|
+
* Builds a public key from its raw form: 32 bytes for X25519, or an
|
|
242
|
+
* uncompressed SEC1 point for ECDH.
|
|
243
|
+
*
|
|
244
|
+
* **Details**
|
|
245
|
+
*
|
|
246
|
+
* The bytes are copied. A wrong length, or a compressed point, fails with an
|
|
247
|
+
* `InvalidKey` reason. Only uncompressed points are taken because Safari and
|
|
248
|
+
* Firefox before 146 reject compressed ones in raw import, though they accept
|
|
249
|
+
* them inside SPKI: decode a compressed point with `KeyFormat.spki`. Whether a
|
|
250
|
+
* point is on the curve is checked when the key is first used.
|
|
251
|
+
*
|
|
252
|
+
* @stability unstable
|
|
253
|
+
* @category constructors
|
|
254
|
+
* @since 4.0.0
|
|
255
|
+
*/
|
|
256
|
+
export const publicKey = (algorithm, bytes) => KeyModel.fromBytes("KeyAgreement", "publicKey", PublicKeyProto, algorithm, bytes, algorithm._tag === "Ecdh" ? Asymmetric.checkPoint(algorithm.namedCurve) : Asymmetric.checkSeedLength("X25519", "public"));
|
|
257
|
+
/**
|
|
258
|
+
* Builds a private key from an existing `CryptoKey`, such as a
|
|
259
|
+
* non-extractable one.
|
|
260
|
+
*
|
|
261
|
+
* **Details**
|
|
262
|
+
*
|
|
263
|
+
* The `CryptoKey` must be a private key of the algorithm's WebCrypto name and
|
|
264
|
+
* curve, with the `deriveBits` usage. Otherwise the constructor fails with an
|
|
265
|
+
* `InvalidKey` reason. The key must come from the `Crypto` object of the
|
|
266
|
+
* `WebCrypto` reference.
|
|
267
|
+
*
|
|
268
|
+
* @stability unstable
|
|
269
|
+
* @category constructors
|
|
270
|
+
* @since 4.0.0
|
|
271
|
+
*/
|
|
272
|
+
export const privateKeyFromCryptoKey = (algorithm, cryptoKey) => Asymmetric.fromCryptoKey(family, "privateKeyFromCryptoKey", algorithm, "private", cryptoKey);
|
|
273
|
+
/**
|
|
274
|
+
* Builds a public key from an existing `CryptoKey`.
|
|
275
|
+
*
|
|
276
|
+
* **Details**
|
|
277
|
+
*
|
|
278
|
+
* The `CryptoKey` must be a public key of the algorithm's WebCrypto name and
|
|
279
|
+
* curve. Public keys need no usages. Otherwise the constructor fails with an
|
|
280
|
+
* `InvalidKey` reason. The key must come from the `Crypto` object of the
|
|
281
|
+
* `WebCrypto` reference.
|
|
282
|
+
*
|
|
283
|
+
* @stability unstable
|
|
284
|
+
* @category constructors
|
|
285
|
+
* @since 4.0.0
|
|
286
|
+
*/
|
|
287
|
+
export const publicKeyFromCryptoKey = (algorithm, cryptoKey) => Asymmetric.fromCryptoKey(family, "publicKeyFromCryptoKey", algorithm, "public", cryptoKey);
|
|
288
|
+
/**
|
|
289
|
+
* Exports a key's stored bytes.
|
|
290
|
+
*
|
|
291
|
+
* **Details**
|
|
292
|
+
*
|
|
293
|
+
* Returns a fresh `Uint8Array`: the raw key for X25519, and PKCS#8 or the
|
|
294
|
+
* uncompressed point for ECDH. A `CryptoKey`-backed key is exported on the
|
|
295
|
+
* `WebCrypto` reference, and fails with a `NotExtractable` reason when the
|
|
296
|
+
* `CryptoKey` is not extractable.
|
|
297
|
+
*
|
|
298
|
+
* @stability unstable
|
|
299
|
+
* @category converting
|
|
300
|
+
* @since 4.0.0
|
|
301
|
+
*/
|
|
302
|
+
export const toBytes = key => Asymmetric.toBytes(family, key);
|
|
303
|
+
//# sourceMappingURL=KeyAgreement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyAgreement.js","names":[],"sources":["../../src/crypto/KeyAgreement.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,OAAO,KAAK,OAAO,MAAM,eAAe;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc;AAEtC,OAAO,KAAK,KAAK,MAAM,aAAa;AACpC,OAAO,KAAK,SAAS,MAAM,iBAAiB;AAC5C,OAAO,KAAK,WAAW,MAAM,kBAAkB;AAC/C,OAAO,KAAK,UAAU,MAAM,0BAA0B;AACtD,OAAO,KAAK,QAAQ,MAAM,mBAAmB;AAC7C,OAAO,KAAK,QAAQ,MAAM,yBAAyB;AACnD,OAAO,KAAK,YAAY,MAAM,mBAAmB;AACjD,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,gBAAgB,GAAG,wCAAiD;AAC1E,MAAM,eAAe,GAAG,uCAAgD;AA6CxE;;;;;;;AAOA,OAAO,MAAM,MAAM,GAAW;EAAE,IAAI,EAAE,QAAQ;EAAE,IAAI,EAAE;AAAQ,CAAE;AAEhE;;;;;;;AAOA,OAAO,MAAM,QAAQ,GAAkB;EAAE,IAAI,EAAE,MAAM;EAAE,IAAI,EAAE,UAAU;EAAE,UAAU,EAAE;AAAO,CAAE;AAE9F;;;;;;;AAOA,OAAO,MAAM,QAAQ,GAAkB;EAAE,IAAI,EAAE,MAAM;EAAE,IAAI,EAAE,UAAU;EAAE,UAAU,EAAE;AAAO,CAAE;AAE9F;;;;;;;AAOA,OAAO,MAAM,QAAQ,GAAkB;EAAE,IAAI,EAAE,MAAM;EAAE,IAAI,EAAE,UAAU;EAAE,UAAU,EAAE;AAAO,CAAE;AAkD9F,MAAM,eAAe,gBAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;AAC3F,MAAM,cAAc,gBAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,wBAAwB,CAAC;AAExF;;;;;;;AAOA,OAAO,MAAM,YAAY,GAAI,CAAU,IAAsB,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,gBAAgB,CAAC;AAEvG;;;;;;;AAOA,OAAO,MAAM,WAAW,GAAI,CAAU,IAAqB,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,eAAe,CAAC;AAEpG,MAAM,MAAM,GAAI,SAAoB,IAClC,SAAS,CAAC,IAAI,KAAK,QAAQ,GACvB;EACA,IAAI,EAAE,QAAQ;EACd,YAAY,EAAE;IAAE,IAAI,EAAE;EAAQ,CAAE;EAChC,aAAa,EAAE,CAAC,YAAY,CAAC;EAC7B,YAAY,EAAE,EAAE;EAChB,UAAU,EAAE,UAAU,CAAC,YAAY;EACnC,YAAY,EAAE;CACf,GACC;EACA,IAAI,EAAE,MAAM;EACZ,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM;IAAE,UAAU,EAAE,SAAS,CAAC;EAAU,CAAE;EAChE,aAAa,EAAE,CAAC,YAAY,CAAC;EAC7B,YAAY,EAAE,EAAE;EAChB,UAAU,EAAE,SAAS;EACrB,YAAY,EAAE,KAAK;EACnB,KAAK,EAAE,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU;CACvD;AAEL;AACA,OAAO,MAAM,MAAM,GAAsB;EACvC,MAAM,EAAE,cAAc;EACtB,MAAM;EACN,eAAe,EAAE,eAAe;EAChC,cAAc,EAAE,cAAc;EAC9B;CACD;AAED;AACA,MAAM,gBAAgB,GAAI,SAAoB,IAC5C,SAAS,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC;AAE1F,MAAM,WAAW,GAAG,CAAC,WAAmB,EAAE,KAAe,KACvD,IAAI,WAAW,CAAC,WAAW,CAAC;EAC1B,MAAM,EAAE,cAAc;EACtB,MAAM,EAAE,oBAAoB;EAC5B,MAAM,EAAE,IAAI,WAAW,CAAC,UAAU,CAAC,KAAK,KAAK,SAAS,GAAG;IAAE;EAAW,CAAE,GAAG;IAAE,WAAW;IAAE;EAAK,CAAE;CAClG,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAM,MAAO,YAAa,sBAAQ,OAAO,CAAC,OAAO,EAyB7C,CAAC,4BAA4B,CAAC;AAElC;;;;;;;;;;;;;AAaA,OAAO,MAAM,cAAc,gBAAgE,KAAK,CAAC,MAAM,CACrG,YAAY,eACZ,MAAM,CAAC,GAAG,CAAC,aAAS;EAClB,MAAM,MAAM,GAAG,OAAO,YAAY,CAAC,YAAY;EAC/C,MAAM,MAAM,GAAG,OAAO,SAAS;EAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC;EAC5C,OAAO,YAAY,CAAC,EAAE,CAAC;IACrB,eAAe,EAAwB,SAAY,IACjD,UAAU,CAAC,eAAe,CAAa,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;IAC3G,kBAAkB,EAAE,CAAC,UAAU,EAAE,SAAS,KACxC,MAAM,CAAC,OAAO,CAAC,MAAK;MAClB,MAAM,SAAS,GAAc,UAAU,CAAC,SAAS;MACjD;MACA;MACA,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE;QAC/C,OAAO,MAAM,CAAC,IAAI,CAChB,WAAW,CAAC,cAAc,SAAS,CAAC,IAAI,oBAAoB,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CACxF;MACH;MACA,MAAM,OAAO,GAAI,KAAc,IAC7B,UAAU,CAAC,cAAc,CAAC,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,KAAK,CAAC;MACnF;MACA;MACA,OAAO,QAAQ,CAAC,GAAG,CACjB,cAAc,EACd,oBAAoB,EACpB,SAAS,CAAC,IAAI,EACd,MAAM,EACN,MAAO,MAAM,KAAM;QACjB,UAAU,EAAE,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC;QACvD,SAAS,EAAE,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS;OACpD,CAAC,EACF,OAAO,CACR,CAAC,IAAI,CACJ,MAAM,CAAC,OAAO,CAAE,IAAI,IAClB,QAAQ,CAAC,GAAG,CACV,cAAc,EACd,oBAAoB,EACpB,SAAS,CAAC,IAAI,EACd,MAAM,EACN,MAAO,MAAM,IACX,IAAI,UAAU,CACZ,MAAM,MAAM,CAAC,UAAU,CACrB;QAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI;QAAE,MAAM,EAAE,IAAI,CAAC;MAAS,CAAE,EACxD,IAAI,CAAC,UAAU,EACf,gBAAgB,CAAC,SAAS,CAAC,CAC5B,CACF,EACF,KAAK,IACJ,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,yBAAyB,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CACpG,CACF,EACD,MAAM,CAAC,OAAO,CAAE,MAAM;MACpB;MACA;MACA,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAE,IAAI,IAAK,IAAI,KAAK,CAAC,CAAC,GAC7D,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,GACtE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAC3B,CACF;IACH,CAAC,CAAC;IACJ,WAAW,EAAwB,UAAyB,IAC1D,UAAU,CAAC,WAAW,CAAe,MAAM,EAAE,MAAM,EAAE,UAAU;GAClE,CAAC;AACJ,CAAC,CAAC,CACH;AAED;;;;;;;;;;;;;;AAcA,OAAO,MAAM,UAAU,GAAG,CAGxB,SAAY,EACZ,KAAiB,KAEjB,QAAQ,CAAC,SAAS,CAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,SAAS,EACT,KAAK,EACL,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAChD;AAEH;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAM,SAAS,GAAG,CACvB,SAAY,EACZ,KAAiB,KAEjB,QAAQ,CAAC,SAAS,CAChB,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,EACT,KAAK,EACL,SAAS,CAAC,IAAI,KAAK,MAAM,GACrB,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,GAC3C,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACnD;AAEH;;;;;;;;;;;;;;;AAeA,OAAO,MAAM,uBAAuB,GAAG,CACrC,SAAY,EACZ,SAAoB,KAEpB,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;AAE9F;;;;;;;;;;;;;;AAcA,OAAO,MAAM,sBAAsB,GAAG,CACpC,SAAY,EACZ,SAAoB,KAEpB,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,wBAAwB,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;AAE5F;;;;;;;;;;;;;;AAcA,OAAO,MAAM,OAAO,GAAI,GAA2B,IACjD,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key formats: SPKI, PKCS#8, JWK, and PEM, with import-only PKCS#1 and SEC1.
|
|
3
|
+
*
|
|
4
|
+
* {@link decodePublic}, {@link decodePrivate}, and {@link decodeSecret} build
|
|
5
|
+
* typed keys from encoded data, and {@link encode} writes a key in a named
|
|
6
|
+
* format. They are plain functions, not a service: each returns an Effect that
|
|
7
|
+
* requires nothing and runs on the `WebCrypto` reference.
|
|
8
|
+
*
|
|
9
|
+
* The algorithm decides the family of the result. Decoding with
|
|
10
|
+
* `Signature.ecdsaP256` gives a `Signature` key, and with
|
|
11
|
+
* `KeyAgreement.ecdhP256` a `KeyAgreement` key. Raw bytes are not a format
|
|
12
|
+
* here: each family's own constructors read them.
|
|
13
|
+
*
|
|
14
|
+
* Format values carry their role, direction, and data type in the types:
|
|
15
|
+
*
|
|
16
|
+
* - {@link spki} (public) and {@link pkcs8} (private) read and write DER
|
|
17
|
+
* bytes;
|
|
18
|
+
* - {@link jwk} reads and writes JWK objects for every role;
|
|
19
|
+
* - {@link pkcs1} (RSA) and {@link sec1} (EC) read private DER keys and
|
|
20
|
+
* cannot be written;
|
|
21
|
+
* - {@link pem} turns any DER format into PEM text.
|
|
22
|
+
*
|
|
23
|
+
* Decoded keys always hold bytes, in the forms each family stores, so they
|
|
24
|
+
* work with every layer.
|
|
25
|
+
*
|
|
26
|
+
* **Gotchas**
|
|
27
|
+
*
|
|
28
|
+
* - EC private keys must include their public point. Safari and Firefox
|
|
29
|
+
* before 132 cannot import one without it, so every runtime fails with an
|
|
30
|
+
* `Unsupported` reason.
|
|
31
|
+
* - SPKI accepts compressed EC points. Safari and Firefox before 146 reject
|
|
32
|
+
* them in raw import, so the families' raw constructors take only
|
|
33
|
+
* uncompressed points.
|
|
34
|
+
* - Ed25519 and X25519 private JWKs need a correct `x`. Bun and Deno accept
|
|
35
|
+
* `d` alone, and other runtimes reject it.
|
|
36
|
+
* - JWK members other than `kty`, `crv`, `alg`, and the key material are
|
|
37
|
+
* ignored on import, and written JWKs contain only `kty`, `crv`, and the key
|
|
38
|
+
* material.
|
|
39
|
+
* - Callers parse and serialize JSON themselves.
|
|
40
|
+
*
|
|
41
|
+
* @stability unstable
|
|
42
|
+
* @since 4.0.0
|
|
43
|
+
*/
|
|
44
|
+
import * as Effect from "../Effect.ts";
|
|
45
|
+
import type * as Aead from "./Aead.ts";
|
|
46
|
+
import type * as Cipher from "./Cipher.ts";
|
|
47
|
+
import * as CryptoError from "./CryptoError.ts";
|
|
48
|
+
import * as KeyAgreement from "./KeyAgreement.ts";
|
|
49
|
+
import * as KeyWrap from "./KeyWrap.ts";
|
|
50
|
+
import type * as Mac from "./Mac.ts";
|
|
51
|
+
import * as Signature from "./Signature.ts";
|
|
52
|
+
/**
|
|
53
|
+
* The role of a key: public, private, or secret (symmetric).
|
|
54
|
+
*
|
|
55
|
+
* @stability unstable
|
|
56
|
+
* @category models
|
|
57
|
+
* @since 4.0.0
|
|
58
|
+
*/
|
|
59
|
+
export type Role = "public" | "private" | "secret";
|
|
60
|
+
/**
|
|
61
|
+
* Whether a format can be read, written, or both.
|
|
62
|
+
*
|
|
63
|
+
* @stability unstable
|
|
64
|
+
* @category models
|
|
65
|
+
* @since 4.0.0
|
|
66
|
+
*/
|
|
67
|
+
export type Direction = "decode" | "encode";
|
|
68
|
+
/**
|
|
69
|
+
* A key format, such as {@link spki} or `pem(pkcs8)`.
|
|
70
|
+
*
|
|
71
|
+
* **Details**
|
|
72
|
+
*
|
|
73
|
+
* `~tags` exists only in the types. It records the roles the format holds,
|
|
74
|
+
* whether it can be read and written, and the type of its data: `Uint8Array`
|
|
75
|
+
* for DER, `string` for PEM, and `JsonWebKey` for JWK.
|
|
76
|
+
*
|
|
77
|
+
* @stability unstable
|
|
78
|
+
* @category models
|
|
79
|
+
* @since 4.0.0
|
|
80
|
+
*/
|
|
81
|
+
export interface Format<R extends Role, D extends Direction, Data> {
|
|
82
|
+
readonly _tag: "spki" | "pkcs8" | "jwk" | "pkcs1" | "sec1";
|
|
83
|
+
readonly pem: boolean;
|
|
84
|
+
readonly "~tags"?: {
|
|
85
|
+
readonly role: (_: R) => void;
|
|
86
|
+
readonly direction: (_: D) => void;
|
|
87
|
+
readonly data: Data;
|
|
88
|
+
} | undefined;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* SubjectPublicKeyInfo DER (RFC 5280), for public keys.
|
|
92
|
+
*
|
|
93
|
+
* @stability unstable
|
|
94
|
+
* @category formats
|
|
95
|
+
* @since 4.0.0
|
|
96
|
+
*/
|
|
97
|
+
export declare const spki: Format<"public", Direction, Uint8Array>;
|
|
98
|
+
/**
|
|
99
|
+
* PKCS#8 PrivateKeyInfo DER (RFC 5208), for private keys.
|
|
100
|
+
*
|
|
101
|
+
* @stability unstable
|
|
102
|
+
* @category formats
|
|
103
|
+
* @since 4.0.0
|
|
104
|
+
*/
|
|
105
|
+
export declare const pkcs8: Format<"private", Direction, Uint8Array>;
|
|
106
|
+
/**
|
|
107
|
+
* JSON Web Key (RFC 7517), for every role.
|
|
108
|
+
*
|
|
109
|
+
* **Details**
|
|
110
|
+
*
|
|
111
|
+
* `decodePublic` rejects a JWK with `d`, and `decodePrivate` requires it.
|
|
112
|
+
* `kty`, `crv`, and `alg` must match the algorithm when present. Written JWKs
|
|
113
|
+
* contain only `kty`, `crv`, and the key material.
|
|
114
|
+
*
|
|
115
|
+
* Ed25519 and X25519 private JWKs need a correct `x`: Bun and Deno accept `d`
|
|
116
|
+
* alone, but other runtimes reject it.
|
|
117
|
+
*
|
|
118
|
+
* @stability unstable
|
|
119
|
+
* @category formats
|
|
120
|
+
* @since 4.0.0
|
|
121
|
+
*/
|
|
122
|
+
export declare const jwk: Format<Role, Direction, JsonWebKey>;
|
|
123
|
+
/**
|
|
124
|
+
* PKCS#1 RSAPrivateKey DER (RFC 8017), read only.
|
|
125
|
+
*
|
|
126
|
+
* @stability unstable
|
|
127
|
+
* @category formats
|
|
128
|
+
* @since 4.0.0
|
|
129
|
+
*/
|
|
130
|
+
export declare const pkcs1: Format<"private", "decode", Uint8Array>;
|
|
131
|
+
/**
|
|
132
|
+
* SEC1 ECPrivateKey DER (RFC 5915), read only.
|
|
133
|
+
*
|
|
134
|
+
* **Details**
|
|
135
|
+
*
|
|
136
|
+
* The curve parameters, when present, must match the algorithm's curve. The
|
|
137
|
+
* public point must be present.
|
|
138
|
+
*
|
|
139
|
+
* @stability unstable
|
|
140
|
+
* @category formats
|
|
141
|
+
* @since 4.0.0
|
|
142
|
+
*/
|
|
143
|
+
export declare const sec1: Format<"private", "decode", Uint8Array>;
|
|
144
|
+
/**
|
|
145
|
+
* PEM (RFC 7468) over a DER format.
|
|
146
|
+
*
|
|
147
|
+
* **Details**
|
|
148
|
+
*
|
|
149
|
+
* Reading accepts exactly one block whose label matches the format:
|
|
150
|
+
* `PUBLIC KEY`, `PRIVATE KEY`, `RSA PRIVATE KEY`, or `EC PRIVATE KEY`.
|
|
151
|
+
* Writing uses 64-column lines.
|
|
152
|
+
*
|
|
153
|
+
* @stability unstable
|
|
154
|
+
* @category formats
|
|
155
|
+
* @since 4.0.0
|
|
156
|
+
*/
|
|
157
|
+
export declare const pem: <R extends Role, D extends Direction>(format: Format<R, D, Uint8Array>) => Format<R, D, string>;
|
|
158
|
+
/**
|
|
159
|
+
* The algorithms whose public and private keys `KeyFormat` reads and writes.
|
|
160
|
+
*
|
|
161
|
+
* @stability unstable
|
|
162
|
+
* @category models
|
|
163
|
+
* @since 4.0.0
|
|
164
|
+
*/
|
|
165
|
+
export type AsymmetricAlgorithm = Signature.Algorithm | KeyAgreement.Algorithm | KeyWrap.RsaOaep;
|
|
166
|
+
/**
|
|
167
|
+
* The algorithms whose secret keys `KeyFormat` reads and writes, and that
|
|
168
|
+
* `KeyWrap` wraps.
|
|
169
|
+
*
|
|
170
|
+
* @stability unstable
|
|
171
|
+
* @category models
|
|
172
|
+
* @since 4.0.0
|
|
173
|
+
*/
|
|
174
|
+
export type SecretAlgorithm = Aead.Algorithm | Cipher.Algorithm | Mac.Algorithm | KeyWrap.AesKw;
|
|
175
|
+
/**
|
|
176
|
+
* The public key type of an algorithm.
|
|
177
|
+
*
|
|
178
|
+
* @stability unstable
|
|
179
|
+
* @category models
|
|
180
|
+
* @since 4.0.0
|
|
181
|
+
*/
|
|
182
|
+
export type PublicKey<A extends AsymmetricAlgorithm = AsymmetricAlgorithm> = A extends Signature.Algorithm ? Signature.PublicKey<A> : A extends KeyAgreement.Algorithm ? KeyAgreement.PublicKey<A> : A extends KeyWrap.RsaOaep ? KeyWrap.PublicKey<A> : never;
|
|
183
|
+
/**
|
|
184
|
+
* The private key type of an algorithm.
|
|
185
|
+
*
|
|
186
|
+
* @stability unstable
|
|
187
|
+
* @category models
|
|
188
|
+
* @since 4.0.0
|
|
189
|
+
*/
|
|
190
|
+
export type PrivateKey<A extends AsymmetricAlgorithm = AsymmetricAlgorithm> = A extends Signature.Algorithm ? Signature.PrivateKey<A> : A extends KeyAgreement.Algorithm ? KeyAgreement.PrivateKey<A> : A extends KeyWrap.RsaOaep ? KeyWrap.PrivateKey<A> : never;
|
|
191
|
+
/**
|
|
192
|
+
* The secret key type of an algorithm.
|
|
193
|
+
*
|
|
194
|
+
* @stability unstable
|
|
195
|
+
* @category models
|
|
196
|
+
* @since 4.0.0
|
|
197
|
+
*/
|
|
198
|
+
export type SecretKey<A extends SecretAlgorithm = SecretAlgorithm> = A extends Aead.Algorithm ? Aead.Key<A> : A extends Cipher.Algorithm ? Cipher.Key<A> : A extends Mac.Algorithm ? Mac.Key<A> : A extends KeyWrap.AesKw ? KeyWrap.Key<A> : never;
|
|
199
|
+
/**
|
|
200
|
+
* Any key `KeyFormat` can write.
|
|
201
|
+
*
|
|
202
|
+
* @stability unstable
|
|
203
|
+
* @category models
|
|
204
|
+
* @since 4.0.0
|
|
205
|
+
*/
|
|
206
|
+
export type Key = PublicKey | PrivateKey | SecretKey;
|
|
207
|
+
/**
|
|
208
|
+
* The role of a key type.
|
|
209
|
+
*
|
|
210
|
+
* @stability unstable
|
|
211
|
+
* @category models
|
|
212
|
+
* @since 4.0.0
|
|
213
|
+
*/
|
|
214
|
+
export type RoleOf<K extends Key> = K extends PublicKey ? "public" : K extends PrivateKey ? "private" : "secret";
|
|
215
|
+
/**
|
|
216
|
+
* Decodes a public key.
|
|
217
|
+
*
|
|
218
|
+
* **Details**
|
|
219
|
+
*
|
|
220
|
+
* The format must hold public keys: {@link spki}, {@link jwk}, or
|
|
221
|
+
* `pem(spki)`. The key is imported on the `WebCrypto` reference and stored as
|
|
222
|
+
* bytes. Malformed data, a key of another algorithm or curve, or a JWK with
|
|
223
|
+
* `d` fails with an `InvalidKey` reason.
|
|
224
|
+
*
|
|
225
|
+
* **Example** (Reading a PEM public key)
|
|
226
|
+
*
|
|
227
|
+
* ```ts
|
|
228
|
+
* import { Effect } from "effect"
|
|
229
|
+
* import { KeyFormat, Signature } from "effect/crypto"
|
|
230
|
+
*
|
|
231
|
+
* declare const text: string
|
|
232
|
+
*
|
|
233
|
+
* const publicKey = KeyFormat.decodePublic(KeyFormat.pem(KeyFormat.spki), Signature.ecdsaP256, text)
|
|
234
|
+
* ```
|
|
235
|
+
*
|
|
236
|
+
* @stability unstable
|
|
237
|
+
* @category decoding
|
|
238
|
+
* @since 4.0.0
|
|
239
|
+
*/
|
|
240
|
+
export declare const decodePublic: <A extends AsymmetricAlgorithm, Data>(format: Format<"public", "decode", Data>, algorithm: A, data: NoInfer<Data>) => Effect.Effect<PublicKey<A>, CryptoError.CryptoError>;
|
|
241
|
+
/**
|
|
242
|
+
* Decodes a private key.
|
|
243
|
+
*
|
|
244
|
+
* **Details**
|
|
245
|
+
*
|
|
246
|
+
* The format must hold private keys: {@link pkcs8}, {@link jwk},
|
|
247
|
+
* {@link pkcs1}, {@link sec1}, or their PEM forms. PKCS#1 and SEC1 are
|
|
248
|
+
* converted to PKCS#8 before the import. Malformed data, a key of another
|
|
249
|
+
* algorithm or curve, or a JWK without `d` fails with an `InvalidKey` reason.
|
|
250
|
+
* An EC private key without its public point fails with an `Unsupported`
|
|
251
|
+
* reason on every runtime, because Safari and Firefox before 132 cannot import
|
|
252
|
+
* it.
|
|
253
|
+
*
|
|
254
|
+
* @stability unstable
|
|
255
|
+
* @category decoding
|
|
256
|
+
* @since 4.0.0
|
|
257
|
+
*/
|
|
258
|
+
export declare const decodePrivate: <A extends AsymmetricAlgorithm, Data>(format: Format<"private", "decode", Data>, algorithm: A, data: NoInfer<Data>) => Effect.Effect<PrivateKey<A>, CryptoError.CryptoError>;
|
|
259
|
+
/**
|
|
260
|
+
* Decodes a secret key from a JWK.
|
|
261
|
+
*
|
|
262
|
+
* **Details**
|
|
263
|
+
*
|
|
264
|
+
* The JWK must have `kty` `oct` when `kty` is present, and an `alg` matching
|
|
265
|
+
* the algorithm when `alg` is present. The key bytes go through the family's
|
|
266
|
+
* raw constructor, so a wrong length fails with an `InvalidKey` reason.
|
|
267
|
+
* Secret keys never touch `crypto.subtle` here.
|
|
268
|
+
*
|
|
269
|
+
* @stability unstable
|
|
270
|
+
* @category decoding
|
|
271
|
+
* @since 4.0.0
|
|
272
|
+
*/
|
|
273
|
+
export declare const decodeSecret: <A extends SecretAlgorithm, Data>(format: Format<"secret", "decode", Data>, algorithm: A, data: NoInfer<Data>) => Effect.Effect<SecretKey<A>, CryptoError.CryptoError>;
|
|
274
|
+
/**
|
|
275
|
+
* Encodes a key in a format.
|
|
276
|
+
*
|
|
277
|
+
* **Details**
|
|
278
|
+
*
|
|
279
|
+
* The format must hold the key's role and be writable: {@link spki} for
|
|
280
|
+
* public keys, {@link pkcs8} for private keys, {@link jwk} for every role,
|
|
281
|
+
* and the PEM forms of SPKI and PKCS#8. PKCS#1 and SEC1 cannot be written.
|
|
282
|
+
*
|
|
283
|
+
* PEM output uses 64-column lines. JWK output contains only `kty`, `crv`, and
|
|
284
|
+
* the key material. A non-extractable `CryptoKey`-backed key fails with a
|
|
285
|
+
* `NotExtractable` reason.
|
|
286
|
+
*
|
|
287
|
+
* **Example** (Writing a public key as JWK)
|
|
288
|
+
*
|
|
289
|
+
* ```ts import.meta.vitest
|
|
290
|
+
* import { Effect, Layer } from "effect"
|
|
291
|
+
* import { KeyFormat, SecureRandom, Signature } from "effect/crypto"
|
|
292
|
+
*
|
|
293
|
+
* const program = Effect.gen(function*() {
|
|
294
|
+
* const signature = yield* Signature.Signature
|
|
295
|
+
* const { publicKey } = yield* signature.generateKeyPair(Signature.ed25519)
|
|
296
|
+
* const jwk = yield* KeyFormat.encode(KeyFormat.jwk, publicKey)
|
|
297
|
+
* return [jwk.kty, jwk.crv]
|
|
298
|
+
* })
|
|
299
|
+
*
|
|
300
|
+
* const layer = Signature.layerWebCrypto.pipe(Layer.provide(SecureRandom.layerWebCrypto))
|
|
301
|
+
* await Effect.runPromise(program.pipe(Effect.provide(layer))) // => ["OKP", "Ed25519"]
|
|
302
|
+
* ```
|
|
303
|
+
*
|
|
304
|
+
* @stability unstable
|
|
305
|
+
* @category encoding
|
|
306
|
+
* @since 4.0.0
|
|
307
|
+
*/
|
|
308
|
+
export declare const encode: <K extends Key, Data>(format: Format<RoleOf<K>, "encode", Data>, key: K) => Effect.Effect<Data, CryptoError.CryptoError>;
|
|
309
|
+
//# sourceMappingURL=KeyFormat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyFormat.d.ts","sourceRoot":"","sources":["../../src/crypto/KeyFormat.ts"],"names":[],"mappings":"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"}
|