@onecx/angular-integration-interface 6.0.0-rc.9 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,19 +30,13 @@ class AppConfigServiceMock {
30
30
  getConfig() {
31
31
  return this.config$.getValue();
32
32
  }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppConfigServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppConfigServiceMock }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppConfigServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppConfigServiceMock }); }
35
35
  }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppConfigServiceMock, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppConfigServiceMock, decorators: [{
37
37
  type: Injectable
38
38
  }] });
39
39
 
40
- /**
41
- * @deprecated use provideAppStateServiceMock()
42
- */
43
- function provideAppServiceMock() {
44
- return provideAppStateServiceMock();
45
- }
46
40
  function provideAppStateServiceMock() {
47
41
  return [AppStateServiceMock, { provide: AppStateService, useExisting: AppStateServiceMock }];
48
42
  }
@@ -50,7 +44,14 @@ class AppStateServiceMock {
50
44
  constructor() {
51
45
  this.globalError$ = new FakeTopic();
52
46
  this.globalLoading$ = new FakeTopic(false);
53
- this.currentMfe$ = new FakeTopic({ mountPath: '/', remoteBaseUrl: '.', baseHref: '/', shellName: 'test', appId: 'test', productName: 'test' });
47
+ this.currentMfe$ = new FakeTopic({
48
+ mountPath: '/',
49
+ remoteBaseUrl: '.',
50
+ baseHref: '/',
51
+ shellName: 'test',
52
+ appId: 'test',
53
+ productName: 'test',
54
+ });
54
55
  this.currentPage$ = new FakeTopic(undefined);
55
56
  this.currentPortal$ = new FakeTopic({
56
57
  baseUrl: '/',
@@ -70,10 +71,10 @@ class AppStateServiceMock {
70
71
  });
71
72
  this.isAuthenticated$ = new FakeTopic(null);
72
73
  }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppStateServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
74
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppStateServiceMock }); }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppStateServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
75
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppStateServiceMock }); }
75
76
  }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppStateServiceMock, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppStateServiceMock, decorators: [{
77
78
  type: Injectable
78
79
  }] });
79
80
 
@@ -82,7 +83,7 @@ function provideConfigurationServiceMock() {
82
83
  }
83
84
  class ConfigurationServiceMock {
84
85
  constructor() {
85
- this.config$ = new FakeTopic();
86
+ this.config$ = new FakeTopic({});
86
87
  this.isInitializedPromise = new Promise((resolve) => {
87
88
  this.resolveInitPromise = resolve;
88
89
  });
@@ -97,11 +98,7 @@ class ConfigurationServiceMock {
97
98
  return this.isInitializedPromise;
98
99
  }
99
100
  getProperty(key) {
100
- const config = this.config$.getValue();
101
- if (config && typeof config[key] === 'string') {
102
- return config[key];
103
- }
104
- return undefined;
101
+ return firstValueFrom(this.config$.asObservable()).then((config) => config[key]);
105
102
  }
106
103
  async setProperty(key, val) {
107
104
  const currentValues = await firstValueFrom(this.config$.asObservable());
@@ -109,12 +106,12 @@ class ConfigurationServiceMock {
109
106
  await this.config$.publish(currentValues);
110
107
  }
111
108
  getConfig() {
112
- return this.config$.getValue();
109
+ return firstValueFrom(this.config$.asObservable());
113
110
  }
114
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ConfigurationServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
115
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ConfigurationServiceMock, providedIn: 'root' }); }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ConfigurationServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
112
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ConfigurationServiceMock, providedIn: 'root' }); }
116
113
  }
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ConfigurationServiceMock, decorators: [{
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ConfigurationServiceMock, decorators: [{
118
115
  type: Injectable,
119
116
  args: [{ providedIn: 'root' }]
120
117
  }], ctorParameters: () => [] });
@@ -145,10 +142,10 @@ class PortalMessageServiceMock {
145
142
  severity: severity,
146
143
  });
147
144
  }
148
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: PortalMessageServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
149
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: PortalMessageServiceMock, providedIn: 'any' }); }
145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PortalMessageServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
146
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PortalMessageServiceMock, providedIn: 'any' }); }
150
147
  }
151
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: PortalMessageServiceMock, decorators: [{
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PortalMessageServiceMock, decorators: [{
152
149
  type: Injectable,
153
150
  args: [{ providedIn: 'any' }]
154
151
  }] });
@@ -160,10 +157,10 @@ class RemoteComponentsServiceMock {
160
157
  constructor() {
161
158
  this.remoteComponents$ = new FakeTopic();
162
159
  }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RemoteComponentsServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
164
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RemoteComponentsServiceMock, providedIn: 'root' }); }
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RemoteComponentsServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
161
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RemoteComponentsServiceMock, providedIn: 'root' }); }
165
162
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RemoteComponentsServiceMock, decorators: [{
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RemoteComponentsServiceMock, decorators: [{
167
164
  type: Injectable,
168
165
  args: [{ providedIn: 'root' }]
169
166
  }] });
@@ -174,14 +171,18 @@ function provideUserServiceMock() {
174
171
  class UserServiceMock {
175
172
  constructor() {
176
173
  this.profile$ = new FakeTopic();
177
- this.permissions$ = new BehaviorSubject(['mocked-permission']);
174
+ this.permissionsTopic$ = new FakeTopic(['mocked-permission']);
178
175
  this.lang$ = new BehaviorSubject('en');
179
176
  }
180
- hasPermission(permissionKey) {
177
+ async hasPermission(permissionKey) {
181
178
  if (Array.isArray(permissionKey)) {
182
- return permissionKey.every((key) => this.permissions$.getValue().includes(key));
179
+ return permissionKey.every(async (key) => await this.hasPermission(key));
180
+ }
181
+ const result = this.permissionsTopic$.getValue()?.includes(permissionKey);
182
+ if (!result) {
183
+ console.log(`👮‍♀️ No permission for: ${permissionKey}`);
183
184
  }
184
- return this.permissions$.getValue().includes(permissionKey);
185
+ return !!result;
185
186
  }
186
187
  determineLanguage() {
187
188
  return 'mocked-lang';
@@ -193,10 +194,10 @@ class UserServiceMock {
193
194
  get isInitialized() {
194
195
  return Promise.resolve();
195
196
  }
196
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: UserServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
197
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: UserServiceMock, providedIn: 'root' }); }
197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
198
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserServiceMock, providedIn: 'root' }); }
198
199
  }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: UserServiceMock, decorators: [{
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserServiceMock, decorators: [{
200
201
  type: Injectable,
201
202
  args: [{ providedIn: 'root' }]
202
203
  }] });
@@ -212,10 +213,10 @@ class ShellCapabilityServiceMock {
212
213
  hasCapability(capability) {
213
214
  return ShellCapabilityServiceMock.capabilities?.includes(capability) ?? false;
214
215
  }
215
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ShellCapabilityServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
216
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ShellCapabilityServiceMock }); }
216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShellCapabilityServiceMock, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
217
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShellCapabilityServiceMock }); }
217
218
  }
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ShellCapabilityServiceMock, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShellCapabilityServiceMock, decorators: [{
219
220
  type: Injectable
220
221
  }] });
221
222
 
@@ -223,5 +224,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
223
224
  * Generated bundle index. Do not edit.
224
225
  */
225
226
 
