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,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compact JSON Web Signatures.
|
|
3
|
+
*
|
|
4
|
+
* The signing algorithm is the key's: {@link sign} writes it into the
|
|
5
|
+
* protected header and {@link verify} rejects a token whose `alg` differs.
|
|
6
|
+
* {@link verifyWithKeySet} resolves the key from the `Jwks` service and
|
|
7
|
+
* requires an allowlist of asymmetric algorithms. Headers with `crit` or `b64`
|
|
8
|
+
* are rejected.
|
|
9
|
+
*
|
|
10
|
+
* Bound untrusted token length before verification; this module does not
|
|
11
|
+
* impose a token-size limit.
|
|
12
|
+
*
|
|
13
|
+
* HMAC signatures run on the `Mac` service. On Node.js and Bun,
|
|
14
|
+
* `NodeCrypto.layerMac` and `BunCrypto.layerMac` compute them synchronously
|
|
15
|
+
* with `node:crypto` instead of through Web Crypto for byte-backed keys, such
|
|
16
|
+
* as those from `Jwk.importSecret`.
|
|
17
|
+
*
|
|
18
|
+
* @stability unstable
|
|
19
|
+
* @since 4.1.1
|
|
20
|
+
*/
|
|
21
|
+
import * as Mac from "../crypto/Mac.ts";
|
|
22
|
+
import * as Signature from "../crypto/Signature.ts";
|
|
23
|
+
import * as Effect from "../Effect.ts";
|
|
24
|
+
import * as Redacted from "../Redacted.ts";
|
|
25
|
+
import * as Schema from "../Schema.ts";
|
|
26
|
+
import * as JoseError from "./JoseError.ts";
|
|
27
|
+
import { AsymmetricAlgorithm, type HmacAlgorithm, type PublicKey, type SecretKey, type SigningKey, type VerificationKey } from "./Jwk.ts";
|
|
28
|
+
import { Jwks } from "./Jwks.ts";
|
|
29
|
+
/**
|
|
30
|
+
* Schema for an authenticated JWS protected header, including additional
|
|
31
|
+
* JSON-valued parameters.
|
|
32
|
+
*
|
|
33
|
+
* @stability unstable
|
|
34
|
+
* @category schemas
|
|
35
|
+
* @since 4.1.1
|
|
36
|
+
*/
|
|
37
|
+
export declare const ProtectedHeader: Schema.StructWithRest<Schema.Struct<{
|
|
38
|
+
readonly alg: Schema.Literals<readonly ["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512", "EdDSA"]>;
|
|
39
|
+
readonly kid: Schema.optionalKey<Schema.String>;
|
|
40
|
+
readonly typ: Schema.optionalKey<Schema.String>;
|
|
41
|
+
readonly cty: Schema.optionalKey<Schema.String>;
|
|
42
|
+
}>, readonly [Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>]>;
|
|
43
|
+
/**
|
|
44
|
+
* An authenticated JWS protected header.
|
|
45
|
+
*
|
|
46
|
+
* @stability unstable
|
|
47
|
+
* @category models
|
|
48
|
+
* @since 4.1.1
|
|
49
|
+
*/
|
|
50
|
+
export type ProtectedHeader = typeof ProtectedHeader.Type;
|
|
51
|
+
/**
|
|
52
|
+
* Standard header parameters to sign. Signing also accepts additional
|
|
53
|
+
* JSON-valued parameters. `alg` comes from the key and `kid` defaults to the
|
|
54
|
+
* key's.
|
|
55
|
+
*
|
|
56
|
+
* @stability unstable
|
|
57
|
+
* @category models
|
|
58
|
+
* @since 4.1.1
|
|
59
|
+
*/
|
|
60
|
+
export interface Header {
|
|
61
|
+
readonly alg?: never;
|
|
62
|
+
readonly crit?: never;
|
|
63
|
+
readonly b64?: never;
|
|
64
|
+
readonly kid?: string | undefined;
|
|
65
|
+
readonly typ?: string | undefined;
|
|
66
|
+
readonly cty?: string | undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The protected header and payload of a verified JWS.
|
|
70
|
+
*
|
|
71
|
+
* @stability unstable
|
|
72
|
+
* @category models
|
|
73
|
+
* @since 4.1.1
|
|
74
|
+
*/
|
|
75
|
+
export interface Verified {
|
|
76
|
+
readonly protectedHeader: ProtectedHeader;
|
|
77
|
+
readonly payload: Uint8Array;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Options for {@link verifyWithKeySet}.
|
|
81
|
+
*
|
|
82
|
+
* @stability unstable
|
|
83
|
+
* @category models
|
|
84
|
+
* @since 4.1.1
|
|
85
|
+
*/
|
|
86
|
+
export interface VerifyWithKeySetOptions {
|
|
87
|
+
/**
|
|
88
|
+
* The algorithms a token may use. Must not be empty.
|
|
89
|
+
*/
|
|
90
|
+
readonly algorithms: ReadonlyArray<AsymmetricAlgorithm>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Services required to sign and verify with any key.
|
|
94
|
+
*
|
|
95
|
+
* @stability unstable
|
|
96
|
+
* @category models
|
|
97
|
+
* @since 4.1.1
|
|
98
|
+
*/
|
|
99
|
+
export type Requirements = Mac.Mac | Signature.Signature;
|
|
100
|
+
/**
|
|
101
|
+
* Services required to sign or verify with a key of type `K`: `Mac` for
|
|
102
|
+
* HMAC keys and `Signature` for asymmetric keys. A union of key types
|
|
103
|
+
* requires both.
|
|
104
|
+
*
|
|
105
|
+
* @stability unstable
|
|
106
|
+
* @category models
|
|
107
|
+
* @since 4.1.1
|
|
108
|
+
*/
|
|
109
|
+
export type KeyRequirements<K extends SigningKey | VerificationKey> = K extends SecretKey<HmacAlgorithm> ? Mac.Mac : Signature.Signature;
|
|
110
|
+
/**
|
|
111
|
+
* Signs a payload as a compact JWS with the key's algorithm.
|
|
112
|
+
*
|
|
113
|
+
* **Example** (Signing and verifying a payload)
|
|
114
|
+
*
|
|
115
|
+
* ```ts import.meta.vitest
|
|
116
|
+
* import { Effect, Layer, Redacted } from "effect"
|
|
117
|
+
* import { Mac, SecureRandom, Signature } from "effect/crypto"
|
|
118
|
+
* import { Jwk, Jws } from "effect/jose"
|
|
119
|
+
*
|
|
120
|
+
* const layer = Layer.mergeAll(Mac.layerWebCrypto, Signature.layerWebCrypto).pipe(
|
|
121
|
+
* Layer.provide(SecureRandom.layerWebCrypto)
|
|
122
|
+
* )
|
|
123
|
+
*
|
|
124
|
+
* const payload = await Effect.runPromise(Effect.gen(function*() {
|
|
125
|
+
* // Fixed public example material; generate application secrets securely.
|
|
126
|
+
* const key = yield* Jwk.importSecret(
|
|
127
|
+
* Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const),
|
|
128
|
+
* "HS256"
|
|
129
|
+
* )
|
|
130
|
+
* const token = yield* Jws.sign(new TextEncoder().encode("hello"), key)
|
|
131
|
+
* const verified = yield* Jws.verify(token, key)
|
|
132
|
+
* return new TextDecoder().decode(verified.payload)
|
|
133
|
+
* }).pipe(Effect.provide(layer)))
|
|
134
|
+
* payload // => "hello"
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* @see {@link verify}
|
|
138
|
+
*
|
|
139
|
+
* @stability unstable
|
|
140
|
+
* @category cryptography
|
|
141
|
+
* @since 4.1.1
|
|
142
|
+
*/
|
|
143
|
+
export declare const sign: <K extends SigningKey, H extends object & {
|
|
144
|
+
readonly [P in keyof H]: Schema.Json | undefined;
|
|
145
|
+
} = Header>(payload: Uint8Array, key: K, header?: Header & H) => Effect.Effect<Redacted.Redacted<string>, JoseError.JoseError, KeyRequirements<K>>;
|
|
146
|
+
/**
|
|
147
|
+
* Verifies a compact JWS with a key. The token's `alg` must be the key's
|
|
148
|
+
* algorithm.
|
|
149
|
+
*
|
|
150
|
+
* @see {@link sign}
|
|
151
|
+
* @see {@link verifyWithKeySet} for resolving the key from the `Jwks` service
|
|
152
|
+
*
|
|
153
|
+
* @stability unstable
|
|
154
|
+
* @category cryptography
|
|
155
|
+
* @since 4.1.1
|
|
156
|
+
*/
|
|
157
|
+
export declare const verify: <K extends VerificationKey>(token: string | Redacted.Redacted<string>, key: K) => Effect.Effect<Verified, JoseError.JoseError, KeyRequirements<K>>;
|
|
158
|
+
/**
|
|
159
|
+
* Verifies a compact JWS with a public key resolved from the `Jwks` service by
|
|
160
|
+
* the token's `alg` and `kid`.
|
|
161
|
+
*
|
|
162
|
+
* **Details**
|
|
163
|
+
*
|
|
164
|
+
* The token's `alg` must be in `algorithms`, which is checked before any key
|
|
165
|
+
* lookup. The resolved key's algorithm must match the token's. HMAC tokens
|
|
166
|
+
* are always rejected.
|
|
167
|
+
*
|
|
168
|
+
* @see {@link verify} for verifying with a known key
|
|
169
|
+
*
|
|
170
|
+
* @stability unstable
|
|
171
|
+
* @category cryptography
|
|
172
|
+
* @since 4.1.1
|
|
173
|
+
*/
|
|
174
|
+
export declare const verifyWithKeySet: (token: string | Redacted.Redacted<string>, options: VerifyWithKeySetOptions) => Effect.Effect<Verified & {
|
|
175
|
+
readonly key: PublicKey;
|
|
176
|
+
}, JoseError.JoseError, Jwks | Signature.Signature>;
|
|
177
|
+
//# sourceMappingURL=Jws.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Jws.d.ts","sourceRoot":"","sources":["../../src/jose/Jws.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAYtC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAEL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;mGAQ3B,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAEzD;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;CACxD;AAED;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,SAAS,CAAA;AAExD;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,UAAU,GAAG,eAAe,IAAI,CAAC,SAAS,SAAS,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,GAAG,GAC9G,SAAS,CAAC,SAAS,CAAA;AAyDvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,IAAI,EAAE,CACjB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,MAAM,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS;CAAE,GAAG,MAAM,EAEhF,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,CAAC,EACN,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,KAChB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAiB5E,CAAA;AAET;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,EAAE,CAAC,CAAC,SAAS,eAAe,EAC7C,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EACzC,GAAG,EAAE,CAAC,KACH,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAY3D,CAAA;AAET;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB;kBAGkB,SAAS;mDAStD,CAAA"}
|
package/dist/jose/Jws.js
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compact JSON Web Signatures.
|
|
3
|
+
*
|
|
4
|
+
* The signing algorithm is the key's: {@link sign} writes it into the
|
|
5
|
+
* protected header and {@link verify} rejects a token whose `alg` differs.
|
|
6
|
+
* {@link verifyWithKeySet} resolves the key from the `Jwks` service and
|
|
7
|
+
* requires an allowlist of asymmetric algorithms. Headers with `crit` or `b64`
|
|
8
|
+
* are rejected.
|
|
9
|
+
*
|
|
10
|
+
* Bound untrusted token length before verification; this module does not
|
|
11
|
+
* impose a token-size limit.
|
|
12
|
+
*
|
|
13
|
+
* HMAC signatures run on the `Mac` service. On Node.js and Bun,
|
|
14
|
+
* `NodeCrypto.layerMac` and `BunCrypto.layerMac` compute them synchronously
|
|
15
|
+
* with `node:crypto` instead of through Web Crypto for byte-backed keys, such
|
|
16
|
+
* as those from `Jwk.importSecret`.
|
|
17
|
+
*
|
|
18
|
+
* @stability unstable
|
|
19
|
+
* @since 4.1.1
|
|
20
|
+
*/
|
|
21
|
+
import * as Mac from "../crypto/Mac.js";
|
|
22
|
+
import * as Signature from "../crypto/Signature.js";
|
|
23
|
+
import * as Effect from "../Effect.js";
|
|
24
|
+
import * as Base64Url from "../encoding/Base64Url.js";
|
|
25
|
+
import * as Redacted from "../Redacted.js";
|
|
26
|
+
import * as Schema from "../Schema.js";
|
|
27
|
+
import { cryptoFailure, decodeHeader, decodeSegment, encodeHeader, fail, invalidArgument, invalidToken, split, utf8 } from "./internal/compact.js";
|
|
28
|
+
import * as JoseError from "./JoseError.js";
|
|
29
|
+
import { Algorithm, AsymmetricAlgorithm } from "./Jwk.js";
|
|
30
|
+
import { Jwks } from "./Jwks.js";
|
|
31
|
+
/**
|
|
32
|
+
* Schema for an authenticated JWS protected header, including additional
|
|
33
|
+
* JSON-valued parameters.
|
|
34
|
+
*
|
|
35
|
+
* @stability unstable
|
|
36
|
+
* @category schemas
|
|
37
|
+
* @since 4.1.1
|
|
38
|
+
*/
|
|
39
|
+
export const ProtectedHeader = /*#__PURE__*/Schema.StructWithRest(/*#__PURE__*/Schema.Struct({
|
|
40
|
+
alg: Algorithm,
|
|
41
|
+
kid: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
42
|
+
typ: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
43
|
+
cty: /*#__PURE__*/Schema.optionalKey(Schema.String)
|
|
44
|
+
}), [/*#__PURE__*/Schema.Record(Schema.String, Schema.Json)]);
|
|
45
|
+
const decodeProtectedHeader = /*#__PURE__*/Schema.decodeUnknownOption(ProtectedHeader);
|
|
46
|
+
/**
|
|
47
|
+
* Parses a compact JWS without verifying it.
|
|
48
|
+
*
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
export const parse = /*#__PURE__*/Effect.fnUntraced(function* (token) {
|
|
52
|
+
const [header, payload, signature] = yield* split(token, 3);
|
|
53
|
+
const protectedHeader = yield* decodeHeader(header, decodeProtectedHeader, ["crit", "b64"]);
|
|
54
|
+
const payloadBytes = decodeSegment(payload);
|
|
55
|
+
const signatureBytes = decodeSegment(signature);
|
|
56
|
+
if (payloadBytes === undefined || signatureBytes === undefined) {
|
|
57
|
+
return yield* invalidToken("The payload or signature is not base64url");
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
protectedHeader,
|
|
61
|
+
payload: payloadBytes,
|
|
62
|
+
signature: signatureBytes,
|
|
63
|
+
signingInput: utf8(`${header}.${payload}`)
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
const signFailure = /*#__PURE__*/cryptoFailure("Could not sign with the key");
|
|
67
|
+
const verifyFailure = /*#__PURE__*/cryptoFailure("Could not verify with the key");
|
|
68
|
+
const isAsymmetricAlgorithm = /*#__PURE__*/Schema.is(AsymmetricAlgorithm);
|
|
69
|
+
const algorithmNotAllowed = /*#__PURE__*/fail(/*#__PURE__*/new JoseError.AlgorithmNotAllowed());
|
|
70
|
+
const authenticated = (parsed, valid) => valid ? Effect.succeed({
|
|
71
|
+
protectedHeader: parsed.protectedHeader,
|
|
72
|
+
payload: parsed.payload
|
|
73
|
+
}) : fail(new JoseError.SignatureVerificationFailed());
|
|
74
|
+
const verifySignature = /*#__PURE__*/Effect.fnUntraced(function* (parsed, key) {
|
|
75
|
+
const signature = yield* Signature.Signature;
|
|
76
|
+
const valid = yield* signature.verify(key.key, parsed.signature, parsed.signingInput).pipe(Effect.mapError(verifyFailure));
|
|
77
|
+
return yield* authenticated(parsed, valid);
|
|
78
|
+
});
|
|
79
|
+
/**
|
|
80
|
+
* Signs a payload as a compact JWS with the key's algorithm.
|
|
81
|
+
*
|
|
82
|
+
* **Example** (Signing and verifying a payload)
|
|
83
|
+
*
|
|
84
|
+
* ```ts import.meta.vitest
|
|
85
|
+
* import { Effect, Layer, Redacted } from "effect"
|
|
86
|
+
* import { Mac, SecureRandom, Signature } from "effect/crypto"
|
|
87
|
+
* import { Jwk, Jws } from "effect/jose"
|
|
88
|
+
*
|
|
89
|
+
* const layer = Layer.mergeAll(Mac.layerWebCrypto, Signature.layerWebCrypto).pipe(
|
|
90
|
+
* Layer.provide(SecureRandom.layerWebCrypto)
|
|
91
|
+
* )
|
|
92
|
+
*
|
|
93
|
+
* const payload = await Effect.runPromise(Effect.gen(function*() {
|
|
94
|
+
* // Fixed public example material; generate application secrets securely.
|
|
95
|
+
* const key = yield* Jwk.importSecret(
|
|
96
|
+
* Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const),
|
|
97
|
+
* "HS256"
|
|
98
|
+
* )
|
|
99
|
+
* const token = yield* Jws.sign(new TextEncoder().encode("hello"), key)
|
|
100
|
+
* const verified = yield* Jws.verify(token, key)
|
|
101
|
+
* return new TextDecoder().decode(verified.payload)
|
|
102
|
+
* }).pipe(Effect.provide(layer)))
|
|
103
|
+
* payload // => "hello"
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* @see {@link verify}
|
|
107
|
+
*
|
|
108
|
+
* @stability unstable
|
|
109
|
+
* @category cryptography
|
|
110
|
+
* @since 4.1.1
|
|
111
|
+
*/
|
|
112
|
+
export const sign = /*#__PURE__*/Effect.fnUntraced(function* (payload, key, header) {
|
|
113
|
+
const protectedHeader = yield* encodeHeader({
|
|
114
|
+
alg: key.algorithm
|
|
115
|
+
}, key.kid, header, ["crit", "b64"]);
|
|
116
|
+
const signingInput = `${protectedHeader}.${Base64Url.encode(payload)}`;
|
|
117
|
+
const data = utf8(signingInput);
|
|
118
|
+
let signature;
|
|
119
|
+
if (key._tag === "SecretKey") {
|
|
120
|
+
const mac = yield* Mac.Mac;
|
|
121
|
+
signature = yield* mac.sign(key.key, data).pipe(Effect.mapError(signFailure));
|
|
122
|
+
} else {
|
|
123
|
+
const signer = yield* Signature.Signature;
|
|
124
|
+
signature = yield* signer.sign(key.key, data).pipe(Effect.mapError(signFailure));
|
|
125
|
+
}
|
|
126
|
+
return Redacted.make(`${signingInput}.${Base64Url.encode(signature)}`);
|
|
127
|
+
}); // Each branch uses only the service its key type requires.
|
|
128
|
+
/**
|
|
129
|
+
* Verifies a compact JWS with a key. The token's `alg` must be the key's
|
|
130
|
+
* algorithm.
|
|
131
|
+
*
|
|
132
|
+
* @see {@link sign}
|
|
133
|
+
* @see {@link verifyWithKeySet} for resolving the key from the `Jwks` service
|
|
134
|
+
*
|
|
135
|
+
* @stability unstable
|
|
136
|
+
* @category cryptography
|
|
137
|
+
* @since 4.1.1
|
|
138
|
+
*/
|
|
139
|
+
export const verify = /*#__PURE__*/Effect.fnUntraced(function* (token, key) {
|
|
140
|
+
const parsed = yield* parse(token);
|
|
141
|
+
if (parsed.protectedHeader.alg !== key.algorithm) return yield* algorithmNotAllowed;
|
|
142
|
+
if (key._tag === "PublicKey") return yield* verifySignature(parsed, key);
|
|
143
|
+
const mac = yield* Mac.Mac;
|
|
144
|
+
const valid = yield* mac.verify(key.key, parsed.signature, parsed.signingInput).pipe(Effect.mapError(verifyFailure));
|
|
145
|
+
return yield* authenticated(parsed, valid);
|
|
146
|
+
}); // Each branch uses only the service its key type requires.
|
|
147
|
+
/**
|
|
148
|
+
* Verifies a compact JWS with a public key resolved from the `Jwks` service by
|
|
149
|
+
* the token's `alg` and `kid`.
|
|
150
|
+
*
|
|
151
|
+
* **Details**
|
|
152
|
+
*
|
|
153
|
+
* The token's `alg` must be in `algorithms`, which is checked before any key
|
|
154
|
+
* lookup. The resolved key's algorithm must match the token's. HMAC tokens
|
|
155
|
+
* are always rejected.
|
|
156
|
+
*
|
|
157
|
+
* @see {@link verify} for verifying with a known key
|
|
158
|
+
*
|
|
159
|
+
* @stability unstable
|
|
160
|
+
* @category cryptography
|
|
161
|
+
* @since 4.1.1
|
|
162
|
+
*/
|
|
163
|
+
export const verifyWithKeySet = /*#__PURE__*/Effect.fnUntraced(function* (token, options) {
|
|
164
|
+
if (options.algorithms.length === 0) return yield* invalidArgument("algorithms must not be empty");
|
|
165
|
+
const parsed = yield* parse(token);
|
|
166
|
+
const {
|
|
167
|
+
alg,
|
|
168
|
+
kid
|
|
169
|
+
} = parsed.protectedHeader;
|
|
170
|
+
if (!isAsymmetricAlgorithm(alg) || !options.algorithms.includes(alg)) return yield* algorithmNotAllowed;
|
|
171
|
+
const jwks = yield* Jwks;
|
|
172
|
+
const key = yield* jwks.resolve({
|
|
173
|
+
algorithm: alg,
|
|
174
|
+
kid,
|
|
175
|
+
protectedHeader: parsed.protectedHeader
|
|
176
|
+
});
|
|
177
|
+
if (key.algorithm !== alg) return yield* algorithmNotAllowed;
|
|
178
|
+
return {
|
|
179
|
+
...(yield* verifySignature(parsed, key)),
|
|
180
|
+
key
|
|
181
|
+
};
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=Jws.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Jws.js","names":[],"sources":["../../src/jose/Jws.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import type * as Aead from "../crypto/Aead.ts";
|
|
2
|
+
import type * as SecureRandom from "../crypto/SecureRandom.ts";
|
|
3
|
+
import type * as Signature from "../crypto/Signature.ts";
|
|
4
|
+
import type * as Duration from "../Duration.ts";
|
|
5
|
+
import * as Effect from "../Effect.ts";
|
|
6
|
+
import type * as Redacted from "../Redacted.ts";
|
|
7
|
+
import * as Schema from "../Schema.ts";
|
|
8
|
+
import * as JoseError from "./JoseError.ts";
|
|
9
|
+
import * as Jwe from "./Jwe.ts";
|
|
10
|
+
import type { PublicKey, SecretKey, SigningKey, VerificationKey } from "./Jwk.ts";
|
|
11
|
+
import type { Jwks } from "./Jwks.ts";
|
|
12
|
+
import * as Jws from "./Jws.ts";
|
|
13
|
+
/**
|
|
14
|
+
* Schema for the registered claims: string `iss`, `sub`, and `jti`, a string
|
|
15
|
+
* or string array `aud`, and finite NumericDate `exp`, `nbf`, and `iat`.
|
|
16
|
+
*
|
|
17
|
+
* @stability unstable
|
|
18
|
+
* @category schemas
|
|
19
|
+
* @since 4.1.1
|
|
20
|
+
*/
|
|
21
|
+
export declare const RegisteredClaims: Schema.Struct<{
|
|
22
|
+
readonly iss: Schema.optionalKey<Schema.String>;
|
|
23
|
+
readonly sub: Schema.optionalKey<Schema.String>;
|
|
24
|
+
readonly aud: Schema.optionalKey<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.String>]>>;
|
|
25
|
+
readonly exp: Schema.optionalKey<Schema.Finite>;
|
|
26
|
+
readonly nbf: Schema.optionalKey<Schema.Finite>;
|
|
27
|
+
readonly iat: Schema.optionalKey<Schema.Finite>;
|
|
28
|
+
readonly jti: Schema.optionalKey<Schema.String>;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* The registered claims of a JWT.
|
|
32
|
+
*
|
|
33
|
+
* @stability unstable
|
|
34
|
+
* @category models
|
|
35
|
+
* @since 4.1.1
|
|
36
|
+
*/
|
|
37
|
+
export type RegisteredClaims = typeof RegisteredClaims.Type;
|
|
38
|
+
/**
|
|
39
|
+
* The claim validation policy for a signed or encrypted JWT.
|
|
40
|
+
*
|
|
41
|
+
* @stability unstable
|
|
42
|
+
* @category models
|
|
43
|
+
* @since 4.1.1
|
|
44
|
+
*/
|
|
45
|
+
export interface VerifyOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Accepted `iss` values.
|
|
48
|
+
*/
|
|
49
|
+
readonly issuer?: string | ReadonlyArray<string> | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Accepted audiences. The token's `aud` must contain at least one.
|
|
52
|
+
*/
|
|
53
|
+
readonly audience?: string | ReadonlyArray<string> | undefined;
|
|
54
|
+
readonly subject?: string | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Expected `typ` header. Media types compare case-insensitively and without
|
|
57
|
+
* the `application/` prefix.
|
|
58
|
+
*/
|
|
59
|
+
readonly typ?: string | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Tolerance for `exp`, `nbf`, and `iat`. Defaults to zero; numbers are
|
|
62
|
+
* milliseconds.
|
|
63
|
+
*/
|
|
64
|
+
readonly clockTolerance?: Duration.Input | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Maximum age measured from `iat`, which becomes required. Numbers are
|
|
67
|
+
* milliseconds.
|
|
68
|
+
*/
|
|
69
|
+
readonly maxTokenAge?: Duration.Input | undefined;
|
|
70
|
+
readonly requiredClaims?: ReadonlyArray<keyof RegisteredClaims> | undefined;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Options for {@link verifyWithKeySet}: the verification policy and the
|
|
74
|
+
* accepted algorithms.
|
|
75
|
+
*
|
|
76
|
+
* @stability unstable
|
|
77
|
+
* @category models
|
|
78
|
+
* @since 4.1.1
|
|
79
|
+
*/
|
|
80
|
+
export interface VerifyWithKeySetOptions extends VerifyOptions, Jws.VerifyWithKeySetOptions {
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A verified JWT: decoded application claims, its registered claims, and the
|
|
84
|
+
* authenticated protected header.
|
|
85
|
+
*
|
|
86
|
+
* @stability unstable
|
|
87
|
+
* @category models
|
|
88
|
+
* @since 4.1.1
|
|
89
|
+
*/
|
|
90
|
+
export interface Verified<A, H = Jws.ProtectedHeader> {
|
|
91
|
+
readonly claims: A;
|
|
92
|
+
readonly registeredClaims: RegisteredClaims;
|
|
93
|
+
readonly protectedHeader: H;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* A decrypted and validated JWT, with its protected header and decryption key.
|
|
97
|
+
*
|
|
98
|
+
* @stability unstable
|
|
99
|
+
* @category models
|
|
100
|
+
* @since 4.1.1
|
|
101
|
+
*/
|
|
102
|
+
export interface Decrypted<A> extends Verified<A, Jwe.ProtectedHeader> {
|
|
103
|
+
readonly key: SecretKey<"dir">;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The protected header and claims of a signed JWT that has not been verified.
|
|
107
|
+
*
|
|
108
|
+
* @stability unstable
|
|
109
|
+
* @category models
|
|
110
|
+
* @since 4.1.1
|
|
111
|
+
*/
|
|
112
|
+
export interface Unverified {
|
|
113
|
+
readonly protectedHeader: Jws.ProtectedHeader;
|
|
114
|
+
readonly claims: Readonly<Record<string, Schema.Json>>;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Failures of JWT operations: JOSE failures, and schema failures while
|
|
118
|
+
* encoding or decoding the application claims.
|
|
119
|
+
*
|
|
120
|
+
* @stability unstable
|
|
121
|
+
* @category errors
|
|
122
|
+
* @since 4.1.1
|
|
123
|
+
*/
|
|
124
|
+
export type JwtError = JoseError.JoseError | Schema.SchemaError;
|
|
125
|
+
/**
|
|
126
|
+
* Encodes claims with a schema and signs them as a compact JWT.
|
|
127
|
+
*
|
|
128
|
+
* **Details**
|
|
129
|
+
*
|
|
130
|
+
* The encoded claims must be a JSON object whose registered claims match
|
|
131
|
+
* {@link RegisteredClaims}.
|
|
132
|
+
*
|
|
133
|
+
* @see {@link verify}
|
|
134
|
+
* @see {@link encrypt} for encrypted JWTs
|
|
135
|
+
*
|
|
136
|
+
* @stability unstable
|
|
137
|
+
* @category cryptography
|
|
138
|
+
* @since 4.1.1
|
|
139
|
+
*/
|
|
140
|
+
export declare const sign: <S extends Schema.Constraint, K extends SigningKey, H extends object & { readonly [P in keyof H]: Schema.Json | undefined; } = Jws.Header>(schema: S, claims: S["Type"], key: K, header?: Jws.Header & H) => Effect.Effect<Redacted.Redacted<string>, JwtError, S["EncodingServices"] | Jws.KeyRequirements<K>>;
|
|
141
|
+
/**
|
|
142
|
+
* Verifies a compact JWT with a key, checks its claims against the policy, and
|
|
143
|
+
* decodes the claims with a schema.
|
|
144
|
+
*
|
|
145
|
+
* **Example** (Verifying a token)
|
|
146
|
+
*
|
|
147
|
+
* ```ts import.meta.vitest
|
|
148
|
+
* import { Effect, Layer, Redacted, Schema } from "effect"
|
|
149
|
+
* import { Mac, SecureRandom, Signature } from "effect/crypto"
|
|
150
|
+
* import { Jwk, Jwt } from "effect/jose"
|
|
151
|
+
*
|
|
152
|
+
* const layer = Layer.mergeAll(Mac.layerWebCrypto, Signature.layerWebCrypto).pipe(
|
|
153
|
+
* Layer.provide(SecureRandom.layerWebCrypto)
|
|
154
|
+
* )
|
|
155
|
+
*
|
|
156
|
+
* const Claims = Schema.Struct({ sub: Schema.String, iss: Schema.String })
|
|
157
|
+
*
|
|
158
|
+
* const claims = await Effect.runPromise(Effect.gen(function*() {
|
|
159
|
+
* // Fixed public example material; generate application secrets securely.
|
|
160
|
+
* const key = yield* Jwk.importSecret(
|
|
161
|
+
* Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const),
|
|
162
|
+
* "HS256"
|
|
163
|
+
* )
|
|
164
|
+
* const token = yield* Jwt.sign(Claims, { sub: "user-123", iss: "example" }, key)
|
|
165
|
+
* const verified = yield* Jwt.verify(Claims, token, key, { issuer: "example", requiredClaims: ["sub"] })
|
|
166
|
+
* return verified.claims
|
|
167
|
+
* }).pipe(Effect.provide(layer)))
|
|
168
|
+
* claims // => ({ sub: "user-123", iss: "example" })
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
171
|
+
* @see {@link verifyWithKeySet} for resolving the key from the `Jwks` service
|
|
172
|
+
* @see {@link decrypt} for encrypted JWTs
|
|
173
|
+
*
|
|
174
|
+
* @stability unstable
|
|
175
|
+
* @category cryptography
|
|
176
|
+
* @since 4.1.1
|
|
177
|
+
*/
|
|
178
|
+
export declare const verify: <S extends Schema.Constraint, K extends VerificationKey>(schema: S, token: string | Redacted.Redacted<string>, key: K, options?: VerifyOptions) => Effect.Effect<Verified<S["Type"]>, JwtError, S["DecodingServices"] | Jws.KeyRequirements<K>>;
|
|
179
|
+
/**
|
|
180
|
+
* Verifies a compact JWT with a public key resolved from the `Jwks` service,
|
|
181
|
+
* checks its claims against the policy, and decodes the claims with a schema.
|
|
182
|
+
*
|
|
183
|
+
* @see {@link verify} for verifying with a known key
|
|
184
|
+
*
|
|
185
|
+
* @stability unstable
|
|
186
|
+
* @category cryptography
|
|
187
|
+
* @since 4.1.1
|
|
188
|
+
*/
|
|
189
|
+
export declare const verifyWithKeySet: <S extends Schema.Constraint>(schema: S, token: string | Redacted.Redacted<string>, options: VerifyWithKeySetOptions) => Effect.Effect<Verified<S["Type"]> & {
|
|
190
|
+
readonly key: PublicKey;
|
|
191
|
+
}, JwtError, S["DecodingServices"] | Jwks | Signature.Signature>;
|
|
192
|
+
/**
|
|
193
|
+
* Encodes claims with a schema and encrypts them as a compact `dir`/A256GCM
|
|
194
|
+
* JWT.
|
|
195
|
+
*
|
|
196
|
+
* **Details**
|
|
197
|
+
*
|
|
198
|
+
* The encoded claims must be a JSON object whose registered claims match
|
|
199
|
+
* {@link RegisteredClaims}.
|
|
200
|
+
*
|
|
201
|
+
* **Example** (Encrypting and validating application claims)
|
|
202
|
+
*
|
|
203
|
+
* ```ts import.meta.vitest
|
|
204
|
+
* import { Effect, Layer, Redacted, Schema } from "effect"
|
|
205
|
+
* import { Aead, SecureRandom } from "effect/crypto"
|
|
206
|
+
* import { Jwk, Jwt } from "effect/jose"
|
|
207
|
+
*
|
|
208
|
+
* const layer = Aead.layerWebCrypto.pipe(Layer.provideMerge(SecureRandom.layerWebCrypto))
|
|
209
|
+
* const Claims = Schema.Struct({ sub: Schema.String })
|
|
210
|
+
*
|
|
211
|
+
* const claims = await Effect.runPromise(Effect.gen(function*() {
|
|
212
|
+
* // Fixed public example material; generate application secrets securely.
|
|
213
|
+
* const key = yield* Jwk.importSecret(
|
|
214
|
+
* Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const),
|
|
215
|
+
* "dir"
|
|
216
|
+
* )
|
|
217
|
+
* const token = yield* Jwt.encrypt(Claims, { sub: "user-123" }, key, { typ: "session+jwt" })
|
|
218
|
+
* const decrypted = yield* Jwt.decrypt(Claims, token, key, { typ: "session+jwt" })
|
|
219
|
+
* return decrypted.claims
|
|
220
|
+
* }).pipe(Effect.provide(layer)))
|
|
221
|
+
* claims // => ({ sub: "user-123" })
|
|
222
|
+
* ```
|
|
223
|
+
*
|
|
224
|
+
* @see {@link decrypt}
|
|
225
|
+
* @see {@link sign} for signed JWTs
|
|
226
|
+
*
|
|
227
|
+
* @stability unstable
|
|
228
|
+
* @category cryptography
|
|
229
|
+
* @since 4.1.1
|
|
230
|
+
*/
|
|
231
|
+
export declare const encrypt: <S extends Schema.Constraint, H extends object & { readonly [P in keyof H]: Schema.Json | undefined; } = Jwe.Header>(schema: S, claims: S["Type"], key: SecretKey<"dir">, header?: Jwe.Header & H) => Effect.Effect<Redacted.Redacted<string>, JwtError, S["EncodingServices"] | Aead.Aead | SecureRandom.SecureRandom>;
|
|
232
|
+
/**
|
|
233
|
+
* Decrypts a compact `dir`/A256GCM JWT, checks its claims against the policy,
|
|
234
|
+
* and decodes the claims with a schema.
|
|
235
|
+
*
|
|
236
|
+
* **Details**
|
|
237
|
+
*
|
|
238
|
+
* Accepts a key or an effectful resolver for key rotation. The same claim
|
|
239
|
+
* policy as {@link verify} is applied after authenticated decryption and
|
|
240
|
+
* before the application schema is decoded.
|
|
241
|
+
*
|
|
242
|
+
* **Gotchas**
|
|
243
|
+
*
|
|
244
|
+
* The resolver receives an unauthenticated header and must use it only for
|
|
245
|
+
* key selection.
|
|
246
|
+
*
|
|
247
|
+
* @see {@link encrypt}
|
|
248
|
+
* @see {@link verify} for signed JWTs
|
|
249
|
+
*
|
|
250
|
+
* @stability unstable
|
|
251
|
+
* @category cryptography
|
|
252
|
+
* @since 4.1.1
|
|
253
|
+
*/
|
|
254
|
+
export declare const decrypt: <S extends Schema.Constraint, E = never, R = never>(schema: S, token: string | Redacted.Redacted<string>, key: SecretKey<"dir"> | ((header: Jwe.ProtectedHeader) => Effect.Effect<SecretKey<"dir">, E, R>), options?: VerifyOptions | undefined) => Effect.Effect<Decrypted<S["Type"]>, E | JwtError, R | Aead.Aead | S["DecodingServices"]>;
|
|
255
|
+
/**
|
|
256
|
+
* Reads the protected header and claims of a signed JWT without verifying it.
|
|
257
|
+
*
|
|
258
|
+
* **Gotchas**
|
|
259
|
+
*
|
|
260
|
+
* Nothing returned here is authenticated. Use it only to choose how to
|
|
261
|
+
* verify, never to authorize.
|
|
262
|
+
*
|
|
263
|
+
* @see {@link verify}
|
|
264
|
+
*
|
|
265
|
+
* @stability unstable
|
|
266
|
+
* @category decoding
|
|
267
|
+
* @since 4.1.1
|
|
268
|
+
*/
|
|
269
|
+
export declare const decodeUnverified: (token: string | Redacted.Redacted<string>) => Effect.Effect<Unverified, JoseError.JoseError, never>;
|
|
270
|
+
//# sourceMappingURL=Jwt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Jwt.d.ts","sourceRoot":"","sources":["../../src/jose/Jwt.ts"],"names":[],"mappings":"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"}
|