effect 4.1.0 → 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 +30 -0
- 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 +83 -14
- package/dist/BigDecimal.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 +11 -8
- package/dist/Iterable.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/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/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 +215 -34
- 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 +42 -7
- 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/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 +4 -1
- package/dist/cluster/Sharding.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 +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/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/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/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 +27 -12
- 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 +189 -7
- package/dist/http/HttpClient.d.ts.map +1 -1
- package/dist/http/HttpClient.js +75 -2
- 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 +49 -24
- 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/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/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/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 +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/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/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 +38 -3
- package/dist/sql/SqlClient.d.ts.map +1 -1
- package/dist/sql/SqlClient.js +4 -3
- package/dist/sql/SqlClient.js.map +1 -1
- package/dist/sql/Statement.d.ts +41 -3
- package/dist/sql/Statement.d.ts.map +1 -1
- package/dist/sql/Statement.js +24 -20
- 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 +5 -1
- package/src/BigDecimal.ts +170 -16
- package/src/Equal.ts +3 -3
- package/src/Hash.ts +5 -4
- package/src/Iterable.ts +8 -5
- package/src/Path.ts +6 -1
- package/src/Pool.ts +2 -1
- package/src/Schema.ts +3 -2
- package/src/SchemaRepresentation.ts +4 -2
- package/src/SchemaTransformation.ts +2 -2
- package/src/ai/McpClient.ts +488 -91
- package/src/ai/McpSchema.ts +119 -0
- package/src/ai/McpServer.ts +261 -38
- 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 +41 -7
- 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/cluster/ClusterWorkflowEngine.ts +22 -8
- package/src/cluster/Reply.ts +1 -1
- package/src/cluster/Sharding.ts +4 -1
- package/src/cluster/internal/entityManager.ts +24 -10
- 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/Ndjson.ts +6 -5
- package/src/encoding/Sse.ts +5 -3
- package/src/eventlog/EventLog.ts +7 -0
- package/src/eventlog/EventLogServer.ts +31 -12
- 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 +210 -11
- 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 +54 -24
- 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/request.ts +51 -58
- package/src/internal/schema/fromJsonSchemaDocument.ts +11 -10
- 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/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 +84 -15
- 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/sql/Migrator.ts +35 -18
- package/src/sql/SqlClient.ts +43 -8
- package/src/sql/Statement.ts +52 -22
- package/src/workflow/Workflow.ts +4 -0
- package/src/workflow/WorkflowEngine.ts +5 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
declare const TypeId: "~effect/jose/JoseError";
|
|
2
|
+
declare const ReasonTypeId: "~effect/jose/JoseError/Reason";
|
|
3
|
+
declare const InvalidToken_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
4
|
+
readonly _tag: "InvalidToken";
|
|
5
|
+
} & Readonly<A>;
|
|
6
|
+
/**
|
|
7
|
+
* Reason for a malformed compact serialization, protected header, or payload,
|
|
8
|
+
* or for header parameters that are not supported, such as `crit`.
|
|
9
|
+
*
|
|
10
|
+
* @stability unstable
|
|
11
|
+
* @category errors
|
|
12
|
+
* @since 4.1.1
|
|
13
|
+
*/
|
|
14
|
+
export declare class InvalidToken extends InvalidToken_base<{
|
|
15
|
+
readonly description: string;
|
|
16
|
+
}> {
|
|
17
|
+
/**
|
|
18
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
19
|
+
*
|
|
20
|
+
* @since 4.1.1
|
|
21
|
+
*/
|
|
22
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
23
|
+
get message(): string;
|
|
24
|
+
}
|
|
25
|
+
declare const InvalidKey_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
26
|
+
readonly _tag: "InvalidKey";
|
|
27
|
+
} & Readonly<A>;
|
|
28
|
+
/**
|
|
29
|
+
* Reason for key material that cannot be imported, or that does not fit the
|
|
30
|
+
* selected algorithm or operation.
|
|
31
|
+
*
|
|
32
|
+
* @stability unstable
|
|
33
|
+
* @category errors
|
|
34
|
+
* @since 4.1.1
|
|
35
|
+
*/
|
|
36
|
+
export declare class InvalidKey extends InvalidKey_base<{
|
|
37
|
+
readonly description: string;
|
|
38
|
+
readonly cause?: unknown;
|
|
39
|
+
}> {
|
|
40
|
+
/**
|
|
41
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
42
|
+
*
|
|
43
|
+
* @since 4.1.1
|
|
44
|
+
*/
|
|
45
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
46
|
+
get message(): string;
|
|
47
|
+
}
|
|
48
|
+
declare const InvalidArgument_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
49
|
+
readonly _tag: "InvalidArgument";
|
|
50
|
+
} & Readonly<A>;
|
|
51
|
+
/**
|
|
52
|
+
* Reason for an option or configuration value that the operation rejects
|
|
53
|
+
* before doing any work, such as a non-HTTPS key-set URL.
|
|
54
|
+
*
|
|
55
|
+
* @stability unstable
|
|
56
|
+
* @category errors
|
|
57
|
+
* @since 4.1.1
|
|
58
|
+
*/
|
|
59
|
+
export declare class InvalidArgument extends InvalidArgument_base<{
|
|
60
|
+
readonly description: string;
|
|
61
|
+
readonly cause?: unknown;
|
|
62
|
+
}> {
|
|
63
|
+
/**
|
|
64
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
65
|
+
*
|
|
66
|
+
* @since 4.1.1
|
|
67
|
+
*/
|
|
68
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
69
|
+
get message(): string;
|
|
70
|
+
}
|
|
71
|
+
declare const AlgorithmNotAllowed_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
72
|
+
readonly _tag: "AlgorithmNotAllowed";
|
|
73
|
+
} & Readonly<A>;
|
|
74
|
+
/**
|
|
75
|
+
* Reason for a token whose protected `alg` is not the key's algorithm or is
|
|
76
|
+
* outside the allowlist.
|
|
77
|
+
*
|
|
78
|
+
* @stability unstable
|
|
79
|
+
* @category errors
|
|
80
|
+
* @since 4.1.1
|
|
81
|
+
*/
|
|
82
|
+
export declare class AlgorithmNotAllowed extends AlgorithmNotAllowed_base<{}> {
|
|
83
|
+
/**
|
|
84
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
85
|
+
*
|
|
86
|
+
* @since 4.1.1
|
|
87
|
+
*/
|
|
88
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
89
|
+
get message(): string;
|
|
90
|
+
}
|
|
91
|
+
declare const SignatureVerificationFailed_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
92
|
+
readonly _tag: "SignatureVerificationFailed";
|
|
93
|
+
} & Readonly<A>;
|
|
94
|
+
/**
|
|
95
|
+
* Reason for a signature that does not authenticate the token.
|
|
96
|
+
*
|
|
97
|
+
* @stability unstable
|
|
98
|
+
* @category errors
|
|
99
|
+
* @since 4.1.1
|
|
100
|
+
*/
|
|
101
|
+
export declare class SignatureVerificationFailed extends SignatureVerificationFailed_base<{}> {
|
|
102
|
+
/**
|
|
103
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
104
|
+
*
|
|
105
|
+
* @since 4.1.1
|
|
106
|
+
*/
|
|
107
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
108
|
+
get message(): string;
|
|
109
|
+
}
|
|
110
|
+
declare const DecryptionFailed_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
111
|
+
readonly _tag: "DecryptionFailed";
|
|
112
|
+
} & Readonly<A>;
|
|
113
|
+
/**
|
|
114
|
+
* Reason for ciphertext that fails authenticated decryption.
|
|
115
|
+
*
|
|
116
|
+
* @stability unstable
|
|
117
|
+
* @category errors
|
|
118
|
+
* @since 4.1.1
|
|
119
|
+
*/
|
|
120
|
+
export declare class DecryptionFailed extends DecryptionFailed_base<{}> {
|
|
121
|
+
/**
|
|
122
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
123
|
+
*
|
|
124
|
+
* @since 4.1.1
|
|
125
|
+
*/
|
|
126
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
127
|
+
get message(): string;
|
|
128
|
+
}
|
|
129
|
+
declare const KeyNotFound_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
130
|
+
readonly _tag: "KeyNotFound";
|
|
131
|
+
} & Readonly<A>;
|
|
132
|
+
/**
|
|
133
|
+
* Reason for a key set with no key matching the algorithm and key id.
|
|
134
|
+
*
|
|
135
|
+
* @stability unstable
|
|
136
|
+
* @category errors
|
|
137
|
+
* @since 4.1.1
|
|
138
|
+
*/
|
|
139
|
+
export declare class KeyNotFound extends KeyNotFound_base<{}> {
|
|
140
|
+
/**
|
|
141
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
142
|
+
*
|
|
143
|
+
* @since 4.1.1
|
|
144
|
+
*/
|
|
145
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
146
|
+
get message(): string;
|
|
147
|
+
}
|
|
148
|
+
declare const AmbiguousKey_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
149
|
+
readonly _tag: "AmbiguousKey";
|
|
150
|
+
} & Readonly<A>;
|
|
151
|
+
/**
|
|
152
|
+
* Reason for a key set with more than one key matching the algorithm and key
|
|
153
|
+
* id.
|
|
154
|
+
*
|
|
155
|
+
* @stability unstable
|
|
156
|
+
* @category errors
|
|
157
|
+
* @since 4.1.1
|
|
158
|
+
*/
|
|
159
|
+
export declare class AmbiguousKey extends AmbiguousKey_base<{}> {
|
|
160
|
+
/**
|
|
161
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
162
|
+
*
|
|
163
|
+
* @since 4.1.1
|
|
164
|
+
*/
|
|
165
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
166
|
+
get message(): string;
|
|
167
|
+
}
|
|
168
|
+
declare const KeySetUnavailable_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
169
|
+
readonly _tag: "KeySetUnavailable";
|
|
170
|
+
} & Readonly<A>;
|
|
171
|
+
/**
|
|
172
|
+
* Reason for a remote key set that cannot be fetched or read, is cooling down
|
|
173
|
+
* after a failed refresh, or belongs to a closed layer.
|
|
174
|
+
*
|
|
175
|
+
* @stability unstable
|
|
176
|
+
* @category errors
|
|
177
|
+
* @since 4.1.1
|
|
178
|
+
*/
|
|
179
|
+
export declare class KeySetUnavailable extends KeySetUnavailable_base<{
|
|
180
|
+
readonly description: string;
|
|
181
|
+
readonly cause?: unknown;
|
|
182
|
+
}> {
|
|
183
|
+
/**
|
|
184
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
185
|
+
*
|
|
186
|
+
* @since 4.1.1
|
|
187
|
+
*/
|
|
188
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
189
|
+
get message(): string;
|
|
190
|
+
}
|
|
191
|
+
declare const ClaimValidationFailed_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
192
|
+
readonly _tag: "ClaimValidationFailed";
|
|
193
|
+
} & Readonly<A>;
|
|
194
|
+
/**
|
|
195
|
+
* Reason for a registered claim or `typ` header that is missing, malformed,
|
|
196
|
+
* different from the expected value, or outside its validity window.
|
|
197
|
+
*
|
|
198
|
+
* @stability unstable
|
|
199
|
+
* @category errors
|
|
200
|
+
* @since 4.1.1
|
|
201
|
+
*/
|
|
202
|
+
export declare class ClaimValidationFailed extends ClaimValidationFailed_base<{
|
|
203
|
+
readonly claim: "iss" | "sub" | "aud" | "exp" | "nbf" | "iat" | "jti" | "typ";
|
|
204
|
+
readonly reason: "invalid" | "missing" | "mismatch" | "expired" | "notYetValid" | "tooOld" | "future";
|
|
205
|
+
}> {
|
|
206
|
+
/**
|
|
207
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
208
|
+
*
|
|
209
|
+
* @since 4.1.1
|
|
210
|
+
*/
|
|
211
|
+
readonly [ReasonTypeId]: "~effect/jose/JoseError/Reason";
|
|
212
|
+
get message(): string;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Union of the reasons carried by `JoseError`.
|
|
216
|
+
*
|
|
217
|
+
* @stability unstable
|
|
218
|
+
* @category errors
|
|
219
|
+
* @since 4.1.1
|
|
220
|
+
*/
|
|
221
|
+
export type JoseErrorReason = InvalidToken | InvalidKey | InvalidArgument | AlgorithmNotAllowed | SignatureVerificationFailed | DecryptionFailed | KeyNotFound | AmbiguousKey | KeySetUnavailable | ClaimValidationFailed;
|
|
222
|
+
declare const JoseError_base: new <A extends Record<string, any> = {}>(args: import("../Types.ts").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("../Cause.ts").YieldableError & {
|
|
223
|
+
readonly _tag: "JoseError";
|
|
224
|
+
} & Readonly<A>;
|
|
225
|
+
/**
|
|
226
|
+
* Error returned by the `effect/jose` modules.
|
|
227
|
+
*
|
|
228
|
+
* **Example** (Rejecting a token with a bad signature)
|
|
229
|
+
*
|
|
230
|
+
* ```ts import.meta.vitest
|
|
231
|
+
* import { Effect } from "effect"
|
|
232
|
+
* import { JoseError } from "effect/jose"
|
|
233
|
+
*
|
|
234
|
+
* const verify = Effect.fail(
|
|
235
|
+
* new JoseError.JoseError({ reason: new JoseError.SignatureVerificationFailed() })
|
|
236
|
+
* )
|
|
237
|
+
*
|
|
238
|
+
* const program = verify.pipe(
|
|
239
|
+
* Effect.catchReason("JoseError", "SignatureVerificationFailed", () => Effect.succeed("rejected"))
|
|
240
|
+
* )
|
|
241
|
+
*
|
|
242
|
+
* await Effect.runPromise(program) // => "rejected"
|
|
243
|
+
* ```
|
|
244
|
+
*
|
|
245
|
+
* @see {@link isJoseError} for narrowing unknown values
|
|
246
|
+
*
|
|
247
|
+
* @stability unstable
|
|
248
|
+
* @category errors
|
|
249
|
+
* @since 4.1.1
|
|
250
|
+
*/
|
|
251
|
+
export declare class JoseError extends JoseError_base<{
|
|
252
|
+
readonly reason: JoseErrorReason;
|
|
253
|
+
}> {
|
|
254
|
+
/**
|
|
255
|
+
* Marks this value as a `JoseError` for runtime guards.
|
|
256
|
+
*
|
|
257
|
+
* @since 4.1.1
|
|
258
|
+
*/
|
|
259
|
+
readonly [TypeId]: "~effect/jose/JoseError";
|
|
260
|
+
/**
|
|
261
|
+
* The reason's cause, when it has one.
|
|
262
|
+
*
|
|
263
|
+
* @since 4.1.1
|
|
264
|
+
*/
|
|
265
|
+
readonly cause: unknown;
|
|
266
|
+
get message(): string;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Checks whether a value is a `JoseError`.
|
|
270
|
+
*
|
|
271
|
+
* @stability unstable
|
|
272
|
+
* @category guards
|
|
273
|
+
* @since 4.1.1
|
|
274
|
+
*/
|
|
275
|
+
export declare const isJoseError: (u: unknown) => u is JoseError;
|
|
276
|
+
/**
|
|
277
|
+
* Checks whether a value is one of the reasons carried by `JoseError`.
|
|
278
|
+
*
|
|
279
|
+
* @stability unstable
|
|
280
|
+
* @category guards
|
|
281
|
+
* @since 4.1.1
|
|
282
|
+
*/
|
|
283
|
+
export declare const isJoseErrorReason: (u: unknown) => u is JoseErrorReason;
|
|
284
|
+
export {};
|
|
285
|
+
//# sourceMappingURL=JoseError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JoseError.d.ts","sourceRoot":"","sources":["../../src/jose/JoseError.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `JoseError` returned by the `effect/jose` modules, and the reasons it
|
|
3
|
+
* carries.
|
|
4
|
+
*
|
|
5
|
+
* Every failure is one `JoseError` whose `reason` says what went wrong. Reasons
|
|
6
|
+
* for configuration, transport, and key-import problems carry a `description`
|
|
7
|
+
* and, when there is one, a `cause`. Reasons for failed authentication carry
|
|
8
|
+
* nothing: they never describe tokens, claims, plaintext, or key material.
|
|
9
|
+
*
|
|
10
|
+
* **Gotchas**
|
|
11
|
+
*
|
|
12
|
+
* Map the error before it reaches a client, for example
|
|
13
|
+
* `SignatureVerificationFailed` to a 401. Sending verification detail to
|
|
14
|
+
* clients is how oracles leak.
|
|
15
|
+
*
|
|
16
|
+
* @stability unstable
|
|
17
|
+
* @since 4.1.1
|
|
18
|
+
*/
|
|
19
|
+
import * as Data from "../Data.js";
|
|
20
|
+
import * as Predicate from "../Predicate.js";
|
|
21
|
+
const TypeId = "~effect/jose/JoseError";
|
|
22
|
+
const ReasonTypeId = "~effect/jose/JoseError/Reason";
|
|
23
|
+
/**
|
|
24
|
+
* Reason for a malformed compact serialization, protected header, or payload,
|
|
25
|
+
* or for header parameters that are not supported, such as `crit`.
|
|
26
|
+
*
|
|
27
|
+
* @stability unstable
|
|
28
|
+
* @category errors
|
|
29
|
+
* @since 4.1.1
|
|
30
|
+
*/
|
|
31
|
+
export class InvalidToken extends /*#__PURE__*/Data.TaggedError("InvalidToken") {
|
|
32
|
+
/**
|
|
33
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
34
|
+
*
|
|
35
|
+
* @since 4.1.1
|
|
36
|
+
*/
|
|
37
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
38
|
+
get message() {
|
|
39
|
+
return this.description;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Reason for key material that cannot be imported, or that does not fit the
|
|
44
|
+
* selected algorithm or operation.
|
|
45
|
+
*
|
|
46
|
+
* @stability unstable
|
|
47
|
+
* @category errors
|
|
48
|
+
* @since 4.1.1
|
|
49
|
+
*/
|
|
50
|
+
export class InvalidKey extends /*#__PURE__*/Data.TaggedError("InvalidKey") {
|
|
51
|
+
/**
|
|
52
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
53
|
+
*
|
|
54
|
+
* @since 4.1.1
|
|
55
|
+
*/
|
|
56
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
57
|
+
get message() {
|
|
58
|
+
return this.description;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Reason for an option or configuration value that the operation rejects
|
|
63
|
+
* before doing any work, such as a non-HTTPS key-set URL.
|
|
64
|
+
*
|
|
65
|
+
* @stability unstable
|
|
66
|
+
* @category errors
|
|
67
|
+
* @since 4.1.1
|
|
68
|
+
*/
|
|
69
|
+
export class InvalidArgument extends /*#__PURE__*/Data.TaggedError("InvalidArgument") {
|
|
70
|
+
/**
|
|
71
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
72
|
+
*
|
|
73
|
+
* @since 4.1.1
|
|
74
|
+
*/
|
|
75
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
76
|
+
get message() {
|
|
77
|
+
return this.description;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Reason for a token whose protected `alg` is not the key's algorithm or is
|
|
82
|
+
* outside the allowlist.
|
|
83
|
+
*
|
|
84
|
+
* @stability unstable
|
|
85
|
+
* @category errors
|
|
86
|
+
* @since 4.1.1
|
|
87
|
+
*/
|
|
88
|
+
export class AlgorithmNotAllowed extends /*#__PURE__*/Data.TaggedError("AlgorithmNotAllowed") {
|
|
89
|
+
/**
|
|
90
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
91
|
+
*
|
|
92
|
+
* @since 4.1.1
|
|
93
|
+
*/
|
|
94
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
95
|
+
get message() {
|
|
96
|
+
return "The token algorithm is not allowed";
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Reason for a signature that does not authenticate the token.
|
|
101
|
+
*
|
|
102
|
+
* @stability unstable
|
|
103
|
+
* @category errors
|
|
104
|
+
* @since 4.1.1
|
|
105
|
+
*/
|
|
106
|
+
export class SignatureVerificationFailed extends /*#__PURE__*/Data.TaggedError("SignatureVerificationFailed") {
|
|
107
|
+
/**
|
|
108
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
109
|
+
*
|
|
110
|
+
* @since 4.1.1
|
|
111
|
+
*/
|
|
112
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
113
|
+
get message() {
|
|
114
|
+
return "Could not verify the signature";
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Reason for ciphertext that fails authenticated decryption.
|
|
119
|
+
*
|
|
120
|
+
* @stability unstable
|
|
121
|
+
* @category errors
|
|
122
|
+
* @since 4.1.1
|
|
123
|
+
*/
|
|
124
|
+
export class DecryptionFailed extends /*#__PURE__*/Data.TaggedError("DecryptionFailed") {
|
|
125
|
+
/**
|
|
126
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
127
|
+
*
|
|
128
|
+
* @since 4.1.1
|
|
129
|
+
*/
|
|
130
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
131
|
+
get message() {
|
|
132
|
+
return "Could not decrypt the token";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Reason for a key set with no key matching the algorithm and key id.
|
|
137
|
+
*
|
|
138
|
+
* @stability unstable
|
|
139
|
+
* @category errors
|
|
140
|
+
* @since 4.1.1
|
|
141
|
+
*/
|
|
142
|
+
export class KeyNotFound extends /*#__PURE__*/Data.TaggedError("KeyNotFound") {
|
|
143
|
+
/**
|
|
144
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
145
|
+
*
|
|
146
|
+
* @since 4.1.1
|
|
147
|
+
*/
|
|
148
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
149
|
+
get message() {
|
|
150
|
+
return "No key matches the algorithm and key id";
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Reason for a key set with more than one key matching the algorithm and key
|
|
155
|
+
* id.
|
|
156
|
+
*
|
|
157
|
+
* @stability unstable
|
|
158
|
+
* @category errors
|
|
159
|
+
* @since 4.1.1
|
|
160
|
+
*/
|
|
161
|
+
export class AmbiguousKey extends /*#__PURE__*/Data.TaggedError("AmbiguousKey") {
|
|
162
|
+
/**
|
|
163
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
164
|
+
*
|
|
165
|
+
* @since 4.1.1
|
|
166
|
+
*/
|
|
167
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
168
|
+
get message() {
|
|
169
|
+
return "More than one key matches the algorithm and key id";
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Reason for a remote key set that cannot be fetched or read, is cooling down
|
|
174
|
+
* after a failed refresh, or belongs to a closed layer.
|
|
175
|
+
*
|
|
176
|
+
* @stability unstable
|
|
177
|
+
* @category errors
|
|
178
|
+
* @since 4.1.1
|
|
179
|
+
*/
|
|
180
|
+
export class KeySetUnavailable extends /*#__PURE__*/Data.TaggedError("KeySetUnavailable") {
|
|
181
|
+
/**
|
|
182
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
183
|
+
*
|
|
184
|
+
* @since 4.1.1
|
|
185
|
+
*/
|
|
186
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
187
|
+
get message() {
|
|
188
|
+
return this.description;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Reason for a registered claim or `typ` header that is missing, malformed,
|
|
193
|
+
* different from the expected value, or outside its validity window.
|
|
194
|
+
*
|
|
195
|
+
* @stability unstable
|
|
196
|
+
* @category errors
|
|
197
|
+
* @since 4.1.1
|
|
198
|
+
*/
|
|
199
|
+
export class ClaimValidationFailed extends /*#__PURE__*/Data.TaggedError("ClaimValidationFailed") {
|
|
200
|
+
/**
|
|
201
|
+
* Marks this value as a `JoseError` reason for runtime guards.
|
|
202
|
+
*
|
|
203
|
+
* @since 4.1.1
|
|
204
|
+
*/
|
|
205
|
+
[ReasonTypeId] = ReasonTypeId;
|
|
206
|
+
get message() {
|
|
207
|
+
return `The ${this.claim} claim failed validation: ${this.reason}`;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Error returned by the `effect/jose` modules.
|
|
212
|
+
*
|
|
213
|
+
* **Example** (Rejecting a token with a bad signature)
|
|
214
|
+
*
|
|
215
|
+
* ```ts import.meta.vitest
|
|
216
|
+
* import { Effect } from "effect"
|
|
217
|
+
* import { JoseError } from "effect/jose"
|
|
218
|
+
*
|
|
219
|
+
* const verify = Effect.fail(
|
|
220
|
+
* new JoseError.JoseError({ reason: new JoseError.SignatureVerificationFailed() })
|
|
221
|
+
* )
|
|
222
|
+
*
|
|
223
|
+
* const program = verify.pipe(
|
|
224
|
+
* Effect.catchReason("JoseError", "SignatureVerificationFailed", () => Effect.succeed("rejected"))
|
|
225
|
+
* )
|
|
226
|
+
*
|
|
227
|
+
* await Effect.runPromise(program) // => "rejected"
|
|
228
|
+
* ```
|
|
229
|
+
*
|
|
230
|
+
* @see {@link isJoseError} for narrowing unknown values
|
|
231
|
+
*
|
|
232
|
+
* @stability unstable
|
|
233
|
+
* @category errors
|
|
234
|
+
* @since 4.1.1
|
|
235
|
+
*/
|
|
236
|
+
export class JoseError extends /*#__PURE__*/Data.TaggedError("JoseError") {
|
|
237
|
+
/**
|
|
238
|
+
* Marks this value as a `JoseError` for runtime guards.
|
|
239
|
+
*
|
|
240
|
+
* @since 4.1.1
|
|
241
|
+
*/
|
|
242
|
+
[TypeId] = TypeId;
|
|
243
|
+
/**
|
|
244
|
+
* The reason's cause, when it has one.
|
|
245
|
+
*
|
|
246
|
+
* @since 4.1.1
|
|
247
|
+
*/
|
|
248
|
+
cause = "cause" in this.reason ? this.reason.cause : undefined;
|
|
249
|
+
get message() {
|
|
250
|
+
return this.reason.message;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Checks whether a value is a `JoseError`.
|
|
255
|
+
*
|
|
256
|
+
* @stability unstable
|
|
257
|
+
* @category guards
|
|
258
|
+
* @since 4.1.1
|
|
259
|
+
*/
|
|
260
|
+
export const isJoseError = u => Predicate.hasProperty(u, TypeId);
|
|
261
|
+
/**
|
|
262
|
+
* Checks whether a value is one of the reasons carried by `JoseError`.
|
|
263
|
+
*
|
|
264
|
+
* @stability unstable
|
|
265
|
+
* @category guards
|
|
266
|
+
* @since 4.1.1
|
|
267
|
+
*/
|
|
268
|
+
export const isJoseErrorReason = u => Predicate.hasProperty(u, ReasonTypeId);
|
|
269
|
+
//# sourceMappingURL=JoseError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JoseError.js","names":[],"sources":["../../src/jose/JoseError.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compact JSON Web Encryption with a shared key: `dir` key management and
|
|
3
|
+
* A256GCM content encryption.
|
|
4
|
+
*
|
|
5
|
+
* The protected header is authenticated as additional data, so changing it
|
|
6
|
+
* fails decryption. Headers with `crit` or `zip` are rejected.
|
|
7
|
+
*
|
|
8
|
+
* Bound untrusted token length before decryption; this module does not impose
|
|
9
|
+
* a token-size limit.
|
|
10
|
+
*
|
|
11
|
+
* @stability unstable
|
|
12
|
+
* @since 4.1.1
|
|
13
|
+
*/
|
|
14
|
+
import * as Aead from "../crypto/Aead.ts";
|
|
15
|
+
import * as SecureRandom from "../crypto/SecureRandom.ts";
|
|
16
|
+
import * as Effect from "../Effect.ts";
|
|
17
|
+
import * as Redacted from "../Redacted.ts";
|
|
18
|
+
import * as Schema from "../Schema.ts";
|
|
19
|
+
import * as JoseError from "./JoseError.ts";
|
|
20
|
+
import type { SecretKey } from "./Jwk.ts";
|
|
21
|
+
/**
|
|
22
|
+
* Schema for a JWE protected header, including additional JSON-valued
|
|
23
|
+
* parameters.
|
|
24
|
+
*
|
|
25
|
+
* @stability unstable
|
|
26
|
+
* @category schemas
|
|
27
|
+
* @since 4.1.1
|
|
28
|
+
*/
|
|
29
|
+
export declare const ProtectedHeader: Schema.StructWithRest<Schema.Struct<{
|
|
30
|
+
readonly alg: Schema.Literal<"dir">;
|
|
31
|
+
readonly enc: Schema.Literal<"A256GCM">;
|
|
32
|
+
readonly kid: Schema.optionalKey<Schema.String>;
|
|
33
|
+
readonly typ: Schema.optionalKey<Schema.String>;
|
|
34
|
+
readonly cty: Schema.optionalKey<Schema.String>;
|
|
35
|
+
}>, readonly [Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>]>;
|
|
36
|
+
/**
|
|
37
|
+
* A JWE protected header. It is authenticated only after decryption succeeds.
|
|
38
|
+
*
|
|
39
|
+
* @stability unstable
|
|
40
|
+
* @category models
|
|
41
|
+
* @since 4.1.1
|
|
42
|
+
*/
|
|
43
|
+
export type ProtectedHeader = typeof ProtectedHeader.Type;
|
|
44
|
+
/**
|
|
45
|
+
* Standard header parameters to protect. Encryption also accepts additional
|
|
46
|
+
* JSON-valued parameters. `alg` and `enc` are fixed and `kid` defaults to the
|
|
47
|
+
* key's.
|
|
48
|
+
*
|
|
49
|
+
* @stability unstable
|
|
50
|
+
* @category models
|
|
51
|
+
* @since 4.1.1
|
|
52
|
+
*/
|
|
53
|
+
export interface Header {
|
|
54
|
+
readonly alg?: never;
|
|
55
|
+
readonly enc?: never;
|
|
56
|
+
readonly crit?: never;
|
|
57
|
+
readonly zip?: never;
|
|
58
|
+
readonly kid?: string | undefined;
|
|
59
|
+
readonly typ?: string | undefined;
|
|
60
|
+
readonly cty?: string | undefined;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The protected header, plaintext, and key used to decrypt a JWE.
|
|
64
|
+
*
|
|
65
|
+
* @stability unstable
|
|
66
|
+
* @category models
|
|
67
|
+
* @since 4.1.1
|
|
68
|
+
*/
|
|
69
|
+
export interface Decrypted {
|
|
70
|
+
readonly protectedHeader: ProtectedHeader;
|
|
71
|
+
readonly plaintext: Uint8Array;
|
|
72
|
+
readonly key: SecretKey<"dir">;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Encrypts plaintext as a compact JWE with a random 96-bit IV.
|
|
76
|
+
*
|
|
77
|
+
* **Example** (Encrypting and decrypting a message)
|
|
78
|
+
*
|
|
79
|
+
* ```ts import.meta.vitest
|
|
80
|
+
* import { Effect, Layer, Redacted } from "effect"
|
|
81
|
+
* import { Aead, SecureRandom } from "effect/crypto"
|
|
82
|
+
* import { Jwe, Jwk } from "effect/jose"
|
|
83
|
+
*
|
|
84
|
+
* const layer = Aead.layerWebCrypto.pipe(Layer.provideMerge(SecureRandom.layerWebCrypto))
|
|
85
|
+
*
|
|
86
|
+
* const plaintext = await Effect.runPromise(Effect.gen(function*() {
|
|
87
|
+
* // Fixed public example material; generate application secrets securely.
|
|
88
|
+
* const key = yield* Jwk.importSecret(
|
|
89
|
+
* Redacted.make({ kty: "oct", k: "BwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwc" } as const),
|
|
90
|
+
* "dir"
|
|
91
|
+
* )
|
|
92
|
+
* const token = yield* Jwe.encrypt(new TextEncoder().encode("private message"), key)
|
|
93
|
+
* const decrypted = yield* Jwe.decrypt(token, key)
|
|
94
|
+
* return new TextDecoder().decode(decrypted.plaintext)
|
|
95
|
+
* }).pipe(Effect.provide(layer)))
|
|
96
|
+
* plaintext // => "private message"
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @see {@link decrypt}
|
|
100
|
+
*
|
|
101
|
+
* @stability unstable
|
|
102
|
+
* @category cryptography
|
|
103
|
+
* @since 4.1.1
|
|
104
|
+
*/
|
|
105
|
+
export declare const encrypt: <H extends object & { readonly [P in keyof H]: Schema.Json | undefined; } = Header>(plaintext: Uint8Array<ArrayBufferLike>, key: SecretKey<"dir">, header?: (Header & H) | undefined) => Effect.Effect<Redacted.Redacted<string>, JoseError.JoseError, Aead.Aead | SecureRandom.SecureRandom>;
|
|
106
|
+
/**
|
|
107
|
+
* Decrypts a compact `dir`/A256GCM JWE and authenticates its protected
|
|
108
|
+
* header.
|
|
109
|
+
*
|
|
110
|
+
* **Details**
|
|
111
|
+
*
|
|
112
|
+
* Accepts a key or an effectful resolver for key rotation. The token's
|
|
113
|
+
* structure and supported header parameters are checked before the resolver
|
|
114
|
+
* runs. Resolver failures and service requirements are preserved.
|
|
115
|
+
*
|
|
116
|
+
* **Gotchas**
|
|
117
|
+
*
|
|
118
|
+
* The resolver receives an unauthenticated header and must use it only for
|
|
119
|
+
* key selection.
|
|
120
|
+
*
|
|
121
|
+
* @see {@link encrypt}
|
|
122
|
+
*
|
|
123
|
+
* @stability unstable
|
|
124
|
+
* @category cryptography
|
|
125
|
+
* @since 4.1.1
|
|
126
|
+
*/
|
|
127
|
+
export declare const decrypt: <E = never, R = never>(token: string | Redacted.Redacted<string>, key: SecretKey<"dir"> | ((header: ProtectedHeader) => Effect.Effect<SecretKey<"dir">, E, R>)) => Effect.Effect<Decrypted, E | JoseError.JoseError, R | Aead.Aead>;
|
|
128
|
+
//# sourceMappingURL=Jwe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Jwe.d.ts","sourceRoot":"","sources":["../../src/jose/Jwe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAUtC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe;;;;;;mGAS3B,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,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,SAAS;IACxB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAA;IAC9B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;CAC/B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,OAAO,GAClB,CAAC,SAAS,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,SAAS,GAAE,oNAgBvE,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,GAA+B,CAAC,UAAU,CAAC,uFAE3B,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sEA2B3F,CAAA"}
|