226
- export { AppConfigServiceMock, AppStateServiceMock, ConfigurationServiceMock, PortalMessageServiceMock, RemoteComponentsServiceMock, ShellCapabilityServiceMock, UserServiceMock, provideAppConfigServiceMock, provideAppServiceMock, provideAppStateServiceMock, provideConfigurationServiceMock, providePortalMessageServiceMock, provideRemoteComponentsServiceMock, provideShellCapabilityServiceMock, provideUserServiceMock };
227
+ export { AppConfigServiceMock, AppStateServiceMock, ConfigurationServiceMock, PortalMessageServiceMock, RemoteComponentsServiceMock, ShellCapabilityServiceMock, UserServiceMock, provideAppConfigServiceMock, provideAppStateServiceMock, provideConfigurationServiceMock, providePortalMessageServiceMock, provideRemoteComponentsServiceMock, provideShellCapabilityServiceMock, provideUserServiceMock };
227
228
  //# sourceMappingURL=onecx-angular-integration-interface-mocks.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"onecx-angular-integration-interface-mocks.mjs","sources":["../../../../libs/angular-integration-interface/mocks/app-config-service-mock.ts","../../../../libs/angular-integration-interface/mocks/app-state-service-mock.ts","../../../../libs/angular-integration-interface/mocks/configuration-service-mock.ts","../../../../libs/angular-integration-interface/mocks/portal-message-service-mock.ts","../../../../libs/angular-integration-interface/mocks/remote-components-service-mock.ts","../../../../libs/angular-integration-interface/mocks/user-service-mock.ts","../../../../libs/angular-integration-interface/mocks/shell-capability-service-mock.ts","../../../../libs/angular-integration-interface/mocks/onecx-angular-integration-interface-mocks.ts"],"sourcesContent":["import { Injectable } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { Config } from '@onecx/integration-interface'\nimport { AppConfigService } from '@onecx/angular-integration-interface'\n\nexport function provideAppConfigServiceMock() {\n return [AppConfigServiceMock, { provide: AppConfigService, useExisting: AppConfigServiceMock }]\n}\n@Injectable()\nexport class AppConfigServiceMock {\n config$ = new BehaviorSubject<{ [key: string]: string }>({})\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public init(baseUrl: string): Promise<void> {\n return new Promise((resolve) => {\n const mockConfig: Config = { key: 'config' }\n this.config$.next(mockConfig)\n resolve()\n })\n }\n\n public getProperty(key: string): string | undefined {\n return this.config$.getValue()?.[key]\n }\n\n public setProperty(key: string, val: string) {\n this.config$.next({ ...this.config$.value, [key]: val })\n }\n\n public getConfig(): { [key: string]: string } {\n return this.config$.getValue()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { CurrentLocationTopicPayload, MfeInfo, PageInfo, Workspace } from '@onecx/integration-interface'\n// eslint-disable-next-line\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from '@onecx/accelerator'\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<MfeInfo>({ mountPath: '/', remoteBaseUrl: '.', baseHref: '/', shellName: 'test', appId: 'test', productName: 'test' })\n currentPage$ = new FakeTopic<PageInfo | undefined>(undefined)\n currentPortal$ = new FakeTopic<Workspace>({\n baseUrl: '/',\n microfrontendRegistrations: [],\n portalName: 'Test portal',\n workspaceName: 'Test portal',\n })\n currentWorkspace$ = new FakeTopic<Workspace>({\n baseUrl: '/',\n microfrontendRegistrations: [],\n portalName: 'Test workspace',\n workspaceName: 'Test workspace',\n })\n currentLocation$ = new FakeTopic<CurrentLocationTopicPayload>({\n url: '/',\n isFirst: true,\n })\n isAuthenticated$ = new FakeTopic<null>(null)\n}\n","import { Injectable } from '@angular/core'\nimport { Config } from '@onecx/integration-interface'\nimport { CONFIG_KEY } from '@onecx/angular-integration-interface'\nimport { firstValueFrom } from 'rxjs/internal/firstValueFrom'\nimport { ConfigurationService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from '@onecx/accelerator'\n\nexport function provideConfigurationServiceMock() {\n return [ConfigurationServiceMock, { provide: ConfigurationService, useExisting: ConfigurationServiceMock }]\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationServiceMock {\n config$ = new FakeTopic<Config>()\n\n private resolveInitPromise!: (value: void | PromiseLike<void>) => void\n private isInitializedPromise: Promise<void>\n\n constructor() {\n this.isInitializedPromise = new Promise<void>((resolve) => {\n this.resolveInitPromise = resolve\n })\n }\n\n public init(config?: Config): Promise<boolean> {\n return this.config$.publish(config ?? {}).then(() => {\n this.resolveInitPromise()\n return true\n })\n }\n\n get isInitialized(): Promise<void> {\n return this.isInitializedPromise\n }\n\n public getProperty(key: CONFIG_KEY): string | undefined {\n const config = this.config$.getValue()\n if (config && typeof config[key] === 'string') {\n return config[key]\n }\n return undefined\n }\n\n public async setProperty(key: string, val: string): Promise<void> {\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","import { Injectable } from '@angular/core'\nimport { FakeTopic } from '@onecx/accelerator'\nimport { Message as PortalMessage, PortalMessageService } from '@onecx/angular-integration-interface'\nimport { Message } from '@onecx/integration-interface'\n\nexport function providePortalMessageServiceMock() {\n return [PortalMessageServiceMock, { provide: PortalMessageService, useExisting: PortalMessageServiceMock }]\n}\n@Injectable({ providedIn: 'any' })\nexport class PortalMessageServiceMock {\n message$ = new FakeTopic<Message>()\n\n success(msg: PortalMessage) {\n this.addTranslated('success', msg)\n }\n\n info(msg: PortalMessage) {\n this.addTranslated('info', msg)\n }\n\n error(msg: PortalMessage) {\n this.addTranslated('error', msg)\n }\n\n warning(msg: PortalMessage) {\n this.addTranslated('warning', msg)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private addTranslated(severity: string, msg: PortalMessage) {\n this.message$.publish({\n ...msg,\n severity: severity,\n })\n }\n}\n","import { Injectable } from '@angular/core'\nimport { RemoteComponentsInfo } from '@onecx/integration-interface'\nimport { RemoteComponentsService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from '@onecx/accelerator'\n\nexport function provideRemoteComponentsServiceMock() {\n return [RemoteComponentsServiceMock, { provide: RemoteComponentsService, useExisting: RemoteComponentsServiceMock }]\n}\n@Injectable({ providedIn: 'root' })\nexport class RemoteComponentsServiceMock {\n remoteComponents$ = new FakeTopic<RemoteComponentsInfo>()\n}\n","import { Injectable } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { UserProfile } from '@onecx/integration-interface'\nimport { FakeTopic } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\n\nexport function provideUserServiceMock() {\n return [UserServiceMock, { provide: UserService, useExisting: UserServiceMock }]\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UserServiceMock {\n profile$ = new FakeTopic<UserProfile>()\n permissions$ = new BehaviorSubject<string[]>(['mocked-permission'])\n lang$ = new BehaviorSubject('en')\n\n hasPermission(permissionKey: string | string[]): boolean {\n if (Array.isArray(permissionKey)) {\n return permissionKey.every((key) => this.permissions$.getValue().includes(key))\n }\n return this.permissions$.getValue().includes(permissionKey)\n }\n\n determineLanguage(): string | undefined {\n return 'mocked-lang'\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n extractPermissions(userProfile: UserProfile): string[] | null {\n return ['mocked-permission']\n }\n\n get isInitialized(): Promise<void> {\n return Promise.resolve()\n }\n}\n\nexport type MockUserService = UserServiceMock\n","import { Injectable } from '@angular/core'\nimport { Capability, ShellCapabilityService } from '@onecx/angular-integration-interface'\n\nexport function provideShellCapabilityServiceMock() {\n return [ShellCapabilityServiceMock, { provide: ShellCapabilityService, useExisting: ShellCapabilityServiceMock }]\n}\n\n@Injectable()\nexport class ShellCapabilityServiceMock {\n static capabilities: Capability[] = []\n\n static setCapabilities(capabilities: Capability[]): void {\n ShellCapabilityServiceMock.capabilities = capabilities\n }\n\n hasCapability(capability: Capability): boolean {\n return ShellCapabilityServiceMock.capabilities?.includes(capability) ?? false\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onecx-angular-integration-interface-mocks.mjs","sources":["../../../../libs/angular-integration-interface/mocks/app-config-service-mock.ts","../../../../libs/angular-integration-interface/mocks/app-state-service-mock.ts","../../../../libs/angular-integration-interface/mocks/configuration-service-mock.ts","../../../../libs/angular-integration-interface/mocks/portal-message-service-mock.ts","../../../../libs/angular-integration-interface/mocks/remote-components-service-mock.ts","../../../../libs/angular-integration-interface/mocks/user-service-mock.ts","../../../../libs/angular-integration-interface/mocks/shell-capability-service-mock.ts","../../../../libs/angular-integration-interface/mocks/onecx-angular-integration-interface-mocks.ts"],"sourcesContent":["import { Injectable } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { Config } from '@onecx/integration-interface'\nimport { AppConfigService } from '@onecx/angular-integration-interface'\n\nexport function provideAppConfigServiceMock() {\n return [AppConfigServiceMock, { provide: AppConfigService, useExisting: AppConfigServiceMock }]\n}\n@Injectable()\nexport class AppConfigServiceMock {\n config$ = new BehaviorSubject<{ [key: string]: string }>({})\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public init(baseUrl: string): Promise<void> {\n return new Promise((resolve) => {\n const mockConfig: Config = { key: 'config' }\n this.config$.next(mockConfig)\n resolve()\n })\n }\n\n public getProperty(key: string): string | undefined {\n return this.config$.getValue()?.[key]\n }\n\n public setProperty(key: string, val: string) {\n this.config$.next({ ...this.config$.value, [key]: val })\n }\n\n public getConfig(): { [key: string]: string } {\n return this.config$.getValue()\n }\n}\n","import { Injectable } from '@angular/core'\nimport { CurrentLocationTopicPayload, MfeInfo, PageInfo, Workspace } from '@onecx/integration-interface'\n// eslint-disable-next-line\nimport { AppStateService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from '@onecx/accelerator'\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<MfeInfo>({\n mountPath: '/',\n remoteBaseUrl: '.',\n baseHref: '/',\n shellName: 'test',\n appId: 'test',\n productName: 'test',\n })\n currentPage$ = new FakeTopic<PageInfo | undefined>(undefined)\n currentPortal$ = new FakeTopic<Workspace>({\n baseUrl: '/',\n microfrontendRegistrations: [],\n portalName: 'Test portal',\n workspaceName: 'Test portal',\n })\n currentWorkspace$ = new FakeTopic<Workspace>({\n baseUrl: '/',\n microfrontendRegistrations: [],\n portalName: 'Test workspace',\n workspaceName: 'Test workspace',\n })\n currentLocation$ = new FakeTopic<CurrentLocationTopicPayload>({\n url: '/',\n isFirst: true,\n })\n isAuthenticated$ = new FakeTopic<null>(null)\n}\n","import { Injectable } from '@angular/core'\nimport { Config } from '@onecx/integration-interface'\nimport { CONFIG_KEY } from '@onecx/angular-integration-interface'\nimport { firstValueFrom } from 'rxjs/internal/firstValueFrom'\nimport { ConfigurationService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from '@onecx/accelerator'\n\nexport function provideConfigurationServiceMock() {\n return [ConfigurationServiceMock, { provide: ConfigurationService, useExisting: ConfigurationServiceMock }]\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationServiceMock {\n config$ = new FakeTopic<Config>({})\n\n private resolveInitPromise!: (value: void | PromiseLike<void>) => void\n private isInitializedPromise: Promise<void>\n\n constructor() {\n this.isInitializedPromise = new Promise<void>((resolve) => {\n this.resolveInitPromise = resolve\n })\n }\n\n public init(config?: Config): Promise<boolean> {\n return this.config$.publish(config ?? {}).then(() => {\n this.resolveInitPromise()\n return true\n })\n }\n\n get isInitialized(): Promise<void> {\n return this.isInitializedPromise\n }\n\n public getProperty(key: CONFIG_KEY): Promise<string | undefined> {\n return firstValueFrom(this.config$.asObservable()).then((config) => config[key])\n }\n\n public async setProperty(key: string, val: string): Promise<void> {\n const currentValues = await firstValueFrom(this.config$.asObservable())\n currentValues[key] = val\n await this.config$.publish(currentValues)\n }\n\n public getConfig(): Promise<Config | undefined> {\n return firstValueFrom(this.config$.asObservable())\n }\n}\n","import { Injectable } from '@angular/core'\nimport { FakeTopic } from '@onecx/accelerator'\nimport { Message as PortalMessage, PortalMessageService } from '@onecx/angular-integration-interface'\nimport { Message } from '@onecx/integration-interface'\n\nexport function providePortalMessageServiceMock() {\n return [PortalMessageServiceMock, { provide: PortalMessageService, useExisting: PortalMessageServiceMock }]\n}\n@Injectable({ providedIn: 'any' })\nexport class PortalMessageServiceMock {\n message$ = new FakeTopic<Message>()\n\n success(msg: PortalMessage) {\n this.addTranslated('success', msg)\n }\n\n info(msg: PortalMessage) {\n this.addTranslated('info', msg)\n }\n\n error(msg: PortalMessage) {\n this.addTranslated('error', msg)\n }\n\n warning(msg: PortalMessage) {\n this.addTranslated('warning', msg)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private addTranslated(severity: string, msg: PortalMessage) {\n this.message$.publish({\n ...msg,\n severity: severity,\n })\n }\n}\n","import { Injectable } from '@angular/core'\nimport { RemoteComponentsInfo } from '@onecx/integration-interface'\nimport { RemoteComponentsService } from '@onecx/angular-integration-interface'\nimport { FakeTopic } from '@onecx/accelerator'\n\nexport function provideRemoteComponentsServiceMock() {\n return [RemoteComponentsServiceMock, { provide: RemoteComponentsService, useExisting: RemoteComponentsServiceMock }]\n}\n@Injectable({ providedIn: 'root' })\nexport class RemoteComponentsServiceMock {\n remoteComponents$ = new FakeTopic<RemoteComponentsInfo>()\n}\n","import { Injectable } from '@angular/core'\nimport { BehaviorSubject } from 'rxjs'\nimport { UserProfile } from '@onecx/integration-interface'\nimport { FakeTopic } from '@onecx/accelerator'\nimport { UserService } from '@onecx/angular-integration-interface'\n\nexport function provideUserServiceMock() {\n return [UserServiceMock, { provide: UserService, useExisting: UserServiceMock }]\n}\n\n@Injectable({ providedIn: 'root' })\nexport class UserServiceMock {\n profile$ = new FakeTopic<UserProfile>()\n permissionsTopic$ = new FakeTopic<string[]>(['mocked-permission'])\n lang$ = new BehaviorSubject('en')\n\n async hasPermission(permissionKey: string | string[]): Promise<boolean> {\n if (Array.isArray(permissionKey)) {\n return permissionKey.every(async (key) => await this.hasPermission(key))\n }\n\n const result = this.permissionsTopic$.getValue()?.includes(permissionKey)\n if (!result) {\n console.log(`👮‍♀️ No permission for: ${permissionKey}`)\n }\n return !!result\n }\n\n determineLanguage(): string | undefined {\n return 'mocked-lang'\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n extractPermissions(userProfile: UserProfile): string[] | null {\n return ['mocked-permission']\n }\n\n get isInitialized(): Promise<void> {\n return Promise.resolve()\n }\n}\n\nexport type MockUserService = UserServiceMock\n","import { Injectable } from '@angular/core'\nimport { Capability, ShellCapabilityService } from '@onecx/angular-integration-interface'\n\nexport function provideShellCapabilityServiceMock() {\n return [ShellCapabilityServiceMock, { provide: ShellCapabilityService, useExisting: ShellCapabilityServiceMock }]\n}\n\n@Injectable()\nexport class ShellCapabilityServiceMock {\n static capabilities: Capability[] = []\n\n static setCapabilities(capabilities: Capability[]): void {\n ShellCapabilityServiceMock.capabilities = capabilities\n }\n\n hasCapability(capability: Capability): boolean {\n return ShellCapabilityServiceMock.capabilities?.includes(capability) ?? false\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { Location } from '@angular/common';
