@devtron-labs/devtron-fe-common-lib 0.0.48-beta-6 → 0.0.48-beta-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/.eslintignore +75 -0
- package/.eslintrc.js +84 -16
- package/.github/pull_request_template.md +25 -0
- package/.github/workflows/ci.yml +31 -0
- package/.github/workflows/release-package.yml +2 -3
- package/.husky/pre-commit +5 -0
- package/.lintstagedrc +3 -0
- package/.nvmrc +1 -0
- package/dist/Common/BreadCrumb/BreadCrumb.d.ts +1 -1
- package/dist/Common/BreadCrumb/BreadcrumbStore.d.ts +2 -2
- package/dist/Common/Common.service.d.ts +0 -1
- package/dist/Common/Constants.d.ts +1 -2
- package/dist/Common/CustomInput/CustomInput.d.ts +1 -1
- package/dist/Common/CustomInput/Types.d.ts +2 -1
- package/dist/Common/CustomTagSelector/ResizableTagTextArea.d.ts +1 -1
- package/dist/Common/DeleteComponentModal/DeleteComponent.d.ts +1 -1
- package/dist/Common/DevtronProgressing/DevtronProgressing.d.ts +1 -1
- package/dist/Common/Dialogs/ConfirmationDialog.d.ts +6 -6
- package/dist/Common/Dialogs/DeleteDialog.d.ts +1 -1
- package/dist/Common/Dialogs/ForceDeleteDialog.d.ts +1 -1
- package/dist/Common/Dialogs/Types.d.ts +1 -1
- package/dist/Common/EmptyState/EmptyState.d.ts +20 -17
- package/dist/Common/EmptyState/GenericEmptyState.d.ts +1 -1
- package/dist/Common/Error.d.ts +2 -1
- package/dist/Common/ErrorScreenNotFound.d.ts +1 -1
- package/dist/Common/Helper.d.ts +1 -10
- package/dist/Common/ImageTags.d.ts +1 -1
- package/dist/Common/InfoColorBar/InfoColourbar.d.ts +1 -1
- package/dist/Common/Modals/Modal.d.ts +2 -2
- package/dist/Common/Modals/OpaqueModal.d.ts +3 -3
- package/dist/Common/Modals/VisibleModal.d.ts +3 -3
- package/dist/Common/Modals/VisibleModal2.d.ts +3 -3
- package/dist/Common/MultiSelectCustomization.d.ts +1 -1
- package/dist/Common/Policy.Types.d.ts +2 -2
- package/dist/Common/PopupMenu.d.ts +5 -5
- package/dist/Common/Progressing.d.ts +2 -2
- package/dist/Common/RadioGroup/RadioGroup.d.ts +1 -1
- package/dist/Common/ResizableTextarea.d.ts +1 -1
- package/dist/Common/TippyCustomized.d.ts +1 -1
- package/dist/Common/ToastBody.d.ts +5 -5
- package/dist/Common/Types.d.ts +0 -64
- package/dist/Common/index.d.ts +0 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +380 -2083
- package/package.json +19 -4
- package/src/Common/AddCDButton/AddCDButton.tsx +1 -2
- package/src/Common/Api.ts +21 -26
- package/src/Common/AppStatus/AppStatus.tsx +12 -12
- package/src/Common/AppStatus/utils.ts +6 -5
- package/src/Common/BreadCrumb/BreadCrumb.tsx +32 -28
- package/src/Common/BreadCrumb/BreadcrumbStore.tsx +2 -2
- package/src/Common/BreadCrumb/Types.ts +11 -12
- package/src/Common/Checkbox.tsx +17 -19
- package/src/Common/ClipboardButton/ClipboardButton.tsx +1 -1
- package/src/Common/ClipboardButton/__tests__/ClipboardButton.test.tsx +0 -1
- package/src/Common/Common.service.ts +59 -68
- package/src/Common/Constants.ts +9 -10
- package/src/Common/CustomInput/CustomInput.tsx +22 -28
- package/src/Common/CustomInput/Types.ts +4 -3
- package/src/Common/CustomInput/index.ts +1 -1
- package/src/Common/CustomTagSelector/PropagateTagInfo.tsx +15 -18
- package/src/Common/CustomTagSelector/ResizableTagTextArea.tsx +9 -9
- package/src/Common/CustomTagSelector/TagDetails.tsx +9 -3
- package/src/Common/CustomTagSelector/TagLabelSelect.tsx +7 -9
- package/src/Common/CustomTagSelector/TagLabelValueSelector.tsx +31 -35
- package/src/Common/CustomTagSelector/TagSelector.utils.ts +2 -3
- package/src/Common/CustomTagSelector/Types.ts +1 -1
- package/src/Common/CustomTagSelector/ValidationRules.ts +18 -22
- package/src/Common/CustomTagSelector/index.ts +2 -2
- package/src/Common/DebouncedSearch/DebouncedSearch.tsx +2 -1
- package/src/Common/DebouncedSearch/__tests__/DebouncedSearch.test.tsx +0 -1
- package/src/Common/DeleteComponentModal/DeleteComponent.tsx +27 -32
- package/src/Common/DeleteComponentModal/types.ts +1 -1
- package/src/Common/DevtronProgressing/DevtronProgressing.tsx +5 -8
- package/src/Common/Dialogs/ConfirmationDialog.tsx +24 -24
- package/src/Common/Dialogs/DeleteDialog.tsx +3 -5
- package/src/Common/Dialogs/DialogForm.tsx +31 -35
- package/src/Common/Dialogs/ForceDeleteDialog.tsx +13 -7
- package/src/Common/Dialogs/Types.ts +12 -12
- package/src/Common/Dialogs/index.ts +1 -1
- package/src/Common/Drawer/Drawer.tsx +1 -1
- package/src/Common/EmptyState/EmptyState.tsx +13 -17
- package/src/Common/EmptyState/GenericEmptyState.tsx +25 -15
- package/src/Common/Error.tsx +5 -5
- package/src/Common/ErrorScreenNotFound.tsx +9 -12
- package/src/Common/Grid/Grid.tsx +1 -2
- package/src/Common/Helper.tsx +23 -125
- package/src/Common/Hooks/UseClickOutside/UseClickOutside.tsx +1 -1
- package/src/Common/Hooks/UseSuperAdmin/UseSuperAdmin.tsx +1 -1
- package/src/Common/ImageTags.Types.ts +2 -3
- package/src/Common/ImageTags.tsx +61 -66
- package/src/Common/InfoColorBar/InfoColourbar.tsx +10 -5
- package/src/Common/Modals/Modal.tsx +3 -3
- package/src/Common/Modals/OpaqueModal.tsx +25 -18
- package/src/Common/Modals/VisibleModal.tsx +7 -3
- package/src/Common/Modals/VisibleModal2.tsx +20 -15
- package/src/Common/MultiSelectCustomization.tsx +9 -13
- package/src/Common/Policy.Types.ts +38 -38
- package/src/Common/PopupMenu.tsx +10 -9
- package/src/Common/Progressing.tsx +15 -18
- package/src/Common/RJSF/Form.tsx +0 -1
- package/src/Common/RJSF/common/FieldRow.tsx +0 -1
- package/src/Common/RJSF/config.ts +0 -1
- package/src/Common/RJSF/templates/ArrayFieldItemTemplate.tsx +1 -1
- package/src/Common/RJSF/templates/ArrayFieldTemplate.tsx +0 -1
- package/src/Common/RJSF/templates/BaseInput.tsx +0 -1
- package/src/Common/RJSF/templates/ButtonTemplates/AddButton.tsx +0 -1
- package/src/Common/RJSF/templates/ButtonTemplates/RemoveButton.tsx +0 -1
- package/src/Common/RJSF/templates/ButtonTemplates/SubmitButton.tsx +1 -6
- package/src/Common/RJSF/templates/Description.tsx +0 -1
- package/src/Common/RJSF/templates/Field.tsx +14 -3
- package/src/Common/RJSF/templates/FieldErrorTemplate.tsx +6 -9
- package/src/Common/RJSF/templates/ObjectFieldTemplate.tsx +5 -7
- package/src/Common/RJSF/templates/TitleField.tsx +0 -1
- package/src/Common/RJSF/templates/WrapIfAdditionalTemplate.tsx +0 -1
- package/src/Common/RJSF/utils.ts +53 -57
- package/src/Common/RJSF/widgets/Checkbox.tsx +2 -2
- package/src/Common/RJSF/widgets/Select.tsx +0 -1
- package/src/Common/RadioGroup/RadioGroup.tsx +18 -23
- package/src/Common/RadioGroup.tsx +24 -23
- package/src/Common/Reload.tsx +0 -1
- package/src/Common/ResizableTextarea.tsx +18 -17
- package/src/Common/Security/ScanVulnerabilitiesTable.tsx +29 -34
- package/src/Common/ServerError.ts +5 -1
- package/src/Common/TippyCustomized.tsx +41 -38
- package/src/Common/ToastBody.tsx +6 -7
- package/src/Common/Toggle/Toggle.tsx +3 -3
- package/src/Common/Types.ts +12 -81
- package/src/Common/index.ts +0 -1
- package/src/custom.d.ts +7 -7
- package/src/index.ts +1 -1
- package/dist/Common/ChartVersionAndTypeSelector.d.ts +0 -4
- package/src/Common/ChartVersionAndTypeSelector.tsx +0 -78
package/dist/index.js
CHANGED
|
@@ -4,26 +4,25 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
var React = require('react');
|
|
5
5
|
var ReactDOM = require('react-dom');
|
|
6
6
|
var reactRouterDom = require('react-router-dom');
|
|
7
|
-
var vm = require('vm');
|
|
8
7
|
var RJSF = require('@rjsf/core');
|
|
9
8
|
var RJSFValidator = require('@rjsf/validator-ajv8');
|
|
10
9
|
var utils = require('@rjsf/utils');
|
|
11
10
|
|
|
12
11
|
function _interopNamespaceDefault(e) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
21
22
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
n.default = e;
|
|
26
|
-
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
n.default = e;
|
|
25
|
+
return Object.freeze(n);
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
@@ -49,7 +48,6 @@ var ROUTES = {
|
|
|
49
48
|
USER_CHECK_ROLE: 'user/check/roles',
|
|
50
49
|
IMAGE_TAGGING: 'app/image-tagging',
|
|
51
50
|
CD_MATERIAL_GET: 'app/cd-pipeline',
|
|
52
|
-
DEPLOYMENT_TEMPLATE_LIST: 'app/template/list'
|
|
53
51
|
};
|
|
54
52
|
exports.KEY_VALUE = void 0;
|
|
55
53
|
(function (KEY_VALUE) {
|
|
@@ -253,9 +251,9 @@ var REGISTRY_TYPE_MAP = {
|
|
|
253
251
|
},
|
|
254
252
|
};
|
|
255
253
|
var RepositoryAction = {
|
|
256
|
-
CONTAINER:
|
|
257
|
-
CHART_PULL:
|
|
258
|
-
CHART_PUSH:
|
|
254
|
+
CONTAINER: 'CONTAINER',
|
|
255
|
+
CHART_PULL: 'CHART_PULL',
|
|
256
|
+
CHART_PUSH: 'CHART_PUSH',
|
|
259
257
|
};
|
|
260
258
|
|
|
261
259
|
/******************************************************************************
|
|
@@ -272,7 +270,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
272
270
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
273
271
|
PERFORMANCE OF THIS SOFTWARE.
|
|
274
272
|
***************************************************************************** */
|
|
275
|
-
/* global Reflect, Promise */
|
|
273
|
+
/* global Reflect, Promise, SuppressedError, Symbol */
|
|
276
274
|
|
|
277
275
|
var extendStatics = function(d, b) {
|
|
278
276
|
extendStatics = Object.setPrototypeOf ||
|
|
@@ -281,7 +279,7 @@ var extendStatics = function(d, b) {
|
|
|
281
279
|
return extendStatics(d, b);
|
|
282
280
|
};
|
|
283
281
|
|
|
284
|
-
function __extends
|
|
282
|
+
function __extends(d, b) {
|
|
285
283
|
if (typeof b !== "function" && b !== null)
|
|
286
284
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
287
285
|
extendStatics(d, b);
|
|
@@ -375,7 +373,12 @@ function __spreadArray(to, from, pack) {
|
|
|
375
373
|
}
|
|
376
374
|
}
|
|
377
375
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
378
|
-
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
379
|
+
var e = new Error(message);
|
|
380
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
381
|
+
};
|
|
379
382
|
|
|
380
383
|
var ServerError = /** @class */ (function () {
|
|
381
384
|
function ServerError(error) {
|
|
@@ -387,7 +390,7 @@ var ServerError = /** @class */ (function () {
|
|
|
387
390
|
return ServerError;
|
|
388
391
|
}());
|
|
389
392
|
var ServerErrors = /** @class */ (function (_super) {
|
|
390
|
-
__extends
|
|
393
|
+
__extends(ServerErrors, _super);
|
|
391
394
|
function ServerErrors(obj) {
|
|
392
395
|
var _this = _super.call(this) || this;
|
|
393
396
|
_this.code = obj.code;
|
|
@@ -577,7 +580,7 @@ function handleServerError(contentType, response) {
|
|
|
577
580
|
status = response.statusText || responseMessages[code];
|
|
578
581
|
serverError = new ServerErrors({ code: code, errors: [] });
|
|
579
582
|
if (!(contentType !== 'application/json')) return [3 /*break*/, 1];
|
|
580
|
-
//used for better debugging,
|
|
583
|
+
// used for better debugging,
|
|
581
584
|
status = "".concat(responseMessages[code], ". Please try again.");
|
|
582
585
|
return [3 /*break*/, 3];
|
|
583
586
|
case 1: return [4 /*yield*/, response.json()];
|
|
@@ -605,8 +608,8 @@ function fetchAPI(url, type, data, signal, preventAutoLogout, isMultipartRequest
|
|
|
605
608
|
method: type,
|
|
606
609
|
signal: signal,
|
|
607
610
|
body: data ? JSON.stringify(data) : undefined,
|
|
611
|
+
credentials: 'include',
|
|
608
612
|
};
|
|
609
|
-
options['credentials'] = 'include';
|
|
610
613
|
return [2 /*return*/, fetch("".concat(Host, "/").concat(url), !isMultipartRequest
|
|
611
614
|
? options
|
|
612
615
|
: {
|
|
@@ -639,17 +642,17 @@ function fetchAPI(url, type, data, signal, preventAutoLogout, isMultipartRequest
|
|
|
639
642
|
if (contentType === 'application/json') {
|
|
640
643
|
return [2 /*return*/, response.json().then(function (responseBody) {
|
|
641
644
|
if (responseBody.code >= 300 && responseBody.code <= 599) {
|
|
642
|
-
//Test Code in Response Body, despite successful HTTP Response Code
|
|
645
|
+
// Test Code in Response Body, despite successful HTTP Response Code
|
|
643
646
|
throw new ServerErrors({ code: responseBody.code, errors: responseBody.errors });
|
|
644
647
|
}
|
|
645
648
|
else {
|
|
646
|
-
//Successfull Response. Expected Response Type {code, result, status}
|
|
649
|
+
// Successfull Response. Expected Response Type {code, result, status}
|
|
647
650
|
return responseBody;
|
|
648
651
|
}
|
|
649
652
|
})];
|
|
650
653
|
}
|
|
651
|
-
|
|
652
|
-
//used in getArtifact() API only
|
|
654
|
+
if (contentType === 'octet-stream' || contentType === 'application/octet-stream') {
|
|
655
|
+
// used in getArtifact() API only
|
|
653
656
|
return [2 /*return*/, response];
|
|
654
657
|
}
|
|
655
658
|
_a.label = 4;
|
|
@@ -657,7 +660,7 @@ function fetchAPI(url, type, data, signal, preventAutoLogout, isMultipartRequest
|
|
|
657
660
|
}
|
|
658
661
|
});
|
|
659
662
|
}); }, function (error) {
|
|
660
|
-
//Network call fails. Handle Failed to Fetch
|
|
663
|
+
// Network call fails. Handle Failed to Fetch
|
|
661
664
|
var err = {
|
|
662
665
|
code: 0,
|
|
663
666
|
userMessage: error.message,
|
|
@@ -703,15 +706,11 @@ function fetchInTime(url, type, data, options, isMultipartRequest) {
|
|
|
703
706
|
}
|
|
704
707
|
});
|
|
705
708
|
}
|
|
706
|
-
var post = function (url, data, options, isMultipartRequest) {
|
|
707
|
-
return fetchInTime(url, 'POST', data, options, isMultipartRequest);
|
|
708
|
-
};
|
|
709
|
+
var post = function (url, data, options, isMultipartRequest) { return fetchInTime(url, 'POST', data, options, isMultipartRequest); };
|
|
709
710
|
var put = function (url, data, options) {
|
|
710
711
|
return fetchInTime(url, 'PUT', data, options);
|
|
711
712
|
};
|
|
712
|
-
var get = function (url, options) {
|
|
713
|
-
return fetchInTime(url, 'GET', null, options);
|
|
714
|
-
};
|
|
713
|
+
var get = function (url, options) { return fetchInTime(url, 'GET', null, options); };
|
|
715
714
|
var trash = function (url, data, options) {
|
|
716
715
|
return fetchInTime(url, 'DELETE', data, options);
|
|
717
716
|
};
|
|
@@ -770,10 +769,10 @@ var SvgIcProgressing = function SvgIcProgressing(props) {
|
|
|
770
769
|
}))));
|
|
771
770
|
};
|
|
772
771
|
|
|
773
|
-
function
|
|
772
|
+
var EmptyState = function (_a) {
|
|
774
773
|
var children = _a.children, _b = _a.className, className = _b === void 0 ? '' : _b;
|
|
775
774
|
return (jsxRuntime.jsx("div", __assign({ className: "flex column empty-state w-100 h-100 ".concat(className) }, { children: children })));
|
|
776
|
-
}
|
|
775
|
+
};
|
|
777
776
|
function Image(_a) {
|
|
778
777
|
var children = _a.children;
|
|
779
778
|
return children;
|
|
@@ -782,17 +781,15 @@ function Title(_a) {
|
|
|
782
781
|
var children = _a.children;
|
|
783
782
|
return children;
|
|
784
783
|
}
|
|
785
|
-
function
|
|
784
|
+
var Subtitle = function (_a) {
|
|
786
785
|
var children = _a.children, className = _a.className;
|
|
787
|
-
return jsxRuntime.jsx("p", __assign({ className: "subtitle ".concat(className || '') }, { children: children }));
|
|
788
|
-
}
|
|
786
|
+
return (jsxRuntime.jsx("p", __assign({ className: "subtitle ".concat(className || '') }, { children: children })));
|
|
787
|
+
};
|
|
789
788
|
function Button$1(_a) {
|
|
790
789
|
var children = _a.children;
|
|
791
790
|
return children;
|
|
792
791
|
}
|
|
793
|
-
var Loading = function (props) {
|
|
794
|
-
return jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SvgIcProgressing, { className: "dc__block empty-state__loader" }), jsxRuntime.jsx("p", __assign({ className: "empty-state__loading-text" }, { children: props.text }))] });
|
|
795
|
-
};
|
|
792
|
+
var Loading = function (props) { return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SvgIcProgressing, { className: "dc__block empty-state__loader" }), jsxRuntime.jsx("p", __assign({ className: "empty-state__loading-text" }, { children: props.text }))] })); };
|
|
796
793
|
EmptyState.Image = Image;
|
|
797
794
|
EmptyState.Title = Title;
|
|
798
795
|
EmptyState.Subtitle = Subtitle;
|
|
@@ -2175,7 +2172,7 @@ eventManager.on(2
|
|
|
2175
2172
|
});
|
|
2176
2173
|
|
|
2177
2174
|
var ToastBody = /** @class */ (function (_super) {
|
|
2178
|
-
__extends
|
|
2175
|
+
__extends(ToastBody, _super);
|
|
2179
2176
|
function ToastBody() {
|
|
2180
2177
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2181
2178
|
}
|
|
@@ -2185,7 +2182,7 @@ var ToastBody = /** @class */ (function (_super) {
|
|
|
2185
2182
|
return ToastBody;
|
|
2186
2183
|
}(React.Component));
|
|
2187
2184
|
var ToastBody3 = /** @class */ (function (_super) {
|
|
2188
|
-
__extends
|
|
2185
|
+
__extends(ToastBody3, _super);
|
|
2189
2186
|
function ToastBody3() {
|
|
2190
2187
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2191
2188
|
}
|
|
@@ -2195,7 +2192,7 @@ var ToastBody3 = /** @class */ (function (_super) {
|
|
|
2195
2192
|
return ToastBody3;
|
|
2196
2193
|
}(React.Component));
|
|
2197
2194
|
var ToastBodyWithButton = /** @class */ (function (_super) {
|
|
2198
|
-
__extends
|
|
2195
|
+
__extends(ToastBodyWithButton, _super);
|
|
2199
2196
|
function ToastBodyWithButton() {
|
|
2200
2197
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2201
2198
|
}
|
|
@@ -2226,25 +2223,23 @@ var notFound = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAFACAYAAACSgS
|
|
|
2226
2223
|
|
|
2227
2224
|
var AppNotDeployed = "data:image/png;base64,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";
|
|
2228
2225
|
|
|
2229
|
-
function
|
|
2226
|
+
var GenericEmptyState = function (_a) {
|
|
2230
2227
|
var title = _a.title, image = _a.image, subTitle = _a.subTitle, isButtonAvailable = _a.isButtonAvailable, classname = _a.classname, styles = _a.styles, heightToDeduct = _a.heightToDeduct, imageType = _a.imageType, renderButton = _a.renderButton, imageClassName = _a.imageClassName, children = _a.children, SvgImage = _a.SvgImage, noImage = _a.noImage, _b = _a.layout, layout = _b === void 0 ? 'column' : _b, _c = _a.contentClassName, contentClassName = _c === void 0 ? '' : _c;
|
|
2231
2228
|
var isRowLayout = layout === 'row';
|
|
2232
|
-
return (jsxRuntime.jsxs("div", __assign({ className: "flex ".concat(isRowLayout ? 'dc__gap-32' : 'column dc__gap-20', " empty-state ").concat(classname
|
|
2233
|
-
}
|
|
2229
|
+
return (jsxRuntime.jsxs("div", __assign({ className: "flex ".concat(isRowLayout ? 'dc__gap-32' : 'column dc__gap-20', " empty-state ").concat(classname || ''), style: styles, "data-testid": "generic-empty-state" }, (heightToDeduct >= 0 && { style: __assign(__assign({}, styles), { height: "calc(100vh - ".concat(heightToDeduct, "px)") }) }), { children: [!SvgImage ? (!noImage && (jsxRuntime.jsx("img", { className: imageClassName || '', src: image || AppNotDeployed, width: imageType === exports.ImageType.Medium ? '200' : '250', height: imageType === exports.ImageType.Medium ? '160' : '200', alt: "empty-state" }))) : (jsxRuntime.jsx(SvgImage, {})), jsxRuntime.jsxs("div", __assign({ className: "flex column dc__gap-10 dc__mxw-300 ".concat(isRowLayout ? 'dc__align-start' : '', " ").concat(contentClassName) }, { children: [jsxRuntime.jsx("h4", __assign({ className: "title fw-6 cn-9 mt-0 mb-0" }, { children: title })), subTitle && jsxRuntime.jsx("p", __assign({ className: "subtitle ".concat(isRowLayout ? 'subtitle--text-start' : '') }, { children: subTitle })), isButtonAvailable && renderButton(), children] }))] })));
|
|
2230
|
+
};
|
|
2234
2231
|
|
|
2235
|
-
function
|
|
2232
|
+
var ErrorScreenNotFound = function () {
|
|
2236
2233
|
var push = reactRouterDom.useHistory().push;
|
|
2237
2234
|
var redirectToHome = function () {
|
|
2238
2235
|
push('/app/list');
|
|
2239
2236
|
};
|
|
2240
|
-
var renderGenerateButton = function () {
|
|
2241
|
-
return (jsxRuntime.jsx("button", __assign({ className: "flex cta h-32", onClick: redirectToHome, "data-testid": "empty-screen-take-me-home" }, { children: ERROR_EMPTY_SCREEN.TAKE_BACK_HOME })));
|
|
2242
|
-
};
|
|
2237
|
+
var renderGenerateButton = function () { return (jsxRuntime.jsx("button", __assign({ className: "flex cta h-32", onClick: redirectToHome, "data-testid": "empty-screen-take-me-home" }, { children: ERROR_EMPTY_SCREEN.TAKE_BACK_HOME }))); };
|
|
2243
2238
|
return (jsxRuntime.jsx(GenericEmptyState, { image: notFound, title: ERROR_EMPTY_SCREEN.PAGE_NOT_FOUND, subTitle: ERROR_EMPTY_SCREEN.PAGE_NOT_EXIST, isButtonAvailable: true, renderButton: renderGenerateButton }));
|
|
2244
|
-
}
|
|
2239
|
+
};
|
|
2245
2240
|
|
|
2246
2241
|
var ErrorScreenManager = /** @class */ (function (_super) {
|
|
2247
|
-
__extends
|
|
2242
|
+
__extends(ErrorScreenManager, _super);
|
|
2248
2243
|
function ErrorScreenManager() {
|
|
2249
2244
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2250
2245
|
}
|
|
@@ -2255,7 +2250,7 @@ var ErrorScreenManager = /** @class */ (function (_super) {
|
|
|
2255
2250
|
case 401:
|
|
2256
2251
|
return 'Unauthorized';
|
|
2257
2252
|
case 403:
|
|
2258
|
-
return
|
|
2253
|
+
return jsxRuntime.jsx(ErrorScreenNotAuthorized, { subtitle: this.props.subtitle });
|
|
2259
2254
|
case 404:
|
|
2260
2255
|
return jsxRuntime.jsx(ErrorScreenNotFound, {});
|
|
2261
2256
|
case 500:
|
|
@@ -2275,7 +2270,7 @@ var ErrorScreenManager = /** @class */ (function (_super) {
|
|
|
2275
2270
|
return ErrorScreenManager;
|
|
2276
2271
|
}(React.Component));
|
|
2277
2272
|
var ErrorScreenNotAuthorized = /** @class */ (function (_super) {
|
|
2278
|
-
__extends
|
|
2273
|
+
__extends(ErrorScreenNotAuthorized, _super);
|
|
2279
2274
|
function ErrorScreenNotAuthorized() {
|
|
2280
2275
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2281
2276
|
}
|
|
@@ -9757,1612 +9752,112 @@ var moment$1 = {
|
|
|
9757
9752
|
|
|
9758
9753
|
proto$2.isValid = isValid$1;
|
|
9759
9754
|
proto$2.abs = abs;
|
|
9760
|
-
proto$2.add = add$1;
|
|
9761
|
-
proto$2.subtract = subtract$1;
|
|
9762
|
-
proto$2.as = as;
|
|
9763
|
-
proto$2.asMilliseconds = asMilliseconds;
|
|
9764
|
-
proto$2.asSeconds = asSeconds;
|
|
9765
|
-
proto$2.asMinutes = asMinutes;
|
|
9766
|
-
proto$2.asHours = asHours;
|
|
9767
|
-
proto$2.asDays = asDays;
|
|
9768
|
-
proto$2.asWeeks = asWeeks;
|
|
9769
|
-
proto$2.asMonths = asMonths;
|
|
9770
|
-
proto$2.asQuarters = asQuarters;
|
|
9771
|
-
proto$2.asYears = asYears;
|
|
9772
|
-
proto$2.valueOf = valueOf$1;
|
|
9773
|
-
proto$2._bubble = bubble;
|
|
9774
|
-
proto$2.clone = clone$1;
|
|
9775
|
-
proto$2.get = get$2;
|
|
9776
|
-
proto$2.milliseconds = milliseconds;
|
|
9777
|
-
proto$2.seconds = seconds;
|
|
9778
|
-
proto$2.minutes = minutes;
|
|
9779
|
-
proto$2.hours = hours;
|
|
9780
|
-
proto$2.days = days;
|
|
9781
|
-
proto$2.weeks = weeks;
|
|
9782
|
-
proto$2.months = months;
|
|
9783
|
-
proto$2.years = years;
|
|
9784
|
-
proto$2.humanize = humanize;
|
|
9785
|
-
proto$2.toISOString = toISOString$1;
|
|
9786
|
-
proto$2.toString = toISOString$1;
|
|
9787
|
-
proto$2.toJSON = toISOString$1;
|
|
9788
|
-
proto$2.locale = locale;
|
|
9789
|
-
proto$2.localeData = localeData;
|
|
9790
|
-
|
|
9791
|
-
proto$2.toIsoString = deprecate(
|
|
9792
|
-
'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
|
|
9793
|
-
toISOString$1
|
|
9794
|
-
);
|
|
9795
|
-
proto$2.lang = lang;
|
|
9796
|
-
|
|
9797
|
-
// FORMATTING
|
|
9798
|
-
|
|
9799
|
-
addFormatToken('X', 0, 0, 'unix');
|
|
9800
|
-
addFormatToken('x', 0, 0, 'valueOf');
|
|
9801
|
-
|
|
9802
|
-
// PARSING
|
|
9803
|
-
|
|
9804
|
-
addRegexToken('x', matchSigned);
|
|
9805
|
-
addRegexToken('X', matchTimestamp);
|
|
9806
|
-
addParseToken('X', function (input, array, config) {
|
|
9807
|
-
config._d = new Date(parseFloat(input) * 1000);
|
|
9808
|
-
});
|
|
9809
|
-
addParseToken('x', function (input, array, config) {
|
|
9810
|
-
config._d = new Date(toInt(input));
|
|
9811
|
-
});
|
|
9812
|
-
|
|
9813
|
-
//! moment.js
|
|
9814
|
-
|
|
9815
|
-
hooks.version = '2.29.4';
|
|
9816
|
-
|
|
9817
|
-
setHookCallback(createLocal);
|
|
9818
|
-
|
|
9819
|
-
hooks.fn = proto;
|
|
9820
|
-
hooks.min = min;
|
|
9821
|
-
hooks.max = max;
|
|
9822
|
-
hooks.now = now;
|
|
9823
|
-
hooks.utc = createUTC;
|
|
9824
|
-
hooks.unix = createUnix;
|
|
9825
|
-
hooks.months = listMonths;
|
|
9826
|
-
hooks.isDate = isDate;
|
|
9827
|
-
hooks.locale = getSetGlobalLocale;
|
|
9828
|
-
hooks.invalid = createInvalid;
|
|
9829
|
-
hooks.duration = createDuration;
|
|
9830
|
-
hooks.isMoment = isMoment;
|
|
9831
|
-
hooks.weekdays = listWeekdays;
|
|
9832
|
-
hooks.parseZone = createInZone;
|
|
9833
|
-
hooks.localeData = getLocale;
|
|
9834
|
-
hooks.isDuration = isDuration;
|
|
9835
|
-
hooks.monthsShort = listMonthsShort;
|
|
9836
|
-
hooks.weekdaysMin = listWeekdaysMin;
|
|
9837
|
-
hooks.defineLocale = defineLocale;
|
|
9838
|
-
hooks.updateLocale = updateLocale;
|
|
9839
|
-
hooks.locales = listLocales;
|
|
9840
|
-
hooks.weekdaysShort = listWeekdaysShort;
|
|
9841
|
-
hooks.normalizeUnits = normalizeUnits;
|
|
9842
|
-
hooks.relativeTimeRounding = getSetRelativeTimeRounding;
|
|
9843
|
-
hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
|
|
9844
|
-
hooks.calendarFormat = getCalendarFormat;
|
|
9845
|
-
hooks.prototype = proto;
|
|
9846
|
-
|
|
9847
|
-
// currently HTML5 input type only supports 24-hour formats
|
|
9848
|
-
hooks.HTML5_FMT = {
|
|
9849
|
-
DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
|
|
9850
|
-
DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
|
|
9851
|
-
DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
|
|
9852
|
-
DATE: 'YYYY-MM-DD', // <input type="date" />
|
|
9853
|
-
TIME: 'HH:mm', // <input type="time" />
|
|
9854
|
-
TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
|
|
9855
|
-
TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
|
|
9856
|
-
WEEK: 'GGGG-[W]WW', // <input type="week" />
|
|
9857
|
-
MONTH: 'YYYY-MM', // <input type="month" />
|
|
9858
|
-
};
|
|
9859
|
-
|
|
9860
|
-
return hooks;
|
|
9861
|
-
|
|
9862
|
-
})));
|
|
9863
|
-
} (moment$1));
|
|
9864
|
-
|
|
9865
|
-
var moment = momentExports;
|
|
9866
|
-
|
|
9867
|
-
const {
|
|
9868
|
-
hasOwnProperty: hasOwnProp
|
|
9869
|
-
} = Object.prototype;
|
|
9870
|
-
/**
|
|
9871
|
-
* @typedef {null|boolean|number|string|PlainObject|GenericArray} JSONObject
|
|
9872
|
-
*/
|
|
9873
|
-
|
|
9874
|
-
/**
|
|
9875
|
-
* @typedef {any} AnyItem
|
|
9876
|
-
*/
|
|
9877
|
-
|
|
9878
|
-
/**
|
|
9879
|
-
* @typedef {any} AnyResult
|
|
9880
|
-
*/
|
|
9881
|
-
|
|
9882
|
-
/**
|
|
9883
|
-
* Copies array and then pushes item into it.
|
|
9884
|
-
* @param {GenericArray} arr Array to copy and into which to push
|
|
9885
|
-
* @param {AnyItem} item Array item to add (to end)
|
|
9886
|
-
* @returns {GenericArray} Copy of the original array
|
|
9887
|
-
*/
|
|
9888
|
-
|
|
9889
|
-
function push(arr, item) {
|
|
9890
|
-
arr = arr.slice();
|
|
9891
|
-
arr.push(item);
|
|
9892
|
-
return arr;
|
|
9893
|
-
}
|
|
9894
|
-
/**
|
|
9895
|
-
* Copies array and then unshifts item into it.
|
|
9896
|
-
* @param {AnyItem} item Array item to add (to beginning)
|
|
9897
|
-
* @param {GenericArray} arr Array to copy and into which to unshift
|
|
9898
|
-
* @returns {GenericArray} Copy of the original array
|
|
9899
|
-
*/
|
|
9900
|
-
|
|
9901
|
-
|
|
9902
|
-
function unshift(item, arr) {
|
|
9903
|
-
arr = arr.slice();
|
|
9904
|
-
arr.unshift(item);
|
|
9905
|
-
return arr;
|
|
9906
|
-
}
|
|
9907
|
-
/**
|
|
9908
|
-
* Caught when JSONPath is used without `new` but rethrown if with `new`
|
|
9909
|
-
* @extends Error
|
|
9910
|
-
*/
|
|
9911
|
-
|
|
9912
|
-
|
|
9913
|
-
class NewError extends Error {
|
|
9914
|
-
/**
|
|
9915
|
-
* @param {AnyResult} value The evaluated scalar value
|
|
9916
|
-
*/
|
|
9917
|
-
constructor(value) {
|
|
9918
|
-
super('JSONPath should not be called with "new" (it prevents return ' + 'of (unwrapped) scalar values)');
|
|
9919
|
-
this.avoidNew = true;
|
|
9920
|
-
this.value = value;
|
|
9921
|
-
this.name = 'NewError';
|
|
9922
|
-
}
|
|
9923
|
-
|
|
9924
|
-
}
|
|
9925
|
-
/**
|
|
9926
|
-
* @typedef {PlainObject} ReturnObject
|
|
9927
|
-
* @property {string} path
|
|
9928
|
-
* @property {JSONObject} value
|
|
9929
|
-
* @property {PlainObject|GenericArray} parent
|
|
9930
|
-
* @property {string} parentProperty
|
|
9931
|
-
*/
|
|
9932
|
-
|
|
9933
|
-
/**
|
|
9934
|
-
* @callback JSONPathCallback
|
|
9935
|
-
* @param {string|PlainObject} preferredOutput
|
|
9936
|
-
* @param {"value"|"property"} type
|
|
9937
|
-
* @param {ReturnObject} fullRetObj
|
|
9938
|
-
* @returns {void}
|
|
9939
|
-
*/
|
|
9940
|
-
|
|
9941
|
-
/**
|
|
9942
|
-
* @callback OtherTypeCallback
|
|
9943
|
-
* @param {JSONObject} val
|
|
9944
|
-
* @param {string} path
|
|
9945
|
-
* @param {PlainObject|GenericArray} parent
|
|
9946
|
-
* @param {string} parentPropName
|
|
9947
|
-
* @returns {boolean}
|
|
9948
|
-
*/
|
|
9949
|
-
|
|
9950
|
-
/* eslint-disable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */
|
|
9951
|
-
|
|
9952
|
-
/**
|
|
9953
|
-
* @typedef {PlainObject} JSONPathOptions
|
|
9954
|
-
* @property {JSON} json
|
|
9955
|
-
* @property {string|string[]} path
|
|
9956
|
-
* @property {"value"|"path"|"pointer"|"parent"|"parentProperty"|"all"} [resultType="value"]
|
|
9957
|
-
* @property {boolean} [flatten=false]
|
|
9958
|
-
* @property {boolean} [wrap=true]
|
|
9959
|
-
* @property {PlainObject} [sandbox={}]
|
|
9960
|
-
* @property {boolean} [preventEval=false]
|
|
9961
|
-
* @property {PlainObject|GenericArray|null} [parent=null]
|
|
9962
|
-
* @property {string|null} [parentProperty=null]
|
|
9963
|
-
* @property {JSONPathCallback} [callback]
|
|
9964
|
-
* @property {OtherTypeCallback} [otherTypeCallback] Defaults to
|
|
9965
|
-
* function which throws on encountering `@other`
|
|
9966
|
-
* @property {boolean} [autostart=true]
|
|
9967
|
-
*/
|
|
9968
|
-
|
|
9969
|
-
/* eslint-enable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */
|
|
9970
|
-
|
|
9971
|
-
/**
|
|
9972
|
-
* @param {string|JSONPathOptions} opts If a string, will be treated as `expr`
|
|
9973
|
-
* @param {string} [expr] JSON path to evaluate
|
|
9974
|
-
* @param {JSON} [obj] JSON object to evaluate against
|
|
9975
|
-
* @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload
|
|
9976
|
-
* per `resultType`, 2) `"value"|"property"`, 3) Full returned object with
|
|
9977
|
-
* all payloads
|
|
9978
|
-
* @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end
|
|
9979
|
-
* of one's query, this will be invoked with the value of the item, its
|
|
9980
|
-
* path, its parent, and its parent's property name, and it should return
|
|
9981
|
-
* a boolean indicating whether the supplied value belongs to the "other"
|
|
9982
|
-
* type or not (or it may handle transformations and return `false`).
|
|
9983
|
-
* @returns {JSONPath}
|
|
9984
|
-
* @class
|
|
9985
|
-
*/
|
|
9986
|
-
|
|
9987
|
-
|
|
9988
|
-
function JSONPath(opts, expr, obj, callback, otherTypeCallback) {
|
|
9989
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
9990
|
-
if (!(this instanceof JSONPath)) {
|
|
9991
|
-
try {
|
|
9992
|
-
return new JSONPath(opts, expr, obj, callback, otherTypeCallback);
|
|
9993
|
-
} catch (e) {
|
|
9994
|
-
if (!e.avoidNew) {
|
|
9995
|
-
throw e;
|
|
9996
|
-
}
|
|
9997
|
-
|
|
9998
|
-
return e.value;
|
|
9999
|
-
}
|
|
10000
|
-
}
|
|
10001
|
-
|
|
10002
|
-
if (typeof opts === 'string') {
|
|
10003
|
-
otherTypeCallback = callback;
|
|
10004
|
-
callback = obj;
|
|
10005
|
-
obj = expr;
|
|
10006
|
-
expr = opts;
|
|
10007
|
-
opts = null;
|
|
10008
|
-
}
|
|
10009
|
-
|
|
10010
|
-
const optObj = opts && typeof opts === 'object';
|
|
10011
|
-
opts = opts || {};
|
|
10012
|
-
this.json = opts.json || obj;
|
|
10013
|
-
this.path = opts.path || expr;
|
|
10014
|
-
this.resultType = opts.resultType || 'value';
|
|
10015
|
-
this.flatten = opts.flatten || false;
|
|
10016
|
-
this.wrap = hasOwnProp.call(opts, 'wrap') ? opts.wrap : true;
|
|
10017
|
-
this.sandbox = opts.sandbox || {};
|
|
10018
|
-
this.preventEval = opts.preventEval || false;
|
|
10019
|
-
this.parent = opts.parent || null;
|
|
10020
|
-
this.parentProperty = opts.parentProperty || null;
|
|
10021
|
-
this.callback = opts.callback || callback || null;
|
|
10022
|
-
|
|
10023
|
-
this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {
|
|
10024
|
-
throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');
|
|
10025
|
-
};
|
|
10026
|
-
|
|
10027
|
-
if (opts.autostart !== false) {
|
|
10028
|
-
const args = {
|
|
10029
|
-
path: optObj ? opts.path : expr
|
|
10030
|
-
};
|
|
10031
|
-
|
|
10032
|
-
if (!optObj) {
|
|
10033
|
-
args.json = obj;
|
|
10034
|
-
} else if ('json' in opts) {
|
|
10035
|
-
args.json = opts.json;
|
|
10036
|
-
}
|
|
10037
|
-
|
|
10038
|
-
const ret = this.evaluate(args);
|
|
10039
|
-
|
|
10040
|
-
if (!ret || typeof ret !== 'object') {
|
|
10041
|
-
throw new NewError(ret);
|
|
10042
|
-
}
|
|
10043
|
-
|
|
10044
|
-
return ret;
|
|
10045
|
-
}
|
|
10046
|
-
} // PUBLIC METHODS
|
|
10047
|
-
|
|
10048
|
-
|
|
10049
|
-
JSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {
|
|
10050
|
-
let currParent = this.parent,
|
|
10051
|
-
currParentProperty = this.parentProperty;
|
|
10052
|
-
let {
|
|
10053
|
-
flatten,
|
|
10054
|
-
wrap
|
|
10055
|
-
} = this;
|
|
10056
|
-
this.currResultType = this.resultType;
|
|
10057
|
-
this.currPreventEval = this.preventEval;
|
|
10058
|
-
this.currSandbox = this.sandbox;
|
|
10059
|
-
callback = callback || this.callback;
|
|
10060
|
-
this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;
|
|
10061
|
-
json = json || this.json;
|
|
10062
|
-
expr = expr || this.path;
|
|
10063
|
-
|
|
10064
|
-
if (expr && typeof expr === 'object' && !Array.isArray(expr)) {
|
|
10065
|
-
if (!expr.path && expr.path !== '') {
|
|
10066
|
-
throw new TypeError('You must supply a "path" property when providing an object ' + 'argument to JSONPath.evaluate().');
|
|
10067
|
-
}
|
|
10068
|
-
|
|
10069
|
-
if (!hasOwnProp.call(expr, 'json')) {
|
|
10070
|
-
throw new TypeError('You must supply a "json" property when providing an object ' + 'argument to JSONPath.evaluate().');
|
|
10071
|
-
}
|
|
10072
|
-
|
|
10073
|
-
({
|
|
10074
|
-
json
|
|
10075
|
-
} = expr);
|
|
10076
|
-
flatten = hasOwnProp.call(expr, 'flatten') ? expr.flatten : flatten;
|
|
10077
|
-
this.currResultType = hasOwnProp.call(expr, 'resultType') ? expr.resultType : this.currResultType;
|
|
10078
|
-
this.currSandbox = hasOwnProp.call(expr, 'sandbox') ? expr.sandbox : this.currSandbox;
|
|
10079
|
-
wrap = hasOwnProp.call(expr, 'wrap') ? expr.wrap : wrap;
|
|
10080
|
-
this.currPreventEval = hasOwnProp.call(expr, 'preventEval') ? expr.preventEval : this.currPreventEval;
|
|
10081
|
-
callback = hasOwnProp.call(expr, 'callback') ? expr.callback : callback;
|
|
10082
|
-
this.currOtherTypeCallback = hasOwnProp.call(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;
|
|
10083
|
-
currParent = hasOwnProp.call(expr, 'parent') ? expr.parent : currParent;
|
|
10084
|
-
currParentProperty = hasOwnProp.call(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;
|
|
10085
|
-
expr = expr.path;
|
|
10086
|
-
}
|
|
10087
|
-
|
|
10088
|
-
currParent = currParent || null;
|
|
10089
|
-
currParentProperty = currParentProperty || null;
|
|
10090
|
-
|
|
10091
|
-
if (Array.isArray(expr)) {
|
|
10092
|
-
expr = JSONPath.toPathString(expr);
|
|
10093
|
-
}
|
|
10094
|
-
|
|
10095
|
-
if (!expr && expr !== '' || !json) {
|
|
10096
|
-
return undefined;
|
|
10097
|
-
}
|
|
10098
|
-
|
|
10099
|
-
const exprList = JSONPath.toPathArray(expr);
|
|
10100
|
-
|
|
10101
|
-
if (exprList[0] === '$' && exprList.length > 1) {
|
|
10102
|
-
exprList.shift();
|
|
10103
|
-
}
|
|
10104
|
-
|
|
10105
|
-
this._hasParentSelector = null;
|
|
10106
|
-
|
|
10107
|
-
const result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {
|
|
10108
|
-
return ea && !ea.isParentSelector;
|
|
10109
|
-
});
|
|
10110
|
-
|
|
10111
|
-
if (!result.length) {
|
|
10112
|
-
return wrap ? [] : undefined;
|
|
10113
|
-
}
|
|
10114
|
-
|
|
10115
|
-
if (!wrap && result.length === 1 && !result[0].hasArrExpr) {
|
|
10116
|
-
return this._getPreferredOutput(result[0]);
|
|
10117
|
-
}
|
|
10118
|
-
|
|
10119
|
-
return result.reduce((rslt, ea) => {
|
|
10120
|
-
const valOrPath = this._getPreferredOutput(ea);
|
|
10121
|
-
|
|
10122
|
-
if (flatten && Array.isArray(valOrPath)) {
|
|
10123
|
-
rslt = rslt.concat(valOrPath);
|
|
10124
|
-
} else {
|
|
10125
|
-
rslt.push(valOrPath);
|
|
10126
|
-
}
|
|
10127
|
-
|
|
10128
|
-
return rslt;
|
|
10129
|
-
}, []);
|
|
10130
|
-
}; // PRIVATE METHODS
|
|
10131
|
-
|
|
10132
|
-
|
|
10133
|
-
JSONPath.prototype._getPreferredOutput = function (ea) {
|
|
10134
|
-
const resultType = this.currResultType;
|
|
10135
|
-
|
|
10136
|
-
switch (resultType) {
|
|
10137
|
-
case 'all':
|
|
10138
|
-
{
|
|
10139
|
-
const path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);
|
|
10140
|
-
ea.pointer = JSONPath.toPointer(path);
|
|
10141
|
-
ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);
|
|
10142
|
-
return ea;
|
|
10143
|
-
}
|
|
10144
|
-
|
|
10145
|
-
case 'value':
|
|
10146
|
-
case 'parent':
|
|
10147
|
-
case 'parentProperty':
|
|
10148
|
-
return ea[resultType];
|
|
10149
|
-
|
|
10150
|
-
case 'path':
|
|
10151
|
-
return JSONPath.toPathString(ea[resultType]);
|
|
10152
|
-
|
|
10153
|
-
case 'pointer':
|
|
10154
|
-
return JSONPath.toPointer(ea.path);
|
|
10155
|
-
|
|
10156
|
-
default:
|
|
10157
|
-
throw new TypeError('Unknown result type');
|
|
10158
|
-
}
|
|
10159
|
-
};
|
|
10160
|
-
|
|
10161
|
-
JSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {
|
|
10162
|
-
if (callback) {
|
|
10163
|
-
const preferredOutput = this._getPreferredOutput(fullRetObj);
|
|
10164
|
-
|
|
10165
|
-
fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path); // eslint-disable-next-line n/callback-return
|
|
10166
|
-
|
|
10167
|
-
callback(preferredOutput, type, fullRetObj);
|
|
10168
|
-
}
|
|
10169
|
-
};
|
|
10170
|
-
/**
|
|
10171
|
-
*
|
|
10172
|
-
* @param {string} expr
|
|
10173
|
-
* @param {JSONObject} val
|
|
10174
|
-
* @param {string} path
|
|
10175
|
-
* @param {PlainObject|GenericArray} parent
|
|
10176
|
-
* @param {string} parentPropName
|
|
10177
|
-
* @param {JSONPathCallback} callback
|
|
10178
|
-
* @param {boolean} hasArrExpr
|
|
10179
|
-
* @param {boolean} literalPriority
|
|
10180
|
-
* @returns {ReturnObject|ReturnObject[]}
|
|
10181
|
-
*/
|
|
10182
|
-
|
|
10183
|
-
|
|
10184
|
-
JSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {
|
|
10185
|
-
// No expr to follow? return path and value as the result of
|
|
10186
|
-
// this trace branch
|
|
10187
|
-
let retObj;
|
|
10188
|
-
|
|
10189
|
-
if (!expr.length) {
|
|
10190
|
-
retObj = {
|
|
10191
|
-
path,
|
|
10192
|
-
value: val,
|
|
10193
|
-
parent,
|
|
10194
|
-
parentProperty: parentPropName,
|
|
10195
|
-
hasArrExpr
|
|
10196
|
-
};
|
|
10197
|
-
|
|
10198
|
-
this._handleCallback(retObj, callback, 'value');
|
|
10199
|
-
|
|
10200
|
-
return retObj;
|
|
10201
|
-
}
|
|
10202
|
-
|
|
10203
|
-
const loc = expr[0],
|
|
10204
|
-
x = expr.slice(1); // We need to gather the return value of recursive trace calls in order to
|
|
10205
|
-
// do the parent sel computation.
|
|
10206
|
-
|
|
10207
|
-
const ret = [];
|
|
10208
|
-
/**
|
|
10209
|
-
*
|
|
10210
|
-
* @param {ReturnObject|ReturnObject[]} elems
|
|
10211
|
-
* @returns {void}
|
|
10212
|
-
*/
|
|
10213
|
-
|
|
10214
|
-
function addRet(elems) {
|
|
10215
|
-
if (Array.isArray(elems)) {
|
|
10216
|
-
// This was causing excessive stack size in Node (with or
|
|
10217
|
-
// without Babel) against our performance test:
|
|
10218
|
-
// `ret.push(...elems);`
|
|
10219
|
-
elems.forEach(t => {
|
|
10220
|
-
ret.push(t);
|
|
10221
|
-
});
|
|
10222
|
-
} else {
|
|
10223
|
-
ret.push(elems);
|
|
10224
|
-
}
|
|
10225
|
-
}
|
|
10226
|
-
|
|
10227
|
-
if ((typeof loc !== 'string' || literalPriority) && val && hasOwnProp.call(val, loc)) {
|
|
10228
|
-
// simple case--directly follow property
|
|
10229
|
-
addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`
|
|
10230
|
-
} else if (loc === '*') {
|
|
10231
|
-
// all child properties
|
|
10232
|
-
this._walk(val, m => {
|
|
10233
|
-
addRet(this._trace(x, val[m], push(path, m), val, m, callback, true, true));
|
|
10234
|
-
});
|
|
10235
|
-
} else if (loc === '..') {
|
|
10236
|
-
// all descendent parent properties
|
|
10237
|
-
// Check remaining expression with val's immediate children
|
|
10238
|
-
addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));
|
|
10239
|
-
|
|
10240
|
-
this._walk(val, m => {
|
|
10241
|
-
// We don't join m and x here because we only want parents,
|
|
10242
|
-
// not scalar values
|
|
10243
|
-
if (typeof val[m] === 'object') {
|
|
10244
|
-
// Keep going with recursive descent on val's
|
|
10245
|
-
// object children
|
|
10246
|
-
addRet(this._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));
|
|
10247
|
-
}
|
|
10248
|
-
}); // The parent sel computation is handled in the frame above using the
|
|
10249
|
-
// ancestor object of val
|
|
10250
|
-
|
|
10251
|
-
} else if (loc === '^') {
|
|
10252
|
-
// This is not a final endpoint, so we do not invoke the callback here
|
|
10253
|
-
this._hasParentSelector = true;
|
|
10254
|
-
return {
|
|
10255
|
-
path: path.slice(0, -1),
|
|
10256
|
-
expr: x,
|
|
10257
|
-
isParentSelector: true
|
|
10258
|
-
};
|
|
10259
|
-
} else if (loc === '~') {
|
|
10260
|
-
// property name
|
|
10261
|
-
retObj = {
|
|
10262
|
-
path: push(path, loc),
|
|
10263
|
-
value: parentPropName,
|
|
10264
|
-
parent,
|
|
10265
|
-
parentProperty: null
|
|
10266
|
-
};
|
|
10267
|
-
|
|
10268
|
-
this._handleCallback(retObj, callback, 'property');
|
|
10269
|
-
|
|
10270
|
-
return retObj;
|
|
10271
|
-
} else if (loc === '$') {
|
|
10272
|
-
// root only
|
|
10273
|
-
addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));
|
|
10274
|
-
} else if (/^(-?\d*):(-?\d*):?(\d*)$/u.test(loc)) {
|
|
10275
|
-
// [start:end:step] Python slice syntax
|
|
10276
|
-
addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));
|
|
10277
|
-
} else if (loc.indexOf('?(') === 0) {
|
|
10278
|
-
// [?(expr)] (filtering)
|
|
10279
|
-
if (this.currPreventEval) {
|
|
10280
|
-
throw new Error('Eval [?(expr)] prevented in JSONPath expression.');
|
|
10281
|
-
}
|
|
10282
|
-
|
|
10283
|
-
const safeLoc = loc.replace(/^\?\((.*?)\)$/u, '$1');
|
|
10284
|
-
|
|
10285
|
-
this._walk(val, m => {
|
|
10286
|
-
if (this._eval(safeLoc, val[m], m, path, parent, parentPropName)) {
|
|
10287
|
-
addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));
|
|
10288
|
-
}
|
|
10289
|
-
});
|
|
10290
|
-
} else if (loc[0] === '(') {
|
|
10291
|
-
// [(expr)] (dynamic property/index)
|
|
10292
|
-
if (this.currPreventEval) {
|
|
10293
|
-
throw new Error('Eval [(expr)] prevented in JSONPath expression.');
|
|
10294
|
-
} // As this will resolve to a property name (but we don't know it
|
|
10295
|
-
// yet), property and parent information is relative to the
|
|
10296
|
-
// parent of the property to which this expression will resolve
|
|
10297
|
-
|
|
10298
|
-
|
|
10299
|
-
addRet(this._trace(unshift(this._eval(loc, val, path[path.length - 1], path.slice(0, -1), parent, parentPropName), x), val, path, parent, parentPropName, callback, hasArrExpr));
|
|
10300
|
-
} else if (loc[0] === '@') {
|
|
10301
|
-
// value type: @boolean(), etc.
|
|
10302
|
-
let addType = false;
|
|
10303
|
-
const valueType = loc.slice(1, -2);
|
|
10304
|
-
|
|
10305
|
-
switch (valueType) {
|
|
10306
|
-
case 'scalar':
|
|
10307
|
-
if (!val || !['object', 'function'].includes(typeof val)) {
|
|
10308
|
-
addType = true;
|
|
10309
|
-
}
|
|
10310
|
-
|
|
10311
|
-
break;
|
|
10312
|
-
|
|
10313
|
-
case 'boolean':
|
|
10314
|
-
case 'string':
|
|
10315
|
-
case 'undefined':
|
|
10316
|
-
case 'function':
|
|
10317
|
-
// eslint-disable-next-line valid-typeof
|
|
10318
|
-
if (typeof val === valueType) {
|
|
10319
|
-
addType = true;
|
|
10320
|
-
}
|
|
10321
|
-
|
|
10322
|
-
break;
|
|
10323
|
-
|
|
10324
|
-
case 'integer':
|
|
10325
|
-
if (Number.isFinite(val) && !(val % 1)) {
|
|
10326
|
-
addType = true;
|
|
10327
|
-
}
|
|
10328
|
-
|
|
10329
|
-
break;
|
|
10330
|
-
|
|
10331
|
-
case 'number':
|
|
10332
|
-
if (Number.isFinite(val)) {
|
|
10333
|
-
addType = true;
|
|
10334
|
-
}
|
|
10335
|
-
|
|
10336
|
-
break;
|
|
10337
|
-
|
|
10338
|
-
case 'nonFinite':
|
|
10339
|
-
if (typeof val === 'number' && !Number.isFinite(val)) {
|
|
10340
|
-
addType = true;
|
|
10341
|
-
}
|
|
10342
|
-
|
|
10343
|
-
break;
|
|
10344
|
-
|
|
10345
|
-
case 'object':
|
|
10346
|
-
// eslint-disable-next-line valid-typeof
|
|
10347
|
-
if (val && typeof val === valueType) {
|
|
10348
|
-
addType = true;
|
|
10349
|
-
}
|
|
10350
|
-
|
|
10351
|
-
break;
|
|
10352
|
-
|
|
10353
|
-
case 'array':
|
|
10354
|
-
if (Array.isArray(val)) {
|
|
10355
|
-
addType = true;
|
|
10356
|
-
}
|
|
10357
|
-
|
|
10358
|
-
break;
|
|
10359
|
-
|
|
10360
|
-
case 'other':
|
|
10361
|
-
addType = this.currOtherTypeCallback(val, path, parent, parentPropName);
|
|
10362
|
-
break;
|
|
10363
|
-
|
|
10364
|
-
case 'null':
|
|
10365
|
-
if (val === null) {
|
|
10366
|
-
addType = true;
|
|
10367
|
-
}
|
|
10368
|
-
|
|
10369
|
-
break;
|
|
10370
|
-
|
|
10371
|
-
/* c8 ignore next 2 */
|
|
10372
|
-
|
|
10373
|
-
default:
|
|
10374
|
-
throw new TypeError('Unknown value type ' + valueType);
|
|
10375
|
-
}
|
|
10376
|
-
|
|
10377
|
-
if (addType) {
|
|
10378
|
-
retObj = {
|
|
10379
|
-
path,
|
|
10380
|
-
value: val,
|
|
10381
|
-
parent,
|
|
10382
|
-
parentProperty: parentPropName
|
|
10383
|
-
};
|
|
10384
|
-
|
|
10385
|
-
this._handleCallback(retObj, callback, 'value');
|
|
10386
|
-
|
|
10387
|
-
return retObj;
|
|
10388
|
-
} // `-escaped property
|
|
10389
|
-
|
|
10390
|
-
} else if (loc[0] === '`' && val && hasOwnProp.call(val, loc.slice(1))) {
|
|
10391
|
-
const locProp = loc.slice(1);
|
|
10392
|
-
addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));
|
|
10393
|
-
} else if (loc.includes(',')) {
|
|
10394
|
-
// [name1,name2,...]
|
|
10395
|
-
const parts = loc.split(',');
|
|
10396
|
-
|
|
10397
|
-
for (const part of parts) {
|
|
10398
|
-
addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));
|
|
10399
|
-
} // simple case--directly follow property
|
|
10400
|
-
|
|
10401
|
-
} else if (!literalPriority && val && hasOwnProp.call(val, loc)) {
|
|
10402
|
-
addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));
|
|
10403
|
-
} // We check the resulting values for parent selections. For parent
|
|
10404
|
-
// selections we discard the value object and continue the trace with the
|
|
10405
|
-
// current val object
|
|
10406
|
-
|
|
10407
|
-
|
|
10408
|
-
if (this._hasParentSelector) {
|
|
10409
|
-
for (let t = 0; t < ret.length; t++) {
|
|
10410
|
-
const rett = ret[t];
|
|
10411
|
-
|
|
10412
|
-
if (rett && rett.isParentSelector) {
|
|
10413
|
-
const tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);
|
|
10414
|
-
|
|
10415
|
-
if (Array.isArray(tmp)) {
|
|
10416
|
-
ret[t] = tmp[0];
|
|
10417
|
-
const tl = tmp.length;
|
|
10418
|
-
|
|
10419
|
-
for (let tt = 1; tt < tl; tt++) {
|
|
10420
|
-
t++;
|
|
10421
|
-
ret.splice(t, 0, tmp[tt]);
|
|
10422
|
-
}
|
|
10423
|
-
} else {
|
|
10424
|
-
ret[t] = tmp;
|
|
10425
|
-
}
|
|
10426
|
-
}
|
|
10427
|
-
}
|
|
10428
|
-
}
|
|
10429
|
-
|
|
10430
|
-
return ret;
|
|
10431
|
-
};
|
|
10432
|
-
|
|
10433
|
-
JSONPath.prototype._walk = function (val, f) {
|
|
10434
|
-
if (Array.isArray(val)) {
|
|
10435
|
-
const n = val.length;
|
|
10436
|
-
|
|
10437
|
-
for (let i = 0; i < n; i++) {
|
|
10438
|
-
f(i);
|
|
10439
|
-
}
|
|
10440
|
-
} else if (val && typeof val === 'object') {
|
|
10441
|
-
Object.keys(val).forEach(m => {
|
|
10442
|
-
f(m);
|
|
10443
|
-
});
|
|
10444
|
-
}
|
|
10445
|
-
};
|
|
10446
|
-
|
|
10447
|
-
JSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {
|
|
10448
|
-
if (!Array.isArray(val)) {
|
|
10449
|
-
return undefined;
|
|
10450
|
-
}
|
|
10451
|
-
|
|
10452
|
-
const len = val.length,
|
|
10453
|
-
parts = loc.split(':'),
|
|
10454
|
-
step = parts[2] && Number.parseInt(parts[2]) || 1;
|
|
10455
|
-
let start = parts[0] && Number.parseInt(parts[0]) || 0,
|
|
10456
|
-
end = parts[1] && Number.parseInt(parts[1]) || len;
|
|
10457
|
-
start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);
|
|
10458
|
-
end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);
|
|
10459
|
-
const ret = [];
|
|
10460
|
-
|
|
10461
|
-
for (let i = start; i < end; i += step) {
|
|
10462
|
-
const tmp = this._trace(unshift(i, expr), val, path, parent, parentPropName, callback, true); // Should only be possible to be an array here since first part of
|
|
10463
|
-
// ``unshift(i, expr)` passed in above would not be empty, nor `~`,
|
|
10464
|
-
// nor begin with `@` (as could return objects)
|
|
10465
|
-
// This was causing excessive stack size in Node (with or
|
|
10466
|
-
// without Babel) against our performance test: `ret.push(...tmp);`
|
|
10467
|
-
|
|
10468
|
-
|
|
10469
|
-
tmp.forEach(t => {
|
|
10470
|
-
ret.push(t);
|
|
10471
|
-
});
|
|
10472
|
-
}
|
|
10473
|
-
|
|
10474
|
-
return ret;
|
|
10475
|
-
};
|
|
10476
|
-
|
|
10477
|
-
JSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {
|
|
10478
|
-
this.currSandbox._$_parentProperty = parentPropName;
|
|
10479
|
-
this.currSandbox._$_parent = parent;
|
|
10480
|
-
this.currSandbox._$_property = _vname;
|
|
10481
|
-
this.currSandbox._$_root = this.json;
|
|
10482
|
-
this.currSandbox._$_v = _v;
|
|
10483
|
-
const containsPath = code.includes('@path');
|
|
10484
|
-
|
|
10485
|
-
if (containsPath) {
|
|
10486
|
-
this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));
|
|
10487
|
-
}
|
|
10488
|
-
|
|
10489
|
-
const scriptCacheKey = 'script:' + code;
|
|
10490
|
-
|
|
10491
|
-
if (!JSONPath.cache[scriptCacheKey]) {
|
|
10492
|
-
let script = code.replace(/@parentProperty/gu, '_$_parentProperty').replace(/@parent/gu, '_$_parent').replace(/@property/gu, '_$_property').replace(/@root/gu, '_$_root').replace(/@([.\s)[])/gu, '_$_v$1');
|
|
10493
|
-
|
|
10494
|
-
if (containsPath) {
|
|
10495
|
-
script = script.replace(/@path/gu, '_$_path');
|
|
10496
|
-
}
|
|
10497
|
-
|
|
10498
|
-
JSONPath.cache[scriptCacheKey] = new this.vm.Script(script);
|
|
10499
|
-
}
|
|
10500
|
-
|
|
10501
|
-
try {
|
|
10502
|
-
return JSONPath.cache[scriptCacheKey].runInNewContext(this.currSandbox);
|
|
10503
|
-
} catch (e) {
|
|
10504
|
-
throw new Error('jsonPath: ' + e.message + ': ' + code);
|
|
10505
|
-
}
|
|
10506
|
-
}; // PUBLIC CLASS PROPERTIES AND METHODS
|
|
10507
|
-
// Could store the cache object itself
|
|
10508
|
-
|
|
10509
|
-
|
|
10510
|
-
JSONPath.cache = {};
|
|
10511
|
-
/**
|
|
10512
|
-
* @param {string[]} pathArr Array to convert
|
|
10513
|
-
* @returns {string} The path string
|
|
10514
|
-
*/
|
|
10515
|
-
|
|
10516
|
-
JSONPath.toPathString = function (pathArr) {
|
|
10517
|
-
const x = pathArr,
|
|
10518
|
-
n = x.length;
|
|
10519
|
-
let p = '$';
|
|
10520
|
-
|
|
10521
|
-
for (let i = 1; i < n; i++) {
|
|
10522
|
-
if (!/^(~|\^|@.*?\(\))$/u.test(x[i])) {
|
|
10523
|
-
p += /^[0-9*]+$/u.test(x[i]) ? '[' + x[i] + ']' : "['" + x[i] + "']";
|
|
10524
|
-
}
|
|
10525
|
-
}
|
|
10526
|
-
|
|
10527
|
-
return p;
|
|
10528
|
-
};
|
|
10529
|
-
/**
|
|
10530
|
-
* @param {string} pointer JSON Path
|
|
10531
|
-
* @returns {string} JSON Pointer
|
|
10532
|
-
*/
|
|
10533
|
-
|
|
10534
|
-
|
|
10535
|
-
JSONPath.toPointer = function (pointer) {
|
|
10536
|
-
const x = pointer,
|
|
10537
|
-
n = x.length;
|
|
10538
|
-
let p = '';
|
|
10539
|
-
|
|
10540
|
-
for (let i = 1; i < n; i++) {
|
|
10541
|
-
if (!/^(~|\^|@.*?\(\))$/u.test(x[i])) {
|
|
10542
|
-
p += '/' + x[i].toString().replace(/~/gu, '~0').replace(/\//gu, '~1');
|
|
10543
|
-
}
|
|
10544
|
-
}
|
|
10545
|
-
|
|
10546
|
-
return p;
|
|
10547
|
-
};
|
|
10548
|
-
/**
|
|
10549
|
-
* @param {string} expr Expression to convert
|
|
10550
|
-
* @returns {string[]}
|
|
10551
|
-
*/
|
|
10552
|
-
|
|
10553
|
-
|
|
10554
|
-
JSONPath.toPathArray = function (expr) {
|
|
10555
|
-
const {
|
|
10556
|
-
cache
|
|
10557
|
-
} = JSONPath;
|
|
10558
|
-
|
|
10559
|
-
if (cache[expr]) {
|
|
10560
|
-
return cache[expr].concat();
|
|
10561
|
-
}
|
|
10562
|
-
|
|
10563
|
-
const subx = [];
|
|
10564
|
-
const normalized = expr // Properties
|
|
10565
|
-
.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/gu, ';$&;') // Parenthetical evaluations (filtering and otherwise), directly
|
|
10566
|
-
// within brackets or single quotes
|
|
10567
|
-
.replace(/[['](\??\(.*?\))[\]']/gu, function ($0, $1) {
|
|
10568
|
-
return '[#' + (subx.push($1) - 1) + ']';
|
|
10569
|
-
}) // Escape periods and tildes within properties
|
|
10570
|
-
.replace(/\[['"]([^'\]]*)['"]\]/gu, function ($0, prop) {
|
|
10571
|
-
return "['" + prop.replace(/\./gu, '%@%').replace(/~/gu, '%%@@%%') + "']";
|
|
10572
|
-
}) // Properties operator
|
|
10573
|
-
.replace(/~/gu, ';~;') // Split by property boundaries
|
|
10574
|
-
.replace(/['"]?\.['"]?(?![^[]*\])|\[['"]?/gu, ';') // Reinsert periods within properties
|
|
10575
|
-
.replace(/%@%/gu, '.') // Reinsert tildes within properties
|
|
10576
|
-
.replace(/%%@@%%/gu, '~') // Parent
|
|
10577
|
-
.replace(/(?:;)?(\^+)(?:;)?/gu, function ($0, ups) {
|
|
10578
|
-
return ';' + ups.split('').join(';') + ';';
|
|
10579
|
-
}) // Descendents
|
|
10580
|
-
.replace(/;;;|;;/gu, ';..;') // Remove trailing
|
|
10581
|
-
.replace(/;$|'?\]|'$/gu, '');
|
|
10582
|
-
const exprList = normalized.split(';').map(function (exp) {
|
|
10583
|
-
const match = exp.match(/#(\d+)/u);
|
|
10584
|
-
return !match || !match[1] ? exp : subx[match[1]];
|
|
10585
|
-
});
|
|
10586
|
-
cache[expr] = exprList;
|
|
10587
|
-
return cache[expr].concat();
|
|
10588
|
-
};
|
|
10589
|
-
|
|
10590
|
-
JSONPath.prototype.vm = vm;
|
|
10591
|
-
|
|
10592
|
-
/*!
|
|
10593
|
-
* https://github.com/Starcounter-Jack/JSON-Patch
|
|
10594
|
-
* (c) 2017-2022 Joachim Wester
|
|
10595
|
-
* MIT licensed
|
|
10596
|
-
*/
|
|
10597
|
-
var __extends = (undefined && undefined.__extends) || (function () {
|
|
10598
|
-
var extendStatics = function (d, b) {
|
|
10599
|
-
extendStatics = Object.setPrototypeOf ||
|
|
10600
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
10601
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
10602
|
-
return extendStatics(d, b);
|
|
10603
|
-
};
|
|
10604
|
-
return function (d, b) {
|
|
10605
|
-
extendStatics(d, b);
|
|
10606
|
-
function __() { this.constructor = d; }
|
|
10607
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
10608
|
-
};
|
|
10609
|
-
})();
|
|
10610
|
-
var _hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
10611
|
-
function hasOwnProperty$b(obj, key) {
|
|
10612
|
-
return _hasOwnProperty.call(obj, key);
|
|
10613
|
-
}
|
|
10614
|
-
function _objectKeys(obj) {
|
|
10615
|
-
if (Array.isArray(obj)) {
|
|
10616
|
-
var keys_1 = new Array(obj.length);
|
|
10617
|
-
for (var k = 0; k < keys_1.length; k++) {
|
|
10618
|
-
keys_1[k] = "" + k;
|
|
10619
|
-
}
|
|
10620
|
-
return keys_1;
|
|
10621
|
-
}
|
|
10622
|
-
if (Object.keys) {
|
|
10623
|
-
return Object.keys(obj);
|
|
10624
|
-
}
|
|
10625
|
-
var keys = [];
|
|
10626
|
-
for (var i in obj) {
|
|
10627
|
-
if (hasOwnProperty$b(obj, i)) {
|
|
10628
|
-
keys.push(i);
|
|
10629
|
-
}
|
|
10630
|
-
}
|
|
10631
|
-
return keys;
|
|
10632
|
-
}
|
|
10633
|
-
/**
|
|
10634
|
-
* Deeply clone the object.
|
|
10635
|
-
* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)
|
|
10636
|
-
* @param {any} obj value to clone
|
|
10637
|
-
* @return {any} cloned obj
|
|
10638
|
-
*/
|
|
10639
|
-
function _deepClone(obj) {
|
|
10640
|
-
switch (typeof obj) {
|
|
10641
|
-
case "object":
|
|
10642
|
-
return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5
|
|
10643
|
-
case "undefined":
|
|
10644
|
-
return null; //this is how JSON.stringify behaves for array items
|
|
10645
|
-
default:
|
|
10646
|
-
return obj; //no need to clone primitives
|
|
10647
|
-
}
|
|
10648
|
-
}
|
|
10649
|
-
//3x faster than cached /^\d+$/.test(str)
|
|
10650
|
-
function isInteger(str) {
|
|
10651
|
-
var i = 0;
|
|
10652
|
-
var len = str.length;
|
|
10653
|
-
var charCode;
|
|
10654
|
-
while (i < len) {
|
|
10655
|
-
charCode = str.charCodeAt(i);
|
|
10656
|
-
if (charCode >= 48 && charCode <= 57) {
|
|
10657
|
-
i++;
|
|
10658
|
-
continue;
|
|
10659
|
-
}
|
|
10660
|
-
return false;
|
|
10661
|
-
}
|
|
10662
|
-
return true;
|
|
10663
|
-
}
|
|
10664
|
-
/**
|
|
10665
|
-
* Escapes a json pointer path
|
|
10666
|
-
* @param path The raw pointer
|
|
10667
|
-
* @return the Escaped path
|
|
10668
|
-
*/
|
|
10669
|
-
function escapePathComponent(path) {
|
|
10670
|
-
if (path.indexOf('/') === -1 && path.indexOf('~') === -1)
|
|
10671
|
-
return path;
|
|
10672
|
-
return path.replace(/~/g, '~0').replace(/\//g, '~1');
|
|
10673
|
-
}
|
|
10674
|
-
/**
|
|
10675
|
-
* Unescapes a json pointer path
|
|
10676
|
-
* @param path The escaped pointer
|
|
10677
|
-
* @return The unescaped path
|
|
10678
|
-
*/
|
|
10679
|
-
function unescapePathComponent(path) {
|
|
10680
|
-
return path.replace(/~1/g, '/').replace(/~0/g, '~');
|
|
10681
|
-
}
|
|
10682
|
-
/**
|
|
10683
|
-
* Recursively checks whether an object has any undefined values inside.
|
|
10684
|
-
*/
|
|
10685
|
-
function hasUndefined(obj) {
|
|
10686
|
-
if (obj === undefined) {
|
|
10687
|
-
return true;
|
|
10688
|
-
}
|
|
10689
|
-
if (obj) {
|
|
10690
|
-
if (Array.isArray(obj)) {
|
|
10691
|
-
for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {
|
|
10692
|
-
if (hasUndefined(obj[i_1])) {
|
|
10693
|
-
return true;
|
|
10694
|
-
}
|
|
10695
|
-
}
|
|
10696
|
-
}
|
|
10697
|
-
else if (typeof obj === "object") {
|
|
10698
|
-
var objKeys = _objectKeys(obj);
|
|
10699
|
-
var objKeysLength = objKeys.length;
|
|
10700
|
-
for (var i = 0; i < objKeysLength; i++) {
|
|
10701
|
-
if (hasUndefined(obj[objKeys[i]])) {
|
|
10702
|
-
return true;
|
|
10703
|
-
}
|
|
10704
|
-
}
|
|
10705
|
-
}
|
|
10706
|
-
}
|
|
10707
|
-
return false;
|
|
10708
|
-
}
|
|
10709
|
-
function patchErrorMessageFormatter(message, args) {
|
|
10710
|
-
var messageParts = [message];
|
|
10711
|
-
for (var key in args) {
|
|
10712
|
-
var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print
|
|
10713
|
-
if (typeof value !== 'undefined') {
|
|
10714
|
-
messageParts.push(key + ": " + value);
|
|
10715
|
-
}
|
|
10716
|
-
}
|
|
10717
|
-
return messageParts.join('\n');
|
|
10718
|
-
}
|
|
10719
|
-
var PatchError = /** @class */ (function (_super) {
|
|
10720
|
-
__extends(PatchError, _super);
|
|
10721
|
-
function PatchError(message, name, index, operation, tree) {
|
|
10722
|
-
var _newTarget = this.constructor;
|
|
10723
|
-
var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;
|
|
10724
|
-
_this.name = name;
|
|
10725
|
-
_this.index = index;
|
|
10726
|
-
_this.operation = operation;
|
|
10727
|
-
_this.tree = tree;
|
|
10728
|
-
Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359
|
|
10729
|
-
_this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });
|
|
10730
|
-
return _this;
|
|
10731
|
-
}
|
|
10732
|
-
return PatchError;
|
|
10733
|
-
}(Error));
|
|
10734
|
-
|
|
10735
|
-
var JsonPatchError = PatchError;
|
|
10736
|
-
var deepClone = _deepClone;
|
|
10737
|
-
/* We use a Javascript hash to store each
|
|
10738
|
-
function. Each hash entry (property) uses
|
|
10739
|
-
the operation identifiers specified in rfc6902.
|
|
10740
|
-
In this way, we can map each patch operation
|
|
10741
|
-
to its dedicated function in efficient way.
|
|
10742
|
-
*/
|
|
10743
|
-
/* The operations applicable to an object */
|
|
10744
|
-
var objOps = {
|
|
10745
|
-
add: function (obj, key, document) {
|
|
10746
|
-
obj[key] = this.value;
|
|
10747
|
-
return { newDocument: document };
|
|
10748
|
-
},
|
|
10749
|
-
remove: function (obj, key, document) {
|
|
10750
|
-
var removed = obj[key];
|
|
10751
|
-
delete obj[key];
|
|
10752
|
-
return { newDocument: document, removed: removed };
|
|
10753
|
-
},
|
|
10754
|
-
replace: function (obj, key, document) {
|
|
10755
|
-
var removed = obj[key];
|
|
10756
|
-
obj[key] = this.value;
|
|
10757
|
-
return { newDocument: document, removed: removed };
|
|
10758
|
-
},
|
|
10759
|
-
move: function (obj, key, document) {
|
|
10760
|
-
/* in case move target overwrites an existing value,
|
|
10761
|
-
return the removed value, this can be taxing performance-wise,
|
|
10762
|
-
and is potentially unneeded */
|
|
10763
|
-
var removed = getValueByPointer(document, this.path);
|
|
10764
|
-
if (removed) {
|
|
10765
|
-
removed = _deepClone(removed);
|
|
10766
|
-
}
|
|
10767
|
-
var originalValue = applyOperation(document, { op: "remove", path: this.from }).removed;
|
|
10768
|
-
applyOperation(document, { op: "add", path: this.path, value: originalValue });
|
|
10769
|
-
return { newDocument: document, removed: removed };
|
|
10770
|
-
},
|
|
10771
|
-
copy: function (obj, key, document) {
|
|
10772
|
-
var valueToCopy = getValueByPointer(document, this.from);
|
|
10773
|
-
// enforce copy by value so further operations don't affect source (see issue #177)
|
|
10774
|
-
applyOperation(document, { op: "add", path: this.path, value: _deepClone(valueToCopy) });
|
|
10775
|
-
return { newDocument: document };
|
|
10776
|
-
},
|
|
10777
|
-
test: function (obj, key, document) {
|
|
10778
|
-
return { newDocument: document, test: _areEquals(obj[key], this.value) };
|
|
10779
|
-
},
|
|
10780
|
-
_get: function (obj, key, document) {
|
|
10781
|
-
this.value = obj[key];
|
|
10782
|
-
return { newDocument: document };
|
|
10783
|
-
}
|
|
10784
|
-
};
|
|
10785
|
-
/* The operations applicable to an array. Many are the same as for the object */
|
|
10786
|
-
var arrOps = {
|
|
10787
|
-
add: function (arr, i, document) {
|
|
10788
|
-
if (isInteger(i)) {
|
|
10789
|
-
arr.splice(i, 0, this.value);
|
|
10790
|
-
}
|
|
10791
|
-
else { // array props
|
|
10792
|
-
arr[i] = this.value;
|
|
10793
|
-
}
|
|
10794
|
-
// this may be needed when using '-' in an array
|
|
10795
|
-
return { newDocument: document, index: i };
|
|
10796
|
-
},
|
|
10797
|
-
remove: function (arr, i, document) {
|
|
10798
|
-
var removedList = arr.splice(i, 1);
|
|
10799
|
-
return { newDocument: document, removed: removedList[0] };
|
|
10800
|
-
},
|
|
10801
|
-
replace: function (arr, i, document) {
|
|
10802
|
-
var removed = arr[i];
|
|
10803
|
-
arr[i] = this.value;
|
|
10804
|
-
return { newDocument: document, removed: removed };
|
|
10805
|
-
},
|
|
10806
|
-
move: objOps.move,
|
|
10807
|
-
copy: objOps.copy,
|
|
10808
|
-
test: objOps.test,
|
|
10809
|
-
_get: objOps._get
|
|
10810
|
-
};
|
|
10811
|
-
/**
|
|
10812
|
-
* Retrieves a value from a JSON document by a JSON pointer.
|
|
10813
|
-
* Returns the value.
|
|
10814
|
-
*
|
|
10815
|
-
* @param document The document to get the value from
|
|
10816
|
-
* @param pointer an escaped JSON pointer
|
|
10817
|
-
* @return The retrieved value
|
|
10818
|
-
*/
|
|
10819
|
-
function getValueByPointer(document, pointer) {
|
|
10820
|
-
if (pointer == '') {
|
|
10821
|
-
return document;
|
|
10822
|
-
}
|
|
10823
|
-
var getOriginalDestination = { op: "_get", path: pointer };
|
|
10824
|
-
applyOperation(document, getOriginalDestination);
|
|
10825
|
-
return getOriginalDestination.value;
|
|
10826
|
-
}
|
|
10827
|
-
/**
|
|
10828
|
-
* Apply a single JSON Patch Operation on a JSON document.
|
|
10829
|
-
* Returns the {newDocument, result} of the operation.
|
|
10830
|
-
* It modifies the `document` and `operation` objects - it gets the values by reference.
|
|
10831
|
-
* If you would like to avoid touching your values, clone them:
|
|
10832
|
-
* `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.
|
|
10833
|
-
*
|
|
10834
|
-
* @param document The document to patch
|
|
10835
|
-
* @param operation The operation to apply
|
|
10836
|
-
* @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.
|
|
10837
|
-
* @param mutateDocument Whether to mutate the original document or clone it before applying
|
|
10838
|
-
* @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.
|
|
10839
|
-
* @return `{newDocument, result}` after the operation
|
|
10840
|
-
*/
|
|
10841
|
-
function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {
|
|
10842
|
-
if (validateOperation === void 0) { validateOperation = false; }
|
|
10843
|
-
if (mutateDocument === void 0) { mutateDocument = true; }
|
|
10844
|
-
if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }
|
|
10845
|
-
if (index === void 0) { index = 0; }
|
|
10846
|
-
if (validateOperation) {
|
|
10847
|
-
if (typeof validateOperation == 'function') {
|
|
10848
|
-
validateOperation(operation, 0, document, operation.path);
|
|
10849
|
-
}
|
|
10850
|
-
else {
|
|
10851
|
-
validator$1(operation, 0);
|
|
10852
|
-
}
|
|
10853
|
-
}
|
|
10854
|
-
/* ROOT OPERATIONS */
|
|
10855
|
-
if (operation.path === "") {
|
|
10856
|
-
var returnValue = { newDocument: document };
|
|
10857
|
-
if (operation.op === 'add') {
|
|
10858
|
-
returnValue.newDocument = operation.value;
|
|
10859
|
-
return returnValue;
|
|
10860
|
-
}
|
|
10861
|
-
else if (operation.op === 'replace') {
|
|
10862
|
-
returnValue.newDocument = operation.value;
|
|
10863
|
-
returnValue.removed = document; //document we removed
|
|
10864
|
-
return returnValue;
|
|
10865
|
-
}
|
|
10866
|
-
else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root
|
|
10867
|
-
returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field
|
|
10868
|
-
if (operation.op === 'move') { // report removed item
|
|
10869
|
-
returnValue.removed = document;
|
|
10870
|
-
}
|
|
10871
|
-
return returnValue;
|
|
10872
|
-
}
|
|
10873
|
-
else if (operation.op === 'test') {
|
|
10874
|
-
returnValue.test = _areEquals(document, operation.value);
|
|
10875
|
-
if (returnValue.test === false) {
|
|
10876
|
-
throw new JsonPatchError("Test operation failed", 'TEST_OPERATION_FAILED', index, operation, document);
|
|
10877
|
-
}
|
|
10878
|
-
returnValue.newDocument = document;
|
|
10879
|
-
return returnValue;
|
|
10880
|
-
}
|
|
10881
|
-
else if (operation.op === 'remove') { // a remove on root
|
|
10882
|
-
returnValue.removed = document;
|
|
10883
|
-
returnValue.newDocument = null;
|
|
10884
|
-
return returnValue;
|
|
10885
|
-
}
|
|
10886
|
-
else if (operation.op === '_get') {
|
|
10887
|
-
operation.value = document;
|
|
10888
|
-
return returnValue;
|
|
10889
|
-
}
|
|
10890
|
-
else { /* bad operation */
|
|
10891
|
-
if (validateOperation) {
|
|
10892
|
-
throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);
|
|
10893
|
-
}
|
|
10894
|
-
else {
|
|
10895
|
-
return returnValue;
|
|
10896
|
-
}
|
|
10897
|
-
}
|
|
10898
|
-
} /* END ROOT OPERATIONS */
|
|
10899
|
-
else {
|
|
10900
|
-
if (!mutateDocument) {
|
|
10901
|
-
document = _deepClone(document);
|
|
10902
|
-
}
|
|
10903
|
-
var path = operation.path || "";
|
|
10904
|
-
var keys = path.split('/');
|
|
10905
|
-
var obj = document;
|
|
10906
|
-
var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift
|
|
10907
|
-
var len = keys.length;
|
|
10908
|
-
var existingPathFragment = undefined;
|
|
10909
|
-
var key = void 0;
|
|
10910
|
-
var validateFunction = void 0;
|
|
10911
|
-
if (typeof validateOperation == 'function') {
|
|
10912
|
-
validateFunction = validateOperation;
|
|
10913
|
-
}
|
|
10914
|
-
else {
|
|
10915
|
-
validateFunction = validator$1;
|
|
10916
|
-
}
|
|
10917
|
-
while (true) {
|
|
10918
|
-
key = keys[t];
|
|
10919
|
-
if (key && key.indexOf('~') != -1) {
|
|
10920
|
-
key = unescapePathComponent(key);
|
|
10921
|
-
}
|
|
10922
|
-
if (banPrototypeModifications &&
|
|
10923
|
-
(key == '__proto__' ||
|
|
10924
|
-
(key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {
|
|
10925
|
-
throw new TypeError('JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README');
|
|
10926
|
-
}
|
|
10927
|
-
if (validateOperation) {
|
|
10928
|
-
if (existingPathFragment === undefined) {
|
|
10929
|
-
if (obj[key] === undefined) {
|
|
10930
|
-
existingPathFragment = keys.slice(0, t).join('/');
|
|
10931
|
-
}
|
|
10932
|
-
else if (t == len - 1) {
|
|
10933
|
-
existingPathFragment = operation.path;
|
|
10934
|
-
}
|
|
10935
|
-
if (existingPathFragment !== undefined) {
|
|
10936
|
-
validateFunction(operation, 0, document, existingPathFragment);
|
|
10937
|
-
}
|
|
10938
|
-
}
|
|
10939
|
-
}
|
|
10940
|
-
t++;
|
|
10941
|
-
if (Array.isArray(obj)) {
|
|
10942
|
-
if (key === '-') {
|
|
10943
|
-
key = obj.length;
|
|
10944
|
-
}
|
|
10945
|
-
else {
|
|
10946
|
-
if (validateOperation && !isInteger(key)) {
|
|
10947
|
-
throw new JsonPatchError("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index", "OPERATION_PATH_ILLEGAL_ARRAY_INDEX", index, operation, document);
|
|
10948
|
-
} // only parse key when it's an integer for `arr.prop` to work
|
|
10949
|
-
else if (isInteger(key)) {
|
|
10950
|
-
key = ~~key;
|
|
10951
|
-
}
|
|
10952
|
-
}
|
|
10953
|
-
if (t >= len) {
|
|
10954
|
-
if (validateOperation && operation.op === "add" && key > obj.length) {
|
|
10955
|
-
throw new JsonPatchError("The specified index MUST NOT be greater than the number of elements in the array", "OPERATION_VALUE_OUT_OF_BOUNDS", index, operation, document);
|
|
10956
|
-
}
|
|
10957
|
-
var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch
|
|
10958
|
-
if (returnValue.test === false) {
|
|
10959
|
-
throw new JsonPatchError("Test operation failed", 'TEST_OPERATION_FAILED', index, operation, document);
|
|
10960
|
-
}
|
|
10961
|
-
return returnValue;
|
|
10962
|
-
}
|
|
10963
|
-
}
|
|
10964
|
-
else {
|
|
10965
|
-
if (t >= len) {
|
|
10966
|
-
var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch
|
|
10967
|
-
if (returnValue.test === false) {
|
|
10968
|
-
throw new JsonPatchError("Test operation failed", 'TEST_OPERATION_FAILED', index, operation, document);
|
|
10969
|
-
}
|
|
10970
|
-
return returnValue;
|
|
10971
|
-
}
|
|
10972
|
-
}
|
|
10973
|
-
obj = obj[key];
|
|
10974
|
-
// If we have more keys in the path, but the next value isn't a non-null object,
|
|
10975
|
-
// throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.
|
|
10976
|
-
if (validateOperation && t < len && (!obj || typeof obj !== "object")) {
|
|
10977
|
-
throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);
|
|
10978
|
-
}
|
|
10979
|
-
}
|
|
10980
|
-
}
|
|
10981
|
-
}
|
|
10982
|
-
/**
|
|
10983
|
-
* Apply a full JSON Patch array on a JSON document.
|
|
10984
|
-
* Returns the {newDocument, result} of the patch.
|
|
10985
|
-
* It modifies the `document` object and `patch` - it gets the values by reference.
|
|
10986
|
-
* If you would like to avoid touching your values, clone them:
|
|
10987
|
-
* `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.
|
|
10988
|
-
*
|
|
10989
|
-
* @param document The document to patch
|
|
10990
|
-
* @param patch The patch to apply
|
|
10991
|
-
* @param validateOperation `false` is without validation, `true` to use default jsonpatch's validation, or you can pass a `validateOperation` callback to be used for validation.
|
|
10992
|
-
* @param mutateDocument Whether to mutate the original document or clone it before applying
|
|
10993
|
-
* @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.
|
|
10994
|
-
* @return An array of `{newDocument, result}` after the patch
|
|
10995
|
-
*/
|
|
10996
|
-
function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {
|
|
10997
|
-
if (mutateDocument === void 0) { mutateDocument = true; }
|
|
10998
|
-
if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }
|
|
10999
|
-
if (validateOperation) {
|
|
11000
|
-
if (!Array.isArray(patch)) {
|
|
11001
|
-
throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');
|
|
11002
|
-
}
|
|
11003
|
-
}
|
|
11004
|
-
if (!mutateDocument) {
|
|
11005
|
-
document = _deepClone(document);
|
|
11006
|
-
}
|
|
11007
|
-
var results = new Array(patch.length);
|
|
11008
|
-
for (var i = 0, length_1 = patch.length; i < length_1; i++) {
|
|
11009
|
-
// we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`
|
|
11010
|
-
results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);
|
|
11011
|
-
document = results[i].newDocument; // in case root was replaced
|
|
11012
|
-
}
|
|
11013
|
-
results.newDocument = document;
|
|
11014
|
-
return results;
|
|
11015
|
-
}
|
|
11016
|
-
/**
|
|
11017
|
-
* Apply a single JSON Patch Operation on a JSON document.
|
|
11018
|
-
* Returns the updated document.
|
|
11019
|
-
* Suitable as a reducer.
|
|
11020
|
-
*
|
|
11021
|
-
* @param document The document to patch
|
|
11022
|
-
* @param operation The operation to apply
|
|
11023
|
-
* @return The updated document
|
|
11024
|
-
*/
|
|
11025
|
-
function applyReducer(document, operation, index) {
|
|
11026
|
-
var operationResult = applyOperation(document, operation);
|
|
11027
|
-
if (operationResult.test === false) { // failed test
|
|
11028
|
-
throw new JsonPatchError("Test operation failed", 'TEST_OPERATION_FAILED', index, operation, document);
|
|
11029
|
-
}
|
|
11030
|
-
return operationResult.newDocument;
|
|
11031
|
-
}
|
|
11032
|
-
/**
|
|
11033
|
-
* Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.
|
|
11034
|
-
* @param {object} operation - operation object (patch)
|
|
11035
|
-
* @param {number} index - index of operation in the sequence
|
|
11036
|
-
* @param {object} [document] - object where the operation is supposed to be applied
|
|
11037
|
-
* @param {string} [existingPathFragment] - comes along with `document`
|
|
11038
|
-
*/
|
|
11039
|
-
function validator$1(operation, index, document, existingPathFragment) {
|
|
11040
|
-
if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {
|
|
11041
|
-
throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);
|
|
11042
|
-
}
|
|
11043
|
-
else if (!objOps[operation.op]) {
|
|
11044
|
-
throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);
|
|
11045
|
-
}
|
|
11046
|
-
else if (typeof operation.path !== 'string') {
|
|
11047
|
-
throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);
|
|
11048
|
-
}
|
|
11049
|
-
else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {
|
|
11050
|
-
// paths that aren't empty string should start with "/"
|
|
11051
|
-
throw new JsonPatchError('Operation `path` property must start with "/"', 'OPERATION_PATH_INVALID', index, operation, document);
|
|
11052
|
-
}
|
|
11053
|
-
else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {
|
|
11054
|
-
throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);
|
|
11055
|
-
}
|
|
11056
|
-
else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {
|
|
11057
|
-
throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);
|
|
11058
|
-
}
|
|
11059
|
-
else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {
|
|
11060
|
-
throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);
|
|
11061
|
-
}
|
|
11062
|
-
else if (document) {
|
|
11063
|
-
if (operation.op == "add") {
|
|
11064
|
-
var pathLen = operation.path.split("/").length;
|
|
11065
|
-
var existingPathLen = existingPathFragment.split("/").length;
|
|
11066
|
-
if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {
|
|
11067
|
-
throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);
|
|
11068
|
-
}
|
|
11069
|
-
}
|
|
11070
|
-
else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {
|
|
11071
|
-
if (operation.path !== existingPathFragment) {
|
|
11072
|
-
throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);
|
|
11073
|
-
}
|
|
11074
|
-
}
|
|
11075
|
-
else if (operation.op === 'move' || operation.op === 'copy') {
|
|
11076
|
-
var existingValue = { op: "_get", path: operation.from, value: undefined };
|
|
11077
|
-
var error = validate([existingValue], document);
|
|
11078
|
-
if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {
|
|
11079
|
-
throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);
|
|
11080
|
-
}
|
|
11081
|
-
}
|
|
11082
|
-
}
|
|
11083
|
-
}
|
|
11084
|
-
/**
|
|
11085
|
-
* Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.
|
|
11086
|
-
* If error is encountered, returns a JsonPatchError object
|
|
11087
|
-
* @param sequence
|
|
11088
|
-
* @param document
|
|
11089
|
-
* @returns {JsonPatchError|undefined}
|
|
11090
|
-
*/
|
|
11091
|
-
function validate(sequence, document, externalValidator) {
|
|
11092
|
-
try {
|
|
11093
|
-
if (!Array.isArray(sequence)) {
|
|
11094
|
-
throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');
|
|
11095
|
-
}
|
|
11096
|
-
if (document) {
|
|
11097
|
-
//clone document and sequence so that we can safely try applying operations
|
|
11098
|
-
applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);
|
|
11099
|
-
}
|
|
11100
|
-
else {
|
|
11101
|
-
externalValidator = externalValidator || validator$1;
|
|
11102
|
-
for (var i = 0; i < sequence.length; i++) {
|
|
11103
|
-
externalValidator(sequence[i], i, document, undefined);
|
|
11104
|
-
}
|
|
11105
|
-
}
|
|
11106
|
-
}
|
|
11107
|
-
catch (e) {
|
|
11108
|
-
if (e instanceof JsonPatchError) {
|
|
11109
|
-
return e;
|
|
11110
|
-
}
|
|
11111
|
-
else {
|
|
11112
|
-
throw e;
|
|
11113
|
-
}
|
|
11114
|
-
}
|
|
11115
|
-
}
|
|
11116
|
-
// based on https://github.com/epoberezkin/fast-deep-equal
|
|
11117
|
-
// MIT License
|
|
11118
|
-
// Copyright (c) 2017 Evgeny Poberezkin
|
|
11119
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11120
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
11121
|
-
// in the Software without restriction, including without limitation the rights
|
|
11122
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11123
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
11124
|
-
// furnished to do so, subject to the following conditions:
|
|
11125
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
11126
|
-
// copies or substantial portions of the Software.
|
|
11127
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
11128
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
11129
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
11130
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
11131
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
11132
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
11133
|
-
// SOFTWARE.
|
|
11134
|
-
function _areEquals(a, b) {
|
|
11135
|
-
if (a === b)
|
|
11136
|
-
return true;
|
|
11137
|
-
if (a && b && typeof a == 'object' && typeof b == 'object') {
|
|
11138
|
-
var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;
|
|
11139
|
-
if (arrA && arrB) {
|
|
11140
|
-
length = a.length;
|
|
11141
|
-
if (length != b.length)
|
|
11142
|
-
return false;
|
|
11143
|
-
for (i = length; i-- !== 0;)
|
|
11144
|
-
if (!_areEquals(a[i], b[i]))
|
|
11145
|
-
return false;
|
|
11146
|
-
return true;
|
|
11147
|
-
}
|
|
11148
|
-
if (arrA != arrB)
|
|
11149
|
-
return false;
|
|
11150
|
-
var keys = Object.keys(a);
|
|
11151
|
-
length = keys.length;
|
|
11152
|
-
if (length !== Object.keys(b).length)
|
|
11153
|
-
return false;
|
|
11154
|
-
for (i = length; i-- !== 0;)
|
|
11155
|
-
if (!b.hasOwnProperty(keys[i]))
|
|
11156
|
-
return false;
|
|
11157
|
-
for (i = length; i-- !== 0;) {
|
|
11158
|
-
key = keys[i];
|
|
11159
|
-
if (!_areEquals(a[key], b[key]))
|
|
11160
|
-
return false;
|
|
11161
|
-
}
|
|
11162
|
-
return true;
|
|
11163
|
-
}
|
|
11164
|
-
return a !== a && b !== b;
|
|
11165
|
-
}
|
|
9755
|
+
proto$2.add = add$1;
|
|
9756
|
+
proto$2.subtract = subtract$1;
|
|
9757
|
+
proto$2.as = as;
|
|
9758
|
+
proto$2.asMilliseconds = asMilliseconds;
|
|
9759
|
+
proto$2.asSeconds = asSeconds;
|
|
9760
|
+
proto$2.asMinutes = asMinutes;
|
|
9761
|
+
proto$2.asHours = asHours;
|
|
9762
|
+
proto$2.asDays = asDays;
|
|
9763
|
+
proto$2.asWeeks = asWeeks;
|
|
9764
|
+
proto$2.asMonths = asMonths;
|
|
9765
|
+
proto$2.asQuarters = asQuarters;
|
|
9766
|
+
proto$2.asYears = asYears;
|
|
9767
|
+
proto$2.valueOf = valueOf$1;
|
|
9768
|
+
proto$2._bubble = bubble;
|
|
9769
|
+
proto$2.clone = clone$1;
|
|
9770
|
+
proto$2.get = get$2;
|
|
9771
|
+
proto$2.milliseconds = milliseconds;
|
|
9772
|
+
proto$2.seconds = seconds;
|
|
9773
|
+
proto$2.minutes = minutes;
|
|
9774
|
+
proto$2.hours = hours;
|
|
9775
|
+
proto$2.days = days;
|
|
9776
|
+
proto$2.weeks = weeks;
|
|
9777
|
+
proto$2.months = months;
|
|
9778
|
+
proto$2.years = years;
|
|
9779
|
+
proto$2.humanize = humanize;
|
|
9780
|
+
proto$2.toISOString = toISOString$1;
|
|
9781
|
+
proto$2.toString = toISOString$1;
|
|
9782
|
+
proto$2.toJSON = toISOString$1;
|
|
9783
|
+
proto$2.locale = locale;
|
|
9784
|
+
proto$2.localeData = localeData;
|
|
11166
9785
|
|
|
11167
|
-
|
|
11168
|
-
|
|
11169
|
-
|
|
11170
|
-
|
|
11171
|
-
|
|
11172
|
-
applyPatch: applyPatch,
|
|
11173
|
-
applyReducer: applyReducer,
|
|
11174
|
-
deepClone: deepClone,
|
|
11175
|
-
getValueByPointer: getValueByPointer,
|
|
11176
|
-
validate: validate,
|
|
11177
|
-
validator: validator$1
|
|
11178
|
-
});
|
|
9786
|
+
proto$2.toIsoString = deprecate(
|
|
9787
|
+
'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
|
|
9788
|
+
toISOString$1
|
|
9789
|
+
);
|
|
9790
|
+
proto$2.lang = lang;
|
|
11179
9791
|
|
|
11180
|
-
|
|
11181
|
-
* https://github.com/Starcounter-Jack/JSON-Patch
|
|
11182
|
-
* (c) 2017-2021 Joachim Wester
|
|
11183
|
-
* MIT license
|
|
11184
|
-
*/
|
|
11185
|
-
var beforeDict = new WeakMap();
|
|
11186
|
-
var Mirror = /** @class */ (function () {
|
|
11187
|
-
function Mirror(obj) {
|
|
11188
|
-
this.observers = new Map();
|
|
11189
|
-
this.obj = obj;
|
|
11190
|
-
}
|
|
11191
|
-
return Mirror;
|
|
11192
|
-
}());
|
|
11193
|
-
var ObserverInfo = /** @class */ (function () {
|
|
11194
|
-
function ObserverInfo(callback, observer) {
|
|
11195
|
-
this.callback = callback;
|
|
11196
|
-
this.observer = observer;
|
|
11197
|
-
}
|
|
11198
|
-
return ObserverInfo;
|
|
11199
|
-
}());
|
|
11200
|
-
function getMirror(obj) {
|
|
11201
|
-
return beforeDict.get(obj);
|
|
11202
|
-
}
|
|
11203
|
-
function getObserverFromMirror(mirror, callback) {
|
|
11204
|
-
return mirror.observers.get(callback);
|
|
11205
|
-
}
|
|
11206
|
-
function removeObserverFromMirror(mirror, observer) {
|
|
11207
|
-
mirror.observers.delete(observer.callback);
|
|
11208
|
-
}
|
|
11209
|
-
/**
|
|
11210
|
-
* Detach an observer from an object
|
|
11211
|
-
*/
|
|
11212
|
-
function unobserve(root, observer) {
|
|
11213
|
-
observer.unobserve();
|
|
11214
|
-
}
|
|
11215
|
-
/**
|
|
11216
|
-
* Observes changes made to an object, which can then be retrieved using generate
|
|
11217
|
-
*/
|
|
11218
|
-
function observe(obj, callback) {
|
|
11219
|
-
var patches = [];
|
|
11220
|
-
var observer;
|
|
11221
|
-
var mirror = getMirror(obj);
|
|
11222
|
-
if (!mirror) {
|
|
11223
|
-
mirror = new Mirror(obj);
|
|
11224
|
-
beforeDict.set(obj, mirror);
|
|
11225
|
-
}
|
|
11226
|
-
else {
|
|
11227
|
-
var observerInfo = getObserverFromMirror(mirror, callback);
|
|
11228
|
-
observer = observerInfo && observerInfo.observer;
|
|
11229
|
-
}
|
|
11230
|
-
if (observer) {
|
|
11231
|
-
return observer;
|
|
11232
|
-
}
|
|
11233
|
-
observer = {};
|
|
11234
|
-
mirror.value = _deepClone(obj);
|
|
11235
|
-
if (callback) {
|
|
11236
|
-
observer.callback = callback;
|
|
11237
|
-
observer.next = null;
|
|
11238
|
-
var dirtyCheck = function () {
|
|
11239
|
-
generate(observer);
|
|
11240
|
-
};
|
|
11241
|
-
var fastCheck = function () {
|
|
11242
|
-
clearTimeout(observer.next);
|
|
11243
|
-
observer.next = setTimeout(dirtyCheck);
|
|
11244
|
-
};
|
|
11245
|
-
if (typeof window !== 'undefined') { //not Node
|
|
11246
|
-
window.addEventListener('mouseup', fastCheck);
|
|
11247
|
-
window.addEventListener('keyup', fastCheck);
|
|
11248
|
-
window.addEventListener('mousedown', fastCheck);
|
|
11249
|
-
window.addEventListener('keydown', fastCheck);
|
|
11250
|
-
window.addEventListener('change', fastCheck);
|
|
11251
|
-
}
|
|
11252
|
-
}
|
|
11253
|
-
observer.patches = patches;
|
|
11254
|
-
observer.object = obj;
|
|
11255
|
-
observer.unobserve = function () {
|
|
11256
|
-
generate(observer);
|
|
11257
|
-
clearTimeout(observer.next);
|
|
11258
|
-
removeObserverFromMirror(mirror, observer);
|
|
11259
|
-
if (typeof window !== 'undefined') {
|
|
11260
|
-
window.removeEventListener('mouseup', fastCheck);
|
|
11261
|
-
window.removeEventListener('keyup', fastCheck);
|
|
11262
|
-
window.removeEventListener('mousedown', fastCheck);
|
|
11263
|
-
window.removeEventListener('keydown', fastCheck);
|
|
11264
|
-
window.removeEventListener('change', fastCheck);
|
|
11265
|
-
}
|
|
11266
|
-
};
|
|
11267
|
-
mirror.observers.set(callback, new ObserverInfo(callback, observer));
|
|
11268
|
-
return observer;
|
|
11269
|
-
}
|
|
11270
|
-
/**
|
|
11271
|
-
* Generate an array of patches from an observer
|
|
11272
|
-
*/
|
|
11273
|
-
function generate(observer, invertible) {
|
|
11274
|
-
if (invertible === void 0) { invertible = false; }
|
|
11275
|
-
var mirror = beforeDict.get(observer.object);
|
|
11276
|
-
_generate(mirror.value, observer.object, observer.patches, "", invertible);
|
|
11277
|
-
if (observer.patches.length) {
|
|
11278
|
-
applyPatch(mirror.value, observer.patches);
|
|
11279
|
-
}
|
|
11280
|
-
var temp = observer.patches;
|
|
11281
|
-
if (temp.length > 0) {
|
|
11282
|
-
observer.patches = [];
|
|
11283
|
-
if (observer.callback) {
|
|
11284
|
-
observer.callback(temp);
|
|
11285
|
-
}
|
|
11286
|
-
}
|
|
11287
|
-
return temp;
|
|
11288
|
-
}
|
|
11289
|
-
// Dirty check if obj is different from mirror, generate patches and update mirror
|
|
11290
|
-
function _generate(mirror, obj, patches, path, invertible) {
|
|
11291
|
-
if (obj === mirror) {
|
|
11292
|
-
return;
|
|
11293
|
-
}
|
|
11294
|
-
if (typeof obj.toJSON === "function") {
|
|
11295
|
-
obj = obj.toJSON();
|
|
11296
|
-
}
|
|
11297
|
-
var newKeys = _objectKeys(obj);
|
|
11298
|
-
var oldKeys = _objectKeys(mirror);
|
|
11299
|
-
var deleted = false;
|
|
11300
|
-
//if ever "move" operation is implemented here, make sure this test runs OK: "should not generate the same patch twice (move)"
|
|
11301
|
-
for (var t = oldKeys.length - 1; t >= 0; t--) {
|
|
11302
|
-
var key = oldKeys[t];
|
|
11303
|
-
var oldVal = mirror[key];
|
|
11304
|
-
if (hasOwnProperty$b(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {
|
|
11305
|
-
var newVal = obj[key];
|
|
11306
|
-
if (typeof oldVal == "object" && oldVal != null && typeof newVal == "object" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {
|
|
11307
|
-
_generate(oldVal, newVal, patches, path + "/" + escapePathComponent(key), invertible);
|
|
11308
|
-
}
|
|
11309
|
-
else {
|
|
11310
|
-
if (oldVal !== newVal) {
|
|
11311
|
-
if (invertible) {
|
|
11312
|
-
patches.push({ op: "test", path: path + "/" + escapePathComponent(key), value: _deepClone(oldVal) });
|
|
11313
|
-
}
|
|
11314
|
-
patches.push({ op: "replace", path: path + "/" + escapePathComponent(key), value: _deepClone(newVal) });
|
|
11315
|
-
}
|
|
11316
|
-
}
|
|
11317
|
-
}
|
|
11318
|
-
else if (Array.isArray(mirror) === Array.isArray(obj)) {
|
|
11319
|
-
if (invertible) {
|
|
11320
|
-
patches.push({ op: "test", path: path + "/" + escapePathComponent(key), value: _deepClone(oldVal) });
|
|
11321
|
-
}
|
|
11322
|
-
patches.push({ op: "remove", path: path + "/" + escapePathComponent(key) });
|
|
11323
|
-
deleted = true; // property has been deleted
|
|
11324
|
-
}
|
|
11325
|
-
else {
|
|
11326
|
-
if (invertible) {
|
|
11327
|
-
patches.push({ op: "test", path: path, value: mirror });
|
|
11328
|
-
}
|
|
11329
|
-
patches.push({ op: "replace", path: path, value: obj });
|
|
11330
|
-
}
|
|
11331
|
-
}
|
|
11332
|
-
if (!deleted && newKeys.length == oldKeys.length) {
|
|
11333
|
-
return;
|
|
11334
|
-
}
|
|
11335
|
-
for (var t = 0; t < newKeys.length; t++) {
|
|
11336
|
-
var key = newKeys[t];
|
|
11337
|
-
if (!hasOwnProperty$b(mirror, key) && obj[key] !== undefined) {
|
|
11338
|
-
patches.push({ op: "add", path: path + "/" + escapePathComponent(key), value: _deepClone(obj[key]) });
|
|
11339
|
-
}
|
|
11340
|
-
}
|
|
11341
|
-
}
|
|
11342
|
-
/**
|
|
11343
|
-
* Create an array of patches from the differences in two objects
|
|
11344
|
-
*/
|
|
11345
|
-
function compare(tree1, tree2, invertible) {
|
|
11346
|
-
if (invertible === void 0) { invertible = false; }
|
|
11347
|
-
var patches = [];
|
|
11348
|
-
_generate(tree1, tree2, patches, '', invertible);
|
|
11349
|
-
return patches;
|
|
11350
|
-
}
|
|
11351
|
-
|
|
11352
|
-
var duplex = /*#__PURE__*/Object.freeze({
|
|
11353
|
-
__proto__: null,
|
|
11354
|
-
compare: compare,
|
|
11355
|
-
generate: generate,
|
|
11356
|
-
observe: observe,
|
|
11357
|
-
unobserve: unobserve
|
|
11358
|
-
});
|
|
9792
|
+
// FORMATTING
|
|
11359
9793
|
|
|
11360
|
-
|
|
11361
|
-
|
|
11362
|
-
|
|
11363
|
-
|
|
11364
|
-
|
|
11365
|
-
|
|
9794
|
+
addFormatToken('X', 0, 0, 'unix');
|
|
9795
|
+
addFormatToken('x', 0, 0, 'valueOf');
|
|
9796
|
+
|
|
9797
|
+
// PARSING
|
|
9798
|
+
|
|
9799
|
+
addRegexToken('x', matchSigned);
|
|
9800
|
+
addRegexToken('X', matchTimestamp);
|
|
9801
|
+
addParseToken('X', function (input, array, config) {
|
|
9802
|
+
config._d = new Date(parseFloat(input) * 1000);
|
|
9803
|
+
});
|
|
9804
|
+
addParseToken('x', function (input, array, config) {
|
|
9805
|
+
config._d = new Date(toInt(input));
|
|
9806
|
+
});
|
|
9807
|
+
|
|
9808
|
+
//! moment.js
|
|
9809
|
+
|
|
9810
|
+
hooks.version = '2.29.4';
|
|
9811
|
+
|
|
9812
|
+
setHookCallback(createLocal);
|
|
9813
|
+
|
|
9814
|
+
hooks.fn = proto;
|
|
9815
|
+
hooks.min = min;
|
|
9816
|
+
hooks.max = max;
|
|
9817
|
+
hooks.now = now;
|
|
9818
|
+
hooks.utc = createUTC;
|
|
9819
|
+
hooks.unix = createUnix;
|
|
9820
|
+
hooks.months = listMonths;
|
|
9821
|
+
hooks.isDate = isDate;
|
|
9822
|
+
hooks.locale = getSetGlobalLocale;
|
|
9823
|
+
hooks.invalid = createInvalid;
|
|
9824
|
+
hooks.duration = createDuration;
|
|
9825
|
+
hooks.isMoment = isMoment;
|
|
9826
|
+
hooks.weekdays = listWeekdays;
|
|
9827
|
+
hooks.parseZone = createInZone;
|
|
9828
|
+
hooks.localeData = getLocale;
|
|
9829
|
+
hooks.isDuration = isDuration;
|
|
9830
|
+
hooks.monthsShort = listMonthsShort;
|
|
9831
|
+
hooks.weekdaysMin = listWeekdaysMin;
|
|
9832
|
+
hooks.defineLocale = defineLocale;
|
|
9833
|
+
hooks.updateLocale = updateLocale;
|
|
9834
|
+
hooks.locales = listLocales;
|
|
9835
|
+
hooks.weekdaysShort = listWeekdaysShort;
|
|
9836
|
+
hooks.normalizeUnits = normalizeUnits;
|
|
9837
|
+
hooks.relativeTimeRounding = getSetRelativeTimeRounding;
|
|
9838
|
+
hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
|
|
9839
|
+
hooks.calendarFormat = getCalendarFormat;
|
|
9840
|
+
hooks.prototype = proto;
|
|
9841
|
+
|
|
9842
|
+
// currently HTML5 input type only supports 24-hour formats
|
|
9843
|
+
hooks.HTML5_FMT = {
|
|
9844
|
+
DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
|
|
9845
|
+
DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
|
|
9846
|
+
DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
|
|
9847
|
+
DATE: 'YYYY-MM-DD', // <input type="date" />
|
|
9848
|
+
TIME: 'HH:mm', // <input type="time" />
|
|
9849
|
+
TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
|
|
9850
|
+
TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
|
|
9851
|
+
WEEK: 'GGGG-[W]WW', // <input type="week" />
|
|
9852
|
+
MONTH: 'YYYY-MM', // <input type="month" />
|
|
9853
|
+
};
|
|
9854
|
+
|
|
9855
|
+
return hooks;
|
|
9856
|
+
|
|
9857
|
+
})));
|
|
9858
|
+
} (moment$1));
|
|
9859
|
+
|
|
9860
|
+
var moment = momentExports;
|
|
11366
9861
|
|
|
11367
9862
|
toast.configure({
|
|
11368
9863
|
autoClose: 3000,
|
|
@@ -11429,7 +9924,7 @@ var stopPropagation = function (event) {
|
|
|
11429
9924
|
};
|
|
11430
9925
|
function useThrottledEffect(callback, delay, deps) {
|
|
11431
9926
|
if (deps === void 0) { deps = []; }
|
|
11432
|
-
//function will be executed only once in a given time interval.
|
|
9927
|
+
// function will be executed only once in a given time interval.
|
|
11433
9928
|
var lastRan = React.useRef(Date.now());
|
|
11434
9929
|
React.useEffect(function () {
|
|
11435
9930
|
var handler = setTimeout(function () {
|
|
@@ -11463,22 +9958,20 @@ function getRandomColor(email) {
|
|
|
11463
9958
|
return colors$1[sum % colors$1.length];
|
|
11464
9959
|
}
|
|
11465
9960
|
var getAlphabetIcon = function (str, rootClassName) {
|
|
11466
|
-
if (rootClassName === void 0) { rootClassName =
|
|
9961
|
+
if (rootClassName === void 0) { rootClassName = ''; }
|
|
11467
9962
|
if (!str)
|
|
11468
9963
|
return null;
|
|
11469
9964
|
return (jsxRuntime.jsx("span", __assign({ className: "".concat(rootClassName, " alphabet-icon__initial fs-13 icon-dim-20 flex cn-0 mr-8"), style: { backgroundColor: getRandomColor(str) } }, { children: str[0] })));
|
|
11470
9965
|
};
|
|
11471
|
-
var getEmptyArrayOfLength = function (length) {
|
|
11472
|
-
return Array.from({ length: length });
|
|
11473
|
-
};
|
|
9966
|
+
var getEmptyArrayOfLength = function (length) { return Array.from({ length: length }); };
|
|
11474
9967
|
function noop$1() {
|
|
11475
9968
|
}
|
|
11476
9969
|
function not(e) {
|
|
11477
9970
|
return !e;
|
|
11478
9971
|
}
|
|
11479
9972
|
function useEffectAfterMount(cb, dependencies) {
|
|
11480
|
-
var justMounted =
|
|
11481
|
-
|
|
9973
|
+
var justMounted = React__namespace.useRef(true);
|
|
9974
|
+
React__namespace.useEffect(function () {
|
|
11482
9975
|
if (!justMounted.current) {
|
|
11483
9976
|
return cb();
|
|
11484
9977
|
}
|
|
@@ -11489,7 +9982,7 @@ function getCookie(sKey) {
|
|
|
11489
9982
|
if (!sKey) {
|
|
11490
9983
|
return null;
|
|
11491
9984
|
}
|
|
11492
|
-
return (document.cookie.replace(new RegExp(
|
|
9985
|
+
return (document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*".concat(sKey.replace(/[\-\.\+\*]/g, '\\$&'), "\\s*\\=\\s*([^;]*).*$)|^.*$")), '$1') || null);
|
|
11493
9986
|
}
|
|
11494
9987
|
function getLoginInfo() {
|
|
11495
9988
|
var argocdToken = getCookie(TOKEN_COOKIE_NAME);
|
|
@@ -11525,7 +10018,7 @@ function useForm(stateSchema, validationSchema, callback) {
|
|
|
11525
10018
|
// Wrapped in useCallback to cached the function to avoid intensive memory leaked
|
|
11526
10019
|
// in every re-render in component
|
|
11527
10020
|
var validateState = React.useCallback(function (state) {
|
|
11528
|
-
//check errors in all fields
|
|
10021
|
+
// check errors in all fields
|
|
11529
10022
|
var hasErrorInState = Object.keys(validationSchema).some(function (key) {
|
|
11530
10023
|
var isInputFieldRequired = validationSchema[key].required;
|
|
11531
10024
|
var stateValue = state[key].value; // state value
|
|
@@ -11677,9 +10170,7 @@ function useAsync(func, dependencyArray, shouldRun, options) {
|
|
|
11677
10170
|
dependencies: dependencyArray,
|
|
11678
10171
|
}), 2), state = _a[0], setState = _a[1];
|
|
11679
10172
|
var mounted = React.useRef(true);
|
|
11680
|
-
var dependencies = React.useMemo(function () {
|
|
11681
|
-
return __spreadArray(__spreadArray([], __read(dependencyArray), false), [shouldRun], false);
|
|
11682
|
-
}, __spreadArray(__spreadArray([], __read(dependencyArray), false), [shouldRun], false));
|
|
10173
|
+
var dependencies = React.useMemo(function () { return __spreadArray(__spreadArray([], __read(dependencyArray), false), [shouldRun], false); }, __spreadArray(__spreadArray([], __read(dependencyArray), false), [shouldRun], false));
|
|
11683
10174
|
var reload = function () {
|
|
11684
10175
|
function call() {
|
|
11685
10176
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -11738,9 +10229,7 @@ var processDeployedTime = function (lastDeployed, isArgoInstalled) {
|
|
|
11738
10229
|
if (lastDeployed) {
|
|
11739
10230
|
return handleUTCTime(lastDeployed, true);
|
|
11740
10231
|
}
|
|
11741
|
-
|
|
11742
|
-
return isArgoInstalled ? '' : 'Not deployed';
|
|
11743
|
-
}
|
|
10232
|
+
return isArgoInstalled ? '' : 'Not deployed';
|
|
11744
10233
|
};
|
|
11745
10234
|
/**
|
|
11746
10235
|
* Appends search parameters to the url as a query string
|
|
@@ -11761,95 +10250,20 @@ var getUrlWithSearchParams = function (url, params) {
|
|
|
11761
10250
|
/**
|
|
11762
10251
|
* Custom exception logger function for logging errors to sentry
|
|
11763
10252
|
*/
|
|
11764
|
-
var logExceptionToSentry = captureException.bind(window);
|
|
11765
|
-
var customStyles = {
|
|
11766
|
-
control: function (base, state) { return (__assign(__assign({}, base), { minHeight: '32px', boxShadow: 'none', border: 'none', cursor: 'pointer', background: 'transparent' })); },
|
|
11767
|
-
indicatorSeparator: function (base, state) { return (__assign(__assign({}, base), { width: 0 })); },
|
|
11768
|
-
valueContainer: function (base, state) { return (__assign(__assign({}, base), { padding: '0', fontSize: '13px', fontWeight: '600' })); },
|
|
11769
|
-
dropdownIndicator: function (base, state) { return (__assign(__assign({}, base), { color: 'var(--N400)', padding: '0 8px', transition: 'all .2s ease', transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : 'rotate(0deg)' })); },
|
|
11770
|
-
};
|
|
11771
|
-
var getFilteredChartVersions = function (charts, selectedChartType) {
|
|
11772
|
-
// Filter chart versions based on selected chart type
|
|
11773
|
-
return charts
|
|
11774
|
-
.filter(function (item) { return (item === null || item === void 0 ? void 0 : item.chartType) === selectedChartType.value; })
|
|
11775
|
-
.map(function (item) { return ({
|
|
11776
|
-
value: item === null || item === void 0 ? void 0 : item.chartVersion,
|
|
11777
|
-
label: item === null || item === void 0 ? void 0 : item.chartVersion,
|
|
11778
|
-
chartRefId: item.chartRefId,
|
|
11779
|
-
}); });
|
|
11780
|
-
};
|
|
11781
|
-
function removeEmptyObjectKeysAndNullValues(obj) {
|
|
11782
|
-
// It recursively removes empty object keys and array values that are null
|
|
11783
|
-
for (var key in obj) {
|
|
11784
|
-
if (Array.isArray(obj[key])) {
|
|
11785
|
-
if (obj[key].length === 0)
|
|
11786
|
-
continue;
|
|
11787
|
-
obj[key] = obj[key].filter(function (item) { return item !== null; });
|
|
11788
|
-
// Check if the array is empty
|
|
11789
|
-
if (obj[key].length === 0) {
|
|
11790
|
-
delete obj[key]; // Delete the key if the array is empty
|
|
11791
|
-
}
|
|
11792
|
-
}
|
|
11793
|
-
else if (obj[key] && typeof obj[key] === 'object') {
|
|
11794
|
-
if (removeEmptyObjectKeysAndNullValues(obj[key])) {
|
|
11795
|
-
delete obj[key];
|
|
11796
|
-
}
|
|
11797
|
-
}
|
|
11798
|
-
else if (obj[key] === undefined) {
|
|
11799
|
-
delete obj[key];
|
|
11800
|
-
}
|
|
11801
|
-
}
|
|
11802
|
-
return Object.keys(obj).length === 0;
|
|
11803
|
-
}
|
|
11804
|
-
function getUnlockedJSON(json, jsonPathArray) {
|
|
11805
|
-
var jsonCopy = JSON.parse(JSON.stringify(json));
|
|
11806
|
-
var patches = jsonPathArray.flatMap(function (jsonPath) {
|
|
11807
|
-
var pathsToRemove = JSONPath({ path: jsonPath, json: jsonCopy, resultType: 'all' });
|
|
11808
|
-
return pathsToRemove.map(function (result) {
|
|
11809
|
-
return Array.isArray(result.parent)
|
|
11810
|
-
? { op: 'replace', path: result.pointer, value: null }
|
|
11811
|
-
: { op: 'remove', path: result.pointer };
|
|
11812
|
-
});
|
|
11813
|
-
});
|
|
11814
|
-
var newDocument = applyPatch(jsonCopy, patches).newDocument;
|
|
11815
|
-
removeEmptyObjectKeysAndNullValues(newDocument);
|
|
11816
|
-
return newDocument;
|
|
11817
|
-
}
|
|
11818
|
-
function getLockedJSON(json, jsonPathArray) {
|
|
11819
|
-
var jsonCopy = JSON.parse(JSON.stringify(json));
|
|
11820
|
-
var resultJson = {};
|
|
11821
|
-
jsonPathArray.forEach(function (jsonPath) {
|
|
11822
|
-
var elements = JSONPath({ path: jsonPath, json: jsonCopy, resultType: 'all' });
|
|
11823
|
-
elements.forEach(function (element) {
|
|
11824
|
-
var pathArray = JSONPath.toPathArray(element.path);
|
|
11825
|
-
var lastPath = pathArray.pop();
|
|
11826
|
-
var current = resultJson;
|
|
11827
|
-
for (var i = 0; i < pathArray.length; i++) {
|
|
11828
|
-
var key_1 = isNaN(Number(pathArray[i])) ? pathArray[i] : parseInt(pathArray[i]);
|
|
11829
|
-
if (!current[key_1]) {
|
|
11830
|
-
current[key_1] = isNaN(Number(pathArray[i + 1])) ? {} : [];
|
|
11831
|
-
}
|
|
11832
|
-
current = current[key_1];
|
|
11833
|
-
}
|
|
11834
|
-
var key = isNaN(Number(lastPath)) ? lastPath : parseInt(lastPath);
|
|
11835
|
-
current[key] = element.value;
|
|
11836
|
-
});
|
|
11837
|
-
});
|
|
11838
|
-
return resultJson['$'];
|
|
11839
|
-
}
|
|
10253
|
+
var logExceptionToSentry = captureException.bind(window);
|
|
11840
10254
|
|
|
11841
|
-
function
|
|
10255
|
+
var Progressing = function (_a) {
|
|
11842
10256
|
var pageLoader = _a.pageLoader, size = _a.size, theme = _a.theme, styles = _a.styles, fillColor = _a.fillColor;
|
|
11843
10257
|
var loaderSize = size ? "".concat(size, "px") : pageLoader ? '48px' : '20px';
|
|
11844
10258
|
return (jsxRuntime.jsx("div", __assign({ className: "loader ".concat(theme || 'default', "-background"), style: styles, "data-testid": "progressing" }, { children: jsxRuntime.jsx("div", __assign({ style: { width: loaderSize, height: loaderSize } }, { children: jsxRuntime.jsx("svg", __assign({ xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", className: "loader__svg" }, { children: jsxRuntime.jsxs("g", __assign({ fill: "none", fillRule: "evenodd", strokeLinecap: "round" }, { children: [jsxRuntime.jsx("animateTransform", { attributeName: "transform", attributeType: "XML", dur: "0.5s", from: "0 12 12", repeatCount: "indefinite", to: "360 12 12", type: "rotate" }), jsxRuntime.jsx("path", { fill: fillColor || '#06C', fillRule: "nonzero", d: "M12 2.5A9.5 9.5 0 1 1 2.5 12a1.5 1.5 0 0 1 3 0A6.5 6.5 0 1 0 12 5.5a1.5 1.5 0 0 1 0-3z" })] })) })) })) })));
|
|
11845
|
-
}
|
|
11846
|
-
function
|
|
10259
|
+
};
|
|
10260
|
+
var DetailsProgressing = function (_a) {
|
|
11847
10261
|
var loadingText = _a.loadingText, _b = _a.size, size = _b === void 0 ? 24 : _b, _c = _a.fullHeight, fullHeight = _c === void 0 ? false : _c, styles = _a.styles, fillColor = _a.fillColor, children = _a.children;
|
|
11848
10262
|
return (jsxRuntime.jsxs("div", __assign({ className: "details-loader bcn-0 flex column fs-14 fw-6 ".concat(fullHeight ? 'h-100' : 'details-loader-height'), style: styles, "data-testid": "details-progressing" }, { children: [jsxRuntime.jsx("span", __assign({ style: { width: "".concat(size, "px"), height: "".concat(size, "px") } }, { children: jsxRuntime.jsx(Progressing, { size: size, fillColor: fillColor }) })), loadingText && jsxRuntime.jsx("span", __assign({ className: "mt-10" }, { children: loadingText })), children] })));
|
|
11849
|
-
}
|
|
10263
|
+
};
|
|
11850
10264
|
|
|
11851
10265
|
var VisibleModal = /** @class */ (function (_super) {
|
|
11852
|
-
__extends
|
|
10266
|
+
__extends(VisibleModal, _super);
|
|
11853
10267
|
function VisibleModal(props) {
|
|
11854
10268
|
var _this = _super.call(this, props) || this;
|
|
11855
10269
|
_this.modalRef = document.getElementById('visible-modal');
|
|
@@ -11980,7 +10394,7 @@ var SvgIcCross = function SvgIcCross(props) {
|
|
|
11980
10394
|
var close = "data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M19.2803%205.78033C19.5732%205.48744%2019.5732%205.01256%2019.2803%204.71967C18.9874%204.42678%2018.5126%204.42678%2018.2197%204.71967L19.2803%205.78033ZM4.71967%2018.2197C4.42678%2018.5126%204.42678%2018.9874%204.71967%2019.2803C5.01256%2019.5732%205.48744%2019.5732%205.78033%2019.2803L4.71967%2018.2197ZM18.2197%2019.2803C18.5126%2019.5732%2018.9874%2019.5732%2019.2803%2019.2803C19.5732%2018.9874%2019.5732%2018.5126%2019.2803%2018.2197L18.2197%2019.2803ZM5.78033%204.71967C5.48744%204.42678%205.01256%204.42678%204.71967%204.71967C4.42678%205.01256%204.42678%205.48744%204.71967%205.78033L5.78033%204.71967ZM18.2197%204.71967L11.4697%2011.4697L12.5303%2012.5303L19.2803%205.78033L18.2197%204.71967ZM11.4697%2011.4697L4.71967%2018.2197L5.78033%2019.2803L12.5303%2012.5303L11.4697%2011.4697ZM19.2803%2018.2197L12.5303%2011.4697L11.4697%2012.5303L18.2197%2019.2803L19.2803%2018.2197ZM12.5303%2011.4697L5.78033%204.71967L4.71967%205.78033L11.4697%2012.5303L12.5303%2011.4697Z%22%20fill%3D%22%23596168%22%2F%3E%3C%2Fsvg%3E";
|
|
11981
10395
|
|
|
11982
10396
|
var OpaqueModal = /** @class */ (function (_super) {
|
|
11983
|
-
__extends
|
|
10397
|
+
__extends(OpaqueModal, _super);
|
|
11984
10398
|
function OpaqueModal() {
|
|
11985
10399
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
11986
10400
|
_this.modalRef = document.getElementById('full-screen-modal');
|
|
@@ -11988,23 +10402,23 @@ var OpaqueModal = /** @class */ (function (_super) {
|
|
|
11988
10402
|
}
|
|
11989
10403
|
OpaqueModal.prototype.componentDidMount = function () {
|
|
11990
10404
|
if (this.props.noBackground)
|
|
11991
|
-
this.modalRef.classList.add(
|
|
10405
|
+
this.modalRef.classList.add('show');
|
|
11992
10406
|
else
|
|
11993
|
-
this.modalRef.classList.add(
|
|
10407
|
+
this.modalRef.classList.add('show-with-bg');
|
|
11994
10408
|
};
|
|
11995
10409
|
OpaqueModal.prototype.componentWillUnmount = function () {
|
|
11996
|
-
this.modalRef.classList.remove(
|
|
11997
|
-
this.modalRef.classList.remove(
|
|
10410
|
+
this.modalRef.classList.remove('show');
|
|
10411
|
+
this.modalRef.classList.remove('show-with-bg');
|
|
11998
10412
|
};
|
|
11999
10413
|
OpaqueModal.prototype.render = function () {
|
|
12000
|
-
var _a = __assign({}, this.props), _b = _a.className, className = _b === void 0 ?
|
|
12001
|
-
return ReactDOM.createPortal(jsxRuntime.jsxs("div", __assign({ className: "full-screen-modal__body-container ".concat(className) }, { children: [this.props.children, typeof onHide === 'function' && jsxRuntime.jsx("div", __assign({ className: "close-btn icon-dim-24", onClick: function (e) { return onHide(false); }, "data-testid": "opaque-modal-close" }, { children: jsxRuntime.jsx("img", { className: "close-img", src: close, alt: "close" }) }))] })), document.getElementById('full-screen-modal'));
|
|
10414
|
+
var _a = __assign({}, this.props), _b = _a.className, className = _b === void 0 ? '' : _b, _c = _a.onHide, onHide = _c === void 0 ? null : _c;
|
|
10415
|
+
return ReactDOM.createPortal(jsxRuntime.jsxs("div", __assign({ className: "full-screen-modal__body-container ".concat(className) }, { children: [this.props.children, typeof onHide === 'function' && (jsxRuntime.jsx("div", __assign({ className: "close-btn icon-dim-24", onClick: function (e) { return onHide(false); }, "data-testid": "opaque-modal-close" }, { children: jsxRuntime.jsx("img", { className: "close-img", src: close, alt: "close" }) })))] })), document.getElementById('full-screen-modal'));
|
|
12002
10416
|
};
|
|
12003
10417
|
return OpaqueModal;
|
|
12004
10418
|
}(React.Component));
|
|
12005
10419
|
|
|
12006
10420
|
var VisibleModal2 = /** @class */ (function (_super) {
|
|
12007
|
-
__extends
|
|
10421
|
+
__extends(VisibleModal2, _super);
|
|
12008
10422
|
function VisibleModal2(props) {
|
|
12009
10423
|
var _this = _super.call(this, props) || this;
|
|
12010
10424
|
_this.modalRef = document.getElementById('visible-modal-2');
|
|
@@ -12017,12 +10431,12 @@ var VisibleModal2 = /** @class */ (function (_super) {
|
|
|
12017
10431
|
}
|
|
12018
10432
|
};
|
|
12019
10433
|
VisibleModal2.prototype.componentDidMount = function () {
|
|
12020
|
-
document.addEventListener(
|
|
12021
|
-
this.modalRef.classList.add(
|
|
10434
|
+
document.addEventListener('keydown', this.escFunction);
|
|
10435
|
+
this.modalRef.classList.add('show-with-bg');
|
|
12022
10436
|
};
|
|
12023
10437
|
VisibleModal2.prototype.componentWillUnmount = function () {
|
|
12024
|
-
document.removeEventListener(
|
|
12025
|
-
this.modalRef.classList.remove(
|
|
10438
|
+
document.removeEventListener('keydown', this.escFunction);
|
|
10439
|
+
this.modalRef.classList.remove('show-with-bg');
|
|
12026
10440
|
};
|
|
12027
10441
|
VisibleModal2.prototype.render = function () {
|
|
12028
10442
|
var _a;
|
|
@@ -12051,7 +10465,7 @@ function useBreadcrumbContext() {
|
|
|
12051
10465
|
return context;
|
|
12052
10466
|
}
|
|
12053
10467
|
|
|
12054
|
-
|
|
10468
|
+
React__namespace.createContext(null);
|
|
12055
10469
|
function useBreadcrumb(props, deps) {
|
|
12056
10470
|
var sep = (props === null || props === void 0 ? void 0 : props.sep) || '/';
|
|
12057
10471
|
deps = deps || [];
|
|
@@ -12095,7 +10509,7 @@ function useBreadcrumb(props, deps) {
|
|
|
12095
10509
|
? "".concat(prefix).concat(to)
|
|
12096
10510
|
: null,
|
|
12097
10511
|
name: typeof state.alias[name] === 'object'
|
|
12098
|
-
?
|
|
10512
|
+
? ((_d = state.alias[name]) === null || _d === void 0 ? void 0 : _d.component)
|
|
12099
10513
|
? state.alias[name].component
|
|
12100
10514
|
: null
|
|
12101
10515
|
: state.alias[name] || name,
|
|
@@ -12110,25 +10524,23 @@ var BreadCrumb = function (_a) {
|
|
|
12110
10524
|
var breadcrumbs = _a.breadcrumbs, _b = _a.sep, sep = _b === void 0 ? '/' : _b, _c = _a.className, className = _c === void 0 ? 'dc__devtron-breadcrumb__item' : _c;
|
|
12111
10525
|
var url = reactRouterDom.useRouteMatch().url;
|
|
12112
10526
|
var filteredCrumbs = breadcrumbs.filter(function (crumb) { return !!crumb.name; });
|
|
12113
|
-
return (jsxRuntime.jsx(
|
|
10527
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: filteredCrumbs.map(function (breadcrumb, idx) { return (jsxRuntime.jsxs(React__namespace.Fragment, { children: [jsxRuntime.jsx(ConditionalWrap, __assign({ condition: !!breadcrumb.to, wrap: function (children) { return (jsxRuntime.jsx(reactRouterDom.Link, __assign({ className: "".concat(url === breadcrumb.to ? 'active' : '', " ").concat(className, " ").concat(breadcrumb.className || ''), to: breadcrumb.to }, { children: children }))); } }, { children: breadcrumb.name })), idx + 1 !== filteredCrumbs.length && breadcrumb.name && (jsxRuntime.jsx("span", __assign({ className: "".concat(className, "__separator cn-5") }, { children: sep })))] }, idx)); }) }));
|
|
12114
10528
|
};
|
|
12115
10529
|
|
|
12116
10530
|
var RadioGroupContext = React.createContext({ name: '', value: '', disabled: false, onChange: function (event) { } });
|
|
12117
10531
|
var RadioGroupItem = /** @class */ (function (_super) {
|
|
12118
|
-
__extends
|
|
10532
|
+
__extends(RadioGroupItem, _super);
|
|
12119
10533
|
function RadioGroupItem() {
|
|
12120
10534
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
12121
10535
|
}
|
|
12122
10536
|
RadioGroupItem.prototype.render = function () {
|
|
12123
10537
|
var _this = this;
|
|
12124
|
-
return (jsxRuntime.jsx(RadioGroupContext.Consumer, { children: function (context) {
|
|
12125
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs("label", __assign({ className: (_this.props.disabled || context.disabled) ? 'form__radio-item disabled' : 'form__radio-item' }, { children: [jsxRuntime.jsx("input", { type: "radio", className: "form__checkbox", name: context.name, disabled: context.disabled || _this.props.disabled, onChange: context.onChange, value: _this.props.value, checked: context.value === _this.props.value, "data-testid": _this.props.dataTestId }), jsxRuntime.jsxs("span", __assign({ className: "form__radio-item-content", "data-testid": "".concat(_this.props.dataTestId, "-span") }, { children: [jsxRuntime.jsx("span", { className: "radio__button" }), jsxRuntime.jsx("span", __assign({ className: "radio__title" }, { children: _this.props.children }))] }))] })) }));
|
|
12126
|
-
} }));
|
|
10538
|
+
return (jsxRuntime.jsx(RadioGroupContext.Consumer, { children: function (context) { return (jsxRuntime.jsxs("label", __assign({ className: _this.props.disabled || context.disabled ? 'form__radio-item disabled' : 'form__radio-item' }, { children: [jsxRuntime.jsx("input", { type: "radio", className: "form__checkbox", name: context.name, disabled: context.disabled || _this.props.disabled, onChange: context.onChange, value: _this.props.value, checked: context.value === _this.props.value, "data-testid": _this.props.dataTestId }), jsxRuntime.jsxs("span", __assign({ className: "form__radio-item-content", "data-testid": "".concat(_this.props.dataTestId, "-span") }, { children: [jsxRuntime.jsx("span", { className: "radio__button" }), jsxRuntime.jsx("span", __assign({ className: "radio__title" }, { children: _this.props.children }))] }))] }))); } }));
|
|
12127
10539
|
};
|
|
12128
10540
|
return RadioGroupItem;
|
|
12129
10541
|
}(React.Component));
|
|
12130
10542
|
var RadioGroup$1 = /** @class */ (function (_super) {
|
|
12131
|
-
__extends
|
|
10543
|
+
__extends(RadioGroup, _super);
|
|
12132
10544
|
function RadioGroup() {
|
|
12133
10545
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
12134
10546
|
}
|
|
@@ -12143,23 +10555,23 @@ var RadioGroup$1 = /** @class */ (function (_super) {
|
|
|
12143
10555
|
return RadioGroup;
|
|
12144
10556
|
}(React.Component));
|
|
12145
10557
|
|
|
12146
|
-
var PopupContext =
|
|
10558
|
+
var PopupContext = React__namespace.createContext(null);
|
|
12147
10559
|
function usePopupContext() {
|
|
12148
|
-
var context =
|
|
10560
|
+
var context = React__namespace.useContext(PopupContext);
|
|
12149
10561
|
if (!context) {
|
|
12150
10562
|
throw new Error("Select compound components cannot be rendered outside popupmenup");
|
|
12151
10563
|
}
|
|
12152
10564
|
return context;
|
|
12153
10565
|
}
|
|
12154
|
-
function
|
|
10566
|
+
var PopupMenu = function (_a) {
|
|
12155
10567
|
var _b;
|
|
12156
10568
|
var _c = _a.children, children = _c === void 0 ? null : _c, _d = _a.onToggleCallback, onToggleCallback = _d === void 0 ? null : _d, _e = _a.autoClose, autoClose = _e === void 0 ? false : _e, _f = _a.autoPosition, autoPosition = _f === void 0 ? false : _f;
|
|
12157
|
-
var _g = __read(
|
|
12158
|
-
var _h = __read(
|
|
12159
|
-
var observer =
|
|
12160
|
-
var buttonRef =
|
|
12161
|
-
var buttonWidth =
|
|
12162
|
-
|
|
10569
|
+
var _g = __read(React__namespace.useState(null), 2), popupPosition = _g[0], setPopupPosition = _g[1];
|
|
10570
|
+
var _h = __read(React__namespace.useState(0), 2), opacity = _h[0], setOpacity = _h[1];
|
|
10571
|
+
var observer = React__namespace.useRef(null);
|
|
10572
|
+
var buttonRef = React__namespace.useRef(null);
|
|
10573
|
+
var buttonWidth = React__namespace.useRef(null);
|
|
10574
|
+
React__namespace.useEffect(function () {
|
|
12163
10575
|
observer.current = window.IntersectionObserver ? new IntersectionObserver(intersectionCallback, options) : null;
|
|
12164
10576
|
return function () {
|
|
12165
10577
|
if (observer && observer.current && observer.current.disconnect)
|
|
@@ -12253,17 +10665,17 @@ function PopupMenu(_a) {
|
|
|
12253
10665
|
initialiseButtonWidth: initialiseButtonWidth,
|
|
12254
10666
|
buttonWidth: buttonWidth,
|
|
12255
10667
|
} }, { children: children })));
|
|
12256
|
-
}
|
|
12257
|
-
function
|
|
12258
|
-
var _b = _a.children, children = _b === void 0 ? null : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c, _d = _a.rootClassName, rootClassName = _d === void 0 ? '' : _d, _e = _a.tabIndex, tabIndex = _e === void 0 ? 0 : _e, _f = _a.onHover, onHover = _f === void 0 ? false : _f, _g = _a.isKebab, isKebab = _g === void 0 ? false : _g, _h = _a.dataTestId, dataTestId = _h === void 0 ?
|
|
10668
|
+
};
|
|
10669
|
+
var Button = function (_a) {
|
|
10670
|
+
var _b = _a.children, children = _b === void 0 ? null : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c, _d = _a.rootClassName, rootClassName = _d === void 0 ? '' : _d, _e = _a.tabIndex, tabIndex = _e === void 0 ? 0 : _e, _f = _a.onHover, onHover = _f === void 0 ? false : _f, _g = _a.isKebab, isKebab = _g === void 0 ? false : _g, _h = _a.dataTestId, dataTestId = _h === void 0 ? '' : _h;
|
|
12259
10671
|
var _j = usePopupContext(), handleOpen = _j.handleOpen, popupPosition = _j.popupPosition; _j.buttonRef; var initialiseButtonWidth = _j.initialiseButtonWidth;
|
|
12260
10672
|
return (jsxRuntime.jsx("button", __assign({ ref: initialiseButtonWidth, type: "button", tabIndex: tabIndex, disabled: disabled, className: "".concat(rootClassName, " ").concat(popupPosition ? 'focused' : '', " ").concat(isKebab ? 'popup-button-kebab' : 'popup-button'), onMouseEnter: onHover ? (disabled ? null : handleOpen) : function () { }, onClick: disabled ? null : handleOpen, "data-testid": dataTestId }, { children: children })));
|
|
12261
|
-
}
|
|
12262
|
-
|
|
10673
|
+
};
|
|
10674
|
+
var Body$1 = function (_a) {
|
|
12263
10675
|
var _b = _a.children, children = _b === void 0 ? null : _b, _c = _a.rootClassName, rootClassName = _c === void 0 ? '' : _c, _d = _a.style, style = _d === void 0 ? {} : _d, _e = _a.autoWidth, autoWidth = _e === void 0 ? false : _e, _f = _a.preventWheelDisable, preventWheelDisable = _f === void 0 ? false : _f, noBackDrop = _a.noBackDrop;
|
|
12264
10676
|
var _g = usePopupContext(), handleClose = _g.handleClose, popupPosition = _g.popupPosition, opacity = _g.opacity, callbackRef = _g.callbackRef, buttonWidth = _g.buttonWidth;
|
|
12265
10677
|
return popupPosition ? (jsxRuntime.jsx(Modal, __assign({ callbackRef: callbackRef, onClick: handleClose, rootClassName: "".concat(rootClassName, " popup-body ").concat(!children ? 'popup-body--empty' : '', " ").concat(Object.keys(popupPosition).join(' ')), style: __assign(__assign(__assign(__assign({}, popupPosition), style), (autoWidth ? { width: buttonWidth.current } : {})), { opacity: opacity }), preventWheelDisable: preventWheelDisable, noBackDrop: noBackDrop }, { children: children }))) : null;
|
|
12266
|
-
}
|
|
10678
|
+
};
|
|
12267
10679
|
PopupMenu.Button = Button;
|
|
12268
10680
|
PopupMenu.Body = Body$1;
|
|
12269
10681
|
|
|
@@ -16306,7 +14718,7 @@ styleInject(css_248z$5);
|
|
|
16306
14718
|
|
|
16307
14719
|
// This component will handle some of the new tippy designs and interactions
|
|
16308
14720
|
// So this can be updated to support further for new features or interactions
|
|
16309
|
-
function
|
|
14721
|
+
var TippyCustomized = function (props) {
|
|
16310
14722
|
var tippyRef = React.useRef(null);
|
|
16311
14723
|
var _a = __read(React.useState(false), 2), showHeadingInfo = _a[0], setShowHeadingInfo = _a[1];
|
|
16312
14724
|
var isWhiteTheme = props.theme === exports.TippyTheme.white;
|
|
@@ -16335,16 +14747,15 @@ function TippyCustomized(props) {
|
|
|
16335
14747
|
};
|
|
16336
14748
|
var getTippyContent = function () {
|
|
16337
14749
|
var Icon = props.Icon, iconPath = props.iconPath, iconClass = props.iconClass, iconSize = props.iconSize, onImageLoadError = props.onImageLoadError, heading = props.heading, headingInfo = props.headingInfo, infoTextHeading = props.infoTextHeading, hideHeading = props.hideHeading, infoText = props.infoText, showCloseButton = props.showCloseButton, additionalContent = props.additionalContent, documentationLink = props.documentationLink, documentationLinkText = props.documentationLinkText;
|
|
16338
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!hideHeading &&
|
|
16339
|
-
|
|
16340
|
-
|
|
16341
|
-
: 'pt-20 pb-12 pr-20 pl-20 cn-0 top') }, { children: [iconPath ? (jsxRuntime.jsx("img", { className: "icon-dim-".concat(iconSize || 20, " mr-6 ").concat(iconClass || ''), src: iconPath, alt: "Heading", onError: onImageLoadError })) : (Icon && (jsxRuntime.jsx("div", __assign({ className: "icon-dim-".concat(iconSize || 20, " mr-6") }, { children: jsxRuntime.jsx(Icon, { className: "icon-dim-".concat(iconSize || 20, " ").concat(iconClass || '') }) })))), heading && jsxRuntime.jsx("span", __assign({ className: "fs-14 fw-6 lh-20 ".concat(showCloseButton ? 'mr-6' : '') }, { children: heading })), headingInfo && (jsxRuntime.jsx("div", __assign({ className: "icon-dim-20 cursor", onClick: toggleHeadingInfo }, { children: jsxRuntime.jsx(SvgIcHelpOutline, { className: "icon-dim-20" }) }))), showCloseButton && (jsxRuntime.jsx("div", __assign({ className: "icon-dim-16 ml-auto" }, { children: jsxRuntime.jsx(SvgIcCross, { className: "icon-dim-16 cursor ".concat(isWhiteTheme ? 'fcn-9' : 'fcn-0'), onClick: closeTippy }) })))] })), showHeadingInfo && (jsxRuntime.jsxs("div", __assign({ className: "flex left top bcv-1 fs-13 fw-4 lh-20 pt-8 pb-8 ".concat(isWhiteTheme ? 'pl-12 pr-12' : 'pl-20 pr-20') }, { children: [jsxRuntime.jsx("div", __assign({ className: "icon-dim-20 mr-8" }, { children: jsxRuntime.jsx(SvgIcHelp, { className: "icon-dim-20 fcv-5" }) })), jsxRuntime.jsx("div", __assign({ className: "dc__word-break dc__hyphens-auto" }, { children: headingInfo }))] }))), infoTextHeading && (jsxRuntime.jsx("div", __assign({ className: "dc__word-break dc__hyphens-auto fs-14 fw-6 lh-20 ".concat(isWhiteTheme ? 'pl-12 pr-12' : 'pl-20 pr-20') }, { children: infoTextHeading }))), infoText && (jsxRuntime.jsx("div", __assign({ className: "dc__word-break dc__hyphens-auto fs-13 fw-4 lh-20 ".concat(isWhiteTheme
|
|
14750
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!hideHeading && (jsxRuntime.jsxs("div", __assign({ className: "dc__word-break dc__hyphens-auto flex left ".concat(isWhiteTheme
|
|
14751
|
+
? "p-12 cn-9 ".concat(props.noHeadingBorder ? '' : 'dc__border-bottom-n1')
|
|
14752
|
+
: 'pt-20 pb-12 pr-20 pl-20 cn-0 top') }, { children: [iconPath ? (jsxRuntime.jsx("img", { className: "icon-dim-".concat(iconSize || 20, " mr-6 ").concat(iconClass || ''), src: iconPath, alt: "Heading", onError: onImageLoadError })) : (Icon && (jsxRuntime.jsx("div", __assign({ className: "icon-dim-".concat(iconSize || 20, " mr-6") }, { children: jsxRuntime.jsx(Icon, { className: "icon-dim-".concat(iconSize || 20, " ").concat(iconClass || '') }) })))), heading && (jsxRuntime.jsx("span", __assign({ className: "fs-14 fw-6 lh-20 ".concat(showCloseButton ? 'mr-6' : '') }, { children: heading }))), headingInfo && (jsxRuntime.jsx("div", __assign({ className: "icon-dim-20 cursor", onClick: toggleHeadingInfo }, { children: jsxRuntime.jsx(SvgIcHelpOutline, { className: "icon-dim-20" }) }))), showCloseButton && (jsxRuntime.jsx("div", __assign({ className: "icon-dim-16 ml-auto" }, { children: jsxRuntime.jsx(SvgIcCross, { className: "icon-dim-16 cursor ".concat(isWhiteTheme ? 'fcn-9' : 'fcn-0'), onClick: closeTippy }) })))] }))), showHeadingInfo && (jsxRuntime.jsxs("div", __assign({ className: "flex left top bcv-1 fs-13 fw-4 lh-20 pt-8 pb-8 ".concat(isWhiteTheme ? 'pl-12 pr-12' : 'pl-20 pr-20') }, { children: [jsxRuntime.jsx("div", __assign({ className: "icon-dim-20 mr-8" }, { children: jsxRuntime.jsx(SvgIcHelp, { className: "icon-dim-20 fcv-5" }) })), jsxRuntime.jsx("div", __assign({ className: "dc__word-break dc__hyphens-auto" }, { children: headingInfo }))] }))), infoTextHeading && (jsxRuntime.jsx("div", __assign({ className: "dc__word-break dc__hyphens-auto fs-14 fw-6 lh-20 ".concat(isWhiteTheme ? 'pl-12 pr-12' : 'pl-20 pr-20') }, { children: infoTextHeading }))), infoText && (jsxRuntime.jsx("div", __assign({ className: "dc__word-break dc__hyphens-auto fs-13 fw-4 lh-20 ".concat(isWhiteTheme
|
|
16342
14753
|
? 'p-12'
|
|
16343
14754
|
: "pl-20 pr-20 pt-4 ".concat(additionalContent && documentationLink ? 'pb-12' : 'pb-20')) }, { children: infoText }))), additionalContent, documentationLink && (jsxRuntime.jsx("div", __assign({ className: "pl-12 pb-12" }, { children: jsxRuntime.jsx("a", __assign({ href: documentationLink, target: "_blank", rel: "noreferrer noopener", className: "fs-13 cb-5", onClick: closeTippy }, { children: documentationLinkText || 'Learn more' })) })))] }));
|
|
16344
14755
|
};
|
|
16345
14756
|
var className = props.className, placement = props.placement, arrow = props.arrow, interactive = props.interactive, showOnCreate = props.showOnCreate, trigger = props.trigger, animation = props.animation, duration = props.duration, children = props.children;
|
|
16346
14757
|
return (jsxRuntime.jsx(Tippy, __assign({ className: "".concat(isWhiteTheme ? 'tippy-white-container default-white' : 'tippy-black-container default-black', " no-content-padding tippy-shadow ").concat(className), arrow: arrow || false, interactive: interactive || false, placement: placement || 'top', content: getTippyContent(), trigger: trigger || 'mouseenter', onMount: onTippyMount, onClickOutside: closeTippy, showOnCreate: showOnCreate || false, animation: animation || 'fade', duration: duration || 300, visible: props.visible }, { children: children })));
|
|
16347
|
-
}
|
|
14758
|
+
};
|
|
16348
14759
|
|
|
16349
14760
|
var _path$9, _circle, _path2$1;
|
|
16350
14761
|
function _extends$h() { _extends$h = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$h.apply(this, arguments); }
|
|
@@ -16377,10 +14788,8 @@ var SvgInjectTag = function SvgInjectTag(props) {
|
|
|
16377
14788
|
|
|
16378
14789
|
function PropagateTagInfo(_a) {
|
|
16379
14790
|
var isCreateApp = _a.isCreateApp;
|
|
16380
|
-
var additionalInfo = function () {
|
|
16381
|
-
|
|
16382
|
-
};
|
|
16383
|
-
return (jsxRuntime.jsx(TippyCustomized, __assign({ theme: exports.TippyTheme.white, className: "w-300", placement: "top", Icon: SvgInjectTag, heading: 'Propagate tags to K8s resources', infoText: "", additionalContent: additionalInfo(), showCloseButton: true, trigger: "click", interactive: true, documentationLink: isCreateApp ? DOCUMENTATION.APP_TAGS : DOCUMENTATION.APP_OVERVIEW_TAGS, documentationLinkText: "View Documentation" }, { children: jsxRuntime.jsxs("div", __assign({ className: "flexbox cursor" }, { children: [jsxRuntime.jsx(SvgInjectTag, { className: "icon-dim-16 mt-2 mr-4" }), jsxRuntime.jsx("span", { children: "Propagate tags" }), jsxRuntime.jsx(SvgIcHelpOutline, { className: "icon-dim-16 mt-2 ml-4" })] })) })));
|
|
14791
|
+
var additionalInfo = function () { return (jsxRuntime.jsxs("div", __assign({ className: "p-12 fs-13" }, { children: [jsxRuntime.jsxs("div", __assign({ className: "mb-20" }, { children: [jsxRuntime.jsxs("span", __assign({ className: "flex left" }, { children: ["Add a tag and click on the", jsxRuntime.jsx(SvgInjectTag, { className: "icon-dim-16 ml-4 mr-4" }), "icon to"] })), "propagate tags as labels to Kubernetes resources"] })), jsxRuntime.jsx("div", { children: "Use these tags to filter/identify resources via CLI or in other Kubernetes tools." })] }))); };
|
|
14792
|
+
return (jsxRuntime.jsx(TippyCustomized, __assign({ theme: exports.TippyTheme.white, className: "w-300", placement: "top", Icon: SvgInjectTag, heading: "Propagate tags to K8s resources", infoText: "", additionalContent: additionalInfo(), showCloseButton: true, trigger: "click", interactive: true, documentationLink: isCreateApp ? DOCUMENTATION.APP_TAGS : DOCUMENTATION.APP_OVERVIEW_TAGS, documentationLinkText: "View Documentation" }, { children: jsxRuntime.jsxs("div", __assign({ className: "flexbox cursor" }, { children: [jsxRuntime.jsx(SvgInjectTag, { className: "icon-dim-16 mt-2 mr-4" }), jsxRuntime.jsx("span", { children: "Propagate tags" }), jsxRuntime.jsx(SvgIcHelpOutline, { className: "icon-dim-16 mt-2 ml-4" })] })) })));
|
|
16384
14793
|
}
|
|
16385
14794
|
|
|
16386
14795
|
var _path$8;
|
|
@@ -16398,7 +14807,7 @@ var SvgIcInfoOutlined = function SvgIcInfoOutlined(props) {
|
|
|
16398
14807
|
})));
|
|
16399
14808
|
};
|
|
16400
14809
|
|
|
16401
|
-
function
|
|
14810
|
+
var ResizableTagTextArea = function (_a) {
|
|
16402
14811
|
var className = _a.className, minHeight = _a.minHeight, maxHeight = _a.maxHeight, value = _a.value, onChange = _a.onChange, onBlur = _a.onBlur, onFocus = _a.onFocus, placeholder = _a.placeholder, tabIndex = _a.tabIndex, refVar = _a.refVar, dependentRef = _a.dependentRef, dataTestId = _a.dataTestId, handleKeyDown = _a.handleKeyDown;
|
|
16403
14812
|
var _b = __read(React.useState(''), 2), text = _b[0], setText = _b[1];
|
|
16404
14813
|
React.useEffect(function () {
|
|
@@ -16411,9 +14820,9 @@ function ResizableTagTextArea(_a) {
|
|
|
16411
14820
|
var reInitHeight = function () {
|
|
16412
14821
|
if (document.activeElement !== refVar.current)
|
|
16413
14822
|
return;
|
|
16414
|
-
refVar.current.style.height = minHeight
|
|
14823
|
+
refVar.current.style.height = "".concat(minHeight, "px");
|
|
16415
14824
|
if (dependentRef) {
|
|
16416
|
-
dependentRef.current.style.height = minHeight
|
|
14825
|
+
dependentRef.current.style.height = "".concat(minHeight, "px");
|
|
16417
14826
|
}
|
|
16418
14827
|
var nextHeight = refVar.current.scrollHeight;
|
|
16419
14828
|
if (dependentRef && nextHeight < dependentRef.current.scrollHeight) {
|
|
@@ -16425,16 +14834,16 @@ function ResizableTagTextArea(_a) {
|
|
|
16425
14834
|
if (maxHeight && nextHeight > maxHeight) {
|
|
16426
14835
|
nextHeight = maxHeight;
|
|
16427
14836
|
}
|
|
16428
|
-
refVar.current.style.height = nextHeight
|
|
14837
|
+
refVar.current.style.height = "".concat(nextHeight, "px");
|
|
16429
14838
|
if (dependentRef) {
|
|
16430
|
-
dependentRef.current.style.height = nextHeight
|
|
14839
|
+
dependentRef.current.style.height = "".concat(nextHeight, "px");
|
|
16431
14840
|
}
|
|
16432
14841
|
};
|
|
16433
14842
|
useThrottledEffect(reInitHeight, 500, [text]);
|
|
16434
14843
|
var handleOnBlur = function (event) {
|
|
16435
|
-
refVar.current.style.height = minHeight
|
|
14844
|
+
refVar.current.style.height = "".concat(minHeight, "px");
|
|
16436
14845
|
if (dependentRef) {
|
|
16437
|
-
dependentRef.current.style.height = minHeight
|
|
14846
|
+
dependentRef.current.style.height = "".concat(minHeight, "px");
|
|
16438
14847
|
}
|
|
16439
14848
|
onBlur && onBlur(event);
|
|
16440
14849
|
};
|
|
@@ -16443,7 +14852,7 @@ function ResizableTagTextArea(_a) {
|
|
|
16443
14852
|
onFocus && onFocus(event);
|
|
16444
14853
|
};
|
|
16445
14854
|
return (jsxRuntime.jsx("textarea", { rows: 1, ref: refVar, value: text, placeholder: placeholder, className: "".concat(className || '', " lh-20"), style: { resize: 'none' }, onChange: handleChange, onBlur: handleOnBlur, onFocus: handleOnFocus, tabIndex: tabIndex, "data-testid": dataTestId, onKeyDown: handleKeyDown }));
|
|
16446
|
-
}
|
|
14855
|
+
};
|
|
16447
14856
|
|
|
16448
14857
|
var validateTagValue = function (value) {
|
|
16449
14858
|
var errorList = [];
|
|
@@ -16468,28 +14877,26 @@ var ValidationRules = /** @class */ (function () {
|
|
|
16468
14877
|
if (!key) {
|
|
16469
14878
|
errorList.push('Key is required');
|
|
16470
14879
|
}
|
|
16471
|
-
else {
|
|
16472
|
-
|
|
16473
|
-
|
|
16474
|
-
|
|
16475
|
-
|
|
16476
|
-
|
|
16477
|
-
|
|
16478
|
-
|
|
16479
|
-
|
|
16480
|
-
|
|
16481
|
-
|
|
16482
|
-
errorList.push('Prefix: Can be max 253 characters');
|
|
16483
|
-
}
|
|
16484
|
-
var validPrefix = PATTERNS.KUBERNETES_KEY_PREFIX.test(prefix);
|
|
16485
|
-
if (!validPrefix) {
|
|
16486
|
-
errorList.push('Prefix: Must be a DNS subdomain (a series of DNS labels separated by dots (.)');
|
|
16487
|
-
}
|
|
14880
|
+
else if (!key.startsWith('devtron.ai/')) {
|
|
14881
|
+
var re = new RegExp('/', 'g');
|
|
14882
|
+
var noOfSlashInKey = (_a = key.match(re)) === null || _a === void 0 ? void 0 : _a.length;
|
|
14883
|
+
if (noOfSlashInKey > 1) {
|
|
14884
|
+
errorList.push('Key: Max 1 ( / ) allowed');
|
|
14885
|
+
}
|
|
14886
|
+
else if (noOfSlashInKey === 1) {
|
|
14887
|
+
var _b = __read(key.split('/'), 2), prefix = _b[0], name_1 = _b[1];
|
|
14888
|
+
errorList.push.apply(errorList, __spreadArray([], __read(validateTagValue(name_1).map(function (error) { return "Name: ".concat(error); })), false));
|
|
14889
|
+
if (prefix.length > 253) {
|
|
14890
|
+
errorList.push('Prefix: Can be max 253 characters');
|
|
16488
14891
|
}
|
|
16489
|
-
|
|
16490
|
-
|
|
14892
|
+
var validPrefix = PATTERNS.KUBERNETES_KEY_PREFIX.test(prefix);
|
|
14893
|
+
if (!validPrefix) {
|
|
14894
|
+
errorList.push('Prefix: Must be a DNS subdomain (a series of DNS labels separated by dots (.)');
|
|
16491
14895
|
}
|
|
16492
14896
|
}
|
|
14897
|
+
else {
|
|
14898
|
+
errorList.push.apply(errorList, __spreadArray([], __read(validateTagValue(key).map(function (error) { return "Name: ".concat(error); })), false));
|
|
14899
|
+
}
|
|
16493
14900
|
}
|
|
16494
14901
|
return { isValid: errorList.length === 0, messages: errorList };
|
|
16495
14902
|
};
|
|
@@ -16498,10 +14905,8 @@ var ValidationRules = /** @class */ (function () {
|
|
|
16498
14905
|
if (!value) {
|
|
16499
14906
|
errorList.push('Value is required');
|
|
16500
14907
|
}
|
|
16501
|
-
else {
|
|
16502
|
-
|
|
16503
|
-
errorList.push.apply(errorList, __spreadArray([], __read(validateTagValue(value)), false));
|
|
16504
|
-
}
|
|
14908
|
+
else if (!key.startsWith('devtron.ai/')) {
|
|
14909
|
+
errorList.push.apply(errorList, __spreadArray([], __read(validateTagValue(value)), false));
|
|
16505
14910
|
}
|
|
16506
14911
|
return { isValid: errorList.length === 0, messages: errorList };
|
|
16507
14912
|
};
|
|
@@ -16572,12 +14977,8 @@ var TagLabelValueSelector = function (_a) {
|
|
|
16572
14977
|
}
|
|
16573
14978
|
return null;
|
|
16574
14979
|
};
|
|
16575
|
-
var option = function (tag, index) {
|
|
16576
|
-
|
|
16577
|
-
};
|
|
16578
|
-
var optionWithTippy = function (tag, index) {
|
|
16579
|
-
return (jsxRuntime.jsx(Tippy, __assign({ className: "default-tt", arrow: false, placement: "right", content: jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", __assign({ className: "mb-10 fs-12 fw-6 cn-0 dc__break-word" }, { children: tag.label })), jsxRuntime.jsx("div", __assign({ className: "fs-12 fw-4 cn-0 dc__break-word" }, { children: tag.description }))] }) }, { children: option(tag, index) })));
|
|
16580
|
-
};
|
|
14980
|
+
var option = function (tag, index) { return (jsxRuntime.jsx("div", __assign({ "data-key": tag.label, "data-propagate": tag.propagate, className: "dc__hover-n50 dc__ellipsis-right lh-20 fs-13 fw-4 pt-6 pr-8 pb-6 pl-8 cursor", onClick: onSelectValue, "data-testid": "tag-label-value-".concat(index) }, { children: tag.label }), "".concat(tag.value, "-").concat(index))); };
|
|
14981
|
+
var optionWithTippy = function (tag, index) { return (jsxRuntime.jsx(Tippy, __assign({ className: "default-tt", arrow: false, placement: "right", content: jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", __assign({ className: "mb-10 fs-12 fw-6 cn-0 dc__break-word" }, { children: tag.label })), jsxRuntime.jsx("div", __assign({ className: "fs-12 fw-4 cn-0 dc__break-word" }, { children: tag.description }))] }) }, { children: option(tag, index) }))); };
|
|
16581
14982
|
var renderSuggestions = function () {
|
|
16582
14983
|
if (tagOptions === null || tagOptions === void 0 ? void 0 : tagOptions.length) {
|
|
16583
14984
|
var filteredTags = tagOptions.filter(function (tag) { return tag.label.indexOf(selectedValue) >= 0; });
|
|
@@ -16622,7 +15023,7 @@ var TagDetails = function (_a) {
|
|
|
16622
15023
|
}
|
|
16623
15024
|
setTagData(index, _tagData);
|
|
16624
15025
|
};
|
|
16625
|
-
return (jsxRuntime.jsxs("div", __assign({ className: "flexbox mb-8" }, { children: [jsxRuntime.jsx("div", __assign({ className: "dc__border h-30 pl-4 pr-4 br-4 mr-8 pointer ".concat(tagData.propagate ? 'bcn-7' : '', " ").concat(tagData.key.startsWith(
|
|
15026
|
+
return (jsxRuntime.jsxs("div", __assign({ className: "flexbox mb-8" }, { children: [jsxRuntime.jsx("div", __assign({ className: "dc__border h-30 pl-4 pr-4 br-4 mr-8 pointer ".concat(tagData.propagate ? 'bcn-7' : '', " ").concat(tagData.key.startsWith('devtron.ai/') ? 'cursor-not-allowed bcn-1' : ''), onClick: propagateTagToResource, "data-testid": "propagate-tag-".concat(index) }, { children: jsxRuntime.jsx(SvgInjectTag, { className: "icon-dim-20 mt-4 ".concat(tagData.propagate ? 'scn-0' : '') }) })), jsxRuntime.jsx(TagLabelValueSelector, { selectedTagIndex: index, tagData: tagData, setTagData: setTagData, tagInputType: exports.KEY_VALUE.KEY, placeholder: "Enter key", tabIndex: tabIndex - 1, refVar: keyRef, dependentRef: valueRef, tagOptions: suggestedTagsOptions }), jsxRuntime.jsx(TagLabelValueSelector, { selectedTagIndex: index, tagData: tagData, setTagData: setTagData, tagInputType: exports.KEY_VALUE.VALUE, placeholder: "Enter value", tabIndex: tabIndex, refVar: valueRef, dependentRef: keyRef }), jsxRuntime.jsx("div", __assign({ className: "dc__border pl-4 pr-4 dc__right-radius-4 pointer flex top", onClick: deleteTag, "data-testid": "delete-tag-".concat(index) }, { children: jsxRuntime.jsx(SvgIcCross, { className: "icon-dim-20 mt-4" }) }))] })));
|
|
16626
15027
|
};
|
|
16627
15028
|
|
|
16628
15029
|
var _path$7;
|
|
@@ -16645,7 +15046,7 @@ var TagLabelSelect = function (_a) {
|
|
|
16645
15046
|
var setTagData = function (index, tagValue) {
|
|
16646
15047
|
var _tags = __spreadArray([], __read(labelTags), false);
|
|
16647
15048
|
var _tagValue = tagValue;
|
|
16648
|
-
if (_tagValue.key.startsWith(
|
|
15049
|
+
if (_tagValue.key.startsWith('devtron.ai/')) {
|
|
16649
15050
|
_tagValue.propagate = false;
|
|
16650
15051
|
}
|
|
16651
15052
|
_tags[index] = _tagValue;
|
|
@@ -16664,22 +15065,22 @@ var TagLabelSelect = function (_a) {
|
|
|
16664
15065
|
return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", __assign({ className: "flexbox dc__content-space mb-8" }, { children: [jsxRuntime.jsx("span", { children: "Tags" }), jsxRuntime.jsx(PropagateTagInfo, { isCreateApp: isCreateApp })] })), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", __assign({ className: "dc_width-max-content cb-5 fw-6 fs-13 flexbox mr-20 mb-8 cursor", onClick: addNewTag, "data-testid": "add-tag-button" }, { children: [jsxRuntime.jsx(SvgIcAdd, { className: "icon-dim-20 fcb-5" }), " Add tag"] })), jsxRuntime.jsx("div", __assign({ className: "mb-8", "data-testid": "tag-rows-container" }, { children: labelTags === null || labelTags === void 0 ? void 0 : labelTags.map(function (tagData, index) { return (jsxRuntime.jsx(TagDetails, { index: index, tagData: tagData, setTagData: setTagData, removeTag: removeTag, tabIndex: tabIndex + (index + 2) }, "tag-".concat(index))); }) }))] })] }));
|
|
16665
15066
|
};
|
|
16666
15067
|
|
|
16667
|
-
function
|
|
15068
|
+
var ConfirmationDialog = function (_a) {
|
|
16668
15069
|
var _b = _a.className, className = _b === void 0 ? '' : _b, children = _a.children;
|
|
16669
15070
|
return (jsxRuntime.jsx(VisibleModal2, __assign({ className: "confirmation-dialog" }, { children: jsxRuntime.jsx("div", __assign({ className: "confirmation-dialog__body ".concat(className) }, { children: children })) })));
|
|
16670
|
-
}
|
|
16671
|
-
function
|
|
15071
|
+
};
|
|
15072
|
+
var Icon = function (_a) {
|
|
16672
15073
|
var src = _a.src, _b = _a.className, className = _b === void 0 ? '' : _b;
|
|
16673
|
-
return jsxRuntime.jsx("img", { src: src, className: "confirmation-dialog__icon ".concat(className), alt: "" });
|
|
16674
|
-
}
|
|
16675
|
-
function
|
|
15074
|
+
return (jsxRuntime.jsx("img", { src: src, className: "confirmation-dialog__icon ".concat(className), alt: "" }));
|
|
15075
|
+
};
|
|
15076
|
+
var Body = function (_a) {
|
|
16676
15077
|
var title = _a.title, _b = _a.subtitle, subtitle = _b === void 0 ? null : _b, _c = _a.children, children = _c === void 0 ? null : _c;
|
|
16677
15078
|
return (jsxRuntime.jsxs("div", __assign({ className: "flex left column " }, { children: [jsxRuntime.jsx("h3", __assign({ className: "confirmation-dialog__title lh-1-5 dc__break-word w-100" }, { children: title })), subtitle && jsxRuntime.jsx("div", __assign({ className: "confirmation-dialog__subtitle" }, { children: subtitle })), children] })));
|
|
16678
|
-
}
|
|
16679
|
-
function
|
|
15079
|
+
};
|
|
15080
|
+
var ButtonGroup = function (_a) {
|
|
16680
15081
|
var children = _a.children;
|
|
16681
|
-
return jsxRuntime.jsx("div", __assign({ className: "flex right confirmation-dialog__button-group" }, { children: children }));
|
|
16682
|
-
}
|
|
15082
|
+
return (jsxRuntime.jsx("div", __assign({ className: "flex right confirmation-dialog__button-group" }, { children: children })));
|
|
15083
|
+
};
|
|
16683
15084
|
ConfirmationDialog.Icon = Icon;
|
|
16684
15085
|
ConfirmationDialog.Body = Body;
|
|
16685
15086
|
ConfirmationDialog.ButtonGroup = ButtonGroup;
|
|
@@ -16701,15 +15102,13 @@ var DeleteDialog = function (props) {
|
|
|
16701
15102
|
};
|
|
16702
15103
|
return (jsxRuntime.jsxs(ConfirmationDialog, __assign({ className: "confirmation-dialog__body--w-400" }, { children: [jsxRuntime.jsx(ConfirmationDialog.Icon, { src: warn }), jsxRuntime.jsx(ConfirmationDialog.Body, __assign({ title: props.title }, { children: jsxRuntime.jsxs("div", __assign({ className: "fs-13 cn-7 lh-1-54 w-100" }, { children: [props.description ? props.description : null, props.children] })) })), jsxRuntime.jsx(ConfirmationDialog.ButtonGroup, { children: jsxRuntime.jsxs("div", __assign({ className: "flex right" }, { children: [jsxRuntime.jsx("button", __assign({ type: "button", className: "cta cancel cta-cd-delete-modal ml-16", onClick: handleModalClose, disabled: props.apiCallInProgress, "data-testid": "dialog-cancel" }, { children: "Cancel" })), jsxRuntime.jsx("button", __assign({ type: "button", className: "cta delete cta-cd-delete-modal ml-16", onClick: handleDelete, disabled: props.apiCallInProgress || props.disabled, "data-testid": "dialog-delete" }, { children: props.apiCallInProgress ? (jsxRuntime.jsx(Progressing, {})) : ("".concat(props.deletePrefix || '').concat(props.buttonPrimaryText ? props.buttonPrimaryText : 'Delete').concat(props.deletePostfix || '')) }))] })) })] })));
|
|
16703
15104
|
};
|
|
16704
|
-
function
|
|
16705
|
-
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: props.children });
|
|
16706
|
-
}
|
|
15105
|
+
var DeleteDialogDescription = function (props) { return jsxRuntime.jsx(jsxRuntime.Fragment, { children: props.children }); };
|
|
16707
15106
|
DeleteDialog.Description = DeleteDialogDescription;
|
|
16708
15107
|
|
|
16709
|
-
//TODO: may not need context
|
|
15108
|
+
// TODO: may not need context
|
|
16710
15109
|
var DialogFormContext = React.createContext({ title: '', isLoading: false, close: function (event) { }, onSave: function (event) { } });
|
|
16711
15110
|
var DialogForm = /** @class */ (function (_super) {
|
|
16712
|
-
__extends
|
|
15111
|
+
__extends(DialogForm, _super);
|
|
16713
15112
|
function DialogForm(props) {
|
|
16714
15113
|
var _this = _super.call(this, props) || this;
|
|
16715
15114
|
_this.escFunction = _this.escFunction.bind(_this);
|
|
@@ -16733,27 +15132,23 @@ var DialogForm = /** @class */ (function (_super) {
|
|
|
16733
15132
|
isLoading: this.props.isLoading,
|
|
16734
15133
|
close: this.props.close,
|
|
16735
15134
|
onSave: this.props.onSave,
|
|
16736
|
-
} }, { children: jsxRuntime.jsx(VisibleModal, __assign({ className: "" }, { children: jsxRuntime.jsxs("div", __assign({ className: "modal__body ".concat(this.props.className || '') }, { children: [jsxRuntime.jsxs("div", __assign({ className: "modal__header ".concat(this.props.headerClassName || '') }, { children: [jsxRuntime.jsx("h1", __assign({ className: "modal__title" }, { children: this.props.title })), jsxRuntime.jsxs("button", __assign({ type: "button", className: "dc__transparent", onClick: this.props.close }, { children: [' ', jsxRuntime.jsx("img", { src: close, alt: "close" })] }))] })), jsxRuntime.jsx(DialogFormContext.Consumer, { children: function (context) {
|
|
16737
|
-
|
|
16738
|
-
|
|
16739
|
-
|
|
16740
|
-
|
|
16741
|
-
|
|
16742
|
-
} }, { children: _this.props.children })));
|
|
16743
|
-
} })] })) })) })));
|
|
15135
|
+
} }, { children: jsxRuntime.jsx(VisibleModal, __assign({ className: "" }, { children: jsxRuntime.jsxs("div", __assign({ className: "modal__body ".concat(this.props.className || '') }, { children: [jsxRuntime.jsxs("div", __assign({ className: "modal__header ".concat(this.props.headerClassName || '') }, { children: [jsxRuntime.jsx("h1", __assign({ className: "modal__title" }, { children: this.props.title })), jsxRuntime.jsxs("button", __assign({ type: "button", className: "dc__transparent", onClick: this.props.close }, { children: [' ', jsxRuntime.jsx("img", { src: close, alt: "close" })] }))] })), jsxRuntime.jsx(DialogFormContext.Consumer, { children: function (context) { return (jsxRuntime.jsx("form", __assign({ noValidate: true, onSubmit: function (e) {
|
|
15136
|
+
e.preventDefault();
|
|
15137
|
+
if (!context.isLoading) {
|
|
15138
|
+
context.onSave(e);
|
|
15139
|
+
}
|
|
15140
|
+
} }, { children: _this.props.children }))); } })] })) })) })));
|
|
16744
15141
|
};
|
|
16745
15142
|
return DialogForm;
|
|
16746
15143
|
}(React.Component));
|
|
16747
15144
|
var DialogFormSubmit = /** @class */ (function (_super) {
|
|
16748
|
-
__extends
|
|
15145
|
+
__extends(DialogFormSubmit, _super);
|
|
16749
15146
|
function DialogFormSubmit() {
|
|
16750
15147
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
16751
15148
|
}
|
|
16752
15149
|
DialogFormSubmit.prototype.render = function () {
|
|
16753
15150
|
var _this = this;
|
|
16754
|
-
return (jsxRuntime.jsx(DialogFormContext.Consumer, { children: function (context) {
|
|
16755
|
-
return (jsxRuntime.jsx("button", __assign({ type: "submit", className: "cta dc__align-right", tabIndex: _this.props.tabIndex }, { children: context.isLoading ? jsxRuntime.jsx(Progressing, {}) : _this.props.children })));
|
|
16756
|
-
} }));
|
|
15151
|
+
return (jsxRuntime.jsx(DialogFormContext.Consumer, { children: function (context) { return (jsxRuntime.jsx("button", __assign({ type: "submit", className: "cta dc__align-right", tabIndex: _this.props.tabIndex }, { children: context.isLoading ? jsxRuntime.jsx(Progressing, {}) : _this.props.children }))); } }));
|
|
16757
15152
|
};
|
|
16758
15153
|
return DialogFormSubmit;
|
|
16759
15154
|
}(React.Component));
|
|
@@ -19603,14 +17998,14 @@ function _objectWithoutProperties(source, excluded) {
|
|
|
19603
17998
|
return target;
|
|
19604
17999
|
}
|
|
19605
18000
|
|
|
19606
|
-
function _typeof(
|
|
18001
|
+
function _typeof(o) {
|
|
19607
18002
|
"@babel/helpers - typeof";
|
|
19608
18003
|
|
|
19609
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (
|
|
19610
|
-
return typeof
|
|
19611
|
-
} : function (
|
|
19612
|
-
return
|
|
19613
|
-
}, _typeof(
|
|
18004
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
|
18005
|
+
return typeof o;
|
|
18006
|
+
} : function (o) {
|
|
18007
|
+
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
|
18008
|
+
}, _typeof(o);
|
|
19614
18009
|
}
|
|
19615
18010
|
|
|
19616
18011
|
function _classCallCheck(instance, Constructor) {
|
|
@@ -19619,20 +18014,20 @@ function _classCallCheck(instance, Constructor) {
|
|
|
19619
18014
|
}
|
|
19620
18015
|
}
|
|
19621
18016
|
|
|
19622
|
-
function
|
|
19623
|
-
if (
|
|
19624
|
-
var
|
|
19625
|
-
if (
|
|
19626
|
-
var
|
|
19627
|
-
if (
|
|
18017
|
+
function toPrimitive(t, r) {
|
|
18018
|
+
if ("object" != _typeof(t) || !t) return t;
|
|
18019
|
+
var e = t[Symbol.toPrimitive];
|
|
18020
|
+
if (void 0 !== e) {
|
|
18021
|
+
var i = e.call(t, r || "default");
|
|
18022
|
+
if ("object" != _typeof(i)) return i;
|
|
19628
18023
|
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
19629
18024
|
}
|
|
19630
|
-
return (
|
|
18025
|
+
return ("string" === r ? String : Number)(t);
|
|
19631
18026
|
}
|
|
19632
18027
|
|
|
19633
|
-
function
|
|
19634
|
-
var
|
|
19635
|
-
return _typeof(
|
|
18028
|
+
function toPropertyKey(t) {
|
|
18029
|
+
var i = toPrimitive(t, "string");
|
|
18030
|
+
return "symbol" == _typeof(i) ? i : String(i);
|
|
19636
18031
|
}
|
|
19637
18032
|
|
|
19638
18033
|
function _defineProperties(target, props) {
|
|
@@ -19641,7 +18036,7 @@ function _defineProperties(target, props) {
|
|
|
19641
18036
|
descriptor.enumerable = descriptor.enumerable || false;
|
|
19642
18037
|
descriptor.configurable = true;
|
|
19643
18038
|
if ("value" in descriptor) descriptor.writable = true;
|
|
19644
|
-
Object.defineProperty(target,
|
|
18039
|
+
Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
|
|
19645
18040
|
}
|
|
19646
18041
|
}
|
|
19647
18042
|
function _createClass(Constructor, protoProps, staticProps) {
|
|
@@ -19679,7 +18074,7 @@ function _inherits(subClass, superClass) {
|
|
|
19679
18074
|
}
|
|
19680
18075
|
|
|
19681
18076
|
function _defineProperty$1(obj, key, value) {
|
|
19682
|
-
key =
|
|
18077
|
+
key = toPropertyKey(key);
|
|
19683
18078
|
if (key in obj) {
|
|
19684
18079
|
Object.defineProperty(obj, key, {
|
|
19685
18080
|
value: value,
|
|
@@ -21237,31 +19632,31 @@ function _arrayWithHoles(arr) {
|
|
|
21237
19632
|
if (Array.isArray(arr)) return arr;
|
|
21238
19633
|
}
|
|
21239
19634
|
|
|
21240
|
-
function _iterableToArrayLimit(
|
|
21241
|
-
var
|
|
21242
|
-
if (null !=
|
|
21243
|
-
var
|
|
21244
|
-
|
|
21245
|
-
|
|
21246
|
-
|
|
21247
|
-
|
|
21248
|
-
|
|
21249
|
-
|
|
19635
|
+
function _iterableToArrayLimit(r, l) {
|
|
19636
|
+
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
19637
|
+
if (null != t) {
|
|
19638
|
+
var e,
|
|
19639
|
+
n,
|
|
19640
|
+
i,
|
|
19641
|
+
u,
|
|
19642
|
+
a = [],
|
|
19643
|
+
f = !0,
|
|
19644
|
+
o = !1;
|
|
21250
19645
|
try {
|
|
21251
|
-
if (
|
|
21252
|
-
if (Object(
|
|
21253
|
-
|
|
21254
|
-
} else for (; !(
|
|
21255
|
-
} catch (
|
|
21256
|
-
|
|
19646
|
+
if (i = (t = t.call(r)).next, 0 === l) {
|
|
19647
|
+
if (Object(t) !== t) return;
|
|
19648
|
+
f = !1;
|
|
19649
|
+
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
|
|
19650
|
+
} catch (r) {
|
|
19651
|
+
o = !0, n = r;
|
|
21257
19652
|
} finally {
|
|
21258
19653
|
try {
|
|
21259
|
-
if (!
|
|
19654
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
21260
19655
|
} finally {
|
|
21261
|
-
if (
|
|
19656
|
+
if (o) throw n;
|
|
21262
19657
|
}
|
|
21263
19658
|
}
|
|
21264
|
-
return
|
|
19659
|
+
return a;
|
|
21265
19660
|
}
|
|
21266
19661
|
}
|
|
21267
19662
|
|
|
@@ -24252,35 +22647,31 @@ var MultiValueChipContainer = function (_a) {
|
|
|
24252
22647
|
var multiSelectStyles = {
|
|
24253
22648
|
control: function (base, state) { return (__assign(__assign({}, base), { cursor: state.isDisabled ? 'not-allowed' : 'normal', border: state.isFocused ? '1px solid #06c' : '1px solid #d6dbdf', boxShadow: 'none' })); },
|
|
24254
22649
|
menu: function (base, state) { return (__assign({}, base)); },
|
|
24255
|
-
option: function (base, state) {
|
|
24256
|
-
return __assign(__assign({}, base), { backgroundColor: state.isFocused ? 'var(--N100)' : 'white', color: 'var(--N900)', padding: '8px 12px' });
|
|
24257
|
-
},
|
|
22650
|
+
option: function (base, state) { return (__assign(__assign({}, base), { backgroundColor: state.isFocused ? 'var(--N100)' : 'white', color: 'var(--N900)', padding: '8px 12px' })); },
|
|
24258
22651
|
container: function (base, state) { return (__assign(__assign({}, base), { cursor: state.isDisabled ? 'not-allowed' : 'pointer' })); },
|
|
24259
22652
|
valueContainer: function (base, state) { return (__assign(__assign({}, base), { color: state.selectProps.menuIsOpen ? 'var(--N500)' : base.color })); },
|
|
24260
22653
|
};
|
|
24261
|
-
var CustomSelect = function (props) {
|
|
24262
|
-
return jsxRuntime.jsx(ReactSelect, __assign({}, props));
|
|
24263
|
-
};
|
|
22654
|
+
var CustomSelect = function (props) { return jsxRuntime.jsx(ReactSelect, __assign({}, props)); };
|
|
24264
22655
|
|
|
24265
22656
|
var css_248z$4 = ".info-bar-container .info_text .success {\n background-color: var(--G100);\n}\n.info-bar-container .warn {\n background: var(--Y100);\n border: solid var(--Y200);\n}\n.info-bar-container .warn .warning-icon path:nth-child(2) {\n fill: var(--Y700);\n}\n.info-bar-container .info_bar {\n background-color: var(--B100);\n border: 1px solid var(--B200);\n}\n.info-bar-container .error_bar {\n background-color: var(--R100);\n border: 1px solid var(--R200);\n}\n.info-bar-container .question-bar {\n background-color: var(--V100);\n border: 1px solid var(--V200);\n}";
|
|
24266
22657
|
styleInject(css_248z$4);
|
|
24267
22658
|
|
|
24268
|
-
function
|
|
22659
|
+
var InfoColourBar = function (_a) {
|
|
24269
22660
|
var message = _a.message, classname = _a.classname, Icon = _a.Icon, iconClass = _a.iconClass, iconSize = _a.iconSize, renderActionButton = _a.renderActionButton, linkText = _a.linkText, redirectLink = _a.redirectLink, linkOnClick = _a.linkOnClick, linkClass = _a.linkClass, internalLink = _a.internalLink, styles = _a.styles;
|
|
24270
22661
|
var renderLink = function () {
|
|
24271
22662
|
if (!linkText) {
|
|
24272
22663
|
return null;
|
|
24273
22664
|
}
|
|
24274
|
-
|
|
22665
|
+
if (redirectLink) {
|
|
24275
22666
|
if (internalLink) {
|
|
24276
22667
|
return (jsxRuntime.jsx(reactRouterDom.Link, __assign({ to: redirectLink, onClick: linkOnClick, "data-testid": "info-bar-internal-link", className: "cursor dc__link dc__underline-onhover mr-5" }, { children: linkText })));
|
|
24277
22668
|
}
|
|
24278
|
-
return (jsxRuntime.jsx("a", __assign({ href: redirectLink, target: "_blank", onClick: linkOnClick, "data-testid": "info-bar-redirectLink", className: "cursor dc__link dc__underline-onhover mr-5" }, { children: linkText })));
|
|
22669
|
+
return (jsxRuntime.jsx("a", __assign({ href: redirectLink, target: "_blank", onClick: linkOnClick, "data-testid": "info-bar-redirectLink", className: "cursor dc__link dc__underline-onhover mr-5", rel: "noreferrer" }, { children: linkText })));
|
|
24279
22670
|
}
|
|
24280
22671
|
return (linkOnClick && (jsxRuntime.jsx("div", __assign({ onClick: linkOnClick, className: "cursor dc__link dc__underline-onhover", "data-testid": "info-bar-linkText" }, { children: linkText }))));
|
|
24281
22672
|
};
|
|
24282
22673
|
return (jsxRuntime.jsx("div", __assign({ className: "info-bar-container" }, { children: jsxRuntime.jsxs("div", __assign({ className: "".concat(classname, " info_text flex dc__content-space pt-8 pb-8 pl-12 pr-12 br-4 top fs-13 fw-4"), style: styles }, { children: [jsxRuntime.jsxs("div", __assign({ className: "flex top ".concat(typeof renderActionButton === 'function' ? 'mr-5' : '') }, { children: [jsxRuntime.jsx("div", __assign({ className: "icon-dim-".concat(iconSize !== null && iconSize !== void 0 ? iconSize : '20', " mr-10") }, { children: jsxRuntime.jsx(Icon, { className: "icon-dim-".concat(iconSize !== null && iconSize !== void 0 ? iconSize : '20', " ").concat(iconClass || '', " mr-8") }) })), jsxRuntime.jsxs("div", __assign({ className: "info-bar-message-wrapper ".concat(linkClass || '') }, { children: [jsxRuntime.jsx("span", __assign({ className: linkText && redirectLink ? 'mr-5' : '' }, { children: message })), renderLink()] }))] })), typeof renderActionButton === 'function' && renderActionButton()] })) })));
|
|
24283
|
-
}
|
|
22674
|
+
};
|
|
24284
22675
|
|
|
24285
22676
|
var getTeamListMin = function () {
|
|
24286
22677
|
// ignore active field
|
|
@@ -24290,9 +22681,7 @@ var getTeamListMin = function () {
|
|
|
24290
22681
|
if (response && response.result && Array.isArray(response.result)) {
|
|
24291
22682
|
list = response.result;
|
|
24292
22683
|
}
|
|
24293
|
-
list = list.sort(function (a, b) {
|
|
24294
|
-
return sortCallback('name', a, b);
|
|
24295
|
-
});
|
|
22684
|
+
list = list.sort(function (a, b) { return sortCallback('name', a, b); });
|
|
24296
22685
|
return {
|
|
24297
22686
|
code: response.code,
|
|
24298
22687
|
status: response.status,
|
|
@@ -24318,9 +22707,7 @@ function setImageTags(request, pipelineId, artifactId) {
|
|
|
24318
22707
|
return post("".concat(ROUTES.IMAGE_TAGGING, "/").concat(pipelineId, "/").concat(artifactId), request);
|
|
24319
22708
|
}
|
|
24320
22709
|
var processURL = function (url, params) {
|
|
24321
|
-
var validParams = Object.keys(params).filter(function (key) {
|
|
24322
|
-
return params[key] != null;
|
|
24323
|
-
});
|
|
22710
|
+
var validParams = Object.keys(params).filter(function (key) { return params[key] != null; });
|
|
24324
22711
|
if (!validParams.length) {
|
|
24325
22712
|
return url;
|
|
24326
22713
|
}
|
|
@@ -24382,24 +22769,22 @@ var cdMaterialListModal = function (artifacts, offset, artifactId, artifactStatu
|
|
|
24382
22769
|
// It is going to be null but required in type so can't remove
|
|
24383
22770
|
lastExecution: material.lastExecution,
|
|
24384
22771
|
materialInfo: material.material_info
|
|
24385
|
-
? material.material_info.map(function (mat) {
|
|
24386
|
-
|
|
24387
|
-
|
|
24388
|
-
|
|
24389
|
-
|
|
24390
|
-
|
|
24391
|
-
|
|
24392
|
-
|
|
24393
|
-
|
|
24394
|
-
|
|
24395
|
-
|
|
24396
|
-
|
|
24397
|
-
|
|
24398
|
-
|
|
24399
|
-
|
|
24400
|
-
|
|
24401
|
-
};
|
|
24402
|
-
})
|
|
22772
|
+
? material.material_info.map(function (mat) { return ({
|
|
22773
|
+
modifiedTime: mat.modifiedTime
|
|
22774
|
+
? moment(mat.modifiedTime).format('ddd, DD MMM YYYY, hh:mm A')
|
|
22775
|
+
: '',
|
|
22776
|
+
commitLink: createGitCommitUrl(mat.url, mat.revision),
|
|
22777
|
+
author: mat.author || '',
|
|
22778
|
+
message: mat.message || '',
|
|
22779
|
+
revision: mat.revision || '',
|
|
22780
|
+
tag: mat.tag || '',
|
|
22781
|
+
webhookData: mat.webhookData || '',
|
|
22782
|
+
url: mat.url || '',
|
|
22783
|
+
branch: (material.ciConfigureSourceType === SourceTypeMap.WEBHOOK
|
|
22784
|
+
? material.ciConfigureSourceValue
|
|
22785
|
+
: mat.branch) || '',
|
|
22786
|
+
type: material.ciConfigureSourceType || '',
|
|
22787
|
+
}); })
|
|
24403
22788
|
: [],
|
|
24404
22789
|
filterState: filterState,
|
|
24405
22790
|
appliedFiltersTimestamp: (_b = material.appliedFiltersTimestamp) !== null && _b !== void 0 ? _b : '',
|
|
@@ -24458,9 +22843,7 @@ var processCDMaterialServiceResponse = function (cdMaterialsResult, stage, offse
|
|
|
24458
22843
|
var metaInfo = processCDMaterialsMetaInfo(cdMaterialsResult);
|
|
24459
22844
|
// TODO: On update of service would remove from here
|
|
24460
22845
|
var filteredMaterials = filter && filter === exports.CDMaterialFilterQuery.RESOURCE
|
|
24461
|
-
? materials.filter(function (material) {
|
|
24462
|
-
return material.filterState === exports.FilterStates.ALLOWED;
|
|
24463
|
-
})
|
|
22846
|
+
? materials.filter(function (material) { return material.filterState === exports.FilterStates.ALLOWED; })
|
|
24464
22847
|
: materials;
|
|
24465
22848
|
return __assign(__assign({ materials: filteredMaterials }, approvalInfo), metaInfo);
|
|
24466
22849
|
};
|
|
@@ -24491,30 +22874,27 @@ function extractImage(image) {
|
|
|
24491
22874
|
}
|
|
24492
22875
|
function createGitCommitUrl(url, revision) {
|
|
24493
22876
|
if (!url || !revision) {
|
|
24494
|
-
return
|
|
22877
|
+
return 'NA';
|
|
24495
22878
|
}
|
|
24496
|
-
if (url.indexOf(
|
|
24497
|
-
var urlpart = url.split(
|
|
22879
|
+
if (url.indexOf('gitlab') > 0 || url.indexOf('github') > 0 || url.indexOf('azure') > 0) {
|
|
22880
|
+
var urlpart = url.split('@');
|
|
24498
22881
|
if (urlpart.length > 1) {
|
|
24499
|
-
return "https://"
|
|
22882
|
+
return "https://".concat(urlpart[1].split('.git')[0], "/commit/").concat(revision);
|
|
24500
22883
|
}
|
|
24501
22884
|
if (urlpart.length == 1) {
|
|
24502
|
-
return urlpart[0].split(
|
|
22885
|
+
return "".concat(urlpart[0].split('.git')[0], "/commit/").concat(revision);
|
|
24503
22886
|
}
|
|
24504
22887
|
}
|
|
24505
|
-
if (url.indexOf(
|
|
24506
|
-
var urlpart = url.split(
|
|
22888
|
+
if (url.indexOf('bitbucket') > 0) {
|
|
22889
|
+
var urlpart = url.split('@');
|
|
24507
22890
|
if (urlpart.length > 1) {
|
|
24508
|
-
return "https://"
|
|
22891
|
+
return "https://".concat(urlpart[1].split('.git')[0], "/commits/").concat(revision);
|
|
24509
22892
|
}
|
|
24510
22893
|
if (urlpart.length == 1) {
|
|
24511
|
-
return urlpart[0].split(
|
|
22894
|
+
return "".concat(urlpart[0].split('.git')[0], "/commits/").concat(revision);
|
|
24512
22895
|
}
|
|
24513
22896
|
}
|
|
24514
|
-
return
|
|
24515
|
-
}
|
|
24516
|
-
function fetchChartTemplateVersions() {
|
|
24517
|
-
return get("".concat(ROUTES.DEPLOYMENT_TEMPLATE_LIST, "?appId=-1&envId=-1"));
|
|
22897
|
+
return 'NA';
|
|
24518
22898
|
}
|
|
24519
22899
|
|
|
24520
22900
|
/*
|
|
@@ -24527,14 +22907,14 @@ Valid States of Checkbox:
|
|
|
24527
22907
|
6. disabled: false, checked: true, value: CHECKED
|
|
24528
22908
|
*/
|
|
24529
22909
|
var Checkbox$1 = /** @class */ (function (_super) {
|
|
24530
|
-
__extends
|
|
22910
|
+
__extends(Checkbox, _super);
|
|
24531
22911
|
function Checkbox() {
|
|
24532
22912
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
24533
22913
|
}
|
|
24534
22914
|
Checkbox.prototype.render = function () {
|
|
24535
22915
|
var _a;
|
|
24536
22916
|
var rootClassName = "".concat(this.props.rootClassName ? this.props.rootClassName : '');
|
|
24537
|
-
return (jsxRuntime.
|
|
22917
|
+
return (jsxRuntime.jsxs("label", __assign({ className: "dc__position-rel flex left cursor ".concat(rootClassName), onClick: (_a = this.props) === null || _a === void 0 ? void 0 : _a.onClick }, { children: [jsxRuntime.jsx("input", { type: "checkbox", className: "form__checkbox", disabled: this.props.disabled, value: this.props.value, onChange: this.props.onChange, tabIndex: this.props.tabIndex, checked: this.props.isChecked, id: this.props.id, "data-testid": this.props.dataTestId }), jsxRuntime.jsx("span", { className: "form__checkbox-container", "data-testid": "".concat(this.props.dataTestId, "-chk-span") }), jsxRuntime.jsx("span", __assign({ className: "form__checkbox-label" }, { children: this.props.children }))] })));
|
|
24538
22918
|
};
|
|
24539
22919
|
return Checkbox;
|
|
24540
22920
|
}(React.Component));
|
|
@@ -24575,23 +22955,21 @@ function ScanVulnerabilitiesTable(_a) {
|
|
|
24575
22955
|
window.open("https://cve.mitre.org/cgi-bin/cvename.cgi?name=".concat(vulnerability.name), '_blank');
|
|
24576
22956
|
} }, { children: [jsxRuntime.jsx("td", __assign({ className: "security-tab__cell-cve dc__cve-cell" }, { children: jsxRuntime.jsx("a", __assign({ href: "https://cve.mitre.org/cgi-bin/cvename.cgi?name=".concat(vulnerability.name), rel: "noopener noreferrer", target: "_blank" }, { children: vulnerability.name })) })), jsxRuntime.jsx("td", __assign({ className: "security-tab__cell-severity" }, { children: jsxRuntime.jsx("span", __assign({ className: "fill-".concat((_a = vulnerability.severity) === null || _a === void 0 ? void 0 : _a.toLowerCase()) }, { children: vulnerability.severity })) })), jsxRuntime.jsx("td", __assign({ className: "security-tab__cell-package" }, { children: vulnerability.package })), jsxRuntime.jsx("td", __assign({ className: "security-tab__cell-current-ver" }, { children: vulnerability.version })), jsxRuntime.jsx("td", __assign({ className: "security-tab__cell-fixed-ver" }, { children: vulnerability.fixedVersion })), jsxRuntime.jsx("td", __assign({ className: "security-tab__cell-policy security-tab__cell-policy--".concat((_b = vulnerability.policy) === null || _b === void 0 ? void 0 : _b.toLowerCase()) }, { children: (_c = vulnerability.policy) === null || _c === void 0 ? void 0 : _c.toLowerCase() }))] })));
|
|
24577
22957
|
};
|
|
24578
|
-
return (jsxRuntime.jsx("table", __assign({ className: "security-tab__table" }, { children: jsxRuntime.jsxs("tbody", { children: [jsxRuntime.jsxs("tr", __assign({ className: "security-tab__table-header" }, { children: [jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-cve" }, { children: "CVE" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-severity" }, { children: "Severity" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-package" }, { children: "Package" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-current-ver" }, { children: "Current Version" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-fixed-ver" }, { children: "Fixed In Version" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-policy" }, { children: "Policy" }))] })), vulnerabilities.map(function (vulnerability) {
|
|
24579
|
-
return renderRow(vulnerability);
|
|
24580
|
-
})] }) })));
|
|
22958
|
+
return (jsxRuntime.jsx("table", __assign({ className: "security-tab__table" }, { children: jsxRuntime.jsxs("tbody", { children: [jsxRuntime.jsxs("tr", __assign({ className: "security-tab__table-header" }, { children: [jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-cve" }, { children: "CVE" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-severity" }, { children: "Severity" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-package" }, { children: "Package" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-current-ver" }, { children: "Current Version" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-fixed-ver" }, { children: "Fixed In Version" })), jsxRuntime.jsx("th", __assign({ className: "security-cell-header security-tab__cell-policy" }, { children: "Policy" }))] })), vulnerabilities.map(function (vulnerability) { return renderRow(vulnerability); })] }) })));
|
|
24581
22959
|
}
|
|
24582
22960
|
|
|
24583
22961
|
var css_248z$1 = ".radio-group {\n height: 30px;\n background: white;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 4px;\n border-radius: 4px;\n}\n.radio-group .label,\n.radio-group .radio,\n.radio-group .checkbox {\n margin: 0;\n}\n.radio-group .radio {\n height: 100%;\n width: auto;\n color: var(--N400);\n display: flex;\n align-items: center;\n}\n.radio-group .radio + .radio {\n margin-top: 0;\n}\n.radio-group input[type=checkbox] {\n display: contents;\n overflow: hidden;\n max-width: 0px;\n height: 0;\n opacity: 0;\n margin: unset;\n}\n.radio-group input + .radio__item-label {\n padding: 4px 6px;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n transition: all 0.5s;\n cursor: pointer;\n}\n.radio-group input[type=checkbox]:checked + .radio__item-label {\n background: #2c3354;\n color: white;\n border-radius: 4px;\n}";
|
|
24584
22962
|
styleInject(css_248z$1);
|
|
24585
22963
|
|
|
24586
|
-
var RadioContext =
|
|
22964
|
+
var RadioContext = React__namespace.createContext(null);
|
|
24587
22965
|
function useRadioContext() {
|
|
24588
|
-
var context =
|
|
22966
|
+
var context = React__namespace.useContext(RadioContext);
|
|
24589
22967
|
if (!context) {
|
|
24590
22968
|
throw new Error("Radio compound components cannot be rendered outside the Toggle component");
|
|
24591
22969
|
}
|
|
24592
22970
|
return context;
|
|
24593
22971
|
}
|
|
24594
|
-
var RadioGroup =
|
|
22972
|
+
var RadioGroup = React__namespace.memo(function (_a) {
|
|
24595
22973
|
var name = _a.name, onChange = _a.onChange, children = _a.children, _b = _a.className, className = _b === void 0 ? '' : _b, initialTab = _a.initialTab, _c = _a.disabled, disabled = _c === void 0 ? false : _c; _a.dataTestId;
|
|
24596
22974
|
var _d = __read(React.useState(null), 2), selected = _d[0], select = _d[1];
|
|
24597
22975
|
React.useEffect(function () {
|
|
@@ -24601,7 +22979,7 @@ var RadioGroup = React.memo(function RadioGroup(_a) {
|
|
|
24601
22979
|
}, [initialTab]);
|
|
24602
22980
|
return (jsxRuntime.jsx(RadioContext.Provider, __assign({ value: { name: name, selected: selected, select: select, disabled: disabled, onChange: onChange } }, { children: jsxRuntime.jsx("div", __assign({ className: "".concat(className, " radio-group") }, { children: children })) })));
|
|
24603
22981
|
});
|
|
24604
|
-
function
|
|
22982
|
+
var Radio = function (_a) {
|
|
24605
22983
|
var value = _a.value, children = _a.children, _b = _a.className, className = _b === void 0 ? '' : _b, _c = _a.showTippy, showTippy = _c === void 0 ? false : _c, _d = _a.tippyContent, tippyContent = _d === void 0 ? '' : _d, _e = _a.tippyPlacement, tippyPlacement = _e === void 0 ? 'bottom' : _e, _f = _a.canSelect, canSelect = _f === void 0 ? true : _f, _g = _a.isDisabled, isDisabled = _g === void 0 ? false : _g, _h = _a.tippyClass, tippyClass = _h === void 0 ? '' : _h, dataTestId = _a.dataTestId;
|
|
24606
22984
|
var _j = useRadioContext(), name = _j.name, selected = _j.selected, select = _j.select, disabled = _j.disabled, onChange = _j.onChange;
|
|
24607
22985
|
return (jsxRuntime.jsx(ConditionalWrap, __assign({ condition: showTippy, wrap: function (children) { return (jsxRuntime.jsx(Tippy, __assign({ className: "default-tt w-250 ".concat(tippyClass), arrow: false, placement: tippyPlacement, content: tippyContent }, { children: children }))); } }, { children: jsxRuntime.jsxs("label", __assign({ className: "".concat(className, " radio ").concat(isDisabled || disabled ? 'disabled' : '') }, { children: [jsxRuntime.jsx("input", { type: "checkbox", value: value, name: name, checked: value === selected, onChange: function (e) {
|
|
@@ -24611,7 +22989,7 @@ function Radio(_a) {
|
|
|
24611
22989
|
}
|
|
24612
22990
|
onChange(e);
|
|
24613
22991
|
}, disabled: isDisabled || disabled }), jsxRuntime.jsx("span", __assign({ className: "radio__item-label", "data-testid": dataTestId }, { children: children }))] })) })));
|
|
24614
|
-
}
|
|
22992
|
+
};
|
|
24615
22993
|
RadioGroup.Radio = Radio;
|
|
24616
22994
|
|
|
24617
22995
|
exports.RefVariableType = void 0;
|
|
@@ -24697,7 +23075,7 @@ var SvgIcInfoFilled = function SvgIcInfoFilled(props) {
|
|
|
24697
23075
|
};
|
|
24698
23076
|
var info = "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2220%22%20height%3D%2220%22%20viewBox%3D%220%200%2032%2032%22%3E%20%20%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M0%200h32v32H0z%22%2F%3E%20%20%20%20%20%20%20%20%3Cpath%20fill%3D%22%2306C%22%20d%3D%22M16%202.667C8.64%202.667%202.667%208.64%202.667%2016S8.64%2029.333%2016%2029.333%2029.333%2023.36%2029.333%2016%2023.36%202.667%2016%202.667z%22%2F%3E%20%20%20%20%20%20%20%20%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M16%2014.667c.736%200%201.333.597%201.333%201.333v5.333a1.333%201.333%200%201%201-2.666%200V16c0-.736.597-1.333%201.333-1.333zm0-5.334A1.333%201.333%200%201%201%2016%2012a1.333%201.333%200%200%201%200-2.667z%22%2F%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E";
|
|
24699
23077
|
|
|
24700
|
-
function
|
|
23078
|
+
var DeleteComponent = function (_a) {
|
|
24701
23079
|
var setDeleting = _a.setDeleting, toggleConfirmation = _a.toggleConfirmation, deleteComponent = _a.deleteComponent, title = _a.title, component = _a.component, payload = _a.payload, _b = _a.confirmationDialogDescription, confirmationDialogDescription = _b === void 0 ? '' : _b, _c = _a.redirectTo, redirectTo = _c === void 0 ? false : _c, _d = _a.url, url = _d === void 0 ? '' : _d, reload = _a.reload, _e = _a.configuration, configuration = _e === void 0 ? '' : _e, closeCustomComponent = _a.closeCustomComponent;
|
|
24702
23080
|
var _f = __read(React.useState(false), 2), showCannotDeleteDialogModal = _f[0], setCannotDeleteDialogModal = _f[1];
|
|
24703
23081
|
var push = reactRouterDom.useHistory().push;
|
|
@@ -24747,14 +23125,10 @@ function DeleteComponent(_a) {
|
|
|
24747
23125
|
closeCustomComponent();
|
|
24748
23126
|
}
|
|
24749
23127
|
};
|
|
24750
|
-
var renderCannotDeleteDialogModal = function () {
|
|
24751
|
-
|
|
24752
|
-
};
|
|
24753
|
-
var renderDeleteDialog = function () {
|
|
24754
|
-
return (jsxRuntime.jsx(DeleteDialog, __assign({ title: "Delete ".concat(component, " '").concat(title, "'"), delete: handleDelete, closeDelete: function () { return toggleConfirmation(false); }, dataTestId: "delete-dialog" }, { children: jsxRuntime.jsx(DeleteDialog.Description, { children: jsxRuntime.jsxs("p", { children: ["Are you sure you want to delete this ", configuration ? configuration : component, "? "] }) }) })));
|
|
24755
|
-
};
|
|
23128
|
+
var renderCannotDeleteDialogModal = function () { return (jsxRuntime.jsxs(ConfirmationDialog, __assign({ className: "confirmation-dialog__body--w-360" }, { children: [jsxRuntime.jsx(ConfirmationDialog.Icon, { src: info }), jsxRuntime.jsx(ConfirmationDialog.Body, { title: "Cannot delete ".concat(component, " '").concat(title, "'") }), jsxRuntime.jsx("p", __assign({ className: "fs-13 cn-7 " }, { children: confirmationDialogDescription })), jsxRuntime.jsx(ConfirmationDialog.ButtonGroup, { children: jsxRuntime.jsx("button", __assign({ type: "button", className: "cta", onClick: handleConfirmation }, { children: "Okay" })) })] }))); };
|
|
23129
|
+
var renderDeleteDialog = function () { return (jsxRuntime.jsx(DeleteDialog, __assign({ title: "Delete ".concat(component, " '").concat(title, "'"), delete: handleDelete, closeDelete: function () { return toggleConfirmation(false); }, dataTestId: "delete-dialog" }, { children: jsxRuntime.jsx(DeleteDialog.Description, { children: jsxRuntime.jsxs("p", { children: ["Are you sure you want to delete this ", configuration || component, "? "] }) }) }))); };
|
|
24756
23130
|
return (jsxRuntime.jsxs("div", { children: [!showCannotDeleteDialogModal && renderDeleteDialog(), showCannotDeleteDialogModal && renderCannotDeleteDialogModal()] }));
|
|
24757
|
-
}
|
|
23131
|
+
};
|
|
24758
23132
|
|
|
24759
23133
|
var _path$5;
|
|
24760
23134
|
function _extends$9() { _extends$9 = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$9.apply(this, arguments); }
|
|
@@ -24878,13 +23252,13 @@ var ImageTagsContainer = function (_a) {
|
|
|
24878
23252
|
var
|
|
24879
23253
|
// Setting it to zero in case of external pipeline
|
|
24880
23254
|
ciPipelineId = _a.ciPipelineId, artifactId = _a.artifactId, imageComment = _a.imageComment, imageReleaseTags = _a.imageReleaseTags, updateCurrentAppMaterial = _a.updateCurrentAppMaterial, appReleaseTagNames = _a.appReleaseTagNames, setAppReleaseTagNames = _a.setAppReleaseTagNames, tagsEditable = _a.tagsEditable, setTagsEditable = _a.setTagsEditable, toggleCardMode = _a.toggleCardMode, hideHardDelete = _a.hideHardDelete, forceReInit = _a.forceReInit, isSuperAdmin = _a.isSuperAdmin;
|
|
24881
|
-
var _b = __read(React.useState(imageReleaseTags
|
|
23255
|
+
var _b = __read(React.useState(imageReleaseTags || []), 2), initialTags = _b[0], setInitialTags = _b[1];
|
|
24882
23256
|
var _c = __read(React.useState(imageComment ? imageComment.comment : ''), 2), initialDescription = _c[0], setInitialDescription = _c[1];
|
|
24883
|
-
var _d = __read(React.useState(appReleaseTagNames
|
|
23257
|
+
var _d = __read(React.useState(appReleaseTagNames || []), 2), existingTags = _d[0], setExistingTags = _d[1];
|
|
24884
23258
|
var _e = __read(React.useState(imageComment ? imageComment.comment : ''), 2), newDescription = _e[0], setNewDescription = _e[1];
|
|
24885
23259
|
var _f = __read(React.useState(false), 2), isEditing = _f[0], setIsEditing = _f[1];
|
|
24886
23260
|
var _g = __read(React.useState(false), 2), showTagsWarning = _g[0], setShowTagsWarning = _g[1];
|
|
24887
|
-
var _h = __read(React.useState(imageReleaseTags
|
|
23261
|
+
var _h = __read(React.useState(imageReleaseTags || []), 2), displayedTags = _h[0], setDisplayedTags = _h[1];
|
|
24888
23262
|
var _j = __read(React.useState(''), 2), tagErrorMessage = _j[0], setTagErrorMessage = _j[1];
|
|
24889
23263
|
var _k = __read(React.useState([]), 2), createTags = _k[0], setCreateTags = _k[1];
|
|
24890
23264
|
var _l = __read(React.useState([]), 2), softDeleteTags = _l[0], setSoftDeleteTags = _l[1];
|
|
@@ -24896,14 +23270,14 @@ var ImageTagsContainer = function (_a) {
|
|
|
24896
23270
|
reInitState();
|
|
24897
23271
|
}, [imageReleaseTags, imageComment, tagsEditable]);
|
|
24898
23272
|
React.useEffect(function () {
|
|
24899
|
-
setExistingTags(appReleaseTagNames
|
|
23273
|
+
setExistingTags(appReleaseTagNames || []);
|
|
24900
23274
|
}, [appReleaseTagNames]);
|
|
24901
23275
|
var reInitState = function () {
|
|
24902
23276
|
if (forceReInit || !isEditing) {
|
|
24903
|
-
setInitialTags(imageReleaseTags
|
|
23277
|
+
setInitialTags(imageReleaseTags || []);
|
|
24904
23278
|
setInitialDescription(imageComment ? imageComment.comment : '');
|
|
24905
23279
|
setNewDescription(imageComment ? imageComment.comment : '');
|
|
24906
|
-
setDisplayedTags(imageReleaseTags
|
|
23280
|
+
setDisplayedTags(imageReleaseTags || []);
|
|
24907
23281
|
setIsEditing(false);
|
|
24908
23282
|
}
|
|
24909
23283
|
};
|
|
@@ -25086,12 +23460,8 @@ var ImageTagsContainer = function (_a) {
|
|
|
25086
23460
|
return [2 /*return*/];
|
|
25087
23461
|
});
|
|
25088
23462
|
}); };
|
|
25089
|
-
var renderInfoCard = function () {
|
|
25090
|
-
|
|
25091
|
-
};
|
|
25092
|
-
var getBuildContextAdditionalContent = function () {
|
|
25093
|
-
return (jsxRuntime.jsxs("div", __assign({ className: "h-250 fs-13 dc__overflow-scroll p-12" }, { children: [jsxRuntime.jsx("div", { children: "Release tags allow you to tag container images with readable and relatable tags eg. v1.0." }), jsxRuntime.jsxs("ul", __assign({ className: "pl-20 mt-8" }, { children: [jsxRuntime.jsx("li", { children: "A release tag can only be added if a workflow has CD pipelines deploying to Production environments." }), jsxRuntime.jsx("li", { children: "Multiple tags can be added to an image." }), jsxRuntime.jsx("li", { children: "Multiple images in an application cannot have the same tag." }), jsxRuntime.jsx("li", { children: "Tags cannot be deleted once saved. Although, you can soft delete a tag if an unwanted tag has been added." })] }))] })));
|
|
25094
|
-
};
|
|
23463
|
+
var renderInfoCard = function () { return (jsxRuntime.jsx(TippyCustomized, __assign({ theme: exports.TippyTheme.white, className: "w-300 fcv-5", placement: "right", Icon: SvgIcHelp, heading: "Release tags", showCloseButton: true, trigger: "click", interactive: true, additionalContent: getBuildContextAdditionalContent() }, { children: jsxRuntime.jsx("div", __assign({ className: "flex" }, { children: jsxRuntime.jsx(SvgIcHelpOutline, { className: "fcn-5 ml-8 cursor icon-dim-16" }) })) }))); };
|
|
23464
|
+
var getBuildContextAdditionalContent = function () { return (jsxRuntime.jsxs("div", __assign({ className: "h-250 fs-13 dc__overflow-scroll p-12" }, { children: [jsxRuntime.jsx("div", { children: "Release tags allow you to tag container images with readable and relatable tags eg. v1.0." }), jsxRuntime.jsxs("ul", __assign({ className: "pl-20 mt-8" }, { children: [jsxRuntime.jsx("li", { children: "A release tag can only be added if a workflow has CD pipelines deploying to Production environments." }), jsxRuntime.jsx("li", { children: "Multiple tags can be added to an image." }), jsxRuntime.jsx("li", { children: "Multiple images in an application cannot have the same tag." }), jsxRuntime.jsx("li", { children: "Tags cannot be deleted once saved. Although, you can soft delete a tag if an unwanted tag has been added." })] }))] }))); };
|
|
25095
23465
|
var creatableRef = React.useRef(null);
|
|
25096
23466
|
if (newDescription === '' && displayedTags.length === 0 && !isEditing) {
|
|
25097
23467
|
return tagsEditable ? (jsxRuntime.jsx("div", __assign({ className: "bcn-0 mt-8 add-image-button" }, { children: jsxRuntime.jsx(AddImageButton, { handleEditClick: handleEditClick }) }))) : (jsxRuntime.jsx("div", {}));
|
|
@@ -25135,7 +23505,7 @@ var ImageTagsContainer = function (_a) {
|
|
|
25135
23505
|
}, disabled: loading }, { children: "Cancel" })), jsxRuntime.jsx("button", __assign({ className: "cta flex h-32 lh-32-imp ml-12", "data-testid": "save-tags-button", type: "button", onClick: function (e) {
|
|
25136
23506
|
stopPropagation(e);
|
|
25137
23507
|
onClickSave();
|
|
25138
|
-
}, disabled: loading }, { children: loading ? jsxRuntime.jsx(Progressing, {}) : 'Save' }))] }))] }))) : (jsxRuntime.jsxs("div", __assign({ className: "top br-4 bcn-0 image-tags-container flexbox" }, { children: [jsxRuntime.jsx("div", __assign({ className: "flex left image-tag-left-border w-100 mt-8 mb-8 pr-10 pl-10", "data-testid": "image-tags-container-hover" }, { children: jsxRuntime.jsxs("div", __assign({ className:
|
|
23508
|
+
}, disabled: loading }, { children: loading ? jsxRuntime.jsx(Progressing, {}) : 'Save' }))] }))] }))) : (jsxRuntime.jsxs("div", __assign({ className: "top br-4 bcn-0 image-tags-container flexbox" }, { children: [jsxRuntime.jsx("div", __assign({ className: "flex left image-tag-left-border w-100 mt-8 mb-8 pr-10 pl-10", "data-testid": "image-tags-container-hover" }, { children: jsxRuntime.jsxs("div", __assign({ className: "w-100" }, { children: [initialDescription && (jsxRuntime.jsx("div", __assign({ className: "mb-6 fs-13 lh-20 dc__word-break-all" }, { children: initialDescription }))), jsxRuntime.jsx("div", __assign({ className: "flex-wrap flex left" }, { children: initialTags === null || initialTags === void 0 ? void 0 : initialTags.map(function (tag, index) { return (jsxRuntime.jsx(ImageTagButton, { text: tag === null || tag === void 0 ? void 0 : tag.tagName, isSoftDeleted: tag === null || tag === void 0 ? void 0 : tag.deleted, isEditing: isEditing, onSoftDeleteClick: function (e) {
|
|
25139
23509
|
stopPropagation(e);
|
|
25140
23510
|
handleTagSoftDelete(index);
|
|
25141
23511
|
}, onHardDeleteClick: function (e) {
|
|
@@ -25155,12 +23525,10 @@ var ImageTagButton = function (_a) {
|
|
|
25155
23525
|
if (duplicateTag) {
|
|
25156
23526
|
return 'cr-5 bcr-1 er-2';
|
|
25157
23527
|
}
|
|
25158
|
-
|
|
23528
|
+
if (isSoftDeleted) {
|
|
25159
23529
|
return 'cy-7 bcy-1 dc__strike-through ey-2';
|
|
25160
23530
|
}
|
|
25161
|
-
|
|
25162
|
-
return 'cn-9';
|
|
25163
|
-
}
|
|
23531
|
+
return 'cn-9';
|
|
25164
23532
|
};
|
|
25165
23533
|
return (jsxRuntime.jsxs("div", __assign({ className: "br-4 en-2 bw-1 mr-8 bcn-0 mb-4 pt-2 pr-8 pb-2 pl-8 tag-class dc__word-break-all flex ".concat(isEditing ? 'icon-hover' : '', " ").concat(tabColor()) }, { children: [duplicateTag ? (jsxRuntime.jsx(SvgIcErrorExclamation, { className: "icon-dim-12 mr-4" })) : (jsxRuntime.jsx(Tippy, __assign({ className: "default-tt", arrow: true, placement: "top", content: isInSoftDeleteTags ? 'Restore tag' : 'Soft delete tag' }, { children: jsxRuntime.jsx("div", __assign({ className: "action-icon mr-4 lh-16 pt-3 ".concat(isInSoftDeleteTags || (tagId !== 0 && !isSoftDeleted) ? 'show-icon' : '') }, { children: jsxRuntime.jsx(IconComponent, { className: "icon-dim-12 cursor ".concat(isSoftDeleted ? 'scn-6' : 'fcn-6', " "), "data-testid": "".concat(text, "-tag-soft-delete"), onClick: onSoftDeleteClick }) })) }))), text, jsxRuntime.jsx(Tippy, __assign({ className: "default-tt", arrow: true, placement: "top", content: "Remove tag" }, { children: jsxRuntime.jsx("div", __assign({ className: "action-icon ml-4 lh-16 pt-3 ".concat(canTagBeHardDelete ? 'show-icon' : '') }, { children: jsxRuntime.jsx(SvgIcCross, { className: "icon-dim-12 fcn-6 cursor", "data-testid": "".concat(text, "-tag-hard-delete"), onClick: onHardDeleteClick }) })) }))] })));
|
|
25166
23534
|
};
|
|
@@ -25203,7 +23571,7 @@ var ResizableTextarea = function (_a) {
|
|
|
25203
23571
|
if (maxHeight && nextHeight > maxHeight) {
|
|
25204
23572
|
nextHeight = maxHeight;
|
|
25205
23573
|
}
|
|
25206
|
-
_textRef.current.style.height = nextHeight + 2
|
|
23574
|
+
_textRef.current.style.height = "".concat(nextHeight + 2, "px");
|
|
25207
23575
|
}, 500, [text]);
|
|
25208
23576
|
return (jsxRuntime.jsx("textarea", __assign({ "data-testid": dataTestId, ref: function (el) { return (_textRef.current = el); }, value: text, placeholder: placeholder, className: "dc__resizable-textarea ".concat(className), onChange: handleChange, onBlur: handleBlur, onFocus: handleFocus, style: { lineHeight: "".concat(lineHeight, "px"), padding: "".concat(padding, "px") }, spellCheck: false, disabled: disabled }, props)));
|
|
25209
23577
|
};
|
|
@@ -25282,7 +23650,7 @@ function DebouncedSearch(_a) {
|
|
|
25282
23650
|
// This is meant to be a reusable component that will provide a grid like dynamic layout where xs is the number of columns out of 12 that the item will take up
|
|
25283
23651
|
function Grid(_a) {
|
|
25284
23652
|
var container = _a.container, _b = _a.spacing, spacing = _b === void 0 ? 0 : _b, item = _a.item, xs = _a.xs, _c = _a.containerClass, containerClass = _c === void 0 ? '' : _c, _d = _a.itemClass, itemClass = _d === void 0 ? '' : _d, children = _a.children;
|
|
25285
|
-
var containerStyles = container ? { gap: spacing
|
|
23653
|
+
var containerStyles = container ? { gap: "".concat(spacing, "px") } : {};
|
|
25286
23654
|
if (item) {
|
|
25287
23655
|
var getColumnWidth = function () {
|
|
25288
23656
|
var percentageWidth = (xs / 12) * 100;
|
|
@@ -25436,15 +23804,13 @@ var triggerStatus = function (triggerDetailStatus) {
|
|
|
25436
23804
|
if (triggerStatus === TIMELINE_STATUS.ABORTED || triggerStatus === TIMELINE_STATUS.DEGRADED) {
|
|
25437
23805
|
return 'Failed';
|
|
25438
23806
|
}
|
|
25439
|
-
|
|
23807
|
+
if (triggerStatus === TIMELINE_STATUS.HEALTHY) {
|
|
25440
23808
|
return 'Succeeded';
|
|
25441
23809
|
}
|
|
25442
|
-
|
|
23810
|
+
if (triggerStatus === TIMELINE_STATUS.INPROGRESS) {
|
|
25443
23811
|
return 'Inprogress';
|
|
25444
23812
|
}
|
|
25445
|
-
|
|
25446
|
-
return triggerDetailStatus;
|
|
25447
|
-
}
|
|
23813
|
+
return triggerDetailStatus;
|
|
25448
23814
|
};
|
|
25449
23815
|
|
|
25450
23816
|
function AppStatus(_a) {
|
|
@@ -25463,12 +23829,10 @@ function AppStatus(_a) {
|
|
|
25463
23829
|
if (iconClass) {
|
|
25464
23830
|
return jsxRuntime.jsx("span", { className: "dc__app-summary__icon icon-dim-16 ".concat(iconClass, " ").concat(iconClass, "--node") });
|
|
25465
23831
|
}
|
|
25466
|
-
|
|
23832
|
+
if (isVirtualEnv) {
|
|
25467
23833
|
return (jsxRuntime.jsx("span", { className: "dc__app-summary__icon icon-dim-16 ".concat(StatusConstants.NOT_DEPLOYED.lowerCase, " ").concat(StatusConstants.NOT_DEPLOYED.lowerCase, "--node") }));
|
|
25468
23834
|
}
|
|
25469
|
-
|
|
25470
|
-
return (jsxRuntime.jsx(Tippy, __assign({ className: "default-tt w-200", arrow: false, placement: "top", content: "To fetch app status for GitOps based deployments open the app detail page" }, { children: jsxRuntime.jsx(SvgIcInfoOutlined, { className: "icon-dim-16 fcn-6" }) })));
|
|
25471
|
-
}
|
|
23835
|
+
return (jsxRuntime.jsx(Tippy, __assign({ className: "default-tt w-200", arrow: false, placement: "top", content: "To fetch app status for GitOps based deployments open the app detail page" }, { children: jsxRuntime.jsx(SvgIcInfoOutlined, { className: "icon-dim-16 fcn-6" }) })));
|
|
25472
23836
|
};
|
|
25473
23837
|
return hideStatusMessage ? (iconClass || isVirtualEnv ? (jsxRuntime.jsx(Tippy, __assign({ className: "default-tt", arrow: false, placement: "top", content: textContent }, { children: jsxRuntime.jsx("div", __assign({ className: "flex" }, { children: renderIcon() })) }))) : (renderIcon())) : (jsxRuntime.jsxs("div", __assign({ className: "flex left" }, { children: [jsxRuntime.jsx("div", __assign({ className: "flex mr-6" }, { children: renderIcon() })), jsxRuntime.jsx("p", __assign({ "data-testid": "".concat(status, "-app-status"), className: "dc__truncate-text dc__first-letter-capitalize cn-6 m-0" }, { children: textContent }))] })));
|
|
25474
23838
|
}
|
|
@@ -25556,9 +23920,7 @@ var FieldErrorTemplate = function (_a) {
|
|
|
25556
23920
|
var id = utils.errorId(idSchema);
|
|
25557
23921
|
return (errors.length > 0 && (jsxRuntime.jsx("span", __assign({ id: id }, { children: errors
|
|
25558
23922
|
.filter(function (elem) { return !!elem; })
|
|
25559
|
-
.map(function (error, index) {
|
|
25560
|
-
return (jsxRuntime.jsxs("span", __assign({ className: "form__error" }, { children: [jsxRuntime.jsx(SvgIcWarning, { className: "form__icon form__icon--error" }), error] }), index));
|
|
25561
|
-
}) }))));
|
|
23923
|
+
.map(function (error, index) { return (jsxRuntime.jsxs("span", __assign({ className: "form__error" }, { children: [jsxRuntime.jsx(SvgIcWarning, { className: "form__icon form__icon--error" }), error] }), index)); }) }))));
|
|
25562
23924
|
};
|
|
25563
23925
|
|
|
25564
23926
|
var Field = function (_a) {
|
|
@@ -25571,9 +23933,7 @@ var Field = function (_a) {
|
|
|
25571
23933
|
if (properties.length) {
|
|
25572
23934
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(FieldRowWithLabel, __assign({ label: title, required: required, showLabel: true, id: idSchema.$id, shouldAlignCenter: false }, { children: jsxRuntime.jsx("div", { children: Properties }) })), ActionButton] }));
|
|
25573
23935
|
}
|
|
25574
|
-
|
|
25575
|
-
return (jsxRuntime.jsx(FieldRowWithLabel, __assign({ label: title, required: required, showLabel: true, id: idSchema.$id }, { children: ActionButton })));
|
|
25576
|
-
}
|
|
23936
|
+
return (jsxRuntime.jsx(FieldRowWithLabel, __assign({ label: title, required: required, showLabel: true, id: idSchema.$id }, { children: ActionButton })));
|
|
25577
23937
|
}
|
|
25578
23938
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [Properties, ActionButton] }));
|
|
25579
23939
|
};
|
|
@@ -28063,9 +26423,7 @@ var translateString = function (stringToTranslate, params) {
|
|
|
28063
26423
|
};
|
|
28064
26424
|
var getCommonSelectStyle = function (styleOverrides) {
|
|
28065
26425
|
if (styleOverrides === void 0) { styleOverrides = {}; }
|
|
28066
|
-
return __assign({ menuList: function (base) { return (__assign(__assign({}, base), { paddingTop: 0, paddingBottom: 0 })); }, control: function (base, state) { return (__assign(__assign({}, base), { minHeight: '32px', boxShadow: 'none', backgroundColor: 'var(--N50)', border: state.isFocused ? '1px solid var(--B500)' : '1px solid var(--N200)', cursor: 'pointer' })); }, option: function (base, state) { return (__assign(__assign({}, base), { color: 'var(--N900)', backgroundColor: state.isFocused ? 'var(--N100)' : 'white', padding: '10px 12px' })); }, dropdownIndicator: function (base, state) { return (__assign(__assign({}, base), { color: 'var(--N400)', padding: '0 8px', transition: 'all .2s ease', transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : 'rotate(0deg)' })); }, valueContainer: function (base, state) { return (__assign(__assign({}, base), { padding: '0 8px', fontWeight: '400', color: state.selectProps.menuIsOpen ? 'var(--N500)' : base.color })); }, loadingMessage: function (base) { return (__assign(__assign({}, base), { color: 'var(--N600)' })); }, noOptionsMessage: function (base) { return (__assign(__assign({}, base), { color: 'var(--N600)' })); }, multiValue: function (base, state) {
|
|
28067
|
-
return __assign(__assign({}, base), { border: "1px solid var(--N200)", borderRadius: "4px", background: 'white', height: '28px', marginRight: '8px', padding: '2px', fontSize: '12px' });
|
|
28068
|
-
} }, styleOverrides);
|
|
26426
|
+
return (__assign({ menuList: function (base) { return (__assign(__assign({}, base), { paddingTop: 0, paddingBottom: 0 })); }, control: function (base, state) { return (__assign(__assign({}, base), { minHeight: '32px', boxShadow: 'none', backgroundColor: 'var(--N50)', border: state.isFocused ? '1px solid var(--B500)' : '1px solid var(--N200)', cursor: 'pointer' })); }, option: function (base, state) { return (__assign(__assign({}, base), { color: 'var(--N900)', backgroundColor: state.isFocused ? 'var(--N100)' : 'white', padding: '10px 12px' })); }, dropdownIndicator: function (base, state) { return (__assign(__assign({}, base), { color: 'var(--N400)', padding: '0 8px', transition: 'all .2s ease', transform: state.selectProps.menuIsOpen ? 'rotate(180deg)' : 'rotate(0deg)' })); }, valueContainer: function (base, state) { return (__assign(__assign({}, base), { padding: '0 8px', fontWeight: '400', color: state.selectProps.menuIsOpen ? 'var(--N500)' : base.color })); }, loadingMessage: function (base) { return (__assign(__assign({}, base), { color: 'var(--N600)' })); }, noOptionsMessage: function (base) { return (__assign(__assign({}, base), { color: 'var(--N600)' })); }, multiValue: function (base, state) { return (__assign(__assign({}, base), { border: "1px solid var(--N200)", borderRadius: "4px", background: 'white', height: '28px', marginRight: '8px', padding: '2px', fontSize: '12px' })); } }, styleOverrides));
|
|
28069
26427
|
};
|
|
28070
26428
|
/**
|
|
28071
26429
|
* Returns the redirection props for a url
|
|
@@ -28224,65 +26582,18 @@ var SvgIcRotateDevtron = function SvgIcRotateDevtron(props) {
|
|
|
28224
26582
|
}))));
|
|
28225
26583
|
};
|
|
28226
26584
|
|
|
28227
|
-
function
|
|
26585
|
+
var DevtronProgressing = function (_a) {
|
|
28228
26586
|
var classes = _a.classes, parentClasses = _a.parentClasses;
|
|
28229
|
-
return (jsxRuntime.jsx("div", __assign({ className: parentClasses
|
|
28230
|
-
}
|
|
28231
|
-
|
|
28232
|
-
// @TODO: Generalize this component to be used in CodeEditor as Chart selector toolbar
|
|
28233
|
-
// when the Code Editor is moved to the fe-common-lib
|
|
28234
|
-
var ChartVersionAndTypeSelector = function (_a) {
|
|
28235
|
-
var setSelectedChartRefId = _a.setSelectedChartRefId;
|
|
28236
|
-
var _b = __read(React.useState([]), 2), charts = _b[0], setCharts = _b[1];
|
|
28237
|
-
var _c = __read(React.useState(null), 2), selectedChartType = _c[0], setSelectedChartType = _c[1];
|
|
28238
|
-
var _d = __read(React.useState([]), 2), chartVersionOptions = _d[0], setChartVersionOptions = _d[1];
|
|
28239
|
-
var _e = __read(React.useState([]), 2), chartTypeOptions = _e[0], setChartTypeOptions = _e[1];
|
|
28240
|
-
var _f = __read(React.useState(null), 2), selectedChartVersion = _f[0], setSelectedChartVersion = _f[1];
|
|
28241
|
-
React.useEffect(function () {
|
|
28242
|
-
fetchChartTemplateVersions()
|
|
28243
|
-
.then(function (res) {
|
|
28244
|
-
var charts = (res === null || res === void 0 ? void 0 : res.result) || [];
|
|
28245
|
-
setCharts(charts);
|
|
28246
|
-
// Extract unique chart types from the data
|
|
28247
|
-
var chartTypeOptions = __spreadArray([], __read(new Set(charts.map(function (item) { return item.chartType; }))), false).map(function (type) { return ({
|
|
28248
|
-
value: type,
|
|
28249
|
-
label: type,
|
|
28250
|
-
}); });
|
|
28251
|
-
setChartTypeOptions(chartTypeOptions);
|
|
28252
|
-
var filteredVersions = getFilteredChartVersions(charts, chartTypeOptions[0]);
|
|
28253
|
-
selectFirstChartVersion(filteredVersions);
|
|
28254
|
-
})
|
|
28255
|
-
.catch(function (err) {
|
|
28256
|
-
showError(err);
|
|
28257
|
-
});
|
|
28258
|
-
}, []);
|
|
28259
|
-
var selectFirstChartVersion = function (filteredVersions) {
|
|
28260
|
-
var _a;
|
|
28261
|
-
setChartVersionOptions(filteredVersions);
|
|
28262
|
-
setSelectedChartVersion(filteredVersions[0]); // Select the first chart version by default
|
|
28263
|
-
setSelectedChartRefId((_a = filteredVersions[0]) === null || _a === void 0 ? void 0 : _a.chartRefId);
|
|
28264
|
-
};
|
|
28265
|
-
// Function to update chart version options based on selected chart type
|
|
28266
|
-
var handleChartTypeChange = function (selectedOption) {
|
|
28267
|
-
setSelectedChartType(selectedOption);
|
|
28268
|
-
var filteredVersions = getFilteredChartVersions(charts, selectedOption);
|
|
28269
|
-
selectFirstChartVersion(filteredVersions);
|
|
28270
|
-
};
|
|
28271
|
-
// Function to handle the change of the selected chart version
|
|
28272
|
-
var handleChartVersionChange = function (selectedOption) {
|
|
28273
|
-
setSelectedChartVersion(selectedOption);
|
|
28274
|
-
setSelectedChartRefId(selectedOption.chartRefId);
|
|
28275
|
-
};
|
|
28276
|
-
return (jsxRuntime.jsxs("div", __assign({ className: "flex" }, { children: [jsxRuntime.jsxs("div", __assign({ className: "chart-type-options flex", "data-testid": "chart-type-options" }, { children: [jsxRuntime.jsx("span", __assign({ className: "chart-type-options-label mr-4" }, { children: "Chart Type" })), jsxRuntime.jsx(ReactSelect, { value: selectedChartType !== null && selectedChartType !== void 0 ? selectedChartType : chartTypeOptions[0], options: chartTypeOptions, onChange: handleChartTypeChange, styles: customStyles })] })), jsxRuntime.jsxs("div", __assign({ className: "chart-version-options flex", "data-testid": "chart-version-options" }, { children: [jsxRuntime.jsx("span", __assign({ className: "chart-version-options-label mr-4" }, { children: "Chart Version" })), jsxRuntime.jsx(ReactSelect, { value: selectedChartVersion !== null && selectedChartVersion !== void 0 ? selectedChartVersion : chartVersionOptions[0], options: chartVersionOptions, onChange: handleChartVersionChange, styles: customStyles })] }))] })));
|
|
26587
|
+
return (jsxRuntime.jsx("div", __assign({ className: parentClasses || '' }, { children: jsxRuntime.jsx(SvgIcRotateDevtron, { className: classes || '' }) })));
|
|
28277
26588
|
};
|
|
28278
26589
|
|
|
28279
|
-
function
|
|
26590
|
+
var TooltipContent = function (_a) {
|
|
28280
26591
|
var tooltipContent = _a.tooltipContent;
|
|
28281
26592
|
if (tooltipContent) {
|
|
28282
26593
|
return (jsxRuntime.jsxs("div", __assign({ className: "dc__white-space-pre-wrap" }, { children: [jsxRuntime.jsx("p", __assign({ className: "m-0 cn-0 fs-12 fw-6 lh-18" }, { children: "Click to add" })), tooltipContent] })));
|
|
28283
26594
|
}
|
|
28284
26595
|
return jsxRuntime.jsx("div", __assign({ className: "dc__white-space-pre-wrap" }, { children: "Click to add here" }));
|
|
28285
|
-
}
|
|
26596
|
+
};
|
|
28286
26597
|
function AddCDButton(_a) {
|
|
28287
26598
|
var position = _a.position, addCDButtons = _a.addCDButtons, endNode = _a.endNode, startNode = _a.startNode, handleAddCD = _a.handleAddCD, tooltipContent = _a.tooltipContent;
|
|
28288
26599
|
var referenceNode = position === exports.AddCDPositions.RIGHT ? endNode : startNode;
|
|
@@ -28318,7 +26629,7 @@ var handleAddCD = function (_a) {
|
|
|
28318
26629
|
handleCDSelect(workflowId, ciPipelineId, pipelineType, startNode.id, isWebhookCD, endNodeId, addPipelineType);
|
|
28319
26630
|
};
|
|
28320
26631
|
|
|
28321
|
-
function
|
|
26632
|
+
var CustomInput = function (_a) {
|
|
28322
26633
|
var name = _a.name, value = _a.value, error = _a.error, onChange = _a.onChange, _b = _a.onFocus, onFocus = _b === void 0 ? function (e) { } : _b, label = _a.label, _c = _a.type, type = _c === void 0 ? 'text' : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.labelClassName, labelClassName = _e === void 0 ? '' : _e, _f = _a.placeholder, placeholder = _f === void 0 ? '' : _f, _g = _a.tabIndex, tabIndex = _g === void 0 ? 1 : _g, _h = _a.dataTestid, dataTestid = _h === void 0 ? '' : _h, _j = _a.isRequiredField, isRequiredField = _j === void 0 ? false : _j, _k = _a.autoFocus, autoFocus = _k === void 0 ? false : _k, _l = _a.rootClassName, rootClassName = _l === void 0 ? '' : _l, _m = _a.autoComplete, autoComplete = _m === void 0 ? 'off' : _m, _o = _a.helperText, helperText = _o === void 0 ? '' : _o, handleOnBlur = _a.handleOnBlur, _p = _a.readOnly, readOnly = _p === void 0 ? false : _p, _q = _a.noTrim, noTrim = _q === void 0 ? false : _q, ref = _a.ref, onKeyPress = _a.onKeyPress, defaultValue = _a.defaultValue, onKeyDown = _a.onKeyDown, required = _a.required, additionalErrorInfo = _a.additionalErrorInfo;
|
|
28323
26634
|
function handleError(error) {
|
|
28324
26635
|
if (!Array.isArray(error)) {
|
|
@@ -28328,7 +26639,7 @@ function CustomInput(_a) {
|
|
|
28328
26639
|
}
|
|
28329
26640
|
var onBlur = function (event) {
|
|
28330
26641
|
var _a;
|
|
28331
|
-
//NOTE: This is to prevent the input from being trimmed when the user do not want to trim the input
|
|
26642
|
+
// NOTE: This is to prevent the input from being trimmed when the user do not want to trim the input
|
|
28332
26643
|
if (!noTrim) {
|
|
28333
26644
|
event.stopPropagation();
|
|
28334
26645
|
event.target.value = (_a = event.target.value) === null || _a === void 0 ? void 0 : _a.trim();
|
|
@@ -28338,41 +26649,33 @@ function CustomInput(_a) {
|
|
|
28338
26649
|
handleOnBlur(event);
|
|
28339
26650
|
}
|
|
28340
26651
|
};
|
|
28341
|
-
var renderFormErrorWithIcon = function (error) {
|
|
28342
|
-
return (jsxRuntime.jsxs("div", __assign({ className: "form__error" }, { children: [jsxRuntime.jsx(SvgIcWarning, { className: "form__icon form__icon--error" }), error, typeof additionalErrorInfo === 'function' && additionalErrorInfo()] }), error));
|
|
28343
|
-
};
|
|
26652
|
+
var renderFormErrorWithIcon = function (error) { return (jsxRuntime.jsxs("div", __assign({ className: "form__error" }, { children: [jsxRuntime.jsx(SvgIcWarning, { className: "form__icon form__icon--error" }), error, typeof additionalErrorInfo === 'function' && additionalErrorInfo()] }), error)); };
|
|
28344
26653
|
var getInputError = function () {
|
|
28345
26654
|
if (!(error === null || error === void 0 ? void 0 : error.length)) {
|
|
28346
26655
|
return null;
|
|
28347
26656
|
}
|
|
28348
|
-
|
|
28349
|
-
|
|
28350
|
-
return handleError(error).map(function (err) { return renderFormErrorWithIcon(err); });
|
|
28351
|
-
}
|
|
28352
|
-
return renderFormErrorWithIcon(error);
|
|
26657
|
+
if (typeof error === 'object') {
|
|
26658
|
+
return handleError(error).map(function (err) { return renderFormErrorWithIcon(err); });
|
|
28353
26659
|
}
|
|
26660
|
+
return renderFormErrorWithIcon(error);
|
|
28354
26661
|
};
|
|
28355
26662
|
var renderInputLabelConditionally = function () {
|
|
28356
26663
|
if (typeof label === 'string') {
|
|
28357
26664
|
return jsxRuntime.jsx("span", __assign({ className: "".concat(isRequiredField ? 'dc__required-field' : '') }, { children: label }));
|
|
28358
26665
|
}
|
|
28359
|
-
|
|
28360
|
-
return label;
|
|
28361
|
-
}
|
|
26666
|
+
return label;
|
|
28362
26667
|
};
|
|
28363
26668
|
var renderInputLabel = function () {
|
|
28364
26669
|
if (!label) {
|
|
28365
26670
|
return null;
|
|
28366
26671
|
}
|
|
28367
|
-
|
|
28368
|
-
return (jsxRuntime.jsx("label", __assign({ className: "form__label ".concat(labelClassName), "data-testid": "label-".concat(dataTestid) }, { children: renderInputLabelConditionally() })));
|
|
28369
|
-
}
|
|
26672
|
+
return (jsxRuntime.jsx("label", __assign({ className: "form__label ".concat(labelClassName), "data-testid": "label-".concat(dataTestid) }, { children: renderInputLabelConditionally() })));
|
|
28370
26673
|
};
|
|
28371
26674
|
return (jsxRuntime.jsxs("div", __assign({ className: "flex column left top" }, { children: [renderInputLabel(), jsxRuntime.jsx("input", { "data-testid": dataTestid, type: type, name: name, autoComplete: autoComplete, className: "form__input ".concat(rootClassName), onChange: function (e) {
|
|
28372
26675
|
e.persist();
|
|
28373
26676
|
onChange(e);
|
|
28374
26677
|
}, onBlur: onBlur, onFocus: onFocus, placeholder: placeholder, value: value, disabled: disabled, tabIndex: tabIndex, autoFocus: autoFocus, readOnly: readOnly, ref: ref, onKeyPress: onKeyPress, defaultValue: defaultValue, onKeyDown: onKeyDown, required: required }), getInputError(), helperText && (jsxRuntime.jsxs("div", __assign({ className: "form__text-field-info" }, { children: [jsxRuntime.jsx(SvgIcInfoFilled, { className: "form__icon form__icon--info" }), jsxRuntime.jsx("p", __assign({ className: "sentence-case" }, { children: helperText }))] })))] })));
|
|
28375
|
-
}
|
|
26678
|
+
};
|
|
28376
26679
|
|
|
28377
26680
|
exports.AddCDButton = AddCDButton;
|
|
28378
26681
|
exports.AppStatus = AppStatus;
|
|
@@ -28380,7 +26683,6 @@ exports.BreadCrumb = BreadCrumb;
|
|
|
28380
26683
|
exports.BreadcrumbStore = Store;
|
|
28381
26684
|
exports.BuildStageVariable = BuildStageVariable;
|
|
28382
26685
|
exports.CDModalTab = CDModalTab;
|
|
28383
|
-
exports.ChartVersionAndTypeSelector = ChartVersionAndTypeSelector;
|
|
28384
26686
|
exports.Checkbox = Checkbox$1;
|
|
28385
26687
|
exports.ClearIndicator = ClearIndicator;
|
|
28386
26688
|
exports.ClipboardButton = ClipboardButton;
|
|
@@ -28453,22 +26755,17 @@ exports.VisibleModal2 = VisibleModal2;
|
|
|
28453
26755
|
exports.closeOnEscKeyPressed = closeOnEscKeyPressed;
|
|
28454
26756
|
exports.copyToClipboard = copyToClipboard;
|
|
28455
26757
|
exports.createGitCommitUrl = createGitCommitUrl;
|
|
28456
|
-
exports.customStyles = customStyles;
|
|
28457
26758
|
exports.extractImage = extractImage;
|
|
28458
|
-
exports.fetchChartTemplateVersions = fetchChartTemplateVersions;
|
|
28459
26759
|
exports.genericCDMaterialsService = genericCDMaterialsService;
|
|
28460
26760
|
exports.get = get;
|
|
28461
26761
|
exports.getAlphabetIcon = getAlphabetIcon;
|
|
28462
26762
|
exports.getCookie = getCookie;
|
|
28463
26763
|
exports.getEmptyArrayOfLength = getEmptyArrayOfLength;
|
|
28464
|
-
exports.getFilteredChartVersions = getFilteredChartVersions;
|
|
28465
26764
|
exports.getInferredTypeFromValueType = getInferredTypeFromValueType;
|
|
28466
|
-
exports.getLockedJSON = getLockedJSON;
|
|
28467
26765
|
exports.getLoginInfo = getLoginInfo;
|
|
28468
26766
|
exports.getRandomColor = getRandomColor;
|
|
28469
26767
|
exports.getRedirectionProps = getRedirectionProps;
|
|
28470
26768
|
exports.getTeamListMin = getTeamListMin;
|
|
28471
|
-
exports.getUnlockedJSON = getUnlockedJSON;
|
|
28472
26769
|
exports.getUrlWithSearchParams = getUrlWithSearchParams;
|
|
28473
26770
|
exports.getUserRole = getUserRole;
|
|
28474
26771
|
exports.handleAddCD = handleAddCD;
|