@yelon/bis 17.2.0 → 17.2.2
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 +159 -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 +182 -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 +179 -0
- package/esm2022/yunzai-widgets/yunzai-user.component.mjs +119 -0
- package/esm2022/yunzai-widgets/yunzai-widget.module.mjs +62 -0
- package/esm2022/yunzai-widgets/yunzai-widgets.mjs +5 -0
- package/fesm2022/bis.mjs +552 -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 +395 -2781
- package/fesm2022/layout.mjs.map +1 -1
- package/fesm2022/yunzai-widgets.mjs +561 -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 +13 -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 +22 -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 +24 -0
- package/yunzai-widgets/yunzai-user.component.d.ts +21 -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 'express';
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL3NyYy9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbkUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUE4QjtJQUNwRCxHQUFHLEVBQUUsZUFBZTtJQUNwQixHQUFHLEVBQUUsWUFBWTtJQUNqQixHQUFHLEVBQUUscUJBQXFCO0lBQzFCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLDZCQUE2QjtJQUNsQyxHQUFHLEVBQUUsc0JBQXNCO0lBQzNCLEdBQUcsRUFBRSxtQkFBbUI7SUFDeEIsR0FBRyxFQUFFLDRCQUE0QjtJQUNqQyxHQUFHLEVBQUUsV0FBVztJQUNoQixHQUFHLEVBQUUscUJBQXFCO0lBQzFCLEdBQUcsRUFBRSxvQkFBb0I7SUFDekIsR0FBRyxFQUFFLGlCQUFpQjtJQUN0QixHQUFHLEVBQUUsT0FBTztJQUNaLEdBQUcsRUFBRSxtQkFBbUI7SUFDeEIsR0FBRyxFQUFFLE9BQU87Q0FDYixDQUFDO0FBRUYsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQXFCO0lBQ3hELE1BQU0sR0FBRyxHQUErQixFQUFFLENBQUM7SUFDM0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ25ELElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7UUFDN0MsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsV0FBVyxDQUFDLFFBQWtCLEVBQUUsRUFBb0I7SUFDbEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMvRCxPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUMxRCxRQUFRLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQU9ELE1BQU0sVUFBVSxJQUFJLENBQUMsUUFBa0IsRUFBRSxHQUFXO0lBQ2xELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFDLFFBQWtCO0lBQ3hDLFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBVSxDQUFDLENBQUM7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwUmVzcG9uc2VCYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcblxuaW1wb3J0IHsgWUFfU0VSVklDRV9UT0tFTiB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IFlVTlpBSV9JMThOX1RPS0VOIH0gZnJvbSAnQHllbG9uL3RoZW1lJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBOek5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL25vdGlmaWNhdGlvbic7XG5cbmV4cG9ydCBjb25zdCBDT0RFTUVTU0FHRTogeyBba2V5OiBudW1iZXJdOiBzdHJpbmcgfSA9IHtcbiAgMjAwOiAn5pyN5Yqh5Zmo5oiQ5Yqf6L+U5Zue6K+35rGC55qE5pWw5o2u44CCJyxcbiAgMjAxOiAn5paw5bu65oiW5L+u5pS55pWw5o2u5oiQ5Yqf44CCJyxcbiAgMjAyOiAn5LiA5Liq6K+35rGC5bey57uP6L+b5YWl5ZCO5Y+w5o6S6Zif77yI5byC5q2l5Lu75Yqh77yJ44CCJyxcbiAgMjA0OiAn5Yig6Zmk5pWw5o2u5oiQ5Yqf44CCJyxcbiAgNDAwOiAn5Y+R5Ye655qE6K+35rGC5pyJ6ZSZ6K+v77yM5pyN5Yqh5Zmo5rKh5pyJ6L+b6KGM5paw5bu65oiW5L+u5pS55pWw5o2u55qE5pON5L2c44CCJyxcbiAgNDAxOiAn55So5oi35rKh5pyJ5p2D6ZmQ77yI5Luk54mM44CB55So5oi35ZCN44CB5a+G56CB6ZSZ6K+v77yJ44CCJyxcbiAgNDAzOiAn55So5oi35b6X5Yiw5o6I5p2D77yM5L2G5piv6K6/6Zeu5piv6KKr56aB5q2i55qE44CCJyxcbiAgNDA0OiAn5Y+R5Ye655qE6K+35rGC6ZKI5a+555qE5piv5LiN5a2Y5Zyo55qE6K6w5b2V77yM5pyN5Yqh5Zmo5rKh5pyJ6L+b6KGM5pON5L2c44CCJyxcbiAgNDA2OiAn6K+35rGC55qE5qC85byP5LiN5Y+v5b6X44CCJyxcbiAgNDEwOiAn6K+35rGC55qE6LWE5rqQ6KKr5rC45LmF5Yig6Zmk77yM5LiU5LiN5Lya5YaN5b6X5Yiw55qE44CCJyxcbiAgNDIyOiAn5b2T5Yib5bu65LiA5Liq5a+56LGh5pe277yM5Y+R55Sf5LiA5Liq6aqM6K+B6ZSZ6K+v44CCJyxcbiAgNTAwOiAn5pyN5Yqh5Zmo5Y+R55Sf6ZSZ6K+v77yM6K+35qOA5p+l5pyN5Yqh5Zmo44CCJyxcbiAgNTAyOiAn572R5YWz6ZSZ6K+v44CCJyxcbiAgNTAzOiAn5pyN5Yqh5LiN5Y+v55So77yM5pyN5Yqh5Zmo5pqC5pe26L+H6L295oiW57u05oqk44CCJyxcbiAgNTA0OiAn572R5YWz6LaF5pe244CCJ1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkZGl0aW9uYWxIZWFkZXJzKGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IHtcbiAgY29uc3QgcmVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICBjb25zdCBsYW5nID0gaW5qZWN0KFlVTlpBSV9JMThOX1RPS0VOKS5jdXJyZW50TGFuZztcbiAgaWYgKCFoZWFkZXJzPy5oYXMoJ0FjY2VwdC1MYW5ndWFnZScpICYmIGxhbmcpIHtcbiAgICByZXNbJ0FjY2VwdC1MYW5ndWFnZSddID0gbGFuZztcbiAgfVxuXG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1N0YXR1cyhpbmplY3RvcjogSW5qZWN0b3IsIGV2OiBIdHRwUmVzcG9uc2VCYXNlKTogdm9pZCB7XG4gIGlmICgoZXYuc3RhdHVzID49IDIwMCAmJiBldi5zdGF0dXMgPCAzMDApIHx8IGV2LnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGVycm9ydGV4dCA9IENPREVNRVNTQUdFW2V2LnN0YXR1c10gfHwgZXYuc3RhdHVzVGV4dDtcbiAgaW5qZWN0b3IuZ2V0KE56Tm90aWZpY2F0aW9uU2VydmljZSkuZXJyb3IoYOivt+axgumUmeivryAke2V2LnN0YXR1c306ICR7ZXYudXJsfWAsIGVycm9ydGV4dCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVUaHJvd0h0dHBFcnJvciB7XG4gIGJvZHk6IE56U2FmZUFueTtcbiAgX3Rocm93OiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ29UbyhpbmplY3RvcjogSW5qZWN0b3IsIHVybDogc3RyaW5nKTogdm9pZCB7XG4gIHNldFRpbWVvdXQoKCkgPT4gaW5qZWN0b3IuZ2V0KFJvdXRlcikubmF2aWdhdGVCeVVybCh1cmwpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvTG9naW4oaW5qZWN0b3I6IEluamVjdG9yKTogdm9pZCB7XG4gIGluamVjdG9yLmdldChOek5vdGlmaWNhdGlvblNlcnZpY2UpLmVycm9yKGDmnKrnmbvlvZXmiJbnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZXjgIJgLCBgYCk7XG4gIGdvVG8oaW5qZWN0b3IsIGluamVjdG9yLmdldChZQV9TRVJWSUNFX1RPS0VOKS5sb2dpbl91cmwhKTtcbn1cbiJdfQ==
|
|
@@ -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,182 @@
|
|
|
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 { TokenService } 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(TokenService);
|
|
28
|
+
this.httpClient = inject(HttpClient);
|
|
29
|
+
this.settingService = inject(SettingsService);
|
|
30
|
+
this.i18n = inject(YUNZAI_I18N_TOKEN);
|
|
31
|
+
}
|
|
32
|
+
load() {
|
|
33
|
+
let defaultLang = this.settingService.layout.lang || this.i18n.defaultLang;
|
|
34
|
+
const [setTenant] = useLocalStorageTenant();
|
|
35
|
+
const [setUser, getUser] = useLocalStorageUser();
|
|
36
|
+
const [setHeader] = useLocalStorageHeader();
|
|
37
|
+
const [setProject] = useLocalStorageProjectInfo();
|
|
38
|
+
const [setDefaultRoute] = useLocalStorageDefaultRoute();
|
|
39
|
+
const [setCurrent] = useLocalStorageCurrent();
|
|
40
|
+
return this.token().pipe(mergeMap((token) => {
|
|
41
|
+
inject(YunzaiConfigService).set('auth', {
|
|
42
|
+
token_send_key: 'Authorization',
|
|
43
|
+
token_send_template: `${token.token_type} \${access_token}`,
|
|
44
|
+
token_send_place: 'header'
|
|
45
|
+
});
|
|
46
|
+
this.tokenService.set(token);
|
|
47
|
+
return of(void 0);
|
|
48
|
+
}), mergeMap(() => {
|
|
49
|
+
return combineLatest([
|
|
50
|
+
this.httpClient.get(`/auth/user`),
|
|
51
|
+
this.httpClient.get(`/auth/allheader/v2`),
|
|
52
|
+
this.httpClient.get(`/app-manager/project/info`)
|
|
53
|
+
]).pipe(map(([user, header, project]) => {
|
|
54
|
+
setUser(user.principal);
|
|
55
|
+
setTenant(user.tenantId);
|
|
56
|
+
setHeader(header.data);
|
|
57
|
+
setProject(project.data);
|
|
58
|
+
return void 0;
|
|
59
|
+
}));
|
|
60
|
+
}), mergeMap(() => {
|
|
61
|
+
return this.i18n.loadLangData(defaultLang).pipe(map((langData) => {
|
|
62
|
+
this.i18n.use(defaultLang, langData);
|
|
63
|
+
return void 0;
|
|
64
|
+
}));
|
|
65
|
+
}), mergeMap(() => {
|
|
66
|
+
const yunzaiUser = getUser();
|
|
67
|
+
const yunzaiMenus = deepCopy(yunzaiUser.menu).filter(m => m.systemCode && m.systemCode === this.config.systemCode);
|
|
68
|
+
const currentMenu = yunzaiMenus.pop();
|
|
69
|
+
if (currentMenu) {
|
|
70
|
+
this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });
|
|
71
|
+
this.settingService.setUser({
|
|
72
|
+
name: yunzaiUser.realname,
|
|
73
|
+
avatar: `${this.config.baseUrl}/filecenter/file/${yunzaiUser.avatarId}` || '',
|
|
74
|
+
email: yunzaiUser.email
|
|
75
|
+
});
|
|
76
|
+
this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';
|
|
77
|
+
this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');
|
|
78
|
+
const abilities = [];
|
|
79
|
+
generateAbility([currentMenu], abilities, '');
|
|
80
|
+
this.aclService.attachRole(yunzaiUser?.roles
|
|
81
|
+
.map((role) => {
|
|
82
|
+
return role.roleValue;
|
|
83
|
+
})
|
|
84
|
+
.filter((a) => !!a) || []);
|
|
85
|
+
this.aclService.attachAbility(abilities);
|
|
86
|
+
this.menuService.add([currentMenu]);
|
|
87
|
+
setCurrent({
|
|
88
|
+
name: currentMenu.text,
|
|
89
|
+
intro: currentMenu.intro || '',
|
|
90
|
+
icon: currentMenu.appIconUrl || './assets/tmp/img/avatar.jpg'
|
|
91
|
+
});
|
|
92
|
+
const attributes = currentMenu.attribute;
|
|
93
|
+
if (attributes) {
|
|
94
|
+
const attr = JSON.parse(attributes);
|
|
95
|
+
if (attr && attr.defaultRoute) {
|
|
96
|
+
setDefaultRoute(attr.defaultRoute);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
setDefaultRoute('/displayIndex');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
setDefaultRoute('/displayIndex');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return of(void 0);
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
token() {
|
|
110
|
+
if (this.config.loginForm) {
|
|
111
|
+
return this.httpClient.post(`/auth/oauth/token?_allow_anonymous=true`, this.config.loginForm).pipe(map((response) => {
|
|
112
|
+
return response;
|
|
113
|
+
}));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const uri = encodeURIComponent(inject(WINDOW).location.href);
|
|
117
|
+
return this.httpClient
|
|
118
|
+
.get(`/cas-proxy/app/validate_full?callback=${uri}&_allow_anonymous=true×tamp=${new Date().getTime()}`)
|
|
119
|
+
.pipe(map((response) => {
|
|
120
|
+
switch (response.errcode) {
|
|
121
|
+
case 2000:
|
|
122
|
+
return response.data;
|
|
123
|
+
case 2001:
|
|
124
|
+
inject(WINDOW).location.href = response.msg;
|
|
125
|
+
throw Error("Cookie Error: Can't find Cas Cookie,So jump to login!");
|
|
126
|
+
default:
|
|
127
|
+
if (response.data) {
|
|
128
|
+
console.error(response.data);
|
|
129
|
+
throw Error(response.data);
|
|
130
|
+
}
|
|
131
|
+
else if (response.msg) {
|
|
132
|
+
console.error(response.msg);
|
|
133
|
+
throw Error(response.msg);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
console.error('cas unknown error');
|
|
137
|
+
throw Error('Unknown Error: Cas auth exception!');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiStartupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
144
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiStartupService }); }
|
|
145
|
+
}
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: YunzaiStartupService, decorators: [{
|
|
147
|
+
type: Injectable
|
|
148
|
+
}] });
|
|
149
|
+
export function mapYzSideToYelonMenu(menus) {
|
|
150
|
+
menus.forEach(menu => {
|
|
151
|
+
if (menu.children && menu.hideChildren) {
|
|
152
|
+
menu.children.forEach(c => (c.hide = true));
|
|
153
|
+
}
|
|
154
|
+
menu.badgeDot = menu.badge_dot || null;
|
|
155
|
+
menu.badgeStatus = menu.badge_status || null;
|
|
156
|
+
menu.shortcutRoot = menu.shortcut_root || null;
|
|
157
|
+
menu.reuse = true;
|
|
158
|
+
if (menu.children) {
|
|
159
|
+
mapYzSideToYelonMenu(menu.children);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
export function generateAbility(menus, abilities, prefix) {
|
|
164
|
+
menus.forEach(menu => {
|
|
165
|
+
if (menu.link) {
|
|
166
|
+
prefix += menu.link;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
prefix += '';
|
|
170
|
+
}
|
|
171
|
+
if (menu.menuAuths) {
|
|
172
|
+
menu.menuAuths.forEach((a) => {
|
|
173
|
+
abilities.push(`${prefix}:${a}`);
|
|
174
|
+
abilities.push(a);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
if (menu.children) {
|
|
178
|
+
generateAbility(menu.children, abilities, prefix);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnR1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL3NyYy9zdGFydHVwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFlLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUVMLFdBQVcsRUFDWCxlQUFlLEVBQ2YsWUFBWSxFQUNaLGlCQUFpQixFQUVsQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQ0wsUUFBUSxFQUNSLHNCQUFzQixFQUN0QiwyQkFBMkIsRUFDM0IscUJBQXFCLEVBQ3JCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLE1BQU0sRUFDTixtQkFBbUIsRUFHcEIsTUFBTSxhQUFhLENBQUM7O0FBR3JCLE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsT0FBTztRQUNMLG9CQUFvQjtRQUNwQjtZQUNFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLFVBQVUsRUFBRSxDQUFDLGNBQW9DLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDakYsSUFBSSxFQUFFLENBQUMsb0JBQW9CLENBQUM7WUFDNUIsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxP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QUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLG9CQUFvQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxLQUFtQixFQUFFLFNBQW1CLEVBQUUsTUFBYztJQUN0RixLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ25CLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2YsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUU7Z0JBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIGluamVjdCwgSW5qZWN0YWJsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFDTFNlcnZpY2UgfSBmcm9tICdAeWVsb24vYWNsJztcbmltcG9ydCB7IElUb2tlbk1vZGVsLCBUb2tlblNlcnZpY2UgfSBmcm9tICdAeWVsb24vYXV0aCc7XG5pbXBvcnQgeyBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJ0B5ZWxvbi9iaXMvY29uZmlnJztcbmltcG9ydCB7XG4gIE1lbnUsXG4gIE1lbnVTZXJ2aWNlLFxuICBTZXR0aW5nc1NlcnZpY2UsXG4gIFRpdGxlU2VydmljZSxcbiAgWVVOWkFJX0kxOE5fVE9LRU4sXG4gIFl1bnphaUh0dHBJMThOU2VydmljZVxufSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHtcbiAgZGVlcENvcHksXG4gIHVzZUxvY2FsU3RvcmFnZUN1cnJlbnQsXG4gIHVzZUxvY2FsU3RvcmFnZURlZmF1bHRSb3V0ZSxcbiAgdXNlTG9jYWxTdG9yYWdlSGVhZGVyLFxuICB1c2VMb2NhbFN0b3JhZ2VQcm9qZWN0SW5mbyxcbiAgdXNlTG9jYWxTdG9yYWdlVGVuYW50LFxuICB1c2VMb2NhbFN0b3JhZ2VVc2VyLFxuICBXSU5ET1csXG4gIFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gIFl1bnphaU1lbnUsXG4gIFl1bnphaU1lbnVBdHRyaWJ1dGVcbn0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVZdW56YWlTdGFydHVwKCk6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIFl1bnphaVN0YXJ0dXBTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IChzdGFydHVwU2VydmljZTogWXVuemFpU3RhcnR1cFNlcnZpY2UpID0+ICgpID0+IHN0YXJ0dXBTZXJ2aWNlLmxvYWQoKSxcbiAgICAgIGRlcHM6IFtZdW56YWlTdGFydHVwU2VydmljZV0sXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXTtcbn1cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBZdW56YWlTdGFydHVwU2VydmljZSB7XG4gIHByaXZhdGUgY29uZmlnID0gbWVyZ2VCaXNDb25maWcoaW5qZWN0KFl1bnphaUNvbmZpZ1NlcnZpY2UpKTtcbiAgcHJpdmF0ZSBtZW51U2VydmljZSA9IGluamVjdChNZW51U2VydmljZSk7XG4gIHByaXZhdGUgYWNsU2VydmljZSA9IGluamVjdChBQ0xTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0aXRsZVNlcnZpY2UgPSBpbmplY3QoVGl0bGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2tlblNlcnZpY2UgPSBpbmplY3QoVG9rZW5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KFNldHRpbmdzU2VydmljZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdDxZdW56YWlIdHRwSTE4TlNlcnZpY2U+KFlVTlpBSV9JMThOX1RPS0VOKTtcblxuICBsb2FkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxldCBkZWZhdWx0TGFuZzogc3RyaW5nID0gdGhpcy5zZXR0aW5nU2VydmljZS5sYXlvdXQubGFuZyB8fCB0aGlzLmkxOG4uZGVmYXVsdExhbmc7XG4gICAgY29uc3QgW3NldFRlbmFudF0gPSB1c2VMb2NhbFN0b3JhZ2VUZW5hbnQoKTtcbiAgICBjb25zdCBbc2V0VXNlciwgZ2V0VXNlcl0gPSB1c2VMb2NhbFN0b3JhZ2VVc2VyKCk7XG4gICAgY29uc3QgW3NldEhlYWRlcl0gPSB1c2VMb2NhbFN0b3JhZ2VIZWFkZXIoKTtcbiAgICBjb25zdCBbc2V0UHJvamVjdF0gPSB1c2VMb2NhbFN0b3JhZ2VQcm9qZWN0SW5mbygpO1xuICAgIGNvbnN0IFtzZXREZWZhdWx0Um91dGVdID0gdXNlTG9jYWxTdG9yYWdlRGVmYXVsdFJvdXRlKCk7XG4gICAgY29uc3QgW3NldEN1cnJlbnRdID0gdXNlTG9jYWxTdG9yYWdlQ3VycmVudCgpO1xuICAgIHJldHVybiB0aGlzLnRva2VuKCkucGlwZShcbiAgICAgIG1lcmdlTWFwKCh0b2tlbjogSVRva2VuTW9kZWwpID0+IHtcbiAgICAgICAgaW5qZWN0KFl1bnphaUNvbmZpZ1NlcnZpY2UpLnNldCgnYXV0aCcsIHtcbiAgICAgICAgICB0b2tlbl9zZW5kX2tleTogJ0F1dGhvcml6YXRpb24nLFxuICAgICAgICAgIHRva2VuX3NlbmRfdGVtcGxhdGU6IGAke3Rva2VuLnRva2VuX3R5cGV9IFxcJHthY2Nlc3NfdG9rZW59YCxcbiAgICAgICAgICB0b2tlbl9zZW5kX3BsYWNlOiAnaGVhZGVyJ1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b2tlblNlcnZpY2Uuc2V0KHRva2VuKTtcbiAgICAgICAgcmV0dXJuIG9mKHZvaWQgMCk7XG4gICAgICB9KSxcbiAgICAgIG1lcmdlTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoYC9hdXRoL3VzZXJgKSxcbiAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGAvYXV0aC9hbGxoZWFkZXIvdjJgKSxcbiAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGAvYXBwLW1hbmFnZXIvcHJvamVjdC9pbmZvYClcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICBtYXAoKFt1c2VyLCBoZWFkZXIsIHByb2plY3RdOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgIHNldFVzZXIodXNlci5wcmluY2lwYWwpO1xuICAgICAgICAgICAgc2V0VGVuYW50KHVzZXIudGVuYW50SWQpO1xuICAgICAgICAgICAgc2V0SGVhZGVyKGhlYWRlci5kYXRhKTtcbiAgICAgICAgICAgIHNldFByb2plY3QocHJvamVjdC5kYXRhKTtcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pMThuLmxvYWRMYW5nRGF0YShkZWZhdWx0TGFuZykucGlwZShcbiAgICAgICAgICBtYXAoKGxhbmdEYXRhOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaTE4bi51c2UoZGVmYXVsdExhbmcsIGxhbmdEYXRhKTtcbiAgICAgICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgbWVyZ2VNYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB5dW56YWlVc2VyID0gZ2V0VXNlcigpITtcbiAgICAgICAgY29uc3QgeXVuemFpTWVudXM6IFl1bnphaU1lbnVbXSA9IGRlZXBDb3B5KHl1bnphaVVzZXIubWVudSkuZmlsdGVyKFxuICAgICAgICAgIG0gPT4gbS5zeXN0ZW1Db2RlICYmIG0uc3lzdGVtQ29kZSA9PT0gdGhpcy5jb25maWcuc3lzdGVtQ29kZVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjdXJyZW50TWVudSA9IHl1bnphaU1lbnVzLnBvcCgpO1xuICAgICAgICBpZiAoY3VycmVudE1lbnUpIHtcbiAgICAgICAgICB0aGlzLnNldHRpbmdTZXJ2aWNlLnNldEFwcCh7IG5hbWU6IGN1cnJlbnRNZW51LnRleHQsIGRlc2NyaXB0aW9uOiBjdXJyZW50TWVudS5pbnRybyB9KTtcbiAgICAgICAgICB0aGlzLnNldHRpbmdTZXJ2aWNlLnNldFVzZXIoe1xuICAgICAgICAgICAgbmFtZTogeXVuemFpVXNlci5yZWFsbmFtZSxcbiAgICAgICAgICAgIGF2YXRhcjogYCR7dGhpcy5jb25maWcuYmFzZVVybH0vZmlsZWNlbnRlci9maWxlLyR7eXVuemFpVXNlci5hdmF0YXJJZH1gIHx8ICcnLFxuICAgICAgICAgICAgZW1haWw6IHl1bnphaVVzZXIuZW1haWxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5kZWZhdWx0ID0gY3VycmVudE1lbnUgJiYgY3VycmVudE1lbnUudGV4dCA/IGN1cnJlbnRNZW51LnRleHQgOiAnZGVmYXVsdCBhcHBsaWNhdGlvbiBuYW1lJztcbiAgICAgICAgICB0aGlzLnRpdGxlU2VydmljZS5zZXRUaXRsZShjdXJyZW50TWVudSAmJiBjdXJyZW50TWVudS50ZXh0ID8gY3VycmVudE1lbnUudGV4dCA6ICdubyB0aXRsZScpO1xuICAgICAgICAgIGNvbnN0IGFiaWxpdGllczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICBnZW5lcmF0ZUFiaWxpdHkoW2N1cnJlbnRNZW51XSwgYWJpbGl0aWVzLCAnJyk7XG4gICAgICAgICAgdGhpcy5hY2xTZXJ2aWNlLmF0dGFjaFJvbGUoXG4gICAgICAgICAgICB5dW56YWlVc2VyPy5yb2xlc1xuICAgICAgICAgICAgICAubWFwKChyb2xlOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm9sZS5yb2xlVmFsdWU7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGE6IE56U2FmZUFueSkgPT4gISFhKSB8fCBbXVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5hY2xTZXJ2aWNlLmF0dGFjaEFiaWxpdHkoYWJpbGl0aWVzKTtcbiAgICAgICAgICB0aGlzLm1lbnVTZXJ2aWNlLmFkZChbY3VycmVudE1lbnUgYXMgTWVudV0pO1xuICAgICAgICAgIHNldEN1cnJlbnQoe1xuICAgICAgICAgICAgbmFtZTogY3VycmVudE1lbnUudGV4dCxcbiAgICAgICAgICAgIGludHJvOiBjdXJyZW50TWVudS5pbnRybyB8fCAnJyxcbiAgICAgICAgICAgIGljb246IGN1cnJlbnRNZW51LmFwcEljb25VcmwgfHwgJy4vYXNzZXRzL3RtcC9pbWcvYXZhdGFyLmpwZydcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVzID0gY3VycmVudE1lbnUuYXR0cmlidXRlO1xuICAgICAgICAgIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyOiBZdW56YWlNZW51QXR0cmlidXRlID0gSlNPTi5wYXJzZShhdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIGlmIChhdHRyICYmIGF0dHIuZGVmYXVsdFJvdXRlKSB7XG4gICAgICAgICAgICAgIHNldERlZmF1bHRSb3V0ZShhdHRyLmRlZmF1bHRSb3V0ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXREZWZhdWx0Um91dGUoJy9kaXNwbGF5SW5kZXgnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0RGVmYXVsdFJvdXRlKCcvZGlzcGxheUluZGV4Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZih2b2lkIDApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgdG9rZW4oKTogT2JzZXJ2YWJsZTxJVG9rZW5Nb2RlbD4ge1xuICAgIGlmICh0aGlzLmNvbmZpZy5sb2dpbkZvcm0pIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdChgL2F1dGgvb2F1dGgvdG9rZW4/X2FsbG93X2Fub255bW91cz10cnVlYCwgdGhpcy5jb25maWcubG9naW5Gb3JtKS5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB1cmkgPSBlbmNvZGVVUklDb21wb25lbnQoaW5qZWN0KFdJTkRPVykubG9jYXRpb24uaHJlZik7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XG4gICAgICAgIC5nZXQoYC9jYXMtcHJveHkvYXBwL3ZhbGlkYXRlX2Z1bGw/Y2FsbGJhY2s9JHt1cml9Jl9hbGxvd19hbm9ueW1vdXM9dHJ1ZSZ0aW1lc3RhbXA9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBOelNhZmVBbnkpID0+IHtcbiAgICAgICAgICAgIHN3aXRjaCAocmVzcG9uc2UuZXJyY29kZSkge1xuICAgICAgICAgICAgICBjYXNlIDIwMDA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgICAgICAgICAgIGNhc2UgMjAwMTpcbiAgICAgICAgICAgICAgICBpbmplY3QoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gcmVzcG9uc2UubXNnO1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiQ29va2llIEVycm9yOiBDYW4ndCBmaW5kIENhcyBDb29raWUsU28ganVtcCB0byBsb2dpbiFcIik7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLm1zZykge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXNwb25zZS5tc2cpO1xuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IocmVzcG9uc2UubXNnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignY2FzIHVua25vd24gZXJyb3InKTtcbiAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdVbmtub3duIEVycm9yOiBDYXMgYXV0aCBleGNlcHRpb24hJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBZelNpZGVUb1llbG9uTWVudShtZW51czogWXVuemFpTWVudVtdKTogdm9pZCB7XG4gIG1lbnVzLmZvckVhY2gobWVudSA9PiB7XG4gICAgaWYgKG1lbnUuY2hpbGRyZW4gJiYgbWVudS5oaWRlQ2hpbGRyZW4pIHtcbiAgICAgIG1lbnUuY2hpbGRyZW4uZm9yRWFjaChjID0+IChjLmhpZGUgPSB0cnVlKSk7XG4gICAgfVxuICAgIG1lbnUuYmFkZ2VEb3QgPSBtZW51LmJhZGdlX2RvdCB8fCBudWxsO1xuICAgIG1lbnUuYmFkZ2VTdGF0dXMgPSBtZW51LmJhZGdlX3N0YXR1cyB8fCBudWxsO1xuICAgIG1lbnUuc2hvcnRjdXRSb290ID0gbWVudS5zaG9ydGN1dF9yb290IHx8IG51bGw7XG4gICAgbWVudS5yZXVzZSA9IHRydWU7XG4gICAgaWYgKG1lbnUuY2hpbGRyZW4pIHtcbiAgICAgIG1hcFl6U2lkZVRvWWVsb25NZW51KG1lbnUuY2hpbGRyZW4pO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUFiaWxpdHkobWVudXM6IFl1bnphaU1lbnVbXSwgYWJpbGl0aWVzOiBzdHJpbmdbXSwgcHJlZml4OiBzdHJpbmcpOiB2b2lkIHtcbiAgbWVudXMuZm9yRWFjaChtZW51ID0+IHtcbiAgICBpZiAobWVudS5saW5rKSB7XG4gICAgICBwcmVmaXggKz0gbWVudS5saW5rO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVmaXggKz0gJyc7XG4gICAgfVxuICAgIGlmIChtZW51Lm1lbnVBdXRocykge1xuICAgICAgbWVudS5tZW51QXV0aHMuZm9yRWFjaCgoYTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGFiaWxpdGllcy5wdXNoKGAke3ByZWZpeH06JHthfWApO1xuICAgICAgICBhYmlsaXRpZXMucHVzaChhKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChtZW51LmNoaWxkcmVuKSB7XG4gICAgICBnZW5lcmF0ZUFiaWxpdHkobWVudS5jaGlsZHJlbiwgYWJpbGl0aWVzLCBwcmVmaXgpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXVuemFpLWFjdC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9zcmMveXVuemFpLWFjdC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFNUUsT0FBTyxFQUNMLFFBQVEsRUFDUixHQUFHLEVBSUgsbUJBQW1CLEVBRXBCLE1BQU0sYUFBYSxDQUFDOzs7O0FBSXJCLE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ1UsYUFBa0MsRUFDbEMsWUFBaUMsRUFDakMsTUFBYztRQUZkLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQUNsQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQVBoQixRQUFHLEdBQXlCLHVCQUF1QixDQUFDO1FBQ3BELFVBQUssR0FBZ0IsRUFBRSxDQUFDO1FBQ3hCLFVBQUssR0FBYSxFQUFFLENBQUM7UUFPM0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxHQUFHLG1CQUFtQixFQUFFLENBQUM7UUFDMUMsTUFBTSxJQUFJLEdBQWUsT0FBTyxFQUFHLENBQUM7UUFDcEMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QixhQUFhO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUUsSUFBSSxDQUFDLElBQWtCLElBQUksRUFBRSxDQUFDLENBQUMsTUFB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QztZQUNELElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBL0VVLGVBQWU7a0hBQWYsZUFBZSxjQURGLE1BQU07OzJGQUNuQixlQUFlO2tCQUQzQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUFtRmxDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFrQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pHLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF1QixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZUNoaWxkRm4sIENhbkFjdGl2YXRlRm4sIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHLCBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJ0B5ZWxvbi9iaXMvY29uZmlnJztcbmltcG9ydCB7IE1lbnUgfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHtcbiAgZGVlcENvcHksXG4gIGxvZyxcbiAgWXVuemFpQnVzaW5lc3NDb25maWcsXG4gIFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gIFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gIHVzZUxvY2FsU3RvcmFnZVVzZXIsXG4gIFl1bnphaVVzZXJcbn0gZnJvbSAnQHllbG9uL3V0aWwnO1xuaW1wb3J0IHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBY3RHdWFyZFNlcnZpY2Uge1xuICBwcml2YXRlIGJpczogWXVuemFpQnVzaW5lc3NDb25maWcgPSBCVVNJTkVTU19ERUZBVUxUX0NPTkZJRztcbiAgcHJpdmF0ZSBtZW51czogTnpTYWZlQW55W10gPSBbXTtcbiAgcHJpdmF0ZSBsaW5rczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXRoVG9SZWdleHA6IFBhdGhUb1JlZ2V4cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHtcbiAgICBsb2coJ2FjdDogJyk7XG4gICAgdGhpcy5iaXMgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNvbmZpZ1NlcnZpY2UpO1xuICAgIGxvZygnYWN0OiBjb25maWcgJywgdGhpcy5iaXMpO1xuICAgIGNvbnN0IFssIGdldFVzZXJdID0gdXNlTG9jYWxTdG9yYWdlVXNlcigpO1xuICAgIGNvbnN0IHVzZXI6IFl1bnphaVVzZXIgPSBnZXRVc2VyKCkhO1xuICAgIGxvZygnYWN0OiB1c2VyICcsIHVzZXIpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aGlzLm1lbnVzID0gZGVlcENvcHkoKHVzZXIubWVudSBhcyBOelNhZmVBbnkpIHx8IFtdKS5maWx0ZXIoXG4gICAgICAobTogTWVudSkgPT4gbS5zeXN0ZW1Db2RlICYmIG0uc3lzdGVtQ29kZSA9PT0gdGhpcy5iaXMuc3lzdGVtQ29kZVxuICAgICkgYXMgTWVudVtdO1xuICAgIGxvZygnYWN0OiBtZW51cyAnLCB0aGlzLm1lbnVzKTtcbiAgICB0aGlzLmdldEFsbExpbmtzKHRoaXMubWVudXMsIHRoaXMubGlua3MpO1xuICAgIGxvZygnYWN0OiBsaW5rcyAnLCB0aGlzLmxpbmtzKTtcbiAgfVxuXG4gIHByb2Nlc3ModXJsOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsb2coJ2FjdDogY2FuIGFjdGl2YXRlICcsIHVybCk7XG4gICAgaWYgKHRoaXMucHJlSGFuZGxlKHVybCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBsb2coJ2FjdDogY2FuIGFjdGl2YXRlIGNoaWxkIHByZWhhbmRsZSBzdWNjZXNzJyk7XG4gICAgbGV0IGNhbmFjdGl2YXRlID0gZmFsc2U7XG4gICAgdGhpcy5saW5rcy5mb3JFYWNoKChsaW5rOiBzdHJpbmcpID0+IHtcbiAgICAgIC8vIHBhdGggPSAveHh4XG4gICAgICBpZiAobGluayA9PT0gdXJsLnNwbGl0KCc/JylbMF0pIHtcbiAgICAgICAgY2FuYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgICBsb2coYGFjdDogbGluayB2YWx1ZSAke2xpbmt9IGVxdWFscyB1cmwgdmFsdWUgJHt1cmx9YCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIHBhaHQgPSAveHh4Lzp4eFxuICAgICAgY29uc3QgcmVnZXhwOiBSZWdFeHAgPSB0aGlzLnBhdGhUb1JlZ2V4cC5zdHJpbmdUb1JlZ2V4cChsaW5rLCBudWxsLCBudWxsKTtcbiAgICAgIGxvZyhgYWN0OiAke2xpbmt9IHRlc3QgJHt1cmwuc3BsaXQoJz8nKVswXX1gKTtcbiAgICAgIGlmIChyZWdleHAudGVzdCh1cmwuc3BsaXQoJz8nKVswXSkpIHtcbiAgICAgICAgY2FuYWN0aXZhdGUgPSB0cnVlO1xuICAgICAgICBsb2coYGFjdDogdGVzdCB2YWx1ZSAke2NhbmFjdGl2YXRlfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGNhbmFjdGl2YXRlKSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBzdWNlc3NgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coYGFjdDogdGVzdCBlcnJvcmApO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkaXNwbGF5SW5kZXgnXSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJlSGFuZGxlKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHVybC5pbmNsdWRlcygnZXJyb3InKSB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdleGNlcHRpb24nKSB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdkaXNwbGF5SW5kZXgnKSB8fFxuICAgICAgdXJsID09PSAnJyB8fFxuICAgICAgdXJsID09PSBudWxsIHx8XG4gICAgICB1cmwgPT09ICcvJyB8fFxuICAgICAgdXJsLmluY2x1ZGVzKCdpZnJhbWVQYWdlJylcbiAgICApO1xuICB9XG5cbiAgZ2V0QWxsTGlua3MobWVudTogTWVudVtdLCBsaW5rczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBtZW51LmZvckVhY2goKHNpZGVyOiBNZW51KSA9PiB7XG4gICAgICBpZiAoc2lkZXIubGluaykge1xuICAgICAgICBsaW5rcy5wdXNoKHNpZGVyLmxpbmspO1xuICAgICAgfVxuICAgICAgaWYgKHNpZGVyLmNoaWxkcmVuICYmIHNpZGVyLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5nZXRBbGxMaW5rcyhzaWRlci5jaGlsZHJlbiwgbGlua3MpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhY3RHdWFyZENhbkFjdGl2ZTogQ2FuQWN0aXZhdGVGbiA9IChfLCBzdGF0ZSkgPT4gaW5qZWN0KEFjdEd1YXJkU2VydmljZSkucHJvY2VzcyhzdGF0ZS51cmwpO1xuZXhwb3J0IGNvbnN0IGFjdEd1YXJkQ2FuQWN0aXZlQ2hpbGQ6IENhbkFjdGl2YXRlQ2hpbGRGbiA9IChfLCBzdGF0ZSkgPT4gaW5qZWN0KEFjdEd1YXJkU2VydmljZSkucHJvY2VzcyhzdGF0ZS51cmwpO1xuIl19
|