@redhat-cloud-services/frontend-components-utilities 3.2.9 → 3.2.12
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/Deffered/Deffered.d.ts +6 -0
- package/Deffered/Deffered.js +12 -16
- package/Deffered/Deffered.js.map +1 -0
- package/Deffered/index.d.ts +2 -0
- package/Deffered/index.js +19 -31
- package/Deffered/index.js.map +1 -0
- package/Deffered/package.json +1 -1
- package/MiddlewareListener/MiddlewareListener.d.ts +8 -0
- package/MiddlewareListener/MiddlewareListener.js +44 -79
- package/MiddlewareListener/MiddlewareListener.js.map +1 -0
- package/MiddlewareListener/index.d.ts +2 -0
- package/MiddlewareListener/index.js +19 -31
- package/MiddlewareListener/index.js.map +1 -0
- package/MiddlewareListener/package.json +1 -1
- package/RBAC/RBAC.d.ts +13 -6
- package/RBAC/RBAC.js +73 -78
- package/RBAC/RBAC.js.map +1 -0
- package/RBAC/index.js +19 -31
- package/RBAC/index.js.map +1 -0
- package/RBACHook/RBACHook.d.ts +4 -4
- package/RBACHook/RBACHook.js +82 -63
- package/RBACHook/RBACHook.js.map +1 -0
- package/RBACHook/index.js +19 -31
- package/RBACHook/index.js.map +1 -0
- package/ReducerRegistry/ReducerRegistry.d.ts +12 -0
- package/ReducerRegistry/ReducerRegistry.js +69 -104
- package/ReducerRegistry/ReducerRegistry.js.map +1 -0
- package/ReducerRegistry/index.d.ts +2 -0
- package/ReducerRegistry/index.js +19 -31
- package/ReducerRegistry/index.js.map +1 -0
- package/ReducerRegistry/package.json +1 -1
- package/Registry/Registry.d.ts +4 -0
- package/Registry/Registry.js +48 -53
- package/Registry/Registry.js.map +1 -0
- package/Registry/index.d.ts +2 -0
- package/Registry/index.js +19 -31
- package/Registry/index.js.map +1 -0
- package/Registry/package.json +1 -1
- package/RouterParams/RouterParams.d.ts +30 -0
- package/RouterParams/RouterParams.js +98 -133
- package/RouterParams/RouterParams.js.map +1 -0
- package/RouterParams/index.d.ts +2 -0
- package/RouterParams/index.js +19 -31
- package/RouterParams/index.js.map +1 -0
- package/RouterParams/package.json +1 -1
- package/RowLoader/RowLoader.d.ts +2 -0
- package/RowLoader/RowLoader.js +26 -71
- package/RowLoader/RowLoader.js.map +1 -0
- package/RowLoader/index.d.ts +2 -0
- package/RowLoader/index.js +19 -31
- package/RowLoader/index.js.map +1 -0
- package/RowLoader/package.json +1 -1
- package/debounce/debounce.d.ts +2 -0
- package/debounce/debounce.js +12 -25
- package/debounce/debounce.js.map +1 -0
- package/debounce/index.d.ts +2 -0
- package/debounce/index.js +19 -31
- package/debounce/index.js.map +1 -0
- package/debounce/package.json +1 -1
- package/esm/Deffered/Deffered.js +10 -10
- package/esm/Deffered/Deffered.js.map +1 -0
- package/esm/Deffered/index.js +2 -1
- package/esm/Deffered/index.js.map +1 -0
- package/esm/MiddlewareListener/MiddlewareListener.js +43 -68
- package/esm/MiddlewareListener/MiddlewareListener.js.map +1 -0
- package/esm/MiddlewareListener/index.js +2 -1
- package/esm/MiddlewareListener/index.js.map +1 -0
- package/esm/RBAC/RBAC.js +69 -64
- package/esm/RBAC/RBAC.js.map +1 -0
- package/esm/RBAC/index.js +2 -1
- package/esm/RBAC/index.js.map +1 -0
- package/esm/RBACHook/RBACHook.js +77 -46
- package/esm/RBACHook/RBACHook.js.map +1 -0
- package/esm/RBACHook/index.js +2 -1
- package/esm/RBACHook/index.js.map +1 -0
- package/esm/ReducerRegistry/ReducerRegistry.js +64 -85
- package/esm/ReducerRegistry/ReducerRegistry.js.map +1 -0
- package/esm/ReducerRegistry/index.js +2 -1
- package/esm/ReducerRegistry/index.js.map +1 -0
- package/esm/Registry/Registry.js +40 -35
- package/esm/Registry/Registry.js.map +1 -0
- package/esm/Registry/index.js +2 -1
- package/esm/Registry/index.js.map +1 -0
- package/esm/RouterParams/RouterParams.js +86 -107
- package/esm/RouterParams/RouterParams.js.map +1 -0
- package/esm/RouterParams/index.js +2 -1
- package/esm/RouterParams/index.js.map +1 -0
- package/esm/RowLoader/RowLoader.js +21 -59
- package/esm/RowLoader/RowLoader.js.map +1 -0
- package/esm/RowLoader/index.js +2 -1
- package/esm/RowLoader/index.js.map +1 -0
- package/esm/debounce/debounce.js +6 -14
- package/esm/debounce/debounce.js.map +1 -0
- package/esm/debounce/index.js +2 -1
- package/esm/debounce/index.js.map +1 -0
- package/esm/helpers/helpers.js +70 -73
- package/esm/helpers/helpers.js.map +1 -0
- package/esm/helpers/index.js +4 -3
- package/esm/helpers/index.js.map +1 -0
- package/esm/index.js +12 -11
- package/esm/index.js.map +1 -0
- package/esm/interceptors/index.js +2 -1
- package/esm/interceptors/index.js.map +1 -0
- package/esm/interceptors/interceptors.js +121 -106
- package/esm/interceptors/interceptors.js.map +1 -0
- package/esm/inventoryDependencies/index.js +4 -6
- package/esm/inventoryDependencies/index.js.map +1 -0
- package/esm/inventoryDependencies/inventoryDependencies.js +65 -126
- package/esm/inventoryDependencies/inventoryDependencies.js.map +1 -0
- package/esm/mergeMessages/index.js +3 -1
- package/esm/mergeMessages/index.js.map +1 -0
- package/esm/mergeMessages/mergeMessages.js +54 -67
- package/esm/mergeMessages/mergeMessages.js.map +1 -0
- package/esm/parseCvssScore/index.js +2 -1
- package/esm/parseCvssScore/index.js.map +1 -0
- package/esm/parseCvssScore/parseCvssScore.js +13 -15
- package/esm/parseCvssScore/parseCvssScore.js.map +1 -0
- package/esm/useInventory/index.js +2 -1
- package/esm/useInventory/index.js.map +1 -0
- package/esm/useInventory/useInventory.js +129 -125
- package/esm/useInventory/useInventory.js.map +1 -0
- package/helpers/helpers.d.ts +8 -0
- package/helpers/helpers.js +83 -106
- package/helpers/helpers.js.map +1 -0
- package/helpers/index.d.ts +2 -0
- package/helpers/index.js +26 -26
- package/helpers/index.js.map +1 -0
- package/helpers/package.json +1 -1
- package/index.d.ts +16 -0
- package/index.js +53 -137
- package/index.js.map +1 -0
- package/interceptors/index.d.ts +2 -0
- package/interceptors/index.js +19 -31
- package/interceptors/index.js.map +1 -0
- package/interceptors/interceptors.d.ts +11 -0
- package/interceptors/interceptors.js +135 -141
- package/interceptors/interceptors.js.map +1 -0
- package/interceptors/package.json +1 -1
- package/inventoryDependencies/index.d.ts +2 -0
- package/inventoryDependencies/index.js +26 -26
- package/inventoryDependencies/index.js.map +1 -0
- package/inventoryDependencies/inventoryDependencies.d.ts +126 -0
- package/inventoryDependencies/inventoryDependencies.js +67 -193
- package/inventoryDependencies/inventoryDependencies.js.map +1 -0
- package/inventoryDependencies/package.json +1 -1
- package/mergeMessages/index.d.ts +1 -0
- package/mergeMessages/index.js +2 -2
- package/mergeMessages/index.js.map +1 -0
- package/mergeMessages/mergeMessages.d.ts +1 -0
- package/mergeMessages/mergeMessages.js +53 -70
- package/mergeMessages/mergeMessages.js.map +1 -0
- package/mergeMessages/package.json +1 -1
- package/package.json +13 -7
- package/parseCvssScore/index.d.ts +2 -0
- package/parseCvssScore/index.js +19 -31
- package/parseCvssScore/index.js.map +1 -0
- package/parseCvssScore/package.json +1 -1
- package/parseCvssScore/parseCvssScore.d.ts +2 -0
- package/parseCvssScore/parseCvssScore.js +18 -26
- package/parseCvssScore/parseCvssScore.js.map +1 -0
- package/tsconfig.cjs.json +8 -0
- package/tsconfig.json +12 -0
- package/useInventory/index.d.ts +2 -0
- package/useInventory/index.js +19 -31
- package/useInventory/index.js.map +1 -0
- package/useInventory/package.json +1 -1
- package/useInventory/useInventory.d.ts +13 -0
- package/useInventory/useInventory.js +151 -148
- package/useInventory/useInventory.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/debounce/index.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,cAAc,YAAY,CAAC"}
|
package/esm/helpers/helpers.js
CHANGED
|
@@ -1,85 +1,82 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
13
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
14
|
+
if (ar || !(i in from)) {
|
|
15
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
16
|
+
ar[i] = from[i];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
20
|
+
};
|
|
10
21
|
import merge from 'lodash/merge';
|
|
11
22
|
import mapKeys from 'lodash/mapKeys';
|
|
12
23
|
export var CSV_TYPE = 'text/csv;charset=utf-8;';
|
|
13
24
|
export var JSON_TYPE = 'data:text/json;charset=utf-8,';
|
|
14
25
|
var monthMap = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
|
|
15
|
-
export function mergeArraysByKey(arrays) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return
|
|
19
|
-
return a && a[key];
|
|
20
|
-
});
|
|
21
|
-
})));
|
|
22
|
-
return Object.values(mergedObject);
|
|
26
|
+
export function mergeArraysByKey(arrays, key) {
|
|
27
|
+
if (key === void 0) { key = 'id'; }
|
|
28
|
+
var mergedObject = merge.apply(void 0, arrays.map(function (row) { return mapKeys(row, function (a) { return a && a[key]; }); }));
|
|
29
|
+
return Object.values(mergedObject);
|
|
23
30
|
}
|
|
24
|
-
export function downloadFile(data) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
link.click();
|
|
37
|
-
document.body.removeChild(link);
|
|
31
|
+
export function downloadFile(data, filename, format) {
|
|
32
|
+
if (filename === void 0) { filename = "".concat(new Date().toISOString()); }
|
|
33
|
+
if (format === void 0) { format = CSV_TYPE; }
|
|
34
|
+
var type = format === 'json' ? JSON_TYPE : CSV_TYPE;
|
|
35
|
+
var blob = new Blob([data], { type: type });
|
|
36
|
+
var link = document.createElement('a');
|
|
37
|
+
link.setAttribute('href', URL.createObjectURL(blob));
|
|
38
|
+
link.setAttribute('download', "".concat(filename, ".").concat(format));
|
|
39
|
+
link.style.visibility = 'hidden';
|
|
40
|
+
document.body.appendChild(link);
|
|
41
|
+
link.click();
|
|
42
|
+
document.body.removeChild(link);
|
|
38
43
|
}
|
|
39
44
|
export function processDate(dateString) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
return "".concat(day, " ").concat(month, " ").concat(date.getFullYear());
|
|
45
|
+
var date = new Date(dateString);
|
|
46
|
+
var month = monthMap[date.getMonth()];
|
|
47
|
+
var day = date.getDate() < 10 ? "0".concat(date.getDate()) : date.getDate();
|
|
48
|
+
if (!month || isNaN(day)) {
|
|
49
|
+
return 'N/A';
|
|
50
|
+
}
|
|
51
|
+
return "".concat(day, " ").concat(month, " ").concat(date.getFullYear());
|
|
49
52
|
}
|
|
50
|
-
export function getBaseName(pathname) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
pathName.shift();
|
|
55
|
-
|
|
56
|
-
if (pathName[0] === 'beta') {
|
|
53
|
+
export function getBaseName(pathname, level) {
|
|
54
|
+
if (level === void 0) { level = 2; }
|
|
55
|
+
var release = '/';
|
|
56
|
+
var pathName = pathname.replace(/(#|\?).*/, '').split('/');
|
|
57
57
|
pathName.shift();
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return _toConsumableArray(new Array(level)).reduce(function (acc, _curr, key) {
|
|
62
|
-
return "".concat(acc).concat(pathName[key] || '').concat(key < level - 1 ? '/' : '');
|
|
63
|
-
}, release);
|
|
64
|
-
}
|
|
65
|
-
export var generateFilter = function generateFilter(data) {
|
|
66
|
-
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'filter';
|
|
67
|
-
var options = arguments.length > 2 ? arguments[2] : undefined;
|
|
68
|
-
return Object.entries(data || {}).reduce(function (acc, _ref) {
|
|
69
|
-
var _ref2 = _slicedToArray(_ref, 2),
|
|
70
|
-
key = _ref2[0],
|
|
71
|
-
value = _ref2[1];
|
|
72
|
-
|
|
73
|
-
var newPath = "".concat(path || '', "[").concat(key, "]").concat(Array.isArray(value) ? "".concat(options !== null && options !== void 0 && options.arrayEnhancer ? "[".concat(options.arrayEnhancer, "]") : '', "[]") : '');
|
|
74
|
-
|
|
75
|
-
if (value instanceof Function || value instanceof Date) {
|
|
76
|
-
return acc;
|
|
58
|
+
if (pathName[0] === 'beta') {
|
|
59
|
+
pathName.shift();
|
|
60
|
+
release = "/beta/";
|
|
77
61
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
62
|
+
return __spreadArray([], new Array(level), true).reduce(function (acc, _curr, key) {
|
|
63
|
+
return "".concat(acc).concat(pathName[key] || '').concat(key < level - 1 ? '/' : '');
|
|
64
|
+
}, release);
|
|
65
|
+
}
|
|
66
|
+
export var generateFilter = function (data, path, options) {
|
|
67
|
+
if (path === void 0) { path = 'filter'; }
|
|
68
|
+
return Object.entries(data || {}).reduce(function (acc, _a) {
|
|
69
|
+
var _b;
|
|
70
|
+
var key = _a[0], value = _a[1];
|
|
71
|
+
var newPath = "".concat(path || '', "[").concat(key, "]").concat(Array.isArray(value) ? "".concat((options === null || options === void 0 ? void 0 : options.arrayEnhancer) ? "[".concat(options.arrayEnhancer, "]") : '', "[]") : '');
|
|
72
|
+
if (value instanceof Function || value instanceof Date) {
|
|
73
|
+
return acc;
|
|
74
|
+
}
|
|
75
|
+
return __assign(__assign({}, acc), (Array.isArray(value) || typeof value !== 'object' ? (_b = {}, _b[newPath] = value, _b) : generateFilter(value, newPath, options)));
|
|
76
|
+
}, {});
|
|
77
|
+
};
|
|
78
|
+
export var toUpperCase = function (text) {
|
|
79
|
+
if (text === void 0) { text = ''; }
|
|
80
|
+
return "".concat(text.charAt(0).toUpperCase()).concat(text.slice(1));
|
|
81
81
|
};
|
|
82
|
-
|
|
83
|
-
var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
84
|
-
return "".concat(text.charAt(0).toUpperCase()).concat(text.slice(1));
|
|
85
|
-
};
|
|
82
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers/helpers.js"],"names":[],"mappings":"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"}
|
package/esm/helpers/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
export
|
|
3
|
-
export * from './helpers';
|
|
1
|
+
import * as default_1 from './helpers';
|
|
2
|
+
export default default_1;
|
|
3
|
+
export * from './helpers';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.js"],"names":[],"mappings":"2BAAyB,WAAW;;AACpC,cAAc,WAAW,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
export { default as debounceFunction } from './debounce';
|
|
2
2
|
export { default as Deferred } from './Deffered';
|
|
3
|
-
import * as
|
|
4
|
-
export {
|
|
3
|
+
import * as helpers_1 from './helpers';
|
|
4
|
+
export { helpers_1 as helpers };
|
|
5
5
|
export { default as axiosInstance } from './interceptors';
|
|
6
|
-
import * as
|
|
7
|
-
export {
|
|
6
|
+
import * as interceptors_1 from './interceptors';
|
|
7
|
+
export { interceptors_1 as interceptors };
|
|
8
8
|
export { default as MiddlewareListener } from './MiddlewareListener';
|
|
9
9
|
export { default as parseCvssScore } from './parseCvssScore';
|
|
10
|
-
import * as
|
|
11
|
-
export {
|
|
12
|
-
import * as
|
|
13
|
-
export {
|
|
10
|
+
import * as RBAC_1 from './RBAC';
|
|
11
|
+
export { RBAC_1 as RBAC };
|
|
12
|
+
import * as RBACHook_1 from './RBACHook';
|
|
13
|
+
export { RBACHook_1 as RBACHook };
|
|
14
14
|
export { default as ReducerRegistry } from './ReducerRegistry';
|
|
15
|
-
import * as
|
|
16
|
-
export {
|
|
15
|
+
import * as reduxHelpers_1 from './ReducerRegistry';
|
|
16
|
+
export { reduxHelpers_1 as reduxHelpers };
|
|
17
17
|
export { default as registryDecorator } from './Registry';
|
|
18
18
|
export * from './Registry';
|
|
19
19
|
export { default as routerParams } from './RouterParams';
|
|
20
20
|
export { default as RowLoader } from './RowLoader';
|
|
21
|
-
export { useInventory } from './useInventory';
|
|
21
|
+
export { useInventory } from './useInventory';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;2BACxB,WAAW;sBAAxB,OAAO;AACnB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;gCAC5B,gBAAgB;2BAAlC,YAAY;AACxB,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;wBACvC,QAAQ;mBAAlB,IAAI;4BACU,YAAY;uBAA1B,QAAQ;AACpB,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;gCACjC,mBAAmB;2BAArC,YAAY;AACxB,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC1D,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,cAAc,gBAAgB,CAAC"}
|
|
@@ -1,121 +1,136 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __assign = (this && this.__assign) || function () {
|
|
17
|
+
__assign = Object.assign || function(t) {
|
|
18
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
19
|
+
s = arguments[i];
|
|
20
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
+
t[p] = s[p];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
return __assign.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
28
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
29
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
30
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
31
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
32
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
33
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
37
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
38
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
39
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
40
|
+
function step(op) {
|
|
41
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
42
|
+
while (_) try {
|
|
43
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
44
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
45
|
+
switch (op[0]) {
|
|
46
|
+
case 0: case 1: t = op; break;
|
|
47
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
48
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
49
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
50
|
+
default:
|
|
51
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
52
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
53
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
54
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
55
|
+
if (t[2]) _.ops.pop();
|
|
56
|
+
_.trys.pop(); continue;
|
|
57
|
+
}
|
|
58
|
+
op = body.call(thisArg, _);
|
|
59
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
60
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
61
|
+
}
|
|
62
|
+
};
|
|
18
63
|
import axios from 'axios';
|
|
19
64
|
import { configureScope, captureException } from '@sentry/browser';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function _authInterceptor() {
|
|
42
|
-
_authInterceptor = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(config) {
|
|
43
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
44
|
-
while (1) {
|
|
45
|
-
switch (_context.prev = _context.next) {
|
|
46
|
-
case 0:
|
|
47
|
-
_context.next = 2;
|
|
48
|
-
return window.insights.chrome.auth.getUser();
|
|
49
|
-
|
|
50
|
-
case 2:
|
|
51
|
-
return _context.abrupt("return", config);
|
|
52
|
-
|
|
53
|
-
case 3:
|
|
54
|
-
case "end":
|
|
55
|
-
return _context.stop();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}, _callee);
|
|
59
|
-
}));
|
|
60
|
-
return _authInterceptor.apply(this, arguments);
|
|
65
|
+
var HttpError = (function (_super) {
|
|
66
|
+
__extends(HttpError, _super);
|
|
67
|
+
function HttpError(description) {
|
|
68
|
+
var _this = _super.call(this, 'Error communicating with the server') || this;
|
|
69
|
+
_this.description = description;
|
|
70
|
+
return _this;
|
|
71
|
+
}
|
|
72
|
+
return HttpError;
|
|
73
|
+
}(Error));
|
|
74
|
+
export { HttpError };
|
|
75
|
+
export function authInterceptor(config) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
77
|
+
return __generator(this, function (_a) {
|
|
78
|
+
switch (_a.label) {
|
|
79
|
+
case 0: return [4, window.insights.chrome.auth.getUser()];
|
|
80
|
+
case 1:
|
|
81
|
+
_a.sent();
|
|
82
|
+
return [2, config];
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
});
|
|
61
86
|
}
|
|
62
|
-
|
|
63
87
|
export function responseDataInterceptor(response) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return response;
|
|
88
|
+
if (response.data) {
|
|
89
|
+
return response.data;
|
|
90
|
+
}
|
|
91
|
+
return response;
|
|
69
92
|
}
|
|
70
93
|
export function interceptor401(error) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
throw error;
|
|
94
|
+
if (error.response && error.response.status === 401) {
|
|
95
|
+
window.insights.chrome.auth.logout();
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
throw error;
|
|
77
99
|
}
|
|
78
100
|
export function interceptor500(error) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
throw error;
|
|
101
|
+
if (error.response && error.response.status >= 500 && error.response.status < 600) {
|
|
102
|
+
configureScope(function (scope) {
|
|
103
|
+
scope.setTag('request_id', error.response.req_id);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
throw error;
|
|
86
107
|
}
|
|
87
108
|
export function errorInterceptor(err) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (!requestId) {
|
|
107
|
-
customError.sentryId = captureException(customError);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
customError.requestId = requestId;
|
|
111
|
-
throw customError;
|
|
109
|
+
var _a, _b;
|
|
110
|
+
if (!axios.isCancel(err)) {
|
|
111
|
+
var requestId = void 0;
|
|
112
|
+
try {
|
|
113
|
+
var errObject = __assign({}, err);
|
|
114
|
+
requestId = (_b = (_a = errObject.response) === null || _a === void 0 ? void 0 : _a.headers) === null || _b === void 0 ? void 0 : _b['x-rh-insights-request-id'];
|
|
115
|
+
if (errObject.response && errObject.response.data) {
|
|
116
|
+
throw __assign(__assign({}, errObject.response.data), { statusText: errObject.response.statusText });
|
|
117
|
+
}
|
|
118
|
+
throw err;
|
|
119
|
+
}
|
|
120
|
+
catch (customError) {
|
|
121
|
+
if (!requestId) {
|
|
122
|
+
customError.sentryId = captureException(customError);
|
|
123
|
+
}
|
|
124
|
+
customError.requestId = requestId;
|
|
125
|
+
throw customError;
|
|
126
|
+
}
|
|
112
127
|
}
|
|
113
|
-
}
|
|
114
128
|
}
|
|
115
129
|
export var instance = axios.create();
|
|
116
130
|
instance.interceptors.request.use(authInterceptor);
|
|
117
131
|
instance.interceptors.response.use(responseDataInterceptor);
|
|
118
|
-
instance.interceptors.response.use(
|
|
119
|
-
instance.interceptors.response.use(
|
|
120
|
-
instance.interceptors.response.use(
|
|
121
|
-
export default instance;
|
|
132
|
+
instance.interceptors.response.use(undefined, interceptor401);
|
|
133
|
+
instance.interceptors.response.use(undefined, interceptor500);
|
|
134
|
+
instance.interceptors.response.use(undefined, errorInterceptor);
|
|
135
|
+
export default instance;
|
|
136
|
+
//# sourceMappingURL=interceptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../src/interceptors/interceptors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export { _default as default };
|
|
6
|
-
export * from './inventoryDependencies';
|
|
1
|
+
import * as default_1 from './inventoryDependencies';
|
|
2
|
+
export default default_1;
|
|
3
|
+
export * from './inventoryDependencies';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/inventoryDependencies/index.js"],"names":[],"mappings":"2BAGyB,yBAAyB;;AAClD,cAAc,yBAAyB,CAAC"}
|