effect 4.0.7 → 4.1.1
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 +31 -1
- package/THIRD_PARTY_NOTICES.md +62 -0
- package/dist/BigDecimal.d.ts +139 -7
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +86 -14
- 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/Equal.d.ts +2 -2
- package/dist/Equal.d.ts.map +1 -1
- package/dist/Equal.js +3 -3
- package/dist/Equal.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/Hash.d.ts +3 -2
- package/dist/Hash.d.ts.map +1 -1
- package/dist/Hash.js +5 -4
- package/dist/Hash.js.map +1 -1
- package/dist/Iterable.d.ts.map +1 -1
- package/dist/Iterable.js +11 -8
- package/dist/Iterable.js.map +1 -1
- package/dist/Match.d.ts +86 -0
- package/dist/Match.d.ts.map +1 -1
- package/dist/Match.js +72 -0
- package/dist/Match.js.map +1 -1
- package/dist/Path.d.ts.map +1 -1
- package/dist/Path.js +5 -1
- package/dist/Path.js.map +1 -1
- package/dist/Pool.d.ts +51 -0
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +61 -10
- 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 +668 -42
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +652 -1
- 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 +18 -2
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +20 -2
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +10 -5
- package/dist/SchemaTransformation.d.ts.map +1 -1
- package/dist/SchemaTransformation.js +8 -5
- package/dist/SchemaTransformation.js.map +1 -1
- package/dist/ScopedCache.d.ts.map +1 -1
- package/dist/ScopedCache.js +5 -7
- package/dist/ScopedCache.js.map +1 -1
- package/dist/Semaphore.d.ts +130 -0
- package/dist/Semaphore.d.ts.map +1 -1
- package/dist/Semaphore.js +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/McpClient.d.ts +171 -19
- package/dist/ai/McpClient.d.ts.map +1 -1
- package/dist/ai/McpClient.js +277 -66
- package/dist/ai/McpClient.js.map +1 -1
- package/dist/ai/McpSchema.d.ts +108 -0
- package/dist/ai/McpSchema.d.ts.map +1 -1
- package/dist/ai/McpSchema.js +99 -0
- package/dist/ai/McpSchema.js.map +1 -1
- package/dist/ai/McpServer.d.ts +744 -29
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +763 -136
- package/dist/ai/McpServer.js.map +1 -1
- package/dist/ai/McpTest.d.ts +130 -0
- package/dist/ai/McpTest.d.ts.map +1 -0
- package/dist/ai/McpTest.js +237 -0
- package/dist/ai/McpTest.js.map +1 -0
- package/dist/ai/Prompt.d.ts.map +1 -1
- package/dist/ai/Prompt.js +20 -11
- package/dist/ai/Prompt.js.map +1 -1
- 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 +5 -7
- 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 +89 -15
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +7 -6
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +7 -6
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +7 -6
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +7 -6
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +60 -17
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +25 -0
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +8 -6
- package/dist/ai/internal/mcpRuntime.js.map +1 -1
- package/dist/ai/internal/mcpSkills.d.ts +2 -0
- package/dist/ai/internal/mcpSkills.d.ts.map +1 -0
- package/dist/ai/internal/mcpSkills.js +428 -0
- package/dist/ai/internal/mcpSkills.js.map +1 -0
- 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/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +15 -5
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Reply.d.ts +1 -1
- package/dist/cluster/Reply.d.ts.map +1 -1
- package/dist/cluster/Reply.js.map +1 -1
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +93 -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/cluster/internal/entityManager.js +15 -7
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/crypto/Aead.d.ts +323 -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 +236 -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 +324 -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 +341 -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 +390 -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 +278 -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 +449 -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 +80 -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 +171 -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 +29 -5
- 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/Ndjson.d.ts +5 -4
- package/dist/encoding/Ndjson.d.ts.map +1 -1
- package/dist/encoding/Ndjson.js +6 -5
- package/dist/encoding/Ndjson.js.map +1 -1
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +42 -4
- package/dist/encoding/SchemaBinary.js.map +1 -1
- package/dist/encoding/Sse.d.ts +3 -1
- package/dist/encoding/Sse.d.ts.map +1 -1
- package/dist/encoding/Sse.js +5 -3
- package/dist/encoding/Sse.js.map +1 -1
- package/dist/encoding/Toml.d.ts +17 -3
- package/dist/encoding/Toml.d.ts.map +1 -1
- package/dist/encoding/Toml.js +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 +126 -4
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +207 -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 +10 -1
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +45 -22
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +336 -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/EventLogServerUnencrypted.d.ts +17 -0
- package/dist/eventlog/EventLogServerUnencrypted.d.ts.map +1 -1
- package/dist/eventlog/EventLogServerUnencrypted.js +14 -2
- package/dist/eventlog/EventLogServerUnencrypted.js.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.d.ts +26 -3
- package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.js +63 -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/graphql/GraphQLClient.d.ts +3 -1
- package/dist/graphql/GraphQLClient.d.ts.map +1 -1
- package/dist/graphql/GraphQLClient.js.map +1 -1
- package/dist/graphql/GraphQLClientError.d.ts +14 -9
- package/dist/graphql/GraphQLClientError.d.ts.map +1 -1
- package/dist/graphql/GraphQLClientError.js +14 -21
- package/dist/graphql/GraphQLClientError.js.map +1 -1
- package/dist/graphql/GraphQLProtocol.d.ts +12 -3
- package/dist/graphql/GraphQLProtocol.d.ts.map +1 -1
- package/dist/graphql/GraphQLProtocol.js +4 -1
- package/dist/graphql/GraphQLProtocol.js.map +1 -1
- 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 +268 -15
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +140 -7
- 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 +44 -39
- 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/mimeTypes.d.ts +4 -1
- package/dist/http/internal/mimeTypes.d.ts.map +1 -1
- package/dist/http/internal/mimeTypes.js +4 -1
- package/dist/http/internal/mimeTypes.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 +54 -1
- 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/dateTime.js +49 -24
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +35 -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 +808 -0
- package/dist/internal/glob.js.map +1 -0
- package/dist/internal/graphql.js +21 -7
- package/dist/internal/graphql.js.map +1 -1
- package/dist/internal/graphqlHeaders.d.ts +7 -0
- package/dist/internal/graphqlHeaders.d.ts.map +1 -1
- package/dist/internal/graphqlHeaders.js +11 -0
- package/dist/internal/graphqlHeaders.js.map +1 -1
- 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/request.js +29 -42
- package/dist/internal/request.js.map +1 -1
- package/dist/internal/schema/fromJsonSchemaDocument.js +7 -8
- package/dist/internal/schema/fromJsonSchemaDocument.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/jose/JoseError.d.ts +285 -0
- package/dist/jose/JoseError.d.ts.map +1 -0
- package/dist/jose/JoseError.js +269 -0
- package/dist/jose/JoseError.js.map +1 -0
- package/dist/jose/Jwe.d.ts +128 -0
- package/dist/jose/Jwe.d.ts.map +1 -0
- package/dist/jose/Jwe.js +134 -0
- package/dist/jose/Jwe.js.map +1 -0
- package/dist/jose/Jwk.d.ts +597 -0
- package/dist/jose/Jwk.d.ts.map +1 -0
- package/dist/jose/Jwk.js +503 -0
- package/dist/jose/Jwk.js.map +1 -0
- package/dist/jose/Jwks.d.ts +236 -0
- package/dist/jose/Jwks.d.ts.map +1 -0
- package/dist/jose/Jwks.js +306 -0
- package/dist/jose/Jwks.js.map +1 -0
- package/dist/jose/Jws.d.ts +177 -0
- package/dist/jose/Jws.d.ts.map +1 -0
- package/dist/jose/Jws.js +183 -0
- package/dist/jose/Jws.js.map +1 -0
- package/dist/jose/Jwt.d.ts +270 -0
- package/dist/jose/Jwt.d.ts.map +1 -0
- package/dist/jose/Jwt.js +293 -0
- package/dist/jose/Jwt.js.map +1 -0
- package/dist/jose/index.d.ts +51 -0
- package/dist/jose/index.d.ts.map +1 -0
- package/dist/jose/index.js +52 -0
- package/dist/jose/index.js.map +1 -0
- package/dist/jose/internal/compact.d.ts +2 -0
- package/dist/jose/internal/compact.d.ts.map +1 -0
- package/dist/jose/internal/compact.js +179 -0
- package/dist/jose/internal/compact.js.map +1 -0
- package/dist/net/Host.d.ts.map +1 -1
- package/dist/net/Host.js +5 -10
- package/dist/net/Host.js.map +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/observability/OtlpSerialization.d.ts +1 -1
- package/dist/observability/OtlpSerialization.d.ts.map +1 -1
- package/dist/observability/OtlpSerialization.js +10 -4
- package/dist/observability/OtlpSerialization.js.map +1 -1
- package/dist/observability/internal/otlpProtobuf.js +3 -3
- package/dist/observability/internal/otlpProtobuf.js.map +1 -1
- package/dist/observability/internal/protobuf.js +6 -0
- package/dist/observability/internal/protobuf.js.map +1 -1
- package/dist/persistence/CircuitBreaker.d.ts +98 -38
- package/dist/persistence/CircuitBreaker.d.ts.map +1 -1
- package/dist/persistence/CircuitBreaker.js +67 -29
- package/dist/persistence/CircuitBreaker.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/persistence/RateLimiter.d.ts +8 -0
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +63 -12
- package/dist/persistence/RateLimiter.js.map +1 -1
- package/dist/persistence/index.d.ts +1 -1
- package/dist/persistence/index.js +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 +17 -7
- package/dist/reactivity/AtomRegistry.js.map +1 -1
- package/dist/rpc/Rpc.d.ts +1 -1
- package/dist/rpc/Rpc.d.ts.map +1 -1
- package/dist/rpc/Rpc.js.map +1 -1
- package/dist/rpc/RpcClient.d.ts +28 -1
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +78 -27
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcMessage.d.ts +13 -3
- 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 +9 -20
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +20 -53
- 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 +38 -3
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +9 -12
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +61 -9
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +24 -33
- 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/Workflow.d.ts +4 -0
- package/dist/workflow/Workflow.d.ts.map +1 -1
- package/dist/workflow/Workflow.js.map +1 -1
- package/dist/workflow/WorkflowEngine.d.ts.map +1 -1
- package/dist/workflow/WorkflowEngine.js +5 -0
- package/dist/workflow/WorkflowEngine.js.map +1 -1
- package/dist/workflow/internal/crypto.js +9 -8
- package/dist/workflow/internal/crypto.js.map +1 -1
- package/package.json +7 -1
- package/src/BigDecimal.ts +173 -16
- 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/Equal.ts +3 -3
- package/src/FileSystem.ts +65 -4
- package/src/Glob.ts +205 -0
- package/src/Hash.ts +5 -4
- package/src/Iterable.ts +8 -5
- package/src/Match.ts +127 -0
- package/src/Path.ts +6 -1
- package/src/Pool.ts +75 -16
- package/src/Random.ts +3 -3
- package/src/RcMap.ts +5 -1
- package/src/Schedule.ts +26 -3
- package/src/Schema.ts +1191 -63
- package/src/SchemaGetter.ts +27 -11
- package/src/SchemaRepresentation.ts +23 -2
- package/src/SchemaTransformation.ts +10 -5
- 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/McpClient.ts +488 -91
- package/src/ai/McpSchema.ts +119 -0
- package/src/ai/McpServer.ts +1525 -319
- package/src/ai/McpTest.ts +380 -0
- package/src/ai/Prompt.ts +16 -11
- package/src/ai/Response.ts +2 -22
- package/src/ai/Tool.ts +32 -18
- package/src/ai/index.ts +6 -0
- package/src/ai/internal/mcpCore.ts +243 -56
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +7 -8
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +7 -8
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +7 -8
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +7 -8
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +56 -17
- package/src/ai/internal/mcpProtocol.ts +44 -0
- package/src/ai/internal/mcpRuntime.ts +15 -8
- package/src/ai/internal/mcpSkills.ts +480 -0
- 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/ClusterWorkflowEngine.ts +22 -8
- package/src/cluster/Reply.ts +1 -1
- package/src/cluster/Sharding.ts +96 -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/cluster/internal/entityManager.ts +24 -10
- 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 +741 -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 +84 -0
- package/src/crypto/index.ts +78 -0
- package/src/crypto/internal/asymmetric.ts +330 -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 +242 -0
- package/src/crypto/internal/md5.ts +170 -0
- package/src/crypto/internal/webCrypto.ts +150 -0
- package/src/encoding/Base64Url.ts +32 -5
- package/src/encoding/Csv.ts +1298 -0
- package/src/encoding/Hex.ts +3 -2
- package/src/encoding/Ndjson.ts +6 -5
- package/src/encoding/SchemaBinary.ts +40 -4
- package/src/encoding/Sse.ts +5 -3
- 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 +347 -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 +54 -20
- package/src/eventlog/EventLogServerEncrypted.ts +1135 -67
- package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
- package/src/eventlog/EventLogSessionAuth.ts +82 -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/graphql/GraphQLClient.ts +3 -1
- package/src/graphql/GraphQLClientError.ts +15 -22
- package/src/graphql/GraphQLProtocol.ts +12 -3
- package/src/http/Cookies.ts +281 -1
- package/src/http/FetchHttpClient.ts +88 -16
- package/src/http/HttpClient.ts +299 -33
- 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 +76 -53
- 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/mimeTypes.ts +4 -1
- 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 +106 -15
- package/src/index.ts +6 -6
- package/src/internal/dateTime.ts +54 -24
- package/src/internal/effect.ts +40 -18
- package/src/internal/glob.ts +952 -0
- package/src/internal/graphql.ts +27 -9
- package/src/internal/graphqlHeaders.ts +13 -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/request.ts +51 -58
- package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
- 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/jose/JoseError.ts +329 -0
- package/src/jose/Jwe.ts +196 -0
- package/src/jose/Jwk.ts +777 -0
- package/src/jose/Jwks.ts +418 -0
- package/src/jose/Jws.ts +312 -0
- package/src/jose/Jwt.ts +493 -0
- package/src/jose/index.ts +58 -0
- package/src/jose/internal/compact.ts +195 -0
- package/src/net/Host.ts +5 -10
- package/src/observability/Otlp.ts +21 -4
- package/src/observability/OtlpResource.ts +9 -1
- package/src/observability/OtlpSerialization.ts +13 -5
- package/src/observability/internal/otlpProtobuf.ts +6 -6
- package/src/observability/internal/protobuf.ts +10 -0
- package/src/persistence/CircuitBreaker.ts +113 -48
- package/src/persistence/KeyValueStore.ts +219 -22
- package/src/persistence/PersistedQueue.ts +128 -59
- package/src/persistence/Persistence.ts +20 -13
- package/src/persistence/RateLimiter.ts +84 -15
- package/src/persistence/index.ts +1 -1
- 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 +20 -9
- package/src/rpc/Rpc.ts +3 -1
- package/src/rpc/RpcClient.ts +94 -38
- package/src/rpc/RpcMessage.ts +13 -3
- 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 +38 -80
- package/src/sql/MigratorFileSystem.ts +71 -0
- package/src/sql/SqlClient.ts +45 -24
- package/src/sql/Statement.ts +60 -29
- package/src/sql/index.ts +1 -1
- package/src/testing/index.ts +0 -6
- package/src/workflow/Workflow.ts +4 -0
- package/src/workflow/WorkflowEngine.ts +5 -0
- 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,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unauthenticated encryption with no integrity: compose with `Mac`.
|
|
3
|
+
*
|
|
4
|
+
* AES-CTR and AES-CBC with PKCS#7 padding, for protocols that pair them with a
|
|
5
|
+
* MAC, such as SSH, SRTP, JWE, CMS, and Matrix. Anyone can change the
|
|
6
|
+
* ciphertext without being detected, so authenticate it with `Mac`
|
|
7
|
+
* (encrypt-then-MAC), or use `Aead` instead.
|
|
8
|
+
*
|
|
9
|
+
* The {@link Cipher} service generates keys, encrypts, and decrypts. The
|
|
10
|
+
* top-level {@link key}, {@link fromCryptoKey}, and {@link toBytes} functions
|
|
11
|
+
* build and export keys without a service. Both modes run on `crypto.subtle`.
|
|
12
|
+
*
|
|
13
|
+
* Keys are opaque. They hold either key bytes or a `CryptoKey`, display only
|
|
14
|
+
* their algorithm, and compare by reference.
|
|
15
|
+
*
|
|
16
|
+
* **Gotchas**
|
|
17
|
+
*
|
|
18
|
+
* - Never reuse an IV with the same key. For AES-CTR a repeated counter block
|
|
19
|
+
* reveals the XOR of two plaintexts. For AES-CBC the IV must also be
|
|
20
|
+
* unpredictable.
|
|
21
|
+
* - AES-CTR decryption never fails, whatever the ciphertext. AES-CBC
|
|
22
|
+
* decryption fails with one `DecryptionFailed` reason for both bad padding
|
|
23
|
+
* and a bad length, so callers cannot tell them apart. Verify a MAC before
|
|
24
|
+
* decrypting, or the error itself becomes a padding oracle.
|
|
25
|
+
*
|
|
26
|
+
* @stability unstable
|
|
27
|
+
* @since 4.0.0
|
|
28
|
+
*/
|
|
29
|
+
import * as Context from "../Context.ts";
|
|
30
|
+
import * as Effect from "../Effect.ts";
|
|
31
|
+
import type { Inspectable } from "../Inspectable.ts";
|
|
32
|
+
import * as Layer from "../Layer.ts";
|
|
33
|
+
import * as CryptoError from "./CryptoError.ts";
|
|
34
|
+
import * as SecureRandom from "./SecureRandom.ts";
|
|
35
|
+
import * as WebCrypto from "./WebCrypto.ts";
|
|
36
|
+
declare const TypeId: "~effect/crypto/Cipher/Key";
|
|
37
|
+
/**
|
|
38
|
+
* An unauthenticated cipher algorithm, such as {@link aes256Cbc}.
|
|
39
|
+
*
|
|
40
|
+
* **Details**
|
|
41
|
+
*
|
|
42
|
+
* `mode` is the WebCrypto algorithm name and `keyLength` is in bytes.
|
|
43
|
+
*
|
|
44
|
+
* @stability unstable
|
|
45
|
+
* @category models
|
|
46
|
+
* @since 4.0.0
|
|
47
|
+
*/
|
|
48
|
+
export interface Algorithm {
|
|
49
|
+
readonly name: "aes128Ctr" | "aes256Ctr" | "aes128Cbc" | "aes256Cbc";
|
|
50
|
+
readonly mode: "AES-CTR" | "AES-CBC";
|
|
51
|
+
readonly keyLength: 16 | 32;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* AES-128-CTR, with a 16-byte key.
|
|
55
|
+
*
|
|
56
|
+
* **Details**
|
|
57
|
+
*
|
|
58
|
+
* The 16-byte `iv` is the initial counter block, and the whole 128-bit block
|
|
59
|
+
* is the counter, as in OpenSSL, Node.js, Go's `cipher.NewCTR`, and noble.
|
|
60
|
+
*
|
|
61
|
+
* @stability unstable
|
|
62
|
+
* @category algorithms
|
|
63
|
+
* @since 4.0.0
|
|
64
|
+
*/
|
|
65
|
+
export declare const aes128Ctr: Algorithm;
|
|
66
|
+
/**
|
|
67
|
+
* AES-256-CTR, with a 32-byte key.
|
|
68
|
+
*
|
|
69
|
+
* **Details**
|
|
70
|
+
*
|
|
71
|
+
* The 16-byte `iv` is the initial counter block, and the whole 128-bit block
|
|
72
|
+
* is the counter, as in OpenSSL, Node.js, Go's `cipher.NewCTR`, and noble.
|
|
73
|
+
*
|
|
74
|
+
* @stability unstable
|
|
75
|
+
* @category algorithms
|
|
76
|
+
* @since 4.0.0
|
|
77
|
+
*/
|
|
78
|
+
export declare const aes256Ctr: Algorithm;
|
|
79
|
+
/**
|
|
80
|
+
* AES-128-CBC with PKCS#7 padding, with a 16-byte key.
|
|
81
|
+
*
|
|
82
|
+
* @stability unstable
|
|
83
|
+
* @category algorithms
|
|
84
|
+
* @since 4.0.0
|
|
85
|
+
*/
|
|
86
|
+
export declare const aes128Cbc: Algorithm;
|
|
87
|
+
/**
|
|
88
|
+
* AES-256-CBC with PKCS#7 padding, with a 32-byte key.
|
|
89
|
+
*
|
|
90
|
+
* @stability unstable
|
|
91
|
+
* @category algorithms
|
|
92
|
+
* @since 4.0.0
|
|
93
|
+
*/
|
|
94
|
+
export declare const aes256Cbc: Algorithm;
|
|
95
|
+
/**
|
|
96
|
+
* An opaque unauthenticated cipher key for the algorithm `A`.
|
|
97
|
+
*
|
|
98
|
+
* **Details**
|
|
99
|
+
*
|
|
100
|
+
* The key holds either key bytes or a `CryptoKey` from {@link fromCryptoKey}.
|
|
101
|
+
* `toString`, `toJSON`, and `inspect` show only the algorithm. Keys compare
|
|
102
|
+
* by reference and do not implement `Equal`, because comparing key bytes is
|
|
103
|
+
* not constant time.
|
|
104
|
+
*
|
|
105
|
+
* @stability unstable
|
|
106
|
+
* @category models
|
|
107
|
+
* @since 4.0.0
|
|
108
|
+
*/
|
|
109
|
+
export interface Key<out A extends Algorithm = Algorithm> extends Inspectable {
|
|
110
|
+
readonly [TypeId]: typeof TypeId;
|
|
111
|
+
readonly algorithm: A;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Checks whether a value is a {@link Key}.
|
|
115
|
+
*
|
|
116
|
+
* @stability unstable
|
|
117
|
+
* @category guards
|
|
118
|
+
* @since 4.0.0
|
|
119
|
+
*/
|
|
120
|
+
export declare const isKey: (u: unknown) => u is Key;
|
|
121
|
+
declare const Cipher_base: Context.ServiceClass<Cipher, "effect/crypto/Cipher", {
|
|
122
|
+
/**
|
|
123
|
+
* Generates a random key of the algorithm's length from `SecureRandom`
|
|
124
|
+
* bytes.
|
|
125
|
+
*/
|
|
126
|
+
readonly generateKey: <A extends Algorithm>(algorithm: A) => Effect.Effect<Key<A>, CryptoError.CryptoError>;
|
|
127
|
+
/**
|
|
128
|
+
* Encrypts `plaintext`. AES-CTR output has the plaintext's length, and
|
|
129
|
+
* AES-CBC output is padded to the next multiple of 16 bytes.
|
|
130
|
+
*
|
|
131
|
+
* `iv` is 16 bytes: the initial counter block for AES-CTR, and the
|
|
132
|
+
* initialization vector for AES-CBC.
|
|
133
|
+
*/
|
|
134
|
+
readonly encrypt: (key: Key, plaintext: Uint8Array, options: {
|
|
135
|
+
readonly iv: Uint8Array;
|
|
136
|
+
}) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
|
|
137
|
+
/**
|
|
138
|
+
* Decrypts `ciphertext`. AES-CBC fails with a `DecryptionFailed` reason for
|
|
139
|
+
* bad padding or a bad length; AES-CTR never fails on the ciphertext.
|
|
140
|
+
*/
|
|
141
|
+
readonly decrypt: (key: Key, ciphertext: Uint8Array, options: {
|
|
142
|
+
readonly iv: Uint8Array;
|
|
143
|
+
}) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
|
|
144
|
+
}>;
|
|
145
|
+
/**
|
|
146
|
+
* Service that generates keys, encrypts, and decrypts without
|
|
147
|
+
* authentication.
|
|
148
|
+
*
|
|
149
|
+
* **Example** (Encrypting with AES-CBC)
|
|
150
|
+
*
|
|
151
|
+
* ```ts import.meta.vitest
|
|
152
|
+
* import { Effect, Layer } from "effect"
|
|
153
|
+
* import { Cipher, SecureRandom } from "effect/crypto"
|
|
154
|
+
*
|
|
155
|
+
* const program = Effect.gen(function*() {
|
|
156
|
+
* const cipher = yield* Cipher.Cipher
|
|
157
|
+
* const random = yield* SecureRandom.SecureRandom
|
|
158
|
+
* const key = yield* cipher.generateKey(Cipher.aes256Cbc)
|
|
159
|
+
* const iv = yield* random.randomBytes(16)
|
|
160
|
+
* const ciphertext = yield* cipher.encrypt(key, new TextEncoder().encode("secret"), { iv })
|
|
161
|
+
* const plaintext = yield* cipher.decrypt(key, ciphertext, { iv })
|
|
162
|
+
* return [ciphertext.length, new TextDecoder().decode(plaintext)]
|
|
163
|
+
* })
|
|
164
|
+
*
|
|
165
|
+
* const layer = Cipher.layerWebCrypto.pipe(Layer.provideMerge(SecureRandom.layerWebCrypto))
|
|
166
|
+
* await Effect.runPromise(program.pipe(Effect.provide(layer))) // => [16, "secret"]
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* @stability unstable
|
|
170
|
+
* @category services
|
|
171
|
+
* @since 4.0.0
|
|
172
|
+
*/
|
|
173
|
+
export declare class Cipher extends Cipher_base {
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Layer that provides `Cipher` on the `WebCrypto` reference.
|
|
177
|
+
*
|
|
178
|
+
* **Details**
|
|
179
|
+
*
|
|
180
|
+
* Encryption and decryption run on `crypto.subtle`. The layer imports a
|
|
181
|
+
* byte-backed key on first use and caches the `CryptoKey`. AES-CTR uses the
|
|
182
|
+
* whole 128-bit block as the counter (`length: 128`), which every runtime
|
|
183
|
+
* supports. Generated keys come from `SecureRandom`, so a seeded
|
|
184
|
+
* `SecureRandom` gives reproducible keys.
|
|
185
|
+
*
|
|
186
|
+
* @stability unstable
|
|
187
|
+
* @category layers
|
|
188
|
+
* @since 4.0.0
|
|
189
|
+
*/
|
|
190
|
+
export declare const layerWebCrypto: Layer.Layer<Cipher, never, SecureRandom.SecureRandom>;
|
|
191
|
+
/**
|
|
192
|
+
* Builds a key from raw key bytes.
|
|
193
|
+
*
|
|
194
|
+
* **Details**
|
|
195
|
+
*
|
|
196
|
+
* Copies the bytes, including Node.js `Buffer` inputs. A length other than
|
|
197
|
+
* the algorithm's key length fails with an `InvalidKey` reason. AES-192 is
|
|
198
|
+
* not supported.
|
|
199
|
+
*
|
|
200
|
+
* @stability unstable
|
|
201
|
+
* @category constructors
|
|
202
|
+
* @since 4.0.0
|
|
203
|
+
*/
|
|
204
|
+
export declare const key: <A extends Algorithm>(algorithm: A, bytes: Uint8Array) => Effect.Effect<Key<A>, CryptoError.CryptoError>;
|
|
205
|
+
/**
|
|
206
|
+
* Builds a key from an existing `CryptoKey`, such as a non-extractable one.
|
|
207
|
+
*
|
|
208
|
+
* **Details**
|
|
209
|
+
*
|
|
210
|
+
* The `CryptoKey` must be a secret key for the algorithm's mode (`AES-CTR` or
|
|
211
|
+
* `AES-CBC`) and length, with both the `encrypt` and `decrypt` usages, since
|
|
212
|
+
* a key reaches both operations. Otherwise the constructor fails with an
|
|
213
|
+
* `InvalidKey` reason. It must come from the `Crypto` object of the
|
|
214
|
+
* `WebCrypto` reference.
|
|
215
|
+
*
|
|
216
|
+
* @stability unstable
|
|
217
|
+
* @category constructors
|
|
218
|
+
* @since 4.0.0
|
|
219
|
+
*/
|
|
220
|
+
export declare const fromCryptoKey: <A extends Algorithm>(algorithm: A, cryptoKey: WebCrypto.CryptoKey) => Effect.Effect<Key<A>, CryptoError.CryptoError>;
|
|
221
|
+
/**
|
|
222
|
+
* Exports a key's bytes.
|
|
223
|
+
*
|
|
224
|
+
* **Details**
|
|
225
|
+
*
|
|
226
|
+
* Returns a fresh `Uint8Array` that shares no memory with the key. A
|
|
227
|
+
* `CryptoKey`-backed key is exported on the `WebCrypto` reference, and fails
|
|
228
|
+
* with a `NotExtractable` reason when the `CryptoKey` is not extractable.
|
|
229
|
+
*
|
|
230
|
+
* @stability unstable
|
|
231
|
+
* @category converting
|
|
232
|
+
* @since 4.0.0
|
|
233
|
+
*/
|
|
234
|
+
export declare const toBytes: (key: Key) => Effect.Effect<Uint8Array, CryptoError.CryptoError>;
|
|
235
|
+
export {};
|
|
236
|
+
//# sourceMappingURL=Cipher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cipher.d.ts","sourceRoot":"","sources":["../../src/crypto/Cipher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unauthenticated encryption with no integrity: compose with `Mac`.
|
|
3
|
+
*
|
|
4
|
+
* AES-CTR and AES-CBC with PKCS#7 padding, for protocols that pair them with a
|
|
5
|
+
* MAC, such as SSH, SRTP, JWE, CMS, and Matrix. Anyone can change the
|
|
6
|
+
* ciphertext without being detected, so authenticate it with `Mac`
|
|
7
|
+
* (encrypt-then-MAC), or use `Aead` instead.
|
|
8
|
+
*
|
|
9
|
+
* The {@link Cipher} service generates keys, encrypts, and decrypts. The
|
|
10
|
+
* top-level {@link key}, {@link fromCryptoKey}, and {@link toBytes} functions
|
|
11
|
+
* build and export keys without a service. Both modes run on `crypto.subtle`.
|
|
12
|
+
*
|
|
13
|
+
* Keys are opaque. They hold either key bytes or a `CryptoKey`, display only
|
|
14
|
+
* their algorithm, and compare by reference.
|
|
15
|
+
*
|
|
16
|
+
* **Gotchas**
|
|
17
|
+
*
|
|
18
|
+
* - Never reuse an IV with the same key. For AES-CTR a repeated counter block
|
|
19
|
+
* reveals the XOR of two plaintexts. For AES-CBC the IV must also be
|
|
20
|
+
* unpredictable.
|
|
21
|
+
* - AES-CTR decryption never fails, whatever the ciphertext. AES-CBC
|
|
22
|
+
* decryption fails with one `DecryptionFailed` reason for both bad padding
|
|
23
|
+
* and a bad length, so callers cannot tell them apart. Verify a MAC before
|
|
24
|
+
* decrypting, or the error itself becomes a padding oracle.
|
|
25
|
+
*
|
|
26
|
+
* @stability unstable
|
|
27
|
+
* @since 4.0.0
|
|
28
|
+
*/
|
|
29
|
+
import * as Context from "../Context.js";
|
|
30
|
+
import * as Effect from "../Effect.js";
|
|
31
|
+
import * as Layer from "../Layer.js";
|
|
32
|
+
import * as Predicate from "../Predicate.js";
|
|
33
|
+
import * as CryptoError from "./CryptoError.js";
|
|
34
|
+
import * as KeyModel from "./internal/key.js";
|
|
35
|
+
import * as internal from "./internal/webCrypto.js";
|
|
36
|
+
import * as SecureRandom from "./SecureRandom.js";
|
|
37
|
+
import * as WebCrypto from "./WebCrypto.js";
|
|
38
|
+
const TypeId = "~effect/crypto/Cipher/Key";
|
|
39
|
+
/**
|
|
40
|
+
* AES-128-CTR, with a 16-byte key.
|
|
41
|
+
*
|
|
42
|
+
* **Details**
|
|
43
|
+
*
|
|
44
|
+
* The 16-byte `iv` is the initial counter block, and the whole 128-bit block
|
|
45
|
+
* is the counter, as in OpenSSL, Node.js, Go's `cipher.NewCTR`, and noble.
|
|
46
|
+
*
|
|
47
|
+
* @stability unstable
|
|
48
|
+
* @category algorithms
|
|
49
|
+
* @since 4.0.0
|
|
50
|
+
*/
|
|
51
|
+
export const aes128Ctr = {
|
|
52
|
+
name: "aes128Ctr",
|
|
53
|
+
mode: "AES-CTR",
|
|
54
|
+
keyLength: 16
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* AES-256-CTR, with a 32-byte key.
|
|
58
|
+
*
|
|
59
|
+
* **Details**
|
|
60
|
+
*
|
|
61
|
+
* The 16-byte `iv` is the initial counter block, and the whole 128-bit block
|
|
62
|
+
* is the counter, as in OpenSSL, Node.js, Go's `cipher.NewCTR`, and noble.
|
|
63
|
+
*
|
|
64
|
+
* @stability unstable
|
|
65
|
+
* @category algorithms
|
|
66
|
+
* @since 4.0.0
|
|
67
|
+
*/
|
|
68
|
+
export const aes256Ctr = {
|
|
69
|
+
name: "aes256Ctr",
|
|
70
|
+
mode: "AES-CTR",
|
|
71
|
+
keyLength: 32
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* AES-128-CBC with PKCS#7 padding, with a 16-byte key.
|
|
75
|
+
*
|
|
76
|
+
* @stability unstable
|
|
77
|
+
* @category algorithms
|
|
78
|
+
* @since 4.0.0
|
|
79
|
+
*/
|
|
80
|
+
export const aes128Cbc = {
|
|
81
|
+
name: "aes128Cbc",
|
|
82
|
+
mode: "AES-CBC",
|
|
83
|
+
keyLength: 16
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* AES-256-CBC with PKCS#7 padding, with a 32-byte key.
|
|
87
|
+
*
|
|
88
|
+
* @stability unstable
|
|
89
|
+
* @category algorithms
|
|
90
|
+
* @since 4.0.0
|
|
91
|
+
*/
|
|
92
|
+
export const aes256Cbc = {
|
|
93
|
+
name: "aes256Cbc",
|
|
94
|
+
mode: "AES-CBC",
|
|
95
|
+
keyLength: 32
|
|
96
|
+
};
|
|
97
|
+
const KeyProto = /*#__PURE__*/KeyModel.redactedProto(TypeId, "Cipher.Key");
|
|
98
|
+
/**
|
|
99
|
+
* Checks whether a value is a {@link Key}.
|
|
100
|
+
*
|
|
101
|
+
* @stability unstable
|
|
102
|
+
* @category guards
|
|
103
|
+
* @since 4.0.0
|
|
104
|
+
*/
|
|
105
|
+
export const isKey = u => Predicate.hasProperty(u, TypeId);
|
|
106
|
+
/**
|
|
107
|
+
* Service that generates keys, encrypts, and decrypts without
|
|
108
|
+
* authentication.
|
|
109
|
+
*
|
|
110
|
+
* **Example** (Encrypting with AES-CBC)
|
|
111
|
+
*
|
|
112
|
+
* ```ts import.meta.vitest
|
|
113
|
+
* import { Effect, Layer } from "effect"
|
|
114
|
+
* import { Cipher, SecureRandom } from "effect/crypto"
|
|
115
|
+
*
|
|
116
|
+
* const program = Effect.gen(function*() {
|
|
117
|
+
* const cipher = yield* Cipher.Cipher
|
|
118
|
+
* const random = yield* SecureRandom.SecureRandom
|
|
119
|
+
* const key = yield* cipher.generateKey(Cipher.aes256Cbc)
|
|
120
|
+
* const iv = yield* random.randomBytes(16)
|
|
121
|
+
* const ciphertext = yield* cipher.encrypt(key, new TextEncoder().encode("secret"), { iv })
|
|
122
|
+
* const plaintext = yield* cipher.decrypt(key, ciphertext, { iv })
|
|
123
|
+
* return [ciphertext.length, new TextDecoder().decode(plaintext)]
|
|
124
|
+
* })
|
|
125
|
+
*
|
|
126
|
+
* const layer = Cipher.layerWebCrypto.pipe(Layer.provideMerge(SecureRandom.layerWebCrypto))
|
|
127
|
+
* await Effect.runPromise(program.pipe(Effect.provide(layer))) // => [16, "secret"]
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* @stability unstable
|
|
131
|
+
* @category services
|
|
132
|
+
* @since 4.0.0
|
|
133
|
+
*/
|
|
134
|
+
export class Cipher extends /*#__PURE__*/Context.Service()("effect/crypto/Cipher") {}
|
|
135
|
+
const fail = (method, reason) => internal.fail("Cipher", method, reason);
|
|
136
|
+
const blockLength = 16;
|
|
137
|
+
const params = (algorithm, iv) => algorithm.mode === "AES-CTR" ? {
|
|
138
|
+
name: "AES-CTR",
|
|
139
|
+
counter: iv,
|
|
140
|
+
length: 128
|
|
141
|
+
} : {
|
|
142
|
+
name: "AES-CBC",
|
|
143
|
+
iv: iv
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Layer that provides `Cipher` on the `WebCrypto` reference.
|
|
147
|
+
*
|
|
148
|
+
* **Details**
|
|
149
|
+
*
|
|
150
|
+
* Encryption and decryption run on `crypto.subtle`. The layer imports a
|
|
151
|
+
* byte-backed key on first use and caches the `CryptoKey`. AES-CTR uses the
|
|
152
|
+
* whole 128-bit block as the counter (`length: 128`), which every runtime
|
|
153
|
+
* supports. Generated keys come from `SecureRandom`, so a seeded
|
|
154
|
+
* `SecureRandom` gives reproducible keys.
|
|
155
|
+
*
|
|
156
|
+
* @stability unstable
|
|
157
|
+
* @category layers
|
|
158
|
+
* @since 4.0.0
|
|
159
|
+
*/
|
|
160
|
+
export const layerWebCrypto = /*#__PURE__*/Layer.effect(Cipher, /*#__PURE__*/Effect.gen(function* () {
|
|
161
|
+
const random = yield* SecureRandom.SecureRandom;
|
|
162
|
+
const crypto = yield* WebCrypto.WebCrypto;
|
|
163
|
+
const cryptoKeyFor = KeyModel.makeCache((subtle, bytes, algorithm) => subtle.importKey("raw", bytes, algorithm.mode, false, ["encrypt", "decrypt"]));
|
|
164
|
+
const run = method => (key, data, options) => Effect.suspend(() => {
|
|
165
|
+
if (options.iv.length !== blockLength) {
|
|
166
|
+
return fail(method, new CryptoError.InvalidArgument({
|
|
167
|
+
description: "IVs must contain exactly 16 bytes"
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
170
|
+
// Checked here so a bad length is not reported differently from bad padding.
|
|
171
|
+
const cbc = key.algorithm.mode === "AES-CBC";
|
|
172
|
+
if (method === "decrypt" && cbc && (data.length === 0 || data.length % blockLength !== 0)) {
|
|
173
|
+
return fail(method, new CryptoError.DecryptionFailed());
|
|
174
|
+
}
|
|
175
|
+
return internal.run("Cipher", method, key.algorithm.name, crypto, async subtle => new Uint8Array(await subtle[method](params(key.algorithm, options.iv), await cryptoKeyFor(subtle, key), data)), cause => internal.webCryptoError("Cipher", method, key.algorithm.name, cause, method === "decrypt" && cbc ? () => new CryptoError.DecryptionFailed() : undefined));
|
|
176
|
+
});
|
|
177
|
+
return Cipher.of({
|
|
178
|
+
generateKey: algorithm => Effect.map(random.randomBytes(algorithm.keyLength), bytes => KeyModel.makeBytes(KeyProto, algorithm, bytes)),
|
|
179
|
+
encrypt: run("encrypt"),
|
|
180
|
+
decrypt: run("decrypt")
|
|
181
|
+
});
|
|
182
|
+
}));
|
|
183
|
+
/**
|
|
184
|
+
* Builds a key from raw key bytes.
|
|
185
|
+
*
|
|
186
|
+
* **Details**
|
|
187
|
+
*
|
|
188
|
+
* Copies the bytes, including Node.js `Buffer` inputs. A length other than
|
|
189
|
+
* the algorithm's key length fails with an `InvalidKey` reason. AES-192 is
|
|
190
|
+
* not supported.
|
|
191
|
+
*
|
|
192
|
+
* @stability unstable
|
|
193
|
+
* @category constructors
|
|
194
|
+
* @since 4.0.0
|
|
195
|
+
*/
|
|
196
|
+
export const key = (algorithm, bytes) => KeyModel.fromBytes("Cipher", "key", KeyProto, algorithm, bytes, KeyModel.checkKeyLength(algorithm));
|
|
197
|
+
/**
|
|
198
|
+
* Builds a key from an existing `CryptoKey`, such as a non-extractable one.
|
|
199
|
+
*
|
|
200
|
+
* **Details**
|
|
201
|
+
*
|
|
202
|
+
* The `CryptoKey` must be a secret key for the algorithm's mode (`AES-CTR` or
|
|
203
|
+
* `AES-CBC`) and length, with both the `encrypt` and `decrypt` usages, since
|
|
204
|
+
* a key reaches both operations. Otherwise the constructor fails with an
|
|
205
|
+
* `InvalidKey` reason. It must come from the `Crypto` object of the
|
|
206
|
+
* `WebCrypto` reference.
|
|
207
|
+
*
|
|
208
|
+
* @stability unstable
|
|
209
|
+
* @category constructors
|
|
210
|
+
* @since 4.0.0
|
|
211
|
+
*/
|
|
212
|
+
export const fromCryptoKey = (algorithm, cryptoKey) => KeyModel.fromCryptoKey("Cipher", "fromCryptoKey", KeyProto, algorithm, cryptoKey, {
|
|
213
|
+
type: "secret",
|
|
214
|
+
name: algorithm.mode,
|
|
215
|
+
usages: ["encrypt", "decrypt"],
|
|
216
|
+
usagePolicy: "all",
|
|
217
|
+
check: KeyModel.checkAesLength(algorithm.mode, algorithm.keyLength)
|
|
218
|
+
});
|
|
219
|
+
/**
|
|
220
|
+
* Exports a key's bytes.
|
|
221
|
+
*
|
|
222
|
+
* **Details**
|
|
223
|
+
*
|
|
224
|
+
* Returns a fresh `Uint8Array` that shares no memory with the key. A
|
|
225
|
+
* `CryptoKey`-backed key is exported on the `WebCrypto` reference, and fails
|
|
226
|
+
* with a `NotExtractable` reason when the `CryptoKey` is not extractable.
|
|
227
|
+
*
|
|
228
|
+
* @stability unstable
|
|
229
|
+
* @category converting
|
|
230
|
+
* @since 4.0.0
|
|
231
|
+
*/
|
|
232
|
+
export const toBytes = key => KeyModel.toBytes("Cipher", key, KeyModel.exportRaw);
|
|
233
|
+
//# sourceMappingURL=Cipher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Cipher.js","names":[],"sources":["../../src/crypto/Cipher.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
declare const TypeId: "~effect/crypto/CryptoError";
|
|
2
|
+
declare const ReasonTypeId: "~effect/crypto/CryptoError/Reason";
|
|
3
|
+
declare const InvalidArgument_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
4
|
+
readonly _tag: "InvalidArgument";
|
|
5
|
+
} & Readonly<A>;
|
|
6
|
+
/**
|
|
7
|
+
* Reason for an argument that the operation rejects before using the key or
|
|
8
|
+
* data, such as a wrong nonce length, an out-of-range iteration count, or
|
|
9
|
+
* `info` passed to a key derivation other than HKDF.
|
|
10
|
+
*
|
|
11
|
+
* @stability unstable
|
|
12
|
+
* @category errors
|
|
13
|
+
* @since 4.0.0
|
|
14
|
+
*/
|
|
15
|
+
export declare class InvalidArgument extends InvalidArgument_base<{
|
|
16
|
+
readonly description: string;
|
|
17
|
+
readonly cause?: unknown;
|
|
18
|
+
}> {
|
|
19
|
+
/**
|
|
20
|
+
* Marks this value as a `CryptoError` reason for runtime guards.
|
|
21
|
+
*
|
|
22
|
+
* @since 4.0.0
|
|
23
|
+
*/
|
|
24
|
+
readonly [ReasonTypeId]: "~effect/crypto/CryptoError/Reason";
|
|
25
|
+
get message(): string;
|
|
26
|
+
}
|
|
27
|
+
declare const InvalidKey_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
28
|
+
readonly _tag: "InvalidKey";
|
|
29
|
+
} & Readonly<A>;
|
|
30
|
+
/**
|
|
31
|
+
* Reason for key material that is rejected, such as a wrong raw key length,
|
|
32
|
+
* malformed DER, PEM, or JWK data, a `CryptoKey` that does not match the typed
|
|
33
|
+
* key, or a peer public key that produces an all-zero shared secret.
|
|
34
|
+
*
|
|
35
|
+
* @stability unstable
|
|
36
|
+
* @category errors
|
|
37
|
+
* @since 4.0.0
|
|
38
|
+
*/
|
|
39
|
+
export declare class InvalidKey extends InvalidKey_base<{
|
|
40
|
+
readonly description: string;
|
|
41
|
+
readonly cause?: unknown;
|
|
42
|
+
}> {
|
|
43
|
+
/**
|
|
44
|
+
* Marks this value as a `CryptoError` reason for runtime guards.
|
|
45
|
+
*
|
|
46
|
+
* @since 4.0.0
|
|
47
|
+
*/
|
|
48
|
+
readonly [ReasonTypeId]: "~effect/crypto/CryptoError/Reason";
|
|
49
|
+
get message(): string;
|
|
50
|
+
}
|
|
51
|
+
declare const DecryptionFailed_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
52
|
+
readonly _tag: "DecryptionFailed";
|
|
53
|
+
} & Readonly<A>;
|
|
54
|
+
/**
|
|
55
|
+
* Reason for a decryption or unwrap that failed its integrity check, or a CBC
|
|
56
|
+
* ciphertext with bad padding or length.
|
|
57
|
+
*
|
|
58
|
+
* **Details**
|
|
59
|
+
*
|
|
60
|
+
* The reason is identical for every cause and carries no `cause` or runtime
|
|
61
|
+
* message, so callers cannot tell a tampered tag from bad padding. Keeping
|
|
62
|
+
* either would create a padding oracle.
|
|
63
|
+
*
|
|
64
|
+
* @stability unstable
|
|
65
|
+
* @category errors
|
|
66
|
+
* @since 4.0.0
|
|
67
|
+
*/
|
|
68
|
+
export declare class DecryptionFailed extends DecryptionFailed_base<{}> {
|
|
69
|
+
/**
|
|
70
|
+
* Marks this value as a `CryptoError` reason for runtime guards.
|
|
71
|
+
*
|
|
72
|
+
* @since 4.0.0
|
|
73
|
+
*/
|
|
74
|
+
readonly [ReasonTypeId]: "~effect/crypto/CryptoError/Reason";
|
|
75
|
+
get message(): string;
|
|
76
|
+
}
|
|
77
|
+
declare const Unsupported_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
78
|
+
readonly _tag: "Unsupported";
|
|
79
|
+
} & Readonly<A>;
|
|
80
|
+
/**
|
|
81
|
+
* Reason for an algorithm or key that a layer does not provide, such as
|
|
82
|
+
* Argon2id under `Kdf.layerWebCrypto`, or a `CryptoKey`-backed key passed to a
|
|
83
|
+
* layer that cannot use it.
|
|
84
|
+
*
|
|
85
|
+
* @stability unstable
|
|
86
|
+
* @category errors
|
|
87
|
+
* @since 4.0.0
|
|
88
|
+
*/
|
|
89
|
+
export declare class Unsupported extends Unsupported_base<{
|
|
90
|
+
readonly description: string;
|
|
91
|
+
readonly cause?: unknown;
|
|
92
|
+
}> {
|
|
93
|
+
/**
|
|
94
|
+
* Marks this value as a `CryptoError` reason for runtime guards.
|
|
95
|
+
*
|
|
96
|
+
* @since 4.0.0
|
|
97
|
+
*/
|
|
98
|
+
readonly [ReasonTypeId]: "~effect/crypto/CryptoError/Reason";
|
|
99
|
+
get message(): string;
|
|
100
|
+
}
|
|
101
|
+
declare const NotExtractable_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
102
|
+
readonly _tag: "NotExtractable";
|
|
103
|
+
} & Readonly<A>;
|
|
104
|
+
/**
|
|
105
|
+
* Reason for exporting or wrapping a `CryptoKey` that was created as
|
|
106
|
+
* non-extractable.
|
|
107
|
+
*
|
|
108
|
+
* @stability unstable
|
|
109
|
+
* @category errors
|
|
110
|
+
* @since 4.0.0
|
|
111
|
+
*/
|
|
112
|
+
export declare class NotExtractable extends NotExtractable_base<{
|
|
113
|
+
readonly description: string;
|
|
114
|
+
readonly cause?: unknown;
|
|
115
|
+
}> {
|
|
116
|
+
/**
|
|
117
|
+
* Marks this value as a `CryptoError` reason for runtime guards.
|
|
118
|
+
*
|
|
119
|
+
* @since 4.0.0
|
|
120
|
+
*/
|
|
121
|
+
readonly [ReasonTypeId]: "~effect/crypto/CryptoError/Reason";
|
|
122
|
+
get message(): string;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Union of the reasons carried by `CryptoError`.
|
|
126
|
+
*
|
|
127
|
+
* @stability unstable
|
|
128
|
+
* @category errors
|
|
129
|
+
* @since 4.0.0
|
|
130
|
+
*/
|
|
131
|
+
export type CryptoErrorReason = InvalidArgument | InvalidKey | DecryptionFailed | Unsupported | NotExtractable;
|
|
132
|
+
declare const CryptoError_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
133
|
+
readonly _tag: "CryptoError";
|
|
134
|
+
} & Readonly<A>;
|
|
135
|
+
/**
|
|
136
|
+
* Error returned by the `effect/crypto` modules.
|
|
137
|
+
*
|
|
138
|
+
* **When to use**
|
|
139
|
+
*
|
|
140
|
+
* Use to handle failures from any `effect/crypto` operation, matching on
|
|
141
|
+
* `reason` to separate caller mistakes from failed decryption.
|
|
142
|
+
*
|
|
143
|
+
* **Details**
|
|
144
|
+
*
|
|
145
|
+
* `module` and `method` name the operation, such as `"Aead"` and `"decrypt"`.
|
|
146
|
+
* The message reads `"Aead.decrypt: <reason message>"`. The error's `cause`
|
|
147
|
+
* is the reason's `cause`, when it has one.
|
|
148
|
+
*
|
|
149
|
+
* **Example** (Recovering from failed decryption)
|
|
150
|
+
*
|
|
151
|
+
* ```ts import.meta.vitest
|
|
152
|
+
* import { Effect } from "effect"
|
|
153
|
+
* import { CryptoError } from "effect/crypto"
|
|
154
|
+
*
|
|
155
|
+
* const decrypt = Effect.fail(
|
|
156
|
+
* new CryptoError.CryptoError({
|
|
157
|
+
* module: "Aead",
|
|
158
|
+
* method: "decrypt",
|
|
159
|
+
* reason: new CryptoError.DecryptionFailed()
|
|
160
|
+
* })
|
|
161
|
+
* )
|
|
162
|
+
*
|
|
163
|
+
* const program = decrypt.pipe(
|
|
164
|
+
* Effect.catchReason("CryptoError", "DecryptionFailed", () => Effect.succeed("rejected"))
|
|
165
|
+
* )
|
|
166
|
+
*
|
|
167
|
+
* await Effect.runPromise(program) // => "rejected"
|
|
168
|
+
* ```
|
|
169
|
+
*
|
|
170
|
+
* @see {@link isCryptoError} for narrowing unknown values
|
|
171
|
+
*
|
|
172
|
+
* @stability unstable
|
|
173
|
+
* @category errors
|
|
174
|
+
* @since 4.0.0
|
|
175
|
+
*/
|
|
176
|
+
export declare class CryptoError extends CryptoError_base<{
|
|
177
|
+
readonly module: string;
|
|
178
|
+
readonly method: string;
|
|
179
|
+
readonly reason: CryptoErrorReason;
|
|
180
|
+
}> {
|
|
181
|
+
/**
|
|
182
|
+
* Marks this value as a `CryptoError` for runtime guards.
|
|
183
|
+
*
|
|
184
|
+
* @since 4.0.0
|
|
185
|
+
*/
|
|
186
|
+
readonly [TypeId]: "~effect/crypto/CryptoError";
|
|
187
|
+
/**
|
|
188
|
+
* The reason's cause, when it has one.
|
|
189
|
+
*
|
|
190
|
+
* @since 4.0.0
|
|
191
|
+
*/
|
|
192
|
+
readonly cause: unknown;
|
|
193
|
+
get message(): string;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Checks whether a value is a `CryptoError`.
|
|
197
|
+
*
|
|
198
|
+
* @stability unstable
|
|
199
|
+
* @category guards
|
|
200
|
+
* @since 4.0.0
|
|
201
|
+
*/
|
|
202
|
+
export declare const isCryptoError: (u: unknown) => u is CryptoError;
|
|
203
|
+
/**
|
|
204
|
+
* Checks whether a value is one of the reasons carried by `CryptoError`.
|
|
205
|
+
*
|
|
206
|
+
* @stability unstable
|
|
207
|
+
* @category guards
|
|
208
|
+
* @since 4.0.0
|
|
209
|
+
*/
|
|
210
|
+
export declare const isCryptoErrorReason: (u: unknown) => u is CryptoErrorReason;
|
|
211
|
+
export {};
|
|
212
|
+
//# sourceMappingURL=CryptoError.d.ts.map
|