aril 1.1.96 → 1.1.97
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/boot/bridge/index.d.ts +2 -0
- package/boot/bridge/src/mfe-bridge.d.ts +33 -0
- package/boot/bridge/src/provide-mfe-bridge.d.ts +1 -0
- package/boot/config/apps/src/apps.service.d.ts +7 -4
- package/boot/config/plugins/src/getNgZone.d.ts +1 -1
- package/boot/host/src/app.component.d.ts +5 -3
- package/boot/mfe/src/app.component.d.ts +4 -2
- package/esm2022/boot/bridge/aril-boot-bridge.mjs +5 -0
- package/esm2022/boot/bridge/index.mjs +3 -0
- package/esm2022/boot/bridge/src/mfe-bridge.mjs +59 -0
- package/esm2022/boot/bridge/src/provide-mfe-bridge.mjs +6 -0
- package/esm2022/boot/config/api/src/api.service.mjs +10 -6
- package/esm2022/boot/config/apps/src/apps.service.mjs +12 -15
- package/esm2022/boot/config/plugins/src/getNgZone.mjs +4 -3
- package/esm2022/boot/config/plugins/src/plugins.service.mjs +4 -2
- package/esm2022/boot/host/src/app.component.mjs +11 -10
- package/esm2022/boot/host/src/bootstrap.mjs +4 -2
- package/esm2022/boot/mfe/src/app.component.mjs +15 -12
- package/esm2022/boot/mfe/src/bootstrap.mjs +4 -2
- package/esm2022/boot/mfe/src/loadStyles.mjs +3 -2
- package/esm2022/keycloak/src/auth.interceptor.mjs +3 -2
- package/esm2022/provider/src/prodiveHost.mjs +3 -2
- package/esm2022/provider/src/prodiveHostRouter.mjs +4 -3
- package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -3
- package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +3 -4
- package/esm2022/theme/layout/app/general-search/general-search.component.mjs +3 -2
- package/esm2022/theme/layout/app/history/history.service.mjs +3 -2
- package/esm2022/theme/layout/app/layout/app.layout.component.mjs +1 -2
- package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +3 -2
- package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +3 -4
- package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +7 -4
- package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -3
- package/fesm2022/{aril-app.component-hxaLgwmC.mjs → aril-app.component-FxPod9bE.mjs} +15 -12
- package/fesm2022/aril-app.component-FxPod9bE.mjs.map +1 -0
- package/fesm2022/aril-boot-bridge.mjs +70 -0
- package/fesm2022/aril-boot-bridge.mjs.map +1 -0
- package/fesm2022/aril-boot-config-api.mjs +10 -6
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +11 -14
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +5 -3
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +13 -10
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-s1a-tkOD.mjs → aril-boot-mfe-app.component-dZp2aSTk.mjs} +16 -13
- package/fesm2022/aril-boot-mfe-app.component-dZp2aSTk.mjs.map +1 -0
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs → aril-boot-mfe-aril-boot-mfe-mm6nhyRL.mjs} +6 -4
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-mm6nhyRL.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +2 -1
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs +2 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-provider.mjs +4 -3
- package/fesm2022/aril-provider.mjs.map +1 -1
- package/fesm2022/aril-theme-layout.mjs +13 -15
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-util-directives.mjs +3 -2
- package/fesm2022/aril-util-directives.mjs.map +1 -1
- package/fesm2022/aril.mjs +17 -13
- package/fesm2022/aril.mjs.map +1 -1
- package/package.json +145 -139
- package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +3 -2
- package/theme/layout/app/expandableMenu/expandable-menu.component.d.ts +0 -2
- package/theme/layout/app/expandableMenu/expandable-menu.component.ts +2 -3
- package/theme/layout/app/general-search/general-search.component.ts +2 -1
- package/theme/layout/app/history/history.service.ts +2 -1
- package/theme/layout/app/layout/app.layout.component.d.ts +0 -1
- package/theme/layout/app/layout/app.layout.component.ts +0 -1
- package/theme/layout/app/site-map/site-map-sidebar.component.ts +2 -1
- package/theme/layout/app/static-sidebar/static-sidebar.component.ts +2 -3
- package/theme/layout/app/topbar/app.topbar.component.ts +6 -3
- package/fesm2022/aril-app.component-hxaLgwmC.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-app.component-s1a-tkOD.mjs.map +0 -1
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aril-app.component-FxPod9bE.mjs","sources":["../../projects/aril/boot/mfe/src/app.component.ts"],"sourcesContent":["import { Component, NgZone, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { PrimeNGConfig } from 'primeng/api';\r\n\r\nimport { ModuleFederationToolsModule, connectRouter } from '@angular-architects/module-federation-tools';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { MfeBridge } from 'aril/boot/bridge';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { AppLayoutComponent, AppMenuService, MFELayoutComponent } from 'aril/theme/layout';\r\n\r\nimport { appName, menuItems } from './bootstrap';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\ttemplate: `\r\n\t\t@if (isHostMode()) {\r\n\t\t\t<mfe-layout></mfe-layout>\r\n\t\t} @else {\r\n\t\t\t<app-layout></app-layout>\r\n\t\t}\r\n\t`,\r\n\timports: [ModuleFederationToolsModule, AppLayoutComponent, MFELayoutComponent]\r\n})\r\nexport class AppComponent {\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly appMenuService: AppMenuService,\r\n\t\tprivate readonly primeNgConfig: PrimeNGConfig,\r\n\t\tprivate readonly bridgeSvc: MfeBridge\r\n\t) {\r\n\t\tif (!this.bridgeSvc.isHostMode() && !this.bridgeSvc.hostNgZone) {\r\n\t\t\tthis.bridgeSvc.hostNgZone = inject(NgZone);\r\n\t\t}\r\n\r\n\t\tconnectRouter(this.router, true);\r\n\r\n\t\tthis.bridgeSvc.activeMF.set(appName);\r\n\t\tconst lang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) ?? LanguageCode.TR;\r\n\r\n\t\tthis.translocoService.setActiveLang(lang);\r\n\r\n\t\tthis.setLocale(lang);\r\n\r\n\t\tif (!this.bridgeSvc.isHostMode()) {\r\n\t\t\tthis.appMenuService.menuConfig.set({ items: structuredClone(menuItems), prefix: appName });\r\n\t\t}\r\n\t}\r\n\r\n\tget isHostMode() {\r\n\t\treturn this.bridgeSvc.isHostMode;\r\n\t}\r\n\r\n\tsetLocale(lang: LanguageCode) {\r\n\t\tif (!lang?.length) {\r\n\t\t\tconsole.warn('No language selected');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (lang === LanguageCode.TR) {\r\n\t\t\tthis.primeNgConfig.setTranslation(TR_TRANSLATIONS);\r\n\t\t}\r\n\t}\r\n}\r\n"],"names":["i3","i5"],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { signal, effect, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
class MfeBridge {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.activeHost = signal(null);
|
|
6
|
+
this.activeMF = signal(null);
|
|
7
|
+
this.isHostMode = signal(false);
|
|
8
|
+
this.hostMenuItems = signal([]);
|
|
9
|
+
this.pluginJson = signal({});
|
|
10
|
+
this.routeConfigs = signal(null);
|
|
11
|
+
this.pageTitle = signal('');
|
|
12
|
+
this.hostNgZone = null;
|
|
13
|
+
this.hostRouter = null;
|
|
14
|
+
this.mirrored = false;
|
|
15
|
+
}
|
|
16
|
+
mirrorToWindow() {
|
|
17
|
+
if (this.mirrored || typeof window === 'undefined')
|
|
18
|
+
return;
|
|
19
|
+
this.mirrored = true;
|
|
20
|
+
const w = window;
|
|
21
|
+
w.hostMenuItems = this.hostMenuItems;
|
|
22
|
+
w.__ARIL_PAGE_TITLE__ = this.pageTitle;
|
|
23
|
+
effect(() => {
|
|
24
|
+
w.activeHost = this.activeHost() ?? undefined;
|
|
25
|
+
});
|
|
26
|
+
effect(() => {
|
|
27
|
+
w.activeMF = this.activeMF() ?? undefined;
|
|
28
|
+
});
|
|
29
|
+
effect(() => {
|
|
30
|
+
w.isHostMode = this.isHostMode();
|
|
31
|
+
});
|
|
32
|
+
effect(() => {
|
|
33
|
+
w.pluginJson = this.pluginJson();
|
|
34
|
+
});
|
|
35
|
+
effect(() => {
|
|
36
|
+
w.routeConfigs = this.routeConfigs() ?? undefined;
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(w, 'ngZone', {
|
|
39
|
+
configurable: true,
|
|
40
|
+
get: () => this.hostNgZone
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(w, 'hostRouter', {
|
|
43
|
+
configurable: true,
|
|
44
|
+
get: () => this.hostRouter
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Module Federation shared config olmadığı durumlar için globalThis slot
|
|
49
|
+
// üzerinden tek instance garantisi. Host ve her remote MFE ayrı bundle olsa
|
|
50
|
+
// bile aynı JS realm'inde aynı instance'ı okur — eski globalThis sözleşmesinin
|
|
51
|
+
// yaptığı görevi tek bir tipli slotta birleştirir.
|
|
52
|
+
const BRIDGE_SLOT = '__arilMfeBridge__';
|
|
53
|
+
const bridge = (() => {
|
|
54
|
+
const g = globalThis;
|
|
55
|
+
if (!g[BRIDGE_SLOT]) {
|
|
56
|
+
g[BRIDGE_SLOT] = new MfeBridge();
|
|
57
|
+
}
|
|
58
|
+
return g[BRIDGE_SLOT];
|
|
59
|
+
})();
|
|
60
|
+
|
|
61
|
+
function provideMfeBridge() {
|
|
62
|
+
return makeEnvironmentProviders([{ provide: MfeBridge, useValue: bridge }]);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Generated bundle index. Do not edit.
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
export { MfeBridge, bridge, provideMfeBridge };
|
|
70
|
+
//# sourceMappingURL=aril-boot-bridge.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aril-boot-bridge.mjs","sources":["../../projects/aril/boot/bridge/src/mfe-bridge.ts","../../projects/aril/boot/bridge/src/provide-mfe-bridge.ts","../../projects/aril/boot/bridge/aril-boot-bridge.ts"],"sourcesContent":["import { NgZone, Signal, effect, signal } from '@angular/core';\r\nimport type { Router } from '@angular/router';\r\n\r\nimport type { Apps, PluginMenuItem } from 'aril/boot/config/apps';\r\n\r\nexport interface RouteConfig {\r\n\tpath: string;\r\n\tcontent: string;\r\n\tversion: number;\r\n}\r\n\r\nexport interface LegacyWindowSlots {\r\n\tactiveHost?: Apps;\r\n\tactiveMF?: Apps;\r\n\tisHostMode?: boolean;\r\n\thostMenuItems?: Signal<PluginMenuItem[]>;\r\n\tpluginJson?: Record<string, unknown>;\r\n\trouteConfigs?: RouteConfig[];\r\n\tngZone?: NgZone;\r\n\thostRouter?: Router;\r\n\t__ARIL_PAGE_TITLE__?: Signal<string>;\r\n}\r\n\r\nexport class MfeBridge {\r\n\treadonly activeHost = signal<Apps | null>(null);\r\n\treadonly activeMF = signal<Apps | null>(null);\r\n\treadonly isHostMode = signal<boolean>(false);\r\n\treadonly hostMenuItems = signal<PluginMenuItem[]>([]);\r\n\treadonly pluginJson = signal<Record<string, unknown>>({});\r\n\treadonly routeConfigs = signal<RouteConfig[] | null>(null);\r\n\treadonly pageTitle = signal<string>('');\r\n\r\n\thostNgZone: NgZone | null = null;\r\n\thostRouter: Router | null = null;\r\n\r\n\tprivate mirrored = false;\r\n\r\n\tmirrorToWindow(): void {\r\n\t\tif (this.mirrored || typeof window === 'undefined') return;\r\n\t\tthis.mirrored = true;\r\n\r\n\t\tconst w = window as Window & LegacyWindowSlots;\r\n\r\n\t\tw.hostMenuItems = this.hostMenuItems;\r\n\t\tw.__ARIL_PAGE_TITLE__ = this.pageTitle;\r\n\r\n\t\teffect(() => {\r\n\t\t\tw.activeHost = this.activeHost() ?? undefined;\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tw.activeMF = this.activeMF() ?? undefined;\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tw.isHostMode = this.isHostMode();\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tw.pluginJson = this.pluginJson();\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tw.routeConfigs = this.routeConfigs() ?? undefined;\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(w, 'ngZone', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: () => this.hostNgZone\r\n\t\t});\r\n\t\tObject.defineProperty(w, 'hostRouter', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: () => this.hostRouter\r\n\t\t});\r\n\t}\r\n}\r\n\r\n// Module Federation shared config olmadığı durumlar için globalThis slot\r\n// üzerinden tek instance garantisi. Host ve her remote MFE ayrı bundle olsa\r\n// bile aynı JS realm'inde aynı instance'ı okur — eski globalThis sözleşmesinin\r\n// yaptığı görevi tek bir tipli slotta birleştirir.\r\nconst BRIDGE_SLOT = '__arilMfeBridge__';\r\ntype BridgeSlotHost = { [BRIDGE_SLOT]?: MfeBridge };\r\nexport const bridge: MfeBridge = (() => {\r\n\tconst g = globalThis as unknown as BridgeSlotHost;\r\n\tif (!g[BRIDGE_SLOT]) {\r\n\t\tg[BRIDGE_SLOT] = new MfeBridge();\r\n\t}\r\n\treturn g[BRIDGE_SLOT]!;\r\n})();\r\n","import { makeEnvironmentProviders } from '@angular/core';\r\n\r\nimport { MfeBridge, bridge } from './mfe-bridge';\r\n\r\nexport function provideMfeBridge() {\r\n\treturn makeEnvironmentProviders([{ provide: MfeBridge, useValue: bridge }]);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { isDevMode
|
|
1
|
+
import { isDevMode } from '@angular/core';
|
|
2
2
|
import { KeycloakEventType } from 'keycloak-angular';
|
|
3
|
-
import { switchMap, from, finalize,
|
|
3
|
+
import { switchMap, from, finalize, tap, EMPTY, firstValueFrom } from 'rxjs';
|
|
4
|
+
import { bridge } from 'aril/boot/bridge';
|
|
4
5
|
|
|
5
6
|
var Apps;
|
|
6
7
|
(function (Apps) {
|
|
@@ -67,8 +68,8 @@ const API_CONFIGS = new ApiConfigsFactory();
|
|
|
67
68
|
const loadApiConfigs = (httpClient, keycloak, appName, microAppService) => () => new Promise((resolve) => httpClient
|
|
68
69
|
.get(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')
|
|
69
70
|
.pipe(switchMap((configs) => {
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
bridge.hostMenuItems.set([]);
|
|
72
|
+
bridge.pluginJson.set({});
|
|
72
73
|
Object.assign(API_CONFIGS, { ...configs });
|
|
73
74
|
return from(keycloak.init({
|
|
74
75
|
config: API_CONFIGS.keycloak,
|
|
@@ -84,7 +85,10 @@ const loadApiConfigs = (httpClient, keycloak, appName, microAppService) => () =>
|
|
|
84
85
|
}
|
|
85
86
|
});
|
|
86
87
|
})));
|
|
87
|
-
}), switchMap(() => microAppService?.init(httpClient, API_CONFIGS.api)
|
|
88
|
+
}), switchMap(() => microAppService?.init(httpClient, API_CONFIGS.api).pipe(tap((result) => {
|
|
89
|
+
bridge.hostMenuItems.set(result.menuItems);
|
|
90
|
+
bridge.pluginJson.set(result.plugins);
|
|
91
|
+
})) ?? EMPTY))
|
|
88
92
|
.subscribe()
|
|
89
93
|
.add(resolve));
|
|
90
94
|
/**
|
|
@@ -108,7 +112,7 @@ const loadInitData = (httpClient) => () => new Promise((resolve, _reject) => {
|
|
|
108
112
|
const endpoint = API_CONFIGS.api + '/ui-route-content-configs/all';
|
|
109
113
|
httpClient.get(endpoint).subscribe({
|
|
110
114
|
next: (data) => {
|
|
111
|
-
|
|
115
|
+
bridge.routeConfigs.set(data);
|
|
112
116
|
resolve();
|
|
113
117
|
},
|
|
114
118
|
error: (err) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-boot-config-api.mjs","sources":["../../projects/aril/boot/config/api/src/interfaces.ts","../../projects/aril/boot/config/api/src/api.service.ts","../../projects/aril/boot/config/api/aril-boot-config-api.ts"],"sourcesContent":["export enum Apps {\r\n\tTHOR = 'thor',\r\n\tCRM = 'crm',\r\n\tWDM = 'wdm',\r\n\tBILLING = 'billing',\r\n\tPAYMENT = 'payment',\r\n\tYEAP = 'yeap',\r\n\tMW = 'mw',\r\n\tLENA = 'lena',\r\n\tHES = 'hes',\r\n\tCTS = 'cts',\r\n\tSIS = 'sis',\r\n\tMNG = 'mng',\r\n\tMDM = 'mdm',\r\n\tSTATE_MACHINE = 'state-machine',\r\n\tREPORT = 'report',\r\n\tLGC = 'lgc',\r\n\tDMS = 'dms'\r\n}\r\n\r\nexport enum AppsRoutes {\r\n\tMNG_BASE_URL = 'mngBaseUrl',\r\n}\r\n\r\nexport interface KeycloakConfig {\r\n\turl: string;\r\n\trealm: string;\r\n\tclientId: string;\r\n}\r\n\r\nexport class ApiConfigsFactory {\r\n\tapi: string = '';\r\n\tfromMail: string = '';\r\n\tmwApi: string = '';\r\n\taiApi: string = '';\r\n\tstatusApi: string = '';\r\n\tenvironment: string = '';\r\n\tkeycloak!: Keycloak.KeycloakConfig;\r\n\troutes: Record<AppsRoutes, string> = {\r\n\t\tmngBaseUrl: '',\r\n\t};\r\n\tprefixMap: Record<Apps, string> = {\r\n\t\t[Apps.THOR]: '',\r\n\t\t[Apps.CRM]: '',\r\n\t\t[Apps.WDM]: '',\r\n\t\t[Apps.BILLING]: '',\r\n\t\t[Apps.PAYMENT]: '',\r\n\t\t[Apps.YEAP]: '',\r\n\t\t[Apps.MW]: '',\r\n\t\t[Apps.LENA]: '',\r\n\t\t[Apps.HES]: '',\r\n\t\t[Apps.CTS]: '',\r\n\t\t[Apps.SIS]: '',\r\n\t\t[Apps.MNG]: '',\r\n\t\t[Apps.STATE_MACHINE]: '',\r\n\t\t[Apps.MDM]:'',\r\n\t\t[Apps.REPORT]: '',\r\n\t\t[Apps.LGC]: '',\r\n\t\t[Apps.DMS]: ''\r\n\t};\r\n\tgetExternalAppEndpoint(appName: Apps): string {\r\n\t\tconst prefix = this.prefixMap[appName] || this.prefixMap[Apps.MNG];\r\n\t\treturn `${new URL(this.api).origin}/${prefix}`;\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { isDevMode, signal } from '@angular/core';\r\n\r\nimport { KeycloakEventType, KeycloakService } from 'keycloak-angular';\r\nimport { EMPTY, finalize, firstValueFrom, from, switchMap, tap } from 'rxjs';\r\n\r\nimport { MicroAppService } from 'aril/boot/config/apps';\r\n\r\nimport { ApiConfigsFactory, Apps } from './interfaces';\r\n\r\nexport const API_CONFIGS = new ApiConfigsFactory();\r\n\r\nexport const loadApiConfigs =\r\n\t(httpClient: HttpClient, keycloak: KeycloakService, appName: string, microAppService?: MicroAppService) => () =>\r\n\t\tnew Promise<void>((resolve) =>\r\n\t\t\thttpClient\r\n\t\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tswitchMap((configs) => {\r\n\t\t\t\t\t\t(globalThis as any).hostMenuItems = signal([]);\r\n\t\t\t\t\t\t(globalThis as any).pluginJson = {};\r\n\r\n\t\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\r\n\t\t\t\t\t\treturn from(\r\n\t\t\t\t\t\t\tkeycloak.init({\r\n\t\t\t\t\t\t\t\tconfig: API_CONFIGS.keycloak,\r\n\t\t\t\t\t\t\t\tloadUserProfileAtStartUp: true,\r\n\t\t\t\t\t\t\t\tinitOptions: { onLoad: 'login-required', checkLoginIframe: false },\r\n\t\t\t\t\t\t\t\tbearerExcludedUrls: ['/assets']\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t).pipe(\r\n\t\t\t\t\t\t\tfinalize(() =>\r\n\t\t\t\t\t\t\t\taddEventListener('module-ready', (event) => {\r\n\t\t\t\t\t\t\t\t\tconst app = (event as CustomEvent).detail;\r\n\t\t\t\t\t\t\t\t\tdispatchEvent(new CustomEvent(`${app}:init-keycloak`, { detail: keycloak }));\r\n\r\n\t\t\t\t\t\t\t\t\tkeycloak.keycloakEvents$.subscribe((e) => {\r\n\t\t\t\t\t\t\t\t\t\tif (e.type === KeycloakEventType.OnAuthRefreshSuccess) {\r\n\t\t\t\t\t\t\t\t\t\t\tdispatchEvent(new CustomEvent(`${app}:update-keycloak`, { detail: keycloak }));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tswitchMap(() => microAppService?.init(httpClient, API_CONFIGS.api) ?? EMPTY)\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe()\r\n\t\t\t\t.add(resolve)\r\n\t\t);\r\n\r\n/**\r\n * only works when isHostMode is true\r\n * micro-app access its own api.json file when opened in host\r\n */\r\nexport function setApiConfigOnMFEMode(\r\n\thttpClient: HttpClient,\r\n\tkeycloak: KeycloakService,\r\n\tappName: Apps\r\n): () => Promise<any> {\r\n\treturn () => {\r\n\t\tconst observable$ = httpClient\r\n\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((configs) => {\r\n\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\t\t\t\t\tif (appName !== Apps.THOR && appName !== Apps.YEAP) {\r\n\t\t\t\t\t\tAPI_CONFIGS.api = API_CONFIGS.getExternalAppEndpoint(appName);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\treturn firstValueFrom(observable$);\r\n\t};\r\n}\r\n\r\nexport const loadInitData = (httpClient: HttpClient) => () =>\r\n\tnew Promise<void>((resolve, _reject) => {\r\n\t\tconst endpoint = API_CONFIGS.api + '/ui-route-content-configs/all';\r\n\t\thttpClient.get(endpoint).subscribe({\r\n\t\t\tnext: (data) => {\r\n\t\t\t\t(globalThis as any).routeConfigs = data;\r\n\t\t\t\tresolve();\r\n\t\t\t},\r\n\t\t\terror: (err) => {\r\n\t\t\t\tconsole.error(`Failed to load init data from ${endpoint}:`, err);\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA,IAAY,IAkBX,CAAA;AAlBD,CAAA,UAAY,IAAI,EAAA;AACf,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,IAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACZ,CAAC,EAlBW,IAAI,KAAJ,IAAI,GAkBf,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,UAEX,CAAA;AAFD,CAAA,UAAY,UAAU,EAAA;AACrB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,YAA2B,CAAA;AAC5B,CAAC,EAFW,UAAU,KAAV,UAAU,GAErB,EAAA,CAAA,CAAA,CAAA;MAQY,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACC,IAAG,CAAA,GAAA,GAAW,EAAE,CAAC;QACjB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QACtB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,MAAM,GAA+B;AACpC,YAAA,UAAU,EAAE,EAAE;SACd,CAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAyB;AACjC,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;AACb,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE;AACxB,YAAA,CAAC,IAAI,CAAC,GAAG,GAAE,EAAE;AACb,YAAA,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;AACjB,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;SACd,CAAC;KAKF;AAJA,IAAA,sBAAsB,CAAC,OAAa,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,QAAA,OAAO,CAAG,EAAA,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;KAC/C;AACD;;ACtDY,MAAA,WAAW,GAAG,IAAI,iBAAiB,GAAG;AAEtC,MAAA,cAAc,GAC1B,CAAC,UAAsB,EAAE,QAAyB,EAAE,OAAe,EAAE,eAAiC,KAAK,MAC1G,IAAI,OAAO,CAAO,CAAC,OAAO,KACzB,UAAU;KACR,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY,CAAC;AAC5F,KAAA,IAAI,CACJ,SAAS,CAAC,CAAC,OAAO,KAAI;AACpB,IAAA,UAAkB,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9C,IAAA,UAAkB,CAAC,UAAU,GAAG,EAAE,CAAC;IAEpC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAE3C,IAAA,OAAO,IAAI,CACV,QAAQ,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,WAAW,CAAC,QAAQ;AAC5B,QAAA,wBAAwB,EAAE,IAAI;QAC9B,WAAW,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE;QAClE,kBAAkB,EAAE,CAAC,SAAS,CAAC;AAC/B,KAAA,CAAC,CACF,CAAC,IAAI,CACL,QAAQ,CAAC,MACR,gBAAgB,CAAC,cAAc,EAAE,CAAC,KAAK,KAAI;AAC1C,QAAA,MAAM,GAAG,GAAI,KAAqB,CAAC,MAAM,CAAC;AAC1C,QAAA,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,GAAG,CAAA,cAAA,CAAgB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE7E,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACxC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,oBAAoB,EAAE;AACtD,gBAAA,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,GAAG,CAAA,gBAAA,CAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;aAC/E;AACF,SAAC,CAAC,CAAC;KACH,CAAC,CACF,CACD,CAAC;AACH,CAAC,CAAC,EACF,SAAS,CAAC,MAAM,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAC5E;AACA,KAAA,SAAS,EAAE;AACX,KAAA,GAAG,CAAC,OAAO,CAAC,EACb;AAEJ;;;AAGG;SACa,qBAAqB,CACpC,UAAsB,EACtB,QAAyB,EACzB,OAAa,EAAA;AAEb,IAAA,OAAO,MAAK;QACX,MAAM,WAAW,GAAG,UAAU;aAC5B,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY,CAAC;AAC5F,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,OAAO,KAAI;YACf,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAC3C,YAAA,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE;gBACnD,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;aAC9D;SACD,CAAC,CACF,CAAC;AAEH,QAAA,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;AACpC,KAAC,CAAC;AACH,CAAC;MAEY,YAAY,GAAG,CAAC,UAAsB,KAAK,MACvD,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,GAAG,+BAA+B,CAAC;AACnE,IAAA,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,YAAA,UAAkB,CAAC,YAAY,GAAG,IAAI,CAAC;AACxC,YAAA,OAAO,EAAE,CAAC;SACV;AACD,QAAA,KAAK,EAAE,CAAC,GAAG,KAAI;YACd,OAAO,CAAC,KAAK,CAAC,CAAA,8BAAA,EAAiC,QAAQ,CAAG,CAAA,CAAA,EAAE,GAAG,CAAC,CAAC;AACjE,YAAA,OAAO,EAAE,CAAC;SACV;AACD,KAAA,CAAC,CAAC;AACJ,CAAC;;AC1FF;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"aril-boot-config-api.mjs","sources":["../../projects/aril/boot/config/api/src/interfaces.ts","../../projects/aril/boot/config/api/src/api.service.ts","../../projects/aril/boot/config/api/aril-boot-config-api.ts"],"sourcesContent":["export enum Apps {\r\n\tTHOR = 'thor',\r\n\tCRM = 'crm',\r\n\tWDM = 'wdm',\r\n\tBILLING = 'billing',\r\n\tPAYMENT = 'payment',\r\n\tYEAP = 'yeap',\r\n\tMW = 'mw',\r\n\tLENA = 'lena',\r\n\tHES = 'hes',\r\n\tCTS = 'cts',\r\n\tSIS = 'sis',\r\n\tMNG = 'mng',\r\n\tMDM = 'mdm',\r\n\tSTATE_MACHINE = 'state-machine',\r\n\tREPORT = 'report',\r\n\tLGC = 'lgc',\r\n\tDMS = 'dms'\r\n}\r\n\r\nexport enum AppsRoutes {\r\n\tMNG_BASE_URL = 'mngBaseUrl',\r\n}\r\n\r\nexport interface KeycloakConfig {\r\n\turl: string;\r\n\trealm: string;\r\n\tclientId: string;\r\n}\r\n\r\nexport class ApiConfigsFactory {\r\n\tapi: string = '';\r\n\tfromMail: string = '';\r\n\tmwApi: string = '';\r\n\taiApi: string = '';\r\n\tstatusApi: string = '';\r\n\tenvironment: string = '';\r\n\tkeycloak!: Keycloak.KeycloakConfig;\r\n\troutes: Record<AppsRoutes, string> = {\r\n\t\tmngBaseUrl: '',\r\n\t};\r\n\tprefixMap: Record<Apps, string> = {\r\n\t\t[Apps.THOR]: '',\r\n\t\t[Apps.CRM]: '',\r\n\t\t[Apps.WDM]: '',\r\n\t\t[Apps.BILLING]: '',\r\n\t\t[Apps.PAYMENT]: '',\r\n\t\t[Apps.YEAP]: '',\r\n\t\t[Apps.MW]: '',\r\n\t\t[Apps.LENA]: '',\r\n\t\t[Apps.HES]: '',\r\n\t\t[Apps.CTS]: '',\r\n\t\t[Apps.SIS]: '',\r\n\t\t[Apps.MNG]: '',\r\n\t\t[Apps.STATE_MACHINE]: '',\r\n\t\t[Apps.MDM]:'',\r\n\t\t[Apps.REPORT]: '',\r\n\t\t[Apps.LGC]: '',\r\n\t\t[Apps.DMS]: ''\r\n\t};\r\n\tgetExternalAppEndpoint(appName: Apps): string {\r\n\t\tconst prefix = this.prefixMap[appName] || this.prefixMap[Apps.MNG];\r\n\t\treturn `${new URL(this.api).origin}/${prefix}`;\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { isDevMode } from '@angular/core';\r\n\r\nimport { KeycloakEventType, KeycloakService } from 'keycloak-angular';\r\nimport { EMPTY, finalize, firstValueFrom, from, switchMap, tap } from 'rxjs';\r\n\r\nimport { RouteConfig, bridge } from 'aril/boot/bridge';\r\nimport { MicroAppService } from 'aril/boot/config/apps';\r\n\r\nimport { ApiConfigsFactory, Apps } from './interfaces';\r\n\r\nexport const API_CONFIGS = new ApiConfigsFactory();\r\n\r\nexport const loadApiConfigs =\r\n\t(httpClient: HttpClient, keycloak: KeycloakService, appName: string, microAppService?: MicroAppService) => () =>\r\n\t\tnew Promise<void>((resolve) =>\r\n\t\t\thttpClient\r\n\t\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tswitchMap((configs) => {\r\n\t\t\t\t\t\tbridge.hostMenuItems.set([]);\r\n\t\t\t\t\t\tbridge.pluginJson.set({});\r\n\r\n\t\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\r\n\t\t\t\t\t\treturn from(\r\n\t\t\t\t\t\t\tkeycloak.init({\r\n\t\t\t\t\t\t\t\tconfig: API_CONFIGS.keycloak,\r\n\t\t\t\t\t\t\t\tloadUserProfileAtStartUp: true,\r\n\t\t\t\t\t\t\t\tinitOptions: { onLoad: 'login-required', checkLoginIframe: false },\r\n\t\t\t\t\t\t\t\tbearerExcludedUrls: ['/assets']\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t).pipe(\r\n\t\t\t\t\t\t\tfinalize(() =>\r\n\t\t\t\t\t\t\t\taddEventListener('module-ready', (event) => {\r\n\t\t\t\t\t\t\t\t\tconst app = (event as CustomEvent).detail;\r\n\t\t\t\t\t\t\t\t\tdispatchEvent(new CustomEvent(`${app}:init-keycloak`, { detail: keycloak }));\r\n\r\n\t\t\t\t\t\t\t\t\tkeycloak.keycloakEvents$.subscribe((e) => {\r\n\t\t\t\t\t\t\t\t\t\tif (e.type === KeycloakEventType.OnAuthRefreshSuccess) {\r\n\t\t\t\t\t\t\t\t\t\t\tdispatchEvent(new CustomEvent(`${app}:update-keycloak`, { detail: keycloak }));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tswitchMap(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\tmicroAppService?.init(httpClient, API_CONFIGS.api).pipe(\r\n\t\t\t\t\t\t\t\ttap((result) => {\r\n\t\t\t\t\t\t\t\t\tbridge.hostMenuItems.set(result.menuItems);\r\n\t\t\t\t\t\t\t\t\tbridge.pluginJson.set(result.plugins);\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t) ?? EMPTY\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe()\r\n\t\t\t\t.add(resolve)\r\n\t\t);\r\n\r\n/**\r\n * only works when isHostMode is true\r\n * micro-app access its own api.json file when opened in host\r\n */\r\nexport function setApiConfigOnMFEMode(\r\n\thttpClient: HttpClient,\r\n\tkeycloak: KeycloakService,\r\n\tappName: Apps\r\n): () => Promise<any> {\r\n\treturn () => {\r\n\t\tconst observable$ = httpClient\r\n\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((configs) => {\r\n\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\t\t\t\t\tif (appName !== Apps.THOR && appName !== Apps.YEAP) {\r\n\t\t\t\t\t\tAPI_CONFIGS.api = API_CONFIGS.getExternalAppEndpoint(appName);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\treturn firstValueFrom(observable$);\r\n\t};\r\n}\r\n\r\nexport const loadInitData = (httpClient: HttpClient) => () =>\r\n\tnew Promise<void>((resolve, _reject) => {\r\n\t\tconst endpoint = API_CONFIGS.api + '/ui-route-content-configs/all';\r\n\t\thttpClient.get<RouteConfig[]>(endpoint).subscribe({\r\n\t\t\tnext: (data) => {\r\n\t\t\t\tbridge.routeConfigs.set(data);\r\n\t\t\t\tresolve();\r\n\t\t\t},\r\n\t\t\terror: (err) => {\r\n\t\t\t\tconsole.error(`Failed to load init data from ${endpoint}:`, err);\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { inject, Injectable, Renderer2, ElementRef, Component, ViewEncapsulation
|
|
|
3
3
|
import { Router, BaseRouteReuseStrategy } from '@angular/router';
|
|
4
4
|
import { WebComponentWrapper, startsWith } from '@angular-architects/module-federation-tools';
|
|
5
5
|
import { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';
|
|
6
|
-
import {
|
|
6
|
+
import { map, catchError, of } from 'rxjs';
|
|
7
7
|
import { ForbiddenComponent, NotFoundComponent } from 'aril/util/custom_pages';
|
|
8
8
|
|
|
9
9
|
const routePermissions = new Map();
|
|
@@ -94,7 +94,7 @@ class MicroAppService {
|
|
|
94
94
|
this.userRoles = this.keycloak.getUserRoles();
|
|
95
95
|
return httpClient
|
|
96
96
|
.get(isDevMode() ? './assets/local-configs/app.local.json' : hostAPI + '/ui-sidebar-configs')
|
|
97
|
-
.pipe(
|
|
97
|
+
.pipe(map((apps) => {
|
|
98
98
|
setRoutePermissions(apps.menuItems);
|
|
99
99
|
const routes = this.buildRoutes([...apps.modules, ...apps.plugins]);
|
|
100
100
|
this.router.resetConfig([
|
|
@@ -103,11 +103,17 @@ class MicroAppService {
|
|
|
103
103
|
{ path: 'forbidden', component: ForbiddenComponent },
|
|
104
104
|
{ path: '**', component: NotFoundComponent }
|
|
105
105
|
]);
|
|
106
|
-
this.
|
|
107
|
-
|
|
106
|
+
const filteredMenuItems = this.filterMenuItemsByRole(apps.menuItems);
|
|
107
|
+
return {
|
|
108
|
+
menuItems: [
|
|
109
|
+
{ root: true, label: { tr: 'Anasayfa', en: 'Home' }, icon: 'pi pi-fw pi-home', routerLink: '/' },
|
|
110
|
+
...filteredMenuItems
|
|
111
|
+
],
|
|
112
|
+
plugins: apps.extensions || {}
|
|
113
|
+
};
|
|
108
114
|
}), catchError((err) => {
|
|
109
115
|
console.log('Error Micro Apps Loading', err);
|
|
110
|
-
return of();
|
|
116
|
+
return of({ menuItems: [], plugins: {} });
|
|
111
117
|
}));
|
|
112
118
|
}
|
|
113
119
|
buildRoutes(options) {
|
|
@@ -121,15 +127,6 @@ class MicroAppService {
|
|
|
121
127
|
});
|
|
122
128
|
return routes;
|
|
123
129
|
}
|
|
124
|
-
setMenuItems(items) {
|
|
125
|
-
globalThis.hostMenuItems.set([
|
|
126
|
-
{ root: true, label: { tr: 'Anasayfa', en: 'Home' }, icon: 'pi pi-fw pi-home', routerLink: '/' },
|
|
127
|
-
...items
|
|
128
|
-
]);
|
|
129
|
-
}
|
|
130
|
-
setPlugins(items) {
|
|
131
|
-
globalThis.pluginJson = items || {};
|
|
132
|
-
}
|
|
133
130
|
filterMenuItemsByRole(items) {
|
|
134
131
|
return items.reduce((acc, item) => {
|
|
135
132
|
if (!this.hasPermission(item.permittedRoles)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-boot-config-apps.mjs","sources":["../../projects/aril/boot/config/apps/src/route-permissions.ts","../../projects/aril/boot/config/apps/src/auth.guard.ts","../../projects/aril/boot/config/apps/src/showdowDOMWrapper.ts","../../projects/aril/boot/config/apps/src/apps.service.ts","../../projects/aril/boot/config/apps/src/interfaces.ts","../../projects/aril/boot/config/apps/src/reuse-strategy.ts","../../projects/aril/boot/config/apps/aril-boot-config-apps.ts"],"sourcesContent":["import { PluginMenuItem } from './interfaces';\r\n\r\nconst routePermissions = new Map<string, string[]>();\r\n\r\nexport function setRoutePermissions(menuItems: PluginMenuItem[]): void {\r\n\troutePermissions.clear();\r\n\tbuildPermissionsMap(menuItems);\r\n}\r\n\r\nexport function getRoutePermissions(url: string): string[] | undefined {\r\n\tconst normalizedUrl = url.split('?')[0].replace(/^\\//, '');\r\n return routePermissions.get(normalizedUrl);\r\n}\r\n\r\nfunction buildPermissionsMap(items: PluginMenuItem[]): void {\r\n\tfor (const item of items) {\r\n\t\tif (item.routerLink && item.permittedRoles?.length) {\r\n\t\t\tconst normalized = item.routerLink.replace(/^\\//, '');\r\n\t\t\troutePermissions.set(normalized, item.permittedRoles);\r\n\t\t}\r\n\r\n\t\tif (item.items?.length) {\r\n\t\t\tbuildPermissionsMap(item.items);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\n\r\nimport { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';\r\n\r\nimport { getRoutePermissions } from './route-permissions';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard extends KeycloakAuthGuard {\r\n\tconstructor() {\r\n\t\tsuper(inject(Router), inject(KeycloakService));\r\n\t}\r\n\r\n\toverride async isAccessAllowed(\r\n\t\troute: ActivatedRouteSnapshot,\r\n\t\tstate: RouterStateSnapshot\r\n\t): Promise<boolean | UrlTree> {\r\n\t\tif (!this.authenticated) {\r\n\t\t\tawait this.keycloakAngular.login({ redirectUri: window.location.href });\r\n\t\t}\r\n\r\n\t\tconst permittedRoles = getRoutePermissions(state.url);\r\n\r\n\t\tif (permittedRoles?.length) {\r\n\t\t\tconst hasRole = permittedRoles.some((role) => this.roles.includes(role));\r\n\t\t\tif (!hasRole) {\r\n\t\t\t\treturn this.router.createUrlTree(['/forbidden']);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.authenticated;\r\n\t}\r\n}\r\n","import { Component, ElementRef, OnInit, Renderer2, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\n\r\nimport { WebComponentWrapper } from '@angular-architects/module-federation-tools';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\ttemplate: '<div #vc></div>',\r\n\tencapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ShadowDOMWrapperComponent extends WebComponentWrapper implements OnInit {\r\n\t@ViewChild('vc', { read: ElementRef, static: true }) override vc!: ElementRef;\r\n\r\n\tprivate renderer = inject(Renderer2);\r\n\r\n\tngOnInit(): void {\r\n\t\tconst shadowRoot = this.vc.nativeElement.parentNode;\r\n\t\tconst styleUrls = this['route'].snapshot.data.styleUrls || [];\r\n\r\n\t\t// Inject styles into the Shadow DOM\r\n\t\tstyleUrls.forEach((url: string) => {\r\n\t\t\tconst link = this.renderer.createElement('link');\r\n\t\t\tlink.setAttribute('rel', 'stylesheet');\r\n\t\t\tlink.setAttribute('type', 'text/css');\r\n\t\t\tlink.setAttribute('href', url);\r\n\t\t\tthis.renderer.appendChild(shadowRoot, link);\r\n\t\t});\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject, isDevMode } from '@angular/core';\r\nimport { Router, Routes } from '@angular/router';\r\n\r\nimport {\r\n\tWebComponentWrapper,\r\n\tWebComponentWrapperOptions,\r\n\tstartsWith\r\n} from '@angular-architects/module-federation-tools';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { catchError, of, tap } from 'rxjs';\r\n\r\nimport { ForbiddenComponent, NotFoundComponent } from 'aril/util/custom_pages';\r\n\r\nimport { AuthGuard } from './auth.guard';\r\nimport { AppsDTO, ExtensionConfig, PluginConfig, PluginMenuItem } from './interfaces';\r\nimport { setRoutePermissions } from './route-permissions';\r\nimport { ShadowDOMWrapperComponent } from './showdowDOMWrapper';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MicroAppService {\r\n\tprivate readonly router = inject(Router);\r\n\tprivate readonly keycloak = inject(KeycloakService);\r\n\r\n\tprivate userRoles: string[] = [];\r\n\r\n\tinit(httpClient: HttpClient, hostAPI: string) {\r\n\t\tthis.userRoles = this.keycloak.getUserRoles();\r\n\t\treturn httpClient\r\n\t\t\t.get<AppsDTO>(isDevMode() ? './assets/local-configs/app.local.json' : hostAPI + '/ui-sidebar-configs')\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((apps) => {\r\n\t\t\t\t\tsetRoutePermissions(apps.menuItems);\r\n\t\t\t\t\tconst routes = this.buildRoutes([...apps.modules, ...apps.plugins]);\r\n\r\n\t\t\t\t\tthis.router.resetConfig([\r\n\t\t\t\t\t\t...this.router.config,\r\n\t\t\t\t\t\t...routes,\r\n\t\t\t\t\t\t{ path: 'forbidden', component: ForbiddenComponent },\r\n\t\t\t\t\t\t{ path: '**', component: NotFoundComponent }\r\n\t\t\t\t\t]);\r\n\t\t\t\t\tthis.setMenuItems(this.filterMenuItemsByRole(apps.menuItems));\r\n\t\t\t\t\tthis.setPlugins(apps.extensions);\r\n\t\t\t\t}),\r\n\t\t\t\tcatchError((err) => {\r\n\t\t\t\t\tconsole.log('Error Micro Apps Loading', err);\r\n\t\t\t\t\treturn of();\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t}\r\n\r\n\tbuildRoutes(options: PluginConfig[]): Routes {\r\n\t\tconst routes: Routes = options.map((options) => {\r\n\t\t\treturn {\r\n\t\t\t\tmatcher: startsWith(options.remoteName),\r\n\t\t\t\tcomponent: options.shadowDomPassive ? WebComponentWrapper : ShadowDOMWrapperComponent,\r\n\t\t\t\tdata: options as WebComponentWrapperOptions,\r\n\t\t\t\tcanActivate: [AuthGuard]\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn routes;\r\n\t}\r\n\r\n\tsetMenuItems(items: PluginMenuItem[]): void {\r\n\t\t(<any>globalThis).hostMenuItems.set([\r\n\t\t\t{ root: true, label: { tr: 'Anasayfa', en: 'Home' }, icon: 'pi pi-fw pi-home', routerLink: '/' },\r\n\t\t\t...items\r\n\t\t]);\r\n\t}\r\n\tsetPlugins(items: Record<string, ExtensionConfig>): void {\r\n\t\t(<any>globalThis).pluginJson = items || {};\r\n\t}\r\n\r\n\tprivate filterMenuItemsByRole(items: PluginMenuItem[]): PluginMenuItem[] {\r\n\t\treturn items.reduce<PluginMenuItem[]>((acc, item) => {\r\n\t\t\tif (!this.hasPermission(item.permittedRoles)) {\r\n\t\t\t\treturn acc;\r\n\t\t\t}\r\n\r\n\t\t\tconst filteredItem = { ...item };\r\n\r\n\t\t\tif (filteredItem.items?.length) {\r\n\t\t\t\tfilteredItem.items = this.filterMenuItemsByRole(filteredItem.items);\r\n\r\n\t\t\t\tif (!filteredItem.items.length && !filteredItem.routerLink) {\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tacc.push(filteredItem);\r\n\t\t\treturn acc;\r\n\t\t}, []);\r\n\t}\r\n\r\n\tprivate hasPermission(permittedRoles?: string[]): boolean {\r\n\t\tif (!permittedRoles?.length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn permittedRoles.some((role) => this.userRoles.includes(role));\r\n\t}\r\n}\r\n","import { MenuItemCommandEvent } from 'primeng/api';\r\n\r\nimport { WebComponentWrapperOptions } from '@angular-architects/module-federation-tools';\r\n\r\nexport enum Apps {\r\n\tTHOR = 'thor',\r\n\tCRM = 'crm',\r\n\tWDM = 'wdm',\r\n\tBILLING = 'billing',\r\n\tPAYMENT = 'payment',\r\n\tYEAP = 'yeap',\r\n\tMW = 'mw',\r\n\tLENA = 'lena',\r\n\tHES = 'hes',\r\n\tCTS = 'cts',\r\n\tSIS = 'sis',\r\n\tMNG = 'mng',\r\n\tMDM = 'mdm',\r\n\tSTATE_MACHINE = 'state-machine',\r\n\tREPORT = 'report',\r\n\tLGC = 'lgc',\r\n\tDMS = 'dms'\r\n}\r\n\r\nexport interface AppsDTO {\r\n\tversion: number;\r\n\tmodules: PluginConfig[];\r\n\tplugins: PluginConfig[];\r\n\textensions: Record<string, ExtensionConfig>;\r\n\tmenuItems: PluginMenuItem[];\r\n}\r\n\r\nexport interface ExtensionConfig {\r\n\toptions: PluginConfig;\r\n}\r\n\r\nexport type PluginConfig = WebComponentWrapperOptions & {\r\n\tid?: string;\r\n\tremoteName: string;\r\n\tshadowDomPassive: boolean;\r\n\tpermittedRoles?: string[];\r\n};\r\n\r\nexport interface MenuItemAction {\r\n\tmethod?: 'GET' | 'POST';\r\n\turl: string;\r\n\tbody?: any;\r\n\tsuccessRoute: string;\r\n\tsuccessRouteResponseKey?: string;\r\n}\r\n\r\nexport interface PluginMenuItem {\r\n\trouterLink?: string;\r\n\ticon?: string;\r\n\tlabel: {\r\n\t\t[languageCode: string]: string;\r\n\t};\r\n\titems?: PluginMenuItem[];\r\n\tpermittedRoles?: string[];\r\n\taction?: MenuItemAction;\r\n\r\n\t// UI fields\r\n\tseparator?: boolean;\r\n\troot?: boolean;\r\n\tpath?: string;\r\n\tdisabled?: boolean;\r\n\tcommand?(event: MenuItemCommandEvent): void;\r\n}\r\n","import { ActivatedRouteSnapshot, BaseRouteReuseStrategy } from '@angular/router';\r\n\r\nexport class ArilReuseStrategy extends BaseRouteReuseStrategy {\r\n\toverride shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n\t\tif (curr.firstChild?.routeConfig?.data?.['remoteEntry'] === future.firstChild?.routeConfig?.data?.['remoteEntry'])\r\n\t\t\treturn false;\r\n\r\n\t\treturn future?.routeConfig === curr?.routeConfig && JSON.stringify(future?.params) === JSON.stringify(curr?.params);\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;AAEA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoB,CAAC;AAE/C,SAAU,mBAAmB,CAAC,SAA2B,EAAA;IAC9D,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC;AAEK,SAAU,mBAAmB,CAAC,GAAW,EAAA;AAC9C,IAAA,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC1D,IAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAuB,EAAA;AACnD,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACzB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE;AACnD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtD,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SACtD;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE;AACvB,YAAA,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;KACD;AACF;;ACjBM,MAAO,SAAU,SAAQ,iBAAiB,CAAA;AAC/C,IAAA,WAAA,GAAA;QACC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;KAC/C;AAEQ,IAAA,MAAM,eAAe,CAC7B,KAA6B,EAC7B,KAA0B,EAAA;AAE1B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;SACxE;QAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEtD,QAAA,IAAI,cAAc,EAAE,MAAM,EAAE;YAC3B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO,EAAE;gBACb,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;aACjD;SACD;QAED,OAAO,IAAI,CAAC,aAAa,CAAC;KAC1B;8GAvBW,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAT,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cADI,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACE5B,MAAO,yBAA0B,SAAQ,mBAAmB,CAAA;AALlE,IAAA,WAAA,GAAA;;AAQS,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAerC,KAAA;IAbA,QAAQ,GAAA;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC;AACpD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;;AAG9D,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,GAAW,KAAI;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;KACH;8GAjBW,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,IAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,IAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACZ,UAAU,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAJzB,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;2FAGf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,aAAa,EAAE,iBAAiB,CAAC,SAAS;AAC1C,iBAAA,CAAA;8BAE8D,EAAE,EAAA,CAAA;sBAA/D,SAAS;uBAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MCUvC,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;AAEkB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QAE5C,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;AA6EjC,KAAA;IA3EA,IAAI,CAAC,UAAsB,EAAE,OAAe,EAAA;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC9C,QAAA,OAAO,UAAU;AACf,aAAA,GAAG,CAAU,SAAS,EAAE,GAAG,uCAAuC,GAAG,OAAO,GAAG,qBAAqB,CAAC;AACrG,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,YAAA,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACpC,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAEpE,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;AACvB,gBAAA,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;AACrB,gBAAA,GAAG,MAAM;AACT,gBAAA,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE;AACpD,gBAAA,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE;AAC5C,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9D,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClC,SAAC,CAAC,EACF,UAAU,CAAC,CAAC,GAAG,KAAI;AAClB,YAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;YAC7C,OAAO,EAAE,EAAE,CAAC;SACZ,CAAC,CACF,CAAC;KACH;AAED,IAAA,WAAW,CAAC,OAAuB,EAAA;QAClC,MAAM,MAAM,GAAW,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,KAAI;YAC9C,OAAO;AACN,gBAAA,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC;gBACvC,SAAS,EAAE,OAAO,CAAC,gBAAgB,GAAG,mBAAmB,GAAG,yBAAyB;AACrF,gBAAA,IAAI,EAAE,OAAqC;gBAC3C,WAAW,EAAE,CAAC,SAAS,CAAC;aACxB,CAAC;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,MAAM,CAAC;KACd;AAED,IAAA,YAAY,CAAC,KAAuB,EAAA;AAC7B,QAAA,UAAW,CAAC,aAAa,CAAC,GAAG,CAAC;YACnC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,EAAE;AAChG,YAAA,GAAG,KAAK;AACR,SAAA,CAAC,CAAC;KACH;AACD,IAAA,UAAU,CAAC,KAAsC,EAAA;AAC1C,QAAA,UAAW,CAAC,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC;KAC3C;AAEO,IAAA,qBAAqB,CAAC,KAAuB,EAAA;QACpD,OAAO,KAAK,CAAC,MAAM,CAAmB,CAAC,GAAG,EAAE,IAAI,KAAI;YACnD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC7C,gBAAA,OAAO,GAAG,CAAC;aACX;AAED,YAAA,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;AAEjC,YAAA,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE;gBAC/B,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAEpE,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;AAC3D,oBAAA,OAAO,GAAG,CAAC;iBACX;aACD;AAED,YAAA,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvB,YAAA,OAAO,GAAG,CAAC;SACX,EAAE,EAAE,CAAC,CAAC;KACP;AAEO,IAAA,aAAa,CAAC,cAAyB,EAAA;AAC9C,QAAA,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC;SACZ;AACD,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;KACpE;8GAhFW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA,CAAA,EAAA;;2FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ICftB,KAkBX;AAlBD,CAAA,UAAY,IAAI,EAAA;AACf,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,IAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACZ,CAAC,EAlBW,IAAI,KAAJ,IAAI,GAkBf,EAAA,CAAA,CAAA;;ACpBK,MAAO,iBAAkB,SAAQ,sBAAsB,CAAA;IACnD,gBAAgB,CAAC,MAA8B,EAAE,IAA4B,EAAA;QACrF,IAAI,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,GAAG,aAAa,CAAC,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,GAAG,aAAa,CAAC;AAChH,YAAA,OAAO,KAAK,CAAC;QAEd,OAAO,MAAM,EAAE,WAAW,KAAK,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACpH;AACD;;ACTD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"aril-boot-config-apps.mjs","sources":["../../projects/aril/boot/config/apps/src/route-permissions.ts","../../projects/aril/boot/config/apps/src/auth.guard.ts","../../projects/aril/boot/config/apps/src/showdowDOMWrapper.ts","../../projects/aril/boot/config/apps/src/apps.service.ts","../../projects/aril/boot/config/apps/src/interfaces.ts","../../projects/aril/boot/config/apps/src/reuse-strategy.ts","../../projects/aril/boot/config/apps/aril-boot-config-apps.ts"],"sourcesContent":["import { PluginMenuItem } from './interfaces';\r\n\r\nconst routePermissions = new Map<string, string[]>();\r\n\r\nexport function setRoutePermissions(menuItems: PluginMenuItem[]): void {\r\n\troutePermissions.clear();\r\n\tbuildPermissionsMap(menuItems);\r\n}\r\n\r\nexport function getRoutePermissions(url: string): string[] | undefined {\r\n\tconst normalizedUrl = url.split('?')[0].replace(/^\\//, '');\r\n return routePermissions.get(normalizedUrl);\r\n}\r\n\r\nfunction buildPermissionsMap(items: PluginMenuItem[]): void {\r\n\tfor (const item of items) {\r\n\t\tif (item.routerLink && item.permittedRoles?.length) {\r\n\t\t\tconst normalized = item.routerLink.replace(/^\\//, '');\r\n\t\t\troutePermissions.set(normalized, item.permittedRoles);\r\n\t\t}\r\n\r\n\t\tif (item.items?.length) {\r\n\t\t\tbuildPermissionsMap(item.items);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\n\r\nimport { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';\r\n\r\nimport { getRoutePermissions } from './route-permissions';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard extends KeycloakAuthGuard {\r\n\tconstructor() {\r\n\t\tsuper(inject(Router), inject(KeycloakService));\r\n\t}\r\n\r\n\toverride async isAccessAllowed(\r\n\t\troute: ActivatedRouteSnapshot,\r\n\t\tstate: RouterStateSnapshot\r\n\t): Promise<boolean | UrlTree> {\r\n\t\tif (!this.authenticated) {\r\n\t\t\tawait this.keycloakAngular.login({ redirectUri: window.location.href });\r\n\t\t}\r\n\r\n\t\tconst permittedRoles = getRoutePermissions(state.url);\r\n\r\n\t\tif (permittedRoles?.length) {\r\n\t\t\tconst hasRole = permittedRoles.some((role) => this.roles.includes(role));\r\n\t\t\tif (!hasRole) {\r\n\t\t\t\treturn this.router.createUrlTree(['/forbidden']);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.authenticated;\r\n\t}\r\n}\r\n","import { Component, ElementRef, OnInit, Renderer2, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\n\r\nimport { WebComponentWrapper } from '@angular-architects/module-federation-tools';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\ttemplate: '<div #vc></div>',\r\n\tencapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class ShadowDOMWrapperComponent extends WebComponentWrapper implements OnInit {\r\n\t@ViewChild('vc', { read: ElementRef, static: true }) override vc!: ElementRef;\r\n\r\n\tprivate renderer = inject(Renderer2);\r\n\r\n\tngOnInit(): void {\r\n\t\tconst shadowRoot = this.vc.nativeElement.parentNode;\r\n\t\tconst styleUrls = this['route'].snapshot.data.styleUrls || [];\r\n\r\n\t\t// Inject styles into the Shadow DOM\r\n\t\tstyleUrls.forEach((url: string) => {\r\n\t\t\tconst link = this.renderer.createElement('link');\r\n\t\t\tlink.setAttribute('rel', 'stylesheet');\r\n\t\t\tlink.setAttribute('type', 'text/css');\r\n\t\t\tlink.setAttribute('href', url);\r\n\t\t\tthis.renderer.appendChild(shadowRoot, link);\r\n\t\t});\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject, isDevMode } from '@angular/core';\r\nimport { Router, Routes } from '@angular/router';\r\n\r\nimport {\r\n\tWebComponentWrapper,\r\n\tWebComponentWrapperOptions,\r\n\tstartsWith\r\n} from '@angular-architects/module-federation-tools';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { Observable, catchError, map, of } from 'rxjs';\r\n\r\nimport { ForbiddenComponent, NotFoundComponent } from 'aril/util/custom_pages';\r\n\r\nimport { AuthGuard } from './auth.guard';\r\nimport { AppsDTO, ExtensionConfig, PluginConfig, PluginMenuItem } from './interfaces';\r\nimport { setRoutePermissions } from './route-permissions';\r\nimport { ShadowDOMWrapperComponent } from './showdowDOMWrapper';\r\n\r\nexport interface MicroAppInitResult {\r\n\tmenuItems: PluginMenuItem[];\r\n\tplugins: Record<string, ExtensionConfig>;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MicroAppService {\r\n\tprivate readonly router = inject(Router);\r\n\tprivate readonly keycloak = inject(KeycloakService);\r\n\r\n\tprivate userRoles: string[] = [];\r\n\r\n\tinit(httpClient: HttpClient, hostAPI: string): Observable<MicroAppInitResult> {\r\n\t\tthis.userRoles = this.keycloak.getUserRoles();\r\n\t\treturn httpClient\r\n\t\t\t.get<AppsDTO>(isDevMode() ? './assets/local-configs/app.local.json' : hostAPI + '/ui-sidebar-configs')\r\n\t\t\t.pipe(\r\n\t\t\t\tmap((apps) => {\r\n\t\t\t\t\tsetRoutePermissions(apps.menuItems);\r\n\t\t\t\t\tconst routes = this.buildRoutes([...apps.modules, ...apps.plugins]);\r\n\r\n\t\t\t\t\tthis.router.resetConfig([\r\n\t\t\t\t\t\t...this.router.config,\r\n\t\t\t\t\t\t...routes,\r\n\t\t\t\t\t\t{ path: 'forbidden', component: ForbiddenComponent },\r\n\t\t\t\t\t\t{ path: '**', component: NotFoundComponent }\r\n\t\t\t\t\t]);\r\n\r\n\t\t\t\t\tconst filteredMenuItems = this.filterMenuItemsByRole(apps.menuItems);\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmenuItems: [\r\n\t\t\t\t\t\t\t{ root: true, label: { tr: 'Anasayfa', en: 'Home' }, icon: 'pi pi-fw pi-home', routerLink: '/' } as PluginMenuItem,\r\n\t\t\t\t\t\t\t...filteredMenuItems\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t\tplugins: apps.extensions || {}\r\n\t\t\t\t\t};\r\n\t\t\t\t}),\r\n\t\t\t\tcatchError((err) => {\r\n\t\t\t\t\tconsole.log('Error Micro Apps Loading', err);\r\n\t\t\t\t\treturn of<MicroAppInitResult>({ menuItems: [], plugins: {} });\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t}\r\n\r\n\tbuildRoutes(options: PluginConfig[]): Routes {\r\n\t\tconst routes: Routes = options.map((options) => {\r\n\t\t\treturn {\r\n\t\t\t\tmatcher: startsWith(options.remoteName),\r\n\t\t\t\tcomponent: options.shadowDomPassive ? WebComponentWrapper : ShadowDOMWrapperComponent,\r\n\t\t\t\tdata: options as WebComponentWrapperOptions,\r\n\t\t\t\tcanActivate: [AuthGuard]\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn routes;\r\n\t}\r\n\r\n\tprivate filterMenuItemsByRole(items: PluginMenuItem[]): PluginMenuItem[] {\r\n\t\treturn items.reduce<PluginMenuItem[]>((acc, item) => {\r\n\t\t\tif (!this.hasPermission(item.permittedRoles)) {\r\n\t\t\t\treturn acc;\r\n\t\t\t}\r\n\r\n\t\t\tconst filteredItem = { ...item };\r\n\r\n\t\t\tif (filteredItem.items?.length) {\r\n\t\t\t\tfilteredItem.items = this.filterMenuItemsByRole(filteredItem.items);\r\n\r\n\t\t\t\tif (!filteredItem.items.length && !filteredItem.routerLink) {\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tacc.push(filteredItem);\r\n\t\t\treturn acc;\r\n\t\t}, []);\r\n\t}\r\n\r\n\tprivate hasPermission(permittedRoles?: string[]): boolean {\r\n\t\tif (!permittedRoles?.length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn permittedRoles.some((role) => this.userRoles.includes(role));\r\n\t}\r\n}\r\n","import { MenuItemCommandEvent } from 'primeng/api';\r\n\r\nimport { WebComponentWrapperOptions } from '@angular-architects/module-federation-tools';\r\n\r\nexport enum Apps {\r\n\tTHOR = 'thor',\r\n\tCRM = 'crm',\r\n\tWDM = 'wdm',\r\n\tBILLING = 'billing',\r\n\tPAYMENT = 'payment',\r\n\tYEAP = 'yeap',\r\n\tMW = 'mw',\r\n\tLENA = 'lena',\r\n\tHES = 'hes',\r\n\tCTS = 'cts',\r\n\tSIS = 'sis',\r\n\tMNG = 'mng',\r\n\tMDM = 'mdm',\r\n\tSTATE_MACHINE = 'state-machine',\r\n\tREPORT = 'report',\r\n\tLGC = 'lgc',\r\n\tDMS = 'dms'\r\n}\r\n\r\nexport interface AppsDTO {\r\n\tversion: number;\r\n\tmodules: PluginConfig[];\r\n\tplugins: PluginConfig[];\r\n\textensions: Record<string, ExtensionConfig>;\r\n\tmenuItems: PluginMenuItem[];\r\n}\r\n\r\nexport interface ExtensionConfig {\r\n\toptions: PluginConfig;\r\n}\r\n\r\nexport type PluginConfig = WebComponentWrapperOptions & {\r\n\tid?: string;\r\n\tremoteName: string;\r\n\tshadowDomPassive: boolean;\r\n\tpermittedRoles?: string[];\r\n};\r\n\r\nexport interface MenuItemAction {\r\n\tmethod?: 'GET' | 'POST';\r\n\turl: string;\r\n\tbody?: any;\r\n\tsuccessRoute: string;\r\n\tsuccessRouteResponseKey?: string;\r\n}\r\n\r\nexport interface PluginMenuItem {\r\n\trouterLink?: string;\r\n\ticon?: string;\r\n\tlabel: {\r\n\t\t[languageCode: string]: string;\r\n\t};\r\n\titems?: PluginMenuItem[];\r\n\tpermittedRoles?: string[];\r\n\taction?: MenuItemAction;\r\n\r\n\t// UI fields\r\n\tseparator?: boolean;\r\n\troot?: boolean;\r\n\tpath?: string;\r\n\tdisabled?: boolean;\r\n\tcommand?(event: MenuItemCommandEvent): void;\r\n}\r\n","import { ActivatedRouteSnapshot, BaseRouteReuseStrategy } from '@angular/router';\r\n\r\nexport class ArilReuseStrategy extends BaseRouteReuseStrategy {\r\n\toverride shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {\r\n\t\tif (curr.firstChild?.routeConfig?.data?.['remoteEntry'] === future.firstChild?.routeConfig?.data?.['remoteEntry'])\r\n\t\t\treturn false;\r\n\r\n\t\treturn future?.routeConfig === curr?.routeConfig && JSON.stringify(future?.params) === JSON.stringify(curr?.params);\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { ToastModule } from 'primeng/toast';
|
|
|
12
12
|
import { TranslocoService } from '@ngneat/transloco';
|
|
13
13
|
import { KeycloakBearerInterceptor, KeycloakAngularModule } from 'keycloak-angular';
|
|
14
14
|
import { tap, firstValueFrom } from 'rxjs';
|
|
15
|
+
import { bridge, provideMfeBridge } from 'aril/boot/bridge';
|
|
15
16
|
import { API_CONFIGS } from 'aril/boot/config/api';
|
|
16
17
|
import { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';
|
|
17
18
|
import { acceptLanguageInterceptor, HttpBackendService } from 'aril/http';
|
|
@@ -20,8 +21,8 @@ import { authInterceptor, keycloakAuthInterceptor } from 'aril/keycloak';
|
|
|
20
21
|
import { provideHost, provideHostRouter, provideLocaleId } from 'aril/provider';
|
|
21
22
|
|
|
22
23
|
const getNgZone = () => {
|
|
23
|
-
if (
|
|
24
|
-
return { provide: NgZone, useValue:
|
|
24
|
+
if (bridge.hostNgZone) {
|
|
25
|
+
return { provide: NgZone, useValue: bridge.hostNgZone };
|
|
25
26
|
}
|
|
26
27
|
else
|
|
27
28
|
return [];
|
|
@@ -93,7 +94,7 @@ const PLUGINS = new FactoryClass();
|
|
|
93
94
|
function loadPlugins() {
|
|
94
95
|
return () => {
|
|
95
96
|
try {
|
|
96
|
-
const pluginsData =
|
|
97
|
+
const pluginsData = bridge.pluginJson();
|
|
97
98
|
Object.assign(PLUGINS, pluginsData);
|
|
98
99
|
}
|
|
99
100
|
catch (err) {
|
|
@@ -107,6 +108,7 @@ async function bootPlugin(selector, component) {
|
|
|
107
108
|
const config = {
|
|
108
109
|
providers: [
|
|
109
110
|
provideAnimations(),
|
|
111
|
+
provideMfeBridge(),
|
|
110
112
|
provideHost(selector), // todo refactor
|
|
111
113
|
provideHostRouter(),
|
|
112
114
|
provideLocaleId(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-boot-config-plugins.mjs","sources":["../../projects/aril/boot/config/plugins/src/getNgZone.ts","../../projects/aril/boot/config/plugins/src/interfaces.ts","../../projects/aril/boot/config/plugins/src/plugins.service.ts","../../projects/aril/boot/config/plugins/aril-boot-config-plugins.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\r\n\r\nexport const getNgZone = () => {\r\n\tif ((<any>globalThis).ngZone) {\r\n\t\treturn { provide: NgZone, useValue: (<any>globalThis).ngZone };\r\n\t} else return [];\r\n};\r\n","import { LoadRemoteModuleScriptOptions } from '@angular-architects/module-federation';\r\n\r\ninterface PluginItem {\r\n\toptions: LoadRemoteModuleScriptOptions & { elementName: string };\r\n\tprops: { [key in string]: any };\r\n\tevents: { [key in string]: Function };\r\n}\r\n\r\nexport type PluginConfigs = { [key in string]: PluginItem };\r\n\r\nexport class FactoryClass {}\r\n\r\nenum Apps {\r\n\tTHOR = 'thor',\r\n\tCRM = 'crm',\r\n\tWDM = 'wdm',\r\n\tBILLING = 'billing',\r\n\tPAYMENT = 'payment',\r\n\tYEAP = 'yeap',\r\n\tMW = 'mw',\r\n\tLENA = 'lena',\r\n\tHES = 'hes',\r\n\tCTS = 'cts',\r\n\tSIS = 'sis',\r\n\tMNG = 'mng',\r\n\tMDM = 'mdm',\r\n\tSTATE_MACHINE = 'state-machine',\r\n\tLGC = 'lgc',\r\n\tDMS = 'dms'\r\n}\r\n\r\nexport enum AppsRoutes {\r\n\tMNG_BASE_URL = 'mngBaseUrl',\r\n}\r\n\r\nexport interface KeycloakConfig {\r\n\turl: string;\r\n\trealm: string;\r\n\tclientId: string;\r\n}\r\n\r\nexport class ApiConfigsFactory {\r\n\tapi: string = '';\r\n\tfromMail: string = '';\r\n\tmwApi: string = '';\r\n\taiApi: string='';\r\n\tstatusApi: string='';\r\n\tenvironment: string = '';\r\n\troutes: Record<AppsRoutes, string> = {\r\n\t\tmngBaseUrl: '',\r\n\t};\r\n\tprefixMap: Record<Apps,string>= {\r\n\t\t[Apps.THOR]: '',\r\n\t\t[Apps.CRM]: '',\r\n\t\t[Apps.WDM]: '',\r\n\t\t[Apps.BILLING]: '',\r\n\t\t[Apps.PAYMENT]: '',\r\n\t\t[Apps.YEAP]: '',\r\n\t\t[Apps.MW]: '',\r\n\t\t[Apps.LENA]: '',\r\n\t\t[Apps.HES]: '',\r\n\t\t[Apps.CTS]: '',\r\n\t\t[Apps.SIS]: '',\r\n\t\t[Apps.MNG]: '',\r\n\t\t[Apps.STATE_MACHINE]: '',\r\n\t\t[Apps.MDM]:'',\r\n\t\t[Apps.LGC]: '',\r\n\t\t[Apps.DMS]: ''\r\n\t};\r\n\tkeycloak: KeycloakConfig = {\r\n\t\turl: '',\r\n\t\trealm: '',\r\n\t\tclientId: ''\r\n\t};\r\n}\r\n","import { HttpClient, provideHttpClient, withInterceptors } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig, Type, importProvidersFrom, isDevMode } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { createApplication } from '@angular/platform-browser';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\n\r\nimport { ConfirmationService, MessageService, PrimeNGConfig } from 'primeng/api';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakAngularModule, KeycloakBearerInterceptor } from 'keycloak-angular';\r\nimport { firstValueFrom, tap } from 'rxjs';\r\n\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { HttpBackendService, acceptLanguageInterceptor } from 'aril/http';\r\nimport { i18nFolderName, i18nModule } from 'aril/i18n';\r\nimport { authInterceptor, keycloakAuthInterceptor } from 'aril/keycloak';\r\nimport { provideHost, provideHostRouter, provideLocaleId } from 'aril/provider';\r\n\r\nimport { getNgZone } from './getNgZone';\r\nimport { ApiConfigsFactory, FactoryClass, PluginConfigs } from './interfaces';\r\n\r\nexport const PLUGINS = new FactoryClass() as FactoryClass & PluginConfigs;\r\n\r\nexport function loadPlugins(): () => void {\r\n\treturn () => {\r\n\t\ttry {\r\n\t\t\tconst pluginsData = (<any>globalThis).pluginJson;\r\n\t\t\tObject.assign(PLUGINS, pluginsData);\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log('Error Plugins Loading', err);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport async function bootPlugin(selector: string, component: Type<any>) {\r\n\tif (customElements.get(selector)) return;\r\n\r\n\tconst config: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tprovideAnimations(),\r\n\t\t\tprovideHost(selector as any), // todo refactor\r\n\t\t\tprovideHostRouter(),\r\n\t\t\tprovideLocaleId(),\r\n\t\t\tKeycloakBearerInterceptor,\r\n\t\t\tprovideHttpClient(withInterceptors([acceptLanguageInterceptor, authInterceptor, keycloakAuthInterceptor])),\r\n\t\t\timportProvidersFrom(\r\n\t\t\t\ti18nModule,\r\n\t\t\t\tKeycloakAngularModule,\r\n\t\t\t\tConfirmDialogModule,\r\n\t\t\t\tConfirmPopupModule,\r\n\t\t\t\tDialogModule,\r\n\t\t\t\tMessagesModule,\r\n\t\t\t\tToastModule\r\n\t\t\t),\r\n\t\t\tgetNgZone(),\r\n\t\t\tMessageService,\r\n\t\t\tConfirmationService,\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpBackend: { httpClient: HttpClient },\r\n\t\t\t\t\ttranslocoService: TranslocoService,\r\n\t\t\t\t\tprimeNgConfig: PrimeNGConfig\r\n\t\t\t\t) => {\r\n\t\t\t\t\treturn () => {\r\n\t\t\t\t\t\tconst activeLang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) ?? LanguageCode.TR;\r\n\r\n\t\t\t\t\t\ttranslocoService.setActiveLang(activeLang);\r\n\r\n\t\t\t\t\t\tif (!activeLang?.length) {\r\n\t\t\t\t\t\t\tconsole.warn('No language selected');\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (activeLang === LanguageCode.TR) {\r\n\t\t\t\t\t\t\tprimeNgConfig.setTranslation(TR_TRANSLATIONS);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst observable$ = httpBackend.httpClient\r\n\t\t\t\t\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\t\ttap((configs) => {\r\n\t\t\t\t\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\treturn firstValueFrom(observable$);\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tdeps: [HttpBackendService, TranslocoService, PrimeNGConfig],\r\n\t\t\t\tmulti: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tprovide: i18nFolderName,\r\n\t\t\t\tuseValue: 'host'\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n\r\n\tconst appRef = await createApplication(config);\r\n\tconst plugin = createCustomElement(component, { injector: appRef.injector });\r\n\r\n\tcustomElements.define(selector, plugin);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aril-boot-config-plugins.mjs","sources":["../../projects/aril/boot/config/plugins/src/getNgZone.ts","../../projects/aril/boot/config/plugins/src/interfaces.ts","../../projects/aril/boot/config/plugins/src/plugins.service.ts","../../projects/aril/boot/config/plugins/aril-boot-config-plugins.ts"],"sourcesContent":["import { NgZone } from '@angular/core';\r\n\r\nimport { bridge } from 'aril/boot/bridge';\r\n\r\nexport const getNgZone = () => {\r\n\tif (bridge.hostNgZone) {\r\n\t\treturn { provide: NgZone, useValue: bridge.hostNgZone };\r\n\t} else return [];\r\n};\r\n","import { LoadRemoteModuleScriptOptions } from '@angular-architects/module-federation';\r\n\r\ninterface PluginItem {\r\n\toptions: LoadRemoteModuleScriptOptions & { elementName: string };\r\n\tprops: { [key in string]: any };\r\n\tevents: { [key in string]: Function };\r\n}\r\n\r\nexport type PluginConfigs = { [key in string]: PluginItem };\r\n\r\nexport class FactoryClass {}\r\n\r\nenum Apps {\r\n\tTHOR = 'thor',\r\n\tCRM = 'crm',\r\n\tWDM = 'wdm',\r\n\tBILLING = 'billing',\r\n\tPAYMENT = 'payment',\r\n\tYEAP = 'yeap',\r\n\tMW = 'mw',\r\n\tLENA = 'lena',\r\n\tHES = 'hes',\r\n\tCTS = 'cts',\r\n\tSIS = 'sis',\r\n\tMNG = 'mng',\r\n\tMDM = 'mdm',\r\n\tSTATE_MACHINE = 'state-machine',\r\n\tLGC = 'lgc',\r\n\tDMS = 'dms'\r\n}\r\n\r\nexport enum AppsRoutes {\r\n\tMNG_BASE_URL = 'mngBaseUrl',\r\n}\r\n\r\nexport interface KeycloakConfig {\r\n\turl: string;\r\n\trealm: string;\r\n\tclientId: string;\r\n}\r\n\r\nexport class ApiConfigsFactory {\r\n\tapi: string = '';\r\n\tfromMail: string = '';\r\n\tmwApi: string = '';\r\n\taiApi: string='';\r\n\tstatusApi: string='';\r\n\tenvironment: string = '';\r\n\troutes: Record<AppsRoutes, string> = {\r\n\t\tmngBaseUrl: '',\r\n\t};\r\n\tprefixMap: Record<Apps,string>= {\r\n\t\t[Apps.THOR]: '',\r\n\t\t[Apps.CRM]: '',\r\n\t\t[Apps.WDM]: '',\r\n\t\t[Apps.BILLING]: '',\r\n\t\t[Apps.PAYMENT]: '',\r\n\t\t[Apps.YEAP]: '',\r\n\t\t[Apps.MW]: '',\r\n\t\t[Apps.LENA]: '',\r\n\t\t[Apps.HES]: '',\r\n\t\t[Apps.CTS]: '',\r\n\t\t[Apps.SIS]: '',\r\n\t\t[Apps.MNG]: '',\r\n\t\t[Apps.STATE_MACHINE]: '',\r\n\t\t[Apps.MDM]:'',\r\n\t\t[Apps.LGC]: '',\r\n\t\t[Apps.DMS]: ''\r\n\t};\r\n\tkeycloak: KeycloakConfig = {\r\n\t\turl: '',\r\n\t\trealm: '',\r\n\t\tclientId: ''\r\n\t};\r\n}\r\n","import { HttpClient, provideHttpClient, withInterceptors } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig, Type, importProvidersFrom, isDevMode } from '@angular/core';\r\nimport { createCustomElement } from '@angular/elements';\r\nimport { createApplication } from '@angular/platform-browser';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\n\r\nimport { ConfirmationService, MessageService, PrimeNGConfig } from 'primeng/api';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { ConfirmPopupModule } from 'primeng/confirmpopup';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToastModule } from 'primeng/toast';\r\n\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { KeycloakAngularModule, KeycloakBearerInterceptor } from 'keycloak-angular';\r\nimport { firstValueFrom, tap } from 'rxjs';\r\n\r\nimport { bridge, provideMfeBridge } from 'aril/boot/bridge';\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { HttpBackendService, acceptLanguageInterceptor } from 'aril/http';\r\nimport { i18nFolderName, i18nModule } from 'aril/i18n';\r\nimport { authInterceptor, keycloakAuthInterceptor } from 'aril/keycloak';\r\nimport { provideHost, provideHostRouter, provideLocaleId } from 'aril/provider';\r\n\r\nimport { getNgZone } from './getNgZone';\r\nimport { ApiConfigsFactory, FactoryClass, PluginConfigs } from './interfaces';\r\n\r\nexport const PLUGINS = new FactoryClass() as FactoryClass & PluginConfigs;\r\n\r\nexport function loadPlugins(): () => void {\r\n\treturn () => {\r\n\t\ttry {\r\n\t\t\tconst pluginsData = bridge.pluginJson();\r\n\t\t\tObject.assign(PLUGINS, pluginsData);\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log('Error Plugins Loading', err);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport async function bootPlugin(selector: string, component: Type<any>) {\r\n\tif (customElements.get(selector)) return;\r\n\r\n\tconst config: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tprovideAnimations(),\r\n\t\t\tprovideMfeBridge(),\r\n\t\t\tprovideHost(selector as any), // todo refactor\r\n\t\t\tprovideHostRouter(),\r\n\t\t\tprovideLocaleId(),\r\n\t\t\tKeycloakBearerInterceptor,\r\n\t\t\tprovideHttpClient(withInterceptors([acceptLanguageInterceptor, authInterceptor, keycloakAuthInterceptor])),\r\n\t\t\timportProvidersFrom(\r\n\t\t\t\ti18nModule,\r\n\t\t\t\tKeycloakAngularModule,\r\n\t\t\t\tConfirmDialogModule,\r\n\t\t\t\tConfirmPopupModule,\r\n\t\t\t\tDialogModule,\r\n\t\t\t\tMessagesModule,\r\n\t\t\t\tToastModule\r\n\t\t\t),\r\n\t\t\tgetNgZone(),\r\n\t\t\tMessageService,\r\n\t\t\tConfirmationService,\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpBackend: { httpClient: HttpClient },\r\n\t\t\t\t\ttranslocoService: TranslocoService,\r\n\t\t\t\t\tprimeNgConfig: PrimeNGConfig\r\n\t\t\t\t) => {\r\n\t\t\t\t\treturn () => {\r\n\t\t\t\t\t\tconst activeLang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) ?? LanguageCode.TR;\r\n\r\n\t\t\t\t\t\ttranslocoService.setActiveLang(activeLang);\r\n\r\n\t\t\t\t\t\tif (!activeLang?.length) {\r\n\t\t\t\t\t\t\tconsole.warn('No language selected');\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (activeLang === LanguageCode.TR) {\r\n\t\t\t\t\t\t\tprimeNgConfig.setTranslation(TR_TRANSLATIONS);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst observable$ = httpBackend.httpClient\r\n\t\t\t\t\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\t\ttap((configs) => {\r\n\t\t\t\t\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\treturn firstValueFrom(observable$);\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tdeps: [HttpBackendService, TranslocoService, PrimeNGConfig],\r\n\t\t\t\tmulti: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tprovide: i18nFolderName,\r\n\t\t\t\tuseValue: 'host'\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n\r\n\tconst appRef = await createApplication(config);\r\n\tconst plugin = createCustomElement(component, { injector: appRef.injector });\r\n\r\n\tcustomElements.define(selector, plugin);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { provideHttpClient, withInterceptors, HttpClient } from '@angular/common/http';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { inject, NgZone, Component, importProvidersFrom, APP_INITIALIZER } from '@angular/core';
|
|
4
4
|
import { bootstrapApplication } from '@angular/platform-browser';
|
|
5
5
|
import { provideAnimations } from '@angular/platform-browser/animations';
|
|
6
6
|
import { provideRouter, withComponentInputBinding, withHashLocation, withViewTransitions, withRouterConfig, RouteReuseStrategy, Router } from '@angular/router';
|
|
7
7
|
import { MessageService, ConfirmationService } from 'primeng/api';
|
|
8
8
|
import { KeycloakBearerInterceptor, KeycloakAngularModule, KeycloakService } from 'keycloak-angular';
|
|
9
|
+
import * as i3 from 'aril/boot/bridge';
|
|
10
|
+
import { provideMfeBridge, bridge } from 'aril/boot/bridge';
|
|
9
11
|
import { loadApiConfigs, loadInitData } from 'aril/boot/config/api';
|
|
10
12
|
import { ArilReuseStrategy, MicroAppService } from 'aril/boot/config/apps';
|
|
11
13
|
import { loadPlugins } from 'aril/boot/config/plugins';
|
|
@@ -17,15 +19,15 @@ import * as i1 from 'aril/theme/layout';
|
|
|
17
19
|
import { AppLayoutComponent } from 'aril/theme/layout';
|
|
18
20
|
import * as i2 from 'aril/util/pub-sub';
|
|
19
21
|
|
|
20
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
21
22
|
class AppComponent {
|
|
22
|
-
constructor(layoutService, pubSubService) {
|
|
23
|
+
constructor(layoutService, pubSubService, bridgeSvc) {
|
|
23
24
|
this.layoutService = layoutService;
|
|
24
25
|
this.pubSubService = pubSubService;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
this.bridgeSvc = bridgeSvc;
|
|
27
|
+
this.bridgeSvc.mirrorToWindow();
|
|
28
|
+
this.bridgeSvc.activeHost.set(appName);
|
|
29
|
+
this.bridgeSvc.isHostMode.set(true);
|
|
30
|
+
this.bridgeSvc.hostNgZone = inject(NgZone);
|
|
29
31
|
this.pubSubService.subscribe('menuModeChanged', (data) => {
|
|
30
32
|
const menuMode = data?.custom;
|
|
31
33
|
if (menuMode && (menuMode === 'static' || menuMode === 'expandable')) {
|
|
@@ -47,7 +49,7 @@ class AppComponent {
|
|
|
47
49
|
}
|
|
48
50
|
});
|
|
49
51
|
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, deps: [{ token: i1.LayoutService }, { token: i2.PubSubService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, deps: [{ token: i1.LayoutService }, { token: i2.PubSubService }, { token: i3.MfeBridge }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
51
53
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AppComponent, isStandalone: true, selector: "aril-root", ngImport: i0, template: ` <app-layout></app-layout> `, isInline: true, dependencies: [{ kind: "component", type: AppLayoutComponent, selector: "app-layout" }] }); }
|
|
52
54
|
}
|
|
53
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, decorators: [{
|
|
@@ -58,7 +60,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
58
60
|
template: ` <app-layout></app-layout> `,
|
|
59
61
|
imports: [AppLayoutComponent]
|
|
60
62
|
}]
|
|
61
|
-
}], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.PubSubService }] });
|
|
63
|
+
}], ctorParameters: () => [{ type: i1.LayoutService }, { type: i2.PubSubService }, { type: i3.MfeBridge }] });
|
|
62
64
|
|
|
63
65
|
var appName;
|
|
64
66
|
const boot = (_appName, routes) => {
|
|
@@ -66,6 +68,7 @@ const boot = (_appName, routes) => {
|
|
|
66
68
|
const appConfig = {
|
|
67
69
|
providers: [
|
|
68
70
|
provideAnimations(),
|
|
71
|
+
provideMfeBridge(),
|
|
69
72
|
provideLocaleId(),
|
|
70
73
|
KeycloakBearerInterceptor,
|
|
71
74
|
provideHttpClient(withInterceptors([acceptLanguageInterceptor, authInterceptor, keycloakAuthInterceptor])),
|
|
@@ -78,7 +81,7 @@ const boot = (_appName, routes) => {
|
|
|
78
81
|
provide: APP_INITIALIZER,
|
|
79
82
|
useFactory: (httpClient, keycloak, router, folderName, microAppService) => {
|
|
80
83
|
if (router)
|
|
81
|
-
|
|
84
|
+
bridge.hostRouter = router;
|
|
82
85
|
const runLoadApiConfigs = loadApiConfigs(httpClient, keycloak, folderName, microAppService);
|
|
83
86
|
const runLoadInitData = loadInitData(httpClient);
|
|
84
87
|
const runLoadPlugins = loadPlugins();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-boot-host.mjs","sources":["../../projects/aril/boot/host/src/app.component.ts","../../projects/aril/boot/host/src/bootstrap.ts","../../projects/aril/boot/host/aril-boot-host.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"aril-boot-host.mjs","sources":["../../projects/aril/boot/host/src/app.component.ts","../../projects/aril/boot/host/src/bootstrap.ts","../../projects/aril/boot/host/aril-boot-host.ts"],"sourcesContent":["import { Component, NgZone, inject } from '@angular/core';\r\n\r\nimport { MfeBridge } from 'aril/boot/bridge';\r\nimport { AppLayoutComponent, LayoutService } from 'aril/theme/layout';\r\nimport { PubSubService } from 'aril/util/pub-sub';\r\n\r\nimport { appName } from './bootstrap';\r\n\r\ntype MenuMode = 'static' | 'expandable';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'aril-root',\r\n\ttemplate: ` <app-layout></app-layout> `,\r\n\timports: [AppLayoutComponent]\r\n})\r\nexport class AppComponent {\r\n\tconstructor(\r\n\t\tprivate readonly layoutService: LayoutService,\r\n\t\tprivate readonly pubSubService: PubSubService,\r\n\t\tprivate readonly bridgeSvc: MfeBridge\r\n\t) {\r\n\t\tthis.bridgeSvc.mirrorToWindow();\r\n\t\tthis.bridgeSvc.activeHost.set(appName);\r\n\t\tthis.bridgeSvc.isHostMode.set(true);\r\n\t\tthis.bridgeSvc.hostNgZone = inject(NgZone);\r\n\r\n\t\tthis.pubSubService.subscribe('menuModeChanged', (data) => {\r\n\t\t\tconst menuMode = data?.custom;\r\n\r\n\t\t\tif (menuMode && (menuMode === 'static' || menuMode === 'expandable')) {\r\n\t\t\t\tthis.layoutService.config.update((config) => {\r\n\t\t\t\t\tconst newConfig = {\r\n\t\t\t\t\t\t...config,\r\n\t\t\t\t\t\tmenuMode: menuMode as MenuMode\r\n\t\t\t\t\t};\r\n\t\t\t\t\treturn newConfig;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (menuMode === 'static') {\r\n\t\t\t\t\tthis.layoutService.state.staticSidebarVisible = true;\r\n\t\t\t\t} else if (menuMode === 'expandable') {\r\n\t\t\t\t\tthis.layoutService.state.staticSidebarVisible = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Always close mobile menu on mode change\r\n\t\t\t\tthis.layoutService.state.staticMenuMobileActive = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import { HttpClient, provideHttpClient, withInterceptors } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig, importProvidersFrom } from '@angular/core';\r\nimport { bootstrapApplication } from '@angular/platform-browser';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\nimport {\r\n\tRouteReuseStrategy,\r\n\tRouter,\r\n\tRoutes,\r\n\tprovideRouter,\r\n\twithComponentInputBinding,\r\n\twithHashLocation,\r\n\twithRouterConfig,\r\n\twithViewTransitions\r\n} from '@angular/router';\r\n\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\n\r\nimport { KeycloakAngularModule, KeycloakBearerInterceptor, KeycloakService } from 'keycloak-angular';\r\n\r\nimport { bridge, provideMfeBridge } from 'aril/boot/bridge';\r\nimport { loadApiConfigs, loadInitData } from 'aril/boot/config/api';\r\nimport { Apps, ArilReuseStrategy, MicroAppService } from 'aril/boot/config/apps';\r\nimport { loadPlugins } from 'aril/boot/config/plugins';\r\nimport { acceptLanguageInterceptor } from 'aril/http';\r\nimport { i18nFolderName, i18nModule } from 'aril/i18n';\r\nimport { authInterceptor, keycloakAuthInterceptor } from 'aril/keycloak';\r\nimport { provideLocaleId } from 'aril/provider';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nexport var appName: Apps;\r\n\r\nexport const boot = (_appName: Apps, routes: Routes) => {\r\n\tappName = _appName;\r\n\tconst appConfig: ApplicationConfig = {\r\n\t\tproviders: [\r\n\t\t\tprovideAnimations(),\r\n\t\t\tprovideMfeBridge(),\r\n\t\t\tprovideLocaleId(),\r\n\t\t\tKeycloakBearerInterceptor,\r\n\t\t\tprovideHttpClient(withInterceptors([acceptLanguageInterceptor, authInterceptor, keycloakAuthInterceptor])),\r\n\t\t\tprovideRouter(\r\n\t\t\t\troutes,\r\n\t\t\t\twithComponentInputBinding(),\r\n\t\t\t\twithHashLocation(),\r\n\t\t\t\twithViewTransitions(),\r\n\t\t\t\twithRouterConfig({ onSameUrlNavigation: 'reload' })\r\n\t\t\t),\r\n\t\t\t{ provide: RouteReuseStrategy, useClass: ArilReuseStrategy },\r\n\t\t\timportProvidersFrom(i18nModule, KeycloakAngularModule),\r\n\t\t\tMessageService,\r\n\t\t\tConfirmationService,\r\n\t\t\t{\r\n\t\t\t\tprovide: APP_INITIALIZER,\r\n\t\t\t\tuseFactory: (\r\n\t\t\t\t\thttpClient: HttpClient,\r\n\t\t\t\t\tkeycloak: KeycloakService,\r\n\t\t\t\t\trouter: Router,\r\n\t\t\t\t\tfolderName: typeof i18nFolderName,\r\n\t\t\t\t\tmicroAppService: MicroAppService\r\n\t\t\t\t) => {\r\n\t\t\t\t\tif (router) bridge.hostRouter = router;\r\n\r\n\t\t\t\t\tconst runLoadApiConfigs = loadApiConfigs(\r\n\t\t\t\t\t\thttpClient,\r\n\t\t\t\t\t\tkeycloak,\r\n\t\t\t\t\t\tfolderName as unknown as string,\r\n\t\t\t\t\t\tmicroAppService\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst runLoadInitData = loadInitData(httpClient);\r\n\t\t\t\t\tconst runLoadPlugins = loadPlugins();\r\n\t\t\t\t\treturn async () => {\r\n\t\t\t\t\t\tawait runLoadApiConfigs();\r\n\t\t\t\t\t\tawait runLoadInitData();\r\n\t\t\t\t\t\trunLoadPlugins();\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tmulti: true,\r\n\t\t\t\tdeps: [HttpClient, KeycloakService, Router, i18nFolderName, MicroAppService]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tprovide: i18nFolderName,\r\n\t\t\t\tuseValue: 'host'\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n\r\n\tbootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));\r\n};\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;MAgBa,YAAY,CAAA;AACxB,IAAA,WAAA,CACkB,aAA4B,EAC5B,aAA4B,EAC5B,SAAoB,EAAA;QAFpB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AAErC,QAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,IAAI,KAAI;AACxD,YAAA,MAAM,QAAQ,GAAG,IAAI,EAAE,MAAM,CAAC;AAE9B,YAAA,IAAI,QAAQ,KAAK,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,YAAY,CAAC,EAAE;gBACrE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,KAAI;AAC3C,oBAAA,MAAM,SAAS,GAAG;AACjB,wBAAA,GAAG,MAAM;AACT,wBAAA,QAAQ,EAAE,QAAoB;qBAC9B,CAAC;AACF,oBAAA,OAAO,SAAS,CAAC;AAClB,iBAAC,CAAC,CAAC;AAEH,gBAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;oBAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC;iBACrD;AAAM,qBAAA,IAAI,QAAQ,KAAK,YAAY,EAAE;oBACrC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC;iBACtD;;gBAGD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC;aACxD;AACF,SAAC,CAAC,CAAC;KACH;8GAjCW,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAHd,CAA6B,2BAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC7B,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAEhB,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,CAA6B,2BAAA,CAAA;oBACvC,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC7B,iBAAA,CAAA;;;ACeU,IAAA,QAAc;MAEZ,IAAI,GAAG,CAAC,QAAc,EAAE,MAAc,KAAI;IACtD,OAAO,GAAG,QAAQ,CAAC;AACnB,IAAA,MAAM,SAAS,GAAsB;AACpC,QAAA,SAAS,EAAE;AACV,YAAA,iBAAiB,EAAE;AACnB,YAAA,gBAAgB,EAAE;AAClB,YAAA,eAAe,EAAE;YACjB,yBAAyB;YACzB,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,yBAAyB,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAC1G,aAAa,CACZ,MAAM,EACN,yBAAyB,EAAE,EAC3B,gBAAgB,EAAE,EAClB,mBAAmB,EAAE,EACrB,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,CACnD;AACD,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,EAAE;AAC5D,YAAA,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,CAAC;YACtD,cAAc;YACd,mBAAmB;AACnB,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;AACxB,gBAAA,UAAU,EAAE,CACX,UAAsB,EACtB,QAAyB,EACzB,MAAc,EACd,UAAiC,EACjC,eAAgC,KAC7B;AACH,oBAAA,IAAI,MAAM;AAAE,wBAAA,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;AAEvC,oBAAA,MAAM,iBAAiB,GAAG,cAAc,CACvC,UAAU,EACV,QAAQ,EACR,UAA+B,EAC/B,eAAe,CACf,CAAC;AACF,oBAAA,MAAM,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;AACjD,oBAAA,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC;oBACrC,OAAO,YAAW;wBACjB,MAAM,iBAAiB,EAAE,CAAC;wBAC1B,MAAM,eAAe,EAAE,CAAC;AACxB,wBAAA,cAAc,EAAE,CAAC;AAClB,qBAAC,CAAC;iBACF;AACD,gBAAA,KAAK,EAAE,IAAI;gBACX,IAAI,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,eAAe,CAAC;AAC5E,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,QAAQ,EAAE,MAAM;AAChB,aAAA;AACD,SAAA;KACD,CAAC;IAEF,oBAAoB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClF;;ACxFA;;AAEG;;;;"}
|