@rh-support/cases 2.6.215 → 2.6.217

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.
@@ -1 +1 @@
1
- {"version":3,"file":"CaseList.d.ts","sourceRoot":"","sources":["../../../../src/components/case-list/CaseList.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAChC,OAAO,0BAA0B,CAAC;AAuClC,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAqC1C,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;CACzD;AAMD,MAAM,WAAW,gBAAgB;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,qBA+rBrC"}
1
+ {"version":3,"file":"CaseList.d.ts","sourceRoot":"","sources":["../../../../src/components/case-list/CaseList.tsx"],"names":[],"mappings":"AAAA,OAAO,wBAAwB,CAAC;AAChC,OAAO,0BAA0B,CAAC;AAwClC,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,OAAO,EAAE,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,IAAI,CAAC;AAuC1C,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;CACzD;AAMD,MAAM,WAAW,gBAAgB;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,qBA2vBrC"}
@@ -16,14 +16,17 @@ import { ErrorBoundary, ToastNotification, useBreakpoint, useDocumentTitle, useF
16
16
  import { CSSUserModal, fetchAllStatuses, fetchCaseGroupsForAccount, fetchCaseGroupsForSSO, fetchCaseSeverities, fetchCaseTypes, fetchProducts, GlobalMetadataDispatchContext, GlobalMetadataStateContext, setUserPreferences, updateCaseListTraditionalSupportAgreed, updateUserPreferences, useGlobalDispatchContext, UserPreferencesKeys, } from '@rh-support/react-context';
17
17
  import { getStringifiedParams, getUrlParsedParams, haventLoadedMetadata, haventLoadedProductsMetadata, pendoTrackEvent, } from '@rh-support/utils';
18
18
  import isEmpty from 'lodash/isEmpty';
19
+ import isEqual from 'lodash/isEqual';
19
20
  import some from 'lodash/some';
20
21
  import React, { useContext, useEffect, useRef, useState } from 'react';
21
22
  import { Trans, useTranslation } from 'react-i18next';
22
23
  import { useInView } from 'react-intersection-observer';
23
24
  import { useLocation } from 'react-router-dom';
24
25
  import { CaseSearchQueryType } from '../../enums/caseSearch';
26
+ import { SolrKeys } from '../../enums/filters';
25
27
  import { PageTitle } from '../../enums/pageTitle';
26
28
  import { useFilterStateOnLoad } from '../../hooks/useFilterStateOnLoad';
29
+ import { getDefaultGroupFilterSelection, shouldApplyDefaultGroupFilter } from '../../utils/caseGroupDefaultFilterUtils';
27
30
  import { clearPageCursors, getCaseListFromGraphQL, loadMoreCases, } from '../../utils/caseListGraphQLUtils';
28
31
  import { createFilterStateFromUrlQuery, createURLQueryFromFilterState, FILTER_URL_CURRENT_PAGE_SEARCH_PARAM, FILTER_URL_PAGE_SIZE_SEARCH_PARAM, FILTER_URL_QUERY_SEARCH_PARAM, FILTER_URL_QUERY_TYPE, } from '../../utils/caseSearchUtils';
29
32
  import { UpdatedCaseDataEvent } from '../../utils/constants';
@@ -34,20 +37,21 @@ import { CaseListTable } from './case-list-table/CaseListTable';
34
37
  import { CaseSearch } from './case-search/CaseSearch';
35
38
  import { useCaseListDispatchContext, useCaseListStateContext } from './CaseListContext';
36
39
  import { CaseListFilterDispatchContext, CaseListFilterStateContext } from './CaseListFilterContext';
37
- import { isNoFilterApplied, isOnlyDefaultFilterApplied } from './CaseListFilterHelpers';
40
+ import { isNoFilterApplied, isOnlyDefaultFilterApplied, isOnlyGroupFilterApplied } from './CaseListFilterHelpers';
38
41
  import { updateFilterState } from './CaseListFilterReducer';
39
42
  import { appendCaseList, setCaseList, setCurrentQuery, setCursorInfo, setIsFetching, setIsLoadingMore, setLoadMoreError, } from './CaseListReducer';
40
43
  export function CaseList(props) {
41
- var _a, _b, _c, _d, _e, _f, _g;
44
+ var _a, _b, _c, _d, _e, _f, _g, _h;
42
45
  const { t } = useTranslation();
43
46
  useDocumentTitle(PageTitle.CASE_LIST);
44
47
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
45
48
  const { caseList, isFetching, isLoadingMore, hasNextPage, endCursor, currentQuery, loadMoreError, loadMoreRetryCount, } = useCaseListStateContext();
46
49
  const CaseListDispatch = useCaseListDispatchContext();
47
50
  const breakPoint = useBreakpoint();
48
- const { globalMetadataState, globalMetadataState: { caseGroups, loggedInUser, loggedInUserRights, loggedInUsersAccount, userPreferences, managedAccounts, bookmarkedAccounts, allCaseTypes, allCaseSeverities, allCaseStatuses, allProducts, caseRecordTypes, caseListTraditionalSupportAgreed, }, } = useContext(GlobalMetadataStateContext);
51
+ const { globalMetadataState, globalMetadataState: { caseGroups, loggedInUser, loggedInUserRights, loggedInUsersAccount, userPreferences, managedAccounts, bookmarkedAccounts, allCaseTypes, allCaseSeverities, allCaseStatuses, allProducts, caseRecordTypes, caseListTraditionalSupportAgreed, hydraUserPreferences, }, } = useContext(GlobalMetadataStateContext);
49
52
  const globalDispatchContext = useGlobalDispatchContext();
50
53
  const apolloClient = useApolloClient();
54
+ const includeSecureSupportCases = Boolean(loggedInUsersAccount.data.secureSupport);
51
55
  const location = useLocation();
52
56
  const searchParams = getUrlParsedParams(location.search);
53
57
  const queryFromUrl = searchParams[FILTER_URL_QUERY_SEARCH_PARAM];
@@ -86,7 +90,7 @@ export function CaseList(props) {
86
90
  if (!cursor || prefetchRef.current.cursor === cursor)
87
91
  return;
88
92
  prefetchRef.current = { cursor, data: null, loading: true };
89
- loadMoreCases(activeFilterStateRef.current, apolloClient, cursor)
93
+ loadMoreCases(activeFilterStateRef.current, apolloClient, cursor, undefined, includeSecureSupportCases)
90
94
  .then((result) => {
91
95
  if (prefetchRef.current.cursor === cursor) {
92
96
  prefetchRef.current = { cursor, data: result, loading: false };
@@ -174,7 +178,7 @@ export function CaseList(props) {
174
178
  prefetchRef.current = { cursor: '', data: null, loading: false };
175
179
  loadMoreCooldownRef.current = true;
176
180
  activeFilterStateRef.current = currentFilterState;
177
- const result = yield getCaseListFromGraphQL(currentFilterState, apolloClient, undefined, controller.signal);
181
+ const result = yield getCaseListFromGraphQL(currentFilterState, apolloClient, undefined, controller.signal, undefined, includeSecureSupportCases);
178
182
  if (controller.signal.aborted) {
179
183
  return;
180
184
  }
@@ -228,7 +232,7 @@ export function CaseList(props) {
228
232
  }
229
233
  else {
230
234
  prefetchRef.current = { cursor: '', data: null, loading: false };
231
- result = yield loadMoreCases(activeFilterStateRef.current, apolloClient, endCursor, controller.signal);
235
+ result = yield loadMoreCases(activeFilterStateRef.current, apolloClient, endCursor, controller.signal, includeSecureSupportCases);
232
236
  }
233
237
  if (controller.signal.aborted)
234
238
  return;
@@ -278,7 +282,7 @@ export function CaseList(props) {
278
282
  };
279
283
  const checkNewCases = () => __awaiter(this, void 0, void 0, function* () {
280
284
  try {
281
- const { caseListResponse } = yield getCaseListFromGraphQL(filterState, apolloClient);
285
+ const { caseListResponse } = yield getCaseListFromGraphQL(filterState, apolloClient, undefined, undefined, undefined, includeSecureSupportCases);
282
286
  let changed = false;
283
287
  if (caseListResponse.response.numFound <= filterState.paginationInfo.pageSize &&
284
288
  caseListResponse.response.numFound !== caseList.numFound) {
@@ -316,24 +320,50 @@ export function CaseList(props) {
316
320
  var _a;
317
321
  if (!salesforceAccountId || loggedInUser.isFetching)
318
322
  return;
319
- if (haventLoadedMetadata(caseGroups, (data) => data === undefined)) {
320
- if ((_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.isInternal) {
321
- fetchCaseGroupsForAccount(dispatchToGlobalMetadataReducer, apolloClient, salesforceAccountId, defaultCaseGroupId, loggedInContactId, loggedInIsOrgAdmin);
322
- }
323
- else {
324
- fetchCaseGroupsForSSO(dispatchToGlobalMetadataReducer, apolloClient, salesforceAccountId, defaultCaseGroupId, loggedInContactId, loggedInIsOrgAdmin);
325
- }
323
+ if (!haventLoadedMetadata(caseGroups, (data) => data === undefined))
324
+ return;
325
+ if ((_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.isInternal) {
326
+ fetchCaseGroupsForAccount(dispatchToGlobalMetadataReducer, apolloClient, salesforceAccountId, defaultCaseGroupId, loggedInContactId, loggedInIsOrgAdmin);
327
+ }
328
+ else {
329
+ fetchCaseGroupsForSSO(dispatchToGlobalMetadataReducer, apolloClient, salesforceAccountId, defaultCaseGroupId, loggedInContactId, loggedInIsOrgAdmin);
326
330
  }
327
331
  }, [
332
+ apolloClient,
328
333
  caseGroups,
329
334
  dispatchToGlobalMetadataReducer,
330
- apolloClient,
331
- salesforceAccountId,
332
- loggedInUsersAccount.data,
335
+ defaultCaseGroupId,
333
336
  loggedInContactId,
334
337
  loggedInIsOrgAdmin,
335
338
  loggedInUser.isFetching,
339
+ (_f = loggedInUsersAccount.data) === null || _f === void 0 ? void 0 : _f.isInternal,
340
+ salesforceAccountId,
341
+ ]);
342
+ useEffect(() => {
343
+ if (location.pathname !== '/case/list')
344
+ return;
345
+ if (loggedInUser.isFetching || caseGroups.isFetching || caseGroups.data === undefined)
346
+ return;
347
+ if (!shouldApplyDefaultGroupFilter(queryFromUrl, hydraUserPreferences.data))
348
+ return;
349
+ const canAutoSync = isNoFilterApplied(filterState) ||
350
+ isOnlyDefaultFilterApplied(filterState) ||
351
+ isOnlyGroupFilterApplied(filterState.filterInfo);
352
+ if (!canAutoSync)
353
+ return;
354
+ const nextGroupFilter = getDefaultGroupFilterSelection(caseGroups.data, loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data);
355
+ const currentGroupFilter = filterState.filterInfo[SolrKeys.group] || [];
356
+ if (isEqual(currentGroupFilter, nextGroupFilter))
357
+ return;
358
+ updateFilterState(filterDispatch, Object.assign(Object.assign({}, filterState), { filterInfo: Object.assign(Object.assign({}, filterState.filterInfo), { [SolrKeys.group]: nextGroupFilter }) }));
359
+ // eslint-disable-next-line react-hooks/exhaustive-deps
360
+ }, [
336
361
  defaultCaseGroupId,
362
+ caseGroups.data,
363
+ caseGroups.isFetching,
364
+ loggedInUser.isFetching,
365
+ location.pathname,
366
+ queryFromUrl,
337
367
  ]);
338
368
  useEffect(() => {
339
369
  const loadMetadata = () => __awaiter(this, void 0, void 0, function* () {
@@ -524,8 +554,8 @@ export function CaseList(props) {
524
554
  React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading filter chips') } },
525
555
  React.createElement(CaseListFilterChips, null))),
526
556
  React.createElement("section", { className: "case-search-bottom" },
527
- React.createElement("aside", { className: `case-search-filters ${((_f = filterSectionRef.current) === null || _f === void 0 ? void 0 : _f.expanded) ? '' : 'collapsed'}` },
528
- React.createElement("h2", { className: "filter-header pf-v6-u-display-flex" }, ((_g = filterSectionRef.current) === null || _g === void 0 ? void 0 : _g.expanded) ? (React.createElement(React.Fragment, null,
557
+ React.createElement("aside", { className: `case-search-filters ${((_g = filterSectionRef.current) === null || _g === void 0 ? void 0 : _g.expanded) ? '' : 'collapsed'}` },
558
+ React.createElement("h2", { className: "filter-header pf-v6-u-display-flex" }, ((_h = filterSectionRef.current) === null || _h === void 0 ? void 0 : _h.expanded) ? (React.createElement(React.Fragment, null,
529
559
  React.createElement(Button, { isInline: true, className: "pf-v6-u-flex-shrink-0 pf-v6-u-flex-none case-search-filter-text-button", variant: "link", title: t('Collapse filter section'), "data-tracking-id": "collapse-case-list-filter", onClick: onToggleFilterBtnClick, iconPosition: "right", icon: React.createElement(OpenDrawerRightIcon, { className: "mirrored" }) },
530
560
  React.createElement(Trans, null, "Filters")))) : (React.createElement(Button, { isInline: true, className: "pf-v6-c-button pf-m-link pf-m-inline pf-v6-u-flex-shrink-0 pf-v6-u-flex-none pf-v6-u-display-flex pf-v6-u-align-items-center pf-v6-u-justify-content-center pf-v6-u-px-lg", variant: "link", title: t('Expand filter section'), "data-tracking-id": "expand-case-list-filter", onClick: onToggleFilterBtnClick, iconPosition: "right", icon: React.createElement(OpenDrawerRightIcon, null) }, isXLScreen ? null : React.createElement(Trans, null, "Filters")))),
531
561
  React.createElement("div", { className: "filter-wrapper" },
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadCSVFileModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/DownloadCSVFileModal.tsx"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AA+BrC,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,oBAAoB,CAAC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAWD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBA8WzD"}
1
+ {"version":3,"file":"DownloadCSVFileModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/case-list/case-list-table/DownloadCSVFileModal.tsx"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AAgCrC,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,EAAE,oBAAoB,CAAC;IAClC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAWD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,KAAK,EAAE,MAAM,qBAmXzD"}
@@ -13,9 +13,10 @@ import { Button, Checkbox, Form, FormGroup, Grid, GridItem, InputGroup, Modal, M
13
13
  import DownloadIcon from '@patternfly/react-icons/dist/js/icons/download-icon';
14
14
  import TimesCircleIcon from '@patternfly/react-icons/dist/js/icons/times-circle-icon';
15
15
  import { ToastNotification } from '@rh-support/components';
16
+ import { GlobalMetadataStateContext } from '@rh-support/react-context';
16
17
  import { downloadCSV, formatDateTime, mapSfdcStatusToPortalStatus, toNewCaseTypeSwitcher, } from '@rh-support/utils';
17
18
  import { isEmpty } from 'lodash';
18
- import React, { useEffect, useMemo, useState } from 'react';
19
+ import React, { useContext, useEffect, useMemo, useState } from 'react';
19
20
  import { useTranslation } from 'react-i18next';
20
21
  import { SolrKeys } from '../../../enums/filters';
21
22
  import { getCaseListFromGraphQL } from '../../../utils/caseListGraphQLUtils';
@@ -31,6 +32,8 @@ export default function DownloadCSVFileModal(props) {
31
32
  const { onClose, onModalshow, isDisabled, filterState, selectedCases, filteredCaseCount } = props;
32
33
  const { t } = useTranslation();
33
34
  const apolloClient = useApolloClient();
35
+ const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
36
+ const includeSecureSupportCases = Boolean(loggedInUsersAccount.data.secureSupport);
34
37
  const [isFetching, setIsFetching] = useState(false);
35
38
  const [downloadCSVFileName, setDownloadCSVFileName] = useState('CaseList.csv');
36
39
  const [checkboxes, setCheckboxes] = useState({
@@ -170,7 +173,7 @@ export default function DownloadCSVFileModal(props) {
170
173
  setIsFetching(true);
171
174
  const hasSelectedCases = selectedCases.length > 0;
172
175
  const csvLimit = hasSelectedCases ? selectedCases.length : 1000;
173
- const result = yield getCaseListFromGraphQL(filterState, apolloClient, csvLimit, undefined, hasSelectedCases ? selectedCases : undefined);
176
+ const result = yield getCaseListFromGraphQL(filterState, apolloClient, csvLimit, undefined, hasSelectedCases ? selectedCases : undefined, includeSecureSupportCases);
174
177
  setIsFetching(false);
175
178
  const updatedCsvData = result.caseListResponse.response.docs.map((row) => (Object.assign(Object.assign({}, row), { case_type: toNewCaseTypeSwitcher(row.case_type), case_link: `https://${window.location.host}${window.location.pathname}/#/case/${row.case_number}` })));
176
179
  downloadCSV(updatedCsvData, getHeaders(), splitExtensionName ? `${splitExtensionName}.csv` : 'CaseList.csv');
@@ -1 +1 @@
1
- {"version":3,"file":"useFilterStateOnLoad.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFilterStateOnLoad.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK1D,wBAAgB,oBAAoB;wBAkBd,MAAM,mBACH,MAAM,GAAG,SAAS,sBACf,MAAM,cACd,mBAAmB;;;;EA+DtC"}
1
+ {"version":3,"file":"useFilterStateOnLoad.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFilterStateOnLoad.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAU1D,wBAAgB,oBAAoB;wBAkBd,MAAM,mBACH,MAAM,GAAG,SAAS,sBACf,MAAM,cACd,mBAAmB;;;;EAiEtC"}
@@ -4,6 +4,7 @@ import findKey from 'lodash/findKey';
4
4
  import { useContext, useMemo } from 'react';
5
5
  import { CaseListFilterStateContext, initialCaseFilterState } from '../components/case-list/CaseListFilterContext';
6
6
  import { SolrKeys } from '../enums/filters';
7
+ import { decodeCaseListUrlFilterQuery, getDefaultGroupFilterSelection, shouldApplyDefaultGroupFilter, } from '../utils/caseGroupDefaultFilterUtils';
7
8
  import { createFilterStateFromUrlQuery } from '../utils/caseSearchUtils';
8
9
  // TODO Comment
9
10
  export function useFilterStateOnLoad() {
@@ -12,14 +13,15 @@ export function useFilterStateOnLoad() {
12
13
  const savesSearches = find(hydraUserPreferences.data, (pref) => pref.key === UserPreferencesKeys.caseSavedSearchFilters);
13
14
  const savedSearchesObj = useMemo(() => ((savesSearches === null || savesSearches === void 0 ? void 0 : savesSearches.value) ? JSON.parse(savesSearches.value) : {}), [savesSearches]);
14
15
  const set = (queryFromUrl, pageSizeFromUrl, currentPageFromUrl, searchType) => {
16
+ var _a;
15
17
  let savedSearchFilterState = null;
16
18
  const defaultSavedSearchKey = findKey(savedSearchesObj, { defaultChecked: true });
17
19
  if (defaultSavedSearchKey) {
18
20
  const { filterState: filterStateSaved, queryString, type, sortState, } = savedSearchesObj[defaultSavedSearchKey];
19
21
  savedSearchFilterState = Object.assign(Object.assign({}, filterState), { sortInfo: sortState, filterQueryInfo: Object.assign(Object.assign({}, filterState.filterQueryInfo), { queryString, type }), filterInfo: Object.assign(Object.assign({}, initialCaseFilterState.filterInfo), filterStateSaved) });
20
22
  }
21
- const defaultGroup = (caseGroups.data || []).find((group) => group.isDefault);
22
- const [urlQuery] = (queryFromUrl || '').split(/ orderBy /i);
23
+ const defaultGroupFilter = getDefaultGroupFilterSelection(caseGroups.data, (_a = globalMetadataState.loggedInUser) === null || _a === void 0 ? void 0 : _a.data);
24
+ const applyDefaultGroup = shouldApplyDefaultGroupFilter(queryFromUrl, hydraUserPreferences.data);
23
25
  /**
24
26
  When user lands on page for the first time:
25
27
  If we have any query in url(for example redirect from dashboard), we apply the query, if not
@@ -27,12 +29,12 @@ export function useFilterStateOnLoad() {
27
29
  check if user has default group the apply group filter,
28
30
  non of the above, we apply default search values
29
31
  */
30
- let defaultFilterState = urlQuery && urlQuery !== 'undefined'
32
+ let defaultFilterState = decodeCaseListUrlFilterQuery(queryFromUrl)
31
33
  ? createFilterStateFromUrlQuery(queryFromUrl, globalMetadataState, pageSizeFromUrl, currentPageFromUrl, searchType)
32
34
  : defaultSavedSearchKey
33
35
  ? savedSearchFilterState
34
- : !!(defaultGroup === null || defaultGroup === void 0 ? void 0 : defaultGroup.name)
35
- ? Object.assign(Object.assign({}, filterState), { filterInfo: Object.assign(Object.assign({}, filterState.filterInfo), { [SolrKeys.group]: [{ key: defaultGroup.groupNum, value: defaultGroup.name }] }) }) : filterState;
36
+ : applyDefaultGroup && defaultGroupFilter.length > 0
37
+ ? Object.assign(Object.assign({}, filterState), { filterInfo: Object.assign(Object.assign({}, filterState.filterInfo), { [SolrKeys.group]: defaultGroupFilter }) }) : filterState;
36
38
  return {
37
39
  initFilterState: defaultFilterState,
38
40
  defaultSearchName: defaultSavedSearchKey && !queryFromUrl ? defaultSavedSearchKey : '',
@@ -0,0 +1,12 @@
1
+ import { ICaseGroup } from '@cee-eng/hydrajs/@types/api/public/caseGroups';
2
+ import { IPreference } from '@cee-eng/hydrajs/@types/models/general';
3
+ import type { ILoggedInSsoContact } from '@rh-support/utils';
4
+ export declare function decodeCaseListUrlFilterQuery(queryFromUrl?: string): string;
5
+ export declare function hasDefaultSavedSearch(hydraUserPreferences?: IPreference[]): boolean;
6
+ /** Default group filter applies only when URL and saved-search do not own the filter state. */
7
+ export declare function shouldApplyDefaultGroupFilter(queryFromUrl?: string, hydraUserPreferences?: IPreference[]): boolean;
8
+ export declare function getDefaultGroupFilterSelection(caseGroups: ICaseGroup[] | undefined, loggedInUser?: ILoggedInSsoContact): Array<{
9
+ key: string;
10
+ value: string;
11
+ }>;
12
+ //# sourceMappingURL=caseGroupDefaultFilterUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caseGroupDefaultFilterUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseGroupDefaultFilterUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAErE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAM7D,wBAAgB,4BAA4B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAa1E;AAED,wBAAgB,qBAAqB,CAAC,oBAAoB,GAAE,WAAW,EAAO,GAAG,OAAO,CAOvF;AAED,+FAA+F;AAC/F,wBAAgB,6BAA6B,CACzC,YAAY,CAAC,EAAE,MAAM,EACrB,oBAAoB,GAAE,WAAW,EAAO,GACzC,OAAO,CAMT;AAED,wBAAgB,8BAA8B,CAC1C,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS,EACpC,YAAY,CAAC,EAAE,mBAAmB,GACnC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAGvC"}
@@ -0,0 +1,34 @@
1
+ import { UserPreferencesKeys } from '@rh-support/react-context';
2
+ import find from 'lodash/find';
3
+ import findKey from 'lodash/findKey';
4
+ import { buildDefaultGroupFilterSelection, getDefaultCaseGroupForFilter } from './caseGroupDefaultUtils';
5
+ export function decodeCaseListUrlFilterQuery(queryFromUrl) {
6
+ if (!queryFromUrl || queryFromUrl === 'undefined') {
7
+ return '';
8
+ }
9
+ try {
10
+ const decoded = decodeURIComponent(queryFromUrl);
11
+ const [urlQuery] = decoded.split(/ orderBy /i);
12
+ return urlQuery && urlQuery !== 'undefined' ? urlQuery.trim() : '';
13
+ }
14
+ catch (_a) {
15
+ const [urlQuery] = queryFromUrl.split(/ orderBy /i);
16
+ return urlQuery && urlQuery !== 'undefined' ? urlQuery.trim() : '';
17
+ }
18
+ }
19
+ export function hasDefaultSavedSearch(hydraUserPreferences = []) {
20
+ const savedSearchPreference = find(hydraUserPreferences, (pref) => pref.key === UserPreferencesKeys.caseSavedSearchFilters);
21
+ const savedSearchesObj = (savedSearchPreference === null || savedSearchPreference === void 0 ? void 0 : savedSearchPreference.value) ? JSON.parse(savedSearchPreference.value) : {};
22
+ return Boolean(findKey(savedSearchesObj, { defaultChecked: true }));
23
+ }
24
+ /** Default group filter applies only when URL and saved-search do not own the filter state. */
25
+ export function shouldApplyDefaultGroupFilter(queryFromUrl, hydraUserPreferences = []) {
26
+ if (decodeCaseListUrlFilterQuery(queryFromUrl)) {
27
+ return false;
28
+ }
29
+ return !hasDefaultSavedSearch(hydraUserPreferences);
30
+ }
31
+ export function getDefaultGroupFilterSelection(caseGroups, loggedInUser) {
32
+ const defaultGroup = getDefaultCaseGroupForFilter(caseGroups, loggedInUser);
33
+ return buildDefaultGroupFilterSelection(defaultGroup);
34
+ }
@@ -0,0 +1,10 @@
1
+ import { ICaseGroup } from '@cee-eng/hydrajs/@types/api/public/caseGroups';
2
+ import type { ILoggedInSsoContact } from '@rh-support/utils';
3
+ /** Resolves the user's default case group from contact preference, falling back to isDefault flags. */
4
+ export declare function getDefaultCaseGroupForFilter(caseGroups: ICaseGroup[] | undefined, loggedInUser?: ILoggedInSsoContact): ICaseGroup | undefined;
5
+ /** Builds the group filter chip/select values for a default case group. */
6
+ export declare function buildDefaultGroupFilterSelection(defaultGroup?: ICaseGroup): Array<{
7
+ key: string;
8
+ value: string;
9
+ }>;
10
+ //# sourceMappingURL=caseGroupDefaultUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caseGroupDefaultUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseGroupDefaultUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,uGAAuG;AACvG,wBAAgB,4BAA4B,CACxC,UAAU,EAAE,UAAU,EAAE,GAAG,SAAS,EACpC,YAAY,CAAC,EAAE,mBAAmB,GACnC,UAAU,GAAG,SAAS,CAYxB;AAED,2EAA2E;AAC3E,wBAAgB,gCAAgC,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAMjH"}
@@ -0,0 +1,20 @@
1
+ /** Resolves the user's default case group from contact preference, falling back to isDefault flags. */
2
+ export function getDefaultCaseGroupForFilter(caseGroups, loggedInUser) {
3
+ var _a;
4
+ const groups = caseGroups || [];
5
+ const defaultCaseGroupId = (_a = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.defaultCaseGroup) !== null && _a !== void 0 ? _a : null;
6
+ if (defaultCaseGroupId && defaultCaseGroupId !== '-1') {
7
+ const match = groups.find((group) => group.groupNum === defaultCaseGroupId);
8
+ if (match) {
9
+ return match;
10
+ }
11
+ }
12
+ return groups.find((group) => group.isDefault);
13
+ }
14
+ /** Builds the group filter chip/select values for a default case group. */
15
+ export function buildDefaultGroupFilterSelection(defaultGroup) {
16
+ if (!(defaultGroup === null || defaultGroup === void 0 ? void 0 : defaultGroup.name)) {
17
+ return [];
18
+ }
19
+ return [{ key: defaultGroup.groupNum, value: defaultGroup.name }];
20
+ }
@@ -14,7 +14,7 @@ export interface IGraphQLCaseListResponse {
14
14
  endCursor: string | undefined;
15
15
  }
16
16
  export declare function clearPageCursors(): void;
17
- export declare function getCaseListFromGraphQL(filterState: ICaseListFilterState, apolloClient: ApolloClient, limitOverride?: number, signal?: AbortSignal, selectedCaseNumbers?: string[]): Promise<IGraphQLCaseListResponse>;
17
+ export declare function getCaseListFromGraphQL(filterState: ICaseListFilterState, apolloClient: ApolloClient, limitOverride?: number, signal?: AbortSignal, selectedCaseNumbers?: string[], includeSecureSupportCases?: boolean): Promise<IGraphQLCaseListResponse>;
18
18
  export interface ILoadMoreResult {
19
19
  docs: ICaseListItem[];
20
20
  hasNextPage: boolean;
@@ -24,5 +24,5 @@ export interface ILoadMoreResult {
24
24
  * Fetches the next page of cases for infinite scroll.
25
25
  * Uses the provided `afterCursor` instead of the page-based cursor store.
26
26
  */
27
- export declare function loadMoreCases(filterState: ICaseListFilterState, apolloClient: ApolloClient, afterCursor: string, signal?: AbortSignal): Promise<ILoadMoreResult>;
27
+ export declare function loadMoreCases(filterState: ICaseListFilterState, apolloClient: ApolloClient, afterCursor: string, signal?: AbortSignal, includeSecureSupportCases?: boolean): Promise<ILoadMoreResult>;
28
28
  //# sourceMappingURL=caseListGraphQLUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"caseListGraphQLUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseListGraphQLUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAKH,aAAa,EAEhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAkB,MAAM,+CAA+C,CAAC;AASrG,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,EAAE;QACd,QAAQ,EAAE;YACN,IAAI,EAAE,aAAa,EAAE,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACjB,CAAC;KACL,CAAC;IACF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAwDD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAkFD,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,EACpB,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,wBAAwB,CAAC,CAwFnC;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,eAAe,CAAC,CA+C1B"}
1
+ {"version":3,"file":"caseListGraphQLUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/caseListGraphQLUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAKH,aAAa,EAEhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAkB,MAAM,+CAA+C,CAAC;AASrG,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,EAAE;QACd,QAAQ,EAAE;YACN,IAAI,EAAE,aAAa,EAAE,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACjB,CAAC;KACL,CAAC;IACF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAwDD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAkFD,wBAAsB,sBAAsB,CACxC,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,WAAW,EACpB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAC9B,yBAAyB,UAAQ,GAClC,OAAO,CAAC,wBAAwB,CAAC,CA6FnC;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,EACpB,yBAAyB,UAAQ,GAClC,OAAO,CAAC,eAAe,CAAC,CAoD1B"}
@@ -148,8 +148,8 @@ function resolveVersionProductIds(filterState, apolloClient) {
148
148
  }
149
149
  });
150
150
  }
151
- export function getCaseListFromGraphQL(filterState, apolloClient, limitOverride, signal, selectedCaseNumbers) {
152
- return __awaiter(this, void 0, void 0, function* () {
151
+ export function getCaseListFromGraphQL(filterState_1, apolloClient_1, limitOverride_1, signal_1, selectedCaseNumbers_1) {
152
+ return __awaiter(this, arguments, void 0, function* (filterState, apolloClient, limitOverride, signal, selectedCaseNumbers, includeSecureSupportCases = false) {
153
153
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
154
154
  try {
155
155
  yield resolveVersionProductIds(filterState, apolloClient);
@@ -160,7 +160,7 @@ export function getCaseListFromGraphQL(filterState, apolloClient, limitOverride,
160
160
  const ownerUserIds = yield resolveOwnerIds(federationIdsToResolve, apolloClient);
161
161
  resolvedUserIds = { ownerUserIds };
162
162
  }
163
- const variables = yield createGraphQLVariablesFromFilterState(filterState, apolloClient, resolvedUserIds);
163
+ const variables = yield createGraphQLVariablesFromFilterState(filterState, apolloClient, resolvedUserIds, includeSecureSupportCases);
164
164
  if (limitOverride) {
165
165
  variables.first = limitOverride;
166
166
  }
@@ -237,8 +237,8 @@ export function getCaseListFromGraphQL(filterState, apolloClient, limitOverride,
237
237
  * Fetches the next page of cases for infinite scroll.
238
238
  * Uses the provided `afterCursor` instead of the page-based cursor store.
239
239
  */
240
- export function loadMoreCases(filterState, apolloClient, afterCursor, signal) {
241
- return __awaiter(this, void 0, void 0, function* () {
240
+ export function loadMoreCases(filterState_1, apolloClient_1, afterCursor_1, signal_1) {
241
+ return __awaiter(this, arguments, void 0, function* (filterState, apolloClient, afterCursor, signal, includeSecureSupportCases = false) {
242
242
  var _a, _b, _c, _d, _e, _f, _g;
243
243
  try {
244
244
  yield resolveVersionProductIds(filterState, apolloClient);
@@ -249,7 +249,7 @@ export function loadMoreCases(filterState, apolloClient, afterCursor, signal) {
249
249
  const ownerUserIds = yield resolveOwnerIds(federationIdsToResolve, apolloClient);
250
250
  resolvedUserIds = { ownerUserIds };
251
251
  }
252
- const variables = yield createGraphQLVariablesFromFilterState(filterState, apolloClient, resolvedUserIds);
252
+ const variables = yield createGraphQLVariablesFromFilterState(filterState, apolloClient, resolvedUserIds, includeSecureSupportCases);
253
253
  variables.first = 20;
254
254
  variables.after = afterCursor;
255
255
  const { data } = yield apolloClient.query({
@@ -11,5 +11,5 @@ export interface IResolvedUserIds {
11
11
  /** Pre-resolved OwnerId values (RedHatSupportUser or RedHatSupportGroup). */
12
12
  ownerUserIds?: string[];
13
13
  }
14
- export declare function createGraphQLVariablesFromFilterState(filterState: ICaseListFilterState, apolloClient: ApolloClient, resolvedUserIds?: IResolvedUserIds): Promise<IGraphQLCaseListVariables>;
14
+ export declare function createGraphQLVariablesFromFilterState(filterState: ICaseListFilterState, apolloClient: ApolloClient, resolvedUserIds?: IResolvedUserIds, includeSecureSupportCases?: boolean): Promise<IGraphQLCaseListVariables>;
15
15
  //# sourceMappingURL=caseListVariablesBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"caseListVariablesBuilder.d.ts","sourceRoot":"","sources":["../../../src/utils/caseListVariablesBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAcnD,OAAO,EAEH,oBAAoB,EAEvB,MAAM,+CAA+C,CAAC;AAMvD,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAM1F;AAED,MAAM,WAAW,yBAAyB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC7B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAqaD,wBAAsB,qCAAqC,CACvD,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,eAAe,CAAC,EAAE,gBAAgB,GACnC,OAAO,CAAC,yBAAyB,CAAC,CAuIpC"}
1
+ {"version":3,"file":"caseListVariablesBuilder.d.ts","sourceRoot":"","sources":["../../../src/utils/caseListVariablesBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAcnD,OAAO,EAEH,oBAAoB,EAEvB,MAAM,+CAA+C,CAAC;AAMvD,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAM1F;AAED,MAAM,WAAW,yBAAyB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC7B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAqaD,wBAAsB,qCAAqC,CACvD,WAAW,EAAE,oBAAoB,EACjC,YAAY,EAAE,YAAY,EAC1B,eAAe,CAAC,EAAE,gBAAgB,EAClC,yBAAyB,UAAQ,GAClC,OAAO,CAAC,yBAAyB,CAAC,CAuIpC"}
@@ -393,14 +393,14 @@ function resolveOwnerIdsBySearchTerms(searchTerms, apolloClient) {
393
393
  return [...new Set([...userIds, ...groupIds])];
394
394
  });
395
395
  }
396
- export function createGraphQLVariablesFromFilterState(filterState, apolloClient, resolvedUserIds) {
397
- return __awaiter(this, void 0, void 0, function* () {
396
+ export function createGraphQLVariablesFromFilterState(filterState_1, apolloClient_1, resolvedUserIds_1) {
397
+ return __awaiter(this, arguments, void 0, function* (filterState, apolloClient, resolvedUserIds, includeSecureSupportCases = false) {
398
398
  var _a;
399
399
  const { paginationInfo, sortInfo, filterInfo, filterQueryInfo } = filterState;
400
400
  const first = (paginationInfo === null || paginationInfo === void 0 ? void 0 : paginationInfo.pageSize) || 10;
401
401
  const orderBy = buildOrderByFromSortInfo(sortInfo);
402
402
  const andConditions = [];
403
- andConditions.push(buildAccessRestrictionExclusionFilter());
403
+ andConditions.push(buildAccessRestrictionExclusionFilter(includeSecureSupportCases));
404
404
  if (filterInfo) {
405
405
  const statusFilter = buildStatusFilter(filterInfo[SolrKeys.status]);
406
406
  if (statusFilter)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/cases",
3
- "version": "2.6.215",
3
+ "version": "2.6.217",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -38,11 +38,11 @@
38
38
  "@patternfly/patternfly": "6.2.1",
39
39
  "@patternfly/react-core": "6.2.1",
40
40
  "@patternfly/react-table": "6.2.1",
41
- "@rh-support/components": "2.5.210",
42
- "@rh-support/react-context": "2.5.305",
41
+ "@rh-support/components": "2.5.212",
42
+ "@rh-support/react-context": "2.5.307",
43
43
  "@rh-support/types": "2.0.26",
44
- "@rh-support/user-permissions": "2.5.157",
45
- "@rh-support/utils": "2.5.138",
44
+ "@rh-support/user-permissions": "2.5.159",
45
+ "@rh-support/utils": "2.5.140",
46
46
  "localforage": "^1.10.0",
47
47
  "lodash": "^4.17.21",
48
48
  "pegjs": "^0.10.0",
@@ -94,5 +94,5 @@
94
94
  "defaults and supports es6-module",
95
95
  "maintained node versions"
96
96
  ],
97
- "gitHead": "d8c5155f1ffe40e41ea5bb448df3b0418cc0ea0c"
97
+ "gitHead": "17800786cdf0c0d37d25324bf52c1a2a674f19fe"
98
98
  }