bways-report 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/services/index.mjs +2 -1
- package/esm2022/lib/core/services/report-storage.service.mjs +63 -0
- package/esm2022/lib/core/tokens/index.mjs +2 -1
- package/esm2022/lib/core/tokens/storage.token.mjs +128 -0
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +16 -44
- package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +3 -371
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +3 -1015
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +3 -679
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +3 -947
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +3 -549
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +10 -6
- package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +3 -421
- package/fesm2022/bways-report.mjs +1288 -5091
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/services/index.d.ts +1 -0
- package/lib/core/services/report-storage.service.d.ts +26 -0
- package/lib/core/tokens/index.d.ts +2 -0
- package/lib/core/tokens/storage.token.d.ts +48 -0
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +1 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +1 -0
- package/package.json +9 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { DynamicFormBuilder } from './dynamic-form-builder.service';
|
|
2
2
|
export { ReportSessionContextService } from './report-session-context.service';
|
|
3
|
-
|
|
3
|
+
export { ReportStorageService } from './report-storage.service';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSy9FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRHluYW1pY0Zvcm1CdWlsZGVyIH0gZnJvbSAnLi9keW5hbWljLWZvcm0tYnVpbGRlci5zZXJ2aWNlJztcbmV4cG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4vcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmV4cG9ydCB0eXBlIHtcbiAgU2Vzc2lvblBhcmFtTWF0Y2gsXG4gIERlcml2ZWRQYXJhbWV0ZXJzUmVzdWx0LFxufSBmcm9tICcuL3JlcG9ydC1zZXNzaW9uLWNvbnRleHQuc2VydmljZSc7XG5leHBvcnQgeyBSZXBvcnRTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vcmVwb3J0LXN0b3JhZ2Uuc2VydmljZSc7XG4iXX0=
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { REPORT_STORAGE } from '../tokens/storage.token';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Angular injectable service wrapping report storage operations.
|
|
6
|
+
* Provides type-safe JSON serialization/deserialization and environment-agnostic access.
|
|
7
|
+
*/
|
|
8
|
+
export class ReportStorageService {
|
|
9
|
+
storage = inject(REPORT_STORAGE);
|
|
10
|
+
getItem(key) {
|
|
11
|
+
return this.storage.getItem(key);
|
|
12
|
+
}
|
|
13
|
+
setItem(key, value) {
|
|
14
|
+
this.storage.setItem(key, value);
|
|
15
|
+
}
|
|
16
|
+
removeItem(key) {
|
|
17
|
+
this.storage.removeItem(key);
|
|
18
|
+
}
|
|
19
|
+
clear() {
|
|
20
|
+
this.storage.clear();
|
|
21
|
+
}
|
|
22
|
+
key(index) {
|
|
23
|
+
return this.storage.key ? this.storage.key(index) : null;
|
|
24
|
+
}
|
|
25
|
+
get length() {
|
|
26
|
+
return this.storage.length ?? 0;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Safely retrieves and parses a JSON value from storage.
|
|
30
|
+
* Returns fallback if key is missing or parsing fails.
|
|
31
|
+
*/
|
|
32
|
+
getJSON(key, fallback) {
|
|
33
|
+
const raw = this.getItem(key);
|
|
34
|
+
if (!raw)
|
|
35
|
+
return fallback;
|
|
36
|
+
try {
|
|
37
|
+
return JSON.parse(raw);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return fallback;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Safely serializes and stores a JSON value in storage.
|
|
45
|
+
*/
|
|
46
|
+
setJSON(key, value) {
|
|
47
|
+
try {
|
|
48
|
+
this.setItem(key, JSON.stringify(value));
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Storage error or circular structure handled gracefully
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
55
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportStorageService, providedIn: 'root' });
|
|
56
|
+
}
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportStorageService, decorators: [{
|
|
58
|
+
type: Injectable,
|
|
59
|
+
args: [{
|
|
60
|
+
providedIn: 'root',
|
|
61
|
+
}]
|
|
62
|
+
}] });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvc2VydmljZXMvcmVwb3J0LXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFpQixNQUFNLHlCQUF5QixDQUFDOztBQUV4RTs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBQ2QsT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVsRCxPQUFPLENBQUMsR0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBSSxHQUFXLEVBQUUsUUFBVztRQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFDMUIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBTSxDQUFDO1FBQzlCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFJLEdBQVcsRUFBRSxLQUFRO1FBQzlCLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AseURBQXlEO1FBQzNELENBQUM7SUFDSCxDQUFDO3dHQWxEVSxvQkFBb0I7NEdBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSRVBPUlRfU1RPUkFHRSwgUmVwb3J0U3RvcmFnZSB9IGZyb20gJy4uL3Rva2Vucy9zdG9yYWdlLnRva2VuJztcblxuLyoqXG4gKiBBbmd1bGFyIGluamVjdGFibGUgc2VydmljZSB3cmFwcGluZyByZXBvcnQgc3RvcmFnZSBvcGVyYXRpb25zLlxuICogUHJvdmlkZXMgdHlwZS1zYWZlIEpTT04gc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24gYW5kIGVudmlyb25tZW50LWFnbm9zdGljIGFjY2Vzcy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlcG9ydFN0b3JhZ2VTZXJ2aWNlIGltcGxlbWVudHMgUmVwb3J0U3RvcmFnZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZSA9IGluamVjdChSRVBPUlRfU1RPUkFHRSk7XG5cbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxuXG4gIGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5rZXkgPyB0aGlzLnN0b3JhZ2Uua2V5KGluZGV4KSA6IG51bGw7XG4gIH1cblxuICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYWZlbHkgcmV0cmlldmVzIGFuZCBwYXJzZXMgYSBKU09OIHZhbHVlIGZyb20gc3RvcmFnZS5cbiAgICogUmV0dXJucyBmYWxsYmFjayBpZiBrZXkgaXMgbWlzc2luZyBvciBwYXJzaW5nIGZhaWxzLlxuICAgKi9cbiAgZ2V0SlNPTjxUPihrZXk6IHN0cmluZywgZmFsbGJhY2s6IFQpOiBUIHtcbiAgICBjb25zdCByYXcgPSB0aGlzLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoIXJhdykgcmV0dXJuIGZhbGxiYWNrO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyYXcpIGFzIFQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhZmVseSBzZXJpYWxpemVzIGFuZCBzdG9yZXMgYSBKU09OIHZhbHVlIGluIHN0b3JhZ2UuXG4gICAqL1xuICBzZXRKU09OPFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gU3RvcmFnZSBlcnJvciBvciBjaXJjdWxhciBzdHJ1Y3R1cmUgaGFuZGxlZCBncmFjZWZ1bGx5XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { REPORTING_CONFIG, GRID_COMPONENT, CHART_COMPONENT, } from './reporting-config.token';
|
|
2
2
|
export { REPORT_SESSION_CONTEXT, REPORT_SESSION_PROVIDER, SessionContextProvider, } from './session-context.token';
|
|
3
|
-
|
|
3
|
+
export { REPORT_STORAGE, BrowserReportStorage, MemoryReportStorage, } from './storage.token';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9jb3JlL3Rva2Vucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxlQUFlLEdBQ2hCLE1BQU0sMEJBQTBCLENBQUM7QUFNbEMsT0FBTyxFQUNMLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEdBQ3ZCLE1BQU0seUJBQXlCLENBQUM7QUFTakMsT0FBTyxFQUNMLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsbUJBQW1CLEdBQ3BCLE1BQU0saUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBSRVBPUlRJTkdfQ09ORklHLFxuICBHUklEX0NPTVBPTkVOVCxcbiAgQ0hBUlRfQ09NUE9ORU5ULFxufSBmcm9tICcuL3JlcG9ydGluZy1jb25maWcudG9rZW4nO1xuXG5leHBvcnQgdHlwZSB7XG4gIFJlcG9ydGluZ0NvbmZpZyxcbn0gZnJvbSAnLi9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcblxuZXhwb3J0IHtcbiAgUkVQT1JUX1NFU1NJT05fQ09OVEVYVCxcbiAgUkVQT1JUX1NFU1NJT05fUFJPVklERVIsXG4gIFNlc3Npb25Db250ZXh0UHJvdmlkZXIsXG59IGZyb20gJy4vc2Vzc2lvbi1jb250ZXh0LnRva2VuJztcblxuZXhwb3J0IHR5cGUge1xuICBTZXNzaW9uUGFyYW1QcmltaXRpdmUsXG4gIFNlc3Npb25Db250ZXh0TWFwLFxuICBTZXNzaW9uQ29udGV4dFByb3ZpZGVyRm4sXG4gIFNlc3Npb25Db250ZXh0U291cmNlLFxufSBmcm9tICcuL3Nlc3Npb24tY29udGV4dC50b2tlbic7XG5cbmV4cG9ydCB7XG4gIFJFUE9SVF9TVE9SQUdFLFxuICBCcm93c2VyUmVwb3J0U3RvcmFnZSxcbiAgTWVtb3J5UmVwb3J0U3RvcmFnZSxcbn0gZnJvbSAnLi9zdG9yYWdlLnRva2VuJztcblxuZXhwb3J0IHR5cGUge1xuICBSZXBvcnRTdG9yYWdlLFxufSBmcm9tICcuL3N0b3JhZ2UudG9rZW4nO1xuIl19
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory fallback implementation of ReportStorage.
|
|
4
|
+
* Safe for SSR, unit tests, and sandboxed iframes where localStorage access is denied.
|
|
5
|
+
*/
|
|
6
|
+
export class MemoryReportStorage {
|
|
7
|
+
store = new Map();
|
|
8
|
+
getItem(key) {
|
|
9
|
+
return this.store.get(key) ?? null;
|
|
10
|
+
}
|
|
11
|
+
setItem(key, value) {
|
|
12
|
+
this.store.set(key, value);
|
|
13
|
+
}
|
|
14
|
+
removeItem(key) {
|
|
15
|
+
this.store.delete(key);
|
|
16
|
+
}
|
|
17
|
+
clear() {
|
|
18
|
+
this.store.clear();
|
|
19
|
+
}
|
|
20
|
+
key(index) {
|
|
21
|
+
const keys = Array.from(this.store.keys());
|
|
22
|
+
return keys[index] ?? null;
|
|
23
|
+
}
|
|
24
|
+
get length() {
|
|
25
|
+
return this.store.size;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Browser localStorage-backed implementation of ReportStorage
|
|
30
|
+
* with transparent in-memory fallback on DOMException or SSR.
|
|
31
|
+
*/
|
|
32
|
+
export class BrowserReportStorage {
|
|
33
|
+
memory = new MemoryReportStorage();
|
|
34
|
+
isSupported;
|
|
35
|
+
constructor() {
|
|
36
|
+
this.isSupported = this.checkStorageSupport();
|
|
37
|
+
}
|
|
38
|
+
checkStorageSupport() {
|
|
39
|
+
if (typeof window === 'undefined')
|
|
40
|
+
return false;
|
|
41
|
+
try {
|
|
42
|
+
const probe = '__bways_storage_probe__';
|
|
43
|
+
window.localStorage.setItem(probe, probe);
|
|
44
|
+
window.localStorage.removeItem(probe);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
getItem(key) {
|
|
52
|
+
if (this.isSupported) {
|
|
53
|
+
try {
|
|
54
|
+
return window.localStorage.getItem(key);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return this.memory.getItem(key);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return this.memory.getItem(key);
|
|
61
|
+
}
|
|
62
|
+
setItem(key, value) {
|
|
63
|
+
if (this.isSupported) {
|
|
64
|
+
try {
|
|
65
|
+
window.localStorage.setItem(key, value);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// Fall back to in-memory on quota or security exceptions
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
this.memory.setItem(key, value);
|
|
73
|
+
}
|
|
74
|
+
removeItem(key) {
|
|
75
|
+
if (this.isSupported) {
|
|
76
|
+
try {
|
|
77
|
+
window.localStorage.removeItem(key);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Ignore
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
this.memory.removeItem(key);
|
|
84
|
+
}
|
|
85
|
+
clear() {
|
|
86
|
+
if (this.isSupported) {
|
|
87
|
+
try {
|
|
88
|
+
window.localStorage.clear();
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// Ignore
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
this.memory.clear();
|
|
95
|
+
}
|
|
96
|
+
key(index) {
|
|
97
|
+
if (this.isSupported) {
|
|
98
|
+
try {
|
|
99
|
+
return window.localStorage.key(index);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return this.memory.key(index);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return this.memory.key(index);
|
|
106
|
+
}
|
|
107
|
+
get length() {
|
|
108
|
+
if (this.isSupported) {
|
|
109
|
+
try {
|
|
110
|
+
return window.localStorage.length;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return this.memory.length;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return this.memory.length;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Injection token for the report storage engine.
|
|
121
|
+
* Defaults to `BrowserReportStorage`, which transparently falls back to
|
|
122
|
+
* `MemoryReportStorage` when browser localStorage is unavailable or restricted.
|
|
123
|
+
*/
|
|
124
|
+
export const REPORT_STORAGE = new InjectionToken('REPORT_STORAGE', {
|
|
125
|
+
providedIn: 'root',
|
|
126
|
+
factory: () => new BrowserReportStorage(),
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2NvcmUvdG9rZW5zL3N0b3JhZ2UudG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQWUvQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBQ2IsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBRW5ELE9BQU8sQ0FBQyxHQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELEdBQUcsQ0FBQyxLQUFhO1FBQ2YsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7SUFDZCxNQUFNLEdBQUcs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LElBQUksQ0FBQztnQkFDSCxPQUFPLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3BDLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsZ0JBQWdCLEVBQUU7SUFDaEYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksb0JBQW9CLEVBQUU7Q0FDMUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBTdG9yYWdlIGNvbnRyYWN0IGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJlcG9ydCBjb25maWd1cmF0aW9ucyxcbiAqIHByZXNldHMsIGFuZCBsYXlvdXQgc3RhdGVzIGFjcm9zcyBlbnZpcm9ubWVudHMgKEJyb3dzZXIsIFNTUiwgc2FuZGJveGVkIGlmcmFtZXMpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFN0b3JhZ2Uge1xuICBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbDtcbiAgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQ7XG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkO1xuICBjbGVhcigpOiB2b2lkO1xuICBrZXk/KGluZGV4OiBudW1iZXIpOiBzdHJpbmcgfCBudWxsO1xuICByZWFkb25seSBsZW5ndGg/OiBudW1iZXI7XG59XG5cbi8qKlxuICogSW4tbWVtb3J5IGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIFJlcG9ydFN0b3JhZ2UuXG4gKiBTYWZlIGZvciBTU1IsIHVuaXQgdGVzdHMsIGFuZCBzYW5kYm94ZWQgaWZyYW1lcyB3aGVyZSBsb2NhbFN0b3JhZ2UgYWNjZXNzIGlzIGRlbmllZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1lbW9yeVJlcG9ydFN0b3JhZ2UgaW1wbGVtZW50cyBSZXBvcnRTdG9yYWdlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgZ2V0SXRlbShrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldChrZXkpID8/IG51bGw7XG4gIH1cblxuICBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5zZXQoa2V5LCB2YWx1ZSk7XG4gIH1cblxuICByZW1vdmVJdGVtKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yZS5kZWxldGUoa2V5KTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmUuY2xlYXIoKTtcbiAgfVxuXG4gIGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgY29uc3Qga2V5cyA9IEFycmF5LmZyb20odGhpcy5zdG9yZS5rZXlzKCkpO1xuICAgIHJldHVybiBrZXlzW2luZGV4XSA/PyBudWxsO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNpemU7XG4gIH1cbn1cblxuLyoqXG4gKiBCcm93c2VyIGxvY2FsU3RvcmFnZS1iYWNrZWQgaW1wbGVtZW50YXRpb24gb2YgUmVwb3J0U3RvcmFnZVxuICogd2l0aCB0cmFuc3BhcmVudCBpbi1tZW1vcnkgZmFsbGJhY2sgb24gRE9NRXhjZXB0aW9uIG9yIFNTUi5cbiAqL1xuZXhwb3J0IGNsYXNzIEJyb3dzZXJSZXBvcnRTdG9yYWdlIGltcGxlbWVudHMgUmVwb3J0U3RvcmFnZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWVtb3J5ID0gbmV3IE1lbW9yeVJlcG9ydFN0b3JhZ2UoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc1N1cHBvcnRlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3VwcG9ydGVkID0gdGhpcy5jaGVja1N0b3JhZ2VTdXBwb3J0KCk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrU3RvcmFnZVN1cHBvcnQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByb2JlID0gJ19fYndheXNfc3RvcmFnZV9wcm9iZV9fJztcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShwcm9iZSwgcHJvYmUpO1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHByb2JlKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGdldEl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5pc1N1cHBvcnRlZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lbW9yeS5nZXRJdGVtKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1lbW9yeS5nZXRJdGVtKGtleSk7XG4gIH1cblxuICBzZXRJdGVtKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBpbi1tZW1vcnkgb24gcXVvdGEgb3Igc2VjdXJpdHkgZXhjZXB0aW9uc1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm1lbW9yeS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICB0cnkge1xuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBJZ25vcmVcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5tZW1vcnkucmVtb3ZlSXRlbShrZXkpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBJZ25vcmVcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5tZW1vcnkuY2xlYXIoKTtcbiAgfVxuXG4gIGtleShpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmtleShpbmRleCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVtb3J5LmtleShpbmRleCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1lbW9yeS5rZXkoaW5kZXgpO1xuICB9XG5cbiAgZ2V0IGxlbmd0aCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5sZW5ndGg7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVtb3J5Lmxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWVtb3J5Lmxlbmd0aDtcbiAgfVxufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiBmb3IgdGhlIHJlcG9ydCBzdG9yYWdlIGVuZ2luZS5cbiAqIERlZmF1bHRzIHRvIGBCcm93c2VyUmVwb3J0U3RvcmFnZWAsIHdoaWNoIHRyYW5zcGFyZW50bHkgZmFsbHMgYmFjayB0b1xuICogYE1lbW9yeVJlcG9ydFN0b3JhZ2VgIHdoZW4gYnJvd3NlciBsb2NhbFN0b3JhZ2UgaXMgdW5hdmFpbGFibGUgb3IgcmVzdHJpY3RlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9TVE9SQUdFID0gbmV3IEluamVjdGlvblRva2VuPFJlcG9ydFN0b3JhZ2U+KCdSRVBPUlRfU1RPUkFHRScsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBuZXcgQnJvd3NlclJlcG9ydFN0b3JhZ2UoKSxcbn0pO1xuIl19
|
|
@@ -2,19 +2,18 @@ import { Injectable, inject } from '@angular/core';
|
|
|
2
2
|
import { of, throwError } from 'rxjs';
|
|
3
3
|
import { ReportPersistenceAdapter } from '../contracts/report-persistence.contract';
|
|
4
4
|
import { ReportTemplateService } from '../../features/designer/services/report-template.service';
|
|
5
|
+
import { ReportStorageService } from '../../core/services/report-storage.service';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
const STORAGE_PREFIX = 'bways_rpt_def_';
|
|
7
8
|
const INDEX_KEY = 'bways_rpt_index';
|
|
8
9
|
export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapter {
|
|
9
10
|
templateService = inject(ReportTemplateService, { optional: true });
|
|
11
|
+
storage = inject(ReportStorageService);
|
|
10
12
|
constructor() {
|
|
11
13
|
super();
|
|
12
14
|
this.seedDefaultBlueprintsIfEmpty();
|
|
13
15
|
}
|
|
14
16
|
seedDefaultBlueprintsIfEmpty() {
|
|
15
|
-
if (typeof window === 'undefined' || !window.localStorage) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
17
|
const index = this.getIndex();
|
|
19
18
|
if (index.length === 0 && this.templateService) {
|
|
20
19
|
const blueprints = this.templateService.getTemplates();
|
|
@@ -33,27 +32,13 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
34
|
getIndex() {
|
|
36
|
-
|
|
37
|
-
return [];
|
|
38
|
-
}
|
|
39
|
-
try {
|
|
40
|
-
const raw = window.localStorage.getItem(INDEX_KEY);
|
|
41
|
-
return raw ? JSON.parse(raw) : [];
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
return [];
|
|
45
|
-
}
|
|
35
|
+
return this.storage.getJSON(INDEX_KEY, []);
|
|
46
36
|
}
|
|
47
37
|
saveIndex(index) {
|
|
48
|
-
|
|
49
|
-
window.localStorage.setItem(INDEX_KEY, JSON.stringify(index));
|
|
50
|
-
}
|
|
38
|
+
this.storage.setJSON(INDEX_KEY, index);
|
|
51
39
|
}
|
|
52
40
|
saveDirect(def) {
|
|
53
|
-
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
window.localStorage.setItem(STORAGE_PREFIX + def.id, JSON.stringify(def));
|
|
41
|
+
this.storage.setJSON(STORAGE_PREFIX + def.id, def);
|
|
57
42
|
const index = this.getIndex();
|
|
58
43
|
if (!index.includes(def.id)) {
|
|
59
44
|
index.push(def.id);
|
|
@@ -61,17 +46,14 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
61
46
|
}
|
|
62
47
|
}
|
|
63
48
|
load(reportId) {
|
|
64
|
-
|
|
65
|
-
return throwError(() => new Error('LocalStorage is not available in current environment.'));
|
|
66
|
-
}
|
|
67
|
-
const raw = window.localStorage.getItem(STORAGE_PREFIX + reportId);
|
|
49
|
+
const raw = this.storage.getItem(STORAGE_PREFIX + reportId);
|
|
68
50
|
if (raw) {
|
|
69
51
|
try {
|
|
70
52
|
const def = JSON.parse(raw);
|
|
71
53
|
return of(def);
|
|
72
54
|
}
|
|
73
|
-
catch
|
|
74
|
-
return throwError(() => new Error(`Failed to parse report "${reportId}" from
|
|
55
|
+
catch {
|
|
56
|
+
return throwError(() => new Error(`Failed to parse report "${reportId}" from storage.`));
|
|
75
57
|
}
|
|
76
58
|
}
|
|
77
59
|
// Fallback: check template service blueprints
|
|
@@ -91,28 +73,22 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
91
73
|
return of(def);
|
|
92
74
|
}
|
|
93
75
|
}
|
|
94
|
-
return throwError(() => new Error(`Report definition with ID "${reportId}" not found in
|
|
76
|
+
return throwError(() => new Error(`Report definition with ID "${reportId}" not found in storage.`));
|
|
95
77
|
}
|
|
96
78
|
save(report) {
|
|
97
|
-
if (typeof window === 'undefined' || !window.localStorage) {
|
|
98
|
-
return throwError(() => new Error('LocalStorage is not available in current environment.'));
|
|
99
|
-
}
|
|
100
79
|
try {
|
|
101
80
|
this.saveDirect(report);
|
|
102
81
|
return of(report);
|
|
103
82
|
}
|
|
104
83
|
catch (err) {
|
|
105
|
-
return throwError(() => err instanceof Error ? err : new Error(String(err)));
|
|
84
|
+
return throwError(() => (err instanceof Error ? err : new Error(String(err))));
|
|
106
85
|
}
|
|
107
86
|
}
|
|
108
87
|
list() {
|
|
109
|
-
if (typeof window === 'undefined' || !window.localStorage) {
|
|
110
|
-
return of([]);
|
|
111
|
-
}
|
|
112
88
|
const index = this.getIndex();
|
|
113
89
|
const summaries = [];
|
|
114
90
|
for (const id of index) {
|
|
115
|
-
const raw =
|
|
91
|
+
const raw = this.storage.getItem(STORAGE_PREFIX + id);
|
|
116
92
|
if (raw) {
|
|
117
93
|
try {
|
|
118
94
|
const def = JSON.parse(raw);
|
|
@@ -133,17 +109,13 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
133
109
|
return of(summaries);
|
|
134
110
|
}
|
|
135
111
|
delete(reportId) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
this.saveIndex(index);
|
|
140
|
-
}
|
|
112
|
+
this.storage.removeItem(STORAGE_PREFIX + reportId);
|
|
113
|
+
const index = this.getIndex().filter((id) => id !== reportId);
|
|
114
|
+
this.saveIndex(index);
|
|
141
115
|
return of(undefined);
|
|
142
116
|
}
|
|
143
117
|
publish(reportId, version) {
|
|
144
|
-
const raw =
|
|
145
|
-
? window.localStorage.getItem(STORAGE_PREFIX + reportId)
|
|
146
|
-
: null;
|
|
118
|
+
const raw = this.storage.getItem(STORAGE_PREFIX + reportId);
|
|
147
119
|
if (raw) {
|
|
148
120
|
try {
|
|
149
121
|
const def = JSON.parse(raw);
|
|
@@ -164,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
164
136
|
providedIn: 'root',
|
|
165
137
|
}]
|
|
166
138
|
}], ctorParameters: () => [] });
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvbG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOztBQUVqRyxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQUtwQyxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsd0JBQXdCO0lBQy9ELGVBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUVyRjtRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxD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QUFDLEdBQUcsQ0FBcUIsQ0FBQztnQkFDaEQsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7Z0JBQ3RCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBbEtVLG9DQUFvQzs0R0FBcEMsb0NBQW9DLGNBRm5DLE1BQU07OzRGQUVQLG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24sIFJlcG9ydFN1bW1hcnkgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mZWF0dXJlcy9kZXNpZ25lci9zZXJ2aWNlcy9yZXBvcnQtdGVtcGxhdGUuc2VydmljZSc7XG5cbmNvbnN0IFNUT1JBR0VfUFJFRklYID0gJ2J3YXlzX3JwdF9kZWZfJztcbmNvbnN0IElOREVYX0tFWSA9ICdid2F5c19ycHRfaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIGV4dGVuZHMgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVNlcnZpY2UgPSBpbmplY3QoUmVwb3J0VGVtcGxhdGVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZWVkRGVmYXVsdEJsdWVwcmludHNJZkVtcHR5KCk7XG4gIH1cblxuICBwcml2YXRlIHNlZWREZWZhdWx0Qmx1ZXByaW50c0lmRW1wdHkoKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGlmIChpbmRleC5sZW5ndGggPT09IDAgJiYgdGhpcy50ZW1wbGF0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IGJsdWVwcmludHMgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZXMoKTtcbiAgICAgIGJsdWVwcmludHMuZm9yRWFjaCgoYnApID0+IHtcbiAgICAgICAgY29uc3QgZGVmOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgICAgIC4uLmJwLmRlZmluaXRpb24sXG4gICAgICAgICAgaWQ6IGJwLmlkLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IGJwLmRlZmluaXRpb24ucGFyYW1ldGVycyB8fCBbXSxcbiAgICAgICAgICBsYXlvdXQ6IGJwLmRlZmluaXRpb24ubGF5b3V0LFxuICAgICAgICAgIGRhdGFTb3VyY2VzOiBicC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLFxuICAgICAgICAgIGNvbXBvbmVudHM6IGJwLmRlZmluaXRpb24uY29tcG9uZW50cyxcbiAgICAgICAgICBncmlkOiBicC5kZWZpbml0aW9uLmdyaWQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2F2ZURpcmVjdChkZWYpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleCgpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oSU5ERVhfS0VZKTtcbiAgICAgIHJldHVybiByYXcgPyBKU09OLnBhcnNlKHJhdykgOiBbXTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVJbmRleChpbmRleDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2FsU3RvcmFnZSkge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKElOREVYX0tFWSwgSlNPTi5zdHJpbmdpZnkoaW5kZXgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhdmVEaXJlY3QoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIGRlZi5pZCwgSlNPTi5zdHJpbmdpZnkoZGVmKSk7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKCFpbmRleC5pbmNsdWRlcyhkZWYuaWQpKSB7XG4gICAgICBpbmRleC5wdXNoKGRlZi5pZCk7XG4gICAgICB0aGlzLnNhdmVJbmRleChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0xvY2FsU3RvcmFnZSBpcyBub3QgYXZhaWxhYmxlIGluIGN1cnJlbnQgZW52aXJvbm1lbnQuJykpO1xuICAgIH1cblxuICAgIGNvbnN0IHJhdyA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICBpZiAocmF3KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWYgPSBKU09OLnBhcnNlKHJhdykgYXMgUmVwb3J0RGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIG9mKGRlZik7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgcmVwb3J0IFwiJHtyZXBvcnRJZH1cIiBmcm9tIExvY2FsU3RvcmFnZS5gKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IGNoZWNrIHRlbXBsYXRlIHNlcnZpY2UgYmx1ZXByaW50c1xuICAgIGlmICh0aGlzLnRlbXBsYXRlU2VydmljZSkge1xuICAgICAgY29uc3QgYnAgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZUJ5SWQocmVwb3J0SWQpO1xuICAgICAgaWYgKGJwKSB7XG4gICAgICAgIGNvbnN0IGRlZjogUmVwb3J0RGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAuLi5icC5kZWZpbml0aW9uLFxuICAgICAgICAgIGlkOiBicC5pZCxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBicC5kZWZpbml0aW9uLnBhcmFtZXRlcnMgfHwgW10sXG4gICAgICAgICAgbGF5b3V0OiBicC5kZWZpbml0aW9uLmxheW91dCxcbiAgICAgICAgICBkYXRhU291cmNlczogYnAuZGVmaW5pdGlvbi5kYXRhU291cmNlcyxcbiAgICAgICAgICBjb21wb25lbnRzOiBicC5kZWZpbml0aW9uLmNvbXBvbmVudHMsXG4gICAgICAgICAgZ3JpZDogYnAuZGVmaW5pdGlvbi5ncmlkLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNhdmVEaXJlY3QoZGVmKTtcbiAgICAgICAgcmV0dXJuIG9mKGRlZik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBSZXBvcnQgZGVmaW5pdGlvbiB3aXRoIElEIFwiJHtyZXBvcnRJZH1cIiBub3QgZm91bmQgaW4gTG9jYWxTdG9yYWdlLmApKTtcbiAgfVxuXG4gIHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0xvY2FsU3RvcmFnZSBpcyBub3QgYXZhaWxhYmxlIGluIGN1cnJlbnQgZW52aXJvbm1lbnQuJykpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnNhdmVEaXJlY3QocmVwb3J0KTtcbiAgICAgIHJldHVybiBvZihyZXBvcnQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpKTtcbiAgICB9XG4gIH1cblxuICBsaXN0KCk6IE9ic2VydmFibGU8UmVwb3J0U3VtbWFyeVtdPiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICF3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGNvbnN0IHN1bW1hcmllczogUmVwb3J0U3VtbWFyeVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGluZGV4KSB7XG4gICAgICBjb25zdCByYXcgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyBpZCk7XG4gICAgICBpZiAocmF3KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgICAgc3VtbWFyaWVzLnB1c2goe1xuICAgICAgICAgICAgaWQ6IGRlZi5pZCxcbiAgICAgICAgICAgIG5hbWU6IGRlZi5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlZi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBkZWYuY2F0ZWdvcnksXG4gICAgICAgICAgICB2ZXJzaW9uOiBkZWYudmVyc2lvbixcbiAgICAgICAgICAgIGlzUHVibGlzaGVkOiAhIWRlZi5pc1B1Ymxpc2hlZCxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZDogZGVmLnVwZGF0ZWRBdCA/PyBkZWYuY3JlYXRlZEF0LFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkQnk6IGRlZi51cGRhdGVkQnksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge31cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2Yoc3VtbWFyaWVzKTtcbiAgfVxuXG4gIGRlbGV0ZShyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpLmZpbHRlcigoaWQpID0+IGlkICE9PSByZXBvcnRJZCk7XG4gICAgICB0aGlzLnNhdmVJbmRleChpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGlzaChyZXBvcnRJZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCByYXcgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlXG4gICAgICA/IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKVxuICAgICAgOiBudWxsO1xuXG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIGRlZi52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgZGVmLmlzUHVibGlzaGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG59XG4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvbG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUVsRixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQUtwQyxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsd0JBQXdCO0lBQy9ELGVBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxPQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFeEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFl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VSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBbElVLG9DQUFvQzs0R0FBcEMsb0NBQW9DLGNBRm5DLE1BQU07OzRGQUVQLG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24sIFJlcG9ydFN1bW1hcnkgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mZWF0dXJlcy9kZXNpZ25lci9zZXJ2aWNlcy9yZXBvcnQtdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXN0b3JhZ2Uuc2VydmljZSc7XG5cbmNvbnN0IFNUT1JBR0VfUFJFRklYID0gJ2J3YXlzX3JwdF9kZWZfJztcbmNvbnN0IElOREVYX0tFWSA9ICdid2F5c19ycHRfaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIGV4dGVuZHMgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVNlcnZpY2UgPSBpbmplY3QoUmVwb3J0VGVtcGxhdGVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2UgPSBpbmplY3QoUmVwb3J0U3RvcmFnZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZWVkRGVmYXVsdEJsdWVwcmludHNJZkVtcHR5KCk7XG4gIH1cblxuICBwcml2YXRlIHNlZWREZWZhdWx0Qmx1ZXByaW50c0lmRW1wdHkoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKGluZGV4Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLnRlbXBsYXRlU2VydmljZSkge1xuICAgICAgY29uc3QgYmx1ZXByaW50cyA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlcygpO1xuICAgICAgYmx1ZXByaW50cy5mb3JFYWNoKChicCkgPT4ge1xuICAgICAgICBjb25zdCBkZWY6IFJlcG9ydERlZmluaXRpb24gPSB7XG4gICAgICAgICAgLi4uYnAuZGVmaW5pdGlvbixcbiAgICAgICAgICBpZDogYnAuaWQsXG4gICAgICAgICAgcGFyYW1ldGVyczogYnAuZGVmaW5pdGlvbi5wYXJhbWV0ZXJzIHx8IFtdLFxuICAgICAgICAgIGxheW91dDogYnAuZGVmaW5pdGlvbi5sYXlvdXQsXG4gICAgICAgICAgZGF0YVNvdXJjZXM6IGJwLmRlZmluaXRpb24uZGF0YVNvdXJjZXMsXG4gICAgICAgICAgY29tcG9uZW50czogYnAuZGVmaW5pdGlvbi5jb21wb25lbnRzLFxuICAgICAgICAgIGdyaWQ6IGJwLmRlZmluaXRpb24uZ3JpZCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEluZGV4KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEpTT048c3RyaW5nW10+KElOREVYX0tFWSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlSW5kZXgoaW5kZXg6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldEpTT04oSU5ERVhfS0VZLCBpbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVEaXJlY3QoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldEpTT04oU1RPUkFHRV9QUkVGSVggKyBkZWYuaWQsIGRlZik7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKCFpbmRleC5pbmNsdWRlcyhkZWYuaWQpKSB7XG4gICAgICBpbmRleC5wdXNoKGRlZi5pZCk7XG4gICAgICB0aGlzLnNhdmVJbmRleChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyByZXBvcnRJZCk7XG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIHJldHVybiBvZihkZWYpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJlcG9ydCBcIiR7cmVwb3J0SWR9XCIgZnJvbSBzdG9yYWdlLmApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjazogY2hlY2sgdGVtcGxhdGUgc2VydmljZSBibHVlcHJpbnRzXG4gICAgaWYgKHRoaXMudGVtcGxhdGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBicCA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlQnlJZChyZXBvcnRJZCk7XG4gICAgICBpZiAoYnApIHtcbiAgICAgICAgY29uc3QgZGVmOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgICAgIC4uLmJwLmRlZmluaXRpb24sXG4gICAgICAgICAgaWQ6IGJwLmlkLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IGJwLmRlZmluaXRpb24ucGFyYW1ldGVycyB8fCBbXSxcbiAgICAgICAgICBsYXlvdXQ6IGJwLmRlZmluaXRpb24ubGF5b3V0LFxuICAgICAgICAgIGRhdGFTb3VyY2VzOiBicC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLFxuICAgICAgICAgIGNvbXBvbmVudHM6IGJwLmRlZmluaXRpb24uY29tcG9uZW50cyxcbiAgICAgICAgICBncmlkOiBicC5kZWZpbml0aW9uLmdyaWQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2F2ZURpcmVjdChkZWYpO1xuICAgICAgICByZXR1cm4gb2YoZGVmKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFJlcG9ydCBkZWZpbml0aW9uIHdpdGggSUQgXCIke3JlcG9ydElkfVwiIG5vdCBmb3VuZCBpbiBzdG9yYWdlLmApKTtcbiAgfVxuXG4gIHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2F2ZURpcmVjdChyZXBvcnQpO1xuICAgICAgcmV0dXJuIG9mKHJlcG9ydCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpKSk7XG4gICAgfVxuICB9XG5cbiAgbGlzdCgpOiBPYnNlcnZhYmxlPFJlcG9ydFN1bW1hcnlbXT4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGNvbnN0IHN1bW1hcmllczogUmVwb3J0U3VtbWFyeVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGluZGV4KSB7XG4gICAgICBjb25zdCByYXcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIGlkKTtcbiAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWYgPSBKU09OLnBhcnNlKHJhdykgYXMgUmVwb3J0RGVmaW5pdGlvbjtcbiAgICAgICAgICBzdW1tYXJpZXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZGVmLmlkLFxuICAgICAgICAgICAgbmFtZTogZGVmLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGRlZi5jYXRlZ29yeSxcbiAgICAgICAgICAgIHZlcnNpb246IGRlZi52ZXJzaW9uLFxuICAgICAgICAgICAgaXNQdWJsaXNoZWQ6ICEhZGVmLmlzUHVibGlzaGVkLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBkZWYudXBkYXRlZEF0ID8/IGRlZi5jcmVhdGVkQXQsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRCeTogZGVmLnVwZGF0ZWRCeSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZihzdW1tYXJpZXMpO1xuICB9XG5cbiAgZGVsZXRlKHJlcG9ydElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoKS5maWx0ZXIoKGlkKSA9PiBpZCAhPT0gcmVwb3J0SWQpO1xuICAgIHRoaXMuc2F2ZUluZGV4KGluZGV4KTtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1Ymxpc2gocmVwb3J0SWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyByZXBvcnRJZCk7XG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIGRlZi52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgZGVmLmlzUHVibGlzaGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG59XG4iXX0=
|