bways-report 0.1.9 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +463 -316
- package/esm2022/lib/core/config/bways-report-config.mjs +29 -32
- package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
- package/esm2022/lib/core/services/report-api-execution.service.mjs +33 -11
- package/esm2022/lib/core/services/report-session-context.service.mjs +72 -3
- package/esm2022/lib/core/tokens/designer-config.token.mjs +4 -0
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/utils/report-endpoint.util.mjs +22 -0
- package/esm2022/lib/core/utils/report-request-scope.mjs +48 -0
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +8 -1
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +30 -14
- package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +32 -28
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +1 -1
- package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +4 -37
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +4 -50
- package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +43 -194
- package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +17 -65
- package/esm2022/lib/data-access/adapters/index.mjs +1 -1
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +13 -4
- package/esm2022/lib/data-access/adapters/report-id-availability.mjs +20 -0
- package/esm2022/lib/data-access/adapters/session-headers.mjs +11 -0
- package/esm2022/lib/data-access/contracts/index.mjs +1 -1
- package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +13 -1
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +50 -40
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +546 -119
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +12 -6
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +9 -8
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +9 -4
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +54 -32
- package/esm2022/lib/features/designer/designer.component.mjs +100 -67
- package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +10 -4
- package/esm2022/lib/features/designer/services/designer-config.service.mjs +56 -0
- package/esm2022/lib/features/designer/services/designer-endpoints.service.mjs +155 -0
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +3 -2
- package/esm2022/lib/features/embed/bways-report-builder.component.mjs +3 -3
- package/esm2022/lib/features/export/services/report-export.service.mjs +11 -6
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +78 -23
- package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +59 -3
- package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +12 -17
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +5 -3
- package/esm2022/lib/features/routing/report-routes.mjs +6 -6
- package/esm2022/lib/features/routing/resolvers/report-route-identifier.mjs +5 -0
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +3 -2
- package/esm2022/lib/features/runtime/report-execution.service.mjs +18 -5
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +4 -2
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +94 -71
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +49 -41
- package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +7 -2
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +13 -1
- package/esm2022/lib/provide-reporting.mjs +9 -29
- package/fesm2022/bways-report.mjs +1789 -1041
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +14 -5
- package/lib/core/models/report-datasource.model.d.ts +5 -0
- package/lib/core/services/report-session-context.service.d.ts +9 -0
- package/lib/core/tokens/designer-config.token.d.ts +4 -0
- package/lib/core/tokens/reporting-config.token.d.ts +4 -0
- package/lib/core/utils/report-endpoint.util.d.ts +12 -0
- package/lib/core/utils/report-request-scope.d.ts +14 -0
- package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +6 -2
- package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +4 -2
- package/lib/data-access/adapters/endpoint-tokens.d.ts +4 -0
- package/lib/data-access/adapters/http-datasource.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-persistence.adapter.d.ts +11 -16
- package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +3 -5
- package/lib/data-access/adapters/index.d.ts +1 -1
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +2 -2
- package/lib/data-access/adapters/report-id-availability.d.ts +6 -0
- package/lib/data-access/adapters/session-headers.d.ts +3 -0
- package/lib/data-access/contracts/index.d.ts +1 -0
- package/lib/data-access/contracts/report-persistence.contract.d.ts +16 -1
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +2 -0
- package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +37 -5
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +4 -3
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +1 -0
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +1 -0
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +7 -1
- package/lib/features/designer/designer.component.d.ts +15 -2
- package/lib/features/designer/rpt-report-designer.component.d.ts +5 -1
- package/lib/features/designer/services/designer-config.service.d.ts +13 -0
- package/lib/features/designer/services/designer-endpoints.service.d.ts +25 -0
- package/lib/features/persistence/services/report-store.service.d.ts +15 -1
- package/lib/features/persistence/services/schema-validator.service.d.ts +2 -0
- package/lib/features/routing/resolvers/report-route-identifier.d.ts +2 -0
- package/lib/features/runtime/report-execution.service.d.ts +3 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +1 -0
- package/lib/features/runtime/report-runtime.component.d.ts +1 -0
- package/lib/features/runtime/rpt-report.component.d.ts +5 -0
- package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +3 -1
- package/package.json +2 -1
|
@@ -1,114 +1,66 @@
|
|
|
1
|
+
import { ReportSessionContextService } from '../../core/services/report-session-context.service';
|
|
2
|
+
import { reportSessionHeaders } from './session-headers';
|
|
1
3
|
import { inject, Injectable } from '@angular/core';
|
|
2
4
|
import { HttpClient } from '@angular/common/http';
|
|
3
|
-
import { of } from 'rxjs';
|
|
5
|
+
import { of, throwError } from 'rxjs';
|
|
4
6
|
import { catchError } from 'rxjs/operators';
|
|
5
7
|
import { ReportSchemaDiscoveryAdapter, } from '../contracts/schema-discovery.contract';
|
|
6
8
|
import { REPORTING_CONFIG } from '../../core/tokens/reporting-config.token';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
10
|
/**
|
|
9
11
|
* Built-in HTTP adapter for backend database schema discovery.
|
|
10
|
-
* Connects to NestJS / REST backend endpoints,
|
|
12
|
+
* Connects to NestJS / REST backend endpoints, without fabricating metadata when requests fail.
|
|
11
13
|
*/
|
|
12
14
|
export class HttpReportSchemaDiscoveryAdapter extends ReportSchemaDiscoveryAdapter {
|
|
15
|
+
session = inject(ReportSessionContextService, { optional: true });
|
|
16
|
+
get headers() { return reportSessionHeaders(this.session?.getCurrentSessionContext() ?? {}); }
|
|
13
17
|
http = inject(HttpClient, { optional: true });
|
|
14
18
|
config = inject(REPORTING_CONFIG, { optional: true });
|
|
15
|
-
mockEntities = [
|
|
16
|
-
{ name: 'Customers', schema: 'dbo', type: 'table', friendlyName: 'Customer Directory', category: 'Sales & CRM', description: 'Active customer accounts and profiles' },
|
|
17
|
-
{ name: 'Branches', schema: 'dbo', type: 'table', friendlyName: 'Branch Locations', category: 'Master Data', description: 'Company branches and regional offices' },
|
|
18
|
-
{ name: 'Products', schema: 'dbo', type: 'table', friendlyName: 'Product Catalog', category: 'Inventory', description: 'Product catalog with category codes' },
|
|
19
|
-
{ name: 'PaymentMethods', schema: 'dbo', type: 'table', friendlyName: 'Payment Methods', category: 'Finance', description: 'Available payment modes' },
|
|
20
|
-
{ name: 'usp_GetCustomerList', schema: 'dbo', type: 'stored_procedure', friendlyName: 'Customer Directory (SP)', category: 'Sales & CRM', description: 'Returns filtered customers by branch' },
|
|
21
|
-
{ name: 'usp_GetBranchLookup', schema: 'dbo', type: 'stored_procedure', friendlyName: 'Active Branches (SP)', category: 'Master Data', description: 'Returns active branches' },
|
|
22
|
-
];
|
|
23
|
-
mockColumns = {
|
|
24
|
-
Customers: [
|
|
25
|
-
{ field: 'customerId', label: 'Customer ID', dataType: 'number', nullable: false },
|
|
26
|
-
{ field: 'customerName', label: 'Customer Name', dataType: 'string', nullable: false },
|
|
27
|
-
{ field: 'email', label: 'Email Address', dataType: 'string', nullable: true },
|
|
28
|
-
{ field: 'branchId', label: 'Branch ID', dataType: 'number', nullable: true },
|
|
29
|
-
{ field: 'isActive', label: 'Active Status', dataType: 'boolean', nullable: false },
|
|
30
|
-
],
|
|
31
|
-
Branches: [
|
|
32
|
-
{ field: 'branchId', label: 'Branch ID', dataType: 'number', nullable: false },
|
|
33
|
-
{ field: 'branchName', label: 'Branch Name', dataType: 'string', nullable: false },
|
|
34
|
-
{ field: 'region', label: 'Region', dataType: 'string', nullable: true },
|
|
35
|
-
],
|
|
36
|
-
Products: [
|
|
37
|
-
{ field: 'productId', label: 'Product ID', dataType: 'number', nullable: false },
|
|
38
|
-
{ field: 'productName', label: 'Product Name', dataType: 'string', nullable: false },
|
|
39
|
-
{ field: 'category', label: 'Category', dataType: 'string', nullable: true },
|
|
40
|
-
{ field: 'unitPrice', label: 'Unit Price', dataType: 'number', nullable: false },
|
|
41
|
-
],
|
|
42
|
-
PaymentMethods: [
|
|
43
|
-
{ field: 'code', label: 'Payment Code', dataType: 'string', nullable: false },
|
|
44
|
-
{ field: 'title', label: 'Method Title', dataType: 'string', nullable: false },
|
|
45
|
-
],
|
|
46
|
-
usp_GetCustomerList: [
|
|
47
|
-
{ field: 'id', label: 'ID', dataType: 'number', nullable: false },
|
|
48
|
-
{ field: 'name', label: 'Customer Name', dataType: 'string', nullable: false },
|
|
49
|
-
{ field: 'branch', label: 'Branch Code', dataType: 'string', nullable: true },
|
|
50
|
-
],
|
|
51
|
-
usp_GetBranchLookup: [
|
|
52
|
-
{ field: 'id', label: 'Branch ID', dataType: 'number', nullable: false },
|
|
53
|
-
{ field: 'name', label: 'Branch Name', dataType: 'string', nullable: false },
|
|
54
|
-
],
|
|
55
|
-
};
|
|
56
|
-
mockParameters = {
|
|
57
|
-
usp_GetCustomerList: [
|
|
58
|
-
{ name: '@BranchId', friendlyLabel: 'Branch Location', dataType: 'number', sqlType: 'INT', required: false, description: 'Filter customers belonging to this branch' },
|
|
59
|
-
{ name: '@ActiveOnly', friendlyLabel: 'Active Only', dataType: 'boolean', sqlType: 'BIT', required: false, defaultValue: true, description: 'Only show active customers' },
|
|
60
|
-
],
|
|
61
|
-
usp_GetBranchLookup: [
|
|
62
|
-
{ name: '@Region', friendlyLabel: 'Geographical Region', dataType: 'string', sqlType: 'VARCHAR(50)', required: false, description: 'Filter by geographical region' },
|
|
63
|
-
],
|
|
64
|
-
};
|
|
65
19
|
getEntities(types) {
|
|
66
20
|
const baseUrl = this.config?.apiBaseUrl;
|
|
67
21
|
if (baseUrl && this.http) {
|
|
68
22
|
const typeParam = types ? types.join(',') : '';
|
|
69
23
|
return this.http
|
|
70
24
|
.get(`${baseUrl}/schema/entities`, {
|
|
25
|
+
headers: this.headers,
|
|
71
26
|
params: typeParam ? { types: typeParam } : {},
|
|
72
27
|
})
|
|
73
28
|
.pipe(catchError((err) => {
|
|
74
|
-
console.warn('[HttpSchemaDiscovery]
|
|
75
|
-
return
|
|
29
|
+
console.warn('[HttpSchemaDiscovery] Schema discovery request failed:', err);
|
|
30
|
+
return throwError(() => new Error('[bways-report] Schema discovery requires a reachable HTTP backend.'));
|
|
76
31
|
}));
|
|
77
32
|
}
|
|
78
|
-
return of(
|
|
33
|
+
return of([]);
|
|
79
34
|
}
|
|
80
35
|
getColumns(entityName, schema = 'dbo', type) {
|
|
81
36
|
const baseUrl = this.config?.apiBaseUrl;
|
|
82
37
|
if (baseUrl && this.http) {
|
|
83
38
|
return this.http
|
|
84
39
|
.get(`${baseUrl}/schema/columns`, {
|
|
40
|
+
headers: this.headers,
|
|
85
41
|
params: { entityName, schema, ...(type ? { type } : {}) },
|
|
86
42
|
})
|
|
87
43
|
.pipe(catchError((err) => {
|
|
88
44
|
console.warn(`[HttpSchemaDiscovery] Failed to get columns for ${entityName}:`, err);
|
|
89
|
-
return
|
|
45
|
+
return throwError(() => new Error('[bways-report] Column discovery failed or is not configured.'));
|
|
90
46
|
}));
|
|
91
47
|
}
|
|
92
|
-
return
|
|
48
|
+
return throwError(() => new Error('[bways-report] Column discovery failed or is not configured.'));
|
|
93
49
|
}
|
|
94
50
|
getParameters(entityName, schema = 'dbo') {
|
|
95
51
|
const baseUrl = this.config?.apiBaseUrl;
|
|
96
52
|
if (baseUrl && this.http) {
|
|
97
53
|
return this.http
|
|
98
54
|
.get(`${baseUrl}/schema/parameters`, {
|
|
55
|
+
headers: this.headers,
|
|
99
56
|
params: { entityName, schema },
|
|
100
57
|
})
|
|
101
58
|
.pipe(catchError((err) => {
|
|
102
59
|
console.warn(`[HttpSchemaDiscovery] Failed to get parameters for ${entityName}:`, err);
|
|
103
|
-
return
|
|
60
|
+
return throwError(() => new Error('[bways-report] Parameter discovery failed or is not configured.'));
|
|
104
61
|
}));
|
|
105
62
|
}
|
|
106
|
-
return
|
|
107
|
-
}
|
|
108
|
-
filterMockEntities(types) {
|
|
109
|
-
if (!types || types.length === 0)
|
|
110
|
-
return this.mockEntities;
|
|
111
|
-
return this.mockEntities.filter((e) => types.includes(e.type));
|
|
63
|
+
return throwError(() => new Error('[bways-report] Parameter discovery failed or is not configured.'));
|
|
112
64
|
}
|
|
113
65
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportSchemaDiscoveryAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
114
66
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportSchemaDiscoveryAdapter });
|
|
@@ -118,4 +70,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
118
70
|
}] });
|
|
119
71
|
/** Convenience alias */
|
|
120
72
|
export const HttpSchemaDiscoveryAdapter = HttpReportSchemaDiscoveryAdapter;
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zY2hlbWEtZGlzY292ZXJ5LmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9odHRwLXNjaGVtYS1kaXNjb3ZlcnkuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUtMLDRCQUE0QixHQUM3QixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOztBQUU1RTs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsNEJBQTRCO0lBQy9ELElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRXRELFlBQVksR0FBNkI7UUFDeEQsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsdUNBQXVDLEVBQUU7UUFDdEssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsdUNBQXVDLEVBQUU7UUFDbkssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUscUNBQXFDLEVBQUU7UUFDOUosRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSx5QkFBeUIsRUFBRTtRQUN0SixFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsc0NBQXNDLEVBQUU7UUFDL0wsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLHlCQUF5QixFQUFFO0tBQ2hMLENBQUM7SUFFZSxXQUFXLEdBQTJDO1FBQ3JFLFNBQVMsRUFBRTtZQUNULEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtZQUNsRixFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7WUFDdEYsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQzlFLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtZQUM3RSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7U0FDcEY7UUFDRCxRQUFRLEVBQUU7WUFDUixFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7WUFDOUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO1lBQ2xGLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtTQUN6RTtRQUNELFFBQVEsRUFBRTtZQUNSLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtZQUNoRixFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7WUFDcEYsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQzVFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtTQUNqRjtRQUNELGNBQWMsRUFB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QUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO2FBQy9CLENBQUM7aUJBQ0QsSUFBSSxDQUNILFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLHNEQUFzRCxVQUFVLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdkYsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ04sQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQTRCO1FBQ3JELElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQzt3R0FwSFUsZ0NBQWdDOzRHQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVU7O0FBd0hYLHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRGF0YWJhc2VFbnRpdHlNZXRhZGF0YSxcbiAgRGF0YWJhc2VFbnRpdHlUeXBlLFxuICBFbnRpdHlDb2x1bW5NZXRhZGF0YSxcbiAgUHJvY2VkdXJlUGFyYW1ldGVyTWV0YWRhdGEsXG4gIFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIsXG59IGZyb20gJy4uL2NvbnRyYWN0cy9zY2hlbWEtZGlzY292ZXJ5LmNvbnRyYWN0JztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcblxuLyoqXG4gKiBCdWlsdC1pbiBIVFRQIGFkYXB0ZXIgZm9yIGJhY2tlbmQgZGF0YWJhc2Ugc2NoZW1hIGRpc2NvdmVyeS5cbiAqIENvbm5lY3RzIHRvIE5lc3RKUyAvIFJFU1QgYmFja2VuZCBlbmRwb2ludHMsIHdpdGggZmFsbGJhY2sgbW9jayBzY2hlbWEgZm9yIGRldmVsb3BtZW50LlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHR0cFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFJFUE9SVElOR19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2NrRW50aXRpZXM6IERhdGFiYXNlRW50aXR5TWV0YWRhdGFbXSA9IFtcbiAgICB7IG5hbWU6ICdDdXN0b21lcnMnLCBzY2hlbWE6ICdkYm8nLCB0eXBlOiAndGFibGUnLCBmcmllbmRseU5hbWU6ICdDdXN0b21lciBEaXJlY3RvcnknLCBjYXRlZ29yeTogJ1NhbGVzICYgQ1JNJywgZGVzY3JpcHRpb246ICdBY3RpdmUgY3VzdG9tZXIgYWNjb3VudHMgYW5kIHByb2ZpbGVzJyB9LFxuICAgIHsgbmFtZTogJ0JyYW5jaGVzJywgc2NoZW1hOiAnZGJvJywgdHlwZTogJ3RhYmxlJywgZnJpZW5kbHlOYW1lOiAnQnJhbmNoIExvY2F0aW9ucycsIGNhdGVnb3J5OiAnTWFzdGVyIERhdGEnLCBkZXNjcmlwdGlvbjogJ0NvbXBhbnkgYnJhbmNoZXMgYW5kIHJlZ2lvbmFsIG9mZmljZXMnIH0sXG4gICAgeyBuYW1lOiAnUHJvZHVjdHMnLCBzY2hlbWE6ICdkYm8nLCB0eXBlOiAndGFibGUnLCBmcmllbmRseU5hbWU6ICdQcm9kdWN0IENhdGFsb2cnLCBjYXRlZ29yeTogJ0ludmVudG9yeScsIGRlc2NyaXB0aW9uOiAnUHJvZHVjdCBjYXRhbG9nIHdpdGggY2F0ZWdvcnkgY29kZXMnIH0sXG4gICAgeyBuYW1lOiAnUGF5bWVudE1ldGhvZHMnLCBzY2hlbWE6ICdkYm8nLCB0eXBlOiAndGFibGUnLCBmcmllbmRseU5hbWU6ICdQYXltZW50IE1ldGhvZHMnLCBjYXRlZ29yeTogJ0ZpbmFuY2UnLCBkZXNjcmlwdGlvbjogJ0F2YWlsYWJsZSBwYXltZW50IG1vZGVzJyB9LFxuICAgIHsgbmFtZTogJ3VzcF9HZXRDdXN0b21lckxpc3QnLCBzY2hlbWE6ICdkYm8nLCB0eXBlOiAnc3RvcmVkX3Byb2NlZHVyZScsIGZyaWVuZGx5TmFtZTogJ0N1c3RvbWVyIERpcmVjdG9yeSAoU1ApJywgY2F0ZWdvcnk6ICdTYWxlcyAmIENSTScsIGRlc2NyaXB0aW9uOiAnUmV0dXJucyBmaWx0ZXJlZCBjdXN0b21lcnMgYnkgYnJhbmNoJyB9LFxuICAgIHsgbmFtZTogJ3VzcF9HZXRCcmFuY2hMb29rdXAnLCBzY2hlbWE6ICdkYm8nLCB0eXBlOiAnc3RvcmVkX3Byb2NlZHVyZScsIGZyaWVuZGx5TmFtZTogJ0FjdGl2ZSBCcmFuY2hlcyAoU1ApJywgY2F0ZWdvcnk6ICdNYXN0ZXIgRGF0YScsIGRlc2NyaXB0aW9uOiAnUmV0dXJucyBhY3RpdmUgYnJhbmNoZXMnIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2NrQ29sdW1uczogUmVjb3JkPHN0cmluZywgRW50aXR5Q29sdW1uTWV0YWRhdGFbXT4gPSB7XG4gICAgQ3VzdG9tZXJzOiBbXG4gICAgICB7IGZpZWxkOiAnY3VzdG9tZXJJZCcsIGxhYmVsOiAnQ3VzdG9tZXIgSUQnLCBkYXRhVHlwZTogJ251bWJlcicsIG51bGxhYmxlOiBmYWxzZSB9LFxuICAgICAgeyBmaWVsZDogJ2N1c3RvbWVyTmFtZScsIGxhYmVsOiAnQ3VzdG9tZXIgTmFtZScsIGRhdGFUeXBlOiAnc3RyaW5nJywgbnVsbGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGZpZWxkOiAnZW1haWwnLCBsYWJlbDogJ0VtYWlsIEFkZHJlc3MnLCBkYXRhVHlwZTogJ3N0cmluZycsIG51bGxhYmxlOiB0cnVlIH0sXG4gICAgICB7IGZpZWxkOiAnYnJhbmNoSWQnLCBsYWJlbDogJ0JyYW5jaCBJRCcsIGRhdGFUeXBlOiAnbnVtYmVyJywgbnVsbGFibGU6IHRydWUgfSxcbiAgICAgIHsgZmllbGQ6ICdpc0FjdGl2ZScsIGxhYmVsOiAnQWN0aXZlIFN0YXR1cycsIGRhdGFUeXBlOiAnYm9vbGVhbicsIG51bGxhYmxlOiBmYWxzZSB9LFxuICAgIF0sXG4gICAgQnJhbmNoZXM6IFtcbiAgICAgIHsgZmllbGQ6ICdicmFuY2hJZCcsIGxhYmVsOiAnQnJhbmNoIElEJywgZGF0YVR5cGU6ICdudW1iZXInLCBudWxsYWJsZTogZmFsc2UgfSxcbiAgICAgIHsgZmllbGQ6ICdicmFuY2hOYW1lJywgbGFiZWw6ICdCcmFuY2ggTmFtZScsIGRhdGFUeXBlOiAnc3RyaW5nJywgbnVsbGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGZpZWxkOiAncmVnaW9uJywgbGFiZWw6ICdSZWdpb24nLCBkYXRhVHlwZTogJ3N0cmluZycsIG51bGxhYmxlOiB0cnVlIH0sXG4gICAgXSxcbiAgICBQcm9kdWN0czogW1xuICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RJZCcsIGxhYmVsOiAnUHJvZHVjdCBJRCcsIGRhdGFUeXBlOiAnbnVtYmVyJywgbnVsbGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGZpZWxkOiAncHJvZHVjdE5hbWUnLCBsYWJlbDogJ1Byb2R1Y3QgTmFtZScsIGRhdGFUeXBlOiAnc3RyaW5nJywgbnVsbGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGZpZWxkOiAnY2F0ZWdvcnknLCBsYWJlbDogJ0NhdGVnb3J5JywgZGF0YVR5cGU6ICdzdHJpbmcnLCBudWxsYWJsZTogdHJ1ZSB9LFxuICAgICAgeyBmaWVsZDogJ3VuaXRQcmljZScsIGxhYmVsOiAnVW5pdCBQcmljZScsIGRhdGFUeXBlOiAnbnVtYmVyJywgbnVsbGFibGU6IGZhbHNlIH0sXG4gICAgXSxcbiAgICBQYXltZW50TWV0aG9kczogW1xuICAgICAgeyBmaWVsZDogJ2NvZGUnLCBsYWJlbDogJ1BheW1lbnQgQ29kZScsIGRhdGFUeXBlOiAnc3RyaW5nJywgbnVsbGFibGU6IGZhbHNlIH0sXG4gICAgICB7IGZpZWxkOiAndGl0bGUnLCBsYWJlbDogJ01ldGhvZCBUaXRsZScsIGRhdGFUeXBlOiAnc3RyaW5nJywgbnVsbGFibGU6IGZhbHNlIH0sXG4gICAgXSxcbiAgICB1c3BfR2V0Q3VzdG9tZXJMaXN0OiBbXG4gICAgICB7IGZpZWxkOiAnaWQnLCBsYWJlbDogJ0lEJywgZGF0YVR5cGU6ICdudW1iZXInLCBudWxsYWJsZTogZmFsc2UgfSxcbiAgICAgIHsgZmllbGQ6ICduYW1lJywgbGFiZWw6ICdDdXN0b21lciBOYW1lJywgZGF0YVR5cGU6ICdzdHJpbmcnLCBudWxsYWJsZTogZmFsc2UgfSxcbiAgICAgIHsgZmllbGQ6ICdicmFuY2gnLCBsYWJlbDogJ0JyYW5jaCBDb2RlJywgZGF0YVR5cGU6ICdzdHJpbmcnLCBudWxsYWJsZTogdHJ1ZSB9LFxuICAgIF0sXG4gICAgdXNwX0dldEJyYW5jaExvb2t1cDogW1xuICAgICAgeyBmaWVsZDogJ2lkJywgbGFiZWw6ICdCcmFuY2ggSUQnLCBkYXRhVHlwZTogJ251bWJlcicsIG51bGxhYmxlOiBmYWxzZSB9LFxuICAgICAgeyBmaWVsZDogJ25hbWUnLCBsYWJlbDogJ0JyYW5jaCBOYW1lJywgZGF0YVR5cGU6ICdzdHJpbmcnLCBudWxsYWJsZTogZmFsc2UgfSxcbiAgICBdLFxuICB9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbW9ja1BhcmFtZXRlcnM6IFJlY29yZDxzdHJpbmcsIFByb2NlZHVyZVBhcmFtZXRlck1ldGFkYXRhW10+ID0ge1xuICAgIHVzcF9HZXRDdXN0b21lckxpc3Q6IFtcbiAgICAgIHsgbmFtZTogJ0BCcmFuY2hJZCcsIGZyaWVuZGx5TGFiZWw6ICdCcmFuY2ggTG9jYXRpb24nLCBkYXRhVHlwZTogJ251bWJlcicsIHNxbFR5cGU6ICdJTlQnLCByZXF1aXJlZDogZmFsc2UsIGRlc2NyaXB0aW9uOiAnRmlsdGVyIGN1c3RvbWVycyBiZWxvbmdpbmcgdG8gdGhpcyBicmFuY2gnIH0sXG4gICAgICB7IG5hbWU6ICdAQWN0aXZlT25seScsIGZyaWVuZGx5TGFiZWw6ICdBY3RpdmUgT25seScsIGRhdGFUeXBlOiAnYm9vbGVhbicsIHNxbFR5cGU6ICdCSVQnLCByZXF1aXJlZDogZmFsc2UsIGRlZmF1bHRWYWx1ZTogdHJ1ZSwgZGVzY3JpcHRpb246ICdPbmx5IHNob3cgYWN0aXZlIGN1c3RvbWVycycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRCcmFuY2hMb29rdXA6IFtcbiAgICAgIHsgbmFtZTogJ0BSZWdpb24nLCBmcmllbmRseUxhYmVsOiAnR2VvZ3JhcGhpY2FsIFJlZ2lvbicsIGRhdGFUeXBlOiAnc3RyaW5nJywgc3FsVHlwZTogJ1ZBUkNIQVIoNTApJywgcmVxdWlyZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogJ0ZpbHRlciBieSBnZW9ncmFwaGljYWwgcmVnaW9uJyB9LFxuICAgIF0sXG4gIH07XG5cbiAgZ2V0RW50aXRpZXModHlwZXM/OiBEYXRhYmFzZUVudGl0eVR5cGVbXSk6IE9ic2VydmFibGU8RGF0YWJhc2VFbnRpdHlNZXRhZGF0YVtdPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnPy5hcGlCYXNlVXJsO1xuICAgIGlmIChiYXNlVXJsICYmIHRoaXMuaHR0cCkge1xuICAgICAgY29uc3QgdHlwZVBhcmFtID0gdHlwZXMgPyB0eXBlcy5qb2luKCcsJykgOiAnJztcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLmdldDxEYXRhYmFzZUVudGl0eU1ldGFkYXRhW10+KGAke2Jhc2VVcmx9L3NjaGVtYS9lbnRpdGllc2AsIHtcbiAgICAgICAgICBwYXJhbXM6IHR5cGVQYXJhbSA/IHsgdHlwZXM6IHR5cGVQYXJhbSB9IDoge30sXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdbSHR0cFNjaGVtYURpc2NvdmVyeV0gQVBJIHJlcXVlc3QgZmFpbGVkLCBmYWxsaW5nIGJhY2sgdG8gbW9jayBzY2hlbWE6JywgZXJyKTtcbiAgICAgICAgICAgIHJldHVybiBvZih0aGlzLmZpbHRlck1vY2tFbnRpdGllcyh0eXBlcykpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZih0aGlzLmZpbHRlck1vY2tFbnRpdGllcyh0eXBlcykpO1xuICB9XG5cbiAgZ2V0Q29sdW1ucyhcbiAgICBlbnRpdHlOYW1lOiBzdHJpbmcsXG4gICAgc2NoZW1hID0gJ2RibycsXG4gICAgdHlwZT86IERhdGFiYXNlRW50aXR5VHlwZVxuICApOiBPYnNlcnZhYmxlPEVudGl0eUNvbHVtbk1ldGFkYXRhW10+IHtcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWc/LmFwaUJhc2VVcmw7XG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgIC5nZXQ8RW50aXR5Q29sdW1uTWV0YWRhdGFbXT4oYCR7YmFzZVVybH0vc2NoZW1hL2NvbHVtbnNgLCB7XG4gICAgICAgICAgcGFyYW1zOiB7IGVudGl0eU5hbWUsIHNjaGVtYSwgLi4uKHR5cGUgPyB7IHR5cGUgfSA6IHt9KSB9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW0h0dHBTY2hlbWFEaXNjb3ZlcnldIEZhaWxlZCB0byBnZXQgY29sdW1ucyBmb3IgJHtlbnRpdHlOYW1lfTpgLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMubW9ja0NvbHVtbnNbZW50aXR5TmFtZV0gPz8gW10pO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZih0aGlzLm1vY2tDb2x1bW5zW2VudGl0eU5hbWVdID8/IFtdKTtcbiAgfVxuXG4gIGdldFBhcmFtZXRlcnMoZW50aXR5TmFtZTogc3RyaW5nLCBzY2hlbWEgPSAnZGJvJyk6IE9ic2VydmFibGU8UHJvY2VkdXJlUGFyYW1ldGVyTWV0YWRhdGFbXT4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZz8uYXBpQmFzZVVybDtcbiAgICBpZiAoYmFzZVVybCAmJiB0aGlzLmh0dHApIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLmdldDxQcm9jZWR1cmVQYXJhbWV0ZXJNZXRhZGF0YVtdPihgJHtiYXNlVXJsfS9zY2hlbWEvcGFyYW1ldGVyc2AsIHtcbiAgICAgICAgICBwYXJhbXM6IHsgZW50aXR5TmFtZSwgc2NoZW1hIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbSHR0cFNjaGVtYURpc2NvdmVyeV0gRmFpbGVkIHRvIGdldCBwYXJhbWV0ZXJzIGZvciAke2VudGl0eU5hbWV9OmAsIGVycik7XG4gICAgICAgICAgICByZXR1cm4gb2YodGhpcy5tb2NrUGFyYW1ldGVyc1tlbnRpdHlOYW1lXSA/PyBbXSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG9mKHRoaXMubW9ja1BhcmFtZXRlcnNbZW50aXR5TmFtZV0gPz8gW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWx0ZXJNb2NrRW50aXRpZXModHlwZXM/OiBEYXRhYmFzZUVudGl0eVR5cGVbXSk6IERhdGFiYXNlRW50aXR5TWV0YWRhdGFbXSB7XG4gICAgaWYgKCF0eXBlcyB8fCB0eXBlcy5sZW5ndGggPT09IDApIHJldHVybiB0aGlzLm1vY2tFbnRpdGllcztcbiAgICByZXR1cm4gdGhpcy5tb2NrRW50aXRpZXMuZmlsdGVyKChlKSA9PiB0eXBlcy5pbmNsdWRlcyhlLnR5cGUpKTtcbiAgfVxufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXMgKi9cbmV4cG9ydCBjb25zdCBIdHRwU2NoZW1hRGlzY292ZXJ5QWRhcHRlciA9IEh0dHBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyO1xuIl19
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zY2hlbWEtZGlzY292ZXJ5LmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9odHRwLXNjaGVtYS1kaXNjb3ZlcnkuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFLTCw0QkFBNEIsR0FDN0IsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFFNUU7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLDRCQUE0QjtJQUMvRCxPQUFPLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbkYsSUFBWSxPQUFPLEtBQUssT0FBTyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLElBQUksR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxnQkFB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QyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDLENBQUM7WUFDeEcsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNOLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDLENBQUM7SUFDeEcsQ0FBQzt3R0EvRFUsZ0NBQWdDOzRHQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRDVDLFVBQVU7O0FBcUVYLHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IHJlcG9ydFNlc3Npb25IZWFkZXJzIH0gZnJvbSAnLi9zZXNzaW9uLWhlYWRlcnMnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBEYXRhYmFzZUVudGl0eU1ldGFkYXRhLFxuICBEYXRhYmFzZUVudGl0eVR5cGUsXG4gIEVudGl0eUNvbHVtbk1ldGFkYXRhLFxuICBQcm9jZWR1cmVQYXJhbWV0ZXJNZXRhZGF0YSxcbiAgUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbn0gZnJvbSAnLi4vY29udHJhY3RzL3NjaGVtYS1kaXNjb3ZlcnkuY29udHJhY3QnO1xuaW1wb3J0IHsgUkVQT1JUSU5HX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvcmUvdG9rZW5zL3JlcG9ydGluZy1jb25maWcudG9rZW4nO1xuXG4vKipcbiAqIEJ1aWx0LWluIEhUVFAgYWRhcHRlciBmb3IgYmFja2VuZCBkYXRhYmFzZSBzY2hlbWEgZGlzY292ZXJ5LlxuICogQ29ubmVjdHMgdG8gTmVzdEpTIC8gUkVTVCBiYWNrZW5kIGVuZHBvaW50cywgd2l0aG91dCBmYWJyaWNhdGluZyBtZXRhZGF0YSB3aGVuIHJlcXVlc3RzIGZhaWwuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwUmVwb3J0U2NoZW1hRGlzY292ZXJ5QWRhcHRlciBleHRlbmRzIFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb24gPSBpbmplY3QoUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGdldCBoZWFkZXJzKCkgeyByZXR1cm4gcmVwb3J0U2Vzc2lvbkhlYWRlcnModGhpcy5zZXNzaW9uPy5nZXRDdXJyZW50U2Vzc2lvbkNvbnRleHQoKSA/PyB7fSk7IH1cbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFJFUE9SVElOR19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgZ2V0RW50aXRpZXModHlwZXM/OiBEYXRhYmFzZUVudGl0eVR5cGVbXSk6IE9ic2VydmFibGU8RGF0YWJhc2VFbnRpdHlNZXRhZGF0YVtdPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnPy5hcGlCYXNlVXJsO1xuICAgIGlmIChiYXNlVXJsICYmIHRoaXMuaHR0cCkge1xuICAgICAgY29uc3QgdHlwZVBhcmFtID0gdHlwZXMgPyB0eXBlcy5qb2luKCcsJykgOiAnJztcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLmdldDxEYXRhYmFzZUVudGl0eU1ldGFkYXRhW10+KGAke2Jhc2VVcmx9L3NjaGVtYS9lbnRpdGllc2AsIHtcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICAgICAgcGFyYW1zOiB0eXBlUGFyYW0gPyB7IHR5cGVzOiB0eXBlUGFyYW0gfSA6IHt9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0h0dHBTY2hlbWFEaXNjb3ZlcnldIFNjaGVtYSBkaXNjb3ZlcnkgcmVxdWVzdCBmYWlsZWQ6JywgZXJyKTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignW2J3YXlzLXJlcG9ydF0gU2NoZW1hIGRpc2NvdmVyeSByZXF1aXJlcyBhIHJlYWNoYWJsZSBIVFRQIGJhY2tlbmQuJykpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZihbXSk7XG4gIH1cblxuICBnZXRDb2x1bW5zKFxuICAgIGVudGl0eU5hbWU6IHN0cmluZyxcbiAgICBzY2hlbWEgPSAnZGJvJyxcbiAgICB0eXBlPzogRGF0YWJhc2VFbnRpdHlUeXBlXG4gICk6IE9ic2VydmFibGU8RW50aXR5Q29sdW1uTWV0YWRhdGFbXT4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZz8uYXBpQmFzZVVybDtcbiAgICBpZiAoYmFzZVVybCAmJiB0aGlzLmh0dHApIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLmdldDxFbnRpdHlDb2x1bW5NZXRhZGF0YVtdPihgJHtiYXNlVXJsfS9zY2hlbWEvY29sdW1uc2AsIHtcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmhlYWRlcnMsXG4gICAgICAgICAgcGFyYW1zOiB7IGVudGl0eU5hbWUsIHNjaGVtYSwgLi4uKHR5cGUgPyB7IHR5cGUgfSA6IHt9KSB9LFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW0h0dHBTY2hlbWFEaXNjb3ZlcnldIEZhaWxlZCB0byBnZXQgY29sdW1ucyBmb3IgJHtlbnRpdHlOYW1lfTpgLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdbYndheXMtcmVwb3J0XSBDb2x1bW4gZGlzY292ZXJ5IGZhaWxlZCBvciBpcyBub3QgY29uZmlndXJlZC4nKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdbYndheXMtcmVwb3J0XSBDb2x1bW4gZGlzY292ZXJ5IGZhaWxlZCBvciBpcyBub3QgY29uZmlndXJlZC4nKSk7XG4gIH1cblxuICBnZXRQYXJhbWV0ZXJzKGVudGl0eU5hbWU6IHN0cmluZywgc2NoZW1hID0gJ2RibycpOiBPYnNlcnZhYmxlPFByb2NlZHVyZVBhcmFtZXRlck1ldGFkYXRhW10+IHtcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWc/LmFwaUJhc2VVcmw7XG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgIC5nZXQ8UHJvY2VkdXJlUGFyYW1ldGVyTWV0YWRhdGFbXT4oYCR7YmFzZVVybH0vc2NoZW1hL3BhcmFtZXRlcnNgLCB7XG4gICAgICAgICAgaGVhZGVyczogdGhpcy5oZWFkZXJzLFxuICAgICAgICAgIHBhcmFtczogeyBlbnRpdHlOYW1lLCBzY2hlbWEgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtIdHRwU2NoZW1hRGlzY292ZXJ5XSBGYWlsZWQgdG8gZ2V0IHBhcmFtZXRlcnMgZm9yICR7ZW50aXR5TmFtZX06YCwgZXJyKTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignW2J3YXlzLXJlcG9ydF0gUGFyYW1ldGVyIGRpc2NvdmVyeSBmYWlsZWQgb3IgaXMgbm90IGNvbmZpZ3VyZWQuJykpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignW2J3YXlzLXJlcG9ydF0gUGFyYW1ldGVyIGRpc2NvdmVyeSBmYWlsZWQgb3IgaXMgbm90IGNvbmZpZ3VyZWQuJykpO1xuICB9XG5cblxufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXMgKi9cbmV4cG9ydCBjb25zdCBIdHRwU2NoZW1hRGlzY292ZXJ5QWRhcHRlciA9IEh0dHBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyO1xuIl19
|
|
@@ -12,4 +12,4 @@ export { EndpointLookupAdapter } from './endpoint-lookup.adapter';
|
|
|
12
12
|
export { EndpointPersistenceAdapter } from './endpoint-persistence.adapter';
|
|
13
13
|
export { EndpointMasterDataAdapter } from './endpoint-masterdata.adapter';
|
|
14
14
|
export { BWAYS_REPORT_ENDPOINTS } from './endpoint-tokens';
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9hZGFwdGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLDBCQUEwQixHQUMzQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEdBQ2xCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixxQkFBcUIsR0FDdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHNCQUFzQixHQUN2QixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFDTCxxQkFBcUIsR0FDdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsb0NBQW9DLEdBQ3JDLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUNMLDJCQUEyQixHQUM1QixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIEh0dHBSZXBvcnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyLFxuICBIdHRwU2NoZW1hRGlzY292ZXJ5QWRhcHRlcixcbn0gZnJvbSAnLi9odHRwLXNjaGVtYS1kaXNjb3ZlcnkuYWRhcHRlcic7XG5leHBvcnQge1xuICBIdHRwUmVwb3J0TG9va3VwQWRhcHRlcixcbiAgSHR0cExvb2t1cEFkYXB0ZXIsXG59IGZyb20gJy4vaHR0cC1sb29rdXAuYWRhcHRlcic7XG5leHBvcnQge1xuICBIdHRwUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsXG4gIEh0dHBEYXRhU291cmNlQWRhcHRlcixcbn0gZnJvbSAnLi9odHRwLWRhdGFzb3VyY2UuYWRhcHRlcic7XG5leHBvcnQge1xuICBIdHRwUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxuICBIdHRwUGVyc2lzdGVuY2VBZGFwdGVyLFxufSBmcm9tICcuL2h0dHAtcGVyc2lzdGVuY2UuYWRhcHRlcic7XG5leHBvcnQge1xuICBIdHRwTWFzdGVyRGF0YUFkYXB0ZXIsXG59IGZyb20gJy4vaHR0cC1tYXN0ZXJkYXRhLmFkYXB0ZXInO1xuZXhwb3J0IHtcbiAgTG9jYWxTdG9yYWdlUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLFxufSBmcm9tICcuL2xvY2FsLXN0b3JhZ2UtcGVyc2lzdGVuY2UuYWRhcHRlcic7XG5leHBvcnQge1xuICBNb2NrUmVwb3J0RGF0YVNvdXJjZUFkYXB0ZXIsXG59IGZyb20gJy4vbW9jay1kYXRhc291cmNlLmFkYXB0ZXInO1xuXG4vLyBFbmRwb2ludC1iYXNlZCBhZGFwdGVycyAodXNlZCBieSBCd2F5c1JlcG9ydENvbmZpZyBzaW1wbGUgY29uZmlnKVxuZXhwb3J0IHsgRW5kcG9pbnRTY2hlbWFEaXNjb3ZlcnlBZGFwdGVyIH0gZnJvbSAnLi9lbmRwb2ludC1zY2hlbWEtZGlzY292ZXJ5LmFkYXB0ZXInO1xuZXhwb3J0IHsgRW5kcG9pbnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4vZW5kcG9pbnQtZGF0YXNvdXJjZS5hZGFwdGVyJztcbmV4cG9ydCB7IEVuZHBvaW50TG9va3VwQWRhcHRlciB9IGZyb20gJy4vZW5kcG9pbnQtbG9va3VwLmFkYXB0ZXInO1xuZXhwb3J0IHsgRW5kcG9pbnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuL2VuZHBvaW50LXBlcnNpc3RlbmNlLmFkYXB0ZXInO1xuZXhwb3J0IHsgRW5kcG9pbnRNYXN0ZXJEYXRhQWRhcHRlciB9IGZyb20gJy4vZW5kcG9pbnQtbWFzdGVyZGF0YS5hZGFwdGVyJztcbmV4cG9ydCB7IEJXQVlTX1JFUE9SVF9FTkRQT0lOVFMgfSBmcm9tICcuL2VuZHBvaW50LXRva2Vucyc7XG5leHBvcnQgdHlwZSB7IEJ3YXlzUmVwb3J0RW5kcG9pbnRzLCBCd2F5c1JlcG9ydEFwaVVybHMgfSBmcm9tICcuL2VuZHBvaW50LXRva2Vucyc7XG4iXX0=
|
|
@@ -75,10 +75,19 @@ export class LocalStorageReportPersistenceAdapter extends ReportPersistenceAdapt
|
|
|
75
75
|
}
|
|
76
76
|
return throwError(() => new Error(`Report definition with ID "${reportId}" not found in storage.`));
|
|
77
77
|
}
|
|
78
|
-
save(report) {
|
|
78
|
+
save(report, options) {
|
|
79
79
|
try {
|
|
80
|
-
this.
|
|
81
|
-
|
|
80
|
+
if (options?.createOnly && this.storage.getItem(STORAGE_PREFIX + report.id)) {
|
|
81
|
+
return throwError(() => new Error('Report ID already exists. Choose a different ID.'));
|
|
82
|
+
}
|
|
83
|
+
const raw = this.storage.getItem(STORAGE_PREFIX + report.id);
|
|
84
|
+
if (options?.expectedVersion !== undefined && (!raw || (JSON.parse(raw).version ?? 0) !== options.expectedVersion)) {
|
|
85
|
+
return throwError(() => new Error('Report changed or was deleted. Review it and confirm the update again.'));
|
|
86
|
+
}
|
|
87
|
+
const saved = options?.expectedVersion !== undefined ? { ...report, version: options.expectedVersion + 1 }
|
|
88
|
+
: options?.createOnly ? { ...report, version: 1 } : report;
|
|
89
|
+
this.saveDirect(saved);
|
|
90
|
+
return of(saved);
|
|
82
91
|
}
|
|
83
92
|
catch (err) {
|
|
84
93
|
return throwError(() => (err instanceof Error ? err : new Error(String(err))));
|
|
@@ -136,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
136
145
|
providedIn: 'root',
|
|
137
146
|
}]
|
|
138
147
|
}], ctorParameters: () => [] });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvbG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQUVsRixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN4QyxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQztBQUtwQyxNQUFNLE9BQU8sb0NBQXFDLFNBQVEsd0JBQXdCO0lBQy9ELGVBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxPQUFPLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFeEQ7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFl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VSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQSxDQUFDO1FBQ1osQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7d0dBbElVLG9DQUFvQzs0R0FBcEMsb0NBQW9DLGNBRm5DLE1BQU07OzRGQUVQLG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJlcG9ydERlZmluaXRpb24sIFJlcG9ydFN1bW1hcnkgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRUZW1wbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9mZWF0dXJlcy9kZXNpZ25lci9zZXJ2aWNlcy9yZXBvcnQtdGVtcGxhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXN0b3JhZ2Uuc2VydmljZSc7XG5cbmNvbnN0IFNUT1JBR0VfUFJFRklYID0gJ2J3YXlzX3JwdF9kZWZfJztcbmNvbnN0IElOREVYX0tFWSA9ICdid2F5c19ycHRfaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIGV4dGVuZHMgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVNlcnZpY2UgPSBpbmplY3QoUmVwb3J0VGVtcGxhdGVTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2UgPSBpbmplY3QoUmVwb3J0U3RvcmFnZVNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zZWVkRGVmYXVsdEJsdWVwcmludHNJZkVtcHR5KCk7XG4gIH1cblxuICBwcml2YXRlIHNlZWREZWZhdWx0Qmx1ZXByaW50c0lmRW1wdHkoKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKGluZGV4Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLnRlbXBsYXRlU2VydmljZSkge1xuICAgICAgY29uc3QgYmx1ZXByaW50cyA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlcygpO1xuICAgICAgYmx1ZXByaW50cy5mb3JFYWNoKChicCkgPT4ge1xuICAgICAgICBjb25zdCBkZWY6IFJlcG9ydERlZmluaXRpb24gPSB7XG4gICAgICAgICAgLi4uYnAuZGVmaW5pdGlvbixcbiAgICAgICAgICBpZDogYnAuaWQsXG4gICAgICAgICAgcGFyYW1ldGVyczogYnAuZGVmaW5pdGlvbi5wYXJhbWV0ZXJzIHx8IFtdLFxuICAgICAgICAgIGxheW91dDogYnAuZGVmaW5pdGlvbi5sYXlvdXQsXG4gICAgICAgICAgZGF0YVNvdXJjZXM6IGJwLmRlZmluaXRpb24uZGF0YVNvdXJjZXMsXG4gICAgICAgICAgY29tcG9uZW50czogYnAuZGVmaW5pdGlvbi5jb21wb25lbnRzLFxuICAgICAgICAgIGdyaWQ6IGJwLmRlZmluaXRpb24uZ3JpZCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEluZGV4KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLmdldEpTT048c3RyaW5nW10+KElOREVYX0tFWSwgW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlSW5kZXgoaW5kZXg6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldEpTT04oSU5ERVhfS0VZLCBpbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVEaXJlY3QoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5zdG9yYWdlLnNldEpTT04oU1RPUkFHRV9QUkVGSVggKyBkZWYuaWQsIGRlZik7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgaWYgKCFpbmRleC5pbmNsdWRlcyhkZWYuaWQpKSB7XG4gICAgICBpbmRleC5wdXNoKGRlZi5pZCk7XG4gICAgICB0aGlzLnNhdmVJbmRleChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgbG9hZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyByZXBvcnRJZCk7XG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIHJldHVybiBvZihkZWYpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHJlcG9ydCBcIiR7cmVwb3J0SWR9XCIgZnJvbSBzdG9yYWdlLmApKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjazogY2hlY2sgdGVtcGxhdGUgc2VydmljZSBibHVlcHJpbnRzXG4gICAgaWYgKHRoaXMudGVtcGxhdGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBicCA9IHRoaXMudGVtcGxhdGVTZXJ2aWNlLmdldFRlbXBsYXRlQnlJZChyZXBvcnRJZCk7XG4gICAgICBpZiAoYnApIHtcbiAgICAgICAgY29uc3QgZGVmOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgICAgIC4uLmJwLmRlZmluaXRpb24sXG4gICAgICAgICAgaWQ6IGJwLmlkLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IGJwLmRlZmluaXRpb24ucGFyYW1ldGVycyB8fCBbXSxcbiAgICAgICAgICBsYXlvdXQ6IGJwLmRlZmluaXRpb24ubGF5b3V0LFxuICAgICAgICAgIGRhdGFTb3VyY2VzOiBicC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLFxuICAgICAgICAgIGNvbXBvbmVudHM6IGJwLmRlZmluaXRpb24uY29tcG9uZW50cyxcbiAgICAgICAgICBncmlkOiBicC5kZWZpbml0aW9uLmdyaWQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2F2ZURpcmVjdChkZWYpO1xuICAgICAgICByZXR1cm4gb2YoZGVmKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYFJlcG9ydCBkZWZpbml0aW9uIHdpdGggSUQgXCIke3JlcG9ydElkfVwiIG5vdCBmb3VuZCBpbiBzdG9yYWdlLmApKTtcbiAgfVxuXG4gIHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc2F2ZURpcmVjdChyZXBvcnQpO1xuICAgICAgcmV0dXJuIG9mKHJlcG9ydCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpKSk7XG4gICAgfVxuICB9XG5cbiAgbGlzdCgpOiBPYnNlcnZhYmxlPFJlcG9ydFN1bW1hcnlbXT4ge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGNvbnN0IHN1bW1hcmllczogUmVwb3J0U3VtbWFyeVtdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGlkIG9mIGluZGV4KSB7XG4gICAgICBjb25zdCByYXcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIGlkKTtcbiAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkZWYgPSBKU09OLnBhcnNlKHJhdykgYXMgUmVwb3J0RGVmaW5pdGlvbjtcbiAgICAgICAgICBzdW1tYXJpZXMucHVzaCh7XG4gICAgICAgICAgICBpZDogZGVmLmlkLFxuICAgICAgICAgICAgbmFtZTogZGVmLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGRlZi5jYXRlZ29yeSxcbiAgICAgICAgICAgIHZlcnNpb246IGRlZi52ZXJzaW9uLFxuICAgICAgICAgICAgaXNQdWJsaXNoZWQ6ICEhZGVmLmlzUHVibGlzaGVkLFxuICAgICAgICAgICAgbGFzdE1vZGlmaWVkOiBkZWYudXBkYXRlZEF0ID8/IGRlZi5jcmVhdGVkQXQsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWRCeTogZGVmLnVwZGF0ZWRCeSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvZihzdW1tYXJpZXMpO1xuICB9XG5cbiAgZGVsZXRlKHJlcG9ydElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICB0aGlzLnN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0SW5kZXgoKS5maWx0ZXIoKGlkKSA9PiBpZCAhPT0gcmVwb3J0SWQpO1xuICAgIHRoaXMuc2F2ZUluZGV4KGluZGV4KTtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1Ymxpc2gocmVwb3J0SWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgcmF3ID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9QUkVGSVggKyByZXBvcnRJZCk7XG4gICAgaWYgKHJhdykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVmID0gSlNPTi5wYXJzZShyYXcpIGFzIFJlcG9ydERlZmluaXRpb247XG4gICAgICAgIGRlZi52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgZGVmLmlzUHVibGlzaGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zYXZlRGlyZWN0KGRlZik7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG59XG4iXX0=
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvbG9jYWwtc3RvcmFnZS1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx3QkFBd0IsRUFBcUIsTUFBTSwwQ0FBMEMsQ0FBQztBQUV2RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7QUFFbEYsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUM7QUFDeEMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7QUFLcEMsTUFBTSxPQUFPLG9DQUFxQyxTQUFRLHdCQUF3QjtJQUMvRCxlQUFlLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEUsT0FBTyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhEO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFB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Rm5DLE1BQU07OzRGQUVQLG9DQUFvQztrQkFIaEQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIsIFJlcG9ydFNhdmVPcHRpb25zIH0gZnJvbSAnLi4vY29udHJhY3RzL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uLCBSZXBvcnRTdW1tYXJ5IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0VGVtcGxhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZmVhdHVyZXMvZGVzaWduZXIvc2VydmljZXMvcmVwb3J0LXRlbXBsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0U3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1zdG9yYWdlLnNlcnZpY2UnO1xuXG5jb25zdCBTVE9SQUdFX1BSRUZJWCA9ICdid2F5c19ycHRfZGVmXyc7XG5jb25zdCBJTkRFWF9LRVkgPSAnYndheXNfcnB0X2luZGV4JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsU3RvcmFnZVJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciBleHRlbmRzIFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVtcGxhdGVTZXJ2aWNlID0gaW5qZWN0KFJlcG9ydFRlbXBsYXRlU2VydmljZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlID0gaW5qZWN0KFJlcG9ydFN0b3JhZ2VTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2VlZERlZmF1bHRCbHVlcHJpbnRzSWZFbXB0eSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWVkRGVmYXVsdEJsdWVwcmludHNJZkVtcHR5KCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGlmIChpbmRleC5sZW5ndGggPT09IDAgJiYgdGhpcy50ZW1wbGF0ZVNlcnZpY2UpIHtcbiAgICAgIGNvbnN0IGJsdWVwcmludHMgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZXMoKTtcbiAgICAgIGJsdWVwcmludHMuZm9yRWFjaCgoYnApID0+IHtcbiAgICAgICAgY29uc3QgZGVmOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgICAgIC4uLmJwLmRlZmluaXRpb24sXG4gICAgICAgICAgaWQ6IGJwLmlkLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IGJwLmRlZmluaXRpb24ucGFyYW1ldGVycyB8fCBbXSxcbiAgICAgICAgICBsYXlvdXQ6IGJwLmRlZmluaXRpb24ubGF5b3V0LFxuICAgICAgICAgIGRhdGFTb3VyY2VzOiBicC5kZWZpbml0aW9uLmRhdGFTb3VyY2VzLFxuICAgICAgICAgIGNvbXBvbmVudHM6IGJwLmRlZmluaXRpb24uY29tcG9uZW50cyxcbiAgICAgICAgICBncmlkOiBicC5kZWZpbml0aW9uLmdyaWQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2F2ZURpcmVjdChkZWYpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRJbmRleCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5nZXRKU09OPHN0cmluZ1tdPihJTkRFWF9LRVksIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgc2F2ZUluZGV4KGluZGV4OiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5zZXRKU09OKElOREVYX0tFWSwgaW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlRGlyZWN0KGRlZjogUmVwb3J0RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc3RvcmFnZS5zZXRKU09OKFNUT1JBR0VfUFJFRklYICsgZGVmLmlkLCBkZWYpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpO1xuICAgIGlmICghaW5kZXguaW5jbHVkZXMoZGVmLmlkKSkge1xuICAgICAgaW5kZXgucHVzaChkZWYuaWQpO1xuICAgICAgdGhpcy5zYXZlSW5kZXgoaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbj4ge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfUFJFRklYICsgcmVwb3J0SWQpO1xuICAgIGlmIChyYXcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRlZiA9IEpTT04ucGFyc2UocmF3KSBhcyBSZXBvcnREZWZpbml0aW9uO1xuICAgICAgICByZXR1cm4gb2YoZGVmKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSByZXBvcnQgXCIke3JlcG9ydElkfVwiIGZyb20gc3RvcmFnZS5gKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2s6IGNoZWNrIHRlbXBsYXRlIHNlcnZpY2UgYmx1ZXByaW50c1xuICAgIGlmICh0aGlzLnRlbXBsYXRlU2VydmljZSkge1xuICAgICAgY29uc3QgYnAgPSB0aGlzLnRlbXBsYXRlU2VydmljZS5nZXRUZW1wbGF0ZUJ5SWQocmVwb3J0SWQpO1xuICAgICAgaWYgKGJwKSB7XG4gICAgICAgIGNvbnN0IGRlZjogUmVwb3J0RGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICAuLi5icC5kZWZpbml0aW9uLFxuICAgICAgICAgIGlkOiBicC5pZCxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBicC5kZWZpbml0aW9uLnBhcmFtZXRlcnMgfHwgW10sXG4gICAgICAgICAgbGF5b3V0OiBicC5kZWZpbml0aW9uLmxheW91dCxcbiAgICAgICAgICBkYXRhU291cmNlczogYnAuZGVmaW5pdGlvbi5kYXRhU291cmNlcyxcbiAgICAgICAgICBjb21wb25lbnRzOiBicC5kZWZpbml0aW9uLmNvbXBvbmVudHMsXG4gICAgICAgICAgZ3JpZDogYnAuZGVmaW5pdGlvbi5ncmlkLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnNhdmVEaXJlY3QoZGVmKTtcbiAgICAgICAgcmV0dXJuIG9mKGRlZik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBSZXBvcnQgZGVmaW5pdGlvbiB3aXRoIElEIFwiJHtyZXBvcnRJZH1cIiBub3QgZm91bmQgaW4gc3RvcmFnZS5gKSk7XG4gIH1cblxuICBzYXZlKHJlcG9ydDogUmVwb3J0RGVmaW5pdGlvbiwgb3B0aW9ucz86IFJlcG9ydFNhdmVPcHRpb25zKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChvcHRpb25zPy5jcmVhdGVPbmx5ICYmIHRoaXMuc3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfUFJFRklYICsgcmVwb3J0LmlkKSkge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1JlcG9ydCBJRCBhbHJlYWR5IGV4aXN0cy4gQ2hvb3NlIGEgZGlmZmVyZW50IElELicpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfUFJFRklYICsgcmVwb3J0LmlkKTtcbiAgICAgIGlmIChvcHRpb25zPy5leHBlY3RlZFZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiAoIXJhdyB8fCAoSlNPTi5wYXJzZShyYXcpLnZlcnNpb24gPz8gMCkgIT09IG9wdGlvbnMuZXhwZWN0ZWRWZXJzaW9uKSkge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ1JlcG9ydCBjaGFuZ2VkIG9yIHdhcyBkZWxldGVkLiBSZXZpZXcgaXQgYW5kIGNvbmZpcm0gdGhlIHVwZGF0ZSBhZ2Fpbi4nKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBzYXZlZCA9IG9wdGlvbnM/LmV4cGVjdGVkVmVyc2lvbiAhPT0gdW5kZWZpbmVkID8geyAuLi5yZXBvcnQsIHZlcnNpb246IG9wdGlvbnMuZXhwZWN0ZWRWZXJzaW9uICsgMSB9XG4gICAgICAgIDogb3B0aW9ucz8uY3JlYXRlT25seSA/IHsgLi4ucmVwb3J0LCB2ZXJzaW9uOiAxIH0gOiByZXBvcnQ7XG4gICAgICB0aGlzLnNhdmVEaXJlY3Qoc2F2ZWQpO1xuICAgICAgcmV0dXJuIG9mKHNhdmVkKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IChlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyKSkpKTtcbiAgICB9XG4gIH1cblxuICBsaXN0KCk6IE9ic2VydmFibGU8UmVwb3J0U3VtbWFyeVtdPiB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmdldEluZGV4KCk7XG4gICAgY29uc3Qgc3VtbWFyaWVzOiBSZXBvcnRTdW1tYXJ5W10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgaWQgb2YgaW5kZXgpIHtcbiAgICAgIGNvbnN0IHJhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfUFJFRklYICsgaWQpO1xuICAgICAgaWYgKHJhdykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRlZiA9IEpTT04ucGFyc2UocmF3KSBhcyBSZXBvcnREZWZpbml0aW9uO1xuICAgICAgICAgIHN1bW1hcmllcy5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBkZWYuaWQsXG4gICAgICAgICAgICBuYW1lOiBkZWYubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZWYuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBjYXRlZ29yeTogZGVmLmNhdGVnb3J5LFxuICAgICAgICAgICAgdmVyc2lvbjogZGVmLnZlcnNpb24sXG4gICAgICAgICAgICBpc1B1Ymxpc2hlZDogISFkZWYuaXNQdWJsaXNoZWQsXG4gICAgICAgICAgICBsYXN0TW9kaWZpZWQ6IGRlZi51cGRhdGVkQXQgPz8gZGVmLmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIGxhc3RNb2RpZmllZEJ5OiBkZWYudXBkYXRlZEJ5LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHt9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mKHN1bW1hcmllcyk7XG4gIH1cblxuICBkZWxldGUocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHRoaXMuc3RvcmFnZS5yZW1vdmVJdGVtKFNUT1JBR0VfUFJFRklYICsgcmVwb3J0SWQpO1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRJbmRleCgpLmZpbHRlcigoaWQpID0+IGlkICE9PSByZXBvcnRJZCk7XG4gICAgdGhpcy5zYXZlSW5kZXgoaW5kZXgpO1xuICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICB9XG5cbiAgcHVibGlzaChyZXBvcnRJZDogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zdCByYXcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX1BSRUZJWCArIHJlcG9ydElkKTtcbiAgICBpZiAocmF3KSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWYgPSBKU09OLnBhcnNlKHJhdykgYXMgUmVwb3J0RGVmaW5pdGlvbjtcbiAgICAgICAgZGVmLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICBkZWYuaXNQdWJsaXNoZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNhdmVEaXJlY3QoZGVmKTtcbiAgICAgIH0gY2F0Y2gge31cbiAgICB9XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { catchError, map, throwError } from 'rxjs';
|
|
2
|
+
export function reportIdAvailability(http, url, headers, fallback) {
|
|
3
|
+
return http.get(url, { headers }).pipe(map(result => {
|
|
4
|
+
if (typeof result?.exists !== 'boolean')
|
|
5
|
+
throw new Error('Invalid report ID verification response.');
|
|
6
|
+
return result.exists;
|
|
7
|
+
}), catchError(error => error?.status === 404 ? fallback() : throwError(() => new Error(error?.error?.message || error?.message || 'Could not verify the report ID. Please retry.'))));
|
|
8
|
+
}
|
|
9
|
+
/** Version/name are optional for compatibility with earlier availability endpoints. */
|
|
10
|
+
export function reportIdInspection(http, url, headers, fallback) {
|
|
11
|
+
return http.get(url, { headers }).pipe(map(result => {
|
|
12
|
+
if (typeof result?.exists !== 'boolean')
|
|
13
|
+
throw new Error('Invalid report ID verification response.');
|
|
14
|
+
if (result.version !== undefined && (!Number.isInteger(result.version) || result.version < 0)) {
|
|
15
|
+
throw new Error('Invalid report version in ID verification response.');
|
|
16
|
+
}
|
|
17
|
+
return { exists: result.exists, name: typeof result.name === 'string' ? result.name : undefined, version: result.version };
|
|
18
|
+
}), catchError(error => error?.status === 404 ? fallback() : throwError(() => new Error(error?.error?.message || error?.message || 'Could not verify the report ID. Please retry.'))));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWlkLWF2YWlsYWJpbGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL3JlcG9ydC1pZC1hdmFpbGFiaWxpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFnQixFQUFFLEdBQVcsRUFBRSxPQUFvQixFQUFFLFFBQW1DO0lBQzNILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBc0IsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3pELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNYLElBQUksT0FBTyxNQUFNLEVBQUUsTUFBTSxLQUFLLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDckcsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUN2RSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxLQUFLLEVBQUUsT0FBTyxJQUFJLCtDQUErQyxDQUFDLENBQUMsQ0FBQyxDQUMxRyxDQUFDO0FBQ0osQ0FBQztBQUVELHVGQUF1RjtBQUN2RixNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBZ0IsRUFBRSxHQUFXLEVBQUUsT0FBb0IsRUFBRSxRQUEwQztJQUNoSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQWlCLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNwRCxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDWCxJQUFJLE9BQU8sTUFBTSxFQUFFLE1BQU0sS0FBSyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3JHLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM5RixNQUFNLElBQUksS0FBSyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0gsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQ3ZFLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxPQUFPLElBQUksK0NBQStDLENBQUMsQ0FBQyxDQUFDLENBQzFHLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3J0SWRTdGF0dXMgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgbWFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRJZEF2YWlsYWJpbGl0eShodHRwOiBIdHRwQ2xpZW50LCB1cmw6IHN0cmluZywgaGVhZGVyczogSHR0cEhlYWRlcnMsIGZhbGxiYWNrOiAoKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIHJldHVybiBodHRwLmdldDx7IGV4aXN0czogYm9vbGVhbiB9Pih1cmwsIHsgaGVhZGVycyB9KS5waXBlKFxuICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQ/LmV4aXN0cyAhPT0gJ2Jvb2xlYW4nKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVwb3J0IElEIHZlcmlmaWNhdGlvbiByZXNwb25zZS4nKTtcbiAgICAgIHJldHVybiByZXN1bHQuZXhpc3RzO1xuICAgIH0pLFxuICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gZXJyb3I/LnN0YXR1cyA9PT0gNDA0ID8gZmFsbGJhY2soKSA6IHRocm93RXJyb3IoKCkgPT5cbiAgICAgIG5ldyBFcnJvcihlcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgZXJyb3I/Lm1lc3NhZ2UgfHwgJ0NvdWxkIG5vdCB2ZXJpZnkgdGhlIHJlcG9ydCBJRC4gUGxlYXNlIHJldHJ5LicpKSksXG4gICk7XG59XG5cbi8qKiBWZXJzaW9uL25hbWUgYXJlIG9wdGlvbmFsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciBhdmFpbGFiaWxpdHkgZW5kcG9pbnRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydElkSW5zcGVjdGlvbihodHRwOiBIdHRwQ2xpZW50LCB1cmw6IHN0cmluZywgaGVhZGVyczogSHR0cEhlYWRlcnMsIGZhbGxiYWNrOiAoKSA9PiBPYnNlcnZhYmxlPFJlcG9ydElkU3RhdHVzPik6IE9ic2VydmFibGU8UmVwb3J0SWRTdGF0dXM+IHtcbiAgcmV0dXJuIGh0dHAuZ2V0PFJlcG9ydElkU3RhdHVzPih1cmwsIHsgaGVhZGVycyB9KS5waXBlKFxuICAgIG1hcChyZXN1bHQgPT4ge1xuICAgICAgaWYgKHR5cGVvZiByZXN1bHQ/LmV4aXN0cyAhPT0gJ2Jvb2xlYW4nKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVwb3J0IElEIHZlcmlmaWNhdGlvbiByZXNwb25zZS4nKTtcbiAgICAgIGlmIChyZXN1bHQudmVyc2lvbiAhPT0gdW5kZWZpbmVkICYmICghTnVtYmVyLmlzSW50ZWdlcihyZXN1bHQudmVyc2lvbikgfHwgcmVzdWx0LnZlcnNpb24gPCAwKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVwb3J0IHZlcnNpb24gaW4gSUQgdmVyaWZpY2F0aW9uIHJlc3BvbnNlLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZXhpc3RzOiByZXN1bHQuZXhpc3RzLCBuYW1lOiB0eXBlb2YgcmVzdWx0Lm5hbWUgPT09ICdzdHJpbmcnID8gcmVzdWx0Lm5hbWUgOiB1bmRlZmluZWQsIHZlcnNpb246IHJlc3VsdC52ZXJzaW9uIH07XG4gICAgfSksXG4gICAgY2F0Y2hFcnJvcihlcnJvciA9PiBlcnJvcj8uc3RhdHVzID09PSA0MDQgPyBmYWxsYmFjaygpIDogdGhyb3dFcnJvcigoKSA9PlxuICAgICAgbmV3IEVycm9yKGVycm9yPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnJvcj8ubWVzc2FnZSB8fCAnQ291bGQgbm90IHZlcmlmeSB0aGUgcmVwb3J0IElELiBQbGVhc2UgcmV0cnkuJykpKSxcbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
2
|
+
/** Authentication stays with host interceptors; reporting forwards tenant context. */
|
|
3
|
+
export function reportSessionHeaders(session) {
|
|
4
|
+
let headers = new HttpHeaders();
|
|
5
|
+
for (const [key, header] of [['companyId', 'X-Company-Id'], ['branchId', 'X-Branch-Id'], ['userId', 'X-User-Id']]) {
|
|
6
|
+
if (session[key] != null)
|
|
7
|
+
headers = headers.set(header, String(session[key]));
|
|
8
|
+
}
|
|
9
|
+
return headers;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1oZWFkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvc2Vzc2lvbi1oZWFkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxzRkFBc0Y7QUFDdEYsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQWdDO0lBQ25FLElBQUksT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDaEMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xILElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUk7WUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuLyoqIEF1dGhlbnRpY2F0aW9uIHN0YXlzIHdpdGggaG9zdCBpbnRlcmNlcHRvcnM7IHJlcG9ydGluZyBmb3J3YXJkcyB0ZW5hbnQgY29udGV4dC4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRTZXNzaW9uSGVhZGVycyhzZXNzaW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IEh0dHBIZWFkZXJzIHtcbiAgbGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcbiAgZm9yIChjb25zdCBba2V5LCBoZWFkZXJdIG9mIFtbJ2NvbXBhbnlJZCcsICdYLUNvbXBhbnktSWQnXSwgWydicmFuY2hJZCcsICdYLUJyYW5jaC1JZCddLCBbJ3VzZXJJZCcsICdYLVVzZXItSWQnXV0pIHtcbiAgICBpZiAoc2Vzc2lvbltrZXldICE9IG51bGwpIGhlYWRlcnMgPSBoZWFkZXJzLnNldChoZWFkZXIsIFN0cmluZyhzZXNzaW9uW2tleV0pKTtcbiAgfVxuICByZXR1cm4gaGVhZGVycztcbn1cbiJdfQ==
|
|
@@ -5,4 +5,4 @@ export { ReportTranslationAdapter } from './translation.contract';
|
|
|
5
5
|
export { ReportSchemaDiscoveryAdapter } from './schema-discovery.contract';
|
|
6
6
|
export { ReportLookupAdapter } from './lookup.contract';
|
|
7
7
|
export * from './api-dtos';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9kYXRhLWFjY2Vzcy9jb250cmFjdHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFPM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEQsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBSZXBvcnREYXRhU291cmNlQWRhcHRlciB9IGZyb20gJy4vZGF0YS1zb3VyY2UuY29udHJhY3QnO1xuZXhwb3J0IHsgTWFzdGVyRGF0YVByb3ZpZGVyIH0gZnJvbSAnLi9tYXN0ZXItZGF0YS5wcm92aWRlcic7XG5leHBvcnQgdHlwZSB7IE1hc3RlckRhdGFPcHRpb25zLCBNYXN0ZXJEYXRhSXRlbSB9IGZyb20gJy4vbWFzdGVyLWRhdGEucHJvdmlkZXInO1xuZXhwb3J0IHR5cGUgeyBSZXBvcnRTYXZlT3B0aW9ucywgUmVwb3J0SWRTdGF0dXMgfSBmcm9tICcuL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5leHBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdCc7XG5leHBvcnQgeyBSZXBvcnRUcmFuc2xhdGlvbkFkYXB0ZXIgfSBmcm9tICcuL3RyYW5zbGF0aW9uLmNvbnRyYWN0JztcbmV4cG9ydCB7IFJlcG9ydFNjaGVtYURpc2NvdmVyeUFkYXB0ZXIgfSBmcm9tICcuL3NjaGVtYS1kaXNjb3ZlcnkuY29udHJhY3QnO1xuZXhwb3J0IHR5cGUge1xuICBEYXRhYmFzZUVudGl0eVR5cGUsXG4gIERhdGFiYXNlRW50aXR5TWV0YWRhdGEsXG4gIEVudGl0eUNvbHVtbk1ldGFkYXRhLFxuICBQcm9jZWR1cmVQYXJhbWV0ZXJNZXRhZGF0YSxcbn0gZnJvbSAnLi9zY2hlbWEtZGlzY292ZXJ5LmNvbnRyYWN0JztcbmV4cG9ydCB7IFJlcG9ydExvb2t1cEFkYXB0ZXIgfSBmcm9tICcuL2xvb2t1cC5jb250cmFjdCc7XG5leHBvcnQgdHlwZSB7IExvb2t1cFF1ZXJ5UmVxdWVzdCwgTG9va3VwT3B0aW9uSXRlbSB9IGZyb20gJy4vbG9va3VwLmNvbnRyYWN0JztcbmV4cG9ydCAqIGZyb20gJy4vYXBpLWR0b3MnO1xuIl19
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* The host application implements this to save/load report definitions
|
|
5
5
|
* to/from their backend (database, file system, API, etc.).
|
|
6
6
|
*/
|
|
7
|
+
import { map } from 'rxjs';
|
|
7
8
|
/**
|
|
8
9
|
* Contract for persisting report definitions.
|
|
9
10
|
*
|
|
@@ -21,5 +22,16 @@
|
|
|
21
22
|
* ```
|
|
22
23
|
*/
|
|
23
24
|
export class ReportPersistenceAdapter {
|
|
25
|
+
/** Returns true when this ID exists. Legacy host adapters may use the catalog fallback. */
|
|
26
|
+
checkId(reportId) {
|
|
27
|
+
return this.list().pipe(map(reports => reports.some(report => report.id.toLowerCase() === reportId.toLowerCase())));
|
|
28
|
+
}
|
|
29
|
+
/** Compact identity metadata used to confirm an overwrite. Legacy hosts use summaries. */
|
|
30
|
+
inspectId(reportId) {
|
|
31
|
+
return this.list().pipe(map(reports => {
|
|
32
|
+
const report = reports.find(item => item.id.toLowerCase() === reportId.toLowerCase());
|
|
33
|
+
return report ? { exists: true, name: report.name, version: report.version } : { exists: false };
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
24
36
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvY29udHJhY3RzL3JlcG9ydC1wZXJzaXN0ZW5jZS5jb250cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFnQnZDOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sT0FBZ0Isd0JBQXdCO0lBQzVDLDJGQUEyRjtJQUMzRixPQUFPLENBQUMsUUFBZ0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRUQsMEZBQTBGO0lBQzFGLFNBQVMsQ0FBQyxRQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3RGLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbkcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FnQkYiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJlcG9ydCBwZXJzaXN0ZW5jZSBjb250cmFjdC5cbiAqXG4gKiBUaGUgaG9zdCBhcHBsaWNhdGlvbiBpbXBsZW1lbnRzIHRoaXMgdG8gc2F2ZS9sb2FkIHJlcG9ydCBkZWZpbml0aW9uc1xuICogdG8vZnJvbSB0aGVpciBiYWNrZW5kIChkYXRhYmFzZSwgZmlsZSBzeXN0ZW0sIEFQSSwgZXRjLikuXG4gKi9cblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uLCBSZXBvcnRTdW1tYXJ5IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNhdmVPcHRpb25zIHtcbiAgLyoqIFJlamVjdCBhbiBleGlzdGluZyBJRCBpbnN0ZWFkIG9mIHVwZGF0aW5nIGl0LiBIb3N0cyBzaG91bGQgZW5mb3JjZSB0aGlzIGF0b21pY2FsbHkuICovXG4gIGNyZWF0ZU9ubHk/OiBib29sZWFuO1xuICAvKiogVXBkYXRlIG9ubHkgYW4gZXhpc3RpbmcgcmVwb3J0IGF0IHRoaXMgdmVyc2lvbjsgcmVqZWN0IG1pc3Npbmcgb3IgY2hhbmdlZCByZWNvcmRzLiAqL1xuICBleHBlY3RlZFZlcnNpb24/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SWRTdGF0dXMge1xuICBleGlzdHM6IGJvb2xlYW47XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZlcnNpb24/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udHJhY3QgZm9yIHBlcnNpc3RpbmcgcmVwb3J0IGRlZmluaXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBASW5qZWN0YWJsZSgpXG4gKiBleHBvcnQgY2xhc3MgTXlQZXJzaXN0ZW5jZUFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHsgc3VwZXIoKTsgfVxuICpcbiAqICAgbG9hZChyZXBvcnRJZCkge1xuICogICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlcG9ydERlZmluaXRpb24+KGAvYXBpL3JlcG9ydHMvJHtyZXBvcnRJZH1gKTtcbiAqICAgfVxuICogICAvLyAuLi4gb3RoZXIgbWV0aG9kc1xuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIge1xuICAvKiogUmV0dXJucyB0cnVlIHdoZW4gdGhpcyBJRCBleGlzdHMuIExlZ2FjeSBob3N0IGFkYXB0ZXJzIG1heSB1c2UgdGhlIGNhdGFsb2cgZmFsbGJhY2suICovXG4gIGNoZWNrSWQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmxpc3QoKS5waXBlKG1hcChyZXBvcnRzID0+IHJlcG9ydHMuc29tZShyZXBvcnQgPT4gcmVwb3J0LmlkLnRvTG93ZXJDYXNlKCkgPT09IHJlcG9ydElkLnRvTG93ZXJDYXNlKCkpKSk7XG4gIH1cblxuICAvKiogQ29tcGFjdCBpZGVudGl0eSBtZXRhZGF0YSB1c2VkIHRvIGNvbmZpcm0gYW4gb3ZlcndyaXRlLiBMZWdhY3kgaG9zdHMgdXNlIHN1bW1hcmllcy4gKi9cbiAgaW5zcGVjdElkKHJlcG9ydElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlcG9ydElkU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdCgpLnBpcGUobWFwKHJlcG9ydHMgPT4ge1xuICAgICAgY29uc3QgcmVwb3J0ID0gcmVwb3J0cy5maW5kKGl0ZW0gPT4gaXRlbS5pZC50b0xvd2VyQ2FzZSgpID09PSByZXBvcnRJZC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIHJldHVybiByZXBvcnQgPyB7IGV4aXN0czogdHJ1ZSwgbmFtZTogcmVwb3J0Lm5hbWUsIHZlcnNpb246IHJlcG9ydC52ZXJzaW9uIH0gOiB7IGV4aXN0czogZmFsc2UgfTtcbiAgICB9KSk7XG4gIH1cblxuICAvKiogTG9hZCBhIGZ1bGwgcmVwb3J0IGRlZmluaXRpb24gYnkgSUQuICovXG4gIGFic3RyYWN0IGxvYWQocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UmVwb3J0RGVmaW5pdGlvbj47XG5cbiAgLyoqIFNhdmUgKGNyZWF0ZSBvciB1cGRhdGUpIGEgcmVwb3J0IGRlZmluaXRpb24uICovXG4gIGFic3RyYWN0IHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uLCBvcHRpb25zPzogUmVwb3J0U2F2ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPFJlcG9ydERlZmluaXRpb24+O1xuXG4gIC8qKiBMaXN0IGF2YWlsYWJsZSByZXBvcnRzIChzdW1tYXJpZXMgb25seSkuICovXG4gIGFic3RyYWN0IGxpc3QoKTogT2JzZXJ2YWJsZTxSZXBvcnRTdW1tYXJ5W10+O1xuXG4gIC8qKiBEZWxldGUgYSByZXBvcnQgYnkgSUQuICovXG4gIGFic3RyYWN0IGRlbGV0ZShyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAvKiogUHVibGlzaCBhIHNwZWNpZmljIHZlcnNpb24gb2YgYSByZXBvcnQuICovXG4gIGFic3RyYWN0IHB1Ymxpc2gocmVwb3J0SWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPjtcbn1cbiJdfQ==
|