@yelon/bis 15.2.4 → 16.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.
- package/LICENSE +21 -21
- package/README.md +23 -23
- package/{esm2020 → esm2022}/bis.mjs +4 -4
- package/{esm2020 → esm2022}/index.mjs +1 -1
- package/{esm2020 → esm2022}/layout/bis.config.mjs +10 -10
- package/{esm2020 → esm2022}/layout/html-names.mjs +32 -32
- package/{esm2020 → esm2022}/layout/icon/style-icons.mjs +795 -795
- package/{esm2020 → esm2022}/layout/layout-basic/index.mjs +2 -2
- package/{esm2020 → esm2022}/layout/layout-basic/interface.mjs +6 -6
- package/{esm2020 → esm2022}/layout/layout-basic/layout-basic.component.mjs +356 -356
- package/{esm2020 → esm2022}/layout/layout-nav/index.mjs +4 -4
- package/esm2022/layout/layout-nav/layout-nav-application.component.mjs +328 -0
- package/{esm2020 → esm2022}/layout/layout-nav/layout-nav-group.component.mjs +125 -124
- package/esm2022/layout/layout-nav/layout-nav-tile.component.mjs +16 -0
- package/{esm2020 → esm2022}/layout/layout-nav/types.mjs +1 -1
- package/{esm2020 → esm2022}/layout/layout.mjs +4 -4
- package/{esm2020 → esm2022}/layout/public_api.mjs +12 -12
- package/{esm2020 → esm2022}/layout/widgets/index.mjs +6 -6
- package/esm2022/layout/widgets/yunzai-clear-storage.component.mjs +46 -0
- package/esm2022/layout/widgets/yunzai-fullscreen.component.mjs +46 -0
- package/{esm2020 → esm2022}/layout/widgets/yunzai-i18n.component.mjs +147 -146
- package/esm2022/layout/widgets/yunzai-notify.component.mjs +184 -0
- package/esm2022/layout/widgets/yunzai-theme-btn.component.mjs +202 -0
- package/esm2022/layout/widgets/yunzai-user.component.mjs +131 -0
- package/esm2022/layout/yunzai-act.guard.mjs +108 -0
- package/esm2022/layout/yunzai-auth.service.mjs +174 -0
- package/{esm2020 → esm2022}/layout/yunzai-default.interceptor.mjs +209 -209
- package/{esm2020 → esm2022}/layout/yunzai-i18n.service.mjs +131 -131
- package/{esm2020 → esm2022}/layout/yunzai-lang.mjs +113 -113
- package/esm2022/layout/yunzai-layout.module.mjs +77 -0
- package/{esm2020 → esm2022}/layout/yunzai-startup.service.mjs +157 -157
- package/{esm2020 → esm2022}/public_api.mjs +1 -1
- package/{fesm2015 → fesm2022}/bis.mjs +6 -6
- package/{fesm2020 → fesm2022}/layout.mjs +3245 -3226
- package/fesm2022/layout.mjs.map +1 -0
- package/index.d.ts +1 -1
- package/index.less +1 -1
- package/layout/bis.config.d.ts +3 -3
- package/layout/html-names.d.ts +31 -31
- package/layout/icon/style-icons.d.ts +1 -1
- package/layout/index.d.ts +5 -5
- package/layout/layout-basic/index.d.ts +2 -2
- package/layout/layout-basic/interface.d.ts +24 -24
- package/layout/layout-basic/layout-basic.component.d.ts +32 -32
- package/layout/layout-nav/index.d.ts +4 -4
- package/layout/layout-nav/layout-nav-application.component.d.ts +27 -27
- package/layout/layout-nav/layout-nav-group.component.d.ts +17 -17
- package/layout/layout-nav/layout-nav-tile.component.d.ts +6 -6
- package/layout/layout-nav/types.d.ts +15 -15
- package/layout/public_api.d.ts +12 -12
- package/layout/style/index.less +154 -154
- package/layout/widgets/index.d.ts +6 -6
- package/layout/widgets/yunzai-clear-storage.component.d.ts +11 -11
- package/layout/widgets/yunzai-fullscreen.component.d.ts +8 -8
- package/layout/widgets/yunzai-i18n.component.d.ts +21 -21
- package/layout/widgets/yunzai-notify.component.d.ts +30 -30
- package/layout/widgets/yunzai-theme-btn.component.d.ts +32 -32
- package/layout/widgets/yunzai-user.component.d.ts +28 -28
- package/layout/yunzai-act.guard.d.ts +22 -22
- package/layout/yunzai-auth.service.d.ts +21 -21
- package/layout/yunzai-default.interceptor.d.ts +27 -27
- package/layout/yunzai-i18n.service.d.ts +33 -33
- package/layout/yunzai-lang.d.ts +11 -11
- package/layout/yunzai-layout.module.d.ts +21 -21
- package/layout/yunzai-startup.service.d.ts +37 -37
- package/package.json +39 -47
- package/public_api.d.ts +2 -2
- package/theme-compact.less +3 -3
- package/theme-dark.less +46 -46
- package/theme-default.less +46 -46
- package/esm2020/layout/layout-nav/layout-nav-application.component.mjs +0 -327
- package/esm2020/layout/layout-nav/layout-nav-tile.component.mjs +0 -15
- package/esm2020/layout/widgets/yunzai-clear-storage.component.mjs +0 -45
- package/esm2020/layout/widgets/yunzai-fullscreen.component.mjs +0 -45
- package/esm2020/layout/widgets/yunzai-notify.component.mjs +0 -183
- package/esm2020/layout/widgets/yunzai-theme-btn.component.mjs +0 -201
- package/esm2020/layout/widgets/yunzai-user.component.mjs +0 -130
- package/esm2020/layout/yunzai-act.guard.mjs +0 -107
- package/esm2020/layout/yunzai-auth.service.mjs +0 -155
- package/esm2020/layout/yunzai-layout.module.mjs +0 -76
- package/fesm2015/layout.mjs +0 -3218
- package/fesm2015/layout.mjs.map +0 -1
- package/fesm2020/bis.mjs +0 -6
- package/fesm2020/bis.mjs.map +0 -1
- package/fesm2020/layout.mjs.map +0 -1
- /package/{fesm2015 → fesm2022}/bis.mjs.map +0 -0
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
|
|
2
|
-
import { YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
3
|
-
import { WINDOW } from '@yelon/util';
|
|
4
|
-
import { mergeBisConfig } from '../bis.config';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "ng-zorro-antd/message";
|
|
7
|
-
import * as i2 from "@yelon/util";
|
|
8
|
-
import * as i3 from "@yelon/cache";
|
|
9
|
-
import * as i4 from "@angular/common";
|
|
10
|
-
import * as i5 from "ng-zorro-antd/core/transition-patch";
|
|
11
|
-
import * as i6 from "ng-zorro-antd/menu";
|
|
12
|
-
import * as i7 from "ng-zorro-antd/dropdown";
|
|
13
|
-
import * as i8 from "ng-zorro-antd/icon";
|
|
14
|
-
import * as i9 from "ng-zorro-antd/avatar";
|
|
15
|
-
import * as i10 from "@yelon/theme";
|
|
16
|
-
export class YunzaiUserComponent {
|
|
17
|
-
constructor(injector, msg, tokenService,
|
|
18
|
-
// @ts-ignore
|
|
19
|
-
configService, cacheService) {
|
|
20
|
-
this.injector = injector;
|
|
21
|
-
this.msg = msg;
|
|
22
|
-
this.tokenService = tokenService;
|
|
23
|
-
this.configService = configService;
|
|
24
|
-
this.cacheService = cacheService;
|
|
25
|
-
this.icon = '';
|
|
26
|
-
this.username = '';
|
|
27
|
-
this.menus = [];
|
|
28
|
-
this.config = mergeBisConfig(configService);
|
|
29
|
-
}
|
|
30
|
-
ngOnInit() {
|
|
31
|
-
const projectInfo = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
32
|
-
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
33
|
-
this.username = user.realname ? user.realname : '未命名';
|
|
34
|
-
this.icon = user.avatarId
|
|
35
|
-
? `${this.config.baseUrl}/filecenter/file/${user.avatarId}`
|
|
36
|
-
: `./assets/tmp/img/avatar.jpg`;
|
|
37
|
-
this.menus = projectInfo.profileList;
|
|
38
|
-
}
|
|
39
|
-
logout() {
|
|
40
|
-
localStorage.clear();
|
|
41
|
-
this.tokenService.clear();
|
|
42
|
-
this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;
|
|
43
|
-
}
|
|
44
|
-
to(href) {
|
|
45
|
-
if (href) {
|
|
46
|
-
this.injector.get(WINDOW).open(href);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.msg.error('该菜单没有配置链接!');
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
YunzaiUserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: YunzaiUserComponent, deps: [{ token: i0.Injector }, { token: i1.NzMessageService }, { token: YA_SERVICE_TOKEN }, { token: i2.YunzaiConfigService }, { token: i3.CacheService }], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
-
YunzaiUserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: YunzaiUserComponent, selector: "yunzai-user", ngImport: i0, template: `
|
|
55
|
-
<div
|
|
56
|
-
class="yunzai-default__nav-item d-flex align-items-center px-sm"
|
|
57
|
-
data-event-id="_nav_user"
|
|
58
|
-
nz-dropdown
|
|
59
|
-
nzPlacement="bottomRight"
|
|
60
|
-
[nzDropdownMenu]="userMenu"
|
|
61
|
-
>
|
|
62
|
-
<div class="yz-user-name">
|
|
63
|
-
<nz-avatar [nzSrc]="icon" nzSize="small" class="mr-sm"></nz-avatar>
|
|
64
|
-
{{ username }}
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
<nz-dropdown-menu #userMenu="nzDropdownMenu">
|
|
68
|
-
<div nz-menu class="width-sm">
|
|
69
|
-
<div
|
|
70
|
-
data-event-id="_nav_user"
|
|
71
|
-
[attr.data-name]="m.name | i18n"
|
|
72
|
-
nz-menu-item
|
|
73
|
-
*ngFor="let m of menus"
|
|
74
|
-
(click)="to(m.url)"
|
|
75
|
-
>
|
|
76
|
-
<i nz-icon [nzType]="m.icon" class="mr-sm"></i>
|
|
77
|
-
{{ m.name | i18n }}
|
|
78
|
-
</div>
|
|
79
|
-
<li nz-menu-divider></li>
|
|
80
|
-
<div data-event-id="_nav_user" data-name="注销登录" nz-menu-item (click)="logout()">
|
|
81
|
-
<i nz-icon nzType="logout" class="mr-sm"></i>
|
|
82
|
-
{{ 'logout' | i18n }}
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
85
|
-
</nz-dropdown-menu>
|
|
86
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.ɵNzTransitionPatchDirective, selector: "[nz-button], nz-button-group, [nz-icon], [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i6.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "directive", type: i6.NzMenuItemDirective, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i6.NzMenuDividerDirective, selector: "[nz-menu-divider]", exportAs: ["nzMenuDivider"] }, { kind: "directive", type: i7.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "component", type: i7.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i8.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "component", type: i9.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "pipe", type: i10.I18nPipe, name: "i18n" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: YunzaiUserComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{
|
|
90
|
-
selector: 'yunzai-user',
|
|
91
|
-
template: `
|
|
92
|
-
<div
|
|
93
|
-
class="yunzai-default__nav-item d-flex align-items-center px-sm"
|
|
94
|
-
data-event-id="_nav_user"
|
|
95
|
-
nz-dropdown
|
|
96
|
-
nzPlacement="bottomRight"
|
|
97
|
-
[nzDropdownMenu]="userMenu"
|
|
98
|
-
>
|
|
99
|
-
<div class="yz-user-name">
|
|
100
|
-
<nz-avatar [nzSrc]="icon" nzSize="small" class="mr-sm"></nz-avatar>
|
|
101
|
-
{{ username }}
|
|
102
|
-
</div>
|
|
103
|
-
</div>
|
|
104
|
-
<nz-dropdown-menu #userMenu="nzDropdownMenu">
|
|
105
|
-
<div nz-menu class="width-sm">
|
|
106
|
-
<div
|
|
107
|
-
data-event-id="_nav_user"
|
|
108
|
-
[attr.data-name]="m.name | i18n"
|
|
109
|
-
nz-menu-item
|
|
110
|
-
*ngFor="let m of menus"
|
|
111
|
-
(click)="to(m.url)"
|
|
112
|
-
>
|
|
113
|
-
<i nz-icon [nzType]="m.icon" class="mr-sm"></i>
|
|
114
|
-
{{ m.name | i18n }}
|
|
115
|
-
</div>
|
|
116
|
-
<li nz-menu-divider></li>
|
|
117
|
-
<div data-event-id="_nav_user" data-name="注销登录" nz-menu-item (click)="logout()">
|
|
118
|
-
<i nz-icon nzType="logout" class="mr-sm"></i>
|
|
119
|
-
{{ 'logout' | i18n }}
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
</nz-dropdown-menu>
|
|
123
|
-
`,
|
|
124
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
125
|
-
}]
|
|
126
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.NzMessageService }, { type: undefined, decorators: [{
|
|
127
|
-
type: Inject,
|
|
128
|
-
args: [YA_SERVICE_TOKEN]
|
|
129
|
-
}] }, { type: i2.YunzaiConfigService }, { type: i3.CacheService }]; } });
|
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLXVzZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC93aWRnZXRzL3l1bnphaS11c2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFN0YsT0FBTyxFQUFFLGdCQUFnQixFQUFpQixNQUFNLGFBQWEsQ0FBQztBQUU5RCxPQUFPLEVBQUUsTUFBTSxFQUE2QyxNQUFNLGFBQWEsQ0FBQztBQUdoRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7Ozs7QUE2Qy9DLE1BQU0sT0FBTyxtQkFBbUI7SUFHOUIsWUFDVSxRQUFrQixFQUNsQixHQUFxQixFQUNLLFlBQTJCO0lBQzdELGFBQWE7SUFDTCxhQUFrQyxFQUNsQyxZQUEwQjtRQUwxQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFFBQUcsR0FBSCxHQUFHLENBQWtCO1FBQ0ssaUJBQVksR0FBWixZQUFZLENBQWU7UUFFckQsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBQ2xDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBS3BDLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsYUFBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixVQUFLLEdBQWUsRUFBRSxDQUFDO1FBTHJCLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFNRCxRQUFRO1FBQ04sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUMzRCxDQUFDLENBQUMsNkJBQTZCLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNO1FBQ0osWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyx1QkFBdUIsQ0FBQztJQUMxRixDQUFDO0lBRUQsRUFBRSxDQUFDLElBQVk7UUFDYixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QzthQUFNO1lBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDOztnSEF4Q1UsbUJBQW1CLDBFQU1wQixnQkFBZ0I7b0dBTmYsbUJBQW1CLG1EQW5DcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NUOzJGQUdVLG1CQUFtQjtrQkFyQy9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ1Q7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzswQkFPSSxNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5qZWN0b3IsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBZQV9TRVJWSUNFX1RPS0VOLCBJVG9rZW5TZXJ2aWNlIH0gZnJvbSAnQHllbG9uL2F1dGgnO1xuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL2NhY2hlJztcbmltcG9ydCB7IFdJTkRPVywgWXVuemFpQnVzaW5lc3NDb25maWcsIFl1bnphaUNvbmZpZ1NlcnZpY2UgfSBmcm9tICdAeWVsb24vdXRpbCc7XG5pbXBvcnQgeyBOek1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9tZXNzYWdlJztcblxuaW1wb3J0IHsgbWVyZ2VCaXNDb25maWcgfSBmcm9tICcuLi9iaXMuY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBVc2VyTGluayB7XG4gIGljb246IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXVuemFpLXVzZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwieXVuemFpLWRlZmF1bHRfX25hdi1pdGVtIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtc21cIlxuICAgICAgZGF0YS1ldmVudC1pZD1cIl9uYXZfdXNlclwiXG4gICAgICBuei1kcm9wZG93blxuICAgICAgbnpQbGFjZW1lbnQ9XCJib3R0b21SaWdodFwiXG4gICAgICBbbnpEcm9wZG93bk1lbnVdPVwidXNlck1lbnVcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ5ei11c2VyLW5hbWVcIj5cbiAgICAgICAgPG56LWF2YXRhciBbbnpTcmNdPVwiaWNvblwiIG56U2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJtci1zbVwiPjwvbnotYXZhdGFyPlxuICAgICAgICB7eyB1c2VybmFtZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG56LWRyb3Bkb3duLW1lbnUgI3VzZXJNZW51PVwibnpEcm9wZG93bk1lbnVcIj5cbiAgICAgIDxkaXYgbnotbWVudSBjbGFzcz1cIndpZHRoLXNtXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBkYXRhLWV2ZW50LWlkPVwiX25hdl91c2VyXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLW5hbWVdPVwibS5uYW1lIHwgaTE4blwiXG4gICAgICAgICAgbnotbWVudS1pdGVtXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG0gb2YgbWVudXNcIlxuICAgICAgICAgIChjbGljayk9XCJ0byhtLnVybClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgbnotaWNvbiBbbnpUeXBlXT1cIm0uaWNvblwiIGNsYXNzPVwibXItc21cIj48L2k+XG4gICAgICAgICAge3sgbS5uYW1lIHwgaTE4biB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGxpIG56LW1lbnUtZGl2aWRlcj48L2xpPlxuICAgICAgICA8ZGl2IGRhdGEtZXZlbnQtaWQ9XCJfbmF2X3VzZXJcIiBkYXRhLW5hbWU9XCLms6jplIDnmbvlvZVcIiBuei1tZW51LWl0ZW0gKGNsaWNrKT1cImxvZ291dCgpXCI+XG4gICAgICAgICAgPGkgbnotaWNvbiBuelR5cGU9XCJsb2dvdXRcIiBjbGFzcz1cIm1yLXNtXCI+PC9pPlxuICAgICAgICAgIHt7ICdsb2dvdXQnIHwgaTE4biB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbnotZHJvcGRvd24tbWVudT5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgWXVuemFpVXNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgY29uZmlnOiBZdW56YWlCdXNpbmVzc0NvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIG1zZzogTnpNZXNzYWdlU2VydmljZSxcbiAgICBASW5qZWN0KFlBX1NFUlZJQ0VfVE9LRU4pIHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBJVG9rZW5TZXJ2aWNlLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNvbmZpZyA9IG1lcmdlQmlzQ29uZmlnKGNvbmZpZ1NlcnZpY2UpO1xuICB9XG5cbiAgaWNvbjogc3RyaW5nID0gJyc7XG4gIHVzZXJuYW1lOiBzdHJpbmcgPSAnJztcbiAgbWVudXM6IFVzZXJMaW5rW10gPSBbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBwcm9qZWN0SW5mbyA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3Byb2plY3RfaW5mbycsIHsgbW9kZTogJ25vbmUnIH0pO1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el91c2VyJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgdGhpcy51c2VybmFtZSA9IHVzZXIucmVhbG5hbWUgPyB1c2VyLnJlYWxuYW1lIDogJ+acquWRveWQjSc7XG4gICAgdGhpcy5pY29uID0gdXNlci5hdmF0YXJJZFxuICAgICAgPyBgJHt0aGlzLmNvbmZpZy5iYXNlVXJsfS9maWxlY2VudGVyL2ZpbGUvJHt1c2VyLmF2YXRhcklkfWBcbiAgICAgIDogYC4vYXNzZXRzL3RtcC9pbWcvYXZhdGFyLmpwZ2A7XG4gICAgdGhpcy5tZW51cyA9IHByb2plY3RJbmZvLnByb2ZpbGVMaXN0O1xuICB9XG5cbiAgbG9nb3V0KCk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgIHRoaXMudG9rZW5TZXJ2aWNlLmNsZWFyKCk7XG4gICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuYmFzZVVybH0vY2FzLXByb3h5L2FwcC9sb2dvdXRgO1xuICB9XG5cbiAgdG8oaHJlZjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGhyZWYpIHtcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykub3BlbihocmVmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tc2cuZXJyb3IoJ+ivpeiPnOWNleayoeaciemFjee9rumTvuaOpSEnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { deepCopy, log } from '@yelon/util';
|
|
3
|
-
import { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@yelon/util";
|
|
6
|
-
import * as i2 from "@yelon/cache";
|
|
7
|
-
import * as i3 from "@angular/router";
|
|
8
|
-
export class ActGuard {
|
|
9
|
-
constructor(configService, cacheService, pathToRegexp, router) {
|
|
10
|
-
this.configService = configService;
|
|
11
|
-
this.cacheService = cacheService;
|
|
12
|
-
this.pathToRegexp = pathToRegexp;
|
|
13
|
-
this.router = router;
|
|
14
|
-
this.bis = BUSINESS_DEFAULT_CONFIG;
|
|
15
|
-
this.menus = [];
|
|
16
|
-
this.links = [];
|
|
17
|
-
log('act: ');
|
|
18
|
-
this.bis = mergeBisConfig(this.configService);
|
|
19
|
-
log('act: config ', this.bis);
|
|
20
|
-
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
21
|
-
log('act: user ', user);
|
|
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
|
-
canActivate(_, state) {
|
|
28
|
-
log('act: can activate ', state);
|
|
29
|
-
if (this.preHandle(state)) {
|
|
30
|
-
return true;
|
|
31
|
-
}
|
|
32
|
-
log('act: can activate child prehandle success');
|
|
33
|
-
let canactivate = false;
|
|
34
|
-
this.links.forEach((link) => {
|
|
35
|
-
const regexp = this.pathToRegexp.stringToRegexp(link, null, null);
|
|
36
|
-
log(`act: ${link} test ${state.url.split('?')[0]}`);
|
|
37
|
-
if (regexp.test(state.url.split('?')[0])) {
|
|
38
|
-
canactivate = true;
|
|
39
|
-
log(`act: test value ${canactivate}`);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
if (canactivate) {
|
|
44
|
-
log(`act: test sucess`);
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
log(`act: test error`);
|
|
49
|
-
this.router.navigate(['displayIndex']);
|
|
50
|
-
return false;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
canActivateChild(_, state) {
|
|
54
|
-
log('act: can activate child ', state);
|
|
55
|
-
if (this.preHandle(state)) {
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
log('act: can activate child prehandle success');
|
|
59
|
-
let canactivate = false;
|
|
60
|
-
this.links.forEach((link) => {
|
|
61
|
-
const regexp = this.pathToRegexp.stringToRegexp(link, null, null);
|
|
62
|
-
if (regexp.test(state.url.split('?')[0])) {
|
|
63
|
-
log(`act: ${link} test ${state.url.split('?')[0]}`);
|
|
64
|
-
canactivate = true;
|
|
65
|
-
log(`act: test value ${canactivate}`);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
if (canactivate) {
|
|
70
|
-
log(`act: test sucess`);
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
log(`act: test error`);
|
|
75
|
-
this.router.navigate(['displayIndex']);
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
preHandle(state) {
|
|
80
|
-
return (state.url.includes('error') ||
|
|
81
|
-
state.url.includes('exception') ||
|
|
82
|
-
state.url.includes('displayIndex') ||
|
|
83
|
-
state.url === '' ||
|
|
84
|
-
state.url === null ||
|
|
85
|
-
state.url === '/' ||
|
|
86
|
-
state.url.includes('iframePage'));
|
|
87
|
-
}
|
|
88
|
-
getAllLinks(menu, links) {
|
|
89
|
-
menu.forEach((sider) => {
|
|
90
|
-
if (sider.link) {
|
|
91
|
-
links.push(sider.link);
|
|
92
|
-
}
|
|
93
|
-
if (sider.children && sider.children.length > 0) {
|
|
94
|
-
this.getAllLinks(sider.children, links);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
ActGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActGuard, deps: [{ token: i1.YunzaiConfigService }, { token: i2.CacheService }, { token: i1.PathToRegexpService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
100
|
-
ActGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActGuard, providedIn: 'root' });
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ActGuard, decorators: [{
|
|
102
|
-
type: Injectable,
|
|
103
|
-
args: [{
|
|
104
|
-
providedIn: 'root'
|
|
105
|
-
}]
|
|
106
|
-
}], ctorParameters: function () { return [{ type: i1.YunzaiConfigService }, { type: i2.CacheService }, { type: i1.PathToRegexpService }, { type: i3.Router }]; } });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWFjdC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXVuemFpLWFjdC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBYTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFrRSxNQUFNLGFBQWEsQ0FBQztBQUc1RyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7OztBQUt2RSxNQUFNLE9BQU8sUUFBUTtJQUtuQixZQUNVLGFBQWtDLEVBQ2xDLFlBQTBCLEVBQzFCLFlBQWlDLEVBQ2pDLE1BQWM7UUFIZCxrQkFBYSxHQUFiLGFBQWEsQ0FBcUI7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFSaEIsUUFBRyxHQUF5Qix1QkFBdUIsQ0FBQztRQUNwRCxVQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUN4QixVQUFLLEdBQWEsRUFBRSxDQUFDO1FBUTNCLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxHQUFHLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxHQUFHLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixNQUFNLElBQUksR0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2RSxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FB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OztxR0F4R1UsUUFBUTt5R0FBUixRQUFRLGNBRlAsTUFBTTsyRkFFUCxRQUFRO2tCQUhwQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIENhbkFjdGl2YXRlLFxuICBDYW5BY3RpdmF0ZUNoaWxkLFxuICBSb3V0ZXIsXG4gIFJvdXRlclN0YXRlU25hcHNob3QsXG4gIFVybFRyZWVcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL2NhY2hlJztcbmltcG9ydCB7IE1lbnUsIFVzZXIgfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHsgZGVlcENvcHksIGxvZywgWXVuemFpQnVzaW5lc3NDb25maWcsIFl1bnphaUNvbmZpZ1NlcnZpY2UsIFBhdGhUb1JlZ2V4cFNlcnZpY2UgfSBmcm9tICdAeWVsb24vdXRpbCc7XG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5pbXBvcnQgeyBCVVNJTkVTU19ERUZBVUxUX0NPTkZJRywgbWVyZ2VCaXNDb25maWcgfSBmcm9tICcuL2Jpcy5jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBY3RHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlLCBDYW5BY3RpdmF0ZUNoaWxkIHtcbiAgcHJpdmF0ZSBiaXM6IFl1bnphaUJ1c2luZXNzQ29uZmlnID0gQlVTSU5FU1NfREVGQVVMVF9DT05GSUc7XG4gIHByaXZhdGUgbWVudXM6IE56U2FmZUFueVtdID0gW107XG4gIHByaXZhdGUgbGlua3M6IHN0cmluZ1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBZdW56YWlDb25maWdTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FjaGVTZXJ2aWNlOiBDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXRoVG9SZWdleHA6IFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBsb2coJ2FjdDogJyk7XG4gICAgdGhpcy5iaXMgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNvbmZpZ1NlcnZpY2UpO1xuICAgIGxvZygnYWN0OiBjb25maWcgJywgdGhpcy5iaXMpO1xuICAgIGNvbnN0IHVzZXI6IFVzZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el91c2VyJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgbG9nKCdhY3Q6IHVzZXIgJywgdXNlcik7XG4gICAgdGhpcy5tZW51cyA9IGRlZXBDb3B5KHVzZXIubWVudSkuZmlsdGVyKFxuICAgICAgKG06IE1lbnUpID0+IG0uc3lzdGVtQ29kZSAmJiBtLnN5c3RlbUNvZGUgPT09IHRoaXMuYmlzLnN5c3RlbUNvZGVcbiAgICApIGFzIE1lbnVbXTtcbiAgICBsb2coJ2FjdDogbWVudXMgJywgdGhpcy5tZW51cyk7XG4gICAgdGhpcy5nZXRBbGxMaW5rcyh0aGlzLm1lbnVzLCB0aGlzLmxpbmtzKTtcbiAgICBsb2coJ2FjdDogbGlua3MgJywgdGhpcy5saW5rcyk7XG4gIH1cblxuICBjYW5BY3RpdmF0ZShcbiAgICBfOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgbG9nKCdhY3Q6IGNhbiBhY3RpdmF0ZSAnLCBzdGF0ZSk7XG4gICAgaWYgKHRoaXMucHJlSGFuZGxlKHN0YXRlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxvZygnYWN0OiBjYW4gYWN0aXZhdGUgY2hpbGQgcHJlaGFuZGxlIHN1Y2Nlc3MnKTtcbiAgICBsZXQgY2FuYWN0aXZhdGUgPSBmYWxzZTtcbiAgICB0aGlzLmxpbmtzLmZvckVhY2goKGxpbms6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcmVnZXhwOiBSZWdFeHAgPSB0aGlzLnBhdGhUb1JlZ2V4cC5zdHJpbmdUb1JlZ2V4cChsaW5rLCBudWxsLCBudWxsKTtcbiAgICAgIGxvZyhgYWN0OiAke2xpbmt9IHRlc3QgJHtzdGF0ZS51cmwuc3BsaXQoJz8nKVswXX1gKTtcbiAgICAgIGlmIChyZWdleHAudGVzdChzdGF0ZS51cmwuc3BsaXQoJz8nKVswXSkpIHtcbiAgICAgICAgY2FuYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgICBsb2coYGFjdDogdGVzdCB2YWx1ZSAke2NhbmFjdGl2YXRlfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGNhbmFjdGl2YXRlKSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBzdWNlc3NgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBlcnJvcmApO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkaXNwbGF5SW5kZXgnXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2FuQWN0aXZhdGVDaGlsZChcbiAgICBfOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XG4gICk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgbG9nKCdhY3Q6IGNhbiBhY3RpdmF0ZSBjaGlsZCAnLCBzdGF0ZSk7XG4gICAgaWYgKHRoaXMucHJlSGFuZGxlKHN0YXRlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGxvZygnYWN0OiBjYW4gYWN0aXZhdGUgY2hpbGQgcHJlaGFuZGxlIHN1Y2Nlc3MnKTtcblxuICAgIGxldCBjYW5hY3RpdmF0ZSA9IGZhbHNlO1xuICAgIHRoaXMubGlua3MuZm9yRWFjaCgobGluazogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCByZWdleHA6IFJlZ0V4cCA9IHRoaXMucGF0aFRvUmVnZXhwLnN0cmluZ1RvUmVnZXhwKGxpbmssIG51bGwsIG51bGwpO1xuICAgICAgaWYgKHJlZ2V4cC50ZXN0KHN0YXRlLnVybC5zcGxpdCgnPycpWzBdKSkge1xuICAgICAgICBsb2coYGFjdDogJHtsaW5rfSB0ZXN0ICR7c3RhdGUudXJsLnNwbGl0KCc/JylbMF19YCk7XG4gICAgICAgIGNhbmFjdGl2YXRlID0gdHJ1ZTtcbiAgICAgICAgbG9nKGBhY3Q6IHRlc3QgdmFsdWUgJHtjYW5hY3RpdmF0ZX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChjYW5hY3RpdmF0ZSkge1xuICAgICAgbG9nKGBhY3Q6IHRlc3Qgc3VjZXNzYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKGBhY3Q6IHRlc3QgZXJyb3JgKTtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnZGlzcGxheUluZGV4J10pO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByZUhhbmRsZShzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBzdGF0ZS51cmwuaW5jbHVkZXMoJ2Vycm9yJykgfHxcbiAgICAgIHN0YXRlLnVybC5pbmNsdWRlcygnZXhjZXB0aW9uJykgfHxcbiAgICAgIHN0YXRlLnVybC5pbmNsdWRlcygnZGlzcGxheUluZGV4JykgfHxcbiAgICAgIHN0YXRlLnVybCA9PT0gJycgfHxcbiAgICAgIHN0YXRlLnVybCA9PT0gbnVsbCB8fFxuICAgICAgc3RhdGUudXJsID09PSAnLycgfHxcbiAgICAgIHN0YXRlLnVybC5pbmNsdWRlcygnaWZyYW1lUGFnZScpXG4gICAgKTtcbiAgfVxuXG4gIGdldEFsbExpbmtzKG1lbnU6IE1lbnVbXSwgbGlua3M6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgbWVudS5mb3JFYWNoKChzaWRlcjogTWVudSkgPT4ge1xuICAgICAgaWYgKHNpZGVyLmxpbmspIHtcbiAgICAgICAgbGlua3MucHVzaChzaWRlci5saW5rKTtcbiAgICAgIH1cbiAgICAgIGlmIChzaWRlci5jaGlsZHJlbiAmJiBzaWRlci5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuZ2V0QWxsTGlua3Moc2lkZXIuY2hpbGRyZW4sIGxpbmtzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { forkJoin, map, mergeAll, mergeMap, of } from 'rxjs';
|
|
3
|
-
import { YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
4
|
-
import { CacheService } from '@yelon/cache';
|
|
5
|
-
import { _HttpClient } from '@yelon/theme';
|
|
6
|
-
import { log, WINDOW, YunzaiConfigService } from '@yelon/util';
|
|
7
|
-
import { mergeBisConfig } from './bis.config';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
class YunzaiAuthService {
|
|
10
|
-
constructor(injector) {
|
|
11
|
-
this.injector = injector;
|
|
12
|
-
this.config = mergeBisConfig(this.configService);
|
|
13
|
-
}
|
|
14
|
-
get configService() {
|
|
15
|
-
return this.injector.get(YunzaiConfigService);
|
|
16
|
-
}
|
|
17
|
-
get tokenService() {
|
|
18
|
-
return this.injector.get(YA_SERVICE_TOKEN);
|
|
19
|
-
}
|
|
20
|
-
get httpClient() {
|
|
21
|
-
return this.injector.get(_HttpClient);
|
|
22
|
-
}
|
|
23
|
-
get cacheService() {
|
|
24
|
-
return this.injector.get(CacheService);
|
|
25
|
-
}
|
|
26
|
-
askToken() {
|
|
27
|
-
log('yz.auth.service: ', 'askToken');
|
|
28
|
-
if (this.config.loginForm) {
|
|
29
|
-
return this.fetchTokenByUP();
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
return this.fetchTokenByCas();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
fetchTokenByUP() {
|
|
36
|
-
log('yz.auth.service: ', 'fetchTokenByUP');
|
|
37
|
-
return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.config.loginForm).pipe(map((response) => {
|
|
38
|
-
const { access_token, expires_in, refresh_token, scope, token_type } = response;
|
|
39
|
-
return {
|
|
40
|
-
token: access_token,
|
|
41
|
-
expired: expires_in,
|
|
42
|
-
refreshToken: refresh_token,
|
|
43
|
-
tokenType: token_type,
|
|
44
|
-
scope
|
|
45
|
-
};
|
|
46
|
-
}));
|
|
47
|
-
}
|
|
48
|
-
fetchTokenByCas() {
|
|
49
|
-
log('yz.auth.service: ', 'fetchTokenByCas');
|
|
50
|
-
const uri = encodeURIComponent(this.injector.get(WINDOW).location.href);
|
|
51
|
-
return this.httpClient
|
|
52
|
-
.get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true×tamp=${new Date().getTime()}`)
|
|
53
|
-
.pipe(map((response) => {
|
|
54
|
-
switch (response.errcode) {
|
|
55
|
-
case 2000:
|
|
56
|
-
const { access_token, expires_in, refresh_token, scope, token_type } = response.data;
|
|
57
|
-
// 如果token不一致,清除缓存
|
|
58
|
-
const token = this.tokenService.get()?.token;
|
|
59
|
-
if (token && access_token && token !== access_token) {
|
|
60
|
-
this.cacheService.clear();
|
|
61
|
-
}
|
|
62
|
-
return {
|
|
63
|
-
token: access_token,
|
|
64
|
-
expired: expires_in,
|
|
65
|
-
refreshToken: refresh_token,
|
|
66
|
-
tokenType: token_type,
|
|
67
|
-
scope
|
|
68
|
-
};
|
|
69
|
-
case 2001:
|
|
70
|
-
this.injector.get(WINDOW).location.href = response.msg;
|
|
71
|
-
throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
|
|
72
|
-
default:
|
|
73
|
-
if (response.data) {
|
|
74
|
-
console.error(response.data);
|
|
75
|
-
throw Error(response.data);
|
|
76
|
-
}
|
|
77
|
-
else if (response.msg) {
|
|
78
|
-
console.error(response.msg);
|
|
79
|
-
throw Error(response.msg);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
console.error('cas unknown error');
|
|
83
|
-
throw Error('Unknown Error: Cas auth exception!');
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}));
|
|
87
|
-
}
|
|
88
|
-
login() {
|
|
89
|
-
log('yz.auth.service: ', 'login white login form->', this.config.loginForm);
|
|
90
|
-
return this.askToken().pipe(mergeMap(token => {
|
|
91
|
-
log('yz.auth.service: get token->', token);
|
|
92
|
-
this.configService.set('auth', {
|
|
93
|
-
token_send_key: 'Authorization',
|
|
94
|
-
token_send_template: `${token.tokenType} \${token}`,
|
|
95
|
-
token_send_place: 'header'
|
|
96
|
-
});
|
|
97
|
-
log('yz.auth.service: ', 'set token');
|
|
98
|
-
this.tokenService.set(token);
|
|
99
|
-
return this.cacheInit();
|
|
100
|
-
}), mergeAll());
|
|
101
|
-
}
|
|
102
|
-
cacheInit() {
|
|
103
|
-
log('yz.auth.service: ', 'cacheInit');
|
|
104
|
-
const tenant = this.cacheService.get('_yz_tenant', { mode: 'none' });
|
|
105
|
-
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
106
|
-
const header = this.cacheService.get('_yz_header', { mode: 'none' });
|
|
107
|
-
const project = this.cacheService.get('_yz_project_info', { mode: 'none' });
|
|
108
|
-
return forkJoin(of(user), of(header), of(project)).pipe(mergeMap(([u, h, p]) => {
|
|
109
|
-
let list = [];
|
|
110
|
-
// user cache
|
|
111
|
-
if (!u || !tenant) {
|
|
112
|
-
log('yz.auth.service: ', 'fetch user cache');
|
|
113
|
-
list.push(this.httpClient.get(`/auth/user`).pipe(map((user) => {
|
|
114
|
-
this.cacheService.set('_yz_tenant', user.tenantId);
|
|
115
|
-
this.cacheService.set('_yz_user', user.principal);
|
|
116
|
-
})));
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
log('yz.auth.service: ', 'user recache');
|
|
120
|
-
list.push(of(() => { }));
|
|
121
|
-
}
|
|
122
|
-
// header cache
|
|
123
|
-
if (!h) {
|
|
124
|
-
log('yz.auth.service: ', 'fetch header cache');
|
|
125
|
-
list.push(this.httpClient.get(`/auth/allheader/v2`).pipe(map((header) => {
|
|
126
|
-
this.cacheService.set('_yz_header', header.data);
|
|
127
|
-
})));
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
log('yz.auth.service: ', 'header recache');
|
|
131
|
-
list.push(of(() => { }));
|
|
132
|
-
}
|
|
133
|
-
// project cache
|
|
134
|
-
if (!p) {
|
|
135
|
-
log('yz.auth.service: ', 'fetch project cache');
|
|
136
|
-
list.push(this.httpClient.get(`/app-manager/project/info`).pipe(map((info) => {
|
|
137
|
-
this.cacheService.set('_yz_project_info', info.data);
|
|
138
|
-
})));
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
log('yz.auth.service: ', 'project recache');
|
|
142
|
-
list.push(of(() => { }));
|
|
143
|
-
}
|
|
144
|
-
return forkJoin(list);
|
|
145
|
-
}));
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
YunzaiAuthService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: YunzaiAuthService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
149
|
-
YunzaiAuthService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: YunzaiAuthService, providedIn: 'root' });
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: YunzaiAuthService, decorators: [{
|
|
151
|
-
type: Injectable,
|
|
152
|
-
args: [{ providedIn: 'root' }]
|
|
153
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
154
|
-
export { YunzaiAuthService as YzAuthService, YunzaiAuthService };
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWF1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXVuemFpLWF1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXpFLE9BQU8sRUFBOEIsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUF3QixtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUU5QyxNQUNNLGlCQUFpQjtJQUdyQixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBWSxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElB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QyxFQUFFLENBQU0sR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM5QjtZQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs4R0FsS0csaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FERyxNQUFNOzJGQUMxQixpQkFBaUI7a0JBRHRCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXNLbEMsT0FBTyxFQUFFLGlCQUFpQixJQUFJLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBtYXAsIG1lcmdlQWxsLCBtZXJnZU1hcCwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSVRva2VuTW9kZWwsIElUb2tlblNlcnZpY2UsIFlBX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICdAeWVsb24vYXV0aCc7XG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICdAeWVsb24vY2FjaGUnO1xuaW1wb3J0IHsgX0h0dHBDbGllbnQgfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHsgbG9nLCBXSU5ET1csIFl1bnphaUJ1c2luZXNzQ29uZmlnLCBZdW56YWlDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL3V0aWwnO1xuXG5pbXBvcnQgeyBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4vYmlzLmNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5jbGFzcyBZdW56YWlBdXRoU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnOiBZdW56YWlCdXNpbmVzc0NvbmZpZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHRoaXMuY29uZmlnID0gbWVyZ2VCaXNDb25maWcodGhpcy5jb25maWdTZXJ2aWNlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNvbmZpZ1NlcnZpY2UoKTogWXVuemFpQ29uZmlnU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KFl1bnphaUNvbmZpZ1NlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdG9rZW5TZXJ2aWNlKCk6IElUb2tlblNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChZQV9TRVJWSUNFX1RPS0VOKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGh0dHBDbGllbnQoKTogX0h0dHBDbGllbnQge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChfSHR0cENsaWVudCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBjYWNoZVNlcnZpY2UoKTogQ2FjaGVTZXJ2aWNlIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoQ2FjaGVTZXJ2aWNlKTtcbiAgfVxuXG4gIGFza1Rva2VuKCk6IE9ic2VydmFibGU8SVRva2VuTW9kZWw+IHtcbiAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ2Fza1Rva2VuJyk7XG4gICAgaWYgKHRoaXMuY29uZmlnLmxvZ2luRm9ybSkge1xuICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hUb2tlbkJ5VVAoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hUb2tlbkJ5Q2FzKCk7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hUb2tlbkJ5VVAoKTogT2JzZXJ2YWJsZTxJVG9rZW5Nb2RlbD4ge1xuICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnZmV0Y2hUb2tlbkJ5VVAnKTtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoYC9hdXRoL29hdXRoL3Rva2VuP19hbGxvd19hbm9ueW1vdXM9dHJ1ZWAsIHRoaXMuY29uZmlnLmxvZ2luRm9ybSkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB7IGFjY2Vzc190b2tlbiwgZXhwaXJlc19pbiwgcmVmcmVzaF90b2tlbiwgc2NvcGUsIHRva2VuX3R5cGUgfSA9IHJlc3BvbnNlO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRva2VuOiBhY2Nlc3NfdG9rZW4sXG4gICAgICAgICAgZXhwaXJlZDogZXhwaXJlc19pbixcbiAgICAgICAgICByZWZyZXNoVG9rZW46IHJlZnJlc2hfdG9rZW4sXG4gICAgICAgICAgdG9rZW5UeXBlOiB0b2tlbl90eXBlLFxuICAgICAgICAgIHNjb3BlXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBmZXRjaFRva2VuQnlDYXMoKTogT2JzZXJ2YWJsZTxJVG9rZW5Nb2RlbD4ge1xuICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnZmV0Y2hUb2tlbkJ5Q2FzJyk7XG4gICAgY29uc3QgdXJpID0gZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaW5qZWN0b3IuZ2V0KFdJTkRPVykubG9jYXRpb24uaHJlZik7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudFxuICAgICAgLmdldChgL2Nhcy1wcm94eS9hcHAvdmFsaWRhdGVfZnVsbD9jYWxsYmFjaz0ke3VyaX0mX2FsbG93X2Fub255bW91cz10cnVlJnRpbWVzdGFtcD0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgc3dpdGNoIChyZXNwb25zZS5lcnJjb2RlKSB7XG4gICAgICAgICAgICBjYXNlIDIwMDA6XG4gICAgICAgICAgICAgIGNvbnN0IHsgYWNjZXNzX3Rva2VuLCBleHBpcmVzX2luLCByZWZyZXNoX3Rva2VuLCBzY29wZSwgdG9rZW5fdHlwZSB9ID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgLy8g5aaC5p6cdG9rZW7kuI3kuIDoh7TvvIzmuIXpmaTnvJPlrZhcbiAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuU2VydmljZS5nZXQoKT8udG9rZW47XG4gICAgICAgICAgICAgIGlmICh0b2tlbiAmJiBhY2Nlc3NfdG9rZW4gJiYgdG9rZW4gIT09IGFjY2Vzc190b2tlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0b2tlbjogYWNjZXNzX3Rva2VuLFxuICAgICAgICAgICAgICAgIGV4cGlyZWQ6IGV4cGlyZXNfaW4sXG4gICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuOiByZWZyZXNoX3Rva2VuLFxuICAgICAgICAgICAgICAgIHRva2VuVHlwZTogdG9rZW5fdHlwZSxcbiAgICAgICAgICAgICAgICBzY29wZVxuICAgICAgICAgICAgICB9IGFzIElUb2tlbk1vZGVsO1xuICAgICAgICAgICAgY2FzZSAyMDAxOlxuICAgICAgICAgICAgICB0aGlzLmluamVjdG9yLmdldChXSU5ET1cpLmxvY2F0aW9uLmhyZWYgPSByZXNwb25zZS5tc2c7XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKFwiQ29va2llIEVycm9yOiBDYW4ndCBmaW5kIENhcyBDb29raWUsU28ganVtcCB0byBsb2dpbiFcIik7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UubXNnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5tc2cpO1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHJlc3BvbnNlLm1zZyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignY2FzIHVua25vd24gZXJyb3InKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignVW5rbm93biBFcnJvcjogQ2FzIGF1dGggZXhjZXB0aW9uIScpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIGxvZ2luKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnbG9naW4gd2hpdGUgbG9naW4gZm9ybS0+JywgdGhpcy5jb25maWcubG9naW5Gb3JtKTtcbiAgICByZXR1cm4gdGhpcy5hc2tUb2tlbigpLnBpcGUoXG4gICAgICBtZXJnZU1hcCh0b2tlbiA9PiB7XG4gICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiBnZXQgdG9rZW4tPicsIHRva2VuKTtcbiAgICAgICAgdGhpcy5jb25maWdTZXJ2aWNlLnNldCgnYXV0aCcsIHtcbiAgICAgICAgICB0b2tlbl9zZW5kX2tleTogJ0F1dGhvcml6YXRpb24nLFxuICAgICAgICAgIHRva2VuX3NlbmRfdGVtcGxhdGU6IGAke3Rva2VuLnRva2VuVHlwZX0gXFwke3Rva2VufWAsXG4gICAgICAgICAgdG9rZW5fc2VuZF9wbGFjZTogJ2hlYWRlcidcbiAgICAgICAgfSk7XG4gICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnc2V0IHRva2VuJyk7XG4gICAgICAgIHRoaXMudG9rZW5TZXJ2aWNlLnNldCh0b2tlbik7XG4gICAgICAgIHJldHVybiB0aGlzLmNhY2hlSW5pdCgpO1xuICAgICAgfSksXG4gICAgICBtZXJnZUFsbCgpXG4gICAgKTtcbiAgfVxuXG4gIGNhY2hlSW5pdCgpOiBPYnNlcnZhYmxlPHZvaWRbXT4ge1xuICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnY2FjaGVJbml0Jyk7XG4gICAgY29uc3QgdGVuYW50ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KCdfeXpfdGVuYW50JywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuY2FjaGVTZXJ2aWNlLmdldCgnX3l6X3VzZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICBjb25zdCBoZWFkZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el9oZWFkZXInLCB7IG1vZGU6ICdub25lJyB9KTtcbiAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5jYWNoZVNlcnZpY2UuZ2V0KCdfeXpfcHJvamVjdF9pbmZvJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgcmV0dXJuIGZvcmtKb2luKG9mKHVzZXIpLCBvZihoZWFkZXIpLCBvZihwcm9qZWN0KSkucGlwZShcbiAgICAgIG1lcmdlTWFwKChbdSwgaCwgcF0pID0+IHtcbiAgICAgICAgbGV0IGxpc3QgPSBbXTtcbiAgICAgICAgLy8gdXNlciBjYWNoZVxuICAgICAgICBpZiAoIXUgfHwgIXRlbmFudCkge1xuICAgICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnZmV0Y2ggdXNlciBjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChcbiAgICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hdXRoL3VzZXJgKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnNldCgnX3l6X3RlbmFudCcsIHVzZXIudGVuYW50SWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnNldCgnX3l6X3VzZXInLCB1c2VyLnByaW5jaXBhbCk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coJ3l6LmF1dGguc2VydmljZTogJywgJ3VzZXIgcmVjYWNoZScpO1xuICAgICAgICAgIGxpc3QucHVzaChvZjxhbnk+KCgpID0+IHt9KSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaGVhZGVyIGNhY2hlXG4gICAgICAgIGlmICghaCkge1xuICAgICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnZmV0Y2ggaGVhZGVyIGNhY2hlJyk7XG4gICAgICAgICAgbGlzdC5wdXNoKFxuICAgICAgICAgICAgdGhpcy5odHRwQ2xpZW50LmdldChgL2F1dGgvYWxsaGVhZGVyL3YyYCkucGlwZShcbiAgICAgICAgICAgICAgbWFwKChoZWFkZXI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnNldCgnX3l6X2hlYWRlcicsIGhlYWRlci5kYXRhKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAnaGVhZGVyIHJlY2FjaGUnKTtcbiAgICAgICAgICBsaXN0LnB1c2gob2Y8YW55PigoKSA9PiB7fSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByb2plY3QgY2FjaGVcbiAgICAgICAgaWYgKCFwKSB7XG4gICAgICAgICAgbG9nKCd5ei5hdXRoLnNlcnZpY2U6ICcsICdmZXRjaCBwcm9qZWN0IGNhY2hlJyk7XG4gICAgICAgICAgbGlzdC5wdXNoKFxuICAgICAgICAgICAgdGhpcy5odHRwQ2xpZW50LmdldChgL2FwcC1tYW5hZ2VyL3Byb2plY3QvaW5mb2ApLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgoaW5mbzogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2Uuc2V0KCdfeXpfcHJvamVjdF9pbmZvJywgaW5mby5kYXRhKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZygneXouYXV0aC5zZXJ2aWNlOiAnLCAncHJvamVjdCByZWNhY2hlJyk7XG4gICAgICAgICAgbGlzdC5wdXNoKG9mPGFueT4oKCkgPT4ge30pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ya0pvaW4obGlzdCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IHsgWXVuemFpQXV0aFNlcnZpY2UgYXMgWXpBdXRoU2VydmljZSwgWXVuemFpQXV0aFNlcnZpY2UgfTtcbiJdfQ==
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
3
|
-
import { NgModule } from '@angular/core';
|
|
4
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { RouterModule } from '@angular/router';
|
|
6
|
-
import { YunzaiSharedYelonModule, YunzaiSharedZorroModule } from '@yelon/bcs';
|
|
7
|
-
import { YUNZAI_THEME_BTN_KEYS } from '@yelon/theme/theme-btn';
|
|
8
|
-
import { YzLayoutBasicComponent } from './layout-basic/layout-basic.component';
|
|
9
|
-
import { LayoutNavApplicationComponent, LayoutNavGroupComponent, LayoutNavTileComponent } from './layout-nav';
|
|
10
|
-
import { YunzaiClearStorageComponent, YunzaiFullScreenComponent, YunzaiI18NComponent, YunzaiNotifyComponent, YunzaiThemBtnComponent, YunzaiUserComponent } from './widgets';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
const WIDGETS = [
|
|
13
|
-
YunzaiClearStorageComponent,
|
|
14
|
-
YunzaiFullScreenComponent,
|
|
15
|
-
YunzaiI18NComponent,
|
|
16
|
-
YunzaiNotifyComponent,
|
|
17
|
-
YunzaiThemBtnComponent,
|
|
18
|
-
YunzaiUserComponent
|
|
19
|
-
];
|
|
20
|
-
const LAYOUT_NAV_COMPONENTS = [LayoutNavApplicationComponent, LayoutNavGroupComponent, LayoutNavTileComponent];
|
|
21
|
-
const COMPONENTS = [YzLayoutBasicComponent];
|
|
22
|
-
export class YunzaiLayoutModule {
|
|
23
|
-
}
|
|
24
|
-
YunzaiLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: YunzaiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
25
|
-
YunzaiLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: YunzaiLayoutModule, declarations: [YzLayoutBasicComponent, YunzaiClearStorageComponent,
|
|
26
|
-
YunzaiFullScreenComponent,
|
|
27
|
-
YunzaiI18NComponent,
|
|
28
|
-
YunzaiNotifyComponent,
|
|
29
|
-
YunzaiThemBtnComponent,
|
|
30
|
-
YunzaiUserComponent, LayoutNavApplicationComponent, LayoutNavGroupComponent, LayoutNavTileComponent], imports: [HttpClientModule,
|
|
31
|
-
CommonModule,
|
|
32
|
-
FormsModule,
|
|
33
|
-
RouterModule,
|
|
34
|
-
ReactiveFormsModule,
|
|
35
|
-
YunzaiSharedYelonModule,
|
|
36
|
-
YunzaiSharedZorroModule], exports: [YzLayoutBasicComponent, YunzaiClearStorageComponent,
|
|
37
|
-
YunzaiFullScreenComponent,
|
|
38
|
-
YunzaiI18NComponent,
|
|
39
|
-
YunzaiNotifyComponent,
|
|
40
|
-
YunzaiThemBtnComponent,
|
|
41
|
-
YunzaiUserComponent, LayoutNavApplicationComponent, LayoutNavGroupComponent, LayoutNavTileComponent] });
|
|
42
|
-
YunzaiLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: YunzaiLayoutModule, providers: [
|
|
43
|
-
{
|
|
44
|
-
provide: YUNZAI_THEME_BTN_KEYS,
|
|
45
|
-
useValue: 'site-theme'
|
|
46
|
-
}
|
|
47
|
-
], imports: [HttpClientModule,
|
|
48
|
-
CommonModule,
|
|
49
|
-
FormsModule,
|
|
50
|
-
RouterModule,
|
|
51
|
-
ReactiveFormsModule,
|
|
52
|
-
YunzaiSharedYelonModule,
|
|
53
|
-
YunzaiSharedZorroModule] });
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: YunzaiLayoutModule, decorators: [{
|
|
55
|
-
type: NgModule,
|
|
56
|
-
args: [{
|
|
57
|
-
imports: [
|
|
58
|
-
HttpClientModule,
|
|
59
|
-
CommonModule,
|
|
60
|
-
FormsModule,
|
|
61
|
-
RouterModule,
|
|
62
|
-
ReactiveFormsModule,
|
|
63
|
-
YunzaiSharedYelonModule,
|
|
64
|
-
YunzaiSharedZorroModule
|
|
65
|
-
],
|
|
66
|
-
providers: [
|
|
67
|
-
{
|
|
68
|
-
provide: YUNZAI_THEME_BTN_KEYS,
|
|
69
|
-
useValue: 'site-theme'
|
|
70
|
-
}
|
|
71
|
-
],
|
|
72
|
-
declarations: [...COMPONENTS, ...WIDGETS, ...LAYOUT_NAV_COMPONENTS],
|
|
73
|
-
exports: [...COMPONENTS, ...WIDGETS, ...LAYOUT_NAV_COMPONENTS]
|
|
74
|
-
}]
|
|
75
|
-
}] });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWxheW91dC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9iaXMvbGF5b3V0L3l1bnphaS1sYXlvdXQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RyxPQUFPLEVBQ0wsMkJBQTJCLEVBQzNCLHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDcEIsTUFBTSxXQUFXLENBQUM7O0FBRW5CLE1BQU0sT0FBTyxHQUFHO0lBQ2QsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6QixtQkFBbUI7SUFDbkIscUJBQXFCO0lBQ3JCLHNCQUFzQjtJQUN0QixtQkFBbUI7Q0FDcEIsQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyw2QkFBNkIsRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBRS9HLE1BQU0sVUFBVSxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQXFCNUMsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQXJCWCxzQkFBc0IsRUFWeEMsMkJBQTJCO1FBQzNCLHlCQUF5QjtRQUN6QixtQkFBbUI7UUFDbkIscUJBQXFCO1FBQ3JCLHNCQUFzQjtRQUN0QixtQkFBbUIsRUFHVSw2QkFBNkIsRUFBRSx1QkFBdUIsRUFBRSxzQkFBc0IsYUFNekcsZ0JBQWdCO1FBQ2hCLFlBQVk7UUFDWixXQUFXO1FBQ1gsWUFBWTtRQUNaLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsdUJBQXVCLGFBVlAsc0JBQXNCLEVBVnhDLDJCQUEyQjtRQUMzQix5QkFBeUI7UUFDekIsbUJBQW1CO1FBQ25CLHFCQUFxQjtRQUNyQixzQkFBc0I7UUFDdEIsbUJBQW1CLEVBR1UsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsc0JBQXNCO2dIQXVCaEcsa0JBQWtCLGFBVGxCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUscUJBQXFCO1lBQzlCLFFBQVEsRUFBRSxZQUFZO1NBQ3ZCO0tBQ0YsWUFiQyxnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFdBQVc7UUFDWCxZQUFZO1FBQ1osbUJBQW1CO1FBQ25CLHVCQUF1QjtRQUN2Qix1QkFBdUI7MkZBV2Qsa0JBQWtCO2tCQW5COUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3FCQUN4QjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLFlBQVk7eUJBQ3ZCO3FCQUNGO29CQUNELFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcscUJBQXFCLENBQUM7b0JBQ25FLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcscUJBQXFCLENBQUM7aUJBQy9EIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBZdW56YWlTaGFyZWRZZWxvbk1vZHVsZSwgWXVuemFpU2hhcmVkWm9ycm9Nb2R1bGUgfSBmcm9tICdAeWVsb24vYmNzJztcbmltcG9ydCB7IFlVTlpBSV9USEVNRV9CVE5fS0VZUyB9IGZyb20gJ0B5ZWxvbi90aGVtZS90aGVtZS1idG4nO1xuXG5pbXBvcnQgeyBZekxheW91dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQtYmFzaWMvbGF5b3V0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYXlvdXROYXZBcHBsaWNhdGlvbkNvbXBvbmVudCwgTGF5b3V0TmF2R3JvdXBDb21wb25lbnQsIExheW91dE5hdlRpbGVDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1uYXYnO1xuaW1wb3J0IHtcbiAgWXVuemFpQ2xlYXJTdG9yYWdlQ29tcG9uZW50LFxuICBZdW56YWlGdWxsU2NyZWVuQ29tcG9uZW50LFxuICBZdW56YWlJMThOQ29tcG9uZW50LFxuICBZdW56YWlOb3RpZnlDb21wb25lbnQsXG4gIFl1bnphaVRoZW1CdG5Db21wb25lbnQsXG4gIFl1bnphaVVzZXJDb21wb25lbnRcbn0gZnJvbSAnLi93aWRnZXRzJztcblxuY29uc3QgV0lER0VUUyA9IFtcbiAgWXVuemFpQ2xlYXJTdG9yYWdlQ29tcG9uZW50LFxuICBZdW56YWlGdWxsU2NyZWVuQ29tcG9uZW50LFxuICBZdW56YWlJMThOQ29tcG9uZW50LFxuICBZdW56YWlOb3RpZnlDb21wb25lbnQsXG4gIFl1bnphaVRoZW1CdG5Db21wb25lbnQsXG4gIFl1bnphaVVzZXJDb21wb25lbnRcbl07XG5cbmNvbnN0IExBWU9VVF9OQVZfQ09NUE9ORU5UUyA9IFtMYXlvdXROYXZBcHBsaWNhdGlvbkNvbXBvbmVudCwgTGF5b3V0TmF2R3JvdXBDb21wb25lbnQsIExheW91dE5hdlRpbGVDb21wb25lbnRdO1xuXG5jb25zdCBDT01QT05FTlRTID0gW1l6TGF5b3V0QmFzaWNDb21wb25lbnRdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgWXVuemFpU2hhcmVkWWVsb25Nb2R1bGUsXG4gICAgWXVuemFpU2hhcmVkWm9ycm9Nb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogWVVOWkFJX1RIRU1FX0JUTl9LRVlTLFxuICAgICAgdXNlVmFsdWU6ICdzaXRlLXRoZW1lJ1xuICAgIH1cbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbLi4uQ09NUE9ORU5UUywgLi4uV0lER0VUUywgLi4uTEFZT1VUX05BVl9DT01QT05FTlRTXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVFMsIC4uLldJREdFVFMsIC4uLkxBWU9VVF9OQVZfQ09NUE9ORU5UU11cbn0pXG5leHBvcnQgY2xhc3MgWXVuemFpTGF5b3V0TW9kdWxlIHt9XG4iXX0=
|