@atproto/oauth-types 0.6.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/atproto-loopback-client-id.js +17 -21
- package/dist/atproto-loopback-client-id.js.map +1 -1
- package/dist/atproto-loopback-client-metadata.js +6 -10
- package/dist/atproto-loopback-client-metadata.js.map +1 -1
- package/dist/atproto-loopback-client-redirect-uris.js +1 -4
- package/dist/atproto-loopback-client-redirect-uris.js.map +1 -1
- package/dist/atproto-oauth-scope.js +11 -17
- package/dist/atproto-oauth-scope.js.map +1 -1
- package/dist/atproto-oauth-token-response.d.ts +3 -3
- package/dist/atproto-oauth-token-response.js +9 -12
- package/dist/atproto-oauth-token-response.js.map +1 -1
- package/dist/constants.js +1 -4
- package/dist/constants.js.map +1 -1
- package/dist/index.js +49 -65
- package/dist/index.js.map +1 -1
- package/dist/oauth-access-token.js +2 -5
- package/dist/oauth-access-token.js.map +1 -1
- package/dist/oauth-authorization-code-grant-token-request.js +7 -10
- package/dist/oauth-authorization-code-grant-token-request.js.map +1 -1
- package/dist/oauth-authorization-details.js +10 -13
- package/dist/oauth-authorization-details.js.map +1 -1
- package/dist/oauth-authorization-request-jar.js +4 -7
- package/dist/oauth-authorization-request-jar.js.map +1 -1
- package/dist/oauth-authorization-request-par.js +6 -9
- package/dist/oauth-authorization-request-par.js.map +1 -1
- package/dist/oauth-authorization-request-parameters.js +35 -38
- package/dist/oauth-authorization-request-parameters.js.map +1 -1
- package/dist/oauth-authorization-request-query.js +11 -14
- package/dist/oauth-authorization-request-query.js.map +1 -1
- package/dist/oauth-authorization-request-uri.js +4 -7
- package/dist/oauth-authorization-request-uri.js.map +1 -1
- package/dist/oauth-authorization-response-error.js +2 -5
- package/dist/oauth-authorization-response-error.js.map +1 -1
- package/dist/oauth-authorization-server-metadata.js +52 -55
- package/dist/oauth-authorization-server-metadata.js.map +1 -1
- package/dist/oauth-client-credentials-grant-token-request.js +3 -6
- package/dist/oauth-client-credentials-grant-token-request.js.map +1 -1
- package/dist/oauth-client-credentials.js +17 -20
- package/dist/oauth-client-credentials.js.map +1 -1
- package/dist/oauth-client-id-discoverable.js +26 -33
- package/dist/oauth-client-id-discoverable.js.map +1 -1
- package/dist/oauth-client-id-loopback.js +20 -29
- package/dist/oauth-client-id-loopback.js.map +1 -1
- package/dist/oauth-client-id.js +2 -5
- package/dist/oauth-client-id.js.map +1 -1
- package/dist/oauth-client-metadata.d.ts.map +1 -1
- package/dist/oauth-client-metadata.js +41 -44
- package/dist/oauth-client-metadata.js.map +1 -1
- package/dist/oauth-code-challenge-method.js +2 -5
- package/dist/oauth-code-challenge-method.js.map +1 -1
- package/dist/oauth-endpoint-auth-method.js +2 -5
- package/dist/oauth-endpoint-auth-method.js.map +1 -1
- package/dist/oauth-endpoint-name.js +1 -4
- package/dist/oauth-endpoint-name.js.map +1 -1
- package/dist/oauth-grant-type.js +2 -5
- package/dist/oauth-grant-type.js.map +1 -1
- package/dist/oauth-introspection-response.js +1 -2
- package/dist/oauth-issuer-identifier.js +7 -10
- package/dist/oauth-issuer-identifier.js.map +1 -1
- package/dist/oauth-par-response.js +4 -7
- package/dist/oauth-par-response.js.map +1 -1
- package/dist/oauth-password-grant-token-request.js +5 -8
- package/dist/oauth-password-grant-token-request.js.map +1 -1
- package/dist/oauth-prompt-mode.js +2 -5
- package/dist/oauth-prompt-mode.js.map +1 -1
- package/dist/oauth-protected-resource-metadata.js +14 -17
- package/dist/oauth-protected-resource-metadata.js.map +1 -1
- package/dist/oauth-redirect-uri.js +10 -13
- package/dist/oauth-redirect-uri.js.map +1 -1
- package/dist/oauth-refresh-token-grant-token-request.js +5 -8
- package/dist/oauth-refresh-token-grant-token-request.js.map +1 -1
- package/dist/oauth-refresh-token.js +2 -5
- package/dist/oauth-refresh-token.js.map +1 -1
- package/dist/oauth-request-uri.js +2 -5
- package/dist/oauth-request-uri.js.map +1 -1
- package/dist/oauth-response-mode.js +2 -5
- package/dist/oauth-response-mode.js.map +1 -1
- package/dist/oauth-response-type.js +2 -5
- package/dist/oauth-response-type.js.map +1 -1
- package/dist/oauth-scope.js +4 -8
- package/dist/oauth-scope.js.map +1 -1
- package/dist/oauth-token-identification.js +6 -9
- package/dist/oauth-token-identification.js.map +1 -1
- package/dist/oauth-token-request.js +10 -13
- package/dist/oauth-token-request.js.map +1 -1
- package/dist/oauth-token-response.js +12 -15
- package/dist/oauth-token-response.js.map +1 -1
- package/dist/oauth-token-type.js +4 -7
- package/dist/oauth-token-type.js.map +1 -1
- package/dist/oidc-authorization-error-response.js +2 -5
- package/dist/oidc-authorization-error-response.js.map +1 -1
- package/dist/oidc-claims-parameter.js +2 -5
- package/dist/oidc-claims-parameter.js.map +1 -1
- package/dist/oidc-claims-properties.js +5 -8
- package/dist/oidc-claims-properties.js.map +1 -1
- package/dist/oidc-entity-type.js +2 -5
- package/dist/oidc-entity-type.js.map +1 -1
- package/dist/oidc-userinfo.js +10 -13
- package/dist/oidc-userinfo.js.map +1 -1
- package/dist/uri.js +25 -28
- package/dist/uri.js.map +1 -1
- package/dist/util.js +12 -26
- package/dist/util.js.map +1 -1
- package/package.json +8 -7
- package/src/atproto-oauth-token-response.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.oauthAuthorizationRequestParSchema = zod_1.z.union([
|
|
8
|
-
oauth_authorization_request_parameters_js_1.oauthAuthorizationRequestParametersSchema,
|
|
9
|
-
oauth_authorization_request_jar_js_1.oauthAuthorizationRequestJarSchema,
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { oauthAuthorizationRequestJarSchema } from './oauth-authorization-request-jar.js';
|
|
3
|
+
import { oauthAuthorizationRequestParametersSchema } from './oauth-authorization-request-parameters.js';
|
|
4
|
+
export const oauthAuthorizationRequestParSchema = z.union([
|
|
5
|
+
oauthAuthorizationRequestParametersSchema,
|
|
6
|
+
oauthAuthorizationRequestJarSchema,
|
|
10
7
|
]);
|
|
11
8
|
//# sourceMappingURL=oauth-authorization-request-par.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-authorization-request-par.js","sourceRoot":"","sources":["../src/oauth-authorization-request-par.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-authorization-request-par.js","sourceRoot":"","sources":["../src/oauth-authorization-request-par.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAA;AAEvG,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,KAAK,CAAC;IACxD,yCAAyC;IACzC,kCAAkC;CACnC,CAAC,CAAA","sourcesContent":["import { z } from 'zod'\nimport { oauthAuthorizationRequestJarSchema } from './oauth-authorization-request-jar.js'\nimport { oauthAuthorizationRequestParametersSchema } from './oauth-authorization-request-parameters.js'\n\nexport const oauthAuthorizationRequestParSchema = z.union([\n oauthAuthorizationRequestParametersSchema,\n oauthAuthorizationRequestJarSchema,\n])\n\nexport type OAuthAuthorizationRequestPar = z.infer<\n typeof oauthAuthorizationRequestParSchema\n>\n"]}
|
|
@@ -1,43 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const oidc_claims_properties_js_1 = require("./oidc-claims-properties.js");
|
|
16
|
-
const oidc_entity_type_js_1 = require("./oidc-entity-type.js");
|
|
17
|
-
const util_js_1 = require("./util.js");
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { signedJwtSchema } from '@atproto/jwk';
|
|
3
|
+
import { oauthAuthorizationDetailsSchema } from './oauth-authorization-details.js';
|
|
4
|
+
import { oauthClientIdSchema } from './oauth-client-id.js';
|
|
5
|
+
import { oauthCodeChallengeMethodSchema } from './oauth-code-challenge-method.js';
|
|
6
|
+
import { oauthPromptModeSchema } from './oauth-prompt-mode.js';
|
|
7
|
+
import { oauthRedirectUriSchema } from './oauth-redirect-uri.js';
|
|
8
|
+
import { oauthResponseModeSchema } from './oauth-response-mode.js';
|
|
9
|
+
import { oauthResponseTypeSchema } from './oauth-response-type.js';
|
|
10
|
+
import { oauthScopeSchema } from './oauth-scope.js';
|
|
11
|
+
import { oidcClaimsParameterSchema } from './oidc-claims-parameter.js';
|
|
12
|
+
import { oidcClaimsPropertiesSchema } from './oidc-claims-properties.js';
|
|
13
|
+
import { oidcEntityTypeSchema } from './oidc-entity-type.js';
|
|
14
|
+
import { jsonObjectPreprocess, numberPreprocess } from './util.js';
|
|
18
15
|
/**
|
|
19
16
|
* @note non string parameters will be converted from their string
|
|
20
17
|
* representation since oauth request parameters are typically sent as URL
|
|
21
18
|
* encoded form data or URL encoded query string.
|
|
22
19
|
* @see {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest | OIDC}
|
|
23
20
|
*/
|
|
24
|
-
|
|
25
|
-
client_id:
|
|
26
|
-
state:
|
|
27
|
-
redirect_uri:
|
|
28
|
-
scope:
|
|
29
|
-
response_type:
|
|
21
|
+
export const oauthAuthorizationRequestParametersSchema = z.object({
|
|
22
|
+
client_id: oauthClientIdSchema,
|
|
23
|
+
state: z.string().optional(),
|
|
24
|
+
redirect_uri: oauthRedirectUriSchema.optional(),
|
|
25
|
+
scope: oauthScopeSchema.optional(),
|
|
26
|
+
response_type: oauthResponseTypeSchema,
|
|
30
27
|
// PKCE
|
|
31
28
|
// https://datatracker.ietf.org/doc/html/rfc7636#section-4.3
|
|
32
|
-
code_challenge:
|
|
33
|
-
code_challenge_method:
|
|
29
|
+
code_challenge: z.string().optional(),
|
|
30
|
+
code_challenge_method: oauthCodeChallengeMethodSchema.optional(),
|
|
34
31
|
// DPOP
|
|
35
32
|
// https://datatracker.ietf.org/doc/html/rfc9449#section-12.3
|
|
36
|
-
dpop_jkt:
|
|
33
|
+
dpop_jkt: z.string().optional(),
|
|
37
34
|
// OIDC
|
|
38
35
|
// Default depend on response_type
|
|
39
|
-
response_mode:
|
|
40
|
-
nonce:
|
|
36
|
+
response_mode: oauthResponseModeSchema.optional(),
|
|
37
|
+
nonce: z.string().optional(),
|
|
41
38
|
// Specifies the allowable elapsed time in seconds since the last time the
|
|
42
39
|
// End-User was actively authenticated by the OP. If the elapsed time is
|
|
43
40
|
// greater than this value, the OP MUST attempt to actively re-authenticate
|
|
@@ -45,27 +42,27 @@ exports.oauthAuthorizationRequestParametersSchema = zod_1.z.object({
|
|
|
45
42
|
// PAPE [OpenID.PAPE] max_auth_age request parameter.) When max_age is used,
|
|
46
43
|
// the ID Token returned MUST include an auth_time Claim Value. Note that
|
|
47
44
|
// max_age=0 is equivalent to prompt=login.
|
|
48
|
-
max_age:
|
|
49
|
-
claims:
|
|
50
|
-
.preprocess(
|
|
45
|
+
max_age: z.preprocess(numberPreprocess, z.number().int().min(0)).optional(),
|
|
46
|
+
claims: z
|
|
47
|
+
.preprocess(jsonObjectPreprocess, z.record(oidcEntityTypeSchema, z.record(oidcClaimsParameterSchema, z.union([z.literal(null), oidcClaimsPropertiesSchema]))))
|
|
51
48
|
.optional(),
|
|
52
49
|
// https://openid.net/specs/openid-connect-core-1_0.html#RegistrationParameter
|
|
53
50
|
// Not supported by this library (yet?)
|
|
54
51
|
// registration: clientMetadataSchema.optional(),
|
|
55
|
-
login_hint:
|
|
56
|
-
ui_locales:
|
|
52
|
+
login_hint: z.string().min(1).optional(),
|
|
53
|
+
ui_locales: z
|
|
57
54
|
.string()
|
|
58
55
|
.regex(/^[a-z]{2,3}(-[A-Z]{2})?( [a-z]{2,3}(-[A-Z]{2})?)*$/) // fr-CA fr en
|
|
59
56
|
.optional(),
|
|
60
57
|
// Previous ID Token, should be provided when prompt=none is used
|
|
61
|
-
id_token_hint:
|
|
58
|
+
id_token_hint: signedJwtSchema.optional(),
|
|
62
59
|
// Type of UI the AS is displayed on
|
|
63
|
-
display:
|
|
60
|
+
display: z.enum(['page', 'popup', 'touch', 'wap']).optional(),
|
|
64
61
|
// How the AS should prompt the user for authorization:
|
|
65
|
-
prompt:
|
|
62
|
+
prompt: oauthPromptModeSchema.optional(),
|
|
66
63
|
// https://datatracker.ietf.org/doc/html/rfc9396
|
|
67
|
-
authorization_details:
|
|
68
|
-
.preprocess(
|
|
64
|
+
authorization_details: z
|
|
65
|
+
.preprocess(jsonObjectPreprocess, oauthAuthorizationDetailsSchema)
|
|
69
66
|
.optional(),
|
|
70
67
|
});
|
|
71
68
|
//# sourceMappingURL=oauth-authorization-request-parameters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-authorization-request-parameters.js","sourceRoot":"","sources":["../src/oauth-authorization-request-parameters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-authorization-request-parameters.js","sourceRoot":"","sources":["../src/oauth-authorization-request-parameters.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\nimport { signedJwtSchema } from '@atproto/jwk'\nimport { oauthAuthorizationDetailsSchema } from './oauth-authorization-details.js'\nimport { oauthClientIdSchema } from './oauth-client-id.js'\nimport { oauthCodeChallengeMethodSchema } from './oauth-code-challenge-method.js'\nimport { oauthPromptModeSchema } from './oauth-prompt-mode.js'\nimport { oauthRedirectUriSchema } from './oauth-redirect-uri.js'\nimport { oauthResponseModeSchema } from './oauth-response-mode.js'\nimport { oauthResponseTypeSchema } from './oauth-response-type.js'\nimport { oauthScopeSchema } from './oauth-scope.js'\nimport { oidcClaimsParameterSchema } from './oidc-claims-parameter.js'\nimport { oidcClaimsPropertiesSchema } from './oidc-claims-properties.js'\nimport { oidcEntityTypeSchema } from './oidc-entity-type.js'\nimport { jsonObjectPreprocess, numberPreprocess } from './util.js'\n\n/**\n * @note non string parameters will be converted from their string\n * representation since oauth request parameters are typically sent as URL\n * encoded form data or URL encoded query string.\n * @see {@link https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest | OIDC}\n */\nexport const oauthAuthorizationRequestParametersSchema = z.object({\n client_id: oauthClientIdSchema,\n state: z.string().optional(),\n redirect_uri: oauthRedirectUriSchema.optional(),\n scope: oauthScopeSchema.optional(),\n response_type: oauthResponseTypeSchema,\n\n // PKCE\n\n // https://datatracker.ietf.org/doc/html/rfc7636#section-4.3\n code_challenge: z.string().optional(),\n code_challenge_method: oauthCodeChallengeMethodSchema.optional(),\n\n // DPOP\n\n // https://datatracker.ietf.org/doc/html/rfc9449#section-12.3\n dpop_jkt: z.string().optional(),\n\n // OIDC\n\n // Default depend on response_type\n response_mode: oauthResponseModeSchema.optional(),\n\n nonce: z.string().optional(),\n\n // Specifies the allowable elapsed time in seconds since the last time the\n // End-User was actively authenticated by the OP. If the elapsed time is\n // greater than this value, the OP MUST attempt to actively re-authenticate\n // the End-User. (The max_age request parameter corresponds to the OpenID 2.0\n // PAPE [OpenID.PAPE] max_auth_age request parameter.) When max_age is used,\n // the ID Token returned MUST include an auth_time Claim Value. Note that\n // max_age=0 is equivalent to prompt=login.\n max_age: z.preprocess(numberPreprocess, z.number().int().min(0)).optional(),\n\n claims: z\n .preprocess(\n jsonObjectPreprocess,\n z.record(\n oidcEntityTypeSchema,\n z.record(\n oidcClaimsParameterSchema,\n z.union([z.literal(null), oidcClaimsPropertiesSchema]),\n ),\n ),\n )\n .optional(),\n\n // https://openid.net/specs/openid-connect-core-1_0.html#RegistrationParameter\n // Not supported by this library (yet?)\n // registration: clientMetadataSchema.optional(),\n\n login_hint: z.string().min(1).optional(),\n\n ui_locales: z\n .string()\n .regex(/^[a-z]{2,3}(-[A-Z]{2})?( [a-z]{2,3}(-[A-Z]{2})?)*$/) // fr-CA fr en\n .optional(),\n\n // Previous ID Token, should be provided when prompt=none is used\n id_token_hint: signedJwtSchema.optional(),\n\n // Type of UI the AS is displayed on\n display: z.enum(['page', 'popup', 'touch', 'wap']).optional(),\n\n // How the AS should prompt the user for authorization:\n prompt: oauthPromptModeSchema.optional(),\n\n // https://datatracker.ietf.org/doc/html/rfc9396\n authorization_details: z\n .preprocess(jsonObjectPreprocess, oauthAuthorizationDetailsSchema)\n .optional(),\n})\n\n/**\n * @see {oauthAuthorizationRequestParametersSchema}\n */\nexport type OAuthAuthorizationRequestParameters = z.infer<\n typeof oauthAuthorizationRequestParametersSchema\n>\n"]}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const oauth_authorization_request_uri_js_1 = require("./oauth-authorization-request-uri.js");
|
|
8
|
-
const oauth_client_id_js_1 = require("./oauth-client-id.js");
|
|
9
|
-
exports.oauthAuthorizationRequestQuerySchema = zod_1.z.intersection(zod_1.z.object({
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { oauthAuthorizationRequestJarSchema } from './oauth-authorization-request-jar.js';
|
|
3
|
+
import { oauthAuthorizationRequestParametersSchema } from './oauth-authorization-request-parameters.js';
|
|
4
|
+
import { oauthAuthorizationRequestUriSchema } from './oauth-authorization-request-uri.js';
|
|
5
|
+
import { oauthClientIdSchema } from './oauth-client-id.js';
|
|
6
|
+
export const oauthAuthorizationRequestQuerySchema = z.intersection(z.object({
|
|
10
7
|
// REQUIRED. OAuth 2.0 [RFC6749] client_id.
|
|
11
|
-
client_id:
|
|
12
|
-
}),
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
client_id: oauthClientIdSchema,
|
|
9
|
+
}), z.union([
|
|
10
|
+
oauthAuthorizationRequestParametersSchema,
|
|
11
|
+
oauthAuthorizationRequestJarSchema,
|
|
12
|
+
oauthAuthorizationRequestUriSchema,
|
|
16
13
|
]));
|
|
17
14
|
//# sourceMappingURL=oauth-authorization-request-query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-authorization-request-query.js","sourceRoot":"","sources":["../src/oauth-authorization-request-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-authorization-request-query.js","sourceRoot":"","sources":["../src/oauth-authorization-request-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAA;AACvG,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAC,CAAC,YAAY,CAChE,CAAC,CAAC,MAAM,CAAC;IACP,2CAA2C;IAC3C,SAAS,EAAE,mBAAmB;CAC/B,CAAC,EACF,CAAC,CAAC,KAAK,CAAC;IACN,yCAAyC;IACzC,kCAAkC;IAClC,kCAAkC;CACnC,CAAC,CACH,CAAA","sourcesContent":["import { z } from 'zod'\nimport { oauthAuthorizationRequestJarSchema } from './oauth-authorization-request-jar.js'\nimport { oauthAuthorizationRequestParametersSchema } from './oauth-authorization-request-parameters.js'\nimport { oauthAuthorizationRequestUriSchema } from './oauth-authorization-request-uri.js'\nimport { oauthClientIdSchema } from './oauth-client-id.js'\n\nexport const oauthAuthorizationRequestQuerySchema = z.intersection(\n z.object({\n // REQUIRED. OAuth 2.0 [RFC6749] client_id.\n client_id: oauthClientIdSchema,\n }),\n z.union([\n oauthAuthorizationRequestParametersSchema,\n oauthAuthorizationRequestJarSchema,\n oauthAuthorizationRequestUriSchema,\n ]),\n)\n\nexport type OAuthAuthorizationRequestQuery = z.infer<\n typeof oauthAuthorizationRequestQuerySchema\n>\n"]}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const oauth_request_uri_js_1 = require("./oauth-request-uri.js");
|
|
6
|
-
exports.oauthAuthorizationRequestUriSchema = zod_1.z.object({
|
|
7
|
-
request_uri: oauth_request_uri_js_1.oauthRequestUriSchema,
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { oauthRequestUriSchema } from './oauth-request-uri.js';
|
|
3
|
+
export const oauthAuthorizationRequestUriSchema = z.object({
|
|
4
|
+
request_uri: oauthRequestUriSchema,
|
|
8
5
|
});
|
|
9
6
|
//# sourceMappingURL=oauth-authorization-request-uri.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-authorization-request-uri.js","sourceRoot":"","sources":["../src/oauth-authorization-request-uri.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-authorization-request-uri.js","sourceRoot":"","sources":["../src/oauth-authorization-request-uri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzD,WAAW,EAAE,qBAAqB;CACnC,CAAC,CAAA","sourcesContent":["import { z } from 'zod'\nimport { oauthRequestUriSchema } from './oauth-request-uri.js'\n\nexport const oauthAuthorizationRequestUriSchema = z.object({\n request_uri: oauthRequestUriSchema,\n})\n\nexport type OAuthAuthorizationRequestUri = z.infer<\n typeof oauthAuthorizationRequestUriSchema\n>\n"]}
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.oauthAuthorizationResponseErrorSchema = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
1
|
+
import { z } from 'zod';
|
|
5
2
|
/**
|
|
6
3
|
* @see {@link https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-12#name-error-response-2}
|
|
7
4
|
*/
|
|
8
|
-
|
|
5
|
+
export const oauthAuthorizationResponseErrorSchema = z.enum([
|
|
9
6
|
// The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.
|
|
10
7
|
'invalid_request',
|
|
11
8
|
// The client is not authorized to request an authorization code using this method.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-authorization-response-error.js","sourceRoot":"","sources":["../src/oauth-authorization-response-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-authorization-response-error.js","sourceRoot":"","sources":["../src/oauth-authorization-response-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1D,oJAAoJ;IACpJ,iBAAiB;IACjB,mFAAmF;IACnF,qBAAqB;IACrB,iEAAiE;IACjE,eAAe;IACf,+FAA+F;IAC/F,2BAA2B;IAC3B,yDAAyD;IACzD,eAAe;IACf,sPAAsP;IACtP,cAAc;IACd,wQAAwQ;IACxQ,yBAAyB;CAC1B,CAAC,CAAA","sourcesContent":["import { z } from 'zod'\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-12#name-error-response-2}\n */\nexport const oauthAuthorizationResponseErrorSchema = z.enum([\n // The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed.\n 'invalid_request',\n // The client is not authorized to request an authorization code using this method.\n 'unauthorized_client',\n // The resource owner or authorization server denied the request.\n 'access_denied',\n // The authorization server does not support obtaining an authorization code using this method.\n 'unsupported_response_type',\n // The requested scope is invalid, unknown, or malformed.\n 'invalid_scope',\n // The authorization server encountered an unexpected condition that prevented it from fulfilling the request. (This error code is needed because a 500 Internal Server Error HTTP status code cannot be returned to the client via an HTTP redirect.)\n 'server_error',\n // The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server. (This error code is needed because a 503 Service Unavailable HTTP status code cannot be returned to the client via an HTTP redirect.)\n 'temporarily_unavailable',\n])\n\nexport type OAuthAuthorizationResponseError = z.infer<\n typeof oauthAuthorizationResponseErrorSchema\n>\n"]}
|
|
@@ -1,79 +1,76 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const oauth_issuer_identifier_js_1 = require("./oauth-issuer-identifier.js");
|
|
7
|
-
const oauth_prompt_mode_js_1 = require("./oauth-prompt-mode.js");
|
|
8
|
-
const uri_js_1 = require("./uri.js");
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { oauthCodeChallengeMethodSchema } from './oauth-code-challenge-method.js';
|
|
3
|
+
import { oauthIssuerIdentifierSchema } from './oauth-issuer-identifier.js';
|
|
4
|
+
import { oauthPromptModeSchema } from './oauth-prompt-mode.js';
|
|
5
|
+
import { webUriSchema } from './uri.js';
|
|
9
6
|
/**
|
|
10
7
|
* @see {@link https://datatracker.ietf.org/doc/html/rfc8414}
|
|
11
8
|
* @note we do not enforce https: scheme in URIs to support development
|
|
12
9
|
* environments. Make sure to validate the URIs before using it in a production
|
|
13
10
|
* environment.
|
|
14
11
|
*/
|
|
15
|
-
|
|
16
|
-
issuer:
|
|
17
|
-
claims_supported:
|
|
18
|
-
claims_locales_supported:
|
|
19
|
-
claims_parameter_supported:
|
|
20
|
-
request_parameter_supported:
|
|
21
|
-
request_uri_parameter_supported:
|
|
22
|
-
require_request_uri_registration:
|
|
23
|
-
scopes_supported:
|
|
24
|
-
subject_types_supported:
|
|
25
|
-
response_types_supported:
|
|
26
|
-
response_modes_supported:
|
|
27
|
-
grant_types_supported:
|
|
28
|
-
code_challenge_methods_supported:
|
|
29
|
-
.array(
|
|
12
|
+
export const oauthAuthorizationServerMetadataSchema = z.object({
|
|
13
|
+
issuer: oauthIssuerIdentifierSchema,
|
|
14
|
+
claims_supported: z.array(z.string()).optional(),
|
|
15
|
+
claims_locales_supported: z.array(z.string()).optional(),
|
|
16
|
+
claims_parameter_supported: z.boolean().optional(),
|
|
17
|
+
request_parameter_supported: z.boolean().optional(),
|
|
18
|
+
request_uri_parameter_supported: z.boolean().optional(),
|
|
19
|
+
require_request_uri_registration: z.boolean().optional(),
|
|
20
|
+
scopes_supported: z.array(z.string()).optional(),
|
|
21
|
+
subject_types_supported: z.array(z.string()).optional(),
|
|
22
|
+
response_types_supported: z.array(z.string()).optional(),
|
|
23
|
+
response_modes_supported: z.array(z.string()).optional(),
|
|
24
|
+
grant_types_supported: z.array(z.string()).optional(),
|
|
25
|
+
code_challenge_methods_supported: z
|
|
26
|
+
.array(oauthCodeChallengeMethodSchema)
|
|
30
27
|
.min(1)
|
|
31
28
|
.optional(),
|
|
32
|
-
ui_locales_supported:
|
|
33
|
-
id_token_signing_alg_values_supported:
|
|
34
|
-
display_values_supported:
|
|
35
|
-
request_object_signing_alg_values_supported:
|
|
36
|
-
authorization_response_iss_parameter_supported:
|
|
37
|
-
authorization_details_types_supported:
|
|
38
|
-
request_object_encryption_alg_values_supported:
|
|
39
|
-
.array(
|
|
29
|
+
ui_locales_supported: z.array(z.string()).optional(),
|
|
30
|
+
id_token_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
31
|
+
display_values_supported: z.array(z.string()).optional(),
|
|
32
|
+
request_object_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
33
|
+
authorization_response_iss_parameter_supported: z.boolean().optional(),
|
|
34
|
+
authorization_details_types_supported: z.array(z.string()).optional(),
|
|
35
|
+
request_object_encryption_alg_values_supported: z
|
|
36
|
+
.array(z.string())
|
|
40
37
|
.optional(),
|
|
41
|
-
request_object_encryption_enc_values_supported:
|
|
42
|
-
.array(
|
|
38
|
+
request_object_encryption_enc_values_supported: z
|
|
39
|
+
.array(z.string())
|
|
43
40
|
.optional(),
|
|
44
|
-
jwks_uri:
|
|
45
|
-
authorization_endpoint:
|
|
46
|
-
token_endpoint:
|
|
41
|
+
jwks_uri: webUriSchema.optional(),
|
|
42
|
+
authorization_endpoint: webUriSchema, // .optional(),
|
|
43
|
+
token_endpoint: webUriSchema, // .optional(),
|
|
47
44
|
// https://www.rfc-editor.org/rfc/rfc8414.html#section-2
|
|
48
|
-
token_endpoint_auth_methods_supported:
|
|
49
|
-
.array(
|
|
45
|
+
token_endpoint_auth_methods_supported: z
|
|
46
|
+
.array(z.string())
|
|
50
47
|
// > If omitted, the default is "client_secret_basic" [...].
|
|
51
48
|
.default(['client_secret_basic']),
|
|
52
|
-
token_endpoint_auth_signing_alg_values_supported:
|
|
53
|
-
.array(
|
|
49
|
+
token_endpoint_auth_signing_alg_values_supported: z
|
|
50
|
+
.array(z.string())
|
|
54
51
|
.optional(),
|
|
55
|
-
revocation_endpoint:
|
|
56
|
-
introspection_endpoint:
|
|
57
|
-
pushed_authorization_request_endpoint:
|
|
58
|
-
require_pushed_authorization_requests:
|
|
59
|
-
userinfo_endpoint:
|
|
60
|
-
end_session_endpoint:
|
|
61
|
-
registration_endpoint:
|
|
52
|
+
revocation_endpoint: webUriSchema.optional(),
|
|
53
|
+
introspection_endpoint: webUriSchema.optional(),
|
|
54
|
+
pushed_authorization_request_endpoint: webUriSchema.optional(),
|
|
55
|
+
require_pushed_authorization_requests: z.boolean().optional(),
|
|
56
|
+
userinfo_endpoint: webUriSchema.optional(),
|
|
57
|
+
end_session_endpoint: webUriSchema.optional(),
|
|
58
|
+
registration_endpoint: webUriSchema.optional(),
|
|
62
59
|
// https://datatracker.ietf.org/doc/html/rfc9449#section-5.1
|
|
63
|
-
dpop_signing_alg_values_supported:
|
|
60
|
+
dpop_signing_alg_values_supported: z.array(z.string()).optional(),
|
|
64
61
|
// https://www.rfc-editor.org/rfc/rfc9728.html#section-4
|
|
65
|
-
protected_resources:
|
|
62
|
+
protected_resources: z.array(webUriSchema).optional(),
|
|
66
63
|
// https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-00.html
|
|
67
|
-
client_id_metadata_document_supported:
|
|
64
|
+
client_id_metadata_document_supported: z.boolean().optional(),
|
|
68
65
|
// https://openid.net/specs/openid-connect-prompt-create-1_0.html#section-4.2
|
|
69
|
-
prompt_values_supported:
|
|
66
|
+
prompt_values_supported: z.array(oauthPromptModeSchema).optional(),
|
|
70
67
|
});
|
|
71
|
-
|
|
68
|
+
export const oauthAuthorizationServerMetadataValidator = oauthAuthorizationServerMetadataSchema
|
|
72
69
|
.superRefine((data, ctx) => {
|
|
73
70
|
if (data.require_pushed_authorization_requests &&
|
|
74
71
|
!data.pushed_authorization_request_endpoint) {
|
|
75
72
|
ctx.addIssue({
|
|
76
|
-
code:
|
|
73
|
+
code: z.ZodIssueCode.custom,
|
|
77
74
|
message: '"pushed_authorization_request_endpoint" required when "require_pushed_authorization_requests" is true',
|
|
78
75
|
});
|
|
79
76
|
}
|
|
@@ -82,7 +79,7 @@ exports.oauthAuthorizationServerMetadataValidator = exports.oauthAuthorizationSe
|
|
|
82
79
|
if (data.response_types_supported) {
|
|
83
80
|
if (!data.response_types_supported.includes('code')) {
|
|
84
81
|
ctx.addIssue({
|
|
85
|
-
code:
|
|
82
|
+
code: z.ZodIssueCode.custom,
|
|
86
83
|
message: 'Response type "code" is required',
|
|
87
84
|
});
|
|
88
85
|
}
|
|
@@ -93,7 +90,7 @@ exports.oauthAuthorizationServerMetadataValidator = exports.oauthAuthorizationSe
|
|
|
93
90
|
// https://openid.net/specs/openid-connect-discovery-1_0.html#rfc.section.3
|
|
94
91
|
// > The value `none` MUST NOT be used.
|
|
95
92
|
ctx.addIssue({
|
|
96
|
-
code:
|
|
93
|
+
code: z.ZodIssueCode.custom,
|
|
97
94
|
message: 'Client authentication method "none" is not allowed',
|
|
98
95
|
});
|
|
99
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-authorization-server-metadata.js","sourceRoot":"","sources":["../src/oauth-authorization-server-metadata.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-authorization-server-metadata.js","sourceRoot":"","sources":["../src/oauth-authorization-server-metadata.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod'\nimport { oauthCodeChallengeMethodSchema } from './oauth-code-challenge-method.js'\nimport { oauthIssuerIdentifierSchema } from './oauth-issuer-identifier.js'\nimport { oauthPromptModeSchema } from './oauth-prompt-mode.js'\nimport { webUriSchema } from './uri.js'\n\n/**\n * @see {@link https://datatracker.ietf.org/doc/html/rfc8414}\n * @note we do not enforce https: scheme in URIs to support development\n * environments. Make sure to validate the URIs before using it in a production\n * environment.\n */\nexport const oauthAuthorizationServerMetadataSchema = z.object({\n issuer: oauthIssuerIdentifierSchema,\n\n claims_supported: z.array(z.string()).optional(),\n claims_locales_supported: z.array(z.string()).optional(),\n claims_parameter_supported: z.boolean().optional(),\n request_parameter_supported: z.boolean().optional(),\n request_uri_parameter_supported: z.boolean().optional(),\n require_request_uri_registration: z.boolean().optional(),\n scopes_supported: z.array(z.string()).optional(),\n subject_types_supported: z.array(z.string()).optional(),\n response_types_supported: z.array(z.string()).optional(),\n response_modes_supported: z.array(z.string()).optional(),\n grant_types_supported: z.array(z.string()).optional(),\n code_challenge_methods_supported: z\n .array(oauthCodeChallengeMethodSchema)\n .min(1)\n .optional(),\n ui_locales_supported: z.array(z.string()).optional(),\n id_token_signing_alg_values_supported: z.array(z.string()).optional(),\n display_values_supported: z.array(z.string()).optional(),\n request_object_signing_alg_values_supported: z.array(z.string()).optional(),\n authorization_response_iss_parameter_supported: z.boolean().optional(),\n authorization_details_types_supported: z.array(z.string()).optional(),\n request_object_encryption_alg_values_supported: z\n .array(z.string())\n .optional(),\n request_object_encryption_enc_values_supported: z\n .array(z.string())\n .optional(),\n\n jwks_uri: webUriSchema.optional(),\n\n authorization_endpoint: webUriSchema, // .optional(),\n\n token_endpoint: webUriSchema, // .optional(),\n // https://www.rfc-editor.org/rfc/rfc8414.html#section-2\n token_endpoint_auth_methods_supported: z\n .array(z.string())\n // > If omitted, the default is \"client_secret_basic\" [...].\n .default(['client_secret_basic']),\n token_endpoint_auth_signing_alg_values_supported: z\n .array(z.string())\n .optional(),\n\n revocation_endpoint: webUriSchema.optional(),\n introspection_endpoint: webUriSchema.optional(),\n pushed_authorization_request_endpoint: webUriSchema.optional(),\n\n require_pushed_authorization_requests: z.boolean().optional(),\n\n userinfo_endpoint: webUriSchema.optional(),\n end_session_endpoint: webUriSchema.optional(),\n registration_endpoint: webUriSchema.optional(),\n\n // https://datatracker.ietf.org/doc/html/rfc9449#section-5.1\n dpop_signing_alg_values_supported: z.array(z.string()).optional(),\n\n // https://www.rfc-editor.org/rfc/rfc9728.html#section-4\n protected_resources: z.array(webUriSchema).optional(),\n\n // https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-00.html\n client_id_metadata_document_supported: z.boolean().optional(),\n\n // https://openid.net/specs/openid-connect-prompt-create-1_0.html#section-4.2\n prompt_values_supported: z.array(oauthPromptModeSchema).optional(),\n})\n\nexport type OAuthAuthorizationServerMetadata = z.infer<\n typeof oauthAuthorizationServerMetadataSchema\n>\n\nexport const oauthAuthorizationServerMetadataValidator =\n oauthAuthorizationServerMetadataSchema\n .superRefine((data, ctx) => {\n if (\n data.require_pushed_authorization_requests &&\n !data.pushed_authorization_request_endpoint\n ) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n '\"pushed_authorization_request_endpoint\" required when \"require_pushed_authorization_requests\" is true',\n })\n }\n })\n .superRefine((data, ctx) => {\n if (data.response_types_supported) {\n if (!data.response_types_supported.includes('code')) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Response type \"code\" is required',\n })\n }\n }\n })\n .superRefine((data, ctx) => {\n if (\n data.token_endpoint_auth_signing_alg_values_supported?.includes('none')\n ) {\n // https://openid.net/specs/openid-connect-discovery-1_0.html#rfc.section.3\n // > The value `none` MUST NOT be used.\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Client authentication method \"none\" is not allowed',\n })\n }\n })\n"]}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
|
-
exports.oauthClientCredentialsGrantTokenRequestSchema = zod_1.z.object({
|
|
6
|
-
grant_type: zod_1.z.literal('client_credentials'),
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const oauthClientCredentialsGrantTokenRequestSchema = z.object({
|
|
3
|
+
grant_type: z.literal('client_credentials'),
|
|
7
4
|
});
|
|
8
5
|
//# sourceMappingURL=oauth-client-credentials-grant-token-request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-client-credentials-grant-token-request.js","sourceRoot":"","sources":["../src/oauth-client-credentials-grant-token-request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-client-credentials-grant-token-request.js","sourceRoot":"","sources":["../src/oauth-client-credentials-grant-token-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,CAAC,MAAM,6CAA6C,GAAG,CAAC,CAAC,MAAM,CAAC;IACpE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;CAC5C,CAAC,CAAA","sourcesContent":["import { z } from 'zod'\n\nexport const oauthClientCredentialsGrantTokenRequestSchema = z.object({\n grant_type: z.literal('client_credentials'),\n})\n\nexport type OAuthClientCredentialsGrantTokenRequest = z.infer<\n typeof oauthClientCredentialsGrantTokenRequestSchema\n>\n"]}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.oauthClientCredentialsJwtBearerSchema = zod_1.z.object({
|
|
9
|
-
client_id: oauth_client_id_js_1.oauthClientIdSchema,
|
|
10
|
-
client_assertion_type: zod_1.z.literal(constants_js_1.CLIENT_ASSERTION_TYPE_JWT_BEARER),
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { signedJwtSchema } from '@atproto/jwk';
|
|
3
|
+
import { CLIENT_ASSERTION_TYPE_JWT_BEARER } from './constants.js';
|
|
4
|
+
import { oauthClientIdSchema } from './oauth-client-id.js';
|
|
5
|
+
export const oauthClientCredentialsJwtBearerSchema = z.object({
|
|
6
|
+
client_id: oauthClientIdSchema,
|
|
7
|
+
client_assertion_type: z.literal(CLIENT_ASSERTION_TYPE_JWT_BEARER),
|
|
11
8
|
/**
|
|
12
9
|
* - "sub" the subject MUST be the "client_id" of the OAuth client
|
|
13
10
|
* - "iat" is required and MUST be less than one minute
|
|
@@ -17,20 +14,20 @@ exports.oauthClientCredentialsJwtBearerSchema = zod_1.z.object({
|
|
|
17
14
|
*
|
|
18
15
|
* @see {@link https://datatracker.ietf.org/doc/html/rfc7523#section-3}
|
|
19
16
|
*/
|
|
20
|
-
client_assertion:
|
|
17
|
+
client_assertion: signedJwtSchema,
|
|
21
18
|
});
|
|
22
|
-
|
|
23
|
-
client_id:
|
|
24
|
-
client_secret:
|
|
19
|
+
export const oauthClientCredentialsSecretPostSchema = z.object({
|
|
20
|
+
client_id: oauthClientIdSchema,
|
|
21
|
+
client_secret: z.string(),
|
|
25
22
|
});
|
|
26
|
-
|
|
27
|
-
client_id:
|
|
23
|
+
export const oauthClientCredentialsNoneSchema = z.object({
|
|
24
|
+
client_id: oauthClientIdSchema,
|
|
28
25
|
});
|
|
29
26
|
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
export const oauthClientCredentialsSchema = z.union([
|
|
28
|
+
oauthClientCredentialsJwtBearerSchema,
|
|
29
|
+
oauthClientCredentialsSecretPostSchema,
|
|
33
30
|
// Must be last since it is less specific
|
|
34
|
-
|
|
31
|
+
oauthClientCredentialsNoneSchema,
|
|
35
32
|
]);
|
|
36
33
|
//# sourceMappingURL=oauth-client-credentials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-client-credentials.js","sourceRoot":"","sources":["../src/oauth-client-credentials.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oauth-client-credentials.js","sourceRoot":"","sources":["../src/oauth-client-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,gCAAgC,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5D,SAAS,EAAE,mBAAmB;IAC9B,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,gCAAgC,CAAC;IAClE;;;;;;;;OAQG;IACH,gBAAgB,EAAE,eAAe;CAClC,CAAC,CAAA;AAMF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7D,SAAS,EAAE,mBAAmB;IAC9B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;CAC1B,CAAC,CAAA;AAMF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,SAAS,EAAE,mBAAmB;CAC/B,CAAC,CAAA;AAMF,EAAE;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC;IAClD,qCAAqC;IACrC,sCAAsC;IACtC,yCAAyC;IACzC,gCAAgC;CACjC,CAAC,CAAA","sourcesContent":["import { z } from 'zod'\nimport { signedJwtSchema } from '@atproto/jwk'\nimport { CLIENT_ASSERTION_TYPE_JWT_BEARER } from './constants.js'\nimport { oauthClientIdSchema } from './oauth-client-id.js'\n\nexport const oauthClientCredentialsJwtBearerSchema = z.object({\n client_id: oauthClientIdSchema,\n client_assertion_type: z.literal(CLIENT_ASSERTION_TYPE_JWT_BEARER),\n /**\n * - \"sub\" the subject MUST be the \"client_id\" of the OAuth client\n * - \"iat\" is required and MUST be less than one minute\n * - \"aud\" must containing a value that identifies the authorization server\n * - The JWT MAY contain a \"jti\" (JWT ID) claim that provides a unique identifier for the token.\n * - Note that the authorization server may reject JWTs with an \"exp\" claim value that is unreasonably far in the future.\n *\n * @see {@link https://datatracker.ietf.org/doc/html/rfc7523#section-3}\n */\n client_assertion: signedJwtSchema,\n})\n\nexport type OAuthClientCredentialsJwtBearer = z.infer<\n typeof oauthClientCredentialsJwtBearerSchema\n>\n\nexport const oauthClientCredentialsSecretPostSchema = z.object({\n client_id: oauthClientIdSchema,\n client_secret: z.string(),\n})\n\nexport type OAuthClientCredentialsSecretPost = z.infer<\n typeof oauthClientCredentialsSecretPostSchema\n>\n\nexport const oauthClientCredentialsNoneSchema = z.object({\n client_id: oauthClientIdSchema,\n})\n\nexport type OAuthClientCredentialsNone = z.infer<\n typeof oauthClientCredentialsNoneSchema\n>\n\n//\n\nexport const oauthClientCredentialsSchema = z.union([\n oauthClientCredentialsJwtBearerSchema,\n oauthClientCredentialsSecretPostSchema,\n // Must be last since it is less specific\n oauthClientCredentialsNoneSchema,\n])\n\nexport type OAuthClientCredentials = z.infer<\n typeof oauthClientCredentialsSchema\n>\n"]}
|