@forestadmin/mcp-server 1.20.3 → 1.21.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/README.md +26 -0
- package/dist/cli.js +3 -1
- package/dist/forest-oauth-provider.d.ts +5 -1
- package/dist/forest-oauth-provider.js +42 -4
- package/dist/server.d.ts +6 -0
- package/dist/server.js +4 -1
- package/dist/utils/normalize-domain-list.d.ts +2 -0
- package/dist/utils/normalize-domain-list.js +31 -0
- package/dist/utils/parse-domain-list.d.ts +2 -0
- package/dist/utils/parse-domain-list.js +14 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -63,6 +63,7 @@ yarn start:dev # Development (loads .env file automatically)
|
|
|
63
63
|
| `FOREST_AUTH_SECRET` | **Yes** | - | Your Forest Admin authentication secret (must match your agent) |
|
|
64
64
|
| `MCP_SERVER_PORT` | No | `3931` | Port for the HTTP server |
|
|
65
65
|
| `FOREST_MCP_ENABLED_TOOLS` | No | - | Comma-separated list of tools to enable (allowlist) |
|
|
66
|
+
| `FOREST_MCP_ALLOWED_OAUTH_CLIENTS` | No | - | Comma-separated domains of the OAuth client applications allowed to connect (`allowedOAuthClients`). Unset, any registered client is accepted |
|
|
66
67
|
| `FOREST_AGENT_URL` | No | your environment's back-end URL | URL the MCP server uses to reach the back-end's data layer. Set it when the server runs next to a self-hosted back-end at an internal address (e.g. `http://localhost:3310`), instead of the public URL registered in Forest |
|
|
67
68
|
| `FOREST_MCP_ACCESS_TOKEN_TTL_SECONDS` | No | `3600` (1 hour) | Maximum lifetime of the OAuth access tokens the server issues (`tokenTtl.accessTokenSeconds`). Minimum `60` |
|
|
68
69
|
| `FOREST_MCP_REFRESH_TOKEN_TTL_SECONDS` | No | unbounded | Maximum time between two interactive logins (`tokenTtl.refreshTokenSeconds`). Unset, a client that keeps refreshing never signs in again. Minimum `60` |
|
|
@@ -111,6 +112,31 @@ When `enabledTools` is not set, all tools are enabled by default.
|
|
|
111
112
|
|
|
112
113
|
See [Available Tools](#available-tools) for the full list. `describeCollection` is always enabled as it is required for the MCP server to function properly.
|
|
113
114
|
|
|
115
|
+
## Restrict OAuth Clients
|
|
116
|
+
|
|
117
|
+
Any OAuth client can register against the MCP server through Dynamic Client Registration and, once one of your users signs in, obtain tokens. Use `allowedOAuthClients` to accept only approved client applications:
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// With Forest Admin Agent
|
|
121
|
+
agent.mountAiMcpServer({
|
|
122
|
+
allowedOAuthClients: ['dust.tt'],
|
|
123
|
+
});
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Standalone
|
|
128
|
+
export FOREST_MCP_ALLOWED_OAUTH_CLIENTS="dust.tt"
|
|
129
|
+
npx forest-mcp-server
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
A client is allowed only when **every** redirect URI it registered is an `http(s)` URI on a listed domain or one of its subdomains (`dust.tt` matches `eu.dust.tt`); custom schemes are rejected because they deliver the callback to whatever local application registered them, regardless of hostname. Matching uses redirect URIs because they are the one piece of registration metadata an impostor cannot benefit from — the authorization code is only ever delivered there. Self-declared fields such as the client name are ignored.
|
|
133
|
+
|
|
134
|
+
List bare domains only — unicode domains are matched through their punycode form. An entry with a scheme, port, path, or spaces fails at startup, as does a configured value containing no domains at all: the allowlist never silently falls back to accepting or rejecting everyone on a malformed configuration.
|
|
135
|
+
|
|
136
|
+
Every other client is rejected with a standard `invalid_client` error telling the user to contact their administrator; the response does not reveal the allowed domains. Registration itself still succeeds — it happens on the Forest Admin server — the client just cannot use it against this server. Access tokens issued before you enabled the option stay valid until they expire (1 hour at most); refreshes are blocked immediately.
|
|
137
|
+
|
|
138
|
+
Native desktop clients (Claude Desktop, MCP Inspector, ...) register loopback (`localhost`) redirect URIs, which a domain allowlist never matches — they are rejected unless you explicitly list `localhost`, which would admit **every** local application and defeats the restriction. Omit the option in environments that need native clients (e.g. development).
|
|
139
|
+
|
|
114
140
|
## Shorten Token Lifetimes
|
|
115
141
|
|
|
116
142
|
Forest grants **1 hour** (3600s) for an access token and **8 days** (691200s) for a refresh token — but it re-grants those 8 days on *every* refresh, so without `refreshTokenSeconds` a client that keeps working is never asked to sign in again.
|
package/dist/cli.js
CHANGED
|
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
const server_1 = __importDefault(require("./server"));
|
|
8
|
+
const parse_domain_list_1 = __importDefault(require("./utils/parse-domain-list"));
|
|
8
9
|
const parse_tool_list_1 = __importDefault(require("./utils/parse-tool-list"));
|
|
9
10
|
const toSeconds = (value) => (value === undefined ? undefined : Number(value));
|
|
10
11
|
// Start the server when run directly as CLI
|
|
@@ -14,6 +15,7 @@ const server = new server_1.default({
|
|
|
14
15
|
envSecret: process.env.FOREST_ENV_SECRET,
|
|
15
16
|
authSecret: process.env.FOREST_AUTH_SECRET,
|
|
16
17
|
enabledTools: (0, parse_tool_list_1.default)(process.env.FOREST_MCP_ENABLED_TOOLS),
|
|
18
|
+
allowedOAuthClients: (0, parse_domain_list_1.default)(process.env.FOREST_MCP_ALLOWED_OAUTH_CLIENTS),
|
|
17
19
|
agentUrl: process.env.FOREST_AGENT_URL,
|
|
18
20
|
// normalizeTokenTtl rejects NaN and non-positive values, so a bad variable fails at startup.
|
|
19
21
|
tokenTtl: {
|
|
@@ -25,4 +27,4 @@ server.run().catch(error => {
|
|
|
25
27
|
console.error('[FATAL] Server crashed:', error);
|
|
26
28
|
process.exit(1);
|
|
27
29
|
});
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxzREFBdUM7QUFDdkMsa0ZBQXdEO0FBQ3hELDhFQUFvRDtBQUVwRCxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBRXhGLDRDQUE0QztBQUM1QyxNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFlLENBQUM7SUFDakMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksNkJBQTZCO0lBQy9FLFlBQVksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSw2QkFBNkI7SUFDekUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCO0lBQ3hDLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtJQUMxQyxZQUFZLEVBQUUsSUFBQSx5QkFBYSxFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUM7SUFDakUsbUJBQW1CLEVBQUUsSUFBQSwyQkFBZSxFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLENBQUM7SUFDbEYsUUFBUSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO0lBQ3RDLDZGQUE2RjtJQUM3RixRQUFRLEVBQUU7UUFDUixrQkFBa0IsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQztRQUM5RSxtQkFBbUIsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQztLQUNqRjtDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDIn0=
|
|
@@ -13,6 +13,7 @@ export interface ForestOAuthProviderOptions {
|
|
|
13
13
|
logger: Logger;
|
|
14
14
|
agentUrl?: string;
|
|
15
15
|
tokenTtl?: TokenTtlOptions;
|
|
16
|
+
allowedOAuthClients?: string[];
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* OAuth Server Provider that integrates with Forest Admin authentication
|
|
@@ -27,9 +28,10 @@ export default class ForestOAuthProvider implements OAuthServerProvider {
|
|
|
27
28
|
private environmentApiEndpoint?;
|
|
28
29
|
private agentUrl?;
|
|
29
30
|
private tokenTtl?;
|
|
31
|
+
private allowedOAuthClients?;
|
|
30
32
|
private warnedAccessCapInert;
|
|
31
33
|
private logger;
|
|
32
|
-
constructor({ forestServerUrl, forestAppUrl, envSecret, authSecret, logger, agentUrl, tokenTtl, }: ForestOAuthProviderOptions);
|
|
34
|
+
constructor({ forestServerUrl, forestAppUrl, envSecret, authSecret, logger, agentUrl, tokenTtl, allowedOAuthClients, }: ForestOAuthProviderOptions);
|
|
33
35
|
initialize(): Promise<void>;
|
|
34
36
|
private fetchEnvironmentId;
|
|
35
37
|
/**
|
|
@@ -38,6 +40,8 @@ export default class ForestOAuthProvider implements OAuthServerProvider {
|
|
|
38
40
|
*/
|
|
39
41
|
getBaseUrl(): URL | undefined;
|
|
40
42
|
get clientsStore(): OAuthRegisteredClientsStore;
|
|
43
|
+
private assertClientIsAllowed;
|
|
44
|
+
private static isUriOnAllowedDomain;
|
|
41
45
|
authorize(client: OAuthClientInformationFull, params: AuthorizationParams, res: Response): Promise<void>;
|
|
42
46
|
challengeForAuthorizationCode(client: OAuthClientInformationFull, authorizationCode: string): Promise<string>;
|
|
43
47
|
exchangeAuthorizationCode(client: OAuthClientInformationFull, authorizationCode: string, codeVerifier?: string, redirectUri?: string): Promise<OAuthTokens>;
|
|
@@ -21,7 +21,7 @@ const DecodedRefreshTokenSchema = zod_1.z.object({
|
|
|
21
21
|
* OAuth Server Provider that integrates with Forest Admin authentication
|
|
22
22
|
*/
|
|
23
23
|
class ForestOAuthProvider {
|
|
24
|
-
constructor({ forestServerUrl, forestAppUrl, envSecret, authSecret, logger, agentUrl, tokenTtl, }) {
|
|
24
|
+
constructor({ forestServerUrl, forestAppUrl, envSecret, authSecret, logger, agentUrl, tokenTtl, allowedOAuthClients, }) {
|
|
25
25
|
this.warnedAccessCapInert = false;
|
|
26
26
|
// Skip PKCE validation to match original implementation
|
|
27
27
|
this.skipLocalPkceValidation = true;
|
|
@@ -32,6 +32,7 @@ class ForestOAuthProvider {
|
|
|
32
32
|
this.logger = logger;
|
|
33
33
|
this.agentUrl = agentUrl;
|
|
34
34
|
this.tokenTtl = tokenTtl;
|
|
35
|
+
this.allowedOAuthClients = allowedOAuthClients;
|
|
35
36
|
this.forestClient = (0, forestadmin_client_1.default)({
|
|
36
37
|
forestServerUrl: this.forestServerUrl,
|
|
37
38
|
envSecret: this.envSecret,
|
|
@@ -92,11 +93,48 @@ class ForestOAuthProvider {
|
|
|
92
93
|
console.error(`[ForestOAuthProvider] Failed to fetch client ${clientId}: ${response.status} ${response.statusText}`);
|
|
93
94
|
return undefined;
|
|
94
95
|
}
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
const client = (await response.json());
|
|
97
|
+
this.assertClientIsAllowed(client);
|
|
98
|
+
return client;
|
|
97
99
|
},
|
|
98
100
|
};
|
|
99
101
|
}
|
|
102
|
+
assertClientIsAllowed(client) {
|
|
103
|
+
const allowedDomains = this.allowedOAuthClients;
|
|
104
|
+
if (!allowedDomains)
|
|
105
|
+
return;
|
|
106
|
+
// every() over an empty list is vacuously true, so a registration without
|
|
107
|
+
// redirect URIs must be rejected explicitly rather than slip through.
|
|
108
|
+
const redirectUris = client.redirect_uris ?? [];
|
|
109
|
+
const isAllowed = redirectUris.length > 0 &&
|
|
110
|
+
redirectUris.every(uri => ForestOAuthProvider.isUriOnAllowedDomain(uri, allowedDomains));
|
|
111
|
+
if (isAllowed)
|
|
112
|
+
return;
|
|
113
|
+
this.logger('Info', `[ForestOAuthProvider] Rejected OAuth client ${client.client_id}: ` +
|
|
114
|
+
`redirect URIs [${redirectUris.join(', ')}] are not all on an allowed domain`);
|
|
115
|
+
// The description names no allowed domain on purpose; it is served to arbitrary clients.
|
|
116
|
+
throw new errors_js_1.InvalidClientError('This MCP server only accepts approved client applications. ' +
|
|
117
|
+
'Contact your Forest Admin administrator.');
|
|
118
|
+
}
|
|
119
|
+
static isUriOnAllowedDomain(redirectUri, allowedDomains) {
|
|
120
|
+
let hostname;
|
|
121
|
+
let protocol;
|
|
122
|
+
try {
|
|
123
|
+
// URL normalizes the host to lowercase punycode, closing case and homograph tricks.
|
|
124
|
+
({ hostname, protocol } = new URL(redirectUri));
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
// A custom scheme (attacker-app://dust.tt/cb) dispatches the callback to whatever
|
|
130
|
+
// application registered it, so its hostname says nothing about where the code lands.
|
|
131
|
+
if (protocol !== 'https:' && protocol !== 'http:')
|
|
132
|
+
return false;
|
|
133
|
+
return allowedDomains.some(domain => {
|
|
134
|
+
const allowedDomain = domain.toLowerCase();
|
|
135
|
+
return hostname === allowedDomain || hostname.endsWith(`.${allowedDomain}`);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
100
138
|
async authorize(client, params, res) {
|
|
101
139
|
try {
|
|
102
140
|
// Ensure environmentId is available
|
|
@@ -350,4 +388,4 @@ class ForestOAuthProvider {
|
|
|
350
388
|
}
|
|
351
389
|
}
|
|
352
390
|
exports.default = ForestOAuthProvider;
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LW9hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1vYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSx5RkFBc0U7QUFDdEUsK0VBUXlEO0FBQ3pELGdFQUF3QztBQUN4Qyw2QkFBd0I7QUFFeEIsaURBQTREO0FBRTVELE1BQU0seUJBQXlCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxJQUFJLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDMUIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdkIsa0JBQWtCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUM5QixnQkFBZ0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3ZDLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzNCLENBQUMsQ0FBQztBQW1CSDs7R0FFRztBQUNILE1BQXFCLG1CQUFtQjtJQWF0QyxZQUFZLEVBQ1YsZUFBZSxFQUNmLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxHQUNtQjtRQVhyQix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUEyZXJDLHdEQUF3RDtRQUN4RCw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFoZTdCLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUks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
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LW9hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1vYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSx5RkFBc0U7QUFDdEUsK0VBUXlEO0FBQ3pELGdFQUF3QztBQUN4Qyw2QkFBd0I7QUFFeEIsaURBQTREO0FBRTVELE1BQU0seUJBQXlCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxJQUFJLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDMUIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDcEIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDbEIsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdkIsa0JBQWtCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtJQUM5QixnQkFBZ0IsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3ZDLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzNCLENBQUMsQ0FBQztBQW9CSDs7R0FFRztBQUNILE1BQXFCLG1CQUFtQjtJQWN0QyxZQUFZLEVBQ1YsZUFBZSxFQUNmLFlBQVksRUFDWixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLG1CQUFtQixHQUNRO1FBWnJCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQWdpQnJDLHdEQUF3RDtRQUN4RCw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFwaEI3QixJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FB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
|
package/dist/server.d.ts
CHANGED
|
@@ -52,6 +52,11 @@ export interface ForestMCPServerOptions {
|
|
|
52
52
|
* logins. Minimum 60s for either.
|
|
53
53
|
*/
|
|
54
54
|
tokenTtl?: TokenTtlOptions;
|
|
55
|
+
/**
|
|
56
|
+
* Domains of the OAuth clients allowed to use this server, e.g. ['dust.tt']; subdomains match.
|
|
57
|
+
* Omit to accept any dynamically registered client.
|
|
58
|
+
*/
|
|
59
|
+
allowedOAuthClients?: string[];
|
|
55
60
|
}
|
|
56
61
|
/**
|
|
57
62
|
* Forest Admin MCP Server
|
|
@@ -74,6 +79,7 @@ export default class ForestMCPServer {
|
|
|
74
79
|
private agentUrl?;
|
|
75
80
|
private agentDispatcher?;
|
|
76
81
|
private tokenTtl?;
|
|
82
|
+
private allowedOAuthClients?;
|
|
77
83
|
constructor(options?: ForestMCPServerOptions);
|
|
78
84
|
private createDefaultForestServerClient;
|
|
79
85
|
private fetchCollectionNames;
|
package/dist/server.js
CHANGED
|
@@ -65,6 +65,7 @@ const list_1 = __importDefault(require("./tools/list"));
|
|
|
65
65
|
const list_related_1 = __importDefault(require("./tools/list-related"));
|
|
66
66
|
const update_1 = __importDefault(require("./tools/update"));
|
|
67
67
|
const normalize_agent_url_1 = __importDefault(require("./utils/normalize-agent-url"));
|
|
68
|
+
const normalize_domain_list_1 = __importDefault(require("./utils/normalize-domain-list"));
|
|
68
69
|
const schema_fetcher_1 = require("./utils/schema-fetcher");
|
|
69
70
|
const sse_error_logger_1 = __importDefault(require("./utils/sse-error-logger"));
|
|
70
71
|
const token_ttl_1 = __importDefault(require("./utils/token-ttl"));
|
|
@@ -125,6 +126,7 @@ class ForestMCPServer {
|
|
|
125
126
|
this.agentUrl = (0, normalize_agent_url_1.default)(options?.agentUrl);
|
|
126
127
|
this.agentDispatcher = options?.agentDispatcher;
|
|
127
128
|
this.tokenTtl = (0, token_ttl_1.default)(options?.tokenTtl, this.logger);
|
|
129
|
+
this.allowedOAuthClients = (0, normalize_domain_list_1.default)(options?.allowedOAuthClients);
|
|
128
130
|
// Use injected forestServerClient or create default
|
|
129
131
|
this.forestServerClient = options?.forestServerClient ?? this.createDefaultForestServerClient();
|
|
130
132
|
}
|
|
@@ -307,6 +309,7 @@ class ForestMCPServer {
|
|
|
307
309
|
logger: this.logger,
|
|
308
310
|
agentUrl: this.agentUrl,
|
|
309
311
|
tokenTtl: this.tokenTtl,
|
|
312
|
+
allowedOAuthClients: this.allowedOAuthClients,
|
|
310
313
|
});
|
|
311
314
|
await oauthProvider.initialize();
|
|
312
315
|
// Use provided baseUrl or get it from the OAuth provider (environmentApiEndpoint)
|
|
@@ -489,4 +492,4 @@ class ForestMCPServer {
|
|
|
489
492
|
}
|
|
490
493
|
}
|
|
491
494
|
exports.default = ForestMCPServer;
|
|
492
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBc0Q7QUFDdEQsc0VBQXNFO0FBQ3RFLHVCQUFxQjtBQVFyQiw4RkFBbUc7QUFDbkcsNEZBQTZGO0FBQzdGLHNGQUF1RjtBQUN2RiwwR0FBb0c7QUFDcEcsa0dBQW1HO0FBQ25HLCtFQUd5RDtBQUN6RCxvRUFBb0U7QUFDcEUsMEZBQW1HO0FBQ25HLGdEQUF3QjtBQUN4QixzREFBOEI7QUFDOUIsMkNBQTZCO0FBRTdCLG9GQUEwRDtBQUMxRCwrQ0FBeUQ7QUFDekQsMkNBQWlFO0FBQ2pFLGtFQUFxRDtBQUNyRCw0REFBK0M7QUFDL0MsNERBQStDO0FBQy9DLHNGQUF3RTtBQUN4RSxvRUFBdUQ7QUFDdkQsNEVBQThEO0FBQzlELDhFQUErRDtBQUMvRCx3REFBMkM7QUFDM0Msd0VBQTBEO0FBQzFELDREQUErQztBQUMvQyxzRkFBNEQ7QUFDNUQsMkRBQStFO0FBQy9FLGdGQUF3RTtBQUN4RSxrRUFBa0Q7QUFDbEQsdUNBQTBDO0FBRTdCLFFBQUEsUUFBUSxHQUFHLGlFQUFpRSxDQUFDO0FBVzFGLFNBQVMsZUFBZSxDQUFDLEtBQWU7SUFDdEMsSUFBSSxLQUFLLEtBQUssT0FBTztRQUFFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEUsSUFBSSxLQUFLLEtBQUssTUFBTTtRQUFFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFaEUsT0FBTyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxh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
|
|
495
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBc0Q7QUFDdEQsc0VBQXNFO0FBQ3RFLHVCQUFxQjtBQVFyQiw4RkFBbUc7QUFDbkcsNEZBQTZGO0FBQzdGLHNGQUF1RjtBQUN2RiwwR0FBb0c7QUFDcEcsa0dBQW1HO0FBQ25HLCtFQUd5RDtBQUN6RCxvRUFBb0U7QUFDcEUsMEZBQW1HO0FBQ25HLGdEQUF3QjtBQUN4QixzREFBOEI7QUFDOUIsMkNBQTZCO0FBRTdCLG9GQUEwRDtBQUMxRCwrQ0FBeUQ7QUFDekQsMkNBQWlFO0FBQ2pFLGtFQUFxRDtBQUNyRCw0REFBK0M7QUFDL0MsNERBQStDO0FBQy9DLHNGQUF3RTtBQUN4RSxvRUFBdUQ7QUFDdkQsNEVBQThEO0FBQzlELDhFQUErRDtBQUMvRCx3REFBMkM7QUFDM0Msd0VBQTBEO0FBQzFELDREQUErQztBQUMvQyxzRkFBNEQ7QUFDNUQsMEZBQWdFO0FBQ2hFLDJEQUErRTtBQUMvRSxnRkFBd0U7QUFDeEUsa0VBQWtEO0FBQ2xELHVDQUEwQztBQUU3QixRQUFBLFFBQVEsR0FBRyxpRUFBaUUsQ0FBQztBQVcxRixTQUFTLGVBQWUsQ0FBQyxLQUFlO0lBQ3RDLElBQUksS0FBSyxLQUFLLE9BQU87UUFBRSxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xFLElBQUksS0FBSyxLQUFLLE1BQU07UUFBRSxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWhFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQy9DLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUM7QUFFRixTQUFTLGlCQUFpQixDQUFDLFVBQWtCO0lBQzNDLElBQUksVUFBVSxJQUFJLEdBQUc7UUFBRSxPQUFPLE9BQU8sQ0FBQztJQUN0QyxJQUFJLFVBQVUsSUFBSSxHQUFHO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFFckMsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxHQUFVO0lBQ3BFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFekIsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztBQUNILENBQUM7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSwwQkFBMEIsR0FBNkI7SUFDM0QsSUFBSSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDeEIsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDO0lBQ2pFLE1BQU0sRUFBRSxDQUFDLGdCQUFnQixDQUFDO0lBQzFCLE1BQU0sRUFBRSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsQ0FBQztJQUN0QyxNQUFNLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUM7SUFDdkMsa0JBQWtCLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN0QyxhQUFhLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxDQUFDO0lBQzVELGFBQWEsRUFBRSxDQUFDLGdCQUFnQixFQUFFLFlBQVksRUFBRSxXQUFXLENBQUM7SUFDNUQsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDO0lBQ2pGLFVBQVUsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQztDQUNwRixDQUFDO0FBZ0VGOzs7OztHQUtHO0FBRUgsTUFBcUIsZUFBZTtJQWtCbEMsWUFBWSxPQUFnQztRQVJwQyxvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQVNyQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sRUFBRSxlQUFlLElBQUksNkJBQTZCLENBQUM7UUFDakYsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLEVBQUUsWUFBWSxJQUFJLDZCQUE2QixDQUFDO1FBQzNFLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFNBQVMsQ0FBQztRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sRUFBRSxVQUFVLENBQUM7UUFDdEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsTUFBTSxJQUFJLGFBQWEsQ0FBQztRQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUEsOEJBQWtCLEVBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBQSw2QkFBaUIsRUFBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLEVBQUUsZUFBZSxDQUFDO1FBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBQSxtQkFBaUIsRUFBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBQSwrQkFBbUIsRUFBQyxPQUFPLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUU3RSxvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE9BQU8sRUFBRSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQztJQUNsRyxDQUFDO0lBRU8sK0JBQStCO1FBQ3JDLE9BQU8sSUFBQSxzQ0FBd0IsRUFBQztZQUM5QixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CO1FBQ2hDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxrQ0FBaUIsRUFBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUEsbUNBQWtCLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsTUFBTSxDQUNULE1BQU0sRUFDTixrQ0FBa0MsS0FBSyxnRkFBZ0YsQ0FDeEgsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLGtCQUFTLENBQUM7WUFDOUIsSUFBSSxFQUFFLGNBQUk7WUFDVixPQUFPLEVBQUUsaUJBQU87WUFDaEIsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsZ0JBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsTUFBTSxHQUFHLEdBQWdCO1lBQ3ZCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7U0FDdEMsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFzRDtZQUNsRSxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBQSw2QkFBNkIsRUFBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDN0YsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFBLGNBQWUsRUFBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDakUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFBLHNCQUFzQixFQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUMvRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUEsZ0JBQWlCLEVBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQ3JFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBQSxnQkFBaUIsRUFBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDckUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFBLGdCQUFpQixFQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNyRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUEsbUJBQW9CLEVBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzNFLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBQSxvQkFBcUIsRUFBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLEVBQUU7WUFDN0UsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFBLHlCQUF3QixFQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRTtZQUNuRixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUEsd0JBQXdCLEVBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1NBQ3BGLENBQUM7UUFFRixNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRixNQUFNLGlCQUFpQixHQUFHLFFBQVE7YUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDakQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTFCLE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLElBQUksQ0FBQyxNQUFNLENBQ1QsTUFBTSxFQUNOLGtCQUFrQixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUNsRixDQUFDO1FBRUYsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM5QixJQUFJLENBQUMsTUFBTSxDQUNULE1BQU0sRUFDTixtQkFBbUIsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLGlCQUFpQixDQUFDLE1BQU0sSUFBSSxLQUFLLEdBQUcsQ0FDekYsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU8sbUJBQW1CLENBQUMsT0FBZ0M7UUFDMUQsTUFBTSxZQUFZLEdBQWU7WUFDL0Isb0JBQW9CO1lBQ3BCLE1BQU07WUFDTixhQUFhO1lBQ2IsUUFBUTtZQUNSLFFBQVE7WUFDUixRQUFRO1lBQ1IsV0FBVztZQUNYLFlBQVk7WUFDWixlQUFlO1lBQ2YsZUFBZTtTQUNoQixDQUFDO1FBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQztRQUUvRCxJQUFJLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUMxQixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxZQUFZLENBQUMsQ0FBQztZQUN0RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRXJGLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FDVCxNQUFNLEVBQ04sdUNBQXVDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUN6RixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxNQUFNLENBQ1QsTUFBTSxFQUNOLHdHQUF3RyxDQUN6RyxDQUFDO1lBQ0osQ0FBQztZQUVELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLG9CQUFvQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FDNUQsQ0FBQztZQUVGLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FDVCxNQUFNLEVBQ04sZ0NBQWdDLFFBQVEseUNBQXlDLENBQ2xGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELHdDQUF3QztRQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFFbEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkdBQTJHLENBQzVHLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUNiLDhHQUE4RyxDQUMvRyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7O09BR0c7SUFDSyxvQkFBb0IsQ0FDMUIsUUFBZ0IsRUFDaEIsSUFBNkI7UUFFN0IsTUFBTSxhQUFhLEdBQUcsMEJBQTBCLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpFLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQixDQUFDLEdBQW9CO1FBUy9DLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUF1QixDQUFDO1FBRXpDLElBQUksSUFBSSxFQUFFLE1BQU0sS0FBSyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3hELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO1FBQ3pDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFM0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsY0FBYyxRQUFRLGNBQWMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVEOzs7T0FHRztJQUNLLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFvQixFQUFFLEdBQXFCO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxZQUFZLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBRXpFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFBLDBCQUFnQyxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksaURBQTZCLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXZGLE1BQU0sT0FBTyxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ3pCLE1BQU0sU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxNQUFNLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFbEQsOEVBQThFO1lBQzlFLGlGQUFpRjtZQUNqRixJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLDJCQUEyQixHQUFHLENBQUMsVUFBVSxTQUFTLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDdkYsQ0FBQztRQUNILENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUN0QixNQUFNLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsNkJBQTZCLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEdBQUcsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDbkIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO3dCQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSw2QkFBNkIsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDMUQsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFhO1FBQ2pDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFN0QsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVsQyxNQUFNLEdBQUcsR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQztRQUV0QiwrRUFBK0U7UUFDL0Usd0VBQXdFO1FBQ3hFLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTFCLEdBQUcsQ0FBQyxHQUFHLENBQ0wsSUFBQSxjQUFJLEVBQUM7WUFDSCxNQUFNLEVBQUUsR0FBRztTQUNaLENBQUMsQ0FDSCxDQUFDO1FBRUYsNEJBQTRCO1FBQzVCLE1BQU0sYUFBYSxHQUFHLElBQUksK0JBQW1CLENBQUM7WUFDNUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixTQUFTO1lBQ1QsVUFBVTtZQUNWLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7U0FDOUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxhQUFhLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFakMsa0ZBQWtGO1FBQ2xGLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxJQUFJLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUvRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUNiLCtDQUErQztnQkFDN0MsMkdBQTJHLENBQzlHLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFbEMsMkZBQTJGO1FBQzNGLDZGQUE2RjtRQUM3RixJQUFJLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FDYixpQkFBaUIsTUFBTSxnRUFBZ0U7Z0JBQ3JGLHlCQUF5QixnQkFBZ0IsQ0FBQyxRQUFRLG1DQUFtQztnQkFDckYsd0JBQXdCLENBQzNCLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7UUFFekYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUU3RSxtRkFBbUY7UUFDbkYsTUFBTSxhQUFhLEdBQUcsSUFBQSwrQkFBbUIsRUFBQztZQUN4QyxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTO1lBQ1QsT0FBTyxFQUFFLFNBQVM7WUFDbEIsZUFBZTtTQUNoQixDQUFDLENBQUM7UUFFSCxhQUFhLENBQUMscUNBQXFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxhQUFhLENBQUMsd0JBQXdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRCxhQUFhLENBQUMsZ0NBQWdDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUxRCxhQUFhLENBQUMsY0FBYyxHQUFHLEdBQUcsU0FBUyxDQUFDLElBQUksYUFBYSxDQUFDO1FBQzlELGFBQWEsQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLGlCQUFpQixDQUFDO1FBQzFFLGlFQUFpRTtRQUNqRSxhQUFhLENBQUMscUJBQXFCLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxpQkFBaUIsQ0FBQztRQUMvRSwyREFBMkQ7UUFDM0QsT0FBTyxhQUFhLENBQUMsbUJBQW1CLENBQUM7UUFFekMseUVBQXlFO1FBQ3pFLDRFQUE0RTtRQUM1RSxrREFBa0Q7UUFDbEQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFaEQsdUVBQXVFO1FBQ3ZFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUU3QixHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ3BCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7Z0JBQ3hDLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FDVCxLQUFLLEVBQ0wsSUFBSSxHQUFHLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxNQUFNLFFBQVEsSUFBSSxDQUMvRSxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLEVBQUUsQ0FBQztRQUNULENBQUMsQ0FBQyxDQUFDO1FBRUgsR0FBRyxDQUFDLEdBQUcsQ0FDTCxHQUFHLE1BQU0sa0JBQWtCLEVBQzNCLElBQUEsbUNBQW9CLEVBQUM7WUFDbkIsUUFBUSxFQUFFLGFBQWE7U0FDeEIsQ0FBQyxDQUNILENBQUM7UUFDRixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxjQUFjLEVBQUUsSUFBQSx1QkFBWSxFQUFDLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU1RSwrRUFBK0U7UUFDL0UsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWpELElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCx1RkFBdUY7WUFDdkYsMEZBQTBGO1lBQzFGLHdFQUF3RTtZQUN4RSxHQUFHLENBQUMsR0FBRyxDQUNMLHdDQUF3QyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQ2pFLElBQUEsNkJBQWUsRUFBQztnQkFDZCxRQUFRLEVBQUUsY0FBYyxDQUFDLElBQUk7Z0JBQzdCLHFCQUFxQixFQUFFLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDN0MsZ0JBQWdCLEVBQUUsZUFBZTthQUNsQyxDQUFDLENBQ0gsQ0FBQztZQUNGLEdBQUcsQ0FBQyxHQUFHLENBQUMsMENBQTBDLE1BQU0sRUFBRSxFQUFFLElBQUEsNkJBQWUsRUFBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQzlGLENBQUM7YUFBTSxDQUFDO1lBQ04sR0FBRyxDQUFDLEdBQUcsQ0FDTCxJQUFBLGlDQUFxQixFQUFDO2dCQUNwQixhQUFhO2dCQUNiLGlCQUFpQixFQUFFLGNBQWM7Z0JBQ2pDLGVBQWU7YUFDaEIsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBRUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFBLGtDQUFjLEVBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbEMsR0FBRyxDQUFDLElBQUksQ0FDTixHQUFHLE1BQU0sTUFBTSxFQUNmLElBQUEsaUNBQWlCLEVBQUM7WUFDaEIsUUFBUSxFQUFFLGFBQWE7WUFDdkIsY0FBYyxFQUFFLENBQUMsVUFBVSxDQUFDO1lBQzVCLG1CQUFtQixFQUFFLElBQUksR0FBRyxDQUMxQix3Q0FBd0MsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUNqRSxnQkFBZ0IsQ0FDakIsQ0FBQyxJQUFJO1NBQ1AsQ0FBQyxFQUNGLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzVDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQztnQkFDaEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDdEUsaUJBQWlCLENBQ2YsSUFBSSxDQUFDLE1BQU0sRUFDWCx3QkFBd0IsU0FBUyxNQUFNLEdBQUcsQ0FBQyxPQUFPLElBQUksS0FBSyxFQUFFLEVBQzdELEdBQUcsQ0FDSixDQUFDO2dCQUVGLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO3dCQUNuQixPQUFPLEVBQUUsS0FBSzt3QkFDZCxLQUFLLEVBQUU7NEJBQ0wsSUFBSSxFQUFFLENBQUMsS0FBSzs0QkFDWixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU8sSUFBSSx1QkFBdUI7eUJBQ2hEO3dCQUNELEVBQUUsRUFBRSxJQUFJO3FCQUNULENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLE1BQU0sQ0FDVCxNQUFNLEVBQ04saUVBQWlFLFNBQVMsR0FBRyxDQUM5RSxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixDQUFDO1FBRUYscURBQXFEO1FBQ3JELDBFQUEwRTtRQUMxRSxrRkFBa0Y7UUFDbEYsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUN4QixHQUFHLENBQUMsR0FBRztRQUNMLDZEQUE2RDtRQUM3RCxDQUFDLEdBQVUsRUFBRSxHQUFvQixFQUFFLEdBQXFCLEVBQUUsS0FBMkIsRUFBRSxFQUFFO1lBQ3ZGLGlCQUFpQixDQUNmLE1BQU0sRUFDTixzQkFBc0IsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFDOUQsR0FBRyxDQUNKLENBQUM7WUFFRixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDbkIsS0FBSyxFQUFFLHVCQUF1QjtvQkFDOUIsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLE9BQU87aUJBQy9CLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBRXRCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFhO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFBLDBCQUFjLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWpELE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3hCLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO1lBRTNCLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLDBFQUEwRTtnQkFDMUUsb0ZBQW9GO2dCQUNwRixtRkFBbUY7Z0JBQ25GLDZFQUE2RTtnQkFDN0UsTUFBTSxNQUFNLEdBQUcsR0FBVSxDQUFDO2dCQUUxQixxREFBcUQ7Z0JBQ3JELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQzNCLE1BQU0sQ0FBQyxjQUFjLEdBQUc7d0JBQ3RCLEtBQUssRUFBRSxFQUFFO3dCQUNULFVBQVUsRUFBRSxDQUFDO3dCQUNiLE9BQU8sRUFBRSxJQUFJO3dCQUNiLEtBQUssRUFBRSxJQUFJO3dCQUNYLFVBQVUsRUFBRSxJQUFJO3dCQUNoQixPQUFPLEVBQUUsS0FBSztxQkFDZixDQUFDO2dCQUNKLENBQUM7cUJBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN2RCxzREFBc0Q7b0JBQ3RELE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDbkMsQ0FBQztnQkFDRCw0RUFBNEU7Z0JBRTVFLG9DQUFvQztnQkFDcEMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoQixDQUFDO2lCQUFNLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLHlDQUF5QztnQkFDekMsSUFBSSxFQUFFLENBQUM7WUFDVCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sZ0ZBQWdGO2dCQUNoRixHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7Z0JBQzNELEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxHQUFHO1FBQ1AsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3pELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXBELE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsdURBQXVELElBQUksRUFBRSxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFsaEJELGtDQWtoQkMifQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = normalizeDomainList;
|
|
4
|
+
function normalizeDomainList(domains) {
|
|
5
|
+
if (domains === undefined)
|
|
6
|
+
return undefined;
|
|
7
|
+
const entries = domains.map(domain => domain.trim()).filter(Boolean);
|
|
8
|
+
if (entries.length === 0) {
|
|
9
|
+
throw new Error('Invalid allowedOAuthClients: no domains to allow. List at least one domain ' +
|
|
10
|
+
'(e.g. dust.tt), or omit the option to accept any registered client.');
|
|
11
|
+
}
|
|
12
|
+
return entries.map(entry => {
|
|
13
|
+
// '@' would make URL parse everything before it as userinfo and return the wrong
|
|
14
|
+
// hostname; '\' acts as a path separator in WHATWG URLs, silently truncating.
|
|
15
|
+
if (/[/:@?#\\\s]/.test(entry)) {
|
|
16
|
+
throw new Error(`Invalid allowedOAuthClients entry "${entry}": list bare domains (e.g. dust.tt) ` +
|
|
17
|
+
'without scheme, port, path, or spaces.');
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
// URL canonicalizes the host to lowercase punycode — the same form the provider
|
|
21
|
+
// extracts from redirect URIs at enforcement time, so unicode entries match.
|
|
22
|
+
// The root dot of an FQDN-style entry is dropped: redirect URI hostnames never
|
|
23
|
+
// carry one, so keeping it would silently reject every client for that domain.
|
|
24
|
+
return new URL(`https://${entry}`).hostname.replace(/\.$/, '');
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
throw new Error(`Invalid allowedOAuthClients entry "${entry}": not a valid domain.`);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLWRvbWFpbi1saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL25vcm1hbGl6ZS1kb21haW4tbGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHNDQWdDQztBQWhDRCxTQUF3QixtQkFBbUIsQ0FBQyxPQUFrQjtJQUM1RCxJQUFJLE9BQU8sS0FBSyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFNUMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVyRSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYiw2RUFBNkU7WUFDM0UscUVBQXFFLENBQ3hFLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ3pCLGlGQUFpRjtRQUNqRiw4RUFBOEU7UUFDOUUsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FDYixzQ0FBc0MsS0FBSyxzQ0FBc0M7Z0JBQy9FLHdDQUF3QyxDQUMzQyxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQztZQUNILGdGQUFnRjtZQUNoRiw2RUFBNkU7WUFDN0UsK0VBQStFO1lBQy9FLCtFQUErRTtZQUMvRSxPQUFPLElBQUksR0FBRyxDQUFDLFdBQVcsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsS0FBSyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = parseDomainList;
|
|
4
|
+
function parseDomainList(envValue) {
|
|
5
|
+
if (!envValue)
|
|
6
|
+
return undefined;
|
|
7
|
+
// A set value that yields no domains must fail closed downstream: treating it as
|
|
8
|
+
// "not configured" would silently disable the allowlist on a quoting mistake.
|
|
9
|
+
return envValue
|
|
10
|
+
.split(',')
|
|
11
|
+
.map(domain => domain.trim())
|
|
12
|
+
.filter(Boolean);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UtZG9tYWluLWxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGFyc2UtZG9tYWluLWxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQ0FTQztBQVRELFNBQXdCLGVBQWUsQ0FBQyxRQUFpQjtJQUN2RCxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRWhDLGlGQUFpRjtJQUNqRiw4RUFBOEU7SUFDOUUsT0FBTyxRQUFRO1NBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUM1QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDckIsQ0FBQyJ9
|