@mcp-z/client 2.2.0 → 2.2.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/dist/cjs/auth/discovery-fetch.d.cts +22 -2
- package/dist/cjs/auth/discovery-fetch.d.ts +22 -2
- package/dist/cjs/auth/discovery-fetch.js +440 -124
- package/dist/cjs/auth/discovery-fetch.js.map +1 -1
- package/dist/esm/auth/discovery-fetch.d.ts +22 -2
- package/dist/esm/auth/discovery-fetch.js +234 -54
- package/dist/esm/auth/discovery-fetch.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
export declare class DiscoveryFetchError extends Error {
|
|
2
2
|
constructor(message: string);
|
|
3
3
|
}
|
|
4
|
+
type LookupRecord = {
|
|
5
|
+
address: string;
|
|
6
|
+
family: number;
|
|
7
|
+
};
|
|
8
|
+
/** DNS implementation, injectable for deterministic tests. Same contract as `dns.lookup` with `{ all: true, verbatim: true }`. */
|
|
9
|
+
type Lookup = (hostname: string, options: {
|
|
10
|
+
all: true;
|
|
11
|
+
verbatim: true;
|
|
12
|
+
}, callback: (error: NodeJS.ErrnoException | null, addresses: LookupRecord[]) => void) => void;
|
|
4
13
|
/**
|
|
5
14
|
* True if `rawUrl`'s host is loopback, used to decide `allowLoopback` grants
|
|
6
15
|
* from the URL the caller configured, not remote-supplied data. Fails closed on an unparseable URL.
|
|
@@ -13,15 +22,25 @@ export interface DiscoveryFetchOptions {
|
|
|
13
22
|
*/
|
|
14
23
|
allowLoopback?: boolean;
|
|
15
24
|
/**
|
|
16
|
-
* Per-
|
|
17
|
-
* overridable so tests can bound slow-failure cases.
|
|
25
|
+
* Per-hop timeout in ms, applied to both the DNS resolution and the request.
|
|
26
|
+
* Defaults to `DEFAULT_TIMEOUT_MS`; overridable so tests can bound slow-failure cases.
|
|
18
27
|
*/
|
|
19
28
|
timeoutMs?: number;
|
|
29
|
+
/**
|
|
30
|
+
* DNS implementation used for the pre-request resolution, injectable for
|
|
31
|
+
* deterministic tests. Defaults to `dns.lookup`.
|
|
32
|
+
*/
|
|
33
|
+
lookup?: Lookup;
|
|
20
34
|
}
|
|
21
35
|
/**
|
|
22
36
|
* Fetches an OAuth-discovery URL with SSRF mitigations applied to the
|
|
23
37
|
* initial URL and every redirect hop; redirects are validated, not auto-followed.
|
|
24
38
|
*
|
|
39
|
+
* The hostname is resolved once, every returned address is validated, and the
|
|
40
|
+
* validated set is pinned into the request through a custom `lookup`, so the
|
|
41
|
+
* request cannot resolve the hostname a second time and cannot be steered to
|
|
42
|
+
* a different address by a DNS-rebinding answer.
|
|
43
|
+
*
|
|
25
44
|
* @param rawUrl - URL to fetch; may be remote-server-supplied (the threat this guards against).
|
|
26
45
|
* @param init - Standard fetch options; `redirect` is always forced to `'manual'`.
|
|
27
46
|
* @param context - Short label used only in error messages, never echoing the URL.
|
|
@@ -33,3 +52,4 @@ export declare function discoveryFetch(rawUrl: string, init?: RequestInit, conte
|
|
|
33
52
|
* while reading (not after buffering the whole thing).
|
|
34
53
|
*/
|
|
35
54
|
export declare function readDiscoveryJson<T>(response: Response, context: string): Promise<T>;
|
|
55
|
+
export {};
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
export declare class DiscoveryFetchError extends Error {
|
|
2
2
|
constructor(message: string);
|
|
3
3
|
}
|
|
4
|
+
type LookupRecord = {
|
|
5
|
+
address: string;
|
|
6
|
+
family: number;
|
|
7
|
+
};
|
|
8
|
+
/** DNS implementation, injectable for deterministic tests. Same contract as `dns.lookup` with `{ all: true, verbatim: true }`. */
|
|
9
|
+
type Lookup = (hostname: string, options: {
|
|
10
|
+
all: true;
|
|
11
|
+
verbatim: true;
|
|
12
|
+
}, callback: (error: NodeJS.ErrnoException | null, addresses: LookupRecord[]) => void) => void;
|
|
4
13
|
/**
|
|
5
14
|
* True if `rawUrl`'s host is loopback, used to decide `allowLoopback` grants
|
|
6
15
|
* from the URL the caller configured, not remote-supplied data. Fails closed on an unparseable URL.
|
|
@@ -13,15 +22,25 @@ export interface DiscoveryFetchOptions {
|
|
|
13
22
|
*/
|
|
14
23
|
allowLoopback?: boolean;
|
|
15
24
|
/**
|
|
16
|
-
* Per-
|
|
17
|
-
* overridable so tests can bound slow-failure cases.
|
|
25
|
+
* Per-hop timeout in ms, applied to both the DNS resolution and the request.
|
|
26
|
+
* Defaults to `DEFAULT_TIMEOUT_MS`; overridable so tests can bound slow-failure cases.
|
|
18
27
|
*/
|
|
19
28
|
timeoutMs?: number;
|
|
29
|
+
/**
|
|
30
|
+
* DNS implementation used for the pre-request resolution, injectable for
|
|
31
|
+
* deterministic tests. Defaults to `dns.lookup`.
|
|
32
|
+
*/
|
|
33
|
+
lookup?: Lookup;
|
|
20
34
|
}
|
|
21
35
|
/**
|
|
22
36
|
* Fetches an OAuth-discovery URL with SSRF mitigations applied to the
|
|
23
37
|
* initial URL and every redirect hop; redirects are validated, not auto-followed.
|
|
24
38
|
*
|
|
39
|
+
* The hostname is resolved once, every returned address is validated, and the
|
|
40
|
+
* validated set is pinned into the request through a custom `lookup`, so the
|
|
41
|
+
* request cannot resolve the hostname a second time and cannot be steered to
|
|
42
|
+
* a different address by a DNS-rebinding answer.
|
|
43
|
+
*
|
|
25
44
|
* @param rawUrl - URL to fetch; may be remote-server-supplied (the threat this guards against).
|
|
26
45
|
* @param init - Standard fetch options; `redirect` is always forced to `'manual'`.
|
|
27
46
|
* @param context - Short label used only in error messages, never echoing the URL.
|
|
@@ -33,3 +52,4 @@ export declare function discoveryFetch(rawUrl: string, init?: RequestInit, conte
|
|
|
33
52
|
* while reading (not after buffering the whole thing).
|
|
34
53
|
*/
|
|
35
54
|
export declare function readDiscoveryJson<T>(response: Response, context: string): Promise<T>;
|
|
55
|
+
export {};
|