2
2
  import { HttpClient } from '@angular/common/http';
3
3
  import * as i0 from '@angular/core';
4
4
  import { inject, Injectable, InjectionToken } from '@angular/core';
5
- import { BehaviorSubject, firstValueFrom, map, skip, merge, filter, combineLatest, of, first, zip, from, tap, mergeMap, isObservable } from 'rxjs';
5
+ import { BehaviorSubject, firstValueFrom, map, combineLatest, of, first } from 'rxjs';
6
6
  import { GlobalErrorTopic, GlobalLoadingTopic, CurrentMfeTopic, CurrentLocationTopic, CurrentPageTopic, CurrentWorkspaceTopic, IsAuthenticatedTopic, ConfigurationTopic, UserProfileTopic, PermissionsTopic, MessageTopic, CurrentThemeTopic, RemoteComponentsTopic } from '@onecx/integration-interface';
7
7
  import Semaphore from 'ts-semaphore';
8
8
  import { TranslateService } from '@ngx-translate/core';
@@ -37,10 +37,10 @@ class AppConfigService {
37
37
  getConfig() {
38
38
  return this.config$.getValue();
39
39
  }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
41
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppConfigService }); }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
41
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppConfigService }); }
42
42
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppConfigService, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppConfigService, decorators: [{
44
44
  type: Injectable
45
45
  }] });
46
46
 
@@ -61,40 +61,24 @@ class AppStateService {
61
61
  */
62
62
  this.isAuthenticated$ = new IsAuthenticatedTopic();
63
63
  }
64
- /**
65
- * @deprecated Will be replaced by currentWorkspace$
66
- */
67
- get currentPortal$() {
68
- return this.currentWorkspace$;
69
- }
70
- set currentPortal$(value) {
71
- this.currentWorkspace$ = value;
72
- }
73
64
  ngOnDestroy() {
74
65
  this.globalError$.destroy();
75
66
  this.globalLoading$.destroy();
76
67
  this.currentMfe$.destroy();
77
68
  this.currentPage$.destroy();
78
- this.currentPortal$.destroy();
79
69
  this.currentLocation$.destroy();
80
70
  this.currentWorkspace$.destroy();
81
71
  this.isAuthenticated$.destroy();
82
72
  }
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
84
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppStateService, providedIn: 'root' }); }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
74
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppStateService, providedIn: 'root' }); }
85
75
  }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: AppStateService, decorators: [{
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppStateService, decorators: [{
87
77
  type: Injectable,
88
78
  args: [{ providedIn: 'root' }]
89
79
  }] });
90
80
 
91
81
  const APP_CONFIG = new InjectionToken('APP_CONFIG');
92
- /**
93
- * @deprecated
94
- * Please do not inject the auth service at all.
95
- * There are better ways to achieve what you want. Please use permission service or user service.
96
- */
97
- const AUTH_SERVICE = new InjectionToken('AUTH_SERVICE');
98
82
  const SANITY_CHECK = new InjectionToken('OCXSANITY_CHECK');
99
83
  const APPLICATION_NAME = new InjectionToken('APPLICATION_NAME');
100
84
 
@@ -127,7 +111,13 @@ var CONFIG_KEY;
127
111
  CONFIG_KEY["AUTH_SERVICE"] = "AUTH_SERVICE";
128
112
  CONFIG_KEY["AUTH_SERVICE_CUSTOM_URL"] = "AUTH_SERVICE_CUSTOM_URL";
129
113
  CONFIG_KEY["AUTH_SERVICE_CUSTOM_MODULE_NAME"] = "AUTH_SERVICE_CUSTOM_MODULE_NAME";
114
+ CONFIG_KEY["POLYFILL_SCOPE_MODE"] = "POLYFILL_SCOPE_MODE";
130
115
  })(CONFIG_KEY || (CONFIG_KEY = {}));
116
+ var POLYFILL_SCOPE_MODE;
117
+ (function (POLYFILL_SCOPE_MODE) {
118
+ POLYFILL_SCOPE_MODE["PERFORMANCE"] = "PERFORMANCE";
119
+ POLYFILL_SCOPE_MODE["PRECISION"] = "PRECISION";
120
+ })(POLYFILL_SCOPE_MODE || (POLYFILL_SCOPE_MODE = {}));
131
121
 
132
122
  class ConfigurationService {
133
123
  constructor() {
@@ -188,10 +178,10 @@ class ConfigurationService {
188
178
  async getConfig() {
189
179
  return firstValueFrom(this.config$.asObservable());
190
180
  }
191
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
192
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ConfigurationService, providedIn: 'root' }); }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ConfigurationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
182
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ConfigurationService, providedIn: 'root' }); }
193
183
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ConfigurationService, decorators: [{
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ConfigurationService, decorators: [{
195
185
  type: Injectable,
196
186
  args: [{ providedIn: 'root' }]
197
187
  }] });
@@ -202,38 +192,32 @@ const DEFAULT_LANG = 'en';
202
192
  class UserService {
203
193
  constructor() {
204
194
  this.profile$ = new UserProfileTopic();
205
- this.permissions$ = new BehaviorSubject([]);
206
195
  this.lang$ = new BehaviorSubject(this.determineLanguage() ?? DEFAULT_LANG);
207
196
  this.permissionsTopic$ = new PermissionsTopic();
208
197
  this.profile$
209
198
  .pipe(map((profile) => profile.accountSettings?.localeAndTimeSettings?.locale ?? this.determineLanguage() ?? DEFAULT_LANG))
210
199
  .subscribe(this.lang$);
211
- this.oldStylePermissionsInitialized = firstValueFrom(this.permissions$.pipe(skip(1)));
212
- this.effectivePermissions$ = merge(this.permissions$.pipe(skip(1)), this.permissionsTopic$.asObservable());
213
- this.profile$
214
- .pipe(map((profile) => this.extractPermissions(profile)), filter((permissions) => !!permissions))
215
- .subscribe(this.permissions$);
216
200
  }
217
201
  ngOnDestroy() {
218
202
  this.profile$.destroy();
219
203
  }
220
204
  getPermissions() {
221
- return this.effectivePermissions$;
205
+ return this.permissionsTopic$.asObservable();
222
206
  }
223
- hasPermission(permissionKey) {
207
+ async hasPermission(permissionKey) {
208
+ if (!permissionKey)
209
+ return true;
224
210
  if (Array.isArray(permissionKey)) {
225
- return permissionKey.every((key) => this.hasPermission(key));
226
- }
227
- const oldConceptResult = this.permissions$.getValue()
228
- ? this.permissions$.getValue()?.includes(permissionKey)
229
- : false;
230
- const result = this.permissionsTopic$.getValue()
231
- ? this.permissionsTopic$.getValue()?.includes(permissionKey)
232
- : oldConceptResult;
233
- if (!result) {
234
- console.log(`👮‍♀️ No permission for: ${permissionKey}`);
211
+ const permissions = await Promise.all(permissionKey.map((key) => this.hasPermission(key)));
212
+ return permissions.every((hasPermission) => hasPermission);
235
213
  }
236
- return !!result;
214
+ return firstValueFrom(this.permissionsTopic$.pipe(map((permissions) => {
215
+ const result = permissions.includes(permissionKey);
216
+ if (!result) {
217
+ console.log(`👮‍♀️ No permission for: ${permissionKey}`);
218
+ }
219
+ return !!result;
220
+ })));
237
221
  }
238
222
  determineLanguage() {
239
223
  if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {
@@ -252,37 +236,17 @@ class UserService {
252
236
  }
253
237
  return browserLang;
254
238
  }
255
- extractPermissions(userProfile) {
256
- if (userProfile) {
257
- if (userProfile.memberships) {
258
- const permissions = [];
259
- userProfile.memberships.forEach((m) => {
260
- m.roleMemberships?.forEach((r) => {
261
- r.permissions?.forEach((p) => {
262
- if (p) {
263
- if (p.key !== undefined) {
264
- permissions.push(p.key);
265
- }
266
- }
267
- });
268
- });
269
- });
270
- return permissions;
271
- }
272
- }
273
- return null;
274
- }
275
239
  get isInitialized() {
276
240
  return Promise.all([
277
- Promise.race([this.permissionsTopic$.isInitialized, this.oldStylePermissionsInitialized]),
241
+ this.permissionsTopic$.isInitialized,
278
242
  this.profile$.isInitialized,
279
243
  // eslint-disable-next-line @typescript-eslint/no-empty-function
280
244
  ]).then(() => { });
281
245
  }
282
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
283
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: UserService, providedIn: 'root' }); }
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
247
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserService, providedIn: 'root' }); }
284
248
  }
285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: UserService, decorators: [{
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UserService, decorators: [{
286
250
  type: Injectable,
287
251
  args: [{ providedIn: 'root' }]
288
252
  }], ctorParameters: () => [] });
@@ -322,10 +286,10 @@ class PortalMessageService {
322
286
  ngOnDestroy() {
323
287
  this.message$.destroy();
324
288
  }
325
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: PortalMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
326
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: PortalMessageService, providedIn: 'any' }); }
289
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PortalMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
290
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PortalMessageService, providedIn: 'any' }); }
327
291
  }
328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: PortalMessageService, decorators: [{
292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PortalMessageService, decorators: [{
329
293
  type: Injectable,
330
294
  args: [{ providedIn: 'any' }]
331
295
  }] });
@@ -337,10 +301,10 @@ class ThemeService {
337
301
  ngOnDestroy() {
338
302
  this.currentTheme$.destroy();
339
303
  }
340
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
341
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ThemeService, providedIn: 'root' }); }
304
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ThemeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
305
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ThemeService, providedIn: 'root' }); }
342
306
  }
343
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ThemeService, decorators: [{
307
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ThemeService, decorators: [{
344
308
  type: Injectable,
345
309
  args: [{ providedIn: 'root' }]
346
310
  }] });
@@ -352,63 +316,14 @@ class RemoteComponentsService {
352
316
  ngOnDestroy() {
353
317
  this.remoteComponents$.destroy();
354
318
  }
355
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RemoteComponentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
356
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RemoteComponentsService, providedIn: 'root' }); }
319
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RemoteComponentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
320
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RemoteComponentsService, providedIn: 'root' }); }
357
321
  }
358
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: RemoteComponentsService, decorators: [{
322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RemoteComponentsService, decorators: [{
359
323
  type: Injectable,
360
324
  args: [{ providedIn: 'root' }]
361
325
  }] });
362
326
 
363
- class InitializeModuleGuard {
364
- constructor() {
365
- this.translateService = inject(TranslateService);
366
- this.configService = inject(ConfigurationService);
367
- this.appStateService = inject(AppStateService);
368
- this.userService = inject(UserService);
369
- this.SUPPORTED_LANGS = ['en', 'de'];
370
- this.DEFAULT_LANG = 'en';
371
- }
372
- canActivate(_route, _state) {
373
- console.time('InitializeModuleGuard');
374
- return zip([
375
- this.loadTranslations(),
376
- from(this.configService.isInitialized),
377
- from(this.userService.isInitialized),
378
- from(this.appStateService.currentWorkspace$.isInitialized),
379
- ]).pipe(tap(() => {
380
- console.timeEnd('InitializeModuleGuard');
381
- }), map(() => true));
382
- }
383
- getBestMatchLanguage(lang) {
384
- if (this.SUPPORTED_LANGS.includes(lang)) {
385
- return lang;
386
- }
387
- else {
388
- console.log(`${lang} is not supported. Using ${this.DEFAULT_LANG} as a fallback.`);
389
- }
390
- return this.DEFAULT_LANG;
391
- }
392
- loadTranslations() {
393
- return this.userService.lang$.pipe(filter((v) => v !== undefined), mergeMap((lang) => {
394
- const bestMatchLang = this.getBestMatchLanguage(lang);
395
- return this.translateService.use(bestMatchLang);
396
- }), mergeMap(() => of(true)));
397
- }
398
- toObservable(canActivateResult) {
399
- if (isObservable(canActivateResult)) {
400
- return canActivateResult;
401
- }
402
- return from(Promise.resolve(canActivateResult));
403
- }
404
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: InitializeModuleGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
405
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: InitializeModuleGuard, providedIn: 'any' }); }
406
- }
407
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: InitializeModuleGuard, decorators: [{
408
- type: Injectable,
409
- args: [{ providedIn: 'any' }]
410
- }] });
411
-
412
327
  class WorkspaceService {
413
328
  constructor() {
414
329
  this.appStateService = inject(AppStateService);
@@ -539,10 +454,10 @@ class WorkspaceService {
539
454
  return String(value);
540
455
  }
541
456
  }
542
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: WorkspaceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
543
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: WorkspaceService, providedIn: 'root' }); }
457
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WorkspaceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
458
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WorkspaceService, providedIn: 'root' }); }
544
459
  }
545
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: WorkspaceService, decorators: [{
460
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WorkspaceService, decorators: [{
546
461
  type: Injectable,
547
462
  args: [{
548
463
  providedIn: 'root',
@@ -561,35 +476,19 @@ class ShellCapabilityService {
561
476
  hasCapability(capability) {
562
477
  return window['onecx-shell-capabilities']?.includes(capability) ?? false;
563
478
  }
564
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ShellCapabilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
565
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ShellCapabilityService, providedIn: 'root' }); }
479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShellCapabilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
480
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShellCapabilityService, providedIn: 'root' }); }
566
481
  }
567
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: ShellCapabilityService, decorators: [{
482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ShellCapabilityService, decorators: [{
568
483
  type: Injectable,
569
484
  args: [{ providedIn: 'root' }]
570
485
  }] });
571
486
 
572
- function addInitializeModuleGuard(routes, initializeModuleGuard = InitializeModuleGuard) {
573
- return routes.map((r) => {
574
- if (r.redirectTo) {
575
- return r;
576
- }
577
- const route = {
578
- canActivate: [],
579
- ...r,
580
- };
581
- if (!route.canActivate.includes(initializeModuleGuard)) {
582
- route.canActivate.push(initializeModuleGuard);
583
- }
584
- return route;
585
- });
586
- }
587
-
588
487
  // services
589
488
 
590
489
  /**
591
490
  * Generated bundle index. Do not edit.
592
491
  */
593
492
 
