@forestadmin/agent 1.108.2 → 1.110.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/agent.d.ts +14 -9
- package/dist/agent.js +129 -6
- package/dist/audit-trail/sql-store.js +39 -27
- package/dist/audit-trail/types.d.ts +12 -2
- package/dist/bff-routes.d.ts +6 -0
- package/dist/bff-routes.js +51 -2
- package/dist/embedded-bff.d.ts +23 -6
- package/dist/embedded-bff.js +70 -32
- package/dist/framework-mounter.d.ts +2 -1
- package/dist/framework-mounter.js +4 -1
- package/dist/gateway.d.ts +19 -0
- package/dist/gateway.js +96 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/routes/access/audit-trail-timeline.js +27 -15
- package/dist/routes/capabilities.js +4 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.js +1 -1
- package/dist/utils/express-to-koa.js +3 -1
- package/package.json +7 -7
package/dist/agent.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type { ForestAdminHttpDriverServices } from './services';
|
|
2
|
-
import type { AgentOptions, AgentOptionsWithDefaults, BffEmbedOptions, WorkflowExecutorEmbedOptions } from './types';
|
|
2
|
+
import type { AgentOptions, AgentOptionsWithDefaults, BffEmbedOptions, GatewayOptions, McpEmbedOptions, WorkflowExecutorEmbedOptions } from './types';
|
|
3
3
|
import type { CollectionCustomizer, DataSourceChartDefinition, DataSourceOptions, Plugin, TCollectionName, TSchema } from '@forestadmin/datasource-customizer';
|
|
4
4
|
import type { DataSource, DataSourceFactory } from '@forestadmin/datasource-toolkit';
|
|
5
|
-
import type { FileUploadsOptions, TokenTtlOptions, ToolName } from '@forestadmin/mcp-server';
|
|
6
5
|
import { DataSourceCustomizer } from '@forestadmin/datasource-customizer';
|
|
7
6
|
import FrameworkMounter from './framework-mounter';
|
|
8
7
|
import CustomizationService from './services/model-customizations/customization';
|
|
@@ -34,7 +33,9 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
34
33
|
private embeddedExecutor;
|
|
35
34
|
/** In-process BFF, created only when addBff() is called. */
|
|
36
35
|
private embeddedBff;
|
|
36
|
+
private gateway;
|
|
37
37
|
private isRestarting;
|
|
38
|
+
private isStopped;
|
|
38
39
|
/**
|
|
39
40
|
* Set as soon as start() begins, not once it finishes: mount() drains the `onFirstStart` hooks
|
|
40
41
|
* partway through, so a builder call landing mid-startup is already too late. Cleared again when
|
|
@@ -126,7 +127,10 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
126
127
|
* agent.use(advancedExportPlugin, { format: 'xlsx' });
|
|
127
128
|
*/
|
|
128
129
|
use<Options>(plugin: Plugin<Options>, options?: Options): this;
|
|
130
|
+
addGateway(options: GatewayOptions): this;
|
|
129
131
|
/**
|
|
132
|
+
* @deprecated Use `addGateway({ mcp })`. Keeps its current paths and semantics.
|
|
133
|
+
*
|
|
130
134
|
* Enable MCP (Model Context Protocol) server support.
|
|
131
135
|
* This allows AI assistants to interact with your Forest Admin data.
|
|
132
136
|
*
|
|
@@ -156,13 +160,7 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
156
160
|
* agent.mountAiMcpServer({ fileUploads: { storage } });
|
|
157
161
|
* agent.mountAiMcpServer({ fileUploads: false });
|
|
158
162
|
*/
|
|
159
|
-
mountAiMcpServer(options?:
|
|
160
|
-
enabledTools?: ToolName[];
|
|
161
|
-
basePath?: string;
|
|
162
|
-
tokenTtl?: TokenTtlOptions;
|
|
163
|
-
allowedOAuthClients?: string[];
|
|
164
|
-
fileUploads?: false | FileUploadsOptions;
|
|
165
|
-
}): this;
|
|
163
|
+
mountAiMcpServer(options?: McpEmbedOptions): this;
|
|
166
164
|
/**
|
|
167
165
|
* Run a workflow executor in-process, alongside the agent. The agent boots it on start(),
|
|
168
166
|
* stops it on stop(), and proxies `/_internal/executor/*` to it — no separate deployment.
|
|
@@ -188,6 +186,8 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
188
186
|
*/
|
|
189
187
|
addWorkflowExecutor(options?: WorkflowExecutorEmbedOptions): this;
|
|
190
188
|
/**
|
|
189
|
+
* @deprecated Use `addGateway({ api })`. Keeps serving on `/bff`.
|
|
190
|
+
*
|
|
191
191
|
* Serve a BFF in-process, alongside the agent, at `/bff` — no second deployment, no second port.
|
|
192
192
|
* The agent builds it on start(), stops it on stop(), and hands it a dispatcher that reaches its
|
|
193
193
|
* own stack without a socket, so this works the same on every mount target.
|
|
@@ -216,6 +216,11 @@ export default class Agent<S extends TSchema = TSchema> extends FrameworkMounter
|
|
|
216
216
|
* .start();
|
|
217
217
|
*/
|
|
218
218
|
addBff(options?: BffEmbedOptions): this;
|
|
219
|
+
private prepareGateway;
|
|
220
|
+
private gatewayApi;
|
|
221
|
+
private warnIfMcpAliasUsed;
|
|
222
|
+
private setRootHandlers;
|
|
223
|
+
private logGatewayRoutes;
|
|
219
224
|
protected getRoutes(dataSource: DataSource, services: ForestAdminHttpDriverServices): import("./routes/base-route").default[];
|
|
220
225
|
/**
|
|
221
226
|
* Create an http handler which can respond to all queries which are expected from an agent.
|
package/dist/agent.js
CHANGED
|
@@ -37,6 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
const datasource_customizer_1 = require("@forestadmin/datasource-customizer");
|
|
40
|
+
const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
|
|
40
41
|
const bodyparser_1 = __importDefault(require("@koa/bodyparser"));
|
|
41
42
|
const cors_1 = __importDefault(require("@koa/cors"));
|
|
42
43
|
const router_1 = __importDefault(require("@koa/router"));
|
|
@@ -47,6 +48,7 @@ const bff_routes_1 = require("./bff-routes");
|
|
|
47
48
|
const embedded_bff_1 = __importDefault(require("./embedded-bff"));
|
|
48
49
|
const embedded_workflow_executor_1 = __importDefault(require("./embedded-workflow-executor"));
|
|
49
50
|
const framework_mounter_1 = __importDefault(require("./framework-mounter"));
|
|
51
|
+
const gateway_1 = require("./gateway");
|
|
50
52
|
const routes_1 = __importDefault(require("./routes"));
|
|
51
53
|
const services_1 = __importDefault(require("./services"));
|
|
52
54
|
const customization_1 = __importDefault(require("./services/model-customizations/customization"));
|
|
@@ -60,6 +62,8 @@ const normalizeMcpBasePath = (basePath) => `/${(basePath ?? '').trim()}`.replace
|
|
|
60
62
|
const bffMcpCollision = (mcpBasePath) => `Cannot use addBff together with mountAiMcpServer({ basePath: '${mcpBasePath}' }): the MCP ` +
|
|
61
63
|
`server would claim ${bff_routes_1.BFF_PREFIX} paths the embedded BFF answers on (${bff_routes_1.BFF_PREFIX}/oauth, ` +
|
|
62
64
|
`${bff_routes_1.BFF_PREFIX}/mcp). Mount the MCP server elsewhere.`;
|
|
65
|
+
const GATEWAY_MIXING = 'addGateway() cannot be combined with mountAiMcpServer() or addBff(): configure every ' +
|
|
66
|
+
'service through addGateway({ mcp, api }), or keep both aliases.';
|
|
63
67
|
/**
|
|
64
68
|
* Allow to create a new Forest Admin agent from scratch.
|
|
65
69
|
* Builds the application by composing and configuring all the collection decorators.
|
|
@@ -96,7 +100,9 @@ class Agent extends framework_mounter_1.default {
|
|
|
96
100
|
this.embeddedExecutor = null;
|
|
97
101
|
/** In-process BFF, created only when addBff() is called. */
|
|
98
102
|
this.embeddedBff = null;
|
|
103
|
+
this.gateway = null;
|
|
99
104
|
this.isRestarting = false;
|
|
105
|
+
this.isStopped = false;
|
|
100
106
|
/**
|
|
101
107
|
* Set as soon as start() begins, not once it finishes: mount() drains the `onFirstStart` hooks
|
|
102
108
|
* partway through, so a builder call landing mid-startup is already too late. Cleared again when
|
|
@@ -116,22 +122,36 @@ class Agent extends framework_mounter_1.default {
|
|
|
116
122
|
async start() {
|
|
117
123
|
let mounted = false;
|
|
118
124
|
this.startupBegun = true;
|
|
125
|
+
this.isStopped = false;
|
|
119
126
|
try {
|
|
120
127
|
// First, before anything is mounted or subscribed: everything it validates is what the caller
|
|
121
128
|
// handed to addBff(), so a mistyped key must fail on that line rather than leave the host
|
|
122
129
|
// serving /forest with a permanently bricked /bff.
|
|
130
|
+
await this.prepareGateway();
|
|
123
131
|
await this.embeddedBff?.prepare();
|
|
132
|
+
if (this.isStopped)
|
|
133
|
+
await this.embeddedBff?.stop();
|
|
134
|
+
if (this.gateway)
|
|
135
|
+
this.setRootHandlers();
|
|
136
|
+
if (this.isStopped)
|
|
137
|
+
return;
|
|
138
|
+
this.warnIfMcpAliasUsed();
|
|
124
139
|
const { router, mcp } = await this.buildRouterAndSendSchema();
|
|
140
|
+
if (this.isStopped)
|
|
141
|
+
return;
|
|
125
142
|
await this.options.forestAdminClient.subscribeToServerEvents();
|
|
126
143
|
this.options.forestAdminClient.onRefreshCustomizations(this.restart.bind(this));
|
|
127
|
-
this.
|
|
144
|
+
this.setRootHandlers(mcp);
|
|
128
145
|
await this.mount(router);
|
|
129
146
|
mounted = true;
|
|
130
147
|
// Boot after mount(): the embedded executor reaches the agent over HTTP, and the
|
|
131
148
|
// standalone server's host/port (used to derive that URL) are only known once mounted.
|
|
132
149
|
await this.embeddedExecutor?.start(this.standaloneServerHost, this.standaloneServerPort);
|
|
150
|
+
if (this.isStopped)
|
|
151
|
+
return;
|
|
133
152
|
// Same reason, without the socket: the dispatcher injects into the stack mount() just built.
|
|
134
153
|
await this.embeddedBff?.start(this.getInProcessDispatcher());
|
|
154
|
+
this.logGatewayRoutes();
|
|
135
155
|
// Here rather than in initializeMcpServer(): that one reruns on every restart() and each run
|
|
136
156
|
// would cost a SaaS round-trip for a warning already given.
|
|
137
157
|
if (this.mcpEnabled)
|
|
@@ -167,6 +187,9 @@ class Agent extends framework_mounter_1.default {
|
|
|
167
187
|
* Stop the agent.
|
|
168
188
|
*/
|
|
169
189
|
async stop() {
|
|
190
|
+
this.isStopped = true;
|
|
191
|
+
if (this.gateway?.build)
|
|
192
|
+
this.setRootHandlers();
|
|
170
193
|
// Stop answering before the stack it dispatches into goes away: the host application keeps
|
|
171
194
|
// whatever middleware it registered, so a stopped agent would otherwise still serve BFF data.
|
|
172
195
|
await this.embeddedBff?.stop();
|
|
@@ -201,7 +224,9 @@ class Agent extends framework_mounter_1.default {
|
|
|
201
224
|
try {
|
|
202
225
|
// We force sending schema when restarting
|
|
203
226
|
const { router, mcp } = await this.buildRouterAndSendSchema();
|
|
204
|
-
this.
|
|
227
|
+
if (this.isStopped)
|
|
228
|
+
return;
|
|
229
|
+
this.setRootHandlers(mcp);
|
|
205
230
|
await this.remount(router);
|
|
206
231
|
// A restart means the customizations changed, so the schema the BFF read is stale.
|
|
207
232
|
this.embeddedBff?.invalidate();
|
|
@@ -285,7 +310,34 @@ class Agent extends framework_mounter_1.default {
|
|
|
285
310
|
this.customizer.use(plugin, options);
|
|
286
311
|
return this;
|
|
287
312
|
}
|
|
313
|
+
addGateway(options) {
|
|
314
|
+
if (this.gateway)
|
|
315
|
+
throw new Error('addGateway can only be called once.');
|
|
316
|
+
if (this.startupBegun) {
|
|
317
|
+
throw new Error('addGateway must be called before start(): the agent is already starting.');
|
|
318
|
+
}
|
|
319
|
+
if (this.mcpEnabled || this.embeddedBff)
|
|
320
|
+
throw new Error(GATEWAY_MIXING);
|
|
321
|
+
const services = (0, gateway_1.resolveGatewayServices)(options);
|
|
322
|
+
this.gateway = {
|
|
323
|
+
basePath: options.basePath ?? '',
|
|
324
|
+
services,
|
|
325
|
+
allowedOAuthClients: options.allowedOAuthClients,
|
|
326
|
+
};
|
|
327
|
+
if (services.mcp) {
|
|
328
|
+
this.mcpEnabled = true;
|
|
329
|
+
this.mcpEnabledTools = services.mcp.enabledTools;
|
|
330
|
+
this.mcpTokenTtl = services.mcp.tokenTtl;
|
|
331
|
+
this.mcpAllowedOAuthClients = options.allowedOAuthClients;
|
|
332
|
+
this.mcpFileUploads = services.mcp.fileUploads;
|
|
333
|
+
}
|
|
334
|
+
if (services.api)
|
|
335
|
+
this.getInProcessDispatcher();
|
|
336
|
+
return this;
|
|
337
|
+
}
|
|
288
338
|
/**
|
|
339
|
+
* @deprecated Use `addGateway({ mcp })`. Keeps its current paths and semantics.
|
|
340
|
+
*
|
|
289
341
|
* Enable MCP (Model Context Protocol) server support.
|
|
290
342
|
* This allows AI assistants to interact with your Forest Admin data.
|
|
291
343
|
*
|
|
@@ -316,6 +368,8 @@ class Agent extends framework_mounter_1.default {
|
|
|
316
368
|
* agent.mountAiMcpServer({ fileUploads: false });
|
|
317
369
|
*/
|
|
318
370
|
mountAiMcpServer(options) {
|
|
371
|
+
if (this.gateway)
|
|
372
|
+
throw new Error(GATEWAY_MIXING);
|
|
319
373
|
if (this.embeddedBff && (0, bff_routes_1.collidesWithBff)(options?.basePath)) {
|
|
320
374
|
throw new Error(bffMcpCollision(options?.basePath));
|
|
321
375
|
}
|
|
@@ -363,6 +417,8 @@ class Agent extends framework_mounter_1.default {
|
|
|
363
417
|
return this;
|
|
364
418
|
}
|
|
365
419
|
/**
|
|
420
|
+
* @deprecated Use `addGateway({ api })`. Keeps serving on `/bff`.
|
|
421
|
+
*
|
|
366
422
|
* Serve a BFF in-process, alongside the agent, at `/bff` — no second deployment, no second port.
|
|
367
423
|
* The agent builds it on start(), stops it on stop(), and hands it a dispatcher that reaches its
|
|
368
424
|
* own stack without a socket, so this works the same on every mount target.
|
|
@@ -391,6 +447,8 @@ class Agent extends framework_mounter_1.default {
|
|
|
391
447
|
* .start();
|
|
392
448
|
*/
|
|
393
449
|
addBff(options = {}) {
|
|
450
|
+
if (this.gateway)
|
|
451
|
+
throw new Error(GATEWAY_MIXING);
|
|
394
452
|
if (this.embeddedBff) {
|
|
395
453
|
throw new Error('addBff can only be called once.');
|
|
396
454
|
}
|
|
@@ -405,15 +463,75 @@ class Agent extends framework_mounter_1.default {
|
|
|
405
463
|
if ((0, bff_routes_1.collidesWithBff)(this.mcpBasePath)) {
|
|
406
464
|
throw new Error(bffMcpCollision(this.mcpBasePath));
|
|
407
465
|
}
|
|
408
|
-
const bff = new embedded_bff_1.default(this.options, options);
|
|
466
|
+
const bff = new embedded_bff_1.default(this.options, options, { prefix: bff_routes_1.BFF_PREFIX });
|
|
409
467
|
this.embeddedBff = bff;
|
|
410
468
|
// Registered now rather than at start(): getInProcessDispatcher() pushes its hook the first
|
|
411
469
|
// time it is called, and mount() only runs the hooks registered before it — asked for later,
|
|
412
470
|
// the dispatcher would have no handler until the first restart.
|
|
413
471
|
this.getInProcessDispatcher();
|
|
414
|
-
this.setBffCallback(bff.handle);
|
|
472
|
+
this.setBffCallback((0, bff_routes_1.createBffAliasCallback)(bff.handle, this.options.logger));
|
|
415
473
|
return this;
|
|
416
474
|
}
|
|
475
|
+
async prepareGateway() {
|
|
476
|
+
if (!this.gateway)
|
|
477
|
+
return;
|
|
478
|
+
const { services } = this.gateway;
|
|
479
|
+
if (!services.mcp && !services.api) {
|
|
480
|
+
throw new Error('addGateway() enables no service: pass mcp, api, or both, e.g. addGateway({ mcp: true }).');
|
|
481
|
+
}
|
|
482
|
+
(0, forestadmin_client_1.normalizeDomainList)(this.gateway.allowedOAuthClients);
|
|
483
|
+
const { createGatewaySwitch, makeIsMcpRoute, normalizeMountPath } = await Promise.resolve().then(() => __importStar(require('@forestadmin/mcp-server')));
|
|
484
|
+
const basePath = normalizeMountPath(this.gateway.basePath, 'basePath');
|
|
485
|
+
(0, gateway_1.assertNoGatewayOverlap)(basePath, this.completeMountPrefix, services);
|
|
486
|
+
this.gateway.basePath = basePath;
|
|
487
|
+
if (services.mcp)
|
|
488
|
+
this.mcpBasePath = basePath || undefined;
|
|
489
|
+
const bff = services.api ? this.gatewayApi(basePath, services.api) : null;
|
|
490
|
+
const api = bff ? { matches: (path) => bff.claims(path), callback: bff.handle } : null;
|
|
491
|
+
const isMcpRoute = makeIsMcpRoute(basePath);
|
|
492
|
+
const mcpStarting = services.mcp ? (0, gateway_1.mcpUnavailable)(isMcpRoute, 'starting') : null;
|
|
493
|
+
if (services.mcp)
|
|
494
|
+
this.gateway.mcpStopped = (0, gateway_1.mcpUnavailable)(isMcpRoute, 'stopped');
|
|
495
|
+
this.gateway.build = mcp => createGatewaySwitch({
|
|
496
|
+
basePath,
|
|
497
|
+
mcp: mcp ?? mcpStarting ?? undefined,
|
|
498
|
+
api: api ?? undefined,
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
gatewayApi(basePath, options) {
|
|
502
|
+
this.embeddedBff ?? (this.embeddedBff = new embedded_bff_1.default(this.options, options, {
|
|
503
|
+
prefix: `${basePath}/api`,
|
|
504
|
+
name: 'The Gateway API',
|
|
505
|
+
requiredVersion: gateway_1.AGENT_BFF_PEER_VERSION,
|
|
506
|
+
skipIpWhitelistWarning: Boolean(this.gateway?.services.mcp),
|
|
507
|
+
allowedOAuthClients: this.gateway?.allowedOAuthClients,
|
|
508
|
+
gateway: true,
|
|
509
|
+
}));
|
|
510
|
+
return this.embeddedBff;
|
|
511
|
+
}
|
|
512
|
+
warnIfMcpAliasUsed() {
|
|
513
|
+
if (!this.mcpEnabled || this.gateway)
|
|
514
|
+
return;
|
|
515
|
+
this.options.logger('Warn', '[MCP] mountAiMcpServer() is deprecated: use addGateway({ mcp }) instead. ' +
|
|
516
|
+
'It keeps serving on its current paths.');
|
|
517
|
+
}
|
|
518
|
+
setRootHandlers(mcp) {
|
|
519
|
+
if (!this.gateway?.build) {
|
|
520
|
+
this.setMcpCallback(mcp ?? null);
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
const stopped = this.isStopped ? this.gateway.mcpStopped : undefined;
|
|
524
|
+
this.setGatewayCallback(this.gateway.build(stopped ?? mcp));
|
|
525
|
+
}
|
|
526
|
+
logGatewayRoutes() {
|
|
527
|
+
if (!this.gateway)
|
|
528
|
+
return;
|
|
529
|
+
const { basePath, services, allowedOAuthClients } = this.gateway;
|
|
530
|
+
(0, gateway_1.describeGatewayRoutes)(basePath, services).forEach(line => this.options.logger('Info', line));
|
|
531
|
+
if (allowedOAuthClients && !(0, gateway_1.servesOAuth)(services)) {
|
|
532
|
+
this.options.logger('Warn', '[Gateway] allowedOAuthClients is set but no OAuth route is served (MCP off, API OAuth off).');
|
|
533
|
+
}
|
|
534
|
+
}
|
|
417
535
|
getRoutes(dataSource, services) {
|
|
418
536
|
return (0, routes_1.default)(dataSource, this.options, services);
|
|
419
537
|
}
|
|
@@ -455,12 +573,17 @@ class Agent extends framework_mounter_1.default {
|
|
|
455
573
|
if (!isFeatureEnabled)
|
|
456
574
|
return;
|
|
457
575
|
const base = normalizeMcpBasePath(this.mcpBasePath);
|
|
576
|
+
const apiNote = this.gateway?.services.api
|
|
577
|
+
? ` The Gateway API on ${base}/api/* escapes it too: it reaches the agent in-process, ` +
|
|
578
|
+
'which the whitelist exempts as a trusted loopback caller. API calls still require an ' +
|
|
579
|
+
'API key or an OAuth session.'
|
|
580
|
+
: '';
|
|
458
581
|
this.options.logger('Warn', '[MCP] The IP whitelist is enabled for this environment, but it filters none of the MCP ' +
|
|
459
582
|
`routes (${base}/mcp, ${base}/mcp/uploads, ${base}/oauth/*, ` +
|
|
460
583
|
`/.well-known/oauth-authorization-server${base}, ` +
|
|
461
584
|
`/.well-known/oauth-protected-resource${base}/mcp): its middleware is mounted on the ` +
|
|
462
585
|
`/forest router only, so these routes escape it for any caller. Tool calls on ${base}/mcp ` +
|
|
463
|
-
|
|
586
|
+
`still require a valid MCP OAuth token.${apiNote}`);
|
|
464
587
|
}
|
|
465
588
|
catch (error) {
|
|
466
589
|
this.options.logger('Debug', `[MCP] Could not read the IP whitelist configuration: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -616,4 +739,4 @@ class Agent extends framework_mounter_1.default {
|
|
|
616
739
|
}
|
|
617
740
|
}
|
|
618
741
|
exports.default = Agent;
|
|
619
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkEsOEVBQTBFO0FBQzFFLGlFQUF5QztBQUN6QyxxREFBNkI7QUFDN0IseURBQWlDO0FBQ2pDLDBDQUFrRDtBQUNsRCxrR0FBc0Q7QUFFdEQsK0NBQXVEO0FBQ3ZELDZDQUEyRDtBQUMzRCxrRUFBeUM7QUFDekMsOEZBQW9FO0FBQ3BFLDRFQUFtRDtBQUNuRCxzREFBa0M7QUFDbEMsMERBQXNDO0FBQ3RDLGtHQUFpRjtBQUNqRiwyREFBd0Y7QUFDeEYsZ0ZBQThEO0FBQzlELGtGQUF5RDtBQUV6RCw2RkFBNkY7QUFDN0YsK0ZBQStGO0FBQy9GLHFGQUFxRjtBQUNyRixNQUFNLG9CQUFvQixHQUFHLENBQUMsUUFBaUIsRUFBVSxFQUFFLENBQ3pELElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFeEUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxXQUFtQixFQUFFLEVBQUUsQ0FDOUMsaUVBQWlFLFdBQVcsZ0JBQWdCO0lBQzVGLHNCQUFzQix1QkFBVSx1Q0FBdUMsdUJBQVUsVUFBVTtJQUMzRixHQUFHLHVCQUFVLHdDQUF3QyxDQUFDO0FBRXhEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQXFCLEtBQW1DLFNBQVEsMkJBQWdCO0lBOEI5RTs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxZQUFZLE9BQXFCO1FBQy9CLE1BQU0sVUFBVSxHQUFHLDJCQUFnQixDQUFDLFFBQVEsQ0FBQywyQkFBZ0IsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyRixLQUFLLENBQUMsVUFB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
|
|
742
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWdlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3QkEsOEVBQTBFO0FBQzFFLHdFQUFzRTtBQUN0RSxpRUFBeUM7QUFDekMscURBQTZCO0FBQzdCLHlEQUFpQztBQUNqQywwQ0FBa0Q7QUFDbEQsa0dBQXNEO0FBRXRELCtDQUF1RDtBQUN2RCw2Q0FBbUY7QUFDbkYsa0VBQXlDO0FBQ3pDLDhGQUFvRTtBQUNwRSw0RUFBbUQ7QUFDbkQsdUNBT21CO0FBQ25CLHNEQUFrQztBQUNsQywwREFBc0M7QUFDdEMsa0dBQWlGO0FBQ2pGLDJEQUF3RjtBQUN4RixnRkFBOEQ7QUFDOUQsa0ZBQXlEO0FBRXpELDZGQUE2RjtBQUM3RiwrRkFBK0Y7QUFDL0YscUZBQXFGO0FBQ3JGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxRQUFpQixFQUFVLEVBQUUsQ0FDekQsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUV4RSxNQUFNLGVBQWUsR0FBRyxDQUFDLFdBQW1CLEVBQUUsRUFBRSxDQUM5QyxpRUFBaUUsV0FBVyxnQkFBZ0I7SUFDNUYsc0JBQXNCLHVCQUFVLHVDQUF1Qyx1QkFBVSxVQUFVO0lBQzNGLEdBQUcsdUJBQVUsd0NBQXdDLENBQUM7QUFFeEQsTUFBTSxjQUFjLEdBQ2xCLHVGQUF1RjtJQUN2RixpRUFBaUUsQ0FBQztBQUVwRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFxQixLQUFtQyxTQUFRLDJCQUFnQjtJQXVDOUU7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsWUFBWSxPQUFxQjtRQUMvQixNQUFNLFVBQVUsR0FBRywyQkFBZ0IsQ0FB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
|
|
@@ -173,7 +173,7 @@ function buildHistoryWhereClause({ collection, recordId, userIds, operations, st
|
|
|
173
173
|
where[sequelize_1.Op.and] = andConditions;
|
|
174
174
|
return where;
|
|
175
175
|
}
|
|
176
|
-
function buildTimelineWhereClause({ collections, before, excludeIds, userIds, operations, startTimestamp, endTimestamp, search, }, sequelize) {
|
|
176
|
+
function buildTimelineWhereClause({ collections, before, after, excludeIds, userIds, operations, startTimestamp, endTimestamp, search, }, sequelize) {
|
|
177
177
|
const where = { collection: { [sequelize_1.Op.in]: collections } };
|
|
178
178
|
if (userIds)
|
|
179
179
|
where.userId = { [sequelize_1.Op.in]: userIds };
|
|
@@ -182,10 +182,12 @@ function buildTimelineWhereClause({ collections, before, excludeIds, userIds, op
|
|
|
182
182
|
if (excludeIds?.length)
|
|
183
183
|
where.id = { [sequelize_1.Op.notIn]: excludeIds };
|
|
184
184
|
const timestampRange = {};
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
// The cursor bound and the `endDate` filter are both inclusive upper bounds; the tighter wins.
|
|
185
|
+
// Each cursor bound and its date filter are inclusive on the same side; the tighter wins.
|
|
186
|
+
const lowerBounds = [startTimestamp, after].filter(Boolean).map(bound => new Date(bound));
|
|
188
187
|
const upperBounds = [endTimestamp, before].filter(Boolean).map(bound => new Date(bound));
|
|
188
|
+
if (lowerBounds.length) {
|
|
189
|
+
timestampRange[sequelize_1.Op.gte] = new Date(Math.max(...lowerBounds.map(date => date.getTime())));
|
|
190
|
+
}
|
|
189
191
|
if (upperBounds.length) {
|
|
190
192
|
timestampRange[sequelize_1.Op.lte] = new Date(Math.min(...upperBounds.map(date => date.getTime())));
|
|
191
193
|
}
|
|
@@ -195,6 +197,28 @@ function buildTimelineWhereClause({ collections, before, excludeIds, userIds, op
|
|
|
195
197
|
where[sequelize_1.Op.and] = [searchCondition(sequelize, search)];
|
|
196
198
|
return where;
|
|
197
199
|
}
|
|
200
|
+
async function listAuthors(model, where) {
|
|
201
|
+
// MAX() rather than a bare column: grouping by `user_id` alone is invalid in strict SQL
|
|
202
|
+
// unless every selected column is either grouped or aggregated.
|
|
203
|
+
const rows = (await model.findAll({
|
|
204
|
+
where,
|
|
205
|
+
attributes: [
|
|
206
|
+
'userId',
|
|
207
|
+
[sequelize_1.Sequelize.fn('MAX', sequelize_1.Sequelize.col('user_first_name')), 'userFirstName'],
|
|
208
|
+
[sequelize_1.Sequelize.fn('MAX', sequelize_1.Sequelize.col('user_last_name')), 'userLastName'],
|
|
209
|
+
[sequelize_1.Sequelize.fn('MAX', sequelize_1.Sequelize.col('user_email')), 'userEmail'],
|
|
210
|
+
],
|
|
211
|
+
group: ['userId'],
|
|
212
|
+
raw: true,
|
|
213
|
+
transaction: null,
|
|
214
|
+
}));
|
|
215
|
+
return rows.map(row => ({
|
|
216
|
+
id: row.userId,
|
|
217
|
+
firstName: row.userFirstName ?? null,
|
|
218
|
+
lastName: row.userLastName ?? null,
|
|
219
|
+
email: row.userEmail ?? null,
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
198
222
|
function fromRow(row) {
|
|
199
223
|
const plain = row.get({ plain: true });
|
|
200
224
|
const { timestamp } = plain;
|
|
@@ -312,11 +336,12 @@ function createSqlAuditStore(options) {
|
|
|
312
336
|
if (!query.collections.length)
|
|
313
337
|
return [];
|
|
314
338
|
const { model, connection } = await init();
|
|
339
|
+
const direction = query.order === 'asc' ? 'ASC' : 'DESC';
|
|
315
340
|
const rows = await model.findAll({
|
|
316
341
|
where: buildTimelineWhereClause(query, connection),
|
|
317
342
|
order: [
|
|
318
|
-
['timestamp',
|
|
319
|
-
['id',
|
|
343
|
+
['timestamp', direction],
|
|
344
|
+
['id', direction],
|
|
320
345
|
],
|
|
321
346
|
limit: query.limit,
|
|
322
347
|
transaction: null,
|
|
@@ -325,26 +350,13 @@ function createSqlAuditStore(options) {
|
|
|
325
350
|
},
|
|
326
351
|
async listDistinctUsers(query) {
|
|
327
352
|
const { model, connection } = await init();
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
[sequelize_1.Sequelize.fn('MAX', sequelize_1.Sequelize.col('user_last_name')), 'userLastName'],
|
|
336
|
-
[sequelize_1.Sequelize.fn('MAX', sequelize_1.Sequelize.col('user_email')), 'userEmail'],
|
|
337
|
-
],
|
|
338
|
-
group: ['userId'],
|
|
339
|
-
raw: true,
|
|
340
|
-
transaction: null,
|
|
341
|
-
}));
|
|
342
|
-
return rows.map(row => ({
|
|
343
|
-
id: row.userId,
|
|
344
|
-
firstName: row.userFirstName ?? null,
|
|
345
|
-
lastName: row.userLastName ?? null,
|
|
346
|
-
email: row.userEmail ?? null,
|
|
347
|
-
}));
|
|
353
|
+
return listAuthors(model, buildHistoryWhereClause(query, connection));
|
|
354
|
+
},
|
|
355
|
+
async listTimelineUsers(query) {
|
|
356
|
+
if (!query.collections.length)
|
|
357
|
+
return [];
|
|
358
|
+
const { model, connection } = await init();
|
|
359
|
+
return listAuthors(model, buildTimelineWhereClause(query, connection));
|
|
348
360
|
},
|
|
349
361
|
async listByCorrelation({ collection, recordId, correlationKey }) {
|
|
350
362
|
const { model } = await init();
|
|
@@ -375,4 +387,4 @@ function createSqlAuditStore(options) {
|
|
|
375
387
|
},
|
|
376
388
|
};
|
|
377
389
|
}
|
|
378
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1ZGl0LXRyYWlsL3NxbC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFzQkEsa0RBc0NDO0FBRUQsZ0RBU0M7QUFFRCxzQkFrQkM7QUFTRCx3REFpREM7QUFtQkQsMENBc0JDO0FBaUZELDBCQW9CQztBQVFELGtEQXFMQztBQXJkRCx5Q0FBcUQ7QUFFckQsNkNBQWtEO0FBRXJDLFFBQUEsY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUMxQixRQUFBLGFBQWEsR0FBRyxZQUFZLENBQUM7QUFFMUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBRTdELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDO0FBRXBDLFNBQWdCLG1CQUFtQixDQUNqQyxTQUFvQixFQUNwQixPQUErQztJQUUvQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQ3JCLFVBQVUsRUFDVjtRQUNFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBUyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7UUFDckUsc0ZBQXNGO1FBQ3RGLDRGQUE0RjtRQUM1RiwyQkFBMkI7UUFDM0IsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7UUFDeEQsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7UUFDdkQsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7UUFDeEQsNEZBQTRGO1FBQzVGLDJGQUEyRjtRQUMzRiwwRUFBMEU7UUFDMUUsUUFB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
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1ZGl0LXRyYWlsL3NxbC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1QkEsa0RBc0NDO0FBRUQsZ0RBU0M7QUFFRCxzQkFrQkM7QUFTRCx3REFpREM7QUFtQkQsMENBc0JDO0FBc0hELDBCQW9CQztBQVFELGtEQW9LQztBQXplRCx5Q0FBcUQ7QUFFckQsNkNBQWtEO0FBRXJDLFFBQUEsY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUMxQixRQUFBLGFBQWEsR0FBRyxZQUFZLENBQUM7QUFFMUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBRTdELE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDO0FBRXBDLFNBQWdCLG1CQUFtQixDQUNqQyxTQUFvQixFQUNwQixPQUErQztJQUUvQyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQ3JCLFVBQVUsRUFDVjtRQUNFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBUyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7UUFDckUsc0ZBQXNGO1FBQ3RGLDRGQUE0RjtRQUM1RiwyQkFBMkI7UUFDM0IsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7UUFDeEQsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7UUFDdkQsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7UUFDeEQsNEZBQTRGO1FBQzVGLDJGQUEyRjtRQUMzRiwwRUFBMEU7UUFDMUUsUUFB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
|