@forestadmin/agent 1.56.2 → 1.57.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -16,7 +16,8 @@ class CountRoute extends collection_route_1.default {
|
|
|
16
16
|
if (this.collection.schema.countable) {
|
|
17
17
|
const scope = await this.services.authorization.getScope(this.collection, context);
|
|
18
18
|
const caller = query_string_1.default.parseCaller(context);
|
|
19
|
-
|
|
19
|
+
let filter = context_filter_factory_1.default.build(this.collection, context, scope);
|
|
20
|
+
filter = await this.services.segmentQueryHandler.handleLiveQuerySegmentFilter(context, filter);
|
|
20
21
|
const aggregation = new datasource_toolkit_1.Aggregation({ operation: 'Count' });
|
|
21
22
|
const aggregationResult = await this.collection.aggregate(caller, filter, aggregation);
|
|
22
23
|
const count = aggregationResult?.[0]?.value ?? 0;
|
|
@@ -28,4 +29,4 @@ class CountRoute extends collection_route_1.default {
|
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
exports.default = CountRoute;
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGVzL2FjY2Vzcy9jb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHdFQUE4RDtBQUk5RCxnR0FBc0U7QUFDdEUsNEVBQXlEO0FBQ3pELDJFQUFrRDtBQUVsRCxNQUFxQixVQUFXLFNBQVEsMEJBQWU7SUFDckQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBZ0I7UUFDdkMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakYsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDcEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNuRixNQUFNLE1BQU0sR0FBRyxzQkFBaUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsSUFBSSxNQUFNLEdBQUcsZ0NBQW9CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsNEJBQTRCLENBQzNFLE9BQU8sRUFDUCxNQUFNLENBQ1AsQ0FBQztZQUVGLE1BQU0sV0FBVyxHQUFHLElBQUksZ0NBQVcsQ0FBQyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQzVELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZGLE1BQU0sS0FBSyxHQUFHLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztZQUVqRCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO1NBQ25DO2FBQU07WUFDTCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsRUFBRSxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztDQUNGO0FBMUJELDZCQTBCQyJ9
|
|
@@ -13,10 +13,11 @@ class ListRoute extends collection_route_1.default {
|
|
|
13
13
|
async handleList(context) {
|
|
14
14
|
await this.services.authorization.assertCanBrowse(context, this.collection.name);
|
|
15
15
|
const scope = await this.services.authorization.getScope(this.collection, context);
|
|
16
|
-
|
|
16
|
+
let paginatedFilter = context_filter_factory_1.default.buildPaginated(this.collection, context, scope);
|
|
17
|
+
paginatedFilter = await this.services.segmentQueryHandler.handleLiveQuerySegmentFilter(context, paginatedFilter);
|
|
17
18
|
const records = await this.collection.list(query_string_1.default.parseCaller(context), paginatedFilter, query_string_1.default.parseProjectionWithPks(this.collection, context));
|
|
18
19
|
context.response.body = this.services.serializer.serializeWithSearchMetadata(this.collection, records, paginatedFilter.search);
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
exports.default = ListRoute;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0ZXMvYWNjZXNzL2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSxnR0FBc0U7QUFDdEUsNEVBQXlEO0FBQ3pELDJFQUFrRDtBQUVsRCxNQUFxQixTQUFVLFNBQVEsMEJBQWU7SUFDcEQsV0FBVyxDQUFDLE1BQWM7UUFDeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBZ0I7UUFDdEMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFakYsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNuRixJQUFJLGVBQWUsR0FBRyxnQ0FBb0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0YsZUFBZSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyw0QkFBNEIsQ0FDcEYsT0FBTyxFQUNQLGVBQWUsQ0FDaEIsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3hDLHNCQUFpQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFDdEMsZUFBZSxFQUNmLHNCQUFpQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQ25FLENBQUM7UUFFRixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FDMUUsSUFBSSxDQUFDLFVBQVUsRUFDZixPQUFPLEVBQ1AsZUFBZSxDQUFDLE1BQU0sQ0FDdkIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTNCRCw0QkEyQkMifQ==
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ChartHandlerInterface } from '@forestadmin/forestadmin-client';
|
|
2
2
|
import AuthorizationService from './authorization/authorization';
|
|
3
|
+
import SegmentQueryHandler from './segment-query-handler';
|
|
3
4
|
import Serializer from './serializer';
|
|
4
5
|
import { AgentOptionsWithDefaults } from '../types';
|
|
5
6
|
export type ForestAdminHttpDriverServices = {
|
|
6
7
|
serializer: Serializer;
|
|
7
8
|
authorization: AuthorizationService;
|
|
8
9
|
chartHandler: ChartHandlerInterface;
|
|
10
|
+
segmentQueryHandler: SegmentQueryHandler;
|
|
9
11
|
};
|
|
10
12
|
declare const _default: (options: AgentOptionsWithDefaults) => ForestAdminHttpDriverServices;
|
|
11
13
|
export default _default;
|
package/dist/services/index.js
CHANGED
|
@@ -4,12 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const authorization_1 = __importDefault(require("./authorization"));
|
|
7
|
+
const segment_query_handler_1 = __importDefault(require("./segment-query-handler"));
|
|
7
8
|
const serializer_1 = __importDefault(require("./serializer"));
|
|
8
9
|
exports.default = (options) => {
|
|
9
10
|
return {
|
|
10
11
|
authorization: (0, authorization_1.default)(options),
|
|
11
12
|
serializer: new serializer_1.default(),
|
|
12
13
|
chartHandler: options.forestAdminClient.chartHandler,
|
|
14
|
+
segmentQueryHandler: new segment_query_handler_1.default(options.forestAdminClient.contextVariablesInstantiator),
|
|
13
15
|
};
|
|
14
16
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxvRUFBMEQ7QUFFMUQsb0ZBQTBEO0FBQzFELDhEQUFzQztBQVV0QyxrQkFBZSxDQUFDLE9BQWlDLEVBQWlDLEVBQUU7SUFDbEYsT0FBTztRQUNMLGFBQWEsRUFBRSxJQUFBLHVCQUEyQixFQUFDLE9BQU8sQ0FBQztRQUNuRCxVQUFVLEVBQUUsSUFBSSxvQkFBVSxFQUFFO1FBQzVCLFlBQVksRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsWUFBWTtRQUNwRCxtQkFBbUIsRUFBRSxJQUFJLCtCQUFtQixDQUMxQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsNEJBQTRCLENBQ3ZEO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PaginatedFilter } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
import type { ContextVariablesInstantiatorInterface } from '@forestadmin/forestadmin-client';
|
|
3
|
+
import { Context } from 'koa';
|
|
4
|
+
export default class SegmentQueryHandler {
|
|
5
|
+
private readonly contextVariablesInstantiator;
|
|
6
|
+
constructor(contextVariablesInstantiator: ContextVariablesInstantiatorInterface);
|
|
7
|
+
handleLiveQuerySegmentFilter(context: Context, paginatedFilter: PaginatedFilter): Promise<PaginatedFilter>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=segment-query-handler.d.ts.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
|
|
4
|
+
class SegmentQueryHandler {
|
|
5
|
+
constructor(contextVariablesInstantiator) {
|
|
6
|
+
this.contextVariablesInstantiator = contextVariablesInstantiator;
|
|
7
|
+
}
|
|
8
|
+
async handleLiveQuerySegmentFilter(context, paginatedFilter) {
|
|
9
|
+
if (paginatedFilter.liveQuerySegment) {
|
|
10
|
+
const { renderingId, id: userId } = context.state.user;
|
|
11
|
+
const contextVariables = await this.contextVariablesInstantiator.buildContextVariables({
|
|
12
|
+
userId,
|
|
13
|
+
renderingId,
|
|
14
|
+
});
|
|
15
|
+
const contextVariablesUsed = {};
|
|
16
|
+
const replaceContextVariable = (contextVariableName) => {
|
|
17
|
+
const contextVariableRenamed = contextVariableName.replace(/\./g, '_');
|
|
18
|
+
contextVariablesUsed[contextVariableRenamed] =
|
|
19
|
+
contextVariables.getValue(contextVariableName);
|
|
20
|
+
return `$${contextVariableRenamed}`;
|
|
21
|
+
};
|
|
22
|
+
const replacedQuery = forestadmin_client_1.ContextVariablesInjector.injectContextInValueCustom(paginatedFilter.liveQuerySegment.query, replaceContextVariable);
|
|
23
|
+
return paginatedFilter.override({
|
|
24
|
+
liveQuerySegment: {
|
|
25
|
+
query: replacedQuery,
|
|
26
|
+
contextVariables: contextVariablesUsed,
|
|
27
|
+
connectionName: paginatedFilter.liveQuerySegment.connectionName,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return paginatedFilter;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.default = SegmentQueryHandler;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC1xdWVyeS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlZ21lbnQtcXVlcnktaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHdFQUEyRTtBQUczRSxNQUFxQixtQkFBbUI7SUFHdEMsWUFBWSw0QkFBbUU7UUFDN0UsSUFBSSxDQUFDLDRCQUE0QixHQUFHLDRCQUE0QixDQUFDO0lBQ25FLENBQUM7SUFFTSxLQUFLLENBQUMsNEJBQTRCLENBQUMsT0FBZ0IsRUFBRSxlQUFnQztRQUMxRixJQUFJLGVBQWUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUNwQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBVyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUMvRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLHFCQUFxQixDQUFDO2dCQUNyRixNQUFNO2dCQUNOLFdBQVc7YUFDWixDQUFDLENBQUM7WUFDSCxNQUFNLG9CQUFvQixHQUE0QixFQUFFLENBQUM7WUFFekQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLG1CQUEyQixFQUFFLEVBQUU7Z0JBQzdELE1BQU0sc0JBQXNCLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdkUsb0JBQW9CLENBQUMsc0JBQXNCLENBQUM7b0JBQzFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUVqRCxPQUFPLElBQUksc0JBQXNCLEVBQUUsQ0FBQztZQUN0QyxDQUFDLENBQUM7WUFFRixNQUFNLGFBQWEsR0FBRyw2Q0FBd0IsQ0FBQywwQkFBMEIsQ0FDdkUsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFDdEMsc0JBQXNCLENBQ3ZCLENBQUM7WUFFRixPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUM7Z0JBQzlCLGdCQUFnQixFQUFFO29CQUNoQixLQUFLLEVBQUUsYUFBYTtvQkFDcEIsZ0JBQWdCLEVBQUUsb0JBQW9CO29CQUN0QyxjQUFjLEVBQUUsZUFBZSxDQUFDLGdCQUFnQixDQUFDLGNBQWM7aUJBQ2hFO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUF4Q0Qsc0NBd0NDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.57.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@fast-csv/format": "^4.3.5",
|
|
16
16
|
"@fastify/express": "^1.1.0",
|
|
17
|
-
"@forestadmin/datasource-customizer": "1.
|
|
18
|
-
"@forestadmin/datasource-toolkit": "1.
|
|
19
|
-
"@forestadmin/forestadmin-client": "1.36.
|
|
17
|
+
"@forestadmin/datasource-customizer": "1.59.0",
|
|
18
|
+
"@forestadmin/datasource-toolkit": "1.46.0",
|
|
19
|
+
"@forestadmin/forestadmin-client": "1.36.3",
|
|
20
20
|
"@koa/cors": "^5.0.0",
|
|
21
21
|
"@koa/router": "^12.0.0",
|
|
22
22
|
"@types/koa__router": "^12.0.0",
|