@techextensor/tab-core-utility 2.1.7 → 2.1.8
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 +64 -0
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +33 -0
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +25 -0
- package/esm2022/lib/tab-core-utility/app/constants/error-messages.mjs +13 -0
- package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +16 -0
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +145 -0
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +131 -0
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +77 -0
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +105 -0
- package/esm2022/lib/tab-core-utility/app/crud/tab-workflow.service.mjs +43 -0
- package/esm2022/lib/tab-core-utility/app/enums/controllers.enum.mjs +26 -0
- package/esm2022/lib/tab-core-utility/app/enums/dsq.enum.mjs +48 -0
- package/esm2022/lib/tab-core-utility/app/enums/permission.enum.mjs +20 -0
- package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +14 -0
- package/esm2022/lib/tab-core-utility/app/enums/workflow.enum.mjs +37 -0
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +68 -0
- package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +70 -0
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +64 -0
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +208 -0
- package/esm2022/lib/tab-core-utility/app/helpers/screen/forms.helpers.mjs +38 -0
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid-column-data.helpers.mjs +78 -0
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +112 -0
- package/esm2022/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.mjs +77 -0
- package/esm2022/lib/tab-core-utility/app/helpers/screen/plugin.helpers.mjs +55 -0
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +26 -0
- package/esm2022/lib/tab-core-utility/app/interfaces/auth.interface.mjs +2 -0
- package/esm2022/lib/tab-core-utility/app/interfaces/common-api.interface.mjs +2 -0
- package/esm2022/lib/tab-core-utility/app/interfaces/grid.interface.mjs +3 -0
- package/esm2022/lib/tab-core-utility/app/interfaces/orgInfo.interface.mjs +2 -0
- package/esm2022/lib/tab-core-utility/app/interfaces/schema.interface.mjs +2 -0
- package/esm2022/lib/tab-core-utility/app/interfaces/user.interface.mjs +2 -0
- package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +47 -0
- package/esm2022/lib/tab-core-utility/app/models/app-object.class.mjs +30 -0
- package/esm2022/lib/tab-core-utility/app/models/common.class.mjs +12 -0
- package/esm2022/lib/tab-core-utility/app/models/data-source-queries.class.mjs +31 -0
- package/esm2022/lib/tab-core-utility/app/utils/filter.util.mjs +75 -0
- package/esm2022/lib/tab-core-utility/app/utils/form-builder.util.mjs +39 -0
- package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +138 -0
- package/esm2022/lib/tab-core-utility/app/utils/operators.util.mjs +129 -0
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +168 -0
- package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +99 -0
- package/esm2022/lib/tab-core-utility/auth/auth.service.mjs +74 -0
- package/esm2022/lib/tab-core-utility/auth/idb-storage.service.mjs +69 -0
- package/esm2022/lib/tab-core-utility/auth/local-storage.service.mjs +52 -0
- package/esm2022/lib/tab-core-utility/auth/session-storage.service.mjs +52 -0
- package/esm2022/lib/tab-core-utility/core/error-handler/error-handler-interceptor.service.mjs +26 -0
- package/esm2022/lib/tab-core-utility/core/error-handler/error-handler.store.mjs +21 -0
- package/esm2022/lib/tab-core-utility/core/error-handler/models/error-handler.state.mjs +5 -0
- package/esm2022/lib/tab-core-utility/core/http-client/api-url.token.mjs +4 -0
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +99 -0
- package/esm2022/lib/tab-core-utility/core/util/auth.utils.mjs +21 -0
- package/esm2022/lib/tab-core-utility/store/auth.store.mjs +43 -0
- package/esm2022/lib/tab-core-utility/store/orginfo.store.mjs +42 -0
- package/esm2022/lib/tab-core-utility/store/schema.store.mjs +68 -0
- package/esm2022/techextensor-tab-core-utility.mjs +5 -0
- package/{src/index.ts → index.d.ts} +53 -77
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +30 -0
- package/lib/tab-core-utility/app/constants/common.d.ts +8 -0
- package/lib/tab-core-utility/app/constants/error-messages.d.ts +6 -0
- package/lib/tab-core-utility/app/constants/storage-constants.d.ts +15 -0
- package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +51 -0
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +58 -0
- package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +37 -0
- package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +14 -0
- package/lib/tab-core-utility/app/crud/tab-workflow.service.d.ts +20 -0
- package/lib/tab-core-utility/app/enums/controllers.enum.d.ts +24 -0
- package/lib/tab-core-utility/app/enums/dsq.enum.d.ts +42 -0
- package/lib/tab-core-utility/app/enums/permission.enum.d.ts +16 -0
- package/lib/tab-core-utility/app/enums/query.enum.d.ts +11 -0
- package/lib/tab-core-utility/app/enums/workflow.enum.d.ts +30 -0
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +31 -0
- package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +32 -0
- package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +62 -0
- package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +82 -0
- package/lib/tab-core-utility/app/helpers/screen/forms.helpers.d.ts +11 -0
- package/lib/tab-core-utility/app/helpers/screen/grid-column-data.helpers.d.ts +33 -0
- package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +63 -0
- package/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.d.ts +38 -0
- package/lib/tab-core-utility/app/helpers/screen/plugin.helpers.d.ts +25 -0
- package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +11 -0
- package/{src/lib/tab-core-utility/app/interfaces/auth.interface.ts → lib/tab-core-utility/app/interfaces/auth.interface.d.ts} +15 -18
- package/lib/tab-core-utility/app/interfaces/common-api.interface.d.ts +24 -0
- package/lib/tab-core-utility/app/interfaces/grid.interface.d.ts +110 -0
- package/lib/tab-core-utility/app/interfaces/orgInfo.interface.d.ts +31 -0
- package/lib/tab-core-utility/app/interfaces/schema.interface.d.ts +11 -0
- package/lib/tab-core-utility/app/interfaces/user.interface.d.ts +84 -0
- package/lib/tab-core-utility/app/models/api-query.class.d.ts +69 -0
- package/lib/tab-core-utility/app/models/app-object.class.d.ts +74 -0
- package/lib/tab-core-utility/app/models/common.class.d.ts +24 -0
- package/lib/tab-core-utility/app/models/data-source-queries.class.d.ts +95 -0
- package/lib/tab-core-utility/app/utils/filter.util.d.ts +30 -0
- package/lib/tab-core-utility/app/utils/form-builder.util.d.ts +13 -0
- package/lib/tab-core-utility/app/utils/json.util.d.ts +25 -0
- package/lib/tab-core-utility/app/utils/operators.util.d.ts +21 -0
- package/lib/tab-core-utility/app/utils/req-res.util.d.ts +61 -0
- package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +48 -0
- package/lib/tab-core-utility/auth/auth.service.d.ts +53 -0
- package/lib/tab-core-utility/auth/idb-storage.service.d.ts +14 -0
- package/lib/tab-core-utility/auth/local-storage.service.d.ts +22 -0
- package/lib/tab-core-utility/auth/session-storage.service.d.ts +22 -0
- package/lib/tab-core-utility/core/error-handler/error-handler-interceptor.service.d.ts +3 -0
- package/lib/tab-core-utility/core/error-handler/error-handler.store.d.ts +10 -0
- package/lib/tab-core-utility/core/error-handler/models/error-handler.state.d.ts +5 -0
- package/lib/tab-core-utility/core/http-client/api-url.token.d.ts +3 -0
- package/lib/tab-core-utility/core/http-client/api.service.d.ts +65 -0
- package/lib/tab-core-utility/core/util/auth.utils.d.ts +9 -0
- package/lib/tab-core-utility/store/auth.store.d.ts +19 -0
- package/lib/tab-core-utility/store/orginfo.store.d.ts +22 -0
- package/lib/tab-core-utility/store/schema.store.d.ts +32 -0
- package/package.json +31 -18
- package/.eslintrc.json +0 -92
- package/README.md +0 -7
- package/jest.config.ts +0 -22
- package/ng-package.json +0 -7
- package/project.json +0 -42
- package/src/lib/tab-core-utility/app/constants/api-constants.ts +0 -33
- package/src/lib/tab-core-utility/app/constants/common.ts +0 -34
- package/src/lib/tab-core-utility/app/constants/error-messages.ts +0 -21
- package/src/lib/tab-core-utility/app/constants/storage-constants.ts +0 -17
- package/src/lib/tab-core-utility/app/crud/tab-delete.service.ts +0 -144
- package/src/lib/tab-core-utility/app/crud/tab-get.service.ts +0 -160
- package/src/lib/tab-core-utility/app/crud/tab-insert.service.ts +0 -75
- package/src/lib/tab-core-utility/app/crud/tab-update.service.ts +0 -105
- package/src/lib/tab-core-utility/app/crud/tab-workflow.service.ts +0 -39
- package/src/lib/tab-core-utility/app/enums/controllers.enum.ts +0 -24
- package/src/lib/tab-core-utility/app/enums/dsq.enum.ts +0 -46
- package/src/lib/tab-core-utility/app/enums/permission.enum.ts +0 -18
- package/src/lib/tab-core-utility/app/enums/query.enum.ts +0 -12
- package/src/lib/tab-core-utility/app/enums/workflow.enum.ts +0 -35
- package/src/lib/tab-core-utility/app/helpers/common/app.helpers.ts +0 -65
- package/src/lib/tab-core-utility/app/helpers/common/dsq.helpers.ts +0 -80
- package/src/lib/tab-core-utility/app/helpers/common/req-res.helpers.ts +0 -75
- package/src/lib/tab-core-utility/app/helpers/common/where-clause.helpers.ts +0 -262
- package/src/lib/tab-core-utility/app/helpers/screen/forms.helpers.ts +0 -33
- package/src/lib/tab-core-utility/app/helpers/screen/grid-column-data.helpers.ts +0 -88
- package/src/lib/tab-core-utility/app/helpers/screen/grid.helpers.ts +0 -113
- package/src/lib/tab-core-utility/app/helpers/screen/media-upload.helpers.ts +0 -74
- package/src/lib/tab-core-utility/app/helpers/screen/plugin.helpers.ts +0 -52
- package/src/lib/tab-core-utility/app/helpers/screen/screen.helpers.ts +0 -20
- package/src/lib/tab-core-utility/app/interfaces/common-api.interface.ts +0 -27
- package/src/lib/tab-core-utility/app/interfaces/grid.interface.ts +0 -118
- package/src/lib/tab-core-utility/app/interfaces/orgInfo.interface.ts +0 -34
- package/src/lib/tab-core-utility/app/interfaces/schema.interface.ts +0 -11
- package/src/lib/tab-core-utility/app/interfaces/user.interface.ts +0 -91
- package/src/lib/tab-core-utility/app/models/api-query.class.ts +0 -92
- package/src/lib/tab-core-utility/app/models/app-object.class.ts +0 -87
- package/src/lib/tab-core-utility/app/models/common.class.ts +0 -30
- package/src/lib/tab-core-utility/app/models/data-source-queries.class.ts +0 -114
- package/src/lib/tab-core-utility/app/utils/filter.util.ts +0 -78
- package/src/lib/tab-core-utility/app/utils/form-builder.util.ts +0 -31
- package/src/lib/tab-core-utility/app/utils/json.util.ts +0 -137
- package/src/lib/tab-core-utility/app/utils/operators.util.ts +0 -129
- package/src/lib/tab-core-utility/app/utils/req-res.util.ts +0 -189
- package/src/lib/tab-core-utility/app/utils/tab-app.util.ts +0 -131
- package/src/lib/tab-core-utility/auth/auth.service.spec.ts +0 -167
- package/src/lib/tab-core-utility/auth/auth.service.ts +0 -91
- package/src/lib/tab-core-utility/auth/idb-storage.service.ts +0 -77
- package/src/lib/tab-core-utility/auth/local-storage.service.spec.ts +0 -47
- package/src/lib/tab-core-utility/auth/local-storage.service.ts +0 -46
- package/src/lib/tab-core-utility/auth/session-storage.service.spec.ts +0 -47
- package/src/lib/tab-core-utility/auth/session-storage.service.ts +0 -46
- package/src/lib/tab-core-utility/core/error-handler/error-handler-interceptor.service.ts +0 -32
- package/src/lib/tab-core-utility/core/error-handler/error-handler.store.spec.ts +0 -16
- package/src/lib/tab-core-utility/core/error-handler/error-handler.store.ts +0 -26
- package/src/lib/tab-core-utility/core/error-handler/models/error-handler.state.ts +0 -9
- package/src/lib/tab-core-utility/core/http-client/api-url.token.ts +0 -4
- package/src/lib/tab-core-utility/core/http-client/api.service.spec.ts +0 -18
- package/src/lib/tab-core-utility/core/http-client/api.service.ts +0 -105
- package/src/lib/tab-core-utility/core/util/auth.utils.ts +0 -22
- package/src/lib/tab-core-utility/store/auth.store.ts +0 -54
- package/src/lib/tab-core-utility/store/orginfo.store.ts +0 -57
- package/src/lib/tab-core-utility/store/schema.store.ts +0 -85
- package/src/test-setup.ts +0 -8
- package/tsconfig.json +0 -29
- package/tsconfig.lib.json +0 -17
- package/tsconfig.lib.prod.json +0 -7
- package/tsconfig.spec.json +0 -16
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
/**
|
|
3
|
+
* Converts a relational operator value to a number.
|
|
4
|
+
* @param dataType The relational operator value as a string.
|
|
5
|
+
* @returns The relational operator value as a number.
|
|
6
|
+
*/
|
|
7
|
+
export function getRelationalOperatorValueToNumber(dataType) {
|
|
8
|
+
const operatorsMap = {
|
|
9
|
+
greaterthan: 1,
|
|
10
|
+
lessthan: 2,
|
|
11
|
+
equal: 3,
|
|
12
|
+
in: 4,
|
|
13
|
+
notin: 5,
|
|
14
|
+
isnull: 6,
|
|
15
|
+
isnotnull: 7,
|
|
16
|
+
notequal: 8,
|
|
17
|
+
greaterthanorequal: 9,
|
|
18
|
+
lessthanorequal: 10,
|
|
19
|
+
contains: 11,
|
|
20
|
+
notcontains: 12,
|
|
21
|
+
startswith: 13,
|
|
22
|
+
notstartswith: 14,
|
|
23
|
+
endswith: 15,
|
|
24
|
+
notendswith: 16,
|
|
25
|
+
between: 17,
|
|
26
|
+
notbetween: 18,
|
|
27
|
+
splitcontains: 19,
|
|
28
|
+
notsplitcontains: 20,
|
|
29
|
+
};
|
|
30
|
+
return operatorsMap[dataType] || 0;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Converts a relational operator value to a string.
|
|
34
|
+
* @param dataType The relational operator value as a number.
|
|
35
|
+
* @returns The relational operator value as a string.
|
|
36
|
+
*/
|
|
37
|
+
export function getRelationalOperatorValueToString(dataType) {
|
|
38
|
+
const operatorsMap = {
|
|
39
|
+
1: 'greaterthan',
|
|
40
|
+
2: 'lessthan',
|
|
41
|
+
3: 'equal',
|
|
42
|
+
4: 'in',
|
|
43
|
+
5: 'notin',
|
|
44
|
+
6: 'isnull',
|
|
45
|
+
7: 'isnotnull',
|
|
46
|
+
8: 'notequal',
|
|
47
|
+
9: 'greaterthanorequal',
|
|
48
|
+
10: 'lessthanorequal',
|
|
49
|
+
11: 'contains',
|
|
50
|
+
12: 'notcontains',
|
|
51
|
+
13: 'startswith',
|
|
52
|
+
14: 'notstartswith',
|
|
53
|
+
15: 'endswith',
|
|
54
|
+
16: 'notendswith',
|
|
55
|
+
17: 'between',
|
|
56
|
+
18: 'notbetween',
|
|
57
|
+
19: 'splitcontains',
|
|
58
|
+
20: 'notsplitcontains',
|
|
59
|
+
};
|
|
60
|
+
return operatorsMap[dataType] || '';
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Returns a list of operators for the query builder based on the data type.
|
|
64
|
+
* @param dataType The data type.
|
|
65
|
+
* @returns A list of operators.
|
|
66
|
+
*/
|
|
67
|
+
export function getOperatorListForQueryBuilder(dataType) {
|
|
68
|
+
let operators = [];
|
|
69
|
+
if (dataType === 'string') {
|
|
70
|
+
operators = [
|
|
71
|
+
{ value: 'equal', key: 'Equal To' },
|
|
72
|
+
{ value: 'in', key: 'IN' },
|
|
73
|
+
{ value: 'notin', key: 'NOT IN' },
|
|
74
|
+
{ value: 'isnull', key: 'Is NULL' },
|
|
75
|
+
{ value: 'isnotnull', key: 'Is Not NULL' },
|
|
76
|
+
{ value: 'notequal', key: 'Not Equal To' },
|
|
77
|
+
{ value: 'contains', key: 'Contains' },
|
|
78
|
+
{ value: 'notcontains', key: 'Not Contains' },
|
|
79
|
+
{ value: 'startswith', key: 'Starts With' },
|
|
80
|
+
{ value: 'notstartswith', key: 'Not Starts With' },
|
|
81
|
+
{ value: 'endswith', key: 'Ends With' },
|
|
82
|
+
{ value: 'notendswith', key: 'Not Ends With' },
|
|
83
|
+
{ value: 'splitcontains', key: 'SplitContains' },
|
|
84
|
+
{ value: 'notsplitcontains', key: 'Not SplitContains' },
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
else if (dataType === 'number') {
|
|
88
|
+
operators = [
|
|
89
|
+
{ value: 'greaterthan', key: 'Greater Than' },
|
|
90
|
+
{ value: 'lessthan', key: 'Less Than' },
|
|
91
|
+
{ value: 'equal', key: 'Equal To' },
|
|
92
|
+
{ value: 'isnull', key: 'Is NULL' },
|
|
93
|
+
{ value: 'isnotnull', key: 'Is Not NULL' },
|
|
94
|
+
{ value: 'notequal', key: 'Not Equal To' },
|
|
95
|
+
{ value: 'greaterthanorequal', key: 'Greater Than OR Equal To' },
|
|
96
|
+
{ value: 'lessthanorequal', key: 'Less Than OR Equal To' },
|
|
97
|
+
];
|
|
98
|
+
}
|
|
99
|
+
else if (dataType === 'Date' || dataType === 'date') {
|
|
100
|
+
operators = [
|
|
101
|
+
{ value: 'greaterthan', key: 'Greater Than' },
|
|
102
|
+
{ value: 'lessthan', key: 'Less Than' },
|
|
103
|
+
{ value: 'equal', key: 'Equal To' },
|
|
104
|
+
{ value: 'isnull', key: 'Is NULL' },
|
|
105
|
+
{ value: 'isnotnull', key: 'Is Not NULL' },
|
|
106
|
+
{ value: 'notequal', key: 'Not Equal To' },
|
|
107
|
+
{ value: 'greaterthanorequal', key: 'Greater Than OR Equal To' },
|
|
108
|
+
{ value: 'lessthanorequal', key: 'Less Than OR Equal To' },
|
|
109
|
+
{ value: 'contains', key: 'Contains' },
|
|
110
|
+
{ value: 'notcontains', key: 'Not Contains' },
|
|
111
|
+
{ value: 'startswith', key: 'Starts With' },
|
|
112
|
+
{ value: 'notstartswith', key: 'Not Starts With' },
|
|
113
|
+
{ value: 'endswith', key: 'Ends With' },
|
|
114
|
+
{ value: 'notendswith', key: 'Not Ends With' },
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
else if (dataType === 'boolean') {
|
|
118
|
+
operators = [
|
|
119
|
+
{ value: 'equal', key: 'Equal To' },
|
|
120
|
+
{ value: 'isnull', key: 'Is NULL' },
|
|
121
|
+
{ value: 'isnotnull', key: 'Is Not NULL' },
|
|
122
|
+
{ value: 'notequal', key: 'Not Equal To' },
|
|
123
|
+
{ value: 'contains', key: 'Contains' },
|
|
124
|
+
{ value: 'notcontains', key: 'Not Contains' },
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
return operators;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3JzLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvdXRpbHMvb3BlcmF0b3JzLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0NBQWtDLENBQUMsUUFBZ0I7SUFDakUsTUFBTSxZQUFZLEdBQTJCO1FBQzNDLFdBQVcsRUFBRSxDQUFDO1FBQ2QsUUFBUSxFQUFFLENBQUM7UUFDWCxLQUFLLEVBQUUsQ0FBQztRQUNSLEVBQUUsRUFBRSxDQUFDO1FBQ0wsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLEVBQUUsQ0FBQztRQUNULFNBQVMsRUFBRSxDQUFDO1FBQ1osUUFBUSxFQUFFLENBQUM7UUFDWCxrQkFBa0IsRUFBRSxDQUFDO1FBQ3JCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFFBQVEsRUFBRSxFQUFFO1FBQ1osV0FBVyxFQUFFLEVBQUU7UUFDZixVQUFVLEVBQUUsRUFBRTtRQUNkLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFFBQVEsRUFBRSxFQUFFO1FBQ1osV0FBVyxFQUFFLEVBQUU7UUFDZixPQUFPLEVBQUUsRUFBRTtRQUNYLFVBQVUsRUFBRSxFQUFFO1FBQ2QsYUFBYSxFQUFFLEVBQUU7UUFDakIsZ0JBQWdCLEVBQUUsRUFBRTtLQUNyQixDQUFDO0lBQ0YsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLFFBQWdCO0lBQ2pFLE1BQU0sWUFBWSxHQUEyQjtRQUMzQyxDQUFDLEVBQUUsYUFBYTtRQUNoQixDQUFDLEVBQUUsVUFBVTtRQUNiLENBQUMsRUFBRSxPQUFPO1FBQ1YsQ0FBQyxFQUFFLElBQUk7UUFDUCxD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QUcsRUFBRSxTQUFTLEVBQUU7WUFDbkMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUU7WUFDMUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUU7WUFDMUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUU7WUFDdEMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUU7U0FDOUMsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG4vKipcclxuICogQ29udmVydHMgYSByZWxhdGlvbmFsIG9wZXJhdG9yIHZhbHVlIHRvIGEgbnVtYmVyLlxyXG4gKiBAcGFyYW0gZGF0YVR5cGUgVGhlIHJlbGF0aW9uYWwgb3BlcmF0b3IgdmFsdWUgYXMgYSBzdHJpbmcuXHJcbiAqIEByZXR1cm5zIFRoZSByZWxhdGlvbmFsIG9wZXJhdG9yIHZhbHVlIGFzIGEgbnVtYmVyLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbGF0aW9uYWxPcGVyYXRvclZhbHVlVG9OdW1iZXIoZGF0YVR5cGU6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgY29uc3Qgb3BlcmF0b3JzTWFwOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge1xyXG4gICAgZ3JlYXRlcnRoYW46IDEsXHJcbiAgICBsZXNzdGhhbjogMixcclxuICAgIGVxdWFsOiAzLFxyXG4gICAgaW46IDQsXHJcbiAgICBub3RpbjogNSxcclxuICAgIGlzbnVsbDogNixcclxuICAgIGlzbm90bnVsbDogNyxcclxuICAgIG5vdGVxdWFsOiA4LFxyXG4gICAgZ3JlYXRlcnRoYW5vcmVxdWFsOiA5LFxyXG4gICAgbGVzc3RoYW5vcmVxdWFsOiAxMCxcclxuICAgIGNvbnRhaW5zOiAxMSxcclxuICAgIG5vdGNvbnRhaW5zOiAxMixcclxuICAgIHN0YXJ0c3dpdGg6IDEzLFxyXG4gICAgbm90c3RhcnRzd2l0aDogMTQsXHJcbiAgICBlbmRzd2l0aDogMTUsXHJcbiAgICBub3RlbmRzd2l0aDogMTYsXHJcbiAgICBiZXR3ZWVuOiAxNyxcclxuICAgIG5vdGJldHdlZW46IDE4LFxyXG4gICAgc3BsaXRjb250YWluczogMTksXHJcbiAgICBub3RzcGxpdGNvbnRhaW5zOiAyMCxcclxuICB9O1xyXG4gIHJldHVybiBvcGVyYXRvcnNNYXBbZGF0YVR5cGVdIHx8IDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0cyBhIHJlbGF0aW9uYWwgb3BlcmF0b3IgdmFsdWUgdG8gYSBzdHJpbmcuXHJcbiAqIEBwYXJhbSBkYXRhVHlwZSBUaGUgcmVsYXRpb25hbCBvcGVyYXRvciB2YWx1ZSBhcyBhIG51bWJlci5cclxuICogQHJldHVybnMgVGhlIHJlbGF0aW9uYWwgb3BlcmF0b3IgdmFsdWUgYXMgYSBzdHJpbmcuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVsYXRpb25hbE9wZXJhdG9yVmFsdWVUb1N0cmluZyhkYXRhVHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICBjb25zdCBvcGVyYXRvcnNNYXA6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XHJcbiAgICAxOiAnZ3JlYXRlcnRoYW4nLFxyXG4gICAgMjogJ2xlc3N0aGFuJyxcclxuICAgIDM6ICdlcXVhbCcsXHJcbiAgICA0OiAnaW4nLFxyXG4gICAgNTogJ25vdGluJyxcclxuICAgIDY6ICdpc251bGwnLFxyXG4gICAgNzogJ2lzbm90bnVsbCcsXHJcbiAgICA4OiAnbm90ZXF1YWwnLFxyXG4gICAgOTogJ2dyZWF0ZXJ0aGFub3JlcXVhbCcsXHJcbiAgICAxMDogJ2xlc3N0aGFub3JlcXVhbCcsXHJcbiAgICAxMTogJ2NvbnRhaW5zJyxcclxuICAgIDEyOiAnbm90Y29udGFpbnMnLFxyXG4gICAgMTM6ICdzdGFydHN3aXRoJyxcclxuICAgIDE0OiAnbm90c3RhcnRzd2l0aCcsXHJcbiAgICAxNTogJ2VuZHN3aXRoJyxcclxuICAgIDE2OiAnbm90ZW5kc3dpdGgnLFxyXG4gICAgMTc6ICdiZXR3ZWVuJyxcclxuICAgIDE4OiAnbm90YmV0d2VlbicsXHJcbiAgICAxOTogJ3NwbGl0Y29udGFpbnMnLFxyXG4gICAgMjA6ICdub3RzcGxpdGNvbnRhaW5zJyxcclxuICB9O1xyXG4gIHJldHVybiBvcGVyYXRvcnNNYXBbZGF0YVR5cGVdIHx8ICcnO1xyXG59XHJcblxyXG4vKipcclxuICogUmV0dXJucyBhIGxpc3Qgb2Ygb3BlcmF0b3JzIGZvciB0aGUgcXVlcnkgYnVpbGRlciBiYXNlZCBvbiB0aGUgZGF0YSB0eXBlLlxyXG4gKiBAcGFyYW0gZGF0YVR5cGUgVGhlIGRhdGEgdHlwZS5cclxuICogQHJldHVybnMgQSBsaXN0IG9mIG9wZXJhdG9ycy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRvckxpc3RGb3JRdWVyeUJ1aWxkZXIoXHJcbiAgZGF0YVR5cGU6IGFueVxyXG4pOiB7IHZhbHVlOiBzdHJpbmc7IGtleTogc3RyaW5nIH1bXSB7XHJcbiAgbGV0IG9wZXJhdG9yczogeyB2YWx1ZTogc3RyaW5nOyBrZXk6IHN0cmluZyB9W10gPSBbXTtcclxuICBpZiAoZGF0YVR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICBvcGVyYXRvcnMgPSBbXHJcbiAgICAgIHsgdmFsdWU6ICdlcXVhbCcsIGtleTogJ0VxdWFsIFRvJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnaW4nLCBrZXk6ICdJTicgfSxcclxuICAgICAgeyB2YWx1ZTogJ25vdGluJywga2V5OiAnTk9UIElOJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnaXNudWxsJywga2V5OiAnSXMgTlVMTCcgfSxcclxuICAgICAgeyB2YWx1ZTogJ2lzbm90bnVsbCcsIGtleTogJ0lzIE5vdCBOVUxMJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnbm90ZXF1YWwnLCBrZXk6ICdOb3QgRXF1YWwgVG8nIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdjb250YWlucycsIGtleTogJ0NvbnRhaW5zJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnbm90Y29udGFpbnMnLCBrZXk6ICdOb3QgQ29udGFpbnMnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdzdGFydHN3aXRoJywga2V5OiAnU3RhcnRzIFdpdGgnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdub3RzdGFydHN3aXRoJywga2V5OiAnTm90IFN0YXJ0cyBXaXRoJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnZW5kc3dpdGgnLCBrZXk6ICdFbmRzIFdpdGgnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdub3RlbmRzd2l0aCcsIGtleTogJ05vdCBFbmRzIFdpdGgnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdzcGxpdGNvbnRhaW5zJywga2V5OiAnU3BsaXRDb250YWlucycgfSxcclxuICAgICAgeyB2YWx1ZTogJ25vdHNwbGl0Y29udGFpbnMnLCBrZXk6ICdOb3QgU3BsaXRDb250YWlucycgfSxcclxuICAgIF07XHJcbiAgfSBlbHNlIGlmIChkYXRhVHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgIG9wZXJhdG9ycyA9IFtcclxuICAgICAgeyB2YWx1ZTogJ2dyZWF0ZXJ0aGFuJywga2V5OiAnR3JlYXRlciBUaGFuJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnbGVzc3RoYW4nLCBrZXk6ICdMZXNzIFRoYW4nIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdlcXVhbCcsIGtleTogJ0VxdWFsIFRvJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnaXNudWxsJywga2V5OiAnSXMgTlVMTCcgfSxcclxuICAgICAgeyB2YWx1ZTogJ2lzbm90bnVsbCcsIGtleTogJ0lzIE5vdCBOVUxMJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnbm90ZXF1YWwnLCBrZXk6ICdOb3QgRXF1YWwgVG8nIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdncmVhdGVydGhhbm9yZXF1YWwnLCBrZXk6ICdHcmVhdGVyIFRoYW4gT1IgRXF1YWwgVG8nIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdsZXNzdGhhbm9yZXF1YWwnLCBrZXk6ICdMZXNzIFRoYW4gT1IgRXF1YWwgVG8nIH0sXHJcbiAgICBdO1xyXG4gIH0gZWxzZSBpZiAoZGF0YVR5cGUgPT09ICdEYXRlJyB8fCBkYXRhVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICBvcGVyYXRvcnMgPSBbXHJcbiAgICAgIHsgdmFsdWU6ICdncmVhdGVydGhhbicsIGtleTogJ0dyZWF0ZXIgVGhhbicgfSxcclxuICAgICAgeyB2YWx1ZTogJ2xlc3N0aGFuJywga2V5OiAnTGVzcyBUaGFuJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnZXF1YWwnLCBrZXk6ICdFcXVhbCBUbycgfSxcclxuICAgICAgeyB2YWx1ZTogJ2lzbnVsbCcsIGtleTogJ0lzIE5VTEwnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdpc25vdG51bGwnLCBrZXk6ICdJcyBOb3QgTlVMTCcgfSxcclxuICAgICAgeyB2YWx1ZTogJ25vdGVxdWFsJywga2V5OiAnTm90IEVxdWFsIFRvJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnZ3JlYXRlcnRoYW5vcmVxdWFsJywga2V5OiAnR3JlYXRlciBUaGFuIE9SIEVxdWFsIFRvJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnbGVzc3RoYW5vcmVxdWFsJywga2V5OiAnTGVzcyBUaGFuIE9SIEVxdWFsIFRvJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnY29udGFpbnMnLCBrZXk6ICdDb250YWlucycgfSxcclxuICAgICAgeyB2YWx1ZTogJ25vdGNvbnRhaW5zJywga2V5OiAnTm90IENvbnRhaW5zJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnc3RhcnRzd2l0aCcsIGtleTogJ1N0YXJ0cyBXaXRoJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnbm90c3RhcnRzd2l0aCcsIGtleTogJ05vdCBTdGFydHMgV2l0aCcgfSxcclxuICAgICAgeyB2YWx1ZTogJ2VuZHN3aXRoJywga2V5OiAnRW5kcyBXaXRoJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnbm90ZW5kc3dpdGgnLCBrZXk6ICdOb3QgRW5kcyBXaXRoJyB9LFxyXG4gICAgXTtcclxuICB9IGVsc2UgaWYgKGRhdGFUeXBlID09PSAnYm9vbGVhbicpIHtcclxuICAgIG9wZXJhdG9ycyA9IFtcclxuICAgICAgeyB2YWx1ZTogJ2VxdWFsJywga2V5OiAnRXF1YWwgVG8nIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdpc251bGwnLCBrZXk6ICdJcyBOVUxMJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnaXNub3RudWxsJywga2V5OiAnSXMgTm90IE5VTEwnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdub3RlcXVhbCcsIGtleTogJ05vdCBFcXVhbCBUbycgfSxcclxuICAgICAgeyB2YWx1ZTogJ2NvbnRhaW5zJywga2V5OiAnQ29udGFpbnMnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICdub3Rjb250YWlucycsIGtleTogJ05vdCBDb250YWlucycgfSxcclxuICAgIF07XHJcbiAgfVxyXG4gIHJldHVybiBvcGVyYXRvcnM7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/* eslint-disable no-prototype-builtins */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
import { HttpHeaders } from '@angular/common/http';
|
|
4
|
+
import { Common } from '../constants/common';
|
|
5
|
+
import { getAppObject, getDsqIdfromSelectedAppObjectDSQArray, } from './tab-app.util';
|
|
6
|
+
import { API } from '../constants/api-constants';
|
|
7
|
+
import { getFormBuilderType } from './form-builder.util';
|
|
8
|
+
import { StorageConstants } from '../constants/storage-constants';
|
|
9
|
+
// import { inject } from '@angular/core';
|
|
10
|
+
import { SessionStorageService } from '../../auth/session-storage.service';
|
|
11
|
+
import { API_URL } from '../../core/http-client/api-url.token';
|
|
12
|
+
// const sessionStorageService = inject(SessionStorageService);
|
|
13
|
+
const sessionStorageService = new SessionStorageService();
|
|
14
|
+
/**
|
|
15
|
+
* Delete a key from the response object
|
|
16
|
+
*
|
|
17
|
+
* @param response - The response object
|
|
18
|
+
* @param key - The key to be deleted
|
|
19
|
+
* @returns any - The updated response object
|
|
20
|
+
*/
|
|
21
|
+
export function deleteKeyFromResponse(response, key) {
|
|
22
|
+
delete response[key];
|
|
23
|
+
return response;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Remove the primary key from the response object
|
|
27
|
+
*
|
|
28
|
+
* @param response - The response object
|
|
29
|
+
* @param field - The field to be removed as primary key
|
|
30
|
+
* @returns any - The updated response object
|
|
31
|
+
*/
|
|
32
|
+
export function removePrimaryKey(response, field) {
|
|
33
|
+
if (field) {
|
|
34
|
+
deleteKeyFromResponse(response, field);
|
|
35
|
+
}
|
|
36
|
+
return response;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Remove multiple primary keys from the response object
|
|
40
|
+
*
|
|
41
|
+
* @param response - The response object
|
|
42
|
+
* @param fields - The array of fields to be removed as primary keys
|
|
43
|
+
* @returns any - The updated response object
|
|
44
|
+
*/
|
|
45
|
+
export function removeMultiplePrimaryKey(response, fields) {
|
|
46
|
+
fields.forEach((element) => {
|
|
47
|
+
delete response[element.FieldName];
|
|
48
|
+
});
|
|
49
|
+
return response;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get the HttpHeaders for API requests
|
|
53
|
+
*
|
|
54
|
+
* @returns HttpHeaders | null - The HttpHeaders object or null
|
|
55
|
+
*/
|
|
56
|
+
export function getHeaders() {
|
|
57
|
+
const token = sessionStorageService.getSessionStorage(StorageConstants.token);
|
|
58
|
+
const staticToken = sessionStorageService.getSessionStorage(StorageConstants.staticToken);
|
|
59
|
+
if (!token && staticToken) {
|
|
60
|
+
// Token is empty but staticToken is not
|
|
61
|
+
return new HttpHeaders({
|
|
62
|
+
'Content-Type': 'application/json',
|
|
63
|
+
Authorization: staticToken,
|
|
64
|
+
ApplicationCode: Common.applicationCode,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else if (token) {
|
|
68
|
+
// Token is not empty
|
|
69
|
+
return new HttpHeaders({
|
|
70
|
+
'Content-Type': 'application/json',
|
|
71
|
+
Authorization: token,
|
|
72
|
+
ApplicationCode: Common.applicationCode,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// Handle the case when both tokens are empty
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get the primary key fields from the AppObject
|
|
80
|
+
*
|
|
81
|
+
* @param appObject - The AppObject
|
|
82
|
+
* @returns AppFields[] | null - The array of primary key fields or null
|
|
83
|
+
*/
|
|
84
|
+
export function getPrimaryKeyFields(appObject) {
|
|
85
|
+
if (appObject.Fields.length) {
|
|
86
|
+
return appObject.Fields.filter((field) => field.IsPrimaryKey);
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get the edit record ID from the response object
|
|
92
|
+
*
|
|
93
|
+
* @param response - The response object
|
|
94
|
+
* @param fieldName - The field name for the edit record ID
|
|
95
|
+
* @returns any - The edit record ID
|
|
96
|
+
*/
|
|
97
|
+
export function getEditRecordId(response, fieldName) {
|
|
98
|
+
let recordId = null;
|
|
99
|
+
if (fieldName) {
|
|
100
|
+
recordId = response[fieldName] || null;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
recordId = response.Id || response.ID || null;
|
|
104
|
+
}
|
|
105
|
+
return recordId;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Generate the fields schema based on the AppFields
|
|
109
|
+
*
|
|
110
|
+
* @param fields - The AppFields object
|
|
111
|
+
* @returns any - The generated fields schema
|
|
112
|
+
*/
|
|
113
|
+
export function generateFieldsSchema(fields) {
|
|
114
|
+
let schema = {};
|
|
115
|
+
if (fields.hasOwnProperty('LookUpDetails')) {
|
|
116
|
+
const selectedAppObject = getAppObject(fields.LookUpDetails.LookupObject);
|
|
117
|
+
const dsqID = getDsqIdfromSelectedAppObjectDSQArray(selectedAppObject?.DataSourceQueries, fields.LookUpDetails.LookupObject, 'List');
|
|
118
|
+
schema = {
|
|
119
|
+
label: fields.DisplayName,
|
|
120
|
+
type: 'select',
|
|
121
|
+
key: fields.SystemDBFieldName,
|
|
122
|
+
input: true,
|
|
123
|
+
dataSrc: 'url',
|
|
124
|
+
valueProperty: fields.LookUpDetails.LookupField,
|
|
125
|
+
template: `<span>{{ item.${fields.LookUpDetails.DisplayField} }}</span>`,
|
|
126
|
+
selectValues: 'Result',
|
|
127
|
+
data: {
|
|
128
|
+
url: `${API_URL}${API.getListFromDsq}${dsqID}`, // API.getListFromDsq + dsqID,
|
|
129
|
+
headers: [
|
|
130
|
+
{
|
|
131
|
+
"key": "Applicationcode",
|
|
132
|
+
"value": sessionStorageService.getSessionStorage(StorageConstants.applicationCode)
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"key": "Authorization",
|
|
136
|
+
"value": sessionStorageService.getSessionStorage(StorageConstants.token)
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
schema = {
|
|
144
|
+
label: fields.DisplayName,
|
|
145
|
+
type: getFormBuilderType(fields.FieldType.DataType),
|
|
146
|
+
key: fields.SystemDBFieldName,
|
|
147
|
+
input: true,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return schema;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get the HttpHeaders for form data requests
|
|
154
|
+
*
|
|
155
|
+
* @returns HttpHeaders | null - The HttpHeaders object or null
|
|
156
|
+
*/
|
|
157
|
+
export function getFormDataHeaders() {
|
|
158
|
+
const isToken = sessionStorageService.getSessionStorage(StorageConstants.token);
|
|
159
|
+
if (isToken) {
|
|
160
|
+
return new HttpHeaders({
|
|
161
|
+
Accept: '*/*',
|
|
162
|
+
Authorization: isToken,
|
|
163
|
+
ApplicationCode: Common.applicationCode,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3JlcS1yZXMudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUNMLFlBQVksRUFDWixxQ0FBcUMsR0FDdEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsMENBQTBDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUvRCwrREFBK0Q7QUFDL0QsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7QUFFMUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFFBQWEsRUFBRSxHQUFXO0lBQzlELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBYSxFQUFFLEtBQWE7SUFDM0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxD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QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QgfSBmcm9tICcuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzcyc7XHJcbmltcG9ydCB7XHJcbiAgZ2V0QXBwT2JqZWN0LFxyXG4gIGdldERzcUlkZnJvbVNlbGVjdGVkQXBwT2JqZWN0RFNRQXJyYXksXHJcbn0gZnJvbSAnLi90YWItYXBwLnV0aWwnO1xyXG5pbXBvcnQgeyBBcHBGaWVsZHMgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS1zb3VyY2UtcXVlcmllcy5jbGFzcyc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgZ2V0Rm9ybUJ1aWxkZXJUeXBlIH0gZnJvbSAnLi9mb3JtLWJ1aWxkZXIudXRpbCc7XHJcbmltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tICcuLi9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHMnO1xyXG4vLyBpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXV0aC9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSV9VUkwgfSBmcm9tICcuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS11cmwudG9rZW4nO1xyXG5cclxuLy8gY29uc3Qgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XHJcbmNvbnN0IHNlc3Npb25TdG9yYWdlU2VydmljZSA9IG5ldyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UoKTtcclxuXHJcbi8qKlxyXG4gKiBEZWxldGUgYSBrZXkgZnJvbSB0aGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBvYmplY3RcclxuICogQHBhcmFtIGtleSAtIFRoZSBrZXkgdG8gYmUgZGVsZXRlZFxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgdXBkYXRlZCByZXNwb25zZSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBkZWxldGVLZXlGcm9tUmVzcG9uc2UocmVzcG9uc2U6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICBkZWxldGUgcmVzcG9uc2Vba2V5XTtcclxuICByZXR1cm4gcmVzcG9uc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgdGhlIHByaW1hcnkga2V5IGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBmaWVsZCAtIFRoZSBmaWVsZCB0byBiZSByZW1vdmVkIGFzIHByaW1hcnkga2V5XHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSB1cGRhdGVkIHJlc3BvbnNlIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVByaW1hcnlLZXkocmVzcG9uc2U6IGFueSwgZmllbGQ6IHN0cmluZykge1xyXG4gIGlmIChmaWVsZCkge1xyXG4gICAgZGVsZXRlS2V5RnJvbVJlc3BvbnNlKHJlc3BvbnNlLCBmaWVsZCk7XHJcbiAgfVxyXG4gIHJldHVybiByZXNwb25zZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSBtdWx0aXBsZSBwcmltYXJ5IGtleXMgZnJvbSB0aGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBvYmplY3RcclxuICogQHBhcmFtIGZpZWxkcyAtIFRoZSBhcnJheSBvZiBmaWVsZHMgdG8gYmUgcmVtb3ZlZCBhcyBwcmltYXJ5IGtleXNcclxuICogQHJldHVybnMgYW55IC0gVGhlIHVwZGF0ZWQgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlTXVsdGlwbGVQcmltYXJ5S2V5KHJlc3BvbnNlOiBhbnksIGZpZWxkczogYW55KSB7XHJcbiAgZmllbGRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgZGVsZXRlIHJlc3BvbnNlW2VsZW1lbnQuRmllbGROYW1lXTtcclxuICB9KTtcclxuICByZXR1cm4gcmVzcG9uc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIEh0dHBIZWFkZXJzIGZvciBBUEkgcmVxdWVzdHNcclxuICpcclxuICogQHJldHVybnMgSHR0cEhlYWRlcnMgfCBudWxsIC0gVGhlIEh0dHBIZWFkZXJzIG9iamVjdCBvciBudWxsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGVycygpIHtcclxuICBjb25zdCB0b2tlbiA9IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLnRva2VuKTtcclxuICBjb25zdCBzdGF0aWNUb2tlbiA9IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLnN0YXRpY1Rva2VuKTtcclxuICBcclxuICBpZiAoIXRva2VuICYmIHN0YXRpY1Rva2VuKSB7XHJcbiAgICAgIC8vIFRva2VuIGlzIGVtcHR5IGJ1dCBzdGF0aWNUb2tlbiBpcyBub3RcclxuICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogc3RhdGljVG9rZW4sXHJcbiAgICAgICAgICBBcHBsaWNhdGlvbkNvZGU6IENvbW1vbi5hcHBsaWNhdGlvbkNvZGUsXHJcbiAgICAgIH0pO1xyXG4gIH0gZWxzZSBpZiAodG9rZW4pIHtcclxuICAgICAgLy8gVG9rZW4gaXMgbm90IGVtcHR5XHJcbiAgICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgIEF1dGhvcml6YXRpb246IHRva2VuLFxyXG4gICAgICAgICAgQXBwbGljYXRpb25Db2RlOiBDb21tb24uYXBwbGljYXRpb25Db2RlLFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZW4gYm90aCB0b2tlbnMgYXJlIGVtcHR5XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIHByaW1hcnkga2V5IGZpZWxkcyBmcm9tIHRoZSBBcHBPYmplY3RcclxuICpcclxuICogQHBhcmFtIGFwcE9iamVjdCAtIFRoZSBBcHBPYmplY3RcclxuICogQHJldHVybnMgQXBwRmllbGRzW10gfCBudWxsIC0gVGhlIGFycmF5IG9mIHByaW1hcnkga2V5IGZpZWxkcyBvciBudWxsXHJcbiAqL1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFByaW1hcnlLZXlGaWVsZHMoYXBwT2JqZWN0OiBBcHBPYmplY3QpIHtcclxuICBpZiAoYXBwT2JqZWN0LkZpZWxkcy5sZW5ndGgpIHtcclxuICAgIHJldHVybiBhcHBPYmplY3QuRmllbGRzLmZpbHRlcigoZmllbGQpID0+IGZpZWxkLklzUHJpbWFyeUtleSk7XHJcbiAgfVxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBlZGl0IHJlY29yZCBJRCBmcm9tIHRoZSByZXNwb25zZSBvYmplY3RcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0gZmllbGROYW1lIC0gVGhlIGZpZWxkIG5hbWUgZm9yIHRoZSBlZGl0IHJlY29yZCBJRFxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgZWRpdCByZWNvcmQgSURcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRFZGl0UmVjb3JkSWQocmVzcG9uc2U6IGFueSwgZmllbGROYW1lOiBhbnkpIHtcclxuICBsZXQgcmVjb3JkSWQgPSBudWxsO1xyXG4gIGlmIChmaWVsZE5hbWUpIHtcclxuICAgIHJlY29yZElkID0gcmVzcG9uc2VbZmllbGROYW1lXSB8fCBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZWNvcmRJZCA9IHJlc3BvbnNlLklkIHx8IHJlc3BvbnNlLklEIHx8IG51bGw7XHJcbiAgfVxyXG4gIHJldHVybiByZWNvcmRJZDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdlbmVyYXRlIHRoZSBmaWVsZHMgc2NoZW1hIGJhc2VkIG9uIHRoZSBBcHBGaWVsZHNcclxuICpcclxuICogQHBhcmFtIGZpZWxkcyAtIFRoZSBBcHBGaWVsZHMgb2JqZWN0XHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSBnZW5lcmF0ZWQgZmllbGRzIHNjaGVtYVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRmllbGRzU2NoZW1hKGZpZWxkczogQXBwRmllbGRzKSB7XHJcbiAgbGV0IHNjaGVtYSA9IHt9O1xyXG4gIGlmIChmaWVsZHMuaGFzT3duUHJvcGVydHkoJ0xvb2tVcERldGFpbHMnKSkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRBcHBPYmplY3Q6IEFwcE9iamVjdCA9IGdldEFwcE9iamVjdChcclxuICAgICAgZmllbGRzLkxvb2tVcERldGFpbHMuTG9va3VwT2JqZWN0XHJcbiAgICApO1xyXG4gICAgY29uc3QgZHNxSUQgPSBnZXREc3FJZGZyb21TZWxlY3RlZEFwcE9iamVjdERTUUFycmF5KFxyXG4gICAgICBzZWxlY3RlZEFwcE9iamVjdD8uRGF0YVNvdXJjZVF1ZXJpZXMsXHJcbiAgICAgIGZpZWxkcy5Mb29rVXBEZXRhaWxzLkxvb2t1cE9iamVjdCxcclxuICAgICAgJ0xpc3QnXHJcbiAgICApO1xyXG4gICAgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogZmllbGRzLkRpc3BsYXlOYW1lLFxyXG4gICAgICB0eXBlOiAnc2VsZWN0JyxcclxuICAgICAga2V5OiBmaWVsZHMuU3lzdGVtREJGaWVsZE5hbWUsXHJcbiAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICBkYXRhU3JjOiAndXJsJyxcclxuICAgICAgdmFsdWVQcm9wZXJ0eTogZmllbGRzLkxvb2tVcERldGFpbHMuTG9va3VwRmllbGQsXHJcbiAgICAgIHRlbXBsYXRlOiBgPHNwYW4+e3sgaXRlbS4ke2ZpZWxkcy5Mb29rVXBEZXRhaWxzLkRpc3BsYXlGaWVsZH0gfX08L3NwYW4+YCxcclxuICAgICAgc2VsZWN0VmFsdWVzOiAnUmVzdWx0JyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIHVybDogYCR7QVBJX1VSTH0ke0FQSS5nZXRMaXN0RnJvbURzcX0ke2RzcUlEfWAsLy8gQVBJLmdldExpc3RGcm9tRHNxICsgZHNxSUQsXHJcbiAgICAgICAgaGVhZGVyczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcImtleVwiOiBcIkFwcGxpY2F0aW9uY29kZVwiLFxyXG4gICAgICAgICAgICBcInZhbHVlXCI6IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLmFwcGxpY2F0aW9uQ29kZSlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwia2V5XCI6IFwiQXV0aG9yaXphdGlvblwiLFxyXG4gICAgICAgICAgICBcInZhbHVlXCI6IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLnRva2VuKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIFxyXG4gICAgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogZmllbGRzLkRpc3BsYXlOYW1lLFxyXG4gICAgICB0eXBlOiBnZXRGb3JtQnVpbGRlclR5cGUoZmllbGRzLkZpZWxkVHlwZS5EYXRhVHlwZSksXHJcbiAgICAgIGtleTogZmllbGRzLlN5c3RlbURCRmllbGROYW1lLFxyXG4gICAgICBpbnB1dDogdHJ1ZSxcclxuICAgIH07XHJcbiAgfVxyXG4gIHJldHVybiBzY2hlbWE7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIEh0dHBIZWFkZXJzIGZvciBmb3JtIGRhdGEgcmVxdWVzdHNcclxuICpcclxuICogQHJldHVybnMgSHR0cEhlYWRlcnMgfCBudWxsIC0gVGhlIEh0dHBIZWFkZXJzIG9iamVjdCBvciBudWxsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybURhdGFIZWFkZXJzKCkge1xyXG4gIGNvbnN0IGlzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoXHJcbiAgICBTdG9yYWdlQ29uc3RhbnRzLnRva2VuXHJcbiAgKTtcclxuICBpZiAoaXNUb2tlbikge1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIEFjY2VwdDogJyovKicsXHJcbiAgICAgIEF1dGhvcml6YXRpb246IGlzVG9rZW4sXHJcbiAgICAgIEFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { Common } from '../constants/common';
|
|
3
|
+
import { deleteKeyFromResponse } from './req-res.util';
|
|
4
|
+
/** Get the DataSourceQuery ID from the selected AppObject's DataSourceQuery array
|
|
5
|
+
* @param dsqList - The list of DataSourceQueries
|
|
6
|
+
* @param table - The table name
|
|
7
|
+
* @param like - The like string
|
|
8
|
+
* @returns string - The ID of the DataSourceQuery
|
|
9
|
+
*/
|
|
10
|
+
export function getDsqIdfromSelectedAppObjectDSQArray(dsqList, table, like) {
|
|
11
|
+
if (dsqList) {
|
|
12
|
+
const matchName = like + '_' + table;
|
|
13
|
+
const result = dsqList.find((d) => d.QueryName === matchName);
|
|
14
|
+
return result?.ID;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** Get the AppObject based on the provided ID
|
|
18
|
+
* @param id - The ID of the AppObject
|
|
19
|
+
* @returns AppObject | null - The found AppObject or null
|
|
20
|
+
*/
|
|
21
|
+
export function getAppObject(id) {
|
|
22
|
+
const tabData = Common.tabJson;
|
|
23
|
+
return (tabData?.AppObjects.find((t) => t.ID === id?.toLowerCase()) || null);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get the AppObject from the DataSourceQuery ID
|
|
27
|
+
* @param dsqId - The DataSourceQuery ID
|
|
28
|
+
* @returns AppObject | null - The found AppObject or null
|
|
29
|
+
*/
|
|
30
|
+
export function getAppObjectFromDataSourceQueryID(dsqId) {
|
|
31
|
+
const tabData = Common.tabJson;
|
|
32
|
+
if (!dsqId || !tabData) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
for (const appObject of tabData.AppObjects) {
|
|
36
|
+
const dsq = appObject.DataSourceQueries.find((l) => l.ID === dsqId?.toLowerCase());
|
|
37
|
+
if (dsq) {
|
|
38
|
+
return appObject;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the DataSourceQuery ID from the QueryName and table
|
|
45
|
+
* @param table - The table name
|
|
46
|
+
* @param dsq - The DataSourceQuery name
|
|
47
|
+
* @returns any - The found DataSourceQuery
|
|
48
|
+
*/
|
|
49
|
+
export function getDsqIDFromQueryName(table, dsq) {
|
|
50
|
+
const appObjectList = getAppObjectFromSystemDBTableName(table);
|
|
51
|
+
return appObjectList?.DataSourceQueries.find((d) => d.QueryName === dsq);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get the Data from the DataSourceQuery ID
|
|
55
|
+
*
|
|
56
|
+
* @param dsqId - The DataSourceQuery ID
|
|
57
|
+
* @returns any - The found Data
|
|
58
|
+
*/
|
|
59
|
+
export function getDataFromDataSourceQueryID(dsqId) {
|
|
60
|
+
const tabData = Common.tabJson;
|
|
61
|
+
if (!tabData) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
for (const appObject of tabData.AppObjects) {
|
|
65
|
+
const DSQ = appObject.DataSourceQueries.find((l) => l.ID === dsqId?.toLowerCase());
|
|
66
|
+
if (DSQ) {
|
|
67
|
+
return DSQ;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Synchronize AppObject fields with the response
|
|
74
|
+
*
|
|
75
|
+
* @param response - The response object
|
|
76
|
+
* @param appObject - The AppObject
|
|
77
|
+
* @returns any - The synchronized response object
|
|
78
|
+
*/
|
|
79
|
+
export function syncAppObjectFields(response, appObject) {
|
|
80
|
+
for (const key in response) {
|
|
81
|
+
const foundObj = appObject.Fields.find((f) => f.FieldName === key);
|
|
82
|
+
const chilData = appObject.ChildRelationShips?.map((x) => x.childDetails.LookupObject);
|
|
83
|
+
if (!foundObj && !(chilData && chilData.some((x) => x.includes(key)))) {
|
|
84
|
+
deleteKeyFromResponse(response, key);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return response;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get the AppObject based on the SystemDBTableName
|
|
91
|
+
*
|
|
92
|
+
* @param tableName - The SystemDBTableName
|
|
93
|
+
* @returns AppObject | null - The found AppObject or null
|
|
94
|
+
*/
|
|
95
|
+
export function getAppObjectFromSystemDBTableName(tableName) {
|
|
96
|
+
const tabData = Common.tabJson;
|
|
97
|
+
return (tabData?.AppObjects.find((t) => t.SystemDBTableName === tableName) || null);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWFwcC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3RhYi1hcHAudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZEOzs7OztHQUtHO0FBRUgsTUFBTSxVQUFVLHFDQUFxQyxDQUNuRCxPQUFZLEVBQ1osS0FBYSxFQUNiLElBQVk7SUFFWixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUNuRSxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDcEIsQ0FBQztBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFFSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQVU7SUFDckMsTUFBTSxPQUFPLEdBQWUsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUMzQyxPQUFPLENBQ0wsT0FBTyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUN6RSxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFFSCxNQUFNLFVBQVUsaUNBQWlDLENBQUMsS0FBYTtJQUM3RCxNQUFNLE9BQU8sR0FBUSxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQ3BD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bnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcblxyXG5pbXBvcnQgeyBDb21tb24gfSBmcm9tICcuLi9jb25zdGFudHMvY29tbW9uJztcclxuaW1wb3J0IHsgQXBwT2JqZWN0IH0gZnJvbSAnLi4vbW9kZWxzL2FwcC1vYmplY3QuY2xhc3MnO1xyXG5pbXBvcnQgeyBkZWxldGVLZXlGcm9tUmVzcG9uc2UgfSBmcm9tICcuL3JlcS1yZXMudXRpbCc7XHJcblxyXG4vKiogR2V0IHRoZSBEYXRhU291cmNlUXVlcnkgSUQgZnJvbSB0aGUgc2VsZWN0ZWQgQXBwT2JqZWN0J3MgRGF0YVNvdXJjZVF1ZXJ5IGFycmF5XHJcbiAqIEBwYXJhbSBkc3FMaXN0IC0gVGhlIGxpc3Qgb2YgRGF0YVNvdXJjZVF1ZXJpZXNcclxuICogQHBhcmFtIHRhYmxlIC0gVGhlIHRhYmxlIG5hbWVcclxuICogQHBhcmFtIGxpa2UgLSBUaGUgbGlrZSBzdHJpbmdcclxuICogQHJldHVybnMgc3RyaW5nIC0gVGhlIElEIG9mIHRoZSBEYXRhU291cmNlUXVlcnlcclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHNxSWRmcm9tU2VsZWN0ZWRBcHBPYmplY3REU1FBcnJheShcclxuICBkc3FMaXN0OiBhbnksXHJcbiAgdGFibGU6IHN0cmluZyxcclxuICBsaWtlOiBzdHJpbmdcclxuKSB7XHJcbiAgaWYgKGRzcUxpc3QpIHtcclxuICAgIGNvbnN0IG1hdGNoTmFtZSA9IGxpa2UgKyAnXycgKyB0YWJsZTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGRzcUxpc3QuZmluZCgoZDogYW55KSA9PiBkLlF1ZXJ5TmFtZSA9PT0gbWF0Y2hOYW1lKTtcclxuICAgIHJldHVybiByZXN1bHQ/LklEO1xyXG4gIH1cclxufVxyXG5cclxuLyoqIEdldCB0aGUgQXBwT2JqZWN0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBJRFxyXG4gKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhlIEFwcE9iamVjdFxyXG4gKiBAcmV0dXJucyBBcHBPYmplY3QgfCBudWxsIC0gVGhlIGZvdW5kIEFwcE9iamVjdCBvciBudWxsXHJcbiAqL1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcE9iamVjdChpZDogc3RyaW5nKSB7XHJcbiAgY29uc3QgdGFiRGF0YTogYW55IHwgbnVsbCA9IENvbW1vbi50YWJKc29uO1xyXG4gIHJldHVybiAoXHJcbiAgICB0YWJEYXRhPy5BcHBPYmplY3RzLmZpbmQoKHQ6IGFueSkgPT4gdC5JRCA9PT0gaWQ/LnRvTG93ZXJDYXNlKCkpIHx8IG51bGxcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBBcHBPYmplY3QgZnJvbSB0aGUgRGF0YVNvdXJjZVF1ZXJ5IElEXHJcbiAqIEBwYXJhbSBkc3FJZCAtIFRoZSBEYXRhU291cmNlUXVlcnkgSURcclxuICogQHJldHVybnMgQXBwT2JqZWN0IHwgbnVsbCAtIFRoZSBmb3VuZCBBcHBPYmplY3Qgb3IgbnVsbFxyXG4gKi9cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRBcHBPYmplY3RGcm9tRGF0YVNvdXJjZVF1ZXJ5SUQoZHNxSWQ6IHN0cmluZykge1xyXG4gIGNvbnN0IHRhYkRhdGE6IGFueSA9IENvbW1vbi50YWJKc29uO1xyXG4gIGlmICghZHNxSWQgfHwgIXRhYkRhdGEpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgZm9yIChjb25zdCBhcHBPYmplY3Qgb2YgdGFiRGF0YS5BcHBPYmplY3RzKSB7XHJcbiAgICBjb25zdCBkc3EgPSBhcHBPYmplY3QuRGF0YVNvdXJjZVF1ZXJpZXMuZmluZChcclxuICAgICAgKGw6IGFueSkgPT4gbC5JRCA9PT0gZHNxSWQ/LnRvTG93ZXJDYXNlKClcclxuICAgICk7XHJcbiAgICBpZiAoZHNxKSB7XHJcbiAgICAgIHJldHVybiBhcHBPYmplY3Q7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgRGF0YVNvdXJjZVF1ZXJ5IElEIGZyb20gdGhlIFF1ZXJ5TmFtZSBhbmQgdGFibGVcclxuICogQHBhcmFtIHRhYmxlIC0gVGhlIHRhYmxlIG5hbWVcclxuICogQHBhcmFtIGRzcSAtIFRoZSBEYXRhU291cmNlUXVlcnkgbmFtZVxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgZm91bmQgRGF0YVNvdXJjZVF1ZXJ5XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHNxSURGcm9tUXVlcnlOYW1lKHRhYmxlOiBzdHJpbmcsIGRzcTogc3RyaW5nKSB7XHJcbiAgY29uc3QgYXBwT2JqZWN0TGlzdCA9IGdldEFwcE9iamVjdEZyb21TeXN0ZW1EQlRhYmxlTmFtZSh0YWJsZSk7XHJcbiAgcmV0dXJuIGFwcE9iamVjdExpc3Q/LkRhdGFTb3VyY2VRdWVyaWVzLmZpbmQoKGQ6IGFueSkgPT4gZC5RdWVyeU5hbWUgPT09IGRzcSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIERhdGEgZnJvbSB0aGUgRGF0YVNvdXJjZVF1ZXJ5IElEXHJcbiAqXHJcbiAqIEBwYXJhbSBkc3FJZCAtIFRoZSBEYXRhU291cmNlUXVlcnkgSURcclxuICogQHJldHVybnMgYW55IC0gVGhlIGZvdW5kIERhdGFcclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YUZyb21EYXRhU291cmNlUXVlcnlJRChkc3FJZDogc3RyaW5nKSB7XHJcbiAgY29uc3QgdGFiRGF0YTogYW55ID0gQ29tbW9uLnRhYkpzb247XHJcbiAgaWYgKCF0YWJEYXRhKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgYXBwT2JqZWN0IG9mIHRhYkRhdGEuQXBwT2JqZWN0cykge1xyXG4gICAgY29uc3QgRFNRID0gYXBwT2JqZWN0LkRhdGFTb3VyY2VRdWVyaWVzLmZpbmQoXHJcbiAgICAgIChsOiBhbnkpID0+IGwuSUQgPT09IGRzcUlkPy50b0xvd2VyQ2FzZSgpXHJcbiAgICApO1xyXG4gICAgaWYgKERTUSkge1xyXG4gICAgICByZXR1cm4gRFNRO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTeW5jaHJvbml6ZSBBcHBPYmplY3QgZmllbGRzIHdpdGggdGhlIHJlc3BvbnNlXHJcbiAqXHJcbiAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBvYmplY3RcclxuICogQHBhcmFtIGFwcE9iamVjdCAtIFRoZSBBcHBPYmplY3RcclxuICogQHJldHVybnMgYW55IC0gVGhlIHN5bmNocm9uaXplZCByZXNwb25zZSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzeW5jQXBwT2JqZWN0RmllbGRzKHJlc3BvbnNlOiBhbnksIGFwcE9iamVjdDogQXBwT2JqZWN0KSB7XHJcbiAgZm9yIChjb25zdCBrZXkgaW4gcmVzcG9uc2UpIHtcclxuICAgIGNvbnN0IGZvdW5kT2JqID0gYXBwT2JqZWN0LkZpZWxkcy5maW5kKChmOiBhbnkpID0+IGYuRmllbGROYW1lID09PSBrZXkpO1xyXG4gICAgY29uc3QgY2hpbERhdGEgPSBhcHBPYmplY3QuQ2hpbGRSZWxhdGlvblNoaXBzPy5tYXAoXHJcbiAgICAgICh4KSA9PiB4LmNoaWxkRGV0YWlscy5Mb29rdXBPYmplY3RcclxuICAgICk7XHJcbiAgICBpZiAoIWZvdW5kT2JqICYmICEoY2hpbERhdGEgJiYgY2hpbERhdGEuc29tZSgoeCkgPT4geC5pbmNsdWRlcyhrZXkpKSkpIHtcclxuICAgICAgZGVsZXRlS2V5RnJvbVJlc3BvbnNlKHJlc3BvbnNlLCBrZXkpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gcmVzcG9uc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIEFwcE9iamVjdCBiYXNlZCBvbiB0aGUgU3lzdGVtREJUYWJsZU5hbWVcclxuICpcclxuICogQHBhcmFtIHRhYmxlTmFtZSAtIFRoZSBTeXN0ZW1EQlRhYmxlTmFtZVxyXG4gKiBAcmV0dXJucyBBcHBPYmplY3QgfCBudWxsIC0gVGhlIGZvdW5kIEFwcE9iamVjdCBvciBudWxsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwT2JqZWN0RnJvbVN5c3RlbURCVGFibGVOYW1lKHRhYmxlTmFtZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgdGFiRGF0YTogYW55ID0gQ29tbW9uLnRhYkpzb247XHJcbiAgcmV0dXJuIChcclxuICAgIHRhYkRhdGE/LkFwcE9iamVjdHMuZmluZChcclxuICAgICAgKHQ6IHsgU3lzdGVtREJUYWJsZU5hbWU6IHN0cmluZyB9KSA9PiB0LlN5c3RlbURCVGFibGVOYW1lID09PSB0YWJsZU5hbWVcclxuICAgICkgfHwgbnVsbFxyXG4gICk7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { ApiService } from '../core/http-client/api.service';
|
|
3
|
+
import { LocalStorageService } from './local-storage.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class AuthService {
|
|
6
|
+
constructor() {
|
|
7
|
+
/**
|
|
8
|
+
* Injecting required services
|
|
9
|
+
*/
|
|
10
|
+
this.apiService = inject(ApiService);
|
|
11
|
+
this.localStorageService = inject(LocalStorageService);
|
|
12
|
+
}
|
|
13
|
+
// -----------------------------------------------------------------------------------------------------
|
|
14
|
+
// @ Public methods
|
|
15
|
+
// -----------------------------------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* Fetch user details from the database
|
|
18
|
+
*
|
|
19
|
+
* @param endPointName - The End Point Name to fetch user details
|
|
20
|
+
* @returns Observable<UserResponse> - An observable of UserResponse
|
|
21
|
+
*/
|
|
22
|
+
user(endPointName) {
|
|
23
|
+
return this.apiService.get(endPointName);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Sign in with provided credentials
|
|
27
|
+
*
|
|
28
|
+
* @param endPointName - The End Point Name to sign in
|
|
29
|
+
* @param credentials - The login credentials
|
|
30
|
+
* @returns Observable<UserResponse> - An observable of UserResponse
|
|
31
|
+
*/
|
|
32
|
+
signIn(endPointName, credentials) {
|
|
33
|
+
return this.apiService.post(endPointName, credentials);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Register a new user
|
|
37
|
+
*
|
|
38
|
+
* @param endPointName - The End Point Name to register a new user
|
|
39
|
+
* @param credentials - The new user's credentials
|
|
40
|
+
* @returns Observable<UserResponse> - An observable of UserResponse
|
|
41
|
+
*/
|
|
42
|
+
register(endPointName, credentials) {
|
|
43
|
+
return this.apiService.post(endPointName, credentials);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Forgot password
|
|
47
|
+
* @param endPointName - The End Point Name of API
|
|
48
|
+
* @param email - The email of user
|
|
49
|
+
*/
|
|
50
|
+
forgotPassword(endPointName, email) {
|
|
51
|
+
return this.apiService.post(endPointName, email);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Reset password
|
|
55
|
+
* @param endPointName - The End Point Name of API
|
|
56
|
+
* @param password - The password of user
|
|
57
|
+
*/
|
|
58
|
+
resetPassword(endPointName, password) {
|
|
59
|
+
return this.apiService.post(endPointName, password);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Logout current session
|
|
63
|
+
*/
|
|
64
|
+
logout(key) {
|
|
65
|
+
this.localStorageService.removeLocalStorage(key);
|
|
66
|
+
}
|
|
67
|
+
static { this.ɵfac = function AuthService_Factory(t) { return new (t || AuthService)(); }; }
|
|
68
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthService, factory: AuthService.ɵfac, providedIn: 'root' }); }
|
|
69
|
+
}
|
|
70
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthService, [{
|
|
71
|
+
type: Injectable,
|
|
72
|
+
args: [{ providedIn: 'root' }]
|
|
73
|
+
}], null, null); })();
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXV0aC9hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRTdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUc5RCxNQUFNLE9BQU8sV0FBVztJQUR4QjtRQUVFOztXQUVHO1FBQ2MsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztLQXVFcEU7SUFyRUMsd0dBQXdHO0lBQ3hHLG1CQUFtQjtJQUNuQix3R0FBd0c7SUFFeEc7Ozs7O09BS0c7SUFDSCxJQUFJLENBQUMsWUFBb0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBZSxZQUFZLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFlBQW9CLEVBQUUsV0FBNkI7UUFDeEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsWUFBWSxFQUNaLFdBQVcsQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsQ0FBQyxZQUFvQixFQUFFLFdBQTJCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQStCLFlBQVksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FDWixZQUFvQixFQUNwQixLQUFnQztRQUVoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FDWCxZQUFvQixFQUNwQixRQUFrQztRQUVsQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsR0FBVztRQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs0RUEzRVUsV0FBVzt1RUFBWCxXQUFXLFdBQVgsV0FBVyxtQkFERSxNQUFNOztpRkFDbkIsV0FBVztjQUR2QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBGb3Jnb3RQYXNzd29yZFVzZXJSZXF1ZXN0LFxyXG4gIExvZ2luVXNlclJlcXVlc3QsXHJcbiAgTmV3VXNlclJlcXVlc3QsXHJcbiAgUmVzZXRQYXNzd29yZFVzZXJSZXF1ZXN0LFxyXG59IGZyb20gJy4uL2FwcC9pbnRlcmZhY2VzL2F1dGguaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVXNlclJlc3BvbnNlIH0gZnJvbSAnLi4vYXBwL2ludGVyZmFjZXMvdXNlci5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vYXBwL2ludGVyZmFjZXMvY29tbW9uLWFwaS5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dGhTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBJbmplY3RpbmcgcmVxdWlyZWQgc2VydmljZXNcclxuICAgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KExvY2FsU3RvcmFnZVNlcnZpY2UpO1xyXG5cclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIC8vIEAgUHVibGljIG1ldGhvZHNcclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAvKipcclxuICAgKiBGZXRjaCB1c2VyIGRldGFpbHMgZnJvbSB0aGUgZGF0YWJhc2VcclxuICAgKlxyXG4gICAqIEBwYXJhbSBlbmRQb2ludE5hbWUgLSBUaGUgRW5kIFBvaW50IE5hbWUgdG8gZmV0Y2ggdXNlciBkZXRhaWxzXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxVc2VyUmVzcG9uc2U+IC0gQW4gb2JzZXJ2YWJsZSBvZiBVc2VyUmVzcG9uc2VcclxuICAgKi9cclxuICB1c2VyKGVuZFBvaW50TmFtZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxVc2VyUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0PFVzZXJSZXNwb25zZT4oZW5kUG9pbnROYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNpZ24gaW4gd2l0aCBwcm92aWRlZCBjcmVkZW50aWFsc1xyXG4gICAqXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSAtIFRoZSBFbmQgUG9pbnQgTmFtZSB0byBzaWduIGluXHJcbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIC0gVGhlIGxvZ2luIGNyZWRlbnRpYWxzXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxVc2VyUmVzcG9uc2U+IC0gQW4gb2JzZXJ2YWJsZSBvZiBVc2VyUmVzcG9uc2VcclxuICAgKi9cclxuICBzaWduSW4oZW5kUG9pbnROYW1lOiBzdHJpbmcsIGNyZWRlbnRpYWxzOiBMb2dpblVzZXJSZXF1ZXN0KTogT2JzZXJ2YWJsZTxVc2VyUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdDxVc2VyUmVzcG9uc2UsIExvZ2luVXNlclJlcXVlc3Q+KFxyXG4gICAgICBlbmRQb2ludE5hbWUsXHJcbiAgICAgIGNyZWRlbnRpYWxzXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVnaXN0ZXIgYSBuZXcgdXNlclxyXG4gICAqXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSAtIFRoZSBFbmQgUG9pbnQgTmFtZSB0byByZWdpc3RlciBhIG5ldyB1c2VyXHJcbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIC0gVGhlIG5ldyB1c2VyJ3MgY3JlZGVudGlhbHNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFVzZXJSZXNwb25zZT4gLSBBbiBvYnNlcnZhYmxlIG9mIFVzZXJSZXNwb25zZVxyXG4gICAqL1xyXG4gIHJlZ2lzdGVyKGVuZFBvaW50TmFtZTogc3RyaW5nLCBjcmVkZW50aWFsczogTmV3VXNlclJlcXVlc3QpOiBPYnNlcnZhYmxlPFVzZXJSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0PFVzZXJSZXNwb25zZSwgTmV3VXNlclJlcXVlc3Q+KGVuZFBvaW50TmFtZSwgY3JlZGVudGlhbHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRm9yZ290IHBhc3N3b3JkXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSAtIFRoZSBFbmQgUG9pbnQgTmFtZSBvZiBBUElcclxuICAgKiBAcGFyYW0gZW1haWwgLSBUaGUgZW1haWwgb2YgdXNlclxyXG4gICAqL1xyXG4gIGZvcmdvdFBhc3N3b3JkKFxyXG4gICAgZW5kUG9pbnROYW1lOiBzdHJpbmcsXHJcbiAgICBlbWFpbDogRm9yZ290UGFzc3dvcmRVc2VyUmVxdWVzdFxyXG4gICk6IE9ic2VydmFibGU8QXBpUmVzcG9uc2U+IHtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChlbmRQb2ludE5hbWUsIGVtYWlsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHBhc3N3b3JkXHJcbiAgICogQHBhcmFtIGVuZFBvaW50TmFtZSAtIFRoZSBFbmQgUG9pbnQgTmFtZSBvZiBBUElcclxuICAgKiBAcGFyYW0gcGFzc3dvcmQgLSBUaGUgcGFzc3dvcmQgb2YgdXNlclxyXG4gICAqL1xyXG4gIHJlc2V0UGFzc3dvcmQoXHJcbiAgICBlbmRQb2ludE5hbWU6IHN0cmluZyxcclxuICAgIHBhc3N3b3JkOiBSZXNldFBhc3N3b3JkVXNlclJlcXVlc3RcclxuICApOiBPYnNlcnZhYmxlPEFwaVJlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoZW5kUG9pbnROYW1lLCBwYXNzd29yZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMb2dvdXQgY3VycmVudCBzZXNzaW9uXHJcbiAgICovXHJcbiAgbG9nb3V0KGtleTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UucmVtb3ZlTG9jYWxTdG9yYWdlKGtleSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { openDB } from 'idb';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class IdbService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.dbName = 'TabDatabase';
|
|
7
|
+
this.dbVersion = 1;
|
|
8
|
+
this.dbPromise = openDB(this.dbName, this.dbVersion, {
|
|
9
|
+
upgrade(db) {
|
|
10
|
+
if (!db.objectStoreNames.contains('myObjectStore')) {
|
|
11
|
+
db.createObjectStore('myObjectStore', { keyPath: 'key' });
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
async setItem(key, data) {
|
|
17
|
+
try {
|
|
18
|
+
if (data) {
|
|
19
|
+
await this.setItemIndexedDb(key, data);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throw new Error('Error storing data: ' + error);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async setItemIndexedDb(key, data) {
|
|
27
|
+
const db = await this.dbPromise;
|
|
28
|
+
const tx = db.transaction('myObjectStore', 'readwrite');
|
|
29
|
+
const store = tx.objectStore('myObjectStore');
|
|
30
|
+
await store.put({ key, data });
|
|
31
|
+
await tx.done;
|
|
32
|
+
}
|
|
33
|
+
async getItem(key) {
|
|
34
|
+
try {
|
|
35
|
+
const result = await this.getItemIndexedDb(key);
|
|
36
|
+
return result?.data;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
throw new Error('Error retrieving data: ' + error);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async getItemIndexedDb(key) {
|
|
43
|
+
const db = await this.dbPromise;
|
|
44
|
+
const tx = db.transaction('myObjectStore', 'readonly');
|
|
45
|
+
const store = tx.objectStore('myObjectStore');
|
|
46
|
+
const result = await store.get(key);
|
|
47
|
+
await tx.done;
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
async clearIndexedDB() {
|
|
51
|
+
try {
|
|
52
|
+
const db = await this.dbPromise;
|
|
53
|
+
const tx = db.transaction('myObjectStore', 'readwrite');
|
|
54
|
+
const store = tx.objectStore('myObjectStore');
|
|
55
|
+
await store.clear();
|
|
56
|
+
await tx.done;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
throw new Error('Error clearing IndexedDB: ' + error);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
static { this.ɵfac = function IdbService_Factory(t) { return new (t || IdbService)(); }; }
|
|
63
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: IdbService, factory: IdbService.ɵfac, providedIn: 'root' }); }
|
|
64
|
+
}
|
|
65
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IdbService, [{
|
|
66
|
+
type: Injectable,
|
|
67
|
+
args: [{ providedIn: 'root' }]
|
|
68
|
+
}], () => [], null); })();
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRiLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2F1dGgvaWRiLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQTBCLE1BQU0sS0FBSyxDQUFDOztBQVVyRCxNQUFNLE9BQU8sVUFBVTtJQUtuQjtRQUppQixXQUFNLEdBQUcsYUFBYSxDQUFDO1FBQ3ZCLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFJM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxFQUFFO2dCQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQ2pELEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztZQUNMLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFXLEVBQUUsSUFBUztRQUNoQyxJQUFJLENBQUM7WUFDRCxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNQLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQVcsRUFBRSxJQUFTO1FBQ2pELE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN4RCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQ3JCLElBQUksQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sTUFBTSxFQUFFLElBQUksQ0FBQztRQUN4QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBVztRQUN0QyxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDdkQsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ2QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjO1FBQ2hCLElBQUksQ0FBQztZQUNELE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUN4RCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNsQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFDekQsQ0FBQztJQUNMLENBQUM7MkVBN0RRLFVBQVU7dUVBQVYsVUFBVSxXQUFWLFVBQVUsbUJBREcsTUFBTTs7aUZBQ25CLFVBQVU7Y0FEdEIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgb3BlbkRCLCBJREJQRGF0YWJhc2UsIERCU2NoZW1hIH0gZnJvbSAnaWRiJztcclxuXHJcbmludGVyZmFjZSBNeURCIGV4dGVuZHMgREJTY2hlbWEge1xyXG4gICAgbXlPYmplY3RTdG9yZToge1xyXG4gICAgICAgIGtleTogc3RyaW5nO1xyXG4gICAgICAgIHZhbHVlOiB7IGtleTogc3RyaW5nOyBkYXRhOiBzdHJpbmcgfTtcclxuICAgIH07XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBJZGJTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGJOYW1lID0gJ1RhYkRhdGFiYXNlJztcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGJWZXJzaW9uID0gMTtcclxuICAgIHByaXZhdGUgZGJQcm9taXNlOiBQcm9taXNlPElEQlBEYXRhYmFzZTxNeURCPj47XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5kYlByb21pc2UgPSBvcGVuREI8TXlEQj4odGhpcy5kYk5hbWUsIHRoaXMuZGJWZXJzaW9uLCB7XHJcbiAgICAgICAgICAgIHVwZ3JhZGUoZGIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghZGIub2JqZWN0U3RvcmVOYW1lcy5jb250YWlucygnbXlPYmplY3RTdG9yZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnLCB7IGtleVBhdGg6ICdrZXknIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNldEl0ZW0oa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNldEl0ZW1JbmRleGVkRGIoa2V5LCBkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3Igc3RvcmluZyBkYXRhOiAnICsgZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGFzeW5jIHNldEl0ZW1JbmRleGVkRGIoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5kYlByb21pc2U7XHJcbiAgICAgICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbignbXlPYmplY3RTdG9yZScsICdyZWFkd3JpdGUnKTtcclxuICAgICAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJyk7XHJcbiAgICAgICAgYXdhaXQgc3RvcmUucHV0KHsga2V5LCBkYXRhIH0pO1xyXG4gICAgICAgIGF3YWl0IHR4LmRvbmU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRJdGVtSW5kZXhlZERiKGtleSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ/LmRhdGE7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciByZXRyaWV2aW5nIGRhdGE6ICcgKyBlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZ2V0SXRlbUluZGV4ZWREYihrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLmRiUHJvbWlzZTtcclxuICAgICAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKCdteU9iamVjdFN0b3JlJywgJ3JlYWRvbmx5Jyk7XHJcbiAgICAgICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JlLmdldChrZXkpO1xyXG4gICAgICAgIGF3YWl0IHR4LmRvbmU7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBjbGVhckluZGV4ZWREQigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBkYiA9IGF3YWl0IHRoaXMuZGJQcm9taXNlO1xyXG4gICAgICAgICAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKCdteU9iamVjdFN0b3JlJywgJ3JlYWR3cml0ZScpO1xyXG4gICAgICAgICAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJyk7XHJcbiAgICAgICAgICAgIGF3YWl0IHN0b3JlLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHR4LmRvbmU7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBjbGVhcmluZyBJbmRleGVkREI6ICcgKyBlcnJvcilcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuIl19
|