@onecx/angular-integration-interface 4.42.0 → 4.43.0

Sign up to get free protection for your applications and to get access to all the features.
package/esm2020/index.mjs CHANGED
@@ -6,6 +6,7 @@ export * from './lib/services/portal-message.service';
6
6
  export * from './lib/services/theme.service';
7
7
  export * from './lib/services/remote-components.service';
8
8
  export * from './lib/services/initialize-module-guard.service';
9
+ export * from './lib/services/workspace.service';
9
10
  // models
10
11
  export * from './lib/model/config-key.model';
11
12
  // core
@@ -13,4 +14,4 @@ export * from './lib/api/iauth.service';
13
14
  export * from './lib/api/injection-tokens';
14
15
  // utils
15
16
  export * from './lib/utils/add-initialize-module-guard.utils';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFXO0FBQ1gsY0FBYyxrQ0FBa0MsQ0FBQTtBQUNoRCxjQUFjLHNDQUFzQyxDQUFBO0FBQ3BELGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyxnREFBZ0QsQ0FBQTtBQUU5RCxTQUFTO0FBQ1QsY0FBYyw4QkFBOEIsQ0FBQTtBQUU1QyxPQUFPO0FBQ1AsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLDRCQUE0QixDQUFBO0FBRTFDLFFBQVE7QUFDUixjQUFjLCtDQUErQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2FwcC1zdGF0ZS5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdXNlci5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcG9ydGFsLW1lc3NhZ2Uuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9yZW1vdGUtY29tcG9uZW50cy5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaW5pdGlhbGl6ZS1tb2R1bGUtZ3VhcmQuc2VydmljZSdcblxuLy8gbW9kZWxzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tb2RlbC9jb25maWcta2V5Lm1vZGVsJ1xuXG4vLyBjb3JlXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvaWF1dGguc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2FwaS9pbmplY3Rpb24tdG9rZW5zJ1xuXG4vLyB1dGlsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvYWRkLWluaXRpYWxpemUtbW9kdWxlLWd1YXJkLnV0aWxzJ1xuXG5leHBvcnQgeyBNZmVJbmZvLCBUaGVtZSB9IGZyb20gJ0BvbmVjeC9pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxXQUFXO0FBQ1gsY0FBYyxrQ0FBa0MsQ0FBQTtBQUNoRCxjQUFjLHNDQUFzQyxDQUFBO0FBQ3BELGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyx1Q0FBdUMsQ0FBQTtBQUNyRCxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsMENBQTBDLENBQUE7QUFDeEQsY0FBYyxnREFBZ0QsQ0FBQTtBQUM5RCxjQUFjLGtDQUFrQyxDQUFBO0FBRWhELFNBQVM7QUFDVCxjQUFjLDhCQUE4QixDQUFBO0FBRTVDLE9BQU87QUFDUCxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsNEJBQTRCLENBQUE7QUFFMUMsUUFBUTtBQUNSLGNBQWMsK0NBQStDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvYXBwLXN0YXRlLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jb25maWd1cmF0aW9uLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9wb3J0YWwtbWVzc2FnZS5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdGhlbWUuc2VydmljZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JlbW90ZS1jb21wb25lbnRzLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9pbml0aWFsaXplLW1vZHVsZS1ndWFyZC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvd29ya3NwYWNlLnNlcnZpY2UnXG5cbi8vIG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWwvY29uZmlnLWtleS5tb2RlbCdcblxuLy8gY29yZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvYXBpL2lhdXRoLnNlcnZpY2UnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hcGkvaW5qZWN0aW9uLXRva2VucydcblxuLy8gdXRpbHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2FkZC1pbml0aWFsaXplLW1vZHVsZS1ndWFyZC51dGlscydcblxuZXhwb3J0IHsgTWZlSW5mbywgVGhlbWUgfSBmcm9tICdAb25lY3gvaW50ZWdyYXRpb24taW50ZXJmYWNlJ1xuIl19
@@ -0,0 +1,124 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { AppStateService } from './app-state.service';
3
+ import { map } from 'rxjs';
4
+ import { Location } from '@angular/common';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./app-state.service";
7
+ export class WorkspaceService {
8
+ constructor(appStateService) {
9
+ this.appStateService = appStateService;
10
+ this.aliasStart = '[[';
11
+ this.aliasEnd = ']]';
12
+ this.paramStart = '{';
13
+ this.paramEnd = '}';
14
+ }
15
+ getUrl(appId, productName, endpointName, params = {}) {
16
+ return this.appStateService.currentWorkspace$.pipe(map((workspace) => {
17
+ const finalUrl = this.constructRouteUrl(workspace, appId, productName, endpointName, params);
18
+ return finalUrl;
19
+ }));
20
+ }
21
+ constructBaseUrlFromWorkspace(workspace) {
22
+ if (workspace.baseUrl === undefined) {
23
+ console.log('WARNING: There was no baseUrl for received workspace.');
24
+ return '';
25
+ }
26
+ return workspace.baseUrl;
27
+ }
28
+ constructRouteUrl(workspace, appId, productName, endpointName, params) {
29
+ const route = this.filterRouteFromList(workspace.routes, appId, productName);
30
+ let url = this.constructBaseUrlFromWorkspace(workspace);
31
+ if (!route) {
32
+ console.log(`WARNING: No route.baseUrl could be found for given appId "${appId}" and productName "${productName}"`);
33
+ return url;
34
+ }
35
+ if (route.baseUrl !== undefined && route.baseUrl.length > 0) {
36
+ url = route.baseUrl;
37
+ }
38
+ url = Location.joinWithSlash(url, this.constructEndpointUrl(route, endpointName, params));
39
+ return url;
40
+ }
41
+ constructEndpointUrl(route, endpointName, params) {
42
+ if (!route.endpoints) {
43
+ return '';
44
+ }
45
+ const finalEndpoint = this.dissolveEndpoint(endpointName, route.endpoints);
46
+ if (!finalEndpoint || finalEndpoint.path === undefined) {
47
+ console.log('WARNING: No endpoint or endpoint.path could be found');
48
+ return '';
49
+ }
50
+ const paramsFilled = this.fillParamsForPath(finalEndpoint.path, params);
51
+ if (paramsFilled === undefined) {
52
+ console.log('WARNING: Params could not be filled correctly');
53
+ return '';
54
+ }
55
+ return paramsFilled;
56
+ }
57
+ filterRouteFromList(routes, appId, productName) {
58
+ if (!routes) {
59
+ return undefined;
60
+ }
61
+ const productRoutes = routes.filter((route) => route.appId === appId && route.productName === productName);
62
+ if (productRoutes.length === 0) {
63
+ return undefined;
64
+ }
65
+ if (productRoutes.length > 1) {
66
+ console.log('WARNING: There were more than one route. First route has been used.');
67
+ }
68
+ return productRoutes[0];
69
+ }
70
+ dissolveEndpoint(endpointName, endpoints) {
71
+ let endpoint = endpoints.find((ep) => ep.name === endpointName);
72
+ if (!endpoint) {
73
+ return undefined;
74
+ }
75
+ while (endpoint.path?.includes(this.aliasStart)) {
76
+ const path = endpoint.path;
77
+ const startIdx = path.indexOf(this.aliasStart) + this.aliasStart.length;
78
+ const endIdx = path.lastIndexOf(this.aliasEnd);
79
+ if (endIdx <= startIdx) {
80
+ return undefined;
81
+ }
82
+ const aliasName = path.substring(startIdx, endIdx);
83
+ endpoint = endpoints.find((ep) => ep.name === aliasName);
84
+ if (!endpoint) {
85
+ return undefined;
86
+ }
87
+ }
88
+ return endpoint;
89
+ }
90
+ fillParamsForPath(path, params) {
91
+ while (path.includes(this.paramStart)) {
92
+ const paramName = path.substring(path.indexOf(this.paramStart) + this.paramStart.length, path.indexOf(this.paramEnd));
93
+ const paramValue = this.getStringFromUnknown(params[paramName]);
94
+ if (paramValue != undefined && paramValue.length > 0) {
95
+ path = path.replace(this.paramStart.concat(paramName).concat(this.paramEnd), paramValue);
96
+ }
97
+ else {
98
+ console.log(`WARNING: Searched param "${paramName}" was not found in given param list `);
99
+ return '';
100
+ }
101
+ }
102
+ return path;
103
+ }
104
+ getStringFromUnknown(value) {
105
+ if (value === null || value === undefined) {
106
+ return '';
107
+ }
108
+ else if (typeof value === 'string') {
109
+ return value;
110
+ }
111
+ else {
112
+ return String(value);
113
+ }
114
+ }
115
+ }
116
+ WorkspaceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, deps: [{ token: i1.AppStateService }], target: i0.ɵɵFactoryTarget.Injectable });
117
+ WorkspaceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, providedIn: 'root' });
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, decorators: [{
119
+ type: Injectable,
120
+ args: [{
121
+ providedIn: 'root',
122
+ }]
123
+ }], ctorParameters: function () { return [{ type: i1.AppStateService }]; } });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItaW50ZWdyYXRpb24taW50ZXJmYWNlL3NyYy9saWIvc2VydmljZXMvd29ya3NwYWNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDckQsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUd0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUE7OztBQUsxQyxNQUFNLE9BQU8sZ0JBQWdCO0lBTTNCLFlBQXNCLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUw5QyxlQUFVLEdBQUcsSUFBSSxDQUFBO1FBQ2pCLGFBQVEsR0FBRyxJQUFJLENBQUE7UUFDZixlQUFVLEdBQUcsR0FBRyxDQUFBO1FBQ2hCLGFBQVEsR0FBRyxHQUFHLENBQUE7SUFFbUMsQ0FBQztJQUUxRCxNQUFNLENBQ0osS0FBYSxFQUNiLFdBQW1CLEVBQ25CLFlBQW9CLEVBQ3BCLFNBQWtDLEVBQUU7UUFFcEMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FDaEQsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUM1RixPQUFPLFFBQVEsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVPLDZCQUE2QixDQUFDLFNBQWM7UUFDbEQsSUFBSSxTQUFTLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFB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QkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtZQUMvRCxJQUFJLFVBQVUsSUFBSSxTQUFTLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUE7YUFDekY7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsU0FBUyxzQ0FBc0MsQ0FBQyxDQUFBO2dCQUN4RixPQUFPLEVBQUUsQ0FBQTthQUNWO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxLQUFjO1FBQ3pDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3pDLE9BQU8sRUFBRSxDQUFBO1NBQ1Y7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUNwQyxPQUFPLEtBQUssQ0FBQTtTQUNiO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNyQjtJQUNILENBQUM7OzhHQTlJVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQUZmLE1BQU07NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9hcHAtc3RhdGUuc2VydmljZSdcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBSb3V0ZSB9IGZyb20gJ0BvbmVjeC9pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBFbmRwb2ludCB9IGZyb20gJ0BvbmVjeC9pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZVNlcnZpY2Uge1xuICBwcml2YXRlIGFsaWFzU3RhcnQgPSAnW1snXG4gIHByaXZhdGUgYWxpYXNFbmQgPSAnXV0nXG4gIHByaXZhdGUgcGFyYW1TdGFydCA9ICd7J1xuICBwcml2YXRlIHBhcmFtRW5kID0gJ30nXG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGFwcFN0YXRlU2VydmljZTogQXBwU3RhdGVTZXJ2aWNlKSB7fVxuXG4gIGdldFVybChcbiAgICBhcHBJZDogc3RyaW5nLFxuICAgIHByb2R1Y3ROYW1lOiBzdHJpbmcsXG4gICAgZW5kcG9pbnROYW1lOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwU3RhdGVTZXJ2aWNlLmN1cnJlbnRXb3Jrc3BhY2UkLnBpcGUoXG4gICAgICBtYXAoKHdvcmtzcGFjZSkgPT4ge1xuICAgICAgICBjb25zdCBmaW5hbFVybCA9IHRoaXMuY29uc3RydWN0Um91dGVVcmwod29ya3NwYWNlLCBhcHBJZCwgcHJvZHVjdE5hbWUsIGVuZHBvaW50TmFtZSwgcGFyYW1zKVxuICAgICAgICByZXR1cm4gZmluYWxVcmxcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RCYXNlVXJsRnJvbVdvcmtzcGFjZSh3b3Jrc3BhY2U6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKHdvcmtzcGFjZS5iYXNlVXJsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdXQVJOSU5HOiBUaGVyZSB3YXMgbm8gYmFzZVVybCBmb3IgcmVjZWl2ZWQgd29ya3NwYWNlLicpXG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgcmV0dXJuIHdvcmtzcGFjZS5iYXNlVXJsXG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdFJvdXRlVXJsKFxuICAgIHdvcmtzcGFjZTogYW55LFxuICAgIGFwcElkOiBzdHJpbmcsXG4gICAgcHJvZHVjdE5hbWU6IHN0cmluZyxcbiAgICBlbmRwb2ludE5hbWU6IHN0cmluZyxcbiAgICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm91dGUgPSB0aGlzLmZpbHRlclJvdXRlRnJvbUxpc3Qod29ya3NwYWNlLnJvdXRlcywgYXBwSWQsIHByb2R1Y3ROYW1lKVxuICAgIGxldCB1cmwgPSB0aGlzLmNvbnN0cnVjdEJhc2VVcmxGcm9tV29ya3NwYWNlKHdvcmtzcGFjZSlcbiAgICBpZiAoIXJvdXRlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYFdBUk5JTkc6IE5vIHJvdXRlLmJhc2VVcmwgY291bGQgYmUgZm91bmQgZm9yIGdpdmVuIGFwcElkIFwiJHthcHBJZH1cIiBhbmQgcHJvZHVjdE5hbWUgXCIke3Byb2R1Y3ROYW1lfVwiYFxuICAgICAgKVxuXG4gICAgICByZXR1cm4gdXJsXG4gICAgfVxuXG4gICAgaWYgKHJvdXRlLmJhc2VVcmwgIT09IHVuZGVmaW5lZCAmJiByb3V0ZS5iYXNlVXJsLmxlbmd0aCA+IDApIHtcbiAgICAgIHVybCA9IHJvdXRlLmJhc2VVcmxcbiAgICB9XG5cbiAgICB1cmwgPSBMb2NhdGlvbi5qb2luV2l0aFNsYXNoKHVybCwgdGhpcy5jb25zdHJ1Y3RFbmRwb2ludFVybChyb3V0ZSwgZW5kcG9pbnROYW1lLCBwYXJhbXMpKVxuICAgIHJldHVybiB1cmxcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0RW5kcG9pbnRVcmwocm91dGU6IGFueSwgZW5kcG9pbnROYW1lOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcge1xuICAgIGlmICghcm91dGUuZW5kcG9pbnRzKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgY29uc3QgZmluYWxFbmRwb2ludCA9IHRoaXMuZGlzc29sdmVFbmRwb2ludChlbmRwb2ludE5hbWUsIHJvdXRlLmVuZHBvaW50cylcbiAgICBpZiAoIWZpbmFsRW5kcG9pbnQgfHwgZmluYWxFbmRwb2ludC5wYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdXQVJOSU5HOiBObyBlbmRwb2ludCBvciBlbmRwb2ludC5wYXRoIGNvdWxkIGJlIGZvdW5kJylcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtc0ZpbGxlZCA9IHRoaXMuZmlsbFBhcmFtc0ZvclBhdGgoZmluYWxFbmRwb2ludC5wYXRoLCBwYXJhbXMpXG4gICAgaWYgKHBhcmFtc0ZpbGxlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmxvZygnV0FSTklORzogUGFyYW1zIGNvdWxkIG5vdCBiZSBmaWxsZWQgY29ycmVjdGx5JylcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXNGaWxsZWRcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyUm91dGVGcm9tTGlzdChyb3V0ZXM6IEFycmF5PFJvdXRlPiwgYXBwSWQ6IHN0cmluZywgcHJvZHVjdE5hbWU6IHN0cmluZyk6IFJvdXRlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXJvdXRlcykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHByb2R1Y3RSb3V0ZXMgPSByb3V0ZXMuZmlsdGVyKChyb3V0ZSkgPT4gcm91dGUuYXBwSWQgPT09IGFwcElkICYmIHJvdXRlLnByb2R1Y3ROYW1lID09PSBwcm9kdWN0TmFtZSlcblxuICAgIGlmIChwcm9kdWN0Um91dGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGlmIChwcm9kdWN0Um91dGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdXQVJOSU5HOiBUaGVyZSB3ZXJlIG1vcmUgdGhhbiBvbmUgcm91dGUuIEZpcnN0IHJvdXRlIGhhcyBiZWVuIHVzZWQuJylcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvZHVjdFJvdXRlc1swXVxuICB9XG5cbiAgcHJpdmF0ZSBkaXNzb2x2ZUVuZHBvaW50KGVuZHBvaW50TmFtZTogc3RyaW5nLCBlbmRwb2ludHM6IEFycmF5PEVuZHBvaW50Pik6IEVuZHBvaW50IHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgZW5kcG9pbnQgPSBlbmRwb2ludHMuZmluZCgoZXApID0+IGVwLm5hbWUgPT09IGVuZHBvaW50TmFtZSlcblxuICAgIGlmICghZW5kcG9pbnQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICB3aGlsZSAoZW5kcG9pbnQucGF0aD8uaW5jbHVkZXModGhpcy5hbGlhc1N0YXJ0KSkge1xuICAgICAgY29uc3QgcGF0aDogc3RyaW5nID0gZW5kcG9pbnQucGF0aFxuICAgICAgY29uc3Qgc3RhcnRJZHggPSBwYXRoLmluZGV4T2YodGhpcy5hbGlhc1N0YXJ0KSArIHRoaXMuYWxpYXNTdGFydC5sZW5ndGhcbiAgICAgIGNvbnN0IGVuZElkeCA9IHBhdGgubGFzdEluZGV4T2YodGhpcy5hbGlhc0VuZClcbiAgICAgIGlmIChlbmRJZHggPD0gc3RhcnRJZHgpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgICAgY29uc3QgYWxpYXNOYW1lID0gcGF0aC5zdWJzdHJpbmcoc3RhcnRJZHgsIGVuZElkeClcbiAgICAgIGVuZHBvaW50ID0gZW5kcG9pbnRzLmZpbmQoKGVwKSA9PiBlcC5uYW1lID09PSBhbGlhc05hbWUpXG5cbiAgICAgIGlmICghZW5kcG9pbnQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbmRwb2ludFxuICB9XG5cbiAgcHJpdmF0ZSBmaWxsUGFyYW1zRm9yUGF0aChwYXRoOiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcge1xuICAgIHdoaWxlIChwYXRoLmluY2x1ZGVzKHRoaXMucGFyYW1TdGFydCkpIHtcbiAgICAgIGNvbnN0IHBhcmFtTmFtZSA9IHBhdGguc3Vic3RyaW5nKFxuICAgICAgICBwYXRoLmluZGV4T2YodGhpcy5wYXJhbVN0YXJ0KSArIHRoaXMucGFyYW1TdGFydC5sZW5ndGgsXG4gICAgICAgIHBhdGguaW5kZXhPZih0aGlzLnBhcmFtRW5kKVxuICAgICAgKVxuICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9IHRoaXMuZ2V0U3RyaW5nRnJvbVVua25vd24ocGFyYW1zW3BhcmFtTmFtZV0pXG4gICAgICBpZiAocGFyYW1WYWx1ZSAhPSB1bmRlZmluZWQgJiYgcGFyYW1WYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHBhdGggPSBwYXRoLnJlcGxhY2UodGhpcy5wYXJhbVN0YXJ0LmNvbmNhdChwYXJhbU5hbWUpLmNvbmNhdCh0aGlzLnBhcmFtRW5kKSwgcGFyYW1WYWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBXQVJOSU5HOiBTZWFyY2hlZCBwYXJhbSBcIiR7cGFyYW1OYW1lfVwiIHdhcyBub3QgZm91bmQgaW4gZ2l2ZW4gcGFyYW0gbGlzdCBgKVxuICAgICAgICByZXR1cm4gJydcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBhdGhcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RyaW5nRnJvbVVua25vd24odmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -10,7 +10,7 @@ export function provideAppServiceMock() {
10
10
  return provideAppStateServiceMock();
11
11
  }
