@solar-angular/planets 19.4.0 → 20.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/earth/index.d.ts CHANGED
@@ -1,7 +1,109 @@
1
- export * from './earth.pipe';
2
- export * from './earth.resolver';
3
- export * from './earth.service';
4
- export * from './guards';
5
- export * from './menus';
6
- export * from './object-storage.service';
7
- export * from './pipes';
1
+ import * as i0 from '@angular/core';
2
+ import { PipeTransform, ChangeDetectorRef } from '@angular/core';
3
+ import { AccountName, UserInfo, Menu, Origin, Channel, Category, Address, UploadKeys, Unit } from '@solar-kit/planets/earth';
4
+ import * as rxjs from 'rxjs';
5
+ import * as _solar_angular_core from '@solar-angular/core';
6
+ import { HttpClient } from '@angular/common/http';
7
+ import { UrlSegment, ResolveFn, CanMatchFn } from '@angular/router';
8
+ import { CacheManager } from '@solar-angular/http';
9
+ import { Result } from '@solar-kit/planets/sun';
10
+ import * as _angular_common_module_d from '@angular/common/module.d';
11
+
12
+ declare class EarthService {
13
+ readonly config: _solar_angular_core.SolarConfig;
14
+ readonly http: HttpClient;
15
+ readonly cacheManager: CacheManager;
16
+ checkAuth(): rxjs.Observable<boolean>;
17
+ checkPermission(segments: UrlSegment[]): rxjs.Observable<boolean>;
18
+ account(): rxjs.Observable<Result<AccountName>>;
19
+ user(): rxjs.Observable<Result<UserInfo>>;
20
+ menus(): rxjs.Observable<Menu[]>;
21
+ /**
22
+ * 变更密码
23
+ * @param o
24
+ * @returns
25
+ */
26
+ changePassword(o: {
27
+ oldPsw: string;
28
+ newPsw: string;
29
+ }): rxjs.Observable<Result<null>>;
30
+ channels(origin: Origin): rxjs.Observable<Result<Channel[]>>;
31
+ categories(origin: Origin): rxjs.Observable<Result<Category[]>>;
32
+ address(pid?: number): rxjs.Observable<Result<Address[]>>;
33
+ avatarUploadKey(): rxjs.Observable<Result<UploadKeys>>;
34
+ mediaUploadKeys(keySize?: number): rxjs.Observable<Result<UploadKeys>>;
35
+ static ɵfac: i0.ɵɵFactoryDeclaration<EarthService, never>;
36
+ static ɵprov: i0.ɵɵInjectableDeclaration<EarthService>;
37
+ }
38
+
39
+ declare class CategoryPipe implements PipeTransform {
40
+ protected latestId: Category['id'] | null;
41
+ protected latestOrigin: Origin | null;
42
+ protected latestValue: Category | null;
43
+ protected readonly service: EarthService;
44
+ protected readonly cdr: ChangeDetectorRef;
45
+ transform(id: Category['id'], origin: Origin): Category | null;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<CategoryPipe, never>;
47
+ static ɵpipe: i0.ɵɵPipeDeclaration<CategoryPipe, "category", true>;
48
+ }
49
+ declare class UnitCategoryPipe extends CategoryPipe implements PipeTransform {
50
+ transform(value: Category['id']): Category | null;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<UnitCategoryPipe, never>;
52
+ static ɵpipe: i0.ɵɵPipeDeclaration<UnitCategoryPipe, "unit", true>;
53
+ }
54
+
55
+ declare function channelResolver(origin: Origin): ResolveFn<Channel[]>;
56
+ declare function categoryResolver(origin: Origin): ResolveFn<Category[]>;
57
+
58
+ interface AuthMatchGuardOptions {
59
+ /** 是否在登陆后重定向回当前页 */
60
+ redirect?: boolean;
61
+ }
62
+ /**
63
+ * 认证路由守卫
64
+ * 认证后才允许进入,否则将导航到登录页(/login)
65
+ * @param options
66
+ */
67
+ declare function authMatchGuard(options?: AuthMatchGuardOptions): CanMatchFn;
68
+
69
+ /**
70
+ * 权限路由守卫
71
+ * 有权限才允许进入,否则导航到无权限页(/forbidden)
72
+ */
73
+ declare function permissionMatchGuard(): CanMatchFn;
74
+
75
+ /**
76
+ * 未认证路由守卫
77
+ * 未认证才允许进入,否则将导航到首页
78
+ */
79
+ declare function unauthMatchGuard(): CanMatchFn;
80
+
81
+ declare function currentMenus(): i0.Signal<Menu[]>;
82
+
83
+ declare class ObjectStorageService {
84
+ private readonly http;
85
+ /**
86
+ * 目前只支持了 qiniu oss
87
+ * @param filePath
88
+ * @param options
89
+ * @returns
90
+ */
91
+ upload(file: Blob, key: string, options: Pick<UploadKeys, 'host' | 'token'>): rxjs.Observable<{
92
+ hash: string;
93
+ key: string;
94
+ }>;
95
+ uploadWithEvents(file: Blob, key: string, options: Pick<UploadKeys, 'host' | 'token'>): rxjs.Observable<_angular_common_module_d.HttpEvent<{
96
+ hash: string;
97
+ key: string;
98
+ }>>;
99
+ static ɵfac: i0.ɵɵFactoryDeclaration<ObjectStorageService, never>;
100
+ static ɵprov: i0.ɵɵInjectableDeclaration<ObjectStorageService>;
101
+ }
102
+
103
+ declare class WeightPipe implements PipeTransform {
104
+ transform(value: number, unitId: Unit['id']): number;
105
+ static ɵfac: i0.ɵɵFactoryDeclaration<WeightPipe, never>;
106
+ static ɵpipe: i0.ɵɵPipeDeclaration<WeightPipe, "weight", true>;
107
+ }
108
+
109
+ export { CategoryPipe, EarthService, ObjectStorageService, UnitCategoryPipe, WeightPipe, authMatchGuard, categoryResolver, channelResolver, currentMenus, permissionMatchGuard, unauthMatchGuard };
@@ -127,10 +127,10 @@ class EarthService {
127
127
  params: { keySize }
128
128
  });
129
129
  }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EarthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
131
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EarthService, providedIn: 'root' }); }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: EarthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
131
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: EarthService, providedIn: 'root' }); }
132
132
  }
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: EarthService, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: EarthService, decorators: [{
134
134
  type: Injectable,
135
135
  args: [{
136
136
  providedIn: 'root'
@@ -157,10 +157,10 @@ class CategoryPipe {
157
157
  }
158
158
  return this.latestValue;
159
159
  }
160
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CategoryPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
161
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: CategoryPipe, isStandalone: true, name: "category", pure: false }); }
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CategoryPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
161
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: CategoryPipe, isStandalone: true, name: "category", pure: false }); }
162
162
  }
163
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CategoryPipe, decorators: [{
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: CategoryPipe, decorators: [{
164
164
  type: Pipe,
165
165
  args: [{
166
166
  name: 'category',
@@ -172,10 +172,10 @@ class UnitCategoryPipe extends CategoryPipe {
172
172
  transform(value) {
173
173
  return super.transform(value, Origin.Unit);
174
174
  }
175
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UnitCategoryPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
176
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: UnitCategoryPipe, isStandalone: true, name: "unit", pure: false }); }
175
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: UnitCategoryPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
176
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: UnitCategoryPipe, isStandalone: true, name: "unit", pure: false }); }
177
177
  }
178
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UnitCategoryPipe, decorators: [{
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: UnitCategoryPipe, decorators: [{
179
179
  type: Pipe,
180
180
  args: [{
181
181
  name: 'unit',
@@ -288,10 +288,10 @@ class ObjectStorageService {
288
288
  reportProgress: true,
289
289
  });
290
290
  }
291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
292
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectStorageService, providedIn: 'root' }); }
291
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ObjectStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
292
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ObjectStorageService, providedIn: 'root' }); }
293
293
  }
294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ObjectStorageService, decorators: [{
294
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ObjectStorageService, decorators: [{
295
295
  type: Injectable,
296
296
  args: [{
297
297
  providedIn: 'root'
@@ -302,10 +302,10 @@ class WeightPipe {
302
302
  transform(value, unitId) {
303
303
  return formatWeight(value, unitId);
304
304
  }
305
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WeightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
306
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: WeightPipe, isStandalone: true, name: "weight" }); }
305
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: WeightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
306
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: WeightPipe, isStandalone: true, name: "weight" }); }
307
307
  }
