effect 4.0.7 → 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/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 +9 -3
- 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/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 +164 -7
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +11 -1
- package/dist/Effect.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/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/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/Pool.d.ts +51 -0
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +59 -9
- package/dist/Pool.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/Schedule.d.ts +18 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +7 -2
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +666 -41
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +650 -0
- package/dist/Schema.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/SchemaRepresentation.d.ts +14 -0
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +16 -0
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +8 -3
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +6 -3
- 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 +40 -0
- package/dist/Semaphore.js.map +1 -1
- package/dist/Stream.d.ts +13 -4
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +9 -0
- package/dist/Stream.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/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/McpServer.d.ts +630 -29
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +562 -116
- 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/Response.d.ts +1 -25
- package/dist/ai/Response.d.ts.map +1 -1
- package/dist/ai/Response.js +1 -10
- package/dist/ai/Response.js.map +1 -1
- package/dist/ai/Tool.d.ts +19 -1
- package/dist/ai/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.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 +6 -0
- package/dist/cli/Argument.d.ts.map +1 -1
- package/dist/cli/Argument.js +2 -0
- package/dist/cli/Argument.js.map +1 -1
- package/dist/cli/CliOutput.d.ts +65 -1
- package/dist/cli/CliOutput.d.ts.map +1 -1
- package/dist/cli/CliOutput.js +94 -37
- package/dist/cli/CliOutput.js.map +1 -1
- package/dist/cli/Command.d.ts +23 -0
- package/dist/cli/Command.d.ts.map +1 -1
- package/dist/cli/Command.js +8 -0
- package/dist/cli/Command.js.map +1 -1
- package/dist/cli/Flag.d.ts +107 -0
- package/dist/cli/Flag.d.ts.map +1 -1
- package/dist/cli/Flag.js +37 -0
- package/dist/cli/Flag.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 +6 -0
- package/dist/cli/Param.d.ts.map +1 -1
- package/dist/cli/Param.js +2 -0
- 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/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/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +90 -28
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/ShardingConfig.d.ts +72 -6
- 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/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 +23 -8
- package/dist/cluster/SqlRunnerStorage.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/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/Toml.d.ts +17 -3
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +104 -16
- 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.js +2 -2
- 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/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 +143 -1
- 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 +79 -8
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +65 -5
- package/dist/http/HttpClient.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 +2 -3
- 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/HttpServerRequest.d.ts +5 -2
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +6 -17
- 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/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/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/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/decompression.js +3 -2
- package/dist/http/internal/decompression.js.map +1 -1
- package/dist/http/internal/urlParams.js +8 -0
- package/dist/http/internal/urlParams.js.map +1 -1
- package/dist/http-api/HttpApiBuilder.js +19 -5
- package/dist/http-api/HttpApiBuilder.js.map +1 -1
- package/dist/http-api/HttpApiClient.d.ts +63 -0
- package/dist/http-api/HttpApiClient.d.ts.map +1 -1
- package/dist/http-api/HttpApiClient.js +51 -0
- package/dist/http-api/HttpApiClient.js.map +1 -1
- package/dist/http-api/HttpApiEndpoint.d.ts.map +1 -1
- package/dist/http-api/HttpApiEndpoint.js +14 -5
- 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 +76 -14
- package/dist/http-api/HttpApiSchema.d.ts.map +1 -1
- package/dist/http-api/HttpApiSchema.js +53 -0
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- 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/effect.js +25 -14
- package/dist/internal/effect.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/matcher.js +10 -0
- 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/toCodeDocument.js +6 -3
- package/dist/internal/schema/toCodeDocument.js.map +1 -1
- 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/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/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/process/ChildProcess.d.ts +207 -67
- 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 +5 -0
- package/dist/process/ChildProcessSpawner.d.ts.map +1 -1
- 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/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 +50 -16
- 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.map +1 -1
- package/dist/rpc/RpcSerialization.js +6 -0
- 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 -66
- package/dist/rpc/RpcServer.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 +0 -19
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +3 -48
- 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.map +1 -1
- package/dist/sql/SqlClient.js +5 -9
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +20 -6
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +0 -13
- 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/internal/crypto.js +9 -8
- package/dist/workflow/internal/crypto.js.map +1 -1
- package/package.json +3 -1
- package/src/BigDecimal.ts +3 -0
- package/src/Channel.ts +17 -11
- package/src/Config.ts +7 -1
- package/src/Context.ts +34 -10
- package/src/Cron.ts +178 -29
- package/src/Duration.ts +140 -0
- package/src/Effect.ts +914 -85
- package/src/FileSystem.ts +65 -4
- package/src/Glob.ts +205 -0
- package/src/Match.ts +127 -0
- package/src/Pool.ts +73 -15
- package/src/Random.ts +3 -3
- package/src/RcMap.ts +5 -1
- package/src/Schedule.ts +26 -3
- package/src/Schema.ts +1189 -62
- package/src/SchemaGetter.ts +27 -11
- package/src/SchemaRepresentation.ts +19 -0
- package/src/SchemaTransformation.ts +8 -3
- package/src/ScopedCache.ts +5 -9
- package/src/Semaphore.ts +141 -0
- package/src/Stream.ts +15 -6
- package/src/Terminal.ts +19 -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/McpServer.ts +1269 -286
- package/src/ai/McpTest.ts +380 -0
- package/src/ai/Response.ts +2 -22
- package/src/ai/Tool.ts +27 -8
- 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 +6 -0
- package/src/cli/CliOutput.ts +117 -49
- package/src/cli/Command.ts +23 -0
- package/src/cli/Flag.ts +107 -0
- package/src/cli/HelpDoc.ts +18 -1
- package/src/cli/Param.ts +6 -0
- package/src/cli/Primitive.ts +16 -1
- package/src/cli/Prompt.ts +1 -0
- package/src/cli/internal/help.ts +21 -9
- package/src/cluster/Sharding.ts +93 -26
- package/src/cluster/ShardingConfig.ts +41 -3
- package/src/cluster/SingleRunner.ts +3 -3
- package/src/cluster/SqlMessageStorage.ts +49 -17
- package/src/cluster/SqlRunnerStorage.ts +37 -27
- 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/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/Toml.ts +85 -20
- 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 +2 -2
- 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/identityRootSecretDerivation.ts +93 -123
- package/src/eventlog/internal/remoteCompaction.ts +92 -0
- package/src/http/Cookies.ts +281 -1
- package/src/http/FetchHttpClient.ts +88 -16
- package/src/http/HttpClient.ts +89 -22
- package/src/http/HttpClientRequest.ts +12 -9
- package/src/http/HttpClientResponse.ts +3 -2
- package/src/http/HttpMethod.ts +10 -2
- package/src/http/HttpServerRequest.ts +15 -30
- package/src/http/HttpServerResponse.ts +3 -2
- package/src/http/HttpTraceContext.ts +7 -4
- package/src/http/ProblemDetails.ts +149 -0
- package/src/http/index.ts +6 -0
- package/src/http/internal/decompression.ts +4 -4
- package/src/http/internal/urlParams.ts +8 -0
- package/src/http-api/HttpApiBuilder.ts +24 -12
- package/src/http-api/HttpApiClient.ts +67 -1
- package/src/http-api/HttpApiEndpoint.ts +14 -5
- package/src/http-api/HttpApiError.ts +250 -0
- package/src/http-api/HttpApiMiddleware.ts +95 -1
- package/src/http-api/HttpApiSchema.ts +105 -14
- package/src/index.ts +6 -6
- package/src/internal/effect.ts +34 -18
- package/src/internal/glob.ts +736 -0
- package/src/internal/matcher.ts +17 -0
- package/src/internal/persistence.ts +11 -0
- package/src/internal/rcRef.ts +4 -1
- package/src/internal/schema/toCodeDocument.ts +7 -3
- 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/OtlpResource.ts +9 -1
- package/src/persistence/KeyValueStore.ts +219 -22
- package/src/persistence/PersistedQueue.ts +128 -59
- package/src/persistence/Persistence.ts +20 -13
- package/src/process/ChildProcess.ts +255 -260
- package/src/process/ChildProcessSpawner.ts +5 -0
- package/src/process/CommandLine.ts +630 -0
- package/src/process/index.ts +6 -0
- package/src/reactivity/Atom.ts +5 -5
- package/src/reactivity/AtomRegistry.ts +1 -1
- package/src/rpc/RpcClient.ts +62 -26
- package/src/rpc/RpcMessage.ts +10 -1
- package/src/rpc/RpcSerialization.ts +3 -0
- package/src/rpc/RpcServer.ts +176 -78
- package/src/schema/Model.ts +26 -3
- package/src/sql/Migrator.ts +4 -63
- package/src/sql/MigratorFileSystem.ts +71 -0
- package/src/sql/SqlClient.ts +2 -16
- package/src/sql/Statement.ts +8 -7
- package/src/sql/index.ts +1 -1
- package/src/testing/index.ts +0 -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/dist/Schema.js
CHANGED
|
@@ -17,6 +17,13 @@ import * as BigDecimal_ from "./BigDecimal.js";
|
|
|
17
17
|
import * as ByteSize_ from "./ByteSize.js";
|
|
18
18
|
import * as Cause_ from "./Cause.js";
|
|
19
19
|
import * as Chunk_ from "./Chunk.js";
|
|
20
|
+
import * as Aead_ from "./crypto/Aead.js";
|
|
21
|
+
import * as Cipher_ from "./crypto/Cipher.js";
|
|
22
|
+
import * as KeyAgreement_ from "./crypto/KeyAgreement.js";
|
|
23
|
+
import * as KeyFormat_ from "./crypto/KeyFormat.js";
|
|
24
|
+
import * as KeyWrap_ from "./crypto/KeyWrap.js";
|
|
25
|
+
import * as Mac_ from "./crypto/Mac.js";
|
|
26
|
+
import * as Signature_ from "./crypto/Signature.js";
|
|
20
27
|
import * as Data from "./Data.js";
|
|
21
28
|
import * as DateTime from "./DateTime.js";
|
|
22
29
|
import * as Duration_ from "./Duration.js";
|
|
@@ -3789,6 +3796,49 @@ export function isULID(annotations) {
|
|
|
3789
3796
|
...annotations
|
|
3790
3797
|
});
|
|
3791
3798
|
}
|
|
3799
|
+
// oxlint-disable-next-line no-control-regex
|
|
3800
|
+
const ASCII_REGEXP = /^[\x00-\x7F]*$/u;
|
|
3801
|
+
/**
|
|
3802
|
+
* Validates that a string contains only ASCII characters.
|
|
3803
|
+
*
|
|
3804
|
+
* **When to use**
|
|
3805
|
+
*
|
|
3806
|
+
* Use when a value must stay within the 7-bit ASCII range, for example
|
|
3807
|
+
* identifiers, protocol tokens, or data sent to systems that reject
|
|
3808
|
+
* non-ASCII input.
|
|
3809
|
+
*
|
|
3810
|
+
* **Details**
|
|
3811
|
+
*
|
|
3812
|
+
* This check accepts strings whose characters are all in the range `U+0000`
|
|
3813
|
+
* to `U+007F`, including control characters and the empty string.
|
|
3814
|
+
*
|
|
3815
|
+
* JSON Schema:
|
|
3816
|
+
*
|
|
3817
|
+
* This check corresponds to a `pattern` constraint in JSON Schema that matches
|
|
3818
|
+
* ASCII-only strings.
|
|
3819
|
+
*
|
|
3820
|
+
* Arbitrary:
|
|
3821
|
+
*
|
|
3822
|
+
* During arbitrary generation, this applies a `patterns`
|
|
3823
|
+
* constraint to ensure generated strings match the ASCII pattern.
|
|
3824
|
+
*
|
|
3825
|
+
* @stability unstable
|
|
3826
|
+
* @category validation
|
|
3827
|
+
* @since 4.0.6
|
|
3828
|
+
*/
|
|
3829
|
+
export function isAscii(annotations) {
|
|
3830
|
+
return isPattern(ASCII_REGEXP, {
|
|
3831
|
+
expected: "an ASCII string",
|
|
3832
|
+
representation: {
|
|
3833
|
+
id: "effect/schema/isAscii",
|
|
3834
|
+
payload: null
|
|
3835
|
+
},
|
|
3836
|
+
toCode: () => ({
|
|
3837
|
+
runtime: "Schema.isAscii()"
|
|
3838
|
+
}),
|
|
3839
|
+
...annotations
|
|
3840
|
+
});
|
|
3841
|
+
}
|
|
3792
3842
|
/**
|
|
3793
3843
|
* Validates that a string is valid Base64 encoded data.
|
|
3794
3844
|
*
|
|
@@ -8382,6 +8432,20 @@ const durationFromMillis = /*#__PURE__*/SchemaTransformation.transform({
|
|
|
8382
8432
|
decode: i => Duration_.millis(i),
|
|
8383
8433
|
encode: a => Duration_.toMillis(a)
|
|
8384
8434
|
});
|
|
8435
|
+
const durationFromIsoString = /*#__PURE__*/SchemaTransformation.transformEffect({
|
|
8436
|
+
decode: (s, options) => Option_.match(Duration_.fromIso(s), {
|
|
8437
|
+
onNone: () => Effect.fail(new SchemaIssue.InvalidValue({
|
|
8438
|
+
expected: "an ISO 8601 duration without years or months"
|
|
8439
|
+
}, s, options)),
|
|
8440
|
+
onSome: Effect.succeed
|
|
8441
|
+
}),
|
|
8442
|
+
encode: (a, options) => Option_.match(Duration_.formatIso(a), {
|
|
8443
|
+
onNone: () => Effect.fail(new SchemaIssue.InvalidValue({
|
|
8444
|
+
expected: "a finite Duration"
|
|
8445
|
+
}, a, options)),
|
|
8446
|
+
onSome: Effect.succeed
|
|
8447
|
+
})
|
|
8448
|
+
});
|
|
8385
8449
|
/**
|
|
8386
8450
|
* Schema for `Duration` values.
|
|
8387
8451
|
*
|
|
@@ -8521,6 +8585,30 @@ export const DurationFromNanos = /*#__PURE__*/BigInt.pipe(/*#__PURE__*/decodeTo(
|
|
|
8521
8585
|
* @since 3.10.0
|
|
8522
8586
|
*/
|
|
8523
8587
|
export const DurationFromMillis = /*#__PURE__*/Number.pipe(/*#__PURE__*/decodeTo(Duration, durationFromMillis));
|
|
8588
|
+
/**
|
|
8589
|
+
* Schema that decodes an ISO 8601 duration string into a `Duration`.
|
|
8590
|
+
*
|
|
8591
|
+
* **Details**
|
|
8592
|
+
*
|
|
8593
|
+
* Decoding:
|
|
8594
|
+
* - A string accepted by `Duration.fromIso` is decoded as a `Duration`, such
|
|
8595
|
+
* as `"PT1H30M"`, `"P1W2D"`, or `"-PT0.5S"`. Years and months are rejected
|
|
8596
|
+
* because they have no fixed length.
|
|
8597
|
+
*
|
|
8598
|
+
* Encoding:
|
|
8599
|
+
* - A finite `Duration` is encoded with `Duration.formatIso`, using days,
|
|
8600
|
+
* hours, minutes, and seconds. Encoding fails for `Duration.infinity` and
|
|
8601
|
+
* `Duration.negativeInfinity`.
|
|
8602
|
+
*
|
|
8603
|
+
* @see {@link DurationFromString} for the `"5 seconds"` string format
|
|
8604
|
+
*
|
|
8605
|
+
* @stability stable
|
|
8606
|
+
* @category schemas
|
|
8607
|
+
* @since 4.1.0
|
|
8608
|
+
*/
|
|
8609
|
+
export const DurationFromIsoString = /*#__PURE__*/String.annotate({
|
|
8610
|
+
expected: "an ISO 8601 duration string that will be decoded as a Duration"
|
|
8611
|
+
}).pipe(/*#__PURE__*/decodeTo(Duration, durationFromIsoString));
|
|
8524
8612
|
/**
|
|
8525
8613
|
* Schema for supported DNS record types such as `"A"` or `"SRV"`.
|
|
8526
8614
|
*
|
|
@@ -8750,6 +8838,568 @@ export const DnsTxtRecord = /*#__PURE__*/dnsRecordOfType("TXT", {
|
|
|
8750
8838
|
export const DnsRecord = /*#__PURE__*/Union([DnsARecord, DnsAaaaRecord, DnsCaaRecord, DnsCnameRecord, DnsMxRecord, DnsNaptrRecord, DnsNsRecord, DnsPtrRecord, DnsSoaRecord, DnsSrvRecord, DnsTlsaRecord, DnsTxtRecord]).annotate({
|
|
8751
8839
|
identifier: "DnsRecord"
|
|
8752
8840
|
});
|
|
8841
|
+
const cryptoAlgorithmEquals = (self, that) => self === that || self.name === that.name && self.hash?.name === that.hash?.name && self.saltLength === that.saltLength;
|
|
8842
|
+
const cryptoDigestCode = hash => `Digest.${hash.name.toLowerCase().replace("-", "")}`;
|
|
8843
|
+
const cryptoAlgorithmCode = (family, algorithm) => {
|
|
8844
|
+
if (algorithm.modulusLength === undefined || algorithm.hash === undefined || algorithm._tag === undefined) {
|
|
8845
|
+
const code = `${family}.${algorithm.name}`;
|
|
8846
|
+
return algorithm.hash === undefined ? code : `{ ...${code}, hash: ${cryptoDigestCode(algorithm.hash)} }`;
|
|
8847
|
+
}
|
|
8848
|
+
const factory = algorithm._tag.charAt(0).toLowerCase() + algorithm._tag.slice(1);
|
|
8849
|
+
const saltLength = algorithm.saltLength === undefined ? "" : `, saltLength: ${algorithm.saltLength}`;
|
|
8850
|
+
return `${family}.${factory}({ hash: ${cryptoDigestCode(algorithm.hash)}, modulusLength: ${algorithm.modulusLength}${saltLength} })`;
|
|
8851
|
+
};
|
|
8852
|
+
const cryptoAlgorithmPayload = algorithm => {
|
|
8853
|
+
const payload = {
|
|
8854
|
+
name: algorithm.name
|
|
8855
|
+
};
|
|
8856
|
+
if (algorithm.hash !== undefined) payload.hash = algorithm.hash.name;
|
|
8857
|
+
if (algorithm.modulusLength !== undefined) payload.modulusLength = algorithm.modulusLength;
|
|
8858
|
+
if (algorithm.saltLength !== undefined) payload.saltLength = algorithm.saltLength;
|
|
8859
|
+
return payload;
|
|
8860
|
+
};
|
|
8861
|
+
const declareCryptoKey = (name, family, type, is, algorithm) => {
|
|
8862
|
+
const code = cryptoAlgorithmCode(family, algorithm);
|
|
8863
|
+
const forbidden = SchemaGetter.forbidden(() => `Cannot serialize ${family}.${type} values as JSON, use Schema.${name}FromFormat to read and write keys`);
|
|
8864
|
+
return declare(u => is(u) && cryptoAlgorithmEquals(u.algorithm, algorithm), {
|
|
8865
|
+
expected: `${family}.${type} for ${algorithm.name}`,
|
|
8866
|
+
representation: {
|
|
8867
|
+
id: `effect/crypto/${name}`,
|
|
8868
|
+
payload: cryptoAlgorithmPayload(algorithm)
|
|
8869
|
+
},
|
|
8870
|
+
toCode: () => ({
|
|
8871
|
+
runtime: `Schema.${name}(${code})`,
|
|
8872
|
+
Type: `${family}.${type}`,
|
|
8873
|
+
importDeclarations: [`import * as ${family} from "effect/crypto/${family}"`, ...(code.includes("Digest.") ? [`import * as Digest from "effect/crypto/Digest"`] : [])]
|
|
8874
|
+
}),
|
|
8875
|
+
toCodecJson: () => link()(Unknown, {
|
|
8876
|
+
decode: forbidden,
|
|
8877
|
+
encode: forbidden
|
|
8878
|
+
}),
|
|
8879
|
+
// Keys have no Arbitrary: linking to `Never` makes derivation fail.
|
|
8880
|
+
toCodecArbitrary: () => link()(Never, {
|
|
8881
|
+
decode: forbidden,
|
|
8882
|
+
encode: forbidden
|
|
8883
|
+
}),
|
|
8884
|
+
toFormatter: () => key => globalThis.String(key),
|
|
8885
|
+
toEquivalence: () => (self, that) => self === that
|
|
8886
|
+
});
|
|
8887
|
+
};
|
|
8888
|
+
const cryptoIssue = (error, input, options) => new SchemaIssue.InvalidValue({
|
|
8889
|
+
message: error.message,
|
|
8890
|
+
cause: error
|
|
8891
|
+
}, input, options);
|
|
8892
|
+
const cryptoForbiddenEncode = (name, key, options) => Effect.fail(new SchemaIssue.Forbidden({
|
|
8893
|
+
message: `Schema.${name} only decodes, pass { allowEncode: true } to encode the key`
|
|
8894
|
+
}, key, options));
|
|
8895
|
+
const cryptoKeyFromBytes = (name, to, fromBytes, toBytes) => Uint8Array.pipe(decodeTo(to, SchemaTransformation.transformEffect({
|
|
8896
|
+
decode: (bytes, options) => Effect.mapError(fromBytes(bytes), error => cryptoIssue(error, bytes, options)),
|
|
8897
|
+
encode: (key, options) => toBytes === undefined ? cryptoForbiddenEncode(name, key, options) : Effect.mapError(toBytes(key), error => cryptoIssue(error, key, options))
|
|
8898
|
+
})));
|
|
8899
|
+
const CryptoJsonWebKeyMember = /*#__PURE__*/optionalKey(String);
|
|
8900
|
+
// The JWK members of RFC 7517 and RFC 7518 that `KeyFormat` reads and writes.
|
|
8901
|
+
// Other members are dropped.
|
|
8902
|
+
const CryptoJsonWebKey = /*#__PURE__*/Struct({
|
|
8903
|
+
kty: CryptoJsonWebKeyMember,
|
|
8904
|
+
crv: CryptoJsonWebKeyMember,
|
|
8905
|
+
alg: CryptoJsonWebKeyMember,
|
|
8906
|
+
use: CryptoJsonWebKeyMember,
|
|
8907
|
+
key_ops: /*#__PURE__*/optionalKey(/*#__PURE__*/ArraySchema(String)),
|
|
8908
|
+
ext: /*#__PURE__*/optionalKey(Boolean),
|
|
8909
|
+
k: CryptoJsonWebKeyMember,
|
|
8910
|
+
x: CryptoJsonWebKeyMember,
|
|
8911
|
+
y: CryptoJsonWebKeyMember,
|
|
8912
|
+
d: CryptoJsonWebKeyMember,
|
|
8913
|
+
n: CryptoJsonWebKeyMember,
|
|
8914
|
+
e: CryptoJsonWebKeyMember,
|
|
8915
|
+
p: CryptoJsonWebKeyMember,
|
|
8916
|
+
q: CryptoJsonWebKeyMember,
|
|
8917
|
+
dp: CryptoJsonWebKeyMember,
|
|
8918
|
+
dq: CryptoJsonWebKeyMember,
|
|
8919
|
+
qi: CryptoJsonWebKeyMember,
|
|
8920
|
+
oth: /*#__PURE__*/optionalKey(/*#__PURE__*/ArraySchema(/*#__PURE__*/Struct({
|
|
8921
|
+
r: CryptoJsonWebKeyMember,
|
|
8922
|
+
d: CryptoJsonWebKeyMember,
|
|
8923
|
+
t: CryptoJsonWebKeyMember
|
|
8924
|
+
})))
|
|
8925
|
+
});
|
|
8926
|
+
const cryptoFormatData = format => format._tag === "jwk" ? CryptoJsonWebKey : format.pem ? String : Uint8Array;
|
|
8927
|
+
const cryptoKeyFromFormat = (name, to, format, decode, canEncode) => {
|
|
8928
|
+
// PKCS#1 and SEC1 are read only.
|
|
8929
|
+
const writable = canEncode && format._tag !== "pkcs1" && format._tag !== "sec1";
|
|
8930
|
+
return cryptoFormatData(format).pipe(decodeTo(to, SchemaTransformation.transformEffect({
|
|
8931
|
+
decode: (data, options) =>
|
|
8932
|
+
// Secret JWK decoding is synchronous, but all format schemas are async-only.
|
|
8933
|
+
Effect.flatMap(Effect.promise(() => Promise.resolve()), () => Effect.mapError(decode(data), error => cryptoIssue(error, data, options))),
|
|
8934
|
+
encode: (key, options) => writable ? Effect.mapError(KeyFormat_.encode(format, key), error => cryptoIssue(error, key, options)) : cryptoForbiddenEncode(name, key, options)
|
|
8935
|
+
})));
|
|
8936
|
+
};
|
|
8937
|
+
/**
|
|
8938
|
+
* Schema for live `Mac.Key` values of an algorithm.
|
|
8939
|
+
*
|
|
8940
|
+
* **Details**
|
|
8941
|
+
*
|
|
8942
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
8943
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
8944
|
+
* {@link MacKeyFromFormat} or {@link MacKeyFromBytes} to read and write keys.
|
|
8945
|
+
* Keys display redacted, compare by reference, and have no `Arbitrary`.
|
|
8946
|
+
*
|
|
8947
|
+
* @stability unstable
|
|
8948
|
+
* @category crypto
|
|
8949
|
+
* @since 4.0.0
|
|
8950
|
+
*/
|
|
8951
|
+
export const MacKey = algorithm => declareCryptoKey("MacKey", "Mac", "Key", Mac_.isKey, algorithm);
|
|
8952
|
+
/**
|
|
8953
|
+
* Schema that decodes raw key bytes into a `Mac.Key`.
|
|
8954
|
+
*
|
|
8955
|
+
* **Details**
|
|
8956
|
+
*
|
|
8957
|
+
* Decoding runs `Mac.key`, which is synchronous, so the schema works with
|
|
8958
|
+
* `Schema.decodeSync`. Under `Config.schema` the bytes are read as base64. A
|
|
8959
|
+
* `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
|
|
8960
|
+
* Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`.
|
|
8961
|
+
*
|
|
8962
|
+
* **Example** (Reading an HMAC key from the environment)
|
|
8963
|
+
*
|
|
8964
|
+
* ```ts import.meta.vitest
|
|
8965
|
+
* import { Config, ConfigProvider, Effect, Schema } from "effect"
|
|
8966
|
+
* import { Mac } from "effect/crypto"
|
|
8967
|
+
*
|
|
8968
|
+
* const config = Config.schema(Schema.MacKeyFromBytes(Mac.hmacSha256), "HMAC_KEY")
|
|
8969
|
+
* const provider = ConfigProvider.fromEnv({ env: { HMAC_KEY: "A".repeat(43) + "=" } })
|
|
8970
|
+
* const key = await Effect.runPromise(Effect.provide(config, ConfigProvider.layer(provider)))
|
|
8971
|
+
* key.algorithm.name // => "hmacSha256"
|
|
8972
|
+
* ```
|
|
8973
|
+
*
|
|
8974
|
+
* @stability unstable
|
|
8975
|
+
* @category crypto
|
|
8976
|
+
* @since 4.0.0
|
|
8977
|
+
*/
|
|
8978
|
+
export const MacKeyFromBytes = (algorithm, options) => cryptoKeyFromBytes("MacKeyFromBytes", MacKey(algorithm), bytes => Mac_.key(algorithm, bytes), options?.allowEncode === true ? Mac_.toBytes : undefined);
|
|
8979
|
+
/**
|
|
8980
|
+
* Schema that decodes a `Mac.Key` from a JWK with `KeyFormat.decodeSecret`.
|
|
8981
|
+
*
|
|
8982
|
+
* **Details**
|
|
8983
|
+
*
|
|
8984
|
+
* Decoding returns an Effect, so use the async decoding functions:
|
|
8985
|
+
* `Schema.decodeSync` throws. A `CryptoError` becomes an `InvalidValue` issue
|
|
8986
|
+
* whose `cause` is the error. Encoding fails with a `Forbidden` issue unless
|
|
8987
|
+
* `allowEncode` is `true`.
|
|
8988
|
+
*
|
|
8989
|
+
* @stability unstable
|
|
8990
|
+
* @category crypto
|
|
8991
|
+
* @since 4.0.0
|
|
8992
|
+
*/
|
|
8993
|
+
export const MacKeyFromFormat = (format, algorithm, options) => cryptoKeyFromFormat("MacKeyFromFormat", MacKey(algorithm), format, data => KeyFormat_.decodeSecret(format, algorithm, data), options?.allowEncode === true);
|
|
8994
|
+
/**
|
|
8995
|
+
* Schema for live `Aead.Key` values of an algorithm.
|
|
8996
|
+
*
|
|
8997
|
+
* **Details**
|
|
8998
|
+
*
|
|
8999
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9000
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9001
|
+
* {@link AeadKeyFromFormat} or {@link AeadKeyFromBytes} to read and write
|
|
9002
|
+
* keys. Keys display redacted, compare by reference, and have no `Arbitrary`.
|
|
9003
|
+
*
|
|
9004
|
+
* @stability unstable
|
|
9005
|
+
* @category crypto
|
|
9006
|
+
* @since 4.0.0
|
|
9007
|
+
*/
|
|
9008
|
+
export const AeadKey = algorithm => declareCryptoKey("AeadKey", "Aead", "Key", Aead_.isKey, algorithm);
|
|
9009
|
+
/**
|
|
9010
|
+
* Schema that decodes raw key bytes into an `Aead.Key`.
|
|
9011
|
+
*
|
|
9012
|
+
* **Details**
|
|
9013
|
+
*
|
|
9014
|
+
* Decoding runs `Aead.key`, which is synchronous, so the schema works with
|
|
9015
|
+
* `Schema.decodeSync`. Under `Config.schema` the bytes are read as base64. A
|
|
9016
|
+
* `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
|
|
9017
|
+
* Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`.
|
|
9018
|
+
*
|
|
9019
|
+
* @stability unstable
|
|
9020
|
+
* @category crypto
|
|
9021
|
+
* @since 4.0.0
|
|
9022
|
+
*/
|
|
9023
|
+
export const AeadKeyFromBytes = (algorithm, options) => cryptoKeyFromBytes("AeadKeyFromBytes", AeadKey(algorithm), bytes => Aead_.key(algorithm, bytes), options?.allowEncode === true ? Aead_.toBytes : undefined);
|
|
9024
|
+
/**
|
|
9025
|
+
* Schema that decodes an `Aead.Key` from a JWK with `KeyFormat.decodeSecret`.
|
|
9026
|
+
*
|
|
9027
|
+
* **Details**
|
|
9028
|
+
*
|
|
9029
|
+
* Decoding returns an Effect, so use the async decoding functions:
|
|
9030
|
+
* `Schema.decodeSync` throws. A `CryptoError` becomes an `InvalidValue` issue
|
|
9031
|
+
* whose `cause` is the error. Encoding fails with a `Forbidden` issue unless
|
|
9032
|
+
* `allowEncode` is `true`.
|
|
9033
|
+
*
|
|
9034
|
+
* @stability unstable
|
|
9035
|
+
* @category crypto
|
|
9036
|
+
* @since 4.0.0
|
|
9037
|
+
*/
|
|
9038
|
+
export const AeadKeyFromFormat = (format, algorithm, options) => cryptoKeyFromFormat("AeadKeyFromFormat", AeadKey(algorithm), format, data => KeyFormat_.decodeSecret(format, algorithm, data), options?.allowEncode === true);
|
|
9039
|
+
/**
|
|
9040
|
+
* Schema for live `Cipher.Key` values of an algorithm.
|
|
9041
|
+
*
|
|
9042
|
+
* **Details**
|
|
9043
|
+
*
|
|
9044
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9045
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9046
|
+
* {@link CipherKeyFromFormat} or {@link CipherKeyFromBytes} to read and
|
|
9047
|
+
* write keys. Keys display redacted, compare by reference, and have no
|
|
9048
|
+
* `Arbitrary`.
|
|
9049
|
+
*
|
|
9050
|
+
* @stability unstable
|
|
9051
|
+
* @category crypto
|
|
9052
|
+
* @since 4.0.0
|
|
9053
|
+
*/
|
|
9054
|
+
export const CipherKey = algorithm => declareCryptoKey("CipherKey", "Cipher", "Key", Cipher_.isKey, algorithm);
|
|
9055
|
+
/**
|
|
9056
|
+
* Schema that decodes raw key bytes into a `Cipher.Key`.
|
|
9057
|
+
*
|
|
9058
|
+
* **Details**
|
|
9059
|
+
*
|
|
9060
|
+
* Decoding runs `Cipher.key`, which is synchronous, so the schema works with
|
|
9061
|
+
* `Schema.decodeSync`. Under `Config.schema` the bytes are read as base64. A
|
|
9062
|
+
* `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
|
|
9063
|
+
* Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`.
|
|
9064
|
+
*
|
|
9065
|
+
* @stability unstable
|
|
9066
|
+
* @category crypto
|
|
9067
|
+
* @since 4.0.0
|
|
9068
|
+
*/
|
|
9069
|
+
export const CipherKeyFromBytes = (algorithm, options) => cryptoKeyFromBytes("CipherKeyFromBytes", CipherKey(algorithm), bytes => Cipher_.key(algorithm, bytes), options?.allowEncode === true ? Cipher_.toBytes : undefined);
|
|
9070
|
+
/**
|
|
9071
|
+
* Schema that decodes a `Cipher.Key` from a JWK with
|
|
9072
|
+
* `KeyFormat.decodeSecret`.
|
|
9073
|
+
*
|
|
9074
|
+
* **Details**
|
|
9075
|
+
*
|
|
9076
|
+
* Decoding returns an Effect, so use the async decoding functions:
|
|
9077
|
+
* `Schema.decodeSync` throws. A `CryptoError` becomes an `InvalidValue` issue
|
|
9078
|
+
* whose `cause` is the error. Encoding fails with a `Forbidden` issue unless
|
|
9079
|
+
* `allowEncode` is `true`.
|
|
9080
|
+
*
|
|
9081
|
+
* @stability unstable
|
|
9082
|
+
* @category crypto
|
|
9083
|
+
* @since 4.0.0
|
|
9084
|
+
*/
|
|
9085
|
+
export const CipherKeyFromFormat = (format, algorithm, options) => cryptoKeyFromFormat("CipherKeyFromFormat", CipherKey(algorithm), format, data => KeyFormat_.decodeSecret(format, algorithm, data), options?.allowEncode === true);
|
|
9086
|
+
/**
|
|
9087
|
+
* Schema for live `Signature.PublicKey` values of an algorithm.
|
|
9088
|
+
*
|
|
9089
|
+
* **Details**
|
|
9090
|
+
*
|
|
9091
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9092
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9093
|
+
* {@link SignaturePublicKeyFromFormat} or {@link SignaturePublicKeyFromBytes}
|
|
9094
|
+
* to read and write keys. Keys compare by reference and have no `Arbitrary`.
|
|
9095
|
+
*
|
|
9096
|
+
* @stability unstable
|
|
9097
|
+
* @category crypto
|
|
9098
|
+
* @since 4.0.0
|
|
9099
|
+
*/
|
|
9100
|
+
export const SignaturePublicKey = algorithm => declareCryptoKey("SignaturePublicKey", "Signature", "PublicKey", Signature_.isPublicKey, algorithm);
|
|
9101
|
+
/**
|
|
9102
|
+
* Schema that decodes a raw public key into a `Signature.PublicKey`: 32 bytes
|
|
9103
|
+
* for Ed25519, or an uncompressed SEC1 point for ECDSA.
|
|
9104
|
+
*
|
|
9105
|
+
* **Details**
|
|
9106
|
+
*
|
|
9107
|
+
* Decoding runs `Signature.publicKey`, which is synchronous, so the schema
|
|
9108
|
+
* works with `Schema.decodeSync`. Under `Config.schema` the bytes are read as
|
|
9109
|
+
* base64. A `CryptoError` becomes an `InvalidValue` issue whose `cause` is
|
|
9110
|
+
* the error. RSA public keys have no raw form, so passing an RSA algorithm is
|
|
9111
|
+
* a type error.
|
|
9112
|
+
*
|
|
9113
|
+
* @stability unstable
|
|
9114
|
+
* @category crypto
|
|
9115
|
+
* @since 4.0.0
|
|
9116
|
+
*/
|
|
9117
|
+
export const SignaturePublicKeyFromBytes = algorithm => cryptoKeyFromBytes("SignaturePublicKeyFromBytes", SignaturePublicKey(algorithm), bytes => Signature_.publicKey(algorithm, bytes), Signature_.toBytes);
|
|
9118
|
+
/**
|
|
9119
|
+
* Schema that decodes a `Signature.PublicKey` with
|
|
9120
|
+
* `KeyFormat.decodePublic` and encodes it with `KeyFormat.encode`.
|
|
9121
|
+
*
|
|
9122
|
+
* **Details**
|
|
9123
|
+
*
|
|
9124
|
+
* The format must hold public keys: `KeyFormat.spki`, `KeyFormat.jwk`, or
|
|
9125
|
+
* `KeyFormat.pem(KeyFormat.spki)`. A format for another role is a type
|
|
9126
|
+
* error. Decoding runs the runtime's key import, so use the async decoding
|
|
9127
|
+
* functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
|
|
9128
|
+
* `InvalidValue` issue whose `cause` is the error.
|
|
9129
|
+
*
|
|
9130
|
+
* @stability unstable
|
|
9131
|
+
* @category crypto
|
|
9132
|
+
* @since 4.0.0
|
|
9133
|
+
*/
|
|
9134
|
+
export const SignaturePublicKeyFromFormat = (format, algorithm) => cryptoKeyFromFormat("SignaturePublicKeyFromFormat", SignaturePublicKey(algorithm), format, data => KeyFormat_.decodePublic(format, algorithm, data), true);
|
|
9135
|
+
/**
|
|
9136
|
+
* Schema for live `Signature.PrivateKey` values of an algorithm.
|
|
9137
|
+
*
|
|
9138
|
+
* **Details**
|
|
9139
|
+
*
|
|
9140
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9141
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9142
|
+
* {@link SignaturePrivateKeyFromFormat} or
|
|
9143
|
+
* {@link SignaturePrivateKeyFromBytes} to read and write keys. Keys display
|
|
9144
|
+
* redacted, compare by reference, and have no `Arbitrary`.
|
|
9145
|
+
*
|
|
9146
|
+
* @stability unstable
|
|
9147
|
+
* @category crypto
|
|
9148
|
+
* @since 4.0.0
|
|
9149
|
+
*/
|
|
9150
|
+
export const SignaturePrivateKey = algorithm => declareCryptoKey("SignaturePrivateKey", "Signature", "PrivateKey", Signature_.isPrivateKey, algorithm);
|
|
9151
|
+
/**
|
|
9152
|
+
* Schema that decodes an Ed25519 seed into a `Signature.PrivateKey`.
|
|
9153
|
+
*
|
|
9154
|
+
* **Details**
|
|
9155
|
+
*
|
|
9156
|
+
* Decoding runs `Signature.privateKey`, which is synchronous, so the schema
|
|
9157
|
+
* works with `Schema.decodeSync`. Under `Config.schema` the bytes are read as
|
|
9158
|
+
* base64. A `CryptoError` becomes an `InvalidValue` issue whose `cause` is
|
|
9159
|
+
* the error. ECDSA and RSA private keys have no raw form, so passing them is
|
|
9160
|
+
* a type error. Encoding fails with a `Forbidden` issue unless `allowEncode`
|
|
9161
|
+
* is `true`.
|
|
9162
|
+
*
|
|
9163
|
+
* @stability unstable
|
|
9164
|
+
* @category crypto
|
|
9165
|
+
* @since 4.0.0
|
|
9166
|
+
*/
|
|
9167
|
+
export const SignaturePrivateKeyFromBytes = (algorithm, options) => cryptoKeyFromBytes("SignaturePrivateKeyFromBytes", SignaturePrivateKey(algorithm), bytes => Signature_.privateKey(algorithm, bytes), options?.allowEncode === true ? Signature_.toBytes : undefined);
|
|
9168
|
+
/**
|
|
9169
|
+
* Schema that decodes a `Signature.PrivateKey` with
|
|
9170
|
+
* `KeyFormat.decodePrivate`.
|
|
9171
|
+
*
|
|
9172
|
+
* **Details**
|
|
9173
|
+
*
|
|
9174
|
+
* The format must hold private keys: `KeyFormat.pkcs8`, `KeyFormat.jwk`,
|
|
9175
|
+
* `KeyFormat.pkcs1`, `KeyFormat.sec1`, or their PEM forms. A format for
|
|
9176
|
+
* another role is a type error. Decoding runs the runtime's key import, so
|
|
9177
|
+
* use the async decoding functions: `Schema.decodeSync` throws. A
|
|
9178
|
+
* `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
|
|
9179
|
+
* Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`,
|
|
9180
|
+
* and always for the read-only PKCS#1 and SEC1 formats.
|
|
9181
|
+
*
|
|
9182
|
+
* @stability unstable
|
|
9183
|
+
* @category crypto
|
|
9184
|
+
* @since 4.0.0
|
|
9185
|
+
*/
|
|
9186
|
+
export const SignaturePrivateKeyFromFormat = (format, algorithm, options) => cryptoKeyFromFormat("SignaturePrivateKeyFromFormat", SignaturePrivateKey(algorithm), format, data => KeyFormat_.decodePrivate(format, algorithm, data), options?.allowEncode === true);
|
|
9187
|
+
/**
|
|
9188
|
+
* Schema for live `KeyAgreement.PublicKey` values of an algorithm.
|
|
9189
|
+
*
|
|
9190
|
+
* **Details**
|
|
9191
|
+
*
|
|
9192
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9193
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9194
|
+
* {@link KeyAgreementPublicKeyFromFormat} or
|
|
9195
|
+
* {@link KeyAgreementPublicKeyFromBytes} to read and write keys. Keys compare
|
|
9196
|
+
* by reference and have no `Arbitrary`.
|
|
9197
|
+
*
|
|
9198
|
+
* @stability unstable
|
|
9199
|
+
* @category crypto
|
|
9200
|
+
* @since 4.0.0
|
|
9201
|
+
*/
|
|
9202
|
+
export const KeyAgreementPublicKey = algorithm => declareCryptoKey("KeyAgreementPublicKey", "KeyAgreement", "PublicKey", KeyAgreement_.isPublicKey, algorithm);
|
|
9203
|
+
/**
|
|
9204
|
+
* Schema that decodes a raw public key into a `KeyAgreement.PublicKey`: 32
|
|
9205
|
+
* bytes for X25519, or an uncompressed SEC1 point for ECDH.
|
|
9206
|
+
*
|
|
9207
|
+
* **Details**
|
|
9208
|
+
*
|
|
9209
|
+
* Decoding runs `KeyAgreement.publicKey`, which is synchronous, so the schema
|
|
9210
|
+
* works with `Schema.decodeSync`. Under `Config.schema` the bytes are read as
|
|
9211
|
+
* base64. A `CryptoError` becomes an `InvalidValue` issue whose `cause` is
|
|
9212
|
+
* the error.
|
|
9213
|
+
*
|
|
9214
|
+
* @stability unstable
|
|
9215
|
+
* @category crypto
|
|
9216
|
+
* @since 4.0.0
|
|
9217
|
+
*/
|
|
9218
|
+
export const KeyAgreementPublicKeyFromBytes = algorithm => cryptoKeyFromBytes("KeyAgreementPublicKeyFromBytes", KeyAgreementPublicKey(algorithm), bytes => KeyAgreement_.publicKey(algorithm, bytes), KeyAgreement_.toBytes);
|
|
9219
|
+
/**
|
|
9220
|
+
* Schema that decodes a `KeyAgreement.PublicKey` with
|
|
9221
|
+
* `KeyFormat.decodePublic` and encodes it with `KeyFormat.encode`.
|
|
9222
|
+
*
|
|
9223
|
+
* **Details**
|
|
9224
|
+
*
|
|
9225
|
+
* The format must hold public keys: `KeyFormat.spki`, `KeyFormat.jwk`, or
|
|
9226
|
+
* `KeyFormat.pem(KeyFormat.spki)`. A format for another role is a type
|
|
9227
|
+
* error. Decoding runs the runtime's key import, so use the async decoding
|
|
9228
|
+
* functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
|
|
9229
|
+
* `InvalidValue` issue whose `cause` is the error.
|
|
9230
|
+
*
|
|
9231
|
+
* @stability unstable
|
|
9232
|
+
* @category crypto
|
|
9233
|
+
* @since 4.0.0
|
|
9234
|
+
*/
|
|
9235
|
+
export const KeyAgreementPublicKeyFromFormat = (format, algorithm) => cryptoKeyFromFormat("KeyAgreementPublicKeyFromFormat", KeyAgreementPublicKey(algorithm), format, data => KeyFormat_.decodePublic(format, algorithm, data), true);
|
|
9236
|
+
/**
|
|
9237
|
+
* Schema for live `KeyAgreement.PrivateKey` values of an algorithm.
|
|
9238
|
+
*
|
|
9239
|
+
* **Details**
|
|
9240
|
+
*
|
|
9241
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9242
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9243
|
+
* {@link KeyAgreementPrivateKeyFromFormat} or
|
|
9244
|
+
* {@link KeyAgreementPrivateKeyFromBytes} to read and write keys. Keys
|
|
9245
|
+
* display redacted, compare by reference, and have no `Arbitrary`.
|
|
9246
|
+
*
|
|
9247
|
+
* @stability unstable
|
|
9248
|
+
* @category crypto
|
|
9249
|
+
* @since 4.0.0
|
|
9250
|
+
*/
|
|
9251
|
+
export const KeyAgreementPrivateKey = algorithm => declareCryptoKey("KeyAgreementPrivateKey", "KeyAgreement", "PrivateKey", KeyAgreement_.isPrivateKey, algorithm);
|
|
9252
|
+
/**
|
|
9253
|
+
* Schema that decodes an X25519 private key into a
|
|
9254
|
+
* `KeyAgreement.PrivateKey`.
|
|
9255
|
+
*
|
|
9256
|
+
* **Details**
|
|
9257
|
+
*
|
|
9258
|
+
* Decoding runs `KeyAgreement.privateKey`, which is synchronous, so the
|
|
9259
|
+
* schema works with `Schema.decodeSync`. Under `Config.schema` the bytes are
|
|
9260
|
+
* read as base64. A `CryptoError` becomes an `InvalidValue` issue whose
|
|
9261
|
+
* `cause` is the error. ECDH private keys have no raw form, so passing them
|
|
9262
|
+
* is a type error. Encoding fails with a `Forbidden` issue unless
|
|
9263
|
+
* `allowEncode` is `true`.
|
|
9264
|
+
*
|
|
9265
|
+
* @stability unstable
|
|
9266
|
+
* @category crypto
|
|
9267
|
+
* @since 4.0.0
|
|
9268
|
+
*/
|
|
9269
|
+
export const KeyAgreementPrivateKeyFromBytes = (algorithm, options) => cryptoKeyFromBytes("KeyAgreementPrivateKeyFromBytes", KeyAgreementPrivateKey(algorithm), bytes => KeyAgreement_.privateKey(algorithm, bytes), options?.allowEncode === true ? KeyAgreement_.toBytes : undefined);
|
|
9270
|
+
/**
|
|
9271
|
+
* Schema that decodes a `KeyAgreement.PrivateKey` with
|
|
9272
|
+
* `KeyFormat.decodePrivate`.
|
|
9273
|
+
*
|
|
9274
|
+
* **Details**
|
|
9275
|
+
*
|
|
9276
|
+
* The format must hold private keys: `KeyFormat.pkcs8`, `KeyFormat.jwk`,
|
|
9277
|
+
* `KeyFormat.sec1`, or their PEM forms. A format for another role is a type
|
|
9278
|
+
* error. Decoding runs the runtime's key import, so use the async decoding
|
|
9279
|
+
* functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
|
|
9280
|
+
* `InvalidValue` issue whose `cause` is the error. Encoding fails with a
|
|
9281
|
+
* `Forbidden` issue unless `allowEncode` is `true`, and always for the
|
|
9282
|
+
* read-only PKCS#1 and SEC1 formats.
|
|
9283
|
+
*
|
|
9284
|
+
* @stability unstable
|
|
9285
|
+
* @category crypto
|
|
9286
|
+
* @since 4.0.0
|
|
9287
|
+
*/
|
|
9288
|
+
export const KeyAgreementPrivateKeyFromFormat = (format, algorithm, options) => cryptoKeyFromFormat("KeyAgreementPrivateKeyFromFormat", KeyAgreementPrivateKey(algorithm), format, data => KeyFormat_.decodePrivate(format, algorithm, data), options?.allowEncode === true);
|
|
9289
|
+
/**
|
|
9290
|
+
* Schema for live AES-KW `KeyWrap.Key` values of an algorithm.
|
|
9291
|
+
*
|
|
9292
|
+
* **Details**
|
|
9293
|
+
*
|
|
9294
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9295
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9296
|
+
* {@link KeyWrapKeyFromFormat} or {@link KeyWrapKeyFromBytes} to read and
|
|
9297
|
+
* write keys. Keys display redacted, compare by reference, and have no
|
|
9298
|
+
* `Arbitrary`.
|
|
9299
|
+
*
|
|
9300
|
+
* @stability unstable
|
|
9301
|
+
* @category crypto
|
|
9302
|
+
* @since 4.0.0
|
|
9303
|
+
*/
|
|
9304
|
+
export const KeyWrapKey = algorithm => declareCryptoKey("KeyWrapKey", "KeyWrap", "Key", KeyWrap_.isKey, algorithm);
|
|
9305
|
+
/**
|
|
9306
|
+
* Schema that decodes raw key bytes into an AES-KW `KeyWrap.Key`.
|
|
9307
|
+
*
|
|
9308
|
+
* **Details**
|
|
9309
|
+
*
|
|
9310
|
+
* Decoding runs `KeyWrap.key`, which is synchronous, so the schema works with
|
|
9311
|
+
* `Schema.decodeSync`. Under `Config.schema` the bytes are read as base64. A
|
|
9312
|
+
* `CryptoError` becomes an `InvalidValue` issue whose `cause` is the error.
|
|
9313
|
+
* Encoding fails with a `Forbidden` issue unless `allowEncode` is `true`.
|
|
9314
|
+
*
|
|
9315
|
+
* @stability unstable
|
|
9316
|
+
* @category crypto
|
|
9317
|
+
* @since 4.0.0
|
|
9318
|
+
*/
|
|
9319
|
+
export const KeyWrapKeyFromBytes = (algorithm, options) => cryptoKeyFromBytes("KeyWrapKeyFromBytes", KeyWrapKey(algorithm), bytes => KeyWrap_.key(algorithm, bytes), options?.allowEncode === true ? KeyWrap_.toBytes : undefined);
|
|
9320
|
+
/**
|
|
9321
|
+
* Schema that decodes an AES-KW `KeyWrap.Key` from a JWK with
|
|
9322
|
+
* `KeyFormat.decodeSecret`.
|
|
9323
|
+
*
|
|
9324
|
+
* **Details**
|
|
9325
|
+
*
|
|
9326
|
+
* Decoding returns an Effect, so use the async decoding functions:
|
|
9327
|
+
* `Schema.decodeSync` throws. A `CryptoError` becomes an `InvalidValue` issue
|
|
9328
|
+
* whose `cause` is the error. Encoding fails with a `Forbidden` issue unless
|
|
9329
|
+
* `allowEncode` is `true`.
|
|
9330
|
+
*
|
|
9331
|
+
* @stability unstable
|
|
9332
|
+
* @category crypto
|
|
9333
|
+
* @since 4.0.0
|
|
9334
|
+
*/
|
|
9335
|
+
export const KeyWrapKeyFromFormat = (format, algorithm, options) => cryptoKeyFromFormat("KeyWrapKeyFromFormat", KeyWrapKey(algorithm), format, data => KeyFormat_.decodeSecret(format, algorithm, data), options?.allowEncode === true);
|
|
9336
|
+
/**
|
|
9337
|
+
* Schema for live RSA-OAEP `KeyWrap.PublicKey` values of an algorithm.
|
|
9338
|
+
*
|
|
9339
|
+
* **Details**
|
|
9340
|
+
*
|
|
9341
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9342
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9343
|
+
* {@link KeyWrapPublicKeyFromFormat} to read and write keys. RSA-OAEP keys
|
|
9344
|
+
* have no raw form. Keys compare by reference and have no `Arbitrary`.
|
|
9345
|
+
*
|
|
9346
|
+
* @stability unstable
|
|
9347
|
+
* @category crypto
|
|
9348
|
+
* @since 4.0.0
|
|
9349
|
+
*/
|
|
9350
|
+
export const KeyWrapPublicKey = algorithm => declareCryptoKey("KeyWrapPublicKey", "KeyWrap", "PublicKey", KeyWrap_.isPublicKey, algorithm);
|
|
9351
|
+
/**
|
|
9352
|
+
* Schema that decodes an RSA-OAEP `KeyWrap.PublicKey` with
|
|
9353
|
+
* `KeyFormat.decodePublic` and encodes it with `KeyFormat.encode`.
|
|
9354
|
+
*
|
|
9355
|
+
* **Details**
|
|
9356
|
+
*
|
|
9357
|
+
* The format must hold public keys: `KeyFormat.spki`, `KeyFormat.jwk`, or
|
|
9358
|
+
* `KeyFormat.pem(KeyFormat.spki)`. A format for another role is a type
|
|
9359
|
+
* error. Decoding runs the runtime's key import, so use the async decoding
|
|
9360
|
+
* functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
|
|
9361
|
+
* `InvalidValue` issue whose `cause` is the error.
|
|
9362
|
+
*
|
|
9363
|
+
* @stability unstable
|
|
9364
|
+
* @category crypto
|
|
9365
|
+
* @since 4.0.0
|
|
9366
|
+
*/
|
|
9367
|
+
export const KeyWrapPublicKeyFromFormat = (format, algorithm) => cryptoKeyFromFormat("KeyWrapPublicKeyFromFormat", KeyWrapPublicKey(algorithm), format, data => KeyFormat_.decodePublic(format, algorithm, data), true);
|
|
9368
|
+
/**
|
|
9369
|
+
* Schema for live RSA-OAEP `KeyWrap.PrivateKey` values of an algorithm.
|
|
9370
|
+
*
|
|
9371
|
+
* **Details**
|
|
9372
|
+
*
|
|
9373
|
+
* Decoding checks the key's algorithm and returns the key itself. The key has
|
|
9374
|
+
* no JSON form: `toCodecJson` fails with a `Forbidden` issue, so use
|
|
9375
|
+
* {@link KeyWrapPrivateKeyFromFormat} to read and write keys. RSA-OAEP keys
|
|
9376
|
+
* have no raw form. Keys display redacted, compare by reference, and have no
|
|
9377
|
+
* `Arbitrary`.
|
|
9378
|
+
*
|
|
9379
|
+
* @stability unstable
|
|
9380
|
+
* @category crypto
|
|
9381
|
+
* @since 4.0.0
|
|
9382
|
+
*/
|
|
9383
|
+
export const KeyWrapPrivateKey = algorithm => declareCryptoKey("KeyWrapPrivateKey", "KeyWrap", "PrivateKey", KeyWrap_.isPrivateKey, algorithm);
|
|
9384
|
+
/**
|
|
9385
|
+
* Schema that decodes an RSA-OAEP `KeyWrap.PrivateKey` with
|
|
9386
|
+
* `KeyFormat.decodePrivate`.
|
|
9387
|
+
*
|
|
9388
|
+
* **Details**
|
|
9389
|
+
*
|
|
9390
|
+
* The format must hold private keys: `KeyFormat.pkcs8`, `KeyFormat.jwk`,
|
|
9391
|
+
* `KeyFormat.pkcs1`, or their PEM forms. A format for another role is a type
|
|
9392
|
+
* error. Decoding runs the runtime's key import, so use the async decoding
|
|
9393
|
+
* functions: `Schema.decodeSync` throws. A `CryptoError` becomes an
|
|
9394
|
+
* `InvalidValue` issue whose `cause` is the error. Encoding fails with a
|
|
9395
|
+
* `Forbidden` issue unless `allowEncode` is `true`, and always for the
|
|
9396
|
+
* read-only PKCS#1 format.
|
|
9397
|
+
*
|
|
9398
|
+
* @stability unstable
|
|
9399
|
+
* @category crypto
|
|
9400
|
+
* @since 4.0.0
|
|
9401
|
+
*/
|
|
9402
|
+
export const KeyWrapPrivateKeyFromFormat = (format, algorithm, options) => cryptoKeyFromFormat("KeyWrapPrivateKeyFromFormat", KeyWrapPrivateKey(algorithm), format, data => KeyFormat_.decodePrivate(format, algorithm, data), options?.allowEncode === true);
|
|
8753
9403
|
/**
|
|
8754
9404
|
* Creates a schema for `Exit` values using schemas for the success value, typed
|
|
8755
9405
|
* failure, and unexpected defect channels.
|