aril 1.2.19 → 1.2.20

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.
Files changed (50) hide show
  1. package/boot/config/apps/src/interfaces.d.ts +2 -1
  2. package/esm2022/boot/config/api/src/interfaces.mjs +3 -2
  3. package/esm2022/boot/config/apps/src/interfaces.mjs +2 -1
  4. package/esm2022/boot/config/plugins/src/plugins.service.mjs +7 -5
  5. package/esm2022/boot/host/src/bootstrap.mjs +5 -3
  6. package/esm2022/boot/mfe/src/bootstrap.mjs +5 -3
  7. package/esm2022/keycloak/src/auth.interceptor.mjs +5 -2
  8. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +16 -4
  9. package/esm2022/ui/button/src/button.component.mjs +5 -2
  10. package/esm2022/util/activity/aril-util-activity.mjs +5 -0
  11. package/esm2022/util/activity/index.mjs +4 -0
  12. package/esm2022/util/activity/src/activity.constants.mjs +4 -0
  13. package/esm2022/util/activity/src/activity.service.mjs +198 -0
  14. package/esm2022/util/activity/src/activity.types.mjs +2 -0
  15. package/fesm2022/{aril-app.component-Cw1MxAqD.mjs → aril-app.component-CwZZhJcO.mjs} +2 -1
  16. package/fesm2022/{aril-app.component-Cw1MxAqD.mjs.map → aril-app.component-CwZZhJcO.mjs.map} +1 -1
  17. package/fesm2022/aril-boot-config-api.mjs +2 -1
  18. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  19. package/fesm2022/aril-boot-config-apps.mjs +1 -0
  20. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  21. package/fesm2022/aril-boot-config-plugins.mjs +6 -4
  22. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  23. package/fesm2022/aril-boot-host.mjs +4 -2
  24. package/fesm2022/aril-boot-host.mjs.map +1 -1
  25. package/fesm2022/{aril-boot-mfe-app.component-CCTntpyN.mjs → aril-boot-mfe-app.component-DwYgUUdL.mjs} +3 -2
  26. package/fesm2022/{aril-boot-mfe-app.component-CCTntpyN.mjs.map → aril-boot-mfe-app.component-DwYgUUdL.mjs.map} +1 -1
  27. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-D8DZ-gT-.mjs → aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs} +6 -4
  28. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-D8DZ-gT-.mjs.map → aril-boot-mfe-aril-boot-mfe-hJkkFa_a.mjs.map} +1 -1
  29. package/fesm2022/aril-boot-mfe.mjs +2 -1
  30. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  31. package/fesm2022/aril-keycloak.mjs +4 -1
  32. package/fesm2022/aril-keycloak.mjs.map +1 -1
  33. package/fesm2022/aril-theme-layout.mjs +14 -3
  34. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  35. package/fesm2022/aril-ui-button.mjs +4 -1
  36. package/fesm2022/aril-ui-button.mjs.map +1 -1
  37. package/fesm2022/aril-util-activity.mjs +208 -0
  38. package/fesm2022/aril-util-activity.mjs.map +1 -0
  39. package/fesm2022/aril.mjs +8 -5
  40. package/fesm2022/aril.mjs.map +1 -1
  41. package/package.json +213 -207
  42. package/theme/layout/app/topbar/app.topbar.component.d.ts +5 -0
  43. package/theme/layout/app/topbar/app.topbar.component.html +3 -0
  44. package/theme/layout/app/topbar/app.topbar.component.scss +31 -0
  45. package/theme/layout/app/topbar/app.topbar.component.ts +14 -1
  46. package/ui/button/src/button.component.d.ts +2 -0
  47. package/util/activity/index.d.ts +3 -0
  48. package/util/activity/src/activity.constants.d.ts +3 -0
  49. package/util/activity/src/activity.service.d.ts +29 -0
  50. package/util/activity/src/activity.types.d.ts +13 -0
