@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.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtYXBwbGljYXRpb24tc2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtYXBwbGljYXRpb24tc2VydmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBaUM7QUFDakMsMkVBQWtEO0FBQ2xELGdGQUE4RDtBQUM5RCx3SUFBNEc7QUFDNUcsa0VBQWdEO0FBQ2hELHdGQUFzRTtBQUN0RSxnR0FBb0U7QUFDcEUsOEZBQTRFO0FBQzVFLG9GQUFrRTtBQUNsRSxzREFBcUM7QUFNckMsNEdBQWtGO0FBQ2xGLDRFQUFtRDtBQUVuRCxTQUF3Qix3QkFBd0IsQ0FDOUMsMEJBQXNELEVBQ3RELE9BQWlDO0lBWWpDLE1BQU0sbUJBQW1CLEdBQUc7UUFDMUIsZUFBZSxFQUFFLDZCQUE2QjtRQUM5QyxpQ0FBaUMsRUFBRSxFQUFFLEdBQUcsRUFBRTtRQUMxQyxNQUFNLEVBQUUsd0JBQWE7UUFDckIsbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixHQUFHLE9BQU87S0FDWCxDQUFDO0lBRUYsTUFBTSxlQUFlLEdBQUcsSUFBSSx5QkFBcUIsQ0FDL0MsbUJBQW1CLEVBQ25CLDBCQUEwQixDQUMzQixDQUFDO0lBRUYsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLDhCQUEwQixDQUN4RCxtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLDBCQUEwQixDQUMzQixDQUFDO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLDJCQUF1QixDQUNsRCxtQkFBbUIsRUFDbkIsMEJBQTBCLENBQzNCLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLElBQUksd0NBQTRCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUvRSxNQUFNLFVBQVUsR0FBRyxJQUFJLCtCQUFpQixDQUFDLGdCQUFnQixFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFFaEYsTUFBTSxhQUFhLEdBQUcsSUFBSSwrQ0FBaUMsQ0FDekQsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixtQkFBbUIsQ0FDcEIsQ0FBQztJQUVGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSw2QkFBeUIsQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUU3RixPQUFPO1FBQ0wsbUJBQW1CO1FBQ25CLG1CQUFtQjtRQUNuQixVQUFVO1FBQ1YsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixZQUFZLEVBQUUsSUFBSSx1QkFBWSxDQUFDLGdCQUFnQixDQUFDO1FBQ2hELFdBQVcsRUFBRSxJQUFJLHNCQUFrQixDQUFDLG1CQUFtQixDQUFDO1FBQ3hELE1BQU0sRUFBRSxJQUFJLGdCQUFhLENBQUMsbUJBQW1CLENBQUM7UUFDOUMsSUFBSSxFQUFFLElBQUksY0FBVyxDQUFDLG1CQUFtQixDQUFDO0tBQzNDLENBQUM7QUFDSixDQUFDO0FBN0RELDJDQTZEQyJ9
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 onEventOpen;
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
- source.addEventListener('open', () => this.onEventOpen());
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
- onEventOpen() {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzLXN1YnNjcmlwdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhEQUFzQztBQUV0QyxtQ0FBb0Y7QUFHcEYsTUFBcUIseUJBQXlCO0lBQzVDLFlBQ21CLE9BQTZDLEVBQzdDLDJCQUF3RDtRQUR4RCxZQUFPLEdBQVAsT0FBTyxDQUFzQztRQUM3QyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO0lBQ3hFLENBQUM7SUFFSixLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtZQUNyQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDakIsT0FBTyxFQUNQLHlFQUF5RTtnQkFDdkUsOEJBQThCLENBQ2pDLENBQUM7WUFFRixPQUFPO1NBQ1I7UUFFRCxNQUFNLGlCQUFpQixHQUFHO1lBQ3hCLDBDQUEwQztZQUMxQyxlQUFlLEVBQUUsS0FBSztZQUN0QixPQUFPLEVBQUUsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUN4RCxLQUFLLEVBQUU7Z0JBQ0wsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsS0FBSyxHQUFHO2FBQ3JFO1NBQ0YsQ0FBQztRQUNGLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLCtCQUErQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFOUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxxQkFBVyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXZELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUUvRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTFELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBZSxDQUFDLFlBQVksRUFBRSxLQUFLLElBQUksRUFBRSxDQUMvRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLENBQ2hELENBQUM7UUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsdUJBQWUsQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FDL0QsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFlBQVksRUFBRSxDQUNoRCxDQUFDO1FBRUYsTUFBTSxDQUFDLGdCQUFnQixDQUFDLHVCQUFlLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEtBQWtCLEVBQUUsRUFBRSxDQUN0RixJQUFJLENBQUMsaUNBQWlDLENBQUMsS0FBSyxDQUFDLENBQzlDLENBQUM7UUFFRixNQUFNLENBQUMsZ0JBQWdCLENBQUMsdUJBQWUsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLElBQUksRUFBRSxDQUN4RSxJQUFJLENBQUMsMkJBQTJCLENBQUMscUJBQXFCLEVBQUUsQ0FDekQsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsaUNBQWlDLENBQUMsS0FBa0I7UUFDaEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUseURBQXlELENBQUMsQ0FBQztZQUV4RixPQUFPO1NBQ1I7UUFFRCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBeUIsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sSUFBSSxDQUFDLDJCQUEyQixDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBMEQ7UUFDN0UsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtZQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztZQUUvRCxPQUFPO1NBQ1I7UUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLHlCQUF5QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDakIsT0FBTyxFQUNQLDRFQUE0RSxDQUM3RSxDQUFDO1FBRUYsOERBQThEO1FBQzlELElBQUksQ0FBQywyQkFBMkIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQWpGRCw0Q0FpRkMifQ==
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 extends EventEmitter implements RefreshEventsHandlerService {
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 extends events_1.default {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLXJlZnJlc2gtZXZlbnRzLWhhbmRsZXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ldmVudHMtc3Vic2NyaXB0aW9uL25hdGl2ZS1yZWZyZXNoLWV2ZW50cy1oYW5kbGVyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBa0M7QUFPbEMsTUFBcUIsaUNBQ25CLFNBQVEsZ0JBQVk7SUFHcEIsWUFDbUIsdUJBQWdELEVBQ2hELHNCQUE2QyxFQUM3QywwQkFBc0Q7UUFFdkUsS0FBSyxFQUFFLENBQUM7UUFKUyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDN0MsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtJQUd6RSxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsc0JBQXNCLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxZQUFpQztRQUN4RCxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVk7WUFDcEMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0scUJBQXFCO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFckQsbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFyQ0Qsb0RBcUNDIn0=
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 extends EventEmitter {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXZlbnRzLXN1YnNjcmlwdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxJQUFZLGVBS1g7QUFMRCxXQUFZLGVBQWU7SUFDekIsaURBQThCLENBQUE7SUFDOUIsaURBQThCLENBQUE7SUFDOUIsMkRBQXdDLENBQUE7SUFDeEMsbUVBQWdELENBQUE7QUFDbEQsQ0FBQyxFQUxXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBSzFCIn0=
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 EventsSubscriptionService from './events-subscription';
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
- protected readonly eventsSubscription: EventsSubscriptionService;
24
- constructor(options: ForestAdminClientOptionsWithDefaults, permissionService: PermissionService, renderingPermissionService: RenderingPermissionService, contextVariablesInstantiator: ContextVariablesInstantiator, chartHandler: ChartHandler, ipWhitelistService: IpWhiteListService, schemaService: SchemaService, authService: AuthService, eventsSubscription: EventsSubscriptionService);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWFkbWluLWNsaWVudC13aXRoLWNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1hZG1pbi1jbGllbnQtd2l0aC1jYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVVBLG9GQUFxRTtBQVVyRSxNQUFxQiwwQkFBMEI7SUFDN0MsWUFDcUIsT0FBNkMsRUFDaEQsaUJBQW9DLEVBQ2pDLDBCQUFzRCxFQUN6RCw0QkFBMEQsRUFDMUQsWUFBMEIsRUFDdkIsa0JBQXNDLEVBQ3RDLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ3hCLGtCQUE2QztRQVI3QyxZQUFPLEdBQVAsT0FBTyxDQUFzQztRQUNoRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ2pDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDekQsaUNBQTRCLEdBQTVCLDRCQUE0QixDQUE4QjtRQUMxRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN2Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7SUFDL0QsQ0FBQztJQUVKLDRCQUE0QixDQUFvQixnQkFBd0I7UUFDdEUsT0FBTyxJQUFBLHlCQUF3QixFQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQW9CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUFtQixFQUFFLFdBQW1CO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTSxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQ3BCLFdBQVcsRUFDWCxNQUFNLEVBQ04sY0FBYyxHQUtmO1FBQ0MsT0FBTyxJQUFJLENBQUMsMEJBQTBCLENBQUMsUUFBUSxDQUFDO1lBQzlDLFdBQVc7WUFDWCxjQUFjO1lBQ2QsTUFBTTtTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxXQUE0QjtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUI7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU0sS0FBSyxDQUFDLHVCQUF1QjtRQUNsQyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUF6REQsNkNBeURDIn0=
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 { RefreshEventsHandlerService } from './events-subscription/types';
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4RkFBb0U7QUFDcEUsc0dBQTBFO0FBQzFFLG9GQUEwRDtBQUcxRCx3RkFBK0Y7QUFBdEYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4Qyw4RkFBb0c7QUFBM0YscUpBQUEsT0FBTyxPQUEwQjtBQUMxQyx3RkFBK0Y7QUFBdEYsZ0pBQUEsT0FBTyxPQUF3QjtBQUN4QyxvRkFBMkY7QUFBbEYsNElBQUEsT0FBTyxPQUFzQjtBQUN0Qyw4RkFBb0c7QUFBM0YscUpBQUEsT0FBTyxPQUEwQjtBQWMxQyx1REFBdUQ7QUFDdkQsNkNBSzZCO0FBSjNCLDhHQUFBLHFCQUFxQixPQUFBO0FBT3ZCLFNBQXdCLHVCQUF1QixDQUM3QyxPQUFpQztJQUVqQyxNQUFNLEVBQ0osbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLElBQUksRUFDSixrQkFBa0IsR0FDbkIsR0FBRyxJQUFBLG9DQUF3QixFQUFDLElBQUkseUJBQWEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRTNELE9BQU8sSUFBSSx3Q0FBMEIsQ0FDbkMsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixXQUFXLEVBQ1gsTUFBTSxFQUNOLElBQUksRUFDSixrQkFBa0IsQ0FDbkIsQ0FBQztBQUNKLENBQUM7QUExQkQsMENBMEJDO0FBRUQsaURBQStCO0FBQy9CLGlEQUErQjtBQUUvQixpRkFBeUY7QUFBaEYsdUpBQUEsT0FBTyxPQUE0QjtBQUM1QywrREFBd0U7QUFBL0Qsc0lBQUEsT0FBTyxPQUFvQjtBQUNwQyx3REFBaUU7QUFBeEQsOEhBQUEsT0FBTyxPQUFnQjtBQUNoQyxtRkFBeUY7QUFBaEYsNkpBQUEsT0FBTyxPQUE4QjtBQUM5QywyRUFBbUY7QUFBMUUsdUpBQUEsT0FBTyxPQUE0QjtBQUU1QyxzREFBc0Q7QUFDdEQsbUNBQW9EO0FBQTNDLHdIQUFBLE9BQU8sT0FBaUIifQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWh0dHAtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL2ZvcmVzdC1odHRwLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLDZEQUEwQztBQUkxQyxNQUFxQixhQUFhO0lBQ2hDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUFvQjtRQUNsRCxPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFvQjtRQUNqQyxPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUMzQixXQUFtQixFQUNuQixPQUFvQjtRQUVwQixPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0NBQW9DLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztDQUNGO0FBZkQsZ0NBZUMifQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWh0dHAtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Blcm1pc3Npb25zL2ZvcmVzdC1odHRwLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLDZEQUEwQztBQU8xQyxNQUFxQixhQUFhO0lBQ2hDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUFvQjtRQUNsRCxPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFvQjtRQUNqQyxPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsS0FBSyxDQUFDLHVCQUF1QixDQUMzQixXQUFtQixFQUNuQixPQUFvQjtRQUVwQixPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0NBQW9DLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFvQjtRQUMvQyxPQUFPLGdCQUFXLENBQUMsS0FBSyxDQUN0QixPQUFPLEVBQ1AsS0FBSyxFQUNMLDZCQUE2QixDQUM5QixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdkJELGdDQXVCQyJ9
@@ -4,6 +4,7 @@ export type ForestSchema = {
4
4
  metadata: {
5
5
  liana: string;
6
6
  liana_version: string;
7
+ liana_features: Record<string, string> | null;
7
8
  stack: {
8
9
  engine: string;
9
10
  engine_version: string;
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/forestadmin-client",
3
- "version": "1.2.0",
3
+ "version": "1.3.0-alpha-webhook-custom-actions.2",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {