@onecx/angular-integration-interface 8.0.0-rc.10 → 8.0.0-rc.12
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.
|
@@ -4,7 +4,7 @@ import * as i0 from '@angular/core';
|
|
|
4
4
|
import { inject, Injectable, InjectionToken } from '@angular/core';
|
|
5
5
|
import { BehaviorSubject, firstValueFrom, map, combineLatest, of, first } from 'rxjs';
|
|
6
6
|
import { createLoggerFactory, getNormalizedBrowserLocales } from '@onecx/accelerator';
|
|
7
|
-
import { GlobalErrorTopic, GlobalLoadingTopic, CurrentMfeTopic, CurrentLocationTopic, CurrentPageTopic, CurrentWorkspaceTopic, IsAuthenticatedTopic, ConfigurationTopic, PermissionsTopic, UserProfileTopic, ParametersTopic, ShellCapability, MessageTopic, CurrentThemeTopic, RemoteComponentsTopic, ImageRepositoryService as ImageRepositoryService$1, IconService as IconService$1, DynamicTranslationService as DynamicTranslationService$1 } from '@onecx/integration-interface';
|
|
7
|
+
import { GlobalErrorTopic, GlobalLoadingTopic, CurrentMfeTopic, CurrentLocationTopic, CurrentPageTopic, CurrentWorkspaceTopic, IsAuthenticatedTopic, ConfigurationTopic, resolveConfigPayload, PermissionsTopic, UserProfileTopic, determineBrowserLanguage, resolveProfileLanguage, resolveLegacyLanguage, setShellCapabilities, hasShellCapability, ParametersTopic, ShellCapability, findParameterValue, MessageTopic, buildPortalMessagePayload, CurrentThemeTopic, RemoteComponentsTopic, constructRouteUrl, doesUrlExistForWorkspace, ImageRepositoryService as ImageRepositoryService$1, IconService as IconService$1, DynamicTranslationService as DynamicTranslationService$1, NotificationService as NotificationService$1 } from '@onecx/integration-interface';
|
|
8
8
|
export { ShellCapability as Capability } from '@onecx/integration-interface';
|
|
9
9
|
import Semaphore from 'ts-semaphore';
|
|
10
10
|
import { TranslateService } from '@ngx-translate/core';
|
|
@@ -139,6 +139,10 @@ var CONFIG_KEY;
|
|
|
139
139
|
CONFIG_KEY["KEYCLOAK_ENABLE_SILENT_SSO"] = "KEYCLOAK_ENABLE_SILENT_SSO";
|
|
140
140
|
CONFIG_KEY["KEYCLOAK_URL"] = "KEYCLOAK_URL";
|
|
141
141
|
CONFIG_KEY["KEYCLOAK_CLIENT_ID"] = "KEYCLOAK_CLIENT_ID";
|
|
142
|
+
CONFIG_KEY["KEYCLOAK_TIME_SKEW"] = "KEYCLOAK_TIME_SKEW";
|
|
143
|
+
CONFIG_KEY["KEYCLOAK_UPDATE_TOKEN_MIN_VALIDITY"] = "KEYCLOAK_UPDATE_TOKEN_MIN_VALIDITY";
|
|
144
|
+
CONFIG_KEY["KEYCLOAK_ON_TOKEN_EXPIRED_ENABLED"] = "KEYCLOAK_ON_TOKEN_EXPIRED_ENABLED";
|
|
145
|
+
CONFIG_KEY["KEYCLOAK_ON_AUTH_REFRESH_ERROR_ENABLED"] = "KEYCLOAK_ON_AUTH_REFRESH_ERROR_ENABLED";
|
|
142
146
|
CONFIG_KEY["ONECX_PORTAL_FAVORITES_DISABLED"] = "ONECX_PORTAL_FAVORITES_DISABLED";
|
|
143
147
|
CONFIG_KEY["ONECX_PORTAL_FEEDBACK_DISABLED"] = "ONECX_PORTAL_FEEDBACK_DISABLED";
|
|
144
148
|
CONFIG_KEY["ONECX_PORTAL_SEARCH_DISABLED"] = "ONECX_PORTAL_SEARCH_DISABLED";
|
|
@@ -156,6 +160,7 @@ var CONFIG_KEY;
|
|
|
156
160
|
CONFIG_KEY["AUTH_SERVICE_CUSTOM_MODULE_NAME"] = "AUTH_SERVICE_CUSTOM_MODULE_NAME";
|
|
157
161
|
CONFIG_KEY["POLYFILL_SCOPE_MODE"] = "POLYFILL_SCOPE_MODE";
|
|
158
162
|
CONFIG_KEY["KEYBOARD_FOCUSABLE_SELECTOR"] = "KEYBOARD_FOCUSABLE_SELECTOR";
|
|
163
|
+
CONFIG_KEY["CUSTOM_AUTH_SHARE_SCOPE"] = "CUSTOM_AUTH_SHARE_SCOPE";
|
|
159
164
|
})(CONFIG_KEY || (CONFIG_KEY = {}));
|
|
160
165
|
var POLYFILL_SCOPE_MODE;
|
|
161
166
|
(function (POLYFILL_SCOPE_MODE) {
|
|
@@ -182,24 +187,21 @@ class ConfigurationService {
|
|
|
182
187
|
}
|
|
183
188
|
init() {
|
|
184
189
|
return new Promise((resolve, reject) => {
|
|
185
|
-
const skipRemoteConfigLoad = this.defaultConfig
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
190
|
+
const skipRemoteConfigLoad = this.defaultConfig?.['skipRemoteConfigLoad'];
|
|
191
|
+
const remoteConfigURL = this.defaultConfig?.['remoteConfigURL'] ?? undefined;
|
|
192
|
+
resolveConfigPayload({
|
|
193
|
+
defaultConfig: this.defaultConfig ?? {},
|
|
194
|
+
skipRemoteConfigLoad: !!skipRemoteConfigLoad,
|
|
195
|
+
remoteConfigURL,
|
|
196
|
+
loadRemoteConfig: (url) => firstValueFrom(this.http.get(url)),
|
|
197
|
+
})
|
|
198
|
+
.then(async ({ config, source }) => {
|
|
199
|
+
if (source === 'inlined') {
|
|
200
|
+
this.logger.info('ENV resolved from injected config');
|
|
196
201
|
}
|
|
197
|
-
|
|
198
|
-
|
|
202
|
+
if (source === 'default' && skipRemoteConfigLoad) {
|
|
203
|
+
this.logger.info('📢 TKA001: Remote config load is disabled. To enable it, remove the "skipRemoteConfigLoad" key in your environment.json');
|
|
199
204
|
}
|
|
200
|
-
}
|
|
201
|
-
loadConfigPromise
|
|
202
|
-
.then(async (config) => {
|
|
203
205
|
await this.config$.publish({ ...this.defaultConfig, ...(config ?? {}) }).then(() => {
|
|
204
206
|
resolve(true);
|
|
205
207
|
});
|
|
@@ -251,21 +253,10 @@ class UserService {
|
|
|
251
253
|
}
|
|
252
254
|
constructor() {
|
|
253
255
|
this.profile$ = new UserProfileTopic();
|
|
254
|
-
this.lang$ = new BehaviorSubject(
|
|
256
|
+
this.lang$ = new BehaviorSubject(determineBrowserLanguage() ?? DEFAULT_LANG);
|
|
255
257
|
this.profile$
|
|
256
258
|
.pipe(map((profile) => {
|
|
257
|
-
|
|
258
|
-
if (!locales) {
|
|
259
|
-
return this.useOldLangSetting(profile);
|
|
260
|
-
}
|
|
261
|
-
if (locales.length === 0) {
|
|
262
|
-
locales = getNormalizedBrowserLocales();
|
|
263
|
-
}
|
|
264
|
-
// the lang$ should contain the first language, because locales is an ordered list
|
|
265
|
-
// length of 2 is checked because we need the general language
|
|
266
|
-
// never choose 'en-US', but choose 'en'
|
|
267
|
-
const firstLang = locales.find((l) => l.length === 2) ?? DEFAULT_LANG;
|
|
268
|
-
return firstLang;
|
|
259
|
+
return resolveProfileLanguage(profile, DEFAULT_LANG, getNormalizedBrowserLocales);
|
|
269
260
|
}))
|
|
270
261
|
.subscribe(this.lang$);
|
|
271
262
|
}
|
|
@@ -274,7 +265,7 @@ class UserService {
|
|
|
274
265
|
this._permissionsTopic$?.destroy();
|
|
275
266
|
}
|
|
276
267
|
useOldLangSetting(profile) {
|
|
277
|
-
return profile
|
|
268
|
+
return resolveLegacyLanguage(profile, DEFAULT_LANG, determineBrowserLanguage);
|
|
278
269
|
}
|
|
279
270
|
getPermissions() {
|
|
280
271
|
return this.permissionsTopic$.asObservable();
|
|
@@ -294,23 +285,6 @@ class UserService {
|
|
|
294
285
|
return !!result;
|
|
295
286
|
})));
|
|
296
287
|
}
|
|
297
|
-
determineLanguage() {
|
|
298
|
-
if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {
|
|
299
|
-
return undefined;
|
|
300
|
-
}
|
|
301
|
-
let browserLang = window.navigator.languages ? window.navigator.languages[0] : null;
|
|
302
|
-
browserLang = browserLang || window.navigator.language;
|
|
303
|
-
if (typeof browserLang === 'undefined') {
|
|
304
|
-
return undefined;
|
|
305
|
-
}
|
|
306
|
-
if (browserLang.indexOf('-') !== -1) {
|
|
307
|
-
browserLang = browserLang.split('-')[0];
|
|
308
|
-
}
|
|
309
|
-
if (browserLang.indexOf('_') !== -1) {
|
|
310
|
-
browserLang = browserLang.split('_')[0];
|
|
311
|
-
}
|
|
312
|
-
return browserLang;
|
|
313
|
-
}
|
|
314
288
|
get isInitialized() {
|
|
315
289
|
return Promise.all([
|
|
316
290
|
this.permissionsTopic$.isInitialized,
|
|
@@ -328,10 +302,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
328
302
|
|
|
329
303
|
class ShellCapabilityService {
|
|
330
304
|
static setCapabilities(capabilities) {
|
|
331
|
-
|
|
305
|
+
setShellCapabilities(capabilities);
|
|
332
306
|
}
|
|
333
307
|
hasCapability(capability) {
|
|
334
|
-
return
|
|
308
|
+
return hasShellCapability(capability);
|
|
335
309
|
}
|
|
336
310
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ShellCapabilityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
337
311
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ShellCapabilityService, providedIn: 'root' }); }
|
|
@@ -358,7 +332,7 @@ class ParametersService {
|
|
|
358
332
|
}
|
|
359
333
|
async get(key, defaultValue, productName = undefined, appId = undefined) {
|
|
360
334
|
if (!this.shellCapabilityService.hasCapability(ShellCapability.PARAMETERS_TOPIC)) {
|
|
361
|
-
return
|
|
335
|
+
return defaultValue;
|
|
362
336
|
}
|
|
363
337
|
if (!productName) {
|
|
364
338
|
productName = await firstValueFrom(this.appStateService.currentMfe$.pipe(map((mfe) => mfe.productName)));
|
|
@@ -366,14 +340,7 @@ class ParametersService {
|
|
|
366
340
|
if (!appId) {
|
|
367
341
|
appId = await firstValueFrom(this.appStateService.currentMfe$.pipe(map((mfe) => mfe.appId)));
|
|
368
342
|
}
|
|
369
|
-
return firstValueFrom(this.parameters$.pipe(map((payload) => payload
|
|
370
|
-
if (value === undefined) {
|
|
371
|
-
return Promise.resolve(defaultValue);
|
|
372
|
-
}
|
|
373
|
-
else {
|
|
374
|
-
return Promise.resolve(value);
|
|
375
|
-
}
|
|
376
|
-
});
|
|
343
|
+
return firstValueFrom(this.parameters$.pipe(map((payload) => findParameterValue(payload, key, productName, appId)))).then((value) => value ?? defaultValue);
|
|
377
344
|
}
|
|
378
345
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ParametersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
379
346
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ParametersService, providedIn: 'root' }); }
|
|
@@ -413,12 +380,7 @@ class PortalMessageService {
|
|
|
413
380
|
])
|
|
414
381
|
.pipe(first())
|
|
415
382
|
.subscribe(([summaryTranslation, detailTranslation]) => {
|
|
416
|
-
this.message$.publish(
|
|
417
|
-
...msg,
|
|
418
|
-
severity: severity,
|
|
419
|
-
summary: summaryTranslation,
|
|
420
|
-
detail: detailTranslation,
|
|
421
|
-
});
|
|
383
|
+
this.message$.publish(buildPortalMessagePayload(severity, msg, summaryTranslation, detailTranslation));
|
|
422
384
|
});
|
|
423
385
|
}
|
|
424
386
|
ngOnDestroy() {
|
|
@@ -474,132 +436,15 @@ class WorkspaceService {
|
|
|
474
436
|
constructor() {
|
|
475
437
|
this.appStateService = inject(AppStateService);
|
|
476
438
|
this.logger = createLogger('WorkspaceService');
|
|
477
|
-
this.aliasStart = '[[';
|
|
478
|
-
this.aliasEnd = ']]';
|
|
479
|
-
this.paramStart = '{';
|
|
480
|
-
this.paramEnd = '}';
|
|
481
439
|
}
|
|
482
440
|
getUrl(productName, appId, endpointName, endpointParameters) {
|
|
483
441
|
return this.appStateService.currentWorkspace$.pipe(map((workspace) => {
|
|
484
|
-
const finalUrl =
|
|
442
|
+
const finalUrl = constructRouteUrl(workspace, appId, productName, endpointName, endpointParameters, this.logger.warn);
|
|
485
443
|
return finalUrl;
|
|
486
444
|
}));
|
|
487
445
|
}
|
|
488
446
|
doesUrlExistFor(productName, appId, endpointName) {
|
|
489
|
-
return this.appStateService.currentWorkspace$.pipe(map((workspace) =>
|
|
490
|
-
const checkEndpoint = endpointName !== undefined && endpointName.length > 0;
|
|
491
|
-
if (workspace.routes == undefined) {
|
|
492
|
-
return false;
|
|
493
|
-
}
|
|
494
|
-
const route = this.filterRouteFromList(workspace.routes, appId, productName);
|
|
495
|
-
if (checkEndpoint) {
|
|
496
|
-
if (!route || route.endpoints === undefined || route.endpoints.length == 0) {
|
|
497
|
-
return false;
|
|
498
|
-
}
|
|
499
|
-
const endpoint = route.endpoints.find((ep) => ep.name === endpointName);
|
|
500
|
-
return !!(endpoint && endpoint.path && endpoint.path.length > 0);
|
|
501
|
-
}
|
|
502
|
-
else {
|
|
503
|
-
return !!(route && route.baseUrl && route.baseUrl.length > 0);
|
|
504
|
-
}
|
|
505
|
-
}));
|
|
506
|
-
}
|
|
507
|
-
constructBaseUrlFromWorkspace(workspace) {
|
|
508
|
-
if (workspace.baseUrl === undefined) {
|
|
509
|
-
this.logger.warn('There was no baseUrl for received workspace.');
|
|
510
|
-
return '';
|
|
511
|
-
}
|
|
512
|
-
return workspace.baseUrl;
|
|
513
|
-
}
|
|
514
|
-
constructRouteUrl(workspace, appId, productName, endpointName, endpointParameters) {
|
|
515
|
-
const route = this.filterRouteFromList(workspace.routes, appId, productName);
|
|
516
|
-
let url = this.constructBaseUrlFromWorkspace(workspace);
|
|
517
|
-
if (!route) {
|
|
518
|
-
this.logger.warn(`No route.baseUrl could be found for given appId "${appId}" and productName "${productName}"`);
|
|
519
|
-
return url;
|
|
520
|
-
}
|
|
521
|
-
if (route.baseUrl !== undefined && route.baseUrl.length > 0) {
|
|
522
|
-
url = route.baseUrl;
|
|
523
|
-
}
|
|
524
|
-
if (endpointName == undefined) {
|
|
525
|
-
return url;
|
|
526
|
-
}
|
|
527
|
-
url = Location.joinWithSlash(url, this.constructEndpointUrl(route, endpointName, endpointParameters));
|
|
528
|
-
return url;
|
|
529
|
-
}
|
|
530
|
-
constructEndpointUrl(route, endpointName, endpointParameters = {}) {
|
|
531
|
-
if (!route.endpoints) {
|
|
532
|
-
return '';
|
|
533
|
-
}
|
|
534
|
-
const finalEndpoint = this.dissolveEndpoint(endpointName, route.endpoints);
|
|
535
|
-
if (!finalEndpoint || finalEndpoint.path === undefined) {
|
|
536
|
-
this.logger.warn('No endpoint or endpoint.path could be found');
|
|
537
|
-
return '';
|
|
538
|
-
}
|
|
539
|
-
const paramsFilled = this.fillParamsForPath(finalEndpoint.path, endpointParameters);
|
|
540
|
-
if (paramsFilled === undefined) {
|
|
541
|
-
this.logger.warn('Params could not be filled correctly');
|
|
542
|
-
return '';
|
|
543
|
-
}
|
|
544
|
-
return paramsFilled;
|
|
545
|
-
}
|
|
546
|
-
filterRouteFromList(routes, appId, productName) {
|
|
547
|
-
if (!routes) {
|
|
548
|
-
return undefined;
|
|
549
|
-
}
|
|
550
|
-
const productRoutes = routes.filter((route) => route.appId === appId && route.productName === productName);
|
|
551
|
-
if (productRoutes.length === 0) {
|
|
552
|
-
return undefined;
|
|
553
|
-
}
|
|
554
|
-
if (productRoutes.length > 1) {
|
|
555
|
-
this.logger.warn('There were more than one route. First route has been used.');
|
|
556
|
-
}
|
|
557
|
-
return productRoutes[0];
|
|
558
|
-
}
|
|
559
|
-
dissolveEndpoint(endpointName, endpoints) {
|
|
560
|
-
let endpoint = endpoints.find((ep) => ep.name === endpointName);
|
|
561
|
-
if (!endpoint) {
|
|
562
|
-
return undefined;
|
|
563
|
-
}
|
|
564
|
-
while (endpoint.path?.includes(this.aliasStart)) {
|
|
565
|
-
const path = endpoint.path;
|
|
566
|
-
const startIdx = path.indexOf(this.aliasStart) + this.aliasStart.length;
|
|
567
|
-
const endIdx = path.lastIndexOf(this.aliasEnd);
|
|
568
|
-
if (endIdx <= startIdx) {
|
|
569
|
-
return undefined;
|
|
570
|
-
}
|
|
571
|
-
const aliasName = path.substring(startIdx, endIdx);
|
|
572
|
-
endpoint = endpoints.find((ep) => ep.name === aliasName);
|
|
573
|
-
if (!endpoint) {
|
|
574
|
-
return undefined;
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
return endpoint;
|
|
578
|
-
}
|
|
579
|
-
fillParamsForPath(path, endpointParameters) {
|
|
580
|
-
while (path.includes(this.paramStart)) {
|
|
581
|
-
const paramName = path.substring(path.indexOf(this.paramStart) + this.paramStart.length, path.indexOf(this.paramEnd));
|
|
582
|
-
const paramValue = this.getStringFromUnknown(endpointParameters[paramName]);
|
|
583
|
-
if (paramValue != undefined && paramValue.length > 0) {
|
|
584
|
-
path = path.replace(this.paramStart.concat(paramName).concat(this.paramEnd), paramValue);
|
|
585
|
-
}
|
|
586
|
-
else {
|
|
587
|
-
this.logger.warn(`Searched param "${paramName}" was not found in given param list `);
|
|
588
|
-
return '';
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
return path;
|
|
592
|
-
}
|
|
593
|
-
getStringFromUnknown(value) {
|
|
594
|
-
if (value === null || value === undefined) {
|
|
595
|
-
return '';
|
|
596
|
-
}
|
|
597
|
-
else if (typeof value === 'string') {
|
|
598
|
-
return value;
|
|
599
|
-
}
|
|
600
|
-
else {
|
|
601
|
-
return String(value);
|
|
602
|
-
}
|
|
447
|
+
return this.appStateService.currentWorkspace$.pipe(map((workspace) => doesUrlExistForWorkspace(workspace, productName, appId, endpointName, this.logger.warn)));
|
|
603
448
|
}
|
|
604
449
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: WorkspaceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
605
450
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: WorkspaceService, providedIn: 'root' }); }
|
|
@@ -680,11 +525,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
680
525
|
args: [{ providedIn: 'root' }]
|
|
681
526
|
}] });
|
|
682
527
|
|
|
528
|
+
class NotificationService {
|
|
529
|
+
constructor() {
|
|
530
|
+
this.notificationService = new NotificationService$1();
|
|
531
|
+
}
|
|
532
|
+
get notificationTopic() {
|
|
533
|
+
return this.notificationService.notificationTopic;
|
|
534
|
+
}
|
|
535
|
+
ngOnDestroy() {
|
|
536
|
+
this.notificationService.destroy();
|
|
537
|
+
}
|
|
538
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
539
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NotificationService, providedIn: 'root' }); }
|
|
540
|
+
}
|
|
541
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: NotificationService, decorators: [{
|
|
542
|
+
type: Injectable,
|
|
543
|
+
args: [{ providedIn: 'root' }]
|
|
544
|
+
}] });
|
|
545
|
+
|
|
683
546
|
// services
|
|
684
547
|
|
|
685
548
|
/**
|
|
686
549
|
* Generated bundle index. Do not edit.
|
|
687
550
|
*/
|
|
688
551
|
|
|
689
|
-
export { APPLICATION_NAME, APP_CONFIG, AppConfigService, AppStateService, CONFIG_KEY, ConfigurationService, DynamicTranslationService, IconService, ImageRepositoryService, POLYFILL_SCOPE_MODE, ParametersService, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ShellCapabilityService, ThemeService, UserService, WorkspaceService };
|
|
552
|
+
export { APPLICATION_NAME, APP_CONFIG, AppConfigService, AppStateService, CONFIG_KEY, ConfigurationService, DynamicTranslationService, IconService, ImageRepositoryService, NotificationService, POLYFILL_SCOPE_MODE, ParametersService, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ShellCapabilityService, ThemeService, UserService, WorkspaceService };
|
|
690
553
|
//# 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/utils/logger.utils.ts","../../../../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/shell-capability.service.ts","../../../../libs/angular-integration-interface/src/lib/services/parameters.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/image-repository.service.ts","../../../../libs/angular-integration-interface/src/lib/services/icon.service.ts","../../../../libs/angular-integration-interface/src/lib/services/dynamic-translation.service.ts","../../../../libs/angular-integration-interface/src/index.ts","../../../../libs/angular-integration-interface/src/onecx-angular-integration-interface.ts"],"sourcesContent":["// This file is not planned to be in the index.ts so it is private to this lib\nimport { createLoggerFactory } from '@onecx/accelerator'\n\nexport const createLogger = createLoggerFactory('@onecx/angular-integration-interface')\n","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'\nimport { createLogger } from '../utils/logger.utils'\n\n@Injectable()\nexport class AppConfigService {\n private http = inject(HttpClient)\n private readonly logger = createLogger('AppConfigService')\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 this.logger.error('Failed to load env configuration', e)\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 private _globalError$: GlobalErrorTopic | undefined\n get globalError$(): GlobalErrorTopic {\n this._globalError$ ??= new GlobalErrorTopic()\n return this._globalError$\n }\n set globalError$(source: GlobalErrorTopic) {\n this._globalError$ = source\n }\n private _globalLoading$: GlobalLoadingTopic | undefined\n get globalLoading$(): GlobalLoadingTopic {\n this._globalLoading$ ??= new GlobalLoadingTopic()\n return this._globalLoading$\n }\n set globalLoading$(source: GlobalLoadingTopic) {\n this._globalLoading$ = source\n }\n private _currentMfe$: CurrentMfeTopic | undefined\n get currentMfe$(): CurrentMfeTopic {\n this._currentMfe$ ??= new CurrentMfeTopic()\n return this._currentMfe$\n }\n set currentMfe$(source: CurrentMfeTopic) {\n this._currentMfe$ = source\n }\n private _currentLocation$: CurrentLocationTopic | undefined\n get currentLocation$(): CurrentLocationTopic {\n this._currentLocation$ ??= new CurrentLocationTopic()\n return this._currentLocation$\n }\n set currentLocation$(source: CurrentLocationTopic) {\n this._currentLocation$ = source\n }\n\n private _currentPage$: CurrentPageTopic | undefined\n /**\n * This topic will only fire when pageInfo.path matches document.location.pathname,\n * if not it will fire undefined.\n */\n get currentPage$(): CurrentPageTopic {\n this._currentPage$ ??= new CurrentPageTopic()\n return this._currentPage$\n }\n set currentPage$(source: CurrentPageTopic) {\n this._currentPage$ = source\n }\n _currentWorkspace$: CurrentWorkspaceTopic | undefined\n get currentWorkspace$(): CurrentWorkspaceTopic {\n this._currentWorkspace$ ??= new CurrentWorkspaceTopic()\n return this._currentWorkspace$\n }\n set currentWorkspace$(source: CurrentWorkspaceTopic) {\n this._currentWorkspace$ = source\n }\n\n /**\n * This Topic is initialized as soon as the authentication is done\n */\n private _isAuthenticated$: IsAuthenticatedTopic | undefined\n get isAuthenticated$(): IsAuthenticatedTopic {\n this._isAuthenticated$ ??= new IsAuthenticatedTopic()\n return this._isAuthenticated$\n }\n set isAuthenticated$(source: IsAuthenticatedTopic) {\n this._isAuthenticated$ = source\n }\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 KEYBOARD_FOCUSABLE_SELECTOR = 'KEYBOARD_FOCUSABLE_SELECTOR'\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'\nimport { createLogger } from '../utils/logger.utils'\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements OnDestroy {\n private http = inject(HttpClient)\n private readonly logger = createLogger('ConfigurationService')\n private defaultConfig = inject<{\n [key: string]: string\n }>(APP_CONFIG, { optional: true })\n\n _config$: ConfigurationTopic | undefined\n get config$() {\n this._config$ ??= new ConfigurationTopic()\n return this._config$\n }\n set config$(source: ConfigurationTopic) {\n this._config$ = source\n }\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 this.logger.info('ENV resolved from injected config')\n loadConfigPromise = Promise.resolve(inlinedConfig)\n } else {\n if (skipRemoteConfigLoad) {\n this.logger.info(\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 this.logger.error('Failed to load env configuration', e)\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 this.logger.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, UserProfile, UserProfileTopic } from '@onecx/integration-interface'\nimport { BehaviorSubject, firstValueFrom, map } from 'rxjs'\nimport { DEFAULT_LANG } from '../api/constants'\nimport { getNormalizedBrowserLocales } from '@onecx/accelerator'\nimport { createLogger } from '../utils/logger.utils'\n\nconst logger = createLogger('UserService')\n\n@Injectable({ providedIn: 'root' })\nexport class UserService implements OnDestroy {\n profile$ = new UserProfileTopic()\n lang$ = new BehaviorSubject(this.determineLanguage() ?? DEFAULT_LANG)\n\n _permissionsTopic$: PermissionsTopic | undefined\n get permissionsTopic$() {\n this._permissionsTopic$ ??= new PermissionsTopic()\n return this._permissionsTopic$\n }\n set permissionsTopic$(source: PermissionsTopic) {\n this._permissionsTopic$ = source\n }\n\n constructor() {\n this.profile$\n .pipe(\n map((profile) => {\n let locales = profile.settings?.locales\n\n if (!locales) {\n return this.useOldLangSetting(profile)\n }\n\n if (locales.length === 0) {\n locales = getNormalizedBrowserLocales()\n }\n\n // the lang$ should contain the first language, because locales is an ordered list\n // length of 2 is checked because we need the general language\n // never choose 'en-US', but choose 'en'\n const firstLang = locales.find((l) => l.length === 2) ?? DEFAULT_LANG\n return firstLang\n })\n )\n .subscribe(this.lang$)\n }\n\n ngOnDestroy(): void {\n this.profile$.destroy()\n this._permissionsTopic$?.destroy()\n }\n\n useOldLangSetting(profile: UserProfile): string {\n return profile.accountSettings?.localeAndTimeSettings?.locale ?? this.determineLanguage() ?? DEFAULT_LANG\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 logger.debug(`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 } from '@angular/core';\nimport { ShellCapability } from '@onecx/integration-interface';\n\n@Injectable({ providedIn: 'root' })\nexport class ShellCapabilityService {\n static setCapabilities(capabilities: ShellCapability[]): void {\n window['onecx-shell-capabilities'] = capabilities;\n }\n\n hasCapability(capability: ShellCapability): boolean {\n return window['onecx-shell-capabilities']?.includes(capability) ?? false;\n }\n}\n\nexport { ShellCapability as Capability } from '@onecx/integration-interface';\n\n","import { Injectable, OnDestroy, inject } from '@angular/core'\nimport { ParametersTopic } from '@onecx/integration-interface'\nimport { firstValueFrom, map } from 'rxjs'\nimport { AppStateService } from './app-state.service'\nimport { Capability, ShellCapabilityService } from './shell-capability.service'\n\ntype Parameter = boolean | number | string | object\n\n@Injectable({ providedIn: 'root' })\nexport class ParametersService implements OnDestroy {\n private shellCapabilityService = inject(ShellCapabilityService)\n private appStateService = inject(AppStateService)\n _parameters$: ParametersTopic | undefined\n get parameters$() {\n this._parameters$ ??= new ParametersTopic()\n return this._parameters$\n }\n set parameters$(source: ParametersTopic) {\n this._parameters$ = source\n }\n\n ngOnDestroy(): void {\n this._parameters$?.destroy()\n }\n\n /**\n * Use this method to get a parameter value in applications.\n *\n * @param key The key of the parameter to get. This is defined when the parameter is configured in parameter management.\n * @param defaultValue The default value that will be returned if the parameter is not found or if the shell is not yet providing the parameters because it is too old.\n */\n public async get<T extends Parameter>(key: string, defaultValue: T | Promise<T>): Promise<T>\n\n /**\n * Use this method to get a parameter value in remote components.\n *\n * @param key The key of the parameter to get. This is defined when the parameter is configured in parameter management.\n * @param defaultValue The default value that will be returned if the parameter is not found or if the shell is not yet providing the parameters because it is too old.\n * @param productName The name of the product in which the parameter is defined.\n * @param appId The id of the application in which the parameter is defined.\n * @returns The value of the parameter or the default value.\n */\n public async get<T extends Parameter>(\n key: string,\n defaultValue: T | Promise<T>,\n productName: string,\n appId: string\n ): Promise<T>\n\n public async get<T extends Parameter>(\n key: string,\n defaultValue: T | Promise<T>,\n productName: string | undefined = undefined,\n appId: string | undefined = undefined\n ): Promise<T> {\n if (!this.shellCapabilityService.hasCapability(Capability.PARAMETERS_TOPIC)) {\n return Promise.resolve(defaultValue)\n }\n\n if (!productName) {\n productName = await firstValueFrom(this.appStateService.currentMfe$.pipe(map((mfe) => mfe.productName)))\n }\n if (!appId) {\n appId = await firstValueFrom(this.appStateService.currentMfe$.pipe(map((mfe) => mfe.appId)))\n }\n\n return firstValueFrom(\n this.parameters$.pipe(\n map(\n (payload) =>\n payload.parameters.find((p) => p.productName === productName && p.appId === appId)?.parameters[key] as T\n )\n )\n ).then((value): Promise<T> => {\n if (value === undefined) {\n return Promise.resolve(defaultValue)\n } else {\n return Promise.resolve(value)\n }\n })\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$: MessageTopic | undefined\n get message$() {\n this._message$ ??= new MessageTopic()\n return this._message$\n }\n set message$(source: MessageTopic) {\n this._message$ = source\n }\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$: CurrentThemeTopic | undefined\n get currentTheme$() {\n this._currentTheme$ ??= new CurrentThemeTopic()\n return this._currentTheme$\n }\n set currentTheme$(source: CurrentThemeTopic) {\n this._currentTheme$ = source\n }\n ngOnDestroy(): void {\n this._currentTheme$?.destroy()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { RemoteComponentsTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class RemoteComponentsService implements OnDestroy {\n _remoteComponents$: RemoteComponentsTopic | undefined\n get remoteComponents$() {\n this._remoteComponents$ ??= new RemoteComponentsTopic()\n return this._remoteComponents$\n }\n set remoteComponents$(source: RemoteComponentsTopic) {\n this._remoteComponents$ = source\n }\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'\nimport { createLogger } from '../utils/logger.utils'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkspaceService {\n protected appStateService = inject(AppStateService)\n\n private readonly logger = createLogger('WorkspaceService')\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 this.logger.warn('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 this.logger.warn(\n `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 this.logger.warn('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 this.logger.warn('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 this.logger.warn('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 this.logger.warn(`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, OnDestroy } from \"@angular/core\";\nimport { ImageRepositoryService as ImageRepositoryInterface } from '@onecx/integration-interface'\n\n@Injectable({providedIn: 'root'}) \nexport class ImageRepositoryService implements OnDestroy {\n private readonly imageRepositoryInterface = new ImageRepositoryInterface();\n\n get imageRepositoryTopic() {\n return this.imageRepositoryInterface.imageRepositoryTopic;\n }\n\n async getUrl(names: string[]): Promise<string | undefined>;\n async getUrl(names: string[], fallbackUrl: string): Promise<string>;\n async getUrl(names: string[], fallbackUrl?: string): Promise<string | undefined> {\n if (fallbackUrl) {\n return this.imageRepositoryInterface.getUrl(names, fallbackUrl);\n }\n return this.imageRepositoryInterface.getUrl(names);\n }\n\n ngOnDestroy(): void {\n this.imageRepositoryInterface.destroy();\n }\n}","import { Injectable, OnDestroy } from '@angular/core'\nimport { IconService as IconServiceInterface, IconClassType, IconTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class IconService implements OnDestroy {\n private readonly iconServiceInterface = new IconServiceInterface()\n\n get iconTopic(): IconTopic {\n return this.iconServiceInterface.iconTopic;\n }\n\n requestIcon(name: string, type?: IconClassType): string {\n return this.iconServiceInterface.requestIcon(name, type)\n }\n\n requestIconAsync(name: string, type?: IconClassType): Promise<string | null> {\n return this.iconServiceInterface.requestIconAsync(name, type)\n }\n\n ngOnDestroy(): void {\n this.iconServiceInterface.destroy();\n }\n}","import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n DynamicTranslationService as DynamicTranslationInterface,\n TranslationContext,\n} from '@onecx/integration-interface';\n\n@Injectable({ providedIn: 'root' })\nexport class DynamicTranslationService implements OnDestroy {\n private readonly dynamicTranslationInterface = new DynamicTranslationInterface();\n\n get dynamicTranslationsTopic$() {\n return this.dynamicTranslationInterface.dynamicTranslationsTopic$;\n }\n\n getTranslations(\n lang: string,\n contexts: TranslationContext[]\n ): Observable<Record<string, Record<string, unknown>>> {\n return this.dynamicTranslationInterface.getTranslations(lang, contexts);\n }\n\n ngOnDestroy(): void {\n this.dynamicTranslationInterface.destroy();\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/parameters.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'\nexport * from './lib/services/image-repository.service'\nexport * from './lib/services/icon.service'\nexport * from './lib/services/dynamic-translation.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":["Capability","ImageRepositoryInterface","IconServiceInterface","DynamicTranslationInterface"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"onecx-angular-integration-interface.mjs","sources":["../../../../libs/angular-integration-interface/src/lib/utils/logger.utils.ts","../../../../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/shell-capability.service.ts","../../../../libs/angular-integration-interface/src/lib/services/parameters.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/image-repository.service.ts","../../../../libs/angular-integration-interface/src/lib/services/icon.service.ts","../../../../libs/angular-integration-interface/src/lib/services/dynamic-translation.service.ts","../../../../libs/angular-integration-interface/src/lib/services/notification.service.ts","../../../../libs/angular-integration-interface/src/index.ts","../../../../libs/angular-integration-interface/src/onecx-angular-integration-interface.ts"],"sourcesContent":["// This file is not planned to be in the index.ts so it is private to this lib\nimport { createLoggerFactory } from '@onecx/accelerator'\n\nexport const createLogger = createLoggerFactory('@onecx/angular-integration-interface')\n","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'\nimport { createLogger } from '../utils/logger.utils'\n\n@Injectable()\nexport class AppConfigService {\n private http = inject(HttpClient)\n private readonly logger = createLogger('AppConfigService')\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 this.logger.error('Failed to load env configuration', e)\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 private _globalError$: GlobalErrorTopic | undefined\n get globalError$(): GlobalErrorTopic {\n this._globalError$ ??= new GlobalErrorTopic()\n return this._globalError$\n }\n set globalError$(source: GlobalErrorTopic) {\n this._globalError$ = source\n }\n private _globalLoading$: GlobalLoadingTopic | undefined\n get globalLoading$(): GlobalLoadingTopic {\n this._globalLoading$ ??= new GlobalLoadingTopic()\n return this._globalLoading$\n }\n set globalLoading$(source: GlobalLoadingTopic) {\n this._globalLoading$ = source\n }\n private _currentMfe$: CurrentMfeTopic | undefined\n get currentMfe$(): CurrentMfeTopic {\n this._currentMfe$ ??= new CurrentMfeTopic()\n return this._currentMfe$\n }\n set currentMfe$(source: CurrentMfeTopic) {\n this._currentMfe$ = source\n }\n private _currentLocation$: CurrentLocationTopic | undefined\n get currentLocation$(): CurrentLocationTopic {\n this._currentLocation$ ??= new CurrentLocationTopic()\n return this._currentLocation$\n }\n set currentLocation$(source: CurrentLocationTopic) {\n this._currentLocation$ = source\n }\n\n private _currentPage$: CurrentPageTopic | undefined\n /**\n * This topic will only fire when pageInfo.path matches document.location.pathname,\n * if not it will fire undefined.\n */\n get currentPage$(): CurrentPageTopic {\n this._currentPage$ ??= new CurrentPageTopic()\n return this._currentPage$\n }\n set currentPage$(source: CurrentPageTopic) {\n this._currentPage$ = source\n }\n _currentWorkspace$: CurrentWorkspaceTopic | undefined\n get currentWorkspace$(): CurrentWorkspaceTopic {\n this._currentWorkspace$ ??= new CurrentWorkspaceTopic()\n return this._currentWorkspace$\n }\n set currentWorkspace$(source: CurrentWorkspaceTopic) {\n this._currentWorkspace$ = source\n }\n\n /**\n * This Topic is initialized as soon as the authentication is done\n */\n private _isAuthenticated$: IsAuthenticatedTopic | undefined\n get isAuthenticated$(): IsAuthenticatedTopic {\n this._isAuthenticated$ ??= new IsAuthenticatedTopic()\n return this._isAuthenticated$\n }\n set isAuthenticated$(source: IsAuthenticatedTopic) {\n this._isAuthenticated$ = source\n }\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 KEYCLOAK_TIME_SKEW = 'KEYCLOAK_TIME_SKEW',\n KEYCLOAK_UPDATE_TOKEN_MIN_VALIDITY = 'KEYCLOAK_UPDATE_TOKEN_MIN_VALIDITY',\n KEYCLOAK_ON_TOKEN_EXPIRED_ENABLED = 'KEYCLOAK_ON_TOKEN_EXPIRED_ENABLED',\n KEYCLOAK_ON_AUTH_REFRESH_ERROR_ENABLED = 'KEYCLOAK_ON_AUTH_REFRESH_ERROR_ENABLED',\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 KEYBOARD_FOCUSABLE_SELECTOR = 'KEYBOARD_FOCUSABLE_SELECTOR',\n CUSTOM_AUTH_SHARE_SCOPE = 'CUSTOM_AUTH_SHARE_SCOPE',\n}\n\nexport enum POLYFILL_SCOPE_MODE {\n PERFORMANCE = 'PERFORMANCE',\n PRECISION = 'PRECISION',\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Injectable, OnDestroy, inject } from '@angular/core'\nimport { firstValueFrom, map } from 'rxjs'\nimport { Config, ConfigurationTopic, resolveConfigPayload } from '@onecx/integration-interface'\nimport { APP_CONFIG } from '../api/injection-tokens'\nimport { CONFIG_KEY } from '../model/config-key.model'\nimport Semaphore from 'ts-semaphore'\nimport { createLogger } from '../utils/logger.utils'\n\n@Injectable({ providedIn: 'root' })\nexport class ConfigurationService implements OnDestroy {\n private http = inject(HttpClient)\n private readonly logger = createLogger('ConfigurationService')\n private defaultConfig = inject<{\n [key: string]: string\n }>(APP_CONFIG, { optional: true })\n\n _config$: ConfigurationTopic | undefined\n get config$() {\n this._config$ ??= new ConfigurationTopic()\n return this._config$\n }\n set config$(source: ConfigurationTopic) {\n this._config$ = source\n }\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?.['skipRemoteConfigLoad']\n const remoteConfigURL = this.defaultConfig?.['remoteConfigURL'] ?? undefined\n\n resolveConfigPayload({\n defaultConfig: this.defaultConfig ?? {},\n skipRemoteConfigLoad: !!skipRemoteConfigLoad,\n remoteConfigURL,\n loadRemoteConfig: (url) => firstValueFrom(this.http.get<Config>(url)),\n })\n .then(async ({ config, source }) => {\n if (source === 'inlined') {\n this.logger.info('ENV resolved from injected config')\n }\n if (source === 'default' && skipRemoteConfigLoad) {\n this.logger.info(\n '📢 TKA001: Remote config load is disabled. To enable it, remove the \"skipRemoteConfigLoad\" key in your environment.json'\n )\n }\n\n await this.config$.publish({ ...this.defaultConfig, ...(config ?? {}) }).then(() => {\n resolve(true)\n })\n })\n .catch((e) => {\n this.logger.error('Failed to load env configuration', e)\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 this.logger.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 {\n PermissionsTopic,\n type UserProfile,\n UserProfileTopic,\n determineBrowserLanguage,\n resolveLegacyLanguage,\n resolveProfileLanguage,\n} from '@onecx/integration-interface'\nimport { BehaviorSubject, firstValueFrom, map } from 'rxjs'\nimport { DEFAULT_LANG } from '../api/constants'\nimport { getNormalizedBrowserLocales } from '@onecx/accelerator'\nimport { createLogger } from '../utils/logger.utils'\n\nconst logger = createLogger('UserService')\n\n@Injectable({ providedIn: 'root' })\nexport class UserService implements OnDestroy {\n profile$ = new UserProfileTopic()\n lang$ = new BehaviorSubject(determineBrowserLanguage() ?? DEFAULT_LANG)\n\n _permissionsTopic$: PermissionsTopic | undefined\n get permissionsTopic$() {\n this._permissionsTopic$ ??= new PermissionsTopic()\n return this._permissionsTopic$\n }\n set permissionsTopic$(source: PermissionsTopic) {\n this._permissionsTopic$ = source\n }\n\n constructor() {\n this.profile$\n .pipe(\n map((profile) => {\n return resolveProfileLanguage(profile, DEFAULT_LANG, getNormalizedBrowserLocales)\n })\n )\n .subscribe(this.lang$)\n }\n\n ngOnDestroy(): void {\n this.profile$.destroy()\n this._permissionsTopic$?.destroy()\n }\n\n useOldLangSetting(profile: UserProfile): string {\n return resolveLegacyLanguage(profile, DEFAULT_LANG, determineBrowserLanguage)\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 logger.debug(`No permission for: ${permissionKey}`)\n }\n return !!result\n })\n )\n )\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 } from '@angular/core'\nimport { ShellCapability, hasShellCapability, setShellCapabilities } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class ShellCapabilityService {\n static setCapabilities(capabilities: ShellCapability[]): void {\n setShellCapabilities(capabilities)\n }\n\n hasCapability(capability: ShellCapability): boolean {\n return hasShellCapability(capability)\n }\n}\nexport { ShellCapability as Capability } from '@onecx/integration-interface'\n","import { Injectable, OnDestroy, inject } from '@angular/core'\nimport {\n ParametersTopic,\n findParameterValue,\n type ParameterValue,\n ShellCapability as Capability,\n Parameters,\n} from '@onecx/integration-interface'\nimport { firstValueFrom, map } from 'rxjs'\nimport { AppStateService } from './app-state.service'\nimport { ShellCapabilityService } from './shell-capability.service'\n\n@Injectable({ providedIn: 'root' })\nexport class ParametersService implements OnDestroy {\n private readonly shellCapabilityService = inject(ShellCapabilityService)\n private readonly appStateService = inject(AppStateService)\n _parameters$: ParametersTopic | undefined\n get parameters$() {\n this._parameters$ ??= new ParametersTopic()\n return this._parameters$\n }\n set parameters$(source: ParametersTopic) {\n this._parameters$ = source\n }\n\n ngOnDestroy(): void {\n this._parameters$?.destroy()\n }\n\n /**\n * Use this method to get a parameter value in applications.\n *\n * @param key The key of the parameter to get. This is defined when the parameter is configured in parameter management.\n * @param defaultValue The default value that will be returned if the parameter is not found or if the shell is not yet providing the parameters because it is too old.\n */\n public async get<T extends ParameterValue>(key: string, defaultValue: T | Promise<T>): Promise<T>\n\n /**\n * Use this method to get a parameter value in remote components.\n *\n * @param key The key of the parameter to get. This is defined when the parameter is configured in parameter management.\n * @param defaultValue The default value that will be returned if the parameter is not found or if the shell is not yet providing the parameters because it is too old.\n * @param productName The name of the product in which the parameter is defined.\n * @param appId The id of the application in which the parameter is defined.\n * @returns The value of the parameter or the default value.\n */\n public async get<T extends ParameterValue>(\n key: string,\n defaultValue: T | Promise<T>,\n productName: string,\n appId: string\n ): Promise<T>\n\n public async get<T extends Parameters>(\n key: string,\n defaultValue: T | Promise<T>,\n productName: string | undefined = undefined,\n appId: string | undefined = undefined\n ): Promise<T> {\n if (!this.shellCapabilityService.hasCapability(Capability.PARAMETERS_TOPIC)) {\n return defaultValue\n }\n\n if (!productName) {\n productName = await firstValueFrom(this.appStateService.currentMfe$.pipe(map((mfe) => mfe.productName)))\n }\n if (!appId) {\n appId = await firstValueFrom(this.appStateService.currentMfe$.pipe(map((mfe) => mfe.appId)))\n }\n\n return firstValueFrom(\n this.parameters$.pipe(map((payload) => findParameterValue(payload, key, productName, appId) as T))\n ).then((value): T => value ?? defaultValue)\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core'\nimport { TranslateService } from '@ngx-translate/core'\nimport { MessageTopic, buildPortalMessagePayload, type PortalMessage } from '@onecx/integration-interface'\nimport { combineLatest, first, of } from 'rxjs'\n\nexport type Message = PortalMessage\n\n@Injectable({ providedIn: 'any' })\nexport class PortalMessageService implements OnDestroy {\n private translateService = inject(TranslateService)\n\n _message$: MessageTopic | undefined\n get message$() {\n this._message$ ??= new MessageTopic()\n return this._message$\n }\n set message$(source: MessageTopic) {\n this._message$ = source\n }\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(buildPortalMessagePayload(severity, msg, summaryTranslation, detailTranslation))\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$: CurrentThemeTopic | undefined\n get currentTheme$() {\n this._currentTheme$ ??= new CurrentThemeTopic()\n return this._currentTheme$\n }\n set currentTheme$(source: CurrentThemeTopic) {\n this._currentTheme$ = source\n }\n ngOnDestroy(): void {\n this._currentTheme$?.destroy()\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { RemoteComponentsTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class RemoteComponentsService implements OnDestroy {\n _remoteComponents$: RemoteComponentsTopic | undefined\n get remoteComponents$() {\n this._remoteComponents$ ??= new RemoteComponentsTopic()\n return this._remoteComponents$\n }\n set remoteComponents$(source: RemoteComponentsTopic) {\n this._remoteComponents$ = source\n }\n\n ngOnDestroy(): void {\n this._remoteComponents$?.destroy()\n }\n}\n","import { Injectable, inject } from '@angular/core'\nimport { constructRouteUrl, doesUrlExistForWorkspace, type EndpointParameters } from '@onecx/integration-interface'\nimport { Observable, map } from 'rxjs'\nimport { AppStateService } from './app-state.service'\nimport { createLogger } from '../utils/logger.utils'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WorkspaceService {\n protected appStateService = inject(AppStateService)\n\n private readonly logger = createLogger('WorkspaceService')\n\n getUrl(\n productName: string,\n appId: string,\n endpointName?: string,\n endpointParameters?: EndpointParameters\n ): Observable<string> {\n return this.appStateService.currentWorkspace$.pipe(\n map((workspace) => {\n const finalUrl = constructRouteUrl(\n workspace,\n appId,\n productName,\n endpointName,\n endpointParameters,\n this.logger.warn\n )\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) => doesUrlExistForWorkspace(workspace, productName, appId, endpointName, this.logger.warn))\n )\n }\n}\n","import { Injectable, OnDestroy } from \"@angular/core\";\nimport { ImageRepositoryService as ImageRepositoryInterface } from '@onecx/integration-interface'\n\n@Injectable({providedIn: 'root'}) \nexport class ImageRepositoryService implements OnDestroy {\n private readonly imageRepositoryInterface = new ImageRepositoryInterface();\n\n get imageRepositoryTopic() {\n return this.imageRepositoryInterface.imageRepositoryTopic;\n }\n\n async getUrl(names: string[]): Promise<string | undefined>;\n async getUrl(names: string[], fallbackUrl: string): Promise<string>;\n async getUrl(names: string[], fallbackUrl?: string): Promise<string | undefined> {\n if (fallbackUrl) {\n return this.imageRepositoryInterface.getUrl(names, fallbackUrl);\n }\n return this.imageRepositoryInterface.getUrl(names);\n }\n\n ngOnDestroy(): void {\n this.imageRepositoryInterface.destroy();\n }\n}","import { Injectable, OnDestroy } from '@angular/core'\nimport { IconService as IconServiceInterface, IconClassType, IconTopic } from '@onecx/integration-interface'\n\n@Injectable({ providedIn: 'root' })\nexport class IconService implements OnDestroy {\n private readonly iconServiceInterface = new IconServiceInterface()\n\n get iconTopic(): IconTopic {\n return this.iconServiceInterface.iconTopic;\n }\n\n requestIcon(name: string, type?: IconClassType): string {\n return this.iconServiceInterface.requestIcon(name, type)\n }\n\n requestIconAsync(name: string, type?: IconClassType): Promise<string | null> {\n return this.iconServiceInterface.requestIconAsync(name, type)\n }\n\n ngOnDestroy(): void {\n this.iconServiceInterface.destroy();\n }\n}","import { Injectable, OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n DynamicTranslationService as DynamicTranslationInterface,\n TranslationContext,\n} from '@onecx/integration-interface';\n\n@Injectable({ providedIn: 'root' })\nexport class DynamicTranslationService implements OnDestroy {\n private readonly dynamicTranslationInterface = new DynamicTranslationInterface();\n\n get dynamicTranslationsTopic$() {\n return this.dynamicTranslationInterface.dynamicTranslationsTopic$;\n }\n\n getTranslations(\n lang: string,\n contexts: TranslationContext[]\n ): Observable<Record<string, Record<string, unknown>>> {\n return this.dynamicTranslationInterface.getTranslations(lang, contexts);\n }\n\n ngOnDestroy(): void {\n this.dynamicTranslationInterface.destroy();\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core'\nimport { NotificationService as NotificationServiceFromIntegrationInterface, NotificationTopic } from '@onecx/integration-interface'\n\n\n@Injectable({ providedIn: 'root' })\nexport class NotificationService implements OnDestroy {\n\n private readonly notificationService = new NotificationServiceFromIntegrationInterface()\n\n get notificationTopic(): NotificationTopic {\n return this.notificationService.notificationTopic;\n }\n\n ngOnDestroy(): void {\n this.notificationService.destroy();\n }\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/parameters.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'\nexport * from './lib/services/image-repository.service'\nexport * from './lib/services/icon.service'\nexport * from './lib/services/dynamic-translation.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\nexport * from './lib/services/image-repository.service'\nexport * from './lib/services/notification.service'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Capability","ImageRepositoryInterface","IconServiceInterface","DynamicTranslationInterface","NotificationServiceFromIntegrationInterface"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onecx/angular-integration-interface",
|
|
3
|
-
"version": "8.0.0-rc.
|
|
3
|
+
"version": "8.0.0-rc.12",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
},
|
|
9
9
|
"peerDependencies": {
|
|
10
10
|
"@angular/core": "^21.0.0",
|
|
11
|
-
"@onecx/accelerator": "^8.0.0-rc.
|
|
12
|
-
"@onecx/integration-interface": "^8.0.0-rc.
|
|
11
|
+
"@onecx/accelerator": "^8.0.0-rc.12",
|
|
12
|
+
"@onecx/integration-interface": "^8.0.0-rc.12",
|
|
13
13
|
"rxjs": "~7.8.1",
|
|
14
14
|
"@phenomnomnominal/tsquery": "^6",
|
|
15
15
|
"ts-semaphore": "^1.0.0",
|
|
@@ -3,7 +3,7 @@ import { BehaviorSubject, Observable } from 'rxjs';
|
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { OnDestroy, InjectionToken } from '@angular/core';
|
|
5
5
|
import * as _onecx_integration_interface from '@onecx/integration-interface';
|
|
6
|
-
import { GlobalErrorTopic, GlobalLoadingTopic, CurrentMfeTopic, CurrentLocationTopic, CurrentPageTopic, CurrentWorkspaceTopic, IsAuthenticatedTopic, ConfigurationTopic, Config, UserProfileTopic, PermissionsTopic, UserProfile, ParametersTopic, MessageTopic, CurrentThemeTopic, RemoteComponentsTopic, ShellCapability, IconTopic, IconClassType, TranslationContext } from '@onecx/integration-interface';
|
|
6
|
+
import { GlobalErrorTopic, GlobalLoadingTopic, CurrentMfeTopic, CurrentLocationTopic, CurrentPageTopic, CurrentWorkspaceTopic, IsAuthenticatedTopic, ConfigurationTopic, Config, UserProfileTopic, PermissionsTopic, UserProfile, ParametersTopic, ParameterValue, PortalMessage, MessageTopic, CurrentThemeTopic, RemoteComponentsTopic, EndpointParameters, ShellCapability, IconTopic, IconClassType, TranslationContext, NotificationTopic } from '@onecx/integration-interface';
|
|
7
7
|
export { ShellCapability as Capability, MfeInfo, Theme } from '@onecx/integration-interface';
|
|
8
8
|
|
|
9
9
|
declare class AppConfigService {
|
|
@@ -69,6 +69,10 @@ declare enum CONFIG_KEY {
|
|
|
69
69
|
KEYCLOAK_ENABLE_SILENT_SSO = "KEYCLOAK_ENABLE_SILENT_SSO",
|
|
70
70
|
KEYCLOAK_URL = "KEYCLOAK_URL",
|
|
71
71
|
KEYCLOAK_CLIENT_ID = "KEYCLOAK_CLIENT_ID",
|
|
72
|
+
KEYCLOAK_TIME_SKEW = "KEYCLOAK_TIME_SKEW",
|
|
73
|
+
KEYCLOAK_UPDATE_TOKEN_MIN_VALIDITY = "KEYCLOAK_UPDATE_TOKEN_MIN_VALIDITY",
|
|
74
|
+
KEYCLOAK_ON_TOKEN_EXPIRED_ENABLED = "KEYCLOAK_ON_TOKEN_EXPIRED_ENABLED",
|
|
75
|
+
KEYCLOAK_ON_AUTH_REFRESH_ERROR_ENABLED = "KEYCLOAK_ON_AUTH_REFRESH_ERROR_ENABLED",
|
|
72
76
|
ONECX_PORTAL_FAVORITES_DISABLED = "ONECX_PORTAL_FAVORITES_DISABLED",
|
|
73
77
|
ONECX_PORTAL_FEEDBACK_DISABLED = "ONECX_PORTAL_FEEDBACK_DISABLED",
|
|
74
78
|
ONECX_PORTAL_SEARCH_DISABLED = "ONECX_PORTAL_SEARCH_DISABLED",
|
|
@@ -85,7 +89,8 @@ declare enum CONFIG_KEY {
|
|
|
85
89
|
AUTH_SERVICE_CUSTOM_URL = "AUTH_SERVICE_CUSTOM_URL",
|
|
86
90
|
AUTH_SERVICE_CUSTOM_MODULE_NAME = "AUTH_SERVICE_CUSTOM_MODULE_NAME",
|
|
87
91
|
POLYFILL_SCOPE_MODE = "POLYFILL_SCOPE_MODE",
|
|
88
|
-
KEYBOARD_FOCUSABLE_SELECTOR = "KEYBOARD_FOCUSABLE_SELECTOR"
|
|
92
|
+
KEYBOARD_FOCUSABLE_SELECTOR = "KEYBOARD_FOCUSABLE_SELECTOR",
|
|
93
|
+
CUSTOM_AUTH_SHARE_SCOPE = "CUSTOM_AUTH_SHARE_SCOPE"
|
|
89
94
|
}
|
|
90
95
|
declare enum POLYFILL_SCOPE_MODE {
|
|
91
96
|
PERFORMANCE = "PERFORMANCE",
|
|
@@ -121,16 +126,14 @@ declare class UserService implements OnDestroy {
|
|
|
121
126
|
useOldLangSetting(profile: UserProfile): string;
|
|
122
127
|
getPermissions(): rxjs.Observable<string[]>;
|
|
123
128
|
hasPermission(permissionKey: string | string[] | undefined): Promise<boolean>;
|
|
124
|
-
private determineLanguage;
|
|
125
129
|
get isInitialized(): Promise<void>;
|
|
126
130
|
static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
|
|
127
131
|
static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
|
|
128
132
|
}
|
|
129
133
|
|
|
130
|
-
type Parameter = boolean | number | string | object;
|
|
131
134
|
declare class ParametersService implements OnDestroy {
|
|
132
|
-
private shellCapabilityService;
|
|
133
|
-
private appStateService;
|
|
135
|
+
private readonly shellCapabilityService;
|
|
136
|
+
private readonly appStateService;
|
|
134
137
|
_parameters$: ParametersTopic | undefined;
|
|
135
138
|
get parameters$(): ParametersTopic;
|
|
136
139
|
set parameters$(source: ParametersTopic);
|
|
@@ -141,7 +144,7 @@ declare class ParametersService implements OnDestroy {
|
|
|
141
144
|
* @param key The key of the parameter to get. This is defined when the parameter is configured in parameter management.
|
|
142
145
|
* @param defaultValue The default value that will be returned if the parameter is not found or if the shell is not yet providing the parameters because it is too old.
|
|
143
146
|
*/
|
|
144
|
-
get<T extends
|
|
147
|
+
get<T extends ParameterValue>(key: string, defaultValue: T | Promise<T>): Promise<T>;
|
|
145
148
|
/**
|
|
146
149
|
* Use this method to get a parameter value in remote components.
|
|
147
150
|
*
|
|
@@ -151,26 +154,12 @@ declare class ParametersService implements OnDestroy {
|
|
|
151
154
|
* @param appId The id of the application in which the parameter is defined.
|
|
152
155
|
* @returns The value of the parameter or the default value.
|
|
153
156
|
*/
|
|
154
|
-
get<T extends
|
|
157
|
+
get<T extends ParameterValue>(key: string, defaultValue: T | Promise<T>, productName: string, appId: string): Promise<T>;
|
|
155
158
|
static ɵfac: i0.ɵɵFactoryDeclaration<ParametersService, never>;
|
|
156
159
|
static ɵprov: i0.ɵɵInjectableDeclaration<ParametersService>;
|
|
157
160
|
}
|
|
158
161
|
|
|
159
|
-
type Message =
|
|
160
|
-
summaryKey?: string;
|
|
161
|
-
summaryParameters?: object;
|
|
162
|
-
detailKey?: string;
|
|
163
|
-
detailParameters?: object;
|
|
164
|
-
id?: any;
|
|
165
|
-
key?: string;
|
|
166
|
-
life?: number;
|
|
167
|
-
sticky?: boolean;
|
|
168
|
-
closable?: boolean;
|
|
169
|
-
data?: any;
|
|
170
|
-
icon?: string;
|
|
171
|
-
contentStyleClass?: string;
|
|
172
|
-
styleClass?: string;
|
|
173
|
-
};
|
|
162
|
+
type Message = PortalMessage;
|
|
174
163
|
declare class PortalMessageService implements OnDestroy {
|
|
175
164
|
private translateService;
|
|
176
165
|
_message$: MessageTopic | undefined;
|
|
@@ -207,19 +196,8 @@ declare class RemoteComponentsService implements OnDestroy {
|
|
|
207
196
|
declare class WorkspaceService {
|
|
208
197
|
protected appStateService: AppStateService;
|
|
209
198
|
private readonly logger;
|
|
210
|
-
|
|
211
|
-
private aliasEnd;
|
|
212
|
-
private paramStart;
|
|
213
|
-
private paramEnd;
|
|
214
|
-
getUrl(productName: string, appId: string, endpointName?: string, endpointParameters?: Record<string, unknown>): Observable<string>;
|
|
199
|
+
getUrl(productName: string, appId: string, endpointName?: string, endpointParameters?: EndpointParameters): Observable<string>;
|
|
215
200
|
doesUrlExistFor(productName: string, appId: string, endpointName?: string): Observable<boolean>;
|
|
216
|
-
private constructBaseUrlFromWorkspace;
|
|
217
|
-
private constructRouteUrl;
|
|
218
|
-
private constructEndpointUrl;
|
|
219
|
-
private filterRouteFromList;
|
|
220
|
-
private dissolveEndpoint;
|
|
221
|
-
private fillParamsForPath;
|
|
222
|
-
private getStringFromUnknown;
|
|
223
201
|
static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceService, never>;
|
|
224
202
|
static ɵprov: i0.ɵɵInjectableDeclaration<WorkspaceService>;
|
|
225
203
|
}
|
|
@@ -276,5 +254,13 @@ declare const APP_CONFIG: InjectionToken<LibConfig>;
|
|
|
276
254
|
declare const SANITY_CHECK: InjectionToken<string>;
|
|
277
255
|
declare const APPLICATION_NAME: InjectionToken<string>;
|
|
278
256
|
|
|
279
|
-
|
|
257
|
+
declare class NotificationService implements OnDestroy {
|
|
258
|
+
private readonly notificationService;
|
|
259
|
+
get notificationTopic(): NotificationTopic;
|
|
260
|
+
ngOnDestroy(): void;
|
|
261
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NotificationService, never>;
|
|
262
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NotificationService>;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export { APPLICATION_NAME, APP_CONFIG, AppConfigService, AppStateService, CONFIG_KEY, ConfigurationService, DynamicTranslationService, IconService, ImageRepositoryService, NotificationService, POLYFILL_SCOPE_MODE, ParametersService, PortalMessageService, RemoteComponentsService, SANITY_CHECK, ShellCapabilityService, ThemeService, UserService, WorkspaceService };
|
|
280
266
|
export type { LibConfig, Message };
|