594
- export { APPLICATION_NAME, APP_CONFIG, AUTH_SERVICE, AppConfigService, AppStateService, CONFIG_KEY, Capability, ConfigurationService, InitializeModuleGuard, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ShellCapabilityService, ThemeService, UserService, WorkspaceService, addInitializeModuleGuard };
493
+ export { APPLICATION_NAME, APP_CONFIG, AppConfigService, AppStateService, CONFIG_KEY, Capability, ConfigurationService, POLYFILL_SCOPE_MODE, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ShellCapabilityService, ThemeService, UserService, WorkspaceService };
595
494
  //# 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-config-service.ts","../../../../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/services/shell-capability.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 { Location } from '@angular/common'\nimport { HttpClient } from '@angular/common/http'\nimport { Injectable, inject } from '@angular/core'\nimport { Config } from '@onecx/integration-interface'\nimport { BehaviorSubject, firstValueFrom } from 'rxjs'\n\n@Injectable()\nexport class AppConfigService {\n private http = inject(HttpClient)\n\n config$ = new BehaviorSubject<{ [key: string]: string }>({})\n\n public init(baseUrl: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const loadConfigPromise: Promise<Config> = firstValueFrom(\n this.http.get<Config>(Location.joinWithSlash(baseUrl, 'assets/env.json'))\n )\n\n loadConfigPromise\n .then(async (config) => {\n if (config) {\n this.config$.next(config)\n resolve()\n }\n })\n .catch((e) => {\n console.log(`Failed to load env configuration`)\n reject(e)\n })\n })\n }\n\n public getProperty(key: string): string | undefined {\n return this.config$.getValue()?.[key]\n }\n\n public setProperty(key: string, val: string) {\n this.config$.next({ ...this.config$.value, [key]: val })\n }\n\n public getConfig(): { [key: string]: string } {\n return this.config$.getValue()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport {\n GlobalErrorTopic,\n GlobalLoadingTopic,\n CurrentMfeTopic,\n CurrentPageTopic,\n CurrentWorkspaceTopic,\n IsAuthenticatedTopic,\n CurrentLocationTopic,\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 currentLocation$ = new CurrentLocationTopic()\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.currentLocation$.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 ONECX_PORTAL_SEARCH_BUTTONS_REVERSED = 'ONECX_PORTAL_SEARCH_BUTTONS_REVERSED',\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 { Injectable, OnDestroy, inject } from '@angular/core'\nimport { firstValueFrom, map } from 'rxjs'\nimport { Config, ConfigurationTopic } from '@onecx/integration-interface'\nimport { APP_CONFIG } from '../api/injection-tokens'\nimport { CONFIG_KEY } from '../model/config-key.model'\nimport Semaphore from 'ts-semaphore'\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements OnDestroy {\n private http = inject(HttpClient)\n private defaultConfig = inject<{\n [key: string]: string\n }>(APP_CONFIG, { optional: true })\n\n private config$ = new ConfigurationTopic()\n private semaphore = new Semaphore(1)\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 await this.config$.publish({ ...this.defaultConfig, ...(config ?? {}) }).then(() => {\n resolve(true)\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 async getProperty(key: CONFIG_KEY): Promise<string | undefined> {\n if (!Object.values(CONFIG_KEY).includes(key)) {\n console.error('Invalid config key ', key)\n }\n return firstValueFrom(this.config$.pipe(map((config) => config[key])))\n }\n\n public async setProperty(key: string, val: string) {\n return this.semaphore.use(async () => {\n const currentValues = await firstValueFrom(this.config$.asObservable())\n currentValues[key] = val\n await this.config$.publish(currentValues)\n })\n }\n\n public async getConfig(): Promise<Config | undefined> {\n return firstValueFrom(this.config$.asObservable())\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, Observable, merge } 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 effectivePermissions$: Observable<string[]>\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.effectivePermissions$ = merge(this.permissions$.pipe(skip(1)), this.permissionsTopic$.asObservable())\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 getPermissions() {\n return this.effectivePermissions$\n }\n\n hasPermission(permissionKey: string | string[]): boolean {\n if (Array.isArray(permissionKey)) {\n return permissionKey.every((key) => this.hasPermission(key))\n }\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, OnDestroy, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { MessageTopic } from '@onecx/integration-interface'\nimport { combineLatest, first, of } from 'rxjs'\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 implements OnDestroy {\n private translateService = inject(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 ])\n .pipe(first())\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 ngOnDestroy(): void {\n this.message$.destroy()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { CurrentThemeTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService implements OnDestroy {\n currentTheme$ = new CurrentThemeTopic()\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, inject } from '@angular/core'\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router'\nimport { TranslateService } from '@ngx-translate/core'\nimport { Observable, filter, from, isObservable, map, mergeMap, 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 protected translateService = inject(TranslateService)\n protected configService = inject(ConfigurationService)\n protected appStateService = inject(AppStateService)\n protected userService = inject(UserService)\n\n private SUPPORTED_LANGS = ['en', 'de']\n private DEFAULT_LANG = 'en'\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 { Location } from '@angular/common'\nimport { Injectable, inject } from '@angular/core'\nimport { Endpoint, Route } from '@onecx/integration-interface'\nimport { Observable, map } from 'rxjs'\nimport { AppStateService } from './app-state.service'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkspaceService {\n protected appStateService = inject(AppStateService)\n\n private aliasStart = '[['\n private aliasEnd = ']]'\n private paramStart = '{'\n private paramEnd = '}'\n\n getUrl(\n productName: string,\n appId: string,\n endpointName?: string,\n endpointParameters?: Record<string, unknown>\n ): Observable<string> {\n return this.appStateService.currentWorkspace$.pipe(\n map((workspace) => {\n const finalUrl = this.constructRouteUrl(workspace, appId, productName, endpointName, endpointParameters)\n return finalUrl\n })\n )\n }\n\n doesUrlExistFor(productName: string, appId: string, endpointName?: string): Observable<boolean> {\n return this.appStateService.currentWorkspace$.pipe(\n map((workspace) => {\n const checkEndpoint = endpointName !== undefined && endpointName.length > 0\n\n if (workspace.routes == undefined) {\n return false\n }\n const route = this.filterRouteFromList(workspace.routes, appId, productName)\n\n if (checkEndpoint) {\n if (!route || route.endpoints === undefined || route.endpoints.length == 0) {\n return false\n }\n\n const endpoint = route.endpoints.find((ep) => ep.name === endpointName)\n return !!(endpoint && endpoint.path && endpoint.path.length > 0)\n } else {\n return !!(route && route.baseUrl && route.baseUrl.length > 0)\n }\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 endpointParameters?: 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 if (endpointName == undefined) {\n return url\n }\n\n url = Location.joinWithSlash(url, this.constructEndpointUrl(route, endpointName, endpointParameters))\n return url\n }\n\n private constructEndpointUrl(\n route: any,\n endpointName: string,\n endpointParameters: Record<string, unknown> = {}\n ): 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, endpointParameters)\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, endpointParameters: 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(endpointParameters[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 { Injectable } from '@angular/core'\n\ndeclare global {\n interface Window {\n 'onecx-shell-capabilities': Capability[]\n }\n}\n\nexport enum Capability {\n CURRENT_LOCATION_TOPIC = 'currentLocationTopic',\n PARAMETERS_TOPIC = 'parametersTopic',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ShellCapabilityService {\n static setCapabilities(capabilities: Capability[]): void {\n window['onecx-shell-capabilities'] = capabilities\n }\n\n hasCapability(capability: Capability): boolean {\n return window['onecx-shell-capabilities']?.includes(capability) ?? false\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-config-service'\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'\nexport * from './lib/services/shell-capability.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":[],"mappings":"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"}
