effect 4.1.0 → 4.1.2
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 +30 -0
- package/THIRD_PARTY_NOTICES.md +62 -0
- package/ai-docs/package.json +2 -2
- package/dist/BigDecimal.d.ts +139 -7
- package/dist/BigDecimal.d.ts.map +1 -1
- package/dist/BigDecimal.js +83 -14
- package/dist/BigDecimal.js.map +1 -1
- package/dist/ByteSize.d.ts.map +1 -1
- package/dist/ByteSize.js +27 -14
- package/dist/ByteSize.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/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 +38 -32
- package/dist/Iterable.js.map +1 -1
- package/dist/JsonSchema.d.ts.map +1 -1
- package/dist/JsonSchema.js +27 -6
- package/dist/JsonSchema.js.map +1 -1
- package/dist/MutableRef.d.ts.map +1 -1
- package/dist/MutableRef.js +0 -7
- package/dist/MutableRef.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.map +1 -1
- package/dist/Pool.js +2 -1
- package/dist/Pool.js.map +1 -1
- package/dist/Ref.d.ts.map +1 -1
- package/dist/Ref.js +0 -8
- package/dist/Ref.js.map +1 -1
- package/dist/Schedule.d.ts.map +1 -1
- package/dist/Schedule.js +8 -3
- package/dist/Schedule.js.map +1 -1
- package/dist/Schema.d.ts +2 -1
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +2 -1
- package/dist/Schema.js.map +1 -1
- package/dist/SchemaRepresentation.d.ts +4 -2
- package/dist/SchemaRepresentation.d.ts.map +1 -1
- package/dist/SchemaRepresentation.js +4 -2
- package/dist/SchemaRepresentation.js.map +1 -1
- package/dist/SchemaTransformation.d.ts +2 -2
- package/dist/SchemaTransformation.js +2 -2
- package/dist/Stream.d.ts.map +1 -1
- package/dist/Stream.js +6 -5
- package/dist/Stream.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 +120 -6
- package/dist/ai/McpServer.d.ts.map +1 -1
- package/dist/ai/McpServer.js +258 -49
- package/dist/ai/McpServer.js.map +1 -1
- 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/Tool.d.ts.map +1 -1
- package/dist/ai/Tool.js +5 -7
- package/dist/ai/Tool.js.map +1 -1
- package/dist/ai/internal/mcpCore.js +72 -3
- package/dist/ai/internal/mcpCore.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js +3 -1
- package/dist/ai/internal/mcpProtocol/v2024_11_05.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js +3 -1
- package/dist/ai/internal/mcpProtocol/v2025_03_26.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js +3 -1
- package/dist/ai/internal/mcpProtocol/v2025_06_18.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js +3 -1
- package/dist/ai/internal/mcpProtocol/v2025_11_25.js.map +1 -1
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js +44 -8
- package/dist/ai/internal/mcpProtocol/v2026_07_28.js.map +1 -1
- package/dist/ai/internal/mcpProtocol.js +12 -0
- package/dist/ai/internal/mcpProtocol.js.map +1 -1
- package/dist/ai/internal/mcpRuntime.js +3 -3
- 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/structured-output.js +11 -2
- package/dist/ai/internal/structured-output.js.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.d.ts.map +1 -1
- package/dist/cluster/ClusterWorkflowEngine.js +30 -11
- package/dist/cluster/ClusterWorkflowEngine.js.map +1 -1
- package/dist/cluster/Entity.d.ts +26 -0
- package/dist/cluster/Entity.d.ts.map +1 -1
- package/dist/cluster/Entity.js.map +1 -1
- package/dist/cluster/MessageStorage.d.ts +6 -6
- package/dist/cluster/MessageStorage.d.ts.map +1 -1
- package/dist/cluster/MessageStorage.js +1 -3
- package/dist/cluster/MessageStorage.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/Runners.d.ts.map +1 -1
- package/dist/cluster/Runners.js +13 -2
- package/dist/cluster/Runners.js.map +1 -1
- package/dist/cluster/Sharding.d.ts +13 -0
- package/dist/cluster/Sharding.d.ts.map +1 -1
- package/dist/cluster/Sharding.js +4 -1
- package/dist/cluster/Sharding.js.map +1 -1
- package/dist/cluster/internal/clusterAbandon.d.ts.map +1 -1
- package/dist/cluster/internal/clusterAbandon.js +6 -4
- package/dist/cluster/internal/clusterAbandon.js.map +1 -1
- package/dist/cluster/internal/entityManager.js +63 -11
- package/dist/cluster/internal/entityManager.js.map +1 -1
- package/dist/cluster/internal/transactionNotifications.d.ts +5 -0
- package/dist/cluster/internal/transactionNotifications.d.ts.map +1 -0
- package/dist/cluster/internal/transactionNotifications.js +5 -0
- package/dist/cluster/internal/transactionNotifications.js.map +1 -0
- package/dist/crypto/Aead.d.ts +2 -1
- package/dist/crypto/Aead.d.ts.map +1 -1
- package/dist/crypto/Aead.js +2 -2
- package/dist/crypto/Aead.js.map +1 -1
- package/dist/crypto/Cipher.d.ts +2 -1
- package/dist/crypto/Cipher.d.ts.map +1 -1
- package/dist/crypto/Cipher.js +2 -2
- package/dist/crypto/Cipher.js.map +1 -1
- package/dist/crypto/KeyAgreement.d.ts +3 -2
- package/dist/crypto/KeyAgreement.d.ts.map +1 -1
- package/dist/crypto/KeyAgreement.js +2 -2
- package/dist/crypto/KeyAgreement.js.map +1 -1
- package/dist/crypto/KeyFormat.d.ts +33 -1
- package/dist/crypto/KeyFormat.d.ts.map +1 -1
- package/dist/crypto/KeyFormat.js.map +1 -1
- package/dist/crypto/KeyWrap.d.ts +4 -3
- package/dist/crypto/KeyWrap.d.ts.map +1 -1
- package/dist/crypto/KeyWrap.js +2 -2
- package/dist/crypto/KeyWrap.js.map +1 -1
- package/dist/crypto/Mac.d.ts +2 -1
- package/dist/crypto/Mac.d.ts.map +1 -1
- package/dist/crypto/Mac.js +2 -2
- package/dist/crypto/Mac.js.map +1 -1
- package/dist/crypto/Signature.d.ts +3 -2
- package/dist/crypto/Signature.d.ts.map +1 -1
- package/dist/crypto/Signature.js +2 -2
- package/dist/crypto/Signature.js.map +1 -1
- package/dist/crypto/WebCrypto.d.ts +19 -0
- package/dist/crypto/WebCrypto.d.ts.map +1 -1
- package/dist/crypto/WebCrypto.js.map +1 -1
- package/dist/crypto/internal/asymmetric.js.map +1 -1
- package/dist/crypto/internal/key.js +3 -2
- package/dist/crypto/internal/key.js.map +1 -1
- package/dist/encoding/Base64Url.d.ts.map +1 -1
- package/dist/encoding/Base64Url.js +26 -3
- package/dist/encoding/Base64Url.js.map +1 -1
- package/dist/encoding/Json5.d.ts +44 -0
- package/dist/encoding/Json5.d.ts.map +1 -0
- package/dist/encoding/Json5.js +56 -0
- package/dist/encoding/Json5.js.map +1 -0
- package/dist/encoding/Jsonc.d.ts +47 -0
- package/dist/encoding/Jsonc.d.ts.map +1 -0
- package/dist/encoding/Jsonc.js +120 -0
- package/dist/encoding/Jsonc.js.map +1 -0
- 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 +94 -0
- package/dist/encoding/SchemaBinary.d.ts.map +1 -1
- package/dist/encoding/SchemaBinary.js +219 -6
- 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/index.d.ts +10 -0
- package/dist/encoding/index.d.ts.map +1 -1
- package/dist/encoding/index.js +10 -0
- package/dist/encoding/index.js.map +1 -1
- package/dist/eventlog/EventLog.d.ts +7 -0
- package/dist/eventlog/EventLog.d.ts.map +1 -1
- package/dist/eventlog/EventLog.js +7 -0
- package/dist/eventlog/EventLog.js.map +1 -1
- package/dist/eventlog/EventLogServer.d.ts +7 -1
- package/dist/eventlog/EventLogServer.d.ts.map +1 -1
- package/dist/eventlog/EventLogServer.js +55 -24
- package/dist/eventlog/EventLogServer.js.map +1 -1
- package/dist/eventlog/EventLogServerEncrypted.d.ts +10 -0
- package/dist/eventlog/EventLogServerEncrypted.d.ts.map +1 -1
- 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 +21 -0
- package/dist/eventlog/EventLogSessionAuth.d.ts.map +1 -1
- package/dist/eventlog/EventLogSessionAuth.js +22 -0
- package/dist/eventlog/EventLogSessionAuth.js.map +1 -1
- 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/HttpClient.d.ts +204 -16
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +93 -13
- package/dist/http/HttpClient.js.map +1 -1
- package/dist/http/HttpServerRequest.d.ts.map +1 -1
- package/dist/http/HttpServerRequest.js +38 -22
- package/dist/http/HttpServerRequest.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-api/HttpApiSchema.js +1 -1
- package/dist/http-api/HttpApiSchema.js.map +1 -1
- package/dist/internal/dateTime.js +66 -27
- package/dist/internal/dateTime.js.map +1 -1
- package/dist/internal/effect.js +10 -0
- package/dist/internal/effect.js.map +1 -1
- package/dist/internal/glob.js +234 -56
- package/dist/internal/glob.js.map +1 -1
- 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/jsonParser.d.ts +5 -0
- package/dist/internal/jsonParser.d.ts.map +1 -0
- package/dist/internal/jsonParser.js +280 -0
- package/dist/internal/jsonParser.js.map +1 -0
- package/dist/internal/persistence.js +8 -1
- package/dist/internal/persistence.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/sql.js +16 -0
- package/dist/internal/sql.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/OtlpExporter.d.ts +4 -0
- package/dist/observability/OtlpExporter.d.ts.map +1 -1
- package/dist/observability/OtlpExporter.js +40 -12
- package/dist/observability/OtlpExporter.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/RateLimiter.d.ts +15 -0
- package/dist/persistence/RateLimiter.d.ts.map +1 -1
- package/dist/persistence/RateLimiter.js +76 -16
- 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/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 +14 -2
- package/dist/rpc/RpcClient.d.ts.map +1 -1
- package/dist/rpc/RpcClient.js +38 -21
- package/dist/rpc/RpcClient.js.map +1 -1
- package/dist/rpc/RpcMessage.d.ts +3 -2
- package/dist/rpc/RpcMessage.d.ts.map +1 -1
- package/dist/rpc/RpcMessage.js.map +1 -1
- package/dist/rpc/RpcServer.d.ts.map +1 -1
- package/dist/rpc/RpcServer.js +10 -1
- package/dist/rpc/RpcServer.js.map +1 -1
- package/dist/sql/Migrator.d.ts +9 -1
- package/dist/sql/Migrator.d.ts.map +1 -1
- package/dist/sql/Migrator.js +18 -6
- package/dist/sql/Migrator.js.map +1 -1
- package/dist/sql/SqlClient.d.ts +46 -3
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +40 -15
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +46 -3
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +32 -26
- package/dist/sql/Statement.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/package.json +7 -3
- package/src/BigDecimal.ts +170 -16
- package/src/ByteSize.ts +29 -14
- package/src/Equal.ts +3 -3
- package/src/Hash.ts +5 -4
- package/src/Iterable.ts +28 -19
- package/src/JsonSchema.ts +45 -7
- package/src/MutableRef.ts +1 -8
- package/src/Path.ts +6 -1
- package/src/Pool.ts +2 -1
- package/src/Ref.ts +0 -8
- package/src/Schedule.ts +8 -6
- package/src/Schema.ts +3 -2
- package/src/SchemaRepresentation.ts +4 -2
- package/src/SchemaTransformation.ts +2 -2
- package/src/Stream.ts +6 -5
- package/src/ai/McpClient.ts +488 -91
- package/src/ai/McpSchema.ts +119 -0
- package/src/ai/McpServer.ts +302 -56
- package/src/ai/Prompt.ts +16 -11
- package/src/ai/Tool.ts +5 -10
- package/src/ai/internal/mcpCore.ts +165 -12
- package/src/ai/internal/mcpProtocol/v2024_11_05.ts +3 -1
- package/src/ai/internal/mcpProtocol/v2025_03_26.ts +3 -1
- package/src/ai/internal/mcpProtocol/v2025_06_18.ts +3 -1
- package/src/ai/internal/mcpProtocol/v2025_11_25.ts +3 -1
- package/src/ai/internal/mcpProtocol/v2026_07_28.ts +42 -9
- package/src/ai/internal/mcpProtocol.ts +15 -0
- package/src/ai/internal/mcpRuntime.ts +6 -3
- package/src/ai/internal/mcpSkills.ts +480 -0
- package/src/ai/internal/structured-output.ts +10 -4
- package/src/cluster/ClusterWorkflowEngine.ts +48 -33
- package/src/cluster/Entity.ts +52 -0
- package/src/cluster/MessageStorage.ts +3 -6
- package/src/cluster/Reply.ts +1 -1
- package/src/cluster/Runners.ts +16 -2
- package/src/cluster/Sharding.ts +17 -1
- package/src/cluster/internal/clusterAbandon.ts +7 -7
- package/src/cluster/internal/entityManager.ts +89 -15
- package/src/cluster/internal/transactionNotifications.ts +7 -0
- package/src/crypto/Aead.ts +3 -3
- package/src/crypto/Cipher.ts +3 -3
- package/src/crypto/KeyAgreement.ts +4 -4
- package/src/crypto/KeyFormat.ts +30 -1
- package/src/crypto/KeyWrap.ts +6 -6
- package/src/crypto/Mac.ts +3 -3
- package/src/crypto/Signature.ts +4 -4
- package/src/crypto/WebCrypto.ts +20 -0
- package/src/crypto/internal/asymmetric.ts +2 -1
- package/src/crypto/internal/key.ts +12 -5
- package/src/encoding/Base64Url.ts +27 -3
- package/src/encoding/Json5.ts +59 -0
- package/src/encoding/Jsonc.ts +126 -0
- package/src/encoding/Ndjson.ts +6 -5
- package/src/encoding/SchemaBinary.ts +228 -7
- package/src/encoding/Sse.ts +5 -3
- package/src/encoding/index.ts +12 -0
- package/src/eventlog/EventLog.ts +7 -0
- package/src/eventlog/EventLogServer.ts +67 -24
- package/src/eventlog/EventLogServerEncrypted.ts +5 -0
- package/src/eventlog/EventLogServerUnencrypted.ts +19 -2
- package/src/eventlog/EventLogSessionAuth.ts +26 -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/HttpClient.ts +244 -33
- package/src/http/HttpServerRequest.ts +61 -23
- package/src/http/internal/mimeTypes.ts +4 -1
- package/src/http-api/HttpApiSchema.ts +1 -1
- package/src/internal/dateTime.ts +80 -27
- package/src/internal/effect.ts +6 -0
- package/src/internal/glob.ts +279 -63
- package/src/internal/graphql.ts +27 -9
- package/src/internal/graphqlHeaders.ts +13 -0
- package/src/internal/jsonParser.ts +307 -0
- package/src/internal/persistence.ts +9 -1
- package/src/internal/request.ts +51 -58
- package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
- package/src/internal/sql.ts +25 -0
- 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/OtlpExporter.ts +42 -18
- 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/RateLimiter.ts +97 -19
- package/src/persistence/index.ts +1 -1
- package/src/reactivity/AtomRegistry.ts +19 -8
- package/src/rpc/Rpc.ts +3 -1
- package/src/rpc/RpcClient.ts +44 -24
- package/src/rpc/RpcMessage.ts +3 -2
- package/src/rpc/RpcServer.ts +12 -1
- package/src/sql/Migrator.ts +35 -18
- package/src/sql/SqlClient.ts +91 -22
- package/src/sql/Statement.ts +60 -35
- package/src/workflow/Workflow.ts +4 -0
- package/src/workflow/WorkflowEngine.ts +5 -0
package/dist/jose/Jwk.js
ADDED
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON Web Keys and the algorithm-bound keys the other `effect/jose` modules
|
|
3
|
+
* use.
|
|
4
|
+
*
|
|
5
|
+
* A key is imported for one algorithm and keeps it: a JWS or JWE operation
|
|
6
|
+
* takes its algorithm from the key, so a token cannot pick another one. The
|
|
7
|
+
* imported key wraps an `effect/crypto` key object, which redacts itself when
|
|
8
|
+
* printed and caches its native key.
|
|
9
|
+
*
|
|
10
|
+
* Importing honours the JWK's `alg`, `use`, and `key_ops` members, and
|
|
11
|
+
* rejects RSA keys shorter than 2048 bits.
|
|
12
|
+
*
|
|
13
|
+
* @stability unstable
|
|
14
|
+
* @since 4.1.1
|
|
15
|
+
*/
|
|
16
|
+
import * as Aead from "../crypto/Aead.js";
|
|
17
|
+
import * as Digest from "../crypto/Digest.js";
|
|
18
|
+
import * as KeyFormat from "../crypto/KeyFormat.js";
|
|
19
|
+
import * as Mac from "../crypto/Mac.js";
|
|
20
|
+
import * as SecureRandom from "../crypto/SecureRandom.js";
|
|
21
|
+
import * as Signature from "../crypto/Signature.js";
|
|
22
|
+
import * as Effect from "../Effect.js";
|
|
23
|
+
import * as Base64Url from "../encoding/Base64Url.js";
|
|
24
|
+
import * as Redacted from "../Redacted.js";
|
|
25
|
+
import * as Schema from "../Schema.js";
|
|
26
|
+
import { cryptoFailure, decodeSegment, hasPrivateMembers, invalidArgument, invalidKey, isCanonicalSegment, noPrivateMembers, publicKeyFailure, utf8 } from "./internal/compact.js";
|
|
27
|
+
/**
|
|
28
|
+
* Schema for RSA, RSA-PSS, and ECDSA signatures with SHA-256, SHA-384, or
|
|
29
|
+
* SHA-512, and EdDSA signatures with Ed25519.
|
|
30
|
+
*
|
|
31
|
+
* @stability unstable
|
|
32
|
+
* @category schemas
|
|
33
|
+
* @since 4.1.1
|
|
34
|
+
*/
|
|
35
|
+
export const AsymmetricAlgorithm = /*#__PURE__*/Schema.Literals(["RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512", "EdDSA"]);
|
|
36
|
+
/**
|
|
37
|
+
* Schema for the JWS algorithms: HS256, HS384, HS512, and the asymmetric
|
|
38
|
+
* algorithms.
|
|
39
|
+
*
|
|
40
|
+
* @stability unstable
|
|
41
|
+
* @category schemas
|
|
42
|
+
* @since 4.1.1
|
|
43
|
+
*/
|
|
44
|
+
export const Algorithm = /*#__PURE__*/Schema.Literals(["HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512", "EdDSA"]);
|
|
45
|
+
const metadata = {
|
|
46
|
+
kid: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
47
|
+
alg: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
48
|
+
use: /*#__PURE__*/Schema.optionalKey(Schema.String),
|
|
49
|
+
key_ops: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.Array(Schema.String))
|
|
50
|
+
};
|
|
51
|
+
const base64url = /*#__PURE__*/Schema.String.check(/*#__PURE__*/Schema.makeFilter(isCanonicalSegment, {
|
|
52
|
+
expected: "a canonical base64url encoded string"
|
|
53
|
+
}));
|
|
54
|
+
const rsa = {
|
|
55
|
+
...metadata,
|
|
56
|
+
kty: /*#__PURE__*/Schema.Literal("RSA"),
|
|
57
|
+
n: base64url,
|
|
58
|
+
e: base64url
|
|
59
|
+
};
|
|
60
|
+
const ec = {
|
|
61
|
+
...metadata,
|
|
62
|
+
kty: /*#__PURE__*/Schema.Literal("EC"),
|
|
63
|
+
crv: /*#__PURE__*/Schema.Literals(["P-256", "P-384", "P-521"]),
|
|
64
|
+
x: base64url,
|
|
65
|
+
y: base64url
|
|
66
|
+
};
|
|
67
|
+
const okp = {
|
|
68
|
+
...metadata,
|
|
69
|
+
kty: /*#__PURE__*/Schema.Literal("OKP"),
|
|
70
|
+
crv: /*#__PURE__*/Schema.Literal("Ed25519"),
|
|
71
|
+
x: base64url
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Schema for an RSA, P-256, P-384, P-521, or Ed25519 public JWK. Private and symmetric
|
|
75
|
+
* members, including RSA factors, are rejected.
|
|
76
|
+
*
|
|
77
|
+
* @stability unstable
|
|
78
|
+
* @category schemas
|
|
79
|
+
* @since 4.1.1
|
|
80
|
+
*/
|
|
81
|
+
export const PublicJwk = /*#__PURE__*/Schema.Union([/*#__PURE__*/Schema.Struct({
|
|
82
|
+
...rsa,
|
|
83
|
+
...noPrivateMembers
|
|
84
|
+
}), /*#__PURE__*/Schema.Struct({
|
|
85
|
+
...ec,
|
|
86
|
+
...noPrivateMembers
|
|
87
|
+
}), /*#__PURE__*/Schema.Struct({
|
|
88
|
+
...okp,
|
|
89
|
+
...noPrivateMembers
|
|
90
|
+
})]);
|
|
91
|
+
/**
|
|
92
|
+
* Schema for an RSA, P-256, P-384, P-521, or Ed25519 private JWK. RSA keys need their CRT
|
|
93
|
+
* members and cannot have more than two primes.
|
|
94
|
+
*
|
|
95
|
+
* @stability unstable
|
|
96
|
+
* @category schemas
|
|
97
|
+
* @since 4.1.1
|
|
98
|
+
*/
|
|
99
|
+
export const PrivateJwk = /*#__PURE__*/Schema.Union([/*#__PURE__*/Schema.Struct({
|
|
100
|
+
...rsa,
|
|
101
|
+
d: base64url,
|
|
102
|
+
p: base64url,
|
|
103
|
+
q: base64url,
|
|
104
|
+
dp: base64url,
|
|
105
|
+
dq: base64url,
|
|
106
|
+
qi: base64url,
|
|
107
|
+
oth: /*#__PURE__*/Schema.optionalKey(Schema.Never)
|
|
108
|
+
}), /*#__PURE__*/Schema.Struct({
|
|
109
|
+
...ec,
|
|
110
|
+
d: base64url
|
|
111
|
+
}), /*#__PURE__*/Schema.Struct({
|
|
112
|
+
...okp,
|
|
113
|
+
d: base64url
|
|
114
|
+
})]);
|
|
115
|
+
/**
|
|
116
|
+
* Schema for an octet-sequence JWK.
|
|
117
|
+
*
|
|
118
|
+
* @stability unstable
|
|
119
|
+
* @category schemas
|
|
120
|
+
* @since 4.1.1
|
|
121
|
+
*/
|
|
122
|
+
export const SecretJwk = /*#__PURE__*/Schema.Struct({
|
|
123
|
+
...metadata,
|
|
124
|
+
kty: /*#__PURE__*/Schema.Literal("oct"),
|
|
125
|
+
k: Schema.String
|
|
126
|
+
});
|
|
127
|
+
const signatureAlgorithm = (algorithm, modulusLength = 2048) => {
|
|
128
|
+
switch (algorithm) {
|
|
129
|
+
case "RS256":
|
|
130
|
+
return Signature.rsaPkcs1v15({
|
|
131
|
+
hash: Digest.sha256,
|
|
132
|
+
modulusLength
|
|
133
|
+
});
|
|
134
|
+
case "RS384":
|
|
135
|
+
return Signature.rsaPkcs1v15({
|
|
136
|
+
hash: Digest.sha384,
|
|
137
|
+
modulusLength
|
|
138
|
+
});
|
|
139
|
+
case "RS512":
|
|
140
|
+
return Signature.rsaPkcs1v15({
|
|
141
|
+
hash: Digest.sha512,
|
|
142
|
+
modulusLength
|
|
143
|
+
});
|
|
144
|
+
case "PS256":
|
|
145
|
+
return Signature.rsaPss({
|
|
146
|
+
hash: Digest.sha256,
|
|
147
|
+
modulusLength
|
|
148
|
+
});
|
|
149
|
+
case "PS384":
|
|
150
|
+
return Signature.rsaPss({
|
|
151
|
+
hash: Digest.sha384,
|
|
152
|
+
modulusLength
|
|
153
|
+
});
|
|
154
|
+
case "PS512":
|
|
155
|
+
return Signature.rsaPss({
|
|
156
|
+
hash: Digest.sha512,
|
|
157
|
+
modulusLength
|
|
158
|
+
});
|
|
159
|
+
case "ES256":
|
|
160
|
+
return Signature.ecdsaP256;
|
|
161
|
+
case "ES384":
|
|
162
|
+
return Signature.ecdsaP384;
|
|
163
|
+
case "ES512":
|
|
164
|
+
return Signature.ecdsaP521;
|
|
165
|
+
case "EdDSA":
|
|
166
|
+
return Signature.ed25519;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
const hmacAlgorithms = {
|
|
170
|
+
HS256: Mac.hmacSha256,
|
|
171
|
+
HS384: Mac.hmacSha384,
|
|
172
|
+
HS512: Mac.hmacSha512
|
|
173
|
+
};
|
|
174
|
+
const secretKeyLength = algorithm => algorithm === "dir" ? 32 : hmacAlgorithms[algorithm].hash.outputLength;
|
|
175
|
+
// `key_ops` must allow every operation in `operations`; symmetric keys perform both.
|
|
176
|
+
const checkMetadata = (jwk, algorithm, use, operations) => {
|
|
177
|
+
if (jwk.alg !== undefined && jwk.alg !== algorithm) {
|
|
178
|
+
return invalidKey(`The JWK is for ${jwk.alg}, not ${algorithm}`);
|
|
179
|
+
}
|
|
180
|
+
if (jwk.use !== undefined && jwk.use !== use) {
|
|
181
|
+
return invalidKey(`The JWK use is ${jwk.use}, not ${use}`);
|
|
182
|
+
}
|
|
183
|
+
if (jwk.key_ops !== undefined && !operations.every(operation => jwk.key_ops.includes(operation))) {
|
|
184
|
+
return invalidKey(`The JWK key_ops must allow ${operations.join(" and ")}`);
|
|
185
|
+
}
|
|
186
|
+
return Effect.void;
|
|
187
|
+
};
|
|
188
|
+
// Checked on the imported key, whose algorithm carries the actual modulus.
|
|
189
|
+
const checkModulus = key => (key.algorithm._tag === "RsaPss" || key.algorithm._tag === "RsaPkcs1v15") && key.algorithm.modulusLength < 2048 ? invalidKey("RSA keys must have at least 2048 bits") : Effect.void;
|
|
190
|
+
// KeyFormat handles only key members; JOSE metadata is handled here.
|
|
191
|
+
const jsonWebKey = jwk => jwk;
|
|
192
|
+
const isPublicJwk = /*#__PURE__*/Schema.is(PublicJwk);
|
|
193
|
+
const isPrivateJwk = /*#__PURE__*/Schema.is(PrivateJwk);
|
|
194
|
+
const exportJwk = (key, algorithm, kid) => KeyFormat.encode(KeyFormat.jwk, key).pipe(Effect.mapBoth({
|
|
195
|
+
onFailure: cryptoFailure("Could not export the key"),
|
|
196
|
+
onSuccess: jwk => ({
|
|
197
|
+
...jwk,
|
|
198
|
+
...(kid === undefined ? {} : {
|
|
199
|
+
kid
|
|
200
|
+
}),
|
|
201
|
+
alg: algorithm,
|
|
202
|
+
use: "sig"
|
|
203
|
+
})
|
|
204
|
+
}));
|
|
205
|
+
/**
|
|
206
|
+
* Generates a key pair for an asymmetric algorithm and returns it as JWKs.
|
|
207
|
+
*
|
|
208
|
+
* @see {@link importPrivate} for preparing the private JWK for signing
|
|
209
|
+
* @see {@link importPublic} for preparing the public JWK for verification
|
|
210
|
+
*
|
|
211
|
+
* @stability unstable
|
|
212
|
+
* @category constructors
|
|
213
|
+
* @since 4.1.1
|
|
214
|
+
*/
|
|
215
|
+
export const generateKeyPair = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
216
|
+
const {
|
|
217
|
+
algorithm,
|
|
218
|
+
kid,
|
|
219
|
+
modulusLength
|
|
220
|
+
} = options;
|
|
221
|
+
if (modulusLength !== undefined && (!Number.isSafeInteger(modulusLength) || modulusLength < 2048)) {
|
|
222
|
+
return yield* invalidArgument("modulusLength must be an integer of at least 2048");
|
|
223
|
+
}
|
|
224
|
+
const signature = yield* Signature.Signature;
|
|
225
|
+
const pair = yield* signature.generateKeyPair(signatureAlgorithm(algorithm, modulusLength)).pipe(Effect.mapError(cryptoFailure(`Could not generate a ${algorithm} key pair`)));
|
|
226
|
+
const publicJwk = yield* exportJwk(pair.publicKey, algorithm, kid);
|
|
227
|
+
const privateJwk = yield* exportJwk(pair.privateKey, algorithm, kid);
|
|
228
|
+
return {
|
|
229
|
+
publicKey: publicJwk,
|
|
230
|
+
privateKey: Redacted.make(privateJwk)
|
|
231
|
+
};
|
|
232
|
+
});
|
|
233
|
+
/**
|
|
234
|
+
* Generates a redacted secret JWK carrying its `alg`, `use`, and optional `kid`.
|
|
235
|
+
*
|
|
236
|
+
* **Details**
|
|
237
|
+
*
|
|
238
|
+
* HMAC keys contain 32, 48, or 64 random bytes for HS256, HS384, or HS512.
|
|
239
|
+
* Direct A256GCM keys contain 32 bytes and use `enc` instead of `sig`.
|
|
240
|
+
*
|
|
241
|
+
* @see {@link importSecret} for preparing the JWK for use
|
|
242
|
+
* @see {@link generateKeyPair} for asymmetric keys
|
|
243
|
+
*
|
|
244
|
+
* @stability unstable
|
|
245
|
+
* @category constructors
|
|
246
|
+
* @since 4.1.1
|
|
247
|
+
*/
|
|
248
|
+
export const generateSecret = (algorithm, options) => Effect.map(SecureRandom.SecureRandom.use(random => random.randomBytes(secretKeyLength(algorithm))), bytes => Redacted.make({
|
|
249
|
+
kty: "oct",
|
|
250
|
+
k: Base64Url.encode(bytes),
|
|
251
|
+
alg: algorithm,
|
|
252
|
+
use: algorithm === "dir" ? "enc" : "sig",
|
|
253
|
+
...(options?.kid === undefined ? {} : {
|
|
254
|
+
kid: options.kid
|
|
255
|
+
})
|
|
256
|
+
}));
|
|
257
|
+
/**
|
|
258
|
+
* Imports a public JWK for an asymmetric algorithm.
|
|
259
|
+
*
|
|
260
|
+
* **Details**
|
|
261
|
+
*
|
|
262
|
+
* The key's family and curve must fit the algorithm, and any `alg`, `use`, or
|
|
263
|
+
* `key_ops` member must allow verification with it. Private members are
|
|
264
|
+
* rejected. To import untrusted JSON, decode it with {@link PublicJwk} first.
|
|
265
|
+
*
|
|
266
|
+
* @see {@link importPrivate}
|
|
267
|
+
* @see {@link exportPublic}
|
|
268
|
+
*
|
|
269
|
+
* @stability unstable
|
|
270
|
+
* @category constructors
|
|
271
|
+
* @since 4.1.1
|
|
272
|
+
*/
|
|
273
|
+
export const importPublic = /*#__PURE__*/Effect.fnUntraced(function* (jwk, algorithm) {
|
|
274
|
+
if (hasPrivateMembers(jwk)) return yield* invalidKey("A public JWK cannot contain private members");
|
|
275
|
+
yield* checkMetadata(jwk, algorithm, "sig", ["verify"]);
|
|
276
|
+
if (!isPublicJwk(jwk)) return yield* invalidKey("Expected a public JWK with base64url key members");
|
|
277
|
+
const key = yield* KeyFormat.decodePublic(KeyFormat.jwk, signatureAlgorithm(algorithm), jsonWebKey(jwk)).pipe(Effect.mapError(publicKeyFailure));
|
|
278
|
+
yield* checkModulus(key);
|
|
279
|
+
return {
|
|
280
|
+
_tag: "PublicKey",
|
|
281
|
+
algorithm,
|
|
282
|
+
kid: jwk.kid,
|
|
283
|
+
jwk,
|
|
284
|
+
key
|
|
285
|
+
};
|
|
286
|
+
});
|
|
287
|
+
/**
|
|
288
|
+
* Imports a private JWK for an asymmetric algorithm.
|
|
289
|
+
*
|
|
290
|
+
* @see {@link importPkcs8} for importing DER or PEM keys
|
|
291
|
+
* @see {@link exportPrivate}
|
|
292
|
+
*
|
|
293
|
+
* @stability unstable
|
|
294
|
+
* @category constructors
|
|
295
|
+
* @since 4.1.1
|
|
296
|
+
*/
|
|
297
|
+
export const importPrivate = /*#__PURE__*/Effect.fnUntraced(function* (input, algorithm) {
|
|
298
|
+
const jwk = Redacted.value(input);
|
|
299
|
+
yield* checkMetadata(jwk, algorithm, "sig", ["sign"]);
|
|
300
|
+
if (!isPrivateJwk(jwk)) return yield* invalidKey("Expected a private JWK with base64url key members");
|
|
301
|
+
const key = yield* KeyFormat.decodePrivate(KeyFormat.jwk, signatureAlgorithm(algorithm), jsonWebKey(jwk)).pipe(Effect.mapError(cryptoFailure(`Could not import the private JWK for ${algorithm}`)));
|
|
302
|
+
yield* checkModulus(key);
|
|
303
|
+
return {
|
|
304
|
+
_tag: "PrivateKey",
|
|
305
|
+
algorithm,
|
|
306
|
+
kid: jwk.kid,
|
|
307
|
+
key
|
|
308
|
+
};
|
|
309
|
+
});
|
|
310
|
+
/**
|
|
311
|
+
* Imports an SPKI public key from DER bytes or PEM text for an asymmetric algorithm.
|
|
312
|
+
*
|
|
313
|
+
* @see {@link importPublic} for importing JWK-encoded keys
|
|
314
|
+
* @see {@link exportSpki}
|
|
315
|
+
*
|
|
316
|
+
* @stability unstable
|
|
317
|
+
* @category constructors
|
|
318
|
+
* @since 4.1.1
|
|
319
|
+
*/
|
|
320
|
+
export const importSpki = /*#__PURE__*/Effect.fnUntraced(function* (input, algorithm, options) {
|
|
321
|
+
const key = yield* KeyFormat.decodePublic(typeof input === "string" ? KeyFormat.pem(KeyFormat.spki) : KeyFormat.spki, signatureAlgorithm(algorithm), input).pipe(Effect.mapError(publicKeyFailure));
|
|
322
|
+
yield* checkModulus(key);
|
|
323
|
+
const jwk = yield* exportJwk(key, algorithm, options?.kid);
|
|
324
|
+
return {
|
|
325
|
+
_tag: "PublicKey",
|
|
326
|
+
algorithm,
|
|
327
|
+
kid: options?.kid,
|
|
328
|
+
jwk: jwk,
|
|
329
|
+
key
|
|
330
|
+
};
|
|
331
|
+
});
|
|
332
|
+
/**
|
|
333
|
+
* Imports a redacted PKCS#8 private key from DER bytes or PEM text for an asymmetric algorithm.
|
|
334
|
+
*
|
|
335
|
+
* @see {@link importPrivate} for importing JWK-encoded keys
|
|
336
|
+
* @see {@link exportPkcs8}
|
|
337
|
+
*
|
|
338
|
+
* @stability unstable
|
|
339
|
+
* @category constructors
|
|
340
|
+
* @since 4.1.1
|
|
341
|
+
*/
|
|
342
|
+
export const importPkcs8 = /*#__PURE__*/Effect.fnUntraced(function* (input, algorithm, options) {
|
|
343
|
+
const data = Redacted.value(input);
|
|
344
|
+
const key = yield* KeyFormat.decodePrivate(typeof data === "string" ? KeyFormat.pem(KeyFormat.pkcs8) : KeyFormat.pkcs8, signatureAlgorithm(algorithm), data).pipe(Effect.mapError(cryptoFailure(`Could not import the PKCS#8 key for ${algorithm}`)));
|
|
345
|
+
yield* checkModulus(key);
|
|
346
|
+
return {
|
|
347
|
+
_tag: "PrivateKey",
|
|
348
|
+
algorithm,
|
|
349
|
+
kid: options?.kid,
|
|
350
|
+
key
|
|
351
|
+
};
|
|
352
|
+
});
|
|
353
|
+
/**
|
|
354
|
+
* Imports an octet JWK for HMAC signatures or for direct A256GCM encryption.
|
|
355
|
+
*
|
|
356
|
+
* **Details**
|
|
357
|
+
*
|
|
358
|
+
* HS256, HS384, and HS512 keys need at least 32, 48, and 64 bytes respectively;
|
|
359
|
+
* `dir` keys need exactly 32. Any `alg`,
|
|
360
|
+
* `use`, or `key_ops` member must allow the algorithm; `key_ops` must allow
|
|
361
|
+
* both of its operations.
|
|
362
|
+
*
|
|
363
|
+
* **Example** (Importing an HS256 key)
|
|
364
|
+
*
|
|
365
|
+
* ```ts import.meta.vitest
|
|
366
|
+
* import { Effect, Redacted } from "effect"
|
|
367
|
+
* import { Jwk } from "effect/jose"
|
|
368
|
+
*
|
|
369
|
+
* // Fixed public example material; generate application secrets securely.
|
|
370
|
+
* const secret = Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const)
|
|
371
|
+
* const key = await Effect.runPromise(Jwk.importSecret(secret, "HS256"))
|
|
372
|
+
* key.algorithm // => "HS256"
|
|
373
|
+
* ```
|
|
374
|
+
*
|
|
375
|
+
* @see {@link generateSecret}
|
|
376
|
+
*
|
|
377
|
+
* @stability unstable
|
|
378
|
+
* @category constructors
|
|
379
|
+
* @since 4.1.1
|
|
380
|
+
*/
|
|
381
|
+
export const importSecret = /*#__PURE__*/Effect.fnUntraced(function* (input, algorithm) {
|
|
382
|
+
const jwk = Redacted.value(input);
|
|
383
|
+
if (algorithm !== "dir") {
|
|
384
|
+
yield* checkMetadata(jwk, algorithm, "sig", ["sign", "verify"]);
|
|
385
|
+
} else {
|
|
386
|
+
yield* checkMetadata(jwk, algorithm, "enc", ["encrypt", "decrypt"]);
|
|
387
|
+
}
|
|
388
|
+
const bytes = jwk.kty === "oct" ? decodeSegment(jwk.k) : undefined;
|
|
389
|
+
if (bytes === undefined) return yield* invalidKey("Expected an oct JWK with a base64url k member");
|
|
390
|
+
const length = secretKeyLength(algorithm);
|
|
391
|
+
if (algorithm === "dir" ? bytes.length !== length : bytes.length < length) {
|
|
392
|
+
return yield* invalidKey(algorithm === "dir" ? "dir keys must have exactly 32 bytes" : `${algorithm} keys must have at least ${length} bytes`);
|
|
393
|
+
}
|
|
394
|
+
const failure = cryptoFailure(`Could not import the ${algorithm} key`);
|
|
395
|
+
const key = algorithm !== "dir" ? yield* Effect.mapError(Mac.key(hmacAlgorithms[algorithm], bytes), failure) : yield* Effect.mapError(Aead.key(Aead.aes256Gcm, bytes), failure);
|
|
396
|
+
return {
|
|
397
|
+
_tag: "SecretKey",
|
|
398
|
+
algorithm,
|
|
399
|
+
kid: jwk.kid,
|
|
400
|
+
key
|
|
401
|
+
};
|
|
402
|
+
});
|
|
403
|
+
/**
|
|
404
|
+
* Exports a public key as a JWK carrying its `alg`, `kid`, and `use: "sig"`.
|
|
405
|
+
*
|
|
406
|
+
* @see {@link importPublic}
|
|
407
|
+
* @see {@link exportPrivate}
|
|
408
|
+
*
|
|
409
|
+
* @stability unstable
|
|
410
|
+
* @category encoding
|
|
411
|
+
* @since 4.1.1
|
|
412
|
+
*/
|
|
413
|
+
export const exportPublic = key => Effect.map(exportJwk(key.key, key.algorithm, key.kid), jwk => jwk);
|
|
414
|
+
/**
|
|
415
|
+
* Exports a private key as a JWK carrying its `alg`, `kid`, and `use: "sig"`.
|
|
416
|
+
*
|
|
417
|
+
* @see {@link importPrivate}
|
|
418
|
+
*
|
|
419
|
+
* @stability unstable
|
|
420
|
+
* @category encoding
|
|
421
|
+
* @since 4.1.1
|
|
422
|
+
*/
|
|
423
|
+
export const exportPrivate = key => Effect.map(exportJwk(key.key, key.algorithm, key.kid), jwk => Redacted.make(jwk));
|
|
424
|
+
export function exportSpki(key, options) {
|
|
425
|
+
return KeyFormat.encode(options?.format === "pem" ? KeyFormat.pem(KeyFormat.spki) : KeyFormat.spki, key.key).pipe(Effect.mapError(cryptoFailure("Could not export the SPKI key")));
|
|
426
|
+
}
|
|
427
|
+
export function exportPkcs8(key, options) {
|
|
428
|
+
return KeyFormat.encode(options?.format === "pem" ? KeyFormat.pem(KeyFormat.pkcs8) : KeyFormat.pkcs8, key.key).pipe(Effect.mapBoth({
|
|
429
|
+
onFailure: cryptoFailure("Could not export the PKCS#8 key"),
|
|
430
|
+
onSuccess: Redacted.make
|
|
431
|
+
}));
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Computes an RFC 7638 JWK thumbprint, encoded as unpadded base64url.
|
|
435
|
+
*
|
|
436
|
+
* **Details**
|
|
437
|
+
*
|
|
438
|
+
* Uses SHA-256 by default; SHA-384 and SHA-512 are also supported. Only required
|
|
439
|
+
* key members are hashed, so metadata does not affect the result. Asymmetric
|
|
440
|
+
* private keys have the same thumbprint as their public keys. A secret key's
|
|
441
|
+
* thumbprint is a hash of the secret, so treat it as sensitive.
|
|
442
|
+
*
|
|
443
|
+
* @see {@link thumbprintUri}
|
|
444
|
+
*
|
|
445
|
+
* @stability unstable
|
|
446
|
+
* @category cryptography
|
|
447
|
+
* @since 4.1.1
|
|
448
|
+
*/
|
|
449
|
+
export const thumbprint = /*#__PURE__*/Effect.fnUntraced(function* (input, hash = Digest.sha256) {
|
|
450
|
+
if (hash.name !== "SHA-256" && hash.name !== "SHA-384" && hash.name !== "SHA-512") {
|
|
451
|
+
return yield* invalidArgument("JWK thumbprints require SHA-256, SHA-384, or SHA-512");
|
|
452
|
+
}
|
|
453
|
+
const jwk = jsonWebKey(Redacted.isRedacted(input) ? Redacted.value(input) : "kty" in input ? input : yield* KeyFormat.encode(KeyFormat.jwk, input.key).pipe(Effect.mapError(cryptoFailure("Could not export the key for a thumbprint"))));
|
|
454
|
+
let required;
|
|
455
|
+
switch (jwk.kty) {
|
|
456
|
+
case "RSA":
|
|
457
|
+
required = {
|
|
458
|
+
e: jwk.e,
|
|
459
|
+
kty: jwk.kty,
|
|
460
|
+
n: jwk.n
|
|
461
|
+
};
|
|
462
|
+
break;
|
|
463
|
+
case "EC":
|
|
464
|
+
required = {
|
|
465
|
+
crv: jwk.crv,
|
|
466
|
+
kty: jwk.kty,
|
|
467
|
+
x: jwk.x,
|
|
468
|
+
y: jwk.y
|
|
469
|
+
};
|
|
470
|
+
break;
|
|
471
|
+
case "OKP":
|
|
472
|
+
required = {
|
|
473
|
+
crv: jwk.crv,
|
|
474
|
+
kty: jwk.kty,
|
|
475
|
+
x: jwk.x
|
|
476
|
+
};
|
|
477
|
+
break;
|
|
478
|
+
case "oct":
|
|
479
|
+
required = {
|
|
480
|
+
k: jwk.k,
|
|
481
|
+
kty: jwk.kty
|
|
482
|
+
};
|
|
483
|
+
break;
|
|
484
|
+
default:
|
|
485
|
+
return yield* invalidKey("Unsupported JWK key type for a thumbprint");
|
|
486
|
+
}
|
|
487
|
+
if (Object.values(required).some(value => typeof value !== "string" || value.length === 0) || (required.kty === "oct" ? !isCanonicalSegment(required.k) : !isPublicJwk(required))) {
|
|
488
|
+
return yield* invalidKey("Expected a JWK with canonical base64url key members");
|
|
489
|
+
}
|
|
490
|
+
const digest = yield* Digest.Digest;
|
|
491
|
+
return Base64Url.encode(yield* digest.digest(hash, utf8(JSON.stringify(required))));
|
|
492
|
+
});
|
|
493
|
+
/**
|
|
494
|
+
* Computes an RFC 9278 JWK thumbprint URI using SHA-256 by default.
|
|
495
|
+
*
|
|
496
|
+
* @see {@link thumbprint} for supported inputs and hashes
|
|
497
|
+
*
|
|
498
|
+
* @stability unstable
|
|
499
|
+
* @category cryptography
|
|
500
|
+
* @since 4.1.1
|
|
501
|
+
*/
|
|
502
|
+
export const thumbprintUri = (input, hash = Digest.sha256) => Effect.map(thumbprint(input, hash), value => `urn:ietf:params:oauth:jwk-thumbprint:${hash.name.toLowerCase()}:${value}`);
|
|
503
|
+
//# sourceMappingURL=Jwk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Jwk.js","names":[],"sources":["../../src/jose/Jwk.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|