@rh-support/troubleshoot 2.4.5-beta.1 → 2.4.5-beta.2
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/lib/esm/components/CaseEditView/CaseDetailsTabs.js +2 -2
- package/lib/esm/components/CaseEditView/CaseOverview/CaseType.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/CaseType.js +4 -18
- package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.js +2 -2
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseSolutions/CaseSolutions.js +2 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseInternalStatus.js +1 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +4 -6
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CommentSearch.js +2 -3
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +1 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.css +21 -95
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseHistory/Timeline.js +137 -269
- package/lib/esm/components/CaseInformation/Fts.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/Fts.js +5 -6
- package/lib/esm/components/CaseManagement/Cep.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/Cep.js +2 -3
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/RHAssociatesSelector.js +5 -11
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/SendNotifications/CaseContactSelector.js +5 -11
- package/lib/esm/components/Cve/CveItem.d.ts +8 -0
- package/lib/esm/components/Cve/CveItem.d.ts.map +1 -0
- package/lib/esm/components/Cve/CveItem.js +81 -0
- package/lib/esm/components/Cve/CveModal.d.ts +3 -0
- package/lib/esm/components/Cve/CveModal.d.ts.map +1 -0
- package/lib/esm/components/Cve/CveModal.js +40 -0
- package/lib/esm/components/Cve/CvePanel.d.ts +7 -0
- package/lib/esm/components/Cve/CvePanel.d.ts.map +1 -0
- package/lib/esm/components/Cve/CvePanel.js +23 -0
- package/lib/esm/components/Cve/CveSidebar.d.ts +3 -0
- package/lib/esm/components/Cve/CveSidebar.d.ts.map +1 -0
- package/lib/esm/components/Cve/CveSidebar.js +24 -0
- package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductSelector.js +4 -0
- package/lib/esm/components/Recommendations/AsideResults.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/AsideResults.js +2 -4
- package/lib/esm/components/Recommendations/EARules/EARule.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARule.js +2 -0
- package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARuleInfoInline.js +2 -2
- package/lib/esm/components/Recommendations/Recommendations.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/Recommendations.js +22 -24
- package/lib/esm/components/Recommendations/RecommendationsLoader.d.ts +3 -0
- package/lib/esm/components/Recommendations/RecommendationsLoader.d.ts.map +1 -0
- package/lib/esm/components/Recommendations/RecommendationsLoader.js +11 -0
- package/lib/esm/components/SubmitCase/SubmitCase.js +3 -3
- package/lib/esm/components/Suggestions/TopContent.d.ts.map +1 -1
- package/lib/esm/components/Suggestions/TopContent.js +4 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts +2 -2
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/WidgetFileSelector.js +1 -10
- package/lib/esm/components/wizardLayout/WizardAside.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardAside.js +5 -1
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +1 -4
- package/lib/esm/components/wizardLayout/WizardMain.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardMain.js +0 -5
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +3 -7
- package/lib/esm/hooks/useFetchCVEData.d.ts +5 -0
- package/lib/esm/hooks/useFetchCVEData.d.ts.map +1 -0
- package/lib/esm/hooks/useFetchCVEData.js +101 -0
- package/lib/esm/models/caseCreationWorkflows.d.ts +25 -0
- package/lib/esm/models/caseCreationWorkflows.d.ts.map +1 -0
- package/lib/esm/models/caseCreationWorkflows.js +1 -0
- package/lib/esm/reducers/CaseConstNTypes.d.ts +3 -0
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +2 -0
- package/lib/esm/scss/_main.scss +20 -2
- package/lib/esm/scss/_pf-overrides.scss +0 -6
- package/lib/esm/utils/caseUtils.d.ts +6 -0
- package/lib/esm/utils/caseUtils.d.ts.map +1 -1
- package/lib/esm/utils/caseUtils.js +15 -0
- package/package.json +11 -11
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { pcm } from '@cee-eng/hydrajs';
|
|
2
2
|
import { Accordion, AccordionContent, AccordionItem, AccordionToggle, Tooltip } from '@patternfly/react-core';
|
|
3
|
+
import { dtmTrackEventCaseStartStopped } from '@rh-support/utils';
|
|
3
4
|
import isEqual from 'lodash/isEqual';
|
|
4
5
|
import map from 'lodash/map';
|
|
5
6
|
import React, { useState } from 'react';
|
|
@@ -13,7 +14,7 @@ export default function TopContent(props) {
|
|
|
13
14
|
const sessionRestoreDispatch = React.useContext(SessionRestoreDispatchContext);
|
|
14
15
|
const { sessionRestore: { activeSessionId, sessionResourceTracking }, } = React.useContext(SessionRestoreStateContext);
|
|
15
16
|
const [expanded, setExpanded] = useState('');
|
|
16
|
-
const { product, version, summary, issue, environment, periodicityOfIssue, timeFramesAndUrgency } = useCaseSelector((state) => ({
|
|
17
|
+
const { product, version, summary, issue, environment, periodicityOfIssue, timeFramesAndUrgency, caseNumber } = useCaseSelector((state) => ({
|
|
17
18
|
product: state.caseDetails.product,
|
|
18
19
|
version: state.caseDetails.version,
|
|
19
20
|
summary: state.caseDetails.summary,
|
|
@@ -21,9 +22,11 @@ export default function TopContent(props) {
|
|
|
21
22
|
environment: state.caseDetails.environment,
|
|
22
23
|
periodicityOfIssue: state.caseDetails.periodicityOfIssue,
|
|
23
24
|
timeFramesAndUrgency: state.caseDetails.timeFramesAndUrgency,
|
|
25
|
+
caseNumber: state.caseDetails.caseNumber,
|
|
24
26
|
}), isEqual);
|
|
25
27
|
const onLinkClick = (item) => (event) => {
|
|
26
28
|
props.onResourceClick && props.onResourceClick(item);
|
|
29
|
+
dtmTrackEventCaseStartStopped('top content click', caseNumber, `${product}|${version}`);
|
|
27
30
|
};
|
|
28
31
|
const onToggle = (id) => {
|
|
29
32
|
if (id === expanded) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IDClassNameProps } from '@rh-support/types/shared';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
|
|
3
|
+
interface IProps extends IDClassNameProps {
|
|
4
4
|
isSessionId: boolean;
|
|
5
5
|
isPrivate: boolean;
|
|
6
6
|
isIdea?: boolean;
|
|
@@ -9,6 +9,6 @@ export interface IWidgetFileSelectorProps extends IDClassNameProps {
|
|
|
9
9
|
fileName: string[];
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
|
-
declare function WidgetFileSelector({ id, className, isSessionId, isPrivate, isIdea, showFileExceed, }:
|
|
12
|
+
declare function WidgetFileSelector({ id, className, isSessionId, isPrivate, isIdea, showFileExceed, }: IProps): React.JSX.Element;
|
|
13
13
|
export default WidgetFileSelector;
|
|
14
14
|
//# sourceMappingURL=WidgetFileSelector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetFileSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/fileSelectors/WidgetFileSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetFileSelector.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/fileSelectors/WidgetFileSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAAqB,MAAM,OAAO,CAAC;AAO1C,UAAU,MAAO,SAAQ,gBAAgB;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE;QACb,IAAI,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACL;AAED,iBAAS,kBAAkB,CAAC,EACxB,EAAO,EACP,SAAc,EACd,WAAW,EACX,SAAiB,EACjB,MAAc,EACd,cAA8C,GACjD,EAAE,MAAM,qBAmER;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import isEqual from 'lodash/isEqual';
|
|
1
|
+
import { humanizeSize } from '@rh-support/utils';
|
|
3
2
|
import React, { useContext } from 'react';
|
|
4
3
|
import { useDropzone } from 'react-dropzone';
|
|
5
4
|
import { Trans, useTranslation } from 'react-i18next';
|
|
6
|
-
import { useCaseSelector } from '../../../../context/CaseContext';
|
|
7
|
-
import { RouteContext } from '../../../../context/RouteContext';
|
|
8
5
|
import { onDrop } from '../reducer/AttachmentHelper';
|
|
9
6
|
import { AttachmentDispatchContext } from '../reducer/AttachmentReducerContext';
|
|
10
7
|
function WidgetFileSelector({ id = '', className = '', isSessionId, isPrivate = false, isIdea = false, showFileExceed = { show: false, fileName: [] }, }) {
|
|
11
8
|
const { t } = useTranslation();
|
|
12
|
-
const { caseDetails } = useCaseSelector((state) => ({
|
|
13
|
-
caseDetails: state.caseDetails,
|
|
14
|
-
}), isEqual);
|
|
15
|
-
const { routeState: { activeSection, isCaseCreate }, } = useContext(RouteContext);
|
|
16
9
|
const MAX_SIZE = isIdea ? 5242880 : undefined;
|
|
17
10
|
// Attachment Reducer Related
|
|
18
11
|
const dispatchToAttachmentReducer = useContext(AttachmentDispatchContext);
|
|
@@ -30,8 +23,6 @@ function WidgetFileSelector({ id = '', className = '', isSessionId, isPrivate =
|
|
|
30
23
|
// react-dropzone doesn't get triggered. So we need to manually clear the input value
|
|
31
24
|
// so that user can attach the same file twice
|
|
32
25
|
inputRef.current.value = null;
|
|
33
|
-
// Call a dtm track even whenever the file uploader is clicked
|
|
34
|
-
dtmTrackEventUploadFileToAnalyze(isCaseCreate, activeSection, caseDetails.caseType, caseDetails.product, caseDetails.version);
|
|
35
26
|
};
|
|
36
27
|
return (React.createElement(React.Fragment, null,
|
|
37
28
|
React.createElement("label", Object.assign({ className: "file-diag-dragndrop", htmlFor: "file-diag-selector" }, getRootProps({ onClick: onLabelClick }), { "data-tracking-id": "file-selector-widget-main" }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardAside.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardAside.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAGH,eAAe,EAKlB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"WizardAside.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardAside.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAIvD,OAAO,EAGH,eAAe,EAKlB,MAAM,iCAAiC,CAAC;AAUzC,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,2BAA2B,EAAE,OAAO,CAAC;CACxC;AAGD,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,qBAyDjC;kBAzDQ,WAAW;;;AA2DpB,eAAe,WAAW,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { useCaseSelector } from '../../context/CaseContext';
|
|
|
7
7
|
import { RouteContext } from '../../context/RouteContext';
|
|
8
8
|
import { AppRouteSections, hideFileUploadSidebarWidgetSections, showRecommendationTipsSections, showSideBarClusterIdRuleWidgetSections, showSideBarEARuleWidgetSections, showSideBarFileRecommendationSections, } from '../../reducers/RouteConstNTypes';
|
|
9
9
|
import { FileDiag } from '../CaseInformation/FileDiag';
|
|
10
|
+
import { CveSidebar } from '../Cve/CveSidebar';
|
|
10
11
|
import { AsideResults } from '../Recommendations/AsideResults';
|
|
11
12
|
import ClusterRecommendations from '../Recommendations/ClusterRecommendations';
|
|
12
13
|
import { EARuleWidget } from '../Recommendations/EARules/EARuleWidget';
|
|
@@ -17,9 +18,10 @@ const defaultProps = {};
|
|
|
17
18
|
function WizardAside(props) {
|
|
18
19
|
const { routeState: { activeSection }, } = useContext(RouteContext);
|
|
19
20
|
const canAddAttachments = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ATTACHMENTS);
|
|
20
|
-
const { isCreatingCase, caseType } = useCaseSelector((state) => ({
|
|
21
|
+
const { isCreatingCase, caseType, isCveModalOpened } = useCaseSelector((state) => ({
|
|
21
22
|
isCreatingCase: state.isCreatingCase,
|
|
22
23
|
caseType: state.caseDetails.caseType,
|
|
24
|
+
isCveModalOpened: state.isCveModalOpened,
|
|
23
25
|
}), isEqual);
|
|
24
26
|
const isIdea = caseType === PreviousCaseTypes.FEATURE_ENHANCEMENT;
|
|
25
27
|
const canUseSessionManagement = ability.can(resourceActions.CREATE, resources.SESSION_TRACKING);
|
|
@@ -35,6 +37,8 @@ function WizardAside(props) {
|
|
|
35
37
|
React.createElement("section", { className: "grid-aside-content" },
|
|
36
38
|
canShowFileUploadWidget() && React.createElement(InsightsResults, null),
|
|
37
39
|
canShowFileUploadWidget() && React.createElement(FileDiag, { className: "pf-v5-u-mb-md" }),
|
|
40
|
+
activeSection === AppRouteSections.SUMMARIZE && !isCveModalOpened && React.createElement(CveSidebar, null),
|
|
41
|
+
activeSection === AppRouteSections.TROUBLESHOOT && React.createElement(CveSidebar, null),
|
|
38
42
|
canshowEARuleWidget && activeSection !== AppRouteSections.GET_SUPPORT && React.createElement(EARuleWidget, null),
|
|
39
43
|
!(isIdea && activeSection === 'submit-case') && (React.createElement(AsideResults, { routeProps: props.routeProps, className: "pf-v5-u-mb-md pf-v5-u-mt-0" })),
|
|
40
44
|
canShowFileRecommendationSectionsWidget && React.createElement(InsightsResults, { isDisplayOnMain: true }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardLayout.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WizardLayout.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardLayout.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAMvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAavG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,qBAkKzC"}
|
|
@@ -11,7 +11,7 @@ import { Grid, GridItem } from '@patternfly/react-core';
|
|
|
11
11
|
import { SupportFeedbackForm } from '@rh-support/components';
|
|
12
12
|
import { fetchProducts, GlobalMetadataDispatchContext, GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
13
13
|
import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
14
|
-
import {
|
|
14
|
+
import { getVersionIfOnlyVersion, pendoTrackEvent, PreviousCaseTypes } from '@rh-support/utils';
|
|
15
15
|
import findIndex from 'lodash/findIndex';
|
|
16
16
|
import isEqual from 'lodash/isEqual';
|
|
17
17
|
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
@@ -80,7 +80,6 @@ export function WizardLayout(props) {
|
|
|
80
80
|
return isModalPresent;
|
|
81
81
|
};
|
|
82
82
|
const submitCaseAndNavigate = (isReSubmitting) => __awaiter(this, void 0, void 0, function* () {
|
|
83
|
-
var _a, _b;
|
|
84
83
|
confirmationModalType && setConfirmationModalType(null);
|
|
85
84
|
// if a confirmation modal exists, show it and don't submit the case as
|
|
86
85
|
// it will be handled by the confirmation modal itself
|
|
@@ -93,8 +92,6 @@ export function WizardLayout(props) {
|
|
|
93
92
|
React.createElement(SupportFeedbackForm, { isInline: true }),
|
|
94
93
|
" if you continue to see this message.")));
|
|
95
94
|
submitCase(caseDispatch, sessionRestoreDispatch, caseState, sessionItem, isCaseCreate, errorMessageCaseSubmit500, loggedInUser.data.ssoUsername, loggedInUsersAccount === null || loggedInUsersAccount === void 0 ? void 0 : loggedInUsersAccount.data.secureSupport, isReSubmitting || false);
|
|
96
|
-
const isCreatingCaseFlow = RouteUtils.getQueryParams(props.routeProps).caseCreate === 'true';
|
|
97
|
-
dtmTrackEventCaseCreationStepEncountered(isCreatingCaseFlow, 'submit', (_a = caseState.caseDetails) === null || _a === void 0 ? void 0 : _a.caseNumber, (_b = caseState.caseDetails) === null || _b === void 0 ? void 0 : _b.caseType, caseState.caseDetails.summary, caseState.caseDetails.product, caseState.caseDetails.version);
|
|
98
95
|
// reset viewedModals on case submit
|
|
99
96
|
viewedConfirmationModalsList.current = [];
|
|
100
97
|
!isReSubmitting &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WizardMain.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardMain.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAS,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAK9D,OAAO,EAAoB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAQpF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,qBAAqB,EAAE,CAAC,cAAc,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD,mBAAmB,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5E;AAED,iBAAS,UAAU,CAAC,KAAK,EAAE,MAAM,qBAsIhC;AACD,eAAe,UAAU,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Wizard, WizardContextConsumer, WizardFooter } from '@patternfly/react-core/deprecated';
|
|
2
2
|
import { LoadingIndicator } from '@rh-support/components';
|
|
3
|
-
import { dtmTrackEventCaseCreationStepEncountered } from '@rh-support/utils';
|
|
4
3
|
import isEqual from 'lodash/isEqual';
|
|
5
4
|
import React, { Suspense, useContext, useRef, useState } from 'react';
|
|
6
5
|
import { useTranslation } from 'react-i18next';
|
|
@@ -58,10 +57,6 @@ function WizardMain(props) {
|
|
|
58
57
|
return;
|
|
59
58
|
};
|
|
60
59
|
const onCurrentStepChanged = (step) => {
|
|
61
|
-
if (step.order === 0) {
|
|
62
|
-
const isCreatingCaseFlow = RouteUtils.getQueryParams(props.routeProps).caseCreate === 'true';
|
|
63
|
-
dtmTrackEventCaseCreationStepEncountered(isCreatingCaseFlow, 'start');
|
|
64
|
-
}
|
|
65
60
|
setActiveSectionChanged(dispatchToRouteReducer, step.id);
|
|
66
61
|
updateisNextBtnClickedToShowValidationError(dispatchToRouteReducer, false);
|
|
67
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"WizardNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/WizardNavigation.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAOvD,OAAO,EAAoB,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAK3G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,mBAAmB,EAAE,CAAC,gCAAgC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,gBAAgB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5E,kCAAkC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACpF,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD,gCAAgC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACjF,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CACxE;AAGD,iBAAS,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBA4PtC;kBA5PQ,gBAAgB;;;AA8PzB,eAAe,gBAAgB,CAAC"}
|
|
@@ -11,7 +11,7 @@ import { pcm } from '@cee-eng/hydrajs';
|
|
|
11
11
|
import { Button, ButtonVariant } from '@patternfly/react-core';
|
|
12
12
|
import { useFetch } from '@rh-support/components';
|
|
13
13
|
import { GlobalMetadataStateContext, useCanCreateCase } from '@rh-support/react-context';
|
|
14
|
-
import {
|
|
14
|
+
import { dtmTrackEventCaseStartStopped, getResTypeFromUrl, scrollIntoView } from '@rh-support/utils';
|
|
15
15
|
import find from 'lodash/find';
|
|
16
16
|
import isEqual from 'lodash/isEqual';
|
|
17
17
|
import React, { useContext, useEffect, useState } from 'react';
|
|
@@ -23,7 +23,6 @@ import { SessionRestoreStateContext } from '../../context/SessionRestoreContext'
|
|
|
23
23
|
import { setCaseState } from '../../reducers/CaseReducer';
|
|
24
24
|
import { AppRouteSections } from '../../reducers/RouteConstNTypes';
|
|
25
25
|
import { updateisNextBtnClickedToShowValidationError } from '../../reducers/RouteReducer';
|
|
26
|
-
import RouteUtils from '../../utils/routeUtils';
|
|
27
26
|
import { RecommendationFeedbackModal } from '../Recommendations/RecommendationFeedbackModal';
|
|
28
27
|
import { useIsSectionValid } from '../shared/useIsSectionValid';
|
|
29
28
|
const defaultProps = {};
|
|
@@ -57,11 +56,6 @@ function WizardNavigation(props) {
|
|
|
57
56
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
58
57
|
}, []);
|
|
59
58
|
useEffect(() => {
|
|
60
|
-
var _a, _b;
|
|
61
|
-
const isCreatingCase = RouteUtils.getQueryParams(props.routeProps).caseCreate === 'true';
|
|
62
|
-
dtmTrackEventCaseCreationStepEncountered(isCreatingCase,
|
|
63
|
-
// @ts-ignore
|
|
64
|
-
props.activeStep.id, (_a = caseState.caseDetails) === null || _a === void 0 ? void 0 : _a.caseNumber, (_b = caseState.caseDetails) === null || _b === void 0 ? void 0 : _b.caseType, caseState.caseDetails.summary, caseState.caseDetails.product, caseState.caseDetails.version);
|
|
65
59
|
if (props.activeStep.id === AppRouteSections.TROUBLESHOOT) {
|
|
66
60
|
window.scrollTo({
|
|
67
61
|
top: 0,
|
|
@@ -152,11 +146,13 @@ function WizardNavigation(props) {
|
|
|
152
146
|
props.onNext && props.onNext();
|
|
153
147
|
}
|
|
154
148
|
}
|
|
149
|
+
dtmTrackEventCaseStartStopped(`${props.activeStep.nextButtonLabel} button clicked on ${props.activeStep.name} step`, `${caseState.caseDetails.caseNumber}`, `${caseState.caseDetails.product}|${caseState.caseDetails.version}`);
|
|
155
150
|
return;
|
|
156
151
|
};
|
|
157
152
|
const onBack = () => {
|
|
158
153
|
if (props.activeStep.hidRestOnBack)
|
|
159
154
|
props.onShowRestUpdate(false);
|
|
155
|
+
dtmTrackEventCaseStartStopped(`${props.activeStep.nextButtonLabel} button clicked on ${props.activeStep.name} step`, '', `${caseState.caseDetails.product}|${caseState.caseDetails.version}`);
|
|
160
156
|
props.onBack();
|
|
161
157
|
};
|
|
162
158
|
const onRecsFeedbackModalToggle = () => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFetchCVEData.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFetchCVEData.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,0BAA0B,EAAkB,MAAM,iCAAiC,CAAC;AAI7F,wBAAgB,eAAe;;EAkG9B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { search } from '@cee-eng/hydrajs';
|
|
11
|
+
import { getRecommendationTitle } from '@rh-support/utils';
|
|
12
|
+
import filter from 'lodash/filter';
|
|
13
|
+
import isArray from 'lodash/isArray';
|
|
14
|
+
import isEmpty from 'lodash/isEmpty';
|
|
15
|
+
import isEqual from 'lodash/isEqual';
|
|
16
|
+
import map from 'lodash/map';
|
|
17
|
+
import some from 'lodash/some';
|
|
18
|
+
import { useContext, useEffect, useState } from 'react';
|
|
19
|
+
import { useCaseDispatch, useCaseSelector } from '../context/CaseContext';
|
|
20
|
+
import { RecommendationStateContext } from '../context/RecommendationContext';
|
|
21
|
+
import { setCaseState } from '../reducers/CaseReducer';
|
|
22
|
+
import { findCVEsInString } from '../utils/caseUtils';
|
|
23
|
+
// custom hook for CVE workflow .
|
|
24
|
+
export function useFetchCVEData() {
|
|
25
|
+
const caseDispatch = useCaseDispatch();
|
|
26
|
+
const { recommendationState } = useContext(RecommendationStateContext);
|
|
27
|
+
const [cveRecommendation, setCveRecommendation] = useState([]);
|
|
28
|
+
const { product, version, summary, description } = useCaseSelector((state) => ({
|
|
29
|
+
product: state.caseDetails.product,
|
|
30
|
+
version: state.caseDetails.version,
|
|
31
|
+
summary: state.caseDetails.summary,
|
|
32
|
+
description: state.caseDetails.description,
|
|
33
|
+
}), isEqual);
|
|
34
|
+
const getFixedErrataByProduct = (releaseInfo, selectedProduct, selectedVersion) => {
|
|
35
|
+
var _a;
|
|
36
|
+
if (isEmpty(releaseInfo) || !isArray(releaseInfo) || !selectedProduct) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
const selectedProductLower = selectedProduct.toLowerCase().trim() || '';
|
|
40
|
+
const selectedVersionLower = ((_a = selectedVersion === null || selectedVersion === void 0 ? void 0 : selectedVersion.toLowerCase()) === null || _a === void 0 ? void 0 : _a.trim()) || '';
|
|
41
|
+
const majorVersion = selectedVersionLower.split('.')[0];
|
|
42
|
+
const filteredArray = releaseInfo.filter((obj) => {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
const product = (_b = (_a = obj === null || obj === void 0 ? void 0 : obj.product) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.trim();
|
|
45
|
+
const productVersionMatchConditions = product === selectedProductLower ||
|
|
46
|
+
product === `${selectedProductLower} ${selectedVersionLower}` ||
|
|
47
|
+
(majorVersion && product === `${selectedProductLower} ${majorVersion}`);
|
|
48
|
+
return productVersionMatchConditions && (obj === null || obj === void 0 ? void 0 : obj.state) === 'Fixed';
|
|
49
|
+
});
|
|
50
|
+
return map(filteredArray, (i) => {
|
|
51
|
+
var _a;
|
|
52
|
+
return ({
|
|
53
|
+
package: (i === null || i === void 0 ? void 0 : i.package) || '',
|
|
54
|
+
advisory: isEmpty(i === null || i === void 0 ? void 0 : i.advisory)
|
|
55
|
+
? {}
|
|
56
|
+
: Object.assign(Object.assign({}, i === null || i === void 0 ? void 0 : i.advisory), { url: (_a = (i === null || i === void 0 ? void 0 : i.advisory).url) === null || _a === void 0 ? void 0 : _a.replace(/\\/g, '') }),
|
|
57
|
+
state: (i === null || i === void 0 ? void 0 : i.state) || '',
|
|
58
|
+
product: (i === null || i === void 0 ? void 0 : i.product) || '',
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
const fetchCVEData = (cveIds) => __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
if (isEmpty(cveIds))
|
|
64
|
+
return [];
|
|
65
|
+
try {
|
|
66
|
+
const results = yield Promise.allSettled(map(cveIds, (id) => search.getCVEDetailsById(id)));
|
|
67
|
+
return map(filter(results, (result) => result.status === 'fulfilled'), (result) => result.value);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error('Error fetching CVE data:', error);
|
|
71
|
+
return [];
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
const CVETextValue = `${summary || ''} ${description || ''}`;
|
|
76
|
+
const cveIds = findCVEsInString(CVETextValue);
|
|
77
|
+
const exactMatchCVEIds = filter(cveIds, (cveId) => some(recommendationState === null || recommendationState === void 0 ? void 0 : recommendationState.visibleDocs, (doc) => doc.documentKind === 'Cve' &&
|
|
78
|
+
getRecommendationTitle(doc) === cveId &&
|
|
79
|
+
(doc === null || doc === void 0 ? void 0 : doc.cve_threatSeverity) !== 'Low'));
|
|
80
|
+
fetchCVEData(exactMatchCVEIds).then((results) => {
|
|
81
|
+
const processedData = map(results, ({ data }) => {
|
|
82
|
+
var _a, _b, _c, _d;
|
|
83
|
+
return ({
|
|
84
|
+
publicDate: (_a = data === null || data === void 0 ? void 0 : data.field_cve_public_date) === null || _a === void 0 ? void 0 : _a.value,
|
|
85
|
+
title: data === null || data === void 0 ? void 0 : data.title,
|
|
86
|
+
severity: data === null || data === void 0 ? void 0 : data.field_cve_threat_severity_text,
|
|
87
|
+
mitigation: data === null || data === void 0 ? void 0 : data.field_cve_mitigation_text,
|
|
88
|
+
details: (_b = data === null || data === void 0 ? void 0 : data.field_cve_details_text) === null || _b === void 0 ? void 0 : _b.value,
|
|
89
|
+
cveLink: (_c = data === null || data === void 0 ? void 0 : data.path) === null || _c === void 0 ? void 0 : _c.replace(/\\/g, ''),
|
|
90
|
+
errataData: getFixedErrataByProduct(((_d = data === null || data === void 0 ? void 0 : data.field_cve_releases_txt) === null || _d === void 0 ? void 0 : _d.object) || [], product, version),
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
setCveRecommendation(processedData);
|
|
94
|
+
setCaseState(caseDispatch, {
|
|
95
|
+
cveWorkflowRecommendation: processedData,
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
99
|
+
}, [summary, description, product, version, recommendationState === null || recommendationState === void 0 ? void 0 : recommendationState.visibleDocs]);
|
|
100
|
+
return { cveRecommendation };
|
|
101
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface ICVEWorkflowRecommendation {
|
|
2
|
+
publicDate: string;
|
|
3
|
+
title: string;
|
|
4
|
+
severity: any;
|
|
5
|
+
mitigation: any;
|
|
6
|
+
details: string;
|
|
7
|
+
cveLink: string;
|
|
8
|
+
errataData: IErrataDetails[];
|
|
9
|
+
}
|
|
10
|
+
interface IAdvisory {
|
|
11
|
+
name: string;
|
|
12
|
+
release_date: string;
|
|
13
|
+
type: string;
|
|
14
|
+
url: string;
|
|
15
|
+
}
|
|
16
|
+
export interface IErrataDetails {
|
|
17
|
+
cpe: string;
|
|
18
|
+
product: string;
|
|
19
|
+
advisory: IAdvisory;
|
|
20
|
+
package: string;
|
|
21
|
+
state: string;
|
|
22
|
+
lifecycle_url: string;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=caseCreationWorkflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caseCreationWorkflows.d.ts","sourceRoot":"","sources":["../../../src/models/caseCreationWorkflows.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,0BAA0B;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,UAAU,SAAS;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -7,6 +7,7 @@ import { ICaseNotificationAddresses } from '@cee-eng/hydrajs/@types/models/case'
|
|
|
7
7
|
import { IContact } from '@cee-eng/hydrajs/@types/models/contact';
|
|
8
8
|
import { IAction, IAPIError, IApiResponseDetails } from '@rh-support/types/shared';
|
|
9
9
|
import { Dispatch } from 'react';
|
|
10
|
+
import { ICVEWorkflowRecommendation } from '../models/caseCreationWorkflows';
|
|
10
11
|
export declare const TITLE_SUMMARY_LENGTH_LIMIT = 255;
|
|
11
12
|
export declare const ISSUE_SUMMARY_LENGTH_LIMIT = 20000;
|
|
12
13
|
export declare const SUMMARY_LENGTH_LIMIT = 255;
|
|
@@ -230,6 +231,8 @@ export interface ICaseState {
|
|
|
230
231
|
shouldNotSetPhoneCountryCode?: boolean;
|
|
231
232
|
ftsContactSameAsOwner?: boolean;
|
|
232
233
|
isCasePhoneUpdating?: boolean;
|
|
234
|
+
cveWorkflowRecommendation?: ICVEWorkflowRecommendation[];
|
|
235
|
+
isCveModalOpened?: boolean;
|
|
233
236
|
}
|
|
234
237
|
export interface ICreateCasePayloadType extends ICaseState {
|
|
235
238
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseConstNTypes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CaseConstNTypes.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseConstNTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -227,6 +227,8 @@ export const initialCaseState = {
|
|
|
227
227
|
shouldNotSetPhoneCountryCode: false,
|
|
228
228
|
ftsContactSameAsOwner: false,
|
|
229
229
|
isCasePhoneUpdating: false,
|
|
230
|
+
cveWorkflowRecommendation: [],
|
|
231
|
+
isCveModalOpened: true,
|
|
230
232
|
};
|
|
231
233
|
export const ORG_ADMIN_SEND_NOTIFCATION_KBASE_LINK = 'https://access.redhat.com/articles/5967811';
|
|
232
234
|
export const NON_ORG_ADMIN_SEND_NOTIFCATION_KBASE_LINK = 'https://access.redhat.com/articles/5967831';
|
package/lib/esm/scss/_main.scss
CHANGED
|
@@ -1009,8 +1009,7 @@ svg.pf-v5-u-ml-xs.icon-size {
|
|
|
1009
1009
|
}
|
|
1010
1010
|
|
|
1011
1011
|
.case-internal-status-selector-text,
|
|
1012
|
-
.get-support-severity-modal-text
|
|
1013
|
-
.case-type-selector-text {
|
|
1012
|
+
.get-support-severity-modal-text {
|
|
1014
1013
|
.pf-v5-c-menu-toggle__text {
|
|
1015
1014
|
width: 100%;
|
|
1016
1015
|
}
|
|
@@ -1061,3 +1060,22 @@ svg.pf-v5-u-ml-xs.icon-size {
|
|
|
1061
1060
|
#get-support-severity-modal {
|
|
1062
1061
|
max-width: min-content;
|
|
1063
1062
|
}
|
|
1063
|
+
|
|
1064
|
+
#DeepPurpleColorAILabel {
|
|
1065
|
+
background-color: #6600cc !important; //deep purple override because not available in PF yet
|
|
1066
|
+
}
|
|
1067
|
+
#DeepPurpleColorAILabel .pf-v5-c-label__content {
|
|
1068
|
+
color: #ffffff !important;
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
#DeepPurpleColorAILabel .pf-v5-svg {
|
|
1072
|
+
margin: 0 10px 0 5px;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
#DeepPurpleColorAILabel .pf-v5-c-spinner__path {
|
|
1076
|
+
stroke: white;
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
#DeepPurpleColorAILabel svg.pf-v5-c-spinner {
|
|
1080
|
+
margin: 0 10px 0 5px;
|
|
1081
|
+
}
|
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
export declare const extractKTQuestion1FromDescription: (description: any) => any;
|
|
2
|
+
/**
|
|
3
|
+
* Finds all CVE identifiers in the given text.
|
|
4
|
+
* @param {string} text - The input text to search for CVE identifiers.
|
|
5
|
+
* @returns {string[]} An array of CVE identifiers found in the text, or an empty array if none are found.
|
|
6
|
+
*/
|
|
7
|
+
export declare const findCVEsInString: (text: string) => string[];
|
|
2
8
|
//# sourceMappingURL=caseUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caseUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseUtils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iCAAiC,2BAa7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"caseUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseUtils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,iCAAiC,2BAa7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,MAAM,EAYrD,CAAC"}
|
|
@@ -14,3 +14,18 @@ export const extractKTQuestion1FromDescription = (description) => {
|
|
|
14
14
|
return description;
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Finds all CVE identifiers in the given text.
|
|
19
|
+
* @param {string} text - The input text to search for CVE identifiers.
|
|
20
|
+
* @returns {string[]} An array of CVE identifiers found in the text, or an empty array if none are found.
|
|
21
|
+
*/
|
|
22
|
+
export const findCVEsInString = (text) => {
|
|
23
|
+
// Regular expression to match CVE identifiers
|
|
24
|
+
const cveRegex = /\b(CVE-\d{4}-\d{4,7})\b/gi;
|
|
25
|
+
// Find all matches in the text
|
|
26
|
+
const matches = text.match(cveRegex);
|
|
27
|
+
// Deduplicate the matches and convert to uppercase
|
|
28
|
+
const uniqueMatches = [...new Set(matches === null || matches === void 0 ? void 0 : matches.map((match) => match.toUpperCase()))];
|
|
29
|
+
// Return the unique matches, or an empty array if no matches found
|
|
30
|
+
return uniqueMatches || [];
|
|
31
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/troubleshoot",
|
|
3
|
-
"version": "2.4.5-beta.
|
|
3
|
+
"version": "2.4.5-beta.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"lib/**/*"
|
|
26
26
|
],
|
|
27
27
|
"peerDependencies": {
|
|
28
|
-
"@cee-eng/hydrajs": "4.17.
|
|
28
|
+
"@cee-eng/hydrajs": "4.17.33",
|
|
29
29
|
"@cee-eng/ui-toolkit": "1.1.8",
|
|
30
30
|
"@patternfly/patternfly": "5.4.0",
|
|
31
31
|
"@patternfly/react-core": "5.4.0",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"react-virtualized": "^9.22.5"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@cee-eng/hydrajs": "4.17.
|
|
54
|
+
"@cee-eng/hydrajs": "4.17.33",
|
|
55
55
|
"@cee-eng/ui-toolkit": "1.1.8",
|
|
56
56
|
"@patternfly/patternfly": "5.4.0",
|
|
57
57
|
"@patternfly/react-core": "5.4.0",
|
|
@@ -60,12 +60,14 @@
|
|
|
60
60
|
"@progress/kendo-licensing": "1.3.5",
|
|
61
61
|
"@progress/kendo-react-pdf": "^5.16.0",
|
|
62
62
|
"@redux-devtools/extension": "^3.3.0",
|
|
63
|
-
"@rh-support/components": "2.
|
|
64
|
-
"@rh-support/react-context": "2.
|
|
63
|
+
"@rh-support/components": "2.4.2",
|
|
64
|
+
"@rh-support/react-context": "2.4.2",
|
|
65
65
|
"@rh-support/types": "2.0.5",
|
|
66
|
-
"@rh-support/user-permissions": "2.
|
|
67
|
-
"@rh-support/utils": "2.
|
|
68
|
-
"
|
|
66
|
+
"@rh-support/user-permissions": "2.4.2",
|
|
67
|
+
"@rh-support/utils": "2.4.2",
|
|
68
|
+
"@types/react-redux": "^7.1.33",
|
|
69
|
+
"@types/redux": "^3.6.0",
|
|
70
|
+
"date-fns": "3.6.0",
|
|
69
71
|
"dompurify": "^2.2.6",
|
|
70
72
|
"dot": "^1.1.3",
|
|
71
73
|
"downshift": "^6.0.5",
|
|
@@ -103,9 +105,7 @@
|
|
|
103
105
|
"@types/react": "^18.2.20",
|
|
104
106
|
"@types/react-bootstrap-typeahead": "^5.1.3",
|
|
105
107
|
"@types/react-dom": "^18.2.18",
|
|
106
|
-
"@types/react-redux": "^7.1.33",
|
|
107
108
|
"@types/react-router-dom": "^5.1.2",
|
|
108
|
-
"@types/redux": "^3.6.0",
|
|
109
109
|
"faker": "^5.5.3",
|
|
110
110
|
"jest": "^29.7.0",
|
|
111
111
|
"jest-environment-jsdom": "^29.7.0"
|
|
@@ -134,5 +134,5 @@
|
|
|
134
134
|
"defaults and supports es6-module",
|
|
135
135
|
"maintained node versions"
|
|
136
136
|
],
|
|
137
|
-
"gitHead": "
|
|
137
|
+
"gitHead": "59d30cc22763873f81ca21f2c5366ea31f5242c0"
|
|
138
138
|
}
|