@yelon/bis 17.2.1 → 17.2.3
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/config/index.d.ts +5 -0
- package/config/public_api.d.ts +1 -0
- package/esm2022/bis.mjs +2 -2
- package/esm2022/{layout → config}/bis.config.mjs +1 -1
- package/esm2022/config/config.mjs +5 -0
- package/esm2022/config/public_api.mjs +2 -0
- package/esm2022/layout/layout-basic.component.mjs +376 -0
- package/esm2022/layout/layout-nav-application.component.mjs +368 -0
- package/esm2022/layout/layout-nav-group.component.mjs +160 -0
- package/esm2022/layout/layout-nav-tile.component.mjs +15 -0
- package/esm2022/layout/layout.module.mjs +54 -0
- package/esm2022/layout/public_api.mjs +6 -14
- package/esm2022/public_api.mjs +9 -2
- package/esm2022/src/bis.module.mjs +17 -0
- package/esm2022/src/helper.mjs +45 -0
- package/esm2022/src/provide.mjs +8 -0
- package/esm2022/src/refresh-token.mjs +79 -0
- package/esm2022/src/startup.service.mjs +184 -0
- package/esm2022/src/yunzai-act.guard.mjs +88 -0
- package/esm2022/src/yunzai-analysis-addon.guard.mjs +99 -0
- package/esm2022/src/yunzai-default.interceptor.mjs +63 -0
- package/esm2022/yunzai-widgets/public_api.mjs +7 -0
- package/esm2022/yunzai-widgets/yunzai-clear-storage.component.mjs +47 -0
- package/esm2022/yunzai-widgets/yunzai-fullscreen.component.mjs +47 -0
- package/esm2022/yunzai-widgets/yunzai-i18n.component.mjs +139 -0
- package/esm2022/yunzai-widgets/yunzai-notify.component.mjs +180 -0
- package/esm2022/yunzai-widgets/yunzai-user.component.mjs +120 -0
- package/esm2022/yunzai-widgets/yunzai-widget.module.mjs +62 -0
- package/esm2022/yunzai-widgets/yunzai-widgets.mjs +5 -0
- package/fesm2022/bis.mjs +554 -1
- package/fesm2022/bis.mjs.map +1 -1
- package/fesm2022/config.mjs +21 -0
- package/fesm2022/config.mjs.map +1 -0
- package/fesm2022/layout.mjs +396 -2781
- package/fesm2022/layout.mjs.map +1 -1
- package/fesm2022/yunzai-widgets.mjs +563 -0
- package/fesm2022/yunzai-widgets.mjs.map +1 -0
- package/index.d.ts +4 -0
- package/layout/{layout-basic/layout-basic.component.d.ts → layout-basic.component.d.ts} +12 -8
- package/layout/layout-nav-application.component.d.ts +26 -0
- package/layout/layout-nav-group.component.d.ts +14 -0
- package/layout/layout-nav-tile.component.d.ts +5 -0
- package/layout/layout.module.d.ts +18 -0
- package/layout/public_api.d.ts +5 -13
- package/package.json +40 -11
- package/public_api.d.ts +8 -2
- package/src/bis.module.d.ts +8 -0
- package/src/helper.d.ts +16 -0
- package/src/provide.d.ts +2 -0
- package/src/refresh-token.d.ts +6 -0
- package/src/startup.service.d.ts +24 -0
- package/src/yunzai-default.interceptor.d.ts +2 -0
- package/yunzai-widgets/index.d.ts +5 -0
- package/{layout/widgets/index.d.ts → yunzai-widgets/public_api.d.ts} +2 -2
- package/yunzai-widgets/yunzai-clear-storage.component.d.ts +8 -0
- package/yunzai-widgets/yunzai-fullscreen.component.d.ts +8 -0
- package/yunzai-widgets/yunzai-i18n.component.d.ts +19 -0
- package/yunzai-widgets/yunzai-notify.component.d.ts +25 -0
- package/yunzai-widgets/yunzai-user.component.d.ts +22 -0
- package/yunzai-widgets/yunzai-widget.module.d.ts +18 -0
- package/README.md +0 -23
- package/esm2022/index.mjs +0 -2
- package/esm2022/layout/html-names.mjs +0 -33
- package/esm2022/layout/icon/style-icons.mjs +0 -796
- package/esm2022/layout/layout-basic/index.mjs +0 -3
- package/esm2022/layout/layout-basic/interface.mjs +0 -2
- package/esm2022/layout/layout-basic/layout-basic.component.mjs +0 -368
- package/esm2022/layout/layout-nav/index.mjs +0 -4
- package/esm2022/layout/layout-nav/layout-nav-application.component.mjs +0 -382
- package/esm2022/layout/layout-nav/layout-nav-group.component.mjs +0 -122
- package/esm2022/layout/layout-nav/layout-nav-tile.component.mjs +0 -15
- package/esm2022/layout/widgets/index.mjs +0 -7
- package/esm2022/layout/widgets/yunzai-clear-storage.component.mjs +0 -44
- package/esm2022/layout/widgets/yunzai-fullscreen.component.mjs +0 -44
- package/esm2022/layout/widgets/yunzai-i18n.component.mjs +0 -140
- package/esm2022/layout/widgets/yunzai-notify.component.mjs +0 -185
- package/esm2022/layout/widgets/yunzai-theme-btn.component.mjs +0 -200
- package/esm2022/layout/widgets/yunzai-user.component.mjs +0 -129
- package/esm2022/layout/yunzai-act.guard.mjs +0 -88
- package/esm2022/layout/yunzai-analysis-addon.guard.mjs +0 -100
- package/esm2022/layout/yunzai-auth.service.mjs +0 -108
- package/esm2022/layout/yunzai-default.interceptor.mjs +0 -201
- package/esm2022/layout/yunzai-i18n.service.mjs +0 -107
- package/esm2022/layout/yunzai-lang.mjs +0 -114
- package/esm2022/layout/yunzai-layout.module.mjs +0 -118
- package/esm2022/layout/yunzai-startup.service.mjs +0 -152
- package/layout/html-names.d.ts +0 -31
- package/layout/icon/style-icons.d.ts +0 -1
- package/layout/layout-basic/index.d.ts +0 -2
- package/layout/layout-basic/interface.d.ts +0 -8
- package/layout/layout-nav/index.d.ts +0 -3
- package/layout/layout-nav/layout-nav-application.component.d.ts +0 -32
- package/layout/layout-nav/layout-nav-group.component.d.ts +0 -16
- package/layout/layout-nav/layout-nav-tile.component.d.ts +0 -6
- package/layout/widgets/yunzai-clear-storage.component.d.ts +0 -11
- package/layout/widgets/yunzai-fullscreen.component.d.ts +0 -8
- package/layout/widgets/yunzai-i18n.component.d.ts +0 -22
- package/layout/widgets/yunzai-notify.component.d.ts +0 -30
- package/layout/widgets/yunzai-theme-btn.component.d.ts +0 -32
- package/layout/widgets/yunzai-user.component.d.ts +0 -26
- package/layout/yunzai-auth.service.d.ts +0 -19
- package/layout/yunzai-default.interceptor.d.ts +0 -28
- package/layout/yunzai-i18n.service.d.ts +0 -27
- package/layout/yunzai-lang.d.ts +0 -12
- package/layout/yunzai-layout.module.d.ts +0 -30
- package/layout/yunzai-startup.service.d.ts +0 -34
- /package/{layout → config}/bis.config.d.ts +0 -0
- /package/{layout → src}/yunzai-act.guard.d.ts +0 -0
- /package/{layout → src}/yunzai-analysis-addon.guard.d.ts +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import { I18nPipe } from '@yelon/theme';
|
|
5
|
+
import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
|
|
6
|
+
import { NzFormModule } from 'ng-zorro-antd/form';
|
|
7
|
+
import { NzGridModule } from 'ng-zorro-antd/grid';
|
|
8
|
+
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
9
|
+
import { NzInputModule } from 'ng-zorro-antd/input';
|
|
10
|
+
import { NzTabsModule } from 'ng-zorro-antd/tabs';
|
|
11
|
+
import { YunzaiLayoutBasicComponent } from './layout-basic.component';
|
|
12
|
+
import { YunzaiLayoutNavGroupComponent } from './layout-nav-group.component';
|
|
13
|
+
import { YunzaiLayoutNavTileComponent } from './layout-nav-tile.component';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
const COMPONENTS = [YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent];
|
|
16
|
+
export class YunzaiLayoutModule {
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
18
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, imports: [I18nPipe,
|
|
19
|
+
FormsModule,
|
|
20
|
+
NzFormModule,
|
|
21
|
+
NzInputModule,
|
|
22
|
+
CommonModule,
|
|
23
|
+
NzGridModule,
|
|
24
|
+
NzIconModule,
|
|
25
|
+
NzDropDownModule,
|
|
26
|
+
NzTabsModule, YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent], exports: [YunzaiLayoutNavTileComponent, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent] }); }
|
|
27
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, imports: [FormsModule,
|
|
28
|
+
NzFormModule,
|
|
29
|
+
NzInputModule,
|
|
30
|
+
CommonModule,
|
|
31
|
+
NzGridModule,
|
|
32
|
+
NzIconModule,
|
|
33
|
+
NzDropDownModule,
|
|
34
|
+
NzTabsModule, YunzaiLayoutNavGroupComponent, YunzaiLayoutBasicComponent] }); }
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiLayoutModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
imports: [
|
|
40
|
+
I18nPipe,
|
|
41
|
+
FormsModule,
|
|
42
|
+
NzFormModule,
|
|
43
|
+
NzInputModule,
|
|
44
|
+
CommonModule,
|
|
45
|
+
NzGridModule,
|
|
46
|
+
NzIconModule,
|
|
47
|
+
NzDropDownModule,
|
|
48
|
+
NzTabsModule,
|
|
49
|
+
...COMPONENTS
|
|
50
|
+
],
|
|
51
|
+
exports: COMPONENTS
|
|
52
|
+
}]
|
|
53
|
+
}] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQvbGF5b3V0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUUzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLDRCQUE0QixFQUFFLDZCQUE2QixFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFpQjdHLE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLFlBYjNCLFFBQVE7WUFDUixXQUFXO1lBQ1gsWUFBWTtZQUNaLGFBQWE7WUFDYixZQUFZO1lBQ1osWUFBWTtZQUNaLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsWUFBWSxFQVpJLDRCQUE0QixFQUFFLDZCQUE2QixFQUFFLDBCQUEwQixhQUF2Riw0QkFBNEIsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEI7K0dBaUI5RixrQkFBa0IsWUFaM0IsV0FBVztZQUNYLFlBQVk7WUFDWixhQUFhO1lBQ2IsWUFBWTtZQUNaLFlBQVk7WUFDWixZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLFlBQVksRUFaa0MsNkJBQTZCLEVBQUUsMEJBQTBCOzsyRkFpQjlGLGtCQUFrQjtrQkFmOUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsUUFBUTt3QkFDUixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osYUFBYTt3QkFDYixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osR0FBRyxVQUFVO3FCQUNkO29CQUNELE9BQU8sRUFBRSxVQUFVO2lCQUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IEkxOG5QaXBlIH0gZnJvbSAnQHllbG9uL3RoZW1lJztcbmltcG9ydCB7IE56RHJvcERvd25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2Ryb3Bkb3duJztcbmltcG9ydCB7IE56Rm9ybU1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvZm9ybSc7XG5pbXBvcnQgeyBOekdyaWRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2dyaWQnO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcbmltcG9ydCB7IE56SW5wdXRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2lucHV0JztcbmltcG9ydCB7IE56VGFic01vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdGFicyc7XG5cbmltcG9ydCB7IFl1bnphaUxheW91dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IFl1bnphaUxheW91dE5hdkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQtbmF2LWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBZdW56YWlMYXlvdXROYXZUaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9sYXlvdXQtbmF2LXRpbGUuY29tcG9uZW50JztcblxuY29uc3QgQ09NUE9ORU5UUyA9IFtZdW56YWlMYXlvdXROYXZUaWxlQ29tcG9uZW50LCBZdW56YWlMYXlvdXROYXZHcm91cENvbXBvbmVudCwgWXVuemFpTGF5b3V0QmFzaWNDb21wb25lbnRdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgSTE4blBpcGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTnpGb3JtTW9kdWxlLFxuICAgIE56SW5wdXRNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE56R3JpZE1vZHVsZSxcbiAgICBOekljb25Nb2R1bGUsXG4gICAgTnpEcm9wRG93bk1vZHVsZSxcbiAgICBOelRhYnNNb2R1bGUsXG4gICAgLi4uQ09NUE9ORU5UU1xuICBdLFxuICBleHBvcnRzOiBDT01QT05FTlRTXG59KVxuZXhwb3J0IGNsYXNzIFl1bnphaUxheW91dE1vZHVsZSB7fVxuIl19
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
export * from './layout
|
|
2
|
-
export * from './layout-
|
|
3
|
-
export * from './
|
|
4
|
-
export * from './
|
|
5
|
-
export * from './
|
|
6
|
-
|
|
7
|
-
export * from './yunzai-default.interceptor';
|
|
8
|
-
export * from './yunzai-i18n.service';
|
|
9
|
-
export * from './yunzai-lang';
|
|
10
|
-
export * from './yunzai-layout.module';
|
|
11
|
-
export * from './yunzai-startup.service';
|
|
12
|
-
export * from './html-names';
|
|
13
|
-
export * from './yunzai-analysis-addon.guard';
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xheW91dC1iYXNpYyc7XG5leHBvcnQgKiBmcm9tICcuL2xheW91dC1uYXYnO1xuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzJztcbmV4cG9ydCAqIGZyb20gJy4vYmlzLmNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL3l1bnphaS1hY3QuZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi95dW56YWktYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4veXVuemFpLWRlZmF1bHQuaW50ZXJjZXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi95dW56YWktaTE4bi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4veXVuemFpLWxhbmcnO1xuZXhwb3J0ICogZnJvbSAnLi95dW56YWktbGF5b3V0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3l1bnphaS1zdGFydHVwLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9odG1sLW5hbWVzJztcbmV4cG9ydCAqIGZyb20gJy4veXVuemFpLWFuYWx5c2lzLWFkZG9uLmd1YXJkJztcbiJdfQ==
|
|
1
|
+
export * from './layout.module';
|
|
2
|
+
export * from './layout-basic.component';
|
|
3
|
+
export * from './layout-nav-application.component';
|
|
4
|
+
export * from './layout-nav-group.component';
|
|
5
|
+
export * from './layout-nav-tile.component';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNkJBQTZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xheW91dC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQtYmFzaWMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGF5b3V0LW5hdi1hcHBsaWNhdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXlvdXQtbmF2LWdyb3VwLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xheW91dC1uYXYtdGlsZS5jb21wb25lbnQnO1xuIl19
|
package/esm2022/public_api.mjs
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export * from './src/provide';
|
|
2
|
+
export * from './src/bis.module';
|
|
3
|
+
export * from './src/helper';
|
|
4
|
+
export * from './src/yunzai-default.interceptor';
|
|
5
|
+
export * from './src/refresh-token';
|
|
6
|
+
export * from './src/startup.service';
|
|
7
|
+
export * from './src/yunzai-analysis-addon.guard';
|
|
8
|
+
export * from './src/yunzai-act.guard';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zcmMvcHJvdmlkZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9iaXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2hlbHBlcic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy95dW56YWktZGVmYXVsdC5pbnRlcmNlcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9yZWZyZXNoLXRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL3N0YXJ0dXAuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy95dW56YWktYW5hbHlzaXMtYWRkb24uZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMveXVuemFpLWFjdC5ndWFyZCc7XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { YunzaiLayoutModule } from '@yelon/bis/layout';
|
|
3
|
+
import { YunzaiWidgetsModule } from '@yelon/bis/yunzai-widgets';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class BisModule {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BisModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.1", ngImport: i0, type: BisModule, imports: [YunzaiLayoutModule, YunzaiWidgetsModule], exports: [YunzaiLayoutModule, YunzaiWidgetsModule] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BisModule, imports: [YunzaiLayoutModule, YunzaiWidgetsModule, YunzaiLayoutModule, YunzaiWidgetsModule] }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: BisModule, decorators: [{
|
|
11
|
+
type: NgModule,
|
|
12
|
+
args: [{
|
|
13
|
+
imports: [YunzaiLayoutModule, YunzaiWidgetsModule],
|
|
14
|
+
exports: [YunzaiLayoutModule, YunzaiWidgetsModule]
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9zcmMvYmlzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUtoRSxNQUFNLE9BQU8sU0FBUzs4R0FBVCxTQUFTOytHQUFULFNBQVMsWUFIVixrQkFBa0IsRUFBRSxtQkFBbUIsYUFDdkMsa0JBQWtCLEVBQUUsbUJBQW1COytHQUV0QyxTQUFTLFlBSFYsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQ3ZDLGtCQUFrQixFQUFFLG1CQUFtQjs7MkZBRXRDLFNBQVM7a0JBSnJCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUM7b0JBQ2xELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDO2lCQUNuRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFl1bnphaUxheW91dE1vZHVsZSB9IGZyb20gJ0B5ZWxvbi9iaXMvbGF5b3V0JztcbmltcG9ydCB7IFl1bnphaVdpZGdldHNNb2R1bGUgfSBmcm9tICdAeWVsb24vYmlzL3l1bnphaS13aWRnZXRzJztcbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtZdW56YWlMYXlvdXRNb2R1bGUsIFl1bnphaVdpZGdldHNNb2R1bGVdLFxuICBleHBvcnRzOiBbWXVuemFpTGF5b3V0TW9kdWxlLCBZdW56YWlXaWRnZXRzTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBCaXNNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { inject } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
4
|
+
import { YUNZAI_I18N_TOKEN } from '@yelon/theme';
|
|
5
|
+
import { NzNotificationService } from 'ng-zorro-antd/notification';
|
|
6
|
+
export const CODEMESSAGE = {
|
|
7
|
+
200: '服务器成功返回请求的数据。',
|
|
8
|
+
201: '新建或修改数据成功。',
|
|
9
|
+
202: '一个请求已经进入后台排队(异步任务)。',
|
|
10
|
+
204: '删除数据成功。',
|
|
11
|
+
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
|
|
12
|
+
401: '用户没有权限(令牌、用户名、密码错误)。',
|
|
13
|
+
403: '用户得到授权,但是访问是被禁止的。',
|
|
14
|
+
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
|
|
15
|
+
406: '请求的格式不可得。',
|
|
16
|
+
410: '请求的资源被永久删除,且不会再得到的。',
|
|
17
|
+
422: '当创建一个对象时,发生一个验证错误。',
|
|
18
|
+
500: '服务器发生错误,请检查服务器。',
|
|
19
|
+
502: '网关错误。',
|
|
20
|
+
503: '服务不可用,服务器暂时过载或维护。',
|
|
21
|
+
504: '网关超时。'
|
|
22
|
+
};
|
|
23
|
+
export function getAdditionalHeaders(headers) {
|
|
24
|
+
const res = {};
|
|
25
|
+
const lang = inject(YUNZAI_I18N_TOKEN).currentLang;
|
|
26
|
+
if (!headers?.has('Accept-Language') && lang) {
|
|
27
|
+
res['Accept-Language'] = lang;
|
|
28
|
+
}
|
|
29
|
+
return res;
|
|
30
|
+
}
|
|
31
|
+
export function checkStatus(injector, ev) {
|
|
32
|
+
if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const errortext = CODEMESSAGE[ev.status] || ev.statusText;
|
|
36
|
+
injector.get(NzNotificationService).error(`请求错误 ${ev.status}: ${ev.url}`, errortext);
|
|
37
|
+
}
|
|
38
|
+
export function goTo(injector, url) {
|
|
39
|
+
setTimeout(() => injector.get(Router).navigateByUrl(url));
|
|
40
|
+
}
|
|
41
|
+
export function toLogin(injector) {
|
|
42
|
+
injector.get(NzNotificationService).error(`未登录或登录已过期,请重新登录。`, ``);
|
|
43
|
+
goTo(injector, injector.get(YA_SERVICE_TOKEN).login_url);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL3NyYy9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQThCO0lBQ3BELEdBQUcsRUFBRSxlQUFlO0lBQ3BCLEdBQUcsRUFBRSxZQUFZO0lBQ2pCLEdBQUcsRUFBRSxxQkFBcUI7SUFDMUIsR0FBRyxFQUFFLFNBQVM7SUFDZCxHQUFHLEVBQUUsNkJBQTZCO0lBQ2xDLEdBQUcsRUFBRSxzQkFBc0I7SUFDM0IsR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixHQUFHLEVBQUUsNEJBQTRCO0lBQ2pDLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLEdBQUcsRUFBRSxxQkFBcUI7SUFDMUIsR0FBRyxFQUFFLG9CQUFvQjtJQUN6QixHQUFHLEVBQUUsaUJBQWlCO0lBQ3RCLEdBQUcsRUFBRSxPQUFPO0lBQ1osR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixHQUFHLEVBQUUsT0FBTztDQUNiLENBQUM7QUFFRixNQUFNLFVBQVUsb0JBQW9CLENBQUMsT0FBcUI7SUFDeEQsTUFBTSxHQUFHLEdBQStCLEVBQUUsQ0FBQztJQUMzQyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFDbkQsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM3QyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsUUFBa0IsRUFBRSxFQUFvQjtJQUNsRSxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQy9ELE9BQU87SUFDVCxDQUFDO0lBQ0QsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQzFELFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN2RixDQUFDO0FBT0QsTUFBTSxVQUFVLElBQUksQ0FBQyxRQUFrQixFQUFFLEdBQVc7SUFDbEQsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQUMsUUFBa0I7SUFDeEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRSxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFVLENBQUMsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBSZXNwb25zZUJhc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBZQV9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnQHllbG9uL2F1dGgnO1xuaW1wb3J0IHsgWVVOWkFJX0kxOE5fVE9LRU4gfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IE56Tm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbm90aWZpY2F0aW9uJztcblxuZXhwb3J0IGNvbnN0IENPREVNRVNTQUdFOiB7IFtrZXk6IG51bWJlcl06IHN0cmluZyB9ID0ge1xuICAyMDA6ICfmnI3liqHlmajmiJDlip/ov5Tlm57or7fmsYLnmoTmlbDmja7jgIInLFxuICAyMDE6ICfmlrDlu7rmiJbkv67mlLnmlbDmja7miJDlip/jgIInLFxuICAyMDI6ICfkuIDkuKror7fmsYLlt7Lnu4/ov5vlhaXlkI7lj7DmjpLpmJ/vvIjlvILmraXku7vliqHvvInjgIInLFxuICAyMDQ6ICfliKDpmaTmlbDmja7miJDlip/jgIInLFxuICA0MDA6ICflj5Hlh7rnmoTor7fmsYLmnInplJnor6/vvIzmnI3liqHlmajmsqHmnInov5vooYzmlrDlu7rmiJbkv67mlLnmlbDmja7nmoTmk43kvZzjgIInLFxuICA0MDE6ICfnlKjmiLfmsqHmnInmnYPpmZDvvIjku6TniYzjgIHnlKjmiLflkI3jgIHlr4bnoIHplJnor6/vvInjgIInLFxuICA0MDM6ICfnlKjmiLflvpfliLDmjojmnYPvvIzkvYbmmK/orr/pl67mmK/ooqvnpoHmraLnmoTjgIInLFxuICA0MDQ6ICflj5Hlh7rnmoTor7fmsYLpkojlr7nnmoTmmK/kuI3lrZjlnKjnmoTorrDlvZXvvIzmnI3liqHlmajmsqHmnInov5vooYzmk43kvZzjgIInLFxuICA0MDY6ICfor7fmsYLnmoTmoLzlvI/kuI3lj6/lvpfjgIInLFxuICA0MTA6ICfor7fmsYLnmoTotYTmupDooqvmsLjkuYXliKDpmaTvvIzkuJTkuI3kvJrlho3lvpfliLDnmoTjgIInLFxuICA0MjI6ICflvZPliJvlu7rkuIDkuKrlr7nosaHml7bvvIzlj5HnlJ/kuIDkuKrpqozor4HplJnor6/jgIInLFxuICA1MDA6ICfmnI3liqHlmajlj5HnlJ/plJnor6/vvIzor7fmo4Dmn6XmnI3liqHlmajjgIInLFxuICA1MDI6ICfnvZHlhbPplJnor6/jgIInLFxuICA1MDM6ICfmnI3liqHkuI3lj6/nlKjvvIzmnI3liqHlmajmmoLml7bov4fovb3miJbnu7TmiqTjgIInLFxuICA1MDQ6ICfnvZHlhbPotoXml7bjgIInXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWRkaXRpb25hbEhlYWRlcnMoaGVhZGVycz86IEh0dHBIZWFkZXJzKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICBjb25zdCByZXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gIGNvbnN0IGxhbmcgPSBpbmplY3QoWVVOWkFJX0kxOE5fVE9LRU4pLmN1cnJlbnRMYW5nO1xuICBpZiAoIWhlYWRlcnM/LmhhcygnQWNjZXB0LUxhbmd1YWdlJykgJiYgbGFuZykge1xuICAgIHJlc1snQWNjZXB0LUxhbmd1YWdlJ10gPSBsYW5nO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrU3RhdHVzKGluamVjdG9yOiBJbmplY3RvciwgZXY6IEh0dHBSZXNwb25zZUJhc2UpOiB2b2lkIHtcbiAgaWYgKChldi5zdGF0dXMgPj0gMjAwICYmIGV2LnN0YXR1cyA8IDMwMCkgfHwgZXYuc3RhdHVzID09PSA0MDEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZXJyb3J0ZXh0ID0gQ09ERU1FU1NBR0VbZXYuc3RhdHVzXSB8fCBldi5zdGF0dXNUZXh0O1xuICBpbmplY3Rvci5nZXQoTnpOb3RpZmljYXRpb25TZXJ2aWNlKS5lcnJvcihg6K+35rGC6ZSZ6K+vICR7ZXYuc3RhdHVzfTogJHtldi51cmx9YCwgZXJyb3J0ZXh0KTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZVRocm93SHR0cEVycm9yIHtcbiAgYm9keTogTnpTYWZlQW55O1xuICBfdGhyb3c6IHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnb1RvKGluamVjdG9yOiBJbmplY3RvciwgdXJsOiBzdHJpbmcpOiB2b2lkIHtcbiAgc2V0VGltZW91dCgoKSA9PiBpbmplY3Rvci5nZXQoUm91dGVyKS5uYXZpZ2F0ZUJ5VXJsKHVybCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9Mb2dpbihpbmplY3RvcjogSW5qZWN0b3IpOiB2b2lkIHtcbiAgaW5qZWN0b3IuZ2V0KE56Tm90aWZpY2F0aW9uU2VydmljZSkuZXJyb3IoYOacqueZu+W9leaIlueZu+W9leW3sui/h+acn++8jOivt+mHjeaWsOeZu+W9leOAgmAsIGBgKTtcbiAgZ29UbyhpbmplY3RvciwgaW5qZWN0b3IuZ2V0KFlBX1NFUlZJQ0VfVE9LRU4pLmxvZ2luX3VybCEpO1xufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { importProvidersFrom, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { BisModule } from './bis.module';
|
|
3
|
+
export function provideYunzaiBis() {
|
|
4
|
+
const provides = [];
|
|
5
|
+
provides.push(importProvidersFrom(BisModule));
|
|
6
|
+
return makeEnvironmentProviders(provides);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9zcmMvcHJvdmlkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekMsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixNQUFNLFFBQVEsR0FBMkIsRUFBRSxDQUFDO0lBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5QyxPQUFPLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgaW1wb3J0UHJvdmlkZXJzRnJvbSwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEJpc01vZHVsZSB9IGZyb20gJy4vYmlzLm1vZHVsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlWXVuemFpQmlzKCk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgY29uc3QgcHJvdmlkZXM6IEVudmlyb25tZW50UHJvdmlkZXJzW10gPSBbXTtcbiAgcHJvdmlkZXMucHVzaChpbXBvcnRQcm92aWRlcnNGcm9tKEJpc01vZHVsZSkpO1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKHByb3ZpZGVzKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { APP_INITIALIZER, Injector } from '@angular/core';
|
|
3
|
+
import { BehaviorSubject, catchError, filter, switchMap, take, throwError } from 'rxjs';
|
|
4
|
+
import { YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
5
|
+
import { log } from '@yelon/util';
|
|
6
|
+
import { toLogin } from './helper';
|
|
7
|
+
let refreshToking = false;
|
|
8
|
+
let refreshToken$ = new BehaviorSubject(null);
|
|
9
|
+
export const tryRefreshToken = (injector, ev, req, next) => {
|
|
10
|
+
// 连刷新Token的请求都错了,那就是真错了
|
|
11
|
+
if (['/auth/oauth/getOrCreateToken/webapp'].some(url => req.url.includes(url))) {
|
|
12
|
+
toLogin(injector);
|
|
13
|
+
return throwError(() => ev);
|
|
14
|
+
}
|
|
15
|
+
// 2、如果 `refreshToking` 为 `true` 表示已经在请求刷新 Token 中,后续所有请求转入等待状态,直至结果返回后再重新发起请求
|
|
16
|
+
if (refreshToking) {
|
|
17
|
+
return refreshToken$.pipe(filter(v => !!v), take(1), switchMap(() => next(reAttachToken(injector, req))));
|
|
18
|
+
}
|
|
19
|
+
// 3、尝试调用刷新 Token
|
|
20
|
+
refreshToking = true;
|
|
21
|
+
refreshToken$.next(null);
|
|
22
|
+
return refreshTokenRequest(injector).pipe(switchMap(res => {
|
|
23
|
+
// 通知后续请求继续执行
|
|
24
|
+
refreshToking = false;
|
|
25
|
+
refreshToken$.next(res);
|
|
26
|
+
// 重新保存新 token
|
|
27
|
+
injector.get(YA_SERVICE_TOKEN).set(res);
|
|
28
|
+
// 重新发起请求
|
|
29
|
+
return next(reAttachToken(injector, req));
|
|
30
|
+
}), catchError(err => {
|
|
31
|
+
refreshToking = false;
|
|
32
|
+
toLogin(injector);
|
|
33
|
+
return throwError(() => err);
|
|
34
|
+
}));
|
|
35
|
+
};
|
|
36
|
+
function reAttachToken(injector, req) {
|
|
37
|
+
const token = injector.get(YA_SERVICE_TOKEN).get()?.access_token;
|
|
38
|
+
return req.clone({
|
|
39
|
+
setHeaders: {
|
|
40
|
+
Authorization: `Bearer ${token}`
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function refreshTokenRequest(injector) {
|
|
45
|
+
const model = injector.get(YA_SERVICE_TOKEN).get();
|
|
46
|
+
const form = new FormData();
|
|
47
|
+
form.set('refresh_token', model?.refresh_token);
|
|
48
|
+
form.set('grant_type', 'refresh_token');
|
|
49
|
+
form.set('scope', 'webapp');
|
|
50
|
+
return injector.get(HttpClient).post(`/auth/oauth/getOrCreateToken/webapp`, form);
|
|
51
|
+
}
|
|
52
|
+
function buildAuthRefresh(injector) {
|
|
53
|
+
const tokenSrv = injector.get(YA_SERVICE_TOKEN);
|
|
54
|
+
tokenSrv.refresh
|
|
55
|
+
.pipe(filter(() => !refreshToking), switchMap(res => {
|
|
56
|
+
log(res);
|
|
57
|
+
refreshToking = true;
|
|
58
|
+
return refreshTokenRequest(injector);
|
|
59
|
+
}))
|
|
60
|
+
.subscribe({
|
|
61
|
+
next: res => {
|
|
62
|
+
res.expired = +new Date() + 1000 * 60 * 5;
|
|
63
|
+
refreshToking = false;
|
|
64
|
+
tokenSrv.set(res);
|
|
65
|
+
},
|
|
66
|
+
error: () => toLogin(injector)
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
export function provideYunzaiBindAuthRefresh() {
|
|
70
|
+
return [
|
|
71
|
+
{
|
|
72
|
+
provide: APP_INITIALIZER,
|
|
73
|
+
useFactory: (injector) => () => buildAuthRefresh(injector),
|
|
74
|
+
deps: [Injector],
|
|
75
|
+
multi: true
|
|
76
|
+
}
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaC10b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9zcmMvcmVmcmVzaC10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFnRCxNQUFNLHNCQUFzQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYyxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRW5DLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQztBQUMxQixJQUFJLGFBQWEsR0FBK0IsSUFBSSxlQUFlLENBQVksSUFBSSxDQUFDLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQzdCLFFBQWtCLEVBQ2xCLEVBQW9CLEVBQ3BCLEdBQTJCLEVBQzNCLElBQW1CLEVBQ0ksRUFBRTtJQUN6Qix3QkFBd0I7SUFDeEIsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9FLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsOEVBQThFO0lBQzlFLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsT0FBTyxhQUFh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QUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUN0QixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztLQUMvQixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QjtJQUMxQyxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsQ0FBQyxRQUFrQixFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7WUFDcEUsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDO1lBQ2hCLEtBQUssRUFBRSxJQUFJO1NBQ1o7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIYW5kbGVyRm4sIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2VCYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBJbmplY3RvciwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgZmlsdGVyLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRha2UsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgWUFfU0VSVklDRV9UT0tFTiB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJ0B5ZWxvbi91dGlsJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IHRvTG9naW4gfSBmcm9tICcuL2hlbHBlcic7XG5cbmxldCByZWZyZXNoVG9raW5nID0gZmFsc2U7XG5sZXQgcmVmcmVzaFRva2VuJDogQmVoYXZpb3JTdWJqZWN0PE56U2FmZUFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE56U2FmZUFueT4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCB0cnlSZWZyZXNoVG9rZW4gPSAoXG4gIGluamVjdG9yOiBJbmplY3RvcixcbiAgZXY6IEh0dHBSZXNwb25zZUJhc2UsXG4gIHJlcTogSHR0cFJlcXVlc3Q8TnpTYWZlQW55PixcbiAgbmV4dDogSHR0cEhhbmRsZXJGblxuKTogT2JzZXJ2YWJsZTxOelNhZmVBbnk+ID0+IHtcbiAgLy8g6L+e5Yi35pawVG9rZW7nmoTor7fmsYLpg73plJnkuobvvIzpgqPlsLHmmK/nnJ/plJnkuoZcbiAgaWYgKFsnL2F1dGgvb2F1dGgvZ2V0T3JDcmVhdGVUb2tlbi93ZWJhcHAnXS5zb21lKHVybCA9PiByZXEudXJsLmluY2x1ZGVzKHVybCkpKSB7XG4gICAgdG9Mb2dpbihpbmplY3Rvcik7XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXYpO1xuICB9XG4gIC8vIDLjgIHlpoLmnpwgYHJlZnJlc2hUb2tpbmdgIOS4uiBgdHJ1ZWAg6KGo56S65bey57uP5Zyo6K+35rGC5Yi35pawIFRva2VuIOS4re+8jOWQjue7reaJgOacieivt+axgui9rOWFpeetieW+heeKtuaAge+8jOebtOiHs+e7k+aenOi/lOWbnuWQjuWGjemHjeaWsOWPkei1t+ivt+axglxuICBpZiAocmVmcmVzaFRva2luZykge1xuICAgIHJldHVybiByZWZyZXNoVG9rZW4kLnBpcGUoXG4gICAgICBmaWx0ZXIodiA9PiAhIXYpLFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiBuZXh0KHJlQXR0YWNoVG9rZW4oaW5qZWN0b3IsIHJlcSkpKVxuICAgICk7XG4gIH1cbiAgLy8gM+OAgeWwneivleiwg+eUqOWIt+aWsCBUb2tlblxuICByZWZyZXNoVG9raW5nID0gdHJ1ZTtcbiAgcmVmcmVzaFRva2VuJC5uZXh0KG51bGwpO1xuXG4gIHJldHVybiByZWZyZXNoVG9rZW5SZXF1ZXN0KGluamVjdG9yKS5waXBlKFxuICAgIHN3aXRjaE1hcChyZXMgPT4ge1xuICAgICAgLy8g6YCa55+l5ZCO57ut6K+35rGC57un57ut5omn6KGMXG4gICAgICByZWZyZXNoVG9raW5nID0gZmFsc2U7XG4gICAgICByZWZyZXNoVG9rZW4kLm5leHQocmVzKTtcbiAgICAgIC8vIOmHjeaWsOS/neWtmOaWsCB0b2tlblxuICAgICAgaW5qZWN0b3IuZ2V0KFlBX1NFUlZJQ0VfVE9LRU4pLnNldChyZXMpO1xuICAgICAgLy8g6YeN5paw5Y+R6LW36K+35rGCXG4gICAgICByZXR1cm4gbmV4dChyZUF0dGFjaFRva2VuKGluamVjdG9yLCByZXEpKTtcbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICByZWZyZXNoVG9raW5nID0gZmFsc2U7XG4gICAgICB0b0xvZ2luKGluamVjdG9yKTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycik7XG4gICAgfSlcbiAgKTtcbn07XG5cbmZ1bmN0aW9uIHJlQXR0YWNoVG9rZW4oaW5qZWN0b3I6IEluamVjdG9yLCByZXE6IEh0dHBSZXF1ZXN0PE56U2FmZUFueT4pOiBIdHRwUmVxdWVzdDxOelNhZmVBbnk+IHtcbiAgY29uc3QgdG9rZW4gPSBpbmplY3Rvci5nZXQoWUFfU0VSVklDRV9UT0tFTikuZ2V0KCk/LmFjY2Vzc190b2tlbjtcbiAgcmV0dXJuIHJlcS5jbG9uZSh7XG4gICAgc2V0SGVhZGVyczoge1xuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWBcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWZyZXNoVG9rZW5SZXF1ZXN0KGluamVjdG9yOiBJbmplY3Rvcik6IE9ic2VydmFibGU8TnpTYWZlQW55PiB7XG4gIGNvbnN0IG1vZGVsID0gaW5qZWN0b3IuZ2V0KFlBX1NFUlZJQ0VfVE9LRU4pLmdldCgpO1xuICBjb25zdCBmb3JtID0gbmV3IEZvcm1EYXRhKCk7XG4gIGZvcm0uc2V0KCdyZWZyZXNoX3Rva2VuJywgbW9kZWw/LnJlZnJlc2hfdG9rZW4hKTtcbiAgZm9ybS5zZXQoJ2dyYW50X3R5cGUnLCAncmVmcmVzaF90b2tlbicpO1xuICBmb3JtLnNldCgnc2NvcGUnLCAnd2ViYXBwJyk7XG4gIHJldHVybiBpbmplY3Rvci5nZXQoSHR0cENsaWVudCkucG9zdChgL2F1dGgvb2F1dGgvZ2V0T3JDcmVhdGVUb2tlbi93ZWJhcHBgLCBmb3JtKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRBdXRoUmVmcmVzaChpbmplY3RvcjogSW5qZWN0b3IpOiB2b2lkIHtcbiAgY29uc3QgdG9rZW5TcnYgPSBpbmplY3Rvci5nZXQoWUFfU0VSVklDRV9UT0tFTik7XG4gIHRva2VuU3J2LnJlZnJlc2hcbiAgICAucGlwZShcbiAgICAgIGZpbHRlcigoKSA9PiAhcmVmcmVzaFRva2luZyksXG4gICAgICBzd2l0Y2hNYXAocmVzID0+IHtcbiAgICAgICAgbG9nKHJlcyk7XG4gICAgICAgIHJlZnJlc2hUb2tpbmcgPSB0cnVlO1xuICAgICAgICByZXR1cm4gcmVmcmVzaFRva2VuUmVxdWVzdChpbmplY3Rvcik7XG4gICAgICB9KVxuICAgIClcbiAgICAuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgIHJlcy5leHBpcmVkID0gK25ldyBEYXRlKCkgKyAxMDAwICogNjAgKiA1O1xuICAgICAgICByZWZyZXNoVG9raW5nID0gZmFsc2U7XG4gICAgICAgIHRva2VuU3J2LnNldChyZXMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB0b0xvZ2luKGluamVjdG9yKVxuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVl1bnphaUJpbmRBdXRoUmVmcmVzaCgpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiAoKSA9PiBidWlsZEF1dGhSZWZyZXNoKGluamVjdG9yKSxcbiAgICAgIGRlcHM6IFtJbmplY3Rvcl0sXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +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×tamp=${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.2.1", ngImport: i0, type: YunzaiStartupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
146
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiStartupService }); }
|
|
147
|
+
}
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", 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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnR1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL3NyYy9zdGFydHVwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFlLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsV0FBVyxFQUNYLGVBQWUsRUFDZixZQUFZLEVBQ1osaUJBQWlCLEVBRWxCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxRQUFRLEVBQ1Isc0JBQXNCLEVBQ3RCLDJCQUEyQixFQUMzQixxQkFBcUIsRUFDckIsMEJBQTBCLEVBQzFCLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsTUFBTSxFQUNOLG1CQUFtQixFQUdwQixNQUFNLGFBQWEsQ0FBQzs7QUFHckIsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPO1FBQ0wsb0JBQW9CO1FBQ3BCO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLENBQUMsY0FBb0MsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRTtZQUNqRixJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztZQUM1QixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFN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LFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsS0FBbUIsRUFBRSxTQUFtQixFQUFFLE1BQWM7SUFDdEYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFO2dCQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBpbmplY3QsIEluamVjdGFibGUsIFByb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBQ0xTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL2FjbCc7XG5pbXBvcnQgeyBJVG9rZW5Nb2RlbCwgWUFfU0VSVklDRV9UT0tFTiB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IG1lcmdlQmlzQ29uZmlnIH0gZnJvbSAnQHllbG9uL2Jpcy9jb25maWcnO1xuaW1wb3J0IHtcbiAgTWVudSxcbiAgTWVudVNlcnZpY2UsXG4gIFNldHRpbmdzU2VydmljZSxcbiAgVGl0bGVTZXJ2aWNlLFxuICBZVU5aQUlfSTE4Tl9UT0tFTixcbiAgWXVuemFpSHR0cEkxOE5TZXJ2aWNlXG59IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQge1xuICBkZWVwQ29weSxcbiAgdXNlTG9jYWxTdG9yYWdlQ3VycmVudCxcbiAgdXNlTG9jYWxTdG9yYWdlRGVmYXVsdFJvdXRlLFxuICB1c2VMb2NhbFN0b3JhZ2VIZWFkZXIsXG4gIHVzZUxvY2FsU3RvcmFnZVByb2plY3RJbmZvLFxuICB1c2VMb2NhbFN0b3JhZ2VUZW5hbnQsXG4gIHVzZUxvY2FsU3RvcmFnZVVzZXIsXG4gIFdJTkRPVyxcbiAgWXVuemFpQ29uZmlnU2VydmljZSxcbiAgWXVuemFpTWVudSxcbiAgWXVuemFpTWVudUF0dHJpYnV0ZVxufSBmcm9tICdAeWVsb24vdXRpbCc7XG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVl1bnphaVN0YXJ0dXAoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAgWXVuemFpU3RhcnR1cFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKHN0YXJ0dXBTZXJ2aWNlOiBZdW56YWlTdGFydHVwU2VydmljZSkgPT4gKCkgPT4gc3RhcnR1cFNlcnZpY2UubG9hZCgpLFxuICAgICAgZGVwczogW1l1bnphaVN0YXJ0dXBTZXJ2aWNlXSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdO1xufVxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFl1bnphaVN0YXJ0dXBTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBtZXJnZUJpc0NvbmZpZyhpbmplY3QoWXVuemFpQ29uZmlnU2VydmljZSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1lbnVTZXJ2aWNlID0gaW5qZWN0KE1lbnVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY2xTZXJ2aWNlID0gaW5qZWN0KEFDTFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRpdGxlU2VydmljZSA9IGluamVjdChUaXRsZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuU2VydmljZSA9IGluamVjdChZQV9TRVJWSUNFX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IHNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KFNldHRpbmdzU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaTE4biA9IGluamVjdDxZdW56YWlIdHRwSTE4TlNlcnZpY2U+KFlVTlpBSV9JMThOX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aW4gPSBpbmplY3QoV0lORE9XKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlID0gaW5qZWN0KFl1bnphaUNvbmZpZ1NlcnZpY2UpO1xuXG4gIGxvYWQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgbGV0IGRlZmF1bHRMYW5nOiBzdHJpbmcgPSB0aGlzLnNldHRpbmdTZXJ2aWNlLmxheW91dC5sYW5nIHx8IHRoaXMuaTE4bi5kZWZhdWx0TGFuZztcbiAgICBjb25zdCBbc2V0VGVuYW50XSA9IHVzZUxvY2FsU3RvcmFnZVRlbmFudCgpO1xuICAgIGNvbnN0IFtzZXRVc2VyLCBnZXRVc2VyXSA9IHVzZUxvY2FsU3RvcmFnZVVzZXIoKTtcbiAgICBjb25zdCBbc2V0SGVhZGVyXSA9IHVzZUxvY2FsU3RvcmFnZUhlYWRlcigpO1xuICAgIGNvbnN0IFtzZXRQcm9qZWN0XSA9IHVzZUxvY2FsU3RvcmFnZVByb2plY3RJbmZvKCk7XG4gICAgY29uc3QgW3NldERlZmF1bHRSb3V0ZV0gPSB1c2VMb2NhbFN0b3JhZ2VEZWZhdWx0Um91dGUoKTtcbiAgICBjb25zdCBbc2V0Q3VycmVudF0gPSB1c2VMb2NhbFN0b3JhZ2VDdXJyZW50KCk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4oKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKHRva2VuOiBJVG9rZW5Nb2RlbCkgPT4ge1xuICAgICAgICB0aGlzLmNvbmZpZ1NlcnZpY2Uuc2V0KCdhdXRoJywge1xuICAgICAgICAgIHRva2VuX3NlbmRfa2V5OiAnQXV0aG9yaXphdGlvbicsXG4gICAgICAgICAgdG9rZW5fc2VuZF90ZW1wbGF0ZTogYCR7dG9rZW4udG9rZW5fdHlwZX0gXFwke2FjY2Vzc190b2tlbn1gLFxuICAgICAgICAgIHRva2VuX3NlbmRfcGxhY2U6ICdoZWFkZXInXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRva2VuU2VydmljZS5zZXQodG9rZW4pO1xuICAgICAgICByZXR1cm4gb2Yodm9pZCAwKTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgdGhpcy5odHRwQ2xpZW50LmdldChgL2F1dGgvdXNlcmApLFxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hdXRoL2FsbGhlYWRlci92MmApLFxuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hcHAtbWFuYWdlci9wcm9qZWN0L2luZm9gKVxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgIG1hcCgoW3VzZXIsIGhlYWRlciwgcHJvamVjdF06IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgc2V0VXNlcih1c2VyLnByaW5jaXBhbCk7XG4gICAgICAgICAgICBzZXRUZW5hbnQodXNlci50ZW5hbnRJZCk7XG4gICAgICAgICAgICBzZXRIZWFkZXIoaGVhZGVyLmRhdGEpO1xuICAgICAgICAgICAgc2V0UHJvamVjdChwcm9qZWN0LmRhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmkxOG4ubG9hZExhbmdEYXRhKGRlZmF1bHRMYW5nKS5waXBlKFxuICAgICAgICAgIG1hcCgobGFuZ0RhdGE6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pMThuLnVzZShkZWZhdWx0TGFuZywgbGFuZ0RhdGEpO1xuICAgICAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfSksXG4gICAgICBtZXJnZU1hcCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHl1bnphaVVzZXIgPSBnZXRVc2VyKCkhO1xuICAgICAgICBjb25zdCB5dW56YWlNZW51czogWXVuemFpTWVudVtdID0gZGVlcENvcHkoeXVuemFpVXNlci5tZW51KS5maWx0ZXIoXG4gICAgICAgICAgbSA9PiBtLnN5c3RlbUNvZGUgJiYgbS5zeXN0ZW1Db2RlID09PSB0aGlzLmNvbmZpZy5zeXN0ZW1Db2RlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRNZW51ID0geXVuemFpTWVudXMucG9wKCk7XG4gICAgICAgIGlmIChjdXJyZW50TWVudSkge1xuICAgICAgICAgIHRoaXMuc2V0dGluZ1NlcnZpY2Uuc2V0QXBwKHsgbmFtZTogY3VycmVudE1lbnUudGV4dCwgZGVzY3JpcHRpb246IGN1cnJlbnRNZW51LmludHJvIH0pO1xuICAgICAgICAgIHRoaXMuc2V0dGluZ1NlcnZpY2Uuc2V0VXNlcih7XG4gICAgICAgICAgICBuYW1lOiB5dW56YWlVc2VyLnJlYWxuYW1lLFxuICAgICAgICAgICAgYXZhdGFyOiBgJHt0aGlzLmNvbmZpZy5iYXNlVXJsfS9maWxlY2VudGVyL2ZpbGUvJHt5dW56YWlVc2VyLmF2YXRhcklkfWAgfHwgJycsXG4gICAgICAgICAgICBlbWFpbDogeXVuemFpVXNlci5lbWFpbFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLmRlZmF1bHQgPSBjdXJyZW50TWVudSAmJiBjdXJyZW50TWVudS50ZXh0ID8gY3VycmVudE1lbnUudGV4dCA6ICdkZWZhdWx0IGFwcGxpY2F0aW9uIG5hbWUnO1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKGN1cnJlbnRNZW51ICYmIGN1cnJlbnRNZW51LnRleHQgPyBjdXJyZW50TWVudS50ZXh0IDogJ25vIHRpdGxlJyk7XG4gICAgICAgICAgY29uc3QgYWJpbGl0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICAgIGdlbmVyYXRlQWJpbGl0eShbY3VycmVudE1lbnVdLCBhYmlsaXRpZXMsICcnKTtcbiAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UuYXR0YWNoUm9sZShcbiAgICAgICAgICAgIHl1bnphaVVzZXI/LnJvbGVzXG4gICAgICAgICAgICAgIC5tYXAoKHJvbGU6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByb2xlLnJvbGVWYWx1ZTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZpbHRlcigoYTogTnpTYWZlQW55KSA9PiAhIWEpIHx8IFtdXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmFjbFNlcnZpY2UuYXR0YWNoQWJpbGl0eShhYmlsaXRpZXMpO1xuICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UuYWRkKFtjdXJyZW50TWVudSBhcyBNZW51XSk7XG4gICAgICAgICAgc2V0Q3VycmVudCh7XG4gICAgICAgICAgICBuYW1lOiBjdXJyZW50TWVudS50ZXh0LFxuICAgICAgICAgICAgaW50cm86IGN1cnJlbnRNZW51LmludHJvIHx8ICcnLFxuICAgICAgICAgICAgaWNvbjogY3VycmVudE1lbnUuYXBwSWNvblVybCB8fCAnLi9hc3NldHMvdG1wL2ltZy9hdmF0YXIuanBnJ1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBjdXJyZW50TWVudS5hdHRyaWJ1dGU7XG4gICAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHI6IFl1bnphaU1lbnVBdHRyaWJ1dGUgPSBKU09OLnBhcnNlKGF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgaWYgKGF0dHIgJiYgYXR0ci5kZWZhdWx0Um91dGUpIHtcbiAgICAgICAgICAgICAgc2V0RGVmYXVsdFJvdXRlKGF0dHIuZGVmYXVsdFJvdXRlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldERlZmF1bHRSb3V0ZSgnL2Rpc3BsYXlJbmRleCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXREZWZhdWx0Um91dGUoJy9kaXNwbGF5SW5kZXgnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICB0b2tlbigpOiBPYnNlcnZhYmxlPElUb2tlbk1vZGVsPiB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmxvZ2luRm9ybSkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KGAvYXV0aC9vYXV0aC90b2tlbj9fYWxsb3dfYW5vbnltb3VzPXRydWVgLCB0aGlzLmNvbmZpZy5sb2dpbkZvcm0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHVyaSA9IGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLndpbi5sb2NhdGlvbi5ocmVmKTtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnRcbiAgICAgICAgLmdldChgL2Nhcy1wcm94eS9hcHAvdmFsaWRhdGVfZnVsbD9jYWxsYmFjaz0ke3VyaX0mX2FsbG93X2Fub255bW91cz10cnVlJnRpbWVzdGFtcD0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IE56U2FmZUFueSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChyZXNwb25zZS5lcnJjb2RlKSB7XG4gICAgICAgICAgICAgIGNhc2UgMjAwMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICAgICAgICAgICAgY2FzZSAyMDAxOlxuICAgICAgICAgICAgICAgIHRoaXMud2luLmxvY2F0aW9uLmhyZWYgPSByZXNwb25zZS5tc2c7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJDb29raWUgRXJyb3I6IENhbid0IGZpbmQgQ2FzIENvb2tpZSxTbyBqdW1wIHRvIGxvZ2luIVwiKTtcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuZGF0YSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHJlc3BvbnNlLmRhdGEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UubXNnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlc3BvbnNlLm1zZyk7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihyZXNwb25zZS5tc2cpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdjYXMgdW5rbm93biBlcnJvcicpO1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gRXJyb3I6IENhcyBhdXRoIGV4Y2VwdGlvbiEnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFl6U2lkZVRvWWVsb25NZW51KG1lbnVzOiBZdW56YWlNZW51W10pOiB2b2lkIHtcbiAgbWVudXMuZm9yRWFjaChtZW51ID0+IHtcbiAgICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LmhpZGVDaGlsZHJlbikge1xuICAgICAgbWVudS5jaGlsZHJlbi5mb3JFYWNoKGMgPT4gKGMuaGlkZSA9IHRydWUpKTtcbiAgICB9XG4gICAgbWVudS5iYWRnZURvdCA9IG1lbnUuYmFkZ2VfZG90IHx8IG51bGw7XG4gICAgbWVudS5iYWRnZVN0YXR1cyA9IG1lbnUuYmFkZ2Vfc3RhdHVzIHx8IG51bGw7XG4gICAgbWVudS5zaG9ydGN1dFJvb3QgPSBtZW51LnNob3J0Y3V0X3Jvb3QgfHwgbnVsbDtcbiAgICBtZW51LnJldXNlID0gdHJ1ZTtcbiAgICBpZiAobWVudS5jaGlsZHJlbikge1xuICAgICAgbWFwWXpTaWRlVG9ZZWxvbk1lbnUobWVudS5jaGlsZHJlbik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQWJpbGl0eShtZW51czogWXVuemFpTWVudVtdLCBhYmlsaXRpZXM6IHN0cmluZ1tdLCBwcmVmaXg6IHN0cmluZyk6IHZvaWQge1xuICBtZW51cy5mb3JFYWNoKG1lbnUgPT4ge1xuICAgIGlmIChtZW51LmxpbmspIHtcbiAgICAgIHByZWZpeCArPSBtZW51Lmxpbms7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZWZpeCArPSAnJztcbiAgICB9XG4gICAgaWYgKG1lbnUubWVudUF1dGhzKSB7XG4gICAgICBtZW51Lm1lbnVBdXRocy5mb3JFYWNoKChhOiBzdHJpbmcpID0+IHtcbiAgICAgICAgYWJpbGl0aWVzLnB1c2goYCR7cHJlZml4fToke2F9YCk7XG4gICAgICAgIGFiaWxpdGllcy5wdXNoKGEpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKG1lbnUuY2hpbGRyZW4pIHtcbiAgICAgIGdlbmVyYXRlQWJpbGl0eShtZW51LmNoaWxkcmVuLCBhYmlsaXRpZXMsIHByZWZpeCk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +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.2.1", 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.2.1", ngImport: i0, type: ActGuardService, providedIn: 'root' }); }
|
|
81
|
+
}
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", 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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWFjdC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9zcmMveXVuemFpLWFjdC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUUsT0FBTyxFQUNMLFFBQVEsRUFDUixHQUFHLEVBSUgsbUJBQW1CLEVBRXBCLE1BQU0sYUFBYSxDQUFDOzs7O0FBSXJCLE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ1UsYUFBa0MsRUFDbEMsWUFBaUMsRUFDakMsTUFBYztRQUZkLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVBoQixRQUFHLEdBQXlCLHVCQUF1QixDQUFDO1FBQ3BELFVBQUssR0FBZ0IsRUFBRSxDQUFDO1FBQ3hCLFVBQUssR0FBYSxFQUFFLENBQUM7UUFPM0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQWUsT0FBTyxFQUFHLENBQUM7UUFDcEMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QixhQUFhO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUUsSUFBSSxDQUFDLElBQWtCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUMxRCxDQUFDLENBQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUN4RCxDQUFDO1FBQ1osR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVc7UUFDakIsR0FBRyxDQUFDLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELEdBQUcsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQ2pELElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO1lBQ2xDLGNBQWM7WUFDZCxJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ25CLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxxQkFBcUIsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdkQsT0FBTztZQUNULENBQUM7WUFDRCxrQkFBa0I7WUFDbEIsTUFBTSxNQUFNLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRSxHQUFHLENBQUMsUUFBUSxJQUFJLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDOUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixHQUFHLENBQUMsbUJBQW1CLFdBQVcsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLE9BQU87WUFDVCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFXO1FBQ25CLE9BQU8sQ0FDTCxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNyQixHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUN6QixHQUFHLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUM1QixHQUFHLEtBQUssRUFBRTtZQUNWLEdBQUcsS0FBSyxJQUFJO1lBQ1osR0FBRyxLQUFLLEdBQUc7WUFDWCxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUMzQixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZLEVBQUUsS0FBZTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBVyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2YsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0VVLGVBQWU7a0hBQWYsZUFBZSxjQURGLE1BQU07OzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFtRmxDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF1QixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUNoaWxkRm4sIENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHLCBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJ0B5ZWxvbi9iaXMvY29uZmlnJztcbmltcG9ydCB7IE1lbnUgfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHtcbiAgZGVlcENvcHksXG4gIGxvZyxcbiAgWXVuemFpQnVzaW5lc3NDb25maWcsXG4gIFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gIFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gIHVzZUxvY2FsU3RvcmFnZVVzZXIsXG4gIFl1bnphaVVzZXJcbn0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBY3RHdWFyZFNlcnZpY2Uge1xuICBwcml2YXRlIGJpczogWXVuemFpQnVzaW5lc3NDb25maWcgPSBCVVNJTkVTU19ERUZBVUxUX0NPTkZJRztcbiAgcHJpdmF0ZSBtZW51czogTnpTYWZlQW55W10gPSBbXTtcbiAgcHJpdmF0ZSBsaW5rczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXRoVG9SZWdleHA6IFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBsb2coJ2FjdDogJyk7XG4gICAgdGhpcy5iaXMgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNvbmZpZ1NlcnZpY2UpO1xuICAgIGxvZygnYWN0OiBjb25maWcgJywgdGhpcy5iaXMpO1xuICAgIGNvbnN0IFssIGdldFVzZXJdID0gdXNlTG9jYWxTdG9yYWdlVXNlcigpO1xuICAgIGNvbnN0IHVzZXI6IFl1bnphaVVzZXIgPSBnZXRVc2VyKCkhO1xuICAgIGxvZygnYWN0OiB1c2VyICcsIHVzZXIpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLm1lbnVzID0gZGVlcENvcHkoKHVzZXIubWVudSBhcyBOelNhZmVBbnkpIHx8IFtdKS5maWx0ZXIoXG4gICAgICAobTogTWVudSkgPT4gbS5zeXN0ZW1Db2RlICYmIG0uc3lzdGVtQ29kZSA9PT0gdGhpcy5iaXMuc3lzdGVtQ29kZVxuICAgICkgYXMgTWVudVtdO1xuICAgIGxvZygnYWN0OiBtZW51cyAnLCB0aGlzLm1lbnVzKTtcbiAgICB0aGlzLmdldEFsbExpbmtzKHRoaXMubWVudXMsIHRoaXMubGlua3MpO1xuICAgIGxvZygnYWN0OiBsaW5rcyAnLCB0aGlzLmxpbmtzKTtcbiAgfVxuXG4gIHByb2Nlc3ModXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsb2coJ2FjdDogY2FuIGFjdGl2YXRlICcsIHVybCk7XG4gICAgaWYgKHRoaXMucHJlSGFuZGxlKHVybCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsb2coJ2FjdDogY2FuIGFjdGl2YXRlIGNoaWxkIHByZWhhbmRsZSBzdWNjZXNzJyk7XG4gICAgbGV0IGNhbmFjdGl2YXRlID0gZmFsc2U7XG4gICAgdGhpcy5saW5rcy5mb3JFYWNoKChsaW5rOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIHBhdGggPSAveHh4XG4gICAgICBpZiAobGluayA9PT0gdXJsLnNwbGl0KCc/JylbMF0pIHtcbiAgICAgICAgY2FuYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgICBsb2coYGFjdDogbGluayB2YWx1ZSAke2xpbmt9IGVxdWFscyB1cmwgdmFsdWUgJHt1cmx9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIHBhaHQgPSAveHh4Lzp4eFxuICAgICAgY29uc3QgcmVnZXhwOiBSZWdFeHAgPSB0aGlzLnBhdGhUb1JlZ2V4cC5zdHJpbmdUb1JlZ2V4cChsaW5rLCBudWxsLCBudWxsKTtcbiAgICAgIGxvZyhgYWN0OiAke2xpbmt9IHRlc3QgJHt1cmwuc3BsaXQoJz8nKVswXX1gKTtcbiAgICAgIGlmIChyZWdleHAudGVzdCh1cmwuc3BsaXQoJz8nKVswXSkpIHtcbiAgICAgICAgY2FuYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgICBsb2coYGFjdDogdGVzdCB2YWx1ZSAke2NhbmFjdGl2YXRlfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGNhbmFjdGl2YXRlKSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBzdWNlc3NgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBlcnJvcmApO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkaXNwbGF5SW5kZXgnXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJlSGFuZGxlKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHVybC5pbmNsdWRlcygnZXJyb3InKSB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdleGNlcHRpb24nKSB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdkaXNwbGF5SW5kZXgnKSB8fFxuICAgICAgdXJsID09PSAnJyB8fFxuICAgICAgdXJsID09PSBudWxsIHx8XG4gICAgICB1cmwgPT09ICcvJyB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdpZnJhbWVQYWdlJylcbiAgICApO1xuICB9XG5cbiAgZ2V0QWxsTGlua3MobWVudTogTWVudVtdLCBsaW5rczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBtZW51LmZvckVhY2goKHNpZGVyOiBNZW51KSA9PiB7XG4gICAgICBpZiAoc2lkZXIubGluaykge1xuICAgICAgICBsaW5rcy5wdXNoKHNpZGVyLmxpbmspO1xuICAgICAgfVxuICAgICAgaWYgKHNpZGVyLmNoaWxkcmVuICYmIHNpZGVyLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5nZXRBbGxMaW5rcyhzaWRlci5jaGlsZHJlbiwgbGlua3MpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhY3RHdWFyZENhbkFjdGl2ZTogQ2FuQWN0aXZhdGVGbiA9IChfLCBzdGF0ZSkgPT4gaW5qZWN0KEFjdEd1YXJkU2VydmljZSkucHJvY2VzcyhzdGF0ZS51cmwpO1xuZXhwb3J0IGNvbnN0IGFjdEd1YXJkQ2FuQWN0aXZlQ2hpbGQ6IENhbkFjdGl2YXRlQ2hpbGRGbiA9IChfLCBzdGF0ZSkgPT4gaW5qZWN0KEFjdEd1YXJkU2VydmljZSkucHJvY2VzcyhzdGF0ZS51cmwpO1xuIl19
|