@forestadmin/forestadmin-client 1.2.0 → 1.3.0-alpha-webhook-custom-actions.2
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/build-application-services.d.ts +4 -0
- package/dist/build-application-services.js +4 -1
- package/dist/events-subscription/index.d.ts +3 -3
- package/dist/events-subscription/index.js +4 -3
- package/dist/events-subscription/native-refresh-events-handler-service.d.ts +3 -3
- package/dist/events-subscription/native-refresh-events-handler-service.js +8 -5
- package/dist/events-subscription/types.d.ts +5 -3
- package/dist/events-subscription/types.js +1 -1
- package/dist/forest-admin-client-with-cache.d.ts +7 -3
- package/dist/forest-admin-client-with-cache.js +7 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -3
- package/dist/model-customizations/model-customization-from-api.d.ts +9 -0
- package/dist/model-customizations/model-customization-from-api.js +31 -0
- package/dist/model-customizations/types.d.ts +37 -0
- package/dist/model-customizations/types.js +8 -0
- package/dist/permissions/forest-http-api.d.ts +3 -2
- package/dist/permissions/forest-http-api.js +4 -1
- package/dist/schema/types.d.ts +1 -0
- package/dist/types.d.ts +5 -0
- package/package.json +1 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import AuthService from './auth';
|
|
2
2
|
import ChartHandler from './charts/chart-handler';
|
|
3
3
|
import EventsSubscriptionService from './events-subscription';
|
|
4
|
+
import { RefreshEventsHandlerService } from './events-subscription/types';
|
|
4
5
|
import IpWhiteListService from './ip-whitelist';
|
|
6
|
+
import { ModelCustomizationService } from './model-customizations/types';
|
|
5
7
|
import PermissionService from './permissions/permission-with-cache';
|
|
6
8
|
import RenderingPermissionService from './permissions/rendering-permission';
|
|
7
9
|
import SchemaService from './schema';
|
|
@@ -16,6 +18,8 @@ export default function buildApplicationServices(forestAdminServerInterface: For
|
|
|
16
18
|
permission: PermissionService;
|
|
17
19
|
chartHandler: ChartHandler;
|
|
18
20
|
auth: AuthService;
|
|
21
|
+
modelCustomizationService: ModelCustomizationService;
|
|
19
22
|
eventsSubscription: EventsSubscriptionService;
|
|
23
|
+
eventsHandler: RefreshEventsHandlerService;
|
|
20
24
|
};
|
|
21
25
|
//# sourceMappingURL=build-application-services.d.ts.map
|
|
@@ -8,6 +8,7 @@ const chart_handler_1 = __importDefault(require("./charts/chart-handler"));
|
|
|
8
8
|
const events_subscription_1 = __importDefault(require("./events-subscription"));
|
|
9
9
|
const native_refresh_events_handler_service_1 = __importDefault(require("./events-subscription/native-refresh-events-handler-service"));
|
|
10
10
|
const ip_whitelist_1 = __importDefault(require("./ip-whitelist"));
|
|
11
|
+
const model_customization_from_api_1 = __importDefault(require("./model-customizations/model-customization-from-api"));
|
|
11
12
|
const action_permission_1 = __importDefault(require("./permissions/action-permission"));
|
|
12
13
|
const permission_with_cache_1 = __importDefault(require("./permissions/permission-with-cache"));
|
|
13
14
|
const rendering_permission_1 = __importDefault(require("./permissions/rendering-permission"));
|
|
@@ -36,11 +37,13 @@ function buildApplicationServices(forestAdminServerInterface, options) {
|
|
|
36
37
|
permission,
|
|
37
38
|
contextVariables,
|
|
38
39
|
eventsSubscription,
|
|
40
|
+
eventsHandler,
|
|
39
41
|
chartHandler: new chart_handler_1.default(contextVariables),
|
|
40
42
|
ipWhitelist: new ip_whitelist_1.default(optionsWithDefaults),
|
|
41
43
|
schema: new schema_1.default(optionsWithDefaults),
|
|
42
44
|
auth: new auth_1.default(optionsWithDefaults),
|
|
45
|
+
modelCustomizationService: new model_customization_from_api_1.default(forestAdminServerInterface, optionsWithDefaults),
|
|
43
46
|
};
|
|
44
47
|
}
|
|
45
48
|
exports.default = buildApplicationServices;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtYXBwbGljYXRpb24tc2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtYXBwbGljYXRpb24tc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBaUM7QUFDakMsMkVBQWtEO0FBQ2xELGdGQUE4RDtBQUM5RCx3SUFBNEc7QUFFNUcsa0VBQWdEO0FBQ2hELHVIQUFtRztBQUVuRyx3RkFBc0U7QUFDdEUsZ0dBQW9FO0FBQ3BFLDhGQUE0RTtBQUM1RSxvRkFBa0U7QUFDbEUsc0RBQXFDO0FBTXJDLDRHQUFrRjtBQUNsRiw0RUFBbUQ7QUFFbkQsU0FBd0Isd0JBQXdCLENBQzlDLDBCQUFzRCxFQUN0RCxPQUFpQztJQWNqQyxNQUFNLG1CQUFtQixHQUFHO1FBQzFCLGVBQWUsRUFBRSw2QkFBNkI7UUFDOUMsaUNBQWlDLEVBQUUsRUFBRSxHQUFHLEVBQUU7UUFDMUMsTUFBTSxFQUFFLHdCQUFhO1FBQ3JCLG1CQUFtQixFQUFFLElBQUk7UUFDekIsR0FBRyxPQUFPO0tBQ1gsQ0FBQztJQUVGLE1BQU0sZUFBZSxHQUFHLElBQUkseUJBQXFCLENBQy9DLG1CQUFtQixFQUNuQiwwQkFBMEIsQ0FDM0IsQ0FBQztJQUVGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSw4QkFBMEIsQ0FDeEQsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZiwwQkFBMEIsQ0FDM0IsQ0FBQztJQUVGLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSwyQkFBdUIsQ0FDbEQsbUJBQW1CLEVBQ25CLDBCQUEwQixDQUMzQixDQUFDO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLHdDQUE0QixDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFL0UsTUFBTSxVQUFVLEdBQUcsSUFBSSwrQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBRWhGLE1BQU0sYUFBYSxHQUFHLElBQUksK0NBQWlDLENBQ3pELGdCQUFnQixFQUNoQixlQUFlLEVBQ2YsbUJBQW1CLENBQ3BCLENBQUM7SUFFRixNQUFNLGtCQUFrQixHQUFHLElBQUksNkJBQXlCLENBQUMsbUJBQW1CLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFN0YsT0FBTztRQUNMLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsVUFBVTtRQUNWLGdCQUFnQjtRQUNoQixrQkFBa0I7UUFDbEIsYUFBYTtRQUNiLFlBQVksRUFBRSxJQUFJLHVCQUFZLENBQUMsZ0JBQWdCLENBQUM7UUFDaEQsV0FBVyxFQUFFLElBQUksc0JBQWtCLENBQUMsbUJBQW1CLENBQUM7UUFDeEQsTUFBTSxFQUFFLElBQUksZ0JBQWEsQ0FBQyxtQkFBbUIsQ0FBQztRQUM5QyxJQUFJLEVBQUUsSUFBSSxjQUFXLENBQUMsbUJBQW1CLENBQUM7UUFDMUMseUJBQXlCLEVBQUUsSUFBSSxzQ0FBZ0MsQ0FDN0QsMEJBQTBCLEVBQzFCLG1CQUFtQixDQUNwQjtLQUNGLENBQUM7QUFDSixDQUFDO0FBcEVELDJDQW9FQyJ9
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { RefreshEventsHandlerService } from './types';
|
|
1
|
+
import { BaseEventsSubscriptionService, RefreshEventsHandlerService } from './types';
|
|
2
2
|
import { ForestAdminClientOptionsWithDefaults } from '../types';
|
|
3
|
-
export default class EventsSubscriptionService {
|
|
3
|
+
export default class EventsSubscriptionService implements BaseEventsSubscriptionService {
|
|
4
4
|
private readonly options;
|
|
5
5
|
private readonly refreshEventsHandlerService;
|
|
6
6
|
constructor(options: ForestAdminClientOptionsWithDefaults, refreshEventsHandlerService: RefreshEventsHandlerService);
|
|
7
7
|
subscribeEvents(): Promise<void>;
|
|
8
8
|
private handleSeverEventRefreshRenderings;
|
|
9
9
|
private onEventError;
|
|
10
|
-
private
|
|
10
|
+
private onEventOpenAgain;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -27,7 +27,8 @@ class EventsSubscriptionService {
|
|
|
27
27
|
const url = new URL('/liana/v4/subscribe-to-events', this.options.forestServerUrl).toString();
|
|
28
28
|
const source = new eventsource_1.default(url, eventSourceConfig);
|
|
29
29
|
source.addEventListener('error', this.onEventError.bind(this));
|
|
30
|
-
|
|
30
|
+
// Only listen after first open
|
|
31
|
+
source.once('open', () => source.addEventListener('open', () => this.onEventOpenAgain()));
|
|
31
32
|
source.addEventListener(types_1.ServerEventType.RefreshUsers, async () => this.refreshEventsHandlerService.refreshUsers());
|
|
32
33
|
source.addEventListener(types_1.ServerEventType.RefreshRoles, async () => this.refreshEventsHandlerService.refreshRoles());
|
|
33
34
|
source.addEventListener(types_1.ServerEventType.RefreshRenderings, async (event) => this.handleSeverEventRefreshRenderings(event));
|
|
@@ -49,11 +50,11 @@ class EventsSubscriptionService {
|
|
|
49
50
|
if (event.message)
|
|
50
51
|
this.options.logger('Warn', `Server Event - Error: ${JSON.stringify(event)}`);
|
|
51
52
|
}
|
|
52
|
-
|
|
53
|
+
onEventOpenAgain() {
|
|
53
54
|
this.options.logger('Debug', 'Server Event - Open EventSource (SSE) connection with Forest Admin servers');
|
|
54
55
|
// Flush all previous data as we could have missed some events
|
|
55
56
|
this.refreshEventsHandlerService.refreshEverything();
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
59
|
exports.default = EventsSubscriptionService;
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzLXN1YnNjcmlwdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhEQUFzQztBQUV0QyxtQ0FLaUI7QUFHakIsTUFBcUIseUJBQXlCO0lBQzVDLFlBQ21CLE9BQTZDLEVBQzdDLDJCQUF3RDtRQUR4RCxZQUFPLEdBQVAsT0FBTyxDQUFzQztRQUM3QyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO0lBQ3hFLENBQUM7SUFFSixLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDakIsT0FBTyxFQUNQLHlFQUF5RTtnQkFDdkUsOEJBQThCLENBQ2pDLENBQUM7WUFFRixPQUFPO1NBQ1I7UUFFRCxNQUFNLGlCQUFpQixHQUFHO1lBQ3hCLDBDQUEwQztZQUMxQyxlQUFlLEVBQUUsS0FBSztZQUN0QixPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN4RCxLQUFLLEVBQUU7Z0JBQ0wsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsS0FBSyxHQUFHO2FBQ3JFO1NBQ0YsQ0FBQztRQUNGLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLCtCQUErQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFOUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQkFBVyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXZELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUUvRCwrQkFBK0I7UUFDL0IsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFMUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHVCQUFlLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQy9ELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxZQUFZLEVBQUUsQ0FDaEQsQ0FBQztRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBZSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksRUFBRSxDQUMvRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLENBQ2hELENBQUM7UUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsdUJBQWUsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsS0FBa0IsRUFBRSxFQUFFLENBQ3RGLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FDOUMsQ0FBQztRQUVGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBZSxDQUFDLHFCQUFxQixFQUFFLEtBQUssSUFBSSxFQUFFLENBQ3hFLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsRUFBRSxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxLQUFrQjtRQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSx5REFBeUQsQ0FBQyxDQUFDO1lBRXhGLE9BQU87U0FDUjtRQUVELE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUF5QixDQUFDLENBQUM7UUFDckUsTUFBTSxJQUFJLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUEwRDtRQUM3RSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDO1lBRS9ELE9BQU87U0FDUjtRQUVELElBQUksS0FBSyxDQUFDLE9BQU87WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUseUJBQXlCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLE9BQU8sRUFDUCw0RUFBNEUsQ0FDN0UsQ0FBQztRQUVGLDhEQUE4RDtRQUM5RCxJQUFJLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUFsRkQsNENBa0ZDIn0=
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import EventEmitter from 'events';
|
|
3
1
|
import { RefreshEventsHandlerService } from './types';
|
|
4
2
|
import ActionPermissionService from '../permissions/action-permission';
|
|
5
3
|
import RenderingPermissionService from '../permissions/rendering-permission';
|
|
6
4
|
import UserPermissionService from '../permissions/user-permission';
|
|
7
|
-
export default class NativeRefreshEventsHandlerService
|
|
5
|
+
export default class NativeRefreshEventsHandlerService implements RefreshEventsHandlerService {
|
|
8
6
|
private readonly actionPermissionService;
|
|
9
7
|
private readonly usersPermissionService;
|
|
10
8
|
private readonly renderingPermissionService;
|
|
9
|
+
private readonly eventEmitter;
|
|
11
10
|
constructor(actionPermissionService: ActionPermissionService, usersPermissionService: UserPermissionService, renderingPermissionService: RenderingPermissionService);
|
|
12
11
|
refreshUsers(): void;
|
|
13
12
|
refreshRoles(): void;
|
|
14
13
|
refreshRenderings(renderingIds: (string | number)[]): void;
|
|
15
14
|
refreshCustomizations(): void;
|
|
15
|
+
onRefreshCustomizations(handler: () => void | Promise<void>): void;
|
|
16
16
|
refreshEverything(): void;
|
|
17
17
|
}
|
|
18
18
|
//# sourceMappingURL=native-refresh-events-handler-service.d.ts.map
|
|
@@ -4,12 +4,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const events_1 = __importDefault(require("events"));
|
|
7
|
-
class NativeRefreshEventsHandlerService
|
|
7
|
+
class NativeRefreshEventsHandlerService {
|
|
8
8
|
constructor(actionPermissionService, usersPermissionService, renderingPermissionService) {
|
|
9
|
-
super();
|
|
10
9
|
this.actionPermissionService = actionPermissionService;
|
|
11
10
|
this.usersPermissionService = usersPermissionService;
|
|
12
11
|
this.renderingPermissionService = renderingPermissionService;
|
|
12
|
+
this.eventEmitter = new events_1.default();
|
|
13
13
|
}
|
|
14
14
|
refreshUsers() {
|
|
15
15
|
this.usersPermissionService.invalidateCache();
|
|
@@ -22,15 +22,18 @@ class NativeRefreshEventsHandlerService extends events_1.default {
|
|
|
22
22
|
this.renderingPermissionService.invalidateCache(renderingId);
|
|
23
23
|
}
|
|
24
24
|
refreshCustomizations() {
|
|
25
|
-
this.emit('RefreshCustomizations');
|
|
25
|
+
this.eventEmitter.emit('RefreshCustomizations');
|
|
26
|
+
}
|
|
27
|
+
onRefreshCustomizations(handler) {
|
|
28
|
+
this.eventEmitter.on('RefreshCustomizations', handler);
|
|
26
29
|
}
|
|
27
30
|
refreshEverything() {
|
|
28
31
|
this.usersPermissionService.invalidateCache();
|
|
29
32
|
this.actionPermissionService.invalidateCache();
|
|
30
33
|
this.renderingPermissionService.invalidateAllCache();
|
|
31
34
|
// Emit RefreshCustomizations event
|
|
32
|
-
this.emit('RefreshCustomizations');
|
|
35
|
+
this.eventEmitter.emit('RefreshCustomizations');
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
exports.default = NativeRefreshEventsHandlerService;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXJlZnJlc2gtZXZlbnRzLWhhbmRsZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldmVudHMtc3Vic2NyaXB0aW9uL25hdGl2ZS1yZWZyZXNoLWV2ZW50cy1oYW5kbGVyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBa0M7QUFPbEMsTUFBcUIsaUNBQWlDO0lBR3BELFlBQ21CLHVCQUFnRCxFQUNoRCxzQkFBNkMsRUFDN0MsMEJBQXNEO1FBRnRELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF1QjtRQUM3QywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBRXZFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxnQkFBWSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0saUJBQWlCLENBQUMsWUFBaUM7UUFDeEQsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZO1lBQ3BDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLHFCQUFxQjtRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxPQUFtQztRQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFckQsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBeENELG9EQXdDQyJ9
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import EventEmitter from 'events';
|
|
3
1
|
export declare enum ServerEventType {
|
|
4
2
|
RefreshUsers = "refresh-users",
|
|
5
3
|
RefreshRoles = "refresh-roles",
|
|
@@ -10,11 +8,15 @@ export type ServerEvent = MessageEvent<{
|
|
|
10
8
|
type: `${ServerEventType}`;
|
|
11
9
|
data?: string;
|
|
12
10
|
}>;
|
|
13
|
-
export interface RefreshEventsHandlerService
|
|
11
|
+
export interface RefreshEventsHandlerService {
|
|
14
12
|
refreshUsers: () => Promise<void> | void;
|
|
15
13
|
refreshRoles: () => Promise<void> | void;
|
|
16
14
|
refreshRenderings: (renderingIds: [string | number]) => Promise<void> | void;
|
|
17
15
|
refreshCustomizations: () => Promise<void> | void;
|
|
16
|
+
onRefreshCustomizations: (handler: () => void | Promise<void>) => void;
|
|
18
17
|
refreshEverything: () => Promise<void> | void;
|
|
19
18
|
}
|
|
19
|
+
export interface BaseEventsSubscriptionService {
|
|
20
|
+
subscribeEvents(): Promise<void>;
|
|
21
|
+
}
|
|
20
22
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -8,4 +8,4 @@ var ServerEventType;
|
|
|
8
8
|
ServerEventType["RefreshRenderings"] = "refresh-renderings";
|
|
9
9
|
ServerEventType["RefreshCustomizations"] = "refresh-customizations";
|
|
10
10
|
})(ServerEventType = exports.ServerEventType || (exports.ServerEventType = {}));
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzLXN1YnNjcmlwdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDekIsaURBQThCLENBQUE7SUFDOUIsaURBQThCLENBQUE7SUFDOUIsMkRBQXdDLENBQUE7SUFDeEMsbUVBQWdELENBQUE7QUFDbEQsQ0FBQyxFQUxXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBSzFCIn0=
|
|
@@ -2,9 +2,10 @@ import { Client } from 'openid-client';
|
|
|
2
2
|
import AuthService from './auth';
|
|
3
3
|
import { UserInfo } from './auth/types';
|
|
4
4
|
import ChartHandler from './charts/chart-handler';
|
|
5
|
-
import
|
|
5
|
+
import { BaseEventsSubscriptionService, RefreshEventsHandlerService } from './events-subscription/types';
|
|
6
6
|
import IpWhiteListService from './ip-whitelist';
|
|
7
7
|
import { IpWhitelistConfiguration } from './ip-whitelist/types';
|
|
8
|
+
import { ModelCustomizationService } from './model-customizations/types';
|
|
8
9
|
import RenderingPermissionService from './permissions/rendering-permission';
|
|
9
10
|
import { RawTree } from './permissions/types';
|
|
10
11
|
import SchemaService from './schema';
|
|
@@ -20,8 +21,10 @@ export default class ForestAdminClientWithCache implements ForestAdminClient {
|
|
|
20
21
|
protected readonly ipWhitelistService: IpWhiteListService;
|
|
21
22
|
protected readonly schemaService: SchemaService;
|
|
22
23
|
protected readonly authService: AuthService;
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
readonly modelCustomizationService: ModelCustomizationService;
|
|
25
|
+
protected readonly eventsSubscription: BaseEventsSubscriptionService;
|
|
26
|
+
protected readonly eventsHandler: RefreshEventsHandlerService;
|
|
27
|
+
constructor(options: ForestAdminClientOptionsWithDefaults, permissionService: PermissionService, renderingPermissionService: RenderingPermissionService, contextVariablesInstantiator: ContextVariablesInstantiator, chartHandler: ChartHandler, ipWhitelistService: IpWhiteListService, schemaService: SchemaService, authService: AuthService, modelCustomizationService: ModelCustomizationService, eventsSubscription: BaseEventsSubscriptionService, eventsHandler: RefreshEventsHandlerService);
|
|
25
28
|
verifySignedActionParameters<TSignedParameters>(signedParameters: string): TSignedParameters;
|
|
26
29
|
getIpWhitelistConfiguration(): Promise<IpWhitelistConfiguration>;
|
|
27
30
|
postSchema(schema: ForestSchema): Promise<boolean>;
|
|
@@ -34,5 +37,6 @@ export default class ForestAdminClientWithCache implements ForestAdminClient {
|
|
|
34
37
|
}): Promise<RawTree>;
|
|
35
38
|
markScopesAsUpdated(renderingId: number | string): void;
|
|
36
39
|
subscribeToServerEvents(): Promise<void>;
|
|
40
|
+
onRefreshCustomizations(handler: () => void | Promise<void>): void;
|
|
37
41
|
}
|
|
38
42
|
//# sourceMappingURL=forest-admin-client-with-cache.d.ts.map
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const verify_approval_1 = __importDefault(require("./permissions/verify-approval"));
|
|
7
7
|
class ForestAdminClientWithCache {
|
|
8
|
-
constructor(options, permissionService, renderingPermissionService, contextVariablesInstantiator, chartHandler, ipWhitelistService, schemaService, authService, eventsSubscription) {
|
|
8
|
+
constructor(options, permissionService, renderingPermissionService, contextVariablesInstantiator, chartHandler, ipWhitelistService, schemaService, authService, modelCustomizationService, eventsSubscription, eventsHandler) {
|
|
9
9
|
this.options = options;
|
|
10
10
|
this.permissionService = permissionService;
|
|
11
11
|
this.renderingPermissionService = renderingPermissionService;
|
|
@@ -14,7 +14,9 @@ class ForestAdminClientWithCache {
|
|
|
14
14
|
this.ipWhitelistService = ipWhitelistService;
|
|
15
15
|
this.schemaService = schemaService;
|
|
16
16
|
this.authService = authService;
|
|
17
|
+
this.modelCustomizationService = modelCustomizationService;
|
|
17
18
|
this.eventsSubscription = eventsSubscription;
|
|
19
|
+
this.eventsHandler = eventsHandler;
|
|
18
20
|
}
|
|
19
21
|
verifySignedActionParameters(signedParameters) {
|
|
20
22
|
return (0, verify_approval_1.default)(signedParameters, this.options.envSecret);
|
|
@@ -45,6 +47,9 @@ class ForestAdminClientWithCache {
|
|
|
45
47
|
async subscribeToServerEvents() {
|
|
46
48
|
await this.eventsSubscription.subscribeEvents();
|
|
47
49
|
}
|
|
50
|
+
onRefreshCustomizations(handler) {
|
|
51
|
+
this.eventsHandler.onRefreshCustomizations(handler);
|
|
52
|
+
}
|
|
48
53
|
}
|
|
49
54
|
exports.default = ForestAdminClientWithCache;
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWFkbWluLWNsaWVudC13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1hZG1pbi1jbGllbnQtd2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWNBLG9GQUFxRTtBQVVyRSxNQUFxQiwwQkFBMEI7SUFDN0MsWUFDcUIsT0FBNkMsRUFDaEQsaUJBQW9DLEVBQ2pDLDBCQUFzRCxFQUN6RCw0QkFBMEQsRUFDMUQsWUFBMEIsRUFDdkIsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQzNCLHlCQUFvRCxFQUNqRCxrQkFBaUQsRUFDakQsYUFBMEM7UUFWMUMsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7UUFDaEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNqQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3pELGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBOEI7UUFDMUQsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDdkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUMzQiw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ2pELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBK0I7UUFDakQsa0JBQWEsR0FBYixhQUFhLENBQTZCO0lBQzVELENBQUM7SUFFSiw0QkFBNEIsQ0FBb0IsZ0JBQXdCO1FBQ3RFLE9BQU8sSUFBQSx5QkFBd0IsRUFBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCwyQkFBMkI7UUFDekIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFvQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXLENBQUMsV0FBbUIsRUFBRSxXQUFtQjtRQUNsRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUNwQixXQUFXLEVBQ1gsTUFBTSxFQUNOLGNBQWMsR0FLZjtRQUNDLE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsQ0FBQztZQUM5QyxXQUFXO1lBQ1gsY0FBYztZQUNkLE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sbUJBQW1CLENBQUMsV0FBNEI7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CO1lBQ25DLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLEtBQUssQ0FBQyx1QkFBdUI7UUFDbEMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVNLHVCQUF1QixDQUFDLE9BQW1DO1FBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztDQUNGO0FBL0RELDZDQStEQyJ9
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export { UserInfo } from './auth/types';
|
|
|
11
11
|
export default function createForestAdminClient(options: ForestAdminClientOptions): ForestAdminClient;
|
|
12
12
|
export * from './charts/types';
|
|
13
13
|
export * from './schema/types';
|
|
14
|
-
export
|
|
14
|
+
export * from './model-customizations/types';
|
|
15
15
|
export { default as ContextVariablesInjector } from './utils/context-variables-injector';
|
|
16
16
|
export { default as ContextVariables } from './utils/context-variables';
|
|
17
17
|
export { default as ChartHandler } from './charts/chart-handler';
|
package/dist/index.js
CHANGED
|
@@ -35,12 +35,13 @@ Object.defineProperty(exports, "NonSelectSQLQueryError", { enumerable: true, get
|
|
|
35
35
|
var types_1 = require("./permissions/types");
|
|
36
36
|
Object.defineProperty(exports, "CollectionActionEvent", { enumerable: true, get: function () { return types_1.CollectionActionEvent; } });
|
|
37
37
|
function createForestAdminClient(options) {
|
|
38
|
-
const { optionsWithDefaults, permission, renderingPermission, contextVariables, chartHandler, ipWhitelist, schema, auth, eventsSubscription, } = (0, build_application_services_1.default)(new forest_http_api_1.default(), options);
|
|
39
|
-
return new forest_admin_client_with_cache_1.default(optionsWithDefaults, permission, renderingPermission, contextVariables, chartHandler, ipWhitelist, schema, auth, eventsSubscription);
|
|
38
|
+
const { optionsWithDefaults, permission, renderingPermission, contextVariables, chartHandler, ipWhitelist, schema, auth, modelCustomizationService, eventsSubscription, eventsHandler, } = (0, build_application_services_1.default)(new forest_http_api_1.default(), options);
|
|
39
|
+
return new forest_admin_client_with_cache_1.default(optionsWithDefaults, permission, renderingPermission, contextVariables, chartHandler, ipWhitelist, schema, auth, modelCustomizationService, eventsSubscription, eventsHandler);
|
|
40
40
|
}
|
|
41
41
|
exports.default = createForestAdminClient;
|
|
42
42
|
__exportStar(require("./charts/types"), exports);
|
|
43
43
|
__exportStar(require("./schema/types"), exports);
|
|
44
|
+
__exportStar(require("./model-customizations/types"), exports);
|
|
44
45
|
var context_variables_injector_1 = require("./utils/context-variables-injector");
|
|
45
46
|
Object.defineProperty(exports, "ContextVariablesInjector", { enumerable: true, get: function () { return __importDefault(context_variables_injector_1).default; } });
|
|
46
47
|
var context_variables_1 = require("./utils/context-variables");
|
|
@@ -54,4 +55,4 @@ Object.defineProperty(exports, "buildApplicationServices", { enumerable: true, g
|
|
|
54
55
|
// export is necessary for the agent-generator package
|
|
55
56
|
var schema_1 = require("./schema");
|
|
56
57
|
Object.defineProperty(exports, "SchemaService", { enumerable: true, get: function () { return __importDefault(schema_1).default; } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RkFBb0U7QUFDcEUsc0dBQTBFO0FBQzFFLG9GQUEwRDtBQUcxRCx3RkFBK0Y7QUFBdEYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4Qyw4RkFBb0c7QUFBM0YscUpBQUEsT0FBTyxPQUEwQjtBQUMxQyx3RkFBK0Y7QUFBdEYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4QyxvRkFBMkY7QUFBbEYsNElBQUEsT0FBTyxPQUFzQjtBQUN0Qyw4RkFBb0c7QUFBM0YscUpBQUEsT0FBTyxPQUEwQjtBQWMxQyx1REFBdUQ7QUFDdkQsNkNBSzZCO0FBSjNCLDhHQUFBLHFCQUFxQixPQUFBO0FBT3ZCLFNBQXdCLHVCQUF1QixDQUM3QyxPQUFpQztJQUVqQyxNQUFNLEVBQ0osbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLElBQUksRUFDSix5QkFBeUIsRUFDekIsa0JBQWtCLEVBQ2xCLGFBQWEsR0FDZCxHQUFHLElBQUEsb0NBQXdCLEVBQUMsSUFBSSx5QkFBYSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFJLHdDQUEwQixDQUNuQyxtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFdBQVcsRUFDWCxNQUFNLEVBQ04sSUFBSSxFQUNKLHlCQUF5QixFQUN6QixrQkFBa0IsRUFDbEIsYUFBYSxDQUNkLENBQUM7QUFDSixDQUFDO0FBOUJELDBDQThCQztBQUVELGlEQUErQjtBQUMvQixpREFBK0I7QUFDL0IsK0RBQTZDO0FBRTdDLGlGQUF5RjtBQUFoRix1SkFBQSxPQUFPLE9BQTRCO0FBQzVDLCtEQUF3RTtBQUEvRCxzSUFBQSxPQUFPLE9BQW9CO0FBQ3BDLHdEQUFpRTtBQUF4RCw4SEFBQSxPQUFPLE9BQWdCO0FBQ2hDLG1GQUF5RjtBQUFoRiw2SkFBQSxPQUFPLE9BQThCO0FBQzlDLDJFQUFtRjtBQUExRSx1SkFBQSxPQUFPLE9BQTRCO0FBRTVDLHNEQUFzRDtBQUN0RCxtQ0FBb0Q7QUFBM0Msd0hBQUEsT0FBTyxPQUFpQiJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ModelCustomizationService, WebhookAction } from './types';
|
|
2
|
+
import { ForestAdminClientOptionsWithDefaults, ForestAdminServerInterface } from '../types';
|
|
3
|
+
export default class ModelCustomizationFromApiService implements ModelCustomizationService {
|
|
4
|
+
private readonly forestadminServerInterface;
|
|
5
|
+
private readonly options;
|
|
6
|
+
constructor(forestadminServerInterface: ForestAdminServerInterface, options: ForestAdminClientOptionsWithDefaults);
|
|
7
|
+
getConfiguration(): Promise<WebhookAction[]>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=model-customization-from-api.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
function mapApiValues(modelCustomization) {
|
|
4
|
+
if (modelCustomization.type !== 'action') {
|
|
5
|
+
throw new Error('Only action customizations are supported for now.');
|
|
6
|
+
}
|
|
7
|
+
const configuration = modelCustomization.configuration;
|
|
8
|
+
const mappedConfiguration = {
|
|
9
|
+
...configuration,
|
|
10
|
+
scope: configuration.scope
|
|
11
|
+
? (configuration.scope.slice(0, 1).toUpperCase() +
|
|
12
|
+
configuration.scope.slice(1))
|
|
13
|
+
: 'Single',
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
...modelCustomization,
|
|
17
|
+
configuration: mappedConfiguration,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
class ModelCustomizationFromApiService {
|
|
21
|
+
constructor(forestadminServerInterface, options) {
|
|
22
|
+
this.forestadminServerInterface = forestadminServerInterface;
|
|
23
|
+
this.options = options;
|
|
24
|
+
}
|
|
25
|
+
async getConfiguration() {
|
|
26
|
+
const result = await this.forestadminServerInterface.getModelCustomizations(this.options);
|
|
27
|
+
return result.map(mapApiValues);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.default = ModelCustomizationFromApiService;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtY3VzdG9taXphdGlvbi1mcm9tLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC1jdXN0b21pemF0aW9ucy9tb2RlbC1jdXN0b21pemF0aW9uLWZyb20tYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBVUEsU0FBUyxZQUFZLENBQ25CLGtCQUFxRTtJQUVyRSxJQUFJLGtCQUFrQixDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0tBQ3RFO0lBRUQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUMsYUFBOEMsQ0FBQztJQUN4RixNQUFNLG1CQUFtQixHQUErQjtRQUN0RCxHQUFHLGFBQWE7UUFDaEIsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLO1lBQ3hCLENBQUMsQ0FBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7Z0JBQzdDLGFBQWEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFpQjtZQUNqRCxDQUFDLENBQUMsUUFBUTtLQUNiLENBQUM7SUFFRixPQUFPO1FBQ0wsR0FBRyxrQkFBa0I7UUFDckIsYUFBYSxFQUFFLG1CQUFtQjtLQUNuQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQXFCLGdDQUFnQztJQUNuRCxZQUNtQiwwQkFBc0QsRUFDdEQsT0FBNkM7UUFEN0MsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxZQUFPLEdBQVAsT0FBTyxDQUFzQztJQUM3RCxDQUFDO0lBRUosS0FBSyxDQUFDLGdCQUFnQjtRQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUYsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQVhELG1EQVdDIn0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export declare enum ModelCustomizationType {
|
|
2
|
+
action = "action"
|
|
3
|
+
}
|
|
4
|
+
export type ActionScopeApi = 'global' | 'single' | 'bulk';
|
|
5
|
+
export type ActionScope = 'Global' | 'Single' | 'Bulk';
|
|
6
|
+
export type ActionType = 'webhook';
|
|
7
|
+
export type ModelCustomization<TConfiguration = unknown> = {
|
|
8
|
+
name: string;
|
|
9
|
+
type: `${ModelCustomizationType}`;
|
|
10
|
+
modelName: string;
|
|
11
|
+
configuration: TConfiguration;
|
|
12
|
+
};
|
|
13
|
+
export type ActionConfigurationApi<TActionConfigurationSpecific = unknown> = {
|
|
14
|
+
scope: ActionScopeApi;
|
|
15
|
+
type: ActionType;
|
|
16
|
+
configuration: TActionConfigurationSpecific;
|
|
17
|
+
};
|
|
18
|
+
export type WebhookActionConfigurationSpecific = {
|
|
19
|
+
url: string;
|
|
20
|
+
integration: string;
|
|
21
|
+
};
|
|
22
|
+
export type WebhookActionConfigurationApi = ActionConfigurationApi<WebhookActionConfigurationSpecific> & {
|
|
23
|
+
type: 'webhook';
|
|
24
|
+
};
|
|
25
|
+
export type ActionConfiguration<TActionConfigurationSpecific = unknown> = {
|
|
26
|
+
scope: ActionScope;
|
|
27
|
+
type: ActionType;
|
|
28
|
+
configuration: TActionConfigurationSpecific;
|
|
29
|
+
};
|
|
30
|
+
export type WebhookActionConfiguration = ActionConfiguration<WebhookActionConfigurationSpecific> & {
|
|
31
|
+
type: 'webhook';
|
|
32
|
+
};
|
|
33
|
+
export interface ModelCustomizationService {
|
|
34
|
+
getConfiguration(): Promise<ModelCustomization[]>;
|
|
35
|
+
}
|
|
36
|
+
export type WebhookAction = ModelCustomization<WebhookActionConfiguration>;
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelCustomizationType = void 0;
|
|
4
|
+
var ModelCustomizationType;
|
|
5
|
+
(function (ModelCustomizationType) {
|
|
6
|
+
ModelCustomizationType["action"] = "action";
|
|
7
|
+
})(ModelCustomizationType = exports.ModelCustomizationType || (exports.ModelCustomizationType = {}));
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kZWwtY3VzdG9taXphdGlvbnMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxzQkFFWDtBQUZELFdBQVksc0JBQXNCO0lBQ2hDLDJDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFGVyxzQkFBc0IsR0FBdEIsOEJBQXNCLEtBQXRCLDhCQUFzQixRQUVqQyJ9
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { EnvironmentPermissionsV4, RenderingPermissionV4, UserPermissionV4 } from './types';
|
|
2
|
+
import { ModelCustomization } from '../model-customizations/types';
|
|
2
3
|
import { ForestAdminClientOptionsWithDefaults, ForestAdminServerInterface } from '../types';
|
|
3
|
-
type HttpOptions = Pick<ForestAdminClientOptionsWithDefaults, 'envSecret' | 'forestServerUrl'>;
|
|
4
|
+
export type HttpOptions = Pick<ForestAdminClientOptionsWithDefaults, 'envSecret' | 'forestServerUrl'>;
|
|
4
5
|
export default class ForestHttpApi implements ForestAdminServerInterface {
|
|
5
6
|
getEnvironmentPermissions(options: HttpOptions): Promise<EnvironmentPermissionsV4>;
|
|
6
7
|
getUsers(options: HttpOptions): Promise<UserPermissionV4[]>;
|
|
7
8
|
getRenderingPermissions(renderingId: number, options: HttpOptions): Promise<RenderingPermissionV4>;
|
|
9
|
+
getModelCustomizations(options: HttpOptions): Promise<ModelCustomization[]>;
|
|
8
10
|
}
|
|
9
|
-
export {};
|
|
10
11
|
//# sourceMappingURL=forest-http-api.d.ts.map
|
|
@@ -14,6 +14,9 @@ class ForestHttpApi {
|
|
|
14
14
|
async getRenderingPermissions(renderingId, options) {
|
|
15
15
|
return server_1.default.query(options, 'get', `/liana/v4/permissions/renderings/${renderingId}`);
|
|
16
16
|
}
|
|
17
|
+
async getModelCustomizations(options) {
|
|
18
|
+
return server_1.default.query(options, 'get', '/liana/model-customizations');
|
|
19
|
+
}
|
|
17
20
|
}
|
|
18
21
|
exports.default = ForestHttpApi;
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWh0dHAtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL2ZvcmVzdC1odHRwLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLDZEQUEwQztBQU8xQyxNQUFxQixhQUFhO0lBQ2hDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUFvQjtRQUNsRCxPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFvQjtRQUNqQyxPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUMzQixXQUFtQixFQUNuQixPQUFvQjtRQUVwQixPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0NBQW9DLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFvQjtRQUMvQyxPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUN0QixPQUFPLEVBQ1AsS0FBSyxFQUNMLDZCQUE2QixDQUM5QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdkJELGdDQXVCQyJ9
|
package/dist/schema/types.d.ts
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ import type { Chart, QueryChart } from './charts/types';
|
|
|
3
3
|
import type { Client } from 'openid-client';
|
|
4
4
|
import { UserInfo } from './auth/types';
|
|
5
5
|
import { IpWhitelistConfiguration } from './ip-whitelist/types';
|
|
6
|
+
import { ModelCustomization, ModelCustomizationService } from './model-customizations/types';
|
|
7
|
+
import { HttpOptions } from './permissions/forest-http-api';
|
|
6
8
|
import { CollectionActionEvent, EnvironmentPermissionsV4, RawTree, RawTreeWithSources, RenderingPermissionV4, UserPermissionV4 } from './permissions/types';
|
|
7
9
|
import { ForestSchema } from './schema/types';
|
|
8
10
|
import ContextVariables, { RequestContextVariables } from './utils/context-variables';
|
|
@@ -21,6 +23,7 @@ export interface ForestAdminClient {
|
|
|
21
23
|
readonly permissionService: PermissionService;
|
|
22
24
|
readonly contextVariablesInstantiator: ContextVariablesInstantiatorInterface;
|
|
23
25
|
readonly chartHandler: ChartHandlerInterface;
|
|
26
|
+
readonly modelCustomizationService: ModelCustomizationService;
|
|
24
27
|
verifySignedActionParameters<TSignedParameters>(signedParameters: string): TSignedParameters;
|
|
25
28
|
getIpWhitelistConfiguration(): Promise<IpWhitelistConfiguration>;
|
|
26
29
|
postSchema(schema: ForestSchema): Promise<boolean>;
|
|
@@ -33,6 +36,7 @@ export interface ForestAdminClient {
|
|
|
33
36
|
}): Promise<RawTree>;
|
|
34
37
|
markScopesAsUpdated(renderingId: number | string): void;
|
|
35
38
|
subscribeToServerEvents(): Promise<void>;
|
|
39
|
+
onRefreshCustomizations(handler: () => void | Promise<void>): void;
|
|
36
40
|
}
|
|
37
41
|
export interface PermissionService {
|
|
38
42
|
canOnCollection(params: {
|
|
@@ -122,5 +126,6 @@ export interface ForestAdminServerInterface {
|
|
|
122
126
|
getEnvironmentPermissions: (...args: any[]) => Promise<EnvironmentPermissionsV4>;
|
|
123
127
|
getUsers: (...args: any[]) => Promise<UserPermissionV4[]>;
|
|
124
128
|
getRenderingPermissions: (renderingId: number, ...args: any[]) => Promise<RenderingPermissionV4>;
|
|
129
|
+
getModelCustomizations: (options: HttpOptions) => Promise<ModelCustomization[]>;
|
|
125
130
|
}
|
|
126
131
|
//# sourceMappingURL=types.d.ts.map
|