@reskin/core 0.0.12 → 0.0.14

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.
@@ -148,12 +148,34 @@
148
148
  });
149
149
  }
150
150
 
151
+ /**
152
+ * 表单验证
153
+ * @param form
154
+ */
155
+ function formVerify(form) {
156
+ var errList = [];
157
+ for (var key in form.controls) {
158
+ form.controls[key].markAsDirty();
159
+ form.controls[key].updateValueAndValidity();
160
+ if (form.controls[key].status !== 'VALID' && form.controls[key].status !== 'DISABLED') {
161
+ errList.push(key);
162
+ }
163
+ }
164
+ // 表单验证状态
165
+ if (form.status !== 'VALID') {
166
+ console.error("Form validation failed fields\uFF1A" + errList.join(','));
167
+ return false;
168
+ }
169
+ return form.getRawValue();
170
+ }
171
+
151
172
  /**
152
173
  * Generated bundle index. Do not edit.
153
174
  */
154
175
 
155
176
  exports.Store = Store;
156
177
  exports.deepClone = deepClone;
178
+ exports.formVerify = formVerify;
157
179
  exports.observeResize = observeResize;
158
180
  exports.setStorePrefix = setStorePrefix;
159
181
 
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-utils.umd.js","sources":["../../../library/core/utils/store.ts","../../../library/core/utils/array.ts","../../../library/core/utils/dom.ts","../../../library/core/utils/reskin-core-utils.ts"],"sourcesContent":["/**\n * 缓存配置信息\n */\nexport interface StoreOptions {\n /**\n * 缓存存储方式\n */\n storageEngine?: Storage;\n /**\n * 过期时间(毫秒)\n */\n expires?: number;\n}\n\n/**\n * 默认前缀\n */\nlet prefix: string = 'SK_';\n\n/**\n * 设置存储前缀\n *\n * 该函数用于更改全局存储前缀,影响后续所有存储操作的键名前缀。\n * 存储前缀的更改可能会影响已存储的数据被正确识别和访问。\n *\n * @param newPrefix 新的存储前缀字符串\n */\nexport function setStorePrefix(newPrefix: string) {\n prefix = newPrefix;\n}\n\n/**\n * 提供了一个用于缓存值的类,值可以被存储在浏览器的localStorage或sessionStorage中。\n * 如果提供了过期时间,存储的值会在过期后自动移除。\n */\nexport class Store<T> {\n private value: T;\n private readonly storage: Storage;\n private readonly expires?: number;\n private readonly storageKey: () => string;\n\n /**\n * 初始化Store类的实例。\n * @param key 缓存值的键名。\n * @param defaultValue 初始值,默认值会被存储并返回直到设置新的值。\n * @param options 配置选项,包括存储引擎和过期时间。\n */\n constructor(key: string, defaultValue: T, options?: StoreOptions) {\n this.value = defaultValue;\n\n // 进行初始设置\n this.storageKey = () => `@${prefix}_${key}`.toLocaleUpperCase();\n const { storageEngine = sessionStorage, expires } = options ?? {};\n this.storage = storageEngine;\n this.expires = expires;\n\n const storedValue = this.storage.getItem(this.storageKey());\n if (storedValue) {\n const { data, expiry } = JSON.parse(storedValue);\n // 判断是否过期,过期后删除key\n if (!expiry || expiry > Date.now()) {\n this.value = data;\n } else {\n this.storage.removeItem(this.storageKey());\n }\n }\n }\n\n /**\n * 获取当前缓存的值。\n * @returns 缓存的值。\n */\n get(): T {\n return this.value;\n }\n\n /**\n * 设置新的缓存值。\n * @param newValue 新的值。\n */\n set(newValue: T): void {\n this.value = newValue;\n\n // 设置值时进行Storage设置\n const value = JSON.stringify({\n data: newValue,\n expiry: this.expires ? Date.now() + this.expires : null,\n });\n this.storage.setItem(this.storageKey(), value);\n }\n\n /**\n * 使用提供的函数更新缓存的值。\n * @param updateFn 一个接受当前值并返回新值的函数。\n */\n update(updateFn: (currentValue: T) => T): void {\n if (typeof updateFn === 'function') {\n this.set(updateFn(this.value));\n }\n }\n}\n","/**\n * 深克隆一个对象或数组\n *\n * 该函数通过递归方式深克隆输入的对象或数组,确保与原对象或数组隔离,不会相互影响\n *\n * @param source 需要克隆的源对象或数组\n * @returns 返回克隆后的对象或数组\n */\nexport function deepClone<T>(source: T): T {\n // 如果源对象为null或不是对象类型,则直接返回源对象\n if (source === null || typeof source !== 'object') {\n return source;\n }\n\n // 如果源对象是数组,则创建一个新数组并递归克隆每个元素\n if (Array.isArray(source)) {\n const clonedArray = [];\n for (let i = 0; i < source.length; i++) {\n clonedArray[i] = deepClone(source[i]);\n }\n // 忽略类型检查器的警告,确保能够返回泛型T类型的数组\n // @ts-ignore\n return clonedArray as T;\n }\n\n // 如果源对象是普通对象,则创建一个新的空对象并递归克隆每个属性\n if (typeof source === 'object') {\n const clonedObject: Record<string, any> = {};\n for (const key in source) {\n // 确保只处理对象自身的属性,避免原型链上的属性被克隆\n // @ts-ignore\n if (source.hasOwnProperty(key)) {\n clonedObject[key] = deepClone(source[key]);\n }\n }\n // 忽略类型检查器的警告,确保能够返回泛型T类型的对象\n return clonedObject as T;\n }\n\n // 如果源对象是其他非对象类型,则直接返回源对象\n return source;\n}\n","import { Observable } from 'rxjs';\r\n\r\n/**\r\n * 监听元素的大小变化\r\n *\r\n * 此函数创建了一个Observable,用于观察给定HTMLElement元素的大小变化它使用了ResizeObserver API来实现\r\n * 当元素的大小发生变化时,会发出一个包含变化记录的数组\r\n *\r\n * @param element 需要观察大小变化的HTMLElement元素\r\n * @returns 返回一个Observable,其中包含ResizeObserverEntry的数组,用于记录每次大小变化的信息\r\n */\r\nexport function observeResize(element: HTMLElement): Observable<ResizeObserverEntry[]> {\r\n return new Observable((observer) => {\r\n // 创建ResizeObserver实例,当观察的目标元素大小发生变化时,会调用回调函数\r\n const resizeObserver = new ResizeObserver((entries) => {\r\n observer.next(entries);\r\n });\r\n // 开始观察指定的元素\r\n resizeObserver.observe(element);\r\n // 返回一个函数,用于在停止观察时调用,以清理资源\r\n return () => {\r\n // 停止观察指定的元素\r\n resizeObserver.unobserve(element);\r\n // 断开与所有目标的观察连接\r\n resizeObserver.disconnect();\r\n };\r\n });\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Observable"],"mappings":"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"}
1
+ {"version":3,"file":"reskin-core-utils.umd.js","sources":["../../../library/core/utils/store.ts","../../../library/core/utils/array.ts","../../../library/core/utils/dom.ts","../../../library/core/utils/form.ts","../../../library/core/utils/reskin-core-utils.ts"],"sourcesContent":["/**\n * 缓存配置信息\n */\nexport interface StoreOptions {\n /**\n * 缓存存储方式\n */\n storageEngine?: Storage;\n /**\n * 过期时间(毫秒)\n */\n expires?: number;\n}\n\n/**\n * 默认前缀\n */\nlet prefix: string = 'SK_';\n\n/**\n * 设置存储前缀\n *\n * 该函数用于更改全局存储前缀,影响后续所有存储操作的键名前缀。\n * 存储前缀的更改可能会影响已存储的数据被正确识别和访问。\n *\n * @param newPrefix 新的存储前缀字符串\n */\nexport function setStorePrefix(newPrefix: string) {\n prefix = newPrefix;\n}\n\n/**\n * 提供了一个用于缓存值的类,值可以被存储在浏览器的localStorage或sessionStorage中。\n * 如果提供了过期时间,存储的值会在过期后自动移除。\n */\nexport class Store<T> {\n private value: T;\n private readonly storage: Storage;\n private readonly expires?: number;\n private readonly storageKey: () => string;\n\n /**\n * 初始化Store类的实例。\n * @param key 缓存值的键名。\n * @param defaultValue 初始值,默认值会被存储并返回直到设置新的值。\n * @param options 配置选项,包括存储引擎和过期时间。\n */\n constructor(key: string, defaultValue: T, options?: StoreOptions) {\n this.value = defaultValue;\n\n // 进行初始设置\n this.storageKey = () => `@${prefix}_${key}`.toLocaleUpperCase();\n const { storageEngine = sessionStorage, expires } = options ?? {};\n this.storage = storageEngine;\n this.expires = expires;\n\n const storedValue = this.storage.getItem(this.storageKey());\n if (storedValue) {\n const { data, expiry } = JSON.parse(storedValue);\n // 判断是否过期,过期后删除key\n if (!expiry || expiry > Date.now()) {\n this.value = data;\n } else {\n this.storage.removeItem(this.storageKey());\n }\n }\n }\n\n /**\n * 获取当前缓存的值。\n * @returns 缓存的值。\n */\n get(): T {\n return this.value;\n }\n\n /**\n * 设置新的缓存值。\n * @param newValue 新的值。\n */\n set(newValue: T): void {\n this.value = newValue;\n\n // 设置值时进行Storage设置\n const value = JSON.stringify({\n data: newValue,\n expiry: this.expires ? Date.now() + this.expires : null,\n });\n this.storage.setItem(this.storageKey(), value);\n }\n\n /**\n * 使用提供的函数更新缓存的值。\n * @param updateFn 一个接受当前值并返回新值的函数。\n */\n update(updateFn: (currentValue: T) => T): void {\n if (typeof updateFn === 'function') {\n this.set(updateFn(this.value));\n }\n }\n}\n","/**\n * 深克隆一个对象或数组\n *\n * 该函数通过递归方式深克隆输入的对象或数组,确保与原对象或数组隔离,不会相互影响\n *\n * @param source 需要克隆的源对象或数组\n * @returns 返回克隆后的对象或数组\n */\nexport function deepClone<T>(source: T): T {\n // 如果源对象为null或不是对象类型,则直接返回源对象\n if (source === null || typeof source !== 'object') {\n return source;\n }\n\n // 如果源对象是数组,则创建一个新数组并递归克隆每个元素\n if (Array.isArray(source)) {\n const clonedArray = [];\n for (let i = 0; i < source.length; i++) {\n clonedArray[i] = deepClone(source[i]);\n }\n // 忽略类型检查器的警告,确保能够返回泛型T类型的数组\n // @ts-ignore\n return clonedArray as T;\n }\n\n // 如果源对象是普通对象,则创建一个新的空对象并递归克隆每个属性\n if (typeof source === 'object') {\n const clonedObject: Record<string, any> = {};\n for (const key in source) {\n // 确保只处理对象自身的属性,避免原型链上的属性被克隆\n // @ts-ignore\n if (source.hasOwnProperty(key)) {\n clonedObject[key] = deepClone(source[key]);\n }\n }\n // 忽略类型检查器的警告,确保能够返回泛型T类型的对象\n return clonedObject as T;\n }\n\n // 如果源对象是其他非对象类型,则直接返回源对象\n return source;\n}\n","import { Observable } from 'rxjs';\r\n\r\n/**\r\n * 监听元素的大小变化\r\n *\r\n * 此函数创建了一个Observable,用于观察给定HTMLElement元素的大小变化它使用了ResizeObserver API来实现\r\n * 当元素的大小发生变化时,会发出一个包含变化记录的数组\r\n *\r\n * @param element 需要观察大小变化的HTMLElement元素\r\n * @returns 返回一个Observable,其中包含ResizeObserverEntry的数组,用于记录每次大小变化的信息\r\n */\r\nexport function observeResize(element: HTMLElement): Observable<ResizeObserverEntry[]> {\r\n return new Observable((observer) => {\r\n // 创建ResizeObserver实例,当观察的目标元素大小发生变化时,会调用回调函数\r\n const resizeObserver = new ResizeObserver((entries) => {\r\n observer.next(entries);\r\n });\r\n // 开始观察指定的元素\r\n resizeObserver.observe(element);\r\n // 返回一个函数,用于在停止观察时调用,以清理资源\r\n return () => {\r\n // 停止观察指定的元素\r\n resizeObserver.unobserve(element);\r\n // 断开与所有目标的观察连接\r\n resizeObserver.disconnect();\r\n };\r\n });\r\n}\r\n","import { FormGroup } from '@angular/forms';\r\n\r\n/**\r\n * 表单验证\r\n * @param form\r\n */\r\nexport function formVerify<T = Record<string, any>>(form: FormGroup): false | T {\r\n const errList = [];\r\n for (const key in form.controls) {\r\n form.controls[key].markAsDirty();\r\n form.controls[key].updateValueAndValidity();\r\n if (form.controls[key].status !== 'VALID' && form.controls[key].status !== 'DISABLED') {\r\n errList.push(key);\r\n }\r\n }\r\n // 表单验证状态\r\n if (form.status !== 'VALID') {\r\n console.error(`Form validation failed fields:${errList.join(',')}`);\r\n return false;\r\n }\r\n return form.getRawValue();\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Observable"],"mappings":"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"}
@@ -23,7 +23,7 @@ export class RkAuthGuard {
23
23
  if (authRoutes.has(cleanUrl)) {
24
24
  return true;
25
25
  }
26
- const { extendAuth, extendRoutes } = childRoute.data;
26
+ const { extendAuth, extendRoutes } = this.routeData(childRoute);
27
27
  if (extendAuth && extendRoutes) {
28
28
  const hasWildcardMatch = extendRoutes.some((route) => route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl);
29
29
  if (hasWildcardMatch) {
@@ -41,6 +41,12 @@ export class RkAuthGuard {
41
41
  console.error(`无权限访问路由地址: ${url}`);
42
42
  this.router.navigate(['/errors/401']).then();
43
43
  }
44
+ routeData(childRoute) {
45
+ if (childRoute.data && childRoute.data['extendAuth']) {
46
+ return childRoute.data;
47
+ }
48
+ return childRoute.parent ? this.routeData(childRoute.parent) : {};
49
+ }
44
50
  }
45
51
  RkAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, deps: [{ token: i1.RkMenuService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
46
52
  RkAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, providedIn: 'root' });
@@ -50,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
50
56
  providedIn: 'root',
51
57
  }]
52
58
  }], ctorParameters: function () { return [{ type: i1.RkMenuService }, { type: i2.Router }]; } });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTXpELE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQ1ksSUFBbUIsRUFDbkIsTUFBYztRQURkLFNBQUksR0FBSixJQUFJLENBQWU7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUN2QixDQUFDO0lBRUosZ0JBQWdCLENBQ1osVUFBa0MsRUFDbEMsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FDL0IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUNqQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDeEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzlELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBWSxFQUFFLFVBQWtDLEVBQUUsR0FBVztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEM7UUFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRTVFLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ3JELElBQUksVUFBVSxJQUFJLFlBQVksRUFBRTtZQUM1QixNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUN6RCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FDMUUsQ0FBQztZQUNGLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ2xCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7U0FDSjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFlLEVBQUUsSUFBWTtRQUN2QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFXO1FBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqRCxDQUFDOzt5R0F2RFEsV0FBVzs2R0FBWCxXQUFXLGNBRlIsTUFBTTs0RkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVDaGlsZCwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgUmtNZW51U2VydmljZSB9IGZyb20gJ0ByZXNraW4vY29yZS9zZXJ2aWNlcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSa0F1dGhHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlQ2hpbGQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBtZW51OiBSa01lbnVTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICApIHt9XHJcblxyXG4gICAgY2FuQWN0aXZhdGVDaGlsZChcclxuICAgICAgICBjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gICAgICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxyXG4gICAgKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tZW51LnJlcXVlc3REYXRhKCkucGlwZShcclxuICAgICAgICAgICAgZmlsdGVyKChqc29uKSA9PiBqc29uLmNvZGUgPT09IDApLFxyXG4gICAgICAgICAgICBtYXAoKGpzb24pID0+IGpzb24uZGF0YSksXHJcbiAgICAgICAgICAgIG1hcCgobWVudXMpID0+IHRoaXMuY2hlY2tBY2Nlc3MobWVudXMsIGNoaWxkUm91dGUsIHN0YXRlLnVybCkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlTm9BY2Nlc3Moc3RhdGUudXJsKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbZmFsc2VdO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tBY2Nlc3MobWVudXM6IGFueVtdLCBjaGlsZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCB1cmw6IHN0cmluZyk6IGJvb2xlYW4gfCBVcmxUcmVlIHtcclxuICAgICAgICBpZiAoIW1lbnVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYOatpOi0puWPt+aXoOS7u+S9leWKn+iDveadg+mZkC5gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGNsZWFuVXJsID0gdXJsLnJlcGxhY2UoL1xcPy4qLywgJycpO1xyXG4gICAgICAgIGNvbnN0IGF1dGhSb3V0ZXMgPSBuZXcgU2V0PHN0cmluZz4obWVudXMubWFwKChtKSA9PiBtLlNZU1RFTV9SRVNPVVJDRV9VUkwpKTtcclxuXHJcbiAgICAgICAgaWYgKGF1dGhSb3V0ZXMuaGFzKGNsZWFuVXJsKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHsgZXh0ZW5kQXV0aCwgZXh0ZW5kUm91dGVzIH0gPSBjaGlsZFJvdXRlLmRhdGE7XHJcbiAgICAgICAgaWYgKGV4dGVuZEF1dGggJiYgZXh0ZW5kUm91dGVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGhhc1dpbGRjYXJkTWF0Y2ggPSBleHRlbmRSb3V0ZXMuc29tZSgocm91dGU6IHN0cmluZykgPT5cclxuICAgICAgICAgICAgICAgIHJvdXRlLmluY2x1ZGVzKCcqKicpID8gdGhpcy5tYXRjaChyb3V0ZSwgY2xlYW5VcmwpIDogcm91dGUgPT09IGNsZWFuVXJsLFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBpZiAoaGFzV2lsZGNhcmRNYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlTm9BY2Nlc3ModXJsKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtYXRjaChwYXR0ZXJuOiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4UGF0dGVybiA9IHBhdHRlcm4ucmVwbGFjZSgvXFwqXFwqL2csICcuKicpO1xyXG4gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHtyZWdleFBhdHRlcm59JGApLnRlc3QocGF0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVOb0FjY2Vzcyh1cmw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYOaXoOadg+mZkOiuv+mXrui3r+eUseWcsOWdgDogJHt1cmx9YCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZXJyb3JzLzQwMSddKS50aGVuKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTXpELE1BQU0sT0FBTyxXQUFXO0lBQ3BCLFlBQ1ksSUFBbUIsRUFDbkIsTUFBYztRQURkLFNBQUksR0FBSixJQUFJLENBQWU7UUFDbkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUN2QixDQUFDO0lBRUosZ0JBQWdCLENBQ1osVUFBa0MsRUFDbEMsS0FBMEI7UUFFMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FDL0IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUNqQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDeEIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQzlELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7SUFFTyxXQUFXLENBQUMsS0FBWSxFQUFFLFVBQWtDLEVBQUUsR0FBVztRQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbEM7UUFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6QyxNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBRTVFLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQztTQUNmO1FBRUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksVUFBVSxJQUFJLFlBQVksRUFBRTtZQUM1QixNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUN6RCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FDMUUsQ0FBQztZQUNGLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ2xCLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7U0FDSjtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFlLEVBQUUsSUFBWTtRQUN2QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFXO1FBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU8sU0FBUyxDQUFDLFVBQWtDO1FBQ2hELElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ2xELE9BQU8sVUFBVSxDQUFDLElBQXVELENBQUM7U0FDN0U7UUFDRCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBa0QsRUFBRSxDQUFDO0lBQ3ZILENBQUM7O3lHQTlEUSxXQUFXOzZHQUFYLFdBQVcsY0FGUixNQUFNOzRGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZUNoaWxkLCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBSa01lbnVTZXJ2aWNlIH0gZnJvbSAnQHJlc2tpbi9jb3JlL3NlcnZpY2VzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJrQXV0aEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGVDaGlsZCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIG1lbnU6IFJrTWVudVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgICkge31cclxuXHJcbiAgICBjYW5BY3RpdmF0ZUNoaWxkKFxyXG4gICAgICAgIGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXHJcbiAgICAgICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3QsXHJcbiAgICApOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1lbnUucmVxdWVzdERhdGEoKS5waXBlKFxyXG4gICAgICAgICAgICBmaWx0ZXIoKGpzb24pID0+IGpzb24uY29kZSA9PT0gMCksXHJcbiAgICAgICAgICAgIG1hcCgoanNvbikgPT4ganNvbi5kYXRhKSxcclxuICAgICAgICAgICAgbWFwKChtZW51cykgPT4gdGhpcy5jaGVja0FjY2VzcyhtZW51cywgY2hpbGRSb3V0ZSwgc3RhdGUudXJsKSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVOb0FjY2VzcyhzdGF0ZS51cmwpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtmYWxzZV07XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0FjY2VzcyhtZW51czogYW55W10sIGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHVybDogc3RyaW5nKTogYm9vbGVhbiB8IFVybFRyZWUge1xyXG4gICAgICAgIGlmICghbWVudXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg5q2k6LSm5Y+35peg5Lu75L2V5Yqf6IO95p2D6ZmQLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgY2xlYW5VcmwgPSB1cmwucmVwbGFjZSgvXFw/LiovLCAnJyk7XHJcbiAgICAgICAgY29uc3QgYXV0aFJvdXRlcyA9IG5ldyBTZXQ8c3RyaW5nPihtZW51cy5tYXAoKG0pID0+IG0uU1lTVEVNX1JFU09VUkNFX1VSTCkpO1xyXG5cclxuICAgICAgICBpZiAoYXV0aFJvdXRlcy5oYXMoY2xlYW5VcmwpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgeyBleHRlbmRBdXRoLCBleHRlbmRSb3V0ZXMgfSA9IHRoaXMucm91dGVEYXRhKGNoaWxkUm91dGUpO1xyXG4gICAgICAgIGlmIChleHRlbmRBdXRoICYmIGV4dGVuZFJvdXRlcykge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNXaWxkY2FyZE1hdGNoID0gZXh0ZW5kUm91dGVzLnNvbWUoKHJvdXRlOiBzdHJpbmcpID0+XHJcbiAgICAgICAgICAgICAgICByb3V0ZS5pbmNsdWRlcygnKionKSA/IHRoaXMubWF0Y2gocm91dGUsIGNsZWFuVXJsKSA6IHJvdXRlID09PSBjbGVhblVybCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgaWYgKGhhc1dpbGRjYXJkTWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmhhbmRsZU5vQWNjZXNzKHVybCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbWF0Y2gocGF0dGVybjogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCByZWdleFBhdHRlcm4gPSBwYXR0ZXJuLnJlcGxhY2UoL1xcKlxcKi9nLCAnLionKTtcclxuICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7cmVnZXhQYXR0ZXJufSRgKS50ZXN0KHBhdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlTm9BY2Nlc3ModXJsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKGDml6DmnYPpmZDorr/pl67ot6/nlLHlnLDlnYA6ICR7dXJsfWApO1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Vycm9ycy80MDEnXSkudGhlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcm91dGVEYXRhKGNoaWxkUm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiB7IGV4dGVuZEF1dGg6IGJvb2xlYW47IGV4dGVuZFJvdXRlczogc3RyaW5nW10gfSB7XHJcbiAgICAgICAgaWYgKGNoaWxkUm91dGUuZGF0YSAmJiBjaGlsZFJvdXRlLmRhdGFbJ2V4dGVuZEF1dGgnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2hpbGRSb3V0ZS5kYXRhIGFzIHsgZXh0ZW5kQXV0aDogYm9vbGVhbjsgZXh0ZW5kUm91dGVzOiBzdHJpbmdbXSB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2hpbGRSb3V0ZS5wYXJlbnQgPyB0aGlzLnJvdXRlRGF0YShjaGlsZFJvdXRlLnBhcmVudCkgOiA8eyBleHRlbmRBdXRoOiBib29sZWFuOyBleHRlbmRSb3V0ZXM6IHN0cmluZ1tdIH0+e307XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -9,7 +9,7 @@ export class RkPersonDatasetService {
9
9
  this.env = this.injector.get(RK_ENVIRONMENT);
10
10
  }
