@forestadmin/forestadmin-client 1.35.1 → 1.36.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/charts/types.d.ts +1 -0
- package/dist/charts/types.js +1 -1
- package/dist/permissions/hash-chart.js +2 -1
- package/dist/permissions/is-segment-query-allowed-on-connection.d.ts +3 -0
- package/dist/permissions/is-segment-query-allowed-on-connection.js +22 -0
- package/dist/permissions/permission-with-cache.d.ts +1 -0
- package/dist/permissions/permission-with-cache.js +1 -1
- package/dist/permissions/rendering-permission.d.ts +2 -1
- package/dist/permissions/rendering-permission.js +8 -3
- package/dist/permissions/types.d.ts +4 -0
- package/dist/types.d.ts +1 -0
- package/package.json +2 -2
package/dist/charts/types.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export interface ApiRouteChart extends BaseChart {
|
|
|
14
14
|
export interface QueryChart extends BaseChart {
|
|
15
15
|
type: Exclude<ChartType, ChartType.Smart>;
|
|
16
16
|
query: string;
|
|
17
|
+
connectionName?: string;
|
|
17
18
|
}
|
|
18
19
|
export interface FilterableChart extends BaseChart {
|
|
19
20
|
filter?: RawTree | null;
|
package/dist/charts/types.js
CHANGED
|
@@ -11,4 +11,4 @@ var ChartType;
|
|
|
11
11
|
ChartType["Percentage"] = "Percentage";
|
|
12
12
|
ChartType["Smart"] = "Smart";
|
|
13
13
|
})(ChartType = exports.ChartType || (exports.ChartType = {}));
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2hhcnRzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXlFQSxJQUFZLFNBUVg7QUFSRCxXQUFZLFNBQVM7SUFDbkIsd0JBQVcsQ0FBQTtJQUNYLDRCQUFlLENBQUE7SUFDZix3Q0FBMkIsQ0FBQTtJQUMzQiwwQkFBYSxDQUFBO0lBQ2Isb0NBQXVCLENBQUE7SUFDdkIsc0NBQXlCLENBQUE7SUFDekIsNEJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUlcsU0FBUyxHQUFULGlCQUFTLEtBQVQsaUJBQVMsUUFRcEIifQ==
|
|
@@ -11,6 +11,7 @@ function hashChart(chart) {
|
|
|
11
11
|
'apiRoute',
|
|
12
12
|
'smartRoute',
|
|
13
13
|
'query',
|
|
14
|
+
'connectionName',
|
|
14
15
|
'labelFieldName',
|
|
15
16
|
'filter',
|
|
16
17
|
'sourceCollectionName',
|
|
@@ -39,4 +40,4 @@ function hashChartRequest(chart) {
|
|
|
39
40
|
return hashChart(chart);
|
|
40
41
|
}
|
|
41
42
|
exports.hashChartRequest = hashChartRequest;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFzaC1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wZXJtaXNzaW9ucy9oYXNoLWNoYXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDhEQUFxQztBQUlyQyxTQUFTLFNBQVMsQ0FBQyxLQUFZO0lBQzdCLE1BQU0sY0FBYyxHQUFnQjtRQUNsQyxNQUFNO1FBQ04sVUFBVTtRQUNWLFlBQVk7UUFDWixPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLGdCQUFnQjtRQUNoQixRQUFRO1FBQ1Isc0JBQXNCO1FBQ3RCLFlBQVk7UUFDWixvQkFBb0I7UUFDcEIsa0JBQWtCO1FBQ2xCLHVCQUF1QjtRQUN2QixPQUFPO1FBQ1AsV0FBVztRQUNYLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsb0JBQW9CO0tBQ3JCLENBQUM7SUFFRixNQUFNLElBQUksR0FBRyxJQUFBLHFCQUFVLEVBQUMsS0FBSyxFQUFFO1FBQzdCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFdBQVcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNqQixLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQWdCLENBQUM7S0FDaEcsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBZTtJQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXJDLE9BQU8sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUpELDRDQUlDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsS0FBWTtJQUMzQyxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQixDQUFDO0FBRkQsNENBRUMifQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { CollectionRenderingPermissionV4 } from './types';
|
|
2
|
+
export default function isSegmentQueryAllowedOnConnection(collectionPermissions: CollectionRenderingPermissionV4, segmentQuery: string, connectionName: string): boolean;
|
|
3
|
+
//# sourceMappingURL=is-segment-query-allowed-on-connection.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function isSegmentQueryAllowedOnConnection(collectionPermissions, segmentQuery, connectionName) {
|
|
4
|
+
if (!collectionPermissions || !collectionPermissions.liveQuerySegments || !connectionName) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
const queries = collectionPermissions.liveQuerySegments
|
|
8
|
+
.filter(liveQuerySegment => liveQuerySegment.connectionName === connectionName)
|
|
9
|
+
.map(({ query }) => query);
|
|
10
|
+
// NOTICE: Handle UNION queries made by the FRONT to display available actions on details view
|
|
11
|
+
// NOTICE: This can only be used on related data (Has Many relationships) to detect available
|
|
12
|
+
// Smart Actions restricted to segment when a Smart Action is available on multiple SQL segments
|
|
13
|
+
const unionQueries = segmentQuery.split('/*MULTI-SEGMENTS-QUERIES-UNION*/ UNION ');
|
|
14
|
+
if (unionQueries.length > 1) {
|
|
15
|
+
const authorizedQueries = new Set(queries.map(query => query.replace(/;\s*/i, '').trim()));
|
|
16
|
+
return unionQueries.every((unionQuery) => authorizedQueries.has(unionQuery.trim()));
|
|
17
|
+
}
|
|
18
|
+
// NOTICE: Queries made by the FRONT to browse to an SQL segment
|
|
19
|
+
return queries.some(query => query === segmentQuery);
|
|
20
|
+
}
|
|
21
|
+
exports.default = isSegmentQueryAllowedOnConnection;
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtc2VnbWVudC1xdWVyeS1hbGxvd2VkLW9uLWNvbm5lY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVybWlzc2lvbnMvaXMtc2VnbWVudC1xdWVyeS1hbGxvd2VkLW9uLWNvbm5lY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxTQUF3QixpQ0FBaUMsQ0FDdkQscUJBQXNELEVBQ3RELFlBQW9CLEVBQ3BCLGNBQXNCO0lBRXRCLElBQUksQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixJQUFJLENBQUMsY0FBYyxFQUFFO1FBQ3pGLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFFRCxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxpQkFBaUI7U0FDcEQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEtBQUssY0FBYyxDQUFDO1NBQzlFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdCLDhGQUE4RjtJQUM5Riw2RkFBNkY7SUFDN0YsZ0dBQWdHO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUVuRixJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzNCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUzRixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFrQixFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztLQUM3RjtJQUVELGdFQUFnRTtJQUNoRSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQTFCRCxvREEwQkMifQ==
|
|
@@ -17,6 +17,7 @@ export default class PermissionServiceWithCache implements PermissionService {
|
|
|
17
17
|
collectionName: string;
|
|
18
18
|
renderingId: number;
|
|
19
19
|
segmentQuery: string;
|
|
20
|
+
connectionName?: string;
|
|
20
21
|
}): Promise<boolean>;
|
|
21
22
|
canTriggerCustomAction({ userId, collectionName, customActionName, }: {
|
|
22
23
|
userId: number;
|
|
@@ -68,4 +68,4 @@ class PermissionServiceWithCache {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
exports.default = PermissionServiceWithCache;
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL3Blcm1pc3Npb24td2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDZFQUdzQztBQUV0QyxtQ0FBbUU7QUFJbkUsTUFBcUIsMEJBQTBCO0lBQzdDLFlBQ21CLHVCQUF5QyxFQUN6QywwQkFBc0Q7UUFEdEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUFrQjtRQUN6QywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO0lBQ3RFLENBQUM7SUFFRyxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQzNCLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxHQUtOO1FBQ0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUNyQyxNQUFNLEVBQ04sSUFBQSwrREFBa0MsRUFBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQzFELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLHNCQUFzQixDQUFDLE1BTW5DO1FBQ0MsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUNsQyxNQUFNLEVBQ04sY0FBYyxFQUNkLGdCQUFnQixHQUtqQjtRQUNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FDckMsTUFBTSxFQUNOLElBQUEsMkRBQThCLEVBQUMseUJBQWlCLENBQUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUM1RixDQUFDO0lBQ0osQ0FB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
|
|
@@ -19,10 +19,11 @@ export default class RenderingPermissionService {
|
|
|
19
19
|
userId: number | string;
|
|
20
20
|
}): Promise<RawTree>;
|
|
21
21
|
private getScopeOrRetry;
|
|
22
|
-
canExecuteSegmentQuery({ renderingId, collectionName, segmentQuery, userId, }: {
|
|
22
|
+
canExecuteSegmentQuery({ renderingId, collectionName, segmentQuery, connectionName, userId, }: {
|
|
23
23
|
renderingId: number | string;
|
|
24
24
|
collectionName: string;
|
|
25
25
|
segmentQuery: string;
|
|
26
|
+
connectionName?: string;
|
|
26
27
|
userId: number;
|
|
27
28
|
}): Promise<boolean>;
|
|
28
29
|
private canExecuteSegmentQueryOrRetry;
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const hash_chart_1 = require("./hash-chart");
|
|
7
|
+
const is_segment_query_allowed_on_connection_1 = __importDefault(require("./is-segment-query-allowed-on-connection"));
|
|
7
8
|
const is_segment_query_authorized_1 = __importDefault(require("./is-segment-query-authorized"));
|
|
8
9
|
const types_1 = require("./types");
|
|
9
10
|
const verify_sql_query_1 = __importDefault(require("./verify-sql-query"));
|
|
@@ -46,17 +47,18 @@ class RenderingPermissionService {
|
|
|
46
47
|
}
|
|
47
48
|
return context_variables_injector_1.default.injectContextInFilter(collectionPermissions.scope, new context_variables_1.default({ team: permissions.team, user: userInfo }));
|
|
48
49
|
}
|
|
49
|
-
async canExecuteSegmentQuery({ renderingId, collectionName, segmentQuery, userId, }) {
|
|
50
|
+
async canExecuteSegmentQuery({ renderingId, collectionName, segmentQuery, connectionName, userId, }) {
|
|
50
51
|
return ((await this.canExecuteSegmentQueryOrRetry({
|
|
51
52
|
renderingId,
|
|
52
53
|
collectionName,
|
|
53
54
|
segmentQuery,
|
|
55
|
+
connectionName,
|
|
54
56
|
userId,
|
|
55
57
|
// Only allow retry when not using server events
|
|
56
58
|
allowRetry: !this.options.instantCacheRefresh,
|
|
57
59
|
})) && (0, verify_sql_query_1.default)(segmentQuery));
|
|
58
60
|
}
|
|
59
|
-
async canExecuteSegmentQueryOrRetry({ renderingId, collectionName, segmentQuery, allowRetry, userId, }) {
|
|
61
|
+
async canExecuteSegmentQueryOrRetry({ renderingId, collectionName, segmentQuery, connectionName, allowRetry, userId, }) {
|
|
60
62
|
const [userInfo, permissions] = await Promise.all([
|
|
61
63
|
this.userPermissions.getUserInfo(userId),
|
|
62
64
|
this.permissionsByRendering.fetch(`${renderingId}`),
|
|
@@ -67,6 +69,8 @@ class RenderingPermissionService {
|
|
|
67
69
|
}
|
|
68
70
|
const collectionPermissions = permissions?.collections?.[collectionName];
|
|
69
71
|
if (!collectionPermissions ||
|
|
72
|
+
(connectionName &&
|
|
73
|
+
!(0, is_segment_query_allowed_on_connection_1.default)(collectionPermissions, segmentQuery, connectionName)) ||
|
|
70
74
|
!(0, is_segment_query_authorized_1.default)(segmentQuery, collectionPermissions.segments)) {
|
|
71
75
|
if (allowRetry) {
|
|
72
76
|
this.invalidateCache(renderingId);
|
|
@@ -74,6 +78,7 @@ class RenderingPermissionService {
|
|
|
74
78
|
renderingId,
|
|
75
79
|
collectionName,
|
|
76
80
|
segmentQuery,
|
|
81
|
+
connectionName,
|
|
77
82
|
userId,
|
|
78
83
|
allowRetry: false,
|
|
79
84
|
});
|
|
@@ -148,4 +153,4 @@ class RenderingPermissionService {
|
|
|
148
153
|
}
|
|
149
154
|
}
|
|
150
155
|
exports.default = RenderingPermissionService;
|
|
151
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyaW5nLXBlcm1pc3Npb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGVybWlzc2lvbnMvcmVuZGVyaW5nLXBlcm1pc3Npb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBa0U7QUFDbEUsc0hBQXlGO0FBQ3pGLGdHQUFrRTtBQUNsRSxtQ0FNaUI7QUFFakIsMEVBQWdEO0FBR2hELG1GQUEwRDtBQUMxRCxxR0FBMkU7QUFDM0UsbUVBQTBDO0FBUTFDLE1BQXFCLDBCQUEwQjtJQUc3QyxZQUNtQixPQUE2QyxFQUM3QyxlQUFzQyxFQUN0QywwQkFBc0Q7UUFGdEQsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7UUFDN0Msb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFFdkUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksbUJBQVEsQ0FDeEMsS0FBSyxFQUFDLFdBQVcsRUFBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsR0FBRyxJQUFJLENBQ3RELENBQUM7SUFDSixDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUNwQixXQUFXLEVBQ1gsY0FBYyxFQUNkLE1BQU0sR0FLUDtRQUNDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUMxQixXQUFXO1lBQ1gsY0FBYztZQUNkLE1BQU07WUFDTixnREFBZ0Q7WUFDaEQsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUI7U0FDOUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLEtBQUssQ0FBQyxlQUFlLENBQUMsRUFDNUIsV0FBVyxFQUNYLGNBQWMsRUFDZCxNQUFNLEVBQ04sVUFBVSxHQU1YO1FBQ0MsTUFBTSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMs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
|
|
@@ -135,6 +135,10 @@ export type DynamicScopesValues = {
|
|
|
135
135
|
};
|
|
136
136
|
export type CollectionRenderingPermissionV4 = {
|
|
137
137
|
scope: RawTree | null;
|
|
138
|
+
liveQuerySegments?: {
|
|
139
|
+
connectionName: string;
|
|
140
|
+
query: string;
|
|
141
|
+
}[];
|
|
138
142
|
segments: string[];
|
|
139
143
|
};
|
|
140
144
|
export type Team = {
|
package/dist/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/forestadmin-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.36.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"test": "jest"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@forestadmin/datasource-toolkit": "1.
|
|
34
|
+
"@forestadmin/datasource-toolkit": "1.45.0",
|
|
35
35
|
"@types/json-api-serializer": "^2.6.3",
|
|
36
36
|
"@types/jsonwebtoken": "^9.0.1",
|
|
37
37
|
"@types/superagent": "^4.1.16"
|