@ebuilding/runtime 3.0.3 → 3.0.5

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/fesm2022/core.mjs CHANGED
@@ -279,7 +279,11 @@ function handleData(injector, ev, req, next) {
279
279
  case 200:
280
280
  if (ev instanceof HttpResponse) {
281
281
  const body = ev.body;
282
- if (body && body.type === 'application/vnd.ms-excel') {
282
+ const contentDisposition = ev.headers.get('content-disposition');
283
+ const isDownload = /attachment/i.test(contentDisposition || '')
284
+ || body?.type === 'application/vnd.ms-excel'
285
+ || body?.type?.includes('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
286
+ if (body && isDownload) {
283
287
  // ❗建议你在此处引入并注入下载服务
284
288
  // const downloadService = injector.get(YourDownloadService);
285
289
  // downloadService.download(ev);
@@ -1 +1 @@
1
- {"version":3,"file":"core.mjs","sources":["../../../../packages/runtime/core/i18n/i18n.service.ts","../../../../packages/runtime/core/runtime-core.tokens.ts","../../../../packages/runtime/core/net/helper.ts","../../../../packages/runtime/core/net/refresh-token.ts","../../../../packages/runtime/core/net/default.interceptor.ts","../../../../packages/runtime/core/startup/startup.service.ts","../../../../packages/runtime/core/start-default.guard.ts","../../../../packages/runtime/core/app-feature-config.service.ts","../../../../packages/runtime/core/app-feature.guard.ts","../../../../packages/runtime/core/core.ts"],"sourcesContent":["\nimport { Platform } from '@angular/cdk/platform';\nimport { registerLocaleData } from '@angular/common';\nimport ngEn from '@angular/common/locales/en';\nimport ngZh from '@angular/common/locales/zh';\nimport ngZhTw from '@angular/common/locales/zh-Hant';\nimport { Injectable, inject } from '@angular/core';\nimport {\n DelonLocaleService,\n en_US as delonEnUS,\n SettingsService,\n zh_CN as delonZhCn,\n zh_TW as delonZhTw,\n _HttpClient,\n AlainI18nBaseService\n} from '@delon/theme';\nimport { AlainConfigService } from '@delon/util/config';\nimport { enUS as dfEn, zhCN as dfZhCn, zhTW as dfZhTw } from 'date-fns/locale';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { en_US as zorroEnUS, NzI18nService, zh_CN as zorroZhCN, zh_TW as zorroZhTW } from 'ng-zorro-antd/i18n';\nimport { Observable } from 'rxjs';\n\ninterface LangConfigData {\n abbr: string;\n text: string;\n ng: NzSafeAny;\n zorro: NzSafeAny;\n date: NzSafeAny;\n delon: NzSafeAny;\n}\n\nconst DEFAULT = 'zh-CN';\nconst LANGS: Record<string, LangConfigData> = {\n 'zh-CN': {\n text: '简体中文',\n ng: ngZh,\n zorro: zorroZhCN,\n date: dfZhCn,\n delon: delonZhCn,\n abbr: '🇨🇳'\n },\n 'zh-TW': {\n text: '繁体中文',\n ng: ngZhTw,\n zorro: zorroZhTW,\n date: dfZhTw,\n delon: delonZhTw,\n abbr: '🇭🇰'\n },\n 'en-US': {\n text: 'English',\n ng: ngEn,\n zorro: zorroEnUS,\n date: dfEn,\n delon: delonEnUS,\n abbr: '🇬🇧'\n }\n};\n\n@Injectable({ providedIn: 'root' })\nexport class I18NService extends AlainI18nBaseService {\n private readonly http = inject(_HttpClient);\n private readonly settings = inject(SettingsService);\n private readonly nzI18nService = inject(NzI18nService);\n private readonly delonLocaleService = inject(DelonLocaleService);\n private readonly platform = inject(Platform);\n\n protected override _defaultLang = DEFAULT;\n private _langs = Object.keys(LANGS).map(code => {\n const item = LANGS[code];\n return { code, text: item.text, abbr: item.abbr };\n });\n\n constructor(cogSrv: AlainConfigService) {\n super(cogSrv);\n\n const defaultLang = this.getDefaultLang();\n this._defaultLang = this._langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;\n }\n\n private getDefaultLang(): string {\n if (!this.platform.isBrowser) {\n return DEFAULT;\n }\n if (this.settings.layout.lang) {\n return this.settings.layout.lang;\n }\n let res = (navigator.languages ? navigator.languages[0] : null) || navigator.language;\n const arr = res.split('-');\n return arr.length <= 1 ? res : `${arr[0]}-${arr[1].toUpperCase()}`;\n }\n\n loadLangData(lang: string): Observable<NzSafeAny> {\n return this.http.get(`./assets/tmp/i18n/${lang}.json`);\n }\n\n use(lang: string, data: Record<string, unknown>): void {\n if (this._currentLang === lang) return;\n\n this._data = this.flatData(data, []);\n\n const item = LANGS[lang];\n registerLocaleData(item.ng);\n this.nzI18nService.setLocale(item.zorro);\n this.nzI18nService.setDateLocale(item.date);\n this.delonLocaleService.setLocale(item.delon);\n this._currentLang = lang;\n\n this._change$.next(lang);\n }\n\n getLangs(): Array<{ code: string; text: string; abbr: string }> {\n return this._langs;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface RuntimeCoreEnvironment {\n production: boolean;\n useHash: boolean;\n api: {\n baseUrl: string;\n licenseUrl?: string;\n flyUrl: string;\n preRequest?: string;\n mockToken?: string;\n refreshTokenEnabled?: boolean;\n refreshTokenType?: string;\n };\n modules?: unknown[];\n config?: unknown;\n configFile?: string;\n}\n\nexport const RUNTIME_CORE_ENVIRONMENT = new InjectionToken<RuntimeCoreEnvironment>('RUNTIME_CORE_ENVIRONMENT', {\n providedIn: 'root',\n factory: () => ({\n production: false,\n useHash: false,\n api: {\n baseUrl: '',\n licenseUrl: '',\n flyUrl: '',\n preRequest: '',\n mockToken: '',\n refreshTokenEnabled: true,\n refreshTokenType: 'auth-refresh',\n },\n modules: [],\n config: null,\n configFile: 'development.json',\n }),\n});\n\n","import { HttpHeaders, HttpResponseBase, HttpRequest } from '@angular/common/http';\nimport { Injector, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';\nimport { ALAIN_I18N_TOKEN, SettingsService } from '@delon/theme';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\nimport { AppCustomerId, AppSetId } from '@ebuilding/base/shared.var/shared.variable';\nimport { Gram_App_Type } from '@ebuilding/base/shared.var/shared.constant';\nimport { RUNTIME_CORE_ENVIRONMENT } from '../runtime-core.tokens';\n\nexport interface ReThrowHttpError {\n body: any;\n _throw: true;\n}\n\nexport const CODEMESSAGE: Record<number, string> = {\n 200: '服务器成功返回请求的数据。',\n 201: '新建或修改数据成功。',\n 202: '一个请求已经进入后台排队(异步任务)。',\n 204: '删除数据成功。',\n 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',\n 401: '用户没有权限(令牌、用户名、密码错误)。',\n 403: '用户得到授权,但是访问是被禁止的。',\n 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',\n 406: '请求的格式不可得。',\n 410: '请求的资源被永久删除,且不会再得到的。',\n 422: '当创建一个对象时,发生一个验证错误。',\n 500: '服务器发生错误,请检查服务器。',\n 502: '网关错误。',\n 503: '服务不可用,服务器暂时过载或维护。',\n 504: '网关超时。'\n};\n\n\nexport function goTo(injector: Injector, url: string): void {\n setTimeout(() => injector.get(Router).navigateByUrl(url));\n}\n\nexport function toLogin(injector: Injector): void {\n //injector.get(NzNotificationService).error(`未登录或登录已过期,请重新登录。`, ``);\n goTo(injector, injector.get(DA_SERVICE_TOKEN).login_url!);\n}\n\nexport function getAdditionalHeaders(req: HttpRequest<any>, injector: Injector): Record<string, string> {\n const res: Record<string, string> = {};\n const environment = injector.get(RUNTIME_CORE_ENVIRONMENT);\n\n const tokenSrv = injector.get(DA_SERVICE_TOKEN);\n const token = tokenSrv.get()?.token;\n\n const settingSrv = injector.get(SettingsService);\n\n const lang = inject(ALAIN_I18N_TOKEN).currentLang;\n if (!req?.headers?.has('Accept-Language') && lang) {\n res['Accept-Language'] = lang;\n }\n const appType: any = settingSrv.getData(Gram_App_Type);\n if (token) {\n if (req.url.indexOf('airservice-') > 0) {\n res['x-auth-token'] = environment.api.mockToken;\n }\n\n const eId: any = settingSrv.getData(AppSetId);\n res['X-Access-Token'] = token;\n res['e-id'] = eId!! ? eId : '';\n res['customerId'] = settingSrv.getData(AppCustomerId);\n\n }\n\n\n\n if (req.url.indexOf('auth/login') > 0) {\n if (appType == 'FLY') {\n res['x-auth-token'] = '';\n } else {\n res['X-Access-Token'] = '';\n res['e-id'] = '';\n }\n }\n if (req.url.indexOf('api/etalent/v1/upload') > 0) {\n const res2: { [name: string]: string } = {};\n res2['Authorization'] = '';\n res2['X-CSRF-Token'] = '';\n res2['X-Max'] = '';\n return res2;\n }\n\n return res;\n}\n\nexport function checkStatus(injector: Injector, ev: HttpResponseBase): void {\n if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {\n return;\n }\n\n const errortext = CODEMESSAGE[ev.status] || ev.statusText;\n injector.get(NzNotificationService).error(`请求错误 ${ev.status}: ${ev.url}`, errortext);\n}\n","import { HttpClient, HttpHandlerFn, HttpRequest, HttpResponseBase } from '@angular/common/http';\nimport { EnvironmentProviders, Injector, inject, provideAppInitializer } from '@angular/core';\nimport { DA_SERVICE_TOKEN } from '@delon/auth';\nimport { BehaviorSubject, Observable, catchError, filter, switchMap, take, throwError } from 'rxjs';\n\nimport { toLogin } from './helper';\n\nlet refreshToking = false;\nlet refreshToken$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n/**\n * 重新附加新 Token 信息\n *\n * > 由于已经发起的请求,不会再走一遍 `@delon/auth` 因此需要结合业务情况重新附加新的 Token\n */\nfunction reAttachToken(injector: Injector, req: HttpRequest<any>): HttpRequest<any> {\n const token = injector.get(DA_SERVICE_TOKEN).get()?.token;\n return req.clone({\n setHeaders: {\n token: `Bearer ${token}`\n }\n });\n}\n\nfunction refreshTokenRequest(injector: Injector): Observable<any> {\n const model = injector.get(DA_SERVICE_TOKEN).get();\n return injector.get(HttpClient).post(`/api/auth/refresh`, { headers: { refresh_token: model?.['refresh_token'] || '' } });\n}\n\n/**\n * 刷新Token方式一:使用 401 重新刷新 Token\n */\nexport function tryRefreshToken(injector: Injector, ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandlerFn): Observable<any> {\n // 1、若请求为刷新Token请求,表示来自刷新Token可以直接跳转登录页\n if ([`/api/auth/refresh`].some(url => req.url.includes(url))) {\n toLogin(injector);\n return throwError(() => ev);\n }\n // 2、如果 `refreshToking` 为 `true` 表示已经在请求刷新 Token 中,后续所有请求转入等待状态,直至结果返回后再重新发起请求\n if (refreshToking) {\n return refreshToken$.pipe(\n filter(v => !!v),\n take(1),\n switchMap(() => next(reAttachToken(injector, req)))\n );\n }\n // 3、尝试调用刷新 Token\n refreshToking = true;\n refreshToken$.next(null);\n\n return refreshTokenRequest(injector).pipe(\n switchMap(res => {\n // 通知后续请求继续执行\n refreshToking = false;\n refreshToken$.next(res);\n // 重新保存新 token\n injector.get(DA_SERVICE_TOKEN).set(res);\n // 重新发起请求\n return next(reAttachToken(injector, req));\n }),\n catchError(err => {\n refreshToking = false;\n toLogin(injector);\n return throwError(() => err);\n })\n );\n}\n\nfunction buildAuthRefresh(injector: Injector): void {\n const tokenSrv = injector.get(DA_SERVICE_TOKEN);\n tokenSrv.refresh\n .pipe(\n filter(() => !refreshToking),\n switchMap(res => {\n refreshToking = true;\n return refreshTokenRequest(injector);\n })\n )\n .subscribe({\n next: res => {\n // TODO: Mock expired value\n res.expired = +new Date() + 1000 * 60 * 5;\n refreshToking = false;\n tokenSrv.set(res);\n },\n error: () => toLogin(injector)\n });\n}\n\n/**\n * 刷新Token方式二:使用 `@delon/auth` 的 `refresh` 接口,需要在 `app.config.ts` 中注册 `provideBindAuthRefresh`\n */\nexport function provideBindAuthRefresh(): EnvironmentProviders[] {\n return [\n provideAppInitializer(() => {\n const initializerFn = (\n (injector: Injector) => () =>\n buildAuthRefresh(injector)\n )(inject(Injector));\n return initializerFn();\n })\n ];\n}\n","import {\n HttpErrorResponse, HttpHandlerFn, HttpInterceptorFn, HttpRequest, HttpResponseBase,\n HttpResponse, HttpHeaders\n} from '@angular/common/http';\nimport { Injector, inject } from '@angular/core';\nimport { IGNORE_BASE_URL } from '@delon/theme';\nimport { Observable, of, throwError, mergeMap, catchError } from 'rxjs';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { ReThrowHttpError, checkStatus, getAdditionalHeaders, toLogin } from './helper';\nimport { RUNTIME_CORE_ENVIRONMENT } from '../runtime-core.tokens';\n\nfunction handleData(injector: Injector, ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandlerFn): Observable<any> {\n const msg = injector.get(NzMessageService);\n checkStatus(injector, ev);\n\n switch (ev.status) {\n case 200:\n if (ev instanceof HttpResponse) {\n const body: any = ev.body;\n if (body && body.type === 'application/vnd.ms-excel') {\n // ❗建议你在此处引入并注入下载服务\n // const downloadService = injector.get(YourDownloadService);\n // downloadService.download(ev); \n download(ev);\n } else {\n if (body?.code === '1001') {\n toLogin(injector);\n throw new Error(body.message);\n } else if (body?.code === '99999') {\n msg.error('上传的license文件不合规,请认证后再上传');\n return of(new HttpResponse({ body }));\n } else {\n if (body?.error) {\n return throwError(() => ({ error: body.error }));\n }\n if (body?.code && Number(body.code) !== 200) {\n msg.error(body.message);\n }\n if (body?.data !== undefined && Number(body.code) === 200) {\n return of(new HttpResponse({ body }));\n }\n }\n }\n }\n break;\n\n case 401:\n if (ev.url && ev.url.indexOf('/sys/module') < 0) {\n const msgText = ev['error']?.['message'];\n if (msgText && msgText !== 'token非法无效!' && msgText !== 'Token失效,请重新登录!') {\n // const authService = injector.get(AuthService);\n // authService.authErrorSubject.next(msgText);\n toLogin(injector);\n } else {\n toLogin(injector);\n }\n } else {\n toLogin(injector);\n }\n break;\n\n case 403:\n case 404:\n case 500:\n // 可跳转到异常页面,例如:\n // goTo(injector, `/exception/${ev.status}?url=${req.urlWithParams}`);\n break;\n\n default:\n if (ev instanceof HttpErrorResponse) {\n console.warn('未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起', ev);\n }\n break;\n }\n\n if (ev instanceof HttpErrorResponse) {\n return throwError(() => ev);\n } else if ((ev as unknown as ReThrowHttpError)._throw === true) {\n return throwError(() => (ev as unknown as ReThrowHttpError).body);\n } else {\n return of(ev);\n }\n}\n\nexport const defaultInterceptor: HttpInterceptorFn = (req, next) => {\n const injector = inject(Injector);\n const environment = inject(RUNTIME_CORE_ENVIRONMENT);\n\n let url = req.url;\n if (!req.context.get(IGNORE_BASE_URL) && !url.startsWith('https://') && !url.startsWith('http://') &&\n url.indexOf('assets') < 0 &&\n url.indexOf('api/etalent/v1/upload') < 0) {\n const { baseUrl, flyUrl } = environment.api;\n if (url.indexOf('flv/index') > 0) {\n }\n else if (url.indexOf('airservice-') > 0 || url.indexOf('airadapter-') > 0) {\n url = flyUrl + (flyUrl.endsWith('/') && url.startsWith('/') ? url.substring(1) : url);\n } else {\n url = baseUrl + (baseUrl.endsWith('/') && url.startsWith('/') ? url.substring(1) : url);\n }\n }\n let headers = req.headers;\n const shouldAddToken = !url.includes('flv/index/api/whep') && !url.includes('auth/login');\n if (shouldAddToken) {\n const additional = getAdditionalHeaders(req, injector);\n for (const k of Object.keys(additional)) {\n headers = headers.set(k, additional[k]);\n }\n } else {\n headers = new HttpHeaders();\n }\n\n const newReq = req.clone({\n url,\n headers,\n responseType: url.indexOf('export') > 0 ? 'blob' : null\n });\n\n return next(newReq).pipe(\n mergeMap(ev => {\n if (ev instanceof HttpResponseBase) {\n return handleData(injector, ev, newReq, next);\n }\n return of(ev);\n }),\n catchError((err: HttpErrorResponse) => handleData(injector, err, newReq, next)) // ✅ 必须保留\n );\n};\n\nfunction download(ev: HttpResponse<Blob>) {\n const data = ev.body;\n const headers = ev.headers;\n\n let fileName = 'download.xls';\n const contentDisposition = headers.get('Content-Disposition') || headers.get('content-disposition');\n if (contentDisposition) {\n const matches = /filename=([^;]+)/.exec(contentDisposition);\n if (matches?.[1]) {\n fileName = decodeURIComponent(matches[1].replace(/['\"]/g, ''));\n }\n }\n\n executeDownload(data, fileName);\n}\n\nfunction executeDownload(data: any, fileName: string) {\n if (!data) return;\n\n const url = window.URL.createObjectURL(new Blob([data]));\n const link = document.createElement('a');\n link.style.display = 'none';\n link.href = url;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { EnvironmentProviders, Injectable, Provider, inject, provideAppInitializer } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ACLService } from '@delon/acl';\nimport { DA_SERVICE_TOKEN } from '@delon/auth';\nimport { ALAIN_I18N_TOKEN, MenuService, SettingsService, TitleService, _HttpClient } from '@delon/theme';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { Observable, zip, of, catchError, map, switchMap, timeout } from 'rxjs';\nimport _ from 'lodash';\nimport { I18NService } from '../i18n/i18n.service';\nimport { initData } from '@ebuilding/base/shared.util/comm.menu';\nimport { ModuleAPI, Gram_App_Module } from '@ebuilding/base/shared.var/shared.constant';\nimport { RUNTIME_CORE_ENVIRONMENT } from '../runtime-core.tokens';\n\n/**\n * Used for application startup\n * Generally used to get the basic data of the application, like: Menu Data, User Data, etc.\n */\nexport function provideStartup(): Array<Provider | EnvironmentProviders> {\n return [\n StartupService,\n provideAppInitializer(() => {\n const initializerFn = (\n (startupService: StartupService) => () =>\n startupService.load()\n )(inject(StartupService));\n return initializerFn();\n })\n ];\n}\n\n@Injectable()\nexport class StartupService {\n private menuService = inject(MenuService);\n private settingService = inject(SettingsService);\n private aclService = inject(ACLService);\n private titleService = inject(TitleService);\n private httpClient = inject(HttpClient);\n private http = inject(_HttpClient);\n private router = inject(Router);\n private i18n = inject<I18NService>(ALAIN_I18N_TOKEN);\n private tokenSrv = inject(DA_SERVICE_TOKEN);\n private environment = inject(RUNTIME_CORE_ENVIRONMENT);\n load(): Observable<void> {\n const configFile = this.environment.configFile || 'development.json';\n return this.http.get(`assets/config/${configFile}?rd=${Math.random()}`).pipe(\n switchMap((configData: any) => {\n this.environment.config = configData;\n this.environment.useHash = configData.useHash;\n this.environment.production = configData.production;\n this.environment.api.baseUrl = configData.baseUrl;\n this.environment.api.flyUrl = configData.flyUrl;\n this.environment.api.licenseUrl = configData.licenseUrl;\n this.environment.api.mockToken = configData.mockToken;\n this.environment.api.preRequest = configData.preRequest;\n\n const defaultLang = this.i18n.defaultLang;\n\n return zip(\n this.getModule(),\n this.httpClient.get(`assets/tmp/i18n/${defaultLang}.json?rd=${Math.random()}`),\n this.httpClient.get(`assets/tmp/app-data.json?rd=${Math.random()}`)\n ).pipe(\n timeout(10000),\n map(([appModule, langData, appData]: [any, any, any]) => {\n this.i18n.use(defaultLang, langData);\n\n const res = appData as NzSafeAny;\n this.settingService.setApp(res.app);\n this.aclService.setFull(false);\n\n let listRole: any[] = [];\n const token: any = this.tokenSrv.get();\n if (token?.userInfo?.listRole) {\n listRole = token.userInfo.listRole;\n }\n this.aclService.setRole(listRole);\n\n let menuData: any[] = [];\n if (appModule?.result?.length > 0) {\n menuData = initData(appModule.result);\n }\n this.menuService.add(res.menu);\n this.menuService.resume();\n this.settingService.setData(Gram_App_Module, _.cloneDeep(menuData));\n\n\n this.titleService.default = '';\n this.titleService.suffix = res.app.name;\n }),\n catchError(res => {\n console.warn(`StartupService.load: Network request failed`, res);\n // setTimeout(() => this.router.navigateByUrl(`/exception/500`));\n return of(); // 返回空 Observable<void>\n })\n );\n }),\n catchError(res => {\n console.warn(`StartupService.load: App initialization failed`, res);\n return of(void 0);\n })\n );\n }\n\n\n getModule() {\n const token: any = this.tokenSrv.get()?.token;\n if (token) {\n return this.http.post(`${ModuleAPI.user}/user/sys/module`);\n } else {\n return of(null);\n }\n }\n}\n","\nimport { inject } from '@angular/core';\nimport { Router, CanActivateFn } from '@angular/router';\nimport { SettingsService } from '@delon/theme';\nimport { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';\nimport { Gram_Platform } from '@ebuilding/base/shared.var/shared.constant';\n\nexport const startDefaultGuard: CanActivateFn = (_route, state) => {\n const router = inject(Router);\n const settingSrv = inject(SettingsService);\n const tokenSrv = inject<ITokenService>(DA_SERVICE_TOKEN);\n const platform: any = settingSrv.getData(Gram_Platform);\n const token: any = tokenSrv.get();\n\n if (token && token?.token) {\n } else {\n return router.parseUrl('/auth/login');\n }\n\n if ((token?.forceChangePwd === true || token?.userInfo?.forceChangePwd === true) && state.url !== '/admin/change-password') {\n return router.parseUrl('/admin/change-password');\n }\n\n if (platform == \"DEFAULT\") {\n return true;\n }\n return router.parseUrl('/exception');\n};\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SettingsService, _HttpClient } from '@delon/theme';\nimport { ModuleAPI } from '@ebuilding/base/shared.var/shared.constant';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, shareReplay, tap } from 'rxjs/operators';\n\nexport const AppFeatureConfigKey = 'APP_FEATURE_CONFIG';\n\nexport interface AppFeatureConfig {\n enableWorkflow: boolean;\n enableMessageCenter: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AppFeatureConfigService {\n private loading$: Observable<AppFeatureConfig> | null = null;\n\n constructor(private http: _HttpClient, private settings: SettingsService, private router: Router) { }\n\n load(force = false): Observable<AppFeatureConfig> {\n if (!force) {\n const cached = this.current();\n if (cached) {\n return of(cached);\n }\n if (this.loading$) {\n return this.loading$;\n }\n }\n this.loading$ = this.http.post(`${ModuleAPI.system}/sys/config/listData`, null).pipe(\n map((res: any) => this.fromResponse(res?.result || {})),\n tap(config => this.set(config)),\n catchError(() => {\n const config = this.defaults();\n this.set(config);\n return of(config);\n }),\n shareReplay(1)\n );\n return this.loading$;\n }\n\n save(config: AppFeatureConfig): Observable<AppFeatureConfig> {\n const body = {\n ENABLE_WORKFLOW: config.enableWorkflow ? '1' : '0',\n ENABLE_MESSAGE_CENTER: config.enableMessageCenter ? '1' : '0'\n };\n return this.http.post(`${ModuleAPI.system}/sys/config/saveData`, body).pipe(\n map((res: any) => this.fromResponse(res?.result || body)),\n tap(value => this.set(value))\n );\n }\n\n current(): AppFeatureConfig | null {\n return this.settings.getData(AppFeatureConfigKey) || null;\n }\n\n redirectHome() {\n this.router.navigateByUrl('/home');\n }\n\n private set(config: AppFeatureConfig) {\n this.settings.setData(AppFeatureConfigKey, config);\n }\n\n private fromResponse(data: any): AppFeatureConfig {\n return {\n enableWorkflow: this.toBool(data?.ENABLE_WORKFLOW, true),\n enableMessageCenter: this.toBool(data?.ENABLE_MESSAGE_CENTER, true)\n };\n }\n\n private defaults(): AppFeatureConfig {\n return {\n enableWorkflow: true,\n enableMessageCenter: true\n };\n }\n\n private toBool(value: any, defaultValue: boolean): boolean {\n if (value === undefined || value === null || value === '') {\n return defaultValue;\n }\n return value === true || value === 1 || value === '1' || `${value}`.toLowerCase() === 'true';\n }\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { AppFeatureConfigService } from './app-feature-config.service';\n\nexport const workflowFeatureGuard: CanActivateFn = () => {\n const service = inject(AppFeatureConfigService);\n return service.load().pipe(\n map(config => {\n if (!config.enableWorkflow) {\n service.redirectHome();\n return false;\n }\n return true;\n })\n );\n};\n\nexport const messageFeatureGuard: CanActivateFn = () => {\n const service = inject(AppFeatureConfigService);\n return service.load().pipe(\n map(config => {\n if (!config.enableMessageCenter) {\n service.redirectHome();\n return false;\n }\n return true;\n })\n );\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["zorroZhCN","dfZhCn","delonZhCn","zorroZhTW","dfZhTw","delonZhTw","zorroEnUS","dfEn","delonEnUS","map","catchError","i1"],"mappings":"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"}
1
+ {"version":3,"file":"core.mjs","sources":["../../../../packages/runtime/core/i18n/i18n.service.ts","../../../../packages/runtime/core/runtime-core.tokens.ts","../../../../packages/runtime/core/net/helper.ts","../../../../packages/runtime/core/net/refresh-token.ts","../../../../packages/runtime/core/net/default.interceptor.ts","../../../../packages/runtime/core/startup/startup.service.ts","../../../../packages/runtime/core/start-default.guard.ts","../../../../packages/runtime/core/app-feature-config.service.ts","../../../../packages/runtime/core/app-feature.guard.ts","../../../../packages/runtime/core/core.ts"],"sourcesContent":["\nimport { Platform } from '@angular/cdk/platform';\nimport { registerLocaleData } from '@angular/common';\nimport ngEn from '@angular/common/locales/en';\nimport ngZh from '@angular/common/locales/zh';\nimport ngZhTw from '@angular/common/locales/zh-Hant';\nimport { Injectable, inject } from '@angular/core';\nimport {\n DelonLocaleService,\n en_US as delonEnUS,\n SettingsService,\n zh_CN as delonZhCn,\n zh_TW as delonZhTw,\n _HttpClient,\n AlainI18nBaseService\n} from '@delon/theme';\nimport { AlainConfigService } from '@delon/util/config';\nimport { enUS as dfEn, zhCN as dfZhCn, zhTW as dfZhTw } from 'date-fns/locale';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { en_US as zorroEnUS, NzI18nService, zh_CN as zorroZhCN, zh_TW as zorroZhTW } from 'ng-zorro-antd/i18n';\nimport { Observable } from 'rxjs';\n\ninterface LangConfigData {\n abbr: string;\n text: string;\n ng: NzSafeAny;\n zorro: NzSafeAny;\n date: NzSafeAny;\n delon: NzSafeAny;\n}\n\nconst DEFAULT = 'zh-CN';\nconst LANGS: Record<string, LangConfigData> = {\n 'zh-CN': {\n text: '简体中文',\n ng: ngZh,\n zorro: zorroZhCN,\n date: dfZhCn,\n delon: delonZhCn,\n abbr: '🇨🇳'\n },\n 'zh-TW': {\n text: '繁体中文',\n ng: ngZhTw,\n zorro: zorroZhTW,\n date: dfZhTw,\n delon: delonZhTw,\n abbr: '🇭🇰'\n },\n 'en-US': {\n text: 'English',\n ng: ngEn,\n zorro: zorroEnUS,\n date: dfEn,\n delon: delonEnUS,\n abbr: '🇬🇧'\n }\n};\n\n@Injectable({ providedIn: 'root' })\nexport class I18NService extends AlainI18nBaseService {\n private readonly http = inject(_HttpClient);\n private readonly settings = inject(SettingsService);\n private readonly nzI18nService = inject(NzI18nService);\n private readonly delonLocaleService = inject(DelonLocaleService);\n private readonly platform = inject(Platform);\n\n protected override _defaultLang = DEFAULT;\n private _langs = Object.keys(LANGS).map(code => {\n const item = LANGS[code];\n return { code, text: item.text, abbr: item.abbr };\n });\n\n constructor(cogSrv: AlainConfigService) {\n super(cogSrv);\n\n const defaultLang = this.getDefaultLang();\n this._defaultLang = this._langs.findIndex(w => w.code === defaultLang) === -1 ? DEFAULT : defaultLang;\n }\n\n private getDefaultLang(): string {\n if (!this.platform.isBrowser) {\n return DEFAULT;\n }\n if (this.settings.layout.lang) {\n return this.settings.layout.lang;\n }\n let res = (navigator.languages ? navigator.languages[0] : null) || navigator.language;\n const arr = res.split('-');\n return arr.length <= 1 ? res : `${arr[0]}-${arr[1].toUpperCase()}`;\n }\n\n loadLangData(lang: string): Observable<NzSafeAny> {\n return this.http.get(`./assets/tmp/i18n/${lang}.json`);\n }\n\n use(lang: string, data: Record<string, unknown>): void {\n if (this._currentLang === lang) return;\n\n this._data = this.flatData(data, []);\n\n const item = LANGS[lang];\n registerLocaleData(item.ng);\n this.nzI18nService.setLocale(item.zorro);\n this.nzI18nService.setDateLocale(item.date);\n this.delonLocaleService.setLocale(item.delon);\n this._currentLang = lang;\n\n this._change$.next(lang);\n }\n\n getLangs(): Array<{ code: string; text: string; abbr: string }> {\n return this._langs;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface RuntimeCoreEnvironment {\n production: boolean;\n useHash: boolean;\n api: {\n baseUrl: string;\n licenseUrl?: string;\n flyUrl: string;\n preRequest?: string;\n mockToken?: string;\n refreshTokenEnabled?: boolean;\n refreshTokenType?: string;\n };\n modules?: unknown[];\n config?: unknown;\n configFile?: string;\n}\n\nexport const RUNTIME_CORE_ENVIRONMENT = new InjectionToken<RuntimeCoreEnvironment>('RUNTIME_CORE_ENVIRONMENT', {\n providedIn: 'root',\n factory: () => ({\n production: false,\n useHash: false,\n api: {\n baseUrl: '',\n licenseUrl: '',\n flyUrl: '',\n preRequest: '',\n mockToken: '',\n refreshTokenEnabled: true,\n refreshTokenType: 'auth-refresh',\n },\n modules: [],\n config: null,\n configFile: 'development.json',\n }),\n});\n\n","import { HttpHeaders, HttpResponseBase, HttpRequest } from '@angular/common/http';\nimport { Injector, inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';\nimport { ALAIN_I18N_TOKEN, SettingsService } from '@delon/theme';\nimport { NzNotificationService } from 'ng-zorro-antd/notification';\nimport { AppCustomerId, AppSetId } from '@ebuilding/base/shared.var/shared.variable';\nimport { Gram_App_Type } from '@ebuilding/base/shared.var/shared.constant';\nimport { RUNTIME_CORE_ENVIRONMENT } from '../runtime-core.tokens';\n\nexport interface ReThrowHttpError {\n body: any;\n _throw: true;\n}\n\nexport const CODEMESSAGE: Record<number, string> = {\n 200: '服务器成功返回请求的数据。',\n 201: '新建或修改数据成功。',\n 202: '一个请求已经进入后台排队(异步任务)。',\n 204: '删除数据成功。',\n 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',\n 401: '用户没有权限(令牌、用户名、密码错误)。',\n 403: '用户得到授权,但是访问是被禁止的。',\n 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',\n 406: '请求的格式不可得。',\n 410: '请求的资源被永久删除,且不会再得到的。',\n 422: '当创建一个对象时,发生一个验证错误。',\n 500: '服务器发生错误,请检查服务器。',\n 502: '网关错误。',\n 503: '服务不可用,服务器暂时过载或维护。',\n 504: '网关超时。'\n};\n\n\nexport function goTo(injector: Injector, url: string): void {\n setTimeout(() => injector.get(Router).navigateByUrl(url));\n}\n\nexport function toLogin(injector: Injector): void {\n //injector.get(NzNotificationService).error(`未登录或登录已过期,请重新登录。`, ``);\n goTo(injector, injector.get(DA_SERVICE_TOKEN).login_url!);\n}\n\nexport function getAdditionalHeaders(req: HttpRequest<any>, injector: Injector): Record<string, string> {\n const res: Record<string, string> = {};\n const environment = injector.get(RUNTIME_CORE_ENVIRONMENT);\n\n const tokenSrv = injector.get(DA_SERVICE_TOKEN);\n const token = tokenSrv.get()?.token;\n\n const settingSrv = injector.get(SettingsService);\n\n const lang = inject(ALAIN_I18N_TOKEN).currentLang;\n if (!req?.headers?.has('Accept-Language') && lang) {\n res['Accept-Language'] = lang;\n }\n const appType: any = settingSrv.getData(Gram_App_Type);\n if (token) {\n if (req.url.indexOf('airservice-') > 0) {\n res['x-auth-token'] = environment.api.mockToken;\n }\n\n const eId: any = settingSrv.getData(AppSetId);\n res['X-Access-Token'] = token;\n res['e-id'] = eId!! ? eId : '';\n res['customerId'] = settingSrv.getData(AppCustomerId);\n\n }\n\n\n\n if (req.url.indexOf('auth/login') > 0) {\n if (appType == 'FLY') {\n res['x-auth-token'] = '';\n } else {\n res['X-Access-Token'] = '';\n res['e-id'] = '';\n }\n }\n if (req.url.indexOf('api/etalent/v1/upload') > 0) {\n const res2: { [name: string]: string } = {};\n res2['Authorization'] = '';\n res2['X-CSRF-Token'] = '';\n res2['X-Max'] = '';\n return res2;\n }\n\n return res;\n}\n\nexport function checkStatus(injector: Injector, ev: HttpResponseBase): void {\n if ((ev.status >= 200 && ev.status < 300) || ev.status === 401) {\n return;\n }\n\n const errortext = CODEMESSAGE[ev.status] || ev.statusText;\n injector.get(NzNotificationService).error(`请求错误 ${ev.status}: ${ev.url}`, errortext);\n}\n","import { HttpClient, HttpHandlerFn, HttpRequest, HttpResponseBase } from '@angular/common/http';\nimport { EnvironmentProviders, Injector, inject, provideAppInitializer } from '@angular/core';\nimport { DA_SERVICE_TOKEN } from '@delon/auth';\nimport { BehaviorSubject, Observable, catchError, filter, switchMap, take, throwError } from 'rxjs';\n\nimport { toLogin } from './helper';\n\nlet refreshToking = false;\nlet refreshToken$: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n/**\n * 重新附加新 Token 信息\n *\n * > 由于已经发起的请求,不会再走一遍 `@delon/auth` 因此需要结合业务情况重新附加新的 Token\n */\nfunction reAttachToken(injector: Injector, req: HttpRequest<any>): HttpRequest<any> {\n const token = injector.get(DA_SERVICE_TOKEN).get()?.token;\n return req.clone({\n setHeaders: {\n token: `Bearer ${token}`\n }\n });\n}\n\nfunction refreshTokenRequest(injector: Injector): Observable<any> {\n const model = injector.get(DA_SERVICE_TOKEN).get();\n return injector.get(HttpClient).post(`/api/auth/refresh`, { headers: { refresh_token: model?.['refresh_token'] || '' } });\n}\n\n/**\n * 刷新Token方式一:使用 401 重新刷新 Token\n */\nexport function tryRefreshToken(injector: Injector, ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandlerFn): Observable<any> {\n // 1、若请求为刷新Token请求,表示来自刷新Token可以直接跳转登录页\n if ([`/api/auth/refresh`].some(url => req.url.includes(url))) {\n toLogin(injector);\n return throwError(() => ev);\n }\n // 2、如果 `refreshToking` 为 `true` 表示已经在请求刷新 Token 中,后续所有请求转入等待状态,直至结果返回后再重新发起请求\n if (refreshToking) {\n return refreshToken$.pipe(\n filter(v => !!v),\n take(1),\n switchMap(() => next(reAttachToken(injector, req)))\n );\n }\n // 3、尝试调用刷新 Token\n refreshToking = true;\n refreshToken$.next(null);\n\n return refreshTokenRequest(injector).pipe(\n switchMap(res => {\n // 通知后续请求继续执行\n refreshToking = false;\n refreshToken$.next(res);\n // 重新保存新 token\n injector.get(DA_SERVICE_TOKEN).set(res);\n // 重新发起请求\n return next(reAttachToken(injector, req));\n }),\n catchError(err => {\n refreshToking = false;\n toLogin(injector);\n return throwError(() => err);\n })\n );\n}\n\nfunction buildAuthRefresh(injector: Injector): void {\n const tokenSrv = injector.get(DA_SERVICE_TOKEN);\n tokenSrv.refresh\n .pipe(\n filter(() => !refreshToking),\n switchMap(res => {\n refreshToking = true;\n return refreshTokenRequest(injector);\n })\n )\n .subscribe({\n next: res => {\n // TODO: Mock expired value\n res.expired = +new Date() + 1000 * 60 * 5;\n refreshToking = false;\n tokenSrv.set(res);\n },\n error: () => toLogin(injector)\n });\n}\n\n/**\n * 刷新Token方式二:使用 `@delon/auth` 的 `refresh` 接口,需要在 `app.config.ts` 中注册 `provideBindAuthRefresh`\n */\nexport function provideBindAuthRefresh(): EnvironmentProviders[] {\n return [\n provideAppInitializer(() => {\n const initializerFn = (\n (injector: Injector) => () =>\n buildAuthRefresh(injector)\n )(inject(Injector));\n return initializerFn();\n })\n ];\n}\n","import {\n HttpErrorResponse, HttpHandlerFn, HttpInterceptorFn, HttpRequest, HttpResponseBase,\n HttpResponse, HttpHeaders\n} from '@angular/common/http';\nimport { Injector, inject } from '@angular/core';\nimport { IGNORE_BASE_URL } from '@delon/theme';\nimport { Observable, of, throwError, mergeMap, catchError } from 'rxjs';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { ReThrowHttpError, checkStatus, getAdditionalHeaders, toLogin } from './helper';\nimport { RUNTIME_CORE_ENVIRONMENT } from '../runtime-core.tokens';\n\nfunction handleData(injector: Injector, ev: HttpResponseBase, req: HttpRequest<any>, next: HttpHandlerFn): Observable<any> {\n const msg = injector.get(NzMessageService);\n checkStatus(injector, ev);\n\n switch (ev.status) {\n case 200:\n if (ev instanceof HttpResponse) {\n const body: any = ev.body;\n const contentDisposition = ev.headers.get('content-disposition');\n const isDownload = /attachment/i.test(contentDisposition || '')\n || body?.type === 'application/vnd.ms-excel'\n || body?.type?.includes('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n\n if (body && isDownload) {\n // ❗建议你在此处引入并注入下载服务\n // const downloadService = injector.get(YourDownloadService);\n // downloadService.download(ev); \n download(ev);\n } else {\n if (body?.code === '1001') {\n toLogin(injector);\n throw new Error(body.message);\n } else if (body?.code === '99999') {\n msg.error('上传的license文件不合规,请认证后再上传');\n return of(new HttpResponse({ body }));\n } else {\n if (body?.error) {\n return throwError(() => ({ error: body.error }));\n }\n if (body?.code && Number(body.code) !== 200) {\n msg.error(body.message);\n }\n if (body?.data !== undefined && Number(body.code) === 200) {\n return of(new HttpResponse({ body }));\n }\n }\n }\n }\n break;\n\n case 401:\n if (ev.url && ev.url.indexOf('/sys/module') < 0) {\n const msgText = ev['error']?.['message'];\n if (msgText && msgText !== 'token非法无效!' && msgText !== 'Token失效,请重新登录!') {\n // const authService = injector.get(AuthService);\n // authService.authErrorSubject.next(msgText);\n toLogin(injector);\n } else {\n toLogin(injector);\n }\n } else {\n toLogin(injector);\n }\n break;\n\n case 403:\n case 404:\n case 500:\n // 可跳转到异常页面,例如:\n // goTo(injector, `/exception/${ev.status}?url=${req.urlWithParams}`);\n break;\n\n default:\n if (ev instanceof HttpErrorResponse) {\n console.warn('未可知错误,大部分是由于后端不支持跨域CORS或无效配置引起', ev);\n }\n break;\n }\n\n if (ev instanceof HttpErrorResponse) {\n return throwError(() => ev);\n } else if ((ev as unknown as ReThrowHttpError)._throw === true) {\n return throwError(() => (ev as unknown as ReThrowHttpError).body);\n } else {\n return of(ev);\n }\n}\n\nexport const defaultInterceptor: HttpInterceptorFn = (req, next) => {\n const injector = inject(Injector);\n const environment = inject(RUNTIME_CORE_ENVIRONMENT);\n\n let url = req.url;\n if (!req.context.get(IGNORE_BASE_URL) && !url.startsWith('https://') && !url.startsWith('http://') &&\n url.indexOf('assets') < 0 &&\n url.indexOf('api/etalent/v1/upload') < 0) {\n const { baseUrl, flyUrl } = environment.api;\n if (url.indexOf('flv/index') > 0) {\n }\n else if (url.indexOf('airservice-') > 0 || url.indexOf('airadapter-') > 0) {\n url = flyUrl + (flyUrl.endsWith('/') && url.startsWith('/') ? url.substring(1) : url);\n } else {\n url = baseUrl + (baseUrl.endsWith('/') && url.startsWith('/') ? url.substring(1) : url);\n }\n }\n let headers = req.headers;\n const shouldAddToken = !url.includes('flv/index/api/whep') && !url.includes('auth/login');\n if (shouldAddToken) {\n const additional = getAdditionalHeaders(req, injector);\n for (const k of Object.keys(additional)) {\n headers = headers.set(k, additional[k]);\n }\n } else {\n headers = new HttpHeaders();\n }\n\n const newReq = req.clone({\n url,\n headers,\n responseType: url.indexOf('export') > 0 ? 'blob' : null\n });\n\n return next(newReq).pipe(\n mergeMap(ev => {\n if (ev instanceof HttpResponseBase) {\n return handleData(injector, ev, newReq, next);\n }\n return of(ev);\n }),\n catchError((err: HttpErrorResponse) => handleData(injector, err, newReq, next)) // ✅ 必须保留\n );\n};\n\nfunction download(ev: HttpResponse<Blob>) {\n const data = ev.body;\n const headers = ev.headers;\n\n let fileName = 'download.xls';\n const contentDisposition = headers.get('Content-Disposition') || headers.get('content-disposition');\n if (contentDisposition) {\n const matches = /filename=([^;]+)/.exec(contentDisposition);\n if (matches?.[1]) {\n fileName = decodeURIComponent(matches[1].replace(/['\"]/g, ''));\n }\n }\n\n executeDownload(data, fileName);\n}\n\nfunction executeDownload(data: any, fileName: string) {\n if (!data) return;\n\n const url = window.URL.createObjectURL(new Blob([data]));\n const link = document.createElement('a');\n link.style.display = 'none';\n link.href = url;\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n window.URL.revokeObjectURL(url);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { EnvironmentProviders, Injectable, Provider, inject, provideAppInitializer } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ACLService } from '@delon/acl';\nimport { DA_SERVICE_TOKEN } from '@delon/auth';\nimport { ALAIN_I18N_TOKEN, MenuService, SettingsService, TitleService, _HttpClient } from '@delon/theme';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { Observable, zip, of, catchError, map, switchMap, timeout } from 'rxjs';\nimport _ from 'lodash';\nimport { I18NService } from '../i18n/i18n.service';\nimport { initData } from '@ebuilding/base/shared.util/comm.menu';\nimport { ModuleAPI, Gram_App_Module } from '@ebuilding/base/shared.var/shared.constant';\nimport { RUNTIME_CORE_ENVIRONMENT } from '../runtime-core.tokens';\n\n/**\n * Used for application startup\n * Generally used to get the basic data of the application, like: Menu Data, User Data, etc.\n */\nexport function provideStartup(): Array<Provider | EnvironmentProviders> {\n return [\n StartupService,\n provideAppInitializer(() => {\n const initializerFn = (\n (startupService: StartupService) => () =>\n startupService.load()\n )(inject(StartupService));\n return initializerFn();\n })\n ];\n}\n\n@Injectable()\nexport class StartupService {\n private menuService = inject(MenuService);\n private settingService = inject(SettingsService);\n private aclService = inject(ACLService);\n private titleService = inject(TitleService);\n private httpClient = inject(HttpClient);\n private http = inject(_HttpClient);\n private router = inject(Router);\n private i18n = inject<I18NService>(ALAIN_I18N_TOKEN);\n private tokenSrv = inject(DA_SERVICE_TOKEN);\n private environment = inject(RUNTIME_CORE_ENVIRONMENT);\n load(): Observable<void> {\n const configFile = this.environment.configFile || 'development.json';\n return this.http.get(`assets/config/${configFile}?rd=${Math.random()}`).pipe(\n switchMap((configData: any) => {\n this.environment.config = configData;\n this.environment.useHash = configData.useHash;\n this.environment.production = configData.production;\n this.environment.api.baseUrl = configData.baseUrl;\n this.environment.api.flyUrl = configData.flyUrl;\n this.environment.api.licenseUrl = configData.licenseUrl;\n this.environment.api.mockToken = configData.mockToken;\n this.environment.api.preRequest = configData.preRequest;\n\n const defaultLang = this.i18n.defaultLang;\n\n return zip(\n this.getModule(),\n this.httpClient.get(`assets/tmp/i18n/${defaultLang}.json?rd=${Math.random()}`),\n this.httpClient.get(`assets/tmp/app-data.json?rd=${Math.random()}`)\n ).pipe(\n timeout(10000),\n map(([appModule, langData, appData]: [any, any, any]) => {\n this.i18n.use(defaultLang, langData);\n\n const res = appData as NzSafeAny;\n this.settingService.setApp(res.app);\n this.aclService.setFull(false);\n\n let listRole: any[] = [];\n const token: any = this.tokenSrv.get();\n if (token?.userInfo?.listRole) {\n listRole = token.userInfo.listRole;\n }\n this.aclService.setRole(listRole);\n\n let menuData: any[] = [];\n if (appModule?.result?.length > 0) {\n menuData = initData(appModule.result);\n }\n this.menuService.add(res.menu);\n this.menuService.resume();\n this.settingService.setData(Gram_App_Module, _.cloneDeep(menuData));\n\n\n this.titleService.default = '';\n this.titleService.suffix = res.app.name;\n }),\n catchError(res => {\n console.warn(`StartupService.load: Network request failed`, res);\n // setTimeout(() => this.router.navigateByUrl(`/exception/500`));\n return of(); // 返回空 Observable<void>\n })\n );\n }),\n catchError(res => {\n console.warn(`StartupService.load: App initialization failed`, res);\n return of(void 0);\n })\n );\n }\n\n\n getModule() {\n const token: any = this.tokenSrv.get()?.token;\n if (token) {\n return this.http.post(`${ModuleAPI.user}/user/sys/module`);\n } else {\n return of(null);\n }\n }\n}\n","\nimport { inject } from '@angular/core';\nimport { Router, CanActivateFn } from '@angular/router';\nimport { SettingsService } from '@delon/theme';\nimport { DA_SERVICE_TOKEN, ITokenService } from '@delon/auth';\nimport { Gram_Platform } from '@ebuilding/base/shared.var/shared.constant';\n\nexport const startDefaultGuard: CanActivateFn = (_route, state) => {\n const router = inject(Router);\n const settingSrv = inject(SettingsService);\n const tokenSrv = inject<ITokenService>(DA_SERVICE_TOKEN);\n const platform: any = settingSrv.getData(Gram_Platform);\n const token: any = tokenSrv.get();\n\n if (token && token?.token) {\n } else {\n return router.parseUrl('/auth/login');\n }\n\n if ((token?.forceChangePwd === true || token?.userInfo?.forceChangePwd === true) && state.url !== '/admin/change-password') {\n return router.parseUrl('/admin/change-password');\n }\n\n if (platform == \"DEFAULT\") {\n return true;\n }\n return router.parseUrl('/exception');\n};\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SettingsService, _HttpClient } from '@delon/theme';\nimport { ModuleAPI } from '@ebuilding/base/shared.var/shared.constant';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map, shareReplay, tap } from 'rxjs/operators';\n\nexport const AppFeatureConfigKey = 'APP_FEATURE_CONFIG';\n\nexport interface AppFeatureConfig {\n enableWorkflow: boolean;\n enableMessageCenter: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class AppFeatureConfigService {\n private loading$: Observable<AppFeatureConfig> | null = null;\n\n constructor(private http: _HttpClient, private settings: SettingsService, private router: Router) { }\n\n load(force = false): Observable<AppFeatureConfig> {\n if (!force) {\n const cached = this.current();\n if (cached) {\n return of(cached);\n }\n if (this.loading$) {\n return this.loading$;\n }\n }\n this.loading$ = this.http.post(`${ModuleAPI.system}/sys/config/listData`, null).pipe(\n map((res: any) => this.fromResponse(res?.result || {})),\n tap(config => this.set(config)),\n catchError(() => {\n const config = this.defaults();\n this.set(config);\n return of(config);\n }),\n shareReplay(1)\n );\n return this.loading$;\n }\n\n save(config: AppFeatureConfig): Observable<AppFeatureConfig> {\n const body = {\n ENABLE_WORKFLOW: config.enableWorkflow ? '1' : '0',\n ENABLE_MESSAGE_CENTER: config.enableMessageCenter ? '1' : '0'\n };\n return this.http.post(`${ModuleAPI.system}/sys/config/saveData`, body).pipe(\n map((res: any) => this.fromResponse(res?.result || body)),\n tap(value => this.set(value))\n );\n }\n\n current(): AppFeatureConfig | null {\n return this.settings.getData(AppFeatureConfigKey) || null;\n }\n\n redirectHome() {\n this.router.navigateByUrl('/home');\n }\n\n private set(config: AppFeatureConfig) {\n this.settings.setData(AppFeatureConfigKey, config);\n }\n\n private fromResponse(data: any): AppFeatureConfig {\n return {\n enableWorkflow: this.toBool(data?.ENABLE_WORKFLOW, true),\n enableMessageCenter: this.toBool(data?.ENABLE_MESSAGE_CENTER, true)\n };\n }\n\n private defaults(): AppFeatureConfig {\n return {\n enableWorkflow: true,\n enableMessageCenter: true\n };\n }\n\n private toBool(value: any, defaultValue: boolean): boolean {\n if (value === undefined || value === null || value === '') {\n return defaultValue;\n }\n return value === true || value === 1 || value === '1' || `${value}`.toLowerCase() === 'true';\n }\n}\n","import { inject } from '@angular/core';\nimport { CanActivateFn } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { AppFeatureConfigService } from './app-feature-config.service';\n\nexport const workflowFeatureGuard: CanActivateFn = () => {\n const service = inject(AppFeatureConfigService);\n return service.load().pipe(\n map(config => {\n if (!config.enableWorkflow) {\n service.redirectHome();\n return false;\n }\n return true;\n })\n );\n};\n\nexport const messageFeatureGuard: CanActivateFn = () => {\n const service = inject(AppFeatureConfigService);\n return service.load().pipe(\n map(config => {\n if (!config.enableMessageCenter) {\n service.redirectHome();\n return false;\n }\n return true;\n })\n );\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["zorroZhCN","dfZhCn","delonZhCn","zorroZhTW","dfZhTw","delonZhTw","zorroEnUS","dfEn","delonEnUS","map","catchError","i1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@ebuilding/runtime",
3
- "version": "3.0.3",
3
+ "version": "3.0.5",
4
4
  "dependencies": {
5
- "@ebuilding/base": "3.0.3",
6
- "@ebuilding/abc": "3.0.3",
7
- "@ebuilding/biz-comm": "3.0.3",
8
- "@ebuilding/biz-form": "3.0.3",
9
- "@ebuilding/biz-list": "3.0.3",
10
- "@ebuilding/chart": "3.0.3",
11
- "@ebuilding/report": "3.0.3",
5
+ "@ebuilding/base": "3.0.5",
6
+ "@ebuilding/abc": "3.0.5",
7
+ "@ebuilding/biz-comm": "3.0.5",
8
+ "@ebuilding/biz-form": "3.0.5",
9
+ "@ebuilding/biz-list": "3.0.5",
10
+ "@ebuilding/chart": "3.0.5",
11
+ "@ebuilding/report": "3.0.5",
12
12
  "@ebuilding-form/core": "20.0.0",
13
13
  "screenfull": "^6.0.2",
14
14
  "tslib": "^2.3.0"
@@ -27,50 +27,74 @@
27
27
  "types": "./auth/index.d.ts",
28
28
  "default": "./fesm2022/auth.mjs"
29
29
  },
30
+ "./comm": {
31
+ "types": "./comm/index.d.ts",
32
+ "default": "./fesm2022/comm.mjs"
33
+ },
30
34
  "./core": {
31
35
  "types": "./core/index.d.ts",
32
36
  "default": "./fesm2022/core.mjs"
33
37
  },
34
- "./e-web": {
35
- "types": "./e-web/index.d.ts",
36
- "default": "./fesm2022/e-web.mjs"
37
- },
38
38
  "./dynamic": {
39
39
  "types": "./dynamic/index.d.ts",
40
40
  "default": "./fesm2022/dynamic.mjs"
41
41
  },
42
+ "./e-web": {
43
+ "types": "./e-web/index.d.ts",
44
+ "default": "./fesm2022/e-web.mjs"
45
+ },
42
46
  "./exception": {
43
47
  "types": "./exception/index.d.ts",
44
48
  "default": "./fesm2022/exception.mjs"
45
49
  },
46
- "./comm": {
47
- "types": "./comm/index.d.ts",
48
- "default": "./fesm2022/comm.mjs"
49
- },
50
50
  "./external": {
51
51
  "types": "./external/index.d.ts",
52
52
  "default": "./fesm2022/external.mjs"
53
53
  },
54
- "./home": {
55
- "types": "./home/index.d.ts",
56
- "default": "./fesm2022/home.mjs"
57
- },
58
54
  "./layout": {
59
55
  "types": "./layout/index.d.ts",
60
56
  "default": "./fesm2022/layout.mjs"
61
57
  },
58
+ "./home": {
59
+ "types": "./home/index.d.ts",
60
+ "default": "./fesm2022/home.mjs"
61
+ },
62
62
  "./shared-imports": {
63
63
  "types": "./shared-imports/index.d.ts",
64
64
  "default": "./fesm2022/shared-imports.mjs"
65
65
  },
66
- "./e-web/form": {
67
- "types": "./e-web/form/index.d.ts",
68
- "default": "./fesm2022/e-web-form.mjs"
66
+ "./comm/form": {
67
+ "types": "./comm/form/index.d.ts",
68
+ "default": "./fesm2022/comm.form.mjs"
69
+ },
70
+ "./comm/default": {
71
+ "types": "./comm/default/index.d.ts",
72
+ "default": "./fesm2022/comm.default.mjs"
73
+ },
74
+ "./comm/tree": {
75
+ "types": "./comm/tree/index.d.ts",
76
+ "default": "./fesm2022/comm.tree.mjs"
77
+ },
78
+ "./comm/page": {
79
+ "types": "./comm/page/index.d.ts",
80
+ "default": "./fesm2022/comm.page.mjs"
81
+ },
82
+ "./comm/list": {
83
+ "types": "./comm/list/index.d.ts",
84
+ "default": "./fesm2022/comm.list.mjs"
85
+ },
86
+ "./e-web/extend": {
87
+ "types": "./e-web/extend/index.d.ts",
88
+ "default": "./fesm2022/e-web-extend.mjs"
69
89
  },
70
90
  "./e-web/list": {
71
91
  "types": "./e-web/list/index.d.ts",
72
92
  "default": "./fesm2022/e-web-list.mjs"
73
93
  },
94
+ "./e-web/form": {
95
+ "types": "./e-web/form/index.d.ts",
96
+ "default": "./fesm2022/e-web-form.mjs"
97
+ },
74
98
  "./e-web/report": {
75
99
  "types": "./e-web/report/index.d.ts",
76
100
  "default": "./fesm2022/e-web-report.mjs"
@@ -79,41 +103,17 @@
79
103
  "types": "./e-web/report-table/index.d.ts",
80
104
  "default": "./fesm2022/e-web-report-table.mjs"
81
105
  },
82
- "./e-web/extend": {
83
- "types": "./e-web/extend/index.d.ts",
84
- "default": "./fesm2022/e-web-extend.mjs"
85
- },
86
- "./e-web/tab": {
87
- "types": "./e-web/tab/index.d.ts",
88
- "default": "./fesm2022/e-web-tab.mjs"
89
- },
90
106
  "./e-web/single": {
91
107
  "types": "./e-web/single/index.d.ts",
92
108
  "default": "./fesm2022/e-web-single.mjs"
93
109
  },
94
- "./comm/default": {
95
- "types": "./comm/default/index.d.ts",
96
- "default": "./fesm2022/comm.default.mjs"
97
- },
98
- "./comm/form": {
99
- "types": "./comm/form/index.d.ts",
100
- "default": "./fesm2022/comm.form.mjs"
101
- },
102
- "./comm/list": {
103
- "types": "./comm/list/index.d.ts",
104
- "default": "./fesm2022/comm.list.mjs"
110
+ "./e-web/tab": {
111
+ "types": "./e-web/tab/index.d.ts",
112
+ "default": "./fesm2022/e-web-tab.mjs"
105
113
  },
106
114
  "./e-web/tree": {
107
115
  "types": "./e-web/tree/index.d.ts",
108
116
  "default": "./fesm2022/e-web-tree.mjs"
109
- },
110
- "./comm/page": {
111
- "types": "./comm/page/index.d.ts",
112
- "default": "./fesm2022/comm.page.mjs"
113
- },
114
- "./comm/tree": {
115
- "types": "./comm/tree/index.d.ts",
116
- "default": "./fesm2022/comm.tree.mjs"
117
117
  }
118
118
  },
119
119
  "sideEffects": false