@atxp/client 0.2.22 → 0.4.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/dist/_virtual/_commonjsHelpers.js +6 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/ajv.js +8 -0
- package/dist/_virtual/ajv.js.map +1 -0
- package/dist/_virtual/cache.js +4 -0
- package/dist/_virtual/cache.js.map +1 -0
- package/dist/_virtual/index.js +4 -0
- package/dist/_virtual/index.js.map +1 -0
- package/dist/_virtual/uri.all.js +4 -0
- package/dist/_virtual/uri.all.js.map +1 -0
- package/dist/atxpAccount.js +4 -2
- package/dist/atxpAccount.js.map +1 -1
- package/dist/atxpClient.js +12 -10
- package/dist/atxpClient.js.map +1 -1
- package/dist/atxpFetcher.js +10 -8
- package/dist/atxpFetcher.js.map +1 -1
- package/dist/baseAccount.js +5 -3
- package/dist/baseAccount.js.map +1 -1
- package/dist/baseConstants.js +4 -0
- package/dist/baseConstants.js.map +1 -0
- package/dist/basePaymentMaker.js +15 -12
- package/dist/basePaymentMaker.js.map +1 -1
- package/dist/index.cjs +16198 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +250 -10
- package/dist/index.js +16161 -10
- package/dist/index.js.map +1 -1
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js +668 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/auth.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js +273 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js +378 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/client/streamableHttp.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.js +162 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/errors.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth-utils.js +46 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth-utils.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js +192 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js +418 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js.map +1 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js +1313 -0
- package/dist/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js.map +1 -0
- package/dist/node_modules/ajv/lib/ajv.js +531 -0
- package/dist/node_modules/ajv/lib/ajv.js.map +1 -0
- package/dist/node_modules/ajv/lib/cache.js +37 -0
- package/dist/node_modules/ajv/lib/cache.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/async.js +102 -0
- package/dist/node_modules/ajv/lib/compile/async.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/error_classes.js +46 -0
- package/dist/node_modules/ajv/lib/compile/error_classes.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/formats.js +154 -0
- package/dist/node_modules/ajv/lib/compile/formats.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/index.js +404 -0
- package/dist/node_modules/ajv/lib/compile/index.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/resolve.js +286 -0
- package/dist/node_modules/ajv/lib/compile/resolve.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/rules.js +79 -0
- package/dist/node_modules/ajv/lib/compile/rules.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/schema_obj.js +21 -0
- package/dist/node_modules/ajv/lib/compile/schema_obj.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/ucs2length.js +30 -0
- package/dist/node_modules/ajv/lib/compile/ucs2length.js.map +1 -0
- package/dist/node_modules/ajv/lib/compile/util.js +252 -0
- package/dist/node_modules/ajv/lib/compile/util.js.map +1 -0
- package/dist/node_modules/ajv/lib/data.js +59 -0
- package/dist/node_modules/ajv/lib/data.js.map +1 -0
- package/dist/node_modules/ajv/lib/definition_schema.js +49 -0
- package/dist/node_modules/ajv/lib/definition_schema.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/_limit.js +173 -0
- package/dist/node_modules/ajv/lib/dotjs/_limit.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/_limitItems.js +90 -0
- package/dist/node_modules/ajv/lib/dotjs/_limitItems.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/_limitLength.js +95 -0
- package/dist/node_modules/ajv/lib/dotjs/_limitLength.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/_limitProperties.js +90 -0
- package/dist/node_modules/ajv/lib/dotjs/_limitProperties.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/allOf.js +52 -0
- package/dist/node_modules/ajv/lib/dotjs/allOf.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/anyOf.js +83 -0
- package/dist/node_modules/ajv/lib/dotjs/anyOf.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/comment.js +24 -0
- package/dist/node_modules/ajv/lib/dotjs/comment.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/const.js +62 -0
- package/dist/node_modules/ajv/lib/dotjs/const.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/contains.js +91 -0
- package/dist/node_modules/ajv/lib/dotjs/contains.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/custom.js +238 -0
- package/dist/node_modules/ajv/lib/dotjs/custom.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/dependencies.js +178 -0
- package/dist/node_modules/ajv/lib/dotjs/dependencies.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/enum.js +72 -0
- package/dist/node_modules/ajv/lib/dotjs/enum.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/format.js +160 -0
- package/dist/node_modules/ajv/lib/dotjs/format.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/if.js +113 -0
- package/dist/node_modules/ajv/lib/dotjs/if.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/index.js +68 -0
- package/dist/node_modules/ajv/lib/dotjs/index.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/items.js +150 -0
- package/dist/node_modules/ajv/lib/dotjs/items.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/multipleOf.js +90 -0
- package/dist/node_modules/ajv/lib/dotjs/multipleOf.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/not.js +94 -0
- package/dist/node_modules/ajv/lib/dotjs/not.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/oneOf.js +83 -0
- package/dist/node_modules/ajv/lib/dotjs/oneOf.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/pattern.js +85 -0
- package/dist/node_modules/ajv/lib/dotjs/pattern.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/properties.js +345 -0
- package/dist/node_modules/ajv/lib/dotjs/properties.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/propertyNames.js +91 -0
- package/dist/node_modules/ajv/lib/dotjs/propertyNames.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/ref.js +134 -0
- package/dist/node_modules/ajv/lib/dotjs/ref.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/required.js +276 -0
- package/dist/node_modules/ajv/lib/dotjs/required.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/uniqueItems.js +96 -0
- package/dist/node_modules/ajv/lib/dotjs/uniqueItems.js.map +1 -0
- package/dist/node_modules/ajv/lib/dotjs/validate.js +492 -0
- package/dist/node_modules/ajv/lib/dotjs/validate.js.map +1 -0
- package/dist/node_modules/ajv/lib/keyword.js +159 -0
- package/dist/node_modules/ajv/lib/keyword.js.map +1 -0
- package/dist/node_modules/ajv/lib/refs/data.json.js +33 -0
- package/dist/node_modules/ajv/lib/refs/data.json.js.map +1 -0
- package/dist/node_modules/ajv/lib/refs/json-schema-draft-07.json.js +254 -0
- package/dist/node_modules/ajv/lib/refs/json-schema-draft-07.json.js.map +1 -0
- package/dist/node_modules/eventsource-parser/dist/index.js +104 -0
- package/dist/node_modules/eventsource-parser/dist/index.js.map +1 -0
- package/dist/node_modules/eventsource-parser/dist/stream.js +28 -0
- package/dist/node_modules/eventsource-parser/dist/stream.js.map +1 -0
- package/dist/node_modules/fast-deep-equal/index.js +56 -0
- package/dist/node_modules/fast-deep-equal/index.js.map +1 -0
- package/dist/node_modules/fast-json-stable-stringify/index.js +69 -0
- package/dist/node_modules/fast-json-stable-stringify/index.js.map +1 -0
- package/dist/node_modules/json-schema-traverse/index.js +100 -0
- package/dist/node_modules/json-schema-traverse/index.js.map +1 -0
- package/dist/node_modules/pkce-challenge/dist/index.browser.js +66 -0
- package/dist/node_modules/pkce-challenge/dist/index.browser.js.map +1 -0
- package/dist/node_modules/uri-js/dist/es5/uri.all.js +1418 -0
- package/dist/node_modules/uri-js/dist/es5/uri.all.js.map +1 -0
- package/dist/node_modules/zod/v3/ZodError.js +133 -0
- package/dist/node_modules/zod/v3/ZodError.js.map +1 -0
- package/dist/node_modules/zod/v3/errors.js +9 -0
- package/dist/node_modules/zod/v3/errors.js.map +1 -0
- package/dist/node_modules/zod/v3/helpers/errorUtil.js +9 -0
- package/dist/node_modules/zod/v3/helpers/errorUtil.js.map +1 -0
- package/dist/node_modules/zod/v3/helpers/parseUtil.js +112 -0
- package/dist/node_modules/zod/v3/helpers/parseUtil.js.map +1 -0
- package/dist/node_modules/zod/v3/helpers/util.js +136 -0
- package/dist/node_modules/zod/v3/helpers/util.js.map +1 -0
- package/dist/node_modules/zod/v3/locales/en.js +112 -0
- package/dist/node_modules/zod/v3/locales/en.js.map +1 -0
- package/dist/node_modules/zod/v3/types.js +3491 -0
- package/dist/node_modules/zod/v3/types.js.map +1 -0
- package/dist/oAuth.js +7 -6
- package/dist/oAuth.js.map +1 -1
- package/dist/solanaAccount.js +7 -4
- package/dist/solanaAccount.js.map +1 -1
- package/dist/solanaPaymentMaker.js +13 -11
- package/dist/solanaPaymentMaker.js.map +1 -1
- package/dist/types.js +5 -3
- package/dist/types.js.map +1 -1
- package/package.json +26 -10
- package/dist/atxpAccount.d.ts +0 -13
- package/dist/atxpAccount.d.ts.map +0 -1
- package/dist/atxpClient.d.ts +0 -14
- package/dist/atxpClient.d.ts.map +0 -1
- package/dist/atxpFetcher.d.ts +0 -72
- package/dist/atxpFetcher.d.ts.map +0 -1
- package/dist/baseAccount.d.ts +0 -10
- package/dist/baseAccount.d.ts.map +0 -1
- package/dist/basePaymentMaker.d.ts +0 -16
- package/dist/basePaymentMaker.d.ts.map +0 -1
- package/dist/clientTestHelpers.d.ts +0 -6
- package/dist/clientTestHelpers.d.ts.map +0 -1
- package/dist/clientTestHelpers.js +0 -94
- package/dist/clientTestHelpers.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/oAuth.d.ts +0 -44
- package/dist/oAuth.d.ts.map +0 -1
- package/dist/setup.expo.d.ts +0 -2
- package/dist/setup.expo.d.ts.map +0 -1
- package/dist/setup.expo.js +0 -30
- package/dist/setup.expo.js.map +0 -1
- package/dist/solanaAccount.d.ts +0 -9
- package/dist/solanaAccount.d.ts.map +0 -1
- package/dist/solanaPaymentMaker.d.ts +0 -18
- package/dist/solanaPaymentMaker.d.ts.map +0 -1
- package/dist/types.d.ts +0 -70
- package/dist/types.d.ts.map +0 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for handling OAuth resource URIs.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Converts a server URL to a resource URL by removing the fragment.
|
|
6
|
+
* RFC 8707 section 2 states that resource URIs "MUST NOT include a fragment component".
|
|
7
|
+
* Keeps everything else unchanged (scheme, domain, port, path, query).
|
|
8
|
+
*/
|
|
9
|
+
function resourceUrlFromServerUrl(url) {
|
|
10
|
+
const resourceURL = typeof url === "string" ? new URL(url) : new URL(url.href);
|
|
11
|
+
resourceURL.hash = ''; // Remove fragment
|
|
12
|
+
return resourceURL;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Checks if a requested resource URL matches a configured resource URL.
|
|
16
|
+
* A requested resource matches if it has the same scheme, domain, port,
|
|
17
|
+
* and its path starts with the configured resource's path.
|
|
18
|
+
*
|
|
19
|
+
* @param requestedResource The resource URL being requested
|
|
20
|
+
* @param configuredResource The resource URL that has been configured
|
|
21
|
+
* @returns true if the requested resource matches the configured resource, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
function checkResourceAllowed({ requestedResource, configuredResource }) {
|
|
24
|
+
const requested = typeof requestedResource === "string" ? new URL(requestedResource) : new URL(requestedResource.href);
|
|
25
|
+
const configured = typeof configuredResource === "string" ? new URL(configuredResource) : new URL(configuredResource.href);
|
|
26
|
+
// Compare the origin (scheme, domain, and port)
|
|
27
|
+
if (requested.origin !== configured.origin) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
// Handle cases like requested=/foo and configured=/foo/
|
|
31
|
+
if (requested.pathname.length < configured.pathname.length) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
// Check if the requested path starts with the configured path
|
|
35
|
+
// Ensure both paths end with / for proper comparison
|
|
36
|
+
// This ensures that if we have paths like "/api" and "/api/users",
|
|
37
|
+
// we properly detect that "/api/users" is a subpath of "/api"
|
|
38
|
+
// By adding a trailing slash if missing, we avoid false positives
|
|
39
|
+
// where paths like "/api123" would incorrectly match "/api"
|
|
40
|
+
const requestedPath = requested.pathname.endsWith('/') ? requested.pathname : requested.pathname + '/';
|
|
41
|
+
const configuredPath = configured.pathname.endsWith('/') ? configured.pathname : configured.pathname + '/';
|
|
42
|
+
return requestedPath.startsWith(configuredPath);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { checkResourceAllowed, resourceUrlFromServerUrl };
|
|
46
|
+
//# sourceMappingURL=auth-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-utils.js","sources":["../../../../../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth-utils.js"],"sourcesContent":["/**\n * Utilities for handling OAuth resource URIs.\n */\n/**\n * Converts a server URL to a resource URL by removing the fragment.\n * RFC 8707 section 2 states that resource URIs \"MUST NOT include a fragment component\".\n * Keeps everything else unchanged (scheme, domain, port, path, query).\n */\nexport function resourceUrlFromServerUrl(url) {\n const resourceURL = typeof url === \"string\" ? new URL(url) : new URL(url.href);\n resourceURL.hash = ''; // Remove fragment\n return resourceURL;\n}\n/**\n * Checks if a requested resource URL matches a configured resource URL.\n * A requested resource matches if it has the same scheme, domain, port,\n * and its path starts with the configured resource's path.\n *\n * @param requestedResource The resource URL being requested\n * @param configuredResource The resource URL that has been configured\n * @returns true if the requested resource matches the configured resource, false otherwise\n */\nexport function checkResourceAllowed({ requestedResource, configuredResource }) {\n const requested = typeof requestedResource === \"string\" ? new URL(requestedResource) : new URL(requestedResource.href);\n const configured = typeof configuredResource === \"string\" ? new URL(configuredResource) : new URL(configuredResource.href);\n // Compare the origin (scheme, domain, and port)\n if (requested.origin !== configured.origin) {\n return false;\n }\n // Handle cases like requested=/foo and configured=/foo/\n if (requested.pathname.length < configured.pathname.length) {\n return false;\n }\n // Check if the requested path starts with the configured path\n // Ensure both paths end with / for proper comparison\n // This ensures that if we have paths like \"/api\" and \"/api/users\",\n // we properly detect that \"/api/users\" is a subpath of \"/api\"\n // By adding a trailing slash if missing, we avoid false positives\n // where paths like \"/api123\" would incorrectly match \"/api\"\n const requestedPath = requested.pathname.endsWith('/') ? requested.pathname : requested.pathname + '/';\n const configuredPath = configured.pathname.endsWith('/') ? configured.pathname : configured.pathname + '/';\n return requestedPath.startsWith(configuredPath);\n}\n//# sourceMappingURL=auth-utils.js.map"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,wBAAwB,CAAC,GAAG,EAAE;AAC9C,IAAI,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAClF,IAAI,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;AAC1B,IAAI,OAAO,WAAW;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,EAAE;AAChF,IAAI,MAAM,SAAS,GAAG,OAAO,iBAAiB,KAAK,QAAQ,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC;AAC1H,IAAI,MAAM,UAAU,GAAG,OAAO,kBAAkB,KAAK,QAAQ,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC;AAC9H;AACA,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;AAChD,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE;AAChE,QAAQ,OAAO,KAAK;AACpB,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,GAAG,GAAG;AAC1G,IAAI,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,GAAG;AAC9G,IAAI,OAAO,aAAa,CAAC,UAAU,CAAC,cAAc,CAAC;AACnD;;;;","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { string as stringType, NEVER, object as objectType, boolean as booleanType, array as arrayType, number as numberType, any as anyType } from '../../../../../zod/v3/types.js';
|
|
2
|
+
import { ZodIssueCode } from '../../../../../zod/v3/ZodError.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Reusable URL validation that disallows javascript: scheme
|
|
6
|
+
*/
|
|
7
|
+
const SafeUrlSchema = stringType().url()
|
|
8
|
+
.superRefine((val, ctx) => {
|
|
9
|
+
if (!URL.canParse(val)) {
|
|
10
|
+
ctx.addIssue({
|
|
11
|
+
code: ZodIssueCode.custom,
|
|
12
|
+
message: "URL must be parseable",
|
|
13
|
+
fatal: true,
|
|
14
|
+
});
|
|
15
|
+
return NEVER;
|
|
16
|
+
}
|
|
17
|
+
}).refine((url) => {
|
|
18
|
+
const u = new URL(url);
|
|
19
|
+
return u.protocol !== 'javascript:' && u.protocol !== 'data:' && u.protocol !== 'vbscript:';
|
|
20
|
+
}, { message: "URL cannot use javascript:, data:, or vbscript: scheme" });
|
|
21
|
+
/**
|
|
22
|
+
* RFC 9728 OAuth Protected Resource Metadata
|
|
23
|
+
*/
|
|
24
|
+
const OAuthProtectedResourceMetadataSchema = objectType({
|
|
25
|
+
resource: stringType().url(),
|
|
26
|
+
authorization_servers: arrayType(SafeUrlSchema).optional(),
|
|
27
|
+
jwks_uri: stringType().url().optional(),
|
|
28
|
+
scopes_supported: arrayType(stringType()).optional(),
|
|
29
|
+
bearer_methods_supported: arrayType(stringType()).optional(),
|
|
30
|
+
resource_signing_alg_values_supported: arrayType(stringType()).optional(),
|
|
31
|
+
resource_name: stringType().optional(),
|
|
32
|
+
resource_documentation: stringType().optional(),
|
|
33
|
+
resource_policy_uri: stringType().url().optional(),
|
|
34
|
+
resource_tos_uri: stringType().url().optional(),
|
|
35
|
+
tls_client_certificate_bound_access_tokens: booleanType().optional(),
|
|
36
|
+
authorization_details_types_supported: arrayType(stringType()).optional(),
|
|
37
|
+
dpop_signing_alg_values_supported: arrayType(stringType()).optional(),
|
|
38
|
+
dpop_bound_access_tokens_required: booleanType().optional(),
|
|
39
|
+
})
|
|
40
|
+
.passthrough();
|
|
41
|
+
/**
|
|
42
|
+
* RFC 8414 OAuth 2.0 Authorization Server Metadata
|
|
43
|
+
*/
|
|
44
|
+
const OAuthMetadataSchema = objectType({
|
|
45
|
+
issuer: stringType(),
|
|
46
|
+
authorization_endpoint: SafeUrlSchema,
|
|
47
|
+
token_endpoint: SafeUrlSchema,
|
|
48
|
+
registration_endpoint: SafeUrlSchema.optional(),
|
|
49
|
+
scopes_supported: arrayType(stringType()).optional(),
|
|
50
|
+
response_types_supported: arrayType(stringType()),
|
|
51
|
+
response_modes_supported: arrayType(stringType()).optional(),
|
|
52
|
+
grant_types_supported: arrayType(stringType()).optional(),
|
|
53
|
+
token_endpoint_auth_methods_supported: arrayType(stringType()).optional(),
|
|
54
|
+
token_endpoint_auth_signing_alg_values_supported: arrayType(stringType())
|
|
55
|
+
.optional(),
|
|
56
|
+
service_documentation: SafeUrlSchema.optional(),
|
|
57
|
+
revocation_endpoint: SafeUrlSchema.optional(),
|
|
58
|
+
revocation_endpoint_auth_methods_supported: arrayType(stringType()).optional(),
|
|
59
|
+
revocation_endpoint_auth_signing_alg_values_supported: arrayType(stringType())
|
|
60
|
+
.optional(),
|
|
61
|
+
introspection_endpoint: stringType().optional(),
|
|
62
|
+
introspection_endpoint_auth_methods_supported: arrayType(stringType())
|
|
63
|
+
.optional(),
|
|
64
|
+
introspection_endpoint_auth_signing_alg_values_supported: arrayType(stringType())
|
|
65
|
+
.optional(),
|
|
66
|
+
code_challenge_methods_supported: arrayType(stringType()).optional(),
|
|
67
|
+
})
|
|
68
|
+
.passthrough();
|
|
69
|
+
/**
|
|
70
|
+
* OpenID Connect Discovery 1.0 Provider Metadata
|
|
71
|
+
* see: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
|
|
72
|
+
*/
|
|
73
|
+
const OpenIdProviderMetadataSchema = objectType({
|
|
74
|
+
issuer: stringType(),
|
|
75
|
+
authorization_endpoint: SafeUrlSchema,
|
|
76
|
+
token_endpoint: SafeUrlSchema,
|
|
77
|
+
userinfo_endpoint: SafeUrlSchema.optional(),
|
|
78
|
+
jwks_uri: SafeUrlSchema,
|
|
79
|
+
registration_endpoint: SafeUrlSchema.optional(),
|
|
80
|
+
scopes_supported: arrayType(stringType()).optional(),
|
|
81
|
+
response_types_supported: arrayType(stringType()),
|
|
82
|
+
response_modes_supported: arrayType(stringType()).optional(),
|
|
83
|
+
grant_types_supported: arrayType(stringType()).optional(),
|
|
84
|
+
acr_values_supported: arrayType(stringType()).optional(),
|
|
85
|
+
subject_types_supported: arrayType(stringType()),
|
|
86
|
+
id_token_signing_alg_values_supported: arrayType(stringType()),
|
|
87
|
+
id_token_encryption_alg_values_supported: arrayType(stringType()).optional(),
|
|
88
|
+
id_token_encryption_enc_values_supported: arrayType(stringType()).optional(),
|
|
89
|
+
userinfo_signing_alg_values_supported: arrayType(stringType()).optional(),
|
|
90
|
+
userinfo_encryption_alg_values_supported: arrayType(stringType()).optional(),
|
|
91
|
+
userinfo_encryption_enc_values_supported: arrayType(stringType()).optional(),
|
|
92
|
+
request_object_signing_alg_values_supported: arrayType(stringType()).optional(),
|
|
93
|
+
request_object_encryption_alg_values_supported: arrayType(stringType())
|
|
94
|
+
.optional(),
|
|
95
|
+
request_object_encryption_enc_values_supported: arrayType(stringType())
|
|
96
|
+
.optional(),
|
|
97
|
+
token_endpoint_auth_methods_supported: arrayType(stringType()).optional(),
|
|
98
|
+
token_endpoint_auth_signing_alg_values_supported: arrayType(stringType())
|
|
99
|
+
.optional(),
|
|
100
|
+
display_values_supported: arrayType(stringType()).optional(),
|
|
101
|
+
claim_types_supported: arrayType(stringType()).optional(),
|
|
102
|
+
claims_supported: arrayType(stringType()).optional(),
|
|
103
|
+
service_documentation: stringType().optional(),
|
|
104
|
+
claims_locales_supported: arrayType(stringType()).optional(),
|
|
105
|
+
ui_locales_supported: arrayType(stringType()).optional(),
|
|
106
|
+
claims_parameter_supported: booleanType().optional(),
|
|
107
|
+
request_parameter_supported: booleanType().optional(),
|
|
108
|
+
request_uri_parameter_supported: booleanType().optional(),
|
|
109
|
+
require_request_uri_registration: booleanType().optional(),
|
|
110
|
+
op_policy_uri: SafeUrlSchema.optional(),
|
|
111
|
+
op_tos_uri: SafeUrlSchema.optional(),
|
|
112
|
+
})
|
|
113
|
+
.passthrough();
|
|
114
|
+
/**
|
|
115
|
+
* OpenID Connect Discovery metadata that may include OAuth 2.0 fields
|
|
116
|
+
* This schema represents the real-world scenario where OIDC providers
|
|
117
|
+
* return a mix of OpenID Connect and OAuth 2.0 metadata fields
|
|
118
|
+
*/
|
|
119
|
+
const OpenIdProviderDiscoveryMetadataSchema = OpenIdProviderMetadataSchema.merge(OAuthMetadataSchema.pick({
|
|
120
|
+
code_challenge_methods_supported: true,
|
|
121
|
+
}));
|
|
122
|
+
/**
|
|
123
|
+
* OAuth 2.1 token response
|
|
124
|
+
*/
|
|
125
|
+
const OAuthTokensSchema = objectType({
|
|
126
|
+
access_token: stringType(),
|
|
127
|
+
id_token: stringType().optional(), // Optional for OAuth 2.1, but necessary in OpenID Connect
|
|
128
|
+
token_type: stringType(),
|
|
129
|
+
expires_in: numberType().optional(),
|
|
130
|
+
scope: stringType().optional(),
|
|
131
|
+
refresh_token: stringType().optional(),
|
|
132
|
+
})
|
|
133
|
+
.strip();
|
|
134
|
+
/**
|
|
135
|
+
* OAuth 2.1 error response
|
|
136
|
+
*/
|
|
137
|
+
const OAuthErrorResponseSchema = objectType({
|
|
138
|
+
error: stringType(),
|
|
139
|
+
error_description: stringType().optional(),
|
|
140
|
+
error_uri: stringType().optional(),
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* RFC 7591 OAuth 2.0 Dynamic Client Registration metadata
|
|
144
|
+
*/
|
|
145
|
+
const OAuthClientMetadataSchema = objectType({
|
|
146
|
+
redirect_uris: arrayType(SafeUrlSchema),
|
|
147
|
+
token_endpoint_auth_method: stringType().optional(),
|
|
148
|
+
grant_types: arrayType(stringType()).optional(),
|
|
149
|
+
response_types: arrayType(stringType()).optional(),
|
|
150
|
+
client_name: stringType().optional(),
|
|
151
|
+
client_uri: SafeUrlSchema.optional(),
|
|
152
|
+
logo_uri: SafeUrlSchema.optional(),
|
|
153
|
+
scope: stringType().optional(),
|
|
154
|
+
contacts: arrayType(stringType()).optional(),
|
|
155
|
+
tos_uri: SafeUrlSchema.optional(),
|
|
156
|
+
policy_uri: stringType().optional(),
|
|
157
|
+
jwks_uri: SafeUrlSchema.optional(),
|
|
158
|
+
jwks: anyType().optional(),
|
|
159
|
+
software_id: stringType().optional(),
|
|
160
|
+
software_version: stringType().optional(),
|
|
161
|
+
software_statement: stringType().optional(),
|
|
162
|
+
}).strip();
|
|
163
|
+
/**
|
|
164
|
+
* RFC 7591 OAuth 2.0 Dynamic Client Registration client information
|
|
165
|
+
*/
|
|
166
|
+
const OAuthClientInformationSchema = objectType({
|
|
167
|
+
client_id: stringType(),
|
|
168
|
+
client_secret: stringType().optional(),
|
|
169
|
+
client_id_issued_at: numberType().optional(),
|
|
170
|
+
client_secret_expires_at: numberType().optional(),
|
|
171
|
+
}).strip();
|
|
172
|
+
/**
|
|
173
|
+
* RFC 7591 OAuth 2.0 Dynamic Client Registration full response (client information plus metadata)
|
|
174
|
+
*/
|
|
175
|
+
const OAuthClientInformationFullSchema = OAuthClientMetadataSchema.merge(OAuthClientInformationSchema);
|
|
176
|
+
/**
|
|
177
|
+
* RFC 7591 OAuth 2.0 Dynamic Client Registration error response
|
|
178
|
+
*/
|
|
179
|
+
objectType({
|
|
180
|
+
error: stringType(),
|
|
181
|
+
error_description: stringType().optional(),
|
|
182
|
+
}).strip();
|
|
183
|
+
/**
|
|
184
|
+
* RFC 7009 OAuth 2.0 Token Revocation request
|
|
185
|
+
*/
|
|
186
|
+
objectType({
|
|
187
|
+
token: stringType(),
|
|
188
|
+
token_type_hint: stringType().optional(),
|
|
189
|
+
}).strip();
|
|
190
|
+
|
|
191
|
+
export { OAuthClientInformationFullSchema, OAuthClientInformationSchema, OAuthClientMetadataSchema, OAuthErrorResponseSchema, OAuthMetadataSchema, OAuthProtectedResourceMetadataSchema, OAuthTokensSchema, OpenIdProviderDiscoveryMetadataSchema, OpenIdProviderMetadataSchema, SafeUrlSchema };
|
|
192
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sources":["../../../../../../../../../node_modules/@modelcontextprotocol/sdk/dist/esm/shared/auth.js"],"sourcesContent":["import { z } from \"zod\";\n/**\n * Reusable URL validation that disallows javascript: scheme\n */\nexport const SafeUrlSchema = z.string().url()\n .superRefine((val, ctx) => {\n if (!URL.canParse(val)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"URL must be parseable\",\n fatal: true,\n });\n return z.NEVER;\n }\n}).refine((url) => {\n const u = new URL(url);\n return u.protocol !== 'javascript:' && u.protocol !== 'data:' && u.protocol !== 'vbscript:';\n}, { message: \"URL cannot use javascript:, data:, or vbscript: scheme\" });\n/**\n * RFC 9728 OAuth Protected Resource Metadata\n */\nexport const OAuthProtectedResourceMetadataSchema = z\n .object({\n resource: z.string().url(),\n authorization_servers: z.array(SafeUrlSchema).optional(),\n jwks_uri: z.string().url().optional(),\n scopes_supported: z.array(z.string()).optional(),\n bearer_methods_supported: z.array(z.string()).optional(),\n resource_signing_alg_values_supported: z.array(z.string()).optional(),\n resource_name: z.string().optional(),\n resource_documentation: z.string().optional(),\n resource_policy_uri: z.string().url().optional(),\n resource_tos_uri: z.string().url().optional(),\n tls_client_certificate_bound_access_tokens: z.boolean().optional(),\n authorization_details_types_supported: z.array(z.string()).optional(),\n dpop_signing_alg_values_supported: z.array(z.string()).optional(),\n dpop_bound_access_tokens_required: z.boolean().optional(),\n})\n .passthrough();\n/**\n * RFC 8414 OAuth 2.0 Authorization Server Metadata\n */\nexport const OAuthMetadataSchema = z\n .object({\n issuer: z.string(),\n authorization_endpoint: SafeUrlSchema,\n token_endpoint: SafeUrlSchema,\n registration_endpoint: SafeUrlSchema.optional(),\n scopes_supported: z.array(z.string()).optional(),\n response_types_supported: z.array(z.string()),\n response_modes_supported: z.array(z.string()).optional(),\n grant_types_supported: z.array(z.string()).optional(),\n token_endpoint_auth_methods_supported: z.array(z.string()).optional(),\n token_endpoint_auth_signing_alg_values_supported: z\n .array(z.string())\n .optional(),\n service_documentation: SafeUrlSchema.optional(),\n revocation_endpoint: SafeUrlSchema.optional(),\n revocation_endpoint_auth_methods_supported: z.array(z.string()).optional(),\n revocation_endpoint_auth_signing_alg_values_supported: z\n .array(z.string())\n .optional(),\n introspection_endpoint: z.string().optional(),\n introspection_endpoint_auth_methods_supported: z\n .array(z.string())\n .optional(),\n introspection_endpoint_auth_signing_alg_values_supported: z\n .array(z.string())\n .optional(),\n code_challenge_methods_supported: z.array(z.string()).optional(),\n})\n .passthrough();\n/**\n * OpenID Connect Discovery 1.0 Provider Metadata\n * see: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata\n */\nexport const OpenIdProviderMetadataSchema = z\n .object({\n issuer: z.string(),\n authorization_endpoint: SafeUrlSchema,\n token_endpoint: SafeUrlSchema,\n userinfo_endpoint: SafeUrlSchema.optional(),\n jwks_uri: SafeUrlSchema,\n registration_endpoint: SafeUrlSchema.optional(),\n scopes_supported: z.array(z.string()).optional(),\n response_types_supported: z.array(z.string()),\n response_modes_supported: z.array(z.string()).optional(),\n grant_types_supported: z.array(z.string()).optional(),\n acr_values_supported: z.array(z.string()).optional(),\n subject_types_supported: z.array(z.string()),\n id_token_signing_alg_values_supported: z.array(z.string()),\n id_token_encryption_alg_values_supported: z.array(z.string()).optional(),\n id_token_encryption_enc_values_supported: z.array(z.string()).optional(),\n userinfo_signing_alg_values_supported: z.array(z.string()).optional(),\n userinfo_encryption_alg_values_supported: z.array(z.string()).optional(),\n userinfo_encryption_enc_values_supported: z.array(z.string()).optional(),\n request_object_signing_alg_values_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 token_endpoint_auth_methods_supported: z.array(z.string()).optional(),\n token_endpoint_auth_signing_alg_values_supported: z\n .array(z.string())\n .optional(),\n display_values_supported: z.array(z.string()).optional(),\n claim_types_supported: z.array(z.string()).optional(),\n claims_supported: z.array(z.string()).optional(),\n service_documentation: z.string().optional(),\n claims_locales_supported: z.array(z.string()).optional(),\n ui_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 op_policy_uri: SafeUrlSchema.optional(),\n op_tos_uri: SafeUrlSchema.optional(),\n})\n .passthrough();\n/**\n * OpenID Connect Discovery metadata that may include OAuth 2.0 fields\n * This schema represents the real-world scenario where OIDC providers\n * return a mix of OpenID Connect and OAuth 2.0 metadata fields\n */\nexport const OpenIdProviderDiscoveryMetadataSchema = OpenIdProviderMetadataSchema.merge(OAuthMetadataSchema.pick({\n code_challenge_methods_supported: true,\n}));\n/**\n * OAuth 2.1 token response\n */\nexport const OAuthTokensSchema = z\n .object({\n access_token: z.string(),\n id_token: z.string().optional(), // Optional for OAuth 2.1, but necessary in OpenID Connect\n token_type: z.string(),\n expires_in: z.number().optional(),\n scope: z.string().optional(),\n refresh_token: z.string().optional(),\n})\n .strip();\n/**\n * OAuth 2.1 error response\n */\nexport const OAuthErrorResponseSchema = z\n .object({\n error: z.string(),\n error_description: z.string().optional(),\n error_uri: z.string().optional(),\n});\n/**\n * RFC 7591 OAuth 2.0 Dynamic Client Registration metadata\n */\nexport const OAuthClientMetadataSchema = z.object({\n redirect_uris: z.array(SafeUrlSchema),\n token_endpoint_auth_method: z.string().optional(),\n grant_types: z.array(z.string()).optional(),\n response_types: z.array(z.string()).optional(),\n client_name: z.string().optional(),\n client_uri: SafeUrlSchema.optional(),\n logo_uri: SafeUrlSchema.optional(),\n scope: z.string().optional(),\n contacts: z.array(z.string()).optional(),\n tos_uri: SafeUrlSchema.optional(),\n policy_uri: z.string().optional(),\n jwks_uri: SafeUrlSchema.optional(),\n jwks: z.any().optional(),\n software_id: z.string().optional(),\n software_version: z.string().optional(),\n software_statement: z.string().optional(),\n}).strip();\n/**\n * RFC 7591 OAuth 2.0 Dynamic Client Registration client information\n */\nexport const OAuthClientInformationSchema = z.object({\n client_id: z.string(),\n client_secret: z.string().optional(),\n client_id_issued_at: z.number().optional(),\n client_secret_expires_at: z.number().optional(),\n}).strip();\n/**\n * RFC 7591 OAuth 2.0 Dynamic Client Registration full response (client information plus metadata)\n */\nexport const OAuthClientInformationFullSchema = OAuthClientMetadataSchema.merge(OAuthClientInformationSchema);\n/**\n * RFC 7591 OAuth 2.0 Dynamic Client Registration error response\n */\nexport const OAuthClientRegistrationErrorSchema = z.object({\n error: z.string(),\n error_description: z.string().optional(),\n}).strip();\n/**\n * RFC 7009 OAuth 2.0 Token Revocation request\n */\nexport const OAuthTokenRevocationRequestSchema = z.object({\n token: z.string(),\n token_type_hint: z.string().optional(),\n}).strip();\n//# sourceMappingURL=auth.js.map"],"names":["z.string","z.ZodIssueCode","z.NEVER","z\n .object","z.array","z.boolean","z\n .array","z.number","z.object","z.any"],"mappings":"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","x_google_ignoreList":[0]}
|