@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.
Files changed (73) hide show
  1. package/esm2022/index.mjs +1 -5
  2. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +13 -24
  3. package/esm2022/lib/tab-core-utility/app/constants/common.mjs +50 -14
  4. package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +49 -38
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +30 -81
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +12 -141
  8. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +35 -136
  9. package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +38 -89
  10. package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +131 -152
  11. package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
  12. package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +17 -6
  13. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +11 -9
  14. package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
  15. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +45 -7
  16. package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +76 -79
  17. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +4 -8
  18. package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +33 -8
  19. package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
  20. package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +1 -39
  21. package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +7 -36
  22. package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +47 -84
  23. package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +13 -24
  24. package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +23 -57
  25. package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +10 -21
  26. package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +6 -12
  27. package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +4 -11
  28. package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +16 -17
  29. package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +55 -1
  30. package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +164 -1
  31. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +1 -63
  32. package/index.d.ts +0 -4
  33. package/lib/tab-core-utility/app/constants/api-constants.d.ts +10 -13
  34. package/lib/tab-core-utility/app/constants/common.d.ts +0 -9
  35. package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
  36. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +1 -8
  37. package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +10 -20
  38. package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +6 -33
  39. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +3 -45
  40. package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +21 -16
  41. package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +19 -34
  42. package/lib/tab-core-utility/app/enums/query.enum.d.ts +6 -3
  43. package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +8 -3
  44. package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +0 -3
  45. package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
  46. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +51 -7
  47. package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -1
  48. package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +1 -2
  49. package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -1
  50. package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +2 -50
  51. package/lib/tab-core-utility/app/models/api-query.class.d.ts +9 -54
  52. package/lib/tab-core-utility/app/models/app-field.model.d.ts +2 -4
  53. package/lib/tab-core-utility/app/models/app-object.model.d.ts +3 -5
  54. package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
  55. package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +2 -7
  56. package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
  57. package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
  58. package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
  59. package/lib/tab-core-utility/app/utils/json.util.d.ts +2 -3
  60. package/lib/tab-core-utility/app/utils/req-res.util.d.ts +9 -1
  61. package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +61 -0
  62. package/lib/tab-core-utility/core/http-client/api.service.d.ts +0 -37
  63. package/package.json +2 -3
  64. package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +0 -38
  65. package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +0 -42
  66. package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +0 -82
  67. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +0 -252
  68. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +0 -207
  69. package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +0 -22
  70. package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +0 -80
  71. package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +0 -40
  72. package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +0 -68
  73. 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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWFwcC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3RhYi1hcHAudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsUUFBYSxFQUFFLFNBQW9CO0lBQ3JFLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7UUFDM0IsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDeEUsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FDaEQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUNuQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdEUscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcE9iamVjdCB9IGZyb20gJy4uL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzJztcclxuaW1wb3J0IHsgZGVsZXRlS2V5RnJvbVJlc3BvbnNlIH0gZnJvbSAnLi9yZXEtcmVzLnV0aWwnO1xyXG5cclxuLyoqXHJcbiAqIFN5bmNocm9uaXplIEFwcE9iamVjdCBmaWVsZHMgd2l0aCB0aGUgcmVzcG9uc2VcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0gYXBwT2JqZWN0IC0gVGhlIEFwcE9iamVjdFxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgc3luY2hyb25pemVkIHJlc3BvbnNlIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNBcHBPYmplY3RGaWVsZHMocmVzcG9uc2U6IGFueSwgYXBwT2JqZWN0OiBBcHBPYmplY3QpIHtcclxuICBmb3IgKGNvbnN0IGtleSBpbiByZXNwb25zZSkge1xyXG4gICAgY29uc3QgZm91bmRPYmogPSBhcHBPYmplY3QuRmllbGRzLmZpbmQoKGY6IGFueSkgPT4gZi5GaWVsZE5hbWUgPT09IGtleSk7XHJcbiAgICBjb25zdCBjaGlsRGF0YSA9IGFwcE9iamVjdC5DaGlsZFJlbGF0aW9uU2hpcHM/Lm1hcChcclxuICAgICAgKHgpID0+IHguY2hpbGREZXRhaWxzLkxvb2t1cE9iamVjdFxyXG4gICAgKTtcclxuICAgIGlmICghZm91bmRPYmogJiYgIShjaGlsRGF0YSAmJiBjaGlsRGF0YS5zb21lKCh4KSA9PiB4LmluY2x1ZGVzKGtleSkpKSkge1xyXG4gICAgICBkZWxldGVLZXlGcm9tUmVzcG9uc2UocmVzcG9uc2UsIGtleSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiByZXNwb25zZTtcclxufSJdfQ==
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
- screen: string;
10
- listsGet: string;
11
+ getDSQ: string;
12
+ getScreen: string;
13
+ getListFromDsq: string;
11
14
  buildApp: string;
12
- metadataSchema: string;
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
- auditGetHistory: string;
27
+ getHistory: string;
25
28
  changePassword: string;
26
29
  restpassword: string;
27
30
  getImage: string;
28
31
  pmjayImport: string;
29
- screenData: string;
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
- globalSearch: string;
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
  }
@@ -22,5 +22,5 @@ export declare const StorageConstants: {
22
22
  refreshTokenExpiry: string;
23
23
  appNavigationMapping: string;
24
24
  tokenInfo: string;
25
- EnvironmentId: string;
25
+ Environment: string;
26
26
  };
@@ -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 (returns insertedId only).
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 { Observable } from 'rxjs';
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<CommonApiResponse> | null;
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<CommonApiResponse>;
23
+ deleteRecordByTable(tableName: string, primaryKey: string, primaryKeyValue: string): import("rxjs").Observable<any> | null;
27
24
  /**
28
- * Executes the delete operation using new /records/delete endpoint with SYNC/ASYNC support
29
- * @param data The delete query payload (NEW format: { entityName, whereClause })
30
- * @param headers Optional headers
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
- private handleAsyncDelete;
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<CommonApiResponse>;
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<CommonApiResponse>;
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 in new API format (camelCase)
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
- * NEW: Uses formio service endpoint - returns new API format directly
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
- * Process form request - handles both SYNC and ASYNC operations transparently
29
- *
30
- * SYNC Operation: Backend returns insertedId immediately → Fetch full record → Return
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.