308
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WeightPipe, decorators: [{
308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: WeightPipe, decorators: [{
309
309
  type: Pipe,
310
310
  args: [{
311
311
  name: 'weight',
@@ -1 +1 @@
1
- {"version":3,"file":"solar-angular-planets-earth.mjs","sources":["../../../packages/planets/earth/earth.service.ts","../../../packages/planets/earth/earth.pipe.ts","../../../packages/planets/earth/earth.resolver.ts","../../../packages/planets/earth/guards/auth.guard.ts","../../../packages/planets/earth/guards/permission.guard.ts","../../../packages/planets/earth/guards/unauth.guard.ts","../../../packages/planets/earth/menus.ts","../../../packages/planets/earth/object-storage.service.ts","../../../packages/planets/earth/pipes/weight.pipe.ts","../../../packages/planets/earth/solar-angular-planets-earth.ts"],"sourcesContent":["import { HttpClient, HttpContext } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { UrlSegment } from '@angular/router';\nimport { SOLAR_CONFIG } from '@solar-angular/core';\nimport { AUTH_REDIRECT_TOKEN, CACHEABLE_TOKEN, CacheManager, CATCH_HTTP_ERROR_TOKEN } from '@solar-angular/http';\nimport { tree2list } from '@solar-kit/core';\nimport { AccountName, Address, Category, Channel, Menu, Origin, UploadKeys, UserInfo } from '@solar-kit/planets/earth';\nimport { filterResult, Result } from '@solar-kit/planets/sun';\nimport { catchError, map, of, tap } from 'rxjs';\n\nfunction normalizeMenus(menus: Menu[]) {\n const dashboard = {\n id: 0,\n fullName: 'Dashboard',\n icon: 'dashboard',\n seq: 0,\n url: 'dashboard',\n } as Menu;\n\n menus = menus.concat(dashboard);\n\n menus.forEach(o => {\n o.level = 1;\n o.children = menus.filter(child => child.pid === o.id).sort((a, b) => a.seq - b.seq);\n o.children!.forEach(child => child.parent = o);\n });\n\n // 设置 level\n menus.forEach(o => {\n let menu = o;\n while (menu?.parent) { // 如果有上一级,就自增一\n o.level!++;\n menu = menu.parent;\n }\n });\n\n // 设置末端子节点的 path\n menus.filter(o => o.children?.length === 0).forEach(o => {\n let segment = '', menu: Menu | undefined = o;\n\n while (menu) {\n segment = '/' + menu.url + segment;\n menu = menu.parent;\n }\n\n o.path = segment;\n });\n\n menus.sort((a, b) => a.seq - b.seq);\n\n return menus;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EarthService {\n readonly config = inject(SOLAR_CONFIG);\n readonly http = inject(HttpClient);\n readonly cacheManager = inject(CacheManager);\n\n checkAuth() {\n // 这里直接用 menus API 来判断是否已认证\n return this.http.get<Result<Menu[]>>(`${this.config.earthUrl}/api/role-menus/${this.config.clientId}`, {\n context: new HttpContext()\n .set(CACHEABLE_TOKEN, true)\n .set(AUTH_REDIRECT_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n }).pipe(\n map(() => true),\n catchError(() => of(false))\n );\n }\n\n checkPermission(segments: UrlSegment[]) {\n return this.http.get<Result<Menu[]>>(`${this.config.earthUrl}/api/role-menus/${this.config.clientId}`, {\n context: new HttpContext()\n .set(CACHEABLE_TOKEN, true)\n .set(AUTH_REDIRECT_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n }).pipe(\n map(({ data }) => {\n const tree = normalizeMenus(data);\n const list = tree2list(tree);\n // 我们的权限菜单只有两级,我们只判断前两个 path 片段\n const path = '/' + segments\n .filter((_, index) => index <= 1)\n .map(o => o.path.replace(/;.+$/, '')) // path 中可能有参数,我们只取前面的部分:/a;id=1 => /a\n .join('/');\n return list.some(menu => menu.path === path);\n }),\n catchError(() => of(false))\n );\n }\n\n account() {\n return this.http.get<Result<AccountName>>(`${this.config.earthUrl}/api/acc/info`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n\n user() {\n return this.http.get<Result<UserInfo>>(`${this.config.earthUrl}/api/usr/info`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n\n menus() {\n return this.http.get<Result<Menu[]>>(`${this.config.earthUrl}/api/role-menus/${this.config.clientId}`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n }).pipe(\n filterResult(),\n map(({ data }) => normalizeMenus(data))\n );\n }\n\n /**\n * 变更密码\n * @param o\n * @returns\n */\n changePassword(o: { oldPsw: string, newPsw: string }) {\n return this.http.post<Result>(`${this.config.earthUrl}/api/user/psw`, o).pipe(\n tap(({ code }) => {\n if (code === 0) {\n this.cacheManager.revokeAll();\n }\n })\n );\n }\n\n channels(origin: Origin) {\n return this.http.get<Result<Channel[]>>(`${this.config.earthUrl}/api/channel/${origin}`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n\n categories(origin: Origin) {\n return this.http.get<Result<Category[]>>(`${this.config.earthUrl}/api/category/${origin}`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n\n address(pid?: number) {\n return this.http.get<Result<Address[]>>(`${this.config.earthUrl}/api/addrs`, {\n params: pid ? { pid } : undefined,\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n\n avatarUploadKey() {\n return this.http.get<Result<UploadKeys>>(`${this.config.earthUrl}/api/qiniu/avatar/upload-key`);\n }\n\n mediaUploadKeys(keySize = 1) {\n return this.http.get<Result<UploadKeys>>(`${this.config.earthUrl}/api/qiniu/media/upload-keys`, {\n params: { keySize }\n });\n }\n}\n","import { ChangeDetectorRef, inject, Pipe, PipeTransform } from '@angular/core';\nimport { Category, Origin } from '@solar-kit/planets/earth';\nimport { filterResult } from '@solar-kit/planets/sun';\nimport { EarthService } from './earth.service';\n\n@Pipe({\n name: 'category',\n pure: false,\n standalone: true\n})\nexport class CategoryPipe implements PipeTransform {\n protected latestId: Category['id'] | null = null;\n protected latestOrigin: Origin | null = null;\n protected latestValue: Category | null = null;\n protected readonly service = inject(EarthService);\n protected readonly cdr = inject(ChangeDetectorRef);\n\n transform(id: Category['id'], origin: Origin) {\n if (id !== this.latestId || origin !== this.latestOrigin) {\n this.latestId = id;\n this.latestOrigin = origin;\n\n // 这个 API 是带缓存的,不用担心重复执行\n this.service.categories(origin).pipe(\n filterResult()\n ).subscribe(({ data }) => {\n this.latestValue = data.find(o => o.id === id) ?? null;\n this.cdr.markForCheck();\n });\n }\n\n return this.latestValue;\n }\n\n}\n\n@Pipe({\n name: 'unit',\n pure: false,\n standalone: true\n})\nexport class UnitCategoryPipe extends CategoryPipe implements PipeTransform {\n override transform(value: Category['id']) {\n return super.transform(value, Origin.Unit);\n }\n}\n","import { inject } from '@angular/core';\nimport { ResolveFn } from '@angular/router';\nimport { Category, Channel, Origin } from '@solar-kit/planets/earth';\nimport { unpackResult } from '@solar-kit/planets/sun';\nimport { EarthService } from './earth.service';\n\nexport function channelResolver(origin: Origin): ResolveFn<Channel[]> {\n return () => inject(EarthService).channels(origin).pipe(unpackResult());\n}\n\nexport function categoryResolver(origin: Origin): ResolveFn<Category[]> {\n return () => inject(EarthService).categories(origin).pipe(unpackResult());\n}\n","import { inject } from '@angular/core';\nimport { CanMatchFn, Route, Router, UrlSegment, UrlTree } from '@angular/router';\nimport { Observable, map } from 'rxjs';\nimport { EarthService } from '../earth.service';\n\ninterface AuthMatchGuardOptions {\n /** 是否在登陆后重定向回当前页 */\n redirect?: boolean;\n}\n\n/**\n * 认证路由守卫\n * 认证后才允许进入,否则将导航到登录页(/login)\n * @param options\n */\nexport function authMatchGuard(options?: AuthMatchGuardOptions): CanMatchFn {\n return (_route: Route, segments: UrlSegment[]): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree => {\n const router = inject(Router);\n const earthService = inject(EarthService);\n\n const redirectUrl = {\n redirect: router.createUrlTree(\n ['/' + segments.join('/')],\n {\n queryParams: Object.fromEntries(new URLSearchParams(location.search))\n }\n ).toString()\n };\n\n return earthService.checkAuth().pipe(\n map(bool => {\n if (!bool) {\n return router.createUrlTree([\n '/login',\n options?.redirect === undefined || options.redirect ? redirectUrl : {}\n ]);\n }\n\n return bool;\n })\n );\n };\n}\n","import { inject } from '@angular/core';\nimport { CanMatchFn, Route, Router, UrlSegment, UrlTree } from '@angular/router';\nimport { Observable, map } from 'rxjs';\nimport { EarthService } from '../earth.service';\n\n/**\n * 权限路由守卫\n * 有权限才允许进入,否则导航到无权限页(/forbidden)\n */\nexport function permissionMatchGuard(): CanMatchFn {\n return (_route: Route, segments: UrlSegment[]): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree => {\n const router = inject(Router);\n const earthService = inject(EarthService);\n\n return earthService.checkPermission(segments).pipe(\n map(bool =>\n bool || router.parseUrl('/forbidden')\n )\n );\n };\n}\n","import { inject } from '@angular/core';\nimport { CanMatchFn, Route, Router, UrlSegment, UrlTree } from '@angular/router';\nimport { Observable, map } from 'rxjs';\nimport { EarthService } from '../earth.service';\n\n/**\n * 未认证路由守卫\n * 未认证才允许进入,否则将导航到首页\n */\nexport function unauthMatchGuard(): CanMatchFn {\n return (_route: Route, _segments: UrlSegment[]): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree => {\n const router = inject(Router);\n const earthService = inject(EarthService);\n\n return earthService.checkAuth().pipe(\n map(bool => bool ? router.parseUrl('/') : true),\n );\n };\n}\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { Menu } from '@solar-kit/planets/earth';\nimport { map } from 'rxjs';\nimport { EarthService } from './earth.service';\n\nexport function currentMenus() {\n const earthService = inject(EarthService);\n const activatedRoute = inject(ActivatedRoute);\n // 如果 path='',那么 url 是空的,此时需要取父路由\n const route = activatedRoute.snapshot.url.length ? activatedRoute : activatedRoute.parent!;\n\n return toSignal(\n earthService.menus().pipe(\n map(data => {\n const menus: Menu[] = [];\n const lastPath = route.snapshot.url[route.snapshot.url.length - 1].path\n let end = data.find(o => o.url === lastPath);\n\n while (end) {\n menus.unshift(end);\n end = end.parent;\n }\n\n return menus;\n }),\n ),\n { initialValue: [] }\n )\n}\n","import { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { API_TOKEN } from '@solar-angular/http';\nimport { UploadKeys } from '@solar-kit/planets/earth';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ObjectStorageService {\n private readonly http = inject(HttpClient);\n\n /**\n * 目前只支持了 qiniu oss\n * @param filePath\n * @param options\n * @returns\n */\n upload(file: Blob, key: string, options: Pick<UploadKeys, 'host' | 'token'>) {\n const formData = new FormData();\n formData.set('key', key);\n formData.set('file', file);\n formData.set('token', options.token);\n\n return this.http.post<{ hash: string, key: string }>(`https://${options.host}`, formData, {\n context: new HttpContext().set(API_TOKEN, false)\n });\n }\n\n uploadWithEvents(file: Blob, key: string, options: Pick<UploadKeys, 'host' | 'token'>) {\n const formData = new FormData();\n formData.set('key', key);\n formData.set('file', file);\n formData.set('token', options.token);\n\n return this.http.post<{ hash: string, key: string }>(`https://${options.host}`, formData, {\n context: new HttpContext().set(API_TOKEN, false),\n observe: 'events',\n reportProgress: true,\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { formatWeight, Unit } from '@solar-kit/planets/earth';\n\n@Pipe({\n name: 'weight',\n standalone: true\n})\nexport class WeightPipe implements PipeTransform {\n transform(value: number, unitId: Unit['id']): number {\n return formatWeight(value, unitId);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solar-angular-planets-earth.mjs","sources":["../tmp-esm2022/earth/earth.service.js","../tmp-esm2022/earth/earth.pipe.js","../tmp-esm2022/earth/earth.resolver.js","../tmp-esm2022/earth/guards/auth.guard.js","../tmp-esm2022/earth/guards/permission.guard.js","../tmp-esm2022/earth/guards/unauth.guard.js","../tmp-esm2022/earth/menus.js","../tmp-esm2022/earth/object-storage.service.js","../tmp-esm2022/earth/pipes/weight.pipe.js","../tmp-esm2022/earth/solar-angular-planets-earth.js"],"sourcesContent":["import { HttpClient, HttpContext } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { SOLAR_CONFIG } from '@solar-angular/core';\nimport { AUTH_REDIRECT_TOKEN, CACHEABLE_TOKEN, CacheManager, CATCH_HTTP_ERROR_TOKEN } from '@solar-angular/http';\nimport { tree2list } from '@solar-kit/core';\nimport { filterResult } from '@solar-kit/planets/sun';\nimport { catchError, map, of, tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nfunction normalizeMenus(menus) {\n const dashboard = {\n id: 0,\n fullName: 'Dashboard',\n icon: 'dashboard',\n seq: 0,\n url: 'dashboard',\n };\n menus = menus.concat(dashboard);\n menus.forEach(o => {\n o.level = 1;\n o.children = menus.filter(child => child.pid === o.id).sort((a, b) => a.seq - b.seq);\n o.children.forEach(child => child.parent = o);\n });\n // 设置 level\n menus.forEach(o => {\n let menu = o;\n while (menu?.parent) { // 如果有上一级,就自增一\n o.level++;\n menu = menu.parent;\n }\n });\n // 设置末端子节点的 path\n menus.filter(o => o.children?.length === 0).forEach(o => {\n let segment = '', menu = o;\n while (menu) {\n segment = '/' + menu.url + segment;\n menu = menu.parent;\n }\n o.path = segment;\n });\n menus.sort((a, b) => a.seq - b.seq);\n return menus;\n}\nexport class EarthService {\n constructor() {\n this.config = inject(SOLAR_CONFIG);\n this.http = inject(HttpClient);\n this.cacheManager = inject(CacheManager);\n }\n checkAuth() {\n // 这里直接用 menus API 来判断是否已认证\n return this.http.get(`${this.config.earthUrl}/api/role-menus/${this.config.clientId}`, {\n context: new HttpContext()\n .set(CACHEABLE_TOKEN, true)\n .set(AUTH_REDIRECT_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n }).pipe(map(() => true), catchError(() => of(false)));\n }\n checkPermission(segments) {\n return this.http.get(`${this.config.earthUrl}/api/role-menus/${this.config.clientId}`, {\n context: new HttpContext()\n .set(CACHEABLE_TOKEN, true)\n .set(AUTH_REDIRECT_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n }).pipe(map(({ data }) => {\n const tree = normalizeMenus(data);\n const list = tree2list(tree);\n // 我们的权限菜单只有两级,我们只判断前两个 path 片段\n const path = '/' + segments\n .filter((_, index) => index <= 1)\n .map(o => o.path.replace(/;.+$/, '')) // path 中可能有参数,我们只取前面的部分:/a;id=1 => /a\n .join('/');\n return list.some(menu => menu.path === path);\n }), catchError(() => of(false)));\n }\n account() {\n return this.http.get(`${this.config.earthUrl}/api/acc/info`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n user() {\n return this.http.get(`${this.config.earthUrl}/api/usr/info`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n menus() {\n return this.http.get(`${this.config.earthUrl}/api/role-menus/${this.config.clientId}`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n }).pipe(filterResult(), map(({ data }) => normalizeMenus(data)));\n }\n /**\n * 变更密码\n * @param o\n * @returns\n */\n changePassword(o) {\n return this.http.post(`${this.config.earthUrl}/api/user/psw`, o).pipe(tap(({ code }) => {\n if (code === 0) {\n this.cacheManager.revokeAll();\n }\n }));\n }\n channels(origin) {\n return this.http.get(`${this.config.earthUrl}/api/channel/${origin}`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n categories(origin) {\n return this.http.get(`${this.config.earthUrl}/api/category/${origin}`, {\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n address(pid) {\n return this.http.get(`${this.config.earthUrl}/api/addrs`, {\n params: pid ? { pid } : undefined,\n context: new HttpContext().set(CACHEABLE_TOKEN, true)\n });\n }\n avatarUploadKey() {\n return this.http.get(`${this.config.earthUrl}/api/qiniu/avatar/upload-key`);\n }\n mediaUploadKeys(keySize = 1) {\n return this.http.get(`${this.config.earthUrl}/api/qiniu/media/upload-keys`, {\n params: { keySize }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: EarthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: EarthService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: EarthService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFydGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldHMvZWFydGgvZWFydGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1QyxPQUFPLEVBQUUsWUFBWSxFQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFaEQsU0FBUyxjQUFjLENBQUMsS0FBYTtJQUNuQyxNQUFNLFNBQVMsR0FBRztRQUNoQixFQUFFLEVBQUUsQ0FBQztRQUNMLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLElBQUksRUFBRSxXQUFXO1FBQ2pCLEdBQUcsRUFBRSxDQUFDO1FBQ04sR0FBRyxFQUFFLFdBQVc7S0FDVCxDQUFDO0lBRVYsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFaEMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNoQixDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNaLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FB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YXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcmxTZWdtZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNPTEFSX0NPTkZJRyB9IGZyb20gJ0Bzb2xhci1hbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVVUSF9SRURJUkVDVF9UT0tFTiwgQ0FDSEVBQkxFX1RPS0VOLCBDYWNoZU1hbmFnZXIsIENBVENIX0hUVFBfRVJST1JfVE9LRU4gfSBmcm9tICdAc29sYXItYW5ndWxhci9odHRwJztcbmltcG9ydCB7IHRyZWUybGlzdCB9IGZyb20gJ0Bzb2xhci1raXQvY29yZSc7XG5pbXBvcnQgeyBBY2NvdW50TmFtZSwgQWRkcmVzcywgQ2F0ZWdvcnksIENoYW5uZWwsIE1lbnUsIE9yaWdpbiwgVXBsb2FkS2V5cywgVXNlckluZm8gfSBmcm9tICdAc29sYXIta2l0L3BsYW5ldHMvZWFydGgnO1xuaW1wb3J0IHsgZmlsdGVyUmVzdWx0LCBSZXN1bHQgfSBmcm9tICdAc29sYXIta2l0L3BsYW5ldHMvc3VuJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5mdW5jdGlvbiBub3JtYWxpemVNZW51cyhtZW51czogTWVudVtdKSB7XG4gIGNvbnN0IGRhc2hib2FyZCA9IHtcbiAgICBpZDogMCxcbiAgICBmdWxsTmFtZTogJ0Rhc2hib2FyZCcsXG4gICAgaWNvbjogJ2Rhc2hib2FyZCcsXG4gICAgc2VxOiAwLFxuICAgIHVybDogJ2Rhc2hib2FyZCcsXG4gIH0gYXMgTWVudTtcblxuICBtZW51cyA9IG1lbnVzLmNvbmNhdChkYXNoYm9hcmQpO1xuXG4gIG1lbnVzLmZvckVhY2gobyA9PiB7XG4gICAgby5sZXZlbCA9IDE7XG4gICAgby5jaGlsZHJlbiA9IG1lbnVzLmZpbHRlcihjaGlsZCA9PiBjaGlsZC5waWQgPT09IG8uaWQpLnNvcnQoKGEsIGIpID0+IGEuc2VxIC0gYi5zZXEpO1xuICAgIG8uY2hpbGRyZW4hLmZvckVhY2goY2hpbGQgPT4gY2hpbGQucGFyZW50ID0gbyk7XG4gIH0pO1xuXG4gIC8vIOiuvue9riBsZXZlbFxuICBtZW51cy5mb3JFYWNoKG8gPT4ge1xuICAgIGxldCBtZW51ID0gbztcbiAgICB3aGlsZSAobWVudT8ucGFyZW50KSB7IC8vIOWmguaenOacieS4iuS4gOe6p++8jOWwseiHquWinuS4gFxuICAgICAgby5sZXZlbCErKztcbiAgICAgIG1lbnUgPSBtZW51LnBhcmVudDtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIOiuvue9ruacq+err+WtkOiKgueCueeahCBwYXRoXG4gIG1lbnVzLmZpbHRlcihvID0+IG8uY2hpbGRyZW4/Lmxlbmd0aCA9PT0gMCkuZm9yRWFjaChvID0+IHtcbiAgICBsZXQgc2VnbWVudCA9ICcnLCBtZW51OiBNZW51IHwgdW5kZWZpbmVkID0gbztcblxuICAgIHdoaWxlIChtZW51KSB7XG4gICAgICBzZWdtZW50ID0gJy8nICsgbWVudS51cmwgKyBzZWdtZW50O1xuICAgICAgbWVudSA9IG1lbnUucGFyZW50O1xuICAgIH1cblxuICAgIG8ucGF0aCA9IHNlZ21lbnQ7XG4gIH0pO1xuXG4gIG1lbnVzLnNvcnQoKGEsIGIpID0+IGEuc2VxIC0gYi5zZXEpO1xuXG4gIHJldHVybiBtZW51cztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRWFydGhTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFNPTEFSX0NPTkZJRyk7XG4gIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gIHJlYWRvbmx5IGNhY2hlTWFuYWdlciA9IGluamVjdChDYWNoZU1hbmFnZXIpO1xuXG4gIGNoZWNrQXV0aCgpIHtcbiAgICAvLyDov5nph4znm7TmjqXnlKggbWVudXMgQVBJIOadpeWIpOaWreaYr+WQpuW3suiupOivgVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlc3VsdDxNZW51W10+PihgJHt0aGlzLmNvbmZpZy5lYXJ0aFVybH0vYXBpL3JvbGUtbWVudXMvJHt0aGlzLmNvbmZpZy5jbGllbnRJZH1gLCB7XG4gICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKVxuICAgICAgICAuc2V0KENBQ0hFQUJMRV9UT0tFTiwgdHJ1ZSlcbiAgICAgICAgLnNldChBVVRIX1JFRElSRUNUX1RPS0VOLCBmYWxzZSlcbiAgICAgICAgLnNldChDQVRDSF9IVFRQX0VSUk9SX1RPS0VOLCBmYWxzZSlcbiAgICB9KS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIGNoZWNrUGVybWlzc2lvbihzZWdtZW50czogVXJsU2VnbWVudFtdKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UmVzdWx0PE1lbnVbXT4+KGAke3RoaXMuY29uZmlnLmVhcnRoVXJsfS9hcGkvcm9sZS1tZW51cy8ke3RoaXMuY29uZmlnLmNsaWVudElkfWAsIHtcbiAgICAgIGNvbnRleHQ6IG5ldyBIdHRwQ29udGV4dCgpXG4gICAgICAgIC5zZXQoQ0FDSEVBQkxFX1RPS0VOLCB0cnVlKVxuICAgICAgICAuc2V0KEFVVEhfUkVESVJFQ1RfVE9LRU4sIGZhbHNlKVxuICAgICAgICAuc2V0KENBVENIX0hUVFBfRVJST1JfVE9LRU4sIGZhbHNlKVxuICAgIH0pLnBpcGUoXG4gICAgICBtYXAoKHsgZGF0YSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHRyZWUgPSBub3JtYWxpemVNZW51cyhkYXRhKTtcbiAgICAgICAgY29uc3QgbGlzdCA9IHRyZWUybGlzdCh0cmVlKTtcbiAgICAgICAgLy8g5oiR5Lus55qE5p2D6ZmQ6I+c5Y2V5Y+q5pyJ5Lik57qn77yM5oiR5Lus5Y+q5Yik5pat5YmN5Lik5LiqIHBhdGgg54mH5q61XG4gICAgICAgIGNvbnN0IHBhdGggPSAnLycgKyBzZWdtZW50c1xuICAgICAgICAgIC5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCA8PSAxKVxuICAgICAgICAgIC5tYXAobyA9PiBvLnBhdGgucmVwbGFjZSgvOy4rJC8sICcnKSkgLy8gcGF0aCDkuK3lj6/og73mnInlj4LmlbDvvIzmiJHku6zlj6rlj5bliY3pnaLnmoTpg6jliIbvvJovYTtpZD0xID0+IC9hXG4gICAgICAgICAgLmpvaW4oJy8nKTtcbiAgICAgICAgcmV0dXJuIGxpc3Quc29tZShtZW51ID0+IG1lbnUucGF0aCA9PT0gcGF0aCk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoZmFsc2UpKVxuICAgICk7XG4gIH1cblxuICBhY2NvdW50KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlc3VsdDxBY2NvdW50TmFtZT4+KGAke3RoaXMuY29uZmlnLmVhcnRoVXJsfS9hcGkvYWNjL2luZm9gLCB7XG4gICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKS5zZXQoQ0FDSEVBQkxFX1RPS0VOLCB0cnVlKVxuICAgIH0pO1xuICB9XG5cbiAgdXNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSZXN1bHQ8VXNlckluZm8+PihgJHt0aGlzLmNvbmZpZy5lYXJ0aFVybH0vYXBpL3Vzci9pbmZvYCwge1xuICAgICAgY29udGV4dDogbmV3IEh0dHBDb250ZXh0KCkuc2V0KENBQ0hFQUJMRV9UT0tFTiwgdHJ1ZSlcbiAgICB9KTtcbiAgfVxuXG4gIG1lbnVzKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlc3VsdDxNZW51W10+PihgJHt0aGlzLmNvbmZpZy5lYXJ0aFVybH0vYXBpL3JvbGUtbWVudXMvJHt0aGlzLmNvbmZpZy5jbGllbnRJZH1gLCB7XG4gICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKS5zZXQoQ0FDSEVBQkxFX1RPS0VOLCB0cnVlKVxuICAgIH0pLnBpcGUoXG4gICAgICBmaWx0ZXJSZXN1bHQoKSxcbiAgICAgIG1hcCgoeyBkYXRhIH0pID0+IG5vcm1hbGl6ZU1lbnVzKGRhdGEpKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog5Y+Y5pu05a+G56CBXG4gICAqIEBwYXJhbSBvXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBjaGFuZ2VQYXNzd29yZChvOiB7IG9sZFBzdzogc3RyaW5nLCBuZXdQc3c6IHN0cmluZyB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFJlc3VsdD4oYCR7dGhpcy5jb25maWcuZWFydGhVcmx9L2FwaS91c2VyL3Bzd2AsIG8pLnBpcGUoXG4gICAgICB0YXAoKHsgY29kZSB9KSA9PiB7XG4gICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5jYWNoZU1hbmFnZXIucmV2b2tlQWxsKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGNoYW5uZWxzKG9yaWdpbjogT3JpZ2luKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UmVzdWx0PENoYW5uZWxbXT4+KGAke3RoaXMuY29uZmlnLmVhcnRoVXJsfS9hcGkvY2hhbm5lbC8ke29yaWdpbn1gLCB7XG4gICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKS5zZXQoQ0FDSEVBQkxFX1RPS0VOLCB0cnVlKVxuICAgIH0pO1xuICB9XG5cbiAgY2F0ZWdvcmllcyhvcmlnaW46IE9yaWdpbikge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlc3VsdDxDYXRlZ29yeVtdPj4oYCR7dGhpcy5jb25maWcuZWFydGhVcmx9L2FwaS9jYXRlZ29yeS8ke29yaWdpbn1gLCB7XG4gICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKS5zZXQoQ0FDSEVBQkxFX1RPS0VOLCB0cnVlKVxuICAgIH0pO1xuICB9XG5cbiAgYWRkcmVzcyhwaWQ/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSZXN1bHQ8QWRkcmVzc1tdPj4oYCR7dGhpcy5jb25maWcuZWFydGhVcmx9L2FwaS9hZGRyc2AsIHtcbiAgICAgIHBhcmFtczogcGlkID8geyBwaWQgfSA6IHVuZGVmaW5lZCxcbiAgICAgIGNvbnRleHQ6IG5ldyBIdHRwQ29udGV4dCgpLnNldChDQUNIRUFCTEVfVE9LRU4sIHRydWUpXG4gICAgfSk7XG4gIH1cblxuICBhdmF0YXJVcGxvYWRLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UmVzdWx0PFVwbG9hZEtleXM+PihgJHt0aGlzLmNvbmZpZy5lYXJ0aFVybH0vYXBpL3Fpbml1L2F2YXRhci91cGxvYWQta2V5YCk7XG4gIH1cblxuICBtZWRpYVVwbG9hZEtleXMoa2V5U2l6ZSA9IDEpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSZXN1bHQ8VXBsb2FkS2V5cz4+KGAke3RoaXMuY29uZmlnLmVhcnRoVXJsfS9hcGkvcWluaXUvbWVkaWEvdXBsb2FkLWtleXNgLCB7XG4gICAgICBwYXJhbXM6IHsga2V5U2l6ZSB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectorRef, inject, Pipe } from '@angular/core';\nimport { Origin } from '@solar-kit/planets/earth';\nimport { filterResult } from '@solar-kit/planets/sun';\nimport { EarthService } from './earth.service';\nimport * as i0 from \"@angular/core\";\nexport class CategoryPipe {\n constructor() {\n this.latestId = null;\n this.latestOrigin = null;\n this.latestValue = null;\n this.service = inject(EarthService);\n this.cdr = inject(ChangeDetectorRef);\n }\n transform(id, origin) {\n if (id !== this.latestId || origin !== this.latestOrigin) {\n this.latestId = id;\n this.latestOrigin = origin;\n // 这个 API 是带缓存的,不用担心重复执行\n this.service.categories(origin).pipe(filterResult()).subscribe(({ data }) => {\n this.latestValue = data.find(o => o.id === id) ?? null;\n this.cdr.markForCheck();\n });\n }\n return this.latestValue;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CategoryPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: CategoryPipe, isStandalone: true, name: \"category\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: CategoryPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'category',\n pure: false,\n standalone: true\n }]\n }] });\nexport class UnitCategoryPipe extends CategoryPipe {\n transform(value) {\n return super.transform(value, Origin.Unit);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: UnitCategoryPipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: UnitCategoryPipe, isStandalone: true, name: \"unit\", pure: false }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: UnitCategoryPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'unit',\n pure: false,\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFydGgucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldHMvZWFydGgvZWFydGgucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFZLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBTy9DLE1BQU0sT0FBTyxZQUFZO0lBTHpCO1FBTVksYUFBUSxHQUEwQixJQUFJLENBQUM7UUFDdkMsaUJBQVksR0FBa0IsSUFBSSxDQUFDO1FBQ25DLGdCQUFXLEdBQW9CLElBQUksQ0FBQztRQUMzQixZQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9CLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQW1CcEQ7SUFqQkMsU0FBUyxDQUFDLEVBQWtCLEVBQUUsTUFBYztRQUMxQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7WUFFM0Isd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FDbEMsWUFBWSxFQUFFLENBQ2YsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO2dCQUN2RCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDOzhHQXRCVSxZQUFZOzRHQUFaLFlBQVk7OzJGQUFaLFlBQVk7a0JBTHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxLQUFLO29CQUNYLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs7QUFnQ0QsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFlBQVk7SUFDdkMsU0FBUyxDQUFDLEtBQXFCO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7OEdBSFUsZ0JBQWdCOzRHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBTDVCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLEtBQUs7b0JBQ1gsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIGluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIE9yaWdpbiB9IGZyb20gJ0Bzb2xhci1raXQvcGxhbmV0cy9lYXJ0aCc7XG5pbXBvcnQgeyBmaWx0ZXJSZXN1bHQgfSBmcm9tICdAc29sYXIta2l0L3BsYW5ldHMvc3VuJztcbmltcG9ydCB7IEVhcnRoU2VydmljZSB9IGZyb20gJy4vZWFydGguc2VydmljZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2NhdGVnb3J5JyxcbiAgcHVyZTogZmFsc2UsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHByb3RlY3RlZCBsYXRlc3RJZDogQ2F0ZWdvcnlbJ2lkJ10gfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIGxhdGVzdE9yaWdpbjogT3JpZ2luIHwgbnVsbCA9IG51bGw7XG4gIHByb3RlY3RlZCBsYXRlc3RWYWx1ZTogQ2F0ZWdvcnkgfCBudWxsID0gbnVsbDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNlcnZpY2UgPSBpbmplY3QoRWFydGhTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgdHJhbnNmb3JtKGlkOiBDYXRlZ29yeVsnaWQnXSwgb3JpZ2luOiBPcmlnaW4pIHtcbiAgICBpZiAoaWQgIT09IHRoaXMubGF0ZXN0SWQgfHwgb3JpZ2luICE9PSB0aGlzLmxhdGVzdE9yaWdpbikge1xuICAgICAgdGhpcy5sYXRlc3RJZCA9IGlkO1xuICAgICAgdGhpcy5sYXRlc3RPcmlnaW4gPSBvcmlnaW47XG5cbiAgICAgIC8vIOi/meS4qiBBUEkg5piv5bim57yT5a2Y55qE77yM5LiN55So5ouF5b+D6YeN5aSN5omn6KGMXG4gICAgICB0aGlzLnNlcnZpY2UuY2F0ZWdvcmllcyhvcmlnaW4pLnBpcGUoXG4gICAgICAgIGZpbHRlclJlc3VsdCgpXG4gICAgICApLnN1YnNjcmliZSgoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgdGhpcy5sYXRlc3RWYWx1ZSA9IGRhdGEuZmluZChvID0+IG8uaWQgPT09IGlkKSA/PyBudWxsO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmxhdGVzdFZhbHVlO1xuICB9XG5cbn1cblxuQFBpcGUoe1xuICBuYW1lOiAndW5pdCcsXG4gIHB1cmU6IGZhbHNlLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFVuaXRDYXRlZ29yeVBpcGUgZXh0ZW5kcyBDYXRlZ29yeVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgb3ZlcnJpZGUgdHJhbnNmb3JtKHZhbHVlOiBDYXRlZ29yeVsnaWQnXSkge1xuICAgIHJldHVybiBzdXBlci50cmFuc2Zvcm0odmFsdWUsIE9yaWdpbi5Vbml0KTtcbiAgfVxufVxuIl19","import { inject } from '@angular/core';\nimport { unpackResult } from '@solar-kit/planets/sun';\nimport { EarthService } from './earth.service';\nexport function channelResolver(origin) {\n return () => inject(EarthService).channels(origin).pipe(unpackResult());\n}\nexport function categoryResolver(origin) {\n return () => inject(EarthService).categories(origin).pipe(unpackResult());\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFydGgucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXRzL2VhcnRoL2VhcnRoLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxNQUFNLFVBQVUsZUFBZSxDQUFDLE1BQWM7SUFDNUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBYztJQUM3QyxPQUFPLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7QUFDNUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVzb2x2ZUZuIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENhdGVnb3J5LCBDaGFubmVsLCBPcmlnaW4gfSBmcm9tICdAc29sYXIta2l0L3BsYW5ldHMvZWFydGgnO1xuaW1wb3J0IHsgdW5wYWNrUmVzdWx0IH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL3N1bic7XG5pbXBvcnQgeyBFYXJ0aFNlcnZpY2UgfSBmcm9tICcuL2VhcnRoLnNlcnZpY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hhbm5lbFJlc29sdmVyKG9yaWdpbjogT3JpZ2luKTogUmVzb2x2ZUZuPENoYW5uZWxbXT4ge1xuICByZXR1cm4gKCkgPT4gaW5qZWN0KEVhcnRoU2VydmljZSkuY2hhbm5lbHMob3JpZ2luKS5waXBlKHVucGFja1Jlc3VsdCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhdGVnb3J5UmVzb2x2ZXIob3JpZ2luOiBPcmlnaW4pOiBSZXNvbHZlRm48Q2F0ZWdvcnlbXT4ge1xuICByZXR1cm4gKCkgPT4gaW5qZWN0KEVhcnRoU2VydmljZSkuY2F0ZWdvcmllcyhvcmlnaW4pLnBpcGUodW5wYWNrUmVzdWx0KCkpO1xufVxuIl19","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map } from 'rxjs';\nimport { EarthService } from '../earth.service';\n/**\n * 认证路由守卫\n * 认证后才允许进入,否则将导航到登录页(/login)\n * @param options\n */\nexport function authMatchGuard(options) {\n return (_route, segments) => {\n const router = inject(Router);\n const earthService = inject(EarthService);\n const redirectUrl = {\n redirect: router.createUrlTree(['/' + segments.join('/')], {\n queryParams: Object.fromEntries(new URLSearchParams(location.search))\n }).toString()\n };\n return earthService.checkAuth().pipe(map(bool => {\n if (!bool) {\n return router.createUrlTree([\n '/login',\n options?.redirect === undefined || options.redirect ? redirectUrl : {}\n ]);\n }\n return bool;\n }));\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldHMvZWFydGgvZ3VhcmRzL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQXFCLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQU9oRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUErQjtJQUM1RCxPQUFPLENBQUMsTUFBYSxFQUFFLFFBQXNCLEVBQWtGLEVBQUU7UUFDL0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxQyxNQUFNLFdBQVcsR0FBRztZQUNsQixRQUFRLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FDNUIsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUMxQjtnQkFDRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEUsQ0FDRixDQUFDLFFBQVEsRUFBRTtTQUNiLENBQUM7UUFFRixPQUFPLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNULElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUM7b0JBQzFCLFFBQVE7b0JBQ1IsT0FBTyxFQUFFLFFBQVEsS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO2lCQUN2RSxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuTWF0Y2hGbiwgUm91dGUsIFJvdXRlciwgVXJsU2VnbWVudCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVhcnRoU2VydmljZSB9IGZyb20gJy4uL2VhcnRoLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgQXV0aE1hdGNoR3VhcmRPcHRpb25zIHtcbiAgLyoqIOaYr+WQpuWcqOeZu+mZhuWQjumHjeWumuWQkeWbnuW9k+WJjemhtSAqL1xuICByZWRpcmVjdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICog6K6k6K+B6Lev55Sx5a6I5Y2rXG4gKiDorqTor4HlkI7miY3lhYHorrjov5vlhaXvvIzlkKbliJnlsIblr7zoiKrliLDnmbvlvZXpobXvvIgvbG9naW7vvIlcbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdXRoTWF0Y2hHdWFyZChvcHRpb25zPzogQXV0aE1hdGNoR3VhcmRPcHRpb25zKTogQ2FuTWF0Y2hGbiB7XG4gIHJldHVybiAoX3JvdXRlOiBSb3V0ZSwgc2VnbWVudHM6IFVybFNlZ21lbnRbXSk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSA9PiB7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgY29uc3QgZWFydGhTZXJ2aWNlID0gaW5qZWN0KEVhcnRoU2VydmljZSk7XG5cbiAgICBjb25zdCByZWRpcmVjdFVybCA9IHtcbiAgICAgIHJlZGlyZWN0OiByb3V0ZXIuY3JlYXRlVXJsVHJlZShcbiAgICAgICAgWycvJyArIHNlZ21lbnRzLmpvaW4oJy8nKV0sXG4gICAgICAgIHtcbiAgICAgICAgICBxdWVyeVBhcmFtczogT2JqZWN0LmZyb21FbnRyaWVzKG5ldyBVUkxTZWFyY2hQYXJhbXMobG9jYXRpb24uc2VhcmNoKSlcbiAgICAgICAgfVxuICAgICAgKS50b1N0cmluZygpXG4gICAgfTtcblxuICAgIHJldHVybiBlYXJ0aFNlcnZpY2UuY2hlY2tBdXRoKCkucGlwZShcbiAgICAgIG1hcChib29sID0+IHtcbiAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgcmV0dXJuIHJvdXRlci5jcmVhdGVVcmxUcmVlKFtcbiAgICAgICAgICAgICcvbG9naW4nLFxuICAgICAgICAgICAgb3B0aW9ucz8ucmVkaXJlY3QgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLnJlZGlyZWN0ID8gcmVkaXJlY3RVcmwgOiB7fVxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJvb2w7XG4gICAgICB9KVxuICAgICk7XG4gIH07XG59XG4iXX0=","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map } from 'rxjs';\nimport { EarthService } from '../earth.service';\n/**\n * 权限路由守卫\n * 有权限才允许进入,否则导航到无权限页(/forbidden)\n */\nexport function permissionMatchGuard() {\n return (_route, segments) => {\n const router = inject(Router);\n const earthService = inject(EarthService);\n return earthService.checkPermission(segments).pipe(map(bool => bool || router.parseUrl('/forbidden')));\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldHMvZWFydGgvZ3VhcmRzL3Blcm1pc3Npb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQXFCLE1BQU0sRUFBdUIsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRixPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE9BQU8sQ0FBQyxNQUFhLEVBQUUsUUFBc0IsRUFBa0YsRUFBRTtRQUMvSCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTFDLE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ2hELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNULElBQUksSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUN0QyxDQUNGLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5NYXRjaEZuLCBSb3V0ZSwgUm91dGVyLCBVcmxTZWdtZW50LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWFydGhTZXJ2aWNlIH0gZnJvbSAnLi4vZWFydGguc2VydmljZSc7XG5cbi8qKlxuICog5p2D6ZmQ6Lev55Sx5a6I5Y2rXG4gKiDmnInmnYPpmZDmiY3lhYHorrjov5vlhaXvvIzlkKbliJnlr7zoiKrliLDml6DmnYPpmZDpobXvvIgvZm9yYmlkZGVu77yJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZXJtaXNzaW9uTWF0Y2hHdWFyZCgpOiBDYW5NYXRjaEZuIHtcbiAgcmV0dXJuIChfcm91dGU6IFJvdXRlLCBzZWdtZW50czogVXJsU2VnbWVudFtdKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlID0+IHtcbiAgICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBjb25zdCBlYXJ0aFNlcnZpY2UgPSBpbmplY3QoRWFydGhTZXJ2aWNlKTtcblxuICAgIHJldHVybiBlYXJ0aFNlcnZpY2UuY2hlY2tQZXJtaXNzaW9uKHNlZ21lbnRzKS5waXBlKFxuICAgICAgbWFwKGJvb2wgPT5cbiAgICAgICAgYm9vbCB8fCByb3V0ZXIucGFyc2VVcmwoJy9mb3JiaWRkZW4nKVxuICAgICAgKVxuICAgICk7XG4gIH07XG59XG4iXX0=","import { inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { map } from 'rxjs';\nimport { EarthService } from '../earth.service';\n/**\n * 未认证路由守卫\n * 未认证才允许进入,否则将导航到首页\n */\nexport function unauthMatchGuard() {\n return (_route, _segments) => {\n const router = inject(Router);\n const earthService = inject(EarthService);\n return earthService.checkAuth().pipe(map(bool => bool ? router.parseUrl('/') : true));\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5hdXRoLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0cy9lYXJ0aC9ndWFyZHMvdW5hdXRoLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFxQixNQUFNLEVBQXVCLE1BQU0saUJBQWlCLENBQUM7QUFDakYsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUM5QixPQUFPLENBQUMsTUFBYSxFQUFFLFNBQXVCLEVBQWtGLEVBQUU7UUFDaEksTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxQyxPQUFPLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQ2xDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ2hELENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5NYXRjaEZuLCBSb3V0ZSwgUm91dGVyLCBVcmxTZWdtZW50LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWFydGhTZXJ2aWNlIH0gZnJvbSAnLi4vZWFydGguc2VydmljZSc7XG5cbi8qKlxuICog5pyq6K6k6K+B6Lev55Sx5a6I5Y2rXG4gKiDmnKrorqTor4HmiY3lhYHorrjov5vlhaXvvIzlkKbliJnlsIblr7zoiKrliLDpppbpobVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuYXV0aE1hdGNoR3VhcmQoKTogQ2FuTWF0Y2hGbiB7XG4gIHJldHVybiAoX3JvdXRlOiBSb3V0ZSwgX3NlZ21lbnRzOiBVcmxTZWdtZW50W10pOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICAgIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0IGVhcnRoU2VydmljZSA9IGluamVjdChFYXJ0aFNlcnZpY2UpO1xuXG4gICAgcmV0dXJuIGVhcnRoU2VydmljZS5jaGVja0F1dGgoKS5waXBlKFxuICAgICAgbWFwKGJvb2wgPT4gYm9vbCA/IHJvdXRlci5wYXJzZVVybCgnLycpIDogdHJ1ZSksXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { map } from 'rxjs';\nimport { EarthService } from './earth.service';\nexport function currentMenus() {\n const earthService = inject(EarthService);\n const activatedRoute = inject(ActivatedRoute);\n // 如果 path='',那么 url 是空的,此时需要取父路由\n const route = activatedRoute.snapshot.url.length ? activatedRoute : activatedRoute.parent;\n return toSignal(earthService.menus().pipe(map(data => {\n const menus = [];\n const lastPath = route.snapshot.url[route.snapshot.url.length - 1].path;\n let end = data.find(o => o.url === lastPath);\n while (end) {\n menus.unshift(end);\n end = end.parent;\n }\n return menus;\n })), { initialValue: [] });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXRzL2VhcnRoL21lbnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxNQUFNLFVBQVUsWUFBWTtJQUMxQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLGlDQUFpQztJQUNqQyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU8sQ0FBQztJQUUzRixPQUFPLFFBQVEsQ0FDYixZQUFZLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUN2QixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDVCxNQUFNLEtBQUssR0FBVyxFQUFFLENBQUM7UUFDekIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUN2RSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUU3QyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ1gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUMsQ0FDSCxFQUNELEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUNyQixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL2VhcnRoJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRWFydGhTZXJ2aWNlIH0gZnJvbSAnLi9lYXJ0aC5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnRNZW51cygpIHtcbiAgY29uc3QgZWFydGhTZXJ2aWNlID0gaW5qZWN0KEVhcnRoU2VydmljZSk7XG4gIGNvbnN0IGFjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgLy8g5aaC5p6cIHBhdGg9JyfvvIzpgqPkuYggdXJsIOaYr+epuueahO+8jOatpOaXtumcgOimgeWPlueItui3r+eUsVxuICBjb25zdCByb3V0ZSA9IGFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnVybC5sZW5ndGggPyBhY3RpdmF0ZWRSb3V0ZSA6IGFjdGl2YXRlZFJvdXRlLnBhcmVudCE7XG5cbiAgcmV0dXJuIHRvU2lnbmFsKFxuICAgIGVhcnRoU2VydmljZS5tZW51cygpLnBpcGUoXG4gICAgICBtYXAoZGF0YSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnVzOiBNZW51W10gPSBbXTtcbiAgICAgICAgY29uc3QgbGFzdFBhdGggPSByb3V0ZS5zbmFwc2hvdC51cmxbcm91dGUuc25hcHNob3QudXJsLmxlbmd0aCAtIDFdLnBhdGhcbiAgICAgICAgbGV0IGVuZCA9IGRhdGEuZmluZChvID0+IG8udXJsID09PSBsYXN0UGF0aCk7XG5cbiAgICAgICAgd2hpbGUgKGVuZCkge1xuICAgICAgICAgIG1lbnVzLnVuc2hpZnQoZW5kKTtcbiAgICAgICAgICBlbmQgPSBlbmQucGFyZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1lbnVzO1xuICAgICAgfSksXG4gICAgKSxcbiAgICB7IGluaXRpYWxWYWx1ZTogW10gfVxuICApXG59XG4iXX0=","import { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { API_TOKEN } from '@solar-angular/http';\nimport * as i0 from \"@angular/core\";\nexport class ObjectStorageService {\n constructor() {\n this.http = inject(HttpClient);\n }\n /**\n * 目前只支持了 qiniu oss\n * @param filePath\n * @param options\n * @returns\n */\n upload(file, key, options) {\n const formData = new FormData();\n formData.set('key', key);\n formData.set('file', file);\n formData.set('token', options.token);\n return this.http.post(`https://${options.host}`, formData, {\n context: new HttpContext().set(API_TOKEN, false)\n });\n }\n uploadWithEvents(file, key, options) {\n const formData = new FormData();\n formData.set('key', key);\n formData.set('file', file);\n formData.set('token', options.token);\n return this.http.post(`https://${options.host}`, formData, {\n context: new HttpContext().set(API_TOKEN, false),\n observe: 'events',\n reportProgress: true,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ObjectStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ObjectStorageService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: ObjectStorageService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldHMvZWFydGgvb2JqZWN0LXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFNaEQsTUFBTSxPQUFPLG9CQUFvQjtJQUhqQztRQUltQixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBK0I1QztJQTdCQzs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxJQUFVLEVBQUUsR0FBVyxFQUFFLE9BQTJDO1FBQ3pFLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDaEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDekIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQWdDLFdBQVcsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRTtZQUN4RixPQUFPLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQztTQUNqRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLEdBQVcsRUFBRSxPQUEyQztRQUNuRixNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNCLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFnQyxXQUFXLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUU7WUFDeEYsT0FBTyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7WUFDaEQsT0FBTyxFQUFFLFFBQVE7WUFDakIsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0EvQlUsb0JBQW9CO2tIQUFwQixvQkFBb0IsY0FGbkIsTUFBTTs7MkZBRVAsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBUElfVE9LRU4gfSBmcm9tICdAc29sYXItYW5ndWxhci9odHRwJztcbmltcG9ydCB7IFVwbG9hZEtleXMgfSBmcm9tICdAc29sYXIta2l0L3BsYW5ldHMvZWFydGgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAvKipcbiAgICog55uu5YmN5Y+q5pSv5oyB5LqGIHFpbml1IG9zc1xuICAgKiBAcGFyYW0gZmlsZVBhdGhcbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHVwbG9hZChmaWxlOiBCbG9iLCBrZXk6IHN0cmluZywgb3B0aW9uczogUGljazxVcGxvYWRLZXlzLCAnaG9zdCcgfCAndG9rZW4nPikge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuc2V0KCdrZXknLCBrZXkpO1xuICAgIGZvcm1EYXRhLnNldCgnZmlsZScsIGZpbGUpO1xuICAgIGZvcm1EYXRhLnNldCgndG9rZW4nLCBvcHRpb25zLnRva2VuKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx7IGhhc2g6IHN0cmluZywga2V5OiBzdHJpbmcgfT4oYGh0dHBzOi8vJHtvcHRpb25zLmhvc3R9YCwgZm9ybURhdGEsIHtcbiAgICAgIGNvbnRleHQ6IG5ldyBIdHRwQ29udGV4dCgpLnNldChBUElfVE9LRU4sIGZhbHNlKVxuICAgIH0pO1xuICB9XG5cbiAgdXBsb2FkV2l0aEV2ZW50cyhmaWxlOiBCbG9iLCBrZXk6IHN0cmluZywgb3B0aW9uczogUGljazxVcGxvYWRLZXlzLCAnaG9zdCcgfCAndG9rZW4nPikge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuc2V0KCdrZXknLCBrZXkpO1xuICAgIGZvcm1EYXRhLnNldCgnZmlsZScsIGZpbGUpO1xuICAgIGZvcm1EYXRhLnNldCgndG9rZW4nLCBvcHRpb25zLnRva2VuKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDx7IGhhc2g6IHN0cmluZywga2V5OiBzdHJpbmcgfT4oYGh0dHBzOi8vJHtvcHRpb25zLmhvc3R9YCwgZm9ybURhdGEsIHtcbiAgICAgIGNvbnRleHQ6IG5ldyBIdHRwQ29udGV4dCgpLnNldChBUElfVE9LRU4sIGZhbHNlKSxcbiAgICAgIG9ic2VydmU6ICdldmVudHMnLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { Pipe } from '@angular/core';\nimport { formatWeight } from '@solar-kit/planets/earth';\nimport * as i0 from \"@angular/core\";\nexport class WeightPipe {\n transform(value, unitId) {\n return formatWeight(value, unitId);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: WeightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: WeightPipe, isStandalone: true, name: \"weight\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: WeightPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'weight',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VpZ2h0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXRzL2VhcnRoL3BpcGVzL3dlaWdodC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxZQUFZLEVBQVEsTUFBTSwwQkFBMEIsQ0FBQzs7QUFNOUQsTUFBTSxPQUFPLFVBQVU7SUFDckIsU0FBUyxDQUFDLEtBQWEsRUFBRSxNQUFrQjtRQUN6QyxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0FIVSxVQUFVOzRHQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBSnRCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ybWF0V2VpZ2h0LCBVbml0IH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL2VhcnRoJztcblxuQFBpcGUoe1xuICBuYW1lOiAnd2VpZ2h0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBXZWlnaHRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyLCB1bml0SWQ6IFVuaXRbJ2lkJ10pOiBudW1iZXIge1xuICAgIHJldHVybiBmb3JtYXRXZWlnaHQodmFsdWUsIHVuaXRJZCk7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci1wbGFuZXRzLWVhcnRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0cy9lYXJ0aC9zb2xhci1hbmd1bGFyLXBsYW5ldHMtZWFydGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
@@ -58,10 +58,10 @@ class MercuryService {
58
58
  .set(CATCH_HTTP_ERROR_TOKEN, false)
59
59
  }).pipe(tap(({ code }) => code === 0 && this.cacheManager.revokeAll()));
60
60
  }
61
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MercuryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
62
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MercuryService, providedIn: 'root' }); }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: MercuryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
62
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: MercuryService, providedIn: 'root' }); }
63
63
  }