@@ -0,0 +1,4 @@
1
+ export * from './src/activity.service';
2
+ export * from './src/activity.types';
3
+ export * from './src/activity.constants';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvYWN0aXZpdHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9hY3Rpdml0eS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zcmMvYWN0aXZpdHkudHlwZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NyYy9hY3Rpdml0eS5jb25zdGFudHMnO1xyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ export const ACTIVITY_ENDPOINT_PATH = 'analytics/track';
2
+ export const ACTIVITY_SESSION_MARKER_PREFIX = 'aril.activity.session:';
3
+ export const LOGGER_SESSION_HEADER = 'x-aril-logger-session-id';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91dGlsL2FjdGl2aXR5L3NyYy9hY3Rpdml0eS5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsaUJBQWlCLENBQUM7QUFDeEQsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsd0JBQXdCLENBQUM7QUFDdkUsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQUNUSVZJVFlfRU5EUE9JTlRfUEFUSCA9ICdhbmFseXRpY3MvdHJhY2snO1xyXG5leHBvcnQgY29uc3QgQUNUSVZJVFlfU0VTU0lPTl9NQVJLRVJfUFJFRklYID0gJ2FyaWwuYWN0aXZpdHkuc2Vzc2lvbjonO1xyXG5leHBvcnQgY29uc3QgTE9HR0VSX1NFU1NJT05fSEVBREVSID0gJ3gtYXJpbC1sb2dnZXItc2Vzc2lvbi1pZCc7XHJcbiJdfQ==
@@ -0,0 +1,198 @@
1
+ import { Location } from '@angular/common';
2
+ import { Injectable, inject } from '@angular/core';
3
+ import { NavigationEnd, Router } from '@angular/router';
4
+ import { KeycloakEventType, KeycloakService } from 'keycloak-angular';
5
+ import { filter } from 'rxjs/operators';
6
+ import { API_CONFIGS } from 'aril/boot/config/api';
7
+ import { Apps } from 'aril/boot/config/apps';
8
+ import { ACTIVITY_ENDPOINT_PATH, ACTIVITY_SESSION_MARKER_PREFIX, LOGGER_SESSION_HEADER } from './activity.constants';
9
+ import * as i0 from "@angular/core";
10
+ export class ActivityService {
11
+ constructor() {
12
+ this.keycloak = inject(KeycloakService);
13
+ this.router = inject(Router);
14
+ this.location = inject(Location);
15
+ this.sessionId = null;
16
+ this.username = null;
17
+ this.previousPath = null;
18
+ this.started = false;
19
+ }
20
+ getSessionId() {
21
+ if (this.sessionId)
22
+ return this.sessionId;
23
+ const fresh = this.readSessionIdFromKeycloak();
24
+ if (fresh)
25
+ this.sessionId = fresh;
26
+ return fresh;
27
+ }
28
+ start(options = {}) {
29
+ if (this.started)
30
+ return;
31
+ this.started = true;
32
+ this.captureSessionContext();
33
+ this.subscribeKeycloakRefresh();
34
+ this.location.onUrlChange(() => this.maybeEmitPageView(this.location.path()));
35
+ if (options.shellMode) {
36
+ this.subscribeLifecycleEvents();
37
+ this.subscribeRouterEvents();
38
+ this.handleSessionStart();
39
+ }
40
+ }
41
+ track(event, properties = {}, type = 'CUSTOM') {
42
+ if (!this.started)
43
+ return;
44
+ this.send({ type, event, properties });
45
+ }
46
+ readSessionIdFromKeycloak() {
47
+ const kc = this.keycloak.getKeycloakInstance();
48
+ return kc?.sessionId ?? kc?.tokenParsed?.session_state ?? kc?.tokenParsed?.sid ?? null;
49
+ }
50
+ captureSessionContext() {
51
+ this.sessionId = this.readSessionIdFromKeycloak();
52
+ this.username = this.keycloak.getUsername() ?? null;
53
+ }
54
+ subscribeKeycloakRefresh() {
55
+ this.keycloak.keycloakEvents$.subscribe((event) => {
56
+ if (event.type === KeycloakEventType.OnAuthRefreshSuccess) {
57
+ this.captureSessionContext();
58
+ }
59
+ });
60
+ }
61
+ subscribeLifecycleEvents() {
62
+ this.keycloak.keycloakEvents$.subscribe((event) => {
63
+ if (event.type === KeycloakEventType.OnAuthLogout) {
64
+ this.sendSessionEnd('logout');
65
+ }
66
+ else if (event.type === KeycloakEventType.OnAuthRefreshError) {
67
+ this.sendSessionEnd('refresh_failed');
68
+ }
69
+ });
70
+ }
71
+ subscribeRouterEvents() {
72
+ this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe((event) => {
73
+ this.maybeEmitPageView(event.urlAfterRedirects);
74
+ });
75
+ }
76
+ maybeEmitPageView(currentUrl) {
77
+ if (currentUrl === this.previousPath)
78
+ return;
79
+ const slot = globalThis;
80
+ const lastUrl = slot['__arilActivityLastPageUrl'];
81
+ const lastAt = slot['__arilActivityLastPageAt'];
82
+ if (lastUrl === currentUrl && lastAt && Date.now() - lastAt < 1000) {
83
+ this.previousPath = currentUrl;
84
+ return;
85
+ }
86
+ const previous = this.previousPath;
87
+ this.previousPath = currentUrl;
88
+ slot['__arilActivityLastPageUrl'] = currentUrl;
89
+ slot['__arilActivityLastPageAt'] = Date.now();
90
+ this.send({
91
+ type: 'PAGE_VIEW',
92
+ event: '',
93
+ page: currentUrl,
94
+ referrer: previous ?? undefined,
95
+ properties: {}
96
+ });
97
+ }
98
+ handleSessionStart() {
99
+ if (!this.sessionId)
100
+ return;
101
+ const currentKey = `${ACTIVITY_SESSION_MARKER_PREFIX}${this.sessionId}`;
102
+ let alreadyMarked = false;
103
+ try {
104
+ alreadyMarked = !!localStorage.getItem(currentKey);
105
+ this.purgeStaleSessionMarkers(currentKey);
106
+ }
107
+ catch {
108
+ /* swallow */
109
+ }
110
+ if (alreadyMarked)
111
+ return;
112
+ try {
113
+ localStorage.setItem(currentKey, Date.now().toString());
114
+ }
115
+ catch {
116
+ /* swallow */
117
+ }
118
+ this.send({
119
+ type: 'SESSION_START',
120
+ event: 'login',
121
+ properties: { userAgent: navigator.userAgent }
122
+ });
123
+ }
124
+ purgeStaleSessionMarkers(keepKey) {
125
+ const stale = [];
126
+ for (let i = 0; i < localStorage.length; i++) {
127
+ const key = localStorage.key(i);
128
+ if (key && key !== keepKey && key.startsWith(ACTIVITY_SESSION_MARKER_PREFIX)) {
129
+ stale.push(key);
130
+ }
131
+ }
132
+ stale.forEach((k) => localStorage.removeItem(k));
133
+ }
134
+ sendSessionEnd(reason) {
135
+ if (!this.sessionId)
136
+ return;
137
+ const markerKey = `${ACTIVITY_SESSION_MARKER_PREFIX}${this.sessionId}`;
138
+ let durationMs = 0;
139
+ try {
140
+ const loginTimestamp = parseInt(localStorage.getItem(markerKey) ?? '0', 10);
141
+ durationMs = loginTimestamp ? Date.now() - loginTimestamp : 0;
142
+ localStorage.removeItem(markerKey);
143
+ }
144
+ catch {
145
+ /* swallow */
146
+ }
147
+ this.send({
148
+ type: 'SESSION_END',
149
+ event: reason,
150
+ properties: { durationMs }
151
+ });
152
+ }
153
+ toAbsoluteUrl(routerPath) {
154
+ if (routerPath.startsWith('http://') || routerPath.startsWith('https://'))
155
+ return routerPath;
156
+ return `${window.location.origin}/#${routerPath}`;
157
+ }
158
+ send(partial) {
159
+ if (!this.sessionId)
160
+ return;
161
+ const baseUrl = API_CONFIGS.getExternalAppEndpoint(Apps.EVENT_GATEWAY);
162
+ if (!baseUrl)
163
+ return;
164
+ const payload = {
165
+ type: partial.type,
166
+ sessionId: this.sessionId,
167
+ username: this.username ?? '',
168
+ event: partial.event,
169
+ page: this.toAbsoluteUrl(partial.page ?? this.location.path()),
170
+ ip: '',
171
+ referrer: partial.referrer ? this.toAbsoluteUrl(partial.referrer) : `${window.location.origin}/#`,
172
+ traceId: '',
173
+ clientTimestamp: Date.now(),
174
+ properties: partial.properties
175
+ };
176
+ const url = `${baseUrl.replace(/\/$/, '')}/${ACTIVITY_ENDPOINT_PATH}`;
177
+ this.keycloak
178
+ .getToken()
179
+ .then((token) => fetch(url, {
180
+ method: 'POST',
181
+ keepalive: true,
182
+ headers: {
183
+ 'Content-Type': 'application/json',
184
+ [LOGGER_SESSION_HEADER]: this.sessionId,
185
+ ...(token ? { Authorization: `Bearer ${token}` } : {})
186
+ },
187
+ body: JSON.stringify(payload)
188
+ }))
189
+ .catch(() => undefined);
190
+ }
191
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
192
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityService, providedIn: 'root' }); }
193
+ }
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityService, decorators: [{
195
+ type: Injectable,
196
+ args: [{ providedIn: 'root' }]
197
+ }] });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdXRpbC9hY3Rpdml0eS9zcmMvYWN0aXZpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxFQUNOLHNCQUFzQixFQUN0Qiw4QkFBOEIsRUFDOUIscUJBQXFCLEVBQ3JCLE1BQU0sc0JBQXNCLENBQUM7O0FBSTlCLE1BQU0sT0FBTyxlQUFlO0lBRDVCO1FBRWtCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGFBQVEsR0FBa0IsSUFBSSxDQUFDO1FBQy9CLGlCQUFZLEdBQWtCLElBQUksQ0FBQztRQUNuQyxZQUFPLEdBQUcsS0FBSyxDQUFDO0tBOEx4QjtJQTVMQSxZQUFZO1FBQ1gsSUFBSSxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMx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QUFDLENBQUMsRUFBRSxDQUFDO2FBQ3REO1lBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1NBQzdCLENBQUMsQ0FDRjthQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDOytHQXJNVyxlQUFlO21IQUFmLGVBQWUsY0FERixNQUFNOzs0RkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtFdmVudFR5cGUsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5pbXBvcnQgeyBBUElfQ09ORklHUyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBpJztcclxuaW1wb3J0IHsgQXBwcyB9IGZyb20gJ2FyaWwvYm9vdC9jb25maWcvYXBwcyc7XHJcblxyXG5pbXBvcnQge1xyXG5cdEFDVElWSVRZX0VORFBPSU5UX1BBVEgsXHJcblx0QUNUSVZJVFlfU0VTU0lPTl9NQVJLRVJfUFJFRklYLFxyXG5cdExPR0dFUl9TRVNTSU9OX0hFQURFUlxyXG59IGZyb20gJy4vYWN0aXZpdHkuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQWN0aXZpdHlFdmVudCwgQWN0aXZpdHlFdmVudFR5cGUgfSBmcm9tICcuL2FjdGl2aXR5LnR5cGVzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBY3Rpdml0eVNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWsgPSBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkgbG9jYXRpb24gPSBpbmplY3QoTG9jYXRpb24pO1xyXG5cclxuXHRwcml2YXRlIHNlc3Npb25JZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblx0cHJpdmF0ZSB1c2VybmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblx0cHJpdmF0ZSBwcmV2aW91c1BhdGg6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cdHByaXZhdGUgc3RhcnRlZCA9IGZhbHNlO1xyXG5cclxuXHRnZXRTZXNzaW9uSWQoKTogc3RyaW5nIHwgbnVsbCB7XHJcblx0XHRpZiAodGhpcy5zZXNzaW9uSWQpIHJldHVybiB0aGlzLnNlc3Npb25JZDtcclxuXHRcdGNvbnN0IGZyZXNoID0gdGhpcy5yZWFkU2Vzc2lvbklkRnJvbUtleWNsb2FrKCk7XHJcblx0XHRpZiAoZnJlc2gpIHRoaXMuc2Vzc2lvbklkID0gZnJlc2g7XHJcblx0XHRyZXR1cm4gZnJlc2g7XHJcblx0fVxyXG5cclxuXHRzdGFydChvcHRpb25zOiB7IHNoZWxsTW9kZT86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5zdGFydGVkKSByZXR1cm47XHJcblx0XHR0aGlzLnN0YXJ0ZWQgPSB0cnVlO1xyXG5cclxuXHRcdHRoaXMuY2FwdHVyZVNlc3Npb25Db250ZXh0KCk7XHJcblx0XHR0aGlzLnN1YnNjcmliZUtleWNsb2FrUmVmcmVzaCgpO1xyXG5cdFx0dGhpcy5sb2NhdGlvbi5vblVybENoYW5nZSgoKSA9PiB0aGlzLm1heWJlRW1pdFBhZ2VWaWV3KHRoaXMubG9jYXRpb24ucGF0aCgpKSk7XHJcblxyXG5cdFx0aWYgKG9wdGlvbnMuc2hlbGxNb2RlKSB7XHJcblx0XHRcdHRoaXMuc3Vic2NyaWJlTGlmZWN5Y2xlRXZlbnRzKCk7XHJcblx0XHRcdHRoaXMuc3Vic2NyaWJlUm91dGVyRXZlbnRzKCk7XHJcblx0XHRcdHRoaXMuaGFuZGxlU2Vzc2lvblN0YXJ0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0cmFjayhldmVudDogc3RyaW5nLCBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LCB0eXBlOiBBY3Rpdml0eUV2ZW50VHlwZSA9ICdDVVNUT00nKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc3RhcnRlZCkgcmV0dXJuO1xyXG5cdFx0dGhpcy5zZW5kKHsgdHlwZSwgZXZlbnQsIHByb3BlcnRpZXMgfSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHJlYWRTZXNzaW9uSWRGcm9tS2V5Y2xvYWsoKTogc3RyaW5nIHwgbnVsbCB7XHJcblx0XHRjb25zdCBrYyA9IHRoaXMua2V5Y2xvYWsuZ2V0S2V5Y2xvYWtJbnN0YW5jZSgpIGFzXHJcblx0XHRcdHwgeyBzZXNzaW9uSWQ/OiBzdHJpbmc7IHRva2VuUGFyc2VkPzogeyBzZXNzaW9uX3N0YXRlPzogc3RyaW5nOyBzaWQ/OiBzdHJpbmcgfSB9XHJcblx0XHRcdHwgdW5kZWZpbmVkO1xyXG5cdFx0cmV0dXJuIGtjPy5zZXNzaW9uSWQgPz8ga2M/LnRva2VuUGFyc2VkPy5zZXNzaW9uX3N0YXRlID8/IGtjPy50b2tlblBhcnNlZD8uc2lkID8/IG51bGw7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNhcHR1cmVTZXNzaW9uQ29udGV4dCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2Vzc2lvbklkID0gdGhpcy5yZWFkU2Vzc2lvbklkRnJvbUtleWNsb2FrKCk7XHJcblx0XHR0aGlzLnVzZXJuYW1lID0gdGhpcy5rZXljbG9hay5nZXRVc2VybmFtZSgpID8/IG51bGw7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHN1YnNjcmliZUtleWNsb2FrUmVmcmVzaCgpOiB2b2lkIHtcclxuXHRcdHRoaXMua2V5Y2xvYWsua2V5Y2xvYWtFdmVudHMkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuXHRcdFx0aWYgKGV2ZW50LnR5cGUgPT09IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aFJlZnJlc2hTdWNjZXNzKSB7XHJcblx0XHRcdFx0dGhpcy5jYXB0dXJlU2Vzc2lvbkNvbnRleHQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHN1YnNjcmliZUxpZmVjeWNsZUV2ZW50cygpOiB2b2lkIHtcclxuXHRcdHRoaXMua2V5Y2xvYWsua2V5Y2xvYWtFdmVudHMkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuXHRcdFx0aWYgKGV2ZW50LnR5cGUgPT09IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aExvZ291dCkge1xyXG5cdFx0XHRcdHRoaXMuc2VuZFNlc3Npb25FbmQoJ2xvZ291dCcpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aFJlZnJlc2hFcnJvcikge1xyXG5cdFx0XHRcdHRoaXMuc2VuZFNlc3Npb25FbmQoJ3JlZnJlc2hfZmFpbGVkJyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzdWJzY3JpYmVSb3V0ZXJFdmVudHMoKTogdm9pZCB7XHJcblx0XHR0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGUpOiBlIGlzIE5hdmlnYXRpb25FbmQgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcblx0XHRcdHRoaXMubWF5YmVFbWl0UGFnZVZpZXcoZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG1heWJlRW1pdFBhZ2VWaWV3KGN1cnJlbnRVcmw6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0aWYgKGN1cnJlbnRVcmwgPT09IHRoaXMucHJldmlvdXNQYXRoKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3Qgc2xvdCA9IGdsb2JhbFRoaXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcblx0XHRjb25zdCBsYXN0VXJsID0gc2xvdFsnX19hcmlsQWN0aXZpdHlMYXN0UGFnZVVybCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcclxuXHRcdGNvbnN0IGxhc3RBdCA9IHNsb3RbJ19fYXJpbEFjdGl2aXR5TGFzdFBhZ2VBdCddIGFzIG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHRcdGlmIChsYXN0VXJsID09PSBjdXJyZW50VXJsICYmIGxhc3RBdCAmJiBEYXRlLm5vdygpIC0gbGFzdEF0IDwgMTAwMCkge1xyXG5cdFx0XHR0aGlzLnByZXZpb3VzUGF0aCA9IGN1cnJlbnRVcmw7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBwcmV2aW91cyA9IHRoaXMucHJldmlvdXNQYXRoO1xyXG5cdFx0dGhpcy5wcmV2aW91c1BhdGggPSBjdXJyZW50VXJsO1xyXG5cdFx0c2xvdFsnX19hcmlsQWN0aXZpdHlMYXN0UGFnZVVybCddID0gY3VycmVudFVybDtcclxuXHRcdHNsb3RbJ19fYXJpbEFjdGl2aXR5TGFzdFBhZ2VBdCddID0gRGF0ZS5ub3coKTtcclxuXHJcblx0XHR0aGlzLnNlbmQoe1xyXG5cdFx0XHR0eXBlOiAnUEFHRV9WSUVXJyxcclxuXHRcdFx0ZXZlbnQ6ICcnLFxyXG5cdFx0XHRwYWdlOiBjdXJyZW50VXJsLFxyXG5cdFx0XHRyZWZlcnJlcjogcHJldmlvdXMgPz8gdW5kZWZpbmVkLFxyXG5cdFx0XHRwcm9wZXJ0aWVzOiB7fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGhhbmRsZVNlc3Npb25TdGFydCgpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5zZXNzaW9uSWQpIHJldHVybjtcclxuXHRcdGNvbnN0IGN1cnJlbnRLZXkgPSBgJHtBQ1RJVklUWV9TRVNTSU9OX01BUktFUl9QUkVGSVh9JHt0aGlzLnNlc3Npb25JZH1gO1xyXG5cdFx0bGV0IGFscmVhZHlNYXJrZWQgPSBmYWxzZTtcclxuXHRcdHRyeSB7XHJcblx0XHRcdGFscmVhZHlNYXJrZWQgPSAhIWxvY2FsU3RvcmFnZS5nZXRJdGVtKGN1cnJlbnRLZXkpO1xyXG5cdFx0XHR0aGlzLnB1cmdlU3RhbGVTZXNzaW9uTWFya2VycyhjdXJyZW50S2V5KTtcclxuXHRcdH0gY2F0Y2gge1xyXG5cdFx0XHQvKiBzd2FsbG93ICovXHJcblx0XHR9XHJcblx0XHRpZiAoYWxyZWFkeU1hcmtlZCkgcmV0dXJuO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0bG9jYWxTdG9yYWdlLnNldEl0ZW0oY3VycmVudEtleSwgRGF0ZS5ub3coKS50b1N0cmluZygpKTtcclxuXHRcdH0gY2F0Y2gge1xyXG5cdFx0XHQvKiBzd2FsbG93ICovXHJcblx0XHR9XHJcblx0XHR0aGlzLnNlbmQoe1xyXG5cdFx0XHR0eXBlOiAnU0VTU0lPTl9TVEFSVCcsXHJcblx0XHRcdGV2ZW50OiAnbG9naW4nLFxyXG5cdFx0XHRwcm9wZXJ0aWVzOiB7IHVzZXJBZ2VudDogbmF2aWdhdG9yLnVzZXJBZ2VudCB9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgcHVyZ2VTdGFsZVNlc3Npb25NYXJrZXJzKGtlZXBLZXk6IHN0cmluZyk6IHZvaWQge1xyXG5cdFx0Y29uc3Qgc3RhbGU6IHN0cmluZ1tdID0gW107XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsU3RvcmFnZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRjb25zdCBrZXkgPSBsb2NhbFN0b3JhZ2Uua2V5KGkpO1xyXG5cdFx0XHRpZiAoa2V5ICYmIGtleSAhPT0ga2VlcEtleSAmJiBrZXkuc3RhcnRzV2l0aChBQ1RJVklUWV9TRVNTSU9OX01BUktFUl9QUkVGSVgpKSB7XHJcblx0XHRcdFx0c3RhbGUucHVzaChrZXkpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRzdGFsZS5mb3JFYWNoKChrKSA9PiBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShrKSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNlbmRTZXNzaW9uRW5kKHJlYXNvbjogJ2xvZ291dCcgfCAncmVmcmVzaF9mYWlsZWQnKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc2Vzc2lvbklkKSByZXR1cm47XHJcblx0XHRjb25zdCBtYXJrZXJLZXkgPSBgJHtBQ1RJVklUWV9TRVNTSU9OX01BUktFUl9QUkVGSVh9JHt0aGlzLnNlc3Npb25JZH1gO1xyXG5cdFx0bGV0IGR1cmF0aW9uTXMgPSAwO1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3QgbG9naW5UaW1lc3RhbXAgPSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbShtYXJrZXJLZXkpID8/ICcwJywgMTApO1xyXG5cdFx0XHRkdXJhdGlvbk1zID0gbG9naW5UaW1lc3RhbXAgPyBEYXRlLm5vdygpIC0gbG9naW5UaW1lc3RhbXAgOiAwO1xyXG5cdFx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShtYXJrZXJLZXkpO1xyXG5cdFx0fSBjYXRjaCB7XHJcblx0XHRcdC8qIHN3YWxsb3cgKi9cclxuXHRcdH1cclxuXHRcdHRoaXMuc2VuZCh7XHJcblx0XHRcdHR5cGU6ICdTRVNTSU9OX0VORCcsXHJcblx0XHRcdGV2ZW50OiByZWFzb24sXHJcblx0XHRcdHByb3BlcnRpZXM6IHsgZHVyYXRpb25NcyB9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdG9BYnNvbHV0ZVVybChyb3V0ZXJQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHJvdXRlclBhdGguc3RhcnRzV2l0aCgnaHR0cDovLycpIHx8IHJvdXRlclBhdGguc3RhcnRzV2l0aCgnaHR0cHM6Ly8nKSkgcmV0dXJuIHJvdXRlclBhdGg7XHJcblx0XHRyZXR1cm4gYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vIyR7cm91dGVyUGF0aH1gO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzZW5kKHBhcnRpYWw6IHtcclxuXHRcdHR5cGU6IEFjdGl2aXR5RXZlbnRUeXBlO1xyXG5cdFx0ZXZlbnQ6IHN0cmluZztcclxuXHRcdHBhZ2U/OiBzdHJpbmc7XHJcblx0XHRyZWZlcnJlcj86IHN0cmluZztcclxuXHRcdHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xyXG5cdH0pOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5zZXNzaW9uSWQpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBiYXNlVXJsID0gQVBJX0NPTkZJR1MuZ2V0RXh0ZXJuYWxBcHBFbmRwb2ludChBcHBzLkVWRU5UX0dBVEVXQVkpO1xyXG5cdFx0aWYgKCFiYXNlVXJsKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcGF5bG9hZDogQWN0aXZpdHlFdmVudCA9IHtcclxuXHRcdFx0dHlwZTogcGFydGlhbC50eXBlLFxyXG5cdFx0XHRzZXNzaW9uSWQ6IHRoaXMuc2Vzc2lvbklkLFxyXG5cdFx0XHR1c2VybmFtZTogdGhpcy51c2VybmFtZSA/PyAnJyxcclxuXHRcdFx0ZXZlbnQ6IHBhcnRpYWwuZXZlbnQsXHJcblx0XHRcdHBhZ2U6IHRoaXMudG9BYnNvbHV0ZVVybChwYXJ0aWFsLnBhZ2UgPz8gdGhpcy5sb2NhdGlvbi5wYXRoKCkpLFxyXG5cdFx0XHRpcDogJycsXHJcblx0XHRcdHJlZmVycmVyOiBwYXJ0aWFsLnJlZmVycmVyID8gdGhpcy50b0Fic29sdXRlVXJsKHBhcnRpYWwucmVmZXJyZXIpIDogYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vI2AsXHJcblx0XHRcdHRyYWNlSWQ6ICcnLFxyXG5cdFx0XHRjbGllbnRUaW1lc3RhbXA6IERhdGUubm93KCksXHJcblx0XHRcdHByb3BlcnRpZXM6IHBhcnRpYWwucHJvcGVydGllc1xyXG5cdFx0fTtcclxuXHJcblx0XHRjb25zdCB1cmwgPSBgJHtiYXNlVXJsLnJlcGxhY2UoL1xcLyQvLCAnJyl9LyR7QUNUSVZJVFlfRU5EUE9JTlRfUEFUSH1gO1xyXG5cclxuXHRcdHRoaXMua2V5Y2xvYWtcclxuXHRcdFx0LmdldFRva2VuKClcclxuXHRcdFx0LnRoZW4oKHRva2VuKSA9PlxyXG5cdFx0XHRcdGZldGNoKHVybCwge1xyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRrZWVwYWxpdmU6IHRydWUsXHJcblx0XHRcdFx0XHRoZWFkZXJzOiB7XHJcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcblx0XHRcdFx0XHRcdFtMT0dHRVJfU0VTU0lPTl9IRUFERVJdOiB0aGlzLnNlc3Npb25JZCEsXHJcblx0XHRcdFx0XHRcdC4uLih0b2tlbiA/IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfSA6IHt9KVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0XHQuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKTtcclxuXHR9XHJcbn1cclxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHkudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvYWN0aXZpdHkvc3JjL2FjdGl2aXR5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBY3Rpdml0eUV2ZW50VHlwZSA9ICdTRVNTSU9OX1NUQVJUJyB8ICdTRVNTSU9OX0VORCcgfCAnUEFHRV9WSUVXJyB8ICdCVVRUT05fQ0xJQ0snIHwgJ0NVU1RPTSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5RXZlbnQge1xyXG5cdHR5cGU6IEFjdGl2aXR5RXZlbnRUeXBlO1xyXG5cdHNlc3Npb25JZDogc3RyaW5nO1xyXG5cdHVzZXJuYW1lOiBzdHJpbmc7XHJcblx0ZXZlbnQ6IHN0cmluZztcclxuXHRwYWdlOiBzdHJpbmc7XHJcblx0aXA6IHN0cmluZztcclxuXHRyZWZlcnJlcjogc3RyaW5nO1xyXG5cdHRyYWNlSWQ6IHN0cmluZztcclxuXHRjbGllbnRUaW1lc3RhbXA/OiBudW1iZXI7XHJcblx0cHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbn1cclxuIl19
@@ -17,6 +17,7 @@ import 'aril/boot/config/api';
17
17
  import 'aril/boot/config/apps';