1
+ {"version":3,"file":"onecx-angular-integration-interface.mjs","sources":["../../../../libs/angular-integration-interface/src/lib/services/app-config-service.ts","../../../../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/workspace.service.ts","../../../../libs/angular-integration-interface/src/lib/services/shell-capability.service.ts","../../../../libs/angular-integration-interface/src/index.ts","../../../../libs/angular-integration-interface/src/onecx-angular-integration-interface.ts"],"sourcesContent":["import { Location } from '@angular/common'\nimport { HttpClient } from '@angular/common/http'\nimport { Injectable, inject } from '@angular/core'\nimport { Config } from '@onecx/integration-interface'\nimport { BehaviorSubject, firstValueFrom } from 'rxjs'\n\n@Injectable()\nexport class AppConfigService {\n private http = inject(HttpClient)\n\n config$ = new BehaviorSubject<{ [key: string]: string }>({})\n\n public init(baseUrl: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const loadConfigPromise: Promise<Config> = firstValueFrom(\n this.http.get<Config>(Location.joinWithSlash(baseUrl, 'assets/env.json'))\n )\n\n loadConfigPromise\n .then(async (config) => {\n if (config) {\n this.config$.next(config)\n resolve()\n }\n })\n .catch((e) => {\n console.log(`Failed to load env configuration`)\n reject(e)\n })\n })\n }\n\n public getProperty(key: string): string | undefined {\n return this.config$.getValue()?.[key]\n }\n\n public setProperty(key: string, val: string) {\n this.config$.next({ ...this.config$.value, [key]: val })\n }\n\n public getConfig(): { [key: string]: string } {\n return this.config$.getValue()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport {\n GlobalErrorTopic,\n GlobalLoadingTopic,\n CurrentMfeTopic,\n CurrentPageTopic,\n CurrentWorkspaceTopic,\n IsAuthenticatedTopic,\n CurrentLocationTopic,\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 currentLocation$ = new CurrentLocationTopic()\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 * 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.currentLocation$.destroy()\n this.currentWorkspace$.destroy()\n this.isAuthenticated$.destroy()\n }\n}\n","import { InjectionToken } from '@angular/core'\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\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 ONECX_PORTAL_SEARCH_BUTTONS_REVERSED = 'ONECX_PORTAL_SEARCH_BUTTONS_REVERSED',\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 POLYFILL_SCOPE_MODE = 'POLYFILL_SCOPE_MODE'\n}\n\nexport enum POLYFILL_SCOPE_MODE {\n PERFORMANCE = 'PERFORMANCE',\n PRECISION = 'PRECISION',\n}","import { HttpClient } from '@angular/common/http'\nimport { Injectable, OnDestroy, inject } from '@angular/core'\nimport { firstValueFrom, map } from 'rxjs'\nimport { Config, ConfigurationTopic } from '@onecx/integration-interface'\nimport { APP_CONFIG } from '../api/injection-tokens'\nimport { CONFIG_KEY } from '../model/config-key.model'\nimport Semaphore from 'ts-semaphore'\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements OnDestroy {\n private http = inject(HttpClient)\n private defaultConfig = inject<{\n [key: string]: string\n }>(APP_CONFIG, { optional: true })\n\n private config$ = new ConfigurationTopic()\n private semaphore = new Semaphore(1)\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 await this.config$.publish({ ...this.defaultConfig, ...(config ?? {}) }).then(() => {\n resolve(true)\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 async getProperty(key: CONFIG_KEY): Promise<string | undefined> {\n if (!Object.values(CONFIG_KEY).includes(key)) {\n console.error('Invalid config key ', key)\n }\n return firstValueFrom(this.config$.pipe(map((config) => config[key])))\n }\n\n public async setProperty(key: string, val: string) {\n return this.semaphore.use(async () => {\n const currentValues = await firstValueFrom(this.config$.asObservable())\n currentValues[key] = val\n await this.config$.publish(currentValues)\n })\n }\n\n public async getConfig(): Promise<Config | undefined> {\n return firstValueFrom(this.config$.asObservable())\n }\n}\n","export const API_PREFIX = 'portal-api'\n\nexport const DEFAULT_LANG = 'en'\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { PermissionsTopic, UserProfileTopic } from '@onecx/integration-interface'\nimport { BehaviorSubject, firstValueFrom, map } from 'rxjs'\nimport { DEFAULT_LANG } from '../api/constants'\n\n@Injectable({ providedIn: 'root' })\nexport class UserService implements OnDestroy {\n profile$ = new UserProfileTopic()\n lang$ = new BehaviorSubject(this.determineLanguage() ?? DEFAULT_LANG)\n\n private permissionsTopic$ = new PermissionsTopic()\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\n ngOnDestroy(): void {\n this.profile$.destroy()\n }\n\n getPermissions() {\n return this.permissionsTopic$.asObservable()\n }\n\n async hasPermission(permissionKey: string | string[] | undefined): Promise<boolean> {\n if (!permissionKey) return true\n\n if (Array.isArray(permissionKey)) {\n const permissions = await Promise.all(permissionKey.map((key) => this.hasPermission(key)))\n return permissions.every((hasPermission) => hasPermission)\n }\n\n return firstValueFrom(\n this.permissionsTopic$.pipe(\n map((permissions) => {\n const result = permissions.includes(permissionKey)\n if (!result) {\n console.log(`👮‍♀️ No permission for: ${permissionKey}`)\n }\n return !!result\n })\n )\n )\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 get isInitialized(): Promise<void> {\n return Promise.all([\n this.permissionsTopic$.isInitialized,\n this.profile$.isInitialized,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n ]).then(() => {})\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { MessageTopic } from '@onecx/integration-interface'\nimport { combineLatest, first, of } from 'rxjs'\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 implements OnDestroy {\n private translateService = inject(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 ])\n .pipe(first())\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 ngOnDestroy(): void {\n this.message$.destroy()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { CurrentThemeTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService implements OnDestroy {\n currentTheme$ = new CurrentThemeTopic()\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 { Location } from '@angular/common'\nimport { Injectable, inject } from '@angular/core'\nimport { Endpoint, Route } from '@onecx/integration-interface'\nimport { Observable, map } from 'rxjs'\nimport { AppStateService } from './app-state.service'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkspaceService {\n protected appStateService = inject(AppStateService)\n\n private aliasStart = '[['\n private aliasEnd = ']]'\n private paramStart = '{'\n private paramEnd = '}'\n\n getUrl(\n productName: string,\n appId: string,\n endpointName?: string,\n endpointParameters?: Record<string, unknown>\n ): Observable<string> {\n return this.appStateService.currentWorkspace$.pipe(\n map((workspace) => {\n const finalUrl = this.constructRouteUrl(workspace, appId, productName, endpointName, endpointParameters)\n return finalUrl\n })\n )\n }\n\n doesUrlExistFor(productName: string, appId: string, endpointName?: string): Observable<boolean> {\n return this.appStateService.currentWorkspace$.pipe(\n map((workspace) => {\n const checkEndpoint = endpointName !== undefined && endpointName.length > 0\n\n if (workspace.routes == undefined) {\n return false\n }\n const route = this.filterRouteFromList(workspace.routes, appId, productName)\n\n if (checkEndpoint) {\n if (!route || route.endpoints === undefined || route.endpoints.length == 0) {\n return false\n }\n\n const endpoint = route.endpoints.find((ep) => ep.name === endpointName)\n return !!(endpoint && endpoint.path && endpoint.path.length > 0)\n } else {\n return !!(route && route.baseUrl && route.baseUrl.length > 0)\n }\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 endpointParameters?: 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 if (endpointName == undefined) {\n return url\n }\n\n url = Location.joinWithSlash(url, this.constructEndpointUrl(route, endpointName, endpointParameters))\n return url\n }\n\n private constructEndpointUrl(\n route: any,\n endpointName: string,\n endpointParameters: Record<string, unknown> = {}\n ): 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, endpointParameters)\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, endpointParameters: 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(endpointParameters[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 { Injectable } from '@angular/core'\n\ndeclare global {\n interface Window {\n 'onecx-shell-capabilities': Capability[]\n }\n}\n\nexport enum Capability {\n CURRENT_LOCATION_TOPIC = 'currentLocationTopic',\n PARAMETERS_TOPIC = 'parametersTopic',\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ShellCapabilityService {\n static setCapabilities(capabilities: Capability[]): void {\n window['onecx-shell-capabilities'] = capabilities\n }\n\n hasCapability(capability: Capability): boolean {\n return window['onecx-shell-capabilities']?.includes(capability) ?? false\n }\n}\n","// services\nexport * from './lib/services/app-config-service'\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/workspace.service'\nexport * from './lib/services/shell-capability.service'\n\n// models\nexport * from './lib/model/config-key.model'\n\n// core\nexport * from './lib/api/injection-tokens'\n\n// utils\n\nexport { MfeInfo, Theme } from '@onecx/integration-interface'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -5,11 +5,8 @@ export * from './lib/services/user.service';
5
5
  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
- export * from './lib/services/initialize-module-guard.service';
9
8
  export * from './lib/services/workspace.service';
10
9
  export * from './lib/services/shell-capability.service';
11
10
  export * from './lib/model/config-key.model';
12
- export * from './lib/api/iauth.service';
13
11
  export * from './lib/api/injection-tokens';
14
- export * from './lib/utils/add-initialize-module-guard.utils';
15
12
  export { MfeInfo, Theme } from '@onecx/integration-interface';
@@ -1,5 +1,4 @@
1
1
  import { InjectionToken } from '@angular/core';
2
- import { IAuthService } from './iauth.service';
3
2
  export interface LibConfig {
4
3
  appId: string;
5
4
  portalId: string;
@@ -13,11 +12,5 @@ export interface LibConfig {
13
12
  remoteConfigURL: string;
14
13
  }
15
14
  export declare const APP_CONFIG: InjectionToken<LibConfig>;
16
- /**
17
- * @deprecated
18
- * Please do not inject the auth service at all.
19
- * There are better ways to achieve what you want. Please use permission service or user service.
20
- */
21
- export declare const AUTH_SERVICE: InjectionToken<IAuthService>;
22
15
  export declare const SANITY_CHECK: InjectionToken<string>;
23
16
  export declare const APPLICATION_NAME: InjectionToken<string>;
@@ -25,5 +25,10 @@ export declare enum CONFIG_KEY {
25
25
  IS_SHELL = "IS_SHELL",
26
26
  AUTH_SERVICE = "AUTH_SERVICE",
27
27
  AUTH_SERVICE_CUSTOM_URL = "AUTH_SERVICE_CUSTOM_URL",
28
- AUTH_SERVICE_CUSTOM_MODULE_NAME = "AUTH_SERVICE_CUSTOM_MODULE_NAME"
28
+ AUTH_SERVICE_CUSTOM_MODULE_NAME = "AUTH_SERVICE_CUSTOM_MODULE_NAME",
29
+ POLYFILL_SCOPE_MODE = "POLYFILL_SCOPE_MODE"
30
+ }
31
+ export declare enum POLYFILL_SCOPE_MODE {
32
+ PERFORMANCE = "PERFORMANCE",
33
+ PRECISION = "PRECISION"
29
34
  }
@@ -12,11 +12,6 @@ export declare class AppStateService implements OnDestroy {
12
12
  */
13
13
  currentPage$: CurrentPageTopic;
14
14
  currentWorkspace$: CurrentWorkspaceTopic;
15
- /**
16
- * @deprecated Will be replaced by currentWorkspace$
17
- */
18
- get currentPortal$(): CurrentWorkspaceTopic;
19
- set currentPortal$(value: CurrentWorkspaceTopic);
20
15
  /**
21
16
  * This Topic is initialized as soon as the authentication is done
22
17
  */
@@ -1,20 +1,16 @@
1
1
  import { OnDestroy } from '@angular/core';
2
- import { BehaviorSubject, Observable } from 'rxjs';
3
2
  import { UserProfileTopic } from '@onecx/integration-interface';
3
+ import { BehaviorSubject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class UserService implements OnDestroy {
6
6
  profile$: UserProfileTopic;
7
- permissions$: BehaviorSubject<string[]>;
8
7
  lang$: BehaviorSubject<string>;
9
- private effectivePermissions$;
10
8
  private permissionsTopic$;
11
- private oldStylePermissionsInitialized;
12
9
  constructor();
13
10
  ngOnDestroy(): void;
14
- getPermissions(): Observable<string[]>;
15
- hasPermission(permissionKey: string | string[]): boolean;
11
+ getPermissions(): import("rxjs").Observable<string[]>;
12
+ hasPermission(permissionKey: string | string[] | undefined): Promise<boolean>;
16
13
  private determineLanguage;
17
- private extractPermissions;
18
14
  get isInitialized(): Promise<void>;
19
15
  static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
20
16
  static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
package/migrations.json CHANGED
@@ -5,6 +5,24 @@
5
5
  "version": "6.0.0",
6
6
  "description": "Update package json to Angular 19, PrimeNG 19, OneCX versions to v6 and other dependencies to be compatible with Angular 19.",
7
7
  "factory": "migrations/v6/migrate-onecx-to-v6"
8
+ },
9
+ "remove-add-initialize-module-guard": {
10
+ "cli": "nx",
11
+ "version": "6.0.0",
12
+ "description": "Removes all occurrences of addInitializeModuleGuard.",
13
+ "factory": "migrations/v6/remove-add-initialize-module-guard"
14
+ },
15
+ "replace-provide-app-service-mock": {
16
+ "cli": "nx",
17
+ "version": "6.0.0",
18
+ "description": "Detects and replaces all occurrences of provideAppServiceMock with provideAppStateServiceMock.",
19
+ "factory": "migrations/v6/replace-provide-app-service-mock"
20
+ },
21
+ "remove-auth-service": {
22
+ "cli": "nx",
23
+ "version": "6.0.0",
24
+ "description": "Removes all imports of IAuthService and AUTH_SERVICE and warns for usage.",
25
+ "factory": "migrations/v6/remove-auth-service"
8
26
  }
9
27
  },
10
28
  "packageJsonUpdates": {
@@ -18,9 +36,17 @@
18
36
  "@nx/angular": {
19
37
  "version": "~20.3.0",
20
38
  "alwaysAddToPackageJson": false
39
+ },
40
+ "@ngx-translate/core": {
41
+ "version": "~16.0.4",
42
+ "alwaysAddToPackageJson": false
43
+ },
44
+ "primeng": {
45
+ "version": "~19.0.0",
46
+ "alwaysAddToPackageJson": false
21
47
  }
22
48
  }
23
49
  },
24
50
  "version": "null"
25
51
  }
26
- }
52
+ }
@@ -2,13 +2,6 @@ import { CurrentLocationTopicPayload, MfeInfo, PageInfo, Workspace } from '@onec
2
2
  import { AppStateService } from '@onecx/angular-integration-interface';