64
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MercuryService, decorators: [{
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: MercuryService, decorators: [{
65
65
  type: Injectable,
66
66
  args: [{
67
67
  providedIn: 'root'
@@ -1 +1 @@
1
- {"version":3,"file":"solar-angular-planets-mercury.mjs","sources":["../../../packages/planets/mercury/mercury.service.ts","../../../packages/planets/mercury/auth.interceptor.ts","../../../packages/planets/mercury/solar-angular-planets-mercury.ts"],"sourcesContent":["import { HttpClient, HttpContext, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { SOLAR_CONFIG } from '@solar-angular/core';\nimport { AUTH_TOKEN, CATCH_HTTP_ERROR_TOKEN, CATCH_RESULT_ERROR_TOKEN, CacheManager } from '@solar-angular/http';\nimport { Result } from '@solar-kit/planets/sun';\nimport { tap } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MercuryService {\n protected readonly config = inject(SOLAR_CONFIG);\n protected readonly http = inject(HttpClient);\n protected readonly cacheManager = inject(CacheManager);\n\n auth(username: string, password: string, remember: boolean, options: { clientSecret: string, captcha: string }) {\n return this.http.post<Result>(`${this.config.mercuryUrl}/auth`,\n new HttpParams({\n fromObject: {\n username,\n password,\n remember,\n grant_type: 'password',\n client_id: this.config.clientId,\n captcha: encodeURIComponent(options.captcha)\n }\n }).toString(),\n {\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n 'Content-type': 'application/x-www-form-urlencoded; charset=utf-8',\n Authorization: 'Basic ' + btoa(`${this.config.clientId}:${options.clientSecret}`)\n },\n context: new HttpContext()\n .set(AUTH_TOKEN, false)\n .set(CATCH_RESULT_ERROR_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n }\n );\n }\n\n refreshCertificate() {\n return this.http.post<Result>(`${this.config.mercuryUrl}/auth`, null, {\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n Authorization: 'Basic ' + btoa(`${this.config.clientId}:refresh`)\n },\n params: {\n client_id: this.config.clientId,\n grant_type: 'refresh_token',\n },\n context: new HttpContext()\n .set(AUTH_TOKEN, false)\n .set(CATCH_RESULT_ERROR_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n });\n }\n\n leave() {\n return this.http.post<Result>(`${this.config.mercuryUrl}/leave`, null, {\n context: new HttpContext()\n .set(AUTH_TOKEN, false)\n .set(CATCH_RESULT_ERROR_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n }).pipe(\n tap(({ code }) => code === 0 && this.cacheManager.revokeAll())\n );\n }\n\n}\n","import { HttpErrorResponse, HttpEvent, HttpHandlerFn, HttpInterceptorFn, HttpRequest, HttpStatusCode } from '@angular/common/http';\nimport { inject, Injector, runInInjectionContext } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AUTH_REDIRECT_TOKEN, AUTH_TOKEN, CacheManager, CATCH_HTTP_ERROR_TOKEN } from '@solar-angular/http';\nimport { Result } from '@solar-kit/planets/sun';\nimport { catchError, finalize, map, Observable, retry, share, switchMap } from 'rxjs';\nimport { MercuryService } from './mercury.service';\n\n/**\n * Mercury 认证拦截器\n * - 使用 {@link AUTH_TOKEN} 跳过该拦截器\n * - 使用 {@link AUTH_REDIRECT_TOKEN} 关闭认证失败自动跳转到 `/login`\n * @returns\n */\nexport function useAuthInterceptor(onUnauth: () => void): HttpInterceptorFn {\n /** 令牌刷新器 */\n let refreshToken$: Observable<Result> | null = null;\n\n return (request: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> => {\n const router = inject(Router);\n const cacheManager = inject(CacheManager);\n const mercuryService = inject(MercuryService);\n const injector = inject(Injector);\n\n if (!request.context.get(AUTH_TOKEN)) {\n return next(request);\n }\n\n if (refreshToken$) {\n return refreshToken$.pipe(\n switchMap(() => next(request))\n );\n }\n\n return next(request).pipe(\n retry({\n count: 1,\n delay: (error: HttpErrorResponse) => {\n if (error.status !== HttpStatusCode.Unauthorized) {\n throw error;\n }\n\n refreshToken$ ||= mercuryService.refreshCertificate().pipe(\n map(result => {\n if (result?.code !== 0) {\n throw result;\n }\n\n return result;\n }),\n catchError(error => {\n // 如果刷新令牌都出错了,则这些等待刷新令牌的请求也不需要捕获 HTTP 错误了\n request.context.set(CATCH_HTTP_ERROR_TOKEN, false);\n\n if (request.context.get(AUTH_REDIRECT_TOKEN)) {\n runInInjectionContext(injector, () => onUnauth())\n router.navigate(['/login', { redirect: router.url }]);\n }\n\n cacheManager.revokeAll();\n\n throw error;\n }),\n finalize(() => refreshToken$ = null),\n share()\n );\n\n return refreshToken$;\n }\n })\n );\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solar-angular-planets-mercury.mjs","sources":["../tmp-esm2022/mercury/mercury.service.js","../tmp-esm2022/mercury/auth.interceptor.js","../tmp-esm2022/mercury/solar-angular-planets-mercury.js"],"sourcesContent":["import { HttpClient, HttpContext, HttpParams } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { SOLAR_CONFIG } from '@solar-angular/core';\nimport { AUTH_TOKEN, CATCH_HTTP_ERROR_TOKEN, CATCH_RESULT_ERROR_TOKEN, CacheManager } from '@solar-angular/http';\nimport { tap } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class MercuryService {\n constructor() {\n this.config = inject(SOLAR_CONFIG);\n this.http = inject(HttpClient);\n this.cacheManager = inject(CacheManager);\n }\n auth(username, password, remember, options) {\n return this.http.post(`${this.config.mercuryUrl}/auth`, new HttpParams({\n fromObject: {\n username,\n password,\n remember,\n grant_type: 'password',\n client_id: this.config.clientId,\n captcha: encodeURIComponent(options.captcha)\n }\n }).toString(), {\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n 'Content-type': 'application/x-www-form-urlencoded; charset=utf-8',\n Authorization: 'Basic ' + btoa(`${this.config.clientId}:${options.clientSecret}`)\n },\n context: new HttpContext()\n .set(AUTH_TOKEN, false)\n .set(CATCH_RESULT_ERROR_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n });\n }\n refreshCertificate() {\n return this.http.post(`${this.config.mercuryUrl}/auth`, null, {\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n Authorization: 'Basic ' + btoa(`${this.config.clientId}:refresh`)\n },\n params: {\n client_id: this.config.clientId,\n grant_type: 'refresh_token',\n },\n context: new HttpContext()\n .set(AUTH_TOKEN, false)\n .set(CATCH_RESULT_ERROR_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n });\n }\n leave() {\n return this.http.post(`${this.config.mercuryUrl}/leave`, null, {\n context: new HttpContext()\n .set(AUTH_TOKEN, false)\n .set(CATCH_RESULT_ERROR_TOKEN, false)\n .set(CATCH_HTTP_ERROR_TOKEN, false)\n }).pipe(tap(({ code }) => code === 0 && this.cacheManager.revokeAll()));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MercuryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MercuryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MercuryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY3VyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0cy9tZXJjdXJ5L21lcmN1cnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxzQkFBc0IsRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUszQixNQUFNLE9BQU8sY0FBYztJQUgzQjtRQUlxQixXQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlCLFNBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUIsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0F3RHhEO0lBdERDLElBQUksQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEVBQUUsUUFBaUIsRUFBRSxPQUFrRDtRQUM1RyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLE9BQU8sRUFDNUQsSUFBSSxVQUFVLENBQUM7WUFDYixVQUFVLEVBQUU7Z0JBQ1YsUUFBUTtnQkFDUixRQUFRO2dCQUNSLFFBQVE7Z0JBQ1IsVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7Z0JBQy9CLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO2FBQzdDO1NBQ0YsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUNiO1lBQ0UsT0FBTyxFQUFFO2dCQUNQLGtCQUFrQixFQUFFLGdCQUFnQjtnQkFDcEMsY0FBYyxFQUFFLGtEQUFrRDtnQkFDbEUsYUFBYSxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDbEY7WUFDRCxPQUFPLEVBQUUsSUFBSSxXQUFXLEVBQUU7aUJBQ3ZCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO2lCQUN0QixHQUFHLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDO2lCQUNwQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDO1NBQ3RDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxPQUFPLEVBQUUsSUFBSSxFQUFFO1lBQ3BFLE9BQU8sRUFBRTtnQkFDUCxrQkFBa0IsRUFBRSxnQkFBZ0I7Z0JBQ3BDLGFBQWEsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLFVBQVUsQ0FBQzthQUNsRTtZQUNELE1BQU0sRUFBRTtnQkFDTixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2dCQUMvQixVQUFVLEVBQUUsZUFBZTthQUM1QjtZQUNELE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRTtpQkFDdkIsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7aUJBQ3RCLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUM7aUJBQ3BDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUM7U0FDdEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDckUsT0FBTyxFQUFFLElBQUksV0FBVyxFQUFFO2lCQUN2QixHQUFHLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztpQkFDdEIsR0FBRyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQztpQkFDcEMsR0FBRyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQztTQUN0QyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUMvRCxDQUFDO0lBQ0osQ0FBQzs4R0F6RFUsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwQ29udGV4dCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU09MQVJfQ09ORklHIH0gZnJvbSAnQHNvbGFyLWFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBVVRIX1RPS0VOLCBDQVRDSF9IVFRQX0VSUk9SX1RPS0VOLCBDQVRDSF9SRVNVTFRfRVJST1JfVE9LRU4sIENhY2hlTWFuYWdlciB9IGZyb20gJ0Bzb2xhci1hbmd1bGFyL2h0dHAnO1xuaW1wb3J0IHsgUmVzdWx0IH0gZnJvbSAnQHNvbGFyLWtpdC9wbGFuZXRzL3N1bic7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWVyY3VyeVNlcnZpY2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFNPTEFSX0NPTkZJRyk7XG4gIHByb3RlY3RlZCByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FjaGVNYW5hZ2VyID0gaW5qZWN0KENhY2hlTWFuYWdlcik7XG5cbiAgYXV0aCh1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCByZW1lbWJlcjogYm9vbGVhbiwgb3B0aW9uczogeyBjbGllbnRTZWNyZXQ6IHN0cmluZywgY2FwdGNoYTogc3RyaW5nIH0pIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UmVzdWx0PihgJHt0aGlzLmNvbmZpZy5tZXJjdXJ5VXJsfS9hdXRoYCxcbiAgICAgIG5ldyBIdHRwUGFyYW1zKHtcbiAgICAgICAgZnJvbU9iamVjdDoge1xuICAgICAgICAgIHVzZXJuYW1lLFxuICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgIHJlbWVtYmVyLFxuICAgICAgICAgIGdyYW50X3R5cGU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgY2xpZW50X2lkOiB0aGlzLmNvbmZpZy5jbGllbnRJZCxcbiAgICAgICAgICBjYXB0Y2hhOiBlbmNvZGVVUklDb21wb25lbnQob3B0aW9ucy5jYXB0Y2hhKVxuICAgICAgICB9XG4gICAgICB9KS50b1N0cmluZygpLFxuICAgICAge1xuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLFxuICAgICAgICAgICdDb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgICBBdXRob3JpemF0aW9uOiAnQmFzaWMgJyArIGJ0b2EoYCR7dGhpcy5jb25maWcuY2xpZW50SWR9OiR7b3B0aW9ucy5jbGllbnRTZWNyZXR9YClcbiAgICAgICAgfSxcbiAgICAgICAgY29udGV4dDogbmV3IEh0dHBDb250ZXh0KClcbiAgICAgICAgICAuc2V0KEFVVEhfVE9LRU4sIGZhbHNlKVxuICAgICAgICAgIC5zZXQoQ0FUQ0hfUkVTVUxUX0VSUk9SX1RPS0VOLCBmYWxzZSlcbiAgICAgICAgICAuc2V0KENBVENIX0hUVFBfRVJST1JfVE9LRU4sIGZhbHNlKVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICByZWZyZXNoQ2VydGlmaWNhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFJlc3VsdD4oYCR7dGhpcy5jb25maWcubWVyY3VyeVVybH0vYXV0aGAsIG51bGwsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLFxuICAgICAgICBBdXRob3JpemF0aW9uOiAnQmFzaWMgJyArIGJ0b2EoYCR7dGhpcy5jb25maWcuY2xpZW50SWR9OnJlZnJlc2hgKVxuICAgICAgfSxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBjbGllbnRfaWQ6IHRoaXMuY29uZmlnLmNsaWVudElkLFxuICAgICAgICBncmFudF90eXBlOiAncmVmcmVzaF90b2tlbicsXG4gICAgICB9LFxuICAgICAgY29udGV4dDogbmV3IEh0dHBDb250ZXh0KClcbiAgICAgICAgLnNldChBVVRIX1RPS0VOLCBmYWxzZSlcbiAgICAgICAgLnNldChDQVRDSF9SRVNVTFRfRVJST1JfVE9LRU4sIGZhbHNlKVxuICAgICAgICAuc2V0KENBVENIX0hUVFBfRVJST1JfVE9LRU4sIGZhbHNlKVxuICAgIH0pO1xuICB9XG5cbiAgbGVhdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFJlc3VsdD4oYCR7dGhpcy5jb25maWcubWVyY3VyeVVybH0vbGVhdmVgLCBudWxsLCB7XG4gICAgICBjb250ZXh0OiBuZXcgSHR0cENvbnRleHQoKVxuICAgICAgICAuc2V0KEFVVEhfVE9LRU4sIGZhbHNlKVxuICAgICAgICAuc2V0KENBVENIX1JFU1VMVF9FUlJPUl9UT0tFTiwgZmFsc2UpXG4gICAgICAgIC5zZXQoQ0FUQ0hfSFRUUF9FUlJPUl9UT0tFTiwgZmFsc2UpXG4gICAgfSkucGlwZShcbiAgICAgIHRhcCgoeyBjb2RlIH0pID0+IGNvZGUgPT09IDAgJiYgdGhpcy5jYWNoZU1hbmFnZXIucmV2b2tlQWxsKCkpXG4gICAgKTtcbiAgfVxuXG59XG4iXX0=","import { HttpStatusCode } from '@angular/common/http';\nimport { inject, Injector, runInInjectionContext } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AUTH_REDIRECT_TOKEN, AUTH_TOKEN, CacheManager, CATCH_HTTP_ERROR_TOKEN } from '@solar-angular/http';\nimport { catchError, finalize, map, retry, share, switchMap } from 'rxjs';\nimport { MercuryService } from './mercury.service';\n/**\n * Mercury 认证拦截器\n * - 使用 {@link AUTH_TOKEN} 跳过该拦截器\n * - 使用 {@link AUTH_REDIRECT_TOKEN} 关闭认证失败自动跳转到 `/login`\n * @returns\n */\nexport function useAuthInterceptor(onUnauth) {\n /** 令牌刷新器 */\n let refreshToken$ = null;\n return (request, next) => {\n const router = inject(Router);\n const cacheManager = inject(CacheManager);\n const mercuryService = inject(MercuryService);\n const injector = inject(Injector);\n if (!request.context.get(AUTH_TOKEN)) {\n return next(request);\n }\n if (refreshToken$) {\n return refreshToken$.pipe(switchMap(() => next(request)));\n }\n return next(request).pipe(retry({\n count: 1,\n delay: (error) => {\n if (error.status !== HttpStatusCode.Unauthorized) {\n throw error;\n }\n refreshToken$ ||= mercuryService.refreshCertificate().pipe(map(result => {\n if (result?.code !== 0) {\n throw result;\n }\n return result;\n }), catchError(error => {\n // 如果刷新令牌都出错了,则这些等待刷新令牌的请求也不需要捕获 HTTP 错误了\n request.context.set(CATCH_HTTP_ERROR_TOKEN, false);\n if (request.context.get(AUTH_REDIRECT_TOKEN)) {\n runInInjectionContext(injector, () => onUnauth());\n router.navigate(['/login', { redirect: router.url }]);\n }\n cacheManager.revokeAll();\n throw error;\n }), finalize(() => refreshToken$ = null), share());\n return refreshToken$;\n }\n }));\n };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldHMvbWVyY3VyeS9hdXRoLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBK0UsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkksT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFjLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxRQUFvQjtJQUNyRCxZQUFZO0lBQ1osSUFBSSxhQUFhLEdBQThCLElBQUksQ0FBQztJQUVwRCxPQUFPLENBQUMsT0FBNkIsRUFBRSxJQUFtQixFQUFrQyxFQUFFO1FBQzVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBRUQsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQ3ZCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDL0IsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLEtBQUssQ0FBQztZQUNKLEtBQUssRUFBRSxDQUFDO1lBQ1IsS0FBSyxFQUFFLENBQUMsS0FBd0IsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNqRCxNQUFNLEtBQUssQ0FBQztnQkFDZCxDQUFDO2dCQUVELGFBQWEsS0FBSyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQ3hELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDWCxJQUFJLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQ3ZCLE1BQU0sTUFBTSxDQUFDO29CQUNmLENBQUM7b0JBRUQsT0FBTyxNQUFNLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDakIseUNBQXlDO29CQUN6QyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFFbkQsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7d0JBQzdDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO3dCQUNqRCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELENBQUM7b0JBRUQsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUV6QixNQUFNLEtBQUssQ0FBQztnQkFDZCxDQUFDLENBQUMsRUFDRixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxFQUNwQyxLQUFLLEVBQUUsQ0FDUixDQUFDO2dCQUVGLE9BQU8sYUFBYSxDQUFDO1lBQ3ZCLENBQUM7U0FDRixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwSGFuZGxlckZuLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlcXVlc3QsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RvciwgcnVuSW5JbmplY3Rpb25Db250ZXh0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQVVUSF9SRURJUkVDVF9UT0tFTiwgQVVUSF9UT0tFTiwgQ2FjaGVNYW5hZ2VyLCBDQVRDSF9IVFRQX0VSUk9SX1RPS0VOIH0gZnJvbSAnQHNvbGFyLWFuZ3VsYXIvaHR0cCc7XG5pbXBvcnQgeyBSZXN1bHQgfSBmcm9tICdAc29sYXIta2l0L3BsYW5ldHMvc3VuJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIE9ic2VydmFibGUsIHJldHJ5LCBzaGFyZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZXJjdXJ5U2VydmljZSB9IGZyb20gJy4vbWVyY3VyeS5zZXJ2aWNlJztcblxuLyoqXG4gKiBNZXJjdXJ5IOiupOivgeaLpuaIquWZqFxuICogLSDkvb/nlKgge0BsaW5rIEFVVEhfVE9LRU59IOi3s+i/h+ivpeaLpuaIquWZqFxuICogLSDkvb/nlKgge0BsaW5rIEFVVEhfUkVESVJFQ1RfVE9LRU59IOWFs+mXreiupOivgeWksei0peiHquWKqOi3s+i9rOWIsCBgL2xvZ2luYFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUF1dGhJbnRlcmNlcHRvcihvblVuYXV0aDogKCkgPT4gdm9pZCk6IEh0dHBJbnRlcmNlcHRvckZuIHtcbiAgLyoqIOS7pOeJjOWIt+aWsOWZqCAqL1xuICBsZXQgcmVmcmVzaFRva2VuJDogT2JzZXJ2YWJsZTxSZXN1bHQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgcmV0dXJuIChyZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXJGbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiA9PiB7XG4gICAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgY29uc3QgY2FjaGVNYW5hZ2VyID0gaW5qZWN0KENhY2hlTWFuYWdlcik7XG4gICAgY29uc3QgbWVyY3VyeVNlcnZpY2UgPSBpbmplY3QoTWVyY3VyeVNlcnZpY2UpO1xuICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICAgIGlmICghcmVxdWVzdC5jb250ZXh0LmdldChBVVRIX1RPS0VOKSkge1xuICAgICAgcmV0dXJuIG5leHQocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgaWYgKHJlZnJlc2hUb2tlbiQpIHtcbiAgICAgIHJldHVybiByZWZyZXNoVG9rZW4kLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBuZXh0KHJlcXVlc3QpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dChyZXF1ZXN0KS5waXBlKFxuICAgICAgcmV0cnkoe1xuICAgICAgICBjb3VudDogMSxcbiAgICAgICAgZGVsYXk6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQpIHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlZnJlc2hUb2tlbiQgfHw9IG1lcmN1cnlTZXJ2aWNlLnJlZnJlc2hDZXJ0aWZpY2F0ZSgpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdD8uY29kZSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IHJlc3VsdDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAvLyDlpoLmnpzliLfmlrDku6TniYzpg73lh7rplJnkuobvvIzliJnov5nkupvnrYnlvoXliLfmlrDku6TniYznmoTor7fmsYLkuZ/kuI3pnIDopoHmjZXojrcgSFRUUCDplJnor6/kuoZcbiAgICAgICAgICAgICAgcmVxdWVzdC5jb250ZXh0LnNldChDQVRDSF9IVFRQX0VSUk9SX1RPS0VOLCBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgaWYgKHJlcXVlc3QuY29udGV4dC5nZXQoQVVUSF9SRURJUkVDVF9UT0tFTikpIHtcbiAgICAgICAgICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQoaW5qZWN0b3IsICgpID0+IG9uVW5hdXRoKCkpXG4gICAgICAgICAgICAgICAgcm91dGVyLm5hdmlnYXRlKFsnL2xvZ2luJywgeyByZWRpcmVjdDogcm91dGVyLnVybCB9XSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYWNoZU1hbmFnZXIucmV2b2tlQWxsKCk7XG5cbiAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHJlZnJlc2hUb2tlbiQgPSBudWxsKSxcbiAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIHJlZnJlc2hUb2tlbiQ7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfTtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci1wbGFuZXRzLW1lcmN1cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXRzL21lcmN1cnkvc29sYXItYW5ndWxhci1wbGFuZXRzLW1lcmN1cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
@@ -8,10 +8,10 @@ class GenderPipe {
8
8
  [1 /* Gender.Man */]: '男',
9
9
  }[value];
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GenderPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: GenderPipe, isStandalone: true, name: "gender" }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GenderPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: GenderPipe, isStandalone: true, name: "gender" }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: GenderPipe, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: GenderPipe, decorators: [{
15
15
  type: Pipe,
16
16
  args: [{
17
17
  name: 'gender',
@@ -1 +1 @@
1
- {"version":3,"file":"solar-angular-planets-sun.mjs","sources":["../../../packages/planets/sun/gender.pipe.ts","../../../packages/planets/sun/solar-angular-planets-sun.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { Gender } from '@solar-kit/planets/sun';\n\n@Pipe({\n name: 'gender',\n standalone: true\n})\nexport class GenderPipe implements PipeTransform {\n\n transform(value: Gender): string {\n return {\n [Gender.Woman]: '女',\n [Gender.Man]: '男',\n }[value];\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAOa,UAAU,CAAA;AAErB,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,OAAO;AACL,YAAA,CAAA,CAAA,sBAAgB,GAAG;AACnB,YAAA,CAAA,CAAA,oBAAc,GAAG;SAClB,CAAC,KAAK,CAAC;;+GANC,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACND;;AAEG;;;;"}
1
+ {"version":3,"file":"solar-angular-planets-sun.mjs","sources":["../tmp-esm2022/sun/gender.pipe.js","../tmp-esm2022/sun/solar-angular-planets-sun.js"],"sourcesContent":["import { Pipe } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class GenderPipe {\n transform(value) {\n return {\n [0 /* Gender.Woman */]: '女',\n [1 /* Gender.Man */]: '男',\n }[value];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: GenderPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: GenderPipe, isStandalone: true, name: \"gender\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: GenderPipe, decorators: [{\n type: Pipe,\n args: [{\n name: 'gender',\n standalone: true\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXRzL3N1bi9nZW5kZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFPcEQsTUFBTSxPQUFPLFVBQVU7SUFFckIsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTztZQUNMLHNCQUFjLEVBQUUsR0FBRztZQUNuQixvQkFBWSxFQUFFLEdBQUc7U0FDbEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNYLENBQUM7OEdBUFUsVUFBVTs0R0FBVixVQUFVOzsyRkFBVixVQUFVO2tCQUp0QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdlbmRlciB9IGZyb20gJ0Bzb2xhci1raXQvcGxhbmV0cy9zdW4nO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdnZW5kZXInLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEdlbmRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblxuICB0cmFuc2Zvcm0odmFsdWU6IEdlbmRlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtHZW5kZXIuV29tYW5dOiAn5aWzJyxcbiAgICAgIFtHZW5kZXIuTWFuXTogJ+eUtycsXG4gICAgfVt2YWx1ZV07XG4gIH1cblxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci1wbGFuZXRzLXN1bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYW5ldHMvc3VuL3NvbGFyLWFuZ3VsYXItcGxhbmV0cy1zdW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":";;;AAEO,MAAM,UAAU,CAAC;AACxB,IAAI,SAAS,CAAC,KAAK,EAAE;AACrB,QAAQ,OAAO;AACf,YAAY,CAAC,CAAC,sBAAsB,GAAG;AACvC,YAAY,CAAC,CAAC,oBAAoB,GAAG;AACrC,SAAS,CAAC,KAAK,CAAC;AAChB,IAAI;AACJ,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC;AACvK,IAAI,SAAS,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC9J;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACpH,YAAY,IAAI,EAAE,IAAI;AACtB,YAAY,IAAI,EAAE,CAAC;AACnB,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,UAAU,EAAE;AAChC,iBAAiB;AACjB,SAAS,CAAC,EAAE,CAAC;;AClBb;AACA;AACA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"solar-angular-planets.mjs","sources":["../../../packages/planets/index.ts","../../../packages/planets/solar-angular-planets.ts"],"sourcesContent":["export default void 0;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA,YAAe,KAAK,CAAC;;ACArB;;AAEG"}
1
+ {"version":3,"file":"solar-angular-planets.mjs","sources":["../tmp-esm2022/index.js","../tmp-esm2022/solar-angular-planets.js"],"sourcesContent":["export default void 0;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9wbGFuZXRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQWUsS0FBSyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB2b2lkIDA7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sYXItYW5ndWxhci1wbGFuZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvcGxhbmV0cy9zb2xhci1hbmd1bGFyLXBsYW5ldHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"AAAA,YAAe,KAAK,CAAC;;ACArB;AACA;AACA"}
package/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: undefined;
2
- export default _default;
1
+
2
+ export { };
@@ -1,2 +1,30 @@
1
- export * from './auth.interceptor';
2
- export * from './mercury.service';
1
+ import { HttpInterceptorFn, HttpClient } from '@angular/common/http';
2
+ import * as rxjs from 'rxjs';
3
+ import * as _solar_angular_core from '@solar-angular/core';
4
+ import { CacheManager } from '@solar-angular/http';
5
+ import { Result } from '@solar-kit/planets/sun';
6
+ import * as i0 from '@angular/core';
7
+
8
+ /**
9
+ * Mercury 认证拦截器
10
+ * - 使用 {@link AUTH_TOKEN} 跳过该拦截器
11
+ * - 使用 {@link AUTH_REDIRECT_TOKEN} 关闭认证失败自动跳转到 `/login`
12
+ * @returns
13
+ */
14
+ declare function useAuthInterceptor(onUnauth: () => void): HttpInterceptorFn;
15
+
16
+ declare class MercuryService {
17
+ protected readonly config: _solar_angular_core.SolarConfig;
18
+ protected readonly http: HttpClient;
19
+ protected readonly cacheManager: CacheManager;
20
+ auth(username: string, password: string, remember: boolean, options: {
21
+ clientSecret: string;
22
+ captcha: string;
23
+ }): rxjs.Observable<Result<null>>;
24
+ refreshCertificate(): rxjs.Observable<Result<null>>;
25
+ leave(): rxjs.Observable<Result<null>>;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<MercuryService, never>;
27
+ static ɵprov: i0.ɵɵInjectableDeclaration<MercuryService>;
28
+ }
29
+
30
+ export { MercuryService, useAuthInterceptor };
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@solar-angular/planets",
3
- "version": "19.4.0",
3
+ "version": "20.0.0",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
8
8
  "dependencies": {
9
- "@solar-angular/core": "19.4.0",
10
- "@solar-angular/http": "19.4.0",
9
+ "@solar-angular/core": "20.0.0",
10
+ "@solar-angular/http": "20.0.0",
11
11
  "tslib": "^2.3.0"
12
12
  },
13
13
  "peerDependencies": {
14
- "@angular/common": ">=19.0.0",
15
- "@angular/core": ">=19.0.0"
14
+ "@angular/common": ">=20.0.0",
15
+ "@angular/core": ">=20.0.0"
16
16
  },
17
17
  "module": "fesm2022/solar-angular-planets.mjs",
18
18
  "typings": "index.d.ts",
package/sun/index.d.ts CHANGED
@@ -1 +1,11 @@
1
- export * from './gender.pipe';
1
+ import * as i0 from '@angular/core';
2
+ import { PipeTransform } from '@angular/core';
3
+ import { Gender } from '@solar-kit/planets/sun';
4
+
5
+ declare class GenderPipe implements PipeTransform {
6
+ transform(value: Gender): string;
7
+ static ɵfac: i0.ɵɵFactoryDeclaration<GenderPipe, never>;
8
+ static ɵpipe: i0.ɵɵPipeDeclaration<GenderPipe, "gender", true>;
9
+ }
10
+
11
+ export { GenderPipe };
@@ -1,19 +0,0 @@
1
- import { ChangeDetectorRef, PipeTransform } from '@angular/core';
2
- import { Category, Origin } from '@solar-kit/planets/earth';
3
- import { EarthService } from './earth.service';
4
- import * as i0 from "@angular/core";
5
- export declare class CategoryPipe implements PipeTransform {
6
- protected latestId: Category['id'] | null;
7
- protected latestOrigin: Origin | null;
8
- protected latestValue: Category | null;
9
- protected readonly service: EarthService;
10
- protected readonly cdr: ChangeDetectorRef;
11
- transform(id: Category['id'], origin: Origin): Category | null;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<CategoryPipe, never>;
13
- static ɵpipe: i0.ɵɵPipeDeclaration<CategoryPipe, "category", true>;
14
- }
15
- export declare class UnitCategoryPipe extends CategoryPipe implements PipeTransform {
16
- transform(value: Category['id']): Category | null;
17
- static ɵfac: i0.ɵɵFactoryDeclaration<UnitCategoryPipe, never>;
18
- static ɵpipe: i0.ɵɵPipeDeclaration<UnitCategoryPipe, "unit", true>;
19
- }
@@ -1,4 +0,0 @@
1
- import { ResolveFn } from '@angular/router';
2
- import { Category, Channel, Origin } from '@solar-kit/planets/earth';
3
- export declare function channelResolver(origin: Origin): ResolveFn<Channel[]>;
4
- export declare function categoryResolver(origin: Origin): ResolveFn<Category[]>;
@@ -1,32 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { UrlSegment } from '@angular/router';
3
- import { CacheManager } from '@solar-angular/http';
4
- import { AccountName, Address, Category, Channel, Menu, Origin, UploadKeys, UserInfo } from '@solar-kit/planets/earth';
5
- import { Result } from '@solar-kit/planets/sun';
6
- import * as i0 from "@angular/core";
7
- export declare class EarthService {
8
- readonly config: import("@solar-angular/core").SolarConfig;
9
- readonly http: HttpClient;
10
- readonly cacheManager: CacheManager;
11
- checkAuth(): import("rxjs").Observable<boolean>;
12
- checkPermission(segments: UrlSegment[]): import("rxjs").Observable<boolean>;
13
- account(): import("rxjs").Observable<Result<AccountName>>;
14
- user(): import("rxjs").Observable<Result<UserInfo>>;
15
- menus(): import("rxjs").Observable<Menu[]>;
16
- /**
17
- * 变更密码
18
- * @param o
19
- * @returns
20
- */
21
- changePassword(o: {
22
- oldPsw: string;
23
- newPsw: string;
24
- }): import("rxjs").Observable<Result<null>>;
25
- channels(origin: Origin): import("rxjs").Observable<Result<Channel[]>>;
26
- categories(origin: Origin): import("rxjs").Observable<Result<Category[]>>;
27
- address(pid?: number): import("rxjs").Observable<Result<Address[]>>;
28
- avatarUploadKey(): import("rxjs").Observable<Result<UploadKeys>>;
29
- mediaUploadKeys(keySize?: number): import("rxjs").Observable<Result<UploadKeys>>;
30
- static ɵfac: i0.ɵɵFactoryDeclaration<EarthService, never>;
31
- static ɵprov: i0.ɵɵInjectableDeclaration<EarthService>;
32
- }
@@ -1,12 +0,0 @@
1
- import { CanMatchFn } from '@angular/router';
2
- interface AuthMatchGuardOptions {
3
- /** 是否在登陆后重定向回当前页 */
4
- redirect?: boolean;
5
- }
6
- /**
7
- * 认证路由守卫
8
- * 认证后才允许进入,否则将导航到登录页(/login)
9
- * @param options
10
- */
11
- export declare function authMatchGuard(options?: AuthMatchGuardOptions): CanMatchFn;
12
- export {};
@@ -1,3 +0,0 @@
1
- export * from './auth.guard';
2
- export * from './permission.guard';
3
- export * from './unauth.guard';
@@ -1,6 +0,0 @@
1
- import { CanMatchFn } from '@angular/router';
2
- /**
3
- * 权限路由守卫
4
- * 有权限才允许进入,否则导航到无权限页(/forbidden)
5
- */
6
- export declare function permissionMatchGuard(): CanMatchFn;
@@ -1,6 +0,0 @@
1
- import { CanMatchFn } from '@angular/router';
2
- /**
3
- * 未认证路由守卫
4
- * 未认证才允许进入,否则将导航到首页
5
- */
6
- export declare function unauthMatchGuard(): CanMatchFn;
package/earth/menus.d.ts DELETED
@@ -1,2 +0,0 @@
1
- import { Menu } from '@solar-kit/planets/earth';
2
- export declare function currentMenus(): import("@angular/core").Signal<Menu[]>;
@@ -1,21 +0,0 @@
1
- import { UploadKeys } from '@solar-kit/planets/earth';
2
- import * as i0 from "@angular/core";
3
- export declare class ObjectStorageService {
4
- private readonly http;
5
- /**
6
- * 目前只支持了 qiniu oss
7
- * @param filePath
8
- * @param options
9
- * @returns
10
- */
11
- upload(file: Blob, key: string, options: Pick<UploadKeys, 'host' | 'token'>): import("rxjs").Observable<{
12
- hash: string;
13
- key: string;
14
- }>;
15
- uploadWithEvents(file: Blob, key: string, options: Pick<UploadKeys, 'host' | 'token'>): import("rxjs").Observable<import("@angular/common/module.d-CnjH8Dlt").HttpEvent<{
16
- hash: string;
17
- key: string;
18
- }>>;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<ObjectStorageService, never>;
20
- static ɵprov: i0.ɵɵInjectableDeclaration<ObjectStorageService>;
21
- }
@@ -1 +0,0 @@
1
- export * from './weight.pipe';
@@ -1,8 +0,0 @@
1
- import { PipeTransform } from '@angular/core';
2
- import { Unit } from '@solar-kit/planets/earth';
3
- import * as i0 from "@angular/core";
4
- export declare class WeightPipe implements PipeTransform {
5
- transform(value: number, unitId: Unit['id']): number;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<WeightPipe, never>;
7
- static ɵpipe: i0.ɵɵPipeDeclaration<WeightPipe, "weight", true>;
8
- }
@@ -1,8 +0,0 @@
1
- import { HttpInterceptorFn } from '@angular/common/http';
2
- /**
3
- * Mercury 认证拦截器
4
- * - 使用 {@link AUTH_TOKEN} 跳过该拦截器
5
- * - 使用 {@link AUTH_REDIRECT_TOKEN} 关闭认证失败自动跳转到 `/login`
6
- * @returns
7
- */
8
- export declare function useAuthInterceptor(onUnauth: () => void): HttpInterceptorFn;
@@ -1,17 +0,0 @@
1
- import { HttpClient } from '@angular/common/http';
2
- import { CacheManager } from '@solar-angular/http';
3
- import { Result } from '@solar-kit/planets/sun';
4
- import * as i0 from "@angular/core";
5
- export declare class MercuryService {
6
- protected readonly config: import("@solar-angular/core").SolarConfig;
7
- protected readonly http: HttpClient;
8
- protected readonly cacheManager: CacheManager;
9
- auth(username: string, password: string, remember: boolean, options: {
10
- clientSecret: string;
11
- captcha: string;
12
- }): import("rxjs").Observable<Result<null>>;
13
- refreshCertificate(): import("rxjs").Observable<Result<null>>;
14
- leave(): import("rxjs").Observable<Result<null>>;
15
- static ɵfac: i0.ɵɵFactoryDeclaration<MercuryService, never>;
16
- static ɵprov: i0.ɵɵInjectableDeclaration<MercuryService>;
17
- }
@@ -1,8 +0,0 @@
1
- import { PipeTransform } from '@angular/core';
2
- import { Gender } from '@solar-kit/planets/sun';
3
- import * as i0 from "@angular/core";
4
- export declare class GenderPipe implements PipeTransform {
5
- transform(value: Gender): string;
6
- static ɵfac: i0.ɵɵFactoryDeclaration<GenderPipe, never>;
7
- static ɵpipe: i0.ɵɵPipeDeclaration<GenderPipe, "gender", true>;
8
- }