11
11
  /**
12
- * 请求个人数据
12
+ * 请求个人数据 selectOne
13
13
  *
14
14
  * 本函数用于根据表码和ID请求个人数据它首先从表码中提取设置ID,
15
15
  * 然后构建相应的API网址,并调用HTTP服务发送POST请求
@@ -24,10 +24,10 @@ export class RkPersonDatasetService {
24
24
  // 根据设置ID构建API网址
25
25
  const url = `api/gl-service-data-${this.env.config.PROJECT_SERVICE_SUFFIX}/v1/data/person/${setId.toLocaleLowerCase()}/selectOne`;
26
26
  // 构建请求体,包含具体的ID
27
- return this.http.post(url, { [`${TABLE_CODE.toLocaleUpperCase()}_ID`]: id });
27
+ return this.http.post(url, { [`${TABLE_CODE.toLocaleUpperCase()}${setId !== 'A01' ? '_A01' : ''}_ID`]: id });
28
28
  }
29
29
  /**
30
- * 请求个人子集列表信息
30
+ * 请求个人子集列表信息 selectListKeyId
31
31
  *
32
32
  * 本函数用于根据给定的表码和标识符,请求个人子列表数据
33
33
  * 它通过表码提取设置ID,并构建相应的API请求网址和请求体
@@ -45,7 +45,7 @@ export class RkPersonDatasetService {
45
45
  return this.http.post(url, { [`${TABLE_CODE.toLocaleUpperCase()}_A01_ID`]: id });
46
46
  }
47
47
  /**
48
- * 请求更新个人数据
48
+ * 请求更新个人数据 update
49
49
  *
50
50
  * 本函数用于向服务器发送一个更新个人数据的请求它首先根据表格代码(TABLE_CODE)提取设置ID(setId),
51
51
  * 然后构建相应的API URL,并准备更新参数这些参数包括原始ID(id)以及需要更新的数据(data)对象
@@ -62,12 +62,12 @@ export class RkPersonDatasetService {
62
62
  // 根据设置ID构建API URL
63
63
  const url = `api/gl-service-data-${this.env.config.PROJECT_SERVICE_SUFFIX}/v1/data/person/${setId.toLocaleLowerCase()}/update`;
64
64
  // 准备更新参数,包括ID和需要更新的数据
65
- const params = Object.assign({ [`${TABLE_CODE.toLocaleUpperCase()}${setId !== 'A01' ? '_A01' : ''}_ID`]: id }, data);
65
+ const params = Object.assign({ [`${TABLE_CODE.toLocaleUpperCase()}_ID`]: id }, data);
66
66
  // 发送HTTP POST请求到指定API进行数据更新
67
67
  return this.http.post(url, params);
68
68
  }
69
69
  /**
70
- * 请求插入个人数据
70
+ * 请求插入个人数据 insert
71
71
  *
72
72
  * 本函数用于向API发送请求,以插入个人数据主要作用是构建API需要的请求格式,包括URL和参数
73
73
  * 它特别适用于那些需要将特定数据插入到与个人相关的数据库表中的场景
@@ -88,7 +88,7 @@ export class RkPersonDatasetService {
88
88
  return this.http.post(url, params);
89
89
  }
90
90
  /**
91
- * 发起删除个人数据的请求
91
+ * 发起删除个人数据的请求 delete
92
92
  *
93
93
  * 本函数主要用于向后端API发送请求,以删除指定个人的数据它首先解析表代码(TABLE_CODE)以获取数据集ID,
94
94
  * 然后构造API的URL并发送POST请求请求中包含了要删除数据的表代码和特定记录的ID
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
114
114
  providedIn: 'root',
115
115
  }]
116
116
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLmRhdGFzZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9zZXJ2aWNlcy9wZXJzb24uZGF0YXNldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBTTlDLE1BQU0sT0FBTyxzQkFBc0I7SUFJL0IsWUFBc0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQU0sY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFdBQVcsQ0FBbUIsVUFBYSxFQUFFLEVBQVU7UUFDbkQsYUFBYTtRQUNiLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUMsZ0JBQWdCO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLHVCQUF1QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsbUJBQW1CLEtBQU0sQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUM7UUFDbkksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7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LGNBRm5CLE1BQU07NEZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVudiwgUiB9IGZyb20gJ0ByZXNraW4vY29yZS9lbnRpdHknO1xyXG5pbXBvcnQgeyBSS19FTlZJUk9OTUVOVCB9IGZyb20gJy4vYXBwLmNvbmZpZyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJrUGVyc29uRGF0YXNldFNlcnZpY2Uge1xyXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQ7XHJcbiAgICBwcm90ZWN0ZWQgZW52OiBFbnY7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEh0dHBDbGllbnQpO1xyXG4gICAgICAgIHRoaXMuZW52ID0gdGhpcy5pbmplY3Rvci5nZXQ8RW52PihSS19FTlZJUk9OTUVOVCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDor7fmsYLkuKrkurrmlbDmja5cclxuICAgICAqXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7moLnmja7ooajnoIHlkoxJROivt+axguS4quS6uuaVsOaNruWug+mmluWFiOS7juihqOeggeS4reaPkOWPluiuvue9rklE77yMXHJcbiAgICAgKiDnhLblkI7mnoTlu7rnm7jlupTnmoRBUEnnvZHlnYDvvIzlubbosIPnlKhIVFRQ5pyN5Yqh5Y+R6YCBUE9TVOivt+axglxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBUQUJMRV9DT0RFIOihqOegge+8jOeUqOS6juehruWumuivt+axgueahOaVsOaNruexu+Wei1xyXG4gICAgICogQHBhcmFtIGlkIOS4quS6uuaVsOaNrueahOWUr+S4gOagh+ivhuesplxyXG4gICAgICogQHJldHVybnMg6L+U5Zue6K+35rGC5Yiw55qE5Liq5Lq65pWw5o2u77yM57G75Z6L5Li6UlxyXG4gICAgICovXHJcbiAgICByZXF1ZXN0RGF0YTxUIGV4dGVuZHMgc3RyaW5nPihUQUJMRV9DT0RFOiBULCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSPHsgW0sgaW4gVF06IHN0cmluZyB9ICYgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+PiB7XHJcbiAgICAgICAgLy8g5LuO6KGo56CB5Lit5o+Q5Y+W6K6+572uSURcclxuICAgICAgICBjb25zdCBzZXRJZCA9IFRBQkxFX0NPREUuc3BsaXQoJ18nKS5wb3AoKTtcclxuICAgICAgICAvLyDmoLnmja7orr7nva5JROaehOW7ukFQSee9keWdgFxyXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvZ2wtc2VydmljZS1kYXRhLSR7dGhpcy5lbnYuY29uZmlnLlBST0pFQ1RfU0VSVklDRV9TVUZGSVh9L3YxL2RhdGEvcGVyc29uLyR7c2V0SWQhLnRvTG9jYWxlTG93ZXJDYXNlKCl9L3NlbGVjdE9uZWA7XHJcbiAgICAgICAgLy8g5p6E5bu66K+35rGC5L2T77yM5YyF5ZCr5YW35L2T55qESURcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Uj4odXJsLCB7IFtgJHtUQUJMRV9DT0RFLnRvTG9jYWxlVXBwZXJDYXNlKCl9X0lEYF06IGlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6K+35rGC5Liq5Lq65a2Q6ZuG5YiX6KGo5L+h5oGvXHJcbiAgICAgKlxyXG4gICAgICog5pys5Ye95pWw55So5LqO5qC55o2u57uZ5a6a55qE6KGo56CB5ZKM5qCH6K+G56ym77yM6K+35rGC5Liq5Lq65a2Q5YiX6KGo5pWw5o2uXHJcbiAgICAgKiDlroPpgJrov4fooajnoIHmj5Dlj5borr7nva5JRO+8jOW5tuaehOW7uuebuOW6lOeahEFQSeivt+axgue9keWdgOWSjOivt+axguS9k1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBUQUJMRV9DT0RFIOihqOeahOS7o+egge+8jOeUqOS6juaPkOWPluiuvue9rklE5ZKM5p6E5bu66K+35rGC5Y+C5pWwXHJcbiAgICAgKiBAcGFyYW0gaWQg5qCH6K+G56ym77yM55So5LqO5qCH6K+G54m55a6a55qE5Liq5Lq6XHJcbiAgICAgKiBAcmV0dXJucyDov5Tlm57kuIDkuKpQcm9taXNl77yM6Kej5p6Q5ZCO55qE57uT5p6c5Li65ZON5bqU5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHJlcXVlc3RDaGlsZHJlbjxUIGV4dGVuZHMgc3RyaW5nPihUQUJMRV9DT0RFOiBULCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSPEFycmF5PHsgW0sgaW4gVF06IHN0cmluZyB9ICYgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+Pj4ge1xyXG4gICAgICAgIC8vIOS7juihqOeggeS4reaPkOWPluiuvue9rklEXHJcbiAgICAgICAgY29uc3Qgc2V0SWQgPSBUQUJMRV9DT0RFLnNwbGl0KCdfJykucG9wKCk7XHJcbiAgICAgICAgLy8g5qC55o2u6K6+572uSUTmnoTlu7pBUEnnvZHlnYBcclxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL2dsLXNlcnZpY2UtZGF0YS0ke3RoaXMuZW52LmNvbmZpZy5QUk9KRUNUX1NFUlZJQ0VfU1VGRklYfS92MS9kYXRhL3BlcnNvbi8ke3NldElkIS50b0xvY2FsZUxvd2VyQ2FzZSgpfS9zZWxlY3RMaXN0S2V5SWRgO1xyXG4gICAgICAgIC8vIOaehOW7uuivt+axguS9k++8jOWMheWQq+WFt+S9k+eahElEXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgeyBbYCR7VEFCTEVfQ09ERS50b0xvY2FsZVVwcGVyQ2FzZSgpfV9BMDFfSURgXTogaWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDor7fmsYLmm7TmlrDkuKrkurrmlbDmja5cclxuICAgICAqXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7lkJHmnI3liqHlmajlj5HpgIHkuIDkuKrmm7TmlrDkuKrkurrmlbDmja7nmoTor7fmsYLlroPpppblhYjmoLnmja7ooajmoLzku6PnoIHvvIhUQUJMRV9DT0RF77yJ5o+Q5Y+W6K6+572uSUTvvIhzZXRJZO+8ie+8jFxyXG4gICAgICog54S25ZCO5p6E5bu655u45bqU55qEQVBJIFVSTO+8jOW5tuWHhuWkh+abtOaWsOWPguaVsOi/meS6m+WPguaVsOWMheaLrOWOn+Wni0lE77yIaWTvvInku6Xlj4rpnIDopoHmm7TmlrDnmoTmlbDmja7vvIhkYXRh77yJ5a+56LGhXHJcbiAgICAgKiDmnIDlkI7vvIzpgJrov4dIVFRQIFBPU1Tor7fmsYLlj5HpgIHov5nkupvlj4LmlbDliLDmjIflrprnmoRBUEnov5vooYzmlbDmja7mm7TmlrBcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gVEFCTEVfQ09ERSDooajmoLzku6PnoIHvvIznlKjkuo7noa7lrprmlbDmja7ooajnmoTnsbvlnotcclxuICAgICAqIEBwYXJhbSBpZCDkuKrkurrmlbDmja7nmoTllK/kuIDmoIfor4bnrKbvvIznlKjkuo7lrprkvY3lk6rmnaHorrDlvZXpnIDopoHmm7TmlrBcclxuICAgICAqIEBwYXJhbSBkYXRhIOWMheWQq+abtOaWsOWtl+auteeahOWvueixoe+8jOmUruS4uuWtl+auteWQje+8jOWAvOS4uuaWsOeahOWtl+auteWAvFxyXG4gICAgICogQHJldHVybnMg6L+U5ZueSFRUUCBQT1NU6K+35rGC55qE5ZON5bqU77yM5YW25Lit5YyF5ZCr5pu05paw5pON5L2c55qE57uT5p6cXHJcbiAgICAgKi9cclxuICAgIHJlcXVlc3RVcGRhdGU8VCBleHRlbmRzIHN0cmluZz4oXHJcbiAgICAgICAgVEFCTEVfQ09ERTogVCxcclxuICAgICAgICBpZDogc3RyaW5nLFxyXG4gICAgICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICApOiBPYnNlcnZhYmxlPFI8eyBbSyBpbiBUXTogc3RyaW5nIH0gJiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+IHtcclxuICAgICAgICAvLyDku45UQUJMRV9DT0RF5Lit5o+Q5Y+W6K6+572uSURcclxuICAgICAgICBjb25zdCBzZXRJZCA9IFRBQkxFX0NPREUuc3BsaXQoJ18nKS5wb3AoKTtcclxuICAgICAgICAvLyDmoLnmja7orr7nva5JROaehOW7ukFQSSBVUkxcclxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL2dsLXNlcnZpY2UtZGF0YS0ke3RoaXMuZW52LmNvbmZpZy5QUk9KRUNUX1NFUlZJQ0VfU1VGRklYfS92MS9kYXRhL3BlcnNvbi8ke3NldElkIS50b0xvY2FsZUxvd2VyQ2FzZSgpfS91cGRhdGVgO1xyXG4gICAgICAgIC8vIOWHhuWkh+abtOaWsOWPguaVsO+8jOWMheaLrElE5ZKM6ZyA6KaB5pu05paw55qE5pWw5o2uXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICAgICAgICBbYCR7VEFCTEVfQ09ERS50b0xvY2FsZVVwcGVyQ2FzZSgpfSR7c2V0SWQgIT09ICdBMDEnID8gJ19BMDEnIDogJyd9X0lEYF06IGlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8g5Y+R6YCBSFRUUCBQT1NU6K+35rGC5Yiw5oyH5a6aQVBJ6L+b6KGM5pWw5o2u5pu05pawXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axguaPkuWFpeS4quS6uuaVsOaNrlxyXG4gICAgICpcclxuICAgICAqIOacrOWHveaVsOeUqOS6juWQkUFQSeWPkemAgeivt+axgu+8jOS7peaPkuWFpeS4quS6uuaVsOaNruS4u+imgeS9nOeUqOaYr+aehOW7ukFQSemcgOimgeeahOivt+axguagvOW8j++8jOWMheaLrFVSTOWSjOWPguaVsFxyXG4gICAgICog5a6D54m55Yir6YCC55So5LqO6YKj5Lqb6ZyA6KaB5bCG54m55a6a5pWw5o2u5o+S5YWl5Yiw5LiO5Liq5Lq655u45YWz55qE5pWw5o2u5bqT6KGo5Lit55qE5Zy65pmvXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIFRBQkxFX0NPREUg6KGo5Luj56CB77yM55So5LqO56Gu5a6a5pWw5o2u5o+S5YWl55qE5YW35L2T6KGoXHJcbiAgICAgKiBAcGFyYW0gaWQg5Liq5Lq65pWw5o2u55qE5ZSv5LiA5qCH6K+G56ym77yM55So5LqO5YWz6IGU5pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gZGF0YSDljIXlkKvlhbfkvZPkuKrkurrmlbDmja7nmoTlr7nosaHvvIzplK7kuLrmlbDmja7lrZfmrrXvvIzlgLzkuLrlr7nlupTnmoTmlbDmja7lgLxcclxuICAgICAqIEByZXR1cm5zIOi/lOWbnkhUVFDor7fmsYLnmoTlk43lupTvvIzms5vlnovkuLpS77yM5Lul5L6/5LqO5rOb5Z6L5pa55rOV55qE6LCD55So6ICF5Y+v5Lul5qC55o2u5LiK5LiL5paH56Gu5a6a5ZON5bqU57G75Z6LXHJcbiAgICAgKi9cclxuICAgIHJlcXVlc3RJbnNlcnQ8VCBleHRlbmRzIHN0cmluZz4oXHJcbiAgICAgICAgVEFCTEVfQ09ERTogc3RyaW5nLFxyXG4gICAgICAgIGlkOiBzdHJpbmcsXHJcbiAgICAgICAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgICk6IE9ic2VydmFibGU8Ujx7IFtLIGluIFRdOiBzdHJpbmcgfSAmIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9Pj4ge1xyXG4gICAgICAgIC8vIOS7jlRBQkxFX0NPREXkuK3mj5Dlj5booajnmoTorr7nva5JRO+8jOeUqOS6juaehOW7ulVSTFxyXG4gICAgICAgIGNvbnN0IHNldElkID0gVEFCTEVfQ09ERS5zcGxpdCgnXycpLnBvcCgpO1xyXG4gICAgICAgIC8vIOaehOW7ukFQSeeahFVSTO+8jOWMheaLrOiuvue9rklE5bm26L2s5o2i5Li65YW25bCP5YaZ5b2i5byPXHJcbiAgICAgICAgY29uc3QgdXJsID0gYGFwaS9nbC1zZXJ2aWNlLWRhdGEtJHt0aGlzLmVudi5jb25maWcuUFJPSkVDVF9TRVJWSUNFX1NVRkZJWH0vdjEvZGF0YS9wZXJzb24vJHtzZXRJZCEudG9Mb2NhbGVMb3dlckNhc2UoKX0vaW5zZXJ0YDtcclxuICAgICAgICAvLyDmnoTlu7ror7fmsYLlj4LmlbDvvIznoa7kv53ljIXlkKvkuKrkurrmlbDmja7nmoTllK/kuIDmoIfor4bnrKbvvIzlubblkIjlubbkvKDlhaXnmoTmlbDmja7lr7nosaFcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIFtgJHtUQUJMRV9DT0RFLnRvTG9jYWxlVXBwZXJDYXNlKCl9X0EwMV9JRGBdOiBpZCxcclxuICAgICAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIOWPkei1t1BPU1Tor7fmsYLvvIzlubbmjIflrprlk43lupTnmoTms5vlnovnsbvlnovkuLpSXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWPkei1t+WIoOmZpOS4quS6uuaVsOaNrueahOivt+axglxyXG4gICAgICpcclxuICAgICAqIOacrOWHveaVsOS4u+imgeeUqOS6juWQkeWQjuerr0FQSeWPkemAgeivt+axgu+8jOS7peWIoOmZpOaMh+WumuS4quS6uueahOaVsOaNruWug+mmluWFiOino+aekOihqOS7o+eggShUQUJMRV9DT0RFKeS7peiOt+WPluaVsOaNrumbhklE77yMXHJcbiAgICAgKiDnhLblkI7mnoTpgKBBUEnnmoRVUkzlubblj5HpgIFQT1NU6K+35rGC6K+35rGC5Lit5YyF5ZCr5LqG6KaB5Yig6Zmk5pWw5o2u55qE6KGo5Luj56CB5ZKM54m55a6a6K6w5b2V55qESURcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gVEFCTEVfQ09ERSAtIOaVsOaNruihqOS7o+egge+8jOeUqOS6juehruWumuaVsOaNrumbhuWSjOaehOmAoOivt+axguWPguaVsFxyXG4gICAgICogQHBhcmFtIGlkIC0g6KaB5Yig6Zmk55qE5Liq5Lq65pWw5o2u55qE5ZSv5LiA5qCH6K+G56ymXHJcbiAgICAgKiBAcmV0dXJucyDov5Tlm55IVFRQ6K+35rGC55qE5ZON5bqU77yM5rOb5Z6L5Li6Uu+8jOihqOekuuWTjeW6lOeahOWFt+S9k+exu+Wei1xyXG4gICAgICovXHJcbiAgICByZXF1ZXN0RGVsZXRlKFRBQkxFX0NPREU6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ujxib29sZWFuPj4ge1xyXG4gICAgICAgIC8vIOmAmui/h+WIhuWJsuihqOS7o+eggeW5tuiOt+WPluacgOWQjueahOWFg+e0oOadpeino+aekOaVsOaNrumbhklEXHJcbiAgICAgICAgY29uc3Qgc2V0SWQgPSBUQUJMRV9DT0RFLnNwbGl0KCdfJykucG9wKCk7XHJcbiAgICAgICAgLy8g5p6E6YCgQVBJ55qEVVJM77yM5YyF5ous5pWw5o2u6ZuGSUTlkozmk43kvZznsbvlnotcclxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL2dsLXNlcnZpY2UtZGF0YS0ke3RoaXMuZW52LmNvbmZpZy5QUk9KRUNUX1NFUlZJQ0VfU1VGRklYfS92MS9kYXRhL3BlcnNvbi8ke3NldElkIS50b0xvY2FsZUxvd2VyQ2FzZSgpfS9kZWxldGVgO1xyXG4gICAgICAgIC8vIOWPkei1t1BPU1Tor7fmsYLvvIzkvb/nlKjop6PmnpDlh7rnmoTmlbDmja7pm4ZJROWSjOaPkOS+m+eahOiusOW9lUlE5L2c5Li66K+35rGC5L2TXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgeyBbYCR7VEFCTEVfQ09ERS50b0xvY2FsZVVwcGVyQ2FzZSgpfV9JRGBdOiBpZCB9KTtcclxuICAgIH1cclxufVxyXG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc29uLmRhdGFzZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9zZXJ2aWNlcy9wZXJzb24uZGF0YXNldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWxELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBTTlDLE1BQU0sT0FBTyxzQkFBc0I7SUFJL0IsWUFBc0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQU0sY0FBYyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFdBQVcsQ0FBbUIsVUFBYSxFQUFFLEVBQVU7UUFDbkQsYUFBYTtRQUNiLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUMsZ0JBQWdCO1FBQ2hCLE1BQU0sR0FBRyxHQUFHLHVCQUF1QixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsbUJBQW1CLEtBQU0sQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUM7UUFDbkksZ0JBQWdCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxD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LGNBRm5CLE1BQU07NEZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVudiwgUiB9IGZyb20gJ0ByZXNraW4vY29yZS9lbnRpdHknO1xyXG5pbXBvcnQgeyBSS19FTlZJUk9OTUVOVCB9IGZyb20gJy4vYXBwLmNvbmZpZyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJrUGVyc29uRGF0YXNldFNlcnZpY2Uge1xyXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQ7XHJcbiAgICBwcm90ZWN0ZWQgZW52OiBFbnY7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEh0dHBDbGllbnQpO1xyXG4gICAgICAgIHRoaXMuZW52ID0gdGhpcy5pbmplY3Rvci5nZXQ8RW52PihSS19FTlZJUk9OTUVOVCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDor7fmsYLkuKrkurrmlbDmja4gc2VsZWN0T25lXHJcbiAgICAgKlxyXG4gICAgICog5pys5Ye95pWw55So5LqO5qC55o2u6KGo56CB5ZKMSUTor7fmsYLkuKrkurrmlbDmja7lroPpppblhYjku47ooajnoIHkuK3mj5Dlj5borr7nva5JRO+8jFxyXG4gICAgICog54S25ZCO5p6E5bu655u45bqU55qEQVBJ572R5Z2A77yM5bm26LCD55SoSFRUUOacjeWKoeWPkemAgVBPU1Tor7fmsYJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gVEFCTEVfQ09ERSDooajnoIHvvIznlKjkuo7noa7lrpror7fmsYLnmoTmlbDmja7nsbvlnotcclxuICAgICAqIEBwYXJhbSBpZCDkuKrkurrmlbDmja7nmoTllK/kuIDmoIfor4bnrKZcclxuICAgICAqIEByZXR1cm5zIOi/lOWbnuivt+axguWIsOeahOS4quS6uuaVsOaNru+8jOexu+Wei+S4ulJcclxuICAgICAqL1xyXG4gICAgcmVxdWVzdERhdGE8VCBleHRlbmRzIHN0cmluZz4oVEFCTEVfQ09ERTogVCwgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ujx7IFtLIGluIFRdOiBzdHJpbmcgfSAmIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9Pj4ge1xyXG4gICAgICAgIC8vIOS7juihqOeggeS4reaPkOWPluiuvue9rklEXHJcbiAgICAgICAgY29uc3Qgc2V0SWQgPSBUQUJMRV9DT0RFLnNwbGl0KCdfJykucG9wKCk7XHJcbiAgICAgICAgLy8g5qC55o2u6K6+572uSUTmnoTlu7pBUEnnvZHlnYBcclxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL2dsLXNlcnZpY2UtZGF0YS0ke3RoaXMuZW52LmNvbmZpZy5QUk9KRUNUX1NFUlZJQ0VfU1VGRklYfS92MS9kYXRhL3BlcnNvbi8ke3NldElkIS50b0xvY2FsZUxvd2VyQ2FzZSgpfS9zZWxlY3RPbmVgO1xyXG4gICAgICAgIC8vIOaehOW7uuivt+axguS9k++8jOWMheWQq+WFt+S9k+eahElEXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgeyBbYCR7VEFCTEVfQ09ERS50b0xvY2FsZVVwcGVyQ2FzZSgpfSR7c2V0SWQgIT09ICdBMDEnID8gJ19BMDEnIDogJyd9X0lEYF06IGlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6K+35rGC5Liq5Lq65a2Q6ZuG5YiX6KGo5L+h5oGvIHNlbGVjdExpc3RLZXlJZFxyXG4gICAgICpcclxuICAgICAqIOacrOWHveaVsOeUqOS6juagueaNrue7meWumueahOihqOeggeWSjOagh+ivhuespu+8jOivt+axguS4quS6uuWtkOWIl+ihqOaVsOaNrlxyXG4gICAgICog5a6D6YCa6L+H6KGo56CB5o+Q5Y+W6K6+572uSUTvvIzlubbmnoTlu7rnm7jlupTnmoRBUEnor7fmsYLnvZHlnYDlkozor7fmsYLkvZNcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gVEFCTEVfQ09ERSDooajnmoTku6PnoIHvvIznlKjkuo7mj5Dlj5borr7nva5JROWSjOaehOW7uuivt+axguWPguaVsFxyXG4gICAgICogQHBhcmFtIGlkIOagh+ivhuespu+8jOeUqOS6juagh+ivhueJueWumueahOS4quS6ulxyXG4gICAgICogQHJldHVybnMg6L+U5Zue5LiA5LiqUHJvbWlzZe+8jOino+aekOWQjueahOe7k+aenOS4uuWTjeW6lOaVsOaNrlxyXG4gICAgICovXHJcbiAgICByZXF1ZXN0Q2hpbGRyZW48VCBleHRlbmRzIHN0cmluZz4oVEFCTEVfQ09ERTogVCwgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UjxBcnJheTx7IFtLIGluIFRdOiBzdHJpbmcgfSAmIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9Pj4+IHtcclxuICAgICAgICAvLyDku47ooajnoIHkuK3mj5Dlj5borr7nva5JRFxyXG4gICAgICAgIGNvbnN0IHNldElkID0gVEFCTEVfQ09ERS5zcGxpdCgnXycpLnBvcCgpO1xyXG4gICAgICAgIC8vIOagueaNruiuvue9rklE5p6E5bu6QVBJ572R5Z2AXHJcbiAgICAgICAgY29uc3QgdXJsID0gYGFwaS9nbC1zZXJ2aWNlLWRhdGEtJHt0aGlzLmVudi5jb25maWcuUFJPSkVDVF9TRVJWSUNFX1NVRkZJWH0vdjEvZGF0YS9wZXJzb24vJHtzZXRJZCEudG9Mb2NhbGVMb3dlckNhc2UoKX0vc2VsZWN0TGlzdEtleUlkYDtcclxuICAgICAgICAvLyDmnoTlu7ror7fmsYLkvZPvvIzljIXlkKvlhbfkvZPnmoRJRFxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxSPih1cmwsIHsgW2Ake1RBQkxFX0NPREUudG9Mb2NhbGVVcHBlckNhc2UoKX1fQTAxX0lEYF06IGlkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6K+35rGC5pu05paw5Liq5Lq65pWw5o2uIHVwZGF0ZVxyXG4gICAgICpcclxuICAgICAqIOacrOWHveaVsOeUqOS6juWQkeacjeWKoeWZqOWPkemAgeS4gOS4quabtOaWsOS4quS6uuaVsOaNrueahOivt+axguWug+mmluWFiOagueaNruihqOagvOS7o+egge+8iFRBQkxFX0NPREXvvInmj5Dlj5borr7nva5JRO+8iHNldElk77yJ77yMXHJcbiAgICAgKiDnhLblkI7mnoTlu7rnm7jlupTnmoRBUEkgVVJM77yM5bm25YeG5aSH5pu05paw5Y+C5pWw6L+Z5Lqb5Y+C5pWw5YyF5ous5Y6f5aeLSUTvvIhpZO+8ieS7peWPiumcgOimgeabtOaWsOeahOaVsOaNru+8iGRhdGHvvInlr7nosaFcclxuICAgICAqIOacgOWQju+8jOmAmui/h0hUVFAgUE9TVOivt+axguWPkemAgei/meS6m+WPguaVsOWIsOaMh+WumueahEFQSei/m+ihjOaVsOaNruabtOaWsFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBUQUJMRV9DT0RFIOihqOagvOS7o+egge+8jOeUqOS6juehruWumuaVsOaNruihqOeahOexu+Wei1xyXG4gICAgICogQHBhcmFtIGlkIOS4quS6uuaVsOaNrueahOWUr+S4gOagh+ivhuespu+8jOeUqOS6juWumuS9jeWTquadoeiusOW9lemcgOimgeabtOaWsFxyXG4gICAgICogQHBhcmFtIGRhdGEg5YyF5ZCr5pu05paw5a2X5q6155qE5a+56LGh77yM6ZSu5Li65a2X5q615ZCN77yM5YC85Li65paw55qE5a2X5q615YC8XHJcbiAgICAgKiBAcmV0dXJucyDov5Tlm55IVFRQIFBPU1Tor7fmsYLnmoTlk43lupTvvIzlhbbkuK3ljIXlkKvmm7TmlrDmk43kvZznmoTnu5PmnpxcclxuICAgICAqL1xyXG4gICAgcmVxdWVzdFVwZGF0ZTxUIGV4dGVuZHMgc3RyaW5nPihcclxuICAgICAgICBUQUJMRV9DT0RFOiBULFxyXG4gICAgICAgIGlkOiBzdHJpbmcsXHJcbiAgICAgICAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgICk6IE9ic2VydmFibGU8Ujx7IFtLIGluIFRdOiBzdHJpbmcgfSAmIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9Pj4ge1xyXG4gICAgICAgIC8vIOS7jlRBQkxFX0NPREXkuK3mj5Dlj5borr7nva5JRFxyXG4gICAgICAgIGNvbnN0IHNldElkID0gVEFCTEVfQ09ERS5zcGxpdCgnXycpLnBvcCgpO1xyXG4gICAgICAgIC8vIOagueaNruiuvue9rklE5p6E5bu6QVBJIFVSTFxyXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvZ2wtc2VydmljZS1kYXRhLSR7dGhpcy5lbnYuY29uZmlnLlBST0pFQ1RfU0VSVklDRV9TVUZGSVh9L3YxL2RhdGEvcGVyc29uLyR7c2V0SWQhLnRvTG9jYWxlTG93ZXJDYXNlKCl9L3VwZGF0ZWA7XHJcbiAgICAgICAgLy8g5YeG5aSH5pu05paw5Y+C5pWw77yM5YyF5ousSUTlkozpnIDopoHmm7TmlrDnmoTmlbDmja5cclxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIFtgJHtUQUJMRV9DT0RFLnRvTG9jYWxlVXBwZXJDYXNlKCl9X0lEYF06IGlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8g5Y+R6YCBSFRUUCBQT1NU6K+35rGC5Yiw5oyH5a6aQVBJ6L+b6KGM5pWw5o2u5pu05pawXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axguaPkuWFpeS4quS6uuaVsOaNriBpbnNlcnRcclxuICAgICAqXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7lkJFBUEnlj5HpgIHor7fmsYLvvIzku6Xmj5LlhaXkuKrkurrmlbDmja7kuLvopoHkvZznlKjmmK/mnoTlu7pBUEnpnIDopoHnmoTor7fmsYLmoLzlvI/vvIzljIXmi6xVUkzlkozlj4LmlbBcclxuICAgICAqIOWug+eJueWIq+mAgueUqOS6jumCo+S6m+mcgOimgeWwhueJueWumuaVsOaNruaPkuWFpeWIsOS4juS4quS6uuebuOWFs+eahOaVsOaNruW6k+ihqOS4reeahOWcuuaZr1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBUQUJMRV9DT0RFIOihqOS7o+egge+8jOeUqOS6juehruWumuaVsOaNruaPkuWFpeeahOWFt+S9k+ihqFxyXG4gICAgICogQHBhcmFtIGlkIOS4quS6uuaVsOaNrueahOWUr+S4gOagh+ivhuespu+8jOeUqOS6juWFs+iBlOaVsOaNrlxyXG4gICAgICogQHBhcmFtIGRhdGEg5YyF5ZCr5YW35L2T5Liq5Lq65pWw5o2u55qE5a+56LGh77yM6ZSu5Li65pWw5o2u5a2X5q6177yM5YC85Li65a+55bqU55qE5pWw5o2u5YC8XHJcbiAgICAgKiBAcmV0dXJucyDov5Tlm55IVFRQ6K+35rGC55qE5ZON5bqU77yM5rOb5Z6L5Li6Uu+8jOS7peS+v+S6juazm+Wei+aWueazleeahOiwg+eUqOiAheWPr+S7peagueaNruS4iuS4i+aWh+ehruWumuWTjeW6lOexu+Wei1xyXG4gICAgICovXHJcbiAgICByZXF1ZXN0SW5zZXJ0PFQgZXh0ZW5kcyBzdHJpbmc+KFxyXG4gICAgICAgIFRBQkxFX0NPREU6IHN0cmluZyxcclxuICAgICAgICBpZDogc3RyaW5nLFxyXG4gICAgICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICApOiBPYnNlcnZhYmxlPFI8eyBbSyBpbiBUXTogc3RyaW5nIH0gJiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+IHtcclxuICAgICAgICAvLyDku45UQUJMRV9DT0RF5Lit5o+Q5Y+W6KGo55qE6K6+572uSUTvvIznlKjkuo7mnoTlu7pVUkxcclxuICAgICAgICBjb25zdCBzZXRJZCA9IFRBQkxFX0NPREUuc3BsaXQoJ18nKS5wb3AoKTtcclxuICAgICAgICAvLyDmnoTlu7pBUEnnmoRVUkzvvIzljIXmi6zorr7nva5JROW5tui9rOaNouS4uuWFtuWwj+WGmeW9ouW8j1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvZ2wtc2VydmljZS1kYXRhLSR7dGhpcy5lbnYuY29uZmlnLlBST0pFQ1RfU0VSVklDRV9TVUZGSVh9L3YxL2RhdGEvcGVyc29uLyR7c2V0SWQhLnRvTG9jYWxlTG93ZXJDYXNlKCl9L2luc2VydGA7XHJcbiAgICAgICAgLy8g5p6E5bu66K+35rGC5Y+C5pWw77yM56Gu5L+d5YyF5ZCr5Liq5Lq65pWw5o2u55qE5ZSv5LiA5qCH6K+G56ym77yM5bm25ZCI5bm25Lyg5YWl55qE5pWw5o2u5a+56LGhXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICAgICAgICBbYCR7VEFCTEVfQ09ERS50b0xvY2FsZVVwcGVyQ2FzZSgpfV9BMDFfSURgXTogaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGEsXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyDlj5HotbdQT1NU6K+35rGC77yM5bm25oyH5a6a5ZON5bqU55qE5rOb5Z6L57G75Z6L5Li6UlxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxSPih1cmwsIHBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlj5HotbfliKDpmaTkuKrkurrmlbDmja7nmoTor7fmsYIgZGVsZXRlXHJcbiAgICAgKlxyXG4gICAgICog5pys5Ye95pWw5Li76KaB55So5LqO5ZCR5ZCO56uvQVBJ5Y+R6YCB6K+35rGC77yM5Lul5Yig6Zmk5oyH5a6a5Liq5Lq655qE5pWw5o2u5a6D6aaW5YWI6Kej5p6Q6KGo5Luj56CBKFRBQkxFX0NPREUp5Lul6I635Y+W5pWw5o2u6ZuGSUTvvIxcclxuICAgICAqIOeEtuWQjuaehOmAoEFQSeeahFVSTOW5tuWPkemAgVBPU1Tor7fmsYLor7fmsYLkuK3ljIXlkKvkuobopoHliKDpmaTmlbDmja7nmoTooajku6PnoIHlkoznibnlrprorrDlvZXnmoRJRFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBUQUJMRV9DT0RFIC0g5pWw5o2u6KGo5Luj56CB77yM55So5LqO56Gu5a6a5pWw5o2u6ZuG5ZKM5p6E6YCg6K+35rGC5Y+C5pWwXHJcbiAgICAgKiBAcGFyYW0gaWQgLSDopoHliKDpmaTnmoTkuKrkurrmlbDmja7nmoTllK/kuIDmoIfor4bnrKZcclxuICAgICAqIEByZXR1cm5zIOi/lOWbnkhUVFDor7fmsYLnmoTlk43lupTvvIzms5vlnovkuLpS77yM6KGo56S65ZON5bqU55qE5YW35L2T57G75Z6LXHJcbiAgICAgKi9cclxuICAgIHJlcXVlc3REZWxldGUoVEFCTEVfQ09ERTogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSPGJvb2xlYW4+PiB7XHJcbiAgICAgICAgLy8g6YCa6L+H5YiG5Ymy6KGo5Luj56CB5bm26I635Y+W5pyA5ZCO55qE5YWD57Sg5p2l6Kej5p6Q5pWw5o2u6ZuGSURcclxuICAgICAgICBjb25zdCBzZXRJZCA9IFRBQkxFX0NPREUuc3BsaXQoJ18nKS5wb3AoKTtcclxuICAgICAgICAvLyDmnoTpgKBBUEnnmoRVUkzvvIzljIXmi6zmlbDmja7pm4ZJROWSjOaTjeS9nOexu+Wei1xyXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvZ2wtc2VydmljZS1kYXRhLSR7dGhpcy5lbnYuY29uZmlnLlBST0pFQ1RfU0VSVklDRV9TVUZGSVh9L3YxL2RhdGEvcGVyc29uLyR7c2V0SWQhLnRvTG9jYWxlTG93ZXJDYXNlKCl9L2RlbGV0ZWA7XHJcbiAgICAgICAgLy8g5Y+R6LW3UE9TVOivt+axgu+8jOS9v+eUqOino+aekOWHuueahOaVsOaNrumbhklE5ZKM5o+Q5L6b55qE6K6w5b2VSUTkvZzkuLror7fmsYLkvZNcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Uj4odXJsLCB7IFtgJHtUQUJMRV9DT0RFLnRvTG9jYWxlVXBwZXJDYXNlKCl9X0lEYF06IGlkIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -10,6 +10,7 @@ export * from './dictionary.service';
10
10
  export * from './scheme.service';
11
11
  export * from './field.scheme.service';
12
12
  export * from './destroy.service';
13
- export * from './person.dataset.service';
14
13
  export * from './annex.catalog.service';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9zZXJ2aWNlcy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHAuY29uZmlnJztcclxuZXhwb3J0ICogZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2FjY291bnQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2FjaGUuaHR0cC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9tZW51LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Rvd24uZmlsZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWxlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL29yZy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kaWN0aW9uYXJ5LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NjaGVtZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9maWVsZC5zY2hlbWUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGVzdHJveS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9wZXJzb24uZGF0YXNldC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9hbm5leC5jYXRhbG9nLnNlcnZpY2UnO1xyXG4iXX0=
14
+ export * from './person.dataset.service';
15
+ export * from './unit.dataset.service';
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS9zZXJ2aWNlcy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FwcC5jb25maWcnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F1dGguc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWNjb3VudC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jYWNoZS5odHRwLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL21lbnUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZG93bi5maWxlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vb3JnLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1lLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpZWxkLnNjaGVtZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kZXN0cm95LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2FubmV4LmNhdGFsb2cuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGVyc29uLmRhdGFzZXQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdW5pdC5kYXRhc2V0LnNlcnZpY2UnO1xyXG4iXX0=
@@ -0,0 +1,117 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { RK_ENVIRONMENT } from './app.config';
4
+ import * as i0 from "@angular/core";
5
+ export class RkUnitDatasetService {
6
+ constructor(injector) {
7
+ this.injector = injector;
8
+ this.http = this.injector.get(HttpClient);
9
+ this.env = this.injector.get(RK_ENVIRONMENT);
10
+ }
11
+ /**
12
+ * 请求单位数据项 selectOne
13
+ * 本函数旨在根据表格代码和标识符获取特定单位的数据项它首先解析表格代码以确定数据集标识符,
14
+ * 然后构造URL以发送POST请求获取数据。
15
+ *
16
+ * @param TABLE_CODE 表格代码,用于确定数据集标识符。
17
+ * @param id 数据项的唯一标识符,用于选择特定的数据项。
18
+ * @returns 返回一个Observable对象,携带请求结果结果包含一个键值对,其中键由表格代码决定,值为字符串,
19
+ * 以及一个允许任意数量额外键值对的对象。
20
+ */
21
+ requestData(TABLE_CODE, id) {
22
+ // 通过分割表格代码并获取最后一个元素来解析数据集标识符
23
+ const setId = TABLE_CODE.split('_').pop();
24
+ // 构造请求URL,包含项目服务后缀和数据集标识符
25
+ const url = `api/gl-service-data-${this.env.config.PROJECT_SERVICE_SUFFIX}/v1/data/unit/${setId.toLocaleLowerCase()}/selectOne`;
26
+ // 发送POST请求,请求体包含表格代码对应的ID
27
+ return this.http.post(url, { [`${TABLE_CODE.toLocaleUpperCase()}_ID`]: id });
28
+ }
29
+ /**
30
+ * 请求个单位子集列表信息 selectListKeyId
31
+ *
32
+ * 本函数用于向服务器发送请求,以获取特定单位的子集列表信息每个单位子集
33
+ * 由一个键值对表示,其中键是单位的唯一标识,值是单位的描述信息或其它
34
+ * 相关数据
35
+ *
36
+ * @param TABLE_CODE 单位的唯一标识代码,用于指定请求的数据表
37
+ * @param id 单位的ID,用于定位特定的单位记录
38
+ * @returns 返回一个Observable对象,该对象发出包含单位子集列表的响应
39
+ */
40
+ requestChildren(TABLE_CODE, id) {
41
+ // 从TABLE_CODE中提取实际的单位标识,用于构建请求URL
42
+ const setId = TABLE_CODE.split('_').pop();
43
+ // 根据单位标识构建请求的URL
44
+ const url = `api/gl-service-data-${this.env.config.PROJECT_SERVICE_SUFFIX}/v1/data/unit/${setId.toLocaleLowerCase()}/selectListKeyId`;
45
+ // 发起POST请求,请求体包含单位的ID信息,使用指定的TABLE_CODE作为键
46
+ return this.http.post(url, { [`${TABLE_CODE.toLocaleUpperCase()}_B01_ID`]: id });
47
+ }
48
+ /**
49
+ * 请求更新单位数据 update
50
+ *
51
+ * 本函数通过POST请求向服务器发送单位数据更新请求,用于更新特定单位在特定表中的数据记录
52
+ *
53
+ * @param TABLE_CODE 表代码,用于标识需要更新数据的表
54
+ * @param id 数据记录的唯一标识符,用于定位哪一条数据记录需要更新
55
+ * @param data 包含需要更新的数据的键值对对象
56
+ * @returns 返回一个Observable对象,该对象在请求成功时包含更新结果
57
+ */
58
+ requestUpdate(TABLE_CODE, id, data) {
59
+ // 从TABLE_CODE中提取单位标识,用于确定更新请求的URL
60
+ const setId = TABLE_CODE.split('_').pop();
61
+ // 构造请求的URL,其中包括项目服务后缀、版本号和单位标识
62
+ const url = `api/gl-service-data-${this.env.config.PROJECT_SERVICE_SUFFIX}/v1/data/unit/${setId.toLocaleLowerCase()}/update`;
63
+ // 构造请求参数,包括数据记录ID和具体的更新数据
64
+ const params = Object.assign({ [`${TABLE_CODE.toLocaleUpperCase()}${setId !== 'B01' ? '_B01' : ''}_ID`]: id }, data);
65
+ // 发送POST请求,请求更新单位数据,并返回请求结果的Observable对象
66
+ return this.http.post(url, params);
67
+ }
68
+ /**
69
+ * 请求插入单位数据 insert
70
+ *
71
+ * 本函数用于向指定的API端点提交请求,以插入单位数据单位数据可以是各种类型的信息,
72
+ * 只要它们符合一定的表结构本函数根据提供的表码(TABLE_CODE)、单位ID(id)和数据(data),
73
+ * 构造请求并发送HTTP POST请求
74
+ *
75
+ * @param TABLE_CODE 表码,用于确定数据应插入的特定表
76
+ * @param id 单位ID,用于唯一标识单位
77
+ * @param data 要插入的数据,形式为键值对,其中键是字段名,值是字段值
78
+ * @returns 返回一个Observable,它发出服务器响应,包含插入操作的结果
79
+ */
80
+ requestInsert(TABLE_CODE, id, data) {
81
+ // 从表码中提取实际的表标识符
82
+ const setId = TABLE_CODE.split('_').pop();
83
+ // 构造请求URL,包含项目服务后缀和表标识符
84
+ const url = `api/gl-service-data-${this.env.config.PROJECT_SERVICE_SUFFIX}/v1/data/unit/${setId.toLocaleLowerCase()}/insert`;
85
+ // 构造请求参数,包括单位ID和具体的数据项
86
+ const params = Object.assign({ [`${TABLE_CODE.toLocaleUpperCase()}_B01_ID`]: id }, data);
87
+ // 发送POST请求并返回响应的Observable
88
+ return this.http.post(url, params);
89
+ }
90
+ /**
91
+ * 请求删除单位数据 delete
92
+ *
93
+ * 本函数通过发送HTTP POST请求到指定的API端点来请求删除特定单位的数据
94
+ * 它首先根据TABLE_CODE解析出单位ID,然后构造请求URL和请求体来执行删除操作
95
+ *
96
+ * @param TABLE_CODE - 单位代码,用于确定请求删除的单位类型
97
+ * @param id - 单位的唯一标识符,用于确定具体要删除的单位数据
98
+ * @returns 返回一个Observable,它发出一个R类型的结果,该结果包含一个布尔值,表示删除操作的成功与否
99
+ */
100
+ requestDelete(TABLE_CODE, id) {
101
+ // 通过TABLE_CODE解析出单位ID,用于构建请求URL
102
+ const setId = TABLE_CODE.split('_').pop();
103
+ // 构建请求URL,其中包括环境配置中指定的项目服务后缀
104
+ const url = `api/gl-service-data-${this.env.config.PROJECT_SERVICE_SUFFIX}/v1/data/unit/${setId.toLocaleLowerCase()}/delete`;
105
+ // 执行HTTP POST请求,请求体中包含了要删除的单位的唯一标识符
106
+ return this.http.post(url, { [`${TABLE_CODE.toLocaleUpperCase()}_ID`]: id });
107
+ }
108
+ }
109
+ RkUnitDatasetService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkUnitDatasetService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
110
+ RkUnitDatasetService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkUnitDatasetService, providedIn: 'root' });
111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkUnitDatasetService, decorators: [{
112
+ type: Injectable,
113
+ args: [{
114
+ providedIn: 'root',
115
+ }]
116
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC5kYXRhc2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJyYXJ5L2NvcmUvc2VydmljZXMvdW5pdC5kYXRhc2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFLOUMsTUFBTSxPQUFPLG9CQUFvQjtJQUk3QixZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ3BDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBTSxjQUFjLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsV0FBVyxDQUFtQixVQUFhLEVBQUUsRUFBVTtRQUNuRCw2QkFBNkI7UUFDN0IsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQywwQkFBMEI7UUFDMUIsTUFBTSxHQUFHLEdBQUcsdUJBQXVCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLHNCQUFzQixpQkFBaUIsS0FBTSxDQUFDLGlCQUFpQixFQUFFLFlBQVksQ0FBQztRQUNqSSwwQkFBMEI7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJ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b0IsY0FGakIsTUFBTTs0RkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgRW52LCBSIH0gZnJvbSAnQHJlc2tpbi9jb3JlL2VudGl0eSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgUktfRU5WSVJPTk1FTlQgfSBmcm9tICcuL2FwcC5jb25maWcnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmtVbml0RGF0YXNldFNlcnZpY2Uge1xyXG4gICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQ7XHJcbiAgICBwcm90ZWN0ZWQgZW52OiBFbnY7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IHRoaXMuaW5qZWN0b3IuZ2V0KEh0dHBDbGllbnQpO1xyXG4gICAgICAgIHRoaXMuZW52ID0gdGhpcy5pbmplY3Rvci5nZXQ8RW52PihSS19FTlZJUk9OTUVOVCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDor7fmsYLljZXkvY3mlbDmja7pobkgc2VsZWN0T25lXHJcbiAgICAgKiDmnKzlh73mlbDml6jlnKjmoLnmja7ooajmoLzku6PnoIHlkozmoIfor4bnrKbojrflj5bnibnlrprljZXkvY3nmoTmlbDmja7pobnlroPpppblhYjop6PmnpDooajmoLzku6PnoIHku6Xnoa7lrprmlbDmja7pm4bmoIfor4bnrKbvvIxcclxuICAgICAqIOeEtuWQjuaehOmAoFVSTOS7peWPkemAgVBPU1Tor7fmsYLojrflj5bmlbDmja7jgIJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gVEFCTEVfQ09ERSDooajmoLzku6PnoIHvvIznlKjkuo7noa7lrprmlbDmja7pm4bmoIfor4bnrKbjgIJcclxuICAgICAqIEBwYXJhbSBpZCDmlbDmja7pobnnmoTllK/kuIDmoIfor4bnrKbvvIznlKjkuo7pgInmi6nnibnlrprnmoTmlbDmja7pobnjgIJcclxuICAgICAqIEByZXR1cm5zIOi/lOWbnuS4gOS4qk9ic2VydmFibGXlr7nosaHvvIzmkLrluKbor7fmsYLnu5Pmnpznu5PmnpzljIXlkKvkuIDkuKrplK7lgLzlr7nvvIzlhbbkuK3plK7nlLHooajmoLzku6PnoIHlhrPlrprvvIzlgLzkuLrlrZfnrKbkuLLvvIxcclxuICAgICAqIOS7peWPiuS4gOS4quWFgeiuuOS7u+aEj+aVsOmHj+mineWklumUruWAvOWvueeahOWvueixoeOAglxyXG4gICAgICovXHJcbiAgICByZXF1ZXN0RGF0YTxUIGV4dGVuZHMgc3RyaW5nPihUQUJMRV9DT0RFOiBULCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSPHsgW0sgaW4gVF06IHN0cmluZyB9ICYgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0+PiB7XHJcbiAgICAgICAgLy8g6YCa6L+H5YiG5Ymy6KGo5qC85Luj56CB5bm26I635Y+W5pyA5ZCO5LiA5Liq5YWD57Sg5p2l6Kej5p6Q5pWw5o2u6ZuG5qCH6K+G56ymXHJcbiAgICAgICAgY29uc3Qgc2V0SWQgPSBUQUJMRV9DT0RFLnNwbGl0KCdfJykucG9wKCk7XHJcbiAgICAgICAgLy8g5p6E6YCg6K+35rGCVVJM77yM5YyF5ZCr6aG555uu5pyN5Yqh5ZCO57yA5ZKM5pWw5o2u6ZuG5qCH6K+G56ymXHJcbiAgICAgICAgY29uc3QgdXJsID0gYGFwaS9nbC1zZXJ2aWNlLWRhdGEtJHt0aGlzLmVudi5jb25maWcuUFJPSkVDVF9TRVJWSUNFX1NVRkZJWH0vdjEvZGF0YS91bml0LyR7c2V0SWQhLnRvTG9jYWxlTG93ZXJDYXNlKCl9L3NlbGVjdE9uZWA7XHJcbiAgICAgICAgLy8g5Y+R6YCBUE9TVOivt+axgu+8jOivt+axguS9k+WMheWQq+ihqOagvOS7o+eggeWvueW6lOeahElEXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgeyBbYCR7VEFCTEVfQ09ERS50b0xvY2FsZVVwcGVyQ2FzZSgpfV9JRGBdOiBpZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axguS4quWNleS9jeWtkOmbhuWIl+ihqOS/oeaBryBzZWxlY3RMaXN0S2V5SWRcclxuICAgICAqXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7lkJHmnI3liqHlmajlj5HpgIHor7fmsYLvvIzku6Xojrflj5bnibnlrprljZXkvY3nmoTlrZDpm4bliJfooajkv6Hmga/mr4/kuKrljZXkvY3lrZDpm4ZcclxuICAgICAqIOeUseS4gOS4qumUruWAvOWvueihqOekuu+8jOWFtuS4remUruaYr+WNleS9jeeahOWUr+S4gOagh+ivhu+8jOWAvOaYr+WNleS9jeeahOaPj+i/sOS/oeaBr+aIluWFtuWug1xyXG4gICAgICog55u45YWz5pWw5o2uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIFRBQkxFX0NPREUg5Y2V5L2N55qE5ZSv5LiA5qCH6K+G5Luj56CB77yM55So5LqO5oyH5a6a6K+35rGC55qE5pWw5o2u6KGoXHJcbiAgICAgKiBAcGFyYW0gaWQg5Y2V5L2N55qESUTvvIznlKjkuo7lrprkvY3nibnlrprnmoTljZXkvY3orrDlvZVcclxuICAgICAqIEByZXR1cm5zIOi/lOWbnuS4gOS4qk9ic2VydmFibGXlr7nosaHvvIzor6Xlr7nosaHlj5Hlh7rljIXlkKvljZXkvY3lrZDpm4bliJfooajnmoTlk43lupRcclxuICAgICAqL1xyXG4gICAgcmVxdWVzdENoaWxkcmVuPFQgZXh0ZW5kcyBzdHJpbmc+KFRBQkxFX0NPREU6IFQsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFI8QXJyYXk8eyBbSyBpbiBUXTogc3RyaW5nIH0gJiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+PiB7XHJcbiAgICAgICAgLy8g5LuOVEFCTEVfQ09EReS4reaPkOWPluWunumZheeahOWNleS9jeagh+ivhu+8jOeUqOS6juaehOW7uuivt+axglVSTFxyXG4gICAgICAgIGNvbnN0IHNldElkID0gVEFCTEVfQ09ERS5zcGxpdCgnXycpLnBvcCgpO1xyXG4gICAgICAgIC8vIOagueaNruWNleS9jeagh+ivhuaehOW7uuivt+axgueahFVSTFxyXG4gICAgICAgIGNvbnN0IHVybCA9IGBhcGkvZ2wtc2VydmljZS1kYXRhLSR7dGhpcy5lbnYuY29uZmlnLlBST0pFQ1RfU0VSVklDRV9TVUZGSVh9L3YxL2RhdGEvdW5pdC8ke3NldElkIS50b0xvY2FsZUxvd2VyQ2FzZSgpfS9zZWxlY3RMaXN0S2V5SWRgO1xyXG4gICAgICAgIC8vIOWPkei1t1BPU1Tor7fmsYLvvIzor7fmsYLkvZPljIXlkKvljZXkvY3nmoRJROS/oeaBr++8jOS9v+eUqOaMh+WumueahFRBQkxFX0NPREXkvZzkuLrplK5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Uj4odXJsLCB7IFtgJHtUQUJMRV9DT0RFLnRvTG9jYWxlVXBwZXJDYXNlKCl9X0IwMV9JRGBdOiBpZCB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axguabtOaWsOWNleS9jeaVsOaNriB1cGRhdGVcclxuICAgICAqXHJcbiAgICAgKiDmnKzlh73mlbDpgJrov4dQT1NU6K+35rGC5ZCR5pyN5Yqh5Zmo5Y+R6YCB5Y2V5L2N5pWw5o2u5pu05paw6K+35rGC77yM55So5LqO5pu05paw54m55a6a5Y2V5L2N5Zyo54m55a6a6KGo5Lit55qE5pWw5o2u6K6w5b2VXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIFRBQkxFX0NPREUg6KGo5Luj56CB77yM55So5LqO5qCH6K+G6ZyA6KaB5pu05paw5pWw5o2u55qE6KGoXHJcbiAgICAgKiBAcGFyYW0gaWQg5pWw5o2u6K6w5b2V55qE5ZSv5LiA5qCH6K+G56ym77yM55So5LqO5a6a5L2N5ZOq5LiA5p2h5pWw5o2u6K6w5b2V6ZyA6KaB5pu05pawXHJcbiAgICAgKiBAcGFyYW0gZGF0YSDljIXlkKvpnIDopoHmm7TmlrDnmoTmlbDmja7nmoTplK7lgLzlr7nlr7nosaFcclxuICAgICAqIEByZXR1cm5zIOi/lOWbnuS4gOS4qk9ic2VydmFibGXlr7nosaHvvIzor6Xlr7nosaHlnKjor7fmsYLmiJDlip/ml7bljIXlkKvmm7TmlrDnu5PmnpxcclxuICAgICAqL1xyXG4gICAgcmVxdWVzdFVwZGF0ZTxUIGV4dGVuZHMgc3RyaW5nPihcclxuICAgICAgICBUQUJMRV9DT0RFOiBULFxyXG4gICAgICAgIGlkOiBzdHJpbmcsXHJcbiAgICAgICAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgICk6IE9ic2VydmFibGU8Ujx7IFtLIGluIFRdOiBzdHJpbmcgfSAmIHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9Pj4ge1xyXG4gICAgICAgIC8vIOS7jlRBQkxFX0NPREXkuK3mj5Dlj5bljZXkvY3moIfor4bvvIznlKjkuo7noa7lrprmm7TmlrDor7fmsYLnmoRVUkxcclxuICAgICAgICBjb25zdCBzZXRJZCA9IFRBQkxFX0NPREUuc3BsaXQoJ18nKS5wb3AoKTtcclxuICAgICAgICAvLyDmnoTpgKDor7fmsYLnmoRVUkzvvIzlhbbkuK3ljIXmi6zpobnnm67mnI3liqHlkI7nvIDjgIHniYjmnKzlj7flkozljZXkvY3moIfor4ZcclxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL2dsLXNlcnZpY2UtZGF0YS0ke3RoaXMuZW52LmNvbmZpZy5QUk9KRUNUX1NFUlZJQ0VfU1VGRklYfS92MS9kYXRhL3VuaXQvJHtzZXRJZCEudG9Mb2NhbGVMb3dlckNhc2UoKX0vdXBkYXRlYDtcclxuICAgICAgICAvLyDmnoTpgKDor7fmsYLlj4LmlbDvvIzljIXmi6zmlbDmja7orrDlvZVJROWSjOWFt+S9k+eahOabtOaWsOaVsOaNrlxyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgW2Ake1RBQkxFX0NPREUudG9Mb2NhbGVVcHBlckNhc2UoKX0ke3NldElkICE9PSAnQjAxJyA/ICdfQjAxJyA6ICcnfV9JRGBdOiBpZCxcclxuICAgICAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIOWPkemAgVBPU1Tor7fmsYLvvIzor7fmsYLmm7TmlrDljZXkvY3mlbDmja7vvIzlubbov5Tlm57or7fmsYLnu5PmnpznmoRPYnNlcnZhYmxl5a+56LGhXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFI+KHVybCwgcGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axguaPkuWFpeWNleS9jeaVsOaNriBpbnNlcnRcclxuICAgICAqXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7lkJHmjIflrprnmoRBUEnnq6/ngrnmj5DkuqTor7fmsYLvvIzku6Xmj5LlhaXljZXkvY3mlbDmja7ljZXkvY3mlbDmja7lj6/ku6XmmK/lkITnp43nsbvlnovnmoTkv6Hmga/vvIxcclxuICAgICAqIOWPquimgeWug+S7rOespuWQiOS4gOWumueahOihqOe7k+aehOacrOWHveaVsOagueaNruaPkOS+m+eahOihqOegge+8iFRBQkxFX0NPREXvvInjgIHljZXkvY1JRO+8iGlk77yJ5ZKM5pWw5o2u77yIZGF0Ye+8ie+8jFxyXG4gICAgICog5p6E6YCg6K+35rGC5bm25Y+R6YCBSFRUUCBQT1NU6K+35rGCXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIFRBQkxFX0NPREUg6KGo56CB77yM55So5LqO56Gu5a6a5pWw5o2u5bqU5o+S5YWl55qE54m55a6a6KGoXHJcbiAgICAgKiBAcGFyYW0gaWQg5Y2V5L2NSUTvvIznlKjkuo7llK/kuIDmoIfor4bljZXkvY1cclxuICAgICAqIEBwYXJhbSBkYXRhIOimgeaPkuWFpeeahOaVsOaNru+8jOW9ouW8j+S4uumUruWAvOWvue+8jOWFtuS4remUruaYr+Wtl+auteWQje+8jOWAvOaYr+Wtl+auteWAvFxyXG4gICAgICogQHJldHVybnMg6L+U5Zue5LiA5LiqT2JzZXJ2YWJsZe+8jOWug+WPkeWHuuacjeWKoeWZqOWTjeW6lO+8jOWMheWQq+aPkuWFpeaTjeS9nOeahOe7k+aenFxyXG4gICAgICovXHJcbiAgICByZXF1ZXN0SW5zZXJ0PFQgZXh0ZW5kcyBzdHJpbmc+KFxyXG4gICAgICAgIFRBQkxFX0NPREU6IHN0cmluZyxcclxuICAgICAgICBpZDogc3RyaW5nLFxyXG4gICAgICAgIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXHJcbiAgICApOiBPYnNlcnZhYmxlPFI8eyBbSyBpbiBUXTogc3RyaW5nIH0gJiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+IHtcclxuICAgICAgICAvLyDku47ooajnoIHkuK3mj5Dlj5blrp7pmYXnmoTooajmoIfor4bnrKZcclxuICAgICAgICBjb25zdCBzZXRJZCA9IFRBQkxFX0NPREUuc3BsaXQoJ18nKS5wb3AoKTtcclxuICAgICAgICAvLyDmnoTpgKDor7fmsYJVUkzvvIzljIXlkKvpobnnm67mnI3liqHlkI7nvIDlkozooajmoIfor4bnrKZcclxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL2dsLXNlcnZpY2UtZGF0YS0ke3RoaXMuZW52LmNvbmZpZy5QUk9KRUNUX1NFUlZJQ0VfU1VGRklYfS92MS9kYXRhL3VuaXQvJHtzZXRJZCEudG9Mb2NhbGVMb3dlckNhc2UoKX0vaW5zZXJ0YDtcclxuICAgICAgICAvLyDmnoTpgKDor7fmsYLlj4LmlbDvvIzljIXmi6zljZXkvY1JROWSjOWFt+S9k+eahOaVsOaNrumhuVxyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgW2Ake1RBQkxFX0NPREUudG9Mb2NhbGVVcHBlckNhc2UoKX1fQjAxX0lEYF06IGlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8g5Y+R6YCBUE9TVOivt+axguW5tui/lOWbnuWTjeW6lOeahE9ic2VydmFibGVcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Uj4odXJsLCBwYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6K+35rGC5Yig6Zmk5Y2V5L2N5pWw5o2uIGRlbGV0ZVxyXG4gICAgICpcclxuICAgICAqIOacrOWHveaVsOmAmui/h+WPkemAgUhUVFAgUE9TVOivt+axguWIsOaMh+WumueahEFQSeerr+eCueadpeivt+axguWIoOmZpOeJueWumuWNleS9jeeahOaVsOaNrlxyXG4gICAgICog5a6D6aaW5YWI5qC55o2uVEFCTEVfQ09EReino+aekOWHuuWNleS9jUlE77yM54S25ZCO5p6E6YCg6K+35rGCVVJM5ZKM6K+35rGC5L2T5p2l5omn6KGM5Yig6Zmk5pON5L2cXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIFRBQkxFX0NPREUgLSDljZXkvY3ku6PnoIHvvIznlKjkuo7noa7lrpror7fmsYLliKDpmaTnmoTljZXkvY3nsbvlnotcclxuICAgICAqIEBwYXJhbSBpZCAtIOWNleS9jeeahOWUr+S4gOagh+ivhuespu+8jOeUqOS6juehruWumuWFt+S9k+imgeWIoOmZpOeahOWNleS9jeaVsOaNrlxyXG4gICAgICogQHJldHVybnMg6L+U5Zue5LiA5LiqT2JzZXJ2YWJsZe+8jOWug+WPkeWHuuS4gOS4qlLnsbvlnovnmoTnu5PmnpzvvIzor6Xnu5PmnpzljIXlkKvkuIDkuKrluIPlsJTlgLzvvIzooajnpLrliKDpmaTmk43kvZznmoTmiJDlip/kuI7lkKZcclxuICAgICAqL1xyXG4gICAgcmVxdWVzdERlbGV0ZShUQUJMRV9DT0RFOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFI8Ym9vbGVhbj4+IHtcclxuICAgICAgICAvLyDpgJrov4dUQUJMRV9DT0RF6Kej5p6Q5Ye65Y2V5L2NSUTvvIznlKjkuo7mnoTlu7ror7fmsYJVUkxcclxuICAgICAgICBjb25zdCBzZXRJZCA9IFRBQkxFX0NPREUuc3BsaXQoJ18nKS5wb3AoKTtcclxuICAgICAgICAvLyDmnoTlu7ror7fmsYJVUkzvvIzlhbbkuK3ljIXmi6znjq/looPphY3nva7kuK3mjIflrprnmoTpobnnm67mnI3liqHlkI7nvIBcclxuICAgICAgICBjb25zdCB1cmwgPSBgYXBpL2dsLXNlcnZpY2UtZGF0YS0ke3RoaXMuZW52LmNvbmZpZy5QUk9KRUNUX1NFUlZJQ0VfU1VGRklYfS92MS9kYXRhL3VuaXQvJHtzZXRJZCEudG9Mb2NhbGVMb3dlckNhc2UoKX0vZGVsZXRlYDtcclxuICAgICAgICAvLyDmiafooYxIVFRQIFBPU1Tor7fmsYLvvIzor7fmsYLkvZPkuK3ljIXlkKvkuobopoHliKDpmaTnmoTljZXkvY3nmoTllK/kuIDmoIfor4bnrKZcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8Uj4odXJsLCB7IFtgJHtUQUJMRV9DT0RFLnRvTG9jYWxlVXBwZXJDYXNlKCl9X0lEYF06IGlkIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 表单验证
3
+ * @param form
4
+ */
5
+ export function formVerify(form) {
6
+ const errList = [];
7
+ for (const key in form.controls) {
8
+ form.controls[key].markAsDirty();
9
+ form.controls[key].updateValueAndValidity();
10
+ if (form.controls[key].status !== 'VALID' && form.controls[key].status !== 'DISABLED') {
11
+ errList.push(key);
12
+ }
13
+ }
14
+ // 表单验证状态
15
+ if (form.status !== 'VALID') {
16
+ console.error(`Form validation failed fields:${errList.join(',')}`);
17
+ return false;
18
+ }
19
+ return form.getRawValue();
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS91dGlscy9mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQTBCLElBQWU7SUFDL0QsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUU7WUFDbkYsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyQjtLQUNKO0lBQ0QsU0FBUztJQUNULElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUU7UUFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDcEUsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUM5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIOihqOWNlemqjOivgVxyXG4gKiBAcGFyYW0gZm9ybVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1WZXJpZnk8VCA9IFJlY29yZDxzdHJpbmcsIGFueT4+KGZvcm06IEZvcm1Hcm91cCk6IGZhbHNlIHwgVCB7XHJcbiAgICBjb25zdCBlcnJMaXN0ID0gW107XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgZm9ybS5jb250cm9sc1trZXldLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgZm9ybS5jb250cm9sc1trZXldLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICBpZiAoZm9ybS5jb250cm9sc1trZXldLnN0YXR1cyAhPT0gJ1ZBTElEJyAmJiBmb3JtLmNvbnRyb2xzW2tleV0uc3RhdHVzICE9PSAnRElTQUJMRUQnKSB7XHJcbiAgICAgICAgICAgIGVyckxpc3QucHVzaChrZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIOihqOWNlemqjOivgeeKtuaAgVxyXG4gICAgaWYgKGZvcm0uc3RhdHVzICE9PSAnVkFMSUQnKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgRm9ybSB2YWxpZGF0aW9uIGZhaWxlZCBmaWVsZHPvvJoke2Vyckxpc3Quam9pbignLCcpfWApO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtLmdldFJhd1ZhbHVlKCk7XHJcbn1cclxuIl19
@@ -1,4 +1,5 @@
1
1
  export * from './store';
2
2
  export * from './array';
3
3
  export * from './dom';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS91dGlscy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zdG9yZSc7XG5leHBvcnQgKiBmcm9tICcuL2FycmF5JztcbmV4cG9ydCAqIGZyb20gJy4vZG9tJztcbiJdfQ==
4
+ export * from './form';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnJhcnkvY29yZS91dGlscy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsT0FBTyxDQUFDO0FBQ3RCLGNBQWMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zdG9yZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXJyYXknO1xyXG5leHBvcnQgKiBmcm9tICcuL2RvbSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZm9ybSc7XHJcbiJdfQ==
@@ -24,7 +24,7 @@ class RkAuthGuard {
24
24
  if (authRoutes.has(cleanUrl)) {
25
25
  return true;
26
26
  }
27
- const { extendAuth, extendRoutes } = childRoute.data;
27
+ const { extendAuth, extendRoutes } = this.routeData(childRoute);
28
28
  if (extendAuth && extendRoutes) {
29
29
  const hasWildcardMatch = extendRoutes.some((route) => route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl);
30
30
  if (hasWildcardMatch) {
@@ -42,6 +42,12 @@ class RkAuthGuard {
42
42
  console.error(`无权限访问路由地址: ${url}`);
43
43
  this.router.navigate(['/errors/401']).then();
44
44
  }
45
+ routeData(childRoute) {
46
+ if (childRoute.data && childRoute.data['extendAuth']) {
47
+ return childRoute.data;
48
+ }
49
+ return childRoute.parent ? this.routeData(childRoute.parent) : {};
50
+ }
45
51
  }
46
52
  RkAuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, deps: [{ token: i1.RkMenuService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable });
47
53
  RkAuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RkAuthGuard, providedIn: 'root' });
@@ -1 +1 @@
1
- {"version":3,"file":"reskin-core-guards.js","sources":["../../../library/core/guards/auth.guard.ts","../../../library/core/guards/reskin-core-guards.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, catchError } from 'rxjs/operators';\r\nimport { RkMenuService } from '@reskin/core/services';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkAuthGuard implements CanActivateChild {\r\n constructor(\r\n private menu: RkMenuService,\r\n private router: Router,\r\n ) {}\r\n\r\n canActivateChild(\r\n childRoute: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return this.menu.requestData().pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n map((menus) => this.checkAccess(menus, childRoute, state.url)),\r\n catchError(() => {\r\n this.handleNoAccess(state.url);\r\n return [false];\r\n }),\r\n );\r\n }\r\n\r\n private checkAccess(menus: any[], childRoute: ActivatedRouteSnapshot, url: string): boolean | UrlTree {\r\n if (!menus.length) {\r\n throw new Error(`此账号无任何功能权限.`);\r\n }\r\n\r\n const cleanUrl = url.replace(/\\?.*/, '');\r\n const authRoutes = new Set<string>(menus.map((m) => m.SYSTEM_RESOURCE_URL));\r\n\r\n if (authRoutes.has(cleanUrl)) {\r\n return true;\r\n }\r\n\r\n const { extendAuth, extendRoutes } = childRoute.data;\r\n if (extendAuth && extendRoutes) {\r\n const hasWildcardMatch = extendRoutes.some((route: string) =>\r\n route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl,\r\n );\r\n if (hasWildcardMatch) {\r\n return true;\r\n }\r\n }\r\n\r\n this.handleNoAccess(url);\r\n return false;\r\n }\r\n\r\n private match(pattern: string, path: string): boolean {\r\n const regexPattern = pattern.replace(/\\*\\*/g, '.*');\r\n return new RegExp(`^${regexPattern}$`).test(path);\r\n }\r\n\r\n private handleNoAccess(url: string): void {\r\n console.error(`无权限访问路由地址: ${url}`);\r\n this.router.navigate(['/errors/401']).then();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reskin-core-guards.js","sources":["../../../library/core/guards/auth.guard.ts","../../../library/core/guards/reskin-core-guards.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivateChild, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { filter, map, catchError } from 'rxjs/operators';\r\nimport { RkMenuService } from '@reskin/core/services';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RkAuthGuard implements CanActivateChild {\r\n constructor(\r\n private menu: RkMenuService,\r\n private router: Router,\r\n ) {}\r\n\r\n canActivateChild(\r\n childRoute: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return this.menu.requestData().pipe(\r\n filter((json) => json.code === 0),\r\n map((json) => json.data),\r\n map((menus) => this.checkAccess(menus, childRoute, state.url)),\r\n catchError(() => {\r\n this.handleNoAccess(state.url);\r\n return [false];\r\n }),\r\n );\r\n }\r\n\r\n private checkAccess(menus: any[], childRoute: ActivatedRouteSnapshot, url: string): boolean | UrlTree {\r\n if (!menus.length) {\r\n throw new Error(`此账号无任何功能权限.`);\r\n }\r\n\r\n const cleanUrl = url.replace(/\\?.*/, '');\r\n const authRoutes = new Set<string>(menus.map((m) => m.SYSTEM_RESOURCE_URL));\r\n\r\n if (authRoutes.has(cleanUrl)) {\r\n return true;\r\n }\r\n\r\n const { extendAuth, extendRoutes } = this.routeData(childRoute);\r\n if (extendAuth && extendRoutes) {\r\n const hasWildcardMatch = extendRoutes.some((route: string) =>\r\n route.includes('**') ? this.match(route, cleanUrl) : route === cleanUrl,\r\n );\r\n if (hasWildcardMatch) {\r\n return true;\r\n }\r\n }\r\n\r\n this.handleNoAccess(url);\r\n return false;\r\n }\r\n\r\n private match(pattern: string, path: string): boolean {\r\n const regexPattern = pattern.replace(/\\*\\*/g, '.*');\r\n return new RegExp(`^${regexPattern}$`).test(path);\r\n }\r\n\r\n private handleNoAccess(url: string): void {\r\n console.error(`无权限访问路由地址: ${url}`);\r\n this.router.navigate(['/errors/401']).then();\r\n }\r\n\r\n private routeData(childRoute: ActivatedRouteSnapshot): { extendAuth: boolean; extendRoutes: string[] } {\r\n if (childRoute.data && childRoute.data['extendAuth']) {\r\n return childRoute.data as { extendAuth: boolean; extendRoutes: string[] };\r\n }\r\n return childRoute.parent ? this.routeData(childRoute.parent) : <{ extendAuth: boolean; extendRoutes: string[] }>{};\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}