@forestadmin/agent-bff 1.9.1 → 1.11.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/action/action-routes-middleware.d.ts +2 -1
- package/dist/action/action-routes-middleware.js +3 -2
- package/dist/action/agent-action-client.d.ts +2 -1
- package/dist/action/agent-action-client.js +12 -3
- package/dist/agent/create-agent-http-requester.d.ts +3 -0
- package/dist/agent/create-agent-http-requester.js +22 -0
- package/dist/api-key/agent-token.d.ts +6 -0
- package/dist/api-key/agent-token.js +38 -14
- package/dist/auth/auth-mode-middleware.js +6 -2
- package/dist/cli-core.js +4 -4
- package/dist/config/env-config.d.ts +3 -0
- package/dist/config/env-config.js +15 -2
- package/dist/data/agent-data-client.d.ts +2 -1
- package/dist/data/agent-data-client.js +7 -4
- package/dist/data/data-routes-middleware.d.ts +2 -1
- package/dist/data/data-routes-middleware.js +9 -4
- package/dist/http/agent-route-helpers.js +1 -4
- package/dist/oauth/bff-token.d.ts +1 -0
- package/dist/oauth/bff-token.js +2 -1
- package/dist/read-model/agent-capabilities-fetcher.d.ts +2 -1
- package/dist/read-model/agent-capabilities-fetcher.js +11 -3
- package/package.json +1 -1
|
@@ -5,8 +5,9 @@ import type { Middleware } from 'koa';
|
|
|
5
5
|
export interface ActionRoutesMiddlewareOptions {
|
|
6
6
|
store: ReadModelStore;
|
|
7
7
|
agentUrl: string;
|
|
8
|
+
timeoutMs?: number;
|
|
8
9
|
logger: Logger;
|
|
9
10
|
createClient?: (options: AgentActionClientOptions) => AgentActionClient;
|
|
10
11
|
}
|
|
11
|
-
export default function createActionRoutesMiddleware({ store, agentUrl, logger, createClient, }: ActionRoutesMiddlewareOptions): Middleware;
|
|
12
|
+
export default function createActionRoutesMiddleware({ store, agentUrl, timeoutMs, logger, createClient, }: ActionRoutesMiddlewareOptions): Middleware;
|
|
12
13
|
//# sourceMappingURL=action-routes-middleware.d.ts.map
|
|
@@ -128,7 +128,7 @@ async function handleExecute(ctx, client, collection, actionName, recordIds, val
|
|
|
128
128
|
ctx.status = status;
|
|
129
129
|
ctx.body = body;
|
|
130
130
|
}
|
|
131
|
-
function createActionRoutesMiddleware({ store, agentUrl, logger, createClient = agent_action_client_1.default, }) {
|
|
131
|
+
function createActionRoutesMiddleware({ store, agentUrl, timeoutMs, logger, createClient = agent_action_client_1.default, }) {
|
|
132
132
|
return async function actionRoutesMiddleware(ctx, next) {
|
|
133
133
|
const match = ACTION_ROUTE.exec(ctx.path);
|
|
134
134
|
if (!match || ctx.method !== 'POST') {
|
|
@@ -155,6 +155,7 @@ function createActionRoutesMiddleware({ store, agentUrl, logger, createClient =
|
|
|
155
155
|
agentUrl,
|
|
156
156
|
token,
|
|
157
157
|
actionEndpoints: readModel.getActionEndpoints(),
|
|
158
|
+
timeoutMs,
|
|
158
159
|
});
|
|
159
160
|
if (verb === 'execute') {
|
|
160
161
|
await handleExecute(ctx, client, collection, actionName, recordIds, values, logger);
|
|
@@ -164,4 +165,4 @@ function createActionRoutesMiddleware({ store, agentUrl, logger, createClient =
|
|
|
164
165
|
}
|
|
165
166
|
};
|
|
166
167
|
}
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXJvdXRlcy1taWRkbGV3YXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbi9hY3Rpb24tcm91dGVzLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrS0EsK0NBZ0RDO0FBN01ELDREQUltQztBQUVuQyxtRUFBaUU7QUFDakUsNkRBQXFEO0FBQ3JELDZFQUF5RjtBQUN6RixtRUFBMkQ7QUFDM0QscUVBS3FDO0FBQ3JDLCtEQUtrQztBQUVsQyxNQUFNLFlBQVksR0FBRywwREFBMEQsQ0FBQztBQU9oRixvR0FBb0c7QUFDcEcsK0ZBQStGO0FBQy9GLHdFQUF3RTtBQUN4RSxxR0FBcUc7QUFDckcscUdBQXFHO0FBQ3JHLFNBQVMsY0FBYyxDQUFDLEdBQVk7SUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUEsaUNBQWMsRUFBQyw0Q0FBNEMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBWTtJQUMvQixJQUFJLEdBQUcsS0FBSyxTQUFTO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFakMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEUsTUFBTSxJQUFBLGlDQUFjLEVBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsT0FBTyxHQUE4QixDQUFDO0FBQ3hDLENBQUM7QUFFRCwrRkFBK0Y7QUFDL0YsNEZBQTRGO0FBQzVGLFNB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
|
|
@@ -25,6 +25,7 @@ export interface AgentActionClientOptions {
|
|
|
25
25
|
agentUrl: string;
|
|
26
26
|
token: string;
|
|
27
27
|
actionEndpoints: ActionEndpointsByCollection;
|
|
28
|
+
timeoutMs?: number;
|
|
28
29
|
}
|
|
29
30
|
export declare function extractRawLayout(action: ActionForm): ForestServerActionFormLayoutElement[];
|
|
30
31
|
/**
|
|
@@ -32,5 +33,5 @@ export declare function extractRawLayout(action: ActionForm): ForestServerAction
|
|
|
32
33
|
* loading (`/hooks/load` + `/hooks/change`, Ruby 404 fallback, dependent-field re-evaluation) rather
|
|
33
34
|
* than reimplementing it. The endpoint map from the read-model is the action allow-list.
|
|
34
35
|
*/
|
|
35
|
-
export default function createAgentActionClient({ agentUrl, token, actionEndpoints, }: AgentActionClientOptions): AgentActionClient;
|
|
36
|
+
export default function createAgentActionClient({ agentUrl, token, actionEndpoints, timeoutMs, }: AgentActionClientOptions): AgentActionClient;
|
|
36
37
|
//# sourceMappingURL=agent-action-client.d.ts.map
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.extractRawLayout = extractRawLayout;
|
|
4
7
|
exports.default = createAgentActionClient;
|
|
5
8
|
const agent_client_1 = require("@forestadmin/agent-client");
|
|
9
|
+
const create_agent_http_requester_1 = __importDefault(require("../agent/create-agent-http-requester"));
|
|
6
10
|
// The raw layout must be read AFTER tryToSetFields: a change hook rebuilds fields+layout in place.
|
|
7
11
|
// agent-client's `Action.getLayout()` only returns an `ActionLayoutRoot` wrapper whose element array
|
|
8
12
|
// lives in a protected field. The rollback contract forbids agent-client changes, so we read it
|
|
@@ -17,10 +21,15 @@ function extractRawLayout(action) {
|
|
|
17
21
|
* loading (`/hooks/load` + `/hooks/change`, Ruby 404 fallback, dependent-field re-evaluation) rather
|
|
18
22
|
* than reimplementing it. The endpoint map from the read-model is the action allow-list.
|
|
19
23
|
*/
|
|
20
|
-
function createAgentActionClient({ agentUrl, token, actionEndpoints, }) {
|
|
21
|
-
const client = (0, agent_client_1.createRemoteAgentClient)({
|
|
24
|
+
function createAgentActionClient({ agentUrl, token, actionEndpoints, timeoutMs, }) {
|
|
25
|
+
const client = (0, agent_client_1.createRemoteAgentClient)({
|
|
26
|
+
url: agentUrl,
|
|
27
|
+
token,
|
|
28
|
+
actionEndpoints,
|
|
29
|
+
httpRequester: (0, create_agent_http_requester_1.default)(token, agentUrl, timeoutMs),
|
|
30
|
+
});
|
|
22
31
|
return {
|
|
23
32
|
loadAction: (collection, action, recordIds) => client.collection(collection).action(action, { recordIds }),
|
|
24
33
|
};
|
|
25
34
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtYWN0aW9uLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb24vYWdlbnQtYWN0aW9uLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQThDQSw0Q0FJQztBQU9ELDBDQWlCQztBQXZFRCw0REFBb0U7QUFFcEUsdUdBQTRFO0FBb0M1RSxtR0FBbUc7QUFDbkcscUdBQXFHO0FBQ3JHLGdHQUFnRztBQUNoRyxrR0FBa0c7QUFDbEcsMEZBQTBGO0FBQzFGLFNBQWdCLGdCQUFnQixDQUFDLE1BQWtCO0lBQ2pELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQXdELENBQUM7SUFFdEYsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQXdCLHVCQUF1QixDQUFDLEVBQzlDLFFBQVEsRUFDUixLQUFLLEVBQ0wsZUFBZSxFQUNmLFNBQVMsR0FDZ0I7SUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQ0FBdUIsRUFBQztRQUNyQyxHQUFHLEVBQUUsUUFBUTtRQUNiLEtBQUs7UUFDTCxlQUFlO1FBQ2YsYUFBYSxFQUFFLElBQUEscUNBQXdCLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUM7S0FDcEUsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FDNUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUM7S0FDOUQsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = createAgentHttpRequester;
|
|
4
|
+
const agent_client_1 = require("@forestadmin/agent-client");
|
|
5
|
+
function createAgentHttpRequester(token, agentUrl, timeoutMs) {
|
|
6
|
+
const requester = new agent_client_1.HttpRequester(token, { url: agentUrl });
|
|
7
|
+
if (timeoutMs === undefined) {
|
|
8
|
+
return requester;
|
|
9
|
+
}
|
|
10
|
+
const query = requester.query.bind(requester);
|
|
11
|
+
requester.query = (options) => query({
|
|
12
|
+
...options,
|
|
13
|
+
maxTimeAllowed: options.maxTimeAllowed ?? timeoutMs,
|
|
14
|
+
});
|
|
15
|
+
const stream = requester.stream.bind(requester);
|
|
16
|
+
requester.stream = (options) => stream({
|
|
17
|
+
...options,
|
|
18
|
+
maxTimeAllowed: options.maxTimeAllowed ?? timeoutMs,
|
|
19
|
+
});
|
|
20
|
+
return requester;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWFnZW50LWh0dHAtcmVxdWVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FnZW50L2NyZWF0ZS1hZ2VudC1odHRwLXJlcXVlc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLDJDQTBCQztBQS9CRCw0REFBMEQ7QUFLMUQsU0FBd0Isd0JBQXdCLENBQzlDLEtBQWEsRUFDYixRQUFnQixFQUNoQixTQUFrQjtJQUVsQixNQUFNLFNBQVMsR0FBRyxJQUFJLDRCQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFFOUQsSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBaUIsT0FBcUIsRUFBaUIsRUFBRSxDQUN6RSxLQUFLLENBQUM7UUFDSixHQUFHLE9BQU87UUFDVixjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsSUFBSSxTQUFTO0tBQ3BELENBQUMsQ0FBQztJQUVMLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxPQUFzQixFQUFpQixFQUFFLENBQzNELE1BQU0sQ0FBQztRQUNMLEdBQUcsT0FBTztRQUNWLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLFNBQVM7S0FDcEQsQ0FBQyxDQUFDO0lBRUwsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyJ9
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import type { ResolvedApiKeyIdentity } from './api-key-client';
|
|
2
|
+
import type { BffAccessTokenPayload } from '../oauth/bff-token';
|
|
2
3
|
export declare const AGENT_TOKEN_EXPIRES_IN = "5m";
|
|
3
4
|
export interface IssueAgentTokenParams {
|
|
4
5
|
identity: ResolvedApiKeyIdentity;
|
|
5
6
|
authSecret: string;
|
|
6
7
|
}
|
|
8
|
+
export interface IssueAgentTokenFromPrincipalParams {
|
|
9
|
+
principal: BffAccessTokenPayload;
|
|
10
|
+
authSecret: string;
|
|
11
|
+
}
|
|
7
12
|
export declare function issueAgentToken({ identity, authSecret }: IssueAgentTokenParams): string;
|
|
13
|
+
export declare function issueAgentTokenFromPrincipal({ principal, authSecret, }: IssueAgentTokenFromPrincipalParams): string;
|
|
8
14
|
//# sourceMappingURL=agent-token.d.ts.map
|
|
@@ -5,30 +5,54 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.AGENT_TOKEN_EXPIRES_IN = void 0;
|
|
7
7
|
exports.issueAgentToken = issueAgentToken;
|
|
8
|
+
exports.issueAgentTokenFromPrincipal = issueAgentTokenFromPrincipal;
|
|
8
9
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
10
|
+
const bff_http_error_1 = require("../http/bff-http-error");
|
|
9
11
|
exports.AGENT_TOKEN_EXPIRES_IN = '5m';
|
|
12
|
+
const POSITIVE_INTEGER = /^[1-9]\d*$/;
|
|
10
13
|
function tagsToRecord(tags) {
|
|
11
14
|
return tags.reduce((memo, { key, value }) => ({ ...memo, [key]: value }), {});
|
|
12
15
|
}
|
|
16
|
+
function signWithSnakeCaseAliasesForRubyAndPythonAgents(claims, authSecret) {
|
|
17
|
+
const firstName = claims.firstName ?? '';
|
|
18
|
+
const lastName = claims.lastName ?? '';
|
|
19
|
+
return jsonwebtoken_1.default.sign({
|
|
20
|
+
...claims,
|
|
21
|
+
firstName,
|
|
22
|
+
lastName,
|
|
23
|
+
first_name: firstName,
|
|
24
|
+
last_name: lastName,
|
|
25
|
+
rendering_id: claims.renderingId,
|
|
26
|
+
permission_level: claims.permissionLevel,
|
|
27
|
+
}, authSecret, { algorithm: 'HS256', expiresIn: exports.AGENT_TOKEN_EXPIRES_IN });
|
|
28
|
+
}
|
|
13
29
|
function issueAgentToken({ identity, authSecret }) {
|
|
14
30
|
const { user, renderingId } = identity;
|
|
15
|
-
|
|
16
|
-
const lastName = user.lastName ?? '';
|
|
17
|
-
const tags = tagsToRecord(user.tags);
|
|
18
|
-
// snake_case aliases: Ruby/Python agents splat JWT claims into Caller (snake_case kwargs).
|
|
19
|
-
return jsonwebtoken_1.default.sign({
|
|
31
|
+
return signWithSnakeCaseAliasesForRubyAndPythonAgents({
|
|
20
32
|
id: user.id,
|
|
21
33
|
email: user.email,
|
|
22
|
-
firstName,
|
|
23
|
-
lastName,
|
|
34
|
+
firstName: user.firstName,
|
|
35
|
+
lastName: user.lastName,
|
|
24
36
|
team: user.team,
|
|
25
37
|
renderingId,
|
|
26
|
-
tags,
|
|
38
|
+
tags: tagsToRecord(user.tags),
|
|
27
39
|
permissionLevel: user.permissionLevel,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
}, authSecret);
|
|
41
|
+
}
|
|
42
|
+
function issueAgentTokenFromPrincipal({ principal, authSecret, }) {
|
|
43
|
+
if (!POSITIVE_INTEGER.test(String(principal.rendering_id))) {
|
|
44
|
+
throw (0, bff_http_error_1.unauthorized)('The session carries no usable rendering');
|
|
45
|
+
}
|
|
46
|
+
return signWithSnakeCaseAliasesForRubyAndPythonAgents({
|
|
47
|
+
id: principal.id,
|
|
48
|
+
email: principal.email,
|
|
49
|
+
firstName: principal.first_name,
|
|
50
|
+
lastName: principal.last_name,
|
|
51
|
+
team: principal.team,
|
|
52
|
+
renderingId: Number(principal.rendering_id),
|
|
53
|
+
tags: principal.tags ?? {},
|
|
54
|
+
permissionLevel: principal.permission_level,
|
|
55
|
+
role: principal.role,
|
|
56
|
+
}, authSecret);
|
|
33
57
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpLWtleS9hZ2VudC10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUEyREEsMENBZ0JDO0FBRUQsb0VBc0JDO0FBaEdELGdFQUF3QztBQUV4QywyREFBc0Q7QUFFekMsUUFBQSxzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFZM0MsTUFBTSxnQkFBZ0IsR0FBRyxZQUFZLENBQUM7QUFFdEMsU0FBUyxZQUFZLENBQUMsSUFBc0M7SUFDMUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFjRCxTQUFTLDhDQUE4QyxDQUNyRCxNQUF5QixFQUN6QixVQUFrQjtJQUVsQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUV2QyxPQUFPLHNCQUFZLENBQUMsSUFBSSxDQUN0QjtRQUNFLEdBQUcsTUFBTTtRQUNULFNBQVM7UUFDVCxRQUFRO1FBQ1IsVUFBVSxFQUFFLFNBQVM7UUFDckIsU0FBUyxFQUFFLFFBQVE7UUFDbkIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQ2hDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxlQUFlO0tBQ3pDLEVBQ0QsVUFBVSxFQUNWLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsOEJBQXNCLEVBQUUsQ0FDMUQsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUF5QjtJQUM3RSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQztJQUV2QyxPQUFPLDhDQUE4QyxDQUNuRDtRQUNFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUNYLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7UUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1FBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLFdBQVc7UUFDWCxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDN0IsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO0tBQ3RDLEVBQ0QsVUFBVSxDQUNYLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsNEJBQTRCLENBQUMsRUFDM0MsU0FBUyxFQUNULFVBQVUsR0FDeUI7SUFDbkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxNQUFNLElBQUEsNkJBQVksRUFBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxPQUFPLDhDQUE4QyxDQUNuRDtRQUNFLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRTtRQUNoQixLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDdEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxVQUFVO1FBQy9CLFFBQVEsRUFBRSxTQUFTLENBQUMsU0FBUztRQUM3QixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDcEIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1FBQzNDLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSSxJQUFJLEVBQUU7UUFDMUIsZUFBZSxFQUFFLFNBQVMsQ0FBQyxnQkFBZ0I7UUFDM0MsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO0tBQ3JCLEVBQ0QsVUFBVSxDQUNYLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -7,6 +7,7 @@ exports.BFF_KEY_HEADER = void 0;
|
|
|
7
7
|
exports.default = createAuthModeMiddleware;
|
|
8
8
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
9
9
|
const auth_mode_1 = require("./auth-mode");
|
|
10
|
+
const agent_token_1 = require("../api-key/agent-token");
|
|
10
11
|
const bff_http_error_1 = require("../http/bff-http-error");
|
|
11
12
|
const bff_token_1 = require("../oauth/bff-token");
|
|
12
13
|
exports.BFF_KEY_HEADER = 'X-Forest-Bff-Key';
|
|
@@ -45,9 +46,12 @@ function createAuthModeMiddleware({ authSecret, }) {
|
|
|
45
46
|
const mode = (0, auth_mode_1.resolveAuthMode)({ hasBearer: bearer !== undefined, hasApiKey: apiKey !== '' });
|
|
46
47
|
ctx.state.authMode = mode;
|
|
47
48
|
if (mode === 'oauth') {
|
|
48
|
-
|
|
49
|
+
const principal = verifyBffAccess(bearer, authSecret);
|
|
50
|
+
ctx.state.principal = principal;
|
|
51
|
+
ctx.state.agentToken = (0, agent_token_1.issueAgentTokenFromPrincipal)({ principal, authSecret });
|
|
52
|
+
ctx.set('Cache-Control', 'no-store');
|
|
49
53
|
}
|
|
50
54
|
await next();
|
|
51
55
|
};
|
|
52
56
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1tb2RlLW1pZGRsZXdhcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9hdXRoLW1vZGUtbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFvREEsMkNBb0JDO0FBckVELGdFQUF3QztBQUV4QywyQ0FBa0U7QUFDbEUsd0RBQXNFO0FBQ3RFLDJEQUFzRTtBQUN0RSxrREFBMkQ7QUFFOUMsUUFBQSxjQUFjLEdBQUcsa0JBQWtCLENBQUM7QUFNakQsU0FBUyxlQUFlLENBQUMsS0FBYSxFQUFFLFVBQWtCO0lBQ3hELElBQUksT0FBZ0IsQ0FBQztJQUVyQiw2RUFBNkU7SUFDN0UsOEVBQThFO0lBQzlFLGtFQUFrRTtJQUNsRSxJQUFJLENBQUM7UUFDSCxPQUFPLEdBQUcsc0JBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtZQUMvQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDckIsZ0JBQWdCLEVBQUUsSUFBSTtTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsTUFBTSxJQUFBLDZCQUFZLEdBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDRSxPQUFPLE9BQU8sS0FBSyxRQUFRO1FBQzNCLE9BQU8sS0FBSyxJQUFJO1FBQ2YsT0FBOEIsQ0FBQyxJQUFJLEtBQUssaUNBQXFCLEVBQzlELENBQUM7UUFDRCxNQUFNLElBQUEsNkJBQVksR0FBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBNEIsQ0FBQztJQUU3QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBQSw2QkFBWSxHQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUEsK0JBQWMsR0FBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxPQUFPLE9BQWdDLENBQUM7QUFDMUMsQ0FBQztBQUVELFNBQXdCLHdCQUF3QixDQUFDLEVBQy9DLFVBQVUsR0FDZ0I7SUFDMUIsT0FBTyxLQUFLLFVBQVUsa0JBQWtCLENBQUMsR0FBRyxFQUFFLElBQUk7UUFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBQSw4QkFBa0IsRUFBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDNUQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxzQkFBYyxDQUFDLENBQUM7UUFFdkMsTUFBTSxJQUFJLEdBQUcsSUFBQSwyQkFBZSxFQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sS0FBSyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTVGLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUNyQixNQUFNLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNoRSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDaEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBQSwwQ0FBNEIsRUFBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0FBQ0osQ0FBQyJ9
|
package/dist/cli-core.js
CHANGED
|
@@ -125,10 +125,10 @@ function buildAgentRouteMiddlewares(config, logger) {
|
|
|
125
125
|
envSecret: apiKeyConfig.forestEnvSecret,
|
|
126
126
|
logger,
|
|
127
127
|
});
|
|
128
|
-
const { agentUrl } = config;
|
|
128
|
+
const { agentUrl, agentTimeoutMs: timeoutMs } = config;
|
|
129
129
|
return [
|
|
130
|
-
(0, data_routes_middleware_1.default)({ store, agentUrl, logger }),
|
|
131
|
-
(0, action_routes_middleware_1.default)({ store, agentUrl, logger }),
|
|
130
|
+
(0, data_routes_middleware_1.default)({ store, agentUrl, timeoutMs, logger }),
|
|
131
|
+
(0, action_routes_middleware_1.default)({ store, agentUrl, timeoutMs, logger }),
|
|
132
132
|
];
|
|
133
133
|
}
|
|
134
134
|
function buildAgentMiddlewares(config, logger) {
|
|
@@ -178,4 +178,4 @@ function reportFatalError(err) {
|
|
|
178
178
|
process.stderr.write(`Error: ${(0, errors_1.extractErrorMessage)(err)}\n`);
|
|
179
179
|
process.exitCode = 1;
|
|
180
180
|
}
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
181
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUEyTUEseUJBa0NDO0FBRUQsNENBR0M7QUE5T0QsZ0RBQTZDO0FBRTdDLGlHQUE2RTtBQUM3RSwrRUFBNEQ7QUFDNUQsb0VBQTJEO0FBQzNELDRGQUF3RTtBQUN4RSw4RUFBb0Q7QUFDcEQsc0ZBQWtFO0FBQ2xFLDRFQUF5RDtBQUN6RCx1RkFBbUU7QUFDbkUsb0RBQWtEO0FBQ2xELDZFQUEwRDtBQUMxRCwyRUFBaUU7QUFDakUsMkZBQXVFO0FBQ3ZFLHFDQUErQztBQUMvQywwREFBcUQ7QUFDckQsNkVBQW1EO0FBQ25ELCtFQUE0RDtBQUM1RCx3RkFBOEQ7QUFDOUQsd0VBQXFEO0FBQ3JELDBFQUErRDtBQUMvRCx3RUFBcUQ7QUFDckQsdUZBQTZEO0FBQzdELHlGQUFzRTtBQUN0RSx3REFBZ0M7QUFFaEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQzFCLE1BQU0sbUJBQW1CLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFFekMsU0FBUyxXQUFXLENBQUMsSUFBWTtJQUMvQixPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6RCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsVUFBc0I7SUFDekMsT0FBTyxLQUFLLFVBQVUsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJO1FBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUViLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxVQUFVLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUFD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
|
|
@@ -11,9 +11,12 @@ export interface BFFConfig {
|
|
|
11
11
|
allowedOrigins: string[];
|
|
12
12
|
invalidAllowedOrigins: string[];
|
|
13
13
|
defaultTimezone?: string;
|
|
14
|
+
agentTimeoutMs?: number;
|
|
14
15
|
httpPort: number;
|
|
15
16
|
presence: PresenceMap;
|
|
16
17
|
hasAllRequired: boolean;
|
|
17
18
|
}
|
|
19
|
+
export declare const DEFAULT_AGENT_TIMEOUT_MS = 10000;
|
|
20
|
+
export declare const MAX_AGENT_TIMEOUT_MS = 2147483647;
|
|
18
21
|
export declare function parseConfig(env: NodeJS.ProcessEnv): BFFConfig;
|
|
19
22
|
//# sourceMappingURL=env-config.d.ts.map
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.REQUIRED_KEYS = void 0;
|
|
6
|
+
exports.MAX_AGENT_TIMEOUT_MS = exports.DEFAULT_AGENT_TIMEOUT_MS = exports.REQUIRED_KEYS = void 0;
|
|
7
7
|
exports.parseConfig = parseConfig;
|
|
8
8
|
const zod_1 = require("zod");
|
|
9
9
|
const origin_1 = require("../cors/origin");
|
|
@@ -19,6 +19,8 @@ exports.REQUIRED_KEYS = [
|
|
|
19
19
|
];
|
|
20
20
|
const URL_KEYS = ['FOREST_SERVER_URL', 'FOREST_APP_URL', 'AGENT_URL'];
|
|
21
21
|
const DECIMAL_INTEGER = /^\d+$/;
|
|
22
|
+
exports.DEFAULT_AGENT_TIMEOUT_MS = 10000;
|
|
23
|
+
exports.MAX_AGENT_TIMEOUT_MS = 2147483647;
|
|
22
24
|
const MAX_PORT = 65535;
|
|
23
25
|
const ENCRYPTION_KEY_BYTES = 32;
|
|
24
26
|
const BASE64_PATTERN = /^[A-Za-z0-9+/]+={0,2}$/;
|
|
@@ -49,6 +51,16 @@ function parseEncryptionKey(raw) {
|
|
|
49
51
|
}
|
|
50
52
|
return value;
|
|
51
53
|
}
|
|
54
|
+
function parseAgentTimeoutMs(raw) {
|
|
55
|
+
const value = normalize(raw);
|
|
56
|
+
if (value === undefined)
|
|
57
|
+
return exports.DEFAULT_AGENT_TIMEOUT_MS;
|
|
58
|
+
const timeout = DECIMAL_INTEGER.test(value.trim()) ? Number(value.trim()) : NaN;
|
|
59
|
+
if (Number.isNaN(timeout) || timeout === 0 || timeout > exports.MAX_AGENT_TIMEOUT_MS) {
|
|
60
|
+
throw new errors_1.ConfigurationError(`Invalid configuration: BFF_AGENT_TIMEOUT_MS must be a positive integer of at most ${exports.MAX_AGENT_TIMEOUT_MS} milliseconds.`);
|
|
61
|
+
}
|
|
62
|
+
return timeout;
|
|
63
|
+
}
|
|
52
64
|
function parseDefaultTimezone(raw) {
|
|
53
65
|
const value = normalize(raw);
|
|
54
66
|
if (value !== undefined && !(0, timezone_1.isValidTimezone)(value)) {
|
|
@@ -78,9 +90,10 @@ function parseConfig(env) {
|
|
|
78
90
|
allowedOrigins,
|
|
79
91
|
invalidAllowedOrigins,
|
|
80
92
|
defaultTimezone,
|
|
93
|
+
agentTimeoutMs: parseAgentTimeoutMs(env.BFF_AGENT_TIMEOUT_MS),
|
|
81
94
|
httpPort: parsePort(env.HTTP_PORT),
|
|
82
95
|
presence,
|
|
83
96
|
hasAllRequired: exports.REQUIRED_KEYS.every(key => presence[key]) && tokenEncryptionKey !== undefined,
|
|
84
97
|
};
|
|
85
98
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvZW52LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUErR0Esa0NBc0NDO0FBckpELDZCQUF3QjtBQUV4QiwyQ0FBcUQ7QUFDckQsMkRBQTJDO0FBQzNDLHNDQUErQztBQUMvQyxtREFBdUQ7QUFFMUMsUUFBQSxhQUFhLEdBQUc7SUFDM0Isb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsZ0JBQWdCO0lBQ2hCLFdBQVc7Q0FDSCxDQUFDO0FBSVgsTUFBTSxRQUFRLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLENBQVUsQ0FBQztBQW9CL0UsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ25CLFFBQUEsd0JBQXdCLEdBQUcsS0FBTSxDQUFDO0FBQ2xDLFFBQUEsb0JBQW9CLEdBQUcsVUFBYSxDQUFDO0FBQ2xELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN2QixNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUNoQyxNQUFNLGNBQWMsR0FBRyx3QkFBd0IsQ0FBQztBQUNoRCxNQUFNLGVBQWUsR0FBRyxPQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFFeEQsU0FBUyxTQUFTLENBQUMsS0FBeUI7SUFDMUMsT0FBTyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxHQUF1QjtJQUN4QyxNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDNUIsSUFBSSxPQUFPLEtBQUssU0FBUyxJQUFJLE9BQU8sS0FBSyxFQUFFO1FBQUUs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
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface AgentDataClientOptions {
|
|
2
2
|
agentUrl: string;
|
|
3
3
|
token: string;
|
|
4
|
+
timeoutMs?: number;
|
|
4
5
|
}
|
|
5
6
|
export interface AgentDataClient {
|
|
6
7
|
list(collection: string, query: Record<string, unknown>): Promise<Record<string, unknown>[]>;
|
|
@@ -13,5 +14,5 @@ export interface AgentDataClient {
|
|
|
13
14
|
* so the BFF controls the query params — notably the resolved `timezone` — and can read the count
|
|
14
15
|
* endpoint's raw payload, which `collection.count()` coerces through `Number()` and loses.
|
|
15
16
|
*/
|
|
16
|
-
export default function createAgentDataClient({ agentUrl, token, }: AgentDataClientOptions): AgentDataClient;
|
|
17
|
+
export default function createAgentDataClient({ agentUrl, token, timeoutMs, }: AgentDataClientOptions): AgentDataClient;
|
|
17
18
|
//# sourceMappingURL=agent-data-client.d.ts.map
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.default = createAgentDataClient;
|
|
4
|
-
const
|
|
7
|
+
const create_agent_http_requester_1 = __importDefault(require("../agent/create-agent-http-requester"));
|
|
5
8
|
/**
|
|
6
9
|
* Thin data client bound to a request's agent token. Uses the raw `HttpRequester` (not `Collection`)
|
|
7
10
|
* so the BFF controls the query params — notably the resolved `timezone` — and can read the count
|
|
8
11
|
* endpoint's raw payload, which `collection.count()` coerces through `Number()` and loses.
|
|
9
12
|
*/
|
|
10
|
-
function createAgentDataClient({ agentUrl, token, }) {
|
|
11
|
-
const requester =
|
|
13
|
+
function createAgentDataClient({ agentUrl, token, timeoutMs, }) {
|
|
14
|
+
const requester = (0, create_agent_http_requester_1.default)(token, agentUrl, timeoutMs);
|
|
12
15
|
// Segments are passed raw: HttpRequester.buildUrl already runs the whole path through
|
|
13
16
|
// escapeUrlSlug/encodeURI, so pre-encoding here would double-encode (`|` -> `%257C`).
|
|
14
17
|
const relationPath = (collection, parentId, relation) => `/forest/${collection}/${parentId}/relationships/${relation}`;
|
|
@@ -29,4 +32,4 @@ function createAgentDataClient({ agentUrl, token, }) {
|
|
|
29
32
|
}),
|
|
30
33
|
};
|
|
31
34
|
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtZGF0YS1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YS9hZ2VudC1kYXRhLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQThCQSx3Q0FnQ0M7QUE5REQsdUdBQTRFO0FBeUI1RTs7OztHQUlHO0FBQ0gsU0FBd0IscUJBQXFCLENBQUMsRUFDNUMsUUFBUSxFQUNSLEtBQUssRUFDTCxTQUFTLEdBQ2M7SUFDdkIsTUFBTSxTQUFTLEdBQUcsSUFBQSxxQ0FBd0IsRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBRXZFLHNGQUFzRjtJQUN0RixzRkFBc0Y7SUFDdEYsTUFBTSxZQUFZLEdBQUcsQ0FBQyxVQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxFQUFFLENBQzlFLFdBQVcsVUFBVSxJQUFJLFFBQVEsa0JBQWtCLFFBQVEsRUFBRSxDQUFDO0lBRWhFLE9BQU87UUFDTCxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDMUIsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDMUUsUUFBUSxFQUFFLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQzlCLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDZCxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxXQUFXLFVBQVUsUUFBUTtZQUNuQyxLQUFLO1lBQ0wsbUJBQW1CLEVBQUUsSUFBSTtTQUMxQixDQUFDO1FBQ0osWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDdEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQy9GLGdCQUFnQixFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDMUQsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNkLE1BQU0sRUFBRSxLQUFLO1lBQ2IsSUFBSSxFQUFFLEdBQUcsWUFBWSxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDN0QsS0FBSztZQUNMLG1CQUFtQixFQUFFLElBQUk7U0FDMUIsQ0FBQztLQUNMLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -5,8 +5,9 @@ import type { Middleware } from 'koa';
|
|
|
5
5
|
export interface DataRoutesMiddlewareOptions {
|
|
6
6
|
store: ReadModelStore;
|
|
7
7
|
agentUrl: string;
|
|
8
|
+
timeoutMs?: number;
|
|
8
9
|
logger: Logger;
|
|
9
10
|
createClient?: (options: AgentDataClientOptions) => AgentDataClient;
|
|
10
11
|
}
|
|
11
|
-
export default function createDataRoutesMiddleware({ store, agentUrl, logger, createClient, }: DataRoutesMiddlewareOptions): Middleware;
|
|
12
|
+
export default function createDataRoutesMiddleware({ store, agentUrl, timeoutMs, logger, createClient, }: DataRoutesMiddlewareOptions): Middleware;
|
|
12
13
|
//# sourceMappingURL=data-routes-middleware.d.ts.map
|
|
@@ -32,7 +32,11 @@ function assertCollectionStillAllowed(readModel, collection) {
|
|
|
32
32
|
throw (0, bff_local_errors_1.unknownCollection)();
|
|
33
33
|
}
|
|
34
34
|
function resolveCapabilities(deps) {
|
|
35
|
-
return (0, agent_route_helpers_1.callAgent)(() => deps.store.getCapabilities(deps.collection, (0, agent_capabilities_fetcher_1.default)({
|
|
35
|
+
return (0, agent_route_helpers_1.callAgent)(() => deps.store.getCapabilities(deps.collection, (0, agent_capabilities_fetcher_1.default)({
|
|
36
|
+
agentUrl: deps.agentUrl,
|
|
37
|
+
token: deps.token,
|
|
38
|
+
timeoutMs: deps.timeoutMs,
|
|
39
|
+
})), deps.logger);
|
|
36
40
|
}
|
|
37
41
|
async function handleList(ctx, body, deps) {
|
|
38
42
|
(0, relation_field_guard_1.default)((0, agent_query_1.collectListFieldPaths)(body));
|
|
@@ -114,7 +118,7 @@ async function handleRelation(ctx, rawBody, match, { deps, readModel }) {
|
|
|
114
118
|
await handleRelationCount(ctx, (0, agent_query_1.parseRelationCountRequest)(rawBody), relationDeps);
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
|
-
function createDataRoutesMiddleware({ store, agentUrl, logger, createClient = agent_data_client_1.default, }) {
|
|
121
|
+
function createDataRoutesMiddleware({ store, agentUrl, timeoutMs, logger, createClient = agent_data_client_1.default, }) {
|
|
118
122
|
return async function dataRoutesMiddleware(ctx, next) {
|
|
119
123
|
const dataMatch = DATA_ROUTE.exec(ctx.path);
|
|
120
124
|
const relationMatch = dataMatch ? null : RELATION_ROUTE.exec(ctx.path);
|
|
@@ -135,9 +139,10 @@ function createDataRoutesMiddleware({ store, agentUrl, logger, createClient = ag
|
|
|
135
139
|
}
|
|
136
140
|
const deps = {
|
|
137
141
|
collection,
|
|
138
|
-
client: createClient({ agentUrl, token }),
|
|
142
|
+
client: createClient({ agentUrl, token, timeoutMs }),
|
|
139
143
|
store,
|
|
140
144
|
agentUrl,
|
|
145
|
+
timeoutMs,
|
|
141
146
|
token,
|
|
142
147
|
timezone: ctx.state.timezone,
|
|
143
148
|
logger,
|
|
@@ -158,4 +163,4 @@ function createDataRoutesMiddleware({ store, agentUrl, logger, createClient = ag
|
|
|
158
163
|
}
|
|
159
164
|
};
|
|
160
165
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1yb3V0ZXMtbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhL2RhdGEtcm91dGVzLW1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFxT0EsNkNBMERDO0FBalJELDRFQUErRDtBQUMvRCwrQ0FTdUI7QUFDdkIseURBQXVFO0FBQ3ZFLHFFQUtxQztBQUNyQywrREFBOEU7QUFDOUUsMEdBQXNGO0FBQ3RGLGlGQUc4QztBQUM5Qyw4RkFBNEU7QUFFNUUsTUFBTSxVQUFVLEdBQUcsc0NBQXNDLENBQUM7QUFDMUQsTUFBTSxjQUFjLEdBQUcsMERBQTBELENBQUM7QUFFbEYsb0dBQW9HO0FBQ3BHLHFHQUFxRztBQUNyRyxTQUFTLHdCQUF3QixDQUFDLE1BQWtDO0lBQ2xFLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNsRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssZUFBZTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRTlFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUN2QixDQUFDO0FBdUJELG1HQUFtRztBQUNuRyxrR0FBa0c7QUFDbEcscUdBQXFHO0FBQ3JHLDJGQUEyRjtBQUMzRixTQUFTLDRCQUE0QixDQUFDLFNBQW9CLEVBQUUsVUFBa0I7SUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7UUFBRSxNQUFNLElBQUEsb0NBQWlCLEdBQUUsQ0FBQztBQUM1RSxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FDMUIsSUFBd0I7SUFFeEIsT0FBTyxJQUFBLCtCQUFTLEVBQ2QsR0FBRyxFQUFFLENBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBQSxv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
|
|
@@ -29,9 +29,6 @@ async function resolveReadModel(store) {
|
|
|
29
29
|
throw error;
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
// The agent token is minted only on the API-key path; the OAuth path sets a principal but no agent
|
|
33
|
-
// token yet. Fail closed instead of calling the agent with `Bearer undefined`.
|
|
34
|
-
// TODO(PRD-637): mint an agent token from the OAuth principal so agent routes work in OAuth mode.
|
|
35
32
|
function requireAgentToken(ctx) {
|
|
36
33
|
const token = ctx.state.agentToken;
|
|
37
34
|
if (!token)
|
|
@@ -48,4 +45,4 @@ async function callAgent(fn, logger) {
|
|
|
48
45
|
throw (0, agent_error_mapper_1.mapAgentError)(error, { logger });
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtcm91dGUtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odHRwL2FnZW50LXJvdXRlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVQSxzQ0FNQztBQUVELDRDQU9DO0FBRUQsOENBS0M7QUFJRCw4QkFNQztBQXJDRCw2REFBcUQ7QUFDckQscURBQWdEO0FBQ2hELHlEQUF1RTtBQUN2RSxrRUFBMEQ7QUFFMUQsU0FBZ0IsYUFBYSxDQUFDLEdBQVcsRUFBRSxLQUFhO0lBQ3RELElBQUksQ0FBQztRQUNILE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sSUFBQSxpQ0FBYyxFQUFDLGFBQWEsS0FBSyxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxLQUFxQjtJQUMxRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksZ0JBQXNCO1lBQUUsTUFBTSxJQUFBLG9DQUFpQixHQUFFLENBQUM7UUFDdkUsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLEdBQVk7SUFDNUMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFnQyxDQUFDO0lBQ3pELElBQUksQ0FBQyxLQUFLO1FBQUUsTUFBTSxJQUFBLDZCQUFZLEVBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUV4RSxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxtR0FBbUc7QUFDbkcsNkRBQTZEO0FBQ3RELEtBQUssVUFBVSxTQUFTLENBQUksRUFBb0IsRUFBRSxNQUFjO0lBQ3JFLElBQUksQ0FBQztRQUNILE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBQSxrQ0FBYSxFQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -18,6 +18,7 @@ export interface BffAccessTokenPayload {
|
|
|
18
18
|
team: string;
|
|
19
19
|
rendering_id: string;
|
|
20
20
|
permission_level: string;
|
|
21
|
+
role?: string;
|
|
21
22
|
tags: Record<string, string>;
|
|
22
23
|
}
|
|
23
24
|
export declare function issueBffAccessToken({ sid, user, renderingId, authSecret, expiresInSeconds, }: IssueBffAccessTokenParams): string;
|
package/dist/oauth/bff-token.js
CHANGED
|
@@ -19,6 +19,7 @@ function issueBffAccessToken({ sid, user, renderingId, authSecret, expiresInSeco
|
|
|
19
19
|
team: user.team,
|
|
20
20
|
rendering_id: String(renderingId),
|
|
21
21
|
permission_level: user.permissionLevel,
|
|
22
|
+
role: user.role,
|
|
22
23
|
tags: user.tags ?? {},
|
|
23
24
|
};
|
|
24
25
|
return jsonwebtoken_1.default.sign(payload, authSecret, {
|
|
@@ -26,4 +27,4 @@ function issueBffAccessToken({ sid, user, renderingId, authSecret, expiresInSeco
|
|
|
26
27
|
expiresIn: Math.min(expiresInSeconds, exports.BFF_ACCESS_TOKEN_MAX_EXPIRES_IN),
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmZmLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29hdXRoL2JmZi10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUE2QkEsa0RBeUJDO0FBcERELGdFQUF3QztBQUUzQixRQUFBLHFCQUFxQixHQUFHLFlBQVksQ0FBQztBQUNyQyxRQUFBLCtCQUErQixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUF3QnZELFNBQWdCLG1CQUFtQixDQUFDLEVBQ2xDLEdBQUcsRUFDSCxJQUFJLEVBQ0osV0FBVyxFQUNYLFVBQVUsRUFDVixnQkFBZ0IsR0FDVTtJQUMxQixNQUFNLE9BQU8sR0FBMEI7UUFDckMsSUFBSSxFQUFFLDZCQUFxQjtRQUMzQixHQUFHO1FBQ0gsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUztRQUMxQixTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsWUFBWSxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDakMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGVBQWU7UUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtLQUN0QixDQUFDO0lBRUYsT0FBTyxzQkFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO1FBQzVDLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLHVDQUErQixDQUFDO0tBQ3ZFLENBQUMsQ0FBQztBQUNMLENBQUMifQ==
|
|
@@ -2,10 +2,11 @@ import type { CapabilitiesFetcher } from './capabilities-cache';
|
|
|
2
2
|
export interface AgentCapabilitiesFetcherOptions {
|
|
3
3
|
agentUrl: string;
|
|
4
4
|
token: string;
|
|
5
|
+
timeoutMs?: number;
|
|
5
6
|
}
|
|
6
7
|
/**
|
|
7
8
|
* Builds a capabilities fetcher bound to a request's agent token. The cache calls it only on a
|
|
8
9
|
* miss, so the token of whichever request first populates a collection is the one used.
|
|
9
10
|
*/
|
|
10
|
-
export default function createAgentCapabilitiesFetcher({ agentUrl, token, }: AgentCapabilitiesFetcherOptions): CapabilitiesFetcher;
|
|
11
|
+
export default function createAgentCapabilitiesFetcher({ agentUrl, token, timeoutMs, }: AgentCapabilitiesFetcherOptions): CapabilitiesFetcher;
|
|
11
12
|
//# sourceMappingURL=agent-capabilities-fetcher.d.ts.map
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.default = createAgentCapabilitiesFetcher;
|
|
4
7
|
const agent_client_1 = require("@forestadmin/agent-client");
|
|
8
|
+
const create_agent_http_requester_1 = __importDefault(require("../agent/create-agent-http-requester"));
|
|
5
9
|
/**
|
|
6
10
|
* Builds a capabilities fetcher bound to a request's agent token. The cache calls it only on a
|
|
7
11
|
* miss, so the token of whichever request first populates a collection is the one used.
|
|
8
12
|
*/
|
|
9
|
-
function createAgentCapabilitiesFetcher({ agentUrl, token, }) {
|
|
10
|
-
const client = (0, agent_client_1.createRemoteAgentClient)({
|
|
13
|
+
function createAgentCapabilitiesFetcher({ agentUrl, token, timeoutMs, }) {
|
|
14
|
+
const client = (0, agent_client_1.createRemoteAgentClient)({
|
|
15
|
+
url: agentUrl,
|
|
16
|
+
token,
|
|
17
|
+
httpRequester: (0, create_agent_http_requester_1.default)(token, agentUrl, timeoutMs),
|
|
18
|
+
});
|
|
11
19
|
return collection => client.collection(collection).capabilities();
|
|
12
20
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtY2FwYWJpbGl0aWVzLWZldGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVhZC1tb2RlbC9hZ2VudC1jYXBhYmlsaXRpZXMtZmV0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSxpREFZQztBQTFCRCw0REFBb0U7QUFFcEUsdUdBQTRFO0FBUTVFOzs7R0FHRztBQUNILFNBQXdCLDhCQUE4QixDQUFDLEVBQ3JELFFBQVEsRUFDUixLQUFLLEVBQ0wsU0FBUyxHQUN1QjtJQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHNDQUF1QixFQUFDO1FBQ3JDLEdBQUcsRUFBRSxRQUFRO1FBQ2IsS0FBSztRQUNMLGFBQWEsRUFBRSxJQUFBLHFDQUF3QixFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDO0tBQ3BFLENBQUMsQ0FBQztJQUVILE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQ3BFLENBQUMifQ==
|