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
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Digital signatures: Ed25519, ECDSA on P-256, P-384 and P-521, RSA-PSS, and
|
|
3
|
+
* RSASSA-PKCS1-v1_5.
|
|
4
|
+
*
|
|
5
|
+
* The {@link Signature} service generates key pairs, signs, verifies, and
|
|
6
|
+
* computes a private key's public key. The top-level {@link privateKey},
|
|
7
|
+
* {@link publicKey}, {@link privateKeyFromCryptoKey},
|
|
8
|
+
* {@link publicKeyFromCryptoKey}, and {@link toBytes} functions build and
|
|
9
|
+
* export keys without a service.
|
|
10
|
+
*
|
|
11
|
+
* The hash is part of the algorithm. ECDSA P-256, P-384 and P-521 sign with
|
|
12
|
+
* SHA-256, SHA-384 and SHA-512, as JOSE ES256, ES384 and ES512 do. RSA
|
|
13
|
+
* algorithms come from {@link rsaPss} and {@link rsaPkcs1v15}, with pre-made
|
|
14
|
+
* values such as {@link rsaPssSha256}.
|
|
15
|
+
*
|
|
16
|
+
* Keys are opaque. They hold either bytes or a `CryptoKey`, display only their
|
|
17
|
+
* algorithm, and compare by reference. The bytes are:
|
|
18
|
+
*
|
|
19
|
+
* - Ed25519: the 32-byte seed and the 32-byte public key;
|
|
20
|
+
* - ECDSA: PKCS#8 for private keys, and the uncompressed SEC1 point for public
|
|
21
|
+
* keys;
|
|
22
|
+
* - RSA: PKCS#8 and SPKI DER.
|
|
23
|
+
*
|
|
24
|
+
* Only Ed25519 private keys and Ed25519 and ECDSA public keys have a raw
|
|
25
|
+
* constructor. Other keys come from `Signature.generateKeyPair`,
|
|
26
|
+
* `CryptoKey`s, or key formats.
|
|
27
|
+
*
|
|
28
|
+
* **Gotchas**
|
|
29
|
+
*
|
|
30
|
+
* - Ed25519 needs Chrome 137, Firefox 129, or Safari 17. There is no
|
|
31
|
+
* fallback for older browsers.
|
|
32
|
+
* - Ed25519 keys are generated from `SecureRandom` bytes, so a seeded
|
|
33
|
+
* `SecureRandom` reproduces them. ECDSA and RSA key generation, and ECDSA
|
|
34
|
+
* and RSA-PSS signatures, use WebCrypto's own randomness and cannot be
|
|
35
|
+
* seeded. Test them with round trips such as `verify(sign(data))`.
|
|
36
|
+
*
|
|
37
|
+
* @stability unstable
|
|
38
|
+
* @since 4.0.0
|
|
39
|
+
*/
|
|
40
|
+
import * as Context from "../Context.js";
|
|
41
|
+
import * as Effect from "../Effect.js";
|
|
42
|
+
import * as Layer from "../Layer.js";
|
|
43
|
+
import * as Predicate from "../Predicate.js";
|
|
44
|
+
import * as CryptoError from "./CryptoError.js";
|
|
45
|
+
import * as Digest from "./Digest.js";
|
|
46
|
+
import * as Asymmetric from "./internal/asymmetric.js";
|
|
47
|
+
import * as KeyModel from "./internal/key.js";
|
|
48
|
+
import * as internal from "./internal/webCrypto.js";
|
|
49
|
+
import * as SecureRandom from "./SecureRandom.js";
|
|
50
|
+
import { WebCrypto } from "./WebCrypto.js";
|
|
51
|
+
const PrivateKeyTypeId = "~effect/crypto/Signature/PrivateKey";
|
|
52
|
+
const PublicKeyTypeId = "~effect/crypto/Signature/PublicKey";
|
|
53
|
+
/**
|
|
54
|
+
* Ed25519 (RFC 8032).
|
|
55
|
+
*
|
|
56
|
+
* @stability unstable
|
|
57
|
+
* @category algorithms
|
|
58
|
+
* @since 4.0.0
|
|
59
|
+
*/
|
|
60
|
+
export const ed25519 = {
|
|
61
|
+
_tag: "Ed25519",
|
|
62
|
+
name: "ed25519"
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* ECDSA on P-256 with SHA-256 (JOSE ES256), with 64-byte signatures.
|
|
66
|
+
*
|
|
67
|
+
* @stability unstable
|
|
68
|
+
* @category algorithms
|
|
69
|
+
* @since 4.0.0
|
|
70
|
+
*/
|
|
71
|
+
export const ecdsaP256 = {
|
|
72
|
+
_tag: "Ecdsa",
|
|
73
|
+
name: "ecdsaP256",
|
|
74
|
+
namedCurve: "P-256",
|
|
75
|
+
hash: Digest.sha256
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* ECDSA on P-384 with SHA-384 (JOSE ES384), with 96-byte signatures.
|
|
79
|
+
*
|
|
80
|
+
* @stability unstable
|
|
81
|
+
* @category algorithms
|
|
82
|
+
* @since 4.0.0
|
|
83
|
+
*/
|
|
84
|
+
export const ecdsaP384 = {
|
|
85
|
+
_tag: "Ecdsa",
|
|
86
|
+
name: "ecdsaP384",
|
|
87
|
+
namedCurve: "P-384",
|
|
88
|
+
hash: Digest.sha384
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* ECDSA on P-521 with SHA-512 (JOSE ES512), with 132-byte signatures.
|
|
92
|
+
*
|
|
93
|
+
* @stability unstable
|
|
94
|
+
* @category algorithms
|
|
95
|
+
* @since 4.0.0
|
|
96
|
+
*/
|
|
97
|
+
export const ecdsaP521 = {
|
|
98
|
+
_tag: "Ecdsa",
|
|
99
|
+
name: "ecdsaP521",
|
|
100
|
+
namedCurve: "P-521",
|
|
101
|
+
hash: Digest.sha512
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Builds an RSA-PSS algorithm for a hash and a modulus length in bits.
|
|
105
|
+
*
|
|
106
|
+
* **Details**
|
|
107
|
+
*
|
|
108
|
+
* MGF1 uses the same hash. The salt length defaults to the hash's output
|
|
109
|
+
* length.
|
|
110
|
+
*
|
|
111
|
+
* @stability unstable
|
|
112
|
+
* @category algorithms
|
|
113
|
+
* @since 4.0.0
|
|
114
|
+
*/
|
|
115
|
+
export const rsaPss = options => ({
|
|
116
|
+
_tag: "RsaPss",
|
|
117
|
+
name: `rsaPss${Digest.nameSuffix(options.hash)}`,
|
|
118
|
+
hash: options.hash,
|
|
119
|
+
modulusLength: options.modulusLength,
|
|
120
|
+
saltLength: options.saltLength ?? options.hash.outputLength
|
|
121
|
+
});
|
|
122
|
+
/**
|
|
123
|
+
* Builds an RSASSA-PKCS1-v1_5 algorithm for a hash and a modulus length in
|
|
124
|
+
* bits.
|
|
125
|
+
*
|
|
126
|
+
* @stability unstable
|
|
127
|
+
* @category algorithms
|
|
128
|
+
* @since 4.0.0
|
|
129
|
+
*/
|
|
130
|
+
export const rsaPkcs1v15 = options => ({
|
|
131
|
+
_tag: "RsaPkcs1v15",
|
|
132
|
+
name: `rsaPkcs1v15${Digest.nameSuffix(options.hash)}`,
|
|
133
|
+
hash: options.hash,
|
|
134
|
+
modulusLength: options.modulusLength
|
|
135
|
+
});
|
|
136
|
+
/**
|
|
137
|
+
* RSA-PSS with SHA-256 (JOSE PS256), generating 3072-bit keys.
|
|
138
|
+
*
|
|
139
|
+
* @stability unstable
|
|
140
|
+
* @category algorithms
|
|
141
|
+
* @since 4.0.0
|
|
142
|
+
*/
|
|
143
|
+
export const rsaPssSha256 = /*#__PURE__*/rsaPss({
|
|
144
|
+
hash: Digest.sha256,
|
|
145
|
+
modulusLength: 3072
|
|
146
|
+
});
|
|
147
|
+
/**
|
|
148
|
+
* RSA-PSS with SHA-384 (JOSE PS384), generating 3072-bit keys.
|
|
149
|
+
*
|
|
150
|
+
* @stability unstable
|
|
151
|
+
* @category algorithms
|
|
152
|
+
* @since 4.0.0
|
|
153
|
+
*/
|
|
154
|
+
export const rsaPssSha384 = /*#__PURE__*/rsaPss({
|
|
155
|
+
hash: Digest.sha384,
|
|
156
|
+
modulusLength: 3072
|
|
157
|
+
});
|
|
158
|
+
/**
|
|
159
|
+
* RSA-PSS with SHA-512 (JOSE PS512), generating 3072-bit keys.
|
|
160
|
+
*
|
|
161
|
+
* @stability unstable
|
|
162
|
+
* @category algorithms
|
|
163
|
+
* @since 4.0.0
|
|
164
|
+
*/
|
|
165
|
+
export const rsaPssSha512 = /*#__PURE__*/rsaPss({
|
|
166
|
+
hash: Digest.sha512,
|
|
167
|
+
modulusLength: 3072
|
|
168
|
+
});
|
|
169
|
+
/**
|
|
170
|
+
* RSASSA-PKCS1-v1_5 with SHA-256 (JOSE RS256), generating 3072-bit keys.
|
|
171
|
+
*
|
|
172
|
+
* @stability unstable
|
|
173
|
+
* @category algorithms
|
|
174
|
+
* @since 4.0.0
|
|
175
|
+
*/
|
|
176
|
+
export const rsaPkcs1v15Sha256 = /*#__PURE__*/rsaPkcs1v15({
|
|
177
|
+
hash: Digest.sha256,
|
|
178
|
+
modulusLength: 3072
|
|
179
|
+
});
|
|
180
|
+
/**
|
|
181
|
+
* RSASSA-PKCS1-v1_5 with SHA-384 (JOSE RS384), generating 3072-bit keys.
|
|
182
|
+
*
|
|
183
|
+
* @stability unstable
|
|
184
|
+
* @category algorithms
|
|
185
|
+
* @since 4.0.0
|
|
186
|
+
*/
|
|
187
|
+
export const rsaPkcs1v15Sha384 = /*#__PURE__*/rsaPkcs1v15({
|
|
188
|
+
hash: Digest.sha384,
|
|
189
|
+
modulusLength: 3072
|
|
190
|
+
});
|
|
191
|
+
/**
|
|
192
|
+
* RSASSA-PKCS1-v1_5 with SHA-512 (JOSE RS512), generating 3072-bit keys.
|
|
193
|
+
*
|
|
194
|
+
* @stability unstable
|
|
195
|
+
* @category algorithms
|
|
196
|
+
* @since 4.0.0
|
|
197
|
+
*/
|
|
198
|
+
export const rsaPkcs1v15Sha512 = /*#__PURE__*/rsaPkcs1v15({
|
|
199
|
+
hash: Digest.sha512,
|
|
200
|
+
modulusLength: 3072
|
|
201
|
+
});
|
|
202
|
+
const PrivateKeyProto = /*#__PURE__*/KeyModel.redactedProto(PrivateKeyTypeId, "Signature.PrivateKey");
|
|
203
|
+
const PublicKeyProto = /*#__PURE__*/KeyModel.redactedProto(PublicKeyTypeId, "Signature.PublicKey");
|
|
204
|
+
/**
|
|
205
|
+
* Checks whether a value is a {@link PrivateKey}.
|
|
206
|
+
*
|
|
207
|
+
* @stability unstable
|
|
208
|
+
* @category guards
|
|
209
|
+
* @since 4.0.0
|
|
210
|
+
*/
|
|
211
|
+
export const isPrivateKey = u => Predicate.hasProperty(u, PrivateKeyTypeId);
|
|
212
|
+
/**
|
|
213
|
+
* Checks whether a value is a {@link PublicKey}.
|
|
214
|
+
*
|
|
215
|
+
* @stability unstable
|
|
216
|
+
* @category guards
|
|
217
|
+
* @since 4.0.0
|
|
218
|
+
*/
|
|
219
|
+
export const isPublicKey = u => Predicate.hasProperty(u, PublicKeyTypeId);
|
|
220
|
+
const specOf = algorithm => {
|
|
221
|
+
const base = {
|
|
222
|
+
privateUsages: ["sign"],
|
|
223
|
+
publicUsages: ["verify"]
|
|
224
|
+
};
|
|
225
|
+
switch (algorithm._tag) {
|
|
226
|
+
case "Ed25519":
|
|
227
|
+
return {
|
|
228
|
+
...base,
|
|
229
|
+
name: "Ed25519",
|
|
230
|
+
importParams: {
|
|
231
|
+
name: "Ed25519"
|
|
232
|
+
},
|
|
233
|
+
seedPrefix: Asymmetric.ed25519Prefix,
|
|
234
|
+
publicFormat: "raw"
|
|
235
|
+
};
|
|
236
|
+
case "Ecdsa":
|
|
237
|
+
return {
|
|
238
|
+
...base,
|
|
239
|
+
name: "ECDSA",
|
|
240
|
+
importParams: {
|
|
241
|
+
name: "ECDSA",
|
|
242
|
+
namedCurve: algorithm.namedCurve
|
|
243
|
+
},
|
|
244
|
+
seedPrefix: undefined,
|
|
245
|
+
publicFormat: "raw",
|
|
246
|
+
check: Asymmetric.checkNamedCurve(algorithm.namedCurve)
|
|
247
|
+
};
|
|
248
|
+
case "RsaPss":
|
|
249
|
+
case "RsaPkcs1v15":
|
|
250
|
+
{
|
|
251
|
+
const name = algorithm._tag === "RsaPss" ? "RSA-PSS" : "RSASSA-PKCS1-v1_5";
|
|
252
|
+
return {
|
|
253
|
+
...base,
|
|
254
|
+
name,
|
|
255
|
+
importParams: {
|
|
256
|
+
name,
|
|
257
|
+
hash: algorithm.hash.name
|
|
258
|
+
},
|
|
259
|
+
seedPrefix: undefined,
|
|
260
|
+
publicFormat: "spki",
|
|
261
|
+
check: Asymmetric.checkHash(algorithm.hash.name)
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
/** @internal */
|
|
267
|
+
export const family = {
|
|
268
|
+
module: "Signature",
|
|
269
|
+
specOf,
|
|
270
|
+
privateKeyProto: PrivateKeyProto,
|
|
271
|
+
publicKeyProto: PublicKeyProto,
|
|
272
|
+
isPrivateKey
|
|
273
|
+
};
|
|
274
|
+
const signParams = algorithm => {
|
|
275
|
+
switch (algorithm._tag) {
|
|
276
|
+
case "Ed25519":
|
|
277
|
+
return {
|
|
278
|
+
name: "Ed25519"
|
|
279
|
+
};
|
|
280
|
+
case "Ecdsa":
|
|
281
|
+
return {
|
|
282
|
+
name: "ECDSA",
|
|
283
|
+
hash: algorithm.hash.name
|
|
284
|
+
};
|
|
285
|
+
case "RsaPss":
|
|
286
|
+
return {
|
|
287
|
+
name: "RSA-PSS",
|
|
288
|
+
saltLength: algorithm.saltLength
|
|
289
|
+
};
|
|
290
|
+
case "RsaPkcs1v15":
|
|
291
|
+
return {
|
|
292
|
+
name: "RSASSA-PKCS1-v1_5"
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
const generateParams = algorithm => {
|
|
297
|
+
switch (algorithm._tag) {
|
|
298
|
+
case "Ed25519":
|
|
299
|
+
return {
|
|
300
|
+
name: "Ed25519"
|
|
301
|
+
};
|
|
302
|
+
case "Ecdsa":
|
|
303
|
+
return {
|
|
304
|
+
name: "ECDSA",
|
|
305
|
+
namedCurve: algorithm.namedCurve
|
|
306
|
+
};
|
|
307
|
+
case "RsaPss":
|
|
308
|
+
case "RsaPkcs1v15":
|
|
309
|
+
return Asymmetric.rsaGenerateParams(specOf(algorithm), algorithm.modulusLength);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
// The length of the algorithm's signatures, which for RSA is the size of the
|
|
313
|
+
// key's modulus. A signature of another length is rejected without asking
|
|
314
|
+
// WebCrypto, so every runtime returns `false` for it.
|
|
315
|
+
const signatureLength = (algorithm, cryptoKey) => {
|
|
316
|
+
switch (algorithm._tag) {
|
|
317
|
+
case "Ed25519":
|
|
318
|
+
return 64;
|
|
319
|
+
case "Ecdsa":
|
|
320
|
+
return 2 * Asymmetric.coordinateSizes[algorithm.namedCurve];
|
|
321
|
+
case "RsaPss":
|
|
322
|
+
case "RsaPkcs1v15":
|
|
323
|
+
return Math.ceil(cryptoKey.algorithm.modulusLength / 8);
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
// RFC 8017, section 9.1.1: the encoded message must fit the hash, the salt
|
|
327
|
+
// and two more bytes. The modulus is only known once the key is imported, so
|
|
328
|
+
// the check throws inside `run`.
|
|
329
|
+
const checkSaltLength = (algorithm, cryptoKey) => {
|
|
330
|
+
if (algorithm._tag !== "RsaPss") return;
|
|
331
|
+
let problem;
|
|
332
|
+
if (!Number.isSafeInteger(algorithm.saltLength) || algorithm.saltLength < 0) {
|
|
333
|
+
problem = "PSS salt length must be a non-negative safe integer";
|
|
334
|
+
} else {
|
|
335
|
+
const modulusLength = cryptoKey.algorithm.modulusLength;
|
|
336
|
+
if (algorithm.hash.outputLength + algorithm.saltLength + 2 > Math.ceil((modulusLength - 1) / 8)) {
|
|
337
|
+
problem = `A ${algorithm.saltLength}-byte PSS salt does not fit a ${modulusLength}-bit key with ${algorithm.hash.name}`;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (problem !== undefined) throw new internal.Failure(new CryptoError.InvalidArgument({
|
|
341
|
+
description: problem
|
|
342
|
+
}));
|
|
343
|
+
};
|
|
344
|
+
/**
|
|
345
|
+
* Service that generates key pairs, signs, verifies, and computes public keys.
|
|
346
|
+
*
|
|
347
|
+
* **Example** (Signing and verifying with Ed25519)
|
|
348
|
+
*
|
|
349
|
+
* ```ts import.meta.vitest
|
|
350
|
+
* import { Effect, Layer } from "effect"
|
|
351
|
+
* import { SecureRandom, Signature } from "effect/crypto"
|
|
352
|
+
*
|
|
353
|
+
* const program = Effect.gen(function*() {
|
|
354
|
+
* const signature = yield* Signature.Signature
|
|
355
|
+
* const { privateKey, publicKey } = yield* signature.generateKeyPair(Signature.ed25519)
|
|
356
|
+
* const data = new TextEncoder().encode("message")
|
|
357
|
+
* const signed = yield* signature.sign(privateKey, data)
|
|
358
|
+
* return [signed.length, yield* signature.verify(publicKey, signed, data)]
|
|
359
|
+
* })
|
|
360
|
+
*
|
|
361
|
+
* const layer = Signature.layerWebCrypto.pipe(Layer.provide(SecureRandom.layerWebCrypto))
|
|
362
|
+
* await Effect.runPromise(program.pipe(Effect.provide(layer))) // => [64, true]
|
|
363
|
+
* ```
|
|
364
|
+
*
|
|
365
|
+
* @stability unstable
|
|
366
|
+
* @category services
|
|
367
|
+
* @since 4.0.0
|
|
368
|
+
*/
|
|
369
|
+
export class Signature extends /*#__PURE__*/Context.Service()("effect/crypto/Signature") {}
|
|
370
|
+
/**
|
|
371
|
+
* Layer that provides `Signature` on the `WebCrypto` reference.
|
|
372
|
+
*
|
|
373
|
+
* **Details**
|
|
374
|
+
*
|
|
375
|
+
* Every algorithm runs on `crypto.subtle`. The layer imports a byte-backed
|
|
376
|
+
* key on first use and caches the `CryptoKey`. Ed25519 private keys come from
|
|
377
|
+
* `SecureRandom`, so a seeded `SecureRandom` reproduces them.
|
|
378
|
+
*
|
|
379
|
+
* @stability unstable
|
|
380
|
+
* @category layers
|
|
381
|
+
* @since 4.0.0
|
|
382
|
+
*/
|
|
383
|
+
export const layerWebCrypto = /*#__PURE__*/Layer.effect(Signature, /*#__PURE__*/Effect.gen(function* () {
|
|
384
|
+
const random = yield* SecureRandom.SecureRandom;
|
|
385
|
+
const crypto = yield* WebCrypto;
|
|
386
|
+
const caches = Asymmetric.makeCaches(family);
|
|
387
|
+
return Signature.of({
|
|
388
|
+
generateKeyPair: algorithm => Asymmetric.generateKeyPair(family, crypto, random, algorithm, generateParams(algorithm)),
|
|
389
|
+
sign: (privateKey, data) => internal.run("Signature", "sign", privateKey.algorithm.name, crypto, async subtle => {
|
|
390
|
+
const cryptoKey = await caches.privateKey(subtle, privateKey);
|
|
391
|
+
checkSaltLength(privateKey.algorithm, cryptoKey);
|
|
392
|
+
return new Uint8Array(await subtle.sign(signParams(privateKey.algorithm), cryptoKey, data));
|
|
393
|
+
}),
|
|
394
|
+
verify: (publicKey, signature, data) => internal.run("Signature", "verify", publicKey.algorithm.name, crypto, async subtle => {
|
|
395
|
+
const cryptoKey = await caches.publicKey(subtle, publicKey);
|
|
396
|
+
checkSaltLength(publicKey.algorithm, cryptoKey);
|
|
397
|
+
if (signature.length !== signatureLength(publicKey.algorithm, cryptoKey)) return false;
|
|
398
|
+
return subtle.verify(signParams(publicKey.algorithm), cryptoKey, signature, data);
|
|
399
|
+
}, cause => Asymmetric.publicKeyError("Signature", "verify", publicKey, cause)),
|
|
400
|
+
publicKeyOf: privateKey => Asymmetric.publicKeyOf(family, crypto, privateKey)
|
|
401
|
+
});
|
|
402
|
+
}));
|
|
403
|
+
/**
|
|
404
|
+
* Builds an Ed25519 private key from its 32-byte seed.
|
|
405
|
+
*
|
|
406
|
+
* **Details**
|
|
407
|
+
*
|
|
408
|
+
* The bytes are copied. Another length fails with an `InvalidKey` reason,
|
|
409
|
+
* including the 64-byte `seed‖public key` form libsodium and TweetNaCl use:
|
|
410
|
+
* pass its first 32 bytes. ECDSA and RSA private keys have no raw form, so
|
|
411
|
+
* passing them is a type error.
|
|
412
|
+
*
|
|
413
|
+
* @stability unstable
|
|
414
|
+
* @category constructors
|
|
415
|
+
* @since 4.0.0
|
|
416
|
+
*/
|
|
417
|
+
export const privateKey = (algorithm, bytes) => KeyModel.fromBytes("Signature", "privateKey", PrivateKeyProto, algorithm, bytes, Asymmetric.checkSeedLength("Ed25519", "private"));
|
|
418
|
+
/**
|
|
419
|
+
* Builds a public key from its raw form: 32 bytes for Ed25519, or an
|
|
420
|
+
* uncompressed SEC1 point for ECDSA.
|
|
421
|
+
*
|
|
422
|
+
* **Details**
|
|
423
|
+
*
|
|
424
|
+
* The bytes are copied. A wrong length, or a compressed point, fails with an
|
|
425
|
+
* `InvalidKey` reason. Only uncompressed points are taken because Safari and
|
|
426
|
+
* Firefox before 146 reject compressed ones in raw import, though they accept
|
|
427
|
+
* them inside SPKI: decode a compressed point with `KeyFormat.spki`. Whether a
|
|
428
|
+
* point is on the curve is checked when the key is first used. RSA public keys have
|
|
429
|
+
* no raw form, so passing them is a type error.
|
|
430
|
+
*
|
|
431
|
+
* @stability unstable
|
|
432
|
+
* @category constructors
|
|
433
|
+
* @since 4.0.0
|
|
434
|
+
*/
|
|
435
|
+
export const publicKey = (algorithm, bytes) => KeyModel.fromBytes("Signature", "publicKey", PublicKeyProto, algorithm, bytes, algorithm._tag === "Ecdsa" ? Asymmetric.checkPoint(algorithm.namedCurve) : Asymmetric.checkSeedLength("Ed25519", "public"));
|
|
436
|
+
/**
|
|
437
|
+
* Builds a private key from an existing `CryptoKey`, such as a
|
|
438
|
+
* non-extractable one.
|
|
439
|
+
*
|
|
440
|
+
* **Details**
|
|
441
|
+
*
|
|
442
|
+
* The `CryptoKey` must be a private key of the algorithm's WebCrypto name,
|
|
443
|
+
* curve or hash, with the `sign` usage. Otherwise the constructor fails with
|
|
444
|
+
* an `InvalidKey` reason. The modulus length of an RSA algorithm is not
|
|
445
|
+
* checked. The key must come from the `Crypto` object of the `WebCrypto`
|
|
446
|
+
* reference.
|
|
447
|
+
*
|
|
448
|
+
* @stability unstable
|
|
449
|
+
* @category constructors
|
|
450
|
+
* @since 4.0.0
|
|
451
|
+
*/
|
|
452
|
+
export const privateKeyFromCryptoKey = (algorithm, cryptoKey) => Asymmetric.fromCryptoKey(family, "privateKeyFromCryptoKey", algorithm, "private", cryptoKey);
|
|
453
|
+
/**
|
|
454
|
+
* Builds a public key from an existing `CryptoKey`.
|
|
455
|
+
*
|
|
456
|
+
* **Details**
|
|
457
|
+
*
|
|
458
|
+
* The `CryptoKey` must be a public key of the algorithm's WebCrypto name,
|
|
459
|
+
* curve or hash, with the `verify` usage. Otherwise the constructor fails
|
|
460
|
+
* with an `InvalidKey` reason. The key must come from the `Crypto` object of
|
|
461
|
+
* the `WebCrypto` reference.
|
|
462
|
+
*
|
|
463
|
+
* @stability unstable
|
|
464
|
+
* @category constructors
|
|
465
|
+
* @since 4.0.0
|
|
466
|
+
*/
|
|
467
|
+
export const publicKeyFromCryptoKey = (algorithm, cryptoKey) => Asymmetric.fromCryptoKey(family, "publicKeyFromCryptoKey", algorithm, "public", cryptoKey);
|
|
468
|
+
/**
|
|
469
|
+
* Exports a key's stored bytes.
|
|
470
|
+
*
|
|
471
|
+
* **Details**
|
|
472
|
+
*
|
|
473
|
+
* Returns a fresh `Uint8Array`: the seed or raw public key for Ed25519,
|
|
474
|
+
* PKCS#8 or the uncompressed point for ECDSA, and PKCS#8 or SPKI DER for
|
|
475
|
+
* RSA. A `CryptoKey`-backed key is exported on the `WebCrypto` reference, and
|
|
476
|
+
* fails with a `NotExtractable` reason when the `CryptoKey` is not
|
|
477
|
+
* extractable.
|
|
478
|
+
*
|
|
479
|
+
* @stability unstable
|
|
480
|
+
* @category converting
|
|
481
|
+
* @since 4.0.0
|
|
482
|
+
*/
|
|
483
|
+
export const toBytes = key => Asymmetric.toBytes(family, key);
|
|
484
|
+
//# sourceMappingURL=Signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Signature.js","names":[],"sources":["../../src/crypto/Signature.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The WebCrypto `Crypto` object that the `effect/crypto` modules run on.
|
|
3
|
+
*
|
|
4
|
+
* The `layerWebCrypto` layers of the family modules, such as
|
|
5
|
+
* `Digest.layerWebCrypto`, and key functions that touch
|
|
6
|
+
* `crypto.subtle`, such as `Mac.toBytes`, read the {@link WebCrypto}
|
|
7
|
+
* reference. It defaults to `globalThis.crypto`. Provide {@link layer} to run
|
|
8
|
+
* them on a polyfill, a worker's object, or a test double.
|
|
9
|
+
*
|
|
10
|
+
* **Gotchas**
|
|
11
|
+
*
|
|
12
|
+
* Browsers expose `crypto.subtle` only in secure contexts. Elsewhere, every
|
|
13
|
+
* operation that needs it dies with "crypto.subtle is unavailable". Layers
|
|
14
|
+
* still build, and `SecureRandom` and the pure TypeScript algorithms, such as
|
|
15
|
+
* MD5, keep working.
|
|
16
|
+
*
|
|
17
|
+
* @stability unstable
|
|
18
|
+
* @since 4.0.0
|
|
19
|
+
*/
|
|
20
|
+
import * as Context from "../Context.ts";
|
|
21
|
+
import * as Layer from "../Layer.ts";
|
|
22
|
+
/**
|
|
23
|
+
* Reference to the WebCrypto `Crypto` object, defaulting to
|
|
24
|
+
* `globalThis.crypto`.
|
|
25
|
+
*
|
|
26
|
+
* @see {@link layer} for replacing it
|
|
27
|
+
*
|
|
28
|
+
* @stability unstable
|
|
29
|
+
* @category references
|
|
30
|
+
* @since 4.0.0
|
|
31
|
+
*/
|
|
32
|
+
export declare const WebCrypto: Context.Reference<Crypto>;
|
|
33
|
+
/**
|
|
34
|
+
* Layer that sets the {@link WebCrypto} reference.
|
|
35
|
+
*
|
|
36
|
+
* **When to use**
|
|
37
|
+
*
|
|
38
|
+
* Use to run the `effect/crypto` modules on a polyfill, a worker's `Crypto`
|
|
39
|
+
* object, or a test double.
|
|
40
|
+
*
|
|
41
|
+
* **Example** (Using a `Crypto` polyfill)
|
|
42
|
+
*
|
|
43
|
+
* ```ts import.meta.vitest
|
|
44
|
+
* import { Effect } from "effect"
|
|
45
|
+
* import { Digest, WebCrypto } from "effect/crypto"
|
|
46
|
+
*
|
|
47
|
+
* const program = Effect.gen(function*() {
|
|
48
|
+
* const digest = yield* Digest.Digest
|
|
49
|
+
* return yield* digest.digestHex(Digest.sha256, new TextEncoder().encode("abc"))
|
|
50
|
+
* }).pipe(Effect.provide(Digest.layerWebCrypto))
|
|
51
|
+
*
|
|
52
|
+
* const hex = await Effect.runPromise(program.pipe(Effect.provide(WebCrypto.layer(globalThis.crypto))))
|
|
53
|
+
* hex.length // => 64
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* @stability unstable
|
|
57
|
+
* @category layers
|
|
58
|
+
* @since 4.0.0
|
|
59
|
+
*/
|
|
60
|
+
export declare const layer: (crypto: Crypto) => Layer.Layer<never>;
|
|
61
|
+
//# sourceMappingURL=WebCrypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebCrypto.d.ts","sourceRoot":"","sources":["../../src/crypto/WebCrypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,KAAK,MAAM,aAAa,CAAA;AAEpC;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAE9C,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,KAAK,WAAY,MAAM,KAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAqC,CAAA"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The WebCrypto `Crypto` object that the `effect/crypto` modules run on.
|
|
3
|
+
*
|
|
4
|
+
* The `layerWebCrypto` layers of the family modules, such as
|
|
5
|
+
* `Digest.layerWebCrypto`, and key functions that touch
|
|
6
|
+
* `crypto.subtle`, such as `Mac.toBytes`, read the {@link WebCrypto}
|
|
7
|
+
* reference. It defaults to `globalThis.crypto`. Provide {@link layer} to run
|
|
8
|
+
* them on a polyfill, a worker's object, or a test double.
|
|
9
|
+
*
|
|
10
|
+
* **Gotchas**
|
|
11
|
+
*
|
|
12
|
+
* Browsers expose `crypto.subtle` only in secure contexts. Elsewhere, every
|
|
13
|
+
* operation that needs it dies with "crypto.subtle is unavailable". Layers
|
|
14
|
+
* still build, and `SecureRandom` and the pure TypeScript algorithms, such as
|
|
15
|
+
* MD5, keep working.
|
|
16
|
+
*
|
|
17
|
+
* @stability unstable
|
|
18
|
+
* @since 4.0.0
|
|
19
|
+
*/
|
|
20
|
+
import * as Context from "../Context.js";
|
|
21
|
+
import * as Layer from "../Layer.js";
|
|
22
|
+
/**
|
|
23
|
+
* Reference to the WebCrypto `Crypto` object, defaulting to
|
|
24
|
+
* `globalThis.crypto`.
|
|
25
|
+
*
|
|
26
|
+
* @see {@link layer} for replacing it
|
|
27
|
+
*
|
|
28
|
+
* @stability unstable
|
|
29
|
+
* @category references
|
|
30
|
+
* @since 4.0.0
|
|
31
|
+
*/
|
|
32
|
+
export const WebCrypto = /*#__PURE__*/Context.Reference("effect/crypto/WebCrypto", {
|
|
33
|
+
defaultValue: () => globalThis.crypto
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Layer that sets the {@link WebCrypto} reference.
|
|
37
|
+
*
|
|
38
|
+
* **When to use**
|
|
39
|
+
*
|
|
40
|
+
* Use to run the `effect/crypto` modules on a polyfill, a worker's `Crypto`
|
|
41
|
+
* object, or a test double.
|
|
42
|
+
*
|
|
43
|
+
* **Example** (Using a `Crypto` polyfill)
|
|
44
|
+
*
|
|
45
|
+
* ```ts import.meta.vitest
|
|
46
|
+
* import { Effect } from "effect"
|
|
47
|
+
* import { Digest, WebCrypto } from "effect/crypto"
|
|
48
|
+
*
|
|
49
|
+
* const program = Effect.gen(function*() {
|
|
50
|
+
* const digest = yield* Digest.Digest
|
|
51
|
+
* return yield* digest.digestHex(Digest.sha256, new TextEncoder().encode("abc"))
|
|
52
|
+
* }).pipe(Effect.provide(Digest.layerWebCrypto))
|
|
53
|
+
*
|
|
54
|
+
* const hex = await Effect.runPromise(program.pipe(Effect.provide(WebCrypto.layer(globalThis.crypto))))
|
|
55
|
+
* hex.length // => 64
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @stability unstable
|
|
59
|
+
* @category layers
|
|
60
|
+
* @since 4.0.0
|
|
61
|
+
*/
|
|
62
|
+
export const layer = crypto => Layer.succeed(WebCrypto, crypto);
|
|
63
|
+
//# sourceMappingURL=WebCrypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebCrypto.js","names":[],"sources":["../../src/crypto/WebCrypto.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;AAmBA,OAAO,KAAK,OAAO,MAAM,eAAe;AACxC,OAAO,KAAK,KAAK,MAAM,aAAa;AAEpC;;;;;;;;;;AAUA,OAAO,MAAM,SAAS,gBAA8B,OAAO,CAAC,SAAS,CAAS,yBAAyB,EAAE;EACvG,YAAY,EAAE,MAAM,UAAU,CAAC;CAChC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAM,KAAK,GAAI,MAAc,IAAyB,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @stability unstable
|
|
3
|
+
* @since 4.0.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @stability unstable
|
|
7
|
+
* @since 4.0.0
|
|
8
|
+
*/
|
|
9
|
+
export * as Aead from "./Aead.ts";
|
|
10
|
+
/**
|
|
11
|
+
* @stability unstable
|
|
12
|
+
* @since 4.0.0
|
|
13
|
+
*/
|
|
14
|
+
export * as Cipher from "./Cipher.ts";
|
|
15
|
+
/**
|
|
16
|
+
* @stability unstable
|
|
17
|
+
* @since 4.0.0
|
|
18
|
+
*/
|
|
19
|
+
export * as CryptoError from "./CryptoError.ts";
|
|
20
|
+
/**
|
|
21
|
+
* @stability unstable
|
|
22
|
+
* @since 4.0.0
|
|
23
|
+
*/
|
|
24
|
+
export * as Digest from "./Digest.ts";
|
|
25
|
+
/**
|
|
26
|
+
* @stability unstable
|
|
27
|
+
* @since 4.0.0
|
|
28
|
+
*/
|
|
29
|
+
export * as Kdf from "./Kdf.ts";
|
|
30
|
+
/**
|
|
31
|
+
* @stability unstable
|
|
32
|
+
* @since 4.0.0
|
|
33
|
+
*/
|
|
34
|
+
export * as KeyAgreement from "./KeyAgreement.ts";
|
|
35
|
+
/**
|
|
36
|
+
* @stability unstable
|
|
37
|
+
* @since 4.0.0
|
|
38
|
+
*/
|
|
39
|
+
export * as KeyFormat from "./KeyFormat.ts";
|
|
40
|
+
/**
|
|
41
|
+
* @stability unstable
|
|
42
|
+
* @since 4.0.0
|
|
43
|
+
*/
|
|
44
|
+
export * as KeyWrap from "./KeyWrap.ts";
|
|
45
|
+
/**
|
|
46
|
+
* @stability unstable
|
|
47
|
+
* @since 4.0.0
|
|
48
|
+
*/
|
|
49
|
+
export * as Mac from "./Mac.ts";
|
|
50
|
+
/**
|
|
51
|
+
* @stability unstable
|
|
52
|
+
* @since 4.0.0
|
|
53
|
+
*/
|
|
54
|
+
export * as SecureRandom from "./SecureRandom.ts";
|
|
55
|
+
/**
|
|
56
|
+
* @stability unstable
|
|
57
|
+
* @since 4.0.0
|
|
58
|
+
*/
|
|
59
|
+
export * as Signature from "./Signature.ts";
|
|
60
|
+
/**
|
|
61
|
+
* @stability unstable
|
|
62
|
+
* @since 4.0.0
|
|
63
|
+
*/
|
|
64
|
+
export * as WebCrypto from "./WebCrypto.ts";
|
|
65
|
+
//# sourceMappingURL=index.d.ts.map
|