12
12
  export function provideAppStateServiceMock() {
13
- return [{ provide: AppStateService, useClass: AppStateServiceMock }];
13
+ return [AppStateServiceMock, { provide: AppStateService, useExisting: AppStateServiceMock }];
14
14
  }
15
15
  export class AppStateServiceMock {
16
16
  constructor() {
@@ -28,4 +28,4 @@ AppStateServiceMock.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0",
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: AppStateServiceMock, decorators: [{
29
29
  type: Injectable
30
30
  }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YXRlLXNlcnZpY2UtbW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2UvbW9ja3MvYXBwLXN0YXRlLXNlcnZpY2UtbW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLDJCQUEyQjtBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQTs7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sMEJBQTBCLEVBQUUsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQjtJQUN4QyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7QUFDdEUsQ0FBQztBQUdELE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFFRSxpQkFBWSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7UUFDOUIsbUJBQWMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNyQyxnQkFBVyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDckcsaUJBQVksR0FBRyxJQUFJLFNBQVMsQ0FBdUIsU0FBUyxDQUFDLENBQUE7UUFDN0QsbUJBQWMsR0FBRyxJQUFJLFNBQVMsQ0FBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsMEJBQTBCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7UUFDcEosc0JBQWlCLEdBQUcsSUFBSSxTQUFTLENBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLDBCQUEwQixFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUM3SixxQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FBTyxJQUFJLENBQUMsQ0FBQTtLQUM3Qzs7aUhBUlksbUJBQW1CO3FIQUFuQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUGFnZUluZm8sIFdvcmtzcGFjZSB9IGZyb20gJ0BvbmVjeC9pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IEZha2VUb3BpYyB9IGZyb20gJy4vZmFrZS10b3BpYydcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgcHJvdmlkZUFwcFN0YXRlU2VydmljZU1vY2soKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFwcFNlcnZpY2VNb2NrKCkge1xuICByZXR1cm4gcHJvdmlkZUFwcFN0YXRlU2VydmljZU1vY2soKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFwcFN0YXRlU2VydmljZU1vY2soKSB7XG4gIHJldHVybiBbeyBwcm92aWRlOiBBcHBTdGF0ZVNlcnZpY2UsIHVzZUNsYXNzOiBBcHBTdGF0ZVNlcnZpY2VNb2NrIH1dXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBTdGF0ZVNlcnZpY2VNb2NrIHtcbiAgZ2xvYmFsRXJyb3IkID0gbmV3IEZha2VUb3BpYygpXG4gIGdsb2JhbExvYWRpbmckID0gbmV3IEZha2VUb3BpYyhmYWxzZSlcbiAgY3VycmVudE1mZSQgPSBuZXcgRmFrZVRvcGljKHsgbW91bnRQYXRoOiAnLycsIHJlbW90ZUJhc2VVcmw6ICcuJywgYmFzZUhyZWY6ICcvJywgc2hlbGxOYW1lOiAndGVzdCcgfSlcbiAgY3VycmVudFBhZ2UkID0gbmV3IEZha2VUb3BpYzxQYWdlSW5mbyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjdXJyZW50UG9ydGFsJCA9IG5ldyBGYWtlVG9waWM8V29ya3NwYWNlPih7IGJhc2VVcmw6ICcvJywgbWljcm9mcm9udGVuZFJlZ2lzdHJhdGlvbnM6IFtdLCBwb3J0YWxOYW1lOiAnVGVzdCBwb3J0YWwnLCB3b3Jrc3BhY2VOYW1lOiAnVGVzdCBwb3J0YWwnIH0pXG4gIGN1cnJlbnRXb3Jrc3BhY2UkID0gbmV3IEZha2VUb3BpYzxXb3Jrc3BhY2U+KHsgYmFzZVVybDogJy8nLCBtaWNyb2Zyb250ZW5kUmVnaXN0cmF0aW9uczogW10sIHBvcnRhbE5hbWU6ICdUZXN0IHdvcmtzcGFjZScsIHdvcmtzcGFjZU5hbWU6ICdUZXN0IHdvcmtzcGFjZScgfSlcbiAgaXNBdXRoZW50aWNhdGVkJCA9IG5ldyBGYWtlVG9waWM8bnVsbD4obnVsbClcbn1cbiJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXN0YXRlLXNlcnZpY2UtbW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1pbnRlZ3JhdGlvbi1pbnRlcmZhY2UvbW9ja3MvYXBwLXN0YXRlLXNlcnZpY2UtbW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTFDLDJCQUEyQjtBQUMzQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQTs7QUFFeEM7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCO0lBQ25DLE9BQU8sMEJBQTBCLEVBQUUsQ0FBQTtBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQjtJQUN4QyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7QUFDOUYsQ0FBQztBQUdELE1BQU0sT0FBTyxtQkFBbUI7SUFEaEM7UUFFRSxpQkFBWSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUE7UUFDOUIsbUJBQWMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNyQyxnQkFBVyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDckcsaUJBQVksR0FBRyxJQUFJLFNBQVMsQ0FBdUIsU0FBUyxDQUFDLENBQUE7UUFDN0QsbUJBQWMsR0FBRyxJQUFJLFNBQVMsQ0FBWSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsMEJBQTBCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7UUFDcEosc0JBQWlCLEdBQUcsSUFBSSxTQUFTLENBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLDBCQUEwQixFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUM3SixxQkFBZ0IsR0FBRyxJQUFJLFNBQVMsQ0FBTyxJQUFJLENBQUMsQ0FBQTtLQUM3Qzs7aUhBUlksbUJBQW1CO3FIQUFuQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgUGFnZUluZm8sIFdvcmtzcGFjZSB9IGZyb20gJ0BvbmVjeC9pbnRlZ3JhdGlvbi1pbnRlcmZhY2UnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJ0BvbmVjeC9hbmd1bGFyLWludGVncmF0aW9uLWludGVyZmFjZSdcbmltcG9ydCB7IEZha2VUb3BpYyB9IGZyb20gJy4vZmFrZS10b3BpYydcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgcHJvdmlkZUFwcFN0YXRlU2VydmljZU1vY2soKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFwcFNlcnZpY2VNb2NrKCkge1xuICByZXR1cm4gcHJvdmlkZUFwcFN0YXRlU2VydmljZU1vY2soKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUFwcFN0YXRlU2VydmljZU1vY2soKSB7XG4gIHJldHVybiBbQXBwU3RhdGVTZXJ2aWNlTW9jaywgeyBwcm92aWRlOiBBcHBTdGF0ZVNlcnZpY2UsIHVzZUV4aXN0aW5nOiBBcHBTdGF0ZVNlcnZpY2VNb2NrIH1dXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBTdGF0ZVNlcnZpY2VNb2NrIHtcbiAgZ2xvYmFsRXJyb3IkID0gbmV3IEZha2VUb3BpYygpXG4gIGdsb2JhbExvYWRpbmckID0gbmV3IEZha2VUb3BpYyhmYWxzZSlcbiAgY3VycmVudE1mZSQgPSBuZXcgRmFrZVRvcGljKHsgbW91bnRQYXRoOiAnLycsIHJlbW90ZUJhc2VVcmw6ICcuJywgYmFzZUhyZWY6ICcvJywgc2hlbGxOYW1lOiAndGVzdCcgfSlcbiAgY3VycmVudFBhZ2UkID0gbmV3IEZha2VUb3BpYzxQYWdlSW5mbyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjdXJyZW50UG9ydGFsJCA9IG5ldyBGYWtlVG9waWM8V29ya3NwYWNlPih7IGJhc2VVcmw6ICcvJywgbWljcm9mcm9udGVuZFJlZ2lzdHJhdGlvbnM6IFtdLCBwb3J0YWxOYW1lOiAnVGVzdCBwb3J0YWwnLCB3b3Jrc3BhY2VOYW1lOiAnVGVzdCBwb3J0YWwnIH0pXG4gIGN1cnJlbnRXb3Jrc3BhY2UkID0gbmV3IEZha2VUb3BpYzxXb3Jrc3BhY2U+KHsgYmFzZVVybDogJy8nLCBtaWNyb2Zyb250ZW5kUmVnaXN0cmF0aW9uczogW10sIHBvcnRhbE5hbWU6ICdUZXN0IHdvcmtzcGFjZScsIHdvcmtzcGFjZU5hbWU6ICdUZXN0IHdvcmtzcGFjZScgfSlcbiAgaXNBdXRoZW50aWNhdGVkJCA9IG5ldyBGYWtlVG9waWM8bnVsbD4obnVsbClcbn1cbiJdfQ==
@@ -44,7 +44,7 @@ function provideAppServiceMock() {
44
44
  return provideAppStateServiceMock();
45
45
  }
46
46
  function provideAppStateServiceMock() {
47
- return [{ provide: AppStateService, useClass: AppStateServiceMock }];
47
+ return [AppStateServiceMock, { provide: AppStateService, useExisting: AppStateServiceMock }];
48
48
  }
49
49
  class AppStateServiceMock {
50
50
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"onecx-angular-integration-interface-mocks.mjs","sources":["../../../../libs/angular-integration-interface/mocks/mock-user-service.ts","../../../../libs/angular-integration-interface/mocks/fake-topic.ts","../../../../libs/angular-integration-interface/mocks/app-state-service-mock.ts","../../../../libs/angular-integration-interface/mocks/onecx-angular-integration-interface-mocks.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs'\n\nexport class MockUserService {\n lang$ = new BehaviorSubject<string>('en')\n /* eslint-disable @typescript-eslint/no-unused-vars */\n hasPermission(permissionKey: string): boolean {\n return true\n }\n}\n","import { Subject, Observable, Observer, Subscription, UnaryFunction, BehaviorSubject, ReplaySubject } from 'rxjs'\n\nexport class FakeTopic<T> {\n private state: Subject<T>\n constructor(initialValue: T | undefined = undefined) {\n if (initialValue !== undefined) {\n this.state = new BehaviorSubject<T>(initialValue)\n } else {\n this.state = new ReplaySubject<T>(1)\n }\n }\n asObservable(): Observable<T> {\n return this.state.asObservable()\n }\n\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void\n ): Subscription {\n return (<any>this.asObservable()).subscribe(observerOrNext, error, complete)\n }\n\n pipe(...operations: UnaryFunction<any, any>[]): unknown {\n return (<any>this.asObservable()).pipe(...operations)\n }\n\n publish(value: T): Promise<void> {\n this.state.next(value)\n return Promise.resolve()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { PageInfo, Workspace } from '@onecx/integration-interface'\n// eslint-disable-next-line\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from './fake-topic'\n\n/**\n * @deprecated use provideAppStateServiceMock()\n */\nexport function provideAppServiceMock() {\n return provideAppStateServiceMock()\n}\n\nexport function provideAppStateServiceMock() {\n return [{ provide: AppStateService, useClass: AppStateServiceMock }]\n}\n\n@Injectable()\nexport class AppStateServiceMock {\n globalError$ = new FakeTopic()\n globalLoading$ = new FakeTopic(false)\n currentMfe$ = new FakeTopic({ mountPath: '/', remoteBaseUrl: '.', baseHref: '/', shellName: 'test' })\n currentPage$ = new FakeTopic<PageInfo | undefined>(undefined)\n currentPortal$ = new FakeTopic<Workspace>({ baseUrl: '/', microfrontendRegistrations: [], portalName: 'Test portal', workspaceName: 'Test portal' })\n currentWorkspace$ = new FakeTopic<Workspace>({ baseUrl: '/', microfrontendRegistrations: [], portalName: 'Test workspace', workspaceName: 'Test workspace' })\n isAuthenticated$ = new FakeTopic<null>(null)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAEa,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;QACE,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC,CAAA;KAK1C;;AAHC,IAAA,aAAa,CAAC,aAAqB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAA;KACZ;AACF;;MCNY,SAAS,CAAA;IAEpB,WAAY,CAAA,eAA8B,SAAS,EAAA;QACjD,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAA;AAClD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAI,CAAC,CAAC,CAAA;AACrC,SAAA;KACF;IACD,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;KACjC;AAED,IAAA,SAAS,CACP,cAA4D,EAC5D,KAA4B,EAC5B,QAAqB,EAAA;AAErB,QAAA,OAAa,IAAI,CAAC,YAAY,EAAG,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;KAC7E;IAED,IAAI,CAAC,GAAG,UAAqC,EAAA;QAC3C,OAAa,IAAI,CAAC,YAAY,EAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;KACtD;AAED,IAAA,OAAO,CAAC,KAAQ,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtB,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;KACzB;AACF;;ACzBD;;AAEG;SACa,qBAAqB,GAAA;IACnC,OAAO,0BAA0B,EAAE,CAAA;AACrC,CAAC;SAEe,0BAA0B,GAAA;IACxC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAA;AACtE,CAAC;MAGY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,SAAS,EAAE,CAAA;QAC9B,IAAA,CAAA,cAAc,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;QACrC,IAAW,CAAA,WAAA,GAAG,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;QACrG,IAAA,CAAA,YAAY,GAAG,IAAI,SAAS,CAAuB,SAAS,CAAC,CAAA;QAC7D,IAAc,CAAA,cAAA,GAAG,IAAI,SAAS,CAAY,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAA;QACpJ,IAAiB,CAAA,iBAAA,GAAG,IAAI,SAAS,CAAY,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC7J,IAAA,CAAA,gBAAgB,GAAG,IAAI,SAAS,CAAO,IAAI,CAAC,CAAA;KAC7C;;iHARY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACjBX;;AAEG;;;;"}
1
+ {"version":3,"file":"onecx-angular-integration-interface-mocks.mjs","sources":["../../../../libs/angular-integration-interface/mocks/mock-user-service.ts","../../../../libs/angular-integration-interface/mocks/fake-topic.ts","../../../../libs/angular-integration-interface/mocks/app-state-service-mock.ts","../../../../libs/angular-integration-interface/mocks/onecx-angular-integration-interface-mocks.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs'\n\nexport class MockUserService {\n lang$ = new BehaviorSubject<string>('en')\n /* eslint-disable @typescript-eslint/no-unused-vars */\n hasPermission(permissionKey: string): boolean {\n return true\n }\n}\n","import { Subject, Observable, Observer, Subscription, UnaryFunction, BehaviorSubject, ReplaySubject } from 'rxjs'\n\nexport class FakeTopic<T> {\n private state: Subject<T>\n constructor(initialValue: T | undefined = undefined) {\n if (initialValue !== undefined) {\n this.state = new BehaviorSubject<T>(initialValue)\n } else {\n this.state = new ReplaySubject<T>(1)\n }\n }\n asObservable(): Observable<T> {\n return this.state.asObservable()\n }\n\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void\n ): Subscription {\n return (<any>this.asObservable()).subscribe(observerOrNext, error, complete)\n }\n\n pipe(...operations: UnaryFunction<any, any>[]): unknown {\n return (<any>this.asObservable()).pipe(...operations)\n }\n\n publish(value: T): Promise<void> {\n this.state.next(value)\n return Promise.resolve()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { PageInfo, Workspace } from '@onecx/integration-interface'\n// eslint-disable-next-line\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from './fake-topic'\n\n/**\n * @deprecated use provideAppStateServiceMock()\n */\nexport function provideAppServiceMock() {\n return provideAppStateServiceMock()\n}\n\nexport function provideAppStateServiceMock() {\n return [AppStateServiceMock, { provide: AppStateService, useExisting: AppStateServiceMock }]\n}\n\n@Injectable()\nexport class AppStateServiceMock {\n globalError$ = new FakeTopic()\n globalLoading$ = new FakeTopic(false)\n currentMfe$ = new FakeTopic({ mountPath: '/', remoteBaseUrl: '.', baseHref: '/', shellName: 'test' })\n currentPage$ = new FakeTopic<PageInfo | undefined>(undefined)\n currentPortal$ = new FakeTopic<Workspace>({ baseUrl: '/', microfrontendRegistrations: [], portalName: 'Test portal', workspaceName: 'Test portal' })\n currentWorkspace$ = new FakeTopic<Workspace>({ baseUrl: '/', microfrontendRegistrations: [], portalName: 'Test workspace', workspaceName: 'Test workspace' })\n isAuthenticated$ = new FakeTopic<null>(null)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAEa,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;QACE,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC,CAAA;KAK1C;;AAHC,IAAA,aAAa,CAAC,aAAqB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAA;KACZ;AACF;;MCNY,SAAS,CAAA;IAEpB,WAAY,CAAA,eAA8B,SAAS,EAAA;QACjD,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAA;AAClD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAI,CAAC,CAAC,CAAA;AACrC,SAAA;KACF;IACD,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;KACjC;AAED,IAAA,SAAS,CACP,cAA4D,EAC5D,KAA4B,EAC5B,QAAqB,EAAA;AAErB,QAAA,OAAa,IAAI,CAAC,YAAY,EAAG,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;KAC7E;IAED,IAAI,CAAC,GAAG,UAAqC,EAAA;QAC3C,OAAa,IAAI,CAAC,YAAY,EAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;KACtD;AAED,IAAA,OAAO,CAAC,KAAQ,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtB,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;KACzB;AACF;;ACzBD;;AAEG;SACa,qBAAqB,GAAA;IACnC,OAAO,0BAA0B,EAAE,CAAA;AACrC,CAAC;SAEe,0BAA0B,GAAA;AACxC,IAAA,OAAO,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAA;AAC9F,CAAC;MAGY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,SAAS,EAAE,CAAA;QAC9B,IAAA,CAAA,cAAc,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;QACrC,IAAW,CAAA,WAAA,GAAG,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;QACrG,IAAA,CAAA,YAAY,GAAG,IAAI,SAAS,CAAuB,SAAS,CAAC,CAAA;QAC7D,IAAc,CAAA,cAAA,GAAG,IAAI,SAAS,CAAY,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAA;QACpJ,IAAiB,CAAA,iBAAA,GAAG,IAAI,SAAS,CAAY,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC7J,IAAA,CAAA,gBAAgB,GAAG,IAAI,SAAS,CAAO,IAAI,CAAC,CAAA;KAC7C;;iHARY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACjBX;;AAEG;;;;"}
@@ -5,6 +5,7 @@ import { __awaiter } from 'tslib';
5
5
  import { firstValueFrom, BehaviorSubject, map, skip, filter, combineLatest, of, mergeMap, from, zip, tap, isObservable } from 'rxjs';
6
6
  import * as i1 from '@angular/common/http';
7
7
  import * as i1$1 from '@ngx-translate/core';
8
+ import { Location } from '@angular/common';
8
9
 
9
10
  class AppStateService {
10
11
  constructor() {
@@ -390,6 +391,125 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
390
391
  args: [{ providedIn: 'any' }]
391
392
  }], ctorParameters: function () { return [{ type: i1$1.TranslateService }, { type: ConfigurationService }, { type: AppStateService }, { type: UserService }]; } });
392
393
 
394
+ class WorkspaceService {
395
+ constructor(appStateService) {
396
+ this.appStateService = appStateService;
397
+ this.aliasStart = '[[';
398
+ this.aliasEnd = ']]';
399
+ this.paramStart = '{';
400
+ this.paramEnd = '}';
401
+ }
402
+ getUrl(appId, productName, endpointName, params = {}) {
403
+ return this.appStateService.currentWorkspace$.pipe(map((workspace) => {
404
+ const finalUrl = this.constructRouteUrl(workspace, appId, productName, endpointName, params);
405
+ return finalUrl;
406
+ }));
407
+ }
408
+ constructBaseUrlFromWorkspace(workspace) {
409
+ if (workspace.baseUrl === undefined) {
410
+ console.log('WARNING: There was no baseUrl for received workspace.');
411
+ return '';
412
+ }
413
+ return workspace.baseUrl;
414
+ }
415
+ constructRouteUrl(workspace, appId, productName, endpointName, params) {
416
+ const route = this.filterRouteFromList(workspace.routes, appId, productName);
417
+ let url = this.constructBaseUrlFromWorkspace(workspace);
418
+ if (!route) {
419
+ console.log(`WARNING: No route.baseUrl could be found for given appId "${appId}" and productName "${productName}"`);
420
+ return url;
421
+ }
422
+ if (route.baseUrl !== undefined && route.baseUrl.length > 0) {
423
+ url = route.baseUrl;
424
+ }
425
+ url = Location.joinWithSlash(url, this.constructEndpointUrl(route, endpointName, params));
426
+ return url;
427
+ }
428
+ constructEndpointUrl(route, endpointName, params) {
429
+ if (!route.endpoints) {
430
+ return '';
431
+ }
432
+ const finalEndpoint = this.dissolveEndpoint(endpointName, route.endpoints);
433
+ if (!finalEndpoint || finalEndpoint.path === undefined) {
434
+ console.log('WARNING: No endpoint or endpoint.path could be found');
435
+ return '';
436
+ }
437
+ const paramsFilled = this.fillParamsForPath(finalEndpoint.path, params);
438
+ if (paramsFilled === undefined) {
439
+ console.log('WARNING: Params could not be filled correctly');
440
+ return '';
441
+ }
442
+ return paramsFilled;
443
+ }
444
+ filterRouteFromList(routes, appId, productName) {
445
+ if (!routes) {
446
+ return undefined;
447
+ }
448
+ const productRoutes = routes.filter((route) => route.appId === appId && route.productName === productName);
449
+ if (productRoutes.length === 0) {
450
+ return undefined;
451
+ }
452
+ if (productRoutes.length > 1) {
453
+ console.log('WARNING: There were more than one route. First route has been used.');
454
+ }
455
+ return productRoutes[0];
456
+ }
457
+ dissolveEndpoint(endpointName, endpoints) {
458
+ var _a;
459
+ let endpoint = endpoints.find((ep) => ep.name === endpointName);
460
+ if (!endpoint) {
461
+ return undefined;
462
+ }
463
+ while ((_a = endpoint.path) === null || _a === void 0 ? void 0 : _a.includes(this.aliasStart)) {
464
+ const path = endpoint.path;
465
+ const startIdx = path.indexOf(this.aliasStart) + this.aliasStart.length;
466
+ const endIdx = path.lastIndexOf(this.aliasEnd);
467
+ if (endIdx <= startIdx) {
468
+ return undefined;
469
+ }
470
+ const aliasName = path.substring(startIdx, endIdx);
471
+ endpoint = endpoints.find((ep) => ep.name === aliasName);
472
+ if (!endpoint) {
473
+ return undefined;
474
+ }
475
+ }
476
+ return endpoint;
477
+ }
478
+ fillParamsForPath(path, params) {
479
+ while (path.includes(this.paramStart)) {
480
+ const paramName = path.substring(path.indexOf(this.paramStart) + this.paramStart.length, path.indexOf(this.paramEnd));
481
+ const paramValue = this.getStringFromUnknown(params[paramName]);
482
+ if (paramValue != undefined && paramValue.length > 0) {
483
+ path = path.replace(this.paramStart.concat(paramName).concat(this.paramEnd), paramValue);
484
+ }
485
+ else {
486
+ console.log(`WARNING: Searched param "${paramName}" was not found in given param list `);
487
+ return '';
488
+ }
489
+ }
490
+ return path;
491
+ }
492
+ getStringFromUnknown(value) {
493
+ if (value === null || value === undefined) {
494
+ return '';
495
+ }
496
+ else if (typeof value === 'string') {
497
+ return value;
498
+ }
499
+ else {
500
+ return String(value);
501
+ }
502
+ }
503
+ }
504
+ WorkspaceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, deps: [{ token: AppStateService }], target: i0.ɵɵFactoryTarget.Injectable });
505
+ WorkspaceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, providedIn: 'root' });
506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, decorators: [{
507
+ type: Injectable,
508
+ args: [{
509
+ providedIn: 'root',
510
+ }]
511
+ }], ctorParameters: function () { return [{ type: AppStateService }]; } });
512
+
393
513
  function addInitializeModuleGuard(routes, initializeModuleGuard = InitializeModuleGuard) {
394
514
  return routes.map((r) => {
395
515
  if (r.redirectTo) {
@@ -409,5 +529,5 @@ function addInitializeModuleGuard(routes, initializeModuleGuard = InitializeModu
409
529
  * Generated bundle index. Do not edit.
410
530
  */
411
531
 
412
- export { APPLICATION_NAME, APP_CONFIG, AUTH_SERVICE, AppStateService, CONFIG_KEY, ConfigurationService, InitializeModuleGuard, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ThemeService, UserService, addInitializeModuleGuard };
532
+ export { APPLICATION_NAME, APP_CONFIG, AUTH_SERVICE, AppStateService, CONFIG_KEY, ConfigurationService, InitializeModuleGuard, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ThemeService, UserService, WorkspaceService, addInitializeModuleGuard };
413
533
  //# sourceMappingURL=onecx-angular-integration-interface.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"onecx-angular-integration-interface.mjs","sources":["../../../../libs/angular-integration-interface/src/lib/services/app-state.service.ts","../../../../libs/angular-integration-interface/src/lib/api/injection-tokens.ts","../../../../libs/angular-integration-interface/src/lib/model/config-key.model.ts","../../../../libs/angular-integration-interface/src/lib/services/configuration.service.ts","../../../../libs/angular-integration-interface/src/lib/api/constants.ts","../../../../libs/angular-integration-interface/src/lib/services/user.service.ts","../../../../libs/angular-integration-interface/src/lib/services/portal-message.service.ts","../../../../libs/angular-integration-interface/src/lib/services/theme.service.ts","../../../../libs/angular-integration-interface/src/lib/services/remote-components.service.ts","../../../../libs/angular-integration-interface/src/lib/services/initialize-module-guard.service.ts","../../../../libs/angular-integration-interface/src/lib/utils/add-initialize-module-guard.utils.ts","../../../../libs/angular-integration-interface/src/index.ts","../../../../libs/angular-integration-interface/src/onecx-angular-integration-interface.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core'\nimport {\n GlobalErrorTopic,\n GlobalLoadingTopic,\n CurrentMfeTopic,\n CurrentPageTopic,\n CurrentWorkspaceTopic,\n IsAuthenticatedTopic,\n} from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class AppStateService implements OnDestroy {\n globalError$ = new GlobalErrorTopic()\n globalLoading$ = new GlobalLoadingTopic()\n currentMfe$ = new CurrentMfeTopic()\n\n /**\n * This topic will only fire when pageInfo.path matches document.location.pathname,\n * if not it will fire undefined.\n */\n currentPage$ = new CurrentPageTopic()\n currentWorkspace$ = new CurrentWorkspaceTopic()\n \n /**\n * @deprecated Will be replaced by currentWorkspace$\n */\n get currentPortal$() {\n return this.currentWorkspace$\n }\n set currentPortal$(value: CurrentWorkspaceTopic) {\n this.currentWorkspace$ = value\n }\n\n /**\n * This Topic is initialized as soon as the authentication is done\n */\n isAuthenticated$ = new IsAuthenticatedTopic()\n\n ngOnDestroy(): void {\n this.globalError$.destroy()\n this.globalLoading$.destroy()\n this.currentMfe$.destroy()\n this.currentPage$.destroy()\n this.currentPortal$.destroy()\n this.currentWorkspace$.destroy()\n this.isAuthenticated$.destroy()\n }\n}\n","import { InjectionToken } from '@angular/core'\nimport { IAuthService } from './iauth.service'\n\nexport interface LibConfig {\n appId: string\n portalId: string\n /**\n * If true, the tkit-module will not try to load remote env values from server(GET /assets/env.json)\n */\n skipRemoteConfigLoad: boolean\n /**\n * URL from which the remote config will be loaded, default: '/assets/env.json'\n */\n remoteConfigURL: string\n}\nexport const APP_CONFIG = new InjectionToken<LibConfig>('APP_CONFIG')\n\n/**\n * @deprecated\n * Please do not inject the auth service at all.\n * There are better ways to achieve what you want. Please use permission service or user service.\n */\nexport const AUTH_SERVICE = new InjectionToken<IAuthService>('AUTH_SERVICE')\n\nexport const SANITY_CHECK = new InjectionToken<string>('OCXSANITY_CHECK')\n\nexport const APPLICATION_NAME = new InjectionToken<string>('APPLICATION_NAME')\n","export enum CONFIG_KEY {\n TKIT_PORTAL_DEFAULT_THEME = 'TKIT_PORTAL_DEFAULT_THEME',\n TKIT_PORTAL_DISABLE_THEME_MANAGEMENT = 'TKIT_PORTAL_DISABLE_THEME_MANAGEMENT',\n TKIT_PORTAL_THEME_SERVER_URL = 'TKIT_PORTAL_THEME_SERVER_URL',\n TKIT_TOKEN_ROLE_CLAIM_NAME = 'TKIT_TOKEN_ROLE_CLAIM_NAME',\n TKIT_PORTAL_ID = 'TKIT_PORTAL_ID',\n TKIT_SUPPORTED_LANGUAGES = 'TKIT_SUPPORTED_LANGUAGES',\n TKIT_SEARCH_BASE_URL = 'TKIT_SEARCH_BASE_URL',\n APP_BASE_HREF = 'APP_BASE_HREF',\n KEYCLOAK_REALM = 'KEYCLOAK_REALM',\n KEYCLOAK_ENABLE_SILENT_SSO = 'KEYCLOAK_ENABLE_SILENT_SSO',\n KEYCLOAK_URL = 'KEYCLOAK_URL',\n KEYCLOAK_CLIENT_ID = 'KEYCLOAK_CLIENT_ID',\n ONECX_PORTAL_FAVORITES_DISABLED = 'ONECX_PORTAL_FAVORITES_DISABLED',\n ONECX_PORTAL_FEEDBACK_DISABLED = 'ONECX_PORTAL_FEEDBACK_DISABLED',\n ONECX_PORTAL_SEARCH_DISABLED = 'ONECX_PORTAL_SEARCH_DISABLED',\n ONECX_PORTAL_SUPPORT_TICKET_DISABLED = 'ONECX_PORTAL_SUPPORT_TICKET_DISABLED',\n ONECX_PORTAL_ANNOUNCEMENTS_DISABLED = 'ONECX_PORTAL_ANNOUNCEMENTS_DISABLED',\n ONECX_PORTAL_PASSWORD_CHANGE_DISABLED = 'ONECX_PORTAL_PASSWORD_CHANGE_DISABLED',\n ONECX_PORTAL_SETTINGS_DISABLED = 'ONECX_PORTAL_SETTINGS_DISABLED',\n ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED = 'ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED',\n ONECX_PORTAL_HELP_DISABLED = 'ONECX_PORTAL_HELP_DISABLED',\n APP_VERSION = 'APP_VERSION',\n IS_SHELL = 'IS_SHELL',\n AUTH_SERVICE = 'AUTH_SERVICE',\n AUTH_SERVICE_CUSTOM_URL = 'AUTH_SERVICE_CUSTOM_URL',\n AUTH_SERVICE_CUSTOM_MODULE_NAME = 'AUTH_SERVICE_CUSTOM_MODULE_NAME',\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Inject, Injectable, OnDestroy, Optional } from '@angular/core'\nimport { firstValueFrom } from 'rxjs'\nimport { Config, ConfigurationTopic } from '@onecx/integration-interface'\nimport { APP_CONFIG } from '../api/injection-tokens'\nimport { CONFIG_KEY } from '../model/config-key.model'\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements OnDestroy {\n config$ = new ConfigurationTopic()\n\n constructor(\n private http: HttpClient,\n @Optional() @Inject(APP_CONFIG) private defaultConfig?: { [key: string]: string }\n ) {}\n\n ngOnDestroy(): void {\n this.config$.destroy()\n }\n\n public init(): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const skipRemoteConfigLoad = this.defaultConfig && this.defaultConfig['skipRemoteConfigLoad']\n let loadConfigPromise: Promise<Config>\n\n const inlinedConfig = (window as typeof window & { APP_CONFIG: Config })['APP_CONFIG']\n if (inlinedConfig) {\n console.log(`ENV resolved from injected config`)\n loadConfigPromise = Promise.resolve(inlinedConfig)\n } else {\n if (skipRemoteConfigLoad) {\n console.log(\n '📢 TKA001: Remote config load is disabled. To enable it, remove the \"skipRemoteConfigLoad\" key in your environment.json'\n )\n loadConfigPromise = Promise.resolve(this.defaultConfig || {})\n } else {\n loadConfigPromise = firstValueFrom(\n this.http.get<Config>((this.defaultConfig && this.defaultConfig['remoteConfigURL']) || 'assets/env.json')\n )\n }\n }\n\n loadConfigPromise\n .then(async (config) => {\n if (config) {\n await this.config$.publish({ ...this.defaultConfig, ...config }).then(() => {\n resolve(true)\n })\n }\n })\n .catch((e) => {\n console.log(`Failed to load env configuration`)\n reject(e)\n })\n })\n }\n\n get isInitialized(): Promise<void> {\n return this.config$.isInitialized\n }\n\n public getProperty(key: CONFIG_KEY): string | undefined {\n if (!Object.values(CONFIG_KEY).includes(key)) {\n console.error('Invalid config key ', key)\n }\n return this.config$.getValue()?.[key]\n }\n\n public async setProperty(key: string, val: string) {\n const currentValues = await firstValueFrom(this.config$.asObservable())\n currentValues[key] = val\n await this.config$.publish(currentValues)\n }\n\n public getConfig(): Config | undefined {\n return this.config$.getValue()\n }\n}\n","export const API_PREFIX = 'portal-api'\n\nexport const DEFAULT_LANG = 'en'\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { BehaviorSubject, map, filter, firstValueFrom, skip } from 'rxjs'\nimport { PermissionsTopic, UserProfile, UserProfileTopic } from '@onecx/integration-interface'\nimport { DEFAULT_LANG } from '../api/constants'\n\n@Injectable({ providedIn: 'root' })\nexport class UserService implements OnDestroy {\n profile$ = new UserProfileTopic()\n permissions$ = new BehaviorSubject<string[]>([])\n lang$ = new BehaviorSubject(this.determineLanguage() ?? DEFAULT_LANG)\n\n private permissionsTopic$ = new PermissionsTopic()\n private oldStylePermissionsInitialized: Promise<string[]>\n\n constructor() {\n this.profile$\n .pipe(\n map(\n (profile) =>\n profile.accountSettings?.localeAndTimeSettings?.locale ?? this.determineLanguage() ?? DEFAULT_LANG\n )\n )\n .subscribe(this.lang$)\n\n this.oldStylePermissionsInitialized = firstValueFrom(this.permissions$.pipe(skip(1)))\n this.profile$\n .pipe(\n map((profile) => this.extractPermissions(profile)),\n filter((permissions): permissions is string[] => !!permissions)\n )\n .subscribe(this.permissions$)\n }\n\n ngOnDestroy(): void {\n this.profile$.destroy()\n }\n\n hasPermission(permissionKey: string): boolean {\n const oldConceptResult = this.permissions$.getValue()\n ? this.permissions$.getValue()?.includes(permissionKey)\n : false\n const result = this.permissionsTopic$.getValue()\n ? this.permissionsTopic$.getValue()?.includes(permissionKey)\n : oldConceptResult\n\n if (!result) {\n console.log(`👮‍♀️ No permission for: ${permissionKey}`)\n }\n return !!result\n }\n\n private determineLanguage(): string | undefined {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined\n }\n\n let browserLang: any = window.navigator.languages ? window.navigator.languages[0] : null\n browserLang = browserLang || window.navigator.language\n\n if (typeof browserLang === 'undefined') {\n return undefined\n }\n\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0]\n }\n\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0]\n }\n\n return browserLang\n }\n\n private extractPermissions(userProfile: UserProfile) {\n if (userProfile) {\n if (userProfile.memberships) {\n const permissions: string[] = []\n userProfile.memberships.forEach((m) => {\n m.roleMemberships?.forEach((r) => {\n r.permissions?.forEach((p) => {\n if (p) {\n if (p.key !== undefined) {\n permissions.push(p.key)\n }\n }\n })\n })\n })\n return permissions\n }\n }\n return null\n }\n\n get isInitialized(): Promise<void> {\n return Promise.all([\n Promise.race([this.permissionsTopic$.isInitialized, this.oldStylePermissionsInitialized]),\n this.profile$.isInitialized,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ]).then(() => {})\n }\n}\n","import { Injectable } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { combineLatest, of } from 'rxjs'\nimport { MessageTopic } from '@onecx/integration-interface'\n\nexport type Message = {\n summaryKey?: string\n summaryParameters?: object\n detailKey?: string\n detailParameters?: object\n id?: any\n key?: string\n life?: number\n sticky?: boolean\n closable?: boolean\n data?: any\n icon?: string\n contentStyleClass?: string\n styleClass?: string\n}\n\n@Injectable({ providedIn: 'any' })\nexport class PortalMessageService {\n constructor(private translateService: TranslateService) {}\n\n message$ = new MessageTopic()\n\n success(msg: Message) {\n this.addTranslated('success', msg)\n }\n\n info(msg: Message) {\n this.addTranslated('info', msg)\n }\n\n error(msg: Message) {\n this.addTranslated('error', msg)\n }\n\n warning(msg: Message) {\n this.addTranslated('warning', msg)\n }\n\n private addTranslated(severity: string, msg: Message) {\n combineLatest([\n msg.summaryKey ? this.translateService.get(msg.summaryKey || '', msg.summaryParameters) : of(undefined),\n msg.detailKey ? this.translateService.get(msg.detailKey, msg.detailParameters) : of(undefined),\n ]).subscribe(([summaryTranslation, detailTranslation]: string[]) => {\n this.message$.publish({\n ...msg,\n severity: severity,\n summary: summaryTranslation,\n detail: detailTranslation,\n })\n })\n }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Injectable, OnDestroy } from '@angular/core'\nimport { from, map, mergeMap } from 'rxjs'\nimport { CurrentThemeTopic, Theme } from '@onecx/integration-interface'\nimport { ConfigurationService } from './configuration.service'\nimport { CONFIG_KEY } from '../model/config-key.model'\n\nconst defaultThemeServerUrl = 'http://portal-theme-management:8080'\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService implements OnDestroy {\n baseUrlV1 = './portal-api'\n currentTheme$ = new CurrentThemeTopic()\n\n constructor(private configService: ConfigurationService, private http: HttpClient) {}\n\n getThemeHref(themeId: string): string {\n const themeServerUrl =\n this.configService.getProperty(CONFIG_KEY.TKIT_PORTAL_THEME_SERVER_URL) || defaultThemeServerUrl\n return `${themeServerUrl}/themes/${themeId}/${themeId}.min.css`\n }\n\n public loadAndApplyTheme(themeName: string) {\n return this.http.get<Theme>(`${this.baseUrlV1}/internal/themes/${encodeURI(themeName)}`).pipe(\n mergeMap((theme) => {\n return from(this.apply(theme)).pipe(map(() => theme))\n })\n )\n }\n\n public async apply(theme: Theme): Promise<void> {\n console.log(`🎨 Applying theme: ${theme.name}`)\n await this.currentTheme$.publish(theme)\n if (theme.properties) {\n Object.values(theme.properties).forEach((group) => {\n for (const [key, value] of Object.entries(group)) {\n document.documentElement.style.setProperty(`--${key}`, value)\n }\n })\n }\n }\n\n ngOnDestroy(): void {\n this.currentTheme$.destroy()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { RemoteComponentsTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class RemoteComponentsService implements OnDestroy {\n remoteComponents$ = new RemoteComponentsTopic()\n\n ngOnDestroy(): void {\n this.remoteComponents$.destroy()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { filter, from, isObservable, map, mergeMap, Observable, of, tap, zip } from 'rxjs'\nimport { AppStateService } from './app-state.service';\nimport { ConfigurationService } from './configuration.service';\nimport { UserService } from './user.service';\n\n@Injectable({ providedIn: 'any' })\nexport class InitializeModuleGuard implements CanActivate {\n private SUPPORTED_LANGS = ['en', 'de']\n private DEFAULT_LANG = 'en'\n constructor(\n protected translateService: TranslateService,\n protected configService: ConfigurationService,\n protected appStateService: AppStateService,\n protected userService: UserService\n ) {}\n\n canActivate(\n _route: ActivatedRouteSnapshot,\n _state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n console.time('InitializeModuleGuard')\n return zip([\n this.loadTranslations(),\n from(this.configService.isInitialized),\n from(this.userService.isInitialized),\n from(this.appStateService.currentWorkspace$.isInitialized),\n ]).pipe(\n tap(() => {\n console.timeEnd('InitializeModuleGuard')\n }),\n map(() => true)\n )\n }\n\n getBestMatchLanguage(lang: string) {\n if (this.SUPPORTED_LANGS.includes(lang)) {\n return lang\n } else {\n console.log(`${lang} is not supported. Using ${this.DEFAULT_LANG} as a fallback.`)\n }\n return this.DEFAULT_LANG\n }\n\n loadTranslations(): Observable<boolean> {\n return this.userService.lang$.pipe(\n filter((v) => v !== undefined),\n mergeMap((lang) => {\n const bestMatchLang = this.getBestMatchLanguage(lang as string)\n return this.translateService.use(bestMatchLang)\n }),\n mergeMap(() => of(true))\n )\n }\n\n protected toObservable(\n canActivateResult: Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n ): Observable<boolean | UrlTree> {\n if (isObservable(canActivateResult)) {\n return canActivateResult\n }\n return from(Promise.resolve(canActivateResult))\n }\n}\n","import { CanActivateFn, Route } from '@angular/router'\nimport { InitializeModuleGuard } from '../services/initialize-module-guard.service'\n\nexport function addInitializeModuleGuard(\n routes: Route[],\n initializeModuleGuard: typeof InitializeModuleGuard | CanActivateFn = InitializeModuleGuard\n): Route[] {\n return routes.map((r) => {\n if (r.redirectTo) {\n return r\n }\n const route = {\n canActivate: [],\n ...r,\n }\n if (!route.canActivate.includes(initializeModuleGuard)) {\n route.canActivate.push(initializeModuleGuard)\n }\n return route\n })\n}","// services\nexport * from './lib/services/app-state.service'\nexport * from './lib/services/configuration.service'\nexport * from './lib/services/user.service'\nexport * from './lib/services/portal-message.service'\nexport * from './lib/services/theme.service'\nexport * from './lib/services/remote-components.service'\nexport * from './lib/services/initialize-module-guard.service'\n\n// models\nexport * from './lib/model/config-key.model'\n\n// core\nexport * from './lib/api/iauth.service'\nexport * from './lib/api/injection-tokens'\n\n// utils\nexport * from './lib/utils/add-initialize-module-guard.utils'\n\nexport { MfeInfo, Theme } from '@onecx/integration-interface'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.ConfigurationService","i2","i2.ConfigurationService","i3.AppStateService","i4.UserService"],"mappings":"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"}
1
+ {"version":3,"file":"onecx-angular-integration-interface.mjs","sources":["../../../../libs/angular-integration-interface/src/lib/services/app-state.service.ts","../../../../libs/angular-integration-interface/src/lib/api/injection-tokens.ts","../../../../libs/angular-integration-interface/src/lib/model/config-key.model.ts","../../../../libs/angular-integration-interface/src/lib/services/configuration.service.ts","../../../../libs/angular-integration-interface/src/lib/api/constants.ts","../../../../libs/angular-integration-interface/src/lib/services/user.service.ts","../../../../libs/angular-integration-interface/src/lib/services/portal-message.service.ts","../../../../libs/angular-integration-interface/src/lib/services/theme.service.ts","../../../../libs/angular-integration-interface/src/lib/services/remote-components.service.ts","../../../../libs/angular-integration-interface/src/lib/services/initialize-module-guard.service.ts","../../../../libs/angular-integration-interface/src/lib/services/workspace.service.ts","../../../../libs/angular-integration-interface/src/lib/utils/add-initialize-module-guard.utils.ts","../../../../libs/angular-integration-interface/src/index.ts","../../../../libs/angular-integration-interface/src/onecx-angular-integration-interface.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core'\nimport {\n GlobalErrorTopic,\n GlobalLoadingTopic,\n CurrentMfeTopic,\n CurrentPageTopic,\n CurrentWorkspaceTopic,\n IsAuthenticatedTopic,\n} from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class AppStateService implements OnDestroy {\n globalError$ = new GlobalErrorTopic()\n globalLoading$ = new GlobalLoadingTopic()\n currentMfe$ = new CurrentMfeTopic()\n\n /**\n * This topic will only fire when pageInfo.path matches document.location.pathname,\n * if not it will fire undefined.\n */\n currentPage$ = new CurrentPageTopic()\n currentWorkspace$ = new CurrentWorkspaceTopic()\n \n /**\n * @deprecated Will be replaced by currentWorkspace$\n */\n get currentPortal$() {\n return this.currentWorkspace$\n }\n set currentPortal$(value: CurrentWorkspaceTopic) {\n this.currentWorkspace$ = value\n }\n\n /**\n * This Topic is initialized as soon as the authentication is done\n */\n isAuthenticated$ = new IsAuthenticatedTopic()\n\n ngOnDestroy(): void {\n this.globalError$.destroy()\n this.globalLoading$.destroy()\n this.currentMfe$.destroy()\n this.currentPage$.destroy()\n this.currentPortal$.destroy()\n this.currentWorkspace$.destroy()\n this.isAuthenticated$.destroy()\n }\n}\n","import { InjectionToken } from '@angular/core'\nimport { IAuthService } from './iauth.service'\n\nexport interface LibConfig {\n appId: string\n portalId: string\n /**\n * If true, the tkit-module will not try to load remote env values from server(GET /assets/env.json)\n */\n skipRemoteConfigLoad: boolean\n /**\n * URL from which the remote config will be loaded, default: '/assets/env.json'\n */\n remoteConfigURL: string\n}\nexport const APP_CONFIG = new InjectionToken<LibConfig>('APP_CONFIG')\n\n/**\n * @deprecated\n * Please do not inject the auth service at all.\n * There are better ways to achieve what you want. Please use permission service or user service.\n */\nexport const AUTH_SERVICE = new InjectionToken<IAuthService>('AUTH_SERVICE')\n\nexport const SANITY_CHECK = new InjectionToken<string>('OCXSANITY_CHECK')\n\nexport const APPLICATION_NAME = new InjectionToken<string>('APPLICATION_NAME')\n","export enum CONFIG_KEY {\n TKIT_PORTAL_DEFAULT_THEME = 'TKIT_PORTAL_DEFAULT_THEME',\n TKIT_PORTAL_DISABLE_THEME_MANAGEMENT = 'TKIT_PORTAL_DISABLE_THEME_MANAGEMENT',\n TKIT_PORTAL_THEME_SERVER_URL = 'TKIT_PORTAL_THEME_SERVER_URL',\n TKIT_TOKEN_ROLE_CLAIM_NAME = 'TKIT_TOKEN_ROLE_CLAIM_NAME',\n TKIT_PORTAL_ID = 'TKIT_PORTAL_ID',\n TKIT_SUPPORTED_LANGUAGES = 'TKIT_SUPPORTED_LANGUAGES',\n TKIT_SEARCH_BASE_URL = 'TKIT_SEARCH_BASE_URL',\n APP_BASE_HREF = 'APP_BASE_HREF',\n KEYCLOAK_REALM = 'KEYCLOAK_REALM',\n KEYCLOAK_ENABLE_SILENT_SSO = 'KEYCLOAK_ENABLE_SILENT_SSO',\n KEYCLOAK_URL = 'KEYCLOAK_URL',\n KEYCLOAK_CLIENT_ID = 'KEYCLOAK_CLIENT_ID',\n ONECX_PORTAL_FAVORITES_DISABLED = 'ONECX_PORTAL_FAVORITES_DISABLED',\n ONECX_PORTAL_FEEDBACK_DISABLED = 'ONECX_PORTAL_FEEDBACK_DISABLED',\n ONECX_PORTAL_SEARCH_DISABLED = 'ONECX_PORTAL_SEARCH_DISABLED',\n ONECX_PORTAL_SUPPORT_TICKET_DISABLED = 'ONECX_PORTAL_SUPPORT_TICKET_DISABLED',\n ONECX_PORTAL_ANNOUNCEMENTS_DISABLED = 'ONECX_PORTAL_ANNOUNCEMENTS_DISABLED',\n ONECX_PORTAL_PASSWORD_CHANGE_DISABLED = 'ONECX_PORTAL_PASSWORD_CHANGE_DISABLED',\n ONECX_PORTAL_SETTINGS_DISABLED = 'ONECX_PORTAL_SETTINGS_DISABLED',\n ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED = 'ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED',\n ONECX_PORTAL_HELP_DISABLED = 'ONECX_PORTAL_HELP_DISABLED',\n APP_VERSION = 'APP_VERSION',\n IS_SHELL = 'IS_SHELL',\n AUTH_SERVICE = 'AUTH_SERVICE',\n AUTH_SERVICE_CUSTOM_URL = 'AUTH_SERVICE_CUSTOM_URL',\n AUTH_SERVICE_CUSTOM_MODULE_NAME = 'AUTH_SERVICE_CUSTOM_MODULE_NAME',\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Inject, Injectable, OnDestroy, Optional } from '@angular/core'\nimport { firstValueFrom } from 'rxjs'\nimport { Config, ConfigurationTopic } from '@onecx/integration-interface'\nimport { APP_CONFIG } from '../api/injection-tokens'\nimport { CONFIG_KEY } from '../model/config-key.model'\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements OnDestroy {\n config$ = new ConfigurationTopic()\n\n constructor(\n private http: HttpClient,\n @Optional() @Inject(APP_CONFIG) private defaultConfig?: { [key: string]: string }\n ) {}\n\n ngOnDestroy(): void {\n this.config$.destroy()\n }\n\n public init(): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const skipRemoteConfigLoad = this.defaultConfig && this.defaultConfig['skipRemoteConfigLoad']\n let loadConfigPromise: Promise<Config>\n\n const inlinedConfig = (window as typeof window & { APP_CONFIG: Config })['APP_CONFIG']\n if (inlinedConfig) {\n console.log(`ENV resolved from injected config`)\n loadConfigPromise = Promise.resolve(inlinedConfig)\n } else {\n if (skipRemoteConfigLoad) {\n console.log(\n '📢 TKA001: Remote config load is disabled. To enable it, remove the \"skipRemoteConfigLoad\" key in your environment.json'\n )\n loadConfigPromise = Promise.resolve(this.defaultConfig || {})\n } else {\n loadConfigPromise = firstValueFrom(\n this.http.get<Config>((this.defaultConfig && this.defaultConfig['remoteConfigURL']) || 'assets/env.json')\n )\n }\n }\n\n loadConfigPromise\n .then(async (config) => {\n if (config) {\n await this.config$.publish({ ...this.defaultConfig, ...config }).then(() => {\n resolve(true)\n })\n }\n })\n .catch((e) => {\n console.log(`Failed to load env configuration`)\n reject(e)\n })\n })\n }\n\n get isInitialized(): Promise<void> {\n return this.config$.isInitialized\n }\n\n public getProperty(key: CONFIG_KEY): string | undefined {\n if (!Object.values(CONFIG_KEY).includes(key)) {\n console.error('Invalid config key ', key)\n }\n return this.config$.getValue()?.[key]\n }\n\n public async setProperty(key: string, val: string) {\n const currentValues = await firstValueFrom(this.config$.asObservable())\n currentValues[key] = val\n await this.config$.publish(currentValues)\n }\n\n public getConfig(): Config | undefined {\n return this.config$.getValue()\n }\n}\n","export const API_PREFIX = 'portal-api'\n\nexport const DEFAULT_LANG = 'en'\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { BehaviorSubject, map, filter, firstValueFrom, skip } from 'rxjs'\nimport { PermissionsTopic, UserProfile, UserProfileTopic } from '@onecx/integration-interface'\nimport { DEFAULT_LANG } from '../api/constants'\n\n@Injectable({ providedIn: 'root' })\nexport class UserService implements OnDestroy {\n profile$ = new UserProfileTopic()\n permissions$ = new BehaviorSubject<string[]>([])\n lang$ = new BehaviorSubject(this.determineLanguage() ?? DEFAULT_LANG)\n\n private permissionsTopic$ = new PermissionsTopic()\n private oldStylePermissionsInitialized: Promise<string[]>\n\n constructor() {\n this.profile$\n .pipe(\n map(\n (profile) =>\n profile.accountSettings?.localeAndTimeSettings?.locale ?? this.determineLanguage() ?? DEFAULT_LANG\n )\n )\n .subscribe(this.lang$)\n\n this.oldStylePermissionsInitialized = firstValueFrom(this.permissions$.pipe(skip(1)))\n this.profile$\n .pipe(\n map((profile) => this.extractPermissions(profile)),\n filter((permissions): permissions is string[] => !!permissions)\n )\n .subscribe(this.permissions$)\n }\n\n ngOnDestroy(): void {\n this.profile$.destroy()\n }\n\n hasPermission(permissionKey: string): boolean {\n const oldConceptResult = this.permissions$.getValue()\n ? this.permissions$.getValue()?.includes(permissionKey)\n : false\n const result = this.permissionsTopic$.getValue()\n ? this.permissionsTopic$.getValue()?.includes(permissionKey)\n : oldConceptResult\n\n if (!result) {\n console.log(`👮‍♀️ No permission for: ${permissionKey}`)\n }\n return !!result\n }\n\n private determineLanguage(): string | undefined {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined\n }\n\n let browserLang: any = window.navigator.languages ? window.navigator.languages[0] : null\n browserLang = browserLang || window.navigator.language\n\n if (typeof browserLang === 'undefined') {\n return undefined\n }\n\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0]\n }\n\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0]\n }\n\n return browserLang\n }\n\n private extractPermissions(userProfile: UserProfile) {\n if (userProfile) {\n if (userProfile.memberships) {\n const permissions: string[] = []\n userProfile.memberships.forEach((m) => {\n m.roleMemberships?.forEach((r) => {\n r.permissions?.forEach((p) => {\n if (p) {\n if (p.key !== undefined) {\n permissions.push(p.key)\n }\n }\n })\n })\n })\n return permissions\n }\n }\n return null\n }\n\n get isInitialized(): Promise<void> {\n return Promise.all([\n Promise.race([this.permissionsTopic$.isInitialized, this.oldStylePermissionsInitialized]),\n this.profile$.isInitialized,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ]).then(() => {})\n }\n}\n","import { Injectable } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { combineLatest, of } from 'rxjs'\nimport { MessageTopic } from '@onecx/integration-interface'\n\nexport type Message = {\n summaryKey?: string\n summaryParameters?: object\n detailKey?: string\n detailParameters?: object\n id?: any\n key?: string\n life?: number\n sticky?: boolean\n closable?: boolean\n data?: any\n icon?: string\n contentStyleClass?: string\n styleClass?: string\n}\n\n@Injectable({ providedIn: 'any' })\nexport class PortalMessageService {\n constructor(private translateService: TranslateService) {}\n\n message$ = new MessageTopic()\n\n success(msg: Message) {\n this.addTranslated('success', msg)\n }\n\n info(msg: Message) {\n this.addTranslated('info', msg)\n }\n\n error(msg: Message) {\n this.addTranslated('error', msg)\n }\n\n warning(msg: Message) {\n this.addTranslated('warning', msg)\n }\n\n private addTranslated(severity: string, msg: Message) {\n combineLatest([\n msg.summaryKey ? this.translateService.get(msg.summaryKey || '', msg.summaryParameters) : of(undefined),\n msg.detailKey ? this.translateService.get(msg.detailKey, msg.detailParameters) : of(undefined),\n ]).subscribe(([summaryTranslation, detailTranslation]: string[]) => {\n this.message$.publish({\n ...msg,\n severity: severity,\n summary: summaryTranslation,\n detail: detailTranslation,\n })\n })\n }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Injectable, OnDestroy } from '@angular/core'\nimport { from, map, mergeMap } from 'rxjs'\nimport { CurrentThemeTopic, Theme } from '@onecx/integration-interface'\nimport { ConfigurationService } from './configuration.service'\nimport { CONFIG_KEY } from '../model/config-key.model'\n\nconst defaultThemeServerUrl = 'http://portal-theme-management:8080'\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService implements OnDestroy {\n baseUrlV1 = './portal-api'\n currentTheme$ = new CurrentThemeTopic()\n\n constructor(private configService: ConfigurationService, private http: HttpClient) {}\n\n getThemeHref(themeId: string): string {\n const themeServerUrl =\n this.configService.getProperty(CONFIG_KEY.TKIT_PORTAL_THEME_SERVER_URL) || defaultThemeServerUrl\n return `${themeServerUrl}/themes/${themeId}/${themeId}.min.css`\n }\n\n public loadAndApplyTheme(themeName: string) {\n return this.http.get<Theme>(`${this.baseUrlV1}/internal/themes/${encodeURI(themeName)}`).pipe(\n mergeMap((theme) => {\n return from(this.apply(theme)).pipe(map(() => theme))\n })\n )\n }\n\n public async apply(theme: Theme): Promise<void> {\n console.log(`🎨 Applying theme: ${theme.name}`)\n await this.currentTheme$.publish(theme)\n if (theme.properties) {\n Object.values(theme.properties).forEach((group) => {\n for (const [key, value] of Object.entries(group)) {\n document.documentElement.style.setProperty(`--${key}`, value)\n }\n })\n }\n }\n\n ngOnDestroy(): void {\n this.currentTheme$.destroy()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { RemoteComponentsTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class RemoteComponentsService implements OnDestroy {\n remoteComponents$ = new RemoteComponentsTopic()\n\n ngOnDestroy(): void {\n this.remoteComponents$.destroy()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { filter, from, isObservable, map, mergeMap, Observable, of, tap, zip } from 'rxjs'\nimport { AppStateService } from './app-state.service';\nimport { ConfigurationService } from './configuration.service';\nimport { UserService } from './user.service';\n\n@Injectable({ providedIn: 'any' })\nexport class InitializeModuleGuard implements CanActivate {\n private SUPPORTED_LANGS = ['en', 'de']\n private DEFAULT_LANG = 'en'\n constructor(\n protected translateService: TranslateService,\n protected configService: ConfigurationService,\n protected appStateService: AppStateService,\n protected userService: UserService\n ) {}\n\n canActivate(\n _route: ActivatedRouteSnapshot,\n _state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n console.time('InitializeModuleGuard')\n return zip([\n this.loadTranslations(),\n from(this.configService.isInitialized),\n from(this.userService.isInitialized),\n from(this.appStateService.currentWorkspace$.isInitialized),\n ]).pipe(\n tap(() => {\n console.timeEnd('InitializeModuleGuard')\n }),\n map(() => true)\n )\n }\n\n getBestMatchLanguage(lang: string) {\n if (this.SUPPORTED_LANGS.includes(lang)) {\n return lang\n } else {\n console.log(`${lang} is not supported. Using ${this.DEFAULT_LANG} as a fallback.`)\n }\n return this.DEFAULT_LANG\n }\n\n loadTranslations(): Observable<boolean> {\n return this.userService.lang$.pipe(\n filter((v) => v !== undefined),\n mergeMap((lang) => {\n const bestMatchLang = this.getBestMatchLanguage(lang as string)\n return this.translateService.use(bestMatchLang)\n }),\n mergeMap(() => of(true))\n )\n }\n\n protected toObservable(\n canActivateResult: Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n ): Observable<boolean | UrlTree> {\n if (isObservable(canActivateResult)) {\n return canActivateResult\n }\n return from(Promise.resolve(canActivateResult))\n }\n}\n","import { Injectable } from '@angular/core'\nimport { AppStateService } from './app-state.service'\nimport { Observable, map } from 'rxjs'\nimport { Route } from '@onecx/integration-interface'\nimport { Endpoint } from '@onecx/integration-interface'\nimport { Location } from '@angular/common'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkspaceService {\n private aliasStart = '[['\n private aliasEnd = ']]'\n private paramStart = '{'\n private paramEnd = '}'\n\n constructor(protected appStateService: AppStateService) {}\n\n getUrl(\n appId: string,\n productName: string,\n endpointName: string,\n params: Record<string, unknown> = {}\n ): Observable<string> {\n return this.appStateService.currentWorkspace$.pipe(\n map((workspace) => {\n const finalUrl = this.constructRouteUrl(workspace, appId, productName, endpointName, params)\n return finalUrl\n })\n )\n }\n\n private constructBaseUrlFromWorkspace(workspace: any): string {\n if (workspace.baseUrl === undefined) {\n console.log('WARNING: There was no baseUrl for received workspace.')\n return ''\n }\n return workspace.baseUrl\n }\n\n private constructRouteUrl(\n workspace: any,\n appId: string,\n productName: string,\n endpointName: string,\n params: Record<string, unknown>\n ): string {\n const route = this.filterRouteFromList(workspace.routes, appId, productName)\n let url = this.constructBaseUrlFromWorkspace(workspace)\n if (!route) {\n console.log(\n `WARNING: No route.baseUrl could be found for given appId \"${appId}\" and productName \"${productName}\"`\n )\n\n return url\n }\n\n if (route.baseUrl !== undefined && route.baseUrl.length > 0) {\n url = route.baseUrl\n }\n\n url = Location.joinWithSlash(url, this.constructEndpointUrl(route, endpointName, params))\n return url\n }\n\n private constructEndpointUrl(route: any, endpointName: string, params: Record<string, unknown>): string {\n if (!route.endpoints) {\n return ''\n }\n const finalEndpoint = this.dissolveEndpoint(endpointName, route.endpoints)\n if (!finalEndpoint || finalEndpoint.path === undefined) {\n console.log('WARNING: No endpoint or endpoint.path could be found')\n return ''\n }\n\n const paramsFilled = this.fillParamsForPath(finalEndpoint.path, params)\n if (paramsFilled === undefined) {\n console.log('WARNING: Params could not be filled correctly')\n return ''\n }\n\n return paramsFilled\n }\n\n private filterRouteFromList(routes: Array<Route>, appId: string, productName: string): Route | undefined {\n if (!routes) {\n return undefined\n }\n\n const productRoutes = routes.filter((route) => route.appId === appId && route.productName === productName)\n\n if (productRoutes.length === 0) {\n return undefined\n }\n\n if (productRoutes.length > 1) {\n console.log('WARNING: There were more than one route. First route has been used.')\n }\n\n return productRoutes[0]\n }\n\n private dissolveEndpoint(endpointName: string, endpoints: Array<Endpoint>): Endpoint | undefined {\n let endpoint = endpoints.find((ep) => ep.name === endpointName)\n\n if (!endpoint) {\n return undefined\n }\n\n while (endpoint.path?.includes(this.aliasStart)) {\n const path: string = endpoint.path\n const startIdx = path.indexOf(this.aliasStart) + this.aliasStart.length\n const endIdx = path.lastIndexOf(this.aliasEnd)\n if (endIdx <= startIdx) {\n return undefined\n }\n const aliasName = path.substring(startIdx, endIdx)\n endpoint = endpoints.find((ep) => ep.name === aliasName)\n\n if (!endpoint) {\n return undefined\n }\n }\n\n return endpoint\n }\n\n private fillParamsForPath(path: string, params: Record<string, unknown>): string {\n while (path.includes(this.paramStart)) {\n const paramName = path.substring(\n path.indexOf(this.paramStart) + this.paramStart.length,\n path.indexOf(this.paramEnd)\n )\n const paramValue = this.getStringFromUnknown(params[paramName])\n if (paramValue != undefined && paramValue.length > 0) {\n path = path.replace(this.paramStart.concat(paramName).concat(this.paramEnd), paramValue)\n } else {\n console.log(`WARNING: Searched param \"${paramName}\" was not found in given param list `)\n return ''\n }\n }\n return path\n }\n\n private getStringFromUnknown(value: unknown): string {\n if (value === null || value === undefined) {\n return ''\n } else if (typeof value === 'string') {\n return value\n } else {\n return String(value)\n }\n }\n}\n","import { CanActivateFn, Route } from '@angular/router'\nimport { InitializeModuleGuard } from '../services/initialize-module-guard.service'\n\nexport function addInitializeModuleGuard(\n routes: Route[],\n initializeModuleGuard: typeof InitializeModuleGuard | CanActivateFn = InitializeModuleGuard\n): Route[] {\n return routes.map((r) => {\n if (r.redirectTo) {\n return r\n }\n const route = {\n canActivate: [],\n ...r,\n }\n if (!route.canActivate.includes(initializeModuleGuard)) {\n route.canActivate.push(initializeModuleGuard)\n }\n return route\n })\n}","// services\nexport * from './lib/services/app-state.service'\nexport * from './lib/services/configuration.service'\nexport * from './lib/services/user.service'\nexport * from './lib/services/portal-message.service'\nexport * from './lib/services/theme.service'\nexport * from './lib/services/remote-components.service'\nexport * from './lib/services/initialize-module-guard.service'\nexport * from './lib/services/workspace.service'\n\n// models\nexport * from './lib/model/config-key.model'\n\n// core\nexport * from './lib/api/iauth.service'\nexport * from './lib/api/injection-tokens'\n\n// utils\nexport * from './lib/utils/add-initialize-module-guard.utils'\n\nexport { MfeInfo, Theme } from '@onecx/integration-interface'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.ConfigurationService","i2","i2.ConfigurationService","i3.AppStateService","i4.UserService","i1.AppStateService"],"mappings":"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"}
@@ -44,7 +44,7 @@ function provideAppServiceMock() {
44
44
  return provideAppStateServiceMock();
45
45
  }
46
46
  function provideAppStateServiceMock() {
47
- return [{ provide: AppStateService, useClass: AppStateServiceMock }];
47
+ return [AppStateServiceMock, { provide: AppStateService, useExisting: AppStateServiceMock }];
48
48
  }
49
49
  class AppStateServiceMock {
50
50
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"onecx-angular-integration-interface-mocks.mjs","sources":["../../../../libs/angular-integration-interface/mocks/mock-user-service.ts","../../../../libs/angular-integration-interface/mocks/fake-topic.ts","../../../../libs/angular-integration-interface/mocks/app-state-service-mock.ts","../../../../libs/angular-integration-interface/mocks/onecx-angular-integration-interface-mocks.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs'\n\nexport class MockUserService {\n lang$ = new BehaviorSubject<string>('en')\n /* eslint-disable @typescript-eslint/no-unused-vars */\n hasPermission(permissionKey: string): boolean {\n return true\n }\n}\n","import { Subject, Observable, Observer, Subscription, UnaryFunction, BehaviorSubject, ReplaySubject } from 'rxjs'\n\nexport class FakeTopic<T> {\n private state: Subject<T>\n constructor(initialValue: T | undefined = undefined) {\n if (initialValue !== undefined) {\n this.state = new BehaviorSubject<T>(initialValue)\n } else {\n this.state = new ReplaySubject<T>(1)\n }\n }\n asObservable(): Observable<T> {\n return this.state.asObservable()\n }\n\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void\n ): Subscription {\n return (<any>this.asObservable()).subscribe(observerOrNext, error, complete)\n }\n\n pipe(...operations: UnaryFunction<any, any>[]): unknown {\n return (<any>this.asObservable()).pipe(...operations)\n }\n\n publish(value: T): Promise<void> {\n this.state.next(value)\n return Promise.resolve()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { PageInfo, Workspace } from '@onecx/integration-interface'\n// eslint-disable-next-line\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from './fake-topic'\n\n/**\n * @deprecated use provideAppStateServiceMock()\n */\nexport function provideAppServiceMock() {\n return provideAppStateServiceMock()\n}\n\nexport function provideAppStateServiceMock() {\n return [{ provide: AppStateService, useClass: AppStateServiceMock }]\n}\n\n@Injectable()\nexport class AppStateServiceMock {\n globalError$ = new FakeTopic()\n globalLoading$ = new FakeTopic(false)\n currentMfe$ = new FakeTopic({ mountPath: '/', remoteBaseUrl: '.', baseHref: '/', shellName: 'test' })\n currentPage$ = new FakeTopic<PageInfo | undefined>(undefined)\n currentPortal$ = new FakeTopic<Workspace>({ baseUrl: '/', microfrontendRegistrations: [], portalName: 'Test portal', workspaceName: 'Test portal' })\n currentWorkspace$ = new FakeTopic<Workspace>({ baseUrl: '/', microfrontendRegistrations: [], portalName: 'Test workspace', workspaceName: 'Test workspace' })\n isAuthenticated$ = new FakeTopic<null>(null)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAEa,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;AACE,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC,CAAA;KAK1C;;AAHC,IAAA,aAAa,CAAC,aAAqB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAA;KACZ;AACF;;MCNY,SAAS,CAAA;AAEpB,IAAA,WAAA,CAAY,eAA8B,SAAS,EAAA;QACjD,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAA;AAClD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAI,CAAC,CAAC,CAAA;AACrC,SAAA;KACF;IACD,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;KACjC;AAED,IAAA,SAAS,CACP,cAA4D,EAC5D,KAA4B,EAC5B,QAAqB,EAAA;AAErB,QAAA,OAAa,IAAI,CAAC,YAAY,EAAG,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;KAC7E;IAED,IAAI,CAAC,GAAG,UAAqC,EAAA;QAC3C,OAAa,IAAI,CAAC,YAAY,EAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;KACtD;AAED,IAAA,OAAO,CAAC,KAAQ,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtB,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;KACzB;AACF;;ACzBD;;AAEG;SACa,qBAAqB,GAAA;IACnC,OAAO,0BAA0B,EAAE,CAAA;AACrC,CAAC;SAEe,0BAA0B,GAAA;IACxC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAA;AACtE,CAAC;MAGY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,SAAS,EAAE,CAAA;AAC9B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;QACrC,IAAW,CAAA,WAAA,GAAG,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;AACrG,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,SAAS,CAAuB,SAAS,CAAC,CAAA;QAC7D,IAAc,CAAA,cAAA,GAAG,IAAI,SAAS,CAAY,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAA;QACpJ,IAAiB,CAAA,iBAAA,GAAG,IAAI,SAAS,CAAY,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAA;AAC7J,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,SAAS,CAAO,IAAI,CAAC,CAAA;AAC7C,KAAA;;iHARY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACjBX;;AAEG;;;;"}
1
+ {"version":3,"file":"onecx-angular-integration-interface-mocks.mjs","sources":["../../../../libs/angular-integration-interface/mocks/mock-user-service.ts","../../../../libs/angular-integration-interface/mocks/fake-topic.ts","../../../../libs/angular-integration-interface/mocks/app-state-service-mock.ts","../../../../libs/angular-integration-interface/mocks/onecx-angular-integration-interface-mocks.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs'\n\nexport class MockUserService {\n lang$ = new BehaviorSubject<string>('en')\n /* eslint-disable @typescript-eslint/no-unused-vars */\n hasPermission(permissionKey: string): boolean {\n return true\n }\n}\n","import { Subject, Observable, Observer, Subscription, UnaryFunction, BehaviorSubject, ReplaySubject } from 'rxjs'\n\nexport class FakeTopic<T> {\n private state: Subject<T>\n constructor(initialValue: T | undefined = undefined) {\n if (initialValue !== undefined) {\n this.state = new BehaviorSubject<T>(initialValue)\n } else {\n this.state = new ReplaySubject<T>(1)\n }\n }\n asObservable(): Observable<T> {\n return this.state.asObservable()\n }\n\n subscribe(\n observerOrNext?: Partial<Observer<T>> | ((value: T) => void),\n error?: (error: any) => void,\n complete?: () => void\n ): Subscription {\n return (<any>this.asObservable()).subscribe(observerOrNext, error, complete)\n }\n\n pipe(...operations: UnaryFunction<any, any>[]): unknown {\n return (<any>this.asObservable()).pipe(...operations)\n }\n\n publish(value: T): Promise<void> {\n this.state.next(value)\n return Promise.resolve()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { PageInfo, Workspace } from '@onecx/integration-interface'\n// eslint-disable-next-line\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from './fake-topic'\n\n/**\n * @deprecated use provideAppStateServiceMock()\n */\nexport function provideAppServiceMock() {\n return provideAppStateServiceMock()\n}\n\nexport function provideAppStateServiceMock() {\n return [AppStateServiceMock, { provide: AppStateService, useExisting: AppStateServiceMock }]\n}\n\n@Injectable()\nexport class AppStateServiceMock {\n globalError$ = new FakeTopic()\n globalLoading$ = new FakeTopic(false)\n currentMfe$ = new FakeTopic({ mountPath: '/', remoteBaseUrl: '.', baseHref: '/', shellName: 'test' })\n currentPage$ = new FakeTopic<PageInfo | undefined>(undefined)\n currentPortal$ = new FakeTopic<Workspace>({ baseUrl: '/', microfrontendRegistrations: [], portalName: 'Test portal', workspaceName: 'Test portal' })\n currentWorkspace$ = new FakeTopic<Workspace>({ baseUrl: '/', microfrontendRegistrations: [], portalName: 'Test workspace', workspaceName: 'Test workspace' })\n isAuthenticated$ = new FakeTopic<null>(null)\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAEa,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;AACE,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC,CAAA;KAK1C;;AAHC,IAAA,aAAa,CAAC,aAAqB,EAAA;AACjC,QAAA,OAAO,IAAI,CAAA;KACZ;AACF;;MCNY,SAAS,CAAA;AAEpB,IAAA,WAAA,CAAY,eAA8B,SAAS,EAAA;QACjD,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAI,YAAY,CAAC,CAAA;AAClD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,aAAa,CAAI,CAAC,CAAC,CAAA;AACrC,SAAA;KACF;IACD,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAA;KACjC;AAED,IAAA,SAAS,CACP,cAA4D,EAC5D,KAA4B,EAC5B,QAAqB,EAAA;AAErB,QAAA,OAAa,IAAI,CAAC,YAAY,EAAG,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;KAC7E;IAED,IAAI,CAAC,GAAG,UAAqC,EAAA;QAC3C,OAAa,IAAI,CAAC,YAAY,EAAG,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;KACtD;AAED,IAAA,OAAO,CAAC,KAAQ,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtB,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;KACzB;AACF;;ACzBD;;AAEG;SACa,qBAAqB,GAAA;IACnC,OAAO,0BAA0B,EAAE,CAAA;AACrC,CAAC;SAEe,0BAA0B,GAAA;AACxC,IAAA,OAAO,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAA;AAC9F,CAAC;MAGY,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,SAAS,EAAE,CAAA;AAC9B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;QACrC,IAAW,CAAA,WAAA,GAAG,IAAI,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAA;AACrG,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,SAAS,CAAuB,SAAS,CAAC,CAAA;QAC7D,IAAc,CAAA,cAAA,GAAG,IAAI,SAAS,CAAY,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAA;QACpJ,IAAiB,CAAA,iBAAA,GAAG,IAAI,SAAS,CAAY,EAAE,OAAO,EAAE,GAAG,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAA;AAC7J,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,SAAS,CAAO,IAAI,CAAC,CAAA;AAC7C,KAAA;;iHARY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACjBX;;AAEG;;;;"}
@@ -4,6 +4,7 @@ import { GlobalErrorTopic, GlobalLoadingTopic, CurrentMfeTopic, CurrentPageTopic
4
4
  import * as i1 from '@angular/common/http';
5
5
  import { firstValueFrom, BehaviorSubject, map, skip, filter, combineLatest, of, mergeMap, from, zip, tap, isObservable } from 'rxjs';
6
6
  import * as i1$1 from '@ngx-translate/core';
7
+ import { Location } from '@angular/common';
7
8
 
8
9
  class AppStateService {
9
10
  constructor() {
@@ -383,6 +384,124 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
383
384
  args: [{ providedIn: 'any' }]
384
385
  }], ctorParameters: function () { return [{ type: i1$1.TranslateService }, { type: ConfigurationService }, { type: AppStateService }, { type: UserService }]; } });
385
386
 
387
+ class WorkspaceService {
388
+ constructor(appStateService) {
389
+ this.appStateService = appStateService;
390
+ this.aliasStart = '[[';
391
+ this.aliasEnd = ']]';
392
+ this.paramStart = '{';
393
+ this.paramEnd = '}';
394
+ }
395
+ getUrl(appId, productName, endpointName, params = {}) {
396
+ return this.appStateService.currentWorkspace$.pipe(map((workspace) => {
397
+ const finalUrl = this.constructRouteUrl(workspace, appId, productName, endpointName, params);
398
+ return finalUrl;
399
+ }));
400
+ }
401
+ constructBaseUrlFromWorkspace(workspace) {
402
+ if (workspace.baseUrl === undefined) {
403
+ console.log('WARNING: There was no baseUrl for received workspace.');
404
+ return '';
405
+ }
406
+ return workspace.baseUrl;
407
+ }
408
+ constructRouteUrl(workspace, appId, productName, endpointName, params) {
409
+ const route = this.filterRouteFromList(workspace.routes, appId, productName);
410
+ let url = this.constructBaseUrlFromWorkspace(workspace);
411
+ if (!route) {
412
+ console.log(`WARNING: No route.baseUrl could be found for given appId "${appId}" and productName "${productName}"`);
413
+ return url;
414
+ }
415
+ if (route.baseUrl !== undefined && route.baseUrl.length > 0) {
416
+ url = route.baseUrl;
417
+ }
418
+ url = Location.joinWithSlash(url, this.constructEndpointUrl(route, endpointName, params));
419
+ return url;
420
+ }
421
+ constructEndpointUrl(route, endpointName, params) {
422
+ if (!route.endpoints) {
423
+ return '';
424
+ }
425
+ const finalEndpoint = this.dissolveEndpoint(endpointName, route.endpoints);
426
+ if (!finalEndpoint || finalEndpoint.path === undefined) {
427
+ console.log('WARNING: No endpoint or endpoint.path could be found');
428
+ return '';
429
+ }
430
+ const paramsFilled = this.fillParamsForPath(finalEndpoint.path, params);
431
+ if (paramsFilled === undefined) {
432
+ console.log('WARNING: Params could not be filled correctly');
433
+ return '';
434
+ }
435
+ return paramsFilled;
436
+ }
437
+ filterRouteFromList(routes, appId, productName) {
438
+ if (!routes) {
439
+ return undefined;
440
+ }
441
+ const productRoutes = routes.filter((route) => route.appId === appId && route.productName === productName);
442
+ if (productRoutes.length === 0) {
443
+ return undefined;
444
+ }
445
+ if (productRoutes.length > 1) {
446
+ console.log('WARNING: There were more than one route. First route has been used.');
447
+ }
448
+ return productRoutes[0];
449
+ }
450
+ dissolveEndpoint(endpointName, endpoints) {
451
+ let endpoint = endpoints.find((ep) => ep.name === endpointName);
452
+ if (!endpoint) {
453
+ return undefined;
454
+ }
455
+ while (endpoint.path?.includes(this.aliasStart)) {
456
+ const path = endpoint.path;
457
+ const startIdx = path.indexOf(this.aliasStart) + this.aliasStart.length;
458
+ const endIdx = path.lastIndexOf(this.aliasEnd);
459
+ if (endIdx <= startIdx) {
460
+ return undefined;
461
+ }
462
+ const aliasName = path.substring(startIdx, endIdx);
463
+ endpoint = endpoints.find((ep) => ep.name === aliasName);
464
+ if (!endpoint) {
465
+ return undefined;
466
+ }
467
+ }
468
+ return endpoint;
469
+ }
470
+ fillParamsForPath(path, params) {
471
+ while (path.includes(this.paramStart)) {
472
+ const paramName = path.substring(path.indexOf(this.paramStart) + this.paramStart.length, path.indexOf(this.paramEnd));
473
+ const paramValue = this.getStringFromUnknown(params[paramName]);
474
+ if (paramValue != undefined && paramValue.length > 0) {
475
+ path = path.replace(this.paramStart.concat(paramName).concat(this.paramEnd), paramValue);
476
+ }
477
+ else {
478
+ console.log(`WARNING: Searched param "${paramName}" was not found in given param list `);
479
+ return '';
480
+ }
481
+ }
482
+ return path;
483
+ }
484
+ getStringFromUnknown(value) {
485
+ if (value === null || value === undefined) {
486
+ return '';
487
+ }
488
+ else if (typeof value === 'string') {
489
+ return value;
490
+ }
491
+ else {
492
+ return String(value);
493
+ }
494
+ }
495
+ }
496
+ WorkspaceService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, deps: [{ token: AppStateService }], target: i0.ɵɵFactoryTarget.Injectable });
497
+ WorkspaceService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, providedIn: 'root' });
498
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceService, decorators: [{
499
+ type: Injectable,
500
+ args: [{
501
+ providedIn: 'root',
502
+ }]
503
+ }], ctorParameters: function () { return [{ type: AppStateService }]; } });
504
+
386
505
  function addInitializeModuleGuard(routes, initializeModuleGuard = InitializeModuleGuard) {
387
506
  return routes.map((r) => {
388
507
  if (r.redirectTo) {
@@ -405,5 +524,5 @@ function addInitializeModuleGuard(routes, initializeModuleGuard = InitializeModu
405
524
  * Generated bundle index. Do not edit.
406
525
  */
407
526
 
408
- export { APPLICATION_NAME, APP_CONFIG, AUTH_SERVICE, AppStateService, CONFIG_KEY, ConfigurationService, InitializeModuleGuard, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ThemeService, UserService, addInitializeModuleGuard };
527
+ export { APPLICATION_NAME, APP_CONFIG, AUTH_SERVICE, AppStateService, CONFIG_KEY, ConfigurationService, InitializeModuleGuard, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ThemeService, UserService, WorkspaceService, addInitializeModuleGuard };
409
528
  //# sourceMappingURL=onecx-angular-integration-interface.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"onecx-angular-integration-interface.mjs","sources":["../../../../libs/angular-integration-interface/src/lib/services/app-state.service.ts","../../../../libs/angular-integration-interface/src/lib/api/injection-tokens.ts","../../../../libs/angular-integration-interface/src/lib/model/config-key.model.ts","../../../../libs/angular-integration-interface/src/lib/services/configuration.service.ts","../../../../libs/angular-integration-interface/src/lib/api/constants.ts","../../../../libs/angular-integration-interface/src/lib/services/user.service.ts","../../../../libs/angular-integration-interface/src/lib/services/portal-message.service.ts","../../../../libs/angular-integration-interface/src/lib/services/theme.service.ts","../../../../libs/angular-integration-interface/src/lib/services/remote-components.service.ts","../../../../libs/angular-integration-interface/src/lib/services/initialize-module-guard.service.ts","../../../../libs/angular-integration-interface/src/lib/utils/add-initialize-module-guard.utils.ts","../../../../libs/angular-integration-interface/src/index.ts","../../../../libs/angular-integration-interface/src/onecx-angular-integration-interface.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core'\nimport {\n GlobalErrorTopic,\n GlobalLoadingTopic,\n CurrentMfeTopic,\n CurrentPageTopic,\n CurrentWorkspaceTopic,\n IsAuthenticatedTopic,\n} from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class AppStateService implements OnDestroy {\n globalError$ = new GlobalErrorTopic()\n globalLoading$ = new GlobalLoadingTopic()\n currentMfe$ = new CurrentMfeTopic()\n\n /**\n * This topic will only fire when pageInfo.path matches document.location.pathname,\n * if not it will fire undefined.\n */\n currentPage$ = new CurrentPageTopic()\n currentWorkspace$ = new CurrentWorkspaceTopic()\n \n /**\n * @deprecated Will be replaced by currentWorkspace$\n */\n get currentPortal$() {\n return this.currentWorkspace$\n }\n set currentPortal$(value: CurrentWorkspaceTopic) {\n this.currentWorkspace$ = value\n }\n\n /**\n * This Topic is initialized as soon as the authentication is done\n */\n isAuthenticated$ = new IsAuthenticatedTopic()\n\n ngOnDestroy(): void {\n this.globalError$.destroy()\n this.globalLoading$.destroy()\n this.currentMfe$.destroy()\n this.currentPage$.destroy()\n this.currentPortal$.destroy()\n this.currentWorkspace$.destroy()\n this.isAuthenticated$.destroy()\n }\n}\n","import { InjectionToken } from '@angular/core'\nimport { IAuthService } from './iauth.service'\n\nexport interface LibConfig {\n appId: string\n portalId: string\n /**\n * If true, the tkit-module will not try to load remote env values from server(GET /assets/env.json)\n */\n skipRemoteConfigLoad: boolean\n /**\n * URL from which the remote config will be loaded, default: '/assets/env.json'\n */\n remoteConfigURL: string\n}\nexport const APP_CONFIG = new InjectionToken<LibConfig>('APP_CONFIG')\n\n/**\n * @deprecated\n * Please do not inject the auth service at all.\n * There are better ways to achieve what you want. Please use permission service or user service.\n */\nexport const AUTH_SERVICE = new InjectionToken<IAuthService>('AUTH_SERVICE')\n\nexport const SANITY_CHECK = new InjectionToken<string>('OCXSANITY_CHECK')\n\nexport const APPLICATION_NAME = new InjectionToken<string>('APPLICATION_NAME')\n","export enum CONFIG_KEY {\n TKIT_PORTAL_DEFAULT_THEME = 'TKIT_PORTAL_DEFAULT_THEME',\n TKIT_PORTAL_DISABLE_THEME_MANAGEMENT = 'TKIT_PORTAL_DISABLE_THEME_MANAGEMENT',\n TKIT_PORTAL_THEME_SERVER_URL = 'TKIT_PORTAL_THEME_SERVER_URL',\n TKIT_TOKEN_ROLE_CLAIM_NAME = 'TKIT_TOKEN_ROLE_CLAIM_NAME',\n TKIT_PORTAL_ID = 'TKIT_PORTAL_ID',\n TKIT_SUPPORTED_LANGUAGES = 'TKIT_SUPPORTED_LANGUAGES',\n TKIT_SEARCH_BASE_URL = 'TKIT_SEARCH_BASE_URL',\n APP_BASE_HREF = 'APP_BASE_HREF',\n KEYCLOAK_REALM = 'KEYCLOAK_REALM',\n KEYCLOAK_ENABLE_SILENT_SSO = 'KEYCLOAK_ENABLE_SILENT_SSO',\n KEYCLOAK_URL = 'KEYCLOAK_URL',\n KEYCLOAK_CLIENT_ID = 'KEYCLOAK_CLIENT_ID',\n ONECX_PORTAL_FAVORITES_DISABLED = 'ONECX_PORTAL_FAVORITES_DISABLED',\n ONECX_PORTAL_FEEDBACK_DISABLED = 'ONECX_PORTAL_FEEDBACK_DISABLED',\n ONECX_PORTAL_SEARCH_DISABLED = 'ONECX_PORTAL_SEARCH_DISABLED',\n ONECX_PORTAL_SUPPORT_TICKET_DISABLED = 'ONECX_PORTAL_SUPPORT_TICKET_DISABLED',\n ONECX_PORTAL_ANNOUNCEMENTS_DISABLED = 'ONECX_PORTAL_ANNOUNCEMENTS_DISABLED',\n ONECX_PORTAL_PASSWORD_CHANGE_DISABLED = 'ONECX_PORTAL_PASSWORD_CHANGE_DISABLED',\n ONECX_PORTAL_SETTINGS_DISABLED = 'ONECX_PORTAL_SETTINGS_DISABLED',\n ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED = 'ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED',\n ONECX_PORTAL_HELP_DISABLED = 'ONECX_PORTAL_HELP_DISABLED',\n APP_VERSION = 'APP_VERSION',\n IS_SHELL = 'IS_SHELL',\n AUTH_SERVICE = 'AUTH_SERVICE',\n AUTH_SERVICE_CUSTOM_URL = 'AUTH_SERVICE_CUSTOM_URL',\n AUTH_SERVICE_CUSTOM_MODULE_NAME = 'AUTH_SERVICE_CUSTOM_MODULE_NAME',\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Inject, Injectable, OnDestroy, Optional } from '@angular/core'\nimport { firstValueFrom } from 'rxjs'\nimport { Config, ConfigurationTopic } from '@onecx/integration-interface'\nimport { APP_CONFIG } from '../api/injection-tokens'\nimport { CONFIG_KEY } from '../model/config-key.model'\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements OnDestroy {\n config$ = new ConfigurationTopic()\n\n constructor(\n private http: HttpClient,\n @Optional() @Inject(APP_CONFIG) private defaultConfig?: { [key: string]: string }\n ) {}\n\n ngOnDestroy(): void {\n this.config$.destroy()\n }\n\n public init(): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const skipRemoteConfigLoad = this.defaultConfig && this.defaultConfig['skipRemoteConfigLoad']\n let loadConfigPromise: Promise<Config>\n\n const inlinedConfig = (window as typeof window & { APP_CONFIG: Config })['APP_CONFIG']\n if (inlinedConfig) {\n console.log(`ENV resolved from injected config`)\n loadConfigPromise = Promise.resolve(inlinedConfig)\n } else {\n if (skipRemoteConfigLoad) {\n console.log(\n '📢 TKA001: Remote config load is disabled. To enable it, remove the \"skipRemoteConfigLoad\" key in your environment.json'\n )\n loadConfigPromise = Promise.resolve(this.defaultConfig || {})\n } else {\n loadConfigPromise = firstValueFrom(\n this.http.get<Config>((this.defaultConfig && this.defaultConfig['remoteConfigURL']) || 'assets/env.json')\n )\n }\n }\n\n loadConfigPromise\n .then(async (config) => {\n if (config) {\n await this.config$.publish({ ...this.defaultConfig, ...config }).then(() => {\n resolve(true)\n })\n }\n })\n .catch((e) => {\n console.log(`Failed to load env configuration`)\n reject(e)\n })\n })\n }\n\n get isInitialized(): Promise<void> {\n return this.config$.isInitialized\n }\n\n public getProperty(key: CONFIG_KEY): string | undefined {\n if (!Object.values(CONFIG_KEY).includes(key)) {\n console.error('Invalid config key ', key)\n }\n return this.config$.getValue()?.[key]\n }\n\n public async setProperty(key: string, val: string) {\n const currentValues = await firstValueFrom(this.config$.asObservable())\n currentValues[key] = val\n await this.config$.publish(currentValues)\n }\n\n public getConfig(): Config | undefined {\n return this.config$.getValue()\n }\n}\n","export const API_PREFIX = 'portal-api'\n\nexport const DEFAULT_LANG = 'en'\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { BehaviorSubject, map, filter, firstValueFrom, skip } from 'rxjs'\nimport { PermissionsTopic, UserProfile, UserProfileTopic } from '@onecx/integration-interface'\nimport { DEFAULT_LANG } from '../api/constants'\n\n@Injectable({ providedIn: 'root' })\nexport class UserService implements OnDestroy {\n profile$ = new UserProfileTopic()\n permissions$ = new BehaviorSubject<string[]>([])\n lang$ = new BehaviorSubject(this.determineLanguage() ?? DEFAULT_LANG)\n\n private permissionsTopic$ = new PermissionsTopic()\n private oldStylePermissionsInitialized: Promise<string[]>\n\n constructor() {\n this.profile$\n .pipe(\n map(\n (profile) =>\n profile.accountSettings?.localeAndTimeSettings?.locale ?? this.determineLanguage() ?? DEFAULT_LANG\n )\n )\n .subscribe(this.lang$)\n\n this.oldStylePermissionsInitialized = firstValueFrom(this.permissions$.pipe(skip(1)))\n this.profile$\n .pipe(\n map((profile) => this.extractPermissions(profile)),\n filter((permissions): permissions is string[] => !!permissions)\n )\n .subscribe(this.permissions$)\n }\n\n ngOnDestroy(): void {\n this.profile$.destroy()\n }\n\n hasPermission(permissionKey: string): boolean {\n const oldConceptResult = this.permissions$.getValue()\n ? this.permissions$.getValue()?.includes(permissionKey)\n : false\n const result = this.permissionsTopic$.getValue()\n ? this.permissionsTopic$.getValue()?.includes(permissionKey)\n : oldConceptResult\n\n if (!result) {\n console.log(`👮‍♀️ No permission for: ${permissionKey}`)\n }\n return !!result\n }\n\n private determineLanguage(): string | undefined {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined\n }\n\n let browserLang: any = window.navigator.languages ? window.navigator.languages[0] : null\n browserLang = browserLang || window.navigator.language\n\n if (typeof browserLang === 'undefined') {\n return undefined\n }\n\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0]\n }\n\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0]\n }\n\n return browserLang\n }\n\n private extractPermissions(userProfile: UserProfile) {\n if (userProfile) {\n if (userProfile.memberships) {\n const permissions: string[] = []\n userProfile.memberships.forEach((m) => {\n m.roleMemberships?.forEach((r) => {\n r.permissions?.forEach((p) => {\n if (p) {\n if (p.key !== undefined) {\n permissions.push(p.key)\n }\n }\n })\n })\n })\n return permissions\n }\n }\n return null\n }\n\n get isInitialized(): Promise<void> {\n return Promise.all([\n Promise.race([this.permissionsTopic$.isInitialized, this.oldStylePermissionsInitialized]),\n this.profile$.isInitialized,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ]).then(() => {})\n }\n}\n","import { Injectable } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { combineLatest, of } from 'rxjs'\nimport { MessageTopic } from '@onecx/integration-interface'\n\nexport type Message = {\n summaryKey?: string\n summaryParameters?: object\n detailKey?: string\n detailParameters?: object\n id?: any\n key?: string\n life?: number\n sticky?: boolean\n closable?: boolean\n data?: any\n icon?: string\n contentStyleClass?: string\n styleClass?: string\n}\n\n@Injectable({ providedIn: 'any' })\nexport class PortalMessageService {\n constructor(private translateService: TranslateService) {}\n\n message$ = new MessageTopic()\n\n success(msg: Message) {\n this.addTranslated('success', msg)\n }\n\n info(msg: Message) {\n this.addTranslated('info', msg)\n }\n\n error(msg: Message) {\n this.addTranslated('error', msg)\n }\n\n warning(msg: Message) {\n this.addTranslated('warning', msg)\n }\n\n private addTranslated(severity: string, msg: Message) {\n combineLatest([\n msg.summaryKey ? this.translateService.get(msg.summaryKey || '', msg.summaryParameters) : of(undefined),\n msg.detailKey ? this.translateService.get(msg.detailKey, msg.detailParameters) : of(undefined),\n ]).subscribe(([summaryTranslation, detailTranslation]: string[]) => {\n this.message$.publish({\n ...msg,\n severity: severity,\n summary: summaryTranslation,\n detail: detailTranslation,\n })\n })\n }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Injectable, OnDestroy } from '@angular/core'\nimport { from, map, mergeMap } from 'rxjs'\nimport { CurrentThemeTopic, Theme } from '@onecx/integration-interface'\nimport { ConfigurationService } from './configuration.service'\nimport { CONFIG_KEY } from '../model/config-key.model'\n\nconst defaultThemeServerUrl = 'http://portal-theme-management:8080'\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService implements OnDestroy {\n baseUrlV1 = './portal-api'\n currentTheme$ = new CurrentThemeTopic()\n\n constructor(private configService: ConfigurationService, private http: HttpClient) {}\n\n getThemeHref(themeId: string): string {\n const themeServerUrl =\n this.configService.getProperty(CONFIG_KEY.TKIT_PORTAL_THEME_SERVER_URL) || defaultThemeServerUrl\n return `${themeServerUrl}/themes/${themeId}/${themeId}.min.css`\n }\n\n public loadAndApplyTheme(themeName: string) {\n return this.http.get<Theme>(`${this.baseUrlV1}/internal/themes/${encodeURI(themeName)}`).pipe(\n mergeMap((theme) => {\n return from(this.apply(theme)).pipe(map(() => theme))\n })\n )\n }\n\n public async apply(theme: Theme): Promise<void> {\n console.log(`🎨 Applying theme: ${theme.name}`)\n await this.currentTheme$.publish(theme)\n if (theme.properties) {\n Object.values(theme.properties).forEach((group) => {\n for (const [key, value] of Object.entries(group)) {\n document.documentElement.style.setProperty(`--${key}`, value)\n }\n })\n }\n }\n\n ngOnDestroy(): void {\n this.currentTheme$.destroy()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { RemoteComponentsTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class RemoteComponentsService implements OnDestroy {\n remoteComponents$ = new RemoteComponentsTopic()\n\n ngOnDestroy(): void {\n this.remoteComponents$.destroy()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { filter, from, isObservable, map, mergeMap, Observable, of, tap, zip } from 'rxjs'\nimport { AppStateService } from './app-state.service';\nimport { ConfigurationService } from './configuration.service';\nimport { UserService } from './user.service';\n\n@Injectable({ providedIn: 'any' })\nexport class InitializeModuleGuard implements CanActivate {\n private SUPPORTED_LANGS = ['en', 'de']\n private DEFAULT_LANG = 'en'\n constructor(\n protected translateService: TranslateService,\n protected configService: ConfigurationService,\n protected appStateService: AppStateService,\n protected userService: UserService\n ) {}\n\n canActivate(\n _route: ActivatedRouteSnapshot,\n _state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n console.time('InitializeModuleGuard')\n return zip([\n this.loadTranslations(),\n from(this.configService.isInitialized),\n from(this.userService.isInitialized),\n from(this.appStateService.currentWorkspace$.isInitialized),\n ]).pipe(\n tap(() => {\n console.timeEnd('InitializeModuleGuard')\n }),\n map(() => true)\n )\n }\n\n getBestMatchLanguage(lang: string) {\n if (this.SUPPORTED_LANGS.includes(lang)) {\n return lang\n } else {\n console.log(`${lang} is not supported. Using ${this.DEFAULT_LANG} as a fallback.`)\n }\n return this.DEFAULT_LANG\n }\n\n loadTranslations(): Observable<boolean> {\n return this.userService.lang$.pipe(\n filter((v) => v !== undefined),\n mergeMap((lang) => {\n const bestMatchLang = this.getBestMatchLanguage(lang as string)\n return this.translateService.use(bestMatchLang)\n }),\n mergeMap(() => of(true))\n )\n }\n\n protected toObservable(\n canActivateResult: Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n ): Observable<boolean | UrlTree> {\n if (isObservable(canActivateResult)) {\n return canActivateResult\n }\n return from(Promise.resolve(canActivateResult))\n }\n}\n","import { CanActivateFn, Route } from '@angular/router'\nimport { InitializeModuleGuard } from '../services/initialize-module-guard.service'\n\nexport function addInitializeModuleGuard(\n routes: Route[],\n initializeModuleGuard: typeof InitializeModuleGuard | CanActivateFn = InitializeModuleGuard\n): Route[] {\n return routes.map((r) => {\n if (r.redirectTo) {\n return r\n }\n const route = {\n canActivate: [],\n ...r,\n }\n if (!route.canActivate.includes(initializeModuleGuard)) {\n route.canActivate.push(initializeModuleGuard)\n }\n return route\n })\n}","// services\nexport * from './lib/services/app-state.service'\nexport * from './lib/services/configuration.service'\nexport * from './lib/services/user.service'\nexport * from './lib/services/portal-message.service'\nexport * from './lib/services/theme.service'\nexport * from './lib/services/remote-components.service'\nexport * from './lib/services/initialize-module-guard.service'\n\n// models\nexport * from './lib/model/config-key.model'\n\n// core\nexport * from './lib/api/iauth.service'\nexport * from './lib/api/injection-tokens'\n\n// utils\nexport * from './lib/utils/add-initialize-module-guard.utils'\n\nexport { MfeInfo, Theme } from '@onecx/integration-interface'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.ConfigurationService","i2","i2.ConfigurationService","i3.AppStateService","i4.UserService"],"mappings":"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"}
1
+ {"version":3,"file":"onecx-angular-integration-interface.mjs","sources":["../../../../libs/angular-integration-interface/src/lib/services/app-state.service.ts","../../../../libs/angular-integration-interface/src/lib/api/injection-tokens.ts","../../../../libs/angular-integration-interface/src/lib/model/config-key.model.ts","../../../../libs/angular-integration-interface/src/lib/services/configuration.service.ts","../../../../libs/angular-integration-interface/src/lib/api/constants.ts","../../../../libs/angular-integration-interface/src/lib/services/user.service.ts","../../../../libs/angular-integration-interface/src/lib/services/portal-message.service.ts","../../../../libs/angular-integration-interface/src/lib/services/theme.service.ts","../../../../libs/angular-integration-interface/src/lib/services/remote-components.service.ts","../../../../libs/angular-integration-interface/src/lib/services/initialize-module-guard.service.ts","../../../../libs/angular-integration-interface/src/lib/services/workspace.service.ts","../../../../libs/angular-integration-interface/src/lib/utils/add-initialize-module-guard.utils.ts","../../../../libs/angular-integration-interface/src/index.ts","../../../../libs/angular-integration-interface/src/onecx-angular-integration-interface.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core'\nimport {\n GlobalErrorTopic,\n GlobalLoadingTopic,\n CurrentMfeTopic,\n CurrentPageTopic,\n CurrentWorkspaceTopic,\n IsAuthenticatedTopic,\n} from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class AppStateService implements OnDestroy {\n globalError$ = new GlobalErrorTopic()\n globalLoading$ = new GlobalLoadingTopic()\n currentMfe$ = new CurrentMfeTopic()\n\n /**\n * This topic will only fire when pageInfo.path matches document.location.pathname,\n * if not it will fire undefined.\n */\n currentPage$ = new CurrentPageTopic()\n currentWorkspace$ = new CurrentWorkspaceTopic()\n \n /**\n * @deprecated Will be replaced by currentWorkspace$\n */\n get currentPortal$() {\n return this.currentWorkspace$\n }\n set currentPortal$(value: CurrentWorkspaceTopic) {\n this.currentWorkspace$ = value\n }\n\n /**\n * This Topic is initialized as soon as the authentication is done\n */\n isAuthenticated$ = new IsAuthenticatedTopic()\n\n ngOnDestroy(): void {\n this.globalError$.destroy()\n this.globalLoading$.destroy()\n this.currentMfe$.destroy()\n this.currentPage$.destroy()\n this.currentPortal$.destroy()\n this.currentWorkspace$.destroy()\n this.isAuthenticated$.destroy()\n }\n}\n","import { InjectionToken } from '@angular/core'\nimport { IAuthService } from './iauth.service'\n\nexport interface LibConfig {\n appId: string\n portalId: string\n /**\n * If true, the tkit-module will not try to load remote env values from server(GET /assets/env.json)\n */\n skipRemoteConfigLoad: boolean\n /**\n * URL from which the remote config will be loaded, default: '/assets/env.json'\n */\n remoteConfigURL: string\n}\nexport const APP_CONFIG = new InjectionToken<LibConfig>('APP_CONFIG')\n\n/**\n * @deprecated\n * Please do not inject the auth service at all.\n * There are better ways to achieve what you want. Please use permission service or user service.\n */\nexport const AUTH_SERVICE = new InjectionToken<IAuthService>('AUTH_SERVICE')\n\nexport const SANITY_CHECK = new InjectionToken<string>('OCXSANITY_CHECK')\n\nexport const APPLICATION_NAME = new InjectionToken<string>('APPLICATION_NAME')\n","export enum CONFIG_KEY {\n TKIT_PORTAL_DEFAULT_THEME = 'TKIT_PORTAL_DEFAULT_THEME',\n TKIT_PORTAL_DISABLE_THEME_MANAGEMENT = 'TKIT_PORTAL_DISABLE_THEME_MANAGEMENT',\n TKIT_PORTAL_THEME_SERVER_URL = 'TKIT_PORTAL_THEME_SERVER_URL',\n TKIT_TOKEN_ROLE_CLAIM_NAME = 'TKIT_TOKEN_ROLE_CLAIM_NAME',\n TKIT_PORTAL_ID = 'TKIT_PORTAL_ID',\n TKIT_SUPPORTED_LANGUAGES = 'TKIT_SUPPORTED_LANGUAGES',\n TKIT_SEARCH_BASE_URL = 'TKIT_SEARCH_BASE_URL',\n APP_BASE_HREF = 'APP_BASE_HREF',\n KEYCLOAK_REALM = 'KEYCLOAK_REALM',\n KEYCLOAK_ENABLE_SILENT_SSO = 'KEYCLOAK_ENABLE_SILENT_SSO',\n KEYCLOAK_URL = 'KEYCLOAK_URL',\n KEYCLOAK_CLIENT_ID = 'KEYCLOAK_CLIENT_ID',\n ONECX_PORTAL_FAVORITES_DISABLED = 'ONECX_PORTAL_FAVORITES_DISABLED',\n ONECX_PORTAL_FEEDBACK_DISABLED = 'ONECX_PORTAL_FEEDBACK_DISABLED',\n ONECX_PORTAL_SEARCH_DISABLED = 'ONECX_PORTAL_SEARCH_DISABLED',\n ONECX_PORTAL_SUPPORT_TICKET_DISABLED = 'ONECX_PORTAL_SUPPORT_TICKET_DISABLED',\n ONECX_PORTAL_ANNOUNCEMENTS_DISABLED = 'ONECX_PORTAL_ANNOUNCEMENTS_DISABLED',\n ONECX_PORTAL_PASSWORD_CHANGE_DISABLED = 'ONECX_PORTAL_PASSWORD_CHANGE_DISABLED',\n ONECX_PORTAL_SETTINGS_DISABLED = 'ONECX_PORTAL_SETTINGS_DISABLED',\n ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED = 'ONECX_PORTAL_MY_ROLES_PERMISSIONS_DISABLED',\n ONECX_PORTAL_HELP_DISABLED = 'ONECX_PORTAL_HELP_DISABLED',\n APP_VERSION = 'APP_VERSION',\n IS_SHELL = 'IS_SHELL',\n AUTH_SERVICE = 'AUTH_SERVICE',\n AUTH_SERVICE_CUSTOM_URL = 'AUTH_SERVICE_CUSTOM_URL',\n AUTH_SERVICE_CUSTOM_MODULE_NAME = 'AUTH_SERVICE_CUSTOM_MODULE_NAME',\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Inject, Injectable, OnDestroy, Optional } from '@angular/core'\nimport { firstValueFrom } from 'rxjs'\nimport { Config, ConfigurationTopic } from '@onecx/integration-interface'\nimport { APP_CONFIG } from '../api/injection-tokens'\nimport { CONFIG_KEY } from '../model/config-key.model'\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements OnDestroy {\n config$ = new ConfigurationTopic()\n\n constructor(\n private http: HttpClient,\n @Optional() @Inject(APP_CONFIG) private defaultConfig?: { [key: string]: string }\n ) {}\n\n ngOnDestroy(): void {\n this.config$.destroy()\n }\n\n public init(): Promise<boolean> {\n return new Promise((resolve, reject) => {\n const skipRemoteConfigLoad = this.defaultConfig && this.defaultConfig['skipRemoteConfigLoad']\n let loadConfigPromise: Promise<Config>\n\n const inlinedConfig = (window as typeof window & { APP_CONFIG: Config })['APP_CONFIG']\n if (inlinedConfig) {\n console.log(`ENV resolved from injected config`)\n loadConfigPromise = Promise.resolve(inlinedConfig)\n } else {\n if (skipRemoteConfigLoad) {\n console.log(\n '📢 TKA001: Remote config load is disabled. To enable it, remove the \"skipRemoteConfigLoad\" key in your environment.json'\n )\n loadConfigPromise = Promise.resolve(this.defaultConfig || {})\n } else {\n loadConfigPromise = firstValueFrom(\n this.http.get<Config>((this.defaultConfig && this.defaultConfig['remoteConfigURL']) || 'assets/env.json')\n )\n }\n }\n\n loadConfigPromise\n .then(async (config) => {\n if (config) {\n await this.config$.publish({ ...this.defaultConfig, ...config }).then(() => {\n resolve(true)\n })\n }\n })\n .catch((e) => {\n console.log(`Failed to load env configuration`)\n reject(e)\n })\n })\n }\n\n get isInitialized(): Promise<void> {\n return this.config$.isInitialized\n }\n\n public getProperty(key: CONFIG_KEY): string | undefined {\n if (!Object.values(CONFIG_KEY).includes(key)) {\n console.error('Invalid config key ', key)\n }\n return this.config$.getValue()?.[key]\n }\n\n public async setProperty(key: string, val: string) {\n const currentValues = await firstValueFrom(this.config$.asObservable())\n currentValues[key] = val\n await this.config$.publish(currentValues)\n }\n\n public getConfig(): Config | undefined {\n return this.config$.getValue()\n }\n}\n","export const API_PREFIX = 'portal-api'\n\nexport const DEFAULT_LANG = 'en'\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { BehaviorSubject, map, filter, firstValueFrom, skip } from 'rxjs'\nimport { PermissionsTopic, UserProfile, UserProfileTopic } from '@onecx/integration-interface'\nimport { DEFAULT_LANG } from '../api/constants'\n\n@Injectable({ providedIn: 'root' })\nexport class UserService implements OnDestroy {\n profile$ = new UserProfileTopic()\n permissions$ = new BehaviorSubject<string[]>([])\n lang$ = new BehaviorSubject(this.determineLanguage() ?? DEFAULT_LANG)\n\n private permissionsTopic$ = new PermissionsTopic()\n private oldStylePermissionsInitialized: Promise<string[]>\n\n constructor() {\n this.profile$\n .pipe(\n map(\n (profile) =>\n profile.accountSettings?.localeAndTimeSettings?.locale ?? this.determineLanguage() ?? DEFAULT_LANG\n )\n )\n .subscribe(this.lang$)\n\n this.oldStylePermissionsInitialized = firstValueFrom(this.permissions$.pipe(skip(1)))\n this.profile$\n .pipe(\n map((profile) => this.extractPermissions(profile)),\n filter((permissions): permissions is string[] => !!permissions)\n )\n .subscribe(this.permissions$)\n }\n\n ngOnDestroy(): void {\n this.profile$.destroy()\n }\n\n hasPermission(permissionKey: string): boolean {\n const oldConceptResult = this.permissions$.getValue()\n ? this.permissions$.getValue()?.includes(permissionKey)\n : false\n const result = this.permissionsTopic$.getValue()\n ? this.permissionsTopic$.getValue()?.includes(permissionKey)\n : oldConceptResult\n\n if (!result) {\n console.log(`👮‍♀️ No permission for: ${permissionKey}`)\n }\n return !!result\n }\n\n private determineLanguage(): string | undefined {\n if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\n return undefined\n }\n\n let browserLang: any = window.navigator.languages ? window.navigator.languages[0] : null\n browserLang = browserLang || window.navigator.language\n\n if (typeof browserLang === 'undefined') {\n return undefined\n }\n\n if (browserLang.indexOf('-') !== -1) {\n browserLang = browserLang.split('-')[0]\n }\n\n if (browserLang.indexOf('_') !== -1) {\n browserLang = browserLang.split('_')[0]\n }\n\n return browserLang\n }\n\n private extractPermissions(userProfile: UserProfile) {\n if (userProfile) {\n if (userProfile.memberships) {\n const permissions: string[] = []\n userProfile.memberships.forEach((m) => {\n m.roleMemberships?.forEach((r) => {\n r.permissions?.forEach((p) => {\n if (p) {\n if (p.key !== undefined) {\n permissions.push(p.key)\n }\n }\n })\n })\n })\n return permissions\n }\n }\n return null\n }\n\n get isInitialized(): Promise<void> {\n return Promise.all([\n Promise.race([this.permissionsTopic$.isInitialized, this.oldStylePermissionsInitialized]),\n this.profile$.isInitialized,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ]).then(() => {})\n }\n}\n","import { Injectable } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { combineLatest, of } from 'rxjs'\nimport { MessageTopic } from '@onecx/integration-interface'\n\nexport type Message = {\n summaryKey?: string\n summaryParameters?: object\n detailKey?: string\n detailParameters?: object\n id?: any\n key?: string\n life?: number\n sticky?: boolean\n closable?: boolean\n data?: any\n icon?: string\n contentStyleClass?: string\n styleClass?: string\n}\n\n@Injectable({ providedIn: 'any' })\nexport class PortalMessageService {\n constructor(private translateService: TranslateService) {}\n\n message$ = new MessageTopic()\n\n success(msg: Message) {\n this.addTranslated('success', msg)\n }\n\n info(msg: Message) {\n this.addTranslated('info', msg)\n }\n\n error(msg: Message) {\n this.addTranslated('error', msg)\n }\n\n warning(msg: Message) {\n this.addTranslated('warning', msg)\n }\n\n private addTranslated(severity: string, msg: Message) {\n combineLatest([\n msg.summaryKey ? this.translateService.get(msg.summaryKey || '', msg.summaryParameters) : of(undefined),\n msg.detailKey ? this.translateService.get(msg.detailKey, msg.detailParameters) : of(undefined),\n ]).subscribe(([summaryTranslation, detailTranslation]: string[]) => {\n this.message$.publish({\n ...msg,\n severity: severity,\n summary: summaryTranslation,\n detail: detailTranslation,\n })\n })\n }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Injectable, OnDestroy } from '@angular/core'\nimport { from, map, mergeMap } from 'rxjs'\nimport { CurrentThemeTopic, Theme } from '@onecx/integration-interface'\nimport { ConfigurationService } from './configuration.service'\nimport { CONFIG_KEY } from '../model/config-key.model'\n\nconst defaultThemeServerUrl = 'http://portal-theme-management:8080'\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService implements OnDestroy {\n baseUrlV1 = './portal-api'\n currentTheme$ = new CurrentThemeTopic()\n\n constructor(private configService: ConfigurationService, private http: HttpClient) {}\n\n getThemeHref(themeId: string): string {\n const themeServerUrl =\n this.configService.getProperty(CONFIG_KEY.TKIT_PORTAL_THEME_SERVER_URL) || defaultThemeServerUrl\n return `${themeServerUrl}/themes/${themeId}/${themeId}.min.css`\n }\n\n public loadAndApplyTheme(themeName: string) {\n return this.http.get<Theme>(`${this.baseUrlV1}/internal/themes/${encodeURI(themeName)}`).pipe(\n mergeMap((theme) => {\n return from(this.apply(theme)).pipe(map(() => theme))\n })\n )\n }\n\n public async apply(theme: Theme): Promise<void> {\n console.log(`🎨 Applying theme: ${theme.name}`)\n await this.currentTheme$.publish(theme)\n if (theme.properties) {\n Object.values(theme.properties).forEach((group) => {\n for (const [key, value] of Object.entries(group)) {\n document.documentElement.style.setProperty(`--${key}`, value)\n }\n })\n }\n }\n\n ngOnDestroy(): void {\n this.currentTheme$.destroy()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { RemoteComponentsTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class RemoteComponentsService implements OnDestroy {\n remoteComponents$ = new RemoteComponentsTopic()\n\n ngOnDestroy(): void {\n this.remoteComponents$.destroy()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { filter, from, isObservable, map, mergeMap, Observable, of, tap, zip } from 'rxjs'\nimport { AppStateService } from './app-state.service';\nimport { ConfigurationService } from './configuration.service';\nimport { UserService } from './user.service';\n\n@Injectable({ providedIn: 'any' })\nexport class InitializeModuleGuard implements CanActivate {\n private SUPPORTED_LANGS = ['en', 'de']\n private DEFAULT_LANG = 'en'\n constructor(\n protected translateService: TranslateService,\n protected configService: ConfigurationService,\n protected appStateService: AppStateService,\n protected userService: UserService\n ) {}\n\n canActivate(\n _route: ActivatedRouteSnapshot,\n _state: RouterStateSnapshot\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n console.time('InitializeModuleGuard')\n return zip([\n this.loadTranslations(),\n from(this.configService.isInitialized),\n from(this.userService.isInitialized),\n from(this.appStateService.currentWorkspace$.isInitialized),\n ]).pipe(\n tap(() => {\n console.timeEnd('InitializeModuleGuard')\n }),\n map(() => true)\n )\n }\n\n getBestMatchLanguage(lang: string) {\n if (this.SUPPORTED_LANGS.includes(lang)) {\n return lang\n } else {\n console.log(`${lang} is not supported. Using ${this.DEFAULT_LANG} as a fallback.`)\n }\n return this.DEFAULT_LANG\n }\n\n loadTranslations(): Observable<boolean> {\n return this.userService.lang$.pipe(\n filter((v) => v !== undefined),\n mergeMap((lang) => {\n const bestMatchLang = this.getBestMatchLanguage(lang as string)\n return this.translateService.use(bestMatchLang)\n }),\n mergeMap(() => of(true))\n )\n }\n\n protected toObservable(\n canActivateResult: Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree\n ): Observable<boolean | UrlTree> {\n if (isObservable(canActivateResult)) {\n return canActivateResult\n }\n return from(Promise.resolve(canActivateResult))\n }\n}\n","import { Injectable } from '@angular/core'\nimport { AppStateService } from './app-state.service'\nimport { Observable, map } from 'rxjs'\nimport { Route } from '@onecx/integration-interface'\nimport { Endpoint } from '@onecx/integration-interface'\nimport { Location } from '@angular/common'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkspaceService {\n private aliasStart = '[['\n private aliasEnd = ']]'\n private paramStart = '{'\n private paramEnd = '}'\n\n constructor(protected appStateService: AppStateService) {}\n\n getUrl(\n appId: string,\n productName: string,\n endpointName: string,\n params: Record<string, unknown> = {}\n ): Observable<string> {\n return this.appStateService.currentWorkspace$.pipe(\n map((workspace) => {\n const finalUrl = this.constructRouteUrl(workspace, appId, productName, endpointName, params)\n return finalUrl\n })\n )\n }\n\n private constructBaseUrlFromWorkspace(workspace: any): string {\n if (workspace.baseUrl === undefined) {\n console.log('WARNING: There was no baseUrl for received workspace.')\n return ''\n }\n return workspace.baseUrl\n }\n\n private constructRouteUrl(\n workspace: any,\n appId: string,\n productName: string,\n endpointName: string,\n params: Record<string, unknown>\n ): string {\n const route = this.filterRouteFromList(workspace.routes, appId, productName)\n let url = this.constructBaseUrlFromWorkspace(workspace)\n if (!route) {\n console.log(\n `WARNING: No route.baseUrl could be found for given appId \"${appId}\" and productName \"${productName}\"`\n )\n\n return url\n }\n\n if (route.baseUrl !== undefined && route.baseUrl.length > 0) {\n url = route.baseUrl\n }\n\n url = Location.joinWithSlash(url, this.constructEndpointUrl(route, endpointName, params))\n return url\n }\n\n private constructEndpointUrl(route: any, endpointName: string, params: Record<string, unknown>): string {\n if (!route.endpoints) {\n return ''\n }\n const finalEndpoint = this.dissolveEndpoint(endpointName, route.endpoints)\n if (!finalEndpoint || finalEndpoint.path === undefined) {\n console.log('WARNING: No endpoint or endpoint.path could be found')\n return ''\n }\n\n const paramsFilled = this.fillParamsForPath(finalEndpoint.path, params)\n if (paramsFilled === undefined) {\n console.log('WARNING: Params could not be filled correctly')\n return ''\n }\n\n return paramsFilled\n }\n\n private filterRouteFromList(routes: Array<Route>, appId: string, productName: string): Route | undefined {\n if (!routes) {\n return undefined\n }\n\n const productRoutes = routes.filter((route) => route.appId === appId && route.productName === productName)\n\n if (productRoutes.length === 0) {\n return undefined\n }\n\n if (productRoutes.length > 1) {\n console.log('WARNING: There were more than one route. First route has been used.')\n }\n\n return productRoutes[0]\n }\n\n private dissolveEndpoint(endpointName: string, endpoints: Array<Endpoint>): Endpoint | undefined {\n let endpoint = endpoints.find((ep) => ep.name === endpointName)\n\n if (!endpoint) {\n return undefined\n }\n\n while (endpoint.path?.includes(this.aliasStart)) {\n const path: string = endpoint.path\n const startIdx = path.indexOf(this.aliasStart) + this.aliasStart.length\n const endIdx = path.lastIndexOf(this.aliasEnd)\n if (endIdx <= startIdx) {\n return undefined\n }\n const aliasName = path.substring(startIdx, endIdx)\n endpoint = endpoints.find((ep) => ep.name === aliasName)\n\n if (!endpoint) {\n return undefined\n }\n }\n\n return endpoint\n }\n\n private fillParamsForPath(path: string, params: Record<string, unknown>): string {\n while (path.includes(this.paramStart)) {\n const paramName = path.substring(\n path.indexOf(this.paramStart) + this.paramStart.length,\n path.indexOf(this.paramEnd)\n )\n const paramValue = this.getStringFromUnknown(params[paramName])\n if (paramValue != undefined && paramValue.length > 0) {\n path = path.replace(this.paramStart.concat(paramName).concat(this.paramEnd), paramValue)\n } else {\n console.log(`WARNING: Searched param \"${paramName}\" was not found in given param list `)\n return ''\n }\n }\n return path\n }\n\n private getStringFromUnknown(value: unknown): string {\n if (value === null || value === undefined) {\n return ''\n } else if (typeof value === 'string') {\n return value\n } else {\n return String(value)\n }\n }\n}\n","import { CanActivateFn, Route } from '@angular/router'\nimport { InitializeModuleGuard } from '../services/initialize-module-guard.service'\n\nexport function addInitializeModuleGuard(\n routes: Route[],\n initializeModuleGuard: typeof InitializeModuleGuard | CanActivateFn = InitializeModuleGuard\n): Route[] {\n return routes.map((r) => {\n if (r.redirectTo) {\n return r\n }\n const route = {\n canActivate: [],\n ...r,\n }\n if (!route.canActivate.includes(initializeModuleGuard)) {\n route.canActivate.push(initializeModuleGuard)\n }\n return route\n })\n}","// services\nexport * from './lib/services/app-state.service'\nexport * from './lib/services/configuration.service'\nexport * from './lib/services/user.service'\nexport * from './lib/services/portal-message.service'\nexport * from './lib/services/theme.service'\nexport * from './lib/services/remote-components.service'\nexport * from './lib/services/initialize-module-guard.service'\nexport * from './lib/services/workspace.service'\n\n// models\nexport * from './lib/model/config-key.model'\n\n// core\nexport * from './lib/api/iauth.service'\nexport * from './lib/api/injection-tokens'\n\n// utils\nexport * from './lib/utils/add-initialize-module-guard.utils'\n\nexport { MfeInfo, Theme } from '@onecx/integration-interface'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.ConfigurationService","i2","i2.ConfigurationService","i3.AppStateService","i4.UserService","i1.AppStateService"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -5,6 +5,7 @@ export * from './lib/services/portal-message.service';
5
5
  export * from './lib/services/theme.service';
6
6
  export * from './lib/services/remote-components.service';
7
7
  export * from './lib/services/initialize-module-guard.service';
8
+ export * from './lib/services/workspace.service';
8
9
  export * from './lib/model/config-key.model';
9
10
  export * from './lib/api/iauth.service';
10
11
  export * from './lib/api/injection-tokens';
@@ -0,0 +1,21 @@
1
+ import { AppStateService } from './app-state.service';
2
+ import { Observable } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export declare class WorkspaceService {
5
+ protected appStateService: AppStateService;
6
+ private aliasStart;
7
+ private aliasEnd;
8
+ private paramStart;
9
+ private paramEnd;
10
+ constructor(appStateService: AppStateService);
11
+ getUrl(appId: string, productName: string, endpointName: string, params?: Record<string, unknown>): Observable<string>;
12
+ private constructBaseUrlFromWorkspace;
13
+ private constructRouteUrl;
14
+ private constructEndpointUrl;
15
+ private filterRouteFromList;
16
+ private dissolveEndpoint;
17
+ private fillParamsForPath;
18
+ private getStringFromUnknown;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceService, never>;
20
+ static ɵprov: i0.ɵɵInjectableDeclaration<WorkspaceService>;
21
+ }
@@ -5,14 +5,14 @@ import * as i0 from "@angular/core";
5
5
  /**
6
6
  * @deprecated use provideAppStateServiceMock()
7
7
  */
8
- export declare function provideAppServiceMock(): {
8
+ export declare function provideAppServiceMock(): (typeof AppStateServiceMock | {
9
9
  provide: typeof AppStateService;
10
- useClass: typeof AppStateServiceMock;
11
- }[];
12
- export declare function provideAppStateServiceMock(): {
10
+ useExisting: typeof AppStateServiceMock;
11
+ })[];
12
+ export declare function provideAppStateServiceMock(): (typeof AppStateServiceMock | {
13
13
  provide: typeof AppStateService;
14
- useClass: typeof AppStateServiceMock;
15
- }[];
14
+ useExisting: typeof AppStateServiceMock;
15
+ })[];
16
16
  export declare class AppStateServiceMock {
17
17
  globalError$: FakeTopic<unknown>;
18
18
  globalLoading$: FakeTopic<boolean>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onecx/angular-integration-interface",
3
- "version": "4.42.0",
3
+ "version": "4.43.0",
4
4
  "peerDependencies": {
5
5
  "@angular/core": "^15.2.7",
6
6
  "@onecx/integration-interface": "~4",