3
3
  import { FakeTopic } from '@onecx/accelerator';
4
4
  import * as i0 from "@angular/core";
5
- /**
6
- * @deprecated use provideAppStateServiceMock()
7
- */
8
- export declare function provideAppServiceMock(): (typeof AppStateServiceMock | {
9
- provide: typeof AppStateService;
10
- useExisting: typeof AppStateServiceMock;
11
- })[];
12
5
  export declare function provideAppStateServiceMock(): (typeof AppStateServiceMock | {
13
6
  provide: typeof AppStateService;
14
7
  useExisting: typeof AppStateServiceMock;
@@ -14,9 +14,9 @@ export declare class ConfigurationServiceMock {
14
14
  constructor();
15
15
  init(config?: Config): Promise<boolean>;
16
16
  get isInitialized(): Promise<void>;
17
- getProperty(key: CONFIG_KEY): string | undefined;
17
+ getProperty(key: CONFIG_KEY): Promise<string | undefined>;
18
18
  setProperty(key: string, val: string): Promise<void>;
19
- getConfig(): Config | undefined;
19
+ getConfig(): Promise<Config | undefined>;
20
20
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfigurationServiceMock, never>;
21
21
  static ɵprov: i0.ɵɵInjectableDeclaration<ConfigurationServiceMock>;
22
22
  }
@@ -9,9 +9,9 @@ export declare function provideUserServiceMock(): (typeof UserServiceMock | {
9
9
  })[];
10
10
  export declare class UserServiceMock {
11
11
  profile$: FakeTopic<UserProfile>;
12
- permissions$: BehaviorSubject<string[]>;
12
+ permissionsTopic$: FakeTopic<string[]>;
13
13
  lang$: BehaviorSubject<string>;
14
- hasPermission(permissionKey: string | string[]): boolean;
14
+ hasPermission(permissionKey: string | string[]): Promise<boolean>;
15
15
  determineLanguage(): string | undefined;
16
16
  extractPermissions(userProfile: UserProfile): string[] | null;
17
17
  get isInitialized(): Promise<void>;
package/package.json CHANGED
@@ -1,14 +1,19 @@
1
1
  {
2
2
  "name": "@onecx/angular-integration-interface",
3
- "version": "6.0.0-rc.9",
3
+ "version": "6.0.0",
4
4
  "license": "Apache-2.0",
5
5
  "peerDependencies": {
6
6
  "@angular/core": "^19.0.0",
7
- "@onecx/integration-interface": "^6.0.0-rc.9",
8
- "@onecx/accelerator": "^6.0.0-rc.9",
7
+ "@onecx/accelerator": "^6.0.0",
8
+ "@onecx/nx-migration-utils": "^6.0.0",
9
+ "@onecx/integration-interface": "^6.0.0",
9
10
  "rxjs": "~7.8.1",
10
11
  "@nx/devkit": "^20.3.0",
11
- "ts-semaphore": "^1.0.0"
12
+ "@phenomnomnominal/tsquery": "^6",
13
+ "ts-semaphore": "^1.0.0",
14
+ "@jest/globals": "29.7.0",
15
+ "jest-extended": "^6.0.0",
16
+ "typescript": "^5.5.4"
12
17
  },
13
18
  "dependencies": {
14
19
  "tslib": "^2.3.0"
@@ -1,17 +0,0 @@
1
- /**
2
- * @deprecated
3
- */
4
- export interface IAuthService {
5
- logout(): void;
6
- /**
7
- * Unique name of this auth provider: e.g. mockAuthProvider, KeycloakProvider..
8
- */
9
- getAuthProviderName(): string;
10
- /**
11
- * Initialization method of the Auth service. Once resolved, all user data MUST be available.
12
- */
13
- init(): Promise<boolean>;
14
- getIdToken(): string | null;
15
- hasRole(_role: string): boolean;
16
- getUserRoles(): string[];
17
- }
@@ -1,21 +0,0 @@
1
- import { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { Observable } from 'rxjs';
4
- import { AppStateService } from './app-state.service';
5
- import { ConfigurationService } from './configuration.service';
6
- import { UserService } from './user.service';
7
- import * as i0 from "@angular/core";
8
- export declare class InitializeModuleGuard implements CanActivate {
9
- protected translateService: TranslateService;
10
- protected configService: ConfigurationService;
11
- protected appStateService: AppStateService;
12
- protected userService: UserService;
13
- private SUPPORTED_LANGS;
14
- private DEFAULT_LANG;
15
- canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
16
- getBestMatchLanguage(lang: string): string;
17
- loadTranslations(): Observable<boolean>;
18
- protected toObservable(canActivateResult: Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree): Observable<boolean | UrlTree>;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<InitializeModuleGuard, never>;
20
- static ɵprov: i0.ɵɵInjectableDeclaration<InitializeModuleGuard>;
21
- }
@@ -1,3 +0,0 @@
1
- import { CanActivateFn, Route } from '@angular/router';
2
- import { InitializeModuleGuard } from '../services/initialize-module-guard.service';
3
- export declare function addInitializeModuleGuard(routes: Route[], initializeModuleGuard?: typeof InitializeModuleGuard | CanActivateFn): Route[];