@yelon/bis 17.3.1 → 18.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1 -1
  3. package/config/bis.config.d.ts +3 -3
  4. package/config/index.d.ts +5 -5
  5. package/config/public_api.d.ts +1 -1
  6. package/esm2022/bis.mjs +4 -4
  7. package/esm2022/config/bis.config.mjs +14 -14
  8. package/esm2022/config/config.mjs +4 -4
  9. package/esm2022/config/public_api.mjs +1 -1
  10. package/esm2022/layout/layout-basic.component.mjs +518 -508
  11. package/esm2022/layout/layout-nav-application.component.mjs +372 -372
  12. package/esm2022/layout/layout-nav-group.component.mjs +166 -162
  13. package/esm2022/layout/layout-nav-tile.component.mjs +14 -14
  14. package/esm2022/layout/layout.mjs +4 -4
  15. package/esm2022/layout/layout.module.mjs +53 -53
  16. package/esm2022/layout/public_api.mjs +5 -5
  17. package/esm2022/public_api.mjs +8 -8
  18. package/esm2022/src/bis.module.mjs +16 -16
  19. package/esm2022/src/helper.mjs +44 -44
  20. package/esm2022/src/provide.mjs +7 -7
  21. package/esm2022/src/refresh-token.mjs +78 -78
  22. package/esm2022/src/startup.service.mjs +183 -183
  23. package/esm2022/src/yunzai-act.guard.mjs +87 -87
  24. package/esm2022/src/yunzai-analysis-addon.guard.mjs +98 -98
  25. package/esm2022/src/yunzai-default.interceptor.mjs +62 -62
  26. package/esm2022/yunzai-widgets/public_api.mjs +6 -6
  27. package/esm2022/yunzai-widgets/yunzai-clear-storage.component.mjs +46 -46
  28. package/esm2022/yunzai-widgets/yunzai-fullscreen.component.mjs +46 -46
  29. package/esm2022/yunzai-widgets/yunzai-i18n.component.mjs +138 -138
  30. package/esm2022/yunzai-widgets/yunzai-notify.component.mjs +179 -179
  31. package/esm2022/yunzai-widgets/yunzai-user.component.mjs +119 -119
  32. package/esm2022/yunzai-widgets/yunzai-widget.module.mjs +61 -61
  33. package/esm2022/yunzai-widgets/yunzai-widgets.mjs +4 -4
  34. package/fesm2022/bis.mjs +559 -559
  35. package/fesm2022/config.mjs +21 -21
  36. package/fesm2022/layout.mjs +1097 -1083
  37. package/fesm2022/layout.mjs.map +1 -1
  38. package/fesm2022/yunzai-widgets.mjs +563 -563
  39. package/index.d.ts +5 -5
  40. package/index.less +1 -1
  41. package/layout/index.d.ts +5 -5
  42. package/layout/layout-basic.component.d.ts +54 -54
  43. package/layout/layout-nav-application.component.d.ts +26 -26
  44. package/layout/layout-nav-group.component.d.ts +14 -14
  45. package/layout/layout-nav-tile.component.d.ts +5 -5
  46. package/layout/layout.module.d.ts +18 -18
  47. package/layout/public_api.d.ts +5 -5
  48. package/layout/style/index.less +181 -182
  49. package/package.json +68 -68
  50. package/public_api.d.ts +8 -8
  51. package/src/bis.module.d.ts +8 -8
  52. package/src/helper.d.ts +16 -16
  53. package/src/provide.d.ts +2 -2
  54. package/src/refresh-token.d.ts +6 -6
  55. package/src/startup.service.d.ts +24 -24
  56. package/src/yunzai-act.guard.d.ts +20 -20
  57. package/src/yunzai-analysis-addon.guard.d.ts +26 -26
  58. package/src/yunzai-default.interceptor.d.ts +2 -2
  59. package/theme-compact.less +3 -3
  60. package/theme-dark.less +46 -46
  61. package/theme-default.less +48 -48
  62. package/theme-variable.less +1 -0
  63. package/yunzai-widgets/index.d.ts +5 -5
  64. package/yunzai-widgets/public_api.d.ts +6 -6
  65. package/yunzai-widgets/yunzai-clear-storage.component.d.ts +8 -8
  66. package/yunzai-widgets/yunzai-fullscreen.component.d.ts +8 -8
  67. package/yunzai-widgets/yunzai-i18n.component.d.ts +19 -19
  68. package/yunzai-widgets/yunzai-notify.component.d.ts +25 -25
  69. package/yunzai-widgets/yunzai-user.component.d.ts +22 -22
  70. package/yunzai-widgets/yunzai-widget.module.d.ts +18 -18
