@yelon/bis 12.0.18 → 13.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bis.d.ts +1 -0
- package/{esm2015/bis.js → esm2020/bis.mjs} +0 -0
- package/esm2020/layout/act.guard.mjs +108 -0
- package/{esm2015/layout/bis.config.js → esm2020/layout/bis.config.mjs} +0 -0
- package/esm2020/layout/contact/contact.component.mjs +492 -0
- package/esm2020/layout/contact/contact.service.mjs +146 -0
- package/esm2020/layout/layout.mjs +5 -0
- package/esm2020/layout/layout.module.mjs +73 -0
- package/{esm2015/layout/path-to-regexp.service.js → esm2020/layout/path-to-regexp.service.mjs} +9 -8
- package/{esm2015/layout/public_api.js → esm2020/layout/public_api.mjs} +3 -3
- package/esm2020/layout/stomp.config.mjs +18 -0
- package/{esm2015/layout/widgets/index.js → esm2020/layout/widgets/index.mjs} +0 -0
- package/esm2020/layout/widgets/yz.application.component.mjs +271 -0
- package/esm2020/layout/widgets/yz.clear-storage.component.mjs +45 -0
- package/esm2020/layout/widgets/yz.fullscreen.component.mjs +45 -0
- package/esm2020/layout/widgets/yz.i18n.component.mjs +115 -0
- package/esm2020/layout/widgets/yz.notify.component.mjs +184 -0
- package/esm2020/layout/widgets/yz.them-btn.component.mjs +196 -0
- package/esm2020/layout/widgets/yz.user.component.mjs +112 -0
- package/esm2020/layout/yz.auth.service.mjs +156 -0
- package/esm2020/layout/yz.basic.component.mjs +207 -0
- package/esm2020/layout/yz.default.interceptor.mjs +203 -0
- package/esm2020/layout/yz.i18n.service.mjs +93 -0
- package/esm2020/layout/yz.startup.service.mjs +137 -0
- package/esm2020/layout/yz.stomp.service.mjs +88 -0
- package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
- package/{esm2015/shared/public_api.js → esm2020/shared/public_api.mjs} +0 -0
- package/{esm2015/shared/shared-yelon.module.js → esm2020/shared/shared-yelon.module.mjs} +0 -0
- package/{esm2015/shared/shared-zorro.module.js → esm2020/shared/shared-zorro.module.mjs} +0 -0
- package/{esm2015/shared/shared.js → esm2020/shared/shared.mjs} +0 -0
- package/esm2020/shared/shared.module.mjs +116 -0
- package/{esm2015/shared/style-icons.js → esm2020/shared/style-icons.mjs} +0 -0
- package/fesm2015/{bis.js → bis.mjs} +1 -1
- package/fesm2015/bis.mjs.map +1 -0
- package/fesm2015/{layout.js → layout.mjs} +610 -279
- package/fesm2015/layout.mjs.map +1 -0
- package/fesm2015/{shared.js → shared.mjs} +101 -7
- package/fesm2015/shared.mjs.map +1 -0
- package/fesm2020/bis.mjs +6 -0
- package/fesm2020/bis.mjs.map +1 -0
- package/fesm2020/layout.mjs +2796 -0
- package/fesm2020/layout.mjs.map +1 -0
- package/fesm2020/shared.mjs +1106 -0
- package/fesm2020/shared.mjs.map +1 -0
- package/layout/act.guard.d.ts +3 -0
- package/layout/contact/contact.component.d.ts +4 -1
- package/layout/contact/contact.service.d.ts +4 -1
- package/layout/layout.d.ts +1 -3
- package/layout/layout.module.d.ts +18 -0
- package/layout/package.json +5 -6
- package/layout/path-to-regexp.service.d.ts +3 -0
- package/layout/public_api.d.ts +2 -0
- package/layout/widgets/yz.application.component.d.ts +3 -0
- package/layout/widgets/yz.clear-storage.component.d.ts +3 -0
- package/layout/widgets/yz.fullscreen.component.d.ts +3 -1
- package/layout/widgets/yz.i18n.component.d.ts +3 -0
- package/layout/widgets/yz.notify.component.d.ts +3 -0
- package/layout/widgets/yz.them-btn.component.d.ts +3 -0
- package/layout/widgets/yz.user.component.d.ts +3 -0
- package/layout/yz.auth.service.d.ts +3 -0
- package/layout/yz.basic.component.d.ts +11 -2
- package/layout/yz.default.interceptor.d.ts +3 -0
- package/layout/yz.i18n.service.d.ts +3 -0
- package/layout/yz.startup.service.d.ts +3 -0
- package/layout/yz.stomp.service.d.ts +6 -3
- package/package.json +46 -18
- package/shared/package.json +5 -6
- package/shared/shared-zorro.module.d.ts +2 -2
- package/shared/shared.d.ts +1 -0
- package/shared/shared.module.d.ts +93 -0
- package/bis.metadata.json +0 -1
- package/bundles/bis.umd.js +0 -18
- package/bundles/bis.umd.js.map +0 -1
- package/bundles/layout.umd.js +0 -2671
- package/bundles/layout.umd.js.map +0 -1
- package/bundles/shared.umd.js +0 -1249
- package/bundles/shared.umd.js.map +0 -1
- package/esm2015/layout/act.guard.js +0 -115
- package/esm2015/layout/contact/contact.component.js +0 -434
- package/esm2015/layout/contact/contact.service.js +0 -150
- package/esm2015/layout/layout.js +0 -8
- package/esm2015/layout/layout.module.js +0 -47
- package/esm2015/layout/stomp.config.js +0 -20
- package/esm2015/layout/widgets/yz.application.component.js +0 -200
- package/esm2015/layout/widgets/yz.clear-storage.component.js +0 -39
- package/esm2015/layout/widgets/yz.fullscreen.component.js +0 -36
- package/esm2015/layout/widgets/yz.i18n.component.js +0 -78
- package/esm2015/layout/widgets/yz.notify.component.js +0 -157
- package/esm2015/layout/widgets/yz.them-btn.component.js +0 -146
- package/esm2015/layout/widgets/yz.user.component.js +0 -81
- package/esm2015/layout/yz.auth.service.js +0 -158
- package/esm2015/layout/yz.basic.component.js +0 -101
- package/esm2015/layout/yz.default.interceptor.js +0 -204
- package/esm2015/layout/yz.i18n.service.js +0 -102
- package/esm2015/layout/yz.startup.service.js +0 -138
- package/esm2015/layout/yz.stomp.service.js +0 -91
- package/esm2015/shared/shared.module.js +0 -22
- package/fesm2015/bis.js.map +0 -1
- package/fesm2015/layout.js.map +0 -1
- package/fesm2015/shared.js.map +0 -1
- package/layout/layout.metadata.json +0 -1
- package/shared/shared.metadata.json +0 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { HttpErrorResponse, HttpResponse, HttpResponseBase } from '@angular/common/http';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { BehaviorSubject, of, throwError } from 'rxjs';
|
|
5
|
+
import { catchError, filter, mergeMap, switchMap, take } from 'rxjs/operators';
|
|
6
|
+
import { NzNotificationService } from 'ng-zorro-antd/notification';
|
|
7
|
+
import { YA_SERVICE_TOKEN } from '@yelon/auth';
|
|
8
|
+
import { YUNZAI_I18N_TOKEN, _HttpClient } from '@yelon/theme';
|
|
9
|
+
import { WINDOW } from '@yelon/util';
|
|
10
|
+
import { YunzaiConfigService } from '@yelon/util/config';
|
|
11
|
+
import { log } from '@yelon/util/other';
|
|
12
|
+
import { mergeBisConfig } from './bis.config';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
const CODEMESSAGE = {
|
|
15
|
+
200: '服务器成功返回请求的数据。',
|
|
16
|
+
201: '新建或修改数据成功。',
|
|
17
|
+
202: '一个请求已经进入后台排队(异步任务)。',
|
|
18
|
+
204: '删除数据成功。',
|
|
19
|
+
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
|
|
20
|
+
401: '用户没有权限(令牌、用户名、密码错误)。',
|
|
21
|
+
403: '用户得到授权,但是访问是被禁止的。',
|
|
22
|
+
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
|
|
23
|
+
406: '请求的格式不可得。',
|
|
24
|
+
410: '请求的资源被永久删除,且不会再得到的。',
|
|
25
|
+
422: '当创建一个对象时,发生一个验证错误。',
|
|
26
|
+
500: '服务器发生错误,请检查服务器。',
|
|
27
|
+
502: '网关错误。',
|
|
28
|
+
503: '服务不可用,服务器暂时过载或维护。',
|
|
29
|
+
504: '网关超时。'
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* 默认HTTP拦截器,其注册细节见 `app.module.ts`
|
|
33
|
+
*/
|
|
34
|
+
export class YzDefaultInterceptor {
|
|
35
|
+
constructor(injector) {
|
|
36
|
+
this.injector = injector;
|
|
37
|
+
this.jump = false;
|
|
38
|
+
this.refreshToking = false;
|
|
39
|
+
this.refreshToken$ = new BehaviorSubject(null);
|
|
40
|
+
if (this.config.refreshTokenType === 'auth-refresh') {
|
|
41
|
+
console.error("can't use auth-refresh, please change yz.default.interceptor to default.interceptor!");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
get notification() {
|
|
45
|
+
return this.injector.get(NzNotificationService);
|
|
46
|
+
}
|
|
47
|
+
get tokenSrv() {
|
|
48
|
+
return this.injector.get(YA_SERVICE_TOKEN);
|
|
49
|
+
}
|
|
50
|
+
get http() {
|
|
51
|
+
return this.injector.get(_HttpClient);
|
|
52
|
+
}
|
|
53
|
+
get config() {
|
|
54
|
+
return mergeBisConfig(this.injector.get(YunzaiConfigService));
|
|
55
|
+
}
|
|
56
|
+
goTo(url) {
|
|
57
|
+
setTimeout(() => this.injector.get(Router).navigateByUrl(url));
|
|
58
|
+
}
|
|
59
|
+
checkStatus(ev) {
|
|
60
|
+
if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (ev instanceof HttpErrorResponse && (ev.error.message || ev.error.errorMessage)) {
|
|
64
|
+
if (ev.error.errorMessage) {
|
|
65
|
+
this.notification.error(`发生了一些错误 `, ev.error.errorMessage);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.notification.error(`发生了一些错误 `, ev.error.message);
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (ev instanceof HttpResponse && ev.body.errorMessage) {
|
|
73
|
+
this.notification.error(`发生了一些错误 `, ev.body.errorMessage);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const errortext = CODEMESSAGE[ev.status] || ev.statusText;
|
|
77
|
+
this.notification.error(`请求错误 ${ev.status}: ${ev.url}`, errortext);
|
|
78
|
+
}
|
|
79
|
+
ToLogin() {
|
|
80
|
+
this.notification.error(`未登录或登录状态已过期,5秒后将跳转到登录页面。`, ``);
|
|
81
|
+
setTimeout(() => {
|
|
82
|
+
localStorage.clear();
|
|
83
|
+
this.injector.get(WINDOW).location.href = `${this.config.baseUrl}/cas-proxy/app/logout`;
|
|
84
|
+
}, 5000);
|
|
85
|
+
}
|
|
86
|
+
reAttachToken(req) {
|
|
87
|
+
const token = this.tokenSrv.get()?.token;
|
|
88
|
+
return req.clone({
|
|
89
|
+
setHeaders: {
|
|
90
|
+
Authorization: `Bearer ${token}`
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
refreshTokenRequest() {
|
|
95
|
+
const model = this.tokenSrv.get();
|
|
96
|
+
const form = new FormData();
|
|
97
|
+
form.set('refresh_token', model?.refreshToken);
|
|
98
|
+
log('yz.default.interceptor: use the refresh token to request a new token', model?.refreshToken);
|
|
99
|
+
return this.http.post(`/auth/user/token/refresh?_allow_anonymous=true`, form);
|
|
100
|
+
}
|
|
101
|
+
tryRefreshToken(ev, req, next) {
|
|
102
|
+
// 连刷新Token的请求都错了,那就是真错了
|
|
103
|
+
if (['/auth/oauth/token'].some(url => req.url.includes(url))) {
|
|
104
|
+
this.ToLogin();
|
|
105
|
+
return throwError(ev);
|
|
106
|
+
}
|
|
107
|
+
// 正在刷新token,所有其他请求排队
|
|
108
|
+
if (this.refreshToking) {
|
|
109
|
+
return this.refreshToken$.pipe(filter(v => !!v), take(1), switchMap(() => next.handle(this.reAttachToken(req))));
|
|
110
|
+
}
|
|
111
|
+
//尝试调用刷新 Token
|
|
112
|
+
this.refreshToking = true;
|
|
113
|
+
this.refreshToken$.next(null);
|
|
114
|
+
// 处理Token
|
|
115
|
+
return this.refreshTokenRequest().pipe(switchMap(res => {
|
|
116
|
+
log('yz.default.interceptor: refresh token accessed -> ', res);
|
|
117
|
+
// 重新保存新 token
|
|
118
|
+
const { access_token, expires_in, refresh_token, scope, token_type } = res;
|
|
119
|
+
this.tokenSrv.set({
|
|
120
|
+
token: access_token,
|
|
121
|
+
expired: expires_in,
|
|
122
|
+
refreshToken: refresh_token,
|
|
123
|
+
tokenType: token_type,
|
|
124
|
+
scope
|
|
125
|
+
});
|
|
126
|
+
// 通知后续请求继续执行
|
|
127
|
+
this.refreshToking = false;
|
|
128
|
+
this.refreshToken$.next(res);
|
|
129
|
+
// 重新发起请求
|
|
130
|
+
return next.handle(this.reAttachToken(req));
|
|
131
|
+
}), catchError(err => {
|
|
132
|
+
this.refreshToking = false;
|
|
133
|
+
this.ToLogin();
|
|
134
|
+
return throwError(err);
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
getAdditionalHeaders(headers) {
|
|
138
|
+
const res = {};
|
|
139
|
+
const lang = this.injector.get(YUNZAI_I18N_TOKEN).currentLang;
|
|
140
|
+
if (!headers?.has('Accept-Language') && lang) {
|
|
141
|
+
res['Accept-Language'] = lang;
|
|
142
|
+
}
|
|
143
|
+
return res;
|
|
144
|
+
}
|
|
145
|
+
handleData(ev, req, next) {
|
|
146
|
+
this.checkStatus(ev);
|
|
147
|
+
switch (ev.status) {
|
|
148
|
+
case 200:
|
|
149
|
+
return of(ev);
|
|
150
|
+
case 401:
|
|
151
|
+
if (this.config.refreshTokenEnabled && this.config.refreshTokenType === 're-request') {
|
|
152
|
+
return this.tryRefreshToken(ev, req, next);
|
|
153
|
+
}
|
|
154
|
+
this.ToLogin();
|
|
155
|
+
break;
|
|
156
|
+
case 403:
|
|
157
|
+
case 404:
|
|
158
|
+
case 500:
|
|
159
|
+
if (this.jump) {
|
|
160
|
+
this.goTo(`/exception/${ev.status}`);
|
|
161
|
+
}
|
|
162
|
+
break;
|
|
163
|
+
default:
|
|
164
|
+
if (ev instanceof HttpErrorResponse) {
|
|
165
|
+
console.warn('未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起,请参考 https://ng.yunzainfo.com/docs/server 解决跨域问题', ev);
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
if (ev instanceof HttpErrorResponse) {
|
|
170
|
+
return throwError(ev);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
return of(ev);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
intercept(req, next) {
|
|
177
|
+
log('yz.default.interceptor.ts: ', 'request ', req);
|
|
178
|
+
// 统一加前缀
|
|
179
|
+
let url = req.url;
|
|
180
|
+
if (!url.startsWith('https://') && !url.startsWith('http://')) {
|
|
181
|
+
url = this.config.baseUrl + url;
|
|
182
|
+
}
|
|
183
|
+
if (url.includes('.json') && url.includes('assets')) {
|
|
184
|
+
url = req.url;
|
|
185
|
+
}
|
|
186
|
+
// 加入语言头
|
|
187
|
+
const newReq = req.clone({ url, setHeaders: this.getAdditionalHeaders(req.headers) });
|
|
188
|
+
return next.handle(newReq).pipe(mergeMap(ev => {
|
|
189
|
+
// 允许统一对请求错误处理
|
|
190
|
+
if (ev instanceof HttpResponseBase) {
|
|
191
|
+
return this.handleData(ev, newReq, next);
|
|
192
|
+
}
|
|
193
|
+
// 若一切都正常,则后续操作
|
|
194
|
+
return of(ev);
|
|
195
|
+
}), catchError((err) => this.handleData(err, newReq, next)));
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
YzDefaultInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzDefaultInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
199
|
+
YzDefaultInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzDefaultInterceptor });
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzDefaultInterceptor, decorators: [{
|
|
201
|
+
type: Injectable
|
|
202
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXouZGVmYXVsdC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXouZGVmYXVsdC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBTWpCLFlBQVksRUFDWixnQkFBZ0IsRUFDakIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sYUFBYSxDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQXdCLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0UsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTlDLE1BQU0sV0FBVyxHQUE4QjtJQUM3QyxHQUFHLEVBQUUsZUFBZTtJQUNwQixHQUFHLEVBQUUsWUFBWTtJQUNqQixHQUFHLEVBQUUscUJBQXFCO0lBQzFCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLDZCQUE2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QUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1NBQ2Y7UUFDRCxRQUFRO1FBQ1IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDN0IsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ1osY0FBYztZQUNkLElBQUksRUFBRSxZQUFZLGdCQUFnQixFQUFFO2dCQUNsQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQzthQUMxQztZQUNELGVBQWU7WUFDZixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDM0UsQ0FBQztJQUNKLENBQUM7O2lIQS9MVSxvQkFBb0I7cUhBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSHR0cEVycm9yUmVzcG9uc2UsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBIZWFkZXJzLFxuICBIdHRwSW50ZXJjZXB0b3IsXG4gIEh0dHBSZXF1ZXN0LFxuICBIdHRwUmVzcG9uc2UsXG4gIEh0dHBSZXNwb25zZUJhc2Vcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1lcmdlTWFwLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE56Tm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvbm90aWZpY2F0aW9uJztcblxuaW1wb3J0IHsgWUFfU0VSVklDRV9UT0tFTiwgSVRva2VuU2VydmljZSB9IGZyb20gJ0B5ZWxvbi9hdXRoJztcbmltcG9ydCB7IFlVTlpBSV9JMThOX1RPS0VOLCBfSHR0cENsaWVudCB9IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBXSU5ET1cgfSBmcm9tICdAeWVsb24vdXRpbCc7XG5pbXBvcnQgeyBZdW56YWlCdXNpbmVzc0NvbmZpZywgWXVuemFpQ29uZmlnU2VydmljZSB9IGZyb20gJ0B5ZWxvbi91dGlsL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2cgfSBmcm9tICdAeWVsb24vdXRpbC9vdGhlcic7XG5cbmltcG9ydCB7IG1lcmdlQmlzQ29uZmlnIH0gZnJvbSAnLi9iaXMuY29uZmlnJztcblxuY29uc3QgQ09ERU1FU1NBR0U6IHsgW2tleTogbnVtYmVyXTogc3RyaW5nIH0gPSB7XG4gIDIwMDogJ+acjeWKoeWZqOaIkOWKn+i/lOWbnuivt+axgueahOaVsOaNruOAgicsXG4gIDIwMTogJ+aWsOW7uuaIluS/ruaUueaVsOaNruaIkOWKn+OAgicsXG4gIDIwMjogJ+S4gOS4quivt+axguW3sue7j+i/m+WFpeWQjuWPsOaOkumYn++8iOW8guatpeS7u+WKoe+8ieOAgicsXG4gIDIwNDogJ+WIoOmZpOaVsOaNruaIkOWKn+OAgicsXG4gIDQwMDogJ+WPkeWHuueahOivt+axguaciemUmeivr++8jOacjeWKoeWZqOayoeaciei/m+ihjOaWsOW7uuaIluS/ruaUueaVsOaNrueahOaTjeS9nOOAgicsXG4gIDQwMTogJ+eUqOaIt+ayoeacieadg+mZkO+8iOS7pOeJjOOAgeeUqOaIt+WQjeOAgeWvhueggemUmeivr++8ieOAgicsXG4gIDQwMzogJ+eUqOaIt+W+l+WIsOaOiOadg++8jOS9huaYr+iuv+mXruaYr+iiq+emgeatoueahOOAgicsXG4gIDQwNDogJ+WPkeWHuueahOivt+axgumSiOWvueeahOaYr+S4jeWtmOWcqOeahOiusOW9le+8jOacjeWKoeWZqOayoeaciei/m+ihjOaTjeS9nOOAgicsXG4gIDQwNjogJ+ivt+axgueahOagvOW8j+S4jeWPr+W+l+OAgicsXG4gIDQxMDogJ+ivt+axgueahOi1hOa6kOiiq+awuOS5heWIoOmZpO+8jOS4lOS4jeS8muWGjeW+l+WIsOeahOOAgicsXG4gIDQyMjogJ+W9k+WIm+W7uuS4gOS4quWvueixoeaXtu+8jOWPkeeUn+S4gOS4qumqjOivgemUmeivr+OAgicsXG4gIDUwMDogJ+acjeWKoeWZqOWPkeeUn+mUmeivr++8jOivt+ajgOafpeacjeWKoeWZqOOAgicsXG4gIDUwMjogJ+e9keWFs+mUmeivr+OAgicsXG4gIDUwMzogJ+acjeWKoeS4jeWPr+eUqO+8jOacjeWKoeWZqOaaguaXtui/h+i9veaIlue7tOaKpOOAgicsXG4gIDUwNDogJ+e9keWFs+i2heaXtuOAgidcbn07XG5cbi8qKlxuICog6buY6K6kSFRUUOaLpuaIquWZqO+8jOWFtuazqOWGjOe7huiKguingSBgYXBwLm1vZHVsZS50c2BcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFl6RGVmYXVsdEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSBqdW1wID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmcmVzaFRva2luZyA9IGZhbHNlO1xuICBwcml2YXRlIHJlZnJlc2hUb2tlbiQ6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuXG4gIHByaXZhdGUgZ2V0IG5vdGlmaWNhdGlvbigpOiBOek5vdGlmaWNhdGlvblNlcnZpY2Uge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChOek5vdGlmaWNhdGlvblNlcnZpY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdG9rZW5TcnYoKTogSVRva2VuU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KFlBX1NFUlZJQ0VfVE9LRU4pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaHR0cCgpOiBfSHR0cENsaWVudCB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KF9IdHRwQ2xpZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGNvbmZpZygpOiBZdW56YWlCdXNpbmVzc0NvbmZpZyB7XG4gICAgcmV0dXJuIG1lcmdlQmlzQ29uZmlnKHRoaXMuaW5qZWN0b3IuZ2V0KFl1bnphaUNvbmZpZ1NlcnZpY2UpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ29Ubyh1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKS5uYXZpZ2F0ZUJ5VXJsKHVybCkpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBpZiAodGhpcy5jb25maWcucmVmcmVzaFRva2VuVHlwZSA9PT0gJ2F1dGgtcmVmcmVzaCcpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJjYW4ndCB1c2UgYXV0aC1yZWZyZXNoLCBwbGVhc2UgY2hhbmdlIHl6LmRlZmF1bHQuaW50ZXJjZXB0b3IgdG8gZGVmYXVsdC5pbnRlcmNlcHRvciFcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1N0YXR1cyhldjogSHR0cFJlc3BvbnNlQmFzZSk6IHZvaWQge1xuICAgIGlmICgoZXYuc3RhdHVzID49IDIwMCAmJiBldi5zdGF0dXMgPCAzMDApIHx8IGV2LnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2IGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgKGV2LmVycm9yLm1lc3NhZ2UgfHwgZXYuZXJyb3IuZXJyb3JNZXNzYWdlKSkge1xuICAgICAgaWYgKGV2LmVycm9yLmVycm9yTWVzc2FnZSkge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihg5Y+R55Sf5LqG5LiA5Lqb6ZSZ6K+vIGAsIGV2LmVycm9yLmVycm9yTWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihg5Y+R55Sf5LqG5LiA5Lqb6ZSZ6K+vIGAsIGV2LmVycm9yLm1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldiBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSAmJiBldi5ib2R5LmVycm9yTWVzc2FnZSkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoYOWPkeeUn+S6huS4gOS6m+mUmeivryBgLCBldi5ib2R5LmVycm9yTWVzc2FnZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVycm9ydGV4dCA9IENPREVNRVNTQUdFW2V2LnN0YXR1c10gfHwgZXYuc3RhdHVzVGV4dDtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihg6K+35rGC6ZSZ6K+vICR7ZXYuc3RhdHVzfTogJHtldi51cmx9YCwgZXJyb3J0ZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgVG9Mb2dpbigpIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcihg5pyq55m75b2V5oiW55m75b2V54q25oCB5bey6L+H5pyf77yMNeenkuWQjuWwhui3s+i9rOWIsOeZu+W9lemhtemdouOAgmAsIGBgKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgICAgdGhpcy5pbmplY3Rvci5nZXQoV0lORE9XKS5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5jb25maWcuYmFzZVVybH0vY2FzLXByb3h5L2FwcC9sb2dvdXRgO1xuICAgIH0sIDUwMDApO1xuICB9XG5cbiAgcHJpdmF0ZSByZUF0dGFjaFRva2VuKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IEh0dHBSZXF1ZXN0PGFueT4ge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlblNydi5nZXQoKT8udG9rZW47XG4gICAgcmV0dXJuIHJlcS5jbG9uZSh7XG4gICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hUb2tlblJlcXVlc3QoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBtb2RlbCA9IHRoaXMudG9rZW5TcnYuZ2V0KCk7XG4gICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm0uc2V0KCdyZWZyZXNoX3Rva2VuJywgbW9kZWw/LnJlZnJlc2hUb2tlbik7XG4gICAgbG9nKCd5ei5kZWZhdWx0LmludGVyY2VwdG9yOiB1c2UgdGhlIHJlZnJlc2ggdG9rZW4gdG8gcmVxdWVzdCBhIG5ldyB0b2tlbicsIG1vZGVsPy5yZWZyZXNoVG9rZW4pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgL2F1dGgvdXNlci90b2tlbi9yZWZyZXNoP19hbGxvd19hbm9ueW1vdXM9dHJ1ZWAsIGZvcm0pO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnlSZWZyZXNoVG9rZW4oZXY6IEh0dHBSZXNwb25zZUJhc2UsIHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIC8vIOi/nuWIt+aWsFRva2Vu55qE6K+35rGC6YO96ZSZ5LqG77yM6YKj5bCx5piv55yf6ZSZ5LqGXG4gICAgaWYgKFsnL2F1dGgvb2F1dGgvdG9rZW4nXS5zb21lKHVybCA9PiByZXEudXJsLmluY2x1ZGVzKHVybCkpKSB7XG4gICAgICB0aGlzLlRvTG9naW4oKTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV2KTtcbiAgICB9XG5cbiAgICAvLyDmraPlnKjliLfmlrB0b2tlbu+8jOaJgOacieWFtuS7luivt+axguaOkumYn1xuICAgIGlmICh0aGlzLnJlZnJlc2hUb2tpbmcpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlZnJlc2hUb2tlbiQucGlwZShcbiAgICAgICAgZmlsdGVyKHYgPT4gISF2KSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IG5leHQuaGFuZGxlKHRoaXMucmVBdHRhY2hUb2tlbihyZXEpKSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy/lsJ3or5XosIPnlKjliLfmlrAgVG9rZW5cbiAgICB0aGlzLnJlZnJlc2hUb2tpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVmcmVzaFRva2VuJC5uZXh0KG51bGwpO1xuXG4gICAgLy8g5aSE55CGVG9rZW5cbiAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5SZXF1ZXN0KCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChyZXMgPT4ge1xuICAgICAgICBsb2coJ3l6LmRlZmF1bHQuaW50ZXJjZXB0b3I6IHJlZnJlc2ggdG9rZW4gYWNjZXNzZWQgLT4gJywgcmVzKTtcbiAgICAgICAgLy8g6YeN5paw5L+d5a2Y5pawIHRva2VuXG4gICAgICAgIGNvbnN0IHsgYWNjZXNzX3Rva2VuLCBleHBpcmVzX2luLCByZWZyZXNoX3Rva2VuLCBzY29wZSwgdG9rZW5fdHlwZSB9ID0gcmVzO1xuICAgICAgICB0aGlzLnRva2VuU3J2LnNldCh7XG4gICAgICAgICAgdG9rZW46IGFjY2Vzc190b2tlbixcbiAgICAgICAgICBleHBpcmVkOiBleHBpcmVzX2luLFxuICAgICAgICAgIHJlZnJlc2hUb2tlbjogcmVmcmVzaF90b2tlbixcbiAgICAgICAgICB0b2tlblR5cGU6IHRva2VuX3R5cGUsXG4gICAgICAgICAgc2NvcGVcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIOmAmuefpeWQjue7reivt+axgue7p+e7reaJp+ihjFxuICAgICAgICB0aGlzLnJlZnJlc2hUb2tpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW4kLm5leHQocmVzKTtcbiAgICAgICAgLy8g6YeN5paw5Y+R6LW36K+35rGCXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLnJlQXR0YWNoVG9rZW4ocmVxKSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoVG9raW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuVG9Mb2dpbigpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBZGRpdGlvbmFsSGVhZGVycyhoZWFkZXJzPzogSHR0cEhlYWRlcnMpOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgY29uc3QgcmVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLmluamVjdG9yLmdldChZVU5aQUlfSTE4Tl9UT0tFTikuY3VycmVudExhbmc7XG4gICAgaWYgKCFoZWFkZXJzPy5oYXMoJ0FjY2VwdC1MYW5ndWFnZScpICYmIGxhbmcpIHtcbiAgICAgIHJlc1snQWNjZXB0LUxhbmd1YWdlJ10gPSBsYW5nO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVEYXRhKGV2OiBIdHRwUmVzcG9uc2VCYXNlLCByZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICB0aGlzLmNoZWNrU3RhdHVzKGV2KTtcbiAgICBzd2l0Y2ggKGV2LnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiBvZihldik7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJlZnJlc2hUb2tlbkVuYWJsZWQgJiYgdGhpcy5jb25maWcucmVmcmVzaFRva2VuVHlwZSA9PT0gJ3JlLXJlcXVlc3QnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudHJ5UmVmcmVzaFRva2VuKGV2LCByZXEsIG5leHQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuVG9Mb2dpbigpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgY2FzZSA0MDQ6XG4gICAgICBjYXNlIDUwMDpcbiAgICAgICAgaWYgKHRoaXMuanVtcCkge1xuICAgICAgICAgIHRoaXMuZ29UbyhgL2V4Y2VwdGlvbi8ke2V2LnN0YXR1c31gKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChldiBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgJ+acquWPr+efpemUmeivr++8jOWkp+mDqOWIhuaYr+eUseS6juWQjuerr+S4jeaUr+aMgei3qOWfn0NPUlPmiJbml6DmlYjphY3nva7lvJXotbfvvIzor7flj4LogIMgaHR0cHM6Ly9uZy55dW56YWluZm8uY29tL2RvY3Mvc2VydmVyIOino+WGs+i3qOWfn+mXrumimCcsXG4gICAgICAgICAgICBldlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChldiBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihldik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZihldik7XG4gICAgfVxuICB9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgbG9nKCd5ei5kZWZhdWx0LmludGVyY2VwdG9yLnRzOiAnLCAncmVxdWVzdCAnLCByZXEpO1xuICAgIC8vIOe7n+S4gOWKoOWJjee8gFxuICAgIGxldCB1cmwgPSByZXEudXJsO1xuICAgIGlmICghdXJsLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vJykgJiYgIXVybC5zdGFydHNXaXRoKCdodHRwOi8vJykpIHtcbiAgICAgIHVybCA9IHRoaXMuY29uZmlnLmJhc2VVcmwgKyB1cmw7XG4gICAgfVxuICAgIGlmICh1cmwuaW5jbHVkZXMoJy5qc29uJykgJiYgdXJsLmluY2x1ZGVzKCdhc3NldHMnKSkge1xuICAgICAgdXJsID0gcmVxLnVybDtcbiAgICB9XG4gICAgLy8g5Yqg5YWl6K+t6KiA5aS0XG4gICAgY29uc3QgbmV3UmVxID0gcmVxLmNsb25lKHsgdXJsLCBzZXRIZWFkZXJzOiB0aGlzLmdldEFkZGl0aW9uYWxIZWFkZXJzKHJlcS5oZWFkZXJzKSB9KTtcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUobmV3UmVxKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoZXYgPT4ge1xuICAgICAgICAvLyDlhYHorrjnu5/kuIDlr7nor7fmsYLplJnor6/lpITnkIZcbiAgICAgICAgaWYgKGV2IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlQmFzZSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZURhdGEoZXYsIG5ld1JlcSwgbmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g6Iul5LiA5YiH6YO95q2j5bi477yM5YiZ5ZCO57ut5pON5L2cXG4gICAgICAgIHJldHVybiBvZihldik7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHRoaXMuaGFuZGxlRGF0YShlcnIsIG5ld1JlcSwgbmV4dCkpXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { registerLocaleData } from '@angular/common';
|
|
2
|
+
import ngEn from '@angular/common/locales/en';
|
|
3
|
+
import ngZh from '@angular/common/locales/zh';
|
|
4
|
+
import ngZhTw from '@angular/common/locales/zh-Hant';
|
|
5
|
+
import { Injectable } from '@angular/core';
|
|
6
|
+
import { enUS as dfEn, zhCN as dfZhCn, zhTW as dfZhTw } from 'date-fns/locale';
|
|
7
|
+
import { en_US as yelonEnUS, zh_CN as yelonZhCn, zh_TW as yelonZhTw, YunzaiI18nBaseService } from '@yelon/theme';
|
|
8
|
+
import { en_US as zorroEnUS, zh_CN as zorroZhCN, zh_TW as zorroZhTW } from 'ng-zorro-antd/i18n';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@yelon/theme";
|
|
11
|
+
import * as i2 from "ng-zorro-antd/i18n";
|
|
12
|
+
import * as i3 from "@angular/cdk/platform";
|
|
13
|
+
import * as i4 from "@yelon/util/config";
|
|
14
|
+
const DEFAULT = 'zh-CN';
|
|
15
|
+
const LANGS = {
|
|
16
|
+
'zh-CN': {
|
|
17
|
+
text: '简体中文',
|
|
18
|
+
ng: ngZh,
|
|
19
|
+
zorro: zorroZhCN,
|
|
20
|
+
date: dfZhCn,
|
|
21
|
+
yelon: yelonZhCn,
|
|
22
|
+
abbr: '🇨🇳'
|
|
23
|
+
},
|
|
24
|
+
'zh-TW': {
|
|
25
|
+
text: '繁体中文',
|
|
26
|
+
ng: ngZhTw,
|
|
27
|
+
zorro: zorroZhTW,
|
|
28
|
+
date: dfZhTw,
|
|
29
|
+
yelon: yelonZhTw,
|
|
30
|
+
abbr: '🇭🇰'
|
|
31
|
+
},
|
|
32
|
+
'en-US': {
|
|
33
|
+
text: 'English',
|
|
34
|
+
ng: ngEn,
|
|
35
|
+
zorro: zorroEnUS,
|
|
36
|
+
date: dfEn,
|
|
37
|
+
yelon: yelonEnUS,
|
|
38
|
+
abbr: '🇬🇧'
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
export class YzI18NService extends YunzaiI18nBaseService {
|
|
42
|
+
constructor(http, settings, nzI18nService, yelonLocaleService, platform, cogSrv) {
|
|
43
|
+
super(cogSrv);
|
|
44
|
+
this.http = http;
|
|
45
|
+
this.settings = settings;
|
|
46
|
+
this.nzI18nService = nzI18nService;
|
|
47
|
+
this.yelonLocaleService = yelonLocaleService;
|
|
48
|
+
this.platform = platform;
|
|
49
|
+
this._defaultLang = DEFAULT;
|
|
50
|
+
this._langs = Object.keys(LANGS).map(code => {
|
|
51
|
+
const item = LANGS[code];
|
|
52
|
+
return { code, text: item.text, abbr: item.abbr };
|
|
53
|
+
});
|
|
54
|
+
const defaultLang = this.getDefaultLang();
|
|
55
|
+
this._defaultLang = this._langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;
|
|
56
|
+
}
|
|
57
|
+
getDefaultLang() {
|
|
58
|
+
if (!this.platform.isBrowser) {
|
|
59
|
+
return DEFAULT;
|
|
60
|
+
}
|
|
61
|
+
if (this.settings.layout.lang) {
|
|
62
|
+
return this.settings.layout.lang;
|
|
63
|
+
}
|
|
64
|
+
let res = (navigator.languages ? navigator.languages[0] : null) || navigator.language;
|
|
65
|
+
const arr = res.split('-');
|
|
66
|
+
return arr.length <= 1 ? res : `${arr[0]}-${arr[1].toUpperCase()}`;
|
|
67
|
+
}
|
|
68
|
+
loadLangData(lang) {
|
|
69
|
+
return this.http.get(`assets/tmp/i18n/${lang}.json`);
|
|
70
|
+
}
|
|
71
|
+
use(lang, data) {
|
|
72
|
+
if (this._currentLang === lang)
|
|
73
|
+
return;
|
|
74
|
+
this._data = this.flatData(data, []);
|
|
75
|
+
const item = LANGS[lang];
|
|
76
|
+
registerLocaleData(item.ng);
|
|
77
|
+
this.nzI18nService.setLocale(item.zorro);
|
|
78
|
+
this.nzI18nService.setDateLocale(item.date);
|
|
79
|
+
this.yelonLocaleService.setLocale(item.yelon);
|
|
80
|
+
this._currentLang = lang;
|
|
81
|
+
this._change$.next(lang);
|
|
82
|
+
}
|
|
83
|
+
getLangs() {
|
|
84
|
+
return this._langs;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
YzI18NService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzI18NService, deps: [{ token: i1._HttpClient }, { token: i1.SettingsService }, { token: i2.NzI18nService }, { token: i1.YelonLocaleService }, { token: i3.Platform }, { token: i4.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
88
|
+
YzI18NService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzI18NService, providedIn: 'root' });
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzI18NService, decorators: [{
|
|
90
|
+
type: Injectable,
|
|
91
|
+
args: [{ providedIn: 'root' }]
|
|
92
|
+
}], ctorParameters: function () { return [{ type: i1._HttpClient }, { type: i1.SettingsService }, { type: i2.NzI18nService }, { type: i1.YelonLocaleService }, { type: i3.Platform }, { type: i4.YunzaiConfigService }]; } });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXouaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC95ei5pMThuLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxJQUFJLE1BQU0sNEJBQTRCLENBQUM7QUFDOUMsT0FBTyxJQUFJLE1BQU0sNEJBQTRCLENBQUM7QUFDOUMsT0FBTyxNQUFNLE1BQU0saUNBQWlDLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRSxPQUFPLEVBRUwsS0FBSyxJQUFJLFNBQVMsRUFFbEIsS0FBSyxJQUFJLFNBQVMsRUFDbEIsS0FBSyxJQUFJLFNBQVMsRUFFbEIscUJBQXFCLEVBQ3RCLE1BQU0sY0FBYyxDQUFDO0FBR3RCLE9BQU8sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFpQixLQUFLLElBQUksU0FBUyxFQUFFLEtBQUssSUFBSSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBVy9HLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUN4QixNQUFNLEtBQUssR0FBc0M7SUFDL0MsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLE1BQU07UUFDWixFQUFFLEVBQUUsSUFBSTtRQUNSLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxNQUFNO1FBQ1osS0FBSyxFQUFFLFNBQVM7UUFDaEIsSUFBSSxFQUFFLE1BQU07S0FDYjtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxNQUFNO1FBQ1osRUFBRSxFQUFFLE1BQU07UUFDVixLQUFLLEVBQUUsU0FB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QUksQ0FBQyxDQUFDO1FBQ3pCLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7OzBHQXJEVSxhQUFhOzhHQUFiLGFBQWEsY0FEQSxNQUFNOzJGQUNuQixhQUFhO2tCQUR6QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIOivt+WPguiAg++8mmh0dHBzOi8vbmcueXVuemFpbmZvLmNvbS9kb2NzL2kxOG5cbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IHJlZ2lzdGVyTG9jYWxlRGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgbmdFbiBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy9lbic7XG5pbXBvcnQgbmdaaCBmcm9tICdAYW5ndWxhci9jb21tb24vbG9jYWxlcy96aCc7XG5pbXBvcnQgbmdaaFR3IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9sb2NhbGVzL3poLUhhbnQnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBlblVTIGFzIGRmRW4sIHpoQ04gYXMgZGZaaENuLCB6aFRXIGFzIGRmWmhUdyB9IGZyb20gJ2RhdGUtZm5zL2xvY2FsZSc7XG5cbmltcG9ydCB7XG4gIFllbG9uTG9jYWxlU2VydmljZSxcbiAgZW5fVVMgYXMgeWVsb25FblVTLFxuICBTZXR0aW5nc1NlcnZpY2UsXG4gIHpoX0NOIGFzIHllbG9uWmhDbixcbiAgemhfVFcgYXMgeWVsb25aaFR3LFxuICBfSHR0cENsaWVudCxcbiAgWXVuemFpSTE4bkJhc2VTZXJ2aWNlXG59IGZyb20gJ0B5ZWxvbi90aGVtZSc7XG5pbXBvcnQgeyBZdW56YWlDb25maWdTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL3V0aWwvY29uZmlnJztcbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5pbXBvcnQgeyBlbl9VUyBhcyB6b3Jyb0VuVVMsIE56STE4blNlcnZpY2UsIHpoX0NOIGFzIHpvcnJvWmhDTiwgemhfVFcgYXMgem9ycm9aaFRXIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pMThuJztcblxuaW50ZXJmYWNlIExhbmdDb25maWdEYXRhIHtcbiAgYWJicjogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG4gIG5nOiBOelNhZmVBbnk7XG4gIHpvcnJvOiBOelNhZmVBbnk7XG4gIGRhdGU6IE56U2FmZUFueTtcbiAgeWVsb246IE56U2FmZUFueTtcbn1cblxuY29uc3QgREVGQVVMVCA9ICd6aC1DTic7XG5jb25zdCBMQU5HUzogeyBba2V5OiBzdHJpbmddOiBMYW5nQ29uZmlnRGF0YSB9ID0ge1xuICAnemgtQ04nOiB7XG4gICAgdGV4dDogJ+eugOS9k+S4reaWhycsXG4gICAgbmc6IG5nWmgsXG4gICAgem9ycm86IHpvcnJvWmhDTixcbiAgICBkYXRlOiBkZlpoQ24sXG4gICAgeWVsb246IHllbG9uWmhDbixcbiAgICBhYmJyOiAn8J+HqPCfh7MnXG4gIH0sXG4gICd6aC1UVyc6IHtcbiAgICB0ZXh0OiAn57mB5L2T5Lit5paHJyxcbiAgICBuZzogbmdaaFR3LFxuICAgIHpvcnJvOiB6b3Jyb1poVFcsXG4gICAgZGF0ZTogZGZaaFR3LFxuICAgIHllbG9uOiB5ZWxvblpoVHcsXG4gICAgYWJicjogJ/Cfh63wn4ewJ1xuICB9LFxuICAnZW4tVVMnOiB7XG4gICAgdGV4dDogJ0VuZ2xpc2gnLFxuICAgIG5nOiBuZ0VuLFxuICAgIHpvcnJvOiB6b3Jyb0VuVVMsXG4gICAgZGF0ZTogZGZFbixcbiAgICB5ZWxvbjogeWVsb25FblVTLFxuICAgIGFiYnI6ICfwn4es8J+HpydcbiAgfVxufTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBZekkxOE5TZXJ2aWNlIGV4dGVuZHMgWXVuemFpSTE4bkJhc2VTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIF9kZWZhdWx0TGFuZyA9IERFRkFVTFQ7XG4gIHByaXZhdGUgX2xhbmdzID0gT2JqZWN0LmtleXMoTEFOR1MpLm1hcChjb2RlID0+IHtcbiAgICBjb25zdCBpdGVtID0gTEFOR1NbY29kZV07XG4gICAgcmV0dXJuIHsgY29kZSwgdGV4dDogaXRlbS50ZXh0LCBhYmJyOiBpdGVtLmFiYnIgfTtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBfSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHNldHRpbmdzOiBTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBuekkxOG5TZXJ2aWNlOiBOekkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgeWVsb25Mb2NhbGVTZXJ2aWNlOiBZZWxvbkxvY2FsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgY29nU3J2OiBZdW56YWlDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGNvZ1Nydik7XG4gICAgY29uc3QgZGVmYXVsdExhbmcgPSB0aGlzLmdldERlZmF1bHRMYW5nKCk7XG4gICAgdGhpcy5fZGVmYXVsdExhbmcgPSB0aGlzLl9sYW5ncy5maW5kSW5kZXgodyA9PiB3LmNvZGUgPT09IGRlZmF1bHRMYW5nKSA9PT0gLTEgPyBERUZBVUxUIDogZGVmYXVsdExhbmc7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRMYW5nKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnBsYXRmb3JtLmlzQnJvd3Nlcikge1xuICAgICAgcmV0dXJuIERFRkFVTFQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnNldHRpbmdzLmxheW91dC5sYW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXR0aW5ncy5sYXlvdXQubGFuZztcbiAgICB9XG4gICAgbGV0IHJlcyA9IChuYXZpZ2F0b3IubGFuZ3VhZ2VzID8gbmF2aWdhdG9yLmxhbmd1YWdlc1swXSA6IG51bGwpIHx8IG5hdmlnYXRvci5sYW5ndWFnZTtcbiAgICBjb25zdCBhcnIgPSByZXMuc3BsaXQoJy0nKTtcbiAgICByZXR1cm4gYXJyLmxlbmd0aCA8PSAxID8gcmVzIDogYCR7YXJyWzBdfS0ke2FyclsxXS50b1VwcGVyQ2FzZSgpfWA7XG4gIH1cblxuICBsb2FkTGFuZ0RhdGEobGFuZzogc3RyaW5nKTogT2JzZXJ2YWJsZTxOelNhZmVBbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChgYXNzZXRzL3RtcC9pMThuLyR7bGFuZ30uanNvbmApO1xuICB9XG5cbiAgdXNlKGxhbmc6IHN0cmluZywgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudExhbmcgPT09IGxhbmcpIHJldHVybjtcblxuICAgIHRoaXMuX2RhdGEgPSB0aGlzLmZsYXREYXRhKGRhdGEsIFtdKTtcblxuICAgIGNvbnN0IGl0ZW0gPSBMQU5HU1tsYW5nXTtcbiAgICByZWdpc3RlckxvY2FsZURhdGEoaXRlbS5uZyk7XG4gICAgdGhpcy5uekkxOG5TZXJ2aWNlLnNldExvY2FsZShpdGVtLnpvcnJvKTtcbiAgICB0aGlzLm56STE4blNlcnZpY2Uuc2V0RGF0ZUxvY2FsZShpdGVtLmRhdGUpO1xuICAgIHRoaXMueWVsb25Mb2NhbGVTZXJ2aWNlLnNldExvY2FsZShpdGVtLnllbG9uKTtcbiAgICB0aGlzLl9jdXJyZW50TGFuZyA9IGxhbmc7XG5cbiAgICB0aGlzLl9jaGFuZ2UkLm5leHQobGFuZyk7XG4gIH1cblxuICBnZXRMYW5ncygpOiBBcnJheTx7IGNvZGU6IHN0cmluZzsgdGV4dDogc3RyaW5nOyBhYmJyOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiB0aGlzLl9sYW5ncztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { APP_INITIALIZER, Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { of } from 'rxjs';
|
|
3
|
+
import { mergeMap } from 'rxjs/operators';
|
|
4
|
+
import { ICONS } from '@yelon/bis/shared';
|
|
5
|
+
import { YUNZAI_I18N_TOKEN } from '@yelon/theme';
|
|
6
|
+
import { deepCopy, log } from '@yelon/util';
|
|
7
|
+
import { BUSINESS_DEFAULT_CONFIG, mergeBisConfig } from './bis.config';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "ng-zorro-antd/icon";
|
|
10
|
+
import * as i2 from "@yelon/theme";
|
|
11
|
+
import * as i3 from "@yelon/acl";
|
|
12
|
+
import * as i4 from "./yz.auth.service";
|
|
13
|
+
import * as i5 from "@yelon/cache";
|
|
14
|
+
import * as i6 from "@yelon/util";
|
|
15
|
+
import * as i7 from "./yz.i18n.service";
|
|
16
|
+
export function mapYzSideToYelonMenu(menus) {
|
|
17
|
+
menus.forEach(menu => {
|
|
18
|
+
menu.badgeDot = menu.badge_dot || null;
|
|
19
|
+
menu.badgeStatus = menu.badge_status || null;
|
|
20
|
+
menu.shortcutRoot = menu.shortcut_root || null;
|
|
21
|
+
menu.reuse = true;
|
|
22
|
+
if (menu.children) {
|
|
23
|
+
mapYzSideToYelonMenu(menu.children);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export function generateAbility(menus, abilities, prefix) {
|
|
28
|
+
menus.forEach(menu => {
|
|
29
|
+
if (menu.link) {
|
|
30
|
+
prefix += menu.link;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
prefix += '';
|
|
34
|
+
}
|
|
35
|
+
if (menu.menuAuths) {
|
|
36
|
+
menu.menuAuths.forEach((a) => {
|
|
37
|
+
abilities.push(`${prefix}:${a}`);
|
|
38
|
+
abilities.push(a);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
if (menu.children) {
|
|
42
|
+
generateAbility(menu.children, abilities, prefix);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export class YzStartupService {
|
|
47
|
+
constructor(iconSrv, menuService, i18n, settingService, aclService, titleService, yzAuthService, cacheService, configService) {
|
|
48
|
+
this.menuService = menuService;
|
|
49
|
+
this.i18n = i18n;
|
|
50
|
+
this.settingService = settingService;
|
|
51
|
+
this.aclService = aclService;
|
|
52
|
+
this.titleService = titleService;
|
|
53
|
+
this.yzAuthService = yzAuthService;
|
|
54
|
+
this.cacheService = cacheService;
|
|
55
|
+
this.configService = configService;
|
|
56
|
+
this.bis = BUSINESS_DEFAULT_CONFIG;
|
|
57
|
+
this.bis = mergeBisConfig(this.configService);
|
|
58
|
+
iconSrv.addIcon(...ICONS);
|
|
59
|
+
}
|
|
60
|
+
load() {
|
|
61
|
+
log('startup.service: ', 'load');
|
|
62
|
+
const defaultLang = this.i18n.defaultLang;
|
|
63
|
+
return this.i18n.loadLangData(defaultLang).pipe(mergeMap(langData => {
|
|
64
|
+
log('startup.service: ', 'set i18n, defaultLang->', defaultLang, ' langData->', langData);
|
|
65
|
+
this.i18n.use(defaultLang, langData);
|
|
66
|
+
return of(null);
|
|
67
|
+
}), mergeMap(() => {
|
|
68
|
+
return this.yzAuthService.login();
|
|
69
|
+
}), mergeMap(v => {
|
|
70
|
+
// preloader finish
|
|
71
|
+
this.systemInit();
|
|
72
|
+
log('startup.service: preloader finish');
|
|
73
|
+
const win = window;
|
|
74
|
+
if (win && win.appBootstrap) {
|
|
75
|
+
win.appBootstrap();
|
|
76
|
+
}
|
|
77
|
+
return of(v);
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
systemInit() {
|
|
81
|
+
log('startup.service: system init');
|
|
82
|
+
// user
|
|
83
|
+
const user = this.cacheService.get('_yz_user', { mode: 'none' });
|
|
84
|
+
// menu
|
|
85
|
+
const ms = deepCopy(user.menu).filter((m) => m.systemCode && m.systemCode === this.bis.systemCode);
|
|
86
|
+
mapYzSideToYelonMenu(ms);
|
|
87
|
+
const currentMenu = ms.pop() || [];
|
|
88
|
+
this.menuService.add([currentMenu]);
|
|
89
|
+
// logo app
|
|
90
|
+
this.settingService.setApp({ name: currentMenu.text, description: currentMenu.intro });
|
|
91
|
+
this.settingService.setUser({
|
|
92
|
+
name: user.realname || 'no name',
|
|
93
|
+
avatar: `${this.bis.baseUrl}/filecenter/file/${user.avatarId}` || '',
|
|
94
|
+
email: user.email || 'no email'
|
|
95
|
+
});
|
|
96
|
+
// title
|
|
97
|
+
this.titleService.default = currentMenu && currentMenu.text ? currentMenu.text : 'default application name';
|
|
98
|
+
this.titleService.setTitle(currentMenu && currentMenu.text ? currentMenu.text : 'no title');
|
|
99
|
+
// acl
|
|
100
|
+
const abilities = [];
|
|
101
|
+
generateAbility([currentMenu], abilities, '');
|
|
102
|
+
this.aclService.attachRole(user?.roles
|
|
103
|
+
.map((role) => {
|
|
104
|
+
return role.roleValue;
|
|
105
|
+
})
|
|
106
|
+
.filter((a) => !!a) || []);
|
|
107
|
+
this.aclService.attachAbility(abilities);
|
|
108
|
+
// cache current
|
|
109
|
+
this.cacheService.set('_yz_current', {
|
|
110
|
+
text: currentMenu.text,
|
|
111
|
+
intro: currentMenu.intro,
|
|
112
|
+
icon: currentMenu.appIconUrl
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
YzStartupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzStartupService, deps: [{ token: i1.NzIconService }, { token: i2.MenuService }, { token: YUNZAI_I18N_TOKEN }, { token: i2.SettingsService }, { token: i3.ACLService }, { token: i2.TitleService }, { token: i4.YzAuthService }, { token: i5.CacheService }, { token: i6.YunzaiConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
+
YzStartupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzStartupService });
|
|
118
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzStartupService, decorators: [{
|
|
119
|
+
type: Injectable
|
|
120
|
+
}], ctorParameters: function () { return [{ type: i1.NzIconService }, { type: i2.MenuService }, { type: i7.YzI18NService, decorators: [{
|
|
121
|
+
type: Inject,
|
|
122
|
+
args: [YUNZAI_I18N_TOKEN]
|
|
123
|
+
}] }, { type: i2.SettingsService }, { type: i3.ACLService }, { type: i2.TitleService }, { type: i4.YzAuthService }, { type: i5.CacheService }, { type: i6.YunzaiConfigService }]; } });
|
|
124
|
+
export function YzStartupServiceFactory(startupService) {
|
|
125
|
+
return () => startupService.load();
|
|
126
|
+
}
|
|
127
|
+
//@ts-ignore
|
|
128
|
+
export const YZ_APPINIT_PROVIDES = [
|
|
129
|
+
YzStartupService,
|
|
130
|
+
{
|
|
131
|
+
provide: APP_INITIALIZER,
|
|
132
|
+
useFactory: YzStartupServiceFactory,
|
|
133
|
+
deps: [YzStartupService],
|
|
134
|
+
multi: true
|
|
135
|
+
}
|
|
136
|
+
];
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXouc3RhcnR1cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYmlzL2xheW91dC95ei5zdGFydHVwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQTBELGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUE2QyxNQUFNLGFBQWEsQ0FBQztBQUl2RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7QUFJdkUsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEtBQWE7SUFDaEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUM7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFV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LE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsZ0JBQWdCO0lBQ2hCO1FBQ0UsT0FBTyxFQUFFLGVBQWU7UUFDeEIsVUFBVSxFQUFFLHVCQUF1QjtRQUNuQyxJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN4QixLQUFLLEVBQUUsSUFBSTtLQUNaO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEFDTFNlcnZpY2UgfSBmcm9tICdAeWVsb24vYWNsJztcbmltcG9ydCB7IElDT05TIH0gZnJvbSAnQHllbG9uL2Jpcy9zaGFyZWQnO1xuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL2NhY2hlJztcbmltcG9ydCB7IE1lbnUsIE1lbnVTZXJ2aWNlLCBTZXR0aW5nc1NlcnZpY2UsIFRpdGxlU2VydmljZSwgVXNlciwgWVVOWkFJX0kxOE5fVE9LRU4gfSBmcm9tICdAeWVsb24vdGhlbWUnO1xuaW1wb3J0IHsgZGVlcENvcHksIGxvZywgWXVuemFpQnVzaW5lc3NDb25maWcsIFl1bnphaUNvbmZpZ1NlcnZpY2UgfSBmcm9tICdAeWVsb24vdXRpbCc7XG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgTnpJY29uU2VydmljZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvaWNvbic7XG5cbmltcG9ydCB7IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHLCBtZXJnZUJpc0NvbmZpZyB9IGZyb20gJy4vYmlzLmNvbmZpZyc7XG5pbXBvcnQgeyBZekF1dGhTZXJ2aWNlIH0gZnJvbSAnLi95ei5hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgWXpJMThOU2VydmljZSB9IGZyb20gJy4veXouaTE4bi5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFl6U2lkZVRvWWVsb25NZW51KG1lbnVzOiBNZW51W10pOiB2b2lkIHtcbiAgbWVudXMuZm9yRWFjaChtZW51ID0+IHtcbiAgICBtZW51LmJhZGdlRG90ID0gbWVudS5iYWRnZV9kb3QgfHwgbnVsbDtcbiAgICBtZW51LmJhZGdlU3RhdHVzID0gbWVudS5iYWRnZV9zdGF0dXMgfHwgbnVsbDtcbiAgICBtZW51LnNob3J0Y3V0Um9vdCA9IG1lbnUuc2hvcnRjdXRfcm9vdCB8fCBudWxsO1xuICAgIG1lbnUucmV1c2UgPSB0cnVlO1xuICAgIGlmIChtZW51LmNoaWxkcmVuKSB7XG4gICAgICBtYXBZelNpZGVUb1llbG9uTWVudShtZW51LmNoaWxkcmVuKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVBYmlsaXR5KG1lbnVzOiBNZW51W10sIGFiaWxpdGllczogc3RyaW5nW10sIHByZWZpeDogc3RyaW5nKTogdm9pZCB7XG4gIG1lbnVzLmZvckVhY2gobWVudSA9PiB7XG4gICAgaWYgKG1lbnUubGluaykge1xuICAgICAgcHJlZml4ICs9IG1lbnUubGluaztcbiAgICB9IGVsc2Uge1xuICAgICAgcHJlZml4ICs9ICcnO1xuICAgIH1cbiAgICBpZiAobWVudS5tZW51QXV0aHMpIHtcbiAgICAgIG1lbnUubWVudUF1dGhzLmZvckVhY2goKGE6IHN0cmluZykgPT4ge1xuICAgICAgICBhYmlsaXRpZXMucHVzaChgJHtwcmVmaXh9OiR7YX1gKTtcbiAgICAgICAgYWJpbGl0aWVzLnB1c2goYSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobWVudS5jaGlsZHJlbikge1xuICAgICAgZ2VuZXJhdGVBYmlsaXR5KG1lbnUuY2hpbGRyZW4sIGFiaWxpdGllcywgcHJlZml4KTtcbiAgICB9XG4gIH0pO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgWXpTdGFydHVwU2VydmljZSB7XG4gIHByaXZhdGUgYmlzOiBZdW56YWlCdXNpbmVzc0NvbmZpZyA9IEJVU0lORVNTX0RFRkFVTFRfQ09ORklHO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGljb25TcnY6IE56SWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICAgQEluamVjdChZVU5aQUlfSTE4Tl9UT0tFTikgcHJpdmF0ZSBpMThuOiBZekkxOE5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2V0dGluZ1NlcnZpY2U6IFNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGFjbFNlcnZpY2U6IEFDTFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHl6QXV0aFNlcnZpY2U6IFl6QXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IFl1bnphaUNvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5iaXMgPSBtZXJnZUJpc0NvbmZpZyh0aGlzLmNvbmZpZ1NlcnZpY2UpO1xuICAgIGljb25TcnYuYWRkSWNvbiguLi5JQ09OUyk7XG4gIH1cblxuICBsb2FkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGxvZygnc3RhcnR1cC5zZXJ2aWNlOiAnLCAnbG9hZCcpO1xuICAgIGNvbnN0IGRlZmF1bHRMYW5nID0gdGhpcy5pMThuLmRlZmF1bHRMYW5nO1xuICAgIHJldHVybiB0aGlzLmkxOG4ubG9hZExhbmdEYXRhKGRlZmF1bHRMYW5nKS5waXBlKFxuICAgICAgbWVyZ2VNYXAobGFuZ0RhdGEgPT4ge1xuICAgICAgICBsb2coJ3N0YXJ0dXAuc2VydmljZTogJywgJ3NldCBpMThuLCBkZWZhdWx0TGFuZy0+JywgZGVmYXVsdExhbmcsICcgbGFuZ0RhdGEtPicsIGxhbmdEYXRhKTtcbiAgICAgICAgdGhpcy5pMThuLnVzZShkZWZhdWx0TGFuZywgbGFuZ0RhdGEpO1xuICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICB9KSxcbiAgICAgIG1lcmdlTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMueXpBdXRoU2VydmljZS5sb2dpbigpO1xuICAgICAgfSksXG4gICAgICBtZXJnZU1hcCh2ID0+IHtcbiAgICAgICAgLy8gcHJlbG9hZGVyIGZpbmlzaFxuICAgICAgICB0aGlzLnN5c3RlbUluaXQoKTtcbiAgICAgICAgbG9nKCdzdGFydHVwLnNlcnZpY2U6IHByZWxvYWRlciBmaW5pc2gnKTtcbiAgICAgICAgY29uc3Qgd2luID0gd2luZG93IGFzIE56U2FmZUFueTtcbiAgICAgICAgaWYgKHdpbiAmJiB3aW4uYXBwQm9vdHN0cmFwKSB7XG4gICAgICAgICAgd2luLmFwcEJvb3RzdHJhcCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvZih2KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHN5c3RlbUluaXQoKTogdm9pZCB7XG4gICAgbG9nKCdzdGFydHVwLnNlcnZpY2U6IHN5c3RlbSBpbml0Jyk7XG4gICAgLy8gdXNlclxuICAgIGNvbnN0IHVzZXI6IFVzZXIgPSB0aGlzLmNhY2hlU2VydmljZS5nZXQoJ195el91c2VyJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgLy8gbWVudVxuICAgIGNvbnN0IG1zID0gZGVlcENvcHkodXNlci5tZW51KS5maWx0ZXIoKG06IE1lbnUpID0+IG0uc3lzdGVtQ29kZSAmJiBtLnN5c3RlbUNvZGUgPT09IHRoaXMuYmlzLnN5c3RlbUNvZGUpIGFzIE1lbnVbXTtcbiAgICBtYXBZelNpZGVUb1llbG9uTWVudShtcyk7XG4gICAgY29uc3QgY3VycmVudE1lbnUgPSBtcy5wb3AoKSB8fCBbXTtcbiAgICB0aGlzLm1lbnVTZXJ2aWNlLmFkZChbY3VycmVudE1lbnVdKTtcblxuICAgIC8vIGxvZ28gYXBwXG4gICAgdGhpcy5zZXR0aW5nU2VydmljZS5zZXRBcHAoeyBuYW1lOiBjdXJyZW50TWVudS50ZXh0LCBkZXNjcmlwdGlvbjogY3VycmVudE1lbnUuaW50cm8gfSk7XG4gICAgdGhpcy5zZXR0aW5nU2VydmljZS5zZXRVc2VyKHtcbiAgICAgIG5hbWU6IHVzZXIucmVhbG5hbWUgfHwgJ25vIG5hbWUnLFxuICAgICAgYXZhdGFyOiBgJHt0aGlzLmJpcy5iYXNlVXJsfS9maWxlY2VudGVyL2ZpbGUvJHt1c2VyLmF2YXRhcklkfWAgfHwgJycsXG4gICAgICBlbWFpbDogdXNlci5lbWFpbCB8fCAnbm8gZW1haWwnXG4gICAgfSk7XG5cbiAgICAvLyB0aXRsZVxuICAgIHRoaXMudGl0bGVTZXJ2aWNlLmRlZmF1bHQgPSBjdXJyZW50TWVudSAmJiBjdXJyZW50TWVudS50ZXh0ID8gY3VycmVudE1lbnUudGV4dCA6ICdkZWZhdWx0IGFwcGxpY2F0aW9uIG5hbWUnO1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldFRpdGxlKGN1cnJlbnRNZW51ICYmIGN1cnJlbnRNZW51LnRleHQgPyBjdXJyZW50TWVudS50ZXh0IDogJ25vIHRpdGxlJyk7XG5cbiAgICAvLyBhY2xcbiAgICBjb25zdCBhYmlsaXRpZXM6IHN0cmluZ1tdID0gW107XG4gICAgZ2VuZXJhdGVBYmlsaXR5KFtjdXJyZW50TWVudV0sIGFiaWxpdGllcywgJycpO1xuICAgIHRoaXMuYWNsU2VydmljZS5hdHRhY2hSb2xlKFxuICAgICAgdXNlcj8ucm9sZXNcbiAgICAgICAgLm1hcCgocm9sZTogTnpTYWZlQW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHJvbGUucm9sZVZhbHVlO1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChhOiBOelNhZmVBbnkpID0+ICEhYSkgfHwgW11cbiAgICApO1xuICAgIHRoaXMuYWNsU2VydmljZS5hdHRhY2hBYmlsaXR5KGFiaWxpdGllcyk7XG5cbiAgICAvLyBjYWNoZSBjdXJyZW50XG4gICAgdGhpcy5jYWNoZVNlcnZpY2Uuc2V0KCdfeXpfY3VycmVudCcsIHtcbiAgICAgIHRleHQ6IGN1cnJlbnRNZW51LnRleHQsXG4gICAgICBpbnRybzogY3VycmVudE1lbnUuaW50cm8sXG4gICAgICBpY29uOiBjdXJyZW50TWVudS5hcHBJY29uVXJsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFl6U3RhcnR1cFNlcnZpY2VGYWN0b3J5KHN0YXJ0dXBTZXJ2aWNlOiBZelN0YXJ0dXBTZXJ2aWNlKTogKCkgPT4gT2JzZXJ2YWJsZTx2b2lkPiB7XG4gIHJldHVybiAoKSA9PiBzdGFydHVwU2VydmljZS5sb2FkKCk7XG59XG5cbi8vQHRzLWlnbm9yZVxuZXhwb3J0IGNvbnN0IFlaX0FQUElOSVRfUFJPVklERVMgPSBbXG4gIFl6U3RhcnR1cFNlcnZpY2UsXG4gIHtcbiAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgdXNlRmFjdG9yeTogWXpTdGFydHVwU2VydmljZUZhY3RvcnksXG4gICAgZGVwczogW1l6U3RhcnR1cFNlcnZpY2VdLFxuICAgIG11bHRpOiB0cnVlXG4gIH1cbl07XG4iXX0=
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { Injectable, isDevMode } from '@angular/core';
|
|
3
|
+
import { RxStomp } from '@stomp/rx-stomp';
|
|
4
|
+
import { log, WINDOW } from '@yelon/util';
|
|
5
|
+
import { mergeBisConfig } from './bis.config';
|
|
6
|
+
import { mergeStompConfig } from './stomp.config';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@yelon/util";
|
|
9
|
+
import * as i2 from "@yelon/cache";
|
|
10
|
+
import * as i3 from "ng-zorro-antd/notification";
|
|
11
|
+
export class YzStompService {
|
|
12
|
+
constructor(csr, cache, injector, notification) {
|
|
13
|
+
this.csr = csr;
|
|
14
|
+
this.cache = cache;
|
|
15
|
+
this.injector = injector;
|
|
16
|
+
this.notification = notification;
|
|
17
|
+
this.config = null;
|
|
18
|
+
this.bisConfig = null;
|
|
19
|
+
this.rxStomp = null;
|
|
20
|
+
this.subs = [];
|
|
21
|
+
if (!this.user) {
|
|
22
|
+
this.user = this.cache.get('_yz_user', { mode: 'none' });
|
|
23
|
+
}
|
|
24
|
+
if (!this.config) {
|
|
25
|
+
this.config = mergeStompConfig(this.csr);
|
|
26
|
+
}
|
|
27
|
+
if (!this.bisConfig) {
|
|
28
|
+
this.bisConfig = mergeBisConfig(csr);
|
|
29
|
+
}
|
|
30
|
+
if (!this.rxStomp) {
|
|
31
|
+
this.rxStomp = new RxStomp();
|
|
32
|
+
if (isDevMode()) {
|
|
33
|
+
log('yz.stomp.service: is dev mode');
|
|
34
|
+
log('yz.stomp.service: ', `config is ${JSON.stringify(this.config)}`);
|
|
35
|
+
this.rxStomp.configure(this.config);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const { location } = this.injector.get(DOCUMENT);
|
|
39
|
+
const { protocol, host } = location;
|
|
40
|
+
log('yz.stomp.service: ', `protocol is ${protocol},host is ${host}`);
|
|
41
|
+
if (protocol.includes('http') && !protocol.includes('https')) {
|
|
42
|
+
this.config.brokerURL = `ws://${host}${this.config.brokerURL}`;
|
|
43
|
+
}
|
|
44
|
+
if (protocol.includes('https')) {
|
|
45
|
+
this.config.brokerURL = `wss://${host}${this.config.brokerURL}`;
|
|
46
|
+
}
|
|
47
|
+
log('yz.stomp.service: ', `config is ${this.config}`);
|
|
48
|
+
this.rxStomp.configure(this.config);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
listen() {
|
|
52
|
+
this.subs.push(this.rxStomp.watch(`/topic/layout_${this.user.username}`).subscribe(message => {
|
|
53
|
+
this.createNotification(JSON.parse(message.body));
|
|
54
|
+
}));
|
|
55
|
+
this.subs.push(this.rxStomp.watch(`/topic/layout_xx_${this.user.username}`).subscribe((message) => {
|
|
56
|
+
this.logoutNotification(JSON.parse(message.body));
|
|
57
|
+
}));
|
|
58
|
+
this.rxStomp.activate();
|
|
59
|
+
}
|
|
60
|
+
createNotification(message) {
|
|
61
|
+
this.notification.create(message.type, message.title, `<a href=${message.href}>${message.content}</a>`);
|
|
62
|
+
}
|
|
63
|
+
logoutNotification(message) {
|
|
64
|
+
this.notification.create(message.type, message.title, `${message.content},剩余时间5秒`);
|
|
65
|
+
setTimeout(() => {
|
|
66
|
+
this.cache.clear();
|
|
67
|
+
localStorage.clear();
|
|
68
|
+
this.injector.get(WINDOW).location.href = `${this.bisConfig.baseUrl}/cas-proxy/app/logout`;
|
|
69
|
+
}, 5000);
|
|
70
|
+
}
|
|
71
|
+
unListen() {
|
|
72
|
+
this.subs.forEach(s => s.unsubscribe());
|
|
73
|
+
this.rxStomp.deactivate().then();
|
|
74
|
+
}
|
|
75
|
+
publish(parameters) {
|
|
76
|
+
this.rxStomp.publish(parameters);
|
|
77
|
+
}
|
|
78
|
+
watch(destination, headers) {
|
|
79
|
+
return this.rxStomp.watch(destination, headers);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
YzStompService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzStompService, deps: [{ token: i1.YunzaiConfigService }, { token: i2.CacheService }, { token: i0.Injector }, { token: i3.NzNotificationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
83
|
+
YzStompService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzStompService, providedIn: 'root' });
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: YzStompService, decorators: [{
|
|
85
|
+
type: Injectable,
|
|
86
|
+
args: [{ providedIn: 'root' }]
|
|
87
|
+
}], ctorParameters: function () { return [{ type: i1.YunzaiConfigService }, { type: i2.CacheService }, { type: i0.Injector }, { type: i3.NzNotificationService }]; } });
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXouc3RvbXAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Jpcy9sYXlvdXQveXouc3RvbXAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBWSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBUTFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFnRSxNQUFNLGFBQWEsQ0FBQztBQUV4RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQWtCbEQsTUFBTSxPQUFPLGNBQWM7SUFPekIsWUFDVSxHQUF3QixFQUN4QixLQUFtQixFQUNuQixRQUFrQixFQUNsQixZQUFtQztRQUhuQyxRQUFHLEdBQUgsR0FBRyxDQUFxQjtRQUN4QixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsaUJBQVksR0FBWixZQUFZLENBQXVCO1FBVjdDLFdBQU0sR0FBNkIsSUFBSSxDQUFDO1FBQ3hDLGNBQVMsR0FBZ0MsSUFBSSxDQUFDO1FBQzlDLFlBQU8sR0FBbUIsSUFBSSxDQUFDO1FBRS9CLFNBQUksR0FBbUIsRUFBRSxDQUFDO1FBUXhCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hC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dWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFJ4U3RvbXAgfSBmcm9tICdAc3RvbXAvcngtc3RvbXAnO1xuaW1wb3J0IHsgSVJ4U3RvbXBQdWJsaXNoUGFyYW1zIH0gZnJvbSAnQHN0b21wL3J4LXN0b21wL2VzbTYvaS1yeC1zdG9tcC1wdWJsaXNoLXBhcmFtcyc7XG5pbXBvcnQgeyBJTWVzc2FnZSwgU3RvbXBIZWFkZXJzIH0gZnJvbSAnQHN0b21wL3N0b21wanMnO1xuXG5pbXBvcnQgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgTnpOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9ub3RpZmljYXRpb24nO1xuXG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UgfSBmcm9tICdAeWVsb24vY2FjaGUnO1xuaW1wb3J0IHsgbG9nLCBXSU5ET1csIFl1bnphaUJ1c2luZXNzQ29uZmlnLCBZdW56YWlDb25maWdTZXJ2aWNlLCBZdW56YWlTdG9tcENvbmZpZyB9IGZyb20gJ0B5ZWxvbi91dGlsJztcblxuaW1wb3J0IHsgbWVyZ2VCaXNDb25maWcgfSBmcm9tICcuL2Jpcy5jb25maWcnO1xuaW1wb3J0IHsgbWVyZ2VTdG9tcENvbmZpZyB9IGZyb20gJy4vc3RvbXAuY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBTdG9tcE1lc3NhZ2Uge1xuICB0aXRsZT86IHN0cmluZztcbiAgY29udGVudD86IHN0cmluZztcbiAgaHJlZj86IHN0cmluZztcbiAgdHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY29uU3RvbXBNZXNzYWdlIGV4dGVuZHMgU3RvbXBNZXNzYWdlIHtcbiAgaWNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVc2VyU3RvbXBNZXNzYWdlIGV4dGVuZHMgU3RvbXBNZXNzYWdlIHtcbiAgdXNlcnVyaT86IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBZelN0b21wU2VydmljZSB7XG4gIGNvbmZpZzogWXVuemFpU3RvbXBDb25maWcgfCBudWxsID0gbnVsbDtcbiAgYmlzQ29uZmlnOiBZdW56YWlCdXNpbmVzc0NvbmZpZyB8IG51bGwgPSBudWxsO1xuICByeFN0b21wOiBSeFN0b21wIHwgbnVsbCA9IG51bGw7XG4gIHVzZXI6IE56U2FmZUFueTtcbiAgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNzcjogWXVuemFpQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGNhY2hlOiBDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb246IE56Tm90aWZpY2F0aW9uU2VydmljZVxuICApIHtcbiAgICBpZiAoIXRoaXMudXNlcikge1xuICAgICAgdGhpcy51c2VyID0gdGhpcy5jYWNoZS5nZXQoJ195el91c2VyJywgeyBtb2RlOiAnbm9uZScgfSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnID0gbWVyZ2VTdG9tcENvbmZpZyh0aGlzLmNzcik7XG4gICAgfVxuICAgIGlmICghdGhpcy5iaXNDb25maWcpIHtcbiAgICAgIHRoaXMuYmlzQ29uZmlnID0gbWVyZ2VCaXNDb25maWcoY3NyKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnJ4U3RvbXApIHtcbiAgICAgIHRoaXMucnhTdG9tcCA9IG5ldyBSeFN0b21wKCk7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgbG9nKCd5ei5zdG9tcC5zZXJ2aWNlOiBpcyBkZXYgbW9kZScpO1xuICAgICAgICBsb2coJ3l6LnN0b21wLnNlcnZpY2U6ICcsIGBjb25maWcgaXMgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZyl9YCk7XG4gICAgICAgIHRoaXMucnhTdG9tcC5jb25maWd1cmUodGhpcy5jb25maWcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7IGxvY2F0aW9uIH0gPSB0aGlzLmluamVjdG9yLmdldChET0NVTUVOVCk7XG4gICAgICBjb25zdCB7IHByb3RvY29sLCBob3N0IH0gPSBsb2NhdGlvbjtcbiAgICAgIGxvZygneXouc3RvbXAuc2VydmljZTogJywgYHByb3RvY29sIGlzICR7cHJvdG9jb2x9LGhvc3QgaXMgJHtob3N0fWApO1xuICAgICAgaWYgKHByb3RvY29sLmluY2x1ZGVzKCdodHRwJykgJiYgIXByb3RvY29sLmluY2x1ZGVzKCdodHRwcycpKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmJyb2tlclVSTCA9IGB3czovLyR7aG9zdH0ke3RoaXMuY29uZmlnLmJyb2tlclVSTH1gO1xuICAgICAgfVxuICAgICAgaWYgKHByb3RvY29sLmluY2x1ZGVzKCdodHRwcycpKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmJyb2tlclVSTCA9IGB3c3M6Ly8ke2hvc3R9JHt0aGlzLmNvbmZpZy5icm9rZXJVUkx9YDtcbiAgICAgIH1cbiAgICAgIGxvZygneXouc3RvbXAuc2VydmljZTogJywgYGNvbmZpZyBpcyAke3RoaXMuY29uZmlnfWApO1xuICAgICAgdGhpcy5yeFN0b21wLmNvbmZpZ3VyZSh0aGlzLmNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgbGlzdGVuKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vicy5wdXNoKFxuICAgICAgdGhpcy5yeFN0b21wIS53YXRjaChgL3RvcGljL2xheW91dF8ke3RoaXMudXNlci51c2VybmFtZX1gKS5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XG4gICAgICAgIHRoaXMuY3JlYXRlTm90aWZpY2F0aW9uKEpTT04ucGFyc2UobWVzc2FnZS5ib2R5KSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzLnB1c2goXG4gICAgICB0aGlzLnJ4U3RvbXAhLndhdGNoKGAvdG9waWMvbGF5b3V0X3h4XyR7dGhpcy51c2VyLnVzZXJuYW1lfWApLnN1YnNjcmliZSgobWVzc2FnZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9nb3V0Tm90aWZpY2F0aW9uKEpTT04ucGFyc2UobWVzc2FnZS5ib2R5KSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5yeFN0b21wIS5hY3RpdmF0ZSgpO1xuICB9XG5cbiAgY3JlYXRlTm90aWZpY2F0aW9uKG1lc3NhZ2U6IFN0b21wTWVzc2FnZSk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uLmNyZWF0ZShtZXNzYWdlLnR5cGUhLCBtZXNzYWdlLnRpdGxlISwgYDxhIGhyZWY9JHttZXNzYWdlLmhyZWZ9PiR7bWVzc2FnZS5jb250ZW50fTwvYT5gKTtcbiAgfVxuXG4gIGxvZ291dE5vdGlmaWNhdGlvbihtZXNzYWdlOiBTdG9tcE1lc3NhZ2UpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbi5jcmVhdGUobWVzc2FnZS50eXBlISwgbWVzc2FnZS50aXRsZSEsIGAke21lc3NhZ2UuY29udGVudH0s5Ymp5L2Z5pe26Ze0NeenkmApO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICAgICAgbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgICB0aGlzLmluamVjdG9yLmdldChXSU5ET1cpLmxvY2F0aW9uLmhyZWYgPSBgJHt0aGlzLmJpc0NvbmZpZyEuYmFzZVVybH0vY2FzLXByb3h5L2FwcC9sb2dvdXRgO1xuICAgIH0sIDUwMDApO1xuICB9XG5cbiAgdW5MaXN0ZW4oKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMucnhTdG9tcCEuZGVhY3RpdmF0ZSgpLnRoZW4oKTtcbiAgfVxuXG4gIHB1Ymxpc2gocGFyYW1ldGVyczogSVJ4U3RvbXBQdWJsaXNoUGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5yeFN0b21wIS5wdWJsaXNoKHBhcmFtZXRlcnMpO1xuICB9XG5cbiAgd2F0Y2goZGVzdGluYXRpb246IHN0cmluZywgaGVhZGVycz86IFN0b21wSGVhZGVycyk6IE9ic2VydmFibGU8SU1lc3NhZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5yeFN0b21wIS53YXRjaChkZXN0aW5hdGlvbiwgaGVhZGVycyk7XG4gIH1cbn1cbiJdfQ==
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|