18
18
  import 'aril/boot/config/plugins';
19
19
  import 'aril/i18n';
20
+ import 'aril/util/activity';
20
21
  import 'aril/util/pub-sub';
21
22
  import '@angular/elements';
22
23
  import 'ngx-monaco-editor-v2';
@@ -78,4 +79,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
78
79
  }], ctorParameters: () => [{ type: i1.Router }, { type: i2.TranslocoService }, { type: i1$1.AppMenuService }, { type: i4.PrimeNGConfig }, { type: i3.MfeBridge }] });
79
80
 
80
81
  export { AppComponent };
81
- //# sourceMappingURL=aril-app.component-Cw1MxAqD.mjs.map
82
+ //# sourceMappingURL=aril-app.component-CwZZhJcO.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"aril-app.component-Cw1MxAqD.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 { 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\tBu uygulama yalnızca host app içinden açılabilir\r\n\t\t}\r\n\t`,\r\n\timports: [ModuleFederationToolsModule, 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":";;;;;;;;;;;;;;;;;;;;;;;;MAyBa,YAAY,CAAA;IACxB,WAAA,CACkB,MAAc,EACd,gBAAkC,EAClC,cAA8B,EAC9B,aAA4B,EAC5B,SAAoB,EAAA;QAJpB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,aAAa,GAAb,aAAa;QACb,IAAA,CAAA,SAAS,GAAT,SAAS;AAE1B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC/D,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QAC3C;AAEA,QAAA,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;QAEhC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;AACpC,QAAA,MAAM,IAAI,GAAkB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAkB,IAAI,YAAY,CAAC,EAAE;AAE5F,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC;AAEzC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAEpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC3F;IACD;AAEA,IAAA,IAAI,UAAU,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU;IACjC;AAEA,IAAA,SAAS,CAAC,IAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;YACpC;QACD;AAEA,QAAA,IAAI,IAAI,KAAK,YAAY,CAAC,EAAE,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC;QACnD;IACD;+GAvCY,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EATd,CAAA;;;;;;EAMT,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACS,2BAA2B,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE7C,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,kBAAkB;AACzD,iBAAA;;;;;"}
1
+ {"version":3,"file":"aril-app.component-CwZZhJcO.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 { 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\tBu uygulama yalnızca host app içinden açılabilir\r\n\t\t}\r\n\t`,\r\n\timports: [ModuleFederationToolsModule, 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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"}
@@ -36,7 +36,8 @@ class ApiConfigsFactory {
36
36
  [Apps.MDM]: '',
37
37
  [Apps.REPORT]: '',
38
38
  [Apps.LGC]: '',
39
- [Apps.DMS]: ''
39
+ [Apps.DMS]: '',
40
+ [Apps.EVENT_GATEWAY]: ''
40
41
  };
