@techextensor/tab-core-utility 2.2.191 → 2.2.193
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/index.mjs +6 -1
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +38 -22
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +14 -50
- package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +3 -2
- package/esm2022/lib/tab-core-utility/app/crud/tab-blueprint.service.mjs +41 -14
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +38 -49
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +84 -30
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +141 -12
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +141 -46
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +89 -38
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +156 -128
- package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/auth-response.adapter.mjs +79 -0
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +30 -25
- package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +9 -11
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +7 -45
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +79 -76
- package/esm2022/lib/tab-core-utility/app/helpers/login-response.adapter.mjs +76 -0
- package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +38 -0
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +8 -4
- package/esm2022/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.mjs +4 -4
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +8 -33
- package/esm2022/lib/tab-core-utility/app/helpers/transition-response.adapter.mjs +83 -0
- package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +42 -0
- package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +39 -1
- package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +36 -7
- package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +84 -47
- package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +24 -13
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +57 -23
- package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +21 -10
- package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +12 -6
- package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +11 -4
- package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +17 -16
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +1 -55
- package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +1 -164
- package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +36 -11
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +78 -1
- package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +90 -0
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +268 -0
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +207 -0
- package/index.d.ts +5 -0
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +25 -18
- package/lib/tab-core-utility/app/constants/common.d.ts +9 -0
- package/lib/tab-core-utility/app/constants/storage-constants.d.ts +2 -1
- package/lib/tab-core-utility/app/crud/tab-blueprint.service.d.ts +14 -8
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +8 -1
- package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +20 -10
- package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +33 -6
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +52 -10
- package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +16 -21
- package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +34 -19
- package/lib/tab-core-utility/app/enums/query.enum.d.ts +3 -6
- package/lib/tab-core-utility/app/helpers/auth-response.adapter.d.ts +32 -0
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +6 -9
- package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +3 -0
- package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
- package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +7 -51
- package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +1 -0
- package/lib/tab-core-utility/app/helpers/login-response.adapter.d.ts +29 -0
- package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +22 -0
- package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +2 -1
- package/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.d.ts +1 -1
- package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +1 -0
- package/lib/tab-core-utility/app/helpers/transition-response.adapter.d.ts +30 -0
- package/lib/tab-core-utility/app/interfaces/auth.interface.d.ts +1 -1
- package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +56 -6
- package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +84 -0
- package/lib/tab-core-utility/app/models/api-query.class.d.ts +54 -9
- package/lib/tab-core-utility/app/models/app-field.model.d.ts +4 -2
- package/lib/tab-core-utility/app/models/app-object.model.d.ts +5 -3
- package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +7 -2
- package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
- package/lib/tab-core-utility/app/utils/json.util.d.ts +3 -2
- package/lib/tab-core-utility/app/utils/req-res.util.d.ts +1 -9
- package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +0 -61
- package/lib/tab-core-utility/auth/auth.service.d.ts +6 -0
- package/lib/tab-core-utility/core/http-client/api.service.d.ts +46 -0
- package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +40 -0
- package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +73 -0
- package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +122 -0
- package/package.json +3 -2
|
@@ -3,16 +3,6 @@ import { Injectable } from '@angular/core';
|
|
|
3
3
|
import { QueryType } from '../../enums/query.enum';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export class RequestResponseHelper {
|
|
6
|
-
/**
|
|
7
|
-
* Generates the payload for inserting data into a table
|
|
8
|
-
* @param table The table name to insert data into
|
|
9
|
-
* @param whereClause The filter criteria for the insert operation
|
|
10
|
-
* @param value The value sets to be inserted
|
|
11
|
-
* @returns The payload for the insert operation
|
|
12
|
-
*/
|
|
13
|
-
insertPayload(table, whereClause, value) {
|
|
14
|
-
return this.createPayload(table, whereClause, value, QueryType.Insert);
|
|
15
|
-
}
|
|
16
6
|
/**
|
|
17
7
|
* Generates the payload for inserting data into a table in bulk
|
|
18
8
|
* @param table The table name to insert data into
|
|
@@ -26,43 +16,15 @@ export class RequestResponseHelper {
|
|
|
26
16
|
}
|
|
27
17
|
/**
|
|
28
18
|
* Generates the payload for deleting data from a table
|
|
29
|
-
*
|
|
30
|
-
* @param
|
|
31
|
-
* @
|
|
19
|
+
* NEW: Returns new format for /records/delete endpoint
|
|
20
|
+
* @param tableName The table name (entityName) to delete data from
|
|
21
|
+
* @param whereClause The filter criteria for the delete operation (NEW format with lowercase)
|
|
22
|
+
* @returns The payload for the delete operation in NEW format
|
|
32
23
|
*/
|
|
33
24
|
deletePayload(tableName, whereClause) {
|
|
34
25
|
return {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
Joins: [],
|
|
38
|
-
WhereClause: whereClause,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Generates the payload for updating data in a table
|
|
43
|
-
* @param tableName The table name to update data in
|
|
44
|
-
* @param whereClause The filter criteria for the update operation
|
|
45
|
-
* @param value The value sets to be updated
|
|
46
|
-
* @returns The payload for the update operation
|
|
47
|
-
*/
|
|
48
|
-
updateRequestPayload(tableName, whereClause, value) {
|
|
49
|
-
return this.createPayload(tableName, whereClause, value, QueryType.Update);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Creates a payload object based on the input parameters
|
|
53
|
-
* @param table The table name for the payload
|
|
54
|
-
* @param whereClause The filter criteria for the payload
|
|
55
|
-
* @param value The value sets for the payload
|
|
56
|
-
* @param queryType The type of query for the payload
|
|
57
|
-
* @returns The payload object with QueryObjectID, QueryType, Joins, WhereClause, and Values
|
|
58
|
-
*/
|
|
59
|
-
createPayload(table, whereClause, value, queryType) {
|
|
60
|
-
return {
|
|
61
|
-
QueryObjectID: table,
|
|
62
|
-
QueryType: queryType,
|
|
63
|
-
Joins: [],
|
|
64
|
-
WhereClause: whereClause,
|
|
65
|
-
Values: value,
|
|
26
|
+
entityName: tableName,
|
|
27
|
+
whereClause: whereClause,
|
|
66
28
|
};
|
|
67
29
|
}
|
|
68
30
|
/**
|
|
@@ -91,4 +53,4 @@ export class RequestResponseHelper {
|
|
|
91
53
|
type: Injectable,
|
|
92
54
|
args: [{ providedIn: 'root' }]
|
|
93
55
|
}], null, null); })();
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRW5ELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7Ozs7Ozs7T0FPRztJQUNILGlCQUFpQixDQUNmLEtBQWEsRUFDYixXQUE4QixFQUM5QixLQUFxQyxFQUNyQyxNQUFpQjtRQUVqQixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsVUFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSCxhQUFhLENBQUMsU0FBaUIsRUFBRSxXQUE4QjtRQUM3RCxPQUFPO1lBQ0wsVUFBVSxFQUFFLFNBQVM7WUFDckIsV0FBVyxFQUFFLFdBQVc7U0FDekIsQ0FBQztJQUNKLENBQUM7SUFDRDs7Ozs7Ozs7T0FRRztJQUNILHVCQUF1QixDQUNyQixLQUFhLEVBQ2IsV0FBOEIsRUFDOUIsS0FBcUMsRUFDckMsU0FBb0IsRUFDcEIsTUFBaUI7UUFFakIsT0FBTztZQUNMLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLEtBQUssRUFBRSxFQUFFO1lBQ1QsV0FBVyxFQUFFLFdBQVc7WUFDeEIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUM7SUFDSixDQUFDO3NGQXREVSxxQkFBcUI7dUVBQXJCLHFCQUFxQixXQUFyQixxQkFBcUIsbUJBRFIsTUFBTTs7aUZBQ25CLHFCQUFxQjtjQURqQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBUElCdWxrSW5zZXJ0RmllbGRzVmFsdWVTZXRzLCBBUElGaWx0ZXJDcml0ZXJpYSB9IGZyb20gJy4uLy4uL21vZGVscy9hcGktcXVlcnkuY2xhc3MnO1xyXG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9xdWVyeS5lbnVtJztcclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFJlcXVlc3RSZXNwb25zZUhlbHBlciB7XHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIHRoZSBwYXlsb2FkIGZvciBpbnNlcnRpbmcgZGF0YSBpbnRvIGEgdGFibGUgaW4gYnVsa1xyXG4gICAqIEBwYXJhbSB0YWJsZSBUaGUgdGFibGUgbmFtZSB0byBpbnNlcnQgZGF0YSBpbnRvXHJcbiAgICogQHBhcmFtIHdoZXJlQ2xhdXNlIFRoZSBmaWx0ZXIgY3JpdGVyaWEgZm9yIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBzZXRzIHRvIGJlIGluc2VydGVkXHJcbiAgICogQHBhcmFtIGZpZWxkcyBPcHRpb25hbCBsaXN0IG9mIGZpZWxkcyB0byBpbmNsdWRlIGluIHRoZSBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIHBheWxvYWQgZm9yIHRoZSBidWxrIGluc2VydCBvcGVyYXRpb25cclxuICAgKi9cclxuICBidWxrSW5zZXJ0UGF5bG9hZChcclxuICAgIHRhYmxlOiBzdHJpbmcsXHJcbiAgICB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEsXHJcbiAgICB2YWx1ZTogQVBJQnVsa0luc2VydEZpZWxkc1ZhbHVlU2V0c1tdLFxyXG4gICAgZmllbGRzPzogc3RyaW5nW11cclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmNyZWF0ZUJ1bGtJbnNlcnRQYXlsb2FkKHRhYmxlLCB3aGVyZUNsYXVzZSwgdmFsdWUsIFF1ZXJ5VHlwZS5CdWxrSW5zZXJ0LGZpZWxkcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyB0aGUgcGF5bG9hZCBmb3IgZGVsZXRpbmcgZGF0YSBmcm9tIGEgdGFibGVcclxuICAgKiBORVc6IFJldHVybnMgbmV3IGZvcm1hdCBmb3IgL3JlY29yZHMvZGVsZXRlIGVuZHBvaW50XHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgdGFibGUgbmFtZSAoZW50aXR5TmFtZSkgdG8gZGVsZXRlIGRhdGEgZnJvbVxyXG4gICAqIEBwYXJhbSB3aGVyZUNsYXVzZSBUaGUgZmlsdGVyIGNyaXRlcmlhIGZvciB0aGUgZGVsZXRlIG9wZXJhdGlvbiAoTkVXIGZvcm1hdCB3aXRoIGxvd2VyY2FzZSlcclxuICAgKiBAcmV0dXJucyBUaGUgcGF5bG9hZCBmb3IgdGhlIGRlbGV0ZSBvcGVyYXRpb24gaW4gTkVXIGZvcm1hdFxyXG4gICAqL1xyXG4gIGRlbGV0ZVBheWxvYWQodGFibGVOYW1lOiBzdHJpbmcsIHdoZXJlQ2xhdXNlOiBBUElGaWx0ZXJDcml0ZXJpYSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZW50aXR5TmFtZTogdGFibGVOYW1lLFxyXG4gICAgICB3aGVyZUNsYXVzZTogd2hlcmVDbGF1c2UsXHJcbiAgICB9O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgcGF5bG9hZCBvYmplY3QgZm9yIGJ1bGsgaW5zZXJ0IG9wZXJhdGlvbnNcclxuICAgKiBAcGFyYW0gdGFibGUgVGhlIHRhYmxlIG5hbWUgZm9yIHRoZSBwYXlsb2FkXHJcbiAgICogQHBhcmFtIHdoZXJlQ2xhdXNlIFRoZSBmaWx0ZXIgY3JpdGVyaWEgZm9yIHRoZSBwYXlsb2FkXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBzZXRzIGZvciB0aGUgcGF5bG9hZFxyXG4gICAqIEBwYXJhbSBxdWVyeVR5cGUgVGhlIHR5cGUgb2YgcXVlcnkgZm9yIHRoZSBwYXlsb2FkIChCdWxrSW5zZXJ0KVxyXG4gICAqIEBwYXJhbSBmaWVsZHMgT3B0aW9uYWwgbGlzdCBvZiBmaWVsZHMgdG8gaW5jbHVkZSBpbiB0aGUgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAqIEByZXR1cm5zIFRoZSBwYXlsb2FkIG9iamVjdCB3aXRoIFF1ZXJ5T2JqZWN0SUQsIFF1ZXJ5VHlwZSwgSm9pbnMsIFdoZXJlQ2xhdXNlLCBWYWx1ZXMsIGFuZCBGaWVsZHNcclxuICAgKi9cclxuICBjcmVhdGVCdWxrSW5zZXJ0UGF5bG9hZChcclxuICAgIHRhYmxlOiBzdHJpbmcsXHJcbiAgICB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEsXHJcbiAgICB2YWx1ZTogQVBJQnVsa0luc2VydEZpZWxkc1ZhbHVlU2V0c1tdLFxyXG4gICAgcXVlcnlUeXBlOiBRdWVyeVR5cGUsXHJcbiAgICBmaWVsZHM/OiBzdHJpbmdbXVxyXG4gICkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgUXVlcnlPYmplY3RJRDogdGFibGUsXHJcbiAgICAgIFF1ZXJ5VHlwZTogcXVlcnlUeXBlLFxyXG4gICAgICBKb2luczogW10sXHJcbiAgICAgIFdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZSxcclxuICAgICAgVmFsdWVzOiB2YWx1ZSxcclxuICAgICAgRmllbGRzOiBmaWVsZHMsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Injectable, inject } from '@angular/core';
|
|
3
3
|
import { ConjuctionClause, RelationalOperator, FilterValueType, } from '../../enums/dsq.enum';
|
|
4
4
|
import { APIFilterCriteria } from '../../models/api-query.class';
|
|
5
|
-
import {
|
|
5
|
+
import { MetadataHelper } from './meta-data.helpers';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class WhereClauseHelper {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.metadataHelper = inject(MetadataHelper);
|
|
10
|
+
}
|
|
8
11
|
/**
|
|
9
12
|
* Binds the where clause for deleting records based on field, value, field name, and CRUD table name
|
|
10
13
|
* @param fields The fields to bind the where clause
|
|
@@ -14,9 +17,9 @@ export class WhereClauseHelper {
|
|
|
14
17
|
* @returns The bound where clause for delete operation
|
|
15
18
|
*/
|
|
16
19
|
bindWhereClauseForDelete(fields, value, fieldName, crudTableName) {
|
|
17
|
-
const appobj =
|
|
20
|
+
const appobj = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === crudTableName)[0];
|
|
18
21
|
if (appobj && appobj.CRUDAppObjectId !== null) {
|
|
19
|
-
const crudAppObj =
|
|
22
|
+
const crudAppObj = this.metadataHelper.getAppObjectByIdOrName(appobj.CRUDAppObjectId);
|
|
20
23
|
if (crudAppObj) {
|
|
21
24
|
crudTableName = crudAppObj.SystemDBTableName;
|
|
22
25
|
}
|
|
@@ -46,8 +49,8 @@ export class WhereClauseHelper {
|
|
|
46
49
|
*/
|
|
47
50
|
bindWhereClauseEmpty() {
|
|
48
51
|
const whereClause = new APIFilterCriteria();
|
|
49
|
-
whereClause.
|
|
50
|
-
whereClause.
|
|
52
|
+
whereClause.filterLogic = '1';
|
|
53
|
+
whereClause.filters = [];
|
|
51
54
|
return whereClause;
|
|
52
55
|
}
|
|
53
56
|
/**
|
|
@@ -62,18 +65,18 @@ export class WhereClauseHelper {
|
|
|
62
65
|
const filteredFields = fields.filter((f) => fieldName
|
|
63
66
|
? f.Field?.FieldName === fieldName
|
|
64
67
|
: f.Field?.FieldName === 'Id' || f.Field?.FieldName === 'ID');
|
|
65
|
-
const filters = filteredFields.map((field) => ({
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
const filters = filteredFields.map((field, index) => ({
|
|
69
|
+
conjunction: ConjuctionClause.AND,
|
|
70
|
+
fieldName: crudTableName + '.' + field.Field.FieldName,
|
|
71
|
+
operator: RelationalOperator.EqualTo,
|
|
72
|
+
valueType: FilterValueType.Literal,
|
|
70
73
|
value: value,
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
sequence: index + 1,
|
|
75
|
+
groupId: 0,
|
|
73
76
|
}));
|
|
74
77
|
const whereClause = new APIFilterCriteria();
|
|
75
|
-
whereClause.
|
|
76
|
-
whereClause.
|
|
78
|
+
whereClause.filters = filters;
|
|
79
|
+
whereClause.filterLogic = '1';
|
|
77
80
|
return whereClause;
|
|
78
81
|
}
|
|
79
82
|
/**
|
|
@@ -85,25 +88,25 @@ export class WhereClauseHelper {
|
|
|
85
88
|
*/
|
|
86
89
|
bindWhereClauseForMultiplePrimaryKeys(data, primaryKeys, crudTableName) {
|
|
87
90
|
const whereClause = new APIFilterCriteria();
|
|
88
|
-
whereClause.
|
|
91
|
+
whereClause.filters = [];
|
|
89
92
|
if (primaryKeys && primaryKeys.length > 0) {
|
|
90
|
-
primaryKeys.forEach((element) => {
|
|
93
|
+
primaryKeys.forEach((element, index) => {
|
|
91
94
|
const value = data[element.FieldName];
|
|
92
95
|
if (value) {
|
|
93
96
|
const filter = {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
97
|
+
conjunction: ConjuctionClause.AND,
|
|
98
|
+
fieldName: crudTableName + '.' + element.FieldName,
|
|
99
|
+
operator: RelationalOperator.EqualTo,
|
|
100
|
+
valueType: FilterValueType.Literal,
|
|
98
101
|
value: value,
|
|
99
|
-
|
|
100
|
-
|
|
102
|
+
sequence: index + 1,
|
|
103
|
+
groupId: 0,
|
|
101
104
|
};
|
|
102
|
-
whereClause.
|
|
105
|
+
whereClause.filters.push(filter);
|
|
103
106
|
}
|
|
104
107
|
});
|
|
105
108
|
}
|
|
106
|
-
whereClause.
|
|
109
|
+
whereClause.filterLogic = '1';
|
|
107
110
|
return whereClause;
|
|
108
111
|
}
|
|
109
112
|
/**
|
|
@@ -114,22 +117,22 @@ export class WhereClauseHelper {
|
|
|
114
117
|
*/
|
|
115
118
|
bindWhereClauseForUpdate(tableName, queryFieldsArray) {
|
|
116
119
|
const whereClause = new APIFilterCriteria();
|
|
117
|
-
whereClause.
|
|
120
|
+
whereClause.filters = [];
|
|
118
121
|
if (queryFieldsArray.length) {
|
|
119
|
-
queryFieldsArray.forEach((element) => {
|
|
122
|
+
queryFieldsArray.forEach((element, index) => {
|
|
120
123
|
const filter = {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
124
|
+
conjunction: ConjuctionClause.AND,
|
|
125
|
+
fieldName: tableName + '.' + element.FieldName,
|
|
126
|
+
operator: RelationalOperator.EqualTo,
|
|
127
|
+
valueType: FilterValueType.Literal,
|
|
125
128
|
value: element.FieldValue,
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
sequence: index + 1,
|
|
130
|
+
groupId: 0,
|
|
128
131
|
};
|
|
129
|
-
whereClause.
|
|
132
|
+
whereClause.filters.push(filter);
|
|
130
133
|
});
|
|
131
134
|
}
|
|
132
|
-
whereClause.
|
|
135
|
+
whereClause.filterLogic = '1';
|
|
133
136
|
return whereClause;
|
|
134
137
|
}
|
|
135
138
|
/**
|
|
@@ -141,18 +144,18 @@ export class WhereClauseHelper {
|
|
|
141
144
|
*/
|
|
142
145
|
bindWhereClauseForDeleteByTable(tableName, primaryKey, primaryKeyValue) {
|
|
143
146
|
const whereClause = new APIFilterCriteria();
|
|
144
|
-
whereClause.
|
|
147
|
+
whereClause.filters = [];
|
|
145
148
|
const filter = {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
149
|
+
conjunction: ConjuctionClause.AND,
|
|
150
|
+
fieldName: tableName + '.' + primaryKey,
|
|
151
|
+
operator: RelationalOperator.EqualTo,
|
|
152
|
+
valueType: FilterValueType.Literal,
|
|
150
153
|
value: primaryKeyValue,
|
|
151
|
-
|
|
152
|
-
|
|
154
|
+
sequence: 1,
|
|
155
|
+
groupId: 0,
|
|
153
156
|
};
|
|
154
|
-
whereClause.
|
|
155
|
-
whereClause.
|
|
157
|
+
whereClause.filters.push(filter);
|
|
158
|
+
whereClause.filterLogic = '1';
|
|
156
159
|
return whereClause;
|
|
157
160
|
}
|
|
158
161
|
/**
|
|
@@ -163,26 +166,26 @@ export class WhereClauseHelper {
|
|
|
163
166
|
* @returns The bound where clause for delete operation using IN operator and table
|
|
164
167
|
*/
|
|
165
168
|
bindWhereClauseForDeleteUsingInOperatorByTable(tableName, primaryKey, values) {
|
|
166
|
-
const appobj =
|
|
169
|
+
const appobj = this.metadataHelper.getAllAppObjects(obj => obj.SystemDBTableName === tableName)[0];
|
|
167
170
|
if (appobj?.CRUDAppObjectId !== null) {
|
|
168
|
-
const crudAppObj =
|
|
171
|
+
const crudAppObj = this.metadataHelper.getAppObjectByIdOrName(appobj.CRUDAppObjectId || '');
|
|
169
172
|
if (crudAppObj) {
|
|
170
173
|
tableName = crudAppObj.SystemDBTableName;
|
|
171
174
|
}
|
|
172
175
|
}
|
|
173
176
|
const whereClause = new APIFilterCriteria();
|
|
174
|
-
whereClause.
|
|
177
|
+
whereClause.filters = [];
|
|
175
178
|
const filter = {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
179
|
+
conjunction: ConjuctionClause.AND,
|
|
180
|
+
fieldName: tableName + '.' + primaryKey,
|
|
181
|
+
operator: RelationalOperator.IN,
|
|
182
|
+
valueType: FilterValueType.Literal,
|
|
180
183
|
value: values.join(','),
|
|
181
|
-
|
|
182
|
-
|
|
184
|
+
sequence: 1,
|
|
185
|
+
groupId: 0,
|
|
183
186
|
};
|
|
184
|
-
whereClause.
|
|
185
|
-
whereClause.
|
|
187
|
+
whereClause.filters.push(filter);
|
|
188
|
+
whereClause.filterLogic = '1';
|
|
186
189
|
return whereClause;
|
|
187
190
|
}
|
|
188
191
|
/**
|
|
@@ -205,23 +208,23 @@ export class WhereClauseHelper {
|
|
|
205
208
|
*/
|
|
206
209
|
bindWhereClauseForUpdateUsingFilters(tableName, filters, fields) {
|
|
207
210
|
const whereClause = new APIFilterCriteria();
|
|
208
|
-
whereClause.
|
|
211
|
+
whereClause.filters = [];
|
|
209
212
|
if (filters.length) {
|
|
210
|
-
filters.forEach((element) => {
|
|
213
|
+
filters.forEach((element, index) => {
|
|
211
214
|
const field = fields.find((f) => f.ID === element.FieldID) || {};
|
|
212
215
|
const filter = {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
216
|
+
conjunction: element.ConjuctionClause,
|
|
217
|
+
fieldName: tableName + '.' + field.FieldName,
|
|
218
|
+
operator: element.RelationalOperator,
|
|
219
|
+
valueType: element.ValueType,
|
|
217
220
|
value: element.Value,
|
|
218
|
-
|
|
219
|
-
|
|
221
|
+
sequence: element.Sequence || index + 1,
|
|
222
|
+
groupId: element.GroupID,
|
|
220
223
|
};
|
|
221
|
-
whereClause.
|
|
224
|
+
whereClause.filters.push(filter);
|
|
222
225
|
});
|
|
223
226
|
}
|
|
224
|
-
whereClause.
|
|
227
|
+
whereClause.filterLogic = '1';
|
|
225
228
|
return whereClause;
|
|
226
229
|
}
|
|
227
230
|
/**
|
|
@@ -232,23 +235,23 @@ export class WhereClauseHelper {
|
|
|
232
235
|
*/
|
|
233
236
|
bindWhereClauseForDynamicDelete(tableName, keyValuePairs) {
|
|
234
237
|
const whereClause = new APIFilterCriteria();
|
|
235
|
-
whereClause.
|
|
238
|
+
whereClause.filters = [];
|
|
236
239
|
// Loop through the key value pairs and add them to the where clause
|
|
237
|
-
// The conjuction clause is AND for
|
|
240
|
+
// The conjuction clause is AND for all items
|
|
238
241
|
keyValuePairs.forEach((pair, index) => {
|
|
239
242
|
const filter = {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
243
|
+
conjunction: index === 0 ? ConjuctionClause.AND : ConjuctionClause.AND,
|
|
244
|
+
fieldName: tableName + '.' + pair.key,
|
|
245
|
+
operator: RelationalOperator.EqualTo,
|
|
246
|
+
valueType: FilterValueType.Literal,
|
|
244
247
|
value: pair.value,
|
|
245
|
-
|
|
246
|
-
|
|
248
|
+
sequence: index + 1,
|
|
249
|
+
groupId: 0
|
|
247
250
|
};
|
|
248
|
-
whereClause.
|
|
251
|
+
whereClause.filters.push(filter);
|
|
249
252
|
});
|
|
250
253
|
// The filter logic is always '1' for dynamic delete
|
|
251
|
-
whereClause.
|
|
254
|
+
whereClause.filterLogic = '1';
|
|
252
255
|
return whereClause;
|
|
253
256
|
}
|
|
254
257
|
static { this.ɵfac = function WhereClauseHelper_Factory(t) { return new (t || WhereClauseHelper)(); }; }
|
|
@@ -258,4 +261,4 @@ export class WhereClauseHelper {
|
|
|
258
261
|
type: Injectable,
|
|
259
262
|
args: [{ providedIn: 'root' }]
|
|
260
263
|
}], null, null); })();
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtY2xhdXNlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNoQixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsWUFBWSxHQUNiLE1BQU0sMEJBQTBCLENBQUM7O0FBR2xDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7Ozs7Ozs7T0FPRztJQUNILHdCQUF3QixDQUN0QixNQUFXLEVBQ1gsS0FBVSxFQUNWLFNBQWlCLEVBQ2pCLGFBQXFCO1FBRXJCLE1BQU0sTUFBTSxHQUFHLGlDQUFpQyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2hFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUN4RCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLGFBQWEsR0FBRyxVQUFVLENBQUMsaUJBQWlCLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILCtDQUErQyxDQUM3QyxJQUFT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aUI7Y0FEN0IsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29uanVjdGlvbkNsYXVzZSxcclxuICBSZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgRmlsdGVyVmFsdWVUeXBlLFxyXG59IGZyb20gJy4uLy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgQVBJRmlsdGVyQ3JpdGVyaWEgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBpLXF1ZXJ5LmNsYXNzJztcclxuaW1wb3J0IHtcclxuICBnZXRBcHBPYmplY3RGcm9tU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgZ2V0QXBwT2JqZWN0LFxyXG59IGZyb20gJy4uLy4uL3V0aWxzL3RhYi1hcHAudXRpbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgV2hlcmVDbGF1c2VIZWxwZXIge1xyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYmFzZWQgb24gZmllbGQsIHZhbHVlLCBmaWVsZCBuYW1lLCBhbmQgQ1JVRCB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIGJpbmQgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlKFxyXG4gICAgZmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IGdldEFwcE9iamVjdEZyb21TeXN0ZW1EQlRhYmxlTmFtZShjcnVkVGFibGVOYW1lKTtcclxuICAgIGlmIChhcHBvYmogJiYgYXBwb2JqLkNSVURBcHBPYmplY3RJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBjcnVkQXBwT2JqID0gZ2V0QXBwT2JqZWN0KGFwcG9iai5DUlVEQXBwT2JqZWN0SWQpO1xyXG4gICAgICBpZiAoY3J1ZEFwcE9iaikge1xyXG4gICAgICAgIGNydWRUYWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2UoZmllbGRzLCB2YWx1ZSwgZmllbGROYW1lLCBjcnVkVGFibGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVXaXRoTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgY3J1ZFRhYmxlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBmaWVsZE5hbWUsXHJcbiAgICAgIGNydWRUYWJsZU5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBhbiBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckluc2VydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZUVtcHR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyBhbiBlbXB0eSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgZW1wdHkgd2hlcmUgY2xhdXNlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRW1wdHkoKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHByb3ZpZGVkIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2VcclxuICAgKi9cclxuICBwcml2YXRlIGJpbmRXaGVyZUNsYXVzZShcclxuICAgIGZpZWxkczogYW55W10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApOiBBUElGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKGY6IGFueSkgPT5cclxuICAgICAgZmllbGROYW1lXHJcbiAgICAgICAgPyBmLkZpZWxkPy5GaWVsZE5hbWUgPT09IGZpZWxkTmFtZVxyXG4gICAgICAgIDogZi5GaWVsZD8uRmllbGROYW1lID09PSAnSWQnIHx8IGYuRmllbGQ/LkZpZWxkTmFtZSA9PT0gJ0lEJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyZWRGaWVsZHMubWFwKChmaWVsZDogYW55KSA9PiAoe1xyXG4gICAgICBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlLkFORCxcclxuICAgICAgRmllbGRJRDogY3J1ZFRhYmxlTmFtZSArICcuJyArIGZpZWxkLkZpZWxkLlN5c3RlbURCRmllbGROYW1lLFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICBWYWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIFNlcXVlbmNlOiAwLFxyXG4gICAgICBHcm91cElEOiAwLFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gZmlsdGVycztcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG5cclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBkZWxldGluZyByZWNvcmRzIHdpdGggbXVsdGlwbGUgcHJpbWFyeSBrZXlzXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgY29udGFpbmluZyBwcmltYXJ5IGtleSB2YWx1ZXNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleXMgVGhlIGFycmF5IG9mIHByaW1hcnkga2V5IGZpZWxkc1xyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHdpdGggbXVsdGlwbGUgcHJpbWFyeSBrZXlzXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIHByaW1hcnlLZXlzOiBhbnksXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICBpZiAocHJpbWFyeUtleXMgJiYgcHJpbWFyeUtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBwcmltYXJ5S2V5cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGFbZWxlbWVudC5GaWVsZE5hbWVdO1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgICAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgICBGaWVsZElEOiBjcnVkVGFibGVOYW1lICsgJy4nICsgZWxlbWVudC5TeXN0ZW1EQkZpZWxkTmFtZSxcclxuICAgICAgICAgICAgUmVsYXRpb25hbE9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxyXG4gICAgICAgICAgICBTZXF1ZW5jZTogMCxcclxuICAgICAgICAgICAgR3JvdXBJRDogMCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIHF1ZXJ5RmllbGRzQXJyYXkgVGhlIGFycmF5IG9mIGZpZWxkcyBhbmQgdmFsdWVzIGZvciB0aGUgdXBkYXRlIHF1ZXJ5XHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvclVwZGF0ZSh0YWJsZU5hbWU6IHN0cmluZywgcXVlcnlGaWVsZHNBcnJheTogYW55KSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgaWYgKHF1ZXJ5RmllbGRzQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIHF1ZXJ5RmllbGRzQXJyYXkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgICAgICBDb25qdWN0aW9uQ2xhdXNlOiBDb25qdWN0aW9uQ2xhdXNlLkFORCxcclxuICAgICAgICAgIEZpZWxkSUQ6IHRhYmxlTmFtZSArICcuJyArIGVsZW1lbnQuRmllbGROYW1lLFxyXG4gICAgICAgICAgUmVsYXRpb25hbE9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgIFZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgICB2YWx1ZTogZWxlbWVudC5GaWVsZFZhbHVlLFxyXG4gICAgICAgICAgU2VxdWVuY2U6IDAsXHJcbiAgICAgICAgICBHcm91cElEOiAwLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgd2hlcmVDbGF1c2UuRmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBkZWxldGluZyByZWNvcmRzIGJ5IHRhYmxlIGFuZCBwcmltYXJ5IGtleVxyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZGVsZXRlIHJlY29yZHNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleSBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgZmllbGRcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleVZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgcHJpbWFyeSBrZXlcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIHRhYmxlIGFuZCBwcmltYXJ5IGtleVxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZUJ5VGFibGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXk6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXlWYWx1ZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBGaWVsZElEOiB0YWJsZU5hbWUgKyAnLicgKyBwcmltYXJ5S2V5LFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICBWYWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogcHJpbWFyeUtleVZhbHVlLFxyXG4gICAgICBTZXF1ZW5jZTogMCxcclxuICAgICAgR3JvdXBJRDogMCxcclxuICAgIH07XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBJTiBvcGVyYXRvciBieSB0YWJsZVxyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGZyb20gd2hpY2ggdG8gZGVsZXRlIHJlY29yZHNcclxuICAgKiBAcGFyYW0gcHJpbWFyeUtleSBUaGUgbmFtZSBvZiB0aGUgcHJpbWFyeSBrZXkgZmllbGRcclxuICAgKiBAcGFyYW0gdmFsdWVzIFRoZSBhcnJheSBvZiB2YWx1ZXMgZm9yIHRoZSBJTiBvcGVyYXRvclxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgSU4gb3BlcmF0b3IgYW5kIHRhYmxlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlVXNpbmdJbk9wZXJhdG9yQnlUYWJsZShcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleTogc3RyaW5nLFxyXG4gICAgdmFsdWVzOiBbXVxyXG4gICkge1xyXG4gICAgY29uc3QgYXBwb2JqID0gZ2V0QXBwT2JqZWN0RnJvbVN5c3RlbURCVGFibGVOYW1lKHRhYmxlTmFtZSk7XHJcbiAgICBpZiAoYXBwb2JqPy5DUlVEQXBwT2JqZWN0SWQgIT09IG51bGwpIHtcclxuICAgICAgY29uc3QgY3J1ZEFwcE9iaiA9IGdldEFwcE9iamVjdChhcHBvYmouQ1JVREFwcE9iamVjdElkKTtcclxuICAgICAgaWYgKGNydWRBcHBPYmopIHtcclxuICAgICAgICB0YWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVycyA9IFtdO1xyXG4gICAgY29uc3QgZmlsdGVyOiBhbnkgPSB7XHJcbiAgICAgIENvbmp1Y3Rpb25DbGF1c2U6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBGaWVsZElEOiB0YWJsZU5hbWUgKyAnLicgKyBwcmltYXJ5S2V5LFxyXG4gICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5JTixcclxuICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHZhbHVlcy5qb2luKCcsJyksXHJcbiAgICAgIFNlcXVlbmNlOiAwLFxyXG4gICAgICBHcm91cElEOiAwLFxyXG4gICAgfTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgd2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzIGluIGEgZ3JpZFxyXG4gICAqIEBwYXJhbSBGaWVsZHMgVGhlIGZpZWxkcyB0byBiaW5kIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIFRoZSBmaWVsZCBuYW1lIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvbiBpbiBhIGdyaWRcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKFxyXG4gICAgRmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZShGaWVsZHMsIHZhbHVlLCBmaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3JkcyB1c2luZyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGFycmF5IG9mIGZpbHRlcnMgZm9yIHRoZSB1cGRhdGUgcXVlcnlcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBhcnJheSBvZiBmaWVsZHMgZnJvbSB0aGUgYXBwIG9iamVjdCB0byBtYXAgd2l0aCBmaWVsZCBJRCAtIHVzZWQgaW4gcmVwbGFjaW5nIElEIFdpdGggbmFtZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGZpbHRlcnM6IGFueSxcclxuICAgIGZpZWxkczogYW55W11cclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzID0gW107XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmKSA9PiBmLklEID09PSBlbGVtZW50LkZpZWxkSUQpIHx8IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICBDb25qdWN0aW9uQ2xhdXNlOiBlbGVtZW50LkNvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgICAgICAgICBGaWVsZElEOiBgJHt0YWJsZU5hbWV9LiR7ZmllbGQuRmllbGROYW1lfWAsXHJcbiAgICAgICAgICBSZWxhdGlvbmFsT3BlcmF0b3I6IGVsZW1lbnQuUmVsYXRpb25hbE9wZXJhdG9yLFxyXG4gICAgICAgICAgVmFsdWVUeXBlOiBlbGVtZW50LlZhbHVlVHlwZSxcclxuICAgICAgICAgIHZhbHVlOiBlbGVtZW50LlZhbHVlLFxyXG4gICAgICAgICAgU2VxdWVuY2U6IGVsZW1lbnQuU2VxdWVuY2UsXHJcbiAgICAgICAgICBHcm91cElEOiBlbGVtZW50Lkdyb3VwSUQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuRmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBhIHNldCBvZiBrZXkgdmFsdWUgcGFpcnNcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIGtleVZhbHVlUGFpcnMgVGhlIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycyB0byB1c2UgaW4gdGhlIGRlbGV0ZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckR5bmFtaWNEZWxldGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGtleVZhbHVlUGFpcnM6IGFueVtdXHJcbiAgKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGtleSB2YWx1ZSBwYWlycyBhbmQgYWRkIHRoZW0gdG8gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAgLy8gVGhlIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBmb3IgdGhlIGZpcnN0IGl0ZW0gYW5kIE9SIGZvciB0aGUgcmVzdFxyXG4gICAga2V5VmFsdWVQYWlycy5mb3JFYWNoKChwYWlyLCBpbmRleCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgQ29uanVjdGlvbkNsYXVzZTogaW5kZXggPT09IDAgPyBDb25qdWN0aW9uQ2xhdXNlLkFORCA6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgIEZpZWxkSUQ6IGAke3RhYmxlTmFtZX0uJHtwYWlyLmtleX1gLFxyXG4gICAgICAgIFJlbGF0aW9uYWxPcGVyYXRvcjogUmVsYXRpb25hbE9wZXJhdG9yLkVxdWFsVG8sXHJcbiAgICAgICAgVmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgICB2YWx1ZTogcGFpci52YWx1ZSxcclxuICAgICAgICBTZXF1ZW5jZTogaW5kZXgsXHJcbiAgICAgICAgR3JvdXBJRDogMFxyXG4gICAgICB9O1xyXG4gICAgICB3aGVyZUNsYXVzZS5GaWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIFRoZSBmaWx0ZXIgbG9naWMgaXMgYWx3YXlzICcxJyBmb3IgZHluYW1pYyBkZWxldGVcclxuICAgIHdoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hlcmUtY2xhdXNlLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLGVBQWUsR0FDaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBR3JELE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFbUIsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0F1VDFEO0lBdFRDOzs7Ozs7O09BT0c7SUFDSCx3QkFBd0IsQ0FDdEIsTUFBVyxFQUNYLEtBQVUsRUFDVixTQUFpQixFQUNqQixhQUFxQjtRQUVyQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDdEYsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixhQUFhLEdBQUcsVUFBVSxDQUFDLGlCQUFp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LEVBQUUsZUFBZSxDQUFDLE9BQU87Z0JBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDO2dCQUNuQixPQUFPLEVBQUUsQ0FBQzthQUNYLENBQUM7WUFDRixXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILG9EQUFvRDtRQUNwRCxXQUFXLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUM5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO2tGQXZUVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7aUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIENvbmp1Y3Rpb25DbGF1c2UsXHJcbiAgUmVsYXRpb25hbE9wZXJhdG9yLFxyXG4gIEZpbHRlclZhbHVlVHlwZSxcclxufSBmcm9tICcuLi8uLi9lbnVtcy9kc3EuZW51bSc7XHJcbmltcG9ydCB7IEFQSUZpbHRlckNyaXRlcmlhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzcyc7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSAnLi9tZXRhLWRhdGEuaGVscGVycyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgV2hlcmVDbGF1c2VIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYmFzZWQgb24gZmllbGQsIHZhbHVlLCBmaWVsZCBuYW1lLCBhbmQgQ1JVRCB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIGZpZWxkcyBUaGUgZmllbGRzIHRvIGJpbmQgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgdG8gbWF0Y2ggaW4gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEBwYXJhbSBjcnVkVGFibGVOYW1lIFRoZSBDUlVEIHRhYmxlIG5hbWUgZm9yIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlKFxyXG4gICAgZmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSBjcnVkVGFibGVOYW1lKVswXTtcclxuICAgIGlmIChhcHBvYmogJiYgYXBwb2JqLkNSVURBcHBPYmplY3RJZCAhPT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBjcnVkQXBwT2JqID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKGFwcG9iai5DUlVEQXBwT2JqZWN0SWQpO1xyXG4gICAgICBpZiAoY3J1ZEFwcE9iaikge1xyXG4gICAgICAgIGNydWRUYWJsZU5hbWUgPSBjcnVkQXBwT2JqLlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2UoZmllbGRzLCB2YWx1ZSwgZmllbGROYW1lLCBjcnVkVGFibGVOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBmaWVsZE5hbWUgVGhlIGZpZWxkIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JEZWxldGVXaXRoTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgIGRhdGE6IGFueSxcclxuICAgIGZpZWxkTmFtZTogc3RyaW5nLFxyXG4gICAgY3J1ZFRhYmxlTmFtZTogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gdGhpcy5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgICBkYXRhLFxyXG4gICAgICBmaWVsZE5hbWUsXHJcbiAgICAgIGNydWRUYWJsZU5hbWVcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciBhbiBpbnNlcnQgb3BlcmF0aW9uXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgaW5zZXJ0IG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckluc2VydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZUVtcHR5KCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyBhbiBlbXB0eSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgZW1wdHkgd2hlcmUgY2xhdXNlXHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRW1wdHkoKSB7XHJcbiAgICBjb25zdCB3aGVyZUNsYXVzZSA9IG5ldyBBUElGaWx0ZXJDcml0ZXJpYSgpO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGJhc2VkIG9uIHByb3ZpZGVkIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBmaWVsZHMgdG8gYmluZCB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGZpZWxkTmFtZSBUaGUgZmllbGQgbmFtZSB0byBtYXRjaCBpbiB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2VcclxuICAgKi9cclxuICBwcml2YXRlIGJpbmRXaGVyZUNsYXVzZShcclxuICAgIGZpZWxkczogYW55W10sXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApOiBBUElGaWx0ZXJDcml0ZXJpYSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZEZpZWxkcyA9IGZpZWxkcy5maWx0ZXIoKGY6IGFueSkgPT5cclxuICAgICAgZmllbGROYW1lXHJcbiAgICAgICAgPyBmLkZpZWxkPy5GaWVsZE5hbWUgPT09IGZpZWxkTmFtZVxyXG4gICAgICAgIDogZi5GaWVsZD8uRmllbGROYW1lID09PSAnSWQnIHx8IGYuRmllbGQ/LkZpZWxkTmFtZSA9PT0gJ0lEJ1xyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyZWRGaWVsZHMubWFwKChmaWVsZDogYW55LCBpbmRleDogbnVtYmVyKSA9PiAoe1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogY3J1ZFRhYmxlTmFtZSArICcuJyArIGZpZWxkLkZpZWxkLkZpZWxkTmFtZSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9KSk7XHJcblxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBmaWx0ZXJzO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcblxyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSBjb250YWluaW5nIHByaW1hcnkga2V5IHZhbHVlc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5cyBUaGUgYXJyYXkgb2YgcHJpbWFyeSBrZXkgZmllbGRzXHJcbiAgICogQHBhcmFtIGNydWRUYWJsZU5hbWUgVGhlIENSVUQgdGFibGUgbmFtZSBmb3IgdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gd2l0aCBtdWx0aXBsZSBwcmltYXJ5IGtleXNcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgZGF0YTogYW55LFxyXG4gICAgcHJpbWFyeUtleXM6IGFueSxcclxuICAgIGNydWRUYWJsZU5hbWU6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChwcmltYXJ5S2V5cyAmJiBwcmltYXJ5S2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHByaW1hcnlLZXlzLmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gZGF0YVtlbGVtZW50LkZpZWxkTmFtZV07XHJcbiAgICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgICBmaWVsZE5hbWU6IGNydWRUYWJsZU5hbWUgKyAnLicgKyBlbGVtZW50LkZpZWxkTmFtZSxcclxuICAgICAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsLFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXHJcbiAgICAgICAgICAgIHNlcXVlbmNlOiBpbmRleCArIDEsXHJcbiAgICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSB0YWJsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBxdWVyeUZpZWxkc0FycmF5IFRoZSBhcnJheSBvZiBmaWVsZHMgYW5kIHZhbHVlcyBmb3IgdGhlIHVwZGF0ZSBxdWVyeVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGUodGFibGVOYW1lOiBzdHJpbmcsIHF1ZXJ5RmllbGRzQXJyYXk6IGFueSkge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGlmIChxdWVyeUZpZWxkc0FycmF5Lmxlbmd0aCkge1xyXG4gICAgICBxdWVyeUZpZWxkc0FycmF5LmZvckVhY2goKGVsZW1lbnQ6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgICAgZmllbGROYW1lOiB0YWJsZU5hbWUgKyAnLicgKyBlbGVtZW50LkZpZWxkTmFtZSxcclxuICAgICAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgICB2YWx1ZTogZWxlbWVudC5GaWVsZFZhbHVlLFxyXG4gICAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB3aGVyZUNsYXVzZS5maWx0ZXJzLnB1c2goZmlsdGVyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgYnkgdGFibGUgYW5kIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgZnJvbSB3aGljaCB0byBkZWxldGUgcmVjb3Jkc1xyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5IFRoZSBuYW1lIG9mIHRoZSBwcmltYXJ5IGtleSBmaWVsZFxyXG4gICAqIEBwYXJhbSBwcmltYXJ5S2V5VmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwcmltYXJ5IGtleVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0ZSBvcGVyYXRpb24gdXNpbmcgdGFibGUgYW5kIHByaW1hcnkga2V5XHJcbiAgICovXHJcbiAgYmluZFdoZXJlQ2xhdXNlRm9yRGVsZXRlQnlUYWJsZShcclxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleTogc3RyaW5nLFxyXG4gICAgcHJpbWFyeUtleVZhbHVlOiBzdHJpbmdcclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBjb25zdCBmaWx0ZXI6IGFueSA9IHtcclxuICAgICAgY29uanVuY3Rpb246IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICBmaWVsZE5hbWU6IHRhYmxlTmFtZSArICcuJyArIHByaW1hcnlLZXksXHJcbiAgICAgIG9wZXJhdG9yOiBSZWxhdGlvbmFsT3BlcmF0b3IuRXF1YWxUbyxcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHByaW1hcnlLZXlWYWx1ZSxcclxuICAgICAgc2VxdWVuY2U6IDEsXHJcbiAgICAgIGdyb3VwSWQ6IDAsXHJcbiAgICB9O1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJMb2dpYyA9ICcxJztcclxuICAgIHJldHVybiB3aGVyZUNsYXVzZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmRzIHRoZSB3aGVyZSBjbGF1c2UgZm9yIGRlbGV0aW5nIHJlY29yZHMgdXNpbmcgSU4gb3BlcmF0b3IgYnkgdGFibGVcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIHByaW1hcnlLZXkgVGhlIG5hbWUgb2YgdGhlIHByaW1hcnkga2V5IGZpZWxkXHJcbiAgICogQHBhcmFtIHZhbHVlcyBUaGUgYXJyYXkgb2YgdmFsdWVzIGZvciB0aGUgSU4gb3BlcmF0b3JcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIElOIG9wZXJhdG9yIGFuZCB0YWJsZVxyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckRlbGV0ZVVzaW5nSW5PcGVyYXRvckJ5VGFibGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIHByaW1hcnlLZXk6IHN0cmluZyxcclxuICAgIHZhbHVlczogW11cclxuICApIHtcclxuICAgIGNvbnN0IGFwcG9iaiA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0QWxsQXBwT2JqZWN0cyhvYmogPT4gb2JqLlN5c3RlbURCVGFibGVOYW1lID09PSB0YWJsZU5hbWUpWzBdO1xyXG4gICAgaWYgKGFwcG9iaj8uQ1JVREFwcE9iamVjdElkICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IGNydWRBcHBPYmogPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldEFwcE9iamVjdEJ5SWRPck5hbWUoYXBwb2JqLkNSVURBcHBPYmplY3RJZCB8fCAnJyk7XHJcbiAgICAgIGlmIChjcnVkQXBwT2JqKSB7XHJcbiAgICAgICAgdGFibGVOYW1lID0gY3J1ZEFwcE9iai5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge1xyXG4gICAgICBjb25qdW5jdGlvbjogQ29uanVjdGlvbkNsYXVzZS5BTkQsXHJcbiAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcHJpbWFyeUtleSxcclxuICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5JTixcclxuICAgICAgdmFsdWVUeXBlOiBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCxcclxuICAgICAgdmFsdWU6IHZhbHVlcy5qb2luKCcsJyksXHJcbiAgICAgIHNlcXVlbmNlOiAxLFxyXG4gICAgICBncm91cElkOiAwLFxyXG4gICAgfTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBCaW5kcyB0aGUgd2hlcmUgY2xhdXNlIGZvciB1cGRhdGluZyByZWNvcmRzIGluIGEgZ3JpZFxyXG4gICAqIEBwYXJhbSBGaWVsZHMgVGhlIGZpZWxkcyB0byBiaW5kIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gZmllbGROYW1lIFRoZSBmaWVsZCBuYW1lIHRvIG1hdGNoIGluIHRoZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcGFyYW0gY3J1ZFRhYmxlTmFtZSBUaGUgQ1JVRCB0YWJsZSBuYW1lIGZvciB0aGUgd2hlcmUgY2xhdXNlXHJcbiAgICogQHJldHVybnMgVGhlIGJvdW5kIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRlIG9wZXJhdGlvbiBpbiBhIGdyaWRcclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKFxyXG4gICAgRmllbGRzOiBhbnksXHJcbiAgICB2YWx1ZTogYW55LFxyXG4gICAgZmllbGROYW1lOiBzdHJpbmcsXHJcbiAgICBjcnVkVGFibGVOYW1lOiBzdHJpbmdcclxuICApIHtcclxuICAgIHJldHVybiB0aGlzLmJpbmRXaGVyZUNsYXVzZShGaWVsZHMsIHZhbHVlLCBmaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgdXBkYXRpbmcgcmVjb3JkcyB1c2luZyBmaWx0ZXJzXHJcbiAgICogQHBhcmFtIHRhYmxlTmFtZSBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIGZpbHRlcnMgVGhlIGFycmF5IG9mIGZpbHRlcnMgZm9yIHRoZSB1cGRhdGUgcXVlcnlcclxuICAgKiBAcGFyYW0gZmllbGRzIFRoZSBhcnJheSBvZiBmaWVsZHMgZnJvbSB0aGUgYXBwIG9iamVjdCB0byBtYXAgd2l0aCBmaWVsZCBJRCAtIHVzZWQgaW4gcmVwbGFjaW5nIElEIFdpdGggbmFtZVxyXG4gICAqIEByZXR1cm5zIFRoZSBib3VuZCB3aGVyZSBjbGF1c2UgZm9yIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICBiaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGZpbHRlcnM6IGFueSxcclxuICAgIGZpZWxkczogYW55W11cclxuICApIHtcclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gbmV3IEFQSUZpbHRlckNyaXRlcmlhKCk7XHJcbiAgICB3aGVyZUNsYXVzZS5maWx0ZXJzID0gW107XHJcbiAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgZmlsdGVycy5mb3JFYWNoKChlbGVtZW50OiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmKSA9PiBmLklEID09PSBlbGVtZW50LkZpZWxkSUQpIHx8IHt9O1xyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXIgPSB7XHJcbiAgICAgICAgICBjb25qdW5jdGlvbjogZWxlbWVudC5Db25qdWN0aW9uQ2xhdXNlLFxyXG4gICAgICAgICAgZmllbGROYW1lOiB0YWJsZU5hbWUgKyAnLicgKyBmaWVsZC5GaWVsZE5hbWUsXHJcbiAgICAgICAgICBvcGVyYXRvcjogZWxlbWVudC5SZWxhdGlvbmFsT3BlcmF0b3IsXHJcbiAgICAgICAgICB2YWx1ZVR5cGU6IGVsZW1lbnQuVmFsdWVUeXBlLFxyXG4gICAgICAgICAgdmFsdWU6IGVsZW1lbnQuVmFsdWUsXHJcbiAgICAgICAgICBzZXF1ZW5jZTogZWxlbWVudC5TZXF1ZW5jZSB8fCBpbmRleCArIDEsXHJcbiAgICAgICAgICBncm91cElkOiBlbGVtZW50Lkdyb3VwSUQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd2hlcmVDbGF1c2UuZmlsdGVycy5wdXNoKGZpbHRlcik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlckxvZ2ljID0gJzEnO1xyXG4gICAgcmV0dXJuIHdoZXJlQ2xhdXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQmluZHMgdGhlIHdoZXJlIGNsYXVzZSBmb3IgZGVsZXRpbmcgcmVjb3JkcyB1c2luZyBhIHNldCBvZiBrZXkgdmFsdWUgcGFpcnNcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBmcm9tIHdoaWNoIHRvIGRlbGV0ZSByZWNvcmRzXHJcbiAgICogQHBhcmFtIGtleVZhbHVlUGFpcnMgVGhlIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycyB0byB1c2UgaW4gdGhlIGRlbGV0ZSB3aGVyZSBjbGF1c2VcclxuICAgKiBAcmV0dXJucyBUaGUgYm91bmQgd2hlcmUgY2xhdXNlIGZvciBkZWxldGUgb3BlcmF0aW9uIHVzaW5nIGtleSB2YWx1ZSBwYWlyc1xyXG4gICAqL1xyXG4gIGJpbmRXaGVyZUNsYXVzZUZvckR5bmFtaWNEZWxldGUoXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGtleVZhbHVlUGFpcnM6IGFueVtdXHJcbiAgKTogQVBJRmlsdGVyQ3JpdGVyaWEge1xyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSBuZXcgQVBJRmlsdGVyQ3JpdGVyaWEoKTtcclxuICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMgPSBbXTtcclxuXHJcbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGtleSB2YWx1ZSBwYWlycyBhbmQgYWRkIHRoZW0gdG8gdGhlIHdoZXJlIGNsYXVzZVxyXG4gICAgLy8gVGhlIGNvbmp1Y3Rpb24gY2xhdXNlIGlzIEFORCBmb3IgYWxsIGl0ZW1zXHJcbiAgICBrZXlWYWx1ZVBhaXJzLmZvckVhY2goKHBhaXIsIGluZGV4KSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlciA9IHtcclxuICAgICAgICBjb25qdW5jdGlvbjogaW5kZXggPT09IDAgPyBDb25qdWN0aW9uQ2xhdXNlLkFORCA6IENvbmp1Y3Rpb25DbGF1c2UuQU5ELFxyXG4gICAgICAgIGZpZWxkTmFtZTogdGFibGVOYW1lICsgJy4nICsgcGFpci5rZXksXHJcbiAgICAgICAgb3BlcmF0b3I6IFJlbGF0aW9uYWxPcGVyYXRvci5FcXVhbFRvLFxyXG4gICAgICAgIHZhbHVlVHlwZTogRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWwsXHJcbiAgICAgICAgdmFsdWU6IHBhaXIudmFsdWUsXHJcbiAgICAgICAgc2VxdWVuY2U6IGluZGV4ICsgMSxcclxuICAgICAgICBncm91cElkOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIHdoZXJlQ2xhdXNlLmZpbHRlcnMucHVzaChmaWx0ZXIpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gVGhlIGZpbHRlciBsb2dpYyBpcyBhbHdheXMgJzEnIGZvciBkeW5hbWljIGRlbGV0ZVxyXG4gICAgd2hlcmVDbGF1c2UuZmlsdGVyTG9naWMgPSAnMSc7XHJcbiAgICByZXR1cm4gd2hlcmVDbGF1c2U7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoginResponseAdapter - Transforms new login API response to legacy format
|
|
3
|
+
*
|
|
4
|
+
* The new identity service returns a flat response structure with camelCase fields.
|
|
5
|
+
* This adapter converts it to the old nested structure expected by the application.
|
|
6
|
+
*
|
|
7
|
+
* New format (flat):
|
|
8
|
+
* { userId, email, userName, accessToken, refreshToken, expiresIn, roles, ... }
|
|
9
|
+
*
|
|
10
|
+
* Old format (nested):
|
|
11
|
+
* { user: { Id, UserName, Roles, PersonData, Attributes, ... }, Token, RefreshToken, RefreshTokenExpiry }
|
|
12
|
+
*/
|
|
13
|
+
export class LoginResponseAdapter {
|
|
14
|
+
/**
|
|
15
|
+
* Transforms the normalized CommonApiResponse's Result from new flat format to old nested format.
|
|
16
|
+
* If the Result is already in old format (has .user or .Token), returns as-is.
|
|
17
|
+
*
|
|
18
|
+
* @param response - The CommonApiResponse (already top-level normalized by ResponseAdapter)
|
|
19
|
+
* @returns The response with Result transformed to legacy nested format
|
|
20
|
+
*/
|
|
21
|
+
static normalize(response) {
|
|
22
|
+
const result = response?.Result;
|
|
23
|
+
// If null, already old format (has .user wrapper or .Token), return as-is
|
|
24
|
+
if (!result || result.user || result.Token) {
|
|
25
|
+
return response;
|
|
26
|
+
}
|
|
27
|
+
// Transform new flat format to old nested format
|
|
28
|
+
response.Result = {
|
|
29
|
+
user: {
|
|
30
|
+
Id: result.userId ?? null,
|
|
31
|
+
UserName: result.email ?? result.userName ?? null,
|
|
32
|
+
DefaultTenantId: result.defaultTenantId ?? null,
|
|
33
|
+
DefaultAppId: result.defaultAppId ?? null,
|
|
34
|
+
Roles: LoginResponseAdapter.transformRoles(result.roles),
|
|
35
|
+
Teams: null,
|
|
36
|
+
PersonData: null,
|
|
37
|
+
MailingAddress: null,
|
|
38
|
+
Locale: null,
|
|
39
|
+
Attributes: null,
|
|
40
|
+
},
|
|
41
|
+
Token: result.accessToken ?? null,
|
|
42
|
+
RefreshToken: result.refreshToken ?? null,
|
|
43
|
+
RefreshTokenExpiry: result.expiresIn
|
|
44
|
+
? new Date(Date.now() + result.expiresIn * 1000).toISOString()
|
|
45
|
+
: null,
|
|
46
|
+
Success: result.succeeded ?? false,
|
|
47
|
+
Errors: result.error ?? null,
|
|
48
|
+
};
|
|
49
|
+
return response;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Transforms roles from new camelCase format to old PascalCase format.
|
|
53
|
+
* Structure: { tenantId: { appId: { envId: [{ id, roleName, description }] } } }
|
|
54
|
+
* becomes: { tenantId: { appId: { envId: [{ ID, RoleName, Description }] } } }
|
|
55
|
+
*/
|
|
56
|
+
static transformRoles(roles) {
|
|
57
|
+
if (!roles)
|
|
58
|
+
return {};
|
|
59
|
+
const transformed = {};
|
|
60
|
+
for (const [tenantId, tenantData] of Object.entries(roles)) {
|
|
61
|
+
transformed[tenantId] = {};
|
|
62
|
+
for (const [appId, appData] of Object.entries(tenantData)) {
|
|
63
|
+
transformed[tenantId][appId] = {};
|
|
64
|
+
for (const [envId, envRoles] of Object.entries(appData)) {
|
|
65
|
+
transformed[tenantId][appId][envId] = envRoles.map(role => ({
|
|
66
|
+
ID: role.id ?? role.ID,
|
|
67
|
+
RoleName: role.roleName ?? role.RoleName,
|
|
68
|
+
Description: role.description ?? role.Description,
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return transformed;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4tcmVzcG9uc2UuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2xvZ2luLXJlc3BvbnNlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9COzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBMkI7UUFDMUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxFQUFFLE1BQU0sQ0FBQztRQUVoQywwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQyxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsaURBQWlEO1FBQ2pELFFBQVEsQ0FBQyxNQUFNLEdBQUc7WUFDaEIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUk7Z0JBQ3pCLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSTtnQkFDakQsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlLElBQUksSUFBSTtnQkFDL0MsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksSUFBSTtnQkFDekMsS0FBSyxFQUFFLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUN4RCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLFVBQVUsRUFBRSxJQUFJO2FBQ2pCO1lBQ0QsS0FBSyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSTtZQUNqQyxZQUFZLEVBQUUsTUFBTSxDQUFDLFlBQVksSUFBSSxJQUFJO1lBQ3pDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUNsQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUM5RCxDQUFDLENBQUMsSUFBSTtZQUNSLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLEtBQUs7WUFDbEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSTtTQUM3QixDQUFDO1FBRUYsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQVU7UUFDdEMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV0QixNQUFNLFdBQVcsR0FBUSxFQUFFLENBQUM7UUFFNUIsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTNCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUNqRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUVsQyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFjLENBQUMsRUFBRSxDQUFDO29CQUMvRCxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUksUUFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNyRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRTt3QkFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVE7d0JBQ3hDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXO3FCQUNsRCxDQUFDLENBQUMsQ0FBQztnQkFDTixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcbi8qKlxyXG4gKiBMb2dpblJlc3BvbnNlQWRhcHRlciAtIFRyYW5zZm9ybXMgbmV3IGxvZ2luIEFQSSByZXNwb25zZSB0byBsZWdhY3kgZm9ybWF0XHJcbiAqXHJcbiAqIFRoZSBuZXcgaWRlbnRpdHkgc2VydmljZSByZXR1cm5zIGEgZmxhdCByZXNwb25zZSBzdHJ1Y3R1cmUgd2l0aCBjYW1lbENhc2UgZmllbGRzLlxyXG4gKiBUaGlzIGFkYXB0ZXIgY29udmVydHMgaXQgdG8gdGhlIG9sZCBuZXN0ZWQgc3RydWN0dXJlIGV4cGVjdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi5cclxuICpcclxuICogTmV3IGZvcm1hdCAoZmxhdCk6XHJcbiAqICAgeyB1c2VySWQsIGVtYWlsLCB1c2VyTmFtZSwgYWNjZXNzVG9rZW4sIHJlZnJlc2hUb2tlbiwgZXhwaXJlc0luLCByb2xlcywgLi4uIH1cclxuICpcclxuICogT2xkIGZvcm1hdCAobmVzdGVkKTpcclxuICogICB7IHVzZXI6IHsgSWQsIFVzZXJOYW1lLCBSb2xlcywgUGVyc29uRGF0YSwgQXR0cmlidXRlcywgLi4uIH0sIFRva2VuLCBSZWZyZXNoVG9rZW4sIFJlZnJlc2hUb2tlbkV4cGlyeSB9XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTG9naW5SZXNwb25zZUFkYXB0ZXIge1xyXG5cclxuICAvKipcclxuICAgKiBUcmFuc2Zvcm1zIHRoZSBub3JtYWxpemVkIENvbW1vbkFwaVJlc3BvbnNlJ3MgUmVzdWx0IGZyb20gbmV3IGZsYXQgZm9ybWF0IHRvIG9sZCBuZXN0ZWQgZm9ybWF0LlxyXG4gICAqIElmIHRoZSBSZXN1bHQgaXMgYWxyZWFkeSBpbiBvbGQgZm9ybWF0IChoYXMgLnVzZXIgb3IgLlRva2VuKSwgcmV0dXJucyBhcy1pcy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSBDb21tb25BcGlSZXNwb25zZSAoYWxyZWFkeSB0b3AtbGV2ZWwgbm9ybWFsaXplZCBieSBSZXNwb25zZUFkYXB0ZXIpXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIHdpdGggUmVzdWx0IHRyYW5zZm9ybWVkIHRvIGxlZ2FjeSBuZXN0ZWQgZm9ybWF0XHJcbiAgICovXHJcbiAgc3RhdGljIG5vcm1hbGl6ZShyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpOiBDb21tb25BcGlSZXNwb25zZSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZT8uUmVzdWx0O1xyXG5cclxuICAgIC8vIElmIG51bGwsIGFscmVhZHkgb2xkIGZvcm1hdCAoaGFzIC51c2VyIHdyYXBwZXIgb3IgLlRva2VuKSwgcmV0dXJuIGFzLWlzXHJcbiAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQudXNlciB8fCByZXN1bHQuVG9rZW4pIHtcclxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRyYW5zZm9ybSBuZXcgZmxhdCBmb3JtYXQgdG8gb2xkIG5lc3RlZCBmb3JtYXRcclxuICAgIHJlc3BvbnNlLlJlc3VsdCA9IHtcclxuICAgICAgdXNlcjoge1xyXG4gICAgICAgIElkOiByZXN1bHQudXNlcklkID8/IG51bGwsXHJcbiAgICAgICAgVXNlck5hbWU6IHJlc3VsdC5lbWFpbCA/PyByZXN1bHQudXNlck5hbWUgPz8gbnVsbCxcclxuICAgICAgICBEZWZhdWx0VGVuYW50SWQ6IHJlc3VsdC5kZWZhdWx0VGVuYW50SWQgPz8gbnVsbCxcclxuICAgICAgICBEZWZhdWx0QXBwSWQ6IHJlc3VsdC5kZWZhdWx0QXBwSWQgPz8gbnVsbCxcclxuICAgICAgICBSb2xlczogTG9naW5SZXNwb25zZUFkYXB0ZXIudHJhbnNmb3JtUm9sZXMocmVzdWx0LnJvbGVzKSxcclxuICAgICAgICBUZWFtczogbnVsbCxcclxuICAgICAgICBQZXJzb25EYXRhOiBudWxsLFxyXG4gICAgICAgIE1haWxpbmdBZGRyZXNzOiBudWxsLFxyXG4gICAgICAgIExvY2FsZTogbnVsbCxcclxuICAgICAgICBBdHRyaWJ1dGVzOiBudWxsLFxyXG4gICAgICB9LFxyXG4gICAgICBUb2tlbjogcmVzdWx0LmFjY2Vzc1Rva2VuID8/IG51bGwsXHJcbiAgICAgIFJlZnJlc2hUb2tlbjogcmVzdWx0LnJlZnJlc2hUb2tlbiA/PyBudWxsLFxyXG4gICAgICBSZWZyZXNoVG9rZW5FeHBpcnk6IHJlc3VsdC5leHBpcmVzSW5cclxuICAgICAgICA/IG5ldyBEYXRlKERhdGUubm93KCkgKyByZXN1bHQuZXhwaXJlc0luICogMTAwMCkudG9JU09TdHJpbmcoKVxyXG4gICAgICAgIDogbnVsbCxcclxuICAgICAgU3VjY2VzczogcmVzdWx0LnN1Y2NlZWRlZCA/PyBmYWxzZSxcclxuICAgICAgRXJyb3JzOiByZXN1bHQuZXJyb3IgPz8gbnVsbCxcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJhbnNmb3JtcyByb2xlcyBmcm9tIG5ldyBjYW1lbENhc2UgZm9ybWF0IHRvIG9sZCBQYXNjYWxDYXNlIGZvcm1hdC5cclxuICAgKiBTdHJ1Y3R1cmU6IHsgdGVuYW50SWQ6IHsgYXBwSWQ6IHsgZW52SWQ6IFt7IGlkLCByb2xlTmFtZSwgZGVzY3JpcHRpb24gfV0gfSB9IH1cclxuICAgKiBiZWNvbWVzOiAgIHsgdGVuYW50SWQ6IHsgYXBwSWQ6IHsgZW52SWQ6IFt7IElELCBSb2xlTmFtZSwgRGVzY3JpcHRpb24gfV0gfSB9IH1cclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyB0cmFuc2Zvcm1Sb2xlcyhyb2xlczogYW55KTogYW55IHtcclxuICAgIGlmICghcm9sZXMpIHJldHVybiB7fTtcclxuXHJcbiAgICBjb25zdCB0cmFuc2Zvcm1lZDogYW55ID0ge307XHJcblxyXG4gICAgZm9yIChjb25zdCBbdGVuYW50SWQsIHRlbmFudERhdGFdIG9mIE9iamVjdC5lbnRyaWVzKHJvbGVzKSkge1xyXG4gICAgICB0cmFuc2Zvcm1lZFt0ZW5hbnRJZF0gPSB7fTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgW2FwcElkLCBhcHBEYXRhXSBvZiBPYmplY3QuZW50cmllcyh0ZW5hbnREYXRhIGFzIGFueSkpIHtcclxuICAgICAgICB0cmFuc2Zvcm1lZFt0ZW5hbnRJZF1bYXBwSWRdID0ge307XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgW2VudklkLCBlbnZSb2xlc10gb2YgT2JqZWN0LmVudHJpZXMoYXBwRGF0YSBhcyBhbnkpKSB7XHJcbiAgICAgICAgICB0cmFuc2Zvcm1lZFt0ZW5hbnRJZF1bYXBwSWRdW2VudklkXSA9IChlbnZSb2xlcyBhcyBhbnlbXSkubWFwKHJvbGUgPT4gKHtcclxuICAgICAgICAgICAgSUQ6IHJvbGUuaWQgPz8gcm9sZS5JRCxcclxuICAgICAgICAgICAgUm9sZU5hbWU6IHJvbGUucm9sZU5hbWUgPz8gcm9sZS5Sb2xlTmFtZSxcclxuICAgICAgICAgICAgRGVzY3JpcHRpb246IHJvbGUuZGVzY3JpcHRpb24gPz8gcm9sZS5EZXNjcmlwdGlvbixcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHJhbnNmb3JtZWQ7XHJcbiAgfVxyXG59Il19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResponseAdapter - Transforms new API response format to legacy format
|
|
3
|
+
*
|
|
4
|
+
* This adapter maintains backward compatibility by converting the new camelCase
|
|
5
|
+
* response format from the backend to the old PascalCase format expected by
|
|
6
|
+
* existing application code.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* // Auto-detect and normalize response
|
|
10
|
+
* return this.apiService.postToService(...).pipe(
|
|
11
|
+
* map(response => ResponseAdapter.normalize(response))
|
|
12
|
+
* );
|
|
13
|
+
*/
|
|
14
|
+
export class ResponseAdapter {
|
|
15
|
+
/**
|
|
16
|
+
* Normalizes a StandardApiResponse to CommonApiResponse format.
|
|
17
|
+
* @param newResponse The response object in the new API format.
|
|
18
|
+
* @returns The normalized response in the legacy format.
|
|
19
|
+
*/
|
|
20
|
+
static normalize(newResponse) {
|
|
21
|
+
return {
|
|
22
|
+
IsSuccess: newResponse?.isSuccess || false,
|
|
23
|
+
Result: newResponse?.result || null,
|
|
24
|
+
RecordAffectted: newResponse?.affectedRecords ?? 0,
|
|
25
|
+
TotalRecords: newResponse?.totalRecords ?? 0,
|
|
26
|
+
TotalExecutionTime: newResponse?.executionTimeMs ?? 0,
|
|
27
|
+
Log: newResponse?.logs ?? [],
|
|
28
|
+
Errors: newResponse?.error
|
|
29
|
+
? [
|
|
30
|
+
newResponse.error?.message,
|
|
31
|
+
...(newResponse.error?.details ? [newResponse.error?.details] : [])
|
|
32
|
+
]
|
|
33
|
+
: [],
|
|
34
|
+
CorrelationId: newResponse?.correlationId // Preserve correlationId for async operations
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL3Jlc3BvbnNlLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0E7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7SUFFMUI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBZ0M7UUFDL0MsT0FBTztZQUNMLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxJQUFJLEtBQUs7WUFDMUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLElBQUksSUFBSTtZQUNuQyxlQUFlLEVBQUUsV0FBVyxFQUFFLGVBQWUsSUFBSSxDQUFDO1lBQ2xELFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxJQUFJLENBQUM7WUFDNUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLGVBQWUsSUFBSSxDQUFDO1lBQ3JELEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDNUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxLQUFLO2dCQUN4QixDQUFDLENBQUM7b0JBQ0UsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPO29CQUMxQixHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2lCQUNwRTtnQkFDSCxDQUFDLENBQUMsRUFBRTtZQUNOLGFBQWEsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFFLDhDQUE4QztTQUMxRixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBDb21tb25BcGlSZXNwb25zZSwgU3RhbmRhcmRBcGlSZXNwb25zZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcblxyXG4vKipcclxuICogUmVzcG9uc2VBZGFwdGVyIC0gVHJhbnNmb3JtcyBuZXcgQVBJIHJlc3BvbnNlIGZvcm1hdCB0byBsZWdhY3kgZm9ybWF0XHJcbiAqXHJcbiAqIFRoaXMgYWRhcHRlciBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBieSBjb252ZXJ0aW5nIHRoZSBuZXcgY2FtZWxDYXNlXHJcbiAqIHJlc3BvbnNlIGZvcm1hdCBmcm9tIHRoZSBiYWNrZW5kIHRvIHRoZSBvbGQgUGFzY2FsQ2FzZSBmb3JtYXQgZXhwZWN0ZWQgYnlcclxuICogZXhpc3RpbmcgYXBwbGljYXRpb24gY29kZS5cclxuICpcclxuICogQGV4YW1wbGVcclxuICogLy8gQXV0by1kZXRlY3QgYW5kIG5vcm1hbGl6ZSByZXNwb25zZVxyXG4gKiByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RUb1NlcnZpY2UoLi4uKS5waXBlKFxyXG4gKiAgIG1hcChyZXNwb25zZSA9PiBSZXNwb25zZUFkYXB0ZXIubm9ybWFsaXplKHJlc3BvbnNlKSlcclxuICogKTtcclxuICovXHJcbmV4cG9ydCBjbGFzcyBSZXNwb25zZUFkYXB0ZXIge1xyXG5cclxuICAvKipcclxuICAgKiBOb3JtYWxpemVzIGEgU3RhbmRhcmRBcGlSZXNwb25zZSB0byBDb21tb25BcGlSZXNwb25zZSBmb3JtYXQuXHJcbiAgICogQHBhcmFtIG5ld1Jlc3BvbnNlIFRoZSByZXNwb25zZSBvYmplY3QgaW4gdGhlIG5ldyBBUEkgZm9ybWF0LlxyXG4gICAqIEByZXR1cm5zIFRoZSBub3JtYWxpemVkIHJlc3BvbnNlIGluIHRoZSBsZWdhY3kgZm9ybWF0LlxyXG4gICAqL1xyXG4gIHN0YXRpYyBub3JtYWxpemUobmV3UmVzcG9uc2U6IFN0YW5kYXJkQXBpUmVzcG9uc2UpOiBDb21tb25BcGlSZXNwb25zZSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBJc1N1Y2Nlc3M6IG5ld1Jlc3BvbnNlPy5pc1N1Y2Nlc3MgfHwgZmFsc2UsXHJcbiAgICAgIFJlc3VsdDogbmV3UmVzcG9uc2U/LnJlc3VsdCB8fCBudWxsLFxyXG4gICAgICBSZWNvcmRBZmZlY3R0ZWQ6IG5ld1Jlc3BvbnNlPy5hZmZlY3RlZFJlY29yZHMgPz8gMCxcclxuICAgICAgVG90YWxSZWNvcmRzOiBuZXdSZXNwb25zZT8udG90YWxSZWNvcmRzID8/IDAsXHJcbiAgICAgIFRvdGFsRXhlY3V0aW9uVGltZTogbmV3UmVzcG9uc2U/LmV4ZWN1dGlvblRpbWVNcyA/PyAwLFxyXG4gICAgICBMb2c6IG5ld1Jlc3BvbnNlPy5sb2dzID8/IFtdLFxyXG4gICAgICBFcnJvcnM6IG5ld1Jlc3BvbnNlPy5lcnJvclxyXG4gICAgICAgID8gW1xyXG4gICAgICAgICAgICBuZXdSZXNwb25zZS5lcnJvcj8ubWVzc2FnZSxcclxuICAgICAgICAgICAgLi4uKG5ld1Jlc3BvbnNlLmVycm9yPy5kZXRhaWxzID8gW25ld1Jlc3BvbnNlLmVycm9yPy5kZXRhaWxzXSA6IFtdKVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIDogW10sXHJcbiAgICAgIENvcnJlbGF0aW9uSWQ6IG5ld1Jlc3BvbnNlPy5jb3JyZWxhdGlvbklkICAvLyBQcmVzZXJ2ZSBjb3JyZWxhdGlvbklkIGZvciBhc3luYyBvcGVyYXRpb25zXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|