@devtron-labs/devtron-fe-common-lib 0.0.48-beta-5 → 0.0.48-beta-7
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 +4 -0
- package/.lintstagedrc +5 -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/Constants.d.ts +1 -1
- 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 -3
- 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 -55
- package/dist/index.d.ts +1 -1
- package/dist/index.js +391 -2023
- 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 -64
- package/src/Common/Constants.ts +10 -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 -87
- 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 -70
- package/src/custom.d.ts +7 -7
- package/src/index.ts +1 -1
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);
|
|
@@ -48,7 +47,7 @@ var ROUTES = {
|
|
|
48
47
|
PROJECT_LIST_MIN: 'team/autocomplete',
|
|
49
48
|
USER_CHECK_ROLE: 'user/check/roles',
|
|
50
49
|
IMAGE_TAGGING: 'app/image-tagging',
|
|
51
|
-
CD_MATERIAL_GET: 'app/cd-pipeline'
|
|
50
|
+
CD_MATERIAL_GET: 'app/cd-pipeline',
|
|
52
51
|
};
|
|
53
52
|
exports.KEY_VALUE = void 0;
|
|
54
53
|
(function (KEY_VALUE) {
|
|
@@ -252,9 +251,9 @@ var REGISTRY_TYPE_MAP = {
|
|
|
252
251
|
},
|
|
253
252
|
};
|
|
254
253
|
var RepositoryAction = {
|
|
255
|
-
CONTAINER:
|
|
256
|
-
CHART_PULL:
|
|
257
|
-
CHART_PUSH:
|
|
254
|
+
CONTAINER: 'CONTAINER',
|
|
255
|
+
CHART_PULL: 'CHART_PULL',
|
|
256
|
+
CHART_PUSH: 'CHART_PUSH',
|
|
258
257
|
};
|
|
259
258
|
|
|
260
259
|
/******************************************************************************
|
|
@@ -271,7 +270,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
271
270
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
272
271
|
PERFORMANCE OF THIS SOFTWARE.
|
|
273
272
|
***************************************************************************** */
|
|
274
|
-
/* global Reflect, Promise */
|
|
273
|
+
/* global Reflect, Promise, SuppressedError, Symbol */
|
|
275
274
|
|
|
276
275
|
var extendStatics = function(d, b) {
|
|
277
276
|
extendStatics = Object.setPrototypeOf ||
|
|
@@ -280,7 +279,7 @@ var extendStatics = function(d, b) {
|
|
|
280
279
|
return extendStatics(d, b);
|
|
281
280
|
};
|
|
282
281
|
|
|
283
|
-
function __extends
|
|
282
|
+
function __extends(d, b) {
|
|
284
283
|
if (typeof b !== "function" && b !== null)
|
|
285
284
|
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
286
285
|
extendStatics(d, b);
|
|
@@ -374,7 +373,12 @@ function __spreadArray(to, from, pack) {
|
|
|
374
373
|
}
|
|
375
374
|
}
|
|
376
375
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
377
|
-
}
|
|
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
|
+
};
|
|
378
382
|
|
|
379
383
|
var ServerError = /** @class */ (function () {
|
|
380
384
|
function ServerError(error) {
|
|
@@ -386,7 +390,7 @@ var ServerError = /** @class */ (function () {
|
|
|
386
390
|
return ServerError;
|
|
387
391
|
}());
|
|
388
392
|
var ServerErrors = /** @class */ (function (_super) {
|
|
389
|
-
__extends
|
|
393
|
+
__extends(ServerErrors, _super);
|
|
390
394
|
function ServerErrors(obj) {
|
|
391
395
|
var _this = _super.call(this) || this;
|
|
392
396
|
_this.code = obj.code;
|
|
@@ -576,7 +580,7 @@ function handleServerError(contentType, response) {
|
|
|
576
580
|
status = response.statusText || responseMessages[code];
|
|
577
581
|
serverError = new ServerErrors({ code: code, errors: [] });
|
|
578
582
|
if (!(contentType !== 'application/json')) return [3 /*break*/, 1];
|
|
579
|
-
//used for better debugging,
|
|
583
|
+
// used for better debugging,
|
|
580
584
|
status = "".concat(responseMessages[code], ". Please try again.");
|
|
581
585
|
return [3 /*break*/, 3];
|
|
582
586
|
case 1: return [4 /*yield*/, response.json()];
|
|
@@ -604,8 +608,8 @@ function fetchAPI(url, type, data, signal, preventAutoLogout, isMultipartRequest
|
|
|
604
608
|
method: type,
|
|
605
609
|
signal: signal,
|
|
606
610
|
body: data ? JSON.stringify(data) : undefined,
|
|
611
|
+
credentials: 'include',
|
|
607
612
|
};
|
|
608
|
-
options['credentials'] = 'include';
|
|
609
613
|
return [2 /*return*/, fetch("".concat(Host, "/").concat(url), !isMultipartRequest
|
|
610
614
|
? options
|
|
611
615
|
: {
|
|
@@ -638,17 +642,17 @@ function fetchAPI(url, type, data, signal, preventAutoLogout, isMultipartRequest
|
|
|
638
642
|
if (contentType === 'application/json') {
|
|
639
643
|
return [2 /*return*/, response.json().then(function (responseBody) {
|
|
640
644
|
if (responseBody.code >= 300 && responseBody.code <= 599) {
|
|
641
|
-
//Test Code in Response Body, despite successful HTTP Response Code
|
|
645
|
+
// Test Code in Response Body, despite successful HTTP Response Code
|
|
642
646
|
throw new ServerErrors({ code: responseBody.code, errors: responseBody.errors });
|
|
643
647
|
}
|
|
644
648
|
else {
|
|
645
|
-
//Successfull Response. Expected Response Type {code, result, status}
|
|
649
|
+
// Successfull Response. Expected Response Type {code, result, status}
|
|
646
650
|
return responseBody;
|
|
647
651
|
}
|
|
648
652
|
})];
|
|
649
653
|
}
|
|
650
|
-
|
|
651
|
-
//used in getArtifact() API only
|
|
654
|
+
if (contentType === 'octet-stream' || contentType === 'application/octet-stream') {
|
|
655
|
+
// used in getArtifact() API only
|
|
652
656
|
return [2 /*return*/, response];
|
|
653
657
|
}
|
|
654
658
|
_a.label = 4;
|
|
@@ -656,7 +660,7 @@ function fetchAPI(url, type, data, signal, preventAutoLogout, isMultipartRequest
|
|
|
656
660
|
}
|
|
657
661
|
});
|
|
658
662
|
}); }, function (error) {
|
|
659
|
-
//Network call fails. Handle Failed to Fetch
|
|
663
|
+
// Network call fails. Handle Failed to Fetch
|
|
660
664
|
var err = {
|
|
661
665
|
code: 0,
|
|
662
666
|
userMessage: error.message,
|
|
@@ -702,15 +706,11 @@ function fetchInTime(url, type, data, options, isMultipartRequest) {
|
|
|
702
706
|
}
|
|
703
707
|
});
|
|
704
708
|
}
|
|
705
|
-
var post = function (url, data, options, isMultipartRequest) {
|
|
706
|
-
return fetchInTime(url, 'POST', data, options, isMultipartRequest);
|
|
707
|
-
};
|
|
709
|
+
var post = function (url, data, options, isMultipartRequest) { return fetchInTime(url, 'POST', data, options, isMultipartRequest); };
|
|
708
710
|
var put = function (url, data, options) {
|
|
709
711
|
return fetchInTime(url, 'PUT', data, options);
|
|
710
712
|
};
|
|
711
|
-
var get = function (url, options) {
|
|
712
|
-
return fetchInTime(url, 'GET', null, options);
|
|
713
|
-
};
|
|
713
|
+
var get = function (url, options) { return fetchInTime(url, 'GET', null, options); };
|
|
714
714
|
var trash = function (url, data, options) {
|
|
715
715
|
return fetchInTime(url, 'DELETE', data, options);
|
|
716
716
|
};
|
|
@@ -769,10 +769,10 @@ var SvgIcProgressing = function SvgIcProgressing(props) {
|
|
|
769
769
|
}))));
|
|
770
770
|
};
|
|
771
771
|
|
|
772
|
-
function
|
|
772
|
+
var EmptyState = function (_a) {
|
|
773
773
|
var children = _a.children, _b = _a.className, className = _b === void 0 ? '' : _b;
|
|
774
774
|
return (jsxRuntime.jsx("div", __assign({ className: "flex column empty-state w-100 h-100 ".concat(className) }, { children: children })));
|
|
775
|
-
}
|
|
775
|
+
};
|
|
776
776
|
function Image(_a) {
|
|
777
777
|
var children = _a.children;
|
|
778
778
|
return children;
|
|
@@ -781,17 +781,15 @@ function Title(_a) {
|
|
|
781
781
|
var children = _a.children;
|
|
782
782
|
return children;
|
|
783
783
|
}
|
|
784
|
-
function
|
|
784
|
+
var Subtitle = function (_a) {
|
|
785
785
|
var children = _a.children, className = _a.className;
|
|
786
|
-
return jsxRuntime.jsx("p", __assign({ className: "subtitle ".concat(className || '') }, { children: children }));
|
|
787
|
-
}
|
|
786
|
+
return (jsxRuntime.jsx("p", __assign({ className: "subtitle ".concat(className || '') }, { children: children })));
|
|
787
|
+
};
|
|
788
788
|
function Button$1(_a) {
|
|
789
789
|
var children = _a.children;
|
|
790
790
|
return children;
|
|
791
791
|
}
|
|
792
|
-
var Loading = function (props) {
|
|
793
|
-
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 }))] });
|
|
794
|
-
};
|
|
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 }))] })); };
|
|
795
793
|
EmptyState.Image = Image;
|
|
796
794
|
EmptyState.Title = Title;
|
|
797
795
|
EmptyState.Subtitle = Subtitle;
|
|
@@ -2174,7 +2172,7 @@ eventManager.on(2
|
|
|
2174
2172
|
});
|
|
2175
2173
|
|
|
2176
2174
|
var ToastBody = /** @class */ (function (_super) {
|
|
2177
|
-
__extends
|
|
2175
|
+
__extends(ToastBody, _super);
|
|
2178
2176
|
function ToastBody() {
|
|
2179
2177
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2180
2178
|
}
|
|
@@ -2184,7 +2182,7 @@ var ToastBody = /** @class */ (function (_super) {
|
|
|
2184
2182
|
return ToastBody;
|
|
2185
2183
|
}(React.Component));
|
|
2186
2184
|
var ToastBody3 = /** @class */ (function (_super) {
|
|
2187
|
-
__extends
|
|
2185
|
+
__extends(ToastBody3, _super);
|
|
2188
2186
|
function ToastBody3() {
|
|
2189
2187
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2190
2188
|
}
|
|
@@ -2194,7 +2192,7 @@ var ToastBody3 = /** @class */ (function (_super) {
|
|
|
2194
2192
|
return ToastBody3;
|
|
2195
2193
|
}(React.Component));
|
|
2196
2194
|
var ToastBodyWithButton = /** @class */ (function (_super) {
|
|
2197
|
-
__extends
|
|
2195
|
+
__extends(ToastBodyWithButton, _super);
|
|
2198
2196
|
function ToastBodyWithButton() {
|
|
2199
2197
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2200
2198
|
}
|
|
@@ -2225,25 +2223,23 @@ var notFound = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZAAAAFACAYAAACSgS
|
|
|
2225
2223
|
|
|
2226
2224
|
var AppNotDeployed = "data:image/png;base64,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";
|
|
2227
2225
|
|
|
2228
|
-
function
|
|
2226
|
+
var GenericEmptyState = function (_a) {
|
|
2229
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;
|
|
2230
2228
|
var isRowLayout = layout === 'row';
|
|
2231
|
-
return (jsxRuntime.jsxs("div", __assign({ className: "flex ".concat(isRowLayout ? 'dc__gap-32' : 'column dc__gap-20', " empty-state ").concat(classname
|
|
2232
|
-
}
|
|
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
|
+
};
|
|
2233
2231
|
|
|
2234
|
-
function
|
|
2232
|
+
var ErrorScreenNotFound = function () {
|
|
2235
2233
|
var push = reactRouterDom.useHistory().push;
|
|
2236
2234
|
var redirectToHome = function () {
|
|
2237
2235
|
push('/app/list');
|
|
2238
2236
|
};
|
|
2239
|
-
var renderGenerateButton = function () {
|
|
2240
|
-
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 })));
|
|
2241
|
-
};
|
|
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 }))); };
|
|
2242
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 }));
|
|
2243
|
-
}
|
|
2239
|
+
};
|
|
2244
2240
|
|
|
2245
2241
|
var ErrorScreenManager = /** @class */ (function (_super) {
|
|
2246
|
-
__extends
|
|
2242
|
+
__extends(ErrorScreenManager, _super);
|
|
2247
2243
|
function ErrorScreenManager() {
|
|
2248
2244
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2249
2245
|
}
|
|
@@ -2254,7 +2250,7 @@ var ErrorScreenManager = /** @class */ (function (_super) {
|
|
|
2254
2250
|
case 401:
|
|
2255
2251
|
return 'Unauthorized';
|
|
2256
2252
|
case 403:
|
|
2257
|
-
return
|
|
2253
|
+
return jsxRuntime.jsx(ErrorScreenNotAuthorized, { subtitle: this.props.subtitle });
|
|
2258
2254
|
case 404:
|
|
2259
2255
|
return jsxRuntime.jsx(ErrorScreenNotFound, {});
|
|
2260
2256
|
case 500:
|
|
@@ -2274,7 +2270,7 @@ var ErrorScreenManager = /** @class */ (function (_super) {
|
|
|
2274
2270
|
return ErrorScreenManager;
|
|
2275
2271
|
}(React.Component));
|
|
2276
2272
|
var ErrorScreenNotAuthorized = /** @class */ (function (_super) {
|
|
2277
|
-
__extends
|
|
2273
|
+
__extends(ErrorScreenNotAuthorized, _super);
|
|
2278
2274
|
function ErrorScreenNotAuthorized() {
|
|
2279
2275
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
2280
2276
|
}
|
|
@@ -9747,1621 +9743,121 @@ var moment$1 = {
|
|
|
9747
9743
|
(days ? daysSign + days + 'D' : '') +
|
|
9748
9744
|
(hours || minutes || seconds ? 'T' : '') +
|
|
9749
9745
|
(hours ? hmsSign + hours + 'H' : '') +
|
|
9750
|
-
(minutes ? hmsSign + minutes + 'M' : '') +
|
|
9751
|
-
(seconds ? hmsSign + s + 'S' : '')
|
|
9752
|
-
);
|
|
9753
|
-
}
|
|
9754
|
-
|
|
9755
|
-
var proto$2 = Duration.prototype;
|
|
9756
|
-
|
|
9757
|
-
proto$2.isValid = isValid$1;
|
|
9758
|
-
proto$2.abs = abs;
|
|
9759
|
-
proto$2.add = add$1;
|
|
9760
|
-
proto$2.subtract = subtract$1;
|
|
9761
|
-
proto$2.as = as;
|
|
9762
|
-
proto$2.asMilliseconds = asMilliseconds;
|
|
9763
|
-
proto$2.asSeconds = asSeconds;
|
|
9764
|
-
proto$2.asMinutes = asMinutes;
|
|
9765
|
-
proto$2.asHours = asHours;
|
|
9766
|
-
proto$2.asDays = asDays;
|
|
9767
|
-
proto$2.asWeeks = asWeeks;
|
|
9768
|
-
proto$2.asMonths = asMonths;
|
|
9769
|
-
proto$2.asQuarters = asQuarters;
|
|
9770
|
-
proto$2.asYears = asYears;
|
|
9771
|
-
proto$2.valueOf = valueOf$1;
|
|
9772
|
-
proto$2._bubble = bubble;
|
|
9773
|
-
proto$2.clone = clone$1;
|
|
9774
|
-
proto$2.get = get$2;
|
|
9775
|
-
proto$2.milliseconds = milliseconds;
|
|
9776
|
-
proto$2.seconds = seconds;
|
|
9777
|
-
proto$2.minutes = minutes;
|
|
9778
|
-
proto$2.hours = hours;
|
|
9779
|
-
proto$2.days = days;
|
|
9780
|
-
proto$2.weeks = weeks;
|
|
9781
|
-
proto$2.months = months;
|
|
9782
|
-
proto$2.years = years;
|
|
9783
|
-
proto$2.humanize = humanize;
|
|
9784
|
-
proto$2.toISOString = toISOString$1;
|
|
9785
|
-
proto$2.toString = toISOString$1;
|
|
9786
|
-
proto$2.toJSON = toISOString$1;
|
|
9787
|
-
proto$2.locale = locale;
|
|
9788
|
-
proto$2.localeData = localeData;
|
|
9789
|
-
|
|
9790
|
-
proto$2.toIsoString = deprecate(
|
|
9791
|
-
'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
|
|
9792
|
-
toISOString$1
|
|
9793
|
-
);
|
|
9794
|
-
proto$2.lang = lang;
|
|
9795
|
-
|
|
9796
|
-
// FORMATTING
|
|
9797
|
-
|
|
9798
|
-
addFormatToken('X', 0, 0, 'unix');
|
|
9799
|
-
addFormatToken('x', 0, 0, 'valueOf');
|
|
9800
|
-
|
|
9801
|
-
// PARSING
|
|
9802
|
-
|
|
9803
|
-
addRegexToken('x', matchSigned);
|
|
9804
|
-
addRegexToken('X', matchTimestamp);
|
|
9805
|
-
addParseToken('X', function (input, array, config) {
|
|
9806
|
-
config._d = new Date(parseFloat(input) * 1000);
|
|
9807
|
-
});
|
|
9808
|
-
addParseToken('x', function (input, array, config) {
|
|
9809
|
-
config._d = new Date(toInt(input));
|
|
9810
|
-
});
|
|
9811
|
-
|
|
9812
|
-
//! moment.js
|
|
9813
|
-
|
|
9814
|
-
hooks.version = '2.29.4';
|
|
9815
|
-
|
|
9816
|
-
setHookCallback(createLocal);
|
|
9817
|
-
|
|
9818
|
-
hooks.fn = proto;
|
|
9819
|
-
hooks.min = min;
|
|
9820
|
-
hooks.max = max;
|
|
9821
|
-
hooks.now = now;
|
|
9822
|
-
hooks.utc = createUTC;
|
|
9823
|
-
hooks.unix = createUnix;
|
|
9824
|
-
hooks.months = listMonths;
|
|
9825
|
-
hooks.isDate = isDate;
|
|
9826
|
-
hooks.locale = getSetGlobalLocale;
|
|
9827
|
-
hooks.invalid = createInvalid;
|
|
9828
|
-
hooks.duration = createDuration;
|
|
9829
|
-
hooks.isMoment = isMoment;
|
|
9830
|
-
hooks.weekdays = listWeekdays;
|
|
9831
|
-
hooks.parseZone = createInZone;
|
|
9832
|
-
hooks.localeData = getLocale;
|
|
9833
|
-
hooks.isDuration = isDuration;
|
|
9834
|
-
hooks.monthsShort = listMonthsShort;
|
|
9835
|
-
hooks.weekdaysMin = listWeekdaysMin;
|
|
9836
|
-
hooks.defineLocale = defineLocale;
|
|
9837
|
-
hooks.updateLocale = updateLocale;
|
|
9838
|
-
hooks.locales = listLocales;
|
|
9839
|
-
hooks.weekdaysShort = listWeekdaysShort;
|
|
9840
|
-
hooks.normalizeUnits = normalizeUnits;
|
|
9841
|
-
hooks.relativeTimeRounding = getSetRelativeTimeRounding;
|
|
9842
|
-
hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
|
|
9843
|
-
hooks.calendarFormat = getCalendarFormat;
|
|
9844
|
-
hooks.prototype = proto;
|
|
9845
|
-
|
|
9846
|
-
// currently HTML5 input type only supports 24-hour formats
|
|
9847
|
-
hooks.HTML5_FMT = {
|
|
9848
|
-
DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
|
|
9849
|
-
DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
|
|
9850
|
-
DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
|
|
9851
|
-
DATE: 'YYYY-MM-DD', // <input type="date" />
|
|
9852
|
-
TIME: 'HH:mm', // <input type="time" />
|
|
9853
|
-
TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
|
|
9854
|
-
TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
|
|
9855
|
-
WEEK: 'GGGG-[W]WW', // <input type="week" />
|
|
9856
|
-
MONTH: 'YYYY-MM', // <input type="month" />
|
|
9857
|
-
};
|
|
9858
|
-
|
|
9859
|
-
return hooks;
|
|
9860
|
-
|
|
9861
|
-
})));
|
|
9862
|
-
} (moment$1));
|
|
9863
|
-
|
|
9864
|
-
var moment = momentExports;
|
|
9865
|
-
|
|
9866
|
-
const {
|
|
9867
|
-
hasOwnProperty: hasOwnProp
|
|
9868
|
-
} = Object.prototype;
|
|
9869
|
-
/**
|
|
9870
|
-
* @typedef {null|boolean|number|string|PlainObject|GenericArray} JSONObject
|
|
9871
|
-
*/
|
|
9872
|
-
|
|
9873
|
-
/**
|
|
9874
|
-
* @typedef {any} AnyItem
|
|
9875
|
-
*/
|
|
9876
|
-
|
|
9877
|
-
/**
|
|
9878
|
-
* @typedef {any} AnyResult
|
|
9879
|
-
*/
|
|
9880
|
-
|
|
9881
|
-
/**
|
|
9882
|
-
* Copies array and then pushes item into it.
|
|
9883
|
-
* @param {GenericArray} arr Array to copy and into which to push
|
|
9884
|
-
* @param {AnyItem} item Array item to add (to end)
|
|
9885
|
-
* @returns {GenericArray} Copy of the original array
|
|
9886
|
-
*/
|
|
9887
|
-
|
|
9888
|
-
function push(arr, item) {
|
|
9889
|
-
arr = arr.slice();
|
|
9890
|
-
arr.push(item);
|
|
9891
|
-
return arr;
|
|
9892
|
-
}
|
|
9893
|
-
/**
|
|
9894
|
-
* Copies array and then unshifts item into it.
|
|
9895
|
-
* @param {AnyItem} item Array item to add (to beginning)
|
|
9896
|
-
* @param {GenericArray} arr Array to copy and into which to unshift
|
|
9897
|
-
* @returns {GenericArray} Copy of the original array
|
|
9898
|
-
*/
|
|
9899
|
-
|
|
9900
|
-
|
|
9901
|
-
function unshift(item, arr) {
|
|
9902
|
-
arr = arr.slice();
|
|
9903
|
-
arr.unshift(item);
|
|
9904
|
-
return arr;
|
|
9905
|
-
}
|
|
9906
|
-
/**
|
|
9907
|
-
* Caught when JSONPath is used without `new` but rethrown if with `new`
|
|
9908
|
-
* @extends Error
|
|
9909
|
-
*/
|
|
9910
|
-
|
|
9911
|
-
|
|
9912
|
-
class NewError extends Error {
|
|
9913
|
-
/**
|
|
9914
|
-
* @param {AnyResult} value The evaluated scalar value
|
|
9915
|
-
*/
|
|
9916
|
-
constructor(value) {
|
|
9917
|
-
super('JSONPath should not be called with "new" (it prevents return ' + 'of (unwrapped) scalar values)');
|
|
9918
|
-
this.avoidNew = true;
|
|
9919
|
-
this.value = value;
|
|
9920
|
-
this.name = 'NewError';
|
|
9921
|
-
}
|
|
9922
|
-
|
|
9923
|
-
}
|
|
9924
|
-
/**
|
|
9925
|
-
* @typedef {PlainObject} ReturnObject
|
|
9926
|
-
* @property {string} path
|
|
9927
|
-
* @property {JSONObject} value
|
|
9928
|
-
* @property {PlainObject|GenericArray} parent
|
|
9929
|
-
* @property {string} parentProperty
|
|
9930
|
-
*/
|
|
9931
|
-
|
|
9932
|
-
/**
|
|
9933
|
-
* @callback JSONPathCallback
|
|
9934
|
-
* @param {string|PlainObject} preferredOutput
|
|
9935
|
-
* @param {"value"|"property"} type
|
|
9936
|
-
* @param {ReturnObject} fullRetObj
|
|
9937
|
-
* @returns {void}
|
|
9938
|
-
*/
|
|
9939
|
-
|
|
9940
|
-
/**
|
|
9941
|
-
* @callback OtherTypeCallback
|
|
9942
|
-
* @param {JSONObject} val
|
|
9943
|
-
* @param {string} path
|
|
9944
|
-
* @param {PlainObject|GenericArray} parent
|
|
9945
|
-
* @param {string} parentPropName
|
|
9946
|
-
* @returns {boolean}
|
|
9947
|
-
*/
|
|
9948
|
-
|
|
9949
|
-
/* eslint-disable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */
|
|
9950
|
-
|
|
9951
|
-
/**
|
|
9952
|
-
* @typedef {PlainObject} JSONPathOptions
|
|
9953
|
-
* @property {JSON} json
|
|
9954
|
-
* @property {string|string[]} path
|
|
9955
|
-
* @property {"value"|"path"|"pointer"|"parent"|"parentProperty"|"all"} [resultType="value"]
|
|
9956
|
-
* @property {boolean} [flatten=false]
|
|
9957
|
-
* @property {boolean} [wrap=true]
|
|
9958
|
-
* @property {PlainObject} [sandbox={}]
|
|
9959
|
-
* @property {boolean} [preventEval=false]
|
|
9960
|
-
* @property {PlainObject|GenericArray|null} [parent=null]
|
|
9961
|
-
* @property {string|null} [parentProperty=null]
|
|
9962
|
-
* @property {JSONPathCallback} [callback]
|
|
9963
|
-
* @property {OtherTypeCallback} [otherTypeCallback] Defaults to
|
|
9964
|
-
* function which throws on encountering `@other`
|
|
9965
|
-
* @property {boolean} [autostart=true]
|
|
9966
|
-
*/
|
|
9967
|
-
|
|
9968
|
-
/* eslint-enable max-len -- Can make multiline type after https://github.com/syavorsky/comment-parser/issues/109 */
|
|
9969
|
-
|
|
9970
|
-
/**
|
|
9971
|
-
* @param {string|JSONPathOptions} opts If a string, will be treated as `expr`
|
|
9972
|
-
* @param {string} [expr] JSON path to evaluate
|
|
9973
|
-
* @param {JSON} [obj] JSON object to evaluate against
|
|
9974
|
-
* @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload
|
|
9975
|
-
* per `resultType`, 2) `"value"|"property"`, 3) Full returned object with
|
|
9976
|
-
* all payloads
|
|
9977
|
-
* @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end
|
|
9978
|
-
* of one's query, this will be invoked with the value of the item, its
|
|
9979
|
-
* path, its parent, and its parent's property name, and it should return
|
|
9980
|
-
* a boolean indicating whether the supplied value belongs to the "other"
|
|
9981
|
-
* type or not (or it may handle transformations and return `false`).
|
|
9982
|
-
* @returns {JSONPath}
|
|
9983
|
-
* @class
|
|
9984
|
-
*/
|
|
9985
|
-
|
|
9986
|
-
|
|
9987
|
-
function JSONPath(opts, expr, obj, callback, otherTypeCallback) {
|
|
9988
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
9989
|
-
if (!(this instanceof JSONPath)) {
|
|
9990
|
-
try {
|
|
9991
|
-
return new JSONPath(opts, expr, obj, callback, otherTypeCallback);
|
|
9992
|
-
} catch (e) {
|
|
9993
|
-
if (!e.avoidNew) {
|
|
9994
|
-
throw e;
|
|
9995
|
-
}
|
|
9996
|
-
|
|
9997
|
-
return e.value;
|
|
9998
|
-
}
|
|
9999
|
-
}
|
|
10000
|
-
|
|
10001
|
-
if (typeof opts === 'string') {
|
|
10002
|
-
otherTypeCallback = callback;
|
|
10003
|
-
callback = obj;
|
|
10004
|
-
obj = expr;
|
|
10005
|
-
expr = opts;
|
|
10006
|
-
opts = null;
|
|
10007
|
-
}
|
|
10008
|
-
|
|
10009
|
-
const optObj = opts && typeof opts === 'object';
|
|
10010
|
-
opts = opts || {};
|
|
10011
|
-
this.json = opts.json || obj;
|
|
10012
|
-
this.path = opts.path || expr;
|
|
10013
|
-
this.resultType = opts.resultType || 'value';
|
|
10014
|
-
this.flatten = opts.flatten || false;
|
|
10015
|
-
this.wrap = hasOwnProp.call(opts, 'wrap') ? opts.wrap : true;
|
|
10016
|
-
this.sandbox = opts.sandbox || {};
|
|
10017
|
-
this.preventEval = opts.preventEval || false;
|
|
10018
|
-
this.parent = opts.parent || null;
|
|
10019
|
-
this.parentProperty = opts.parentProperty || null;
|
|
10020
|
-
this.callback = opts.callback || callback || null;
|
|
10021
|
-
|
|
10022
|
-
this.otherTypeCallback = opts.otherTypeCallback || otherTypeCallback || function () {
|
|
10023
|
-
throw new TypeError('You must supply an otherTypeCallback callback option ' + 'with the @other() operator.');
|
|
10024
|
-
};
|
|
10025
|
-
|
|
10026
|
-
if (opts.autostart !== false) {
|
|
10027
|
-
const args = {
|
|
10028
|
-
path: optObj ? opts.path : expr
|
|
10029
|
-
};
|
|
10030
|
-
|
|
10031
|
-
if (!optObj) {
|
|
10032
|
-
args.json = obj;
|
|
10033
|
-
} else if ('json' in opts) {
|
|
10034
|
-
args.json = opts.json;
|
|
10035
|
-
}
|
|
10036
|
-
|
|
10037
|
-
const ret = this.evaluate(args);
|
|
10038
|
-
|
|
10039
|
-
if (!ret || typeof ret !== 'object') {
|
|
10040
|
-
throw new NewError(ret);
|
|
10041
|
-
}
|
|
10042
|
-
|
|
10043
|
-
return ret;
|
|
10044
|
-
}
|
|
10045
|
-
} // PUBLIC METHODS
|
|
10046
|
-
|
|
10047
|
-
|
|
10048
|
-
JSONPath.prototype.evaluate = function (expr, json, callback, otherTypeCallback) {
|
|
10049
|
-
let currParent = this.parent,
|
|
10050
|
-
currParentProperty = this.parentProperty;
|
|
10051
|
-
let {
|
|
10052
|
-
flatten,
|
|
10053
|
-
wrap
|
|
10054
|
-
} = this;
|
|
10055
|
-
this.currResultType = this.resultType;
|
|
10056
|
-
this.currPreventEval = this.preventEval;
|
|
10057
|
-
this.currSandbox = this.sandbox;
|
|
10058
|
-
callback = callback || this.callback;
|
|
10059
|
-
this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;
|
|
10060
|
-
json = json || this.json;
|
|
10061
|
-
expr = expr || this.path;
|
|
10062
|
-
|
|
10063
|
-
if (expr && typeof expr === 'object' && !Array.isArray(expr)) {
|
|
10064
|
-
if (!expr.path && expr.path !== '') {
|
|
10065
|
-
throw new TypeError('You must supply a "path" property when providing an object ' + 'argument to JSONPath.evaluate().');
|
|
10066
|
-
}
|
|
10067
|
-
|
|
10068
|
-
if (!hasOwnProp.call(expr, 'json')) {
|
|
10069
|
-
throw new TypeError('You must supply a "json" property when providing an object ' + 'argument to JSONPath.evaluate().');
|
|
10070
|
-
}
|
|
10071
|
-
|
|
10072
|
-
({
|
|
10073
|
-
json
|
|
10074
|
-
} = expr);
|
|
10075
|
-
flatten = hasOwnProp.call(expr, 'flatten') ? expr.flatten : flatten;
|
|
10076
|
-
this.currResultType = hasOwnProp.call(expr, 'resultType') ? expr.resultType : this.currResultType;
|
|
10077
|
-
this.currSandbox = hasOwnProp.call(expr, 'sandbox') ? expr.sandbox : this.currSandbox;
|
|
10078
|
-
wrap = hasOwnProp.call(expr, 'wrap') ? expr.wrap : wrap;
|
|
10079
|
-
this.currPreventEval = hasOwnProp.call(expr, 'preventEval') ? expr.preventEval : this.currPreventEval;
|
|
10080
|
-
callback = hasOwnProp.call(expr, 'callback') ? expr.callback : callback;
|
|
10081
|
-
this.currOtherTypeCallback = hasOwnProp.call(expr, 'otherTypeCallback') ? expr.otherTypeCallback : this.currOtherTypeCallback;
|
|
10082
|
-
currParent = hasOwnProp.call(expr, 'parent') ? expr.parent : currParent;
|
|
10083
|
-
currParentProperty = hasOwnProp.call(expr, 'parentProperty') ? expr.parentProperty : currParentProperty;
|
|
10084
|
-
expr = expr.path;
|
|
10085
|
-
}
|
|
10086
|
-
|
|
10087
|
-
currParent = currParent || null;
|
|
10088
|
-
currParentProperty = currParentProperty || null;
|
|
10089
|
-
|
|
10090
|
-
if (Array.isArray(expr)) {
|
|
10091
|
-
expr = JSONPath.toPathString(expr);
|
|
10092
|
-
}
|
|
10093
|
-
|
|
10094
|
-
if (!expr && expr !== '' || !json) {
|
|
10095
|
-
return undefined;
|
|
10096
|
-
}
|
|
10097
|
-
|
|
10098
|
-
const exprList = JSONPath.toPathArray(expr);
|
|
10099
|
-
|
|
10100
|
-
if (exprList[0] === '$' && exprList.length > 1) {
|
|
10101
|
-
exprList.shift();
|
|
10102
|
-
}
|
|
10103
|
-
|
|
10104
|
-
this._hasParentSelector = null;
|
|
10105
|
-
|
|
10106
|
-
const result = this._trace(exprList, json, ['$'], currParent, currParentProperty, callback).filter(function (ea) {
|
|
10107
|
-
return ea && !ea.isParentSelector;
|
|
10108
|
-
});
|
|
10109
|
-
|
|
10110
|
-
if (!result.length) {
|
|
10111
|
-
return wrap ? [] : undefined;
|
|
10112
|
-
}
|
|
10113
|
-
|
|
10114
|
-
if (!wrap && result.length === 1 && !result[0].hasArrExpr) {
|
|
10115
|
-
return this._getPreferredOutput(result[0]);
|
|
10116
|
-
}
|
|
10117
|
-
|
|
10118
|
-
return result.reduce((rslt, ea) => {
|
|
10119
|
-
const valOrPath = this._getPreferredOutput(ea);
|
|
10120
|
-
|
|
10121
|
-
if (flatten && Array.isArray(valOrPath)) {
|
|
10122
|
-
rslt = rslt.concat(valOrPath);
|
|
10123
|
-
} else {
|
|
10124
|
-
rslt.push(valOrPath);
|
|
10125
|
-
}
|
|
10126
|
-
|
|
10127
|
-
return rslt;
|
|
10128
|
-
}, []);
|
|
10129
|
-
}; // PRIVATE METHODS
|
|
10130
|
-
|
|
10131
|
-
|
|
10132
|
-
JSONPath.prototype._getPreferredOutput = function (ea) {
|
|
10133
|
-
const resultType = this.currResultType;
|
|
10134
|
-
|
|
10135
|
-
switch (resultType) {
|
|
10136
|
-
case 'all':
|
|
10137
|
-
{
|
|
10138
|
-
const path = Array.isArray(ea.path) ? ea.path : JSONPath.toPathArray(ea.path);
|
|
10139
|
-
ea.pointer = JSONPath.toPointer(path);
|
|
10140
|
-
ea.path = typeof ea.path === 'string' ? ea.path : JSONPath.toPathString(ea.path);
|
|
10141
|
-
return ea;
|
|
10142
|
-
}
|
|
10143
|
-
|
|
10144
|
-
case 'value':
|
|
10145
|
-
case 'parent':
|
|
10146
|
-
case 'parentProperty':
|
|
10147
|
-
return ea[resultType];
|
|
10148
|
-
|
|
10149
|
-
case 'path':
|
|
10150
|
-
return JSONPath.toPathString(ea[resultType]);
|
|
10151
|
-
|
|
10152
|
-
case 'pointer':
|
|
10153
|
-
return JSONPath.toPointer(ea.path);
|
|
10154
|
-
|
|
10155
|
-
default:
|
|
10156
|
-
throw new TypeError('Unknown result type');
|
|
10157
|
-
}
|
|
10158
|
-
};
|
|
10159
|
-
|
|
10160
|
-
JSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {
|
|
10161
|
-
if (callback) {
|
|
10162
|
-
const preferredOutput = this._getPreferredOutput(fullRetObj);
|
|
10163
|
-
|
|
10164
|
-
fullRetObj.path = typeof fullRetObj.path === 'string' ? fullRetObj.path : JSONPath.toPathString(fullRetObj.path); // eslint-disable-next-line n/callback-return
|
|
10165
|
-
|
|
10166
|
-
callback(preferredOutput, type, fullRetObj);
|
|
10167
|
-
}
|
|
10168
|
-
};
|
|
10169
|
-
/**
|
|
10170
|
-
*
|
|
10171
|
-
* @param {string} expr
|
|
10172
|
-
* @param {JSONObject} val
|
|
10173
|
-
* @param {string} path
|
|
10174
|
-
* @param {PlainObject|GenericArray} parent
|
|
10175
|
-
* @param {string} parentPropName
|
|
10176
|
-
* @param {JSONPathCallback} callback
|
|
10177
|
-
* @param {boolean} hasArrExpr
|
|
10178
|
-
* @param {boolean} literalPriority
|
|
10179
|
-
* @returns {ReturnObject|ReturnObject[]}
|
|
10180
|
-
*/
|
|
10181
|
-
|
|
10182
|
-
|
|
10183
|
-
JSONPath.prototype._trace = function (expr, val, path, parent, parentPropName, callback, hasArrExpr, literalPriority) {
|
|
10184
|
-
// No expr to follow? return path and value as the result of
|
|
10185
|
-
// this trace branch
|
|
10186
|
-
let retObj;
|
|
10187
|
-
|
|
10188
|
-
if (!expr.length) {
|
|
10189
|
-
retObj = {
|
|
10190
|
-
path,
|
|
10191
|
-
value: val,
|
|
10192
|
-
parent,
|
|
10193
|
-
parentProperty: parentPropName,
|
|
10194
|
-
hasArrExpr
|
|
10195
|
-
};
|
|
10196
|
-
|
|
10197
|
-
this._handleCallback(retObj, callback, 'value');
|
|
10198
|
-
|
|
10199
|
-
return retObj;
|
|
10200
|
-
}
|
|
10201
|
-
|
|
10202
|
-
const loc = expr[0],
|
|
10203
|
-
x = expr.slice(1); // We need to gather the return value of recursive trace calls in order to
|
|
10204
|
-
// do the parent sel computation.
|
|
10205
|
-
|
|
10206
|
-
const ret = [];
|
|
10207
|
-
/**
|
|
10208
|
-
*
|
|
10209
|
-
* @param {ReturnObject|ReturnObject[]} elems
|
|
10210
|
-
* @returns {void}
|
|
10211
|
-
*/
|
|
10212
|
-
|
|
10213
|
-
function addRet(elems) {
|
|
10214
|
-
if (Array.isArray(elems)) {
|
|
10215
|
-
// This was causing excessive stack size in Node (with or
|
|
10216
|
-
// without Babel) against our performance test:
|
|
10217
|
-
// `ret.push(...elems);`
|
|
10218
|
-
elems.forEach(t => {
|
|
10219
|
-
ret.push(t);
|
|
10220
|
-
});
|
|
10221
|
-
} else {
|
|
10222
|
-
ret.push(elems);
|
|
10223
|
-
}
|
|
10224
|
-
}
|
|
10225
|
-
|
|
10226
|
-
if ((typeof loc !== 'string' || literalPriority) && val && hasOwnProp.call(val, loc)) {
|
|
10227
|
-
// simple case--directly follow property
|
|
10228
|
-
addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr)); // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`
|
|
10229
|
-
} else if (loc === '*') {
|
|
10230
|
-
// all child properties
|
|
10231
|
-
this._walk(val, m => {
|
|
10232
|
-
addRet(this._trace(x, val[m], push(path, m), val, m, callback, true, true));
|
|
10233
|
-
});
|
|
10234
|
-
} else if (loc === '..') {
|
|
10235
|
-
// all descendent parent properties
|
|
10236
|
-
// Check remaining expression with val's immediate children
|
|
10237
|
-
addRet(this._trace(x, val, path, parent, parentPropName, callback, hasArrExpr));
|
|
10238
|
-
|
|
10239
|
-
this._walk(val, m => {
|
|
10240
|
-
// We don't join m and x here because we only want parents,
|
|
10241
|
-
// not scalar values
|
|
10242
|
-
if (typeof val[m] === 'object') {
|
|
10243
|
-
// Keep going with recursive descent on val's
|
|
10244
|
-
// object children
|
|
10245
|
-
addRet(this._trace(expr.slice(), val[m], push(path, m), val, m, callback, true));
|
|
10246
|
-
}
|
|
10247
|
-
}); // The parent sel computation is handled in the frame above using the
|
|
10248
|
-
// ancestor object of val
|
|
10249
|
-
|
|
10250
|
-
} else if (loc === '^') {
|
|
10251
|
-
// This is not a final endpoint, so we do not invoke the callback here
|
|
10252
|
-
this._hasParentSelector = true;
|
|
10253
|
-
return {
|
|
10254
|
-
path: path.slice(0, -1),
|
|
10255
|
-
expr: x,
|
|
10256
|
-
isParentSelector: true
|
|
10257
|
-
};
|
|
10258
|
-
} else if (loc === '~') {
|
|
10259
|
-
// property name
|
|
10260
|
-
retObj = {
|
|
10261
|
-
path: push(path, loc),
|
|
10262
|
-
value: parentPropName,
|
|
10263
|
-
parent,
|
|
10264
|
-
parentProperty: null
|
|
10265
|
-
};
|
|
10266
|
-
|
|
10267
|
-
this._handleCallback(retObj, callback, 'property');
|
|
10268
|
-
|
|
10269
|
-
return retObj;
|
|
10270
|
-
} else if (loc === '$') {
|
|
10271
|
-
// root only
|
|
10272
|
-
addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));
|
|
10273
|
-
} else if (/^(-?\d*):(-?\d*):?(\d*)$/u.test(loc)) {
|
|
10274
|
-
// [start:end:step] Python slice syntax
|
|
10275
|
-
addRet(this._slice(loc, x, val, path, parent, parentPropName, callback));
|
|
10276
|
-
} else if (loc.indexOf('?(') === 0) {
|
|
10277
|
-
// [?(expr)] (filtering)
|
|
10278
|
-
if (this.currPreventEval) {
|
|
10279
|
-
throw new Error('Eval [?(expr)] prevented in JSONPath expression.');
|
|
10280
|
-
}
|
|
10281
|
-
|
|
10282
|
-
const safeLoc = loc.replace(/^\?\((.*?)\)$/u, '$1');
|
|
10283
|
-
|
|
10284
|
-
this._walk(val, m => {
|
|
10285
|
-
if (this._eval(safeLoc, val[m], m, path, parent, parentPropName)) {
|
|
10286
|
-
addRet(this._trace(x, val[m], push(path, m), val, m, callback, true));
|
|
10287
|
-
}
|
|
10288
|
-
});
|
|
10289
|
-
} else if (loc[0] === '(') {
|
|
10290
|
-
// [(expr)] (dynamic property/index)
|
|
10291
|
-
if (this.currPreventEval) {
|
|
10292
|
-
throw new Error('Eval [(expr)] prevented in JSONPath expression.');
|
|
10293
|
-
} // As this will resolve to a property name (but we don't know it
|
|
10294
|
-
// yet), property and parent information is relative to the
|
|
10295
|
-
// parent of the property to which this expression will resolve
|
|
10296
|
-
|
|
10297
|
-
|
|
10298
|
-
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));
|
|
10299
|
-
} else if (loc[0] === '@') {
|
|
10300
|
-
// value type: @boolean(), etc.
|
|
10301
|
-
let addType = false;
|
|
10302
|
-
const valueType = loc.slice(1, -2);
|
|
10303
|
-
|
|
10304
|
-
switch (valueType) {
|
|
10305
|
-
case 'scalar':
|
|
10306
|
-
if (!val || !['object', 'function'].includes(typeof val)) {
|
|
10307
|
-
addType = true;
|
|
10308
|
-
}
|
|
10309
|
-
|
|
10310
|
-
break;
|
|
10311
|
-
|
|
10312
|
-
case 'boolean':
|
|
10313
|
-
case 'string':
|
|
10314
|
-
case 'undefined':
|
|
10315
|
-
case 'function':
|
|
10316
|
-
// eslint-disable-next-line valid-typeof
|
|
10317
|
-
if (typeof val === valueType) {
|
|
10318
|
-
addType = true;
|
|
10319
|
-
}
|
|
10320
|
-
|
|
10321
|
-
break;
|
|
10322
|
-
|
|
10323
|
-
case 'integer':
|
|
10324
|
-
if (Number.isFinite(val) && !(val % 1)) {
|
|
10325
|
-
addType = true;
|
|
10326
|
-
}
|
|
10327
|
-
|
|
10328
|
-
break;
|
|
10329
|
-
|
|
10330
|
-
case 'number':
|
|
10331
|
-
if (Number.isFinite(val)) {
|
|
10332
|
-
addType = true;
|
|
10333
|
-
}
|
|
10334
|
-
|
|
10335
|
-
break;
|
|
10336
|
-
|
|
10337
|
-
case 'nonFinite':
|
|
10338
|
-
if (typeof val === 'number' && !Number.isFinite(val)) {
|
|
10339
|
-
addType = true;
|
|
10340
|
-
}
|
|
10341
|
-
|
|
10342
|
-
break;
|
|
10343
|
-
|
|
10344
|
-
case 'object':
|
|
10345
|
-
// eslint-disable-next-line valid-typeof
|
|
10346
|
-
if (val && typeof val === valueType) {
|
|
10347
|
-
addType = true;
|
|
10348
|
-
}
|
|
10349
|
-
|
|
10350
|
-
break;
|
|
10351
|
-
|
|
10352
|
-
case 'array':
|
|
10353
|
-
if (Array.isArray(val)) {
|
|
10354
|
-
addType = true;
|
|
10355
|
-
}
|
|
10356
|
-
|
|
10357
|
-
break;
|
|
10358
|
-
|
|
10359
|
-
case 'other':
|
|
10360
|
-
addType = this.currOtherTypeCallback(val, path, parent, parentPropName);
|
|
10361
|
-
break;
|
|
10362
|
-
|
|
10363
|
-
case 'null':
|
|
10364
|
-
if (val === null) {
|
|
10365
|
-
addType = true;
|
|
10366
|
-
}
|
|
10367
|
-
|
|
10368
|
-
break;
|
|
10369
|
-
|
|
10370
|
-
/* c8 ignore next 2 */
|
|
10371
|
-
|
|
10372
|
-
default:
|
|
10373
|
-
throw new TypeError('Unknown value type ' + valueType);
|
|
10374
|
-
}
|
|
10375
|
-
|
|
10376
|
-
if (addType) {
|
|
10377
|
-
retObj = {
|
|
10378
|
-
path,
|
|
10379
|
-
value: val,
|
|
10380
|
-
parent,
|
|
10381
|
-
parentProperty: parentPropName
|
|
10382
|
-
};
|
|
10383
|
-
|
|
10384
|
-
this._handleCallback(retObj, callback, 'value');
|
|
10385
|
-
|
|
10386
|
-
return retObj;
|
|
10387
|
-
} // `-escaped property
|
|
10388
|
-
|
|
10389
|
-
} else if (loc[0] === '`' && val && hasOwnProp.call(val, loc.slice(1))) {
|
|
10390
|
-
const locProp = loc.slice(1);
|
|
10391
|
-
addRet(this._trace(x, val[locProp], push(path, locProp), val, locProp, callback, hasArrExpr, true));
|
|
10392
|
-
} else if (loc.includes(',')) {
|
|
10393
|
-
// [name1,name2,...]
|
|
10394
|
-
const parts = loc.split(',');
|
|
10395
|
-
|
|
10396
|
-
for (const part of parts) {
|
|
10397
|
-
addRet(this._trace(unshift(part, x), val, path, parent, parentPropName, callback, true));
|
|
10398
|
-
} // simple case--directly follow property
|
|
10399
|
-
|
|
10400
|
-
} else if (!literalPriority && val && hasOwnProp.call(val, loc)) {
|
|
10401
|
-
addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback, hasArrExpr, true));
|
|
10402
|
-
} // We check the resulting values for parent selections. For parent
|
|
10403
|
-
// selections we discard the value object and continue the trace with the
|
|
10404
|
-
// current val object
|
|
10405
|
-
|
|
10406
|
-
|
|
10407
|
-
if (this._hasParentSelector) {
|
|
10408
|
-
for (let t = 0; t < ret.length; t++) {
|
|
10409
|
-
const rett = ret[t];
|
|
10410
|
-
|
|
10411
|
-
if (rett && rett.isParentSelector) {
|
|
10412
|
-
const tmp = this._trace(rett.expr, val, rett.path, parent, parentPropName, callback, hasArrExpr);
|
|
10413
|
-
|
|
10414
|
-
if (Array.isArray(tmp)) {
|
|
10415
|
-
ret[t] = tmp[0];
|
|
10416
|
-
const tl = tmp.length;
|
|
10417
|
-
|
|
10418
|
-
for (let tt = 1; tt < tl; tt++) {
|
|
10419
|
-
t++;
|
|
10420
|
-
ret.splice(t, 0, tmp[tt]);
|
|
10421
|
-
}
|
|
10422
|
-
} else {
|
|
10423
|
-
ret[t] = tmp;
|
|
10424
|
-
}
|
|
10425
|
-
}
|
|
10426
|
-
}
|
|
10427
|
-
}
|
|
10428
|
-
|
|
10429
|
-
return ret;
|
|
10430
|
-
};
|
|
10431
|
-
|
|
10432
|
-
JSONPath.prototype._walk = function (val, f) {
|
|
10433
|
-
if (Array.isArray(val)) {
|
|
10434
|
-
const n = val.length;
|
|
10435
|
-
|
|
10436
|
-
for (let i = 0; i < n; i++) {
|
|
10437
|
-
f(i);
|
|
10438
|
-
}
|
|
10439
|
-
} else if (val && typeof val === 'object') {
|
|
10440
|
-
Object.keys(val).forEach(m => {
|
|
10441
|
-
f(m);
|
|
10442
|
-
});
|
|
10443
|
-
}
|
|
10444
|
-
};
|
|
10445
|
-
|
|
10446
|
-
JSONPath.prototype._slice = function (loc, expr, val, path, parent, parentPropName, callback) {
|
|
10447
|
-
if (!Array.isArray(val)) {
|
|
10448
|
-
return undefined;
|
|
10449
|
-
}
|
|
10450
|
-
|
|
10451
|
-
const len = val.length,
|
|
10452
|
-
parts = loc.split(':'),
|
|
10453
|
-
step = parts[2] && Number.parseInt(parts[2]) || 1;
|
|
10454
|
-
let start = parts[0] && Number.parseInt(parts[0]) || 0,
|
|
10455
|
-
end = parts[1] && Number.parseInt(parts[1]) || len;
|
|
10456
|
-
start = start < 0 ? Math.max(0, start + len) : Math.min(len, start);
|
|
10457
|
-
end = end < 0 ? Math.max(0, end + len) : Math.min(len, end);
|
|
10458
|
-
const ret = [];
|
|
10459
|
-
|
|
10460
|
-
for (let i = start; i < end; i += step) {
|
|
10461
|
-
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
|
|
10462
|
-
// ``unshift(i, expr)` passed in above would not be empty, nor `~`,
|
|
10463
|
-
// nor begin with `@` (as could return objects)
|
|
10464
|
-
// This was causing excessive stack size in Node (with or
|
|
10465
|
-
// without Babel) against our performance test: `ret.push(...tmp);`
|
|
10466
|
-
|
|
10467
|
-
|
|
10468
|
-
tmp.forEach(t => {
|
|
10469
|
-
ret.push(t);
|
|
10470
|
-
});
|
|
10471
|
-
}
|
|
10472
|
-
|
|
10473
|
-
return ret;
|
|
10474
|
-
};
|
|
10475
|
-
|
|
10476
|
-
JSONPath.prototype._eval = function (code, _v, _vname, path, parent, parentPropName) {
|
|
10477
|
-
this.currSandbox._$_parentProperty = parentPropName;
|
|
10478
|
-
this.currSandbox._$_parent = parent;
|
|
10479
|
-
this.currSandbox._$_property = _vname;
|
|
10480
|
-
this.currSandbox._$_root = this.json;
|
|
10481
|
-
this.currSandbox._$_v = _v;
|
|
10482
|
-
const containsPath = code.includes('@path');
|
|
10483
|
-
|
|
10484
|
-
if (containsPath) {
|
|
10485
|
-
this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));
|
|
10486
|
-
}
|
|
10487
|
-
|
|
10488
|
-
const scriptCacheKey = 'script:' + code;
|
|
10489
|
-
|
|
10490
|
-
if (!JSONPath.cache[scriptCacheKey]) {
|
|
10491
|
-
let script = code.replace(/@parentProperty/gu, '_$_parentProperty').replace(/@parent/gu, '_$_parent').replace(/@property/gu, '_$_property').replace(/@root/gu, '_$_root').replace(/@([.\s)[])/gu, '_$_v$1');
|
|
10492
|
-
|
|
10493
|
-
if (containsPath) {
|
|
10494
|
-
script = script.replace(/@path/gu, '_$_path');
|
|
10495
|
-
}
|
|
10496
|
-
|
|
10497
|
-
JSONPath.cache[scriptCacheKey] = new this.vm.Script(script);
|
|
10498
|
-
}
|
|
10499
|
-
|
|
10500
|
-
try {
|
|
10501
|
-
return JSONPath.cache[scriptCacheKey].runInNewContext(this.currSandbox);
|
|
10502
|
-
} catch (e) {
|
|
10503
|
-
throw new Error('jsonPath: ' + e.message + ': ' + code);
|
|
10504
|
-
}
|
|
10505
|
-
}; // PUBLIC CLASS PROPERTIES AND METHODS
|
|
10506
|
-
// Could store the cache object itself
|
|
10507
|
-
|
|
10508
|
-
|
|
10509
|
-
JSONPath.cache = {};
|
|
10510
|
-
/**
|
|
10511
|
-
* @param {string[]} pathArr Array to convert
|
|
10512
|
-
* @returns {string} The path string
|
|
10513
|
-
*/
|
|
10514
|
-
|
|
10515
|
-
JSONPath.toPathString = function (pathArr) {
|
|
10516
|
-
const x = pathArr,
|
|
10517
|
-
n = x.length;
|
|
10518
|
-
let p = '$';
|
|
10519
|
-
|
|
10520
|
-
for (let i = 1; i < n; i++) {
|
|
10521
|
-
if (!/^(~|\^|@.*?\(\))$/u.test(x[i])) {
|
|
10522
|
-
p += /^[0-9*]+$/u.test(x[i]) ? '[' + x[i] + ']' : "['" + x[i] + "']";
|
|
10523
|
-
}
|
|
10524
|
-
}
|
|
10525
|
-
|
|
10526
|
-
return p;
|
|
10527
|
-
};
|
|
10528
|
-
/**
|
|
10529
|
-
* @param {string} pointer JSON Path
|
|
10530
|
-
* @returns {string} JSON Pointer
|
|
10531
|
-
*/
|
|
10532
|
-
|
|
10533
|
-
|
|
10534
|
-
JSONPath.toPointer = function (pointer) {
|
|
10535
|
-
const x = pointer,
|
|
10536
|
-
n = x.length;
|
|
10537
|
-
let p = '';
|
|
10538
|
-
|
|
10539
|
-
for (let i = 1; i < n; i++) {
|
|
10540
|
-
if (!/^(~|\^|@.*?\(\))$/u.test(x[i])) {
|
|
10541
|
-
p += '/' + x[i].toString().replace(/~/gu, '~0').replace(/\//gu, '~1');
|
|
10542
|
-
}
|
|
10543
|
-
}
|
|
10544
|
-
|
|
10545
|
-
return p;
|
|
10546
|
-
};
|
|
10547
|
-
/**
|
|
10548
|
-
* @param {string} expr Expression to convert
|
|
10549
|
-
* @returns {string[]}
|
|
10550
|
-
*/
|
|
10551
|
-
|
|
10552
|
-
|
|
10553
|
-
JSONPath.toPathArray = function (expr) {
|
|
10554
|
-
const {
|
|
10555
|
-
cache
|
|
10556
|
-
} = JSONPath;
|
|
10557
|
-
|
|
10558
|
-
if (cache[expr]) {
|
|
10559
|
-
return cache[expr].concat();
|
|
10560
|
-
}
|
|
10561
|
-
|
|
10562
|
-
const subx = [];
|
|
10563
|
-
const normalized = expr // Properties
|
|
10564
|
-
.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/gu, ';$&;') // Parenthetical evaluations (filtering and otherwise), directly
|
|
10565
|
-
// within brackets or single quotes
|
|
10566
|
-
.replace(/[['](\??\(.*?\))[\]']/gu, function ($0, $1) {
|
|
10567
|
-
return '[#' + (subx.push($1) - 1) + ']';
|
|
10568
|
-
}) // Escape periods and tildes within properties
|
|
10569
|
-
.replace(/\[['"]([^'\]]*)['"]\]/gu, function ($0, prop) {
|
|
10570
|
-
return "['" + prop.replace(/\./gu, '%@%').replace(/~/gu, '%%@@%%') + "']";
|
|
10571
|
-
}) // Properties operator
|
|
10572
|
-
.replace(/~/gu, ';~;') // Split by property boundaries
|
|
10573
|
-
.replace(/['"]?\.['"]?(?![^[]*\])|\[['"]?/gu, ';') // Reinsert periods within properties
|
|
10574
|
-
.replace(/%@%/gu, '.') // Reinsert tildes within properties
|
|
10575
|
-
.replace(/%%@@%%/gu, '~') // Parent
|
|
10576
|
-
.replace(/(?:;)?(\^+)(?:;)?/gu, function ($0, ups) {
|
|
10577
|
-
return ';' + ups.split('').join(';') + ';';
|
|
10578
|
-
}) // Descendents
|
|
10579
|
-
.replace(/;;;|;;/gu, ';..;') // Remove trailing
|
|
10580
|
-
.replace(/;$|'?\]|'$/gu, '');
|
|
10581
|
-
const exprList = normalized.split(';').map(function (exp) {
|
|
10582
|
-
const match = exp.match(/#(\d+)/u);
|
|
10583
|
-
return !match || !match[1] ? exp : subx[match[1]];
|
|
10584
|
-
});
|
|
10585
|
-
cache[expr] = exprList;
|
|
10586
|
-
return cache[expr].concat();
|
|
10587
|
-
};
|
|
10588
|
-
|
|
10589
|
-
JSONPath.prototype.vm = vm;
|
|
10590
|
-
|
|
10591
|
-
/*!
|
|
10592
|
-
* https://github.com/Starcounter-Jack/JSON-Patch
|
|
10593
|
-
* (c) 2017-2022 Joachim Wester
|
|
10594
|
-
* MIT licensed
|
|
10595
|
-
*/
|
|
10596
|
-
var __extends = (undefined && undefined.__extends) || (function () {
|
|
10597
|
-
var extendStatics = function (d, b) {
|
|
10598
|
-
extendStatics = Object.setPrototypeOf ||
|
|
10599
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
10600
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
10601
|
-
return extendStatics(d, b);
|
|
10602
|
-
};
|
|
10603
|
-
return function (d, b) {
|
|
10604
|
-
extendStatics(d, b);
|
|
10605
|
-
function __() { this.constructor = d; }
|
|
10606
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
10607
|
-
};
|
|
10608
|
-
})();
|
|
10609
|
-
var _hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
10610
|
-
function hasOwnProperty$b(obj, key) {
|
|
10611
|
-
return _hasOwnProperty.call(obj, key);
|
|
10612
|
-
}
|
|
10613
|
-
function _objectKeys(obj) {
|
|
10614
|
-
if (Array.isArray(obj)) {
|
|
10615
|
-
var keys_1 = new Array(obj.length);
|
|
10616
|
-
for (var k = 0; k < keys_1.length; k++) {
|
|
10617
|
-
keys_1[k] = "" + k;
|
|
10618
|
-
}
|
|
10619
|
-
return keys_1;
|
|
10620
|
-
}
|
|
10621
|
-
if (Object.keys) {
|
|
10622
|
-
return Object.keys(obj);
|
|
10623
|
-
}
|
|
10624
|
-
var keys = [];
|
|
10625
|
-
for (var i in obj) {
|
|
10626
|
-
if (hasOwnProperty$b(obj, i)) {
|
|
10627
|
-
keys.push(i);
|
|
10628
|
-
}
|
|
10629
|
-
}
|
|
10630
|
-
return keys;
|
|
10631
|
-
}
|
|
10632
|
-
/**
|
|
10633
|
-
* Deeply clone the object.
|
|
10634
|
-
* https://jsperf.com/deep-copy-vs-json-stringify-json-parse/25 (recursiveDeepCopy)
|
|
10635
|
-
* @param {any} obj value to clone
|
|
10636
|
-
* @return {any} cloned obj
|
|
10637
|
-
*/
|
|
10638
|
-
function _deepClone(obj) {
|
|
10639
|
-
switch (typeof obj) {
|
|
10640
|
-
case "object":
|
|
10641
|
-
return JSON.parse(JSON.stringify(obj)); //Faster than ES5 clone - http://jsperf.com/deep-cloning-of-objects/5
|
|
10642
|
-
case "undefined":
|
|
10643
|
-
return null; //this is how JSON.stringify behaves for array items
|
|
10644
|
-
default:
|
|
10645
|
-
return obj; //no need to clone primitives
|
|
10646
|
-
}
|
|
10647
|
-
}
|
|
10648
|
-
//3x faster than cached /^\d+$/.test(str)
|
|
10649
|
-
function isInteger(str) {
|
|
10650
|
-
var i = 0;
|
|
10651
|
-
var len = str.length;
|
|
10652
|
-
var charCode;
|
|
10653
|
-
while (i < len) {
|
|
10654
|
-
charCode = str.charCodeAt(i);
|
|
10655
|
-
if (charCode >= 48 && charCode <= 57) {
|
|
10656
|
-
i++;
|
|
10657
|
-
continue;
|
|
10658
|
-
}
|
|
10659
|
-
return false;
|
|
10660
|
-
}
|
|
10661
|
-
return true;
|
|
10662
|
-
}
|
|
10663
|
-
/**
|
|
10664
|
-
* Escapes a json pointer path
|
|
10665
|
-
* @param path The raw pointer
|
|
10666
|
-
* @return the Escaped path
|
|
10667
|
-
*/
|
|
10668
|
-
function escapePathComponent(path) {
|
|
10669
|
-
if (path.indexOf('/') === -1 && path.indexOf('~') === -1)
|
|
10670
|
-
return path;
|
|
10671
|
-
return path.replace(/~/g, '~0').replace(/\//g, '~1');
|
|
10672
|
-
}
|
|
10673
|
-
/**
|
|
10674
|
-
* Unescapes a json pointer path
|
|
10675
|
-
* @param path The escaped pointer
|
|
10676
|
-
* @return The unescaped path
|
|
10677
|
-
*/
|
|
10678
|
-
function unescapePathComponent(path) {
|
|
10679
|
-
return path.replace(/~1/g, '/').replace(/~0/g, '~');
|
|
10680
|
-
}
|
|
10681
|
-
/**
|
|
10682
|
-
* Recursively checks whether an object has any undefined values inside.
|
|
10683
|
-
*/
|
|
10684
|
-
function hasUndefined(obj) {
|
|
10685
|
-
if (obj === undefined) {
|
|
10686
|
-
return true;
|
|
10687
|
-
}
|
|
10688
|
-
if (obj) {
|
|
10689
|
-
if (Array.isArray(obj)) {
|
|
10690
|
-
for (var i_1 = 0, len = obj.length; i_1 < len; i_1++) {
|
|
10691
|
-
if (hasUndefined(obj[i_1])) {
|
|
10692
|
-
return true;
|
|
10693
|
-
}
|
|
10694
|
-
}
|
|
10695
|
-
}
|
|
10696
|
-
else if (typeof obj === "object") {
|
|
10697
|
-
var objKeys = _objectKeys(obj);
|
|
10698
|
-
var objKeysLength = objKeys.length;
|
|
10699
|
-
for (var i = 0; i < objKeysLength; i++) {
|
|
10700
|
-
if (hasUndefined(obj[objKeys[i]])) {
|
|
10701
|
-
return true;
|
|
10702
|
-
}
|
|
10703
|
-
}
|
|
10704
|
-
}
|
|
10705
|
-
}
|
|
10706
|
-
return false;
|
|
10707
|
-
}
|
|
10708
|
-
function patchErrorMessageFormatter(message, args) {
|
|
10709
|
-
var messageParts = [message];
|
|
10710
|
-
for (var key in args) {
|
|
10711
|
-
var value = typeof args[key] === 'object' ? JSON.stringify(args[key], null, 2) : args[key]; // pretty print
|
|
10712
|
-
if (typeof value !== 'undefined') {
|
|
10713
|
-
messageParts.push(key + ": " + value);
|
|
10714
|
-
}
|
|
10715
|
-
}
|
|
10716
|
-
return messageParts.join('\n');
|
|
10717
|
-
}
|
|
10718
|
-
var PatchError = /** @class */ (function (_super) {
|
|
10719
|
-
__extends(PatchError, _super);
|
|
10720
|
-
function PatchError(message, name, index, operation, tree) {
|
|
10721
|
-
var _newTarget = this.constructor;
|
|
10722
|
-
var _this = _super.call(this, patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree })) || this;
|
|
10723
|
-
_this.name = name;
|
|
10724
|
-
_this.index = index;
|
|
10725
|
-
_this.operation = operation;
|
|
10726
|
-
_this.tree = tree;
|
|
10727
|
-
Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain, see https://stackoverflow.com/a/48342359
|
|
10728
|
-
_this.message = patchErrorMessageFormatter(message, { name: name, index: index, operation: operation, tree: tree });
|
|
10729
|
-
return _this;
|
|
10730
|
-
}
|
|
10731
|
-
return PatchError;
|
|
10732
|
-
}(Error));
|
|
10733
|
-
|
|
10734
|
-
var JsonPatchError = PatchError;
|
|
10735
|
-
var deepClone = _deepClone;
|
|
10736
|
-
/* We use a Javascript hash to store each
|
|
10737
|
-
function. Each hash entry (property) uses
|
|
10738
|
-
the operation identifiers specified in rfc6902.
|
|
10739
|
-
In this way, we can map each patch operation
|
|
10740
|
-
to its dedicated function in efficient way.
|
|
10741
|
-
*/
|
|
10742
|
-
/* The operations applicable to an object */
|
|
10743
|
-
var objOps = {
|
|
10744
|
-
add: function (obj, key, document) {
|
|
10745
|
-
obj[key] = this.value;
|
|
10746
|
-
return { newDocument: document };
|
|
10747
|
-
},
|
|
10748
|
-
remove: function (obj, key, document) {
|
|
10749
|
-
var removed = obj[key];
|
|
10750
|
-
delete obj[key];
|
|
10751
|
-
return { newDocument: document, removed: removed };
|
|
10752
|
-
},
|
|
10753
|
-
replace: function (obj, key, document) {
|
|
10754
|
-
var removed = obj[key];
|
|
10755
|
-
obj[key] = this.value;
|
|
10756
|
-
return { newDocument: document, removed: removed };
|
|
10757
|
-
},
|
|
10758
|
-
move: function (obj, key, document) {
|
|
10759
|
-
/* in case move target overwrites an existing value,
|
|
10760
|
-
return the removed value, this can be taxing performance-wise,
|
|
10761
|
-
and is potentially unneeded */
|
|
10762
|
-
var removed = getValueByPointer(document, this.path);
|
|
10763
|
-
if (removed) {
|
|
10764
|
-
removed = _deepClone(removed);
|
|
10765
|
-
}
|
|
10766
|
-
var originalValue = applyOperation(document, { op: "remove", path: this.from }).removed;
|
|
10767
|
-
applyOperation(document, { op: "add", path: this.path, value: originalValue });
|
|
10768
|
-
return { newDocument: document, removed: removed };
|
|
10769
|
-
},
|
|
10770
|
-
copy: function (obj, key, document) {
|
|
10771
|
-
var valueToCopy = getValueByPointer(document, this.from);
|
|
10772
|
-
// enforce copy by value so further operations don't affect source (see issue #177)
|
|
10773
|
-
applyOperation(document, { op: "add", path: this.path, value: _deepClone(valueToCopy) });
|
|
10774
|
-
return { newDocument: document };
|
|
10775
|
-
},
|
|
10776
|
-
test: function (obj, key, document) {
|
|
10777
|
-
return { newDocument: document, test: _areEquals(obj[key], this.value) };
|
|
10778
|
-
},
|
|
10779
|
-
_get: function (obj, key, document) {
|
|
10780
|
-
this.value = obj[key];
|
|
10781
|
-
return { newDocument: document };
|
|
10782
|
-
}
|
|
10783
|
-
};
|
|
10784
|
-
/* The operations applicable to an array. Many are the same as for the object */
|
|
10785
|
-
var arrOps = {
|
|
10786
|
-
add: function (arr, i, document) {
|
|
10787
|
-
if (isInteger(i)) {
|
|
10788
|
-
arr.splice(i, 0, this.value);
|
|
10789
|
-
}
|
|
10790
|
-
else { // array props
|
|
10791
|
-
arr[i] = this.value;
|
|
10792
|
-
}
|
|
10793
|
-
// this may be needed when using '-' in an array
|
|
10794
|
-
return { newDocument: document, index: i };
|
|
10795
|
-
},
|
|
10796
|
-
remove: function (arr, i, document) {
|
|
10797
|
-
var removedList = arr.splice(i, 1);
|
|
10798
|
-
return { newDocument: document, removed: removedList[0] };
|
|
10799
|
-
},
|
|
10800
|
-
replace: function (arr, i, document) {
|
|
10801
|
-
var removed = arr[i];
|
|
10802
|
-
arr[i] = this.value;
|
|
10803
|
-
return { newDocument: document, removed: removed };
|
|
10804
|
-
},
|
|
10805
|
-
move: objOps.move,
|
|
10806
|
-
copy: objOps.copy,
|
|
10807
|
-
test: objOps.test,
|
|
10808
|
-
_get: objOps._get
|
|
10809
|
-
};
|
|
10810
|
-
/**
|
|
10811
|
-
* Retrieves a value from a JSON document by a JSON pointer.
|
|
10812
|
-
* Returns the value.
|
|
10813
|
-
*
|
|
10814
|
-
* @param document The document to get the value from
|
|
10815
|
-
* @param pointer an escaped JSON pointer
|
|
10816
|
-
* @return The retrieved value
|
|
10817
|
-
*/
|
|
10818
|
-
function getValueByPointer(document, pointer) {
|
|
10819
|
-
if (pointer == '') {
|
|
10820
|
-
return document;
|
|
10821
|
-
}
|
|
10822
|
-
var getOriginalDestination = { op: "_get", path: pointer };
|
|
10823
|
-
applyOperation(document, getOriginalDestination);
|
|
10824
|
-
return getOriginalDestination.value;
|
|
10825
|
-
}
|
|
10826
|
-
/**
|
|
10827
|
-
* Apply a single JSON Patch Operation on a JSON document.
|
|
10828
|
-
* Returns the {newDocument, result} of the operation.
|
|
10829
|
-
* It modifies the `document` and `operation` objects - it gets the values by reference.
|
|
10830
|
-
* If you would like to avoid touching your values, clone them:
|
|
10831
|
-
* `jsonpatch.applyOperation(document, jsonpatch._deepClone(operation))`.
|
|
10832
|
-
*
|
|
10833
|
-
* @param document The document to patch
|
|
10834
|
-
* @param operation The operation to apply
|
|
10835
|
-
* @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.
|
|
10836
|
-
* @param mutateDocument Whether to mutate the original document or clone it before applying
|
|
10837
|
-
* @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.
|
|
10838
|
-
* @return `{newDocument, result}` after the operation
|
|
10839
|
-
*/
|
|
10840
|
-
function applyOperation(document, operation, validateOperation, mutateDocument, banPrototypeModifications, index) {
|
|
10841
|
-
if (validateOperation === void 0) { validateOperation = false; }
|
|
10842
|
-
if (mutateDocument === void 0) { mutateDocument = true; }
|
|
10843
|
-
if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }
|
|
10844
|
-
if (index === void 0) { index = 0; }
|
|
10845
|
-
if (validateOperation) {
|
|
10846
|
-
if (typeof validateOperation == 'function') {
|
|
10847
|
-
validateOperation(operation, 0, document, operation.path);
|
|
10848
|
-
}
|
|
10849
|
-
else {
|
|
10850
|
-
validator$1(operation, 0);
|
|
10851
|
-
}
|
|
10852
|
-
}
|
|
10853
|
-
/* ROOT OPERATIONS */
|
|
10854
|
-
if (operation.path === "") {
|
|
10855
|
-
var returnValue = { newDocument: document };
|
|
10856
|
-
if (operation.op === 'add') {
|
|
10857
|
-
returnValue.newDocument = operation.value;
|
|
10858
|
-
return returnValue;
|
|
10859
|
-
}
|
|
10860
|
-
else if (operation.op === 'replace') {
|
|
10861
|
-
returnValue.newDocument = operation.value;
|
|
10862
|
-
returnValue.removed = document; //document we removed
|
|
10863
|
-
return returnValue;
|
|
10864
|
-
}
|
|
10865
|
-
else if (operation.op === 'move' || operation.op === 'copy') { // it's a move or copy to root
|
|
10866
|
-
returnValue.newDocument = getValueByPointer(document, operation.from); // get the value by json-pointer in `from` field
|
|
10867
|
-
if (operation.op === 'move') { // report removed item
|
|
10868
|
-
returnValue.removed = document;
|
|
10869
|
-
}
|
|
10870
|
-
return returnValue;
|
|
10871
|
-
}
|
|
10872
|
-
else if (operation.op === 'test') {
|
|
10873
|
-
returnValue.test = _areEquals(document, operation.value);
|
|
10874
|
-
if (returnValue.test === false) {
|
|
10875
|
-
throw new JsonPatchError("Test operation failed", 'TEST_OPERATION_FAILED', index, operation, document);
|
|
10876
|
-
}
|
|
10877
|
-
returnValue.newDocument = document;
|
|
10878
|
-
return returnValue;
|
|
10879
|
-
}
|
|
10880
|
-
else if (operation.op === 'remove') { // a remove on root
|
|
10881
|
-
returnValue.removed = document;
|
|
10882
|
-
returnValue.newDocument = null;
|
|
10883
|
-
return returnValue;
|
|
10884
|
-
}
|
|
10885
|
-
else if (operation.op === '_get') {
|
|
10886
|
-
operation.value = document;
|
|
10887
|
-
return returnValue;
|
|
10888
|
-
}
|
|
10889
|
-
else { /* bad operation */
|
|
10890
|
-
if (validateOperation) {
|
|
10891
|
-
throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);
|
|
10892
|
-
}
|
|
10893
|
-
else {
|
|
10894
|
-
return returnValue;
|
|
10895
|
-
}
|
|
10896
|
-
}
|
|
10897
|
-
} /* END ROOT OPERATIONS */
|
|
10898
|
-
else {
|
|
10899
|
-
if (!mutateDocument) {
|
|
10900
|
-
document = _deepClone(document);
|
|
10901
|
-
}
|
|
10902
|
-
var path = operation.path || "";
|
|
10903
|
-
var keys = path.split('/');
|
|
10904
|
-
var obj = document;
|
|
10905
|
-
var t = 1; //skip empty element - http://jsperf.com/to-shift-or-not-to-shift
|
|
10906
|
-
var len = keys.length;
|
|
10907
|
-
var existingPathFragment = undefined;
|
|
10908
|
-
var key = void 0;
|
|
10909
|
-
var validateFunction = void 0;
|
|
10910
|
-
if (typeof validateOperation == 'function') {
|
|
10911
|
-
validateFunction = validateOperation;
|
|
10912
|
-
}
|
|
10913
|
-
else {
|
|
10914
|
-
validateFunction = validator$1;
|
|
10915
|
-
}
|
|
10916
|
-
while (true) {
|
|
10917
|
-
key = keys[t];
|
|
10918
|
-
if (key && key.indexOf('~') != -1) {
|
|
10919
|
-
key = unescapePathComponent(key);
|
|
10920
|
-
}
|
|
10921
|
-
if (banPrototypeModifications &&
|
|
10922
|
-
(key == '__proto__' ||
|
|
10923
|
-
(key == 'prototype' && t > 0 && keys[t - 1] == 'constructor'))) {
|
|
10924
|
-
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');
|
|
10925
|
-
}
|
|
10926
|
-
if (validateOperation) {
|
|
10927
|
-
if (existingPathFragment === undefined) {
|
|
10928
|
-
if (obj[key] === undefined) {
|
|
10929
|
-
existingPathFragment = keys.slice(0, t).join('/');
|
|
10930
|
-
}
|
|
10931
|
-
else if (t == len - 1) {
|
|
10932
|
-
existingPathFragment = operation.path;
|
|
10933
|
-
}
|
|
10934
|
-
if (existingPathFragment !== undefined) {
|
|
10935
|
-
validateFunction(operation, 0, document, existingPathFragment);
|
|
10936
|
-
}
|
|
10937
|
-
}
|
|
10938
|
-
}
|
|
10939
|
-
t++;
|
|
10940
|
-
if (Array.isArray(obj)) {
|
|
10941
|
-
if (key === '-') {
|
|
10942
|
-
key = obj.length;
|
|
10943
|
-
}
|
|
10944
|
-
else {
|
|
10945
|
-
if (validateOperation && !isInteger(key)) {
|
|
10946
|
-
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);
|
|
10947
|
-
} // only parse key when it's an integer for `arr.prop` to work
|
|
10948
|
-
else if (isInteger(key)) {
|
|
10949
|
-
key = ~~key;
|
|
10950
|
-
}
|
|
10951
|
-
}
|
|
10952
|
-
if (t >= len) {
|
|
10953
|
-
if (validateOperation && operation.op === "add" && key > obj.length) {
|
|
10954
|
-
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);
|
|
10955
|
-
}
|
|
10956
|
-
var returnValue = arrOps[operation.op].call(operation, obj, key, document); // Apply patch
|
|
10957
|
-
if (returnValue.test === false) {
|
|
10958
|
-
throw new JsonPatchError("Test operation failed", 'TEST_OPERATION_FAILED', index, operation, document);
|
|
10959
|
-
}
|
|
10960
|
-
return returnValue;
|
|
10961
|
-
}
|
|
10962
|
-
}
|
|
10963
|
-
else {
|
|
10964
|
-
if (t >= len) {
|
|
10965
|
-
var returnValue = objOps[operation.op].call(operation, obj, key, document); // Apply patch
|
|
10966
|
-
if (returnValue.test === false) {
|
|
10967
|
-
throw new JsonPatchError("Test operation failed", 'TEST_OPERATION_FAILED', index, operation, document);
|
|
10968
|
-
}
|
|
10969
|
-
return returnValue;
|
|
10970
|
-
}
|
|
10971
|
-
}
|
|
10972
|
-
obj = obj[key];
|
|
10973
|
-
// If we have more keys in the path, but the next value isn't a non-null object,
|
|
10974
|
-
// throw an OPERATION_PATH_UNRESOLVABLE error instead of iterating again.
|
|
10975
|
-
if (validateOperation && t < len && (!obj || typeof obj !== "object")) {
|
|
10976
|
-
throw new JsonPatchError('Cannot perform operation at the desired path', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);
|
|
10977
|
-
}
|
|
10978
|
-
}
|
|
10979
|
-
}
|
|
10980
|
-
}
|
|
10981
|
-
/**
|
|
10982
|
-
* Apply a full JSON Patch array on a JSON document.
|
|
10983
|
-
* Returns the {newDocument, result} of the patch.
|
|
10984
|
-
* It modifies the `document` object and `patch` - it gets the values by reference.
|
|
10985
|
-
* If you would like to avoid touching your values, clone them:
|
|
10986
|
-
* `jsonpatch.applyPatch(document, jsonpatch._deepClone(patch))`.
|
|
10987
|
-
*
|
|
10988
|
-
* @param document The document to patch
|
|
10989
|
-
* @param patch The patch to apply
|
|
10990
|
-
* @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.
|
|
10991
|
-
* @param mutateDocument Whether to mutate the original document or clone it before applying
|
|
10992
|
-
* @param banPrototypeModifications Whether to ban modifications to `__proto__`, defaults to `true`.
|
|
10993
|
-
* @return An array of `{newDocument, result}` after the patch
|
|
10994
|
-
*/
|
|
10995
|
-
function applyPatch(document, patch, validateOperation, mutateDocument, banPrototypeModifications) {
|
|
10996
|
-
if (mutateDocument === void 0) { mutateDocument = true; }
|
|
10997
|
-
if (banPrototypeModifications === void 0) { banPrototypeModifications = true; }
|
|
10998
|
-
if (validateOperation) {
|
|
10999
|
-
if (!Array.isArray(patch)) {
|
|
11000
|
-
throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');
|
|
11001
|
-
}
|
|
11002
|
-
}
|
|
11003
|
-
if (!mutateDocument) {
|
|
11004
|
-
document = _deepClone(document);
|
|
11005
|
-
}
|
|
11006
|
-
var results = new Array(patch.length);
|
|
11007
|
-
for (var i = 0, length_1 = patch.length; i < length_1; i++) {
|
|
11008
|
-
// we don't need to pass mutateDocument argument because if it was true, we already deep cloned the object, we'll just pass `true`
|
|
11009
|
-
results[i] = applyOperation(document, patch[i], validateOperation, true, banPrototypeModifications, i);
|
|
11010
|
-
document = results[i].newDocument; // in case root was replaced
|
|
11011
|
-
}
|
|
11012
|
-
results.newDocument = document;
|
|
11013
|
-
return results;
|
|
11014
|
-
}
|
|
11015
|
-
/**
|
|
11016
|
-
* Apply a single JSON Patch Operation on a JSON document.
|
|
11017
|
-
* Returns the updated document.
|
|
11018
|
-
* Suitable as a reducer.
|
|
11019
|
-
*
|
|
11020
|
-
* @param document The document to patch
|
|
11021
|
-
* @param operation The operation to apply
|
|
11022
|
-
* @return The updated document
|
|
11023
|
-
*/
|
|
11024
|
-
function applyReducer(document, operation, index) {
|
|
11025
|
-
var operationResult = applyOperation(document, operation);
|
|
11026
|
-
if (operationResult.test === false) { // failed test
|
|
11027
|
-
throw new JsonPatchError("Test operation failed", 'TEST_OPERATION_FAILED', index, operation, document);
|
|
11028
|
-
}
|
|
11029
|
-
return operationResult.newDocument;
|
|
11030
|
-
}
|
|
11031
|
-
/**
|
|
11032
|
-
* Validates a single operation. Called from `jsonpatch.validate`. Throws `JsonPatchError` in case of an error.
|
|
11033
|
-
* @param {object} operation - operation object (patch)
|
|
11034
|
-
* @param {number} index - index of operation in the sequence
|
|
11035
|
-
* @param {object} [document] - object where the operation is supposed to be applied
|
|
11036
|
-
* @param {string} [existingPathFragment] - comes along with `document`
|
|
11037
|
-
*/
|
|
11038
|
-
function validator$1(operation, index, document, existingPathFragment) {
|
|
11039
|
-
if (typeof operation !== 'object' || operation === null || Array.isArray(operation)) {
|
|
11040
|
-
throw new JsonPatchError('Operation is not an object', 'OPERATION_NOT_AN_OBJECT', index, operation, document);
|
|
11041
|
-
}
|
|
11042
|
-
else if (!objOps[operation.op]) {
|
|
11043
|
-
throw new JsonPatchError('Operation `op` property is not one of operations defined in RFC-6902', 'OPERATION_OP_INVALID', index, operation, document);
|
|
11044
|
-
}
|
|
11045
|
-
else if (typeof operation.path !== 'string') {
|
|
11046
|
-
throw new JsonPatchError('Operation `path` property is not a string', 'OPERATION_PATH_INVALID', index, operation, document);
|
|
11047
|
-
}
|
|
11048
|
-
else if (operation.path.indexOf('/') !== 0 && operation.path.length > 0) {
|
|
11049
|
-
// paths that aren't empty string should start with "/"
|
|
11050
|
-
throw new JsonPatchError('Operation `path` property must start with "/"', 'OPERATION_PATH_INVALID', index, operation, document);
|
|
11051
|
-
}
|
|
11052
|
-
else if ((operation.op === 'move' || operation.op === 'copy') && typeof operation.from !== 'string') {
|
|
11053
|
-
throw new JsonPatchError('Operation `from` property is not present (applicable in `move` and `copy` operations)', 'OPERATION_FROM_REQUIRED', index, operation, document);
|
|
11054
|
-
}
|
|
11055
|
-
else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && operation.value === undefined) {
|
|
11056
|
-
throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_REQUIRED', index, operation, document);
|
|
11057
|
-
}
|
|
11058
|
-
else if ((operation.op === 'add' || operation.op === 'replace' || operation.op === 'test') && hasUndefined(operation.value)) {
|
|
11059
|
-
throw new JsonPatchError('Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)', 'OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED', index, operation, document);
|
|
11060
|
-
}
|
|
11061
|
-
else if (document) {
|
|
11062
|
-
if (operation.op == "add") {
|
|
11063
|
-
var pathLen = operation.path.split("/").length;
|
|
11064
|
-
var existingPathLen = existingPathFragment.split("/").length;
|
|
11065
|
-
if (pathLen !== existingPathLen + 1 && pathLen !== existingPathLen) {
|
|
11066
|
-
throw new JsonPatchError('Cannot perform an `add` operation at the desired path', 'OPERATION_PATH_CANNOT_ADD', index, operation, document);
|
|
11067
|
-
}
|
|
11068
|
-
}
|
|
11069
|
-
else if (operation.op === 'replace' || operation.op === 'remove' || operation.op === '_get') {
|
|
11070
|
-
if (operation.path !== existingPathFragment) {
|
|
11071
|
-
throw new JsonPatchError('Cannot perform the operation at a path that does not exist', 'OPERATION_PATH_UNRESOLVABLE', index, operation, document);
|
|
11072
|
-
}
|
|
11073
|
-
}
|
|
11074
|
-
else if (operation.op === 'move' || operation.op === 'copy') {
|
|
11075
|
-
var existingValue = { op: "_get", path: operation.from, value: undefined };
|
|
11076
|
-
var error = validate([existingValue], document);
|
|
11077
|
-
if (error && error.name === 'OPERATION_PATH_UNRESOLVABLE') {
|
|
11078
|
-
throw new JsonPatchError('Cannot perform the operation from a path that does not exist', 'OPERATION_FROM_UNRESOLVABLE', index, operation, document);
|
|
11079
|
-
}
|
|
11080
|
-
}
|
|
11081
|
-
}
|
|
11082
|
-
}
|
|
11083
|
-
/**
|
|
11084
|
-
* Validates a sequence of operations. If `document` parameter is provided, the sequence is additionally validated against the object document.
|
|
11085
|
-
* If error is encountered, returns a JsonPatchError object
|
|
11086
|
-
* @param sequence
|
|
11087
|
-
* @param document
|
|
11088
|
-
* @returns {JsonPatchError|undefined}
|
|
11089
|
-
*/
|
|
11090
|
-
function validate(sequence, document, externalValidator) {
|
|
11091
|
-
try {
|
|
11092
|
-
if (!Array.isArray(sequence)) {
|
|
11093
|
-
throw new JsonPatchError('Patch sequence must be an array', 'SEQUENCE_NOT_AN_ARRAY');
|
|
11094
|
-
}
|
|
11095
|
-
if (document) {
|
|
11096
|
-
//clone document and sequence so that we can safely try applying operations
|
|
11097
|
-
applyPatch(_deepClone(document), _deepClone(sequence), externalValidator || true);
|
|
11098
|
-
}
|
|
11099
|
-
else {
|
|
11100
|
-
externalValidator = externalValidator || validator$1;
|
|
11101
|
-
for (var i = 0; i < sequence.length; i++) {
|
|
11102
|
-
externalValidator(sequence[i], i, document, undefined);
|
|
11103
|
-
}
|
|
11104
|
-
}
|
|
11105
|
-
}
|
|
11106
|
-
catch (e) {
|
|
11107
|
-
if (e instanceof JsonPatchError) {
|
|
11108
|
-
return e;
|
|
11109
|
-
}
|
|
11110
|
-
else {
|
|
11111
|
-
throw e;
|
|
11112
|
-
}
|
|
11113
|
-
}
|
|
11114
|
-
}
|
|
11115
|
-
// based on https://github.com/epoberezkin/fast-deep-equal
|
|
11116
|
-
// MIT License
|
|
11117
|
-
// Copyright (c) 2017 Evgeny Poberezkin
|
|
11118
|
-
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11119
|
-
// of this software and associated documentation files (the "Software"), to deal
|
|
11120
|
-
// in the Software without restriction, including without limitation the rights
|
|
11121
|
-
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11122
|
-
// copies of the Software, and to permit persons to whom the Software is
|
|
11123
|
-
// furnished to do so, subject to the following conditions:
|
|
11124
|
-
// The above copyright notice and this permission notice shall be included in all
|
|
11125
|
-
// copies or substantial portions of the Software.
|
|
11126
|
-
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
11127
|
-
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
11128
|
-
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
11129
|
-
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
11130
|
-
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
11131
|
-
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
11132
|
-
// SOFTWARE.
|
|
11133
|
-
function _areEquals(a, b) {
|
|
11134
|
-
if (a === b)
|
|
11135
|
-
return true;
|
|
11136
|
-
if (a && b && typeof a == 'object' && typeof b == 'object') {
|
|
11137
|
-
var arrA = Array.isArray(a), arrB = Array.isArray(b), i, length, key;
|
|
11138
|
-
if (arrA && arrB) {
|
|
11139
|
-
length = a.length;
|
|
11140
|
-
if (length != b.length)
|
|
11141
|
-
return false;
|
|
11142
|
-
for (i = length; i-- !== 0;)
|
|
11143
|
-
if (!_areEquals(a[i], b[i]))
|
|
11144
|
-
return false;
|
|
11145
|
-
return true;
|
|
11146
|
-
}
|
|
11147
|
-
if (arrA != arrB)
|
|
11148
|
-
return false;
|
|
11149
|
-
var keys = Object.keys(a);
|
|
11150
|
-
length = keys.length;
|
|
11151
|
-
if (length !== Object.keys(b).length)
|
|
11152
|
-
return false;
|
|
11153
|
-
for (i = length; i-- !== 0;)
|
|
11154
|
-
if (!b.hasOwnProperty(keys[i]))
|
|
11155
|
-
return false;
|
|
11156
|
-
for (i = length; i-- !== 0;) {
|
|
11157
|
-
key = keys[i];
|
|
11158
|
-
if (!_areEquals(a[key], b[key]))
|
|
11159
|
-
return false;
|
|
11160
|
-
}
|
|
11161
|
-
return true;
|
|
11162
|
-
}
|
|
11163
|
-
return a !== a && b !== b;
|
|
11164
|
-
}
|
|
9746
|
+
(minutes ? hmsSign + minutes + 'M' : '') +
|
|
9747
|
+
(seconds ? hmsSign + s + 'S' : '')
|
|
9748
|
+
);
|
|
9749
|
+
}
|
|
11165
9750
|
|
|
11166
|
-
var
|
|
11167
|
-
__proto__: null,
|
|
11168
|
-
JsonPatchError: JsonPatchError,
|
|
11169
|
-
_areEquals: _areEquals,
|
|
11170
|
-
applyOperation: applyOperation,
|
|
11171
|
-
applyPatch: applyPatch,
|
|
11172
|
-
applyReducer: applyReducer,
|
|
11173
|
-
deepClone: deepClone,
|
|
11174
|
-
getValueByPointer: getValueByPointer,
|
|
11175
|
-
validate: validate,
|
|
11176
|
-
validator: validator$1
|
|
11177
|
-
});
|
|
9751
|
+
var proto$2 = Duration.prototype;
|
|
11178
9752
|
|
|
11179
|
-
|
|
11180
|
-
|
|
11181
|
-
|
|
11182
|
-
|
|
11183
|
-
|
|
11184
|
-
|
|
11185
|
-
|
|
11186
|
-
|
|
11187
|
-
|
|
11188
|
-
|
|
11189
|
-
|
|
11190
|
-
|
|
11191
|
-
|
|
11192
|
-
|
|
11193
|
-
|
|
11194
|
-
|
|
11195
|
-
|
|
11196
|
-
|
|
11197
|
-
|
|
11198
|
-
|
|
11199
|
-
|
|
11200
|
-
|
|
11201
|
-
|
|
11202
|
-
|
|
11203
|
-
|
|
11204
|
-
|
|
11205
|
-
|
|
11206
|
-
|
|
11207
|
-
|
|
11208
|
-
|
|
11209
|
-
|
|
11210
|
-
|
|
11211
|
-
function unobserve(root, observer) {
|
|
11212
|
-
observer.unobserve();
|
|
11213
|
-
}
|
|
11214
|
-
/**
|
|
11215
|
-
* Observes changes made to an object, which can then be retrieved using generate
|
|
11216
|
-
*/
|
|
11217
|
-
function observe(obj, callback) {
|
|
11218
|
-
var patches = [];
|
|
11219
|
-
var observer;
|
|
11220
|
-
var mirror = getMirror(obj);
|
|
11221
|
-
if (!mirror) {
|
|
11222
|
-
mirror = new Mirror(obj);
|
|
11223
|
-
beforeDict.set(obj, mirror);
|
|
11224
|
-
}
|
|
11225
|
-
else {
|
|
11226
|
-
var observerInfo = getObserverFromMirror(mirror, callback);
|
|
11227
|
-
observer = observerInfo && observerInfo.observer;
|
|
11228
|
-
}
|
|
11229
|
-
if (observer) {
|
|
11230
|
-
return observer;
|
|
11231
|
-
}
|
|
11232
|
-
observer = {};
|
|
11233
|
-
mirror.value = _deepClone(obj);
|
|
11234
|
-
if (callback) {
|
|
11235
|
-
observer.callback = callback;
|
|
11236
|
-
observer.next = null;
|
|
11237
|
-
var dirtyCheck = function () {
|
|
11238
|
-
generate(observer);
|
|
11239
|
-
};
|
|
11240
|
-
var fastCheck = function () {
|
|
11241
|
-
clearTimeout(observer.next);
|
|
11242
|
-
observer.next = setTimeout(dirtyCheck);
|
|
11243
|
-
};
|
|
11244
|
-
if (typeof window !== 'undefined') { //not Node
|
|
11245
|
-
window.addEventListener('mouseup', fastCheck);
|
|
11246
|
-
window.addEventListener('keyup', fastCheck);
|
|
11247
|
-
window.addEventListener('mousedown', fastCheck);
|
|
11248
|
-
window.addEventListener('keydown', fastCheck);
|
|
11249
|
-
window.addEventListener('change', fastCheck);
|
|
11250
|
-
}
|
|
11251
|
-
}
|
|
11252
|
-
observer.patches = patches;
|
|
11253
|
-
observer.object = obj;
|
|
11254
|
-
observer.unobserve = function () {
|
|
11255
|
-
generate(observer);
|
|
11256
|
-
clearTimeout(observer.next);
|
|
11257
|
-
removeObserverFromMirror(mirror, observer);
|
|
11258
|
-
if (typeof window !== 'undefined') {
|
|
11259
|
-
window.removeEventListener('mouseup', fastCheck);
|
|
11260
|
-
window.removeEventListener('keyup', fastCheck);
|
|
11261
|
-
window.removeEventListener('mousedown', fastCheck);
|
|
11262
|
-
window.removeEventListener('keydown', fastCheck);
|
|
11263
|
-
window.removeEventListener('change', fastCheck);
|
|
11264
|
-
}
|
|
11265
|
-
};
|
|
11266
|
-
mirror.observers.set(callback, new ObserverInfo(callback, observer));
|
|
11267
|
-
return observer;
|
|
11268
|
-
}
|
|
11269
|
-
/**
|
|
11270
|
-
* Generate an array of patches from an observer
|
|
11271
|
-
*/
|
|
11272
|
-
function generate(observer, invertible) {
|
|
11273
|
-
if (invertible === void 0) { invertible = false; }
|
|
11274
|
-
var mirror = beforeDict.get(observer.object);
|
|
11275
|
-
_generate(mirror.value, observer.object, observer.patches, "", invertible);
|
|
11276
|
-
if (observer.patches.length) {
|
|
11277
|
-
applyPatch(mirror.value, observer.patches);
|
|
11278
|
-
}
|
|
11279
|
-
var temp = observer.patches;
|
|
11280
|
-
if (temp.length > 0) {
|
|
11281
|
-
observer.patches = [];
|
|
11282
|
-
if (observer.callback) {
|
|
11283
|
-
observer.callback(temp);
|
|
11284
|
-
}
|
|
11285
|
-
}
|
|
11286
|
-
return temp;
|
|
11287
|
-
}
|
|
11288
|
-
// Dirty check if obj is different from mirror, generate patches and update mirror
|
|
11289
|
-
function _generate(mirror, obj, patches, path, invertible) {
|
|
11290
|
-
if (obj === mirror) {
|
|
11291
|
-
return;
|
|
11292
|
-
}
|
|
11293
|
-
if (typeof obj.toJSON === "function") {
|
|
11294
|
-
obj = obj.toJSON();
|
|
11295
|
-
}
|
|
11296
|
-
var newKeys = _objectKeys(obj);
|
|
11297
|
-
var oldKeys = _objectKeys(mirror);
|
|
11298
|
-
var deleted = false;
|
|
11299
|
-
//if ever "move" operation is implemented here, make sure this test runs OK: "should not generate the same patch twice (move)"
|
|
11300
|
-
for (var t = oldKeys.length - 1; t >= 0; t--) {
|
|
11301
|
-
var key = oldKeys[t];
|
|
11302
|
-
var oldVal = mirror[key];
|
|
11303
|
-
if (hasOwnProperty$b(obj, key) && !(obj[key] === undefined && oldVal !== undefined && Array.isArray(obj) === false)) {
|
|
11304
|
-
var newVal = obj[key];
|
|
11305
|
-
if (typeof oldVal == "object" && oldVal != null && typeof newVal == "object" && newVal != null && Array.isArray(oldVal) === Array.isArray(newVal)) {
|
|
11306
|
-
_generate(oldVal, newVal, patches, path + "/" + escapePathComponent(key), invertible);
|
|
11307
|
-
}
|
|
11308
|
-
else {
|
|
11309
|
-
if (oldVal !== newVal) {
|
|
11310
|
-
if (invertible) {
|
|
11311
|
-
patches.push({ op: "test", path: path + "/" + escapePathComponent(key), value: _deepClone(oldVal) });
|
|
11312
|
-
}
|
|
11313
|
-
patches.push({ op: "replace", path: path + "/" + escapePathComponent(key), value: _deepClone(newVal) });
|
|
11314
|
-
}
|
|
11315
|
-
}
|
|
11316
|
-
}
|
|
11317
|
-
else if (Array.isArray(mirror) === Array.isArray(obj)) {
|
|
11318
|
-
if (invertible) {
|
|
11319
|
-
patches.push({ op: "test", path: path + "/" + escapePathComponent(key), value: _deepClone(oldVal) });
|
|
11320
|
-
}
|
|
11321
|
-
patches.push({ op: "remove", path: path + "/" + escapePathComponent(key) });
|
|
11322
|
-
deleted = true; // property has been deleted
|
|
11323
|
-
}
|
|
11324
|
-
else {
|
|
11325
|
-
if (invertible) {
|
|
11326
|
-
patches.push({ op: "test", path: path, value: mirror });
|
|
11327
|
-
}
|
|
11328
|
-
patches.push({ op: "replace", path: path, value: obj });
|
|
11329
|
-
}
|
|
11330
|
-
}
|
|
11331
|
-
if (!deleted && newKeys.length == oldKeys.length) {
|
|
11332
|
-
return;
|
|
11333
|
-
}
|
|
11334
|
-
for (var t = 0; t < newKeys.length; t++) {
|
|
11335
|
-
var key = newKeys[t];
|
|
11336
|
-
if (!hasOwnProperty$b(mirror, key) && obj[key] !== undefined) {
|
|
11337
|
-
patches.push({ op: "add", path: path + "/" + escapePathComponent(key), value: _deepClone(obj[key]) });
|
|
11338
|
-
}
|
|
11339
|
-
}
|
|
11340
|
-
}
|
|
11341
|
-
/**
|
|
11342
|
-
* Create an array of patches from the differences in two objects
|
|
11343
|
-
*/
|
|
11344
|
-
function compare(tree1, tree2, invertible) {
|
|
11345
|
-
if (invertible === void 0) { invertible = false; }
|
|
11346
|
-
var patches = [];
|
|
11347
|
-
_generate(tree1, tree2, patches, '', invertible);
|
|
11348
|
-
return patches;
|
|
11349
|
-
}
|
|
11350
|
-
|
|
11351
|
-
var duplex = /*#__PURE__*/Object.freeze({
|
|
11352
|
-
__proto__: null,
|
|
11353
|
-
compare: compare,
|
|
11354
|
-
generate: generate,
|
|
11355
|
-
observe: observe,
|
|
11356
|
-
unobserve: unobserve
|
|
11357
|
-
});
|
|
9753
|
+
proto$2.isValid = isValid$1;
|
|
9754
|
+
proto$2.abs = abs;
|
|
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;
|
|
11358
9785
|
|
|
11359
|
-
|
|
11360
|
-
|
|
11361
|
-
|
|
11362
|
-
|
|
11363
|
-
|
|
11364
|
-
|
|
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;
|
|
9791
|
+
|
|
9792
|
+
// FORMATTING
|
|
9793
|
+
|
|
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;
|
|
11365
9861
|
|
|
11366
9862
|
toast.configure({
|
|
11367
9863
|
autoClose: 3000,
|
|
@@ -11428,7 +9924,7 @@ var stopPropagation = function (event) {
|
|
|
11428
9924
|
};
|
|
11429
9925
|
function useThrottledEffect(callback, delay, deps) {
|
|
11430
9926
|
if (deps === void 0) { deps = []; }
|
|
11431
|
-
//function will be executed only once in a given time interval.
|
|
9927
|
+
// function will be executed only once in a given time interval.
|
|
11432
9928
|
var lastRan = React.useRef(Date.now());
|
|
11433
9929
|
React.useEffect(function () {
|
|
11434
9930
|
var handler = setTimeout(function () {
|
|
@@ -11462,22 +9958,20 @@ function getRandomColor(email) {
|
|
|
11462
9958
|
return colors$1[sum % colors$1.length];
|
|
11463
9959
|
}
|
|
11464
9960
|
var getAlphabetIcon = function (str, rootClassName) {
|
|
11465
|
-
if (rootClassName === void 0) { rootClassName =
|
|
9961
|
+
if (rootClassName === void 0) { rootClassName = ''; }
|
|
11466
9962
|
if (!str)
|
|
11467
9963
|
return null;
|
|
11468
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] })));
|
|
11469
9965
|
};
|
|
11470
|
-
var getEmptyArrayOfLength = function (length) {
|
|
11471
|
-
return Array.from({ length: length });
|
|
11472
|
-
};
|
|
9966
|
+
var getEmptyArrayOfLength = function (length) { return Array.from({ length: length }); };
|
|
11473
9967
|
function noop$1() {
|
|
11474
9968
|
}
|
|
11475
9969
|
function not(e) {
|
|
11476
9970
|
return !e;
|
|
11477
9971
|
}
|
|
11478
9972
|
function useEffectAfterMount(cb, dependencies) {
|
|
11479
|
-
var justMounted =
|
|
11480
|
-
|
|
9973
|
+
var justMounted = React__namespace.useRef(true);
|
|
9974
|
+
React__namespace.useEffect(function () {
|
|
11481
9975
|
if (!justMounted.current) {
|
|
11482
9976
|
return cb();
|
|
11483
9977
|
}
|
|
@@ -11488,7 +9982,7 @@ function getCookie(sKey) {
|
|
|
11488
9982
|
if (!sKey) {
|
|
11489
9983
|
return null;
|
|
11490
9984
|
}
|
|
11491
|
-
return (document.cookie.replace(new RegExp(
|
|
9985
|
+
return (document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*".concat(sKey.replace(/[\-\.\+\*]/g, '\\$&'), "\\s*\\=\\s*([^;]*).*$)|^.*$")), '$1') || null);
|
|
11492
9986
|
}
|
|
11493
9987
|
function getLoginInfo() {
|
|
11494
9988
|
var argocdToken = getCookie(TOKEN_COOKIE_NAME);
|
|
@@ -11524,7 +10018,7 @@ function useForm(stateSchema, validationSchema, callback) {
|
|
|
11524
10018
|
// Wrapped in useCallback to cached the function to avoid intensive memory leaked
|
|
11525
10019
|
// in every re-render in component
|
|
11526
10020
|
var validateState = React.useCallback(function (state) {
|
|
11527
|
-
//check errors in all fields
|
|
10021
|
+
// check errors in all fields
|
|
11528
10022
|
var hasErrorInState = Object.keys(validationSchema).some(function (key) {
|
|
11529
10023
|
var isInputFieldRequired = validationSchema[key].required;
|
|
11530
10024
|
var stateValue = state[key].value; // state value
|
|
@@ -11676,9 +10170,7 @@ function useAsync(func, dependencyArray, shouldRun, options) {
|
|
|
11676
10170
|
dependencies: dependencyArray,
|
|
11677
10171
|
}), 2), state = _a[0], setState = _a[1];
|
|
11678
10172
|
var mounted = React.useRef(true);
|
|
11679
|
-
var dependencies = React.useMemo(function () {
|
|
11680
|
-
return __spreadArray(__spreadArray([], __read(dependencyArray), false), [shouldRun], false);
|
|
11681
|
-
}, __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));
|
|
11682
10174
|
var reload = function () {
|
|
11683
10175
|
function call() {
|
|
11684
10176
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -11737,9 +10229,7 @@ var processDeployedTime = function (lastDeployed, isArgoInstalled) {
|
|
|
11737
10229
|
if (lastDeployed) {
|
|
11738
10230
|
return handleUTCTime(lastDeployed, true);
|
|
11739
10231
|
}
|
|
11740
|
-
|
|
11741
|
-
return isArgoInstalled ? '' : 'Not deployed';
|
|
11742
|
-
}
|
|
10232
|
+
return isArgoInstalled ? '' : 'Not deployed';
|
|
11743
10233
|
};
|
|
11744
10234
|
/**
|
|
11745
10235
|
* Appends search parameters to the url as a query string
|
|
@@ -11760,79 +10250,20 @@ var getUrlWithSearchParams = function (url, params) {
|
|
|
11760
10250
|
/**
|
|
11761
10251
|
* Custom exception logger function for logging errors to sentry
|
|
11762
10252
|
*/
|
|
11763
|
-
var logExceptionToSentry = captureException.bind(window);
|
|
11764
|
-
function removeEmptyObjectKeysAndNullValues(obj) {
|
|
11765
|
-
// It recursively removes empty object keys and array values that are null
|
|
11766
|
-
for (var key in obj) {
|
|
11767
|
-
if (Array.isArray(obj[key])) {
|
|
11768
|
-
if (obj[key].length === 0)
|
|
11769
|
-
continue;
|
|
11770
|
-
obj[key] = obj[key].filter(function (item) { return item !== null; });
|
|
11771
|
-
// Check if the array is empty
|
|
11772
|
-
if (obj[key].length === 0) {
|
|
11773
|
-
delete obj[key]; // Delete the key if the array is empty
|
|
11774
|
-
}
|
|
11775
|
-
}
|
|
11776
|
-
else if (obj[key] && typeof obj[key] === 'object') {
|
|
11777
|
-
if (removeEmptyObjectKeysAndNullValues(obj[key])) {
|
|
11778
|
-
delete obj[key];
|
|
11779
|
-
}
|
|
11780
|
-
}
|
|
11781
|
-
else if (obj[key] === undefined) {
|
|
11782
|
-
delete obj[key];
|
|
11783
|
-
}
|
|
11784
|
-
}
|
|
11785
|
-
return Object.keys(obj).length === 0;
|
|
11786
|
-
}
|
|
11787
|
-
function getUnlockedJSON(json, jsonPathArray) {
|
|
11788
|
-
var jsonCopy = JSON.parse(JSON.stringify(json));
|
|
11789
|
-
var patches = jsonPathArray.flatMap(function (jsonPath) {
|
|
11790
|
-
var pathsToRemove = JSONPath({ path: jsonPath, json: jsonCopy, resultType: 'all' });
|
|
11791
|
-
return pathsToRemove.map(function (result) {
|
|
11792
|
-
return Array.isArray(result.parent)
|
|
11793
|
-
? { op: 'replace', path: result.pointer, value: null }
|
|
11794
|
-
: { op: 'remove', path: result.pointer };
|
|
11795
|
-
});
|
|
11796
|
-
});
|
|
11797
|
-
var newDocument = applyPatch(jsonCopy, patches).newDocument;
|
|
11798
|
-
removeEmptyObjectKeysAndNullValues(newDocument);
|
|
11799
|
-
return newDocument;
|
|
11800
|
-
}
|
|
11801
|
-
function getLockedJSON(json, jsonPathArray) {
|
|
11802
|
-
var jsonCopy = JSON.parse(JSON.stringify(json));
|
|
11803
|
-
var resultJson = {};
|
|
11804
|
-
jsonPathArray.forEach(function (jsonPath) {
|
|
11805
|
-
var elements = JSONPath({ path: jsonPath, json: jsonCopy, resultType: 'all' });
|
|
11806
|
-
elements.forEach(function (element) {
|
|
11807
|
-
var pathArray = JSONPath.toPathArray(element.path);
|
|
11808
|
-
var lastPath = pathArray.pop();
|
|
11809
|
-
var current = resultJson;
|
|
11810
|
-
for (var i = 0; i < pathArray.length; i++) {
|
|
11811
|
-
var key_1 = isNaN(Number(pathArray[i])) ? pathArray[i] : parseInt(pathArray[i]);
|
|
11812
|
-
if (!current[key_1]) {
|
|
11813
|
-
current[key_1] = isNaN(Number(pathArray[i + 1])) ? {} : [];
|
|
11814
|
-
}
|
|
11815
|
-
current = current[key_1];
|
|
11816
|
-
}
|
|
11817
|
-
var key = isNaN(Number(lastPath)) ? lastPath : parseInt(lastPath);
|
|
11818
|
-
current[key] = element.value;
|
|
11819
|
-
});
|
|
11820
|
-
});
|
|
11821
|
-
return resultJson['$'];
|
|
11822
|
-
}
|
|
10253
|
+
var logExceptionToSentry = captureException.bind(window);
|
|
11823
10254
|
|
|
11824
|
-
function
|
|
10255
|
+
var Progressing = function (_a) {
|
|
11825
10256
|
var pageLoader = _a.pageLoader, size = _a.size, theme = _a.theme, styles = _a.styles, fillColor = _a.fillColor;
|
|
11826
10257
|
var loaderSize = size ? "".concat(size, "px") : pageLoader ? '48px' : '20px';
|
|
11827
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" })] })) })) })) })));
|
|
11828
|
-
}
|
|
11829
|
-
function
|
|
10259
|
+
};
|
|
10260
|
+
var DetailsProgressing = function (_a) {
|
|
11830
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;
|
|
11831
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] })));
|
|
11832
|
-
}
|
|
10263
|
+
};
|
|
11833
10264
|
|
|
11834
10265
|
var VisibleModal = /** @class */ (function (_super) {
|
|
11835
|
-
__extends
|
|
10266
|
+
__extends(VisibleModal, _super);
|
|
11836
10267
|
function VisibleModal(props) {
|
|
11837
10268
|
var _this = _super.call(this, props) || this;
|
|
11838
10269
|
_this.modalRef = document.getElementById('visible-modal');
|
|
@@ -11963,7 +10394,7 @@ var SvgIcCross = function SvgIcCross(props) {
|
|
|
11963
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";
|
|
11964
10395
|
|
|
11965
10396
|
var OpaqueModal = /** @class */ (function (_super) {
|
|
11966
|
-
__extends
|
|
10397
|
+
__extends(OpaqueModal, _super);
|
|
11967
10398
|
function OpaqueModal() {
|
|
11968
10399
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
11969
10400
|
_this.modalRef = document.getElementById('full-screen-modal');
|
|
@@ -11971,23 +10402,23 @@ var OpaqueModal = /** @class */ (function (_super) {
|
|
|
11971
10402
|
}
|
|
11972
10403
|
OpaqueModal.prototype.componentDidMount = function () {
|
|
11973
10404
|
if (this.props.noBackground)
|
|
11974
|
-
this.modalRef.classList.add(
|
|
10405
|
+
this.modalRef.classList.add('show');
|
|
11975
10406
|
else
|
|
11976
|
-
this.modalRef.classList.add(
|
|
10407
|
+
this.modalRef.classList.add('show-with-bg');
|
|
11977
10408
|
};
|
|
11978
10409
|
OpaqueModal.prototype.componentWillUnmount = function () {
|
|
11979
|
-
this.modalRef.classList.remove(
|
|
11980
|
-
this.modalRef.classList.remove(
|
|
10410
|
+
this.modalRef.classList.remove('show');
|
|
10411
|
+
this.modalRef.classList.remove('show-with-bg');
|
|
11981
10412
|
};
|
|
11982
10413
|
OpaqueModal.prototype.render = function () {
|
|
11983
|
-
var _a = __assign({}, this.props), _b = _a.className, className = _b === void 0 ?
|
|
11984
|
-
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'));
|
|
11985
10416
|
};
|
|
11986
10417
|
return OpaqueModal;
|
|
11987
10418
|
}(React.Component));
|
|
11988
10419
|
|
|
11989
10420
|
var VisibleModal2 = /** @class */ (function (_super) {
|
|
11990
|
-
__extends
|
|
10421
|
+
__extends(VisibleModal2, _super);
|
|
11991
10422
|
function VisibleModal2(props) {
|
|
11992
10423
|
var _this = _super.call(this, props) || this;
|
|
11993
10424
|
_this.modalRef = document.getElementById('visible-modal-2');
|
|
@@ -12000,12 +10431,12 @@ var VisibleModal2 = /** @class */ (function (_super) {
|
|
|
12000
10431
|
}
|
|
12001
10432
|
};
|
|
12002
10433
|
VisibleModal2.prototype.componentDidMount = function () {
|
|
12003
|
-
document.addEventListener(
|
|
12004
|
-
this.modalRef.classList.add(
|
|
10434
|
+
document.addEventListener('keydown', this.escFunction);
|
|
10435
|
+
this.modalRef.classList.add('show-with-bg');
|
|
12005
10436
|
};
|
|
12006
10437
|
VisibleModal2.prototype.componentWillUnmount = function () {
|
|
12007
|
-
document.removeEventListener(
|
|
12008
|
-
this.modalRef.classList.remove(
|
|
10438
|
+
document.removeEventListener('keydown', this.escFunction);
|
|
10439
|
+
this.modalRef.classList.remove('show-with-bg');
|
|
12009
10440
|
};
|
|
12010
10441
|
VisibleModal2.prototype.render = function () {
|
|
12011
10442
|
var _a;
|
|
@@ -12034,7 +10465,7 @@ function useBreadcrumbContext() {
|
|
|
12034
10465
|
return context;
|
|
12035
10466
|
}
|
|
12036
10467
|
|
|
12037
|
-
|
|
10468
|
+
React__namespace.createContext(null);
|
|
12038
10469
|
function useBreadcrumb(props, deps) {
|
|
12039
10470
|
var sep = (props === null || props === void 0 ? void 0 : props.sep) || '/';
|
|
12040
10471
|
deps = deps || [];
|
|
@@ -12078,7 +10509,7 @@ function useBreadcrumb(props, deps) {
|
|
|
12078
10509
|
? "".concat(prefix).concat(to)
|
|
12079
10510
|
: null,
|
|
12080
10511
|
name: typeof state.alias[name] === 'object'
|
|
12081
|
-
?
|
|
10512
|
+
? ((_d = state.alias[name]) === null || _d === void 0 ? void 0 : _d.component)
|
|
12082
10513
|
? state.alias[name].component
|
|
12083
10514
|
: null
|
|
12084
10515
|
: state.alias[name] || name,
|
|
@@ -12093,25 +10524,23 @@ var BreadCrumb = function (_a) {
|
|
|
12093
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;
|
|
12094
10525
|
var url = reactRouterDom.useRouteMatch().url;
|
|
12095
10526
|
var filteredCrumbs = breadcrumbs.filter(function (crumb) { return !!crumb.name; });
|
|
12096
|
-
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)); }) }));
|
|
12097
10528
|
};
|
|
12098
10529
|
|
|
12099
10530
|
var RadioGroupContext = React.createContext({ name: '', value: '', disabled: false, onChange: function (event) { } });
|
|
12100
10531
|
var RadioGroupItem = /** @class */ (function (_super) {
|
|
12101
|
-
__extends
|
|
10532
|
+
__extends(RadioGroupItem, _super);
|
|
12102
10533
|
function RadioGroupItem() {
|
|
12103
10534
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
12104
10535
|
}
|
|
12105
10536
|
RadioGroupItem.prototype.render = function () {
|
|
12106
10537
|
var _this = this;
|
|
12107
|
-
return (jsxRuntime.jsx(RadioGroupContext.Consumer, { children: function (context) {
|
|
12108
|
-
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 }))] }))] })) }));
|
|
12109
|
-
} }));
|
|
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 }))] }))] }))); } }));
|
|
12110
10539
|
};
|
|
12111
10540
|
return RadioGroupItem;
|
|
12112
10541
|
}(React.Component));
|
|
12113
10542
|
var RadioGroup$1 = /** @class */ (function (_super) {
|
|
12114
|
-
__extends
|
|
10543
|
+
__extends(RadioGroup, _super);
|
|
12115
10544
|
function RadioGroup() {
|
|
12116
10545
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
12117
10546
|
}
|
|
@@ -12126,23 +10555,23 @@ var RadioGroup$1 = /** @class */ (function (_super) {
|
|
|
12126
10555
|
return RadioGroup;
|
|
12127
10556
|
}(React.Component));
|
|
12128
10557
|
|
|
12129
|
-
var PopupContext =
|
|
10558
|
+
var PopupContext = React__namespace.createContext(null);
|
|
12130
10559
|
function usePopupContext() {
|
|
12131
|
-
var context =
|
|
10560
|
+
var context = React__namespace.useContext(PopupContext);
|
|
12132
10561
|
if (!context) {
|
|
12133
10562
|
throw new Error("Select compound components cannot be rendered outside popupmenup");
|
|
12134
10563
|
}
|
|
12135
10564
|
return context;
|
|
12136
10565
|
}
|
|
12137
|
-
function
|
|
10566
|
+
var PopupMenu = function (_a) {
|
|
12138
10567
|
var _b;
|
|
12139
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;
|
|
12140
|
-
var _g = __read(
|
|
12141
|
-
var _h = __read(
|
|
12142
|
-
var observer =
|
|
12143
|
-
var buttonRef =
|
|
12144
|
-
var buttonWidth =
|
|
12145
|
-
|
|
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 () {
|
|
12146
10575
|
observer.current = window.IntersectionObserver ? new IntersectionObserver(intersectionCallback, options) : null;
|
|
12147
10576
|
return function () {
|
|
12148
10577
|
if (observer && observer.current && observer.current.disconnect)
|
|
@@ -12236,17 +10665,17 @@ function PopupMenu(_a) {
|
|
|
12236
10665
|
initialiseButtonWidth: initialiseButtonWidth,
|
|
12237
10666
|
buttonWidth: buttonWidth,
|
|
12238
10667
|
} }, { children: children })));
|
|
12239
|
-
}
|
|
12240
|
-
function
|
|
12241
|
-
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;
|
|
12242
10671
|
var _j = usePopupContext(), handleOpen = _j.handleOpen, popupPosition = _j.popupPosition; _j.buttonRef; var initialiseButtonWidth = _j.initialiseButtonWidth;
|
|
12243
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 })));
|
|
12244
|
-
}
|
|
12245
|
-
|
|
10673
|
+
};
|
|
10674
|
+
var Body$1 = function (_a) {
|
|
12246
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;
|
|
12247
10676
|
var _g = usePopupContext(), handleClose = _g.handleClose, popupPosition = _g.popupPosition, opacity = _g.opacity, callbackRef = _g.callbackRef, buttonWidth = _g.buttonWidth;
|
|
12248
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;
|
|
12249
|
-
}
|
|
10678
|
+
};
|
|
12250
10679
|
PopupMenu.Button = Button;
|
|
12251
10680
|
PopupMenu.Body = Body$1;
|
|
12252
10681
|
|
|
@@ -16289,7 +14718,7 @@ styleInject(css_248z$5);
|
|
|
16289
14718
|
|
|
16290
14719
|
// This component will handle some of the new tippy designs and interactions
|
|
16291
14720
|
// So this can be updated to support further for new features or interactions
|
|
16292
|
-
function
|
|
14721
|
+
var TippyCustomized = function (props) {
|
|
16293
14722
|
var tippyRef = React.useRef(null);
|
|
16294
14723
|
var _a = __read(React.useState(false), 2), showHeadingInfo = _a[0], setShowHeadingInfo = _a[1];
|
|
16295
14724
|
var isWhiteTheme = props.theme === exports.TippyTheme.white;
|
|
@@ -16318,16 +14747,15 @@ function TippyCustomized(props) {
|
|
|
16318
14747
|
};
|
|
16319
14748
|
var getTippyContent = function () {
|
|
16320
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;
|
|
16321
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [!hideHeading &&
|
|
16322
|
-
|
|
16323
|
-
|
|
16324
|
-
: '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
|
|
16325
14753
|
? 'p-12'
|
|
16326
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' })) })))] }));
|
|
16327
14755
|
};
|
|
16328
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;
|
|
16329
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 })));
|
|
16330
|
-
}
|
|
14758
|
+
};
|
|
16331
14759
|
|
|
16332
14760
|
var _path$9, _circle, _path2$1;
|
|
16333
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); }
|
|
@@ -16360,10 +14788,8 @@ var SvgInjectTag = function SvgInjectTag(props) {
|
|
|
16360
14788
|
|
|
16361
14789
|
function PropagateTagInfo(_a) {
|
|
16362
14790
|
var isCreateApp = _a.isCreateApp;
|
|
16363
|
-
var additionalInfo = function () {
|
|
16364
|
-
|
|
16365
|
-
};
|
|
16366
|
-
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" })] })) })));
|
|
16367
14793
|
}
|
|
16368
14794
|
|
|
16369
14795
|
var _path$8;
|
|
@@ -16381,7 +14807,7 @@ var SvgIcInfoOutlined = function SvgIcInfoOutlined(props) {
|
|
|
16381
14807
|
})));
|
|
16382
14808
|
};
|
|
16383
14809
|
|
|
16384
|
-
function
|
|
14810
|
+
var ResizableTagTextArea = function (_a) {
|
|
16385
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;
|
|
16386
14812
|
var _b = __read(React.useState(''), 2), text = _b[0], setText = _b[1];
|
|
16387
14813
|
React.useEffect(function () {
|
|
@@ -16394,9 +14820,9 @@ function ResizableTagTextArea(_a) {
|
|
|
16394
14820
|
var reInitHeight = function () {
|
|
16395
14821
|
if (document.activeElement !== refVar.current)
|
|
16396
14822
|
return;
|
|
16397
|
-
refVar.current.style.height = minHeight
|
|
14823
|
+
refVar.current.style.height = "".concat(minHeight, "px");
|
|
16398
14824
|
if (dependentRef) {
|
|
16399
|
-
dependentRef.current.style.height = minHeight
|
|
14825
|
+
dependentRef.current.style.height = "".concat(minHeight, "px");
|
|
16400
14826
|
}
|
|
16401
14827
|
var nextHeight = refVar.current.scrollHeight;
|
|
16402
14828
|
if (dependentRef && nextHeight < dependentRef.current.scrollHeight) {
|
|
@@ -16408,16 +14834,16 @@ function ResizableTagTextArea(_a) {
|
|
|
16408
14834
|
if (maxHeight && nextHeight > maxHeight) {
|
|
16409
14835
|
nextHeight = maxHeight;
|
|
16410
14836
|
}
|
|
16411
|
-
refVar.current.style.height = nextHeight
|
|
14837
|
+
refVar.current.style.height = "".concat(nextHeight, "px");
|
|
16412
14838
|
if (dependentRef) {
|
|
16413
|
-
dependentRef.current.style.height = nextHeight
|
|
14839
|
+
dependentRef.current.style.height = "".concat(nextHeight, "px");
|
|
16414
14840
|
}
|
|
16415
14841
|
};
|
|
16416
14842
|
useThrottledEffect(reInitHeight, 500, [text]);
|
|
16417
14843
|
var handleOnBlur = function (event) {
|
|
16418
|
-
refVar.current.style.height = minHeight
|
|
14844
|
+
refVar.current.style.height = "".concat(minHeight, "px");
|
|
16419
14845
|
if (dependentRef) {
|
|
16420
|
-
dependentRef.current.style.height = minHeight
|
|
14846
|
+
dependentRef.current.style.height = "".concat(minHeight, "px");
|
|
16421
14847
|
}
|
|
16422
14848
|
onBlur && onBlur(event);
|
|
16423
14849
|
};
|
|
@@ -16426,7 +14852,7 @@ function ResizableTagTextArea(_a) {
|
|
|
16426
14852
|
onFocus && onFocus(event);
|
|
16427
14853
|
};
|
|
16428
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 }));
|
|
16429
|
-
}
|
|
14855
|
+
};
|
|
16430
14856
|
|
|
16431
14857
|
var validateTagValue = function (value) {
|
|
16432
14858
|
var errorList = [];
|
|
@@ -16451,28 +14877,26 @@ var ValidationRules = /** @class */ (function () {
|
|
|
16451
14877
|
if (!key) {
|
|
16452
14878
|
errorList.push('Key is required');
|
|
16453
14879
|
}
|
|
16454
|
-
else {
|
|
16455
|
-
|
|
16456
|
-
|
|
16457
|
-
|
|
16458
|
-
|
|
16459
|
-
|
|
16460
|
-
|
|
16461
|
-
|
|
16462
|
-
|
|
16463
|
-
|
|
16464
|
-
|
|
16465
|
-
errorList.push('Prefix: Can be max 253 characters');
|
|
16466
|
-
}
|
|
16467
|
-
var validPrefix = PATTERNS.KUBERNETES_KEY_PREFIX.test(prefix);
|
|
16468
|
-
if (!validPrefix) {
|
|
16469
|
-
errorList.push('Prefix: Must be a DNS subdomain (a series of DNS labels separated by dots (.)');
|
|
16470
|
-
}
|
|
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');
|
|
16471
14891
|
}
|
|
16472
|
-
|
|
16473
|
-
|
|
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 (.)');
|
|
16474
14895
|
}
|
|
16475
14896
|
}
|
|
14897
|
+
else {
|
|
14898
|
+
errorList.push.apply(errorList, __spreadArray([], __read(validateTagValue(key).map(function (error) { return "Name: ".concat(error); })), false));
|
|
14899
|
+
}
|
|
16476
14900
|
}
|
|
16477
14901
|
return { isValid: errorList.length === 0, messages: errorList };
|
|
16478
14902
|
};
|
|
@@ -16481,10 +14905,8 @@ var ValidationRules = /** @class */ (function () {
|
|
|
16481
14905
|
if (!value) {
|
|
16482
14906
|
errorList.push('Value is required');
|
|
16483
14907
|
}
|
|
16484
|
-
else {
|
|
16485
|
-
|
|
16486
|
-
errorList.push.apply(errorList, __spreadArray([], __read(validateTagValue(value)), false));
|
|
16487
|
-
}
|
|
14908
|
+
else if (!key.startsWith('devtron.ai/')) {
|
|
14909
|
+
errorList.push.apply(errorList, __spreadArray([], __read(validateTagValue(value)), false));
|
|
16488
14910
|
}
|
|
16489
14911
|
return { isValid: errorList.length === 0, messages: errorList };
|
|
16490
14912
|
};
|
|
@@ -16555,12 +14977,8 @@ var TagLabelValueSelector = function (_a) {
|
|
|
16555
14977
|
}
|
|
16556
14978
|
return null;
|
|
16557
14979
|
};
|
|
16558
|
-
var option = function (tag, index) {
|
|
16559
|
-
|
|
16560
|
-
};
|
|
16561
|
-
var optionWithTippy = function (tag, index) {
|
|
16562
|
-
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) })));
|
|
16563
|
-
};
|
|
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) }))); };
|
|
16564
14982
|
var renderSuggestions = function () {
|
|
16565
14983
|
if (tagOptions === null || tagOptions === void 0 ? void 0 : tagOptions.length) {
|
|
16566
14984
|
var filteredTags = tagOptions.filter(function (tag) { return tag.label.indexOf(selectedValue) >= 0; });
|
|
@@ -16605,7 +15023,7 @@ var TagDetails = function (_a) {
|
|
|
16605
15023
|
}
|
|
16606
15024
|
setTagData(index, _tagData);
|
|
16607
15025
|
};
|
|
16608
|
-
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" }) }))] })));
|
|
16609
15027
|
};
|
|
16610
15028
|
|
|
16611
15029
|
var _path$7;
|
|
@@ -16628,7 +15046,7 @@ var TagLabelSelect = function (_a) {
|
|
|
16628
15046
|
var setTagData = function (index, tagValue) {
|
|
16629
15047
|
var _tags = __spreadArray([], __read(labelTags), false);
|
|
16630
15048
|
var _tagValue = tagValue;
|
|
16631
|
-
if (_tagValue.key.startsWith(
|
|
15049
|
+
if (_tagValue.key.startsWith('devtron.ai/')) {
|
|
16632
15050
|
_tagValue.propagate = false;
|
|
16633
15051
|
}
|
|
16634
15052
|
_tags[index] = _tagValue;
|
|
@@ -16647,22 +15065,22 @@ var TagLabelSelect = function (_a) {
|
|
|
16647
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))); }) }))] })] }));
|
|
16648
15066
|
};
|
|
16649
15067
|
|
|
16650
|
-
function
|
|
15068
|
+
var ConfirmationDialog = function (_a) {
|
|
16651
15069
|
var _b = _a.className, className = _b === void 0 ? '' : _b, children = _a.children;
|
|
16652
15070
|
return (jsxRuntime.jsx(VisibleModal2, __assign({ className: "confirmation-dialog" }, { children: jsxRuntime.jsx("div", __assign({ className: "confirmation-dialog__body ".concat(className) }, { children: children })) })));
|
|
16653
|
-
}
|
|
16654
|
-
function
|
|
15071
|
+
};
|
|
15072
|
+
var Icon = function (_a) {
|
|
16655
15073
|
var src = _a.src, _b = _a.className, className = _b === void 0 ? '' : _b;
|
|
16656
|
-
return jsxRuntime.jsx("img", { src: src, className: "confirmation-dialog__icon ".concat(className), alt: "" });
|
|
16657
|
-
}
|
|
16658
|
-
function
|
|
15074
|
+
return (jsxRuntime.jsx("img", { src: src, className: "confirmation-dialog__icon ".concat(className), alt: "" }));
|
|
15075
|
+
};
|
|
15076
|
+
var Body = function (_a) {
|
|
16659
15077
|
var title = _a.title, _b = _a.subtitle, subtitle = _b === void 0 ? null : _b, _c = _a.children, children = _c === void 0 ? null : _c;
|
|
16660
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] })));
|
|
16661
|
-
}
|
|
16662
|
-
function
|
|
15079
|
+
};
|
|
15080
|
+
var ButtonGroup = function (_a) {
|
|
16663
15081
|
var children = _a.children;
|
|
16664
|
-
return jsxRuntime.jsx("div", __assign({ className: "flex right confirmation-dialog__button-group" }, { children: children }));
|
|
16665
|
-
}
|
|
15082
|
+
return (jsxRuntime.jsx("div", __assign({ className: "flex right confirmation-dialog__button-group" }, { children: children })));
|
|
15083
|
+
};
|
|
16666
15084
|
ConfirmationDialog.Icon = Icon;
|
|
16667
15085
|
ConfirmationDialog.Body = Body;
|
|
16668
15086
|
ConfirmationDialog.ButtonGroup = ButtonGroup;
|
|
@@ -16684,15 +15102,13 @@ var DeleteDialog = function (props) {
|
|
|
16684
15102
|
};
|
|
16685
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 || '')) }))] })) })] })));
|
|
16686
15104
|
};
|
|
16687
|
-
function
|
|
16688
|
-
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: props.children });
|
|
16689
|
-
}
|
|
15105
|
+
var DeleteDialogDescription = function (props) { return jsxRuntime.jsx(jsxRuntime.Fragment, { children: props.children }); };
|
|
16690
15106
|
DeleteDialog.Description = DeleteDialogDescription;
|
|
16691
15107
|
|
|
16692
|
-
//TODO: may not need context
|
|
15108
|
+
// TODO: may not need context
|
|
16693
15109
|
var DialogFormContext = React.createContext({ title: '', isLoading: false, close: function (event) { }, onSave: function (event) { } });
|
|
16694
15110
|
var DialogForm = /** @class */ (function (_super) {
|
|
16695
|
-
__extends
|
|
15111
|
+
__extends(DialogForm, _super);
|
|
16696
15112
|
function DialogForm(props) {
|
|
16697
15113
|
var _this = _super.call(this, props) || this;
|
|
16698
15114
|
_this.escFunction = _this.escFunction.bind(_this);
|
|
@@ -16716,27 +15132,23 @@ var DialogForm = /** @class */ (function (_super) {
|
|
|
16716
15132
|
isLoading: this.props.isLoading,
|
|
16717
15133
|
close: this.props.close,
|
|
16718
15134
|
onSave: this.props.onSave,
|
|
16719
|
-
} }, { 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) {
|
|
16720
|
-
|
|
16721
|
-
|
|
16722
|
-
|
|
16723
|
-
|
|
16724
|
-
|
|
16725
|
-
} }, { children: _this.props.children })));
|
|
16726
|
-
} })] })) })) })));
|
|
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 }))); } })] })) })) })));
|
|
16727
15141
|
};
|
|
16728
15142
|
return DialogForm;
|
|
16729
15143
|
}(React.Component));
|
|
16730
15144
|
var DialogFormSubmit = /** @class */ (function (_super) {
|
|
16731
|
-
__extends
|
|
15145
|
+
__extends(DialogFormSubmit, _super);
|
|
16732
15146
|
function DialogFormSubmit() {
|
|
16733
15147
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
16734
15148
|
}
|
|
16735
15149
|
DialogFormSubmit.prototype.render = function () {
|
|
16736
15150
|
var _this = this;
|
|
16737
|
-
return (jsxRuntime.jsx(DialogFormContext.Consumer, { children: function (context) {
|
|
16738
|
-
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 })));
|
|
16739
|
-
} }));
|
|
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 }))); } }));
|
|
16740
15152
|
};
|
|
16741
15153
|
return DialogFormSubmit;
|
|
16742
15154
|
}(React.Component));
|
|
@@ -19586,14 +17998,14 @@ function _objectWithoutProperties(source, excluded) {
|
|
|
19586
17998
|
return target;
|
|
19587
17999
|
}
|
|
19588
18000
|
|
|
19589
|
-
function _typeof(
|
|
18001
|
+
function _typeof(o) {
|
|
19590
18002
|
"@babel/helpers - typeof";
|
|
19591
18003
|
|
|
19592
|
-
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (
|
|
19593
|
-
return typeof
|
|
19594
|
-
} : function (
|
|
19595
|
-
return
|
|
19596
|
-
}, _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);
|
|
19597
18009
|
}
|
|
19598
18010
|
|
|
19599
18011
|
function _classCallCheck(instance, Constructor) {
|
|
@@ -19602,20 +18014,20 @@ function _classCallCheck(instance, Constructor) {
|
|
|
19602
18014
|
}
|
|
19603
18015
|
}
|
|
19604
18016
|
|
|
19605
|
-
function
|
|
19606
|
-
if (
|
|
19607
|
-
var
|
|
19608
|
-
if (
|
|
19609
|
-
var
|
|
19610
|
-
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;
|
|
19611
18023
|
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
19612
18024
|
}
|
|
19613
|
-
return (
|
|
18025
|
+
return ("string" === r ? String : Number)(t);
|
|
19614
18026
|
}
|
|
19615
18027
|
|
|
19616
|
-
function
|
|
19617
|
-
var
|
|
19618
|
-
return _typeof(
|
|
18028
|
+
function toPropertyKey(t) {
|
|
18029
|
+
var i = toPrimitive(t, "string");
|
|
18030
|
+
return "symbol" == _typeof(i) ? i : String(i);
|
|
19619
18031
|
}
|
|
19620
18032
|
|
|
19621
18033
|
function _defineProperties(target, props) {
|
|
@@ -19624,7 +18036,7 @@ function _defineProperties(target, props) {
|
|
|
19624
18036
|
descriptor.enumerable = descriptor.enumerable || false;
|
|
19625
18037
|
descriptor.configurable = true;
|
|
19626
18038
|
if ("value" in descriptor) descriptor.writable = true;
|
|
19627
|
-
Object.defineProperty(target,
|
|
18039
|
+
Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
|
|
19628
18040
|
}
|
|
19629
18041
|
}
|
|
19630
18042
|
function _createClass(Constructor, protoProps, staticProps) {
|
|
@@ -19662,7 +18074,7 @@ function _inherits(subClass, superClass) {
|
|
|
19662
18074
|
}
|
|
19663
18075
|
|
|
19664
18076
|
function _defineProperty$1(obj, key, value) {
|
|
19665
|
-
key =
|
|
18077
|
+
key = toPropertyKey(key);
|
|
19666
18078
|
if (key in obj) {
|
|
19667
18079
|
Object.defineProperty(obj, key, {
|
|
19668
18080
|
value: value,
|
|
@@ -21220,31 +19632,31 @@ function _arrayWithHoles(arr) {
|
|
|
21220
19632
|
if (Array.isArray(arr)) return arr;
|
|
21221
19633
|
}
|
|
21222
19634
|
|
|
21223
|
-
function _iterableToArrayLimit(
|
|
21224
|
-
var
|
|
21225
|
-
if (null !=
|
|
21226
|
-
var
|
|
21227
|
-
|
|
21228
|
-
|
|
21229
|
-
|
|
21230
|
-
|
|
21231
|
-
|
|
21232
|
-
|
|
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;
|
|
21233
19645
|
try {
|
|
21234
|
-
if (
|
|
21235
|
-
if (Object(
|
|
21236
|
-
|
|
21237
|
-
} else for (; !(
|
|
21238
|
-
} catch (
|
|
21239
|
-
|
|
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;
|
|
21240
19652
|
} finally {
|
|
21241
19653
|
try {
|
|
21242
|
-
if (!
|
|
19654
|
+
if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
|
|
21243
19655
|
} finally {
|
|
21244
|
-
if (
|
|
19656
|
+
if (o) throw n;
|
|
21245
19657
|
}
|
|
21246
19658
|
}
|
|
21247
|
-
return
|
|
19659
|
+
return a;
|
|
21248
19660
|
}
|
|
21249
19661
|
}
|
|
21250
19662
|
|
|
@@ -24235,35 +22647,31 @@ var MultiValueChipContainer = function (_a) {
|
|
|
24235
22647
|
var multiSelectStyles = {
|
|
24236
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' })); },
|
|
24237
22649
|
menu: function (base, state) { return (__assign({}, base)); },
|
|
24238
|
-
option: function (base, state) {
|
|
24239
|
-
return __assign(__assign({}, base), { backgroundColor: state.isFocused ? 'var(--N100)' : 'white', color: 'var(--N900)', padding: '8px 12px' });
|
|
24240
|
-
},
|
|
22650
|
+
option: function (base, state) { return (__assign(__assign({}, base), { backgroundColor: state.isFocused ? 'var(--N100)' : 'white', color: 'var(--N900)', padding: '8px 12px' })); },
|
|
24241
22651
|
container: function (base, state) { return (__assign(__assign({}, base), { cursor: state.isDisabled ? 'not-allowed' : 'pointer' })); },
|
|
24242
22652
|
valueContainer: function (base, state) { return (__assign(__assign({}, base), { color: state.selectProps.menuIsOpen ? 'var(--N500)' : base.color })); },
|
|
24243
22653
|
};
|
|
24244
|
-
var CustomSelect = function (props) {
|
|
24245
|
-
return jsxRuntime.jsx(ReactSelect, __assign({}, props));
|
|
24246
|
-
};
|
|
22654
|
+
var CustomSelect = function (props) { return jsxRuntime.jsx(ReactSelect, __assign({}, props)); };
|
|
24247
22655
|
|
|
24248
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}";
|
|
24249
22657
|
styleInject(css_248z$4);
|
|
24250
22658
|
|
|
24251
|
-
function
|
|
22659
|
+
var InfoColourBar = function (_a) {
|
|
24252
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;
|
|
24253
22661
|
var renderLink = function () {
|
|
24254
22662
|
if (!linkText) {
|
|
24255
22663
|
return null;
|
|
24256
22664
|
}
|
|
24257
|
-
|
|
22665
|
+
if (redirectLink) {
|
|
24258
22666
|
if (internalLink) {
|
|
24259
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 })));
|
|
24260
22668
|
}
|
|
24261
|
-
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 })));
|
|
24262
22670
|
}
|
|
24263
22671
|
return (linkOnClick && (jsxRuntime.jsx("div", __assign({ onClick: linkOnClick, className: "cursor dc__link dc__underline-onhover", "data-testid": "info-bar-linkText" }, { children: linkText }))));
|
|
24264
22672
|
};
|
|
24265
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()] })) })));
|
|
24266
|
-
}
|
|
22674
|
+
};
|
|
24267
22675
|
|
|
24268
22676
|
var getTeamListMin = function () {
|
|
24269
22677
|
// ignore active field
|
|
@@ -24273,9 +22681,7 @@ var getTeamListMin = function () {
|
|
|
24273
22681
|
if (response && response.result && Array.isArray(response.result)) {
|
|
24274
22682
|
list = response.result;
|
|
24275
22683
|
}
|
|
24276
|
-
list = list.sort(function (a, b) {
|
|
24277
|
-
return sortCallback('name', a, b);
|
|
24278
|
-
});
|
|
22684
|
+
list = list.sort(function (a, b) { return sortCallback('name', a, b); });
|
|
24279
22685
|
return {
|
|
24280
22686
|
code: response.code,
|
|
24281
22687
|
status: response.status,
|
|
@@ -24301,9 +22707,7 @@ function setImageTags(request, pipelineId, artifactId) {
|
|
|
24301
22707
|
return post("".concat(ROUTES.IMAGE_TAGGING, "/").concat(pipelineId, "/").concat(artifactId), request);
|
|
24302
22708
|
}
|
|
24303
22709
|
var processURL = function (url, params) {
|
|
24304
|
-
var validParams = Object.keys(params).filter(function (key) {
|
|
24305
|
-
return params[key] != null;
|
|
24306
|
-
});
|
|
22710
|
+
var validParams = Object.keys(params).filter(function (key) { return params[key] != null; });
|
|
24307
22711
|
if (!validParams.length) {
|
|
24308
22712
|
return url;
|
|
24309
22713
|
}
|
|
@@ -24365,24 +22769,22 @@ var cdMaterialListModal = function (artifacts, offset, artifactId, artifactStatu
|
|
|
24365
22769
|
// It is going to be null but required in type so can't remove
|
|
24366
22770
|
lastExecution: material.lastExecution,
|
|
24367
22771
|
materialInfo: material.material_info
|
|
24368
|
-
? material.material_info.map(function (mat) {
|
|
24369
|
-
|
|
24370
|
-
|
|
24371
|
-
|
|
24372
|
-
|
|
24373
|
-
|
|
24374
|
-
|
|
24375
|
-
|
|
24376
|
-
|
|
24377
|
-
|
|
24378
|
-
|
|
24379
|
-
|
|
24380
|
-
|
|
24381
|
-
|
|
24382
|
-
|
|
24383
|
-
|
|
24384
|
-
};
|
|
24385
|
-
})
|
|
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
|
+
}); })
|
|
24386
22788
|
: [],
|
|
24387
22789
|
filterState: filterState,
|
|
24388
22790
|
appliedFiltersTimestamp: (_b = material.appliedFiltersTimestamp) !== null && _b !== void 0 ? _b : '',
|
|
@@ -24441,9 +22843,7 @@ var processCDMaterialServiceResponse = function (cdMaterialsResult, stage, offse
|
|
|
24441
22843
|
var metaInfo = processCDMaterialsMetaInfo(cdMaterialsResult);
|
|
24442
22844
|
// TODO: On update of service would remove from here
|
|
24443
22845
|
var filteredMaterials = filter && filter === exports.CDMaterialFilterQuery.RESOURCE
|
|
24444
|
-
? materials.filter(function (material) {
|
|
24445
|
-
return material.filterState === exports.FilterStates.ALLOWED;
|
|
24446
|
-
})
|
|
22846
|
+
? materials.filter(function (material) { return material.filterState === exports.FilterStates.ALLOWED; })
|
|
24447
22847
|
: materials;
|
|
24448
22848
|
return __assign(__assign({ materials: filteredMaterials }, approvalInfo), metaInfo);
|
|
24449
22849
|
};
|
|
@@ -24474,27 +22874,27 @@ function extractImage(image) {
|
|
|
24474
22874
|
}
|
|
24475
22875
|
function createGitCommitUrl(url, revision) {
|
|
24476
22876
|
if (!url || !revision) {
|
|
24477
|
-
return
|
|
22877
|
+
return 'NA';
|
|
24478
22878
|
}
|
|
24479
|
-
if (url.indexOf(
|
|
24480
|
-
var urlpart = url.split(
|
|
22879
|
+
if (url.indexOf('gitlab') > 0 || url.indexOf('github') > 0 || url.indexOf('azure') > 0) {
|
|
22880
|
+
var urlpart = url.split('@');
|
|
24481
22881
|
if (urlpart.length > 1) {
|
|
24482
|
-
return "https://"
|
|
22882
|
+
return "https://".concat(urlpart[1].split('.git')[0], "/commit/").concat(revision);
|
|
24483
22883
|
}
|
|
24484
22884
|
if (urlpart.length == 1) {
|
|
24485
|
-
return urlpart[0].split(
|
|
22885
|
+
return "".concat(urlpart[0].split('.git')[0], "/commit/").concat(revision);
|
|
24486
22886
|
}
|
|
24487
22887
|
}
|
|
24488
|
-
if (url.indexOf(
|
|
24489
|
-
var urlpart = url.split(
|
|
22888
|
+
if (url.indexOf('bitbucket') > 0) {
|
|
22889
|
+
var urlpart = url.split('@');
|
|
24490
22890
|
if (urlpart.length > 1) {
|
|
24491
|
-
return "https://"
|
|
22891
|
+
return "https://".concat(urlpart[1].split('.git')[0], "/commits/").concat(revision);
|
|
24492
22892
|
}
|
|
24493
22893
|
if (urlpart.length == 1) {
|
|
24494
|
-
return urlpart[0].split(
|
|
22894
|
+
return "".concat(urlpart[0].split('.git')[0], "/commits/").concat(revision);
|
|
24495
22895
|
}
|
|
24496
22896
|
}
|
|
24497
|
-
return
|
|
22897
|
+
return 'NA';
|
|
24498
22898
|
}
|
|
24499
22899
|
|
|
24500
22900
|
/*
|
|
@@ -24507,14 +22907,14 @@ Valid States of Checkbox:
|
|
|
24507
22907
|
6. disabled: false, checked: true, value: CHECKED
|
|
24508
22908
|
*/
|
|
24509
22909
|
var Checkbox$1 = /** @class */ (function (_super) {
|
|
24510
|
-
__extends
|
|
22910
|
+
__extends(Checkbox, _super);
|
|
24511
22911
|
function Checkbox() {
|
|
24512
22912
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
24513
22913
|
}
|
|
24514
22914
|
Checkbox.prototype.render = function () {
|
|
24515
22915
|
var _a;
|
|
24516
22916
|
var rootClassName = "".concat(this.props.rootClassName ? this.props.rootClassName : '');
|
|
24517
|
-
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 }))] })));
|
|
24518
22918
|
};
|
|
24519
22919
|
return Checkbox;
|
|
24520
22920
|
}(React.Component));
|
|
@@ -24555,23 +22955,21 @@ function ScanVulnerabilitiesTable(_a) {
|
|
|
24555
22955
|
window.open("https://cve.mitre.org/cgi-bin/cvename.cgi?name=".concat(vulnerability.name), '_blank');
|
|
24556
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() }))] })));
|
|
24557
22957
|
};
|
|
24558
|
-
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) {
|
|
24559
|
-
return renderRow(vulnerability);
|
|
24560
|
-
})] }) })));
|
|
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); })] }) })));
|
|
24561
22959
|
}
|
|
24562
22960
|
|
|
24563
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}";
|
|
24564
22962
|
styleInject(css_248z$1);
|
|
24565
22963
|
|
|
24566
|
-
var RadioContext =
|
|
22964
|
+
var RadioContext = React__namespace.createContext(null);
|
|
24567
22965
|
function useRadioContext() {
|
|
24568
|
-
var context =
|
|
22966
|
+
var context = React__namespace.useContext(RadioContext);
|
|
24569
22967
|
if (!context) {
|
|
24570
22968
|
throw new Error("Radio compound components cannot be rendered outside the Toggle component");
|
|
24571
22969
|
}
|
|
24572
22970
|
return context;
|
|
24573
22971
|
}
|
|
24574
|
-
var RadioGroup =
|
|
22972
|
+
var RadioGroup = React__namespace.memo(function (_a) {
|
|
24575
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;
|
|
24576
22974
|
var _d = __read(React.useState(null), 2), selected = _d[0], select = _d[1];
|
|
24577
22975
|
React.useEffect(function () {
|
|
@@ -24581,7 +22979,7 @@ var RadioGroup = React.memo(function RadioGroup(_a) {
|
|
|
24581
22979
|
}, [initialTab]);
|
|
24582
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 })) })));
|
|
24583
22981
|
});
|
|
24584
|
-
function
|
|
22982
|
+
var Radio = function (_a) {
|
|
24585
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;
|
|
24586
22984
|
var _j = useRadioContext(), name = _j.name, selected = _j.selected, select = _j.select, disabled = _j.disabled, onChange = _j.onChange;
|
|
24587
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) {
|
|
@@ -24591,7 +22989,7 @@ function Radio(_a) {
|
|
|
24591
22989
|
}
|
|
24592
22990
|
onChange(e);
|
|
24593
22991
|
}, disabled: isDisabled || disabled }), jsxRuntime.jsx("span", __assign({ className: "radio__item-label", "data-testid": dataTestId }, { children: children }))] })) })));
|
|
24594
|
-
}
|
|
22992
|
+
};
|
|
24595
22993
|
RadioGroup.Radio = Radio;
|
|
24596
22994
|
|
|
24597
22995
|
exports.RefVariableType = void 0;
|
|
@@ -24677,7 +23075,7 @@ var SvgIcInfoFilled = function SvgIcInfoFilled(props) {
|
|
|
24677
23075
|
};
|
|
24678
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";
|
|
24679
23077
|
|
|
24680
|
-
function
|
|
23078
|
+
var DeleteComponent = function (_a) {
|
|
24681
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;
|
|
24682
23080
|
var _f = __read(React.useState(false), 2), showCannotDeleteDialogModal = _f[0], setCannotDeleteDialogModal = _f[1];
|
|
24683
23081
|
var push = reactRouterDom.useHistory().push;
|
|
@@ -24727,14 +23125,10 @@ function DeleteComponent(_a) {
|
|
|
24727
23125
|
closeCustomComponent();
|
|
24728
23126
|
}
|
|
24729
23127
|
};
|
|
24730
|
-
var renderCannotDeleteDialogModal = function () {
|
|
24731
|
-
|
|
24732
|
-
};
|
|
24733
|
-
var renderDeleteDialog = function () {
|
|
24734
|
-
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, "? "] }) }) })));
|
|
24735
|
-
};
|
|
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, "? "] }) }) }))); };
|
|
24736
23130
|
return (jsxRuntime.jsxs("div", { children: [!showCannotDeleteDialogModal && renderDeleteDialog(), showCannotDeleteDialogModal && renderCannotDeleteDialogModal()] }));
|
|
24737
|
-
}
|
|
23131
|
+
};
|
|
24738
23132
|
|
|
24739
23133
|
var _path$5;
|
|
24740
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); }
|
|
@@ -24858,13 +23252,13 @@ var ImageTagsContainer = function (_a) {
|
|
|
24858
23252
|
var
|
|
24859
23253
|
// Setting it to zero in case of external pipeline
|
|
24860
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;
|
|
24861
|
-
var _b = __read(React.useState(imageReleaseTags
|
|
23255
|
+
var _b = __read(React.useState(imageReleaseTags || []), 2), initialTags = _b[0], setInitialTags = _b[1];
|
|
24862
23256
|
var _c = __read(React.useState(imageComment ? imageComment.comment : ''), 2), initialDescription = _c[0], setInitialDescription = _c[1];
|
|
24863
|
-
var _d = __read(React.useState(appReleaseTagNames
|
|
23257
|
+
var _d = __read(React.useState(appReleaseTagNames || []), 2), existingTags = _d[0], setExistingTags = _d[1];
|
|
24864
23258
|
var _e = __read(React.useState(imageComment ? imageComment.comment : ''), 2), newDescription = _e[0], setNewDescription = _e[1];
|
|
24865
23259
|
var _f = __read(React.useState(false), 2), isEditing = _f[0], setIsEditing = _f[1];
|
|
24866
23260
|
var _g = __read(React.useState(false), 2), showTagsWarning = _g[0], setShowTagsWarning = _g[1];
|
|
24867
|
-
var _h = __read(React.useState(imageReleaseTags
|
|
23261
|
+
var _h = __read(React.useState(imageReleaseTags || []), 2), displayedTags = _h[0], setDisplayedTags = _h[1];
|
|
24868
23262
|
var _j = __read(React.useState(''), 2), tagErrorMessage = _j[0], setTagErrorMessage = _j[1];
|
|
24869
23263
|
var _k = __read(React.useState([]), 2), createTags = _k[0], setCreateTags = _k[1];
|
|
24870
23264
|
var _l = __read(React.useState([]), 2), softDeleteTags = _l[0], setSoftDeleteTags = _l[1];
|
|
@@ -24876,14 +23270,14 @@ var ImageTagsContainer = function (_a) {
|
|
|
24876
23270
|
reInitState();
|
|
24877
23271
|
}, [imageReleaseTags, imageComment, tagsEditable]);
|
|
24878
23272
|
React.useEffect(function () {
|
|
24879
|
-
setExistingTags(appReleaseTagNames
|
|
23273
|
+
setExistingTags(appReleaseTagNames || []);
|
|
24880
23274
|
}, [appReleaseTagNames]);
|
|
24881
23275
|
var reInitState = function () {
|
|
24882
23276
|
if (forceReInit || !isEditing) {
|
|
24883
|
-
setInitialTags(imageReleaseTags
|
|
23277
|
+
setInitialTags(imageReleaseTags || []);
|
|
24884
23278
|
setInitialDescription(imageComment ? imageComment.comment : '');
|
|
24885
23279
|
setNewDescription(imageComment ? imageComment.comment : '');
|
|
24886
|
-
setDisplayedTags(imageReleaseTags
|
|
23280
|
+
setDisplayedTags(imageReleaseTags || []);
|
|
24887
23281
|
setIsEditing(false);
|
|
24888
23282
|
}
|
|
24889
23283
|
};
|
|
@@ -25066,12 +23460,8 @@ var ImageTagsContainer = function (_a) {
|
|
|
25066
23460
|
return [2 /*return*/];
|
|
25067
23461
|
});
|
|
25068
23462
|
}); };
|
|
25069
|
-
var renderInfoCard = function () {
|
|
25070
|
-
|
|
25071
|
-
};
|
|
25072
|
-
var getBuildContextAdditionalContent = function () {
|
|
25073
|
-
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." })] }))] })));
|
|
25074
|
-
};
|
|
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." })] }))] }))); };
|
|
25075
23465
|
var creatableRef = React.useRef(null);
|
|
25076
23466
|
if (newDescription === '' && displayedTags.length === 0 && !isEditing) {
|
|
25077
23467
|
return tagsEditable ? (jsxRuntime.jsx("div", __assign({ className: "bcn-0 mt-8 add-image-button" }, { children: jsxRuntime.jsx(AddImageButton, { handleEditClick: handleEditClick }) }))) : (jsxRuntime.jsx("div", {}));
|
|
@@ -25115,7 +23505,7 @@ var ImageTagsContainer = function (_a) {
|
|
|
25115
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) {
|
|
25116
23506
|
stopPropagation(e);
|
|
25117
23507
|
onClickSave();
|
|
25118
|
-
}, 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) {
|
|
25119
23509
|
stopPropagation(e);
|
|
25120
23510
|
handleTagSoftDelete(index);
|
|
25121
23511
|
}, onHardDeleteClick: function (e) {
|
|
@@ -25135,12 +23525,10 @@ var ImageTagButton = function (_a) {
|
|
|
25135
23525
|
if (duplicateTag) {
|
|
25136
23526
|
return 'cr-5 bcr-1 er-2';
|
|
25137
23527
|
}
|
|
25138
|
-
|
|
23528
|
+
if (isSoftDeleted) {
|
|
25139
23529
|
return 'cy-7 bcy-1 dc__strike-through ey-2';
|
|
25140
23530
|
}
|
|
25141
|
-
|
|
25142
|
-
return 'cn-9';
|
|
25143
|
-
}
|
|
23531
|
+
return 'cn-9';
|
|
25144
23532
|
};
|
|
25145
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 }) })) }))] })));
|
|
25146
23534
|
};
|
|
@@ -25183,7 +23571,7 @@ var ResizableTextarea = function (_a) {
|
|
|
25183
23571
|
if (maxHeight && nextHeight > maxHeight) {
|
|
25184
23572
|
nextHeight = maxHeight;
|
|
25185
23573
|
}
|
|
25186
|
-
_textRef.current.style.height = nextHeight + 2
|
|
23574
|
+
_textRef.current.style.height = "".concat(nextHeight + 2, "px");
|
|
25187
23575
|
}, 500, [text]);
|
|
25188
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)));
|
|
25189
23577
|
};
|
|
@@ -25262,7 +23650,7 @@ function DebouncedSearch(_a) {
|
|
|
25262
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
|
|
25263
23651
|
function Grid(_a) {
|
|
25264
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;
|
|
25265
|
-
var containerStyles = container ? { gap: spacing
|
|
23653
|
+
var containerStyles = container ? { gap: "".concat(spacing, "px") } : {};
|
|
25266
23654
|
if (item) {
|
|
25267
23655
|
var getColumnWidth = function () {
|
|
25268
23656
|
var percentageWidth = (xs / 12) * 100;
|
|
@@ -25416,15 +23804,13 @@ var triggerStatus = function (triggerDetailStatus) {
|
|
|
25416
23804
|
if (triggerStatus === TIMELINE_STATUS.ABORTED || triggerStatus === TIMELINE_STATUS.DEGRADED) {
|
|
25417
23805
|
return 'Failed';
|
|
25418
23806
|
}
|
|
25419
|
-
|
|
23807
|
+
if (triggerStatus === TIMELINE_STATUS.HEALTHY) {
|
|
25420
23808
|
return 'Succeeded';
|
|
25421
23809
|
}
|
|
25422
|
-
|
|
23810
|
+
if (triggerStatus === TIMELINE_STATUS.INPROGRESS) {
|
|
25423
23811
|
return 'Inprogress';
|
|
25424
23812
|
}
|
|
25425
|
-
|
|
25426
|
-
return triggerDetailStatus;
|
|
25427
|
-
}
|
|
23813
|
+
return triggerDetailStatus;
|
|
25428
23814
|
};
|
|
25429
23815
|
|
|
25430
23816
|
function AppStatus(_a) {
|
|
@@ -25443,12 +23829,10 @@ function AppStatus(_a) {
|
|
|
25443
23829
|
if (iconClass) {
|
|
25444
23830
|
return jsxRuntime.jsx("span", { className: "dc__app-summary__icon icon-dim-16 ".concat(iconClass, " ").concat(iconClass, "--node") });
|
|
25445
23831
|
}
|
|
25446
|
-
|
|
23832
|
+
if (isVirtualEnv) {
|
|
25447
23833
|
return (jsxRuntime.jsx("span", { className: "dc__app-summary__icon icon-dim-16 ".concat(StatusConstants.NOT_DEPLOYED.lowerCase, " ").concat(StatusConstants.NOT_DEPLOYED.lowerCase, "--node") }));
|
|
25448
23834
|
}
|
|
25449
|
-
|
|
25450
|
-
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" }) })));
|
|
25451
|
-
}
|
|
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" }) })));
|
|
25452
23836
|
};
|
|
25453
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 }))] })));
|
|
25454
23838
|
}
|
|
@@ -25536,9 +23920,7 @@ var FieldErrorTemplate = function (_a) {
|
|
|
25536
23920
|
var id = utils.errorId(idSchema);
|
|
25537
23921
|
return (errors.length > 0 && (jsxRuntime.jsx("span", __assign({ id: id }, { children: errors
|
|
25538
23922
|
.filter(function (elem) { return !!elem; })
|
|
25539
|
-
.map(function (error, index) {
|
|
25540
|
-
return (jsxRuntime.jsxs("span", __assign({ className: "form__error" }, { children: [jsxRuntime.jsx(SvgIcWarning, { className: "form__icon form__icon--error" }), error] }), index));
|
|
25541
|
-
}) }))));
|
|
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)); }) }))));
|
|
25542
23924
|
};
|
|
25543
23925
|
|
|
25544
23926
|
var Field = function (_a) {
|
|
@@ -25551,9 +23933,7 @@ var Field = function (_a) {
|
|
|
25551
23933
|
if (properties.length) {
|
|
25552
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] }));
|
|
25553
23935
|
}
|
|
25554
|
-
|
|
25555
|
-
return (jsxRuntime.jsx(FieldRowWithLabel, __assign({ label: title, required: required, showLabel: true, id: idSchema.$id }, { children: ActionButton })));
|
|
25556
|
-
}
|
|
23936
|
+
return (jsxRuntime.jsx(FieldRowWithLabel, __assign({ label: title, required: required, showLabel: true, id: idSchema.$id }, { children: ActionButton })));
|
|
25557
23937
|
}
|
|
25558
23938
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [Properties, ActionButton] }));
|
|
25559
23939
|
};
|
|
@@ -28043,9 +26423,7 @@ var translateString = function (stringToTranslate, params) {
|
|
|
28043
26423
|
};
|
|
28044
26424
|
var getCommonSelectStyle = function (styleOverrides) {
|
|
28045
26425
|
if (styleOverrides === void 0) { styleOverrides = {}; }
|
|
28046
|
-
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) {
|
|
28047
|
-
return __assign(__assign({}, base), { border: "1px solid var(--N200)", borderRadius: "4px", background: 'white', height: '28px', marginRight: '8px', padding: '2px', fontSize: '12px' });
|
|
28048
|
-
} }, 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));
|
|
28049
26427
|
};
|
|
28050
26428
|
/**
|
|
28051
26429
|
* Returns the redirection props for a url
|
|
@@ -28204,18 +26582,18 @@ var SvgIcRotateDevtron = function SvgIcRotateDevtron(props) {
|
|
|
28204
26582
|
}))));
|
|
28205
26583
|
};
|
|
28206
26584
|
|
|
28207
|
-
function
|
|
26585
|
+
var DevtronProgressing = function (_a) {
|
|
28208
26586
|
var classes = _a.classes, parentClasses = _a.parentClasses;
|
|
28209
|
-
return (jsxRuntime.jsx("div", __assign({ className: parentClasses
|
|
28210
|
-
}
|
|
26587
|
+
return (jsxRuntime.jsx("div", __assign({ className: parentClasses || '' }, { children: jsxRuntime.jsx(SvgIcRotateDevtron, { className: classes || '' }) })));
|
|
26588
|
+
};
|
|
28211
26589
|
|
|
28212
|
-
function
|
|
26590
|
+
var TooltipContent = function (_a) {
|
|
28213
26591
|
var tooltipContent = _a.tooltipContent;
|
|
28214
26592
|
if (tooltipContent) {
|
|
28215
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] })));
|
|
28216
26594
|
}
|
|
28217
26595
|
return jsxRuntime.jsx("div", __assign({ className: "dc__white-space-pre-wrap" }, { children: "Click to add here" }));
|
|
28218
|
-
}
|
|
26596
|
+
};
|
|
28219
26597
|
function AddCDButton(_a) {
|
|
28220
26598
|
var position = _a.position, addCDButtons = _a.addCDButtons, endNode = _a.endNode, startNode = _a.startNode, handleAddCD = _a.handleAddCD, tooltipContent = _a.tooltipContent;
|
|
28221
26599
|
var referenceNode = position === exports.AddCDPositions.RIGHT ? endNode : startNode;
|
|
@@ -28251,7 +26629,7 @@ var handleAddCD = function (_a) {
|
|
|
28251
26629
|
handleCDSelect(workflowId, ciPipelineId, pipelineType, startNode.id, isWebhookCD, endNodeId, addPipelineType);
|
|
28252
26630
|
};
|
|
28253
26631
|
|
|
28254
|
-
function
|
|
26632
|
+
var CustomInput = function (_a) {
|
|
28255
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;
|
|
28256
26634
|
function handleError(error) {
|
|
28257
26635
|
if (!Array.isArray(error)) {
|
|
@@ -28261,7 +26639,7 @@ function CustomInput(_a) {
|
|
|
28261
26639
|
}
|
|
28262
26640
|
var onBlur = function (event) {
|
|
28263
26641
|
var _a;
|
|
28264
|
-
//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
|
|
28265
26643
|
if (!noTrim) {
|
|
28266
26644
|
event.stopPropagation();
|
|
28267
26645
|
event.target.value = (_a = event.target.value) === null || _a === void 0 ? void 0 : _a.trim();
|
|
@@ -28271,41 +26649,33 @@ function CustomInput(_a) {
|
|
|
28271
26649
|
handleOnBlur(event);
|
|
28272
26650
|
}
|
|
28273
26651
|
};
|
|
28274
|
-
var renderFormErrorWithIcon = function (error) {
|
|
28275
|
-
return (jsxRuntime.jsxs("div", __assign({ className: "form__error" }, { children: [jsxRuntime.jsx(SvgIcWarning, { className: "form__icon form__icon--error" }), error, typeof additionalErrorInfo === 'function' && additionalErrorInfo()] }), error));
|
|
28276
|
-
};
|
|
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)); };
|
|
28277
26653
|
var getInputError = function () {
|
|
28278
26654
|
if (!(error === null || error === void 0 ? void 0 : error.length)) {
|
|
28279
26655
|
return null;
|
|
28280
26656
|
}
|
|
28281
|
-
|
|
28282
|
-
|
|
28283
|
-
return handleError(error).map(function (err) { return renderFormErrorWithIcon(err); });
|
|
28284
|
-
}
|
|
28285
|
-
return renderFormErrorWithIcon(error);
|
|
26657
|
+
if (typeof error === 'object') {
|
|
26658
|
+
return handleError(error).map(function (err) { return renderFormErrorWithIcon(err); });
|
|
28286
26659
|
}
|
|
26660
|
+
return renderFormErrorWithIcon(error);
|
|
28287
26661
|
};
|
|
28288
26662
|
var renderInputLabelConditionally = function () {
|
|
28289
26663
|
if (typeof label === 'string') {
|
|
28290
26664
|
return jsxRuntime.jsx("span", __assign({ className: "".concat(isRequiredField ? 'dc__required-field' : '') }, { children: label }));
|
|
28291
26665
|
}
|
|
28292
|
-
|
|
28293
|
-
return label;
|
|
28294
|
-
}
|
|
26666
|
+
return label;
|
|
28295
26667
|
};
|
|
28296
26668
|
var renderInputLabel = function () {
|
|
28297
26669
|
if (!label) {
|
|
28298
26670
|
return null;
|
|
28299
26671
|
}
|
|
28300
|
-
|
|
28301
|
-
return (jsxRuntime.jsx("label", __assign({ className: "form__label ".concat(labelClassName), "data-testid": "label-".concat(dataTestid) }, { children: renderInputLabelConditionally() })));
|
|
28302
|
-
}
|
|
26672
|
+
return (jsxRuntime.jsx("label", __assign({ className: "form__label ".concat(labelClassName), "data-testid": "label-".concat(dataTestid) }, { children: renderInputLabelConditionally() })));
|
|
28303
26673
|
};
|
|
28304
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) {
|
|
28305
26675
|
e.persist();
|
|
28306
26676
|
onChange(e);
|
|
28307
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 }))] })))] })));
|
|
28308
|
-
}
|
|
26678
|
+
};
|
|
28309
26679
|
|
|
28310
26680
|
exports.AddCDButton = AddCDButton;
|
|
28311
26681
|
exports.AppStatus = AppStatus;
|
|
@@ -28392,12 +26762,10 @@ exports.getAlphabetIcon = getAlphabetIcon;
|
|
|
28392
26762
|
exports.getCookie = getCookie;
|
|
28393
26763
|
exports.getEmptyArrayOfLength = getEmptyArrayOfLength;
|
|
28394
26764
|
exports.getInferredTypeFromValueType = getInferredTypeFromValueType;
|
|
28395
|
-
exports.getLockedJSON = getLockedJSON;
|
|
28396
26765
|
exports.getLoginInfo = getLoginInfo;
|
|
28397
26766
|
exports.getRandomColor = getRandomColor;
|
|
28398
26767
|
exports.getRedirectionProps = getRedirectionProps;
|
|
28399
26768
|
exports.getTeamListMin = getTeamListMin;
|
|
28400
|
-
exports.getUnlockedJSON = getUnlockedJSON;
|
|
28401
26769
|
exports.getUrlWithSearchParams = getUrlWithSearchParams;
|
|
28402
26770
|
exports.getUserRole = getUserRole;
|
|
28403
26771
|
exports.handleAddCD = handleAddCD;
|