41
42
  }
42
43
  getExternalAppEndpoint(appName) {
@@ -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":["import { Apps } from 'aril/boot/config/apps';\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, fromEvent, switchMap, takeUntil, tap } from 'rxjs';\r\n\r\nimport { RouteConfig, bridge } from 'aril/boot/bridge';\r\nimport { Apps, MicroAppService } from 'aril/boot/config/apps';\r\n\r\nimport { ApiConfigsFactory } 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$.pipe(takeUntil(fromEvent(window, 'beforeunload'))).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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"}
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":["import { Apps } from 'aril/boot/config/apps';\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\t[Apps.EVENT_GATEWAY]: ''\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, fromEvent, switchMap, takeUntil, tap } from 'rxjs';\r\n\r\nimport { RouteConfig, bridge } from 'aril/boot/bridge';\r\nimport { Apps, MicroAppService } from 'aril/boot/config/apps';\r\n\r\nimport { ApiConfigsFactory } 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$.pipe(takeUntil(fromEvent(window, 'beforeunload'))).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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"}
@@ -194,6 +194,7 @@ var Apps;
194
194
  Apps["REPORT"] = "report";
195
195
  Apps["LGC"] = "lgc";
196
196
  Apps["DMS"] = "dms";
197
+ Apps["EVENT_GATEWAY"] = "event-gateway";
197
198
  })(Apps || (Apps = {}));