@@ -1,184 +1,184 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { APP_INITIALIZER, inject, Injectable } from '@angular/core';
3
- import { combineLatest, map, mergeMap, of } from 'rxjs';
4
- import { ACLService } from '@yelon/acl';
5
- import { YA_SERVICE_TOKEN } from '@yelon/auth';
6
- import { mergeBisConfig } from '@yelon/bis/config';
7
- import { MenuService, SettingsService, TitleService, YUNZAI_I18N_TOKEN } from '@yelon/theme';
8
- import { deepCopy, useLocalStorageCurrent, useLocalStorageDefaultRoute, useLocalStorageHeader, useLocalStorageProjectInfo, useLocalStorageTenant, useLocalStorageUser, WINDOW, YunzaiConfigService } from '@yelon/util';
9
- import * as i0 from "@angular/core";
10
- export function provideYunzaiStartup() {
11
- return [
12
- YunzaiStartupService,
13
- {
14
- provide: APP_INITIALIZER,
15
- useFactory: (startupService) => () => startupService.load(),
16
- deps: [YunzaiStartupService],
17
- multi: true
18
- }
19
- ];
20
- }
21
- export class YunzaiStartupService {
22
- constructor() {
23
- this.config = mergeBisConfig(inject(YunzaiConfigService));
24
- this.menuService = inject(MenuService);
25
- this.aclService = inject(ACLService);
26
- this.titleService = inject(TitleService);
27
- this.tokenService = inject(YA_SERVICE_TOKEN);
28
- this.httpClient = inject(HttpClient);
29
- this.settingService = inject(SettingsService);
30
- this.i18n = inject(YUNZAI_I18N_TOKEN);
31
- this.win = inject(WINDOW);
32
- this.configService = inject(YunzaiConfigService);
33
- }
34
- load() {
35
- let defaultLang = this.settingService.layout.lang || this.i18n.defaultLang;
36
- const [setTenant] = useLocalStorageTenant();
37
- const [setUser, getUser] = useLocalStorageUser();
38
- const [setHeader] = useLocalStorageHeader();
39
- const [setProject] = useLocalStorageProjectInfo();
40
- const [setDefaultRoute] = useLocalStorageDefaultRoute();
41
- const [setCurrent] = useLocalStorageCurrent();
42
- return this.token().pipe(mergeMap((token) => {
43
- this.configService.set('auth', {
44
- token_send_key: 'Authorization',
45
- token_send_template: `${token.token_type} \${access_token}`,
46
- token_send_place: 'header'
47
- });
48
- this.tokenService.set(token);
49
- return of(void 0);
50
- }), mergeMap(() => {
51
- return combineLatest([
52
- this.httpClient.get(`/auth/user`),
53
- this.httpClient.get(`/auth/allheader/v2`),
54
- this.httpClient.get(`/app-manager/project/info`)
55
- ]).pipe(map(([user, header, project]) => {
56
- setUser(user.principal);
57
- setTenant(user.tenantId);
58
- setHeader(header.data);
59
- setProject(project.data);
60
- return void 0;
61
- }));
62
- }), mergeMap(() => {
63
- return this.i18n.loadLangData(defaultLang).pipe(map((langData) => {
64
- this.i18n.use(defaultLang, langData);
65
- return void 0;
66
- }));
67
- }), mergeMap(() => {
68
- const yunzaiUser = getUser();
69
- const yunzaiMenus = deepCopy(yunzaiUser.menu).filter(m => m.systemCode && m.systemCode === this.config.systemCode);
70
- const currentMenu = yunzaiMenus.pop();
71
- if (currentMenu) {
72
- this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });
73
- this.settingService.setUser({
74
- name: yunzaiUser.realname,
75
- avatar: `${this.config.baseUrl}/filecenter/file/${yunzaiUser.avatarId}` || '',
76
- email: yunzaiUser.email
77
- });
78
- this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';
79
- this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');
80
- const abilities = [];
81
- generateAbility([currentMenu], abilities, '');
82
- this.aclService.attachRole(yunzaiUser?.roles
83
- .map((role) => {
84
- return role.roleValue;
85
- })
86
- .filter((a) => !!a) || []);
87
- this.aclService.attachAbility(abilities);
88
- this.menuService.add([currentMenu]);
89
- setCurrent({
90
- name: currentMenu.text,
91
- intro: currentMenu.intro || '',
92
- icon: currentMenu.appIconUrl || './assets/tmp/img/avatar.jpg'
93
- });
94
- const attributes = currentMenu.attribute;
95
- if (attributes) {
96
- const attr = JSON.parse(attributes);
97
- if (attr && attr.defaultRoute) {
98
- setDefaultRoute(attr.defaultRoute);
99
- }
100
- else {
101
- setDefaultRoute('/displayIndex');
102
- }
103
- }
104
- else {
105
- setDefaultRoute('/displayIndex');
106
- }
107
- }
108
- return of(void 0);
109
- }));
110
- }
111
- token() {
112
- if (this.config.loginForm) {
113
- return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.config.loginForm).pipe(map((response) => {
114
- return response;
115
- }));
116
- }
117
- else {
118
- const uri = encodeURIComponent(this.win.location.href);
119
- return this.httpClient
120
- .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true&timestamp=${new Date().getTime()}`)
121
- .pipe(map((response) => {
122
- switch (response.errcode) {
123
- case 2000:
124
- return response.data;
125
- case 2001:
126
- this.win.location.href = response.msg;
127
- throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
128
- default:
129
- if (response.data) {
130
- console.error(response.data);
131
- throw Error(response.data);
132
- }
133
- else if (response.msg) {
134
- console.error(response.msg);
135
- throw Error(response.msg);
136
- }
137
- else {
138
- console.error('cas unknown error');
139
- throw Error('Unknown Error: Cas auth exception!');
140
- }
141
- }
142
- }));
143
- }
144
- }
145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: YunzaiStartupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
146
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: YunzaiStartupService }); }
147
- }
148
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: YunzaiStartupService, decorators: [{
149
- type: Injectable
150
- }] });
151
- export function mapYzSideToYelonMenu(menus) {
152
- menus.forEach(menu => {
153
- if (menu.children && menu.hideChildren) {
154
- menu.children.forEach(c => (c.hide = true));
155
- }
156
- menu.badgeDot = menu.badge_dot || null;
157
- menu.badgeStatus = menu.badge_status || null;
158
- menu.shortcutRoot = menu.shortcut_root || null;
159
- menu.reuse = true;
160
- if (menu.children) {
161
- mapYzSideToYelonMenu(menu.children);
162
- }
163
- });
164
- }
165
- export function generateAbility(menus, abilities, prefix) {
166
- menus.forEach(menu => {
167
- if (menu.link) {
168
- prefix += menu.link;
169
- }
170
- else {
171
- prefix += '';
172
- }
173
- if (menu.menuAuths) {
174
- menu.menuAuths.forEach((a) => {
175
- abilities.push(`${prefix}:${a}`);
176
- abilities.push(a);
177
- });
178
- }
179
- if (menu.children) {
180
- generateAbility(menu.children, abilities, prefix);
181
- }
182
- });
183
- }
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { APP_INITIALIZER, inject, Injectable } from '@angular/core';
3
+ import { combineLatest, map, mergeMap, of } from 'rxjs';
4
+ import { ACLService } from '@yelon/acl';
5
+ import { YA_SERVICE_TOKEN } from '@yelon/auth';
6
+ import { mergeBisConfig } from '@yelon/bis/config';
7
+ import { MenuService, SettingsService, TitleService, YUNZAI_I18N_TOKEN } from '@yelon/theme';
8
+ import { deepCopy, useLocalStorageCurrent, useLocalStorageDefaultRoute, useLocalStorageHeader, useLocalStorageProjectInfo, useLocalStorageTenant, useLocalStorageUser, WINDOW, YunzaiConfigService } from '@yelon/util';
9
+ import * as i0 from "@angular/core";
10
+ export function provideYunzaiStartup() {
11
+ return [
12
+ YunzaiStartupService,
13
+ {
14
+ provide: APP_INITIALIZER,
15
+ useFactory: (startupService) => () => startupService.load(),
16
+ deps: [YunzaiStartupService],
17
+ multi: true
18
+ }
19
+ ];
20
+ }
21
+ export class YunzaiStartupService {
22
+ constructor() {
23
+ this.config = mergeBisConfig(inject(YunzaiConfigService));
24
+ this.menuService = inject(MenuService);
25
+ this.aclService = inject(ACLService);
26
+ this.titleService = inject(TitleService);
27
+ this.tokenService = inject(YA_SERVICE_TOKEN);
28
+ this.httpClient = inject(HttpClient);
29
+ this.settingService = inject(SettingsService);
30
+ this.i18n = inject(YUNZAI_I18N_TOKEN);
31
+ this.win = inject(WINDOW);
32
+ this.configService = inject(YunzaiConfigService);
33
+ }
34
+ load() {
35
+ let defaultLang = this.settingService.layout.lang || this.i18n.defaultLang;
36
+ const [setTenant] = useLocalStorageTenant();
37
+ const [setUser, getUser] = useLocalStorageUser();
38
+ const [setHeader] = useLocalStorageHeader();
39
+ const [setProject] = useLocalStorageProjectInfo();
40
+ const [setDefaultRoute] = useLocalStorageDefaultRoute();
41
+ const [setCurrent] = useLocalStorageCurrent();
42
+ return this.token().pipe(mergeMap((token) => {
43
+ this.configService.set('auth', {
44
+ token_send_key: 'Authorization',
45
+ token_send_template: `${token.token_type} \${access_token}`,
46
+ token_send_place: 'header'
47
+ });
48
+ this.tokenService.set(token);
49
+ return of(void 0);
50
+ }), mergeMap(() => {
51
+ return combineLatest([
52
+ this.httpClient.get(`/auth/user`),
53
+ this.httpClient.get(`/auth/allheader/v2`),
54
+ this.httpClient.get(`/app-manager/project/info`)
55
+ ]).pipe(map(([user, header, project]) => {
56
+ setUser(user.principal);
57
+ setTenant(user.tenantId);
58
+ setHeader(header.data);
59
+ setProject(project.data);
60
+ return void 0;
61
+ }));
62
+ }), mergeMap(() => {
63
+ return this.i18n.loadLangData(defaultLang).pipe(map((langData) => {
64
+ this.i18n.use(defaultLang, langData);
65
+ return void 0;
66
+ }));
67
+ }), mergeMap(() => {
68
+ const yunzaiUser = getUser();
69
+ const yunzaiMenus = deepCopy(yunzaiUser.menu).filter(m => m.systemCode && m.systemCode === this.config.systemCode);
70
+ const currentMenu = yunzaiMenus.pop();
71
+ if (currentMenu) {
72
+ this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });
73
+ this.settingService.setUser({
74
+ name: yunzaiUser.realname,
75
+ avatar: `${this.config.baseUrl}/filecenter/file/${yunzaiUser.avatarId}` || '',
76
+ email: yunzaiUser.email
77
+ });
78
+ this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';
79
+ this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');
80
+ const abilities = [];
81
+ generateAbility([currentMenu], abilities, '');
82
+ this.aclService.attachRole(yunzaiUser?.roles
83
+ .map((role) => {
84
+ return role.roleValue;
85
+ })
86
+ .filter((a) => !!a) || []);
87
+ this.aclService.attachAbility(abilities);
88
+ this.menuService.add([currentMenu]);
89
+ setCurrent({
90
+ name: currentMenu.text,
91
+ intro: currentMenu.intro || '',
92
+ icon: currentMenu.appIconUrl || './assets/tmp/img/avatar.jpg'
93
+ });
94
+ const attributes = currentMenu.attribute;
95
+ if (attributes) {
96
+ const attr = JSON.parse(attributes);
97
+ if (attr && attr.defaultRoute) {
98
+ setDefaultRoute(attr.defaultRoute);
99
+ }
100
+ else {
101
+ setDefaultRoute('/displayIndex');
102
+ }
103
+ }
104
+ else {
105
+ setDefaultRoute('/displayIndex');
106
+ }
107
+ }
108
+ return of(void 0);
109
+ }));
110
+ }
111
+ token() {
112
+ if (this.config.loginForm) {
113
+ return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.config.loginForm).pipe(map((response) => {
114
+ return response;
115
+ }));
116
+ }
117
+ else {
118
+ const uri = encodeURIComponent(this.win.location.href);
119
+ return this.httpClient
120
+ .get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true&timestamp=${new Date().getTime()}`)
121
+ .pipe(map((response) => {
122
+ switch (response.errcode) {
123
+ case 2000:
124
+ return response.data;
125
+ case 2001:
126
+ this.win.location.href = response.msg;
127
+ throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
128
+ default:
129
+ if (response.data) {
130
+ console.error(response.data);
131
+ throw Error(response.data);
132
+ }
133
+ else if (response.msg) {
134
+ console.error(response.msg);
135
+ throw Error(response.msg);
136
+ }
137
+ else {
138
+ console.error('cas unknown error');
139
+ throw Error('Unknown Error: Cas auth exception!');
140
+ }
141
+ }
142
+ }));
143
+ }
144
+ }
145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiStartupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
146
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiStartupService }); }
147
+ }
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: YunzaiStartupService, decorators: [{
149
+ type: Injectable
150
+ }] });
151
+ export function mapYzSideToYelonMenu(menus) {
152
+ menus.forEach(menu => {
153
+ if (menu.children && menu.hideChildren) {
154
+ menu.children.forEach(c => (c.hide = true));
155
+ }
156
+ menu.badgeDot = menu.badge_dot || null;
157
+ menu.badgeStatus = menu.badge_status || null;
158
+ menu.shortcutRoot = menu.shortcut_root || null;
159
+ menu.reuse = true;
160
+ if (menu.children) {
161
+ mapYzSideToYelonMenu(menu.children);
162
+ }
163
+ });
164
+ }
165
+ export function generateAbility(menus, abilities, prefix) {
166
+ menus.forEach(menu => {
167
+ if (menu.link) {
168
+ prefix += menu.link;
169
+ }
170
+ else {
171
+ prefix += '';
172
+ }
173
+ if (menu.menuAuths) {
174
+ menu.menuAuths.forEach((a) => {
175
+ abilities.push(`${prefix}:${a}`);
176
+ abilities.push(a);
177
+ });
178
+ }
179
+ if (menu.children) {
180
+ generateAbility(menu.children, abilities, prefix);
181
+ }
182
+ });
183
+ }
184
184
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnR1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL3NyYy9zdGFydHVwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFlLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsV0FBVyxFQUNYLGVBQWUsRUFDZixZQUFZLEVBQ1osaUJBQWlCLEVBRWxCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLG1CQUFtQixFQUdwQixNQUFNLGFBQWEsQ0FBQzs7QUFHckIsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPO1FBQ0wsb0JBQW9CO1FBQ3BCO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLENBQUMsY0FBb0MsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRTtZQUNqRixJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUM1QixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFN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LFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBbUIsRUFBRSxTQUFtQixFQUFFLE1BQWM7SUFDdEYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFO2dCQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBpbmplY3QsIEluamVjdGFibGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBQ0xTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL2FjbCc7XG5pbXBvcnQgeyBJVG9rZW5Nb2RlbCwgWUFfU0VSVklDRV9UT0tFTiB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IG1lcmdlQmlzQ29uZmlnIH0gZnJvbSAnQHllbG9uL2Jpcy9jb25maWcnO1xuaW1wb3J0IHtcbiAgTWVudSxcbiAgTWVudVNlcnZpY2UsXG4gIFNldHRpbmdzU2VydmljZSxcbiAgVGl0bGVTZXJ2aWNlLFxuICBZVU5aQUlfSTE4Tl9UT0tFTixcbiAgWXVuemFpSHR0cEkxOE5TZXJ2aWNlXG59IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQge1xuICBkZWVwQ29weSxcbiAgdXNlTG9jYWxTdG9yYWdlQ3VycmVudCxcbiAgdXNlTG9jYWxTdG9yYWdlRGVmYXVsdFJvdXRlLFxuICB1c2VMb2NhbFN0b3JhZ2VIZWFkZXIsXG4gIHVzZUxvY2FsU3RvcmFnZVByb2plY3RJbmZvLFxuICB1c2VMb2NhbFN0b3JhZ2VUZW5hbnQsXG4gIHVzZUxvY2FsU3RvcmFnZVVzZXIsXG4gIFdJTkRPVyxcbiAgWXVuemFpQ29uZmlnU2VydmljZSxcbiAgWXVuemFpTWVudSxcbiAgWXVuemFpTWVudUF0dHJpYnV0ZVxufSBmcm9tICdAeWVsb24vdXRpbCc7XG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVl1bnphaVN0YXJ0dXAoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAgWXVuemFpU3RhcnR1cFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKHN0YXJ0dXBTZXJ2aWNlOiBZdW56YWlTdGFydHVwU2VydmljZSkgPT4gKCkgPT4gc3RhcnR1cFNlcnZpY2UubG9hZCgpLFxuICAgICAgZGVwczogW1l1bnphaVN0YXJ0dXBTZXJ2aWNlXSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdO1xufVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFl1bnphaVN0YXJ0dXBTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBtZXJnZUJpc0NvbmZpZyhpbmplY3QoWXVuemFpQ29uZmlnU2VydmljZSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbnVTZXJ2aWNlID0gaW5qZWN0KE1lbnVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY2xTZXJ2aWNlID0gaW5qZWN0KEFDTFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlU2VydmljZSA9IGluamVjdChUaXRsZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuU2VydmljZSA9IGluamVjdChZQV9TRVJWSUNFX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KFNldHRpbmdzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdDxZdW56YWlIdHRwSTE4TlNlcnZpY2U+KFlVTlpBSV9JMThOX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aW4gPSBpbmplY3QoV0lORE9XKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlID0gaW5qZWN0KFl1bnphaUNvbmZpZ1NlcnZpY2UpO1xuXG4gIGxvYWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgbGV0IGRlZmF1bHRMYW5nOiBzdHJpbmcgPSB0aGlzLnNldHRpbmdTZXJ2aWNlLmxheW91dC5sYW5nIHx8IHRoaXMuaTE4bi5kZWZhdWx0TGFuZztcbiAgICBjb25zdCBbc2V0VGVuYW50XSA9IHVzZUxvY2FsU3RvcmFnZVRlbmFudCgpO1xuICAgIGNvbnN0IFtzZXRVc2VyLCBnZXRVc2VyXSA9IHVzZUxvY2FsU3RvcmFnZVVzZXIoKTtcbiAgICBjb25zdCBbc2V0SGVhZGVyXSA9IHVzZUxvY2FsU3RvcmFnZUhlYWRlcigpO1xuICAgIGNvbnN0IFtzZXRQcm9qZWN0XSA9IHVzZUxvY2FsU3RvcmFnZVByb2plY3RJbmZvKCk7XG4gICAgY29uc3QgW3NldERlZmF1bHRSb3V0ZV0gPSB1c2VMb2NhbFN0b3JhZ2VEZWZhdWx0Um91dGUoKTtcbiAgICBjb25zdCBbc2V0Q3VycmVudF0gPSB1c2VMb2NhbFN0b3JhZ2VDdXJyZW50KCk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4oKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHRva2VuOiBJVG9rZW5Nb2RlbCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2V0KCdhdXRoJywge1xuICAgICAgICAgIHRva2VuX3NlbmRfa2V5OiAnQXV0aG9yaXphdGlvbicsXG4gICAgICAgICAgdG9rZW5fc2VuZF90ZW1wbGF0ZTogYCR7dG9rZW4udG9rZW5fdHlwZX0gXFwke2FjY2Vzc190b2tlbn1gLFxuICAgICAgICAgIHRva2VuX3NlbmRfcGxhY2U6ICdoZWFkZXInXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRva2VuU2VydmljZS5zZXQodG9rZW4pO1xuICAgICAgICByZXR1cm4gb2Yodm9pZCAwKTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5odHRwQ2xpZW50LmdldChgL2F1dGgvdXNlcmApLFxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hdXRoL2FsbGhlYWRlci92MmApLFxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hcHAtbWFuYWdlci9wcm9qZWN0L2luZm9gKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgIG1hcCgoW3VzZXIsIGhlYWRlciwgcHJvamVjdF06IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgc2V0VXNlcih1c2VyLnByaW5jaXBhbCk7XG4gICAgICAgICAgICBzZXRUZW5hbnQodXNlci50ZW5hbnRJZCk7XG4gICAgICAgICAgICBzZXRIZWFkZXIoaGVhZGVyLmRhdGEpO1xuICAgICAgICAgICAgc2V0UHJvamVjdChwcm9qZWN0LmRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmkxOG4ubG9hZExhbmdEYXRhKGRlZmF1bHRMYW5nKS5waXBlKFxuICAgICAgICAgIG1hcCgobGFuZ0RhdGE6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pMThuLnVzZShkZWZhdWx0TGFuZywgbGFuZ0RhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHl1bnphaVVzZXIgPSBnZXRVc2VyKCkhO1xuICAgICAgICBjb25zdCB5dW56YWlNZW51czogWXVuemFpTWVudVtdID0gZGVlcENvcHkoeXVuemFpVXNlci5tZW51KS5maWx0ZXIoXG4gICAgICAgICAgbSA9PiBtLnN5c3RlbUNvZGUgJiYgbS5zeXN0ZW1Db2RlID09PSB0aGlzLmNvbmZpZy5zeXN0ZW1Db2RlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNZW51ID0geXVuemFpTWVudXMucG9wKCk7XG4gICAgICAgIGlmIChjdXJyZW50TWVudSkge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ1NlcnZpY2Uuc2V0QXBwKHsgbmFtZTogY3VycmVudE1lbnUudGV4dCwgZGVzY3JpcHRpb246IGN1cnJlbnRNZW51LmludHJvIH0pO1xuICAgICAgICAgIHRoaXMuc2V0dGluZ1NlcnZpY2Uuc2V0VXNlcih7XG4gICAgICAgICAgICBuYW1lOiB5dW56YWlVc2VyLnJlYWxuYW1lLFxuICAgICAgICAgICAgYXZhdGFyOiBgJHt0aGlzLmNvbmZpZy5iYXNlVXJsfS9maWxlY2VudGVyL2ZpbGUvJHt5dW56YWlVc2VyLmF2YXRhcklkfWAgfHwgJycsXG4gICAgICAgICAgICBlbWFpbDogeXVuemFpVXNlci5lbWFpbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLmRlZmF1bHQgPSBjdXJyZW50TWVudSAmJiBjdXJyZW50TWVudS50ZXh0ID8gY3VycmVudE1lbnUudGV4dCA6ICdkZWZhdWx0IGFwcGxpY2F0aW9uIG5hbWUnO1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKGN1cnJlbnRNZW51ICYmIGN1cnJlbnRNZW51LnRleHQgPyBjdXJyZW50TWVudS50ZXh0IDogJ25vIHRpdGxlJyk7XG4gICAgICAgICAgY29uc3QgYWJpbGl0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgIGdlbmVyYXRlQWJpbGl0eShbY3VycmVudE1lbnVdLCBhYmlsaXRpZXMsICcnKTtcbiAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UuYXR0YWNoUm9sZShcbiAgICAgICAgICAgIHl1bnphaVVzZXI/LnJvbGVzXG4gICAgICAgICAgICAgIC5tYXAoKHJvbGU6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByb2xlLnJvbGVWYWx1ZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoYTogTnpTYWZlQW55KSA9PiAhIWEpIHx8IFtdXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UuYXR0YWNoQWJpbGl0eShhYmlsaXRpZXMpO1xuICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UuYWRkKFtjdXJyZW50TWVudSBhcyBNZW51XSk7XG4gICAgICAgICAgc2V0Q3VycmVudCh7XG4gICAgICAgICAgICBuYW1lOiBjdXJyZW50TWVudS50ZXh0LFxuICAgICAgICAgICAgaW50cm86IGN1cnJlbnRNZW51LmludHJvIHx8ICcnLFxuICAgICAgICAgICAgaWNvbjogY3VycmVudE1lbnUuYXBwSWNvblVybCB8fCAnLi9hc3NldHMvdG1wL2ltZy9hdmF0YXIuanBnJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBjdXJyZW50TWVudS5hdHRyaWJ1dGU7XG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHI6IFl1bnphaU1lbnVBdHRyaWJ1dGUgPSBKU09OLnBhcnNlKGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgaWYgKGF0dHIgJiYgYXR0ci5kZWZhdWx0Um91dGUpIHtcbiAgICAgICAgICAgICAgc2V0RGVmYXVsdFJvdXRlKGF0dHIuZGVmYXVsdFJvdXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldERlZmF1bHRSb3V0ZSgnL2Rpc3BsYXlJbmRleCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXREZWZhdWx0Um91dGUoJy9kaXNwbGF5SW5kZXgnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB0b2tlbigpOiBPYnNlcnZhYmxlPElUb2tlbk1vZGVsPiB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmxvZ2luRm9ybSkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KGAvYXV0aC9vYXV0aC90b2tlbj9fYWxsb3dfYW5vbnltb3VzPXRydWVgLCB0aGlzLmNvbmZpZy5sb2dpbkZvcm0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVyaSA9IGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLndpbi5sb2NhdGlvbi5ocmVmKTtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgLmdldChgL2Nhcy1wcm94eS9hcHAvdmFsaWRhdGVfZnVsbD9jYWxsYmFjaz0ke3VyaX0mX2FsbG93X2Fub255bW91cz10cnVlJnRpbWVzdGFtcD0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChyZXNwb25zZS5lcnJjb2RlKSB7XG4gICAgICAgICAgICAgIGNhc2UgMjAwMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgY2FzZSAyMDAxOlxuICAgICAgICAgICAgICAgIHRoaXMud2luLmxvY2F0aW9uLmhyZWYgPSByZXNwb25zZS5tc2c7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJDb29raWUgRXJyb3I6IENhbid0IGZpbmQgQ2FzIENvb2tpZSxTbyBqdW1wIHRvIGxvZ2luIVwiKTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UubXNnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLm1zZyk7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihyZXNwb25zZS5tc2cpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdjYXMgdW5rbm93biBlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gRXJyb3I6IENhcyBhdXRoIGV4Y2VwdGlvbiEnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFl6U2lkZVRvWWVsb25NZW51KG1lbnVzOiBZdW56YWlNZW51W10pOiB2b2lkIHtcbiAgbWVudXMuZm9yRWFjaChtZW51ID0+IHtcbiAgICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LmhpZGVDaGlsZHJlbikge1xuICAgICAgbWVudS5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gKGMuaGlkZSA9IHRydWUpKTtcbiAgICB9XG4gICAgbWVudS5iYWRnZURvdCA9IG1lbnUuYmFkZ2VfZG90IHx8IG51bGw7XG4gICAgbWVudS5iYWRnZVN0YXR1cyA9IG1lbnUuYmFkZ2Vfc3RhdHVzIHx8IG51bGw7XG4gICAgbWVudS5zaG9ydGN1dFJvb3QgPSBtZW51LnNob3J0Y3V0X3Jvb3QgfHwgbnVsbDtcbiAgICBtZW51LnJldXNlID0gdHJ1ZTtcbiAgICBpZiAobWVudS5jaGlsZHJlbikge1xuICAgICAgbWFwWXpTaWRlVG9ZZWxvbk1lbnUobWVudS5jaGlsZHJlbik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQWJpbGl0eShtZW51czogWXVuemFpTWVudVtdLCBhYmlsaXRpZXM6IHN0cmluZ1tdLCBwcmVmaXg6IHN0cmluZyk6IHZvaWQge1xuICBtZW51cy5mb3JFYWNoKG1lbnUgPT4ge1xuICAgIGlmIChtZW51LmxpbmspIHtcbiAgICAgIHByZWZpeCArPSBtZW51Lmxpbms7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZWZpeCArPSAnJztcbiAgICB9XG4gICAgaWYgKG1lbnUubWVudUF1dGhzKSB7XG4gICAgICBtZW51Lm1lbnVBdXRocy5mb3JFYWNoKChhOiBzdHJpbmcpID0+IHtcbiAgICAgICAgYWJpbGl0aWVzLnB1c2goYCR7cHJlZml4fToke2F9YCk7XG4gICAgICAgIGFiaWxpdGllcy5wdXNoKGEpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1lbnUuY2hpbGRyZW4pIHtcbiAgICAgIGdlbmVyYXRlQWJpbGl0eShtZW51LmNoaWxkcmVuLCBhYmlsaXRpZXMsIHByZWZpeCk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
@@ -1,88 +1,88 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from '@yelon/bis/config';
3
- import { deepCopy, log, useLocalStorageUser } from '@yelon/util';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@yelon/util";
6
- import * as i2 from "@angular/router";
7
- export class ActGuardService {
8
- constructor(configService, pathToRegexp, router) {
9
- this.configService = configService;
10
- this.pathToRegexp = pathToRegexp;
11
- this.router = router;
12
- this.bis = BUSINESS_DEFAULT_CONFIG;
13
- this.menus = [];
14
- this.links = [];
15
- log('act: ');
16
- this.bis = mergeBisConfig(this.configService);
17
- log('act: config ', this.bis);
18
- const [, getUser] = useLocalStorageUser();
19
- const user = getUser();
20
- log('act: user ', user);
21
- // @ts-ignore
22
- this.menus = deepCopy(user.menu || []).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
23
- log('act: menus ', this.menus);
24
- this.getAllLinks(this.menus, this.links);
25
- log('act: links ', this.links);
26
- }
27
- process(url) {
28
- log('act: can activate ', url);
29
- if (this.preHandle(url)) {
30
- return true;
31
- }
32
- log('act: can activate child prehandle success');
33
- let canactivate = false;
34
- this.links.forEach((link) => {
35
- // path = /xxx
36
- if (link === url.split('?')[0]) {
37
- canactivate = true;
38
- log(`act: link value ${link} equals url value ${url}`);
39
- return;
40
- }
41
- // paht = /xxx/:xx
42
- const regexp = this.pathToRegexp.stringToRegexp(link, null, null);
43
- log(`act: ${link} test ${url.split('?')[0]}`);
44
- if (regexp.test(url.split('?')[0])) {
45
- canactivate = true;
46
- log(`act: test value ${canactivate}`);
47
- return;
48
- }
49
- });
50
- if (canactivate) {
51
- log(`act: test sucess`);
52
- return true;
53
- }
54
- else {
55
- log(`act: test error`);
56
- this.router.navigate(['displayIndex']);
57
- return false;
58
- }
59
- }
60
- preHandle(url) {
61
- return (url.includes('error') ||
62
- url.includes('exception') ||
63
- url.includes('displayIndex') ||
64
- url === '' ||
65
- url === null ||
66
- url === '/' ||
67
- url.includes('iframePage'));
68
- }
69
- getAllLinks(menu, links) {
70
- menu.forEach((sider) => {
71
- if (sider.link) {
72
- links.push(sider.link);
73
- }
74
- if (sider.children && sider.children.length > 0) {
75
- this.getAllLinks(sider.children, links);
76
- }
77
- });
78
- }
79
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ActGuardService, deps: [{ token: i1.YunzaiConfigService }, { token: i1.PathToRegexpService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
80
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ActGuardService, providedIn: 'root' }); }
81
- }
82
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: ActGuardService, decorators: [{
83
- type: Injectable,
84
- args: [{ providedIn: 'root' }]
85
- }], ctorParameters: () => [{ type: i1.YunzaiConfigService }, { type: i1.PathToRegexpService }, { type: i2.Router }] });
86
- export const actGuardCanActive = (_, state) => inject(ActGuardService).process(state.url);
87
- export const actGuardCanActiveChild = (_, state) => inject(ActGuardService).process(state.url);
1
+ import { Injectable, inject } from '@angular/core';
2
+ import { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from '@yelon/bis/config';
3
+ import { deepCopy, log, useLocalStorageUser } from '@yelon/util';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@yelon/util";
6
+ import * as i2 from "@angular/router";
7
+ export class ActGuardService {
8
+ constructor(configService, pathToRegexp, router) {
9
+ this.configService = configService;
10
+ this.pathToRegexp = pathToRegexp;
11
+ this.router = router;
12
+ this.bis = BUSINESS_DEFAULT_CONFIG;
13
+ this.menus = [];
14
+ this.links = [];
15
+ log('act: ');
16
+ this.bis = mergeBisConfig(this.configService);
17
+ log('act: config ', this.bis);
18
+ const [, getUser] = useLocalStorageUser();
19
+ const user = getUser();
20
+ log('act: user ', user);
21
+ // @ts-ignore
22
+ this.menus = deepCopy(user.menu || []).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
23
+ log('act: menus ', this.menus);
24
+ this.getAllLinks(this.menus, this.links);
25
+ log('act: links ', this.links);
26
+ }
27
+ process(url) {
28
+ log('act: can activate ', url);
29
+ if (this.preHandle(url)) {
30
+ return true;
31
+ }
32
+ log('act: can activate child prehandle success');
33
+ let canactivate = false;
34
+ this.links.forEach((link) => {
35
+ // path = /xxx
36
+ if (link === url.split('?')[0]) {
37
+ canactivate = true;
38
+ log(`act: link value ${link} equals url value ${url}`);
39
+ return;
40
+ }
41
+ // paht = /xxx/:xx
42
+ const regexp = this.pathToRegexp.stringToRegexp(link, null, null);
43
+ log(`act: ${link} test ${url.split('?')[0]}`);
44
+ if (regexp.test(url.split('?')[0])) {
45
+ canactivate = true;
46
+ log(`act: test value ${canactivate}`);
47
+ return;
48
+ }
49
+ });
50
+ if (canactivate) {
51
+ log(`act: test sucess`);
52
+ return true;
53
+ }
54
+ else {
55
+ log(`act: test error`);
56
+ this.router.navigate(['displayIndex']);
57
+ return false;
58
+ }
59
+ }
60
+ preHandle(url) {
61
+ return (url.includes('error') ||
62
+ url.includes('exception') ||
63
+ url.includes('displayIndex') ||
64
+ url === '' ||
65
+ url === null ||
66
+ url === '/' ||
67
+ url.includes('iframePage'));
68
+ }
69
+ getAllLinks(menu, links) {
70
+ menu.forEach((sider) => {
71
+ if (sider.link) {
72
+ links.push(sider.link);
73
+ }
74
+ if (sider.children && sider.children.length > 0) {
75
+ this.getAllLinks(sider.children, links);
76
+ }
77
+ });
78
+ }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ActGuardService, deps: [{ token: i1.YunzaiConfigService }, { token: i1.PathToRegexpService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
80
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ActGuardService, providedIn: 'root' }); }
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ActGuardService, decorators: [{
83
+ type: Injectable,
84
+ args: [{ providedIn: 'root' }]
85
+ }], ctorParameters: () => [{ type: i1.YunzaiConfigService }, { type: i1.PathToRegexpService }, { type: i2.Router }] });
86
+ export const actGuardCanActive = (_, state) => inject(ActGuardService).process(state.url);
87
+ export const actGuardCanActiveChild = (_, state) => inject(ActGuardService).process(state.url);
88
88
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWFjdC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9zcmMveXVuemFpLWFjdC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUUsT0FBTyxFQUNMLFFBQVEsRUFDUixHQUFHLEVBSUgsbUJBQW1CLEVBRXBCLE1BQU0sYUFBYSxDQUFDOzs7O0FBSXJCLE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ1UsYUFBa0MsRUFDbEMsWUFBaUMsRUFDakMsTUFBYztRQUZkLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVBoQixRQUFHLEdBQXlCLHVCQUF1QixDQUFDO1FBQ3BELFVBQUssR0FBZ0IsRUFBRSxDQUFDO1FBQ3hCLFVBQUssR0FBYSxFQUFFLENBQUM7UUFPM0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQWUsT0FBTyxFQUFHLENBQUM7UUFDcEMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QixhQUFhO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUUsSUFBSSxDQUFDLElBQWtCLElBQUksRUFBRSxDQUFDLENBQUMsTUFB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QztZQUNELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0VVLGVBQWU7a0hBQWYsZUFBZSxjQURGLE1BQU07OzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFtRmxDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF1QixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUNoaWxkRm4sIENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHLCBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJ0B5ZWxvbi9iaXMvY29uZmlnJztcbmltcG9ydCB7IE1lbnUgfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHtcbiAgZGVlcENvcHksXG4gIGxvZyxcbiAgWXVuemFpQnVzaW5lc3NDb25maWcsXG4gIFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gIFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gIHVzZUxvY2FsU3RvcmFnZVVzZXIsXG4gIFl1bnphaVVzZXJcbn0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBY3RHdWFyZFNlcnZpY2Uge1xuICBwcml2YXRlIGJpczogWXVuemFpQnVzaW5lc3NDb25maWcgPSBCVVNJTkVTU19ERUZBVUxUX0NPTkZJRztcbiAgcHJpdmF0ZSBtZW51czogTnpTYWZlQW55W10gPSBbXTtcbiAgcHJpdmF0ZSBsaW5rczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXRoVG9SZWdleHA6IFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBsb2coJ2FjdDogJyk7XG4gICAgdGhpcy5iaXMgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNvbmZpZ1NlcnZpY2UpO1xuICAgIGxvZygnYWN0OiBjb25maWcgJywgdGhpcy5iaXMpO1xuICAgIGNvbnN0IFssIGdldFVzZXJdID0gdXNlTG9jYWxTdG9yYWdlVXNlcigpO1xuICAgIGNvbnN0IHVzZXI6IFl1bnphaVVzZXIgPSBnZXRVc2VyKCkhO1xuICAgIGxvZygnYWN0OiB1c2VyICcsIHVzZXIpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLm1lbnVzID0gZGVlcENvcHkoKHVzZXIubWVudSBhcyBOelNhZmVBbnkpIHx8IFtdKS5maWx0ZXIoXG4gICAgICAobTogTWVudSkgPT4gbS5zeXN0ZW1Db2RlICYmIG0uc3lzdGVtQ29kZSA9PT0gdGhpcy5iaXMuc3lzdGVtQ29kZVxuICAgICkgYXMgTWVudVtdO1xuICAgIGxvZygnYWN0OiBtZW51cyAnLCB0aGlzLm1lbnVzKTtcbiAgICB0aGlzLmdldEFsbExpbmtzKHRoaXMubWVudXMsIHRoaXMubGlua3MpO1xuICAgIGxvZygnYWN0OiBsaW5rcyAnLCB0aGlzLmxpbmtzKTtcbiAgfVxuXG4gIHByb2Nlc3ModXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsb2coJ2FjdDogY2FuIGFjdGl2YXRlICcsIHVybCk7XG4gICAgaWYgKHRoaXMucHJlSGFuZGxlKHVybCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsb2coJ2FjdDogY2FuIGFjdGl2YXRlIGNoaWxkIHByZWhhbmRsZSBzdWNjZXNzJyk7XG4gICAgbGV0IGNhbmFjdGl2YXRlID0gZmFsc2U7XG4gICAgdGhpcy5saW5rcy5mb3JFYWNoKChsaW5rOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIHBhdGggPSAveHh4XG4gICAgICBpZiAobGluayA9PT0gdXJsLnNwbGl0KCc/JylbMF0pIHtcbiAgICAgICAgY2FuYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgICBsb2coYGFjdDogbGluayB2YWx1ZSAke2xpbmt9IGVxdWFscyB1cmwgdmFsdWUgJHt1cmx9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIHBhaHQgPSAveHh4Lzp4eFxuICAgICAgY29uc3QgcmVnZXhwOiBSZWdFeHAgPSB0aGlzLnBhdGhUb1JlZ2V4cC5zdHJpbmdUb1JlZ2V4cChsaW5rLCBudWxsLCBudWxsKTtcbiAgICAgIGxvZyhgYWN0OiAke2xpbmt9IHRlc3QgJHt1cmwuc3BsaXQoJz8nKVswXX1gKTtcbiAgICAgIGlmIChyZWdleHAudGVzdCh1cmwuc3BsaXQoJz8nKVswXSkpIHtcbiAgICAgICAgY2FuYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgICBsb2coYGFjdDogdGVzdCB2YWx1ZSAke2NhbmFjdGl2YXRlfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGNhbmFjdGl2YXRlKSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBzdWNlc3NgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBlcnJvcmApO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkaXNwbGF5SW5kZXgnXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJlSGFuZGxlKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHVybC5pbmNsdWRlcygnZXJyb3InKSB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdleGNlcHRpb24nKSB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdkaXNwbGF5SW5kZXgnKSB8fFxuICAgICAgdXJsID09PSAnJyB8fFxuICAgICAgdXJsID09PSBudWxsIHx8XG4gICAgICB1cmwgPT09ICcvJyB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdpZnJhbWVQYWdlJylcbiAgICApO1xuICB9XG5cbiAgZ2V0QWxsTGlua3MobWVudTogTWVudVtdLCBsaW5rczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBtZW51LmZvckVhY2goKHNpZGVyOiBNZW51KSA9PiB7XG4gICAgICBpZiAoc2lkZXIubGluaykge1xuICAgICAgICBsaW5rcy5wdXNoKHNpZGVyLmxpbmspO1xuICAgICAgfVxuICAgICAgaWYgKHNpZGVyLmNoaWxkcmVuICYmIHNpZGVyLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5nZXRBbGxMaW5rcyhzaWRlci5jaGlsZHJlbiwgbGlua3MpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhY3RHdWFyZENhbkFjdGl2ZTogQ2FuQWN0aXZhdGVGbiA9IChfLCBzdGF0ZSkgPT4gaW5qZWN0KEFjdEd1YXJkU2VydmljZSkucHJvY2VzcyhzdGF0ZS51cmwpO1xuZXhwb3J0IGNvbnN0IGFjdEd1YXJkQ2FuQWN0aXZlQ2hpbGQ6IENhbkFjdGl2YXRlQ2hpbGRGbiA9IChfLCBzdGF0ZSkgPT4gaW5qZWN0KEFjdEd1YXJkU2VydmljZSkucHJvY2VzcyhzdGF0ZS51cmwpO1xuIl19