@techextensor/tab-core-utility 2.2.184 → 2.2.187
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 +1 -5
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +13 -24
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +50 -14
- package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +49 -38
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +30 -81
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +12 -141
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +35 -136
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +38 -89
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +131 -152
- package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +17 -6
- package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +11 -9
- 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 +45 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +76 -79
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +4 -8
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +33 -8
- package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +1 -39
- package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +7 -36
- package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +47 -84
- package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +13 -24
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +23 -57
- package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +10 -21
- package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +6 -12
- package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +4 -11
- package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +16 -17
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +55 -1
- package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +164 -1
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +1 -63
- package/index.d.ts +0 -4
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +10 -13
- package/lib/tab-core-utility/app/constants/common.d.ts +0 -9
- package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +1 -8
- package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +10 -20
- package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +6 -33
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +3 -45
- package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +21 -16
- package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +19 -34
- package/lib/tab-core-utility/app/enums/query.enum.d.ts +6 -3
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +8 -3
- package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +0 -3
- 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 +51 -7
- package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -1
- package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +1 -2
- package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -1
- package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +2 -50
- package/lib/tab-core-utility/app/models/api-query.class.d.ts +9 -54
- package/lib/tab-core-utility/app/models/app-field.model.d.ts +2 -4
- package/lib/tab-core-utility/app/models/app-object.model.d.ts +3 -5
- 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 +2 -7
- 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 +2 -3
- package/lib/tab-core-utility/app/utils/req-res.util.d.ts +9 -1
- package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +61 -0
- package/lib/tab-core-utility/core/http-client/api.service.d.ts +0 -37
- package/package.json +2 -3
- package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +0 -38
- package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +0 -42
- package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +0 -82
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +0 -252
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +0 -207
- package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +0 -22
- package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +0 -80
- package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +0 -40
- package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +0 -68
- package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +0 -122
|
@@ -1,4 +1,90 @@
|
|
|
1
|
+
import { Common } from '../constants/common';
|
|
1
2
|
import { deleteKeyFromResponse } from './req-res.util';
|
|
3
|
+
/** Get the DataSourceQuery ID from the selected AppObject's DataSourceQuery array
|
|
4
|
+
* @param dsqList - The list of DataSourceQueries
|
|
5
|
+
* @param table - The table name
|
|
6
|
+
* @param like - The like string
|
|
7
|
+
* @returns string - The ID of the DataSourceQuery
|
|
8
|
+
*/
|
|
9
|
+
export function getDsqIdfromSelectedAppObjectDSQArray(dsqList, table, like) {
|
|
10
|
+
if (dsqList) {
|
|
11
|
+
const matchName = like + '_' + table;
|
|
12
|
+
const result = dsqList.find((d) => d.QueryName === matchName);
|
|
13
|
+
return result?.ID;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Get the AppObject based on the provided ID
|
|
17
|
+
* @param id - The ID of the AppObject
|
|
18
|
+
* @returns AppObject | null - The found AppObject or null
|
|
19
|
+
*/
|
|
20
|
+
export function getAppObject(id) {
|
|
21
|
+
const tabData = Common.tabJson;
|
|
22
|
+
return (tabData?.AppObjects.find((t) => t.ID === id?.toLowerCase()) || null);
|
|
23
|
+
}
|
|
24
|
+
// function waitForData(timeout = 5000): Promise<void> {
|
|
25
|
+
// return new Promise((resolve, reject) => {
|
|
26
|
+
// const interval = 100; // Check every 100ms
|
|
27
|
+
// let waited = 0;
|
|
28
|
+
// const checkData = () => {
|
|
29
|
+
// if (Common.tabJson) {
|
|
30
|
+
// resolve();
|
|
31
|
+
// } else if (waited >= timeout) {
|
|
32
|
+
// reject(new Error('Timeout waiting for Common.tabJson'));
|
|
33
|
+
// } else {
|
|
34
|
+
// waited += interval;
|
|
35
|
+
// setTimeout(checkData, interval);
|
|
36
|
+
// }
|
|
37
|
+
// };
|
|
38
|
+
// checkData();
|
|
39
|
+
// });
|
|
40
|
+
// }
|
|
41
|
+
/**
|
|
42
|
+
* Get the AppObject from the DataSourceQuery ID
|
|
43
|
+
* @param dsqId - The DataSourceQuery ID
|
|
44
|
+
* @returns AppObject | null - The found AppObject or null
|
|
45
|
+
*/
|
|
46
|
+
export function getAppObjectFromDataSourceQueryID(dsqId) {
|
|
47
|
+
const tabData = Common.tabJson;
|
|
48
|
+
if (!dsqId || !tabData) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
for (const appObject of tabData.AppObjects) {
|
|
52
|
+
const dsq = appObject.DataSourceQueries.find((l) => l.ID === dsqId?.toLowerCase());
|
|
53
|
+
if (dsq) {
|
|
54
|
+
return appObject;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the DataSourceQuery ID from the QueryName and table
|
|
61
|
+
* @param table - The table name
|
|
62
|
+
* @param dsq - The DataSourceQuery name
|
|
63
|
+
* @returns any - The found DataSourceQuery
|
|
64
|
+
*/
|
|
65
|
+
export function getDsqIDFromQueryName(table, dsq) {
|
|
66
|
+
const appObjectList = getAppObjectFromSystemDBTableName(table);
|
|
67
|
+
return appObjectList?.DataSourceQueries.find((d) => d.QueryName === dsq);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the Data from the DataSourceQuery ID
|
|
71
|
+
*
|
|
72
|
+
* @param dsqId - The DataSourceQuery ID
|
|
73
|
+
* @returns any - The found Data
|
|
74
|
+
*/
|
|
75
|
+
export function getDataFromDataSourceQueryID(dsqId) {
|
|
76
|
+
const tabData = Common.tabJson;
|
|
77
|
+
if (!tabData) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
for (const appObject of tabData.AppObjects) {
|
|
81
|
+
const DSQ = appObject.DataSourceQueries.find((l) => l.ID === dsqId?.toLowerCase());
|
|
82
|
+
if (DSQ) {
|
|
83
|
+
return DSQ;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
2
88
|
/**
|
|
3
89
|
* Synchronize AppObject fields with the response
|
|
4
90
|
*
|
|
@@ -16,4 +102,81 @@ export function syncAppObjectFields(response, appObject) {
|
|
|
16
102
|
}
|
|
17
103
|
return response;
|
|
18
104
|
}
|
|
19
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Get the AppObject based on the SystemDBTableName
|
|
107
|
+
*
|
|
108
|
+
* @param tableName - The SystemDBTableName
|
|
109
|
+
* @returns AppObject | null - The found AppObject or null
|
|
110
|
+
*/
|
|
111
|
+
export function getAppObjectFromSystemDBTableName(tableName) {
|
|
112
|
+
const tabData = Common.tabJson;
|
|
113
|
+
return (tabData?.AppObjects.find((t) => t.SystemDBTableName === tableName) || null);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get the fields based on the appobjectid
|
|
117
|
+
*
|
|
118
|
+
* @param appObjectId - The appobjectid
|
|
119
|
+
* @returns AppObject | null - The found AppObject or null
|
|
120
|
+
*/
|
|
121
|
+
export function getAppfieldsFromAppObjectId(appObjectId) {
|
|
122
|
+
const tabData = Common.tabJson;
|
|
123
|
+
const findAppObject = tabData?.AppObjects.find((t) => t.ID === appObjectId) || null;
|
|
124
|
+
if (findAppObject) {
|
|
125
|
+
return findAppObject.Fields;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export function getLookupAppfieldsFromAppObjectId(appObjectId) {
|
|
132
|
+
const tabData = Common.tabJson;
|
|
133
|
+
const findAppObject = tabData?.AppObjects.find((t) => t.ID === appObjectId) || null;
|
|
134
|
+
if (findAppObject) {
|
|
135
|
+
const lookupFields = findAppObject.Fields.filter((t) => t.LookUpDetails);
|
|
136
|
+
if (lookupFields) {
|
|
137
|
+
return lookupFields;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export function getViewAppObjectDetailsFromDSQID(dsqID) {
|
|
145
|
+
const appObject = getAppObjectFromDataSourceQueryID(dsqID);
|
|
146
|
+
let viewAppObjectDetailsOfGrid = appObject;
|
|
147
|
+
// check appobject is table or view
|
|
148
|
+
if (appObject && appObject.ObjectType == 2) {
|
|
149
|
+
viewAppObjectDetailsOfGrid = getAppObject(appObject?.CRUDAppObjectId);
|
|
150
|
+
}
|
|
151
|
+
return viewAppObjectDetailsOfGrid;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Retrieves all appObjects and their DSQs in a single list
|
|
155
|
+
* suitable for tree view representation.
|
|
156
|
+
* @author : Parth B Thakkar
|
|
157
|
+
* @Usage : HTTP Request
|
|
158
|
+
* @returns Array<{ id: string; name: string; hasChildren: boolean; parentID: string | null }>
|
|
159
|
+
*/
|
|
160
|
+
export function getAllAppObjectsForTreeViewJson() {
|
|
161
|
+
const tabData = Common.tabJson;
|
|
162
|
+
const fieldData = [];
|
|
163
|
+
for (const appObject of tabData?.AppObjects || []) {
|
|
164
|
+
fieldData.push({
|
|
165
|
+
id: appObject.ID,
|
|
166
|
+
name: appObject.DisplayName,
|
|
167
|
+
hasChildren: true,
|
|
168
|
+
parentID: null,
|
|
169
|
+
});
|
|
170
|
+
// looping children
|
|
171
|
+
for (const dsq of appObject.DataSourceQueries) {
|
|
172
|
+
fieldData.push({
|
|
173
|
+
id: dsq.ID,
|
|
174
|
+
name: dsq.DisplayName,
|
|
175
|
+
hasChildren: false,
|
|
176
|
+
parentID: appObject.ID,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return fieldData.sort((a, b) => a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1);
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWFwcC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3RhYi1hcHAudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdkQ7Ozs7O0dBS0c7QUFFSCxNQUFNLFVBQVUscUNBQXFDLENBQ25ELE9BQVksRUFDWixLQUFhLEVBQ2IsSUFBWTtJQUVaLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUNwQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUVILE1BQU0sVUFBVSxZQUFZLENBQUMsRUFBVTtJQUNyQyxNQUFNLE9BQU8sR0FBZSxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQzNDLE9BQU8sQ0FDTCxPQUFPLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQ3pFLENBQUM7QUFDSixDQUFDO0FBRUQsd0RBQXdEO0FBQ3hELDhDQUE4QztBQUM5QyxpREFBaUQ7QUFDakQsc0JBQXNCO0FBRXRCLGdDQUFnQztBQUNoQyw4QkFBOEI7QUFDOUIscUJBQXFCO0FBQ3JCLHdDQUF3QztB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QUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDckQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgQXBwT2JqZWN0IH0gZnJvbSAnLi4vbW9kZWxzL2FwcC1vYmplY3QuY2xhc3MnO1xyXG5pbXBvcnQgeyBkZWxldGVLZXlGcm9tUmVzcG9uc2UgfSBmcm9tICcuL3JlcS1yZXMudXRpbCc7XHJcblxyXG4vKiogR2V0IHRoZSBEYXRhU291cmNlUXVlcnkgSUQgZnJvbSB0aGUgc2VsZWN0ZWQgQXBwT2JqZWN0J3MgRGF0YVNvdXJjZVF1ZXJ5IGFycmF5XHJcbiAqIEBwYXJhbSBkc3FMaXN0IC0gVGhlIGxpc3Qgb2YgRGF0YVNvdXJjZVF1ZXJpZXNcclxuICogQHBhcmFtIHRhYmxlIC0gVGhlIHRhYmxlIG5hbWVcclxuICogQHBhcmFtIGxpa2UgLSBUaGUgbGlrZSBzdHJpbmdcclxuICogQHJldHVybnMgc3RyaW5nIC0gVGhlIElEIG9mIHRoZSBEYXRhU291cmNlUXVlcnlcclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHNxSWRmcm9tU2VsZWN0ZWRBcHBPYmplY3REU1FBcnJheShcclxuICBkc3FMaXN0OiBhbnksXHJcbiAgdGFibGU6IHN0cmluZyxcclxuICBsaWtlOiBzdHJpbmdcclxuKSB7XHJcbiAgaWYgKGRzcUxpc3QpIHtcclxuICAgIGNvbnN0IG1hdGNoTmFtZSA9IGxpa2UgKyAnXycgKyB0YWJsZTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGRzcUxpc3QuZmluZCgoZDogYW55KSA9PiBkLlF1ZXJ5TmFtZSA9PT0gbWF0Y2hOYW1lKTtcclxuICAgIHJldHVybiByZXN1bHQ/LklEO1xyXG4gIH1cclxufVxyXG5cclxuLyoqIEdldCB0aGUgQXBwT2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBJRFxyXG4gKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIEFwcE9iamVjdFxyXG4gKiBAcmV0dXJucyBBcHBPYmplY3QgfCBudWxsIC0gVGhlIGZvdW5kIEFwcE9iamVjdCBvciBudWxsXHJcbiAqL1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcE9iamVjdChpZDogc3RyaW5nKSB7XHJcbiAgY29uc3QgdGFiRGF0YTogYW55IHwgbnVsbCA9IENvbW1vbi50YWJKc29uO1xyXG4gIHJldHVybiAoXHJcbiAgICB0YWJEYXRhPy5BcHBPYmplY3RzLmZpbmQoKHQ6IGFueSkgPT4gdC5JRCA9PT0gaWQ/LnRvTG93ZXJDYXNlKCkpIHx8IG51bGxcclxuICApO1xyXG59XHJcblxyXG4vLyBmdW5jdGlvbiB3YWl0Rm9yRGF0YSh0aW1lb3V0ID0gNTAwMCk6IFByb21pc2U8dm9pZD4ge1xyXG4vLyAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbi8vICAgICBjb25zdCBpbnRlcnZhbCA9IDEwMDsgLy8gQ2hlY2sgZXZlcnkgMTAwbXNcclxuLy8gICAgIGxldCB3YWl0ZWQgPSAwO1xyXG5cclxuLy8gICAgIGNvbnN0IGNoZWNrRGF0YSA9ICgpID0+IHtcclxuLy8gICAgICAgaWYgKENvbW1vbi50YWJKc29uKSB7XHJcbi8vICAgICAgICAgcmVzb2x2ZSgpO1xyXG4vLyAgICAgICB9IGVsc2UgaWYgKHdhaXRlZCA+PSB0aW1lb3V0KSB7XHJcbi8vICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVGltZW91dCB3YWl0aW5nIGZvciBDb21tb24udGFiSnNvbicpKTtcclxuLy8gICAgICAgfSBlbHNlIHtcclxuLy8gICAgICAgICB3YWl0ZWQgKz0gaW50ZXJ2YWw7XHJcbi8vICAgICAgICAgc2V0VGltZW91dChjaGVja0RhdGEsIGludGVydmFsKTtcclxuLy8gICAgICAgfVxyXG4vLyAgICAgfTtcclxuXHJcbi8vICAgICBjaGVja0RhdGEoKTtcclxuLy8gICB9KTtcclxuLy8gfVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgQXBwT2JqZWN0IGZyb20gdGhlIERhdGFTb3VyY2VRdWVyeSBJRFxyXG4gKiBAcGFyYW0gZHNxSWQgLSBUaGUgRGF0YVNvdXJjZVF1ZXJ5IElEXHJcbiAqIEByZXR1cm5zIEFwcE9iamVjdCB8IG51bGwgLSBUaGUgZm91bmQgQXBwT2JqZWN0IG9yIG51bGxcclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwT2JqZWN0RnJvbURhdGFTb3VyY2VRdWVyeUlEKGRzcUlkOiBzdHJpbmcpIHtcclxuICBjb25zdCB0YWJEYXRhOiBhbnkgPSBDb21tb24udGFiSnNvbjtcclxuICBpZiAoIWRzcUlkIHx8ICF0YWJEYXRhKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgYXBwT2JqZWN0IG9mIHRhYkRhdGEuQXBwT2JqZWN0cykge1xyXG4gICAgY29uc3QgZHNxID0gYXBwT2JqZWN0LkRhdGFTb3VyY2VRdWVyaWVzLmZpbmQoXHJcbiAgICAgIChsOiBhbnkpID0+IGwuSUQgPT09IGRzcUlkPy50b0xvd2VyQ2FzZSgpXHJcbiAgICApO1xyXG4gICAgaWYgKGRzcSkge1xyXG4gICAgICByZXR1cm4gYXBwT2JqZWN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIERhdGFTb3VyY2VRdWVyeSBJRCBmcm9tIHRoZSBRdWVyeU5hbWUgYW5kIHRhYmxlXHJcbiAqIEBwYXJhbSB0YWJsZSAtIFRoZSB0YWJsZSBuYW1lXHJcbiAqIEBwYXJhbSBkc3EgLSBUaGUgRGF0YVNvdXJjZVF1ZXJ5IG5hbWVcclxuICogQHJldHVybnMgYW55IC0gVGhlIGZvdW5kIERhdGFTb3VyY2VRdWVyeVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERzcUlERnJvbVF1ZXJ5TmFtZSh0YWJsZTogc3RyaW5nLCBkc3E6IHN0cmluZykge1xyXG4gIGNvbnN0IGFwcE9iamVjdExpc3QgPSBnZXRBcHBPYmplY3RGcm9tU3lzdGVtREJUYWJsZU5hbWUodGFibGUpO1xyXG4gIHJldHVybiBhcHBPYmplY3RMaXN0Py5EYXRhU291cmNlUXVlcmllcy5maW5kKChkOiBhbnkpID0+IGQuUXVlcnlOYW1lID09PSBkc3EpO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBEYXRhIGZyb20gdGhlIERhdGFTb3VyY2VRdWVyeSBJRFxyXG4gKlxyXG4gKiBAcGFyYW0gZHNxSWQgLSBUaGUgRGF0YVNvdXJjZVF1ZXJ5IElEXHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSBmb3VuZCBEYXRhXHJcbiAqL1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFGcm9tRGF0YVNvdXJjZVF1ZXJ5SUQoZHNxSWQ6IHN0cmluZykge1xyXG4gIGNvbnN0IHRhYkRhdGE6IGFueSA9IENvbW1vbi50YWJKc29uO1xyXG4gIGlmICghdGFiRGF0YSkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBmb3IgKGNvbnN0IGFwcE9iamVjdCBvZiB0YWJEYXRhLkFwcE9iamVjdHMpIHtcclxuICAgIGNvbnN0IERTUSA9IGFwcE9iamVjdC5EYXRhU291cmNlUXVlcmllcy5maW5kKFxyXG4gICAgICAobDogYW55KSA9PiBsLklEID09PSBkc3FJZD8udG9Mb3dlckNhc2UoKVxyXG4gICAgKTtcclxuICAgIGlmIChEU1EpIHtcclxuICAgICAgcmV0dXJuIERTUTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogU3luY2hyb25pemUgQXBwT2JqZWN0IGZpZWxkcyB3aXRoIHRoZSByZXNwb25zZVxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBhcHBPYmplY3QgLSBUaGUgQXBwT2JqZWN0XHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSBzeW5jaHJvbml6ZWQgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc3luY0FwcE9iamVjdEZpZWxkcyhyZXNwb25zZTogYW55LCBhcHBPYmplY3Q6IEFwcE9iamVjdCkge1xyXG4gIGZvciAoY29uc3Qga2V5IGluIHJlc3BvbnNlKSB7XHJcbiAgICBjb25zdCBmb3VuZE9iaiA9IGFwcE9iamVjdC5GaWVsZHMuZmluZCgoZjogYW55KSA9PiBmLkZpZWxkTmFtZSA9PT0ga2V5KTtcclxuICAgIGNvbnN0IGNoaWxEYXRhID0gYXBwT2JqZWN0LkNoaWxkUmVsYXRpb25TaGlwcz8ubWFwKFxyXG4gICAgICAoeCkgPT4geC5jaGlsZERldGFpbHMuTG9va3VwT2JqZWN0XHJcbiAgICApO1xyXG4gICAgaWYgKCFmb3VuZE9iaiAmJiAhKGNoaWxEYXRhICYmIGNoaWxEYXRhLnNvbWUoKHgpID0+IHguaW5jbHVkZXMoa2V5KSkpKSB7XHJcbiAgICAgIGRlbGV0ZUtleUZyb21SZXNwb25zZShyZXNwb25zZSwga2V5KTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBBcHBPYmplY3QgYmFzZWQgb24gdGhlIFN5c3RlbURCVGFibGVOYW1lXHJcbiAqXHJcbiAqIEBwYXJhbSB0YWJsZU5hbWUgLSBUaGUgU3lzdGVtREJUYWJsZU5hbWVcclxuICogQHJldHVybnMgQXBwT2JqZWN0IHwgbnVsbCAtIFRoZSBmb3VuZCBBcHBPYmplY3Qgb3IgbnVsbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcE9iamVjdEZyb21TeXN0ZW1EQlRhYmxlTmFtZSh0YWJsZU5hbWU6IHN0cmluZykge1xyXG4gIGNvbnN0IHRhYkRhdGE6IGFueSA9IENvbW1vbi50YWJKc29uO1xyXG4gIHJldHVybiAoXHJcbiAgICB0YWJEYXRhPy5BcHBPYmplY3RzLmZpbmQoXHJcbiAgICAgICh0OiB7IFN5c3RlbURCVGFibGVOYW1lOiBzdHJpbmcgfSkgPT4gdC5TeXN0ZW1EQlRhYmxlTmFtZSA9PT0gdGFibGVOYW1lXHJcbiAgICApIHx8IG51bGxcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBmaWVsZHMgYmFzZWQgb24gdGhlIGFwcG9iamVjdGlkXHJcbiAqXHJcbiAqIEBwYXJhbSBhcHBPYmplY3RJZCAtIFRoZSBhcHBvYmplY3RpZFxyXG4gKiBAcmV0dXJucyBBcHBPYmplY3QgfCBudWxsIC0gVGhlIGZvdW5kIEFwcE9iamVjdCBvciBudWxsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwZmllbGRzRnJvbUFwcE9iamVjdElkKGFwcE9iamVjdElkOiBzdHJpbmcpIHtcclxuICBjb25zdCB0YWJEYXRhOiBhbnkgPSBDb21tb24udGFiSnNvbjtcclxuICBjb25zdCBmaW5kQXBwT2JqZWN0ID1cclxuICAgIHRhYkRhdGE/LkFwcE9iamVjdHMuZmluZCgodDogYW55KSA9PiB0LklEID09PSBhcHBPYmplY3RJZCkgfHwgbnVsbDtcclxuICBpZiAoZmluZEFwcE9iamVjdCkge1xyXG4gICAgcmV0dXJuIGZpbmRBcHBPYmplY3QuRmllbGRzO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRMb29rdXBBcHBmaWVsZHNGcm9tQXBwT2JqZWN0SWQoYXBwT2JqZWN0SWQ6IHN0cmluZykge1xyXG4gIGNvbnN0IHRhYkRhdGE6IGFueSA9IENvbW1vbi50YWJKc29uO1xyXG4gIGNvbnN0IGZpbmRBcHBPYmplY3QgPVxyXG4gICAgdGFiRGF0YT8uQXBwT2JqZWN0cy5maW5kKCh0OiBhbnkpID0+IHQuSUQgPT09IGFwcE9iamVjdElkKSB8fCBudWxsO1xyXG4gIGlmIChmaW5kQXBwT2JqZWN0KSB7XHJcbiAgICBjb25zdCBsb29rdXBGaWVsZHMgPSBmaW5kQXBwT2JqZWN0LkZpZWxkcy5maWx0ZXIoXHJcbiAgICAgICh0OiBhbnkpID0+IHQuTG9va1VwRGV0YWlsc1xyXG4gICAgKTtcclxuICAgIGlmIChsb29rdXBGaWVsZHMpIHtcclxuICAgICAgcmV0dXJuIGxvb2t1cEZpZWxkcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Vmlld0FwcE9iamVjdERldGFpbHNGcm9tRFNRSUQoZHNxSUQ6IHN0cmluZykge1xyXG4gIGNvbnN0IGFwcE9iamVjdCA9IGdldEFwcE9iamVjdEZyb21EYXRhU291cmNlUXVlcnlJRChkc3FJRCk7XHJcbiAgbGV0IHZpZXdBcHBPYmplY3REZXRhaWxzT2ZHcmlkID0gYXBwT2JqZWN0O1xyXG4gIC8vIGNoZWNrIGFwcG9iamVjdCBpcyB0YWJsZSBvciB2aWV3XHJcbiAgaWYgKGFwcE9iamVjdCAmJiBhcHBPYmplY3QuT2JqZWN0VHlwZSA9PSAyKSB7XHJcbiAgICB2aWV3QXBwT2JqZWN0RGV0YWlsc09mR3JpZCA9IGdldEFwcE9iamVjdChhcHBPYmplY3Q/LkNSVURBcHBPYmplY3RJZCk7XHJcbiAgfVxyXG4gIHJldHVybiB2aWV3QXBwT2JqZWN0RGV0YWlsc09mR3JpZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJldHJpZXZlcyBhbGwgYXBwT2JqZWN0cyBhbmQgdGhlaXIgRFNRcyBpbiBhIHNpbmdsZSBsaXN0XHJcbiAqIHN1aXRhYmxlIGZvciB0cmVlIHZpZXcgcmVwcmVzZW50YXRpb24uXHJcbiAqIEBhdXRob3IgOiBQYXJ0aCBCIFRoYWtrYXJcclxuICogQFVzYWdlIDogSFRUUCBSZXF1ZXN0XHJcbiAqIEByZXR1cm5zIEFycmF5PHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBoYXNDaGlsZHJlbjogYm9vbGVhbjsgcGFyZW50SUQ6IHN0cmluZyB8IG51bGwgfT5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxBcHBPYmplY3RzRm9yVHJlZVZpZXdKc29uKCkge1xyXG4gIGNvbnN0IHRhYkRhdGEgPSBDb21tb24udGFiSnNvbjtcclxuXHJcbiAgY29uc3QgZmllbGREYXRhOiBBcnJheTx7XHJcbiAgICBpZDogc3RyaW5nOyAvLyBVVUlEIGFzIGEgc3RyaW5nXHJcbiAgICBuYW1lOiBzdHJpbmc7IC8vIE5hbWUgb2YgdGhlIG5vZGVcclxuICAgIGhhc0NoaWxkcmVuOiBib29sZWFuOyAvLyBXaGV0aGVyIHRoZSBub2RlIGhhcyBjaGlsZHJlblxyXG4gICAgcGFyZW50SUQ6IHN0cmluZyB8IG51bGw7IC8vIFBhcmVudCBJRCBpZiBhcHBsaWNhYmxlLCBvdGhlcndpc2UgbnVsbFxyXG4gIH0+ID0gW107XHJcbiAgZm9yIChjb25zdCBhcHBPYmplY3Qgb2YgdGFiRGF0YT8uQXBwT2JqZWN0cyB8fCBbXSkge1xyXG4gICAgZmllbGREYXRhLnB1c2goe1xyXG4gICAgICBpZDogYXBwT2JqZWN0LklELFxyXG4gICAgICBuYW1lOiBhcHBPYmplY3QuRGlzcGxheU5hbWUsXHJcbiAgICAgIGhhc0NoaWxkcmVuOiB0cnVlLFxyXG4gICAgICBwYXJlbnRJRDogbnVsbCxcclxuICAgIH0pO1xyXG4gICAgLy8gbG9vcGluZyBjaGlsZHJlblxyXG4gICAgZm9yIChjb25zdCBkc3Egb2YgYXBwT2JqZWN0LkRhdGFTb3VyY2VRdWVyaWVzKSB7XHJcbiAgICAgIGZpZWxkRGF0YS5wdXNoKHtcclxuICAgICAgICBpZDogZHNxLklELFxyXG4gICAgICAgIG5hbWU6IGRzcS5EaXNwbGF5TmFtZSxcclxuICAgICAgICBoYXNDaGlsZHJlbjogZmFsc2UsXHJcbiAgICAgICAgcGFyZW50SUQ6IGFwcE9iamVjdC5JRCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBmaWVsZERhdGEuc29ydCgoYSwgYikgPT5cclxuICAgIGEubmFtZS50b0xvd2VyQ2FzZSgpID4gYi5uYW1lLnRvTG93ZXJDYXNlKCkgPyAxIDogLTFcclxuICApO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Injectable, inject } from '@angular/core';
|
|
3
3
|
import { HttpClient, HttpParams } from '@angular/common/http';
|
|
4
|
-
import { map } from 'rxjs/operators';
|
|
5
4
|
import { API_URL } from './api-url.token';
|
|
6
|
-
import { Common } from '../../app/constants/common';
|
|
7
|
-
import { ResponseAdapter } from '../../app/helpers/response.adapter';
|
|
8
5
|
import * as i0 from "@angular/core";
|
|
9
6
|
export class ApiService {
|
|
10
7
|
constructor() {
|
|
@@ -124,65 +121,6 @@ export class ApiService {
|
|
|
124
121
|
deleteByUrl(url, options) {
|
|
125
122
|
return this.http.delete(url, { ...options });
|
|
126
123
|
}
|
|
127
|
-
// ==================== NEW MICROSERVICE METHODS ====================
|
|
128
|
-
/**
|
|
129
|
-
* Makes an HTTP GET request to a specific microservice
|
|
130
|
-
* @param serviceName - Name of the microservice (e.g., 'crudService', 'metadataService')
|
|
131
|
-
* @param endPointName - Endpoint path relative to the service
|
|
132
|
-
* @param params - Query parameters for the request
|
|
133
|
-
* @param reqHeader - Custom headers for the request
|
|
134
|
-
* @returns An Observable emitting the response data (auto-normalized to CommonApiResponse format)
|
|
135
|
-
*/
|
|
136
|
-
getFromService(serviceName, endPointName, params = new HttpParams(), reqHeader) {
|
|
137
|
-
const serviceUrl = Common.apiServiceUrls[serviceName];
|
|
138
|
-
return this.http.get(`${serviceUrl}${endPointName}`, {
|
|
139
|
-
headers: reqHeader,
|
|
140
|
-
params,
|
|
141
|
-
}).pipe(map(response => ResponseAdapter.normalize(response)));
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Makes an HTTP POST request to a specific microservice
|
|
145
|
-
* @param serviceName - Name of the microservice (e.g., 'crudService', 'formioService')
|
|
146
|
-
* @param endPointName - Endpoint path relative to the service
|
|
147
|
-
* @param data - Data to send with the request
|
|
148
|
-
* @param reqHeader - Custom headers for the request
|
|
149
|
-
* @returns An Observable emitting the response data (auto-normalized to CommonApiResponse format)
|
|
150
|
-
*/
|
|
151
|
-
postToService(serviceName, endPointName, data, reqHeader) {
|
|
152
|
-
const serviceUrl = Common.apiServiceUrls[serviceName];
|
|
153
|
-
return this.http.post(`${serviceUrl}${endPointName}`, JSON.stringify(data), {
|
|
154
|
-
headers: reqHeader,
|
|
155
|
-
}).pipe(map(response => ResponseAdapter.normalize(response)));
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Makes an HTTP PUT request to a specific microservice
|
|
159
|
-
* @param serviceName - Name of the microservice
|
|
160
|
-
* @param endPointName - Endpoint path relative to the service
|
|
161
|
-
* @param data - Data to send with the request
|
|
162
|
-
* @param reqHeader - Custom headers for the request
|
|
163
|
-
* @returns An Observable emitting the response data (auto-normalized to CommonApiResponse format)
|
|
164
|
-
*/
|
|
165
|
-
putToService(serviceName, endPointName, data, reqHeader) {
|
|
166
|
-
const serviceUrl = Common.apiServiceUrls[serviceName];
|
|
167
|
-
return this.http.put(`${serviceUrl}${endPointName}`, JSON.stringify(data), {
|
|
168
|
-
headers: reqHeader,
|
|
169
|
-
}).pipe(map(response => ResponseAdapter.normalize(response)));
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Makes an HTTP DELETE request to a specific microservice
|
|
173
|
-
* @param serviceName - Name of the microservice
|
|
174
|
-
* @param endPointName - Endpoint path relative to the service
|
|
175
|
-
* @param data - Data to send with the request (optional, for DELETE with body)
|
|
176
|
-
* @param reqHeader - Custom headers for the request
|
|
177
|
-
* @returns An Observable emitting the response data (auto-normalized to CommonApiResponse format)
|
|
178
|
-
*/
|
|
179
|
-
deleteFromService(serviceName, endPointName, data, reqHeader) {
|
|
180
|
-
const serviceUrl = Common.apiServiceUrls[serviceName];
|
|
181
|
-
return this.http.delete(`${serviceUrl}${endPointName}`, {
|
|
182
|
-
headers: reqHeader,
|
|
183
|
-
body: data ? JSON.stringify(data) : undefined
|
|
184
|
-
}).pipe(map(response => ResponseAdapter.normalize(response)));
|
|
185
|
-
}
|
|
186
124
|
static { this.ɵfac = function ApiService_Factory(t) { return new (t || ApiService)(); }; }
|
|
187
125
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ApiService, factory: ApiService.ɵfac, providedIn: 'root' }); }
|
|
188
126
|
}
|
|
@@ -190,4 +128,4 @@ export class ApiService {
|
|
|
190
128
|
type: Injectable,
|
|
191
129
|
args: [{ providedIn: 'root' }]
|
|
192
130
|
}], null, null); })();
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7QUFHckUsTUFBTSxPQUFPLFVBQVU7SUFEdkI7UUFFbUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBNFA1QztJQTFQQzs7Ozs7O09BTUc7SUFDSCxHQUFHLENBQ0QsWUFBb0IsRUFDcEIsU0FBcUIsSUFBSSxVQUFVLEVBQUUsRUFDckMsU0FBdUI7UUFFdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxFQUFFLEVBQUU7WUFDeEQsT0FBTyxFQUFFLFNBQVM7WUFDbEIsTUFBTTtTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQ0YsWUFBb0IsRUFDcEIsSUFBUSxFQUNSLFNBQXVCO1FBRXZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJ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QUMsQ0FDckQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsaUJBQWlCLENBQ2YsV0FBMkIsRUFDM0IsWUFBb0IsRUFDcEIsSUFBUSxFQUNSLFNBQXVCO1FBRXZCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBc0IsR0FBRyxVQUFVLEdBQUcsWUFBWSxFQUFFLEVBQUU7WUFDM0UsT0FBTyxFQUFFLFNBQVM7WUFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUM5QyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FDckQsQ0FBQztJQUNKLENBQUM7MkVBN1BVLFVBQVU7dUVBQVYsVUFBVSxXQUFWLFVBQVUsbUJBREcsTUFBTTs7aUZBQ25CLFVBQVU7Y0FEdEIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBQYXJhbXMsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQVBJX1VSTCB9IGZyb20gJy4vYXBpLXVybC50b2tlbic7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uLy4uL2FwcC9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgQVBJU2VydmljZU5hbWUsIENvbW1vbkFwaVJlc3BvbnNlLCBTdGFuZGFyZEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vYXBwL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFJlc3BvbnNlQWRhcHRlciB9IGZyb20gJy4uLy4uL2FwcC9oZWxwZXJzL3Jlc3BvbnNlLmFkYXB0ZXInO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFwaVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaV91cmwgPSBpbmplY3QoQVBJX1VSTCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgR0VUIHJlcXVlc3QgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgVVJMLlxyXG4gICAqIEBwYXJhbSBlbmRQb2ludE5hbWUgVGhlIFVSTCBmb3IgdGhlIEhUVFAgR0VUIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIHBhcmFtcyBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHJlcXVlc3QgKGRlZmF1bHQgaXMgYW4gZW1wdHkgSHR0cFBhcmFtcyBvYmplY3QpLlxyXG4gICAqIEBwYXJhbSByZXFIZWFkZXIgVGhlIGN1c3RvbSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgb2YgdHlwZSBULlxyXG4gICAqL1xyXG4gIGdldDxUPihcclxuICAgIGVuZFBvaW50TmFtZTogc3RyaW5nLFxyXG4gICAgcGFyYW1zOiBIdHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKSxcclxuICAgIHJlcUhlYWRlcj86IEh0dHBIZWFkZXJzXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KGAke3RoaXMuYXBpX3VybH0ke2VuZFBvaW50TmFtZX1gLCB7XHJcbiAgICAgIGhlYWRlcnM6IHJlcUhlYWRlcixcclxuICAgICAgcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIFBPU1QgcmVxdWVzdCB0byBzZW5kIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBVUkwuXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSBUaGUgVVJMIGZvciB0aGUgSFRUUCBQT1NUIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0IChvcHRpb25hbCkuXHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciBUaGUgY3VzdG9tIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0IChvcHRpb25hbCkuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgZGF0YSBvZiB0eXBlIFQuXHJcbiAgICovXHJcbiAgcG9zdDxULCBEPihcclxuICAgIGVuZFBvaW50TmFtZTogc3RyaW5nLFxyXG4gICAgZGF0YT86IEQsXHJcbiAgICByZXFIZWFkZXI/OiBIdHRwSGVhZGVyc1xyXG4gICk6IE9ic2VydmFibGU8RCB8IGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KFxyXG4gICAgICBgJHt0aGlzLmFwaV91cmx9JHtlbmRQb2ludE5hbWV9YCxcclxuICAgICAgSlNPTi5zdHJpbmdpZnkoZGF0YSksXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXJzOiByZXFIZWFkZXIsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIFBVVCByZXF1ZXN0IHRvIHVwZGF0ZSBkYXRhIGF0IHRoZSBzcGVjaWZpZWQgVVJMLlxyXG4gICAqIEBwYXJhbSBlbmRQb2ludE5hbWUgVGhlIFVSTCBmb3IgdGhlIEhUVFAgUFVUIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSByZXFIZWFkZXIgVGhlIGN1c3RvbSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgb2YgdHlwZSBULlxyXG4gICAqL1xyXG4gIHB1dDxULCBEPihcclxuICAgIGVuZFBvaW50TmFtZTogc3RyaW5nLFxyXG4gICAgZGF0YTogRCxcclxuICAgIHJlcUhlYWRlcj86IEh0dHBIZWFkZXJzXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFQ+KFxyXG4gICAgICBgJHt0aGlzLmFwaV91cmx9JHtlbmRQb2ludE5hbWV9YCxcclxuICAgICAgSlNPTi5zdHJpbmdpZnkoZGF0YSksXHJcbiAgICAgIHtcclxuICAgICAgICBoZWFkZXJzOiByZXFIZWFkZXIsXHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIERFTEVURSByZXF1ZXN0IHRvIGRlbGV0ZSBkYXRhIGZyb20gdGhlIHNwZWNpZmllZCBVUkwuXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSBUaGUgVVJMIGZvciB0aGUgSFRUUCBERUxFVEUgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gcmVxSGVhZGVyIFRoZSBjdXN0b20gaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBkYXRhIG9mIHR5cGUgVC5cclxuICAgKi9cclxuICBkZWxldGU8VD4oZW5kUG9pbnROYW1lOiBzdHJpbmcsIHJlcUhlYWRlcj86IEh0dHBIZWFkZXJzKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFQ+KGAke3RoaXMuYXBpX3VybH0ke2VuZFBvaW50TmFtZX1gLCB7XHJcbiAgICAgIGhlYWRlcnM6IHJlcUhlYWRlcixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgYW4gSFRUUCBHRVQgcmVxdWVzdCB0byByZXRyaWV2ZSBibG9iIGRhdGEgd2l0aCBjdXN0b20gaGVhZGVycy5cclxuICAgKiBAcGFyYW0gZW5kUG9pbnROYW1lIFRoZSBVUkwgZm9yIHRoZSBIVFRQIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIHBhcmFtcyBUaGUgcXVlcnkgcGFyYW1ldGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciBUaGUgY3VzdG9tIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGFzIGEgQmxvYi5cclxuICAgKi9cclxuICBnZXRCbG9iPFQ+KFxyXG4gICAgZW5kUG9pbnROYW1lOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLFxyXG4gICAgcmVxSGVhZGVyPzogSHR0cEhlYWRlcnNcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4oYCR7dGhpcy5hcGlfdXJsfSR7ZW5kUG9pbnROYW1lfWAsIHtcclxuICAgICAgaGVhZGVyczogcmVxSGVhZGVyLFxyXG4gICAgICBwYXJhbXMsXHJcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InIGFzICdqc29uJyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgYW4gSFRUUCBQT1NUIHJlcXVlc3QgdG8gc2VuZCBkYXRhIGFuZCByZXRyaWV2ZSBibG9iIGRhdGEgd2l0aCBjdXN0b20gaGVhZGVycy5cclxuICAgKiBAcGFyYW0gZW5kUG9pbnROYW1lIFRoZSBVUkwgZm9yIHRoZSBIVFRQIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSByZXFIZWFkZXIgVGhlIGN1c3RvbSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBhcyBhIEJsb2IuXHJcbiAgICovXHJcbiAgcG9zdEJsb2I8VCwgRD4oXHJcbiAgICBlbmRQb2ludE5hbWU6IHN0cmluZyxcclxuICAgIGRhdGE/OiBELFxyXG4gICAgcmVxSGVhZGVyPzogSHR0cEhlYWRlcnNcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KGAke3RoaXMuYXBpX3VybH0ke2VuZFBvaW50TmFtZX1gLCBkYXRhLCB7XHJcbiAgICAgIGhlYWRlcnM6IHJlcUhlYWRlcixcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicgYXMgJ2pzb24nLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIEdFVCByZXF1ZXN0IHRvIHJldHJpZXZlIGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIFVSTC5cclxuICAgKiBAcGFyYW0gdXJsIFRoZSBVUkwgZm9yIHRoZSBIVFRQIEdFVCByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBjdXN0b20gb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBkYXRhIG9mIHR5cGUgVC5cclxuICAgKi9cclxuICBnZXRCeVVybDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih1cmwsIHsgLi4ub3B0aW9ucyB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgUE9TVCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxyXG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCBmb3IgdGhlIEhUVFAgUE9TVCByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxyXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBjdXN0b20gb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBkYXRhIG9mIHR5cGUgVC5cclxuICAgKi9cclxuICBwb3N0QnlVcmw8VCwgRD4odXJsOiBzdHJpbmcsIGRhdGE/OiBELCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih1cmwsIEpTT04uc3RyaW5naWZ5KGRhdGEpLCB7IC4uLm9wdGlvbnMgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIFBVVCByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxyXG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCBmb3IgdGhlIEhUVFAgUFVUIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0IChvcHRpb25hbCkuXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGN1c3RvbSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgb2YgdHlwZSBULlxyXG4gICAqL1xyXG4gIHB1dEJ5VXJsPFQsIEQ+KHVybDogc3RyaW5nLCBkYXRhPzogRCwgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPih1cmwsIEpTT04uc3RyaW5naWZ5KGRhdGEpLCB7IC4uLm9wdGlvbnMgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIERFTEVURSByZXF1ZXN0IHRvIHRoZSBzcGVjaWZpZWQgVVJMLlxyXG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCBmb3IgdGhlIEhUVFAgREVMRVRFIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGN1c3RvbSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgb2YgdHlwZSBULlxyXG4gICAqL1xyXG4gIGRlbGV0ZUJ5VXJsPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFQ+KHVybCwgeyAuLi5vcHRpb25zIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gPT09PT09PT09PT09PT09PT09PT0gTkVXIE1JQ1JPU0VSVklDRSBNRVRIT0RTID09PT09PT09PT09PT09PT09PT09XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgR0VUIHJlcXVlc3QgdG8gYSBzcGVjaWZpYyBtaWNyb3NlcnZpY2VcclxuICAgKiBAcGFyYW0gc2VydmljZU5hbWUgLSBOYW1lIG9mIHRoZSBtaWNyb3NlcnZpY2UgKGUuZy4sICdjcnVkU2VydmljZScsICdtZXRhZGF0YVNlcnZpY2UnKVxyXG4gICAqIEBwYXJhbSBlbmRQb2ludE5hbWUgLSBFbmRwb2ludCBwYXRoIHJlbGF0aXZlIHRvIHRoZSBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHBhcmFtcyAtIFF1ZXJ5IHBhcmFtZXRlcnMgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciAtIEN1c3RvbSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgKGF1dG8tbm9ybWFsaXplZCB0byBDb21tb25BcGlSZXNwb25zZSBmb3JtYXQpXHJcbiAgICovXHJcbiAgZ2V0RnJvbVNlcnZpY2UoXHJcbiAgICBzZXJ2aWNlTmFtZTogQVBJU2VydmljZU5hbWUsXHJcbiAgICBlbmRQb2ludE5hbWU6IHN0cmluZyxcclxuICAgIHBhcmFtczogSHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCksXHJcbiAgICByZXFIZWFkZXI/OiBIdHRwSGVhZGVyc1xyXG4gICk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBDb21tb24uYXBpU2VydmljZVVybHNbc2VydmljZU5hbWVdO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8U3RhbmRhcmRBcGlSZXNwb25zZT4oYCR7c2VydmljZVVybH0ke2VuZFBvaW50TmFtZX1gLCB7XHJcbiAgICAgIGhlYWRlcnM6IHJlcUhlYWRlcixcclxuICAgICAgcGFyYW1zLFxyXG4gICAgfSkucGlwZShcclxuICAgICAgbWFwKHJlc3BvbnNlID0+IFJlc3BvbnNlQWRhcHRlci5ub3JtYWxpemUocmVzcG9uc2UpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgUE9TVCByZXF1ZXN0IHRvIGEgc3BlY2lmaWMgbWljcm9zZXJ2aWNlXHJcbiAgICogQHBhcmFtIHNlcnZpY2VOYW1lIC0gTmFtZSBvZiB0aGUgbWljcm9zZXJ2aWNlIChlLmcuLCAnY3J1ZFNlcnZpY2UnLCAnZm9ybWlvU2VydmljZScpXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSAtIEVuZHBvaW50IHBhdGggcmVsYXRpdmUgdG8gdGhlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0XHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciAtIEN1c3RvbSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgKGF1dG8tbm9ybWFsaXplZCB0byBDb21tb25BcGlSZXNwb25zZSBmb3JtYXQpXHJcbiAgICovXHJcbiAgcG9zdFRvU2VydmljZTxULCBEPihcclxuICAgIHNlcnZpY2VOYW1lOiBBUElTZXJ2aWNlTmFtZSxcclxuICAgIGVuZFBvaW50TmFtZTogc3RyaW5nLFxyXG4gICAgZGF0YT86IEQsXHJcbiAgICByZXFIZWFkZXI/OiBIdHRwSGVhZGVyc1xyXG4gICk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IHNlcnZpY2VVcmwgPSBDb21tb24uYXBpU2VydmljZVVybHNbc2VydmljZU5hbWVdO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFN0YW5kYXJkQXBpUmVzcG9uc2U+KFxyXG4gICAgICBgJHtzZXJ2aWNlVXJsfSR7ZW5kUG9pbnROYW1lfWAsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KGRhdGEpLFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyczogcmVxSGVhZGVyLFxyXG4gICAgICB9XHJcbiAgICApLnBpcGUoXHJcbiAgICAgIG1hcChyZXNwb25zZSA9PiBSZXNwb25zZUFkYXB0ZXIubm9ybWFsaXplKHJlc3BvbnNlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIFBVVCByZXF1ZXN0IHRvIGEgc3BlY2lmaWMgbWljcm9zZXJ2aWNlXHJcbiAgICogQHBhcmFtIHNlcnZpY2VOYW1lIC0gTmFtZSBvZiB0aGUgbWljcm9zZXJ2aWNlXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSAtIEVuZHBvaW50IHBhdGggcmVsYXRpdmUgdG8gdGhlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0XHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciAtIEN1c3RvbSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgKGF1dG8tbm9ybWFsaXplZCB0byBDb21tb25BcGlSZXNwb25zZSBmb3JtYXQpXHJcbiAgICovXHJcbiAgcHV0VG9TZXJ2aWNlPFQsIEQ+KFxyXG4gICAgc2VydmljZU5hbWU6IEFQSVNlcnZpY2VOYW1lLFxyXG4gICAgZW5kUG9pbnROYW1lOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBELFxyXG4gICAgcmVxSGVhZGVyPzogSHR0cEhlYWRlcnNcclxuICApOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gQ29tbW9uLmFwaVNlcnZpY2VVcmxzW3NlcnZpY2VOYW1lXTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFN0YW5kYXJkQXBpUmVzcG9uc2U+KFxyXG4gICAgICBgJHtzZXJ2aWNlVXJsfSR7ZW5kUG9pbnROYW1lfWAsXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KGRhdGEpLFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyczogcmVxSGVhZGVyLFxyXG4gICAgICB9XHJcbiAgICApLnBpcGUoXHJcbiAgICAgIG1hcChyZXNwb25zZSA9PiBSZXNwb25zZUFkYXB0ZXIubm9ybWFsaXplKHJlc3BvbnNlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIERFTEVURSByZXF1ZXN0IHRvIGEgc3BlY2lmaWMgbWljcm9zZXJ2aWNlXHJcbiAgICogQHBhcmFtIHNlcnZpY2VOYW1lIC0gTmFtZSBvZiB0aGUgbWljcm9zZXJ2aWNlXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSAtIEVuZHBvaW50IHBhdGggcmVsYXRpdmUgdG8gdGhlIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0IChvcHRpb25hbCwgZm9yIERFTEVURSB3aXRoIGJvZHkpXHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciAtIEN1c3RvbSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgKGF1dG8tbm9ybWFsaXplZCB0byBDb21tb25BcGlSZXNwb25zZSBmb3JtYXQpXHJcbiAgICovXHJcbiAgZGVsZXRlRnJvbVNlcnZpY2U8RD4oXHJcbiAgICBzZXJ2aWNlTmFtZTogQVBJU2VydmljZU5hbWUsXHJcbiAgICBlbmRQb2ludE5hbWU6IHN0cmluZyxcclxuICAgIGRhdGE/OiBELFxyXG4gICAgcmVxSGVhZGVyPzogSHR0cEhlYWRlcnNcclxuICApOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBzZXJ2aWNlVXJsID0gQ29tbW9uLmFwaVNlcnZpY2VVcmxzW3NlcnZpY2VOYW1lXTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFN0YW5kYXJkQXBpUmVzcG9uc2U+KGAke3NlcnZpY2VVcmx9JHtlbmRQb2ludE5hbWV9YCwge1xyXG4gICAgICBoZWFkZXJzOiByZXFIZWFkZXIsXHJcbiAgICAgIGJvZHk6IGRhdGEgPyBKU09OLnN0cmluZ2lmeShkYXRhKSA6IHVuZGVmaW5lZFxyXG4gICAgfSkucGlwZShcclxuICAgICAgbWFwKHJlc3BvbnNlID0+IFJlc3BvbnNlQWRhcHRlci5ub3JtYWxpemUocmVzcG9uc2UpKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBZSxNQUFNLHNCQUFzQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFHMUMsTUFBTSxPQUFPLFVBQVU7SUFEdkI7UUFFbUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBd0o1QztJQXRKQzs7Ozs7O09BTUc7SUFDSCxHQUFHLENBQ0QsWUFBb0IsRUFDcEIsU0FBcUIsSUFBSSxVQUFVLEVBQUUsRUFDckMsU0FBdUI7UUFFdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxFQUFFLEVBQUU7WUFDeEQsT0FBTyxFQUFFLFNBQVM7WUFDbEIsTUFBTTtTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLENBQ0YsWUFBb0IsRUFDcEIsSUFBUSxFQUNSLFNBQXVCO1FBRXZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLEVBQUUsRUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFDcEI7WUFDRSxPQUFPLEVBQUUsU0FBUztTQUNuQixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsR0FBRyxDQUNELFlBQW9CLEVBQ3BCLElBQU8sRUFDUCxTQUF1QjtRQUV2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxFQUFFLEVBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ3BCO1lBQ0UsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFJLFlBQW9CLEVBQUUsU0FBdUI7UUFDckQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxFQUFFLEVBQUU7WUFDM0QsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE9BQU8sQ0FDTCxZQUFvQixFQUNwQixTQUFxQixJQUFJLFVBQVUsRUFBRSxFQUNyQyxTQUF1QjtRQUV2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxZQUFZLEVBQUUsRUFBRTtZQUN4RCxPQUFPLEVBQUUsU0FBUztZQUNsQixNQUFNO1lBQ04sWUFBWSxFQUFFLE1BQWdCO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRLENBQ04sWUFBb0IsRUFDcEIsSUFBUSxFQUNSLFNBQXVCO1FBRXZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRTtZQUMvRCxPQUFPLEVBQUUsU0FBUztZQUNsQixZQUFZLEVBQUUsTUFBZ0I7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUFJLEdBQVcsRUFBRSxPQUFhO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxTQUFTLENBQU8sR0FBVyxFQUFFLElBQVEsRUFBRSxPQUFhO1FBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsQ0FBTyxHQUFXLEVBQUUsSUFBUSxFQUFFLE9BQWE7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUksR0FBVyxFQUFFLE9BQWE7UUFDdkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBSSxHQUFHLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQzsyRUF6SlUsVUFBVTt1RUFBVixVQUFVLFdBQVYsVUFBVSxtQkFERyxNQUFNOztpRkFDbkIsVUFBVTtjQUR0QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQVBJX1VSTCB9IGZyb20gJy4vYXBpLXVybC50b2tlbic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQXBpU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpX3VybCA9IGluamVjdChBUElfVVJMKTtcclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgYW4gSFRUUCBHRVQgcmVxdWVzdCB0byByZXRyaWV2ZSBkYXRhIGZyb20gdGhlIHNwZWNpZmllZCBVUkwuXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSBUaGUgVVJMIGZvciB0aGUgSFRUUCBHRVQgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdCAoZGVmYXVsdCBpcyBhbiBlbXB0eSBIdHRwUGFyYW1zIG9iamVjdCkuXHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciBUaGUgY3VzdG9tIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0IChvcHRpb25hbCkuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgZGF0YSBvZiB0eXBlIFQuXHJcbiAgICovXHJcbiAgZ2V0PFQ+KFxyXG4gICAgZW5kUG9pbnROYW1lOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLFxyXG4gICAgcmVxSGVhZGVyPzogSHR0cEhlYWRlcnNcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4oYCR7dGhpcy5hcGlfdXJsfSR7ZW5kUG9pbnROYW1lfWAsIHtcclxuICAgICAgaGVhZGVyczogcmVxSGVhZGVyLFxyXG4gICAgICBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgUE9TVCByZXF1ZXN0IHRvIHNlbmQgZGF0YSB0byB0aGUgc3BlY2lmaWVkIFVSTC5cclxuICAgKiBAcGFyYW0gZW5kUG9pbnROYW1lIFRoZSBVUkwgZm9yIHRoZSBIVFRQIFBPU1QgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cclxuICAgKiBAcGFyYW0gcmVxSGVhZGVyIFRoZSBjdXN0b20gaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cclxuICAgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSByZXNwb25zZSBkYXRhIG9mIHR5cGUgVC5cclxuICAgKi9cclxuICBwb3N0PFQsIEQ+KFxyXG4gICAgZW5kUG9pbnROYW1lOiBzdHJpbmcsXHJcbiAgICBkYXRhPzogRCxcclxuICAgIHJlcUhlYWRlcj86IEh0dHBIZWFkZXJzXHJcbiAgKTogT2JzZXJ2YWJsZTxEIHwgYW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4oXHJcbiAgICAgIGAke3RoaXMuYXBpX3VybH0ke2VuZFBvaW50TmFtZX1gLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeShkYXRhKSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcnM6IHJlcUhlYWRlcixcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgUFVUIHJlcXVlc3QgdG8gdXBkYXRlIGRhdGEgYXQgdGhlIHNwZWNpZmllZCBVUkwuXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSBUaGUgVVJMIGZvciB0aGUgSFRUUCBQVVQgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciBUaGUgY3VzdG9tIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0IChvcHRpb25hbCkuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgZGF0YSBvZiB0eXBlIFQuXHJcbiAgICovXHJcbiAgcHV0PFQsIEQ+KFxyXG4gICAgZW5kUG9pbnROYW1lOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBELFxyXG4gICAgcmVxSGVhZGVyPzogSHR0cEhlYWRlcnNcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4oXHJcbiAgICAgIGAke3RoaXMuYXBpX3VybH0ke2VuZFBvaW50TmFtZX1gLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeShkYXRhKSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcnM6IHJlcUhlYWRlcixcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgREVMRVRFIHJlcXVlc3QgdG8gZGVsZXRlIGRhdGEgZnJvbSB0aGUgc3BlY2lmaWVkIFVSTC5cclxuICAgKiBAcGFyYW0gZW5kUG9pbnROYW1lIFRoZSBVUkwgZm9yIHRoZSBIVFRQIERFTEVURSByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSByZXFIZWFkZXIgVGhlIGN1c3RvbSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgb2YgdHlwZSBULlxyXG4gICAqL1xyXG4gIGRlbGV0ZTxUPihlbmRQb2ludE5hbWU6IHN0cmluZywgcmVxSGVhZGVyPzogSHR0cEhlYWRlcnMpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8VD4oYCR7dGhpcy5hcGlfdXJsfSR7ZW5kUG9pbnROYW1lfWAsIHtcclxuICAgICAgaGVhZGVyczogcmVxSGVhZGVyLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIEdFVCByZXF1ZXN0IHRvIHJldHJpZXZlIGJsb2IgZGF0YSB3aXRoIGN1c3RvbSBoZWFkZXJzLlxyXG4gICAqIEBwYXJhbSBlbmRQb2ludE5hbWUgVGhlIFVSTCBmb3IgdGhlIEhUVFAgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gcmVxSGVhZGVyIFRoZSBjdXN0b20gaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgYXMgYSBCbG9iLlxyXG4gICAqL1xyXG4gIGdldEJsb2I8VD4oXHJcbiAgICBlbmRQb2ludE5hbWU6IHN0cmluZyxcclxuICAgIHBhcmFtczogSHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCksXHJcbiAgICByZXFIZWFkZXI/OiBIdHRwSGVhZGVyc1xyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPihgJHt0aGlzLmFwaV91cmx9JHtlbmRQb2ludE5hbWV9YCwge1xyXG4gICAgICBoZWFkZXJzOiByZXFIZWFkZXIsXHJcbiAgICAgIHBhcmFtcyxcclxuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicgYXMgJ2pzb24nLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYWtlcyBhbiBIVFRQIFBPU1QgcmVxdWVzdCB0byBzZW5kIGRhdGEgYW5kIHJldHJpZXZlIGJsb2IgZGF0YSB3aXRoIGN1c3RvbSBoZWFkZXJzLlxyXG4gICAqIEBwYXJhbSBlbmRQb2ludE5hbWUgVGhlIFVSTCBmb3IgdGhlIEhUVFAgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIHJlcUhlYWRlciBUaGUgY3VzdG9tIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGFzIGEgQmxvYi5cclxuICAgKi9cclxuICBwb3N0QmxvYjxULCBEPihcclxuICAgIGVuZFBvaW50TmFtZTogc3RyaW5nLFxyXG4gICAgZGF0YT86IEQsXHJcbiAgICByZXFIZWFkZXI/OiBIdHRwSGVhZGVyc1xyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4oYCR7dGhpcy5hcGlfdXJsfSR7ZW5kUG9pbnROYW1lfWAsIGRhdGEsIHtcclxuICAgICAgaGVhZGVyczogcmVxSGVhZGVyLFxyXG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJyBhcyAnanNvbicsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgR0VUIHJlcXVlc3QgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBzcGVjaWZpZWQgVVJMLlxyXG4gICAqIEBwYXJhbSB1cmwgVGhlIFVSTCBmb3IgdGhlIEhUVFAgR0VUIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGN1c3RvbSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgb2YgdHlwZSBULlxyXG4gICAqL1xyXG4gIGdldEJ5VXJsPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFQ+KHVybCwgeyAuLi5vcHRpb25zIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFrZXMgYW4gSFRUUCBQT1NUIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBVUkwuXHJcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIGZvciB0aGUgSFRUUCBQT1NUIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0IChvcHRpb25hbCkuXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIGN1c3RvbSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxyXG4gICAqIEByZXR1cm5zIEFuIE9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGRhdGEgb2YgdHlwZSBULlxyXG4gICAqL1xyXG4gIHBvc3RCeVVybDxULCBEPih1cmw6IHN0cmluZywgZGF0YT86IEQsIG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHVybCwgSlNPTi5zdHJpbmdpZnkoZGF0YSksIHsgLi4ub3B0aW9ucyB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgUFVUIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBVUkwuXHJcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIGZvciB0aGUgSFRUUCBQVVQgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cclxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgY3VzdG9tIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0IChvcHRpb25hbCkuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgZGF0YSBvZiB0eXBlIFQuXHJcbiAgICovXHJcbiAgcHV0QnlVcmw8VCwgRD4odXJsOiBzdHJpbmcsIGRhdGE/OiBELCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PFQ+KHVybCwgSlNPTi5zdHJpbmdpZnkoZGF0YSksIHsgLi4ub3B0aW9ucyB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ha2VzIGFuIEhUVFAgREVMRVRFIHJlcXVlc3QgdG8gdGhlIHNwZWNpZmllZCBVUkwuXHJcbiAgICogQHBhcmFtIHVybCBUaGUgVVJMIGZvciB0aGUgSFRUUCBERUxFVEUgcmVxdWVzdC5cclxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgY3VzdG9tIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0IChvcHRpb25hbCkuXHJcbiAgICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgZGF0YSBvZiB0eXBlIFQuXHJcbiAgICovXHJcbiAgZGVsZXRlQnlVcmw8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGU8VD4odXJsLCB7IC4uLm9wdGlvbnMgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/index.d.ts
CHANGED
|
@@ -36,7 +36,6 @@ export * from './lib/tab-core-utility/app/interfaces/user.interface';
|
|
|
36
36
|
export * from './lib/tab-core-utility/app/interfaces/orgInfo.interface';
|
|
37
37
|
export * from './lib/tab-core-utility/app/interfaces/schema.interface';
|
|
38
38
|
export * from './lib/tab-core-utility/app/interfaces/grid.interface';
|
|
39
|
-
export * from './lib/tab-core-utility/app/interfaces/signalr.interface';
|
|
40
39
|
export * from './lib/tab-core-utility/app/models/api-query.class';
|
|
41
40
|
export * from './lib/tab-core-utility/app/models/app-object.class';
|
|
42
41
|
export * from './lib/tab-core-utility/app/models/common.class';
|
|
@@ -57,9 +56,6 @@ export * from './lib/tab-core-utility/core/service/translation.service';
|
|
|
57
56
|
export * from './lib/tab-core-utility/core/service/notification.service';
|
|
58
57
|
export * from './lib/tab-core-utility/core/service/confirmation.service';
|
|
59
58
|
export * from './lib/tab-core-utility/core/service/encryption.service';
|
|
60
|
-
export * from './lib/tab-core-utility/core/service/signalr/signalr.service';
|
|
61
|
-
export * from './lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service';
|
|
62
|
-
export * from './lib/tab-core-utility/core/service/signalr/operation-tracker.service';
|
|
63
59
|
export * from './lib/tab-core-utility/core/pipe/translate.pipe';
|
|
64
60
|
export * from './lib/tab-core-utility/core/provider/translation.provider';
|
|
65
61
|
export * from './lib/tab-core-utility/core/provider/notification.provider';
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import type { APIServiceName } from '../interfaces/common.interface';
|
|
2
1
|
export declare const API: {
|
|
3
2
|
applicationIdentifier: string;
|
|
4
3
|
applicationIdentifierForPMS: string;
|
|
5
4
|
novuBackendUrl: string;
|
|
6
5
|
novuSocketUrl: string;
|
|
6
|
+
insert: string;
|
|
7
7
|
bulkInsert: string;
|
|
8
|
+
update: string;
|
|
9
|
+
delete: string;
|
|
8
10
|
select: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
getDSQ: string;
|
|
12
|
+
getScreen: string;
|
|
13
|
+
getListFromDsq: string;
|
|
11
14
|
buildApp: string;
|
|
12
|
-
|
|
15
|
+
getSchema: string;
|
|
13
16
|
login: string;
|
|
14
17
|
pluginUpload: string;
|
|
15
18
|
getFile: string;
|
|
@@ -21,12 +24,12 @@ export declare const API: {
|
|
|
21
24
|
multipleFileUpload: string;
|
|
22
25
|
deleteFile: string;
|
|
23
26
|
getMediaFile: string;
|
|
24
|
-
|
|
27
|
+
getHistory: string;
|
|
25
28
|
changePassword: string;
|
|
26
29
|
restpassword: string;
|
|
27
30
|
getImage: string;
|
|
28
31
|
pmjayImport: string;
|
|
29
|
-
|
|
32
|
+
getScreenData: string;
|
|
30
33
|
processRequest: string;
|
|
31
34
|
getNextStatus: string;
|
|
32
35
|
updateStatus: string;
|
|
@@ -40,7 +43,7 @@ export declare const API: {
|
|
|
40
43
|
registerAppObjects: string;
|
|
41
44
|
languageResource: string;
|
|
42
45
|
refreshToken: string;
|
|
43
|
-
|
|
46
|
+
search: string;
|
|
44
47
|
cloneDsq: string;
|
|
45
48
|
InsertScreenPerformanceAnalytics: string;
|
|
46
49
|
GenerateHttpRequest: string;
|
|
@@ -60,10 +63,4 @@ export declare const API: {
|
|
|
60
63
|
GetAllDocumnets: string;
|
|
61
64
|
GetDocumentById: string;
|
|
62
65
|
ExecuteWorkflow: string;
|
|
63
|
-
QueriesExecute: string;
|
|
64
|
-
QueriesSelect: string;
|
|
65
|
-
recordsInsert: string;
|
|
66
|
-
recordsUpdate: string;
|
|
67
|
-
recordsDelete: string;
|
|
68
66
|
};
|
|
69
|
-
export declare const APIServices: Record<APIServiceName, APIServiceName>;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { APIServiceUrls } from '../interfaces/common.interface';
|
|
2
1
|
export declare class Common {
|
|
3
2
|
static environmentName: string;
|
|
4
3
|
static applicationCode: string;
|
|
@@ -8,13 +7,5 @@ export declare class Common {
|
|
|
8
7
|
static tabAppObjectAccess: any;
|
|
9
8
|
static staticToken: any;
|
|
10
9
|
static i18n: any;
|
|
11
|
-
/** Microservice URLs configuration - NEW for microservices architecture */
|
|
12
|
-
static apiServiceUrls: APIServiceUrls;
|
|
13
|
-
/** SignalR hub URL for real-time notifications */
|
|
14
|
-
static signalRHubUrl: string;
|
|
15
|
-
/**
|
|
16
|
-
* Initialize the static variables
|
|
17
|
-
* Called once at application startup from the main app
|
|
18
|
-
*/
|
|
19
10
|
static init(environment: any): void;
|
|
20
11
|
}
|
|
@@ -6,10 +6,6 @@ export declare class TabCrudService {
|
|
|
6
6
|
private readonly _requestResponseHelper;
|
|
7
7
|
private readonly _dsqHelper;
|
|
8
8
|
private readonly _apiService;
|
|
9
|
-
private readonly _tabGetService;
|
|
10
|
-
private readonly _tabInsertService;
|
|
11
|
-
private readonly _tabUpdateService;
|
|
12
|
-
private readonly _tabDeleteService;
|
|
13
9
|
/**
|
|
14
10
|
* Returns the AppObjectModel from the given payload.
|
|
15
11
|
* @param payload The payload with either dataSourceQueryIdOrName or appObjectIdOrName.
|
|
@@ -43,16 +39,14 @@ export declare class TabCrudService {
|
|
|
43
39
|
get(payload: GetPayload, headers?: any): Observable<CommonApiResponse>;
|
|
44
40
|
/**
|
|
45
41
|
* Inserts data into the specified table.
|
|
46
|
-
* NEW: Delegates to TabInsertService which uses /records/insert endpoint with SYNC/ASYNC support
|
|
47
42
|
* @param payload The payload containing the data to insert and the AppObjectModel ID.
|
|
48
43
|
* @param headers Optional headers for the request.
|
|
49
|
-
* @returns An observable of the response from the API
|
|
44
|
+
* @returns An observable of the response from the API.
|
|
50
45
|
*/
|
|
51
46
|
insert(payload: InsertPayload, headers?: any): Observable<CommonApiResponse>;
|
|
52
47
|
bulkInsert(payload: InsertPayload, headers?: any): Observable<CommonApiResponse>;
|
|
53
48
|
/**
|
|
54
49
|
* Updates data in the specified table.
|
|
55
|
-
* NEW: Delegates to TabUpdateService which uses /records/update endpoint with SYNC/ASYNC support
|
|
56
50
|
* @param payload The payload containing the data to update, the criteria for the update, and the AppObjectModel ID.
|
|
57
51
|
* @param headers Optional headers for the request.
|
|
58
52
|
* @returns An observable of the response from the API.
|
|
@@ -60,7 +54,6 @@ export declare class TabCrudService {
|
|
|
60
54
|
update(payload: UpdatePayload, headers?: any): Observable<CommonApiResponse>;
|
|
61
55
|
/**
|
|
62
56
|
* Deletes data from the specified table.
|
|
63
|
-
* NEW: Delegates to TabDeleteService which uses /records/delete endpoint with SYNC/ASYNC support
|
|
64
57
|
* @param payload The payload containing the criteria for the delete and the AppObjectModel ID.
|
|
65
58
|
* @param headers Optional headers for the request.
|
|
66
59
|
* @returns An observable of the response from the API.
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CommonApiResponse } from '../interfaces/common.interface';
|
|
1
|
+
import { APIDeleteQuery } from "../models/api-query.class";
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class TabDeleteService {
|
|
4
|
+
private readonly dsqHelper;
|
|
5
5
|
private readonly screenHelper;
|
|
6
6
|
private readonly whereClauseHelper;
|
|
7
7
|
private readonly requestResponseHelper;
|
|
8
|
-
private readonly apiService;
|
|
9
|
-
private readonly signalRService;
|
|
10
|
-
private readonly metadataHelper;
|
|
11
8
|
/**
|
|
12
9
|
* Deletes a record based on the given screen ID, data, and object ID.
|
|
13
10
|
* @param screenId The ID of the screen.
|
|
@@ -15,7 +12,7 @@ export declare class TabDeleteService {
|
|
|
15
12
|
* @param objectIDToSave The object ID of the record to save.
|
|
16
13
|
* @returns An Observable emitting the response of the delete operation.
|
|
17
14
|
*/
|
|
18
|
-
deleteRecord(screenId: string, data: any, objectIDToSave: any): Observable<
|
|
15
|
+
deleteRecord(screenId: string, data: any, objectIDToSave: any): import("rxjs").Observable<any> | null;
|
|
19
16
|
/**
|
|
20
17
|
* Deletes a record by the specified table name and primary key value.
|
|
21
18
|
* @param tableName The name of the table.
|
|
@@ -23,20 +20,13 @@ export declare class TabDeleteService {
|
|
|
23
20
|
* @param primaryKeyValue The value of the primary key.
|
|
24
21
|
* @returns An Observable emitting the response of the delete operation.
|
|
25
22
|
*/
|
|
26
|
-
deleteRecordByTable(tableName: string, primaryKey: string, primaryKeyValue: string): Observable<
|
|
23
|
+
deleteRecordByTable(tableName: string, primaryKey: string, primaryKeyValue: string): import("rxjs").Observable<any> | null;
|
|
27
24
|
/**
|
|
28
|
-
* Executes the delete operation
|
|
29
|
-
* @param data The delete query payload
|
|
30
|
-
* @
|
|
31
|
-
* @returns An Observable emitting the response of the delete operation
|
|
32
|
-
*/
|
|
33
|
-
delete(data: any, headers?: any): Observable<CommonApiResponse>;
|
|
34
|
-
/**
|
|
35
|
-
* Handle async delete - wait for SignalR notification
|
|
36
|
-
* @param response Initial response with correlationId
|
|
37
|
-
* @returns Observable with result from SignalR notification
|
|
25
|
+
* Executes the delete operation.
|
|
26
|
+
* @param data The delete query payload.
|
|
27
|
+
* @returns An Observable emitting the response of the delete operation.
|
|
38
28
|
*/
|
|
39
|
-
|
|
29
|
+
delete(data: APIDeleteQuery, headers?: any): import("rxjs").Observable<any> | null;
|
|
40
30
|
/**
|
|
41
31
|
* Displays a delete confirmation popup.
|
|
42
32
|
* @returns True if the user confirms the delete operation, otherwise false.
|
|
@@ -48,7 +38,7 @@ export declare class TabDeleteService {
|
|
|
48
38
|
* @param values The values of the records to delete.
|
|
49
39
|
* @returns An Observable emitting the response of the delete operation.
|
|
50
40
|
*/
|
|
51
|
-
deleteMultipleRecordByTable(tableName: string, values: any): Observable<
|
|
41
|
+
deleteMultipleRecordByTable(tableName: string, values: any): import("rxjs").Observable<any> | null;
|
|
52
42
|
/**
|
|
53
43
|
* Deletes multiple records from the specified table based on the provided data array.
|
|
54
44
|
* The data array should contain key-value pairs without primary key information.
|
|
@@ -56,7 +46,7 @@ export declare class TabDeleteService {
|
|
|
56
46
|
* @param values The array of data objects to delete.
|
|
57
47
|
* @returns An Observable emitting the response of the delete operation.
|
|
58
48
|
*/
|
|
59
|
-
deleteMultipleRecordByTableWithoutPrimaryKey(tableName: string, values: any, headers?: any): Observable<
|
|
49
|
+
deleteMultipleRecordByTableWithoutPrimaryKey(tableName: string, values: any, headers?: any): import("rxjs").Observable<any> | null;
|
|
60
50
|
/**
|
|
61
51
|
* Generates a values array from the data.
|
|
62
52
|
* @param dataArray The array of data.
|
|
@@ -4,53 +4,26 @@ import { BuildFormComponentType } from "../enums/common.enum";
|
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class TabFormioService {
|
|
6
6
|
private readonly apiService;
|
|
7
|
-
private readonly signalRService;
|
|
8
7
|
/**
|
|
9
8
|
* Fetches screen data from the server based on the screen ID and optional configuration.
|
|
10
|
-
* NEW: Uses metadata service endpoint - returns new API format directly
|
|
11
9
|
*
|
|
12
10
|
* @param screenId - The ID of the screen to retrieve.
|
|
13
11
|
* @param config - Optional configuration including layoutId and version.
|
|
14
12
|
* @param params - Additional parameters for the API call.
|
|
15
|
-
* @returns The screen data
|
|
13
|
+
* @returns The screen data if headers are available, otherwise null.
|
|
16
14
|
*/
|
|
17
15
|
getScreen(screenId: string, config?: GetScreenConfig, params?: any): Observable<CommonApiResponse>;
|
|
18
16
|
/**
|
|
19
17
|
* Retrieves the submission data from the server.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* @param screenId - The ID of the screen to retrieve data for
|
|
23
|
-
* @param requestPayload - Request payload containing Reqtokens and other parameters
|
|
24
|
-
* @returns The screen data in new API format (camelCase)
|
|
18
|
+
* @param data - Object containing screenId and reqtokens
|
|
19
|
+
* @returns A Subject emitting the submission data or undefined.
|
|
25
20
|
*/
|
|
26
21
|
getScreenData(screenId: string, requestPayload: any): Observable<CommonApiResponse>;
|
|
27
22
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
* ASYNC Operation: Backend returns correlationId → Wait for SignalR notification → Fetch full record → Return
|
|
32
|
-
*
|
|
33
|
-
* Developer code stays the same for both cases - platform handles complexity
|
|
34
|
-
*
|
|
35
|
-
* @param data Object containing submission data (ScreenId, Data)
|
|
36
|
-
* @returns Observable with full record data (always returns complete record)
|
|
37
|
-
*/
|
|
23
|
+
* Called when the form is submitted.
|
|
24
|
+
* @param data Object containing submission data.
|
|
25
|
+
*/
|
|
38
26
|
processRequest(data: ProcessRequestPayload): Observable<CommonApiResponse>;
|
|
39
|
-
/**
|
|
40
|
-
* Handle SYNC operation - fetch full record immediately
|
|
41
|
-
*/
|
|
42
|
-
private handleSyncOperation;
|
|
43
|
-
/**
|
|
44
|
-
* Handle ASYNC operation - wait for SignalR notification, then fetch full record
|
|
45
|
-
*/
|
|
46
|
-
private handleAsyncOperation;
|
|
47
|
-
/**
|
|
48
|
-
* Fetch full record from CRUD service
|
|
49
|
-
* @param objectName - Entity/Table name
|
|
50
|
-
* @param recordId - Record ID to fetch
|
|
51
|
-
* @param primaryKeyField - Primary key field name (defaults to 'Id')
|
|
52
|
-
*/
|
|
53
|
-
private fetchFullRecord;
|
|
54
27
|
/**
|
|
55
28
|
* Retrieves the formIO components for the given appObjectId and type.
|
|
56
29
|
* @param appObjectId - The ID of the app object.
|