198
199
 
199
200
  class ArilReuseStrategy extends BaseRouteReuseStrategy {
@@ -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, RoutePermission } from './interfaces';\r\n\r\nconst exactPermissions = new Map<string, string[]>();\r\nconst patternPermissions: { regex: RegExp; roles: string[] }[] = [];\r\n\r\nexport function setRoutePermissions(menuItems: PluginMenuItem[], routePermissions?: RoutePermission[]): void {\r\n\texactPermissions.clear();\r\n\tpatternPermissions.length = 0;\r\n\tbuildPermissionsMap(menuItems);\r\n\tbuildPatternList(routePermissions);\r\n}\r\n\r\nexport function getRoutePermissions(url: string): string[] | undefined {\r\n\tconst normalizedUrl = url.split('?')[0].replace(/^\\//, '');\r\n\treturn exactPermissions.get(normalizedUrl) ?? patternPermissions.find((p) => p.regex.test(normalizedUrl))?.roles;\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\texactPermissions.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\r\nfunction buildPatternList(routePermissions?: RoutePermission[]): void {\r\n\tif (!routePermissions?.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfor (const entry of routePermissions) {\r\n\t\tif (entry.routerLink && entry.permittedRoles?.length) {\r\n\t\t\tpatternPermissions.push({ regex: globToRegExp(entry.routerLink), roles: entry.permittedRoles });\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction globToRegExp(pattern: string): RegExp {\r\n\tconst normalized = pattern.replace(/^\\//, '').replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n\tconst body = normalized.replace(/\\*\\*|\\*/g, (match) => (match === '**' ? '.*' : '[^/]+'));\r\n\treturn new RegExp(`^${body}$`);\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/boot/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, apps.routePermissions);\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\troutePermissions?: RoutePermission[];\r\n}\r\n\r\nexport interface RoutePermission {\r\n\trouterLink: string;\r\n\tpermittedRoles: string[];\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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"}
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, RoutePermission } from './interfaces';\r\n\r\nconst exactPermissions = new Map<string, string[]>();\r\nconst patternPermissions: { regex: RegExp; roles: string[] }[] = [];\r\n\r\nexport function setRoutePermissions(menuItems: PluginMenuItem[], routePermissions?: RoutePermission[]): void {\r\n\texactPermissions.clear();\r\n\tpatternPermissions.length = 0;\r\n\tbuildPermissionsMap(menuItems);\r\n\tbuildPatternList(routePermissions);\r\n}\r\n\r\nexport function getRoutePermissions(url: string): string[] | undefined {\r\n\tconst normalizedUrl = url.split('?')[0].replace(/^\\//, '');\r\n\treturn exactPermissions.get(normalizedUrl) ?? patternPermissions.find((p) => p.regex.test(normalizedUrl))?.roles;\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\texactPermissions.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\r\nfunction buildPatternList(routePermissions?: RoutePermission[]): void {\r\n\tif (!routePermissions?.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfor (const entry of routePermissions) {\r\n\t\tif (entry.routerLink && entry.permittedRoles?.length) {\r\n\t\t\tpatternPermissions.push({ regex: globToRegExp(entry.routerLink), roles: entry.permittedRoles });\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction globToRegExp(pattern: string): RegExp {\r\n\tconst normalized = pattern.replace(/^\\//, '').replace(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n\tconst body = normalized.replace(/\\*\\*|\\*/g, (match) => (match === '**' ? '.*' : '[^/]+'));\r\n\treturn new RegExp(`^${body}$`);\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/boot/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, apps.routePermissions);\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\tEVENT_GATEWAY = 'event-gateway'\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\troutePermissions?: RoutePermission[];\r\n}\r\n\r\nexport interface RoutePermission {\r\n\trouterLink: string;\r\n\tpermittedRoles: string[];\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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"}
@@ -15,6 +15,7 @@ import { API_CONFIGS } from 'aril/boot/config/api';
15
15
  import { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';
16
16
  import { HttpBackendService } from 'aril/http';
17
17
  import { provideHost, provideHostRouter } from 'aril/provider';
18
+ import { ActivityService } from 'aril/util/activity';
18
19
 
19
20
  const getNgZone = () => {
20
21
  if (bridge.hostNgZone) {
@@ -51,8 +52,8 @@ async function bootPlugin(selector, component) {
51
52
  getNgZone(),
52
53
  {
53
54
  provide: APP_INITIALIZER,
54
- useFactory: (httpBackend, translocoService, primeNgConfig) => {
55
- return () => {
55
+ useFactory: (httpBackend, translocoService, primeNgConfig, activityService) => {
56
+ return async () => {
56
57
  const activeLang = localStorage.getItem('lang') ?? LanguageCode.TR;
57
58
  translocoService.setActiveLang(activeLang);
58
59
  if (!activeLang?.length) {
@@ -67,10 +68,11 @@ async function bootPlugin(selector, component) {
67
68
  .pipe(tap((configs) => {
68
69
  Object.assign(API_CONFIGS, { ...configs });
69
70
  }));
70
- return firstValueFrom(observable$);
71
+ await firstValueFrom(observable$);
72
+ activityService.start({ shellMode: false });
71
73
  };
72
74
  },
73
- deps: [HttpBackendService, TranslocoService, PrimeNGConfig],
75
+ deps: [HttpBackendService, TranslocoService, PrimeNGConfig, ActivityService],
74
76
  multi: true
75
77
  }
76
78
  ]
@@ -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\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","import { HttpClient } 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\n\r\nimport { 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 { firstValueFrom, tap } from 'rxjs';\r\n\r\nimport { HOST_I18N_FOLDER, createBaseAppConfig } from 'aril/boot/base';\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { API_CONFIGS, ApiConfigsFactory } from 'aril/boot/config/api';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { HttpBackendService } from 'aril/http';\r\nimport { provideHost, provideHostRouter } from 'aril/provider';\r\n\r\nimport { getNgZone } from './getNgZone';\r\nimport { 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\tcreateBaseAppConfig({ i18nFolder: HOST_I18N_FOLDER }),\r\n\t\t\tprovideHost(selector as any), // todo refactor\r\n\t\t\tprovideHostRouter(),\r\n\t\t\timportProvidersFrom(\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\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]\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":";;;;;;;;;;;;;;;;;;AAIO,MAAM,SAAS,GAAG,MAAK;AAC7B,IAAA,IAAI,MAAM,CAAC,UAAU,EAAE;QACtB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;IACxD;;AAAO,QAAA,OAAO,EAAE;AACjB;;MCEa,YAAY,CAAA;AAAG;;ACerB,MAAM,OAAO,GAAG,IAAI,YAAY;SAEvB,WAAW,GAAA;AAC1B,IAAA,OAAO,MAAK;AACX,QAAA,IAAI;AACH,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE;AACvC,YAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;QACpC;QAAE,OAAO,GAAG,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC;QAC1C;AACD,IAAA,CAAC;AACF;AAEO,eAAe,UAAU,CAAC,QAAgB,EAAE,SAAoB,EAAA;AACtE,IAAA,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE;AAElC,IAAA,MAAM,MAAM,GAAsB;AACjC,QAAA,SAAS,EAAE;AACV,YAAA,mBAAmB,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AACrD,YAAA,WAAW,CAAC,QAAe,CAAC;AAC5B,YAAA,iBAAiB,EAAE;YACnB,mBAAmB,CAClB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,WAAW,CACX;AACD,YAAA,SAAS,EAAE;AACX,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,CACX,WAAuC,EACvC,gBAAkC,EAClC,aAA4B,KACzB;AACH,oBAAA,OAAO,MAAK;AACX,wBAAA,MAAM,UAAU,GAAkB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAkB,IAAI,YAAY,CAAC,EAAE;AAElG,wBAAA,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC;AAE1C,wBAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACxB,4BAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;4BACpC;wBACD;AAEA,wBAAA,IAAI,UAAU,KAAK,YAAY,CAAC,EAAE,EAAE;AACnC,4BAAA,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC;wBAC9C;AAEA,wBAAA,MAAM,WAAW,GAAG,WAAW,CAAC;6BAC9B,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY;AAC3F,6BAAA,IAAI,CACJ,GAAG,CAAC,CAAC,OAAO,KAAI;4BACf,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;wBAC3C,CAAC,CAAC,CACF;AAEF,wBAAA,OAAO,cAAc,CAAC,WAAW,CAAC;AACnC,oBAAA,CAAC;gBACF,CAAC;AACD,gBAAA,IAAI,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,CAAC;AAC3D,gBAAA,KAAK,EAAE;AACP;AACD;KACD;AAED,IAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC;AAC9C,IAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAE5E,IAAA,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;AACxC;;AChGA;;AAEG;;;;"}
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","import { HttpClient } 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\n\r\nimport { 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 { firstValueFrom, tap } from 'rxjs';\r\n\r\nimport { HOST_I18N_FOLDER, createBaseAppConfig } from 'aril/boot/base';\r\nimport { bridge } from 'aril/boot/bridge';\r\nimport { API_CONFIGS, ApiConfigsFactory } from 'aril/boot/config/api';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { HttpBackendService } from 'aril/http';\r\nimport { provideHost, provideHostRouter } from 'aril/provider';\r\nimport { ActivityService } from 'aril/util/activity';\r\n\r\nimport { getNgZone } from './getNgZone';\r\nimport { 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\tcreateBaseAppConfig({ i18nFolder: HOST_I18N_FOLDER }),\r\n\t\t\tprovideHost(selector as any), // todo refactor\r\n\t\t\tprovideHostRouter(),\r\n\t\t\timportProvidersFrom(\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\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\tactivityService: ActivityService\r\n\t\t\t\t) => {\r\n\t\t\t\t\treturn async () => {\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\tawait firstValueFrom(observable$);\r\n\t\t\t\t\t\tactivityService.start({ shellMode: false });\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\tdeps: [HttpBackendService, TranslocoService, PrimeNGConfig, ActivityService],\r\n\t\t\t\tmulti: true\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":";;;;;;;;;;;;;;;;;;;AAIO,MAAM,SAAS,GAAG,MAAK;AAC7B,IAAA,IAAI,MAAM,CAAC,UAAU,EAAE;QACtB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE;IACxD;;AAAO,QAAA,OAAO,EAAE;AACjB;;MCEa,YAAY,CAAA;AAAG;;ACgBrB,MAAM,OAAO,GAAG,IAAI,YAAY;SAEvB,WAAW,GAAA;AAC1B,IAAA,OAAO,MAAK;AACX,QAAA,IAAI;AACH,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,EAAE;AACvC,YAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC;QACpC;QAAE,OAAO,GAAG,EAAE;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC;QAC1C;AACD,IAAA,CAAC;AACF;AAEO,eAAe,UAAU,CAAC,QAAgB,EAAE,SAAoB,EAAA;AACtE,IAAA,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE;AAElC,IAAA,MAAM,MAAM,GAAsB;AACjC,QAAA,SAAS,EAAE;AACV,YAAA,mBAAmB,CAAC,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC;AACrD,YAAA,WAAW,CAAC,QAAe,CAAC;AAC5B,YAAA,iBAAiB,EAAE;YACnB,mBAAmB,CAClB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,WAAW,CACX;AACD,YAAA,SAAS,EAAE;AACX,YAAA;AACC,gBAAA,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,CACX,WAAuC,EACvC,gBAAkC,EAClC,aAA4B,EAC5B,eAAgC,KAC7B;oBACH,OAAO,YAAW;AACjB,wBAAA,MAAM,UAAU,GAAkB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAkB,IAAI,YAAY,CAAC,EAAE;AAElG,wBAAA,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC;AAE1C,wBAAA,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;AACxB,4BAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC;4BACpC;wBACD;AAEA,wBAAA,IAAI,UAAU,KAAK,YAAY,CAAC,EAAE,EAAE;AACnC,4BAAA,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC;wBAC9C;AAEA,wBAAA,MAAM,WAAW,GAAG,WAAW,CAAC;6BAC9B,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY;AAC3F,6BAAA,IAAI,CACJ,GAAG,CAAC,CAAC,OAAO,KAAI;4BACf,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;wBAC3C,CAAC,CAAC,CACF;AAEF,wBAAA,MAAM,cAAc,CAAC,WAAW,CAAC;wBACjC,eAAe,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5C,oBAAA,CAAC;gBACF,CAAC;gBACD,IAAI,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,CAAC;AAC5E,gBAAA,KAAK,EAAE;AACP;AACD;KACD;AAED,IAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC;AAC9C,IAAA,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAE5E,IAAA,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;AACxC;;ACnGA;;AAEG;;;;"}
@@ -11,6 +11,7 @@ import { loadApiConfigs, loadInitData } from 'aril/boot/config/api';
11
11
  import { ArilReuseStrategy, MicroAppService } from 'aril/boot/config/apps';
12
12
  import { loadPlugins } from 'aril/boot/config/plugins';
13
13
  import { i18nFolderName } from 'aril/i18n';
14
+ import { ActivityService } from 'aril/util/activity';
14
15
  import * as i1 from 'aril/theme/layout';
15
16
  import { AppLayoutComponent } from 'aril/theme/layout';
16
17
  import * as i2 from 'aril/util/pub-sub';
@@ -68,7 +69,7 @@ const boot = (_appName, routes) => {
68
69
  { provide: RouteReuseStrategy, useClass: ArilReuseStrategy },
69
70
  {
70
71
  provide: APP_INITIALIZER,
71
- useFactory: (httpClient, keycloak, router, folderName, microAppService) => {
72
+ useFactory: (httpClient, keycloak, router, folderName, microAppService, activityService) => {
72
73
  if (router)
73
74
  bridge.hostRouter = router;
74
75
  const runLoadApiConfigs = loadApiConfigs(httpClient, keycloak, folderName, microAppService);
@@ -78,10 +79,11 @@ const boot = (_appName, routes) => {
78
79
  await runLoadApiConfigs();
79
80
  await runLoadInitData();
80
81
  runLoadPlugins();
82
+ activityService.start({ shellMode: true });
81
83
  };
82
84
  },
83
85
  multi: true,
84
- deps: [HttpClient, KeycloakService, Router, i18nFolderName, MicroAppService]
86
+ deps: [HttpClient, KeycloakService, Router, i18nFolderName, MicroAppService, ActivityService]
85
87
  }
86
88
  ]
87
89
  };
@@ -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":["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 } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig } from '@angular/core';\r\nimport { bootstrapApplication } from '@angular/platform-browser';\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 { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { HOST_I18N_FOLDER, createBaseAppConfig } from 'aril/boot/base';\r\nimport { bridge } 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 { i18nFolderName } from 'aril/i18n';\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\tcreateBaseAppConfig({ i18nFolder: HOST_I18N_FOLDER }),\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\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]\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":"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"}
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 } from '@angular/common/http';\r\nimport { APP_INITIALIZER, ApplicationConfig } from '@angular/core';\r\nimport { bootstrapApplication } from '@angular/platform-browser';\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 { KeycloakService } from 'keycloak-angular';\r\n\r\nimport { HOST_I18N_FOLDER, createBaseAppConfig } from 'aril/boot/base';\r\nimport { bridge } 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 { i18nFolderName } from 'aril/i18n';\r\nimport { ActivityService } from 'aril/util/activity';\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\tcreateBaseAppConfig({ i18nFolder: HOST_I18N_FOLDER }),\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\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\tactivityService: ActivityService\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\tactivityService.start({ shellMode: true });\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, ActivityService]\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":"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"}