From 236a9b6290d5327205c51599d9c412d7b1a2eca2 Mon Sep 17 00:00:00 2001 From: jennyhliu <34660846+jennyhliu@users.noreply.github.com> Date: Mon, 4 Oct 2021 16:48:57 -0400 Subject: [PATCH 1/7] CUMULUS-2462: Implement Reingest and Bulk Reingest to select one workflow from multiple executions (#986) * CUMULUS-2462:Add granules executions action, add workflow selection to reingest/bulkreingest * update reingest style * bulk reingest work * reingest granule action * fix unit tests * fix reingest View Granule after confirmation * change log * fix CollectionGranules pass selectedGranules and selected may not in the granule lists for cypress tests * @cumulus/api@9.3.1-alpha.0 * add style class * add granule multi executions data * update changelog change reingest modal size back * reingest from single granule page dropdown list * fix broken execution spec * add cypress test reingest batch bulk reingest * add cypress test reingest individule granulue * update executions_list test and remove executions-list.json * remove recipe-ingest.js * fix cypress granule details page loading * fix granule cypress loading * update README * fix dependency array * change the padding back, bulk granule last button not showing * clear selected workflow * Apply suggestions from code review Co-authored-by: Matt Savoie * rename GRANULES_WORKFLOWS to WORKFLOWS_FROM_GRANULES * remove confusing function commit * remove dispatch dependency, pass object payload getGranulesWorkflows * request vs requests * remove reingestText * update listBulkActions comment, import BulkGranule * integration test check dropdown selected value * update _form.scss to make dropdown visible for bulkgranules Co-authored-by: Matt Savoie --- CHANGELOG.md | 6 + README.md | 6 +- app/src/css/modules/_modals.scss | 7 +- app/src/js/actions/index.js | 19 +- app/src/js/actions/types.js | 7 + .../components/AsyncCommands/AsyncCommands.js | 2 +- .../BatchAsyncCommands/BatchAsyncCommands.js | 21 +- app/src/js/components/Collections/granules.js | 10 +- app/src/js/components/Collections/overview.js | 3 +- app/src/js/components/Form/_form.scss | 8 + .../components/Granules/bulk-granule-modal.js | 103 +++++- app/src/js/components/Granules/bulk.js | 18 +- app/src/js/components/Granules/granule.js | 66 +++- app/src/js/components/Granules/list.js | 3 +- app/src/js/components/Granules/overview.js | 3 +- .../js/components/Granules/recipe-ingest.js | 168 ---------- .../js/components/ListActions/ListActions.js | 7 +- .../BatchReingestConfirmContent.js | 82 ++++- app/src/js/components/Section/section.js | 2 +- app/src/js/reducers/granules-executions.js | 37 +++ app/src/js/reducers/index.js | 2 + app/src/js/utils/dropdown-utils.js | 2 +- app/src/js/utils/format.js | 6 - app/src/js/utils/table-config/granules.js | 19 +- cypress/fixtures/executions-list.json | 292 ------------------ cypress/fixtures/seeds/executionsFixture.json | 67 +++- .../seeds/granulesExecutionsFixture.json | 27 ++ cypress/integration/bulk_granules_spec.js | 7 + cypress/integration/executions_spec.js | 26 +- cypress/integration/granules_spec.js | 25 ++ cypress/integration/main_page_spec.js | 2 +- cypress/plugins/seedEverything.js | 11 + .../BatchReingestConfirmContent.js | 67 ++-- .../components/granules/bulk-granule-modal.js | 2 +- 34 files changed, 556 insertions(+), 577 deletions(-) delete mode 100644 app/src/js/components/Granules/recipe-ingest.js create mode 100644 app/src/js/reducers/granules-executions.js delete mode 100644 cypress/fixtures/executions-list.json create mode 100644 cypress/fixtures/seeds/granulesExecutionsFixture.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 00a7f51c4..459e222e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Added + +- **CUMULUS-2462** + - Reingest a granule from granule details page is updated to select a workflow execution arn for reingest. + - Batch Reingest and Bulk Reingest Actions are updated to select the workflowName for reingest. + ## [v7.0.0] ## Breaking Changes diff --git a/README.md b/README.md index 8b9e672f8..b8bdb5896 100644 --- a/README.md +++ b/README.md @@ -114,9 +114,11 @@ The dashboard uses node v12.18.0. To build/run the dashboard on your local machi We use npm for local package management, to install the requirements: ```bash $ nvm use - $ npm install + $ npm ci ``` +Use `$ npm install` when package.json is updated. + To build a dashboard bundle[1](#bundlefootnote): ```bash @@ -240,7 +242,7 @@ These are started and stopped with the commands: $ npm run stop-localstack ``` -After these containers are running, you can start a cumulus API locally in a terminal window `npm run serve-api`, the dashboard in another window. `[HIDE_PDR=false SHOW_DISTRIBUTION_API_METRICS=true ESROOT=http://example.com APIROOT=http://localhost:5001] npm run serve` and finally cypress in a third window. `npm run cypress`. +After these containers are running, you can start a cumulus API locally in a terminal window `npm run serve-api`, the dashboard in another window. `[HIDE_PDR=false SHOW_DISTRIBUTION_API_METRICS=true ESROOT=http://example.com ES_CLOUDWATCH_TARGET_PATTERN=cwpattern ES_DISTRIBUTION_TARGET_PATTERN=distpattern APIROOT=http://localhost:5001] npm run serve` and finally cypress in a third window. `npm run cypress`. Once the Docker app is running, If you would like to see sample data you can seed the database. This will load the same sample data into the application that is used during cypress testing. ```bash diff --git a/app/src/css/modules/_modals.scss b/app/src/css/modules/_modals.scss index 693672b25..c7c835d0a 100644 --- a/app/src/css/modules/_modals.scss +++ b/app/src/css/modules/_modals.scss @@ -173,6 +173,11 @@ } } + .batch_granules--reingest, + .granule--reingest { + text-align: left; + } + &.bulk_granules { &.modal-dialog { overflow-y: initial !important; @@ -184,8 +189,8 @@ .modal-body { height: 100px; - overflow-y: auto; margin-left: 10px; + overflow-y: auto; text-align: left; } diff --git a/app/src/js/actions/index.js b/app/src/js/actions/index.js index 54ee5ce51..a363f2e10 100644 --- a/app/src/js/actions/index.js +++ b/app/src/js/actions/index.js @@ -291,14 +291,15 @@ export const applyRecoveryWorkflowToGranule = (granuleId) => (dispatch) => dispa error })); -export const reingestGranule = (granuleId) => ({ +export const reingestGranule = (granuleId, meta) => ({ [CALL_API]: { type: types.GRANULE_REINGEST, method: 'PUT', id: granuleId, path: `granules/${granuleId}`, data: { - action: 'reingest' + action: 'reingest', + ...meta, } } }); @@ -781,6 +782,20 @@ export const clearExecutionsFilter = (paramKey) => ({ type: types.CLEAR_EXECUTIO export const searchExecutions = (infix) => ({ type: types.SEARCH_EXECUTIONS, infix }); export const clearExecutionsSearch = () => ({ type: types.CLEAR_EXECUTIONS_SEARCH }); +export const getGranulesWorkflows = (payload) => ({ + [CALL_API]: { + type: types.WORKFLOWS_FROM_GRANULES, + method: 'POST', + path: 'executions/workflows-by-granules', + params: { limit: 50 }, + data: payload + } +}); + +export const clearGranulesWorkflows = () => ({ type: types.CLEAR_WORKFLOWS_FROM_GRANULES }); + +export const getGranulesWorkflowsClearError = () => ({ type: types.WORKFLOWS_FROM_GRANULES_CLEAR_ERROR }); + export const listOperations = (options) => (dispatch, getState) => { const timeFilters = fetchCurrentTimeFilters(getState().datepicker); return dispatch({ diff --git a/app/src/js/actions/types.js b/app/src/js/actions/types.js index 706aa648d..1f5cc86d5 100644 --- a/app/src/js/actions/types.js +++ b/app/src/js/actions/types.js @@ -182,6 +182,13 @@ export const EXECUTIONS_LIST = 'EXECUTIONS_LIST'; export const EXECUTIONS_LIST_INFLIGHT = 'EXECUTIONS_INFLIGHT'; export const EXECUTIONS_LIST_ERROR = 'EXECUTIONS_LIST_ERROR'; +// Granules executions workflows +export const WORKFLOWS_FROM_GRANULES = 'WORKFLOWS_FROM_GRANULES'; +export const WORKFLOWS_FROM_GRANULES_INFLIGHT = 'WORKFLOWS_FROM_GRANULES_INFLIGHT'; +export const WORKFLOWS_FROM_GRANULES_ERROR = 'WORKFLOWS_FROM_GRANULES_ERROR'; +export const WORKFLOWS_FROM_GRANULES_CLEAR_ERROR = 'WORKFLOWS_FROM_GRANULES_CLEAR_ERROR'; +export const CLEAR_WORKFLOWS_FROM_GRANULES = 'CLEAR_WORKFLOWS_FROM_GRANULES'; + // Operations export const OPERATIONS = 'OPERATIONS'; export const OPERATIONS_INFLIGHT = 'OPERATIONS_INFLIGHT'; diff --git a/app/src/js/components/AsyncCommands/AsyncCommands.js b/app/src/js/components/AsyncCommands/AsyncCommands.js index 2550e1516..c2f967c48 100644 --- a/app/src/js/components/AsyncCommands/AsyncCommands.js +++ b/app/src/js/components/AsyncCommands/AsyncCommands.js @@ -138,7 +138,7 @@ AsyncCommand.propTypes = { disabled: PropTypes.bool, element: PropTypes.string, confirmAction: PropTypes.bool, - confirmText: PropTypes.string, + confirmText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), confirmOptions: PropTypes.array, postActionText: PropTypes.string }; diff --git a/app/src/js/components/BatchAsyncCommands/BatchAsyncCommands.js b/app/src/js/components/BatchAsyncCommands/BatchAsyncCommands.js index 701478b1f..a1bd50a8a 100644 --- a/app/src/js/components/BatchAsyncCommands/BatchAsyncCommands.js +++ b/app/src/js/components/BatchAsyncCommands/BatchAsyncCommands.js @@ -43,8 +43,10 @@ export class BatchCommand extends React.Component { status: null, modalOptions: null, errorMessage: null, + meta: {}, }; this.isRunning = false; + this.buildId = this.buildId.bind(this); this.confirm = this.confirm.bind(this); this.cancel = this.cancel.bind(this); this.start = this.start.bind(this); @@ -55,10 +57,20 @@ export class BatchCommand extends React.Component { this.isInflight = this.isInflight.bind(this); this.handleClick = this.handleClick.bind(this); this.closeModal = this.closeModal.bind(this); + this.updateMeta = this.updateMeta.bind(this); + } + + buildId(item) { + return (typeof item === 'string') ? item : item.granuleId; + } + + updateMeta(meta) { + this.setState({ meta: { ...this.state.meta, ...meta } }); } closeModal() { this.setState({ activeModal: false }); + this.setState({ meta: {} }); } componentDidUpdate() { @@ -112,7 +124,7 @@ export class BatchCommand extends React.Component { if (!Array.isArray(selected) || !selected.length || this.isInflight()) { return false; } const q = queue(CONCURRENCY); for (let i = 0; i < selected.length; i += 1) { - q.add(this.initAction, selected[i]); + q.add(this.initAction, this.buildId(selected[i])); } q.done(this.onComplete); } @@ -120,10 +132,10 @@ export class BatchCommand extends React.Component { // save a reference to the callback in state, then init the action initAction(id, callback) { const { dispatch, action } = this.props; - const { callbacks } = this.state; + const { callbacks, meta } = this.state; callbacks[id] = callback; this.setState({ callbacks }); - return dispatch(action(id)); + return dispatch(action(id, meta)); } // immediately change the UI to show either success or error @@ -173,7 +185,7 @@ export class BatchCommand extends React.Component { if (results && results.length && typeof onSuccess === 'function') { onSuccess(results, errorMessage); } if (typeof clearError === 'function') { - selected.forEach((id) => dispatch(clearError(id))); + selected.forEach((item) => dispatch(clearError(this.buildId(item)))); } this.setState({ activeModal: false, completed: 0, errorMessage: null, results: null, status: null }); @@ -187,6 +199,7 @@ export class BatchCommand extends React.Component { const { selected, history, getModalOptions } = this.props; if (typeof getModalOptions === 'function') { const modalOptions = getModalOptions({ + onChange: this.updateMeta, selected, history, closeModal: this.closeModal, diff --git a/app/src/js/components/Collections/granules.js b/app/src/js/components/Collections/granules.js index b3c6b6290..346f9d7d0 100644 --- a/app/src/js/components/Collections/granules.js +++ b/app/src/js/components/Collections/granules.js @@ -51,6 +51,7 @@ const CollectionGranules = ({ const view = getView(); const [workflow, setWorkflow] = useState(workflowOptions[0]); const [workflowMeta, setWorkflowMeta] = useState(defaultWorkflowMeta); + const [selected, setSelected] = useState([]); const query = generateQuery(); const { dropdowns } = providers; @@ -102,7 +103,9 @@ const CollectionGranules = ({ }, }; - return bulkActions(granules, actionConfig); + const selectedGranules = selected + .map((id) => granules.list.data.find((g) => id === g.granuleId)).filter(Boolean); + return bulkActions(granules, actionConfig, selectedGranules); } function selectWorkflow(_selector, selectedWorkflow) { @@ -128,6 +131,10 @@ const CollectionGranules = ({ ]; } + function updateSelection(selection) { + setSelected(selection); + } + return (
@@ -159,6 +166,7 @@ const CollectionGranules = ({ tableColumns={tableColumns} filterAction={filterGranules} filterClear={clearGranulesFilter} + onSelect={updateSelection} tableId="granules" > granules.list.data.find((g) => id === g.granuleId)); + const selectedGranules = selected + .map((id) => granules.list.data.find((g) => id === g.granuleId)).filter(Boolean); let actions = bulkActions(granules, config, selectedGranules); if (config.enableRecovery) { actions = actions.concat(recoverAction(granules, config)); diff --git a/app/src/js/components/Form/_form.scss b/app/src/js/components/Form/_form.scss index b9676d6d7..8b85c9926 100644 --- a/app/src/js/components/Form/_form.scss +++ b/app/src/js/components/Form/_form.scss @@ -242,6 +242,14 @@ select option{ } } +.form__bulkgranules { + min-height: 1700px; +} + +.form__dropdown { + overflow: visible; +} + .form-group__element { margin-right: 1em; } diff --git a/app/src/js/components/Granules/bulk-granule-modal.js b/app/src/js/components/Granules/bulk-granule-modal.js index 7a4336d62..99939703f 100644 --- a/app/src/js/components/Granules/bulk-granule-modal.js +++ b/app/src/js/components/Granules/bulk-granule-modal.js @@ -1,9 +1,18 @@ -import React, { useState } from 'react'; +import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { get } from 'object-path'; import _config from '../../config'; import DefaultModal from '../Modal/modal'; +import ErrorReport from '../Errors/report'; +import SimpleDropdown from '../DropDown/simple-dropdown'; import TextArea from '../TextAreaForm/text-area'; +import { + clearGranulesWorkflows, + getGranulesWorkflows, + getGranulesWorkflowsClearError +} from '../../actions'; const { kibanaRoot } = _config; @@ -18,17 +27,21 @@ const BulkGranuleModal = ({ defaultQuery, dispatch, error, + granulesExecutions, handleSuccessConfirm, inflight, onCancel, + queryWorkflowOptions = false, requestId, showModal, selected = [], + selectWorkflow = false, success, successMessage, - title + title, }) => { const [query, setQuery] = useState(JSON.stringify(defaultQuery, null, 2)); + const [workflow, setWorkflow] = useState(null); const [errorState, setErrorState] = useState(); let buttonText; @@ -48,6 +61,8 @@ const BulkGranuleModal = ({ if (!inflight) { try { json = JSON.parse(query); + const granuleIds = json.ids.map((granule) => granule.granuleId); + json.ids = granuleIds; } catch (jsonError) { return setErrorState('Syntax error in JSON'); } @@ -55,18 +70,53 @@ const BulkGranuleModal = ({ } } + function queryGranulesWorkflows(queryParams) { + const { ids, index, query: esQuery } = queryParams; + if ((index && esQuery) || ids.length > 0) { + const granuleWorkflowsQuery = { ...queryParams, granules: ids }; + delete granuleWorkflowsQuery[ids]; + dispatch(getGranulesWorkflows(granuleWorkflowsQuery)); + } + } + function onChange (id, value) { - if (errorState) { - try { - JSON.parse(value); + setQuery(value); + try { + const queryParams = JSON.parse(value); + if (errorState) { setErrorState(); - } catch (_) { - // empty } + if (queryWorkflowOptions) { + queryGranulesWorkflows(queryParams); + } + } catch (_) { + // empty } - setQuery(value); } + function handleSelectWorkflow(selector, selectedWorkflow) { + setWorkflow(selectedWorkflow); + setQuery(JSON.stringify({ workflowName: selectedWorkflow, ...JSON.parse(query) }, null, 2)); + } + + useEffect(() => { + const queryParams = { ...JSON.parse(query), ids: selected }; + setQuery(JSON.stringify(queryParams, null, 2)); + + if (showModal && queryWorkflowOptions) { + queryGranulesWorkflows(queryParams); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [dispatch, showModal, queryWorkflowOptions, JSON.stringify(selected)]); + + useEffect(() => { + if (!showModal && queryWorkflowOptions) { + dispatch(clearGranulesWorkflows()); + dispatch(getGranulesWorkflowsClearError()); + setWorkflow(null); + } + }, [dispatch, showModal, queryWorkflowOptions]); + return (

Selected granules:

-

[{selected.map((selection) => `"${selection}"`).join(', ')}]

+

[{selected.map((selection) => `"${selection.granuleId}"`).join(', ')}]

}
@@ -123,6 +173,25 @@ const BulkGranuleModal = ({ maxLines={200} />} + {selectWorkflow && + <> +

Then select workflow to rerun for all the selected granules.

+ {get(granulesExecutions, 'workflows.error') && + } +
+ +
+ + }
} @@ -140,15 +209,27 @@ BulkGranuleModal.propTypes = { defaultQuery: PropTypes.object, dispatch: PropTypes.func, error: PropTypes.string, + granulesExecutions: PropTypes.object, handleSuccessConfirm: PropTypes.func, inflight: PropTypes.bool, onCancel: PropTypes.func, + // whether query workflow options for the selected granule + queryWorkflowOptions: PropTypes.bool, requestId: PropTypes.string, - selected: PropTypes.array, + selected: PropTypes.arrayOf(PropTypes.shape({ + granuleId: PropTypes.string, + collectionId: PropTypes.string, + })), + // whether select a workflow from dropdown + selectWorkflow: PropTypes.bool, showModal: PropTypes.bool, success: PropTypes.bool, successMessage: PropTypes.string, title: PropTypes.string }; -export default BulkGranuleModal; +export { BulkGranuleModal }; + +export default connect((state) => ({ + granulesExecutions: state.granulesExecutions, +}))(BulkGranuleModal); diff --git a/app/src/js/components/Granules/bulk.js b/app/src/js/components/Granules/bulk.js index 5389c4d43..8ef6e6e2c 100644 --- a/app/src/js/components/Granules/bulk.js +++ b/app/src/js/components/Granules/bulk.js @@ -314,17 +314,21 @@ const BulkGranule = ({ handleSuccessConfirm={handleSuccessConfirm} inflight={isStatusInflight(bulkReingestRequestStatus)} onCancel={hideBulkReingestModal} + queryWorkflowOptions={true} requestId={bulkReingestRequestId} selected={selected} + selectWorkflow={true} showModal={showBulkReingestModal} success={isStatusSuccess(bulkReingestRequestStatus)} successMessage={'Your request to process a bulk granule reingest operation has been submitted.'} title={'Bulk Granule Reingest'} >

To run and complete your bulk reingest task:

-

- In the box below, add either an array of granule Ids or an elasticsearch query and index.
-

+
    +
  1. In the box below, add either an array of granule Ids or an elasticsearch query and index.
  2. +
  3. Then select workflow to rerun for all the selected granules. The workflows listed are the + intersection of the selected granules' workflows.
  4. +
{config.enableRecovery && To run and complete your bulk granule task:
  1. In the box below, enter the workflowName.
  2. -
  3. Then add either an array of Granule IDs or an Elasticsearch query and index (see below).
  4. +
  5. Then add either an array of granule Ids or an Elasticsearch query and + index (see below).
} @@ -367,7 +372,10 @@ BulkGranule.propTypes = { className: PropTypes.string, element: PropTypes.string, granules: PropTypes.object, - selected: PropTypes.array + selected: PropTypes.arrayOf(PropTypes.shape({ + granuleId: PropTypes.string, + collectionId: PropTypes.string, + })) }; export { BulkGranule }; diff --git a/app/src/js/components/Granules/granule.js b/app/src/js/components/Granules/granule.js index fab6df05b..3df12f0e3 100644 --- a/app/src/js/components/Granules/granule.js +++ b/app/src/js/components/Granules/granule.js @@ -7,8 +7,10 @@ import { withRouter, Link } from 'react-router-dom'; import { connect } from 'react-redux'; import { get } from 'object-path'; import isEqual from 'lodash/isEqual'; +import pick from 'lodash/pick'; import { getGranule, + listExecutionsByGranule, reingestGranule, removeGranule, deleteGranule, @@ -25,7 +27,6 @@ import { collectionLink, providerLink, pdrLink, - reingestText, removeFromCmr, deleteText, } from '../../utils/format'; @@ -35,6 +36,7 @@ import LogViewer from '../Logs/viewer'; import ErrorReport from '../Errors/report'; import Metadata from '../Table/Metadata'; import DropdownAsync from '../DropDown/dropdown-async-command'; +import SimpleDropdown from '../DropDown/simple-dropdown'; import { strings } from '../locale'; import { workflowOptionNames } from '../../selectors'; import { defaultWorkflowMeta, executeDialog } from '../../utils/table-config/granules'; @@ -93,7 +95,7 @@ const metaAccessors = [ property: 'cmrLink', accessor: (d) => (d ? ( - link + link ) : ( nullValue @@ -109,7 +111,7 @@ const metaAccessors = [ search: getPersistentQueryParams(location), })} > - link + link ) : ( nullValue @@ -143,10 +145,12 @@ class GranuleOverview extends React.Component { this.remove = this.remove.bind(this); this.delete = this.delete.bind(this); this.errors = this.errors.bind(this); + this.selectReingestWorkflow = this.selectReingestWorkflow.bind(this); this.selectWorkflow = this.selectWorkflow.bind(this); this.getExecuteOptions = this.getExecuteOptions.bind(this); this.setWorkflowMeta = this.setWorkflowMeta.bind(this); this.state = { + reingestWorkflow: {}, workflow: this.props.workflowOptions[0], workflowMeta: defaultWorkflowMeta, }; @@ -168,7 +172,11 @@ class GranuleOverview extends React.Component { const { config, dispatch, match } = this.props; const { granuleId } = match.params; const getRecoveryStatus = config.enableRecovery ? true : undefined; - dispatch(getGranule(granuleId, { getRecoveryStatus })); + dispatch(getGranule(granuleId, { getRecoveryStatus })) + .then((granuleResponse) => { + const payload = { granules: [pick(granuleResponse.data, ['granuleId', 'collectionId'])] }; + dispatch(listExecutionsByGranule(payload)); + }); } navigateBack() { @@ -181,7 +189,7 @@ class GranuleOverview extends React.Component { reingest() { const { granuleId } = this.props.match.params; - this.props.dispatch(reingestGranule(granuleId)); + this.props.dispatch(reingestGranule(granuleId, { executionArn: this.state.reingestWorkflow.value })); } applyWorkflow() { @@ -214,6 +222,10 @@ class GranuleOverview extends React.Component { ].filter(Boolean); } + selectReingestWorkflow(selector, value, option) { + this.setState({ reingestWorkflow: option || {} }); + } + selectWorkflow(selector, workflow) { this.setState({ workflow }); } @@ -235,6 +247,43 @@ class GranuleOverview extends React.Component { ]; } + getReingestOptions() { + const { granuleId } = this.props.match.params; + const granExecutions = get(this.props.executions, 'list.data', []); + const reingestExecutionOptions = granExecutions + .map((execution) => ({ + label: `${execution.type}${(execution.arn === granExecutions[0].arn) ? ' (default)' : ''}`, + value: execution.arn + })); + + return [( + <> +
+

Selected Granule: {granuleId}

+

To complete your granule reingest requests:

+

+ Below you can select a specific workflow to apply to this selected granule. + Note: The default is the latest workflow. +

+ {get(this.props.executions, 'list.error') && + } +
+
+ +
+ + )]; + } + render() { const { granuleId } = this.props.match.params; const record = this.props.granules.map[granuleId]; @@ -251,6 +300,7 @@ class GranuleOverview extends React.Component { files.push(granule.files[key]); } } + const dropdownConfig = [ { text: 'Reingest', @@ -258,7 +308,7 @@ class GranuleOverview extends React.Component { status: get(this.props.granules.reingested, [granuleId, 'status']), success: this.loadGranule, confirmAction: true, - confirmText: reingestText(granuleId), + confirmOptions: this.getReingestOptions(), }, { text: 'Execute', @@ -321,7 +371,7 @@ class GranuleOverview extends React.Component {
Status:
Ingest - +
{granule.recoveryStatus ?
@@ -370,6 +420,7 @@ GranuleOverview.propTypes = { match: PropTypes.object, dispatch: PropTypes.func, granules: PropTypes.object, + executions: PropTypes.object, logs: PropTypes.object, skipReloadOnMount: PropTypes.bool, workflowOptions: PropTypes.array, @@ -387,6 +438,7 @@ export default withRouter( connect((state) => ({ config: state.config, granules: state.granules, + executions: state.executions, workflowOptions: workflowOptionNames(state), logs: state.logs, }))(GranuleOverview) diff --git a/app/src/js/components/Granules/list.js b/app/src/js/components/Granules/list.js index 4ad103139..bbde1a289 100644 --- a/app/src/js/components/Granules/list.js +++ b/app/src/js/components/Granules/list.js @@ -118,7 +118,8 @@ const AllGranules = ({ action: applyWorkflow, }, }; - const selectedGranules = selected.map((id) => granules.list.data.find((g) => id === g.granuleId)); + const selectedGranules = selected + .map((id) => granules.list.data.find((g) => id === g.granuleId)).filter(Boolean); return bulkActions(granules, config, selectedGranules); } diff --git a/app/src/js/components/Granules/overview.js b/app/src/js/components/Granules/overview.js index 2b2a9b50d..f7633af23 100644 --- a/app/src/js/components/Granules/overview.js +++ b/app/src/js/components/Granules/overview.js @@ -102,7 +102,8 @@ class GranulesOverview extends React.Component { }; const { granules, config } = this.props; const { selected } = this.state; - const selectedGranules = selected.map((id) => granules.list.data.find((g) => id === g.granuleId)); + const selectedGranules = selected + .map((id) => granules.list.data.find((g) => id === g.granuleId)).filter(Boolean); let actions = bulkActions(granules, actionConfig, selectedGranules); if (config.enableRecovery) { actions = actions.concat(recoverAction(granules, actionConfig)); diff --git a/app/src/js/components/Granules/recipe-ingest.js b/app/src/js/components/Granules/recipe-ingest.js deleted file mode 100644 index 3b9bfde2f..000000000 --- a/app/src/js/components/Granules/recipe-ingest.js +++ /dev/null @@ -1,168 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { connect } from 'react-redux'; -import { get } from 'object-path'; -import Ace from 'react-ace'; -import { - getGranule, - reprocessGranule, - reingestGranule, - removeGranule, - deleteGranule -} from '../../actions'; -import { lastUpdated, seconds } from '../../utils/format'; -import config from '../../config'; -import Loading from '../LoadingIndicator/loading-indicator'; -import DropdownAsync from '../DropDown/dropdown-async-command'; -import { strings } from '../locale'; -import { historyPushWithQueryParams } from '../../utils/url-helper'; - -const noop = () => true; -class GranuleRecipe extends React.Component { - constructor () { - super(); - this.navigateBack = this.navigateBack.bind(this); - this.reprocess = this.reprocess.bind(this); - this.reingest = this.reingest.bind(this); - this.remove = this.remove.bind(this); - this.delete = this.delete.bind(this); - } - - componentDidMount () { - const { granuleId } = this.props.params; - if (!this.props.granules.map[granuleId]) { - this.props.dispatch(getGranule(granuleId)); - } - } - - navigateBack () { - historyPushWithQueryParams('/granules'); - } - - reprocess () { - const { granuleId } = this.props.params; - this.props.dispatch(reprocessGranule(granuleId)); - } - - reingest () { - const { granuleId } = this.props.params; - this.props.dispatch(reingestGranule(granuleId)); - } - - remove () { - const { granuleId } = this.props.params; - this.props.dispatch(removeGranule(granuleId)); - } - - delete () { - const { granuleId } = this.props.params; - this.props.dispatch(deleteGranule(granuleId)); - } - - render () { - const { granuleId } = this.props.params; - const record = this.props.granules.map[granuleId]; - - if (!record || (record.inflight && !record.data)) { - return ; - } - - const granule = record.data; - const recipeOrder = get(granule, 'recipe.order', []); - - // processing step blocks - const recipeSteps = recipeOrder.map((step, index) => { - const description = get(granule, ['recipe', step, 'description']); - return ( -
- - {description ? {description} : null} - -
- ); - }); - - const ingestedFiles = Object.keys(get(granule, 'files', {})).map((filename, index) => ( -
- - -
- )); - - const dropdownConfig = [{ - text: 'Reprocess', - action: this.reprocess, - status: get(this.props.granules.reprocessed, [granuleId, 'status']), - success: noop - }, { - text: 'Reingest', - action: this.reingest, - status: get(this.props.granules.reingested, [granuleId, 'status']), - success: noop - }, { - text: strings.remove_from_cmr, - action: this.remove, - status: get(this.props.granules.removed, [granuleId, 'status']), - success: noop - }, { - text: 'Delete', - action: this.delete, - disabled: granule.published, - status: get(this.props.granules.deleted, [granuleId, 'status']), - success: this.navigateBack - }]; - - return ( -
-
-

{granuleId}

- - {lastUpdated(granule.queriedAt)} -
- -
-

Recipe

- {recipeSteps} -
- -
-

Ingest

-
-

Duration: {seconds(granule.ingestDuration)}

- {ingestedFiles} -
-
-
- ); - } -} - -GranuleRecipe.propTypes = { - params: PropTypes.object, - dispatch: PropTypes.func, - granules: PropTypes.object, -}; - -export default connect((state) => state)(GranuleRecipe); diff --git a/app/src/js/components/ListActions/ListActions.js b/app/src/js/components/ListActions/ListActions.js index d0dc53f87..876af0c03 100644 --- a/app/src/js/components/ListActions/ListActions.js +++ b/app/src/js/components/ListActions/ListActions.js @@ -37,7 +37,10 @@ const ListActions = ({ const { Component, text } = item; return ( - {Component && React.cloneElement(Component, { selected })} + {/* Add 'selected' prop to Component if the element doesn't have this property already. + Component like BulkGranule has `selected` prop which is an array of objects, `selected` here + is an array of string */} + {Component && React.cloneElement(Component, Component.props.selected === undefined && { selected })} {!Component && } diff --git a/app/src/js/components/ReingestGranules/BatchReingestConfirmContent.js b/app/src/js/components/ReingestGranules/BatchReingestConfirmContent.js index 52dfbfd8a..09aa033c8 100644 --- a/app/src/js/components/ReingestGranules/BatchReingestConfirmContent.js +++ b/app/src/js/components/ReingestGranules/BatchReingestConfirmContent.js @@ -1,20 +1,34 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; import { Alert } from 'react-bootstrap'; +import { get } from 'object-path'; + +import { + clearGranulesWorkflows, + getGranulesWorkflows, + getGranulesWorkflowsClearError +} from '../../actions'; +import ErrorReport from '../Errors/report'; +import SimpleDropdown from '../DropDown/simple-dropdown'; export const maxDisplayed = 10; -const BatchReingestConfirmContent = ({ selected = [] }) => { +const BatchReingestConfirmContent = ({ + onChange, + selected = [], + dispatch, + granulesExecutions, +}) => { + const [workflow, setWorkflow] = useState(null); const isMultiple = selected.length > 1; - const these = isMultiple ? 'These' : 'This'; const s = isMultiple ? 's' : ''; - const requestText = `You have submitted a request to reingest the following granule${s}.`; - const confirmText = `Are you sure that you want to reingest ${these.toLowerCase()} granule${s}?`; + const requestText = `Selected granule${s}:`; const displayedItems = () => { const items = []; for (let i = 0; i < Math.min(selected.length, maxDisplayed); i++) { - items.push(
  • {selected[i]}
  • ); + items.push(
  • {selected[i].granuleId}
  • ); } if (selected.length > maxDisplayed) { items.push(
  • and {selected.length - maxDisplayed} more.
  • ); @@ -22,6 +36,24 @@ const BatchReingestConfirmContent = ({ selected = [] }) => { return items; }; + useEffect(() => { + dispatch(getGranulesWorkflows({ granules: selected })); + setWorkflow(null); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(selected)]); + + useEffect(() => () => { + dispatch(clearGranulesWorkflows()); + dispatch(getGranulesWorkflowsClearError()); + }, [dispatch]); + + function handleSelectWorkflow(selector, selectedWorkflow) { + setWorkflow(selectedWorkflow); + if (typeof onChange === 'function') { + onChange({ workflowName: selectedWorkflow }); + } + } + return ( <> Attention: {`The selected granule${s} will be overwritten`} @@ -29,15 +61,43 @@ const BatchReingestConfirmContent = ({ selected = [] }) => {
      {displayedItems()}
    - {confirmText.split('\n').map((line, index) => ( -

    {line}

    - ))} +
    +

    {`To complete your granule reingest request${s}:`}

    +

    + {`Below you can select a specific workflow to apply to the selected granule${s}. `} + Note: The default is the latest workflow. +

    + {get(granulesExecutions, 'workflows.error') && + } +
    +
    + +
    ); }; BatchReingestConfirmContent.propTypes = { - selected: PropTypes.array + onChange: PropTypes.func, + granulesExecutions: PropTypes.object, + dispatch: PropTypes.func, + selected: PropTypes.arrayOf(PropTypes.shape({ + granuleId: PropTypes.string, + collectionId: PropTypes.string, + })), }; -export default BatchReingestConfirmContent; +export { BatchReingestConfirmContent }; + +export default connect((state) => ({ + granulesExecutions: state.granulesExecutions, +}))(BatchReingestConfirmContent); diff --git a/app/src/js/components/Section/section.js b/app/src/js/components/Section/section.js index 2e1655897..9a845f65c 100644 --- a/app/src/js/components/Section/section.js +++ b/app/src/js/components/Section/section.js @@ -15,7 +15,7 @@ export const section = ({ }) => { const borderMod = border ? '--border' : ''; const sizeMod = `--${size}`; - const id = sectionId || false; + const id = sectionId || ''; const headerClass = (link !== undefined) ? 'heading--shared-content--right' : ''; return (
    diff --git a/app/src/js/reducers/granules-executions.js b/app/src/js/reducers/granules-executions.js new file mode 100644 index 000000000..6601add9d --- /dev/null +++ b/app/src/js/reducers/granules-executions.js @@ -0,0 +1,37 @@ +import { createReducer } from '@reduxjs/toolkit'; +import { + WORKFLOWS_FROM_GRANULES, + WORKFLOWS_FROM_GRANULES_INFLIGHT, + WORKFLOWS_FROM_GRANULES_ERROR, + WORKFLOWS_FROM_GRANULES_CLEAR_ERROR, + CLEAR_WORKFLOWS_FROM_GRANULES, +} from '../actions/types'; + +export const initialState = { + workflows: { + data: [], + }, + inflight: false, + error: false, + meta: {}, +}; + +export default createReducer(initialState, { + [WORKFLOWS_FROM_GRANULES]: (state, action) => { + state.workflows.data = action.data; + state.workflows.inflight = false; + }, + [WORKFLOWS_FROM_GRANULES_INFLIGHT]: (state) => { + state.workflows.inflight = true; + }, + [WORKFLOWS_FROM_GRANULES_ERROR]: (state, action) => { + state.workflows.inflight = false; + state.workflows.error = action.error; + }, + [WORKFLOWS_FROM_GRANULES_CLEAR_ERROR]: (state) => { + delete state.workflows.error; + }, + [CLEAR_WORKFLOWS_FROM_GRANULES]: (state) => { + state.workflows.data = []; + }, +}); diff --git a/app/src/js/reducers/index.js b/app/src/js/reducers/index.js index 679bdcbcd..3434ab84d 100644 --- a/app/src/js/reducers/index.js +++ b/app/src/js/reducers/index.js @@ -9,6 +9,7 @@ import config from './utils/config'; import dist from './dist'; import datepicker from './datepicker'; import granules from './granules'; +import granulesExecutions from './granules-executions'; import stats from './stats'; import pdrs from './pdrs'; import providers from './providers'; @@ -39,6 +40,7 @@ export const reducers = { datepicker, cumulusInstance, granules, + granulesExecutions, stats, timer, sidebar, diff --git a/app/src/js/utils/dropdown-utils.js b/app/src/js/utils/dropdown-utils.js index 18ccecf30..164427fd5 100644 --- a/app/src/js/utils/dropdown-utils.js +++ b/app/src/js/utils/dropdown-utils.js @@ -28,7 +28,7 @@ const customStyles = { margin: 0, zIndex: 9999, }), - indicatorsContainer: (base) => ({ + dropdownIndicator: (base) => ({ ...base, backgroundColor: oceanBlue, borderRadius: `0 ${borderRadius} ${borderRadius} 0`, diff --git a/app/src/js/utils/format.js b/app/src/js/utils/format.js index 6b2f54a7e..33d3a2b2b 100644 --- a/app/src/js/utils/format.js +++ b/app/src/js/utils/format.js @@ -436,12 +436,6 @@ export const rerunText = (name) => [

    Are you sure you want to rerun?

    ]; -export const reingestText = (name) => [ -

    You have submitted a request to reingest the following granule:

    , - {name}, -

    Note: The granule files will be overwritten when you reingest. Are you sure that you want to reingest this granule?

    -]; - export const recoverCollectionText = (d) => [

    You have submitted a Collection recovery request

    , Recover {d} Collection{d > 1 ? 's' : ''}, diff --git a/app/src/js/utils/table-config/granules.js b/app/src/js/utils/table-config/granules.js index 175f7d0f3..38f06e3ce 100644 --- a/app/src/js/utils/table-config/granules.js +++ b/app/src/js/utils/table-config/granules.js @@ -1,4 +1,5 @@ import path from 'path'; +import pick from 'lodash/pick'; import React from 'react'; import { get } from 'object-path'; import Collapsible from 'react-collapsible'; @@ -32,7 +33,7 @@ import { import ErrorReport from '../../components/Errors/report'; import { strings } from '../../components/locale'; import SimpleDropdown from '../../components/DropDown/simple-dropdown'; -import Bulk from '../../components/Granules/bulk'; +import BulkGranule from '../../components/Granules/bulk'; import BatchReingestConfirmContent from '../../components/ReingestGranules/BatchReingestConfirmContent'; import BatchReingestCompleteContent from '../../components/ReingestGranules/BatchReingestCompleteContent'; import TextArea from '../../components/TextAreaForm/text-area'; @@ -239,6 +240,7 @@ const setOnConfirm = ({ history, error, selected, closeModal }) => { }; const granuleModalJourney = ({ + onChange, selected = [], history, isOnModalConfirm, @@ -253,7 +255,7 @@ const granuleModalJourney = ({ size: 'lg' }; if (initialEntry) { - modalOptions.children = ; + modalOptions.children = ; } if (isOnModalComplete) { modalOptions.children = 1) ? 'View Running' : 'View Granule'; modalOptions.cancelButtonClass = 'button--green'; modalOptions.confirmButtonClass = 'button__goto'; - modalOptions.onConfirm = setOnConfirm({ history, selected, errorMessage, closeModal }); + const ids = selected.map((g) => g.granuleId); + modalOptions.onConfirm = setOnConfirm({ history, selected: ids, errorMessage, closeModal }); } } return modalOptions; @@ -285,18 +288,19 @@ const containsPublishedGranules = (selectedGranules) => { return true; }; -export const reingestAction = (granules) => ({ +export const reingestAction = (granules, selectedGranules) => ({ text: 'Reingest', action: reingestGranule, state: granules.reingested, clearError: reingestGranuleClearError, confirm: confirmReingest, className: 'button--reingest', - getModalOptions: granuleModalJourney + getModalOptions: granuleModalJourney, + selected: selectedGranules.map((g) => pick(g, ['granuleId', 'collectionId'])) }); export const bulkActions = (granules, config, selectedGranules) => [ - reingestAction(granules), + reingestAction(granules, selectedGranules), { text: 'Execute', action: config.execute.action, @@ -324,10 +328,11 @@ export const bulkActions = (granules, config, selectedGranules) => [ }, { Component: - pick(g, ['granuleId', 'collectionId']))} /> }, { diff --git a/cypress/fixtures/executions-list.json b/cypress/fixtures/executions-list.json deleted file mode 100644 index 1caee8ee0..000000000 --- a/cypress/fixtures/executions-list.json +++ /dev/null @@ -1,292 +0,0 @@ -{ - "meta": { - "count": 6 - }, - "results": [ - { - "name": "7a71f849-57a0-40e7-8fca-5cf796602a07", - "status": "running", - "arn": "arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestGranuleStateMachine-MOyI0myKEXzf:7a71f849-57a0-40e7-8fca-5cf796602a07", - "duration": 26.635, - "error": { - "Cause": "{\"errorMessage\":\"Source file not found s3://cumulus-test-sandbox-internal/non-existent-path/non-existent-file\",\"errorType\":\"FileNotFound\",\"stackTrace\":[\"S3Granule.sync (/var/task/index.js:142314:13)\",\"\",\"process._tickDomainCallback (internal/process/next_tick.js:228:7)\"]}", - "Error": "FileNotFound" - }, - "tasks": { - "Report": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SfSnsReport:SfSnsReport-852e08f1fd5e168685bed68ab05230471247aa2b", - "name": "test-source-integration-SfSnsReport", - "version": "18" - } - }, - "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestGranuleStateMachine-MOyI0myKEXzf:7a71f849-57a0-40e7-8fca-5cf796602a07", - "collectionId": "https_testcollection___001", - "createdAt": 1542129071756, - "updatedAt": 1542129098391, - "timestamp": 1542129099323 - }, - { - "name": "c33e4091-e90d-449c-93f5-c4462b6e4e87", - "status": "failed", - "arn": "arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestGranuleStateMachine-MOyI0myKEXzf:c33e4091-e90d-449c-93f5-c4462b6e4e87", - "duration": 28.694, - "error": { - "Cause": "{\"errorMessage\":\"Source file not found s3://cumulus-test-sandbox-internal/non-existent-path/non-existent-file\",\"errorType\":\"FileNotFound\",\"stackTrace\":[\"S3Granule.sync (/var/task/index.js:142314:13)\",\"\",\"process._tickDomainCallback (internal/process/next_tick.js:228:7)\"]}", - "Error": "FileNotFound" - }, - "tasks": { - "StopStatus": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SfSnsReport:SfSnsReport-852e08f1fd5e168685bed68ab05230471247aa2b", - "name": "test-source-integration-SfSnsReport", - "version": "18" - } - }, - "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestGranuleStateMachine-MOyI0myKEXzf:c33e4091-e90d-449c-93f5-c4462b6e4e87", - "collectionId": "https_testcollection___001", - "createdAt": 1542123794842, - "updatedAt": 1542123823536, - "timestamp": 1542123824136 - }, - { - "name": "9888b858-d70c-42ec-a887-c9367dcfd7cf", - "status": "completed", - "arn": "arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationParsePdrStateMachine-JVlCKfoXElDQ:9888b858-d70c-42ec-a887-c9367dcfd7cf", - "duration": 77.104, - "error": { - "Cause": "\"None\"", - "Error": "Unknown Error" - }, - "tasks": { - "ParsePdr": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-ParsePdr:ParsePdr-2979f1f71736621607b0d6ccc9875dce4fdcccab", - "name": "test-source-integration-ParsePdr", - "version": "19" - }, - "StopStatus": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SfSnsReport:SfSnsReport-852e08f1fd5e168685bed68ab05230471247aa2b", - "name": "test-source-integration-SfSnsReport", - "version": "18" - }, - "CheckStatus": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-PdrStatusCheck:PdrStatusCheck-870b3ba8ae46bd75407798ef59cc1e459d363312", - "name": "test-source-integration-PdrStatusCheck", - "version": "19" - }, - "StatusReport": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SfSnsReport:SfSnsReport-852e08f1fd5e168685bed68ab05230471247aa2b", - "name": "test-source-integration-SfSnsReport", - "version": "18" - }, - "QueueGranules": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-QueueGranules:QueueGranules-5f5de321741f77e2d7f89f41f16498f02ce111cd", - "name": "test-source-integration-QueueGranules", - "version": "19" - } - }, - "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationParsePdrStateMachine-JVlCKfoXElDQ:9888b858-d70c-42ec-a887-c9367dcfd7cf", - "collectionId": "MOD09GQ___006", - "createdAt": 1542053062238, - "updatedAt": 1542053139343, - "timestamp": 1542053139921 - }, - { - "name": "8e21ca0f-79d3-4782-8247-cacd42a595ea", - "status": "completed", - "arn": "arn:aws:states:us-east-1:012345678901:execution:test-stack-HelloWorldWorkflow:8e21ca0f-79d3-4782-8247-cacd42a595ea", - "duration": 20.365, - "error": { - "Cause": "\"None\"", - "Error": "Unknown Error" - }, - "tasks": { - "StopStatus": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SfSnsReport:SfSnsReport-852e08f1fd5e168685bed68ab05230471247aa2b", - "name": "test-source-integration-SfSnsReport", - "version": "18" - }, - "ProcessingStep": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-FakeProcessing:FakeProcessing-ca2504cf11020f7a7a2b01304752adf11fa43a56", - "name": "test-source-integration-FakeProcessing", - "version": "35" - }, - "MoveGranuleStep": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-MoveGranules:MoveGranules-065967facfd624617685271a921be71a8c436f27", - "name": "test-source-integration-MoveGranules", - "version": "32" - }, - "SyncGranuleNoVpc": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SyncGranuleNoVpc:SyncGranuleNoVpc-71bf2cfeda020e9409a3f67293d1f7b8f42e0546", - "name": "test-source-integration-SyncGranuleNoVpc", - "version": "35" - } - }, - "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestGranuleStateMachine-MOyI0myKEXzf:8e21ca0f-79d3-4782-8247-cacd42a595ea", - "collectionId": "MOD09GQ___006", - "createdAt": 1542053110348, - "updatedAt": 1542053130713, - "timestamp": 1542053131165 - }, - { - "name": "c3ce6b76-a5f5-47d2-80a5-8b5c56300da8", - "status": "completed", - "arn": "arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationDiscoverAndQueuePdrsStateMachine-T4MDdDs9ADnK:c3ce6b76-a5f5-47d2-80a5-8b5c56300da8", - "duration": 13.127, - "error": { - "Cause": "\"None\"", - "Error": "Unknown Error" - }, - "tasks": { - "QueuePdrs": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-QueuePdrs:QueuePdrs-8e81d722bac219528d2be0ba8d8104a8cbb1bb04", - "name": "test-source-integration-QueuePdrs", - "version": "18" - }, - "StopStatus": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SfSnsReport:SfSnsReport-852e08f1fd5e168685bed68ab05230471247aa2b", - "name": "test-source-integration-SfSnsReport", - "version": "18" - }, - "StartStatus": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SfSnsReport:SfSnsReport-852e08f1fd5e168685bed68ab05230471247aa2b", - "name": "test-source-integration-SfSnsReport", - "version": "18" - }, - "DiscoverPdrs": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-DiscoverPdrs:DiscoverPdrs-c155ebecc4d03a9a0a3737b844122643e93d3887", - "name": "test-source-integration-DiscoverPdrs", - "version": "19" - } - }, - "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationDiscoverAndQueuePdrsStateMachine-T4MDdDs9ADnK:c3ce6b76-a5f5-47d2-80a5-8b5c56300da8", - "collectionId": "http_testcollection___001", - "createdAt": 1542053050795, - "updatedAt": 1542053063922, - "timestamp": 1542053064551 - }, - { - "name": "b313e777-d28a-435b-a0dd-f1fad08116t1", - "status": "completed", - "arn": "arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestAndPublishGranuleStateMachine-yCAhWOss5Xgo:b313e777-d28a-435b-a0dd-f1fad08116t1", - "duration": 29.971, - "error": { - "Cause": "\"None\"", - "Error": "Unknown Error" - }, - "tasks": { - "CmrStep": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-PostToCmr:PostToCmr-e7dd30c53fd4c8b13241e5c9ebfe6f92c148b6c0", - "name": "test-source-integration-PostToCmr", - "version": "30" - }, - "StopStatus": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SfSnsReport:SfSnsReport-d4c3a5a1e006ace8ad2368605afb331abdaf1431", - "name": "test-source-integration-SfSnsReport", - "version": "23" - }, - "ProcessingStep": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-FakeProcessing:FakeProcessing-769a215f9b18c5a0f376e25d2b4326c810baaaa8", - "name": "test-source-integration-FakeProcessing", - "version": "41" - }, - "MoveGranuleStep": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-MoveGranules:MoveGranules-0df332b0b971a1e01cac875e2c1497b0cab840fc", - "name": "test-source-integration-MoveGranules", - "version": "38" - }, - "SyncGranuleNoVpc": { - "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-SyncGranuleNoVpc:SyncGranuleNoVpc-1baa8c522bf76a37ed6d577ebc3e5fdb678512e3", - "name": "test-source-integration-SyncGranuleNoVpc", - "version": "41" - } - }, - "originalPayload": { - "pdr": { - "name": "MOD09GQ_1granule_v3.PDR", - "path": "test-source-integration-IngestGranuleSuccess-1544123771801-test-data/files", - "size": 596, - "time": 1520873050000 - }, - "granules": [ - { - "files": [ - { - "name": "MOD09GQ.A4826606.CX9u3i.006.1751203470685.hdf", - "path": "test-source-integration-IngestGranuleSuccess-1544123771801-test-data/files", - "fileSize": 17865615 - }, - { - "name": "MOD09GQ.A4826606.CX9u3i.006.1751203470685.hdf.met", - "path": "test-source-integration-IngestGranuleSuccess-1544123771801-test-data/files", - "fileSize": 44118 - }, - { - "name": "MOD09GQ.A4826606.CX9u3i.006.1751203470685_ndvi.jpg", - "path": "test-source-integration-IngestGranuleSuccess-1544123771801-test-data/files", - "fileSize": 44118 - } - ], - "version": "006", - "dataType": "MOD09GQ_test-test-source-integration-IngestGranuleSuccess-1544123771801", - "granuleId": "MOD09GQ.A4826606.CX9u3i.006.1751203470685" - } - ] - }, - "finalPayload": { - "process": "modis", - "granules": [ - { - "files": [ - { - "name": "MOD09GQ.A4826606.CX9u3i.006.1751203470685.hdf", - "path": "test-source-integration-IngestGranuleSuccess-1544123771801-test-data/files", - "bucket": "test-source-integration-protected", - "fileSize": 17865615, - "filename": "s3://test-source-integration-protected/MOD09GQ___006/2017/MOD/MOD09GQ.A4826606.CX9u3i.006.1751203470685.hdf", - "filepath": "MOD09GQ___006/2017/MOD/MOD09GQ.A4826606.CX9u3i.006.1751203470685.hdf", - "url_path": "{cmrMetadata.Granule.Collection.ShortName}___{cmrMetadata.Granule.Collection.VersionId}/{extractYear(cmrMetadata.Granule.Temporal.RangeDateTime.BeginningDateTime)}/{substring(file.name, 0, 3)}", - "duplicate_found": true - }, - { - "name": "MOD09GQ.A4826606.CX9u3i.006.1751203470685.hdf.met", - "path": "test-source-integration-IngestGranuleSuccess-1544123771801-test-data/files", - "bucket": "test-source-integration-private", - "fileSize": 44118, - "filename": "s3://test-source-integration-private/MOD09GQ___006/MOD/MOD09GQ.A4826606.CX9u3i.006.1751203470685.hdf.met", - "filepath": "MOD09GQ___006/MOD/MOD09GQ.A4826606.CX9u3i.006.1751203470685.hdf.met", - "url_path": "{cmrMetadata.Granule.Collection.ShortName}___{cmrMetadata.Granule.Collection.VersionId}/{substring(file.name, 0, 3)}", - "duplicate_found": true - }, - { - "name": "MOD09GQ.A4826606.CX9u3i.006.1751203470685_ndvi.jpg", - "path": "test-source-integration-IngestGranuleSuccess-1544123771801-test-data/files", - "bucket": "test-source-integration-public", - "fileSize": 44118, - "filename": "s3://test-source-integration-public/MOD09GQ___006/MOD/MOD09GQ.A4826606.CX9u3i.006.1751203470685_ndvi.jpg", - "filepath": "MOD09GQ___006/MOD/MOD09GQ.A4826606.CX9u3i.006.1751203470685_ndvi.jpg", - "url_path": "{cmrMetadata.Granule.Collection.ShortName}___{cmrMetadata.Granule.Collection.VersionId}/{substring(file.name, 0, 3)}", - "duplicate_found": true - }, - { - "name": "MOD09GQ.A4826606.CX9u3i.006.1751203470685.cmr.xml", - "bucket": "test-source-integration-protected-2", - "filename": "s3://test-source-integration-protected-2/MOD09GQ___006/MOD/MOD09GQ.A4826606.CX9u3i.006.1751203470685.cmr.xml", - "filepath": "MOD09GQ___006/MOD/MOD09GQ.A4826606.CX9u3i.006.1751203470685.cmr.xml", - "url_path": "{cmrMetadata.Granule.Collection.ShortName}___{cmrMetadata.Granule.Collection.VersionId}/{substring(file.name, 0, 3)}" - } - ], - "cmrLink": "https://cmr.uat.earthdata.nasa.gov/search/granules.json?concept_id=G1224871669-CUMULUS", - "version": "006", - "dataType": "MOD09GQ_test-test-source-integration-IngestGranuleSuccess-1544123771801", - "granuleId": "MOD09GQ.A4826606.CX9u3i.006.1751203470685", - "published": true - } - ] - }, - "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestAndPublishGranuleStateMachine-yCAhWOss5Xgo:b313e777-d28a-435b-a0dd-f1fad08116t1", - "collectionId": "L2_HR_PIXC___000", - "createdAt": 1544123891174, - "updatedAt": 1545019248081, - "timestamp": 1544123921145 - } - ] -} \ No newline at end of file diff --git a/cypress/fixtures/seeds/executionsFixture.json b/cypress/fixtures/seeds/executionsFixture.json index 68d327948..8a1112eef 100644 --- a/cypress/fixtures/seeds/executionsFixture.json +++ b/cypress/fixtures/seeds/executionsFixture.json @@ -300,6 +300,71 @@ } ] } - } + }, + { + "arn": "arn:aws:states:us-east-1:123456789012:execution:test-source-integration-IngestAndPublishGranule:fd0bc7b5-56c3-4e37-b445-8a25f27c06b8", + "status": "failed", + "timestamp": 1629488546679, + "tasks": {}, + "createdAt": 1629488527340, + "cumulusVersion": "9.4.0", + "name": "fd0bc7b5-56c3-4e37-b445-8a25f27c06b8", + "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:123456789012:execution:test-source-integration-IngestAndPublishGranule:fd0bc7b5-56c3-4e37-b445-8a25f27c06b8", + "updatedAt": 1632110409176, + "collectionId": "MOD09GQ___006", + "duration": 18.498, + "error": { + "Error": "CumulusMessageAdapterExecutionError", + "failedExecutionStepName": "SyncGranule", + "Cause": "{\"errorType\":\"CumulusMessageAdapterExecutionError\",\"errorMessage\":\"warning setting command to loadAndUpdateRemoteEvent\\nwarning setting command to loadNestedEvent\\nUnexpected Error . input schema: 'granules' is a required property\\n\\nFailed validating 'required' in schema:\\n\"}" + }, + "type": "IngestAndPublishGranule" + }, + { + "arn": "arn:aws:states:us-east-1:123456789012:execution:test-source-integration-HelloWorldWorkflow:79ba430a-0616-4458-ad5e-1bf2e979cfe4", + "status": "completed", + "timestamp": 1580327992306, + "tasks": { + "HelloWorld": { + "name": "test-source-integration-HelloWorld", + "arn": "arn:aws:lambda:us-east-1:123456789012:function:test-source-integration-HelloWorld", + "version": "$LATEST" + } + }, + "createdAt": 1580327980133, + "name": "79ba430a-0616-4458-ad5e-1bf2e979cfe4", + "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:123456789012:execution:test-source-integration-HelloWorldWorkflow:79ba430a-0616-4458-ad5e-1bf2e979cfe4", + "updatedAt": 1581220884436, + "duration": 11.821, + "error": { + "Error": "Unknown Error", + "Cause": "None" + }, + "type": "HelloWorldWorkflow" + }, + { + "arn": "arn:aws:states:us-east-1:596205514787:execution:test-source-integration-HelloWorldWorkflow:1a5aaf01-835b-431a-924f-96a7feb3a3fb", + "status": "completed", + "timestamp": 1632351781244, + "tasks": { + "HelloWorld": { + "name": "test-source-integration-HelloWorld", + "arn": "arn:aws:lambda:us-east-1:596205514787:function:test-source-integration-HelloWorld", + "version": "$LATEST" + } + }, + "createdAt": 1632351778964, + "cumulusVersion": "9.5.0", + "name": "1a5aaf01-835b-431a-924f-96a7feb3a3fb", + "finalPayload": { + "hello": "Hello World" + }, + "execution": "https://console.aws.amazon.com/states/home?region=us-east-1#/executions/details/arn:aws:states:us-east-1:596205514787:execution:test-source-integration-HelloWorldWorkflow:1a5aaf01-835b-431a-924f-96a7feb3a3fb", + "updatedAt": 1632351781244, + "collectionId": "MOD09GQ___006", + "duration": 1.691, + "error": {}, + "type": "HelloWorldWorkflow" + } ] } diff --git a/cypress/fixtures/seeds/granulesExecutionsFixture.json b/cypress/fixtures/seeds/granulesExecutionsFixture.json new file mode 100644 index 000000000..02d931082 --- /dev/null +++ b/cypress/fixtures/seeds/granulesExecutionsFixture.json @@ -0,0 +1,27 @@ +[ + { + "granuleId": "MOD09GQ.A9344328.K9yI3O.006.4625818663028", + "collectionId": "MOD09GQ___006", + "executionArn": "arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestAndPublishGranuleStateMachine-yCAhWOss5Xgo:b313e777-d28a-435b-a0dd-f1fad08116t1" + }, + { + "granuleId": "MOD09GQ.A9344328.K9yI3O.006.4625818663028", + "collectionId": "MOD09GQ___006", + "executionArn": "arn:aws:states:us-east-1:123456789012:execution:test-source-integration-HelloWorldWorkflow:79ba430a-0616-4458-ad5e-1bf2e979cfe4" + }, + { + "granuleId": "MOD09GQ.A9344328.K9yI3O.006.4625818663028", + "collectionId": "MOD09GQ___006", + "executionArn": "arn:aws:states:us-east-1:596205514787:execution:test-source-integration-HelloWorldWorkflow:1a5aaf01-835b-431a-924f-96a7feb3a3fb" + }, + { + "granuleId": "MOD09GQ.A2417309.YZ9tCV.006.4640974889044", + "collectionId": "MOD09GQ___006", + "executionArn": "arn:aws:states:us-east-1:123456789012:execution:TestSourceIntegrationIngestGranuleStateMachine-MOyI0myKEXzf:c33e4091-e90d-449c-93f5-c4462b6e4e87" + }, + { + "granuleId": "MOD09GQ.A2417309.YZ9tCV.006.4640974889044", + "collectionId": "MOD09GQ___006", + "executionArn": "arn:aws:states:us-east-1:123456789012:execution:test-source-integration-IngestAndPublishGranule:fd0bc7b5-56c3-4e37-b445-8a25f27c06b8" + } +] diff --git a/cypress/integration/bulk_granules_spec.js b/cypress/integration/bulk_granules_spec.js index 7cacc7278..584647f55 100644 --- a/cypress/integration/bulk_granules_spec.js +++ b/cypress/integration/bulk_granules_spec.js @@ -109,12 +109,16 @@ describe('Dashboard Bulk Granules', () => { it('handles successful bulk granule reingest request', () => { const asyncOperationId = Math.random().toString(36).substring(2, 15); + const granuleIds = ['MOD09GQ.A9344328.K9yI3O.006.4625818663028', 'MOD09GQ.A2417309.YZ9tCV.006.4640974889044']; cy.intercept('POST', '/granules/bulkReingest', { id: asyncOperationId }).as('postBulkReingest'); cy.visit('/granules'); + cy.get(`[data-value="${granuleIds[0]}"] > .td >input[type="checkbox"]`).click(); + cy.get(`[data-value="${granuleIds[1]}"] > .td >input[type="checkbox"]`).click(); + cy.contains('button', 'Granule Actions').click(); cy.contains('button', 'Run Bulk Granules').click(); @@ -125,6 +129,9 @@ describe('Dashboard Bulk Granules', () => { cy.get('.bulk_granules--reingest') .within(() => { + cy.get('.form__dropdown .dropdown__element input').as('workflow-input'); + cy.get('@workflow-input').click({ force: true }).type('IngestAndPublish', { force: true }).type('{enter}'); + cy.get('.form__dropdown .dropdown__element').should('have.text', 'IngestAndPublishGranule'); cy.contains('button', 'Cancel Bulk Reingest'); cy.contains('button', 'Run Bulk Reingest').click(); }); diff --git a/cypress/integration/executions_spec.js b/cypress/integration/executions_spec.js index 11c880c9e..37d65b068 100644 --- a/cypress/integration/executions_spec.js +++ b/cypress/integration/executions_spec.js @@ -31,10 +31,10 @@ describe('Dashboard Executions Page', () => { // shows a summary count of completed and failed executions cy.get('.overview-num__wrapper ul li') - .first().contains('li', 'Completed').contains('li', 4) + .first().contains('li', 'Completed').contains('li', 6) .next() .contains('li', 'Failed') - .contains('li', 1) + .contains('li', 2) .next() .contains('li', 'Running') .contains('li', 1); @@ -65,11 +65,11 @@ describe('Dashboard Executions Page', () => { cy.get('@columns').eq(4).invoke('text') .should('be.eq', `${Number(execution.duration).toFixed(2)}s`); cy.get('@columns').eq(5).invoke('text') - .should('be.eq', execution.collectionId); + .should('be.eq', execution.collectionId || '--'); }); cy.get('.table .tbody .tr').as('list'); - cy.get('@list').should('have.length', 6); + cy.get('@list').should('have.length', 9); }); it('should show a single execution', () => { @@ -318,24 +318,14 @@ describe('Dashboard Executions Page', () => { }); it('should show executions for a granule/collection', () => { - cy.intercept( - { method: 'POST', url: 'http://localhost:5001/executions/search-by-granules*' }, - { fixture: 'executions-list.json', statusCode: 200 } - ); - - cy.visit('/executions/executions-list/MOD09GQ___006/MOD09GQ.A4622742.B7A8Ma.006.7857260550036'); - cy.url().should('include', 'executions-list'); + const granuleId = 'MOD09GQ.A9344328.K9yI3O.006.4625818663028'; + cy.visit(`/executions/executions-list/MOD09GQ___006/${granuleId}`); - // Should show Granule ID at the top - cy.get('.heading--large').should('contain.text', 'MOD09GQ.A4622742.B7A8Ma.006.7857260550036'); + cy.get('.heading--large').should('contain.text', granuleId); + cy.get('.num-title').should('contain.text', '3'); - // Should have the correct number of results displayed - cy.get('.num-title').should('contain.text', '6'); - - // Should have 6 columns with the correct headers cy.get('.thead .tr .tr').children().as('columns'); cy.get('@columns').should('have.length', 5); - cy.get('@columns').eq(0).should('have.text', 'Name'); cy.get('@columns').eq(1).should('have.text', 'Status'); cy.get('@columns').eq(2).should('have.text', 'Workflow'); diff --git a/cypress/integration/granules_spec.js b/cypress/integration/granules_spec.js index 64a7baa6d..cf3338a90 100644 --- a/cypress/integration/granules_spec.js +++ b/cypress/integration/granules_spec.js @@ -376,6 +376,28 @@ describe('Dashboard Granules Page', () => { cy.get('.table .tbody .tr').should('have.length', 2); }); + it('Should reingest a granule from granule details page.', () => { + const granuleId = 'MOD09GQ.A9344328.K9yI3O.006.4625818663028'; + cy.intercept( + { method: 'PUT', url: new RegExp('/granules/.*') }, + { body: { message: 'ingested' }, statusCode: 200 }, + ); + cy.intercept('GET', `/granules/${granuleId}*`).as('getGranule'); + + cy.visit(`/granules/granule/${granuleId}`); + cy.wait('@getGranule'); + cy.get('.heading--large').should('have.text', `Granule: ${granuleId}`); + cy.contains('button', 'Options').click(); + cy.get('.dropdown__menu').contains('Reingest').click(); + cy.get('.modal-body .form__dropdown .dropdown__element input').as('workflow-input'); + cy.get('@workflow-input').click({ force: true }).type('IngestAndPublish').type('{enter}'); + cy.get('.modal-body .form__dropdown .dropdown__element').should('have.text', 'IngestAndPublishGranule'); + cy.get('.button--submit').click(); + cy.get('.modal-content .modal-body .alert', { timeout: 10000 }).should('contain.text', 'Success'); + cy.get('.button--cancel').click(); + cy.url().should('include', `granules/granule/${granuleId}`); + }); + it('Should reingest a granule and redirect to the granules detail page.', () => { const granuleId = 'MOD09GQ.A0142558.ee5lpE.006.5112577830916'; cy.intercept( @@ -387,6 +409,9 @@ describe('Dashboard Granules Page', () => { cy.get(`[data-value="${granuleId}"] > .td >input[type="checkbox"]`).click(); cy.contains('button', 'Granule Actions').click(); cy.contains('button', 'Reingest').click(); + cy.get('.modal-body .form__dropdown .dropdown__element input').as('workflow-input'); + cy.get('@workflow-input').click({ force: true }).type('Discover').type('{enter}'); + cy.get('.modal-body .form__dropdown .dropdown__element').should('have.text', 'DiscoverAndQueuePdrs'); cy.get('.button--submit').click(); cy.get('.modal-content .modal-body .alert', { timeout: 10000 }).should('contain.text', 'Success'); cy.get('.button__goto').click(); diff --git a/cypress/integration/main_page_spec.js b/cypress/integration/main_page_spec.js index cd768d58f..3d770c885 100644 --- a/cypress/integration/main_page_spec.js +++ b/cypress/integration/main_page_spec.js @@ -174,7 +174,7 @@ describe('Dashboard Home Page', () => { cy.get('#Errors').contains('2'); cy.get('#Collections').contains('2'); cy.get('#Granules').contains('12'); - cy.get('#Executions').contains('6'); + cy.get('#Executions').contains('9'); cy.get('[id="Ingest Rules"]').contains('1'); // Test there are values in Granule Error list diff --git a/cypress/plugins/seedEverything.js b/cypress/plugins/seedEverything.js index 1bfad4394..dd5642f7d 100644 --- a/cypress/plugins/seedEverything.js +++ b/cypress/plugins/seedEverything.js @@ -13,6 +13,7 @@ const { const collections = require('../fixtures/seeds/collectionsFixture.json'); const executions = require('../fixtures/seeds/executionsFixture.json'); const granules = require('../fixtures/seeds/granulesFixture.json'); +const granulesExecutions = require('../fixtures/seeds/granulesExecutionsFixture.json'); const providers = require('../fixtures/seeds/providersFixture.json'); const rules = require('../fixtures/seeds/rulesFixture.json'); const pdrs = require('../fixtures/seeds/pdrsFixture.json'); @@ -80,6 +81,15 @@ function uploadReconciliationReportFiles() { ); } +function seedGranulesExecutions() { + const updatedGranules = granulesExecutions.map((granuleExecution) => { + const granule = granules.results.find((g) => g.granuleId === granuleExecution.granuleId); + const execution = executions.results.find((e) => e.arn === granuleExecution.executionArn); + return { ...granule, execution: execution.execution }; + }); + return serveUtils.addGranules(updatedGranules); +} + function seedEverything() { return Promise.all([ resetIt() @@ -88,6 +98,7 @@ function seedEverything() { .then(seedExecutions) .then(seedPdrs) .then(seedGranules) + .then(seedGranulesExecutions) .then(seedRules) .then(seedReconciliationReports), uploadReconciliationReportFiles(), diff --git a/test/components/ReingestGranules/BatchReingestConfirmContent.js b/test/components/ReingestGranules/BatchReingestConfirmContent.js index a30e236f7..f1793c3da 100644 --- a/test/components/ReingestGranules/BatchReingestConfirmContent.js +++ b/test/components/ReingestGranules/BatchReingestConfirmContent.js @@ -5,61 +5,66 @@ import Adapter from 'enzyme-adapter-react-16'; import React from 'react'; import { shallow, configure } from 'enzyme'; -import BatchReingestConfirmContent, { +import { BatchReingestConfirmContent, maxDisplayed } from '../../../app/src/js/components/ReingestGranules/BatchReingestConfirmContent'; configure({ adapter: new Adapter() }); +const granulesExecutions = { + workflows: { + data: ['fakeworkflow1', 'fakeworkflow2'] + } +}; + test('Renders successful results with multiple granules', (t) => { - const selected = ['granule-a', 'granule-b']; + const selected = [ + { granuleId: 'granule-a', collectionId: 'collection-a'}, + { granuleId: 'granule-b', collectionId: 'collection-b'}, + ]; - const wrapper = shallow(); + const wrapper = shallow( + ); - t.true( - wrapper - .text() - .includes( - 'You have submitted a request to reingest the following granules.' - ) - ); - t.true(wrapper.text().includes('you want to reingest these granules?')); + t.true(wrapper.text().includes('Selected granules:')); + t.true(wrapper.text().includes('Below you can select a specific workflow to apply to the selected granules.')); t.falsy(wrapper.text().match('and.*more.')); t.is(wrapper.find('ul').children().length, 2); }); test('Renders successful results with a single granule', (t) => { - const selected = ['granule-c']; + const selected = [ + { granuleId: 'granule-a', collectionId: 'collection-a'}, + ]; - const wrapper = shallow(); + const wrapper = shallow( + ); - t.true( - wrapper - .text() - .includes( - 'You have submitted a request to reingest the following granule.' - ) - ); - t.true(wrapper.text().includes('you want to reingest this granule?')); + t.true(wrapper.text().includes('Selected granule:')); + t.true(wrapper.text().includes('Below you can select a specific workflow to apply to the selected granule.')); t.falsy(wrapper.text().match('and.*more.')); t.is(wrapper.find('ul').children().length, 1); }); test('Abbreviates when number selected is greater than the maxDisplayed', (t) => { const selected = Array.from(Array(maxDisplayed + 5).keys()).map( - (t) => `granule-${t}` + (t) => ({ granuleId: `granule-${t}`, collectionId: `collection-${t}` }) ); - const wrapper = shallow(); + const wrapper = shallow( + ); - t.true( - wrapper - .text() - .includes( - 'You have submitted a request to reingest the following granules.' - ) - ); - t.true(wrapper.text().includes('you want to reingest these granules?')); + t.true(wrapper.text().includes('Selected granules:')); + t.true(wrapper.text().includes('Below you can select a specific workflow to apply to the selected granules.')); t.true(wrapper.text().includes('and 5 more.')); t.is(wrapper.find('ul').children().length, maxDisplayed + 1); }); diff --git a/test/components/granules/bulk-granule-modal.js b/test/components/granules/bulk-granule-modal.js index d5b88955c..95414b329 100644 --- a/test/components/granules/bulk-granule-modal.js +++ b/test/components/granules/bulk-granule-modal.js @@ -5,7 +5,7 @@ import Adapter from 'enzyme-adapter-react-16'; import React from 'react'; import { shallow, configure } from 'enzyme'; -import BulkGranuleModal from '../../../app/src/js/components/Granules/bulk-granule-modal.js'; +import { BulkGranuleModal } from '../../../app/src/js/components/Granules/bulk-granule-modal.js'; configure({ adapter: new Adapter() }); From 20bdf98c7df16aec4e5e37107d8fc20ab2a029c3 Mon Sep 17 00:00:00 2001 From: Matt Savoie Date: Tue, 5 Oct 2021 11:10:22 -0600 Subject: [PATCH 2/7] Update @cumulus/api to 9.7.0 and update README for releases (#1005) --- CHANGELOG.md | 7 +- README.md | 1 + package-lock.json | 1470 ++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 4 files changed, 1261 insertions(+), 219 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 459e222e4..c5e3d5e11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Reingest a granule from granule details page is updated to select a workflow execution arn for reingest. - Batch Reingest and Bulk Reingest Actions are updated to select the workflowName for reingest. -## [v7.0.0] +### Changed + +- **CUMULUS-NONE** + - update development version of @cumulus/api to v9.7.0 to pick up test fixes. + +## [v7.0.0] - 2021-10-04 ## Breaking Changes diff --git a/README.md b/README.md index b8bdb5896..f5ed42e53 100644 --- a/README.md +++ b/README.md @@ -386,6 +386,7 @@ Create and push a new git tag: ```bash $ git checkout master + $ git pull origin master $ git tag -a v1.x.x -m "Release 1.x.x" $ git push origin v1.x.x ``` diff --git a/package-lock.json b/package-lock.json index 9b71549b8..9b64442e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1343,31 +1343,31 @@ "dev": true }, "@cumulus/api": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/api/-/api-9.5.0.tgz", - "integrity": "sha512-CBUDE03uSnWK0K+dXVy1fKCiNzBR4YnZWWHjOdjb5im78IVeN3h5SX7wy5Rc4lpY9SJTe2dmE5PK86T6qsKNfg==", - "dev": true, - "requires": { - "@cumulus/api-client": "9.5.0", - "@cumulus/async-operations": "9.5.0", - "@cumulus/aws-client": "9.5.0", - "@cumulus/cmr-client": "9.5.0", - "@cumulus/cmrjs": "9.5.0", - "@cumulus/collection-config-store": "9.5.0", - "@cumulus/common": "9.5.0", - "@cumulus/db": "9.5.0", - "@cumulus/distribution-utils": "9.5.0", - "@cumulus/errors": "9.5.0", - "@cumulus/es-client": "9.5.0", - "@cumulus/ingest": "9.5.0", - "@cumulus/launchpad-auth": "9.5.0", - "@cumulus/logger": "9.5.0", - "@cumulus/message": "9.5.0", - "@cumulus/oauth-client": "9.5.0", - "@cumulus/object-store": "9.5.0", - "@cumulus/pvl": "9.5.0", - "@cumulus/sftp-client": "9.5.0", - "@cumulus/types": "9.5.0", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/api/-/api-9.7.0.tgz", + "integrity": "sha512-eGdBZrqOl58HKafiTPqEvmT+mU51D6rDDMTl55hFKis4ItkxadHav/0D1/WXSdbbzqoWKMwJ0jrm8JvgKnIt8Q==", + "dev": true, + "requires": { + "@cumulus/api-client": "9.7.0", + "@cumulus/async-operations": "9.7.0", + "@cumulus/aws-client": "9.7.0", + "@cumulus/cmr-client": "9.7.0", + "@cumulus/cmrjs": "9.7.0", + "@cumulus/collection-config-store": "9.7.0", + "@cumulus/common": "9.7.0", + "@cumulus/db": "9.7.0", + "@cumulus/distribution-utils": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/es-client": "9.7.0", + "@cumulus/ingest": "9.7.0", + "@cumulus/launchpad-auth": "9.7.0", + "@cumulus/logger": "9.7.0", + "@cumulus/message": "9.7.0", + "@cumulus/oauth-client": "9.7.0", + "@cumulus/object-store": "9.7.0", + "@cumulus/pvl": "9.7.0", + "@cumulus/sftp-client": "9.7.0", + "@cumulus/types": "9.7.0", "@mapbox/dyno": "^1.4.2", "aggregate-error": "^3.1.0", "ajv": "^6.12.3", @@ -1411,12 +1411,92 @@ "xml2js": "^0.4.22" }, "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + }, + "dependencies": { + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + } + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true }, + "json2csv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-4.5.4.tgz", + "integrity": "sha512-YxBhY4Lmn8IvVZ36nqg5omxneLy9JlorkqW1j/EDCeqvmi+CQ4uM+wsvXlcIqvGDewIPXMC/O/oF8DX9EH5aoA==", + "dev": true, + "requires": { + "commander": "^2.15.1", + "jsonparse": "^1.3.1", + "lodash.get": "^4.4.2" + } + }, "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", @@ -1447,6 +1527,12 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -1459,33 +1545,183 @@ } }, "@cumulus/api-client": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/api-client/-/api-client-9.5.0.tgz", - "integrity": "sha512-FAOD6olnMETR4IqHfxeEUe3ACR9vyCgCbMDaylE057jaR3Mz/zBYCw4jdUr0j23dGYoqA9318mp11H3r/Yagtw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/api-client/-/api-client-9.7.0.tgz", + "integrity": "sha512-X4jyLCEh26pZ6YtUoAZub16MLLeBeod9Y5ZSsGD7wH1/RryufPK5x7zaV8ObxJRTIKV7/ayNDifOjC7CM76PiQ==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/logger": "9.5.0", + "@cumulus/aws-client": "9.7.0", + "@cumulus/logger": "9.7.0", "p-retry": "^2.0.0" + }, + "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + }, + "dependencies": { + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + } + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } } }, "@cumulus/async-operations": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/async-operations/-/async-operations-9.5.0.tgz", - "integrity": "sha512-5xlCukMasOzBjmJfr3OzpcX/Q53RLcyao3XT0ZgpYWggyAGc5LSBYn0+dm3M+Gyp9tZ4hytjIKn5XlDhe1Q8HQ==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/async-operations/-/async-operations-9.7.0.tgz", + "integrity": "sha512-rSNce7M7nrmUFd0/4IkvtfZz5BL1C2Fp+yhzCIVeFaaXJbjJi5uOzhxVl2GHuE6mLAT3o3WQHCIw7quwJbkdBA==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/db": "9.5.0", - "@cumulus/errors": "9.5.0", - "@cumulus/types": "9.5.0", - "uuid": "8.3.1" + "@cumulus/aws-client": "9.7.0", + "@cumulus/db": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/types": "9.7.0", + "uuid": "8.3.2" }, "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, "uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true } } @@ -1551,32 +1787,107 @@ } }, "@cumulus/cmr-client": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/cmr-client/-/cmr-client-9.5.0.tgz", - "integrity": "sha512-X8YitITfvRGT07myuVmcXJVdYa9qcqzFjx129SAbg1LKZvJFVEQ9giMEHNiwmdOI5z6yPpXzEDvISh+juM5pNQ==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/cmr-client/-/cmr-client-9.7.0.tgz", + "integrity": "sha512-7AEt7c1LlIhQk8qsbakavCWkYJiSmUBgTSRmnbmgZXn61pIJMpGRVSnbZKsWmxpDmidMcqDsMpyGe84a0ZVOcw==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/errors": "9.5.0", - "@cumulus/logger": "9.5.0", + "@cumulus/aws-client": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", "got": "^11.7.0", "lodash": "^4.17.20", "public-ip": "^3.0.0", "xml2js": "^0.4.19" + }, + "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } } }, "@cumulus/cmrjs": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/cmrjs/-/cmrjs-9.5.0.tgz", - "integrity": "sha512-V+NQAwnp/7oHsbXDIg3NM1ExNh6xQAjyKu5IKXpqeGU4eWM8umBMsM42DXyCPBD0DvO6N+uwVriL+TF4hlY9tQ==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/cmrjs/-/cmrjs-9.7.0.tgz", + "integrity": "sha512-p96QYuSxVJirSUOZFVBoW25K9lvrw7PPcrPReLf6CVWYVsqNeVX2b6o6ZEThFR/yvA6eHXruDE+Quqzfm68EXQ==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/cmr-client": "9.5.0", - "@cumulus/common": "9.5.0", - "@cumulus/distribution-utils": "9.5.0", - "@cumulus/errors": "9.5.0", - "@cumulus/launchpad-auth": "9.5.0", + "@cumulus/aws-client": "9.7.0", + "@cumulus/cmr-client": "9.7.0", + "@cumulus/common": "9.7.0", + "@cumulus/distribution-utils": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/launchpad-auth": "9.7.0", "got": "^11.8.1", "js2xmlparser": "^4.0.0", "lodash": "^4.17.20", @@ -1585,6 +1896,79 @@ "xml2js": "^0.4.19" }, "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, "url-join": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", @@ -1594,24 +1978,99 @@ } }, "@cumulus/collection-config-store": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/collection-config-store/-/collection-config-store-9.5.0.tgz", - "integrity": "sha512-qaNfIB0PzrlBO7Hh+kq6XLL9uAl+GG4mjXNtLA9otKAdFH0oj57Lu8mxW4ceDBgaNPFy+7XnIv3jLPPfX0P1bQ==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/collection-config-store/-/collection-config-store-9.7.0.tgz", + "integrity": "sha512-UD9QNI8jZrkGbPZqdL+lpUKX7JaXvIPWj1TJyJ6kJXVvUUQLFo6NAxa0V8zUDUa/kqgqEiJaYbD9ThpPpf3sXQ==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/common": "9.5.0", - "@cumulus/message": "9.5.0" + "@cumulus/aws-client": "9.7.0", + "@cumulus/common": "9.7.0", + "@cumulus/message": "9.7.0" + }, + "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } } }, "@cumulus/common": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/common/-/common-9.5.0.tgz", - "integrity": "sha512-pEieZEO2Dwm4rlm5hxCC84W8MOAfZ+JqOUXPJyklFf8haHjz112IARs2A1EutDk6L7e/HhGmCP4Pqg5Z2l68Mw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/common/-/common-9.7.0.tgz", + "integrity": "sha512-p3qaQ3mJL1K4xzrE9kHSBjoWJXN7qT0mQL2XSQQPg8SNrvX7jnk6+7eK+FwFtEdf6comD5GWalskQzRQKV2s9Q==", "dev": true, "requires": { - "@cumulus/errors": "9.5.0", - "@cumulus/logger": "9.5.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", "ajv": "^6.12.3", "aws-sdk": "^2.585.0", "follow-redirects": "^1.2.4", @@ -1624,11 +2083,25 @@ "p-retry": "^4.2.0", "parseurl": "^1.3.3", "randexp": "^0.5.3", - "ssh2": "^0.8.7", "url-join": "^4.0.0", "uuid": "^3.2.1" }, "dependencies": { + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, "jsonpath-plus": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz", @@ -1660,17 +2133,17 @@ } }, "@cumulus/db": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/db/-/db-9.5.0.tgz", - "integrity": "sha512-98VKU6YbEC61zRFdgTDjDTI4JLmPlsa2Jb7Fh4K9QX5ySuFnjEmHKu76UvHxqaDELg+yzkAYNHhYp2RU6LCvOw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/db/-/db-9.7.0.tgz", + "integrity": "sha512-6V/h4OeYMQr6ciHhyYfhtkbJyEqQPlcksiJpalZCkHaCecXmRO0uRPeZ2hKIzA/YHTfewVvO3M+k+zkheSwriQ==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/common": "9.5.0", - "@cumulus/errors": "9.5.0", - "@cumulus/logger": "9.5.0", - "@cumulus/message": "9.5.0", - "@cumulus/types": "9.5.0", + "@cumulus/aws-client": "9.7.0", + "@cumulus/common": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "@cumulus/message": "9.7.0", + "@cumulus/types": "9.7.0", "crypto-random-string": "^3.2.0", "is-valid-hostname": "0.0.1", "knex": "0.21.13", @@ -1680,6 +2153,48 @@ "uuid": "8.3.1" }, "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, "crypto-random-string": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-3.3.1.tgz", @@ -1689,6 +2204,37 @@ "type-fest": "^0.8.1" } }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, "uuid": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", @@ -1698,17 +2244,90 @@ } }, "@cumulus/distribution-utils": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/distribution-utils/-/distribution-utils-9.5.0.tgz", - "integrity": "sha512-YCRnWRA2hunvYrH+tkQWWMimHfv2nvPAQh5Wi83AS5P/XKV1jzA2o8Ncm9CQINWx/kvLyJ7TbI5U49QOipdpKw==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/distribution-utils/-/distribution-utils-9.7.0.tgz", + "integrity": "sha512-rfeveWOQMswh8x0/cCbOl9/RdA0A13A2pkRUaCoyS8JN1P3C2m5mBNEdf0kId+5DmT3X8LSt47nQAAu35sX+nw==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/common": "9.5.0", - "@cumulus/errors": "9.5.0", + "@cumulus/aws-client": "9.7.0", + "@cumulus/common": "9.7.0", + "@cumulus/errors": "9.7.0", "url-join": "^1.1.0" }, "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, "url-join": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", @@ -1724,15 +2343,15 @@ "dev": true }, "@cumulus/es-client": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/es-client/-/es-client-9.5.0.tgz", - "integrity": "sha512-v1cFUbLOc4w8oP19kqE1n/b0EWwO2cxsYTANCnM/n9x6W4EiRkLakVT/cDnA1fYab/1lbz4K7ImHqom0muf6tg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/es-client/-/es-client-9.7.0.tgz", + "integrity": "sha512-s1X4Tm2v1zVhjLIQ0ycGFKsZyfnh7E6kK+ydnUIvTFVN0iqwB3RkcON4Y2d/ss3kSyVYrvcr4QwXhprPuli6Dw==", "dev": true, "requires": { - "@cumulus/common": "9.5.0", - "@cumulus/errors": "9.5.0", - "@cumulus/logger": "9.5.0", - "@cumulus/message": "9.5.0", + "@cumulus/common": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "@cumulus/message": "9.7.0", "@elastic/elasticsearch": "^5.6.20", "aws-elasticsearch-connector": "8.2.0", "aws-sdk": "^2.585.0", @@ -1741,6 +2360,21 @@ "p-limit": "^1.2.0" }, "dependencies": { + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, "moment": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", @@ -1765,17 +2399,18 @@ } }, "@cumulus/ingest": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/ingest/-/ingest-9.5.0.tgz", - "integrity": "sha512-m14lGv4SWbGRFxvHRCf8ngExTGOM4xwwcsi98tmbDOYpaHGVxklIwRgVpRf0mtXhdlWpxh6S7sZVUH3MsYnx9Q==", - "dev": true, - "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/common": "9.5.0", - "@cumulus/db": "9.5.0", - "@cumulus/errors": "9.5.0", - "@cumulus/message": "9.5.0", - "@cumulus/sftp-client": "9.5.0", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/ingest/-/ingest-9.7.0.tgz", + "integrity": "sha512-CKeYepfW2Nq+98bDQnMKIsZvByo3bfYtyuHtn8fDd7TzYGBXU8MLAcKokDZolvW/QzdkYTEGIruSbzOLRs29+w==", + "dev": true, + "requires": { + "@cumulus/aws-client": "9.7.0", + "@cumulus/common": "9.7.0", + "@cumulus/db": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "@cumulus/message": "9.7.0", + "@cumulus/sftp-client": "9.7.0", "aws-sdk": "^2.585.0", "cksum": "^1.3.0", "delay": "^4.3.0", @@ -1792,6 +2427,48 @@ "tough-cookie": "^4.0.0" }, "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, "ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", @@ -1813,38 +2490,144 @@ "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", "dev": true }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, + "@cumulus/launchpad-auth": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/launchpad-auth/-/launchpad-auth-9.7.0.tgz", + "integrity": "sha512-eVPJHFBDQG7dcQiVpCLpXNoMAgjfuUmLRSXiYpYKlmBd2FecLaId2MbagzpmWVqwFpCadTwH34JV8n7pWEf80g==", + "dev": true, + "requires": { + "@cumulus/aws-client": "9.7.0", + "@cumulus/logger": "9.7.0", + "got": "^11.7.0", + "lodash": "^4.17.20", + "uuid": "^3.2.1" + }, + "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", "dev": true, "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" + "p-timeout": "^3.0.0" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true } } }, - "@cumulus/launchpad-auth": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/launchpad-auth/-/launchpad-auth-9.5.0.tgz", - "integrity": "sha512-Ut6HdW5xzTtmmn+usbs/B5a+by2AL12w4QCY+LkKLiK5P5HP0omsH/SzWKgnytbvOP3n1nD2KbKQs9DCsynuZQ==", - "dev": true, - "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/logger": "9.5.0", - "got": "^11.7.0", - "lodash": "^4.17.20", - "uuid": "^3.2.1" - } - }, "@cumulus/logger": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.5.0.tgz", @@ -1855,27 +2638,108 @@ } }, "@cumulus/message": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/message/-/message-9.5.0.tgz", - "integrity": "sha512-IfkuQ0aAnIO7pL410tHS9wYtRulra6HLveW5lDfdNbw/5zJO7L04RmaH3V/NcInTgWlb/qg6c90tbq937b5TOQ==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/message/-/message-9.7.0.tgz", + "integrity": "sha512-FYfIULWmBxHJAQjWOzuobUre3pjzBHSDI/dZEqx810LLjhjUFIWb88lV0EMCT9zPPy+1C0Q1t0A41M8KKuF89Q==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/common": "9.5.0", - "@cumulus/errors": "9.5.0", - "@cumulus/logger": "9.5.0", - "@cumulus/types": "9.5.0", + "@cumulus/aws-client": "9.7.0", + "@cumulus/common": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "@cumulus/types": "9.7.0", "jsonpath-plus": "^3.0.0", "lodash": "^4.17.20", "uuid": "^8.2.0" }, "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + }, + "dependencies": { + "jsonpath-plus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-1.1.0.tgz", + "integrity": "sha512-ydqTBOuLcFCUr9e7AxJlKCFgxzEQ03HjnIim0hJSdk2NxD8MOsaMOrRgP6XWEm5q3VuDY5+cRT1DM9vLlGo/qA==", + "dev": true + } + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, "jsonpath-plus": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-3.0.0.tgz", "integrity": "sha512-WQwgWEBgn+SJU1tlDa/GiY5/ngRpa9yrSj8n4BYPHcwoxTDaMEaYCHMOn42hIHHDd3CrUoRr3+HpsK0hCKoxzA==", "dev": true }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -1885,49 +2749,200 @@ } }, "@cumulus/oauth-client": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/oauth-client/-/oauth-client-9.5.0.tgz", - "integrity": "sha512-kGq7K4kgvq0EmydR/Eq96Alf/Foh9+5xBiGZaZdpz67W+My3jwta/JYg3JAhYLKLBBtvZ5zo4g+858DgM2xNSQ==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/oauth-client/-/oauth-client-9.7.0.tgz", + "integrity": "sha512-7SWURTtJGWEIQpjiEHa/Mf4ipMGRkUMSa3DDEq8dMfaQrQlNSbXdhubKeCLLifuPHhJHIYXaJFWODX8Imjfb7g==", "dev": true, "requires": { "got": "^11.7.0" } }, "@cumulus/object-store": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/object-store/-/object-store-9.5.0.tgz", - "integrity": "sha512-3Lk+nmzjLqe5vwcH/nnwKtPfqsexs/9tDZ8vMoRkoElY7kaKPROSsO6QoqKlDXX6TDNpGeGBJXxdT7g6EfMXAg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/object-store/-/object-store-9.7.0.tgz", + "integrity": "sha512-W7QU1YdUtdeD9HsjI/yjUIFDcjVIcx14m7mL/t1+MDW5WnsURPJ9fWIyeoVWzopo0hPjSj1Mgjb5QpSEN+m5LQ==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0" + "@cumulus/aws-client": "9.7.0" + }, + "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } } }, "@cumulus/pvl": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/pvl/-/pvl-9.5.0.tgz", - "integrity": "sha512-qwgoJdKHbbSp8sdJhphlLuP73c0PfkzlNaXSmCC+zJVeFkyr87F30k8Ovx7ntnNTfOVCSnfYPhOImH1dkfDisg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/pvl/-/pvl-9.7.0.tgz", + "integrity": "sha512-iILA8GtPLX0c7WPPiWKLV7b+vycRRzuUQSW5yxdazcd4+5+BsDsj0HChQtIKiC6q53vq/qF0fj19AARNoW20aQ==", "dev": true, "requires": { "lodash": "^4.17.20" } }, "@cumulus/sftp-client": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/sftp-client/-/sftp-client-9.5.0.tgz", - "integrity": "sha512-YqX8qEhgdrmR43Fv19H6ID2B9IY44/hSw9yDVMOJjWpxlDocDdy/nonysMpq7FXAI/euwyFly5Xc2otYGdgFeg==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/sftp-client/-/sftp-client-9.7.0.tgz", + "integrity": "sha512-XVkVZxw5rVtok/KwCqQkuMK+T5DHF2FfKnCDTFMuX6iDafm+5kcMUyRKXVuBnvc+fXEDc//ayFBvmGC6hz5A5w==", "dev": true, "requires": { - "@cumulus/aws-client": "9.5.0", - "@cumulus/common": "9.5.0", + "@cumulus/aws-client": "9.7.0", + "@cumulus/common": "9.7.0", "lodash": "^4.17.20", "mime-types": "^2.1.27", - "ssh2-sftp-client": "^5.2.1" + "ssh2": "^1.0.0", + "ssh2-sftp-client": "^7.0.4" + }, + "dependencies": { + "@cumulus/aws-client": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", + "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "dev": true, + "requires": { + "@cumulus/checksum": "9.7.0", + "@cumulus/errors": "9.7.0", + "@cumulus/logger": "9.7.0", + "aws-sdk": "^2.814.0", + "jsonpath-plus": "^1.1.0", + "lodash": "~4.17.20", + "p-map": "^1.2.0", + "p-retry": "^4.2.0", + "p-wait-for": "^3.1.0", + "pump": "^3.0.0" + } + }, + "@cumulus/checksum": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", + "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "dev": true, + "requires": { + "cksum": "^1.3.0" + } + }, + "@cumulus/errors": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", + "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "dev": true + }, + "@cumulus/logger": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", + "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "dev": true, + "requires": { + "lodash.iserror": "^3.1.1" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-wait-for": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-3.2.0.tgz", + "integrity": "sha512-wpgERjNkLrBiFmkMEjuZJEWKKDrNfHCKA1OhyN1wg1FrLkULbviEy6py1AyJUgZ72YWFbZ38FIpnqvVqAlDUwA==", + "dev": true, + "requires": { + "p-timeout": "^3.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } } }, "@cumulus/types": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/@cumulus/types/-/types-9.5.0.tgz", - "integrity": "sha512-AsttCNz8rd6gxIoX4HAx2vv0avIwb1dXohI3QHUZgWiWro1A/3UIZxGkff0JL8mGFoBqqd4AF7q8/7DS+Lzp5Q==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@cumulus/types/-/types-9.7.0.tgz", + "integrity": "sha512-RzX/vkFpqx+G/bubXuVnLRGVLXIW6/d06tvCl7qnDR0kAiMVX/s9E4DARveko6XS/25bOKNk0a9c0xvAMsJheA==", "dev": true }, "@cypress/listr-verbose-renderer": { @@ -2212,18 +3227,18 @@ "dev": true }, "@mapbox/dyno": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@mapbox/dyno/-/dyno-1.4.2.tgz", - "integrity": "sha512-HgKMpypbP6MnN2EzwufZa3bbEX6C0KMqTIk2hESswBC+3XFFf6rNI866u8KqJAXKxe0szDerrekrrFkq7u34hg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@mapbox/dyno/-/dyno-1.5.0.tgz", + "integrity": "sha512-lK7QzxKCT/3KvvjqXeQzprE0SkaqjJEkmMXPIL6p5mR/i740WpKdYEWmz82ubjaPFSW6WGMZ8iP1qqIcftMZBw==", "dev": true, "requires": { "aws-sdk": "^2.7.2", "big.js": "^3.1.3", "event-stream": "3.3.4", - "minimist": "^1.1.0", + "minimist": "^1.2.5", "parallel-stream": "^1.1.2", "queue-async": "~1.0.7", - "underscore": "1.6.0" + "underscore": "^1.13.1" } }, "@nodelib/fs.scandir": { @@ -5981,6 +6996,16 @@ "yaml": "^1.7.2" } }, + "cpu-features": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.2.tgz", + "integrity": "sha512-/2yieBqvMcRj8McNzkycjW2v3OIUOibBfd2dLEJ0nWts8NobAxwiyw9phVNS6oDL8x8tz9F7uNVFEVpJncQpeA==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.14.1" + } + }, "create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -7946,6 +8971,12 @@ "integrity": "sha1-IcoRLUirJLTh5//A5TOdMf38J0w=", "dev": true }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, "errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -11979,25 +13010,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json2csv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-4.5.4.tgz", - "integrity": "sha512-YxBhY4Lmn8IvVZ36nqg5omxneLy9JlorkqW1j/EDCeqvmi+CQ4uM+wsvXlcIqvGDewIPXMC/O/oF8DX9EH5aoA==", - "dev": true, - "requires": { - "commander": "^2.15.1", - "jsonparse": "^1.3.1", - "lodash.get": "^4.4.2" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - } - } - }, "json3": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", @@ -13538,10 +14550,37 @@ } }, "node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==", - "dev": true + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.5.tgz", + "integrity": "sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } }, "node-forge": { "version": "0.10.0", @@ -19233,6 +20272,16 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "dev": true }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, "prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", @@ -20933,14 +21982,6 @@ "xml2js": "^0.4.0", "xmlbuilder2": "^2.4.0", "xmldom": "^0.4.0" - }, - "dependencies": { - "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", - "dev": true - } } }, "sass": { @@ -21766,23 +22807,35 @@ "dev": true }, "ssh2": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.8.9.tgz", - "integrity": "sha512-GmoNPxWDMkVpMFa9LVVzQZHF6EW3WKmBwL+4/GeILf2hFmix5Isxm7Amamo8o7bHiU0tC+wXsGcUXOxp8ChPaw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.4.0.tgz", + "integrity": "sha512-XvXwcXKvS452DyQvCa6Ct+chpucwc/UyxgliYz+rWXJ3jDHdtBb9xgmxJdMmnIn5bpgGAEV3KaEsH98ZGPHqwg==", "dev": true, "requires": { - "ssh2-streams": "~0.4.10" + "asn1": "^0.2.4", + "bcrypt-pbkdf": "^1.0.2", + "cpu-features": "0.0.2", + "nan": "^2.15.0" + }, + "dependencies": { + "nan": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", + "dev": true, + "optional": true + } } }, "ssh2-sftp-client": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-5.3.2.tgz", - "integrity": "sha512-YD38WQKleuapAZyvqRJq7PN8pC6GnzWdWcnZN4vsPXMHtZpjcg/ipBcFGtDsC5rkHp5qXgRu56WPcDUkM87FiA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-7.0.4.tgz", + "integrity": "sha512-4fFSTgoYlzcAtGfEjiXN6N41s1jSUmPlI00f7uD7pQOjt9yK9susminINKTRvPp35dkrATrlNZVhUxNCt3z5+w==", "dev": true, "requires": { "concat-stream": "^2.0.0", - "retry": "^0.12.0", - "ssh2": "^0.8.9" + "promise-retry": "^2.0.1", + "ssh2": "^1.4.0" }, "dependencies": { "concat-stream": { @@ -21816,17 +22869,6 @@ } } }, - "ssh2-streams": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/ssh2-streams/-/ssh2-streams-0.4.10.tgz", - "integrity": "sha512-8pnlMjvnIZJvmTzUIIA5nT4jr2ZWNNVHwyXfMGdRJbug9TpI3kd99ffglgfSWqujVv/0gxwMsDn9j9RVst8yhQ==", - "dev": true, - "requires": { - "asn1": "~0.2.0", - "bcrypt-pbkdf": "^1.0.2", - "streamsearch": "~0.1.2" - } - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -21966,12 +23008,6 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, - "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", - "dev": true - }, "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -22857,9 +23893,9 @@ } }, "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", + "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", "dev": true }, "unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index 6ac3c7377..4bfa58b00 100644 --- a/package.json +++ b/package.json @@ -68,8 +68,8 @@ "@babel/preset-react": "^7.10.4", "@babel/register": "^7.12.0", "@babel/runtime": "^7.12.0", + "@cumulus/api": "9.7.0", "@cumulus/aws-client": "9.5.0", - "@cumulus/api": "9.5.0", "@cypress/webpack-preprocessor": "^4.1.5", "audit-ci": "^3.1.1", "autoprefixer": "^9.8.6", From 3c6c1c3bb260d508a5e4b293626984215e5b711d Mon Sep 17 00:00:00 2001 From: Danielle Peters Date: Tue, 5 Oct 2021 15:55:58 -0400 Subject: [PATCH 3/7] [CUMULUS-2585] Add execution events snapshot to executions page (#991) Co-authored-by: Anthony Ortega Co-authored-by: Anthony Ortega <33133876+jaortega527@users.noreply.github.com> --- CHANGELOG.md | 2 + app/src/css/modules/_table.scss | 22 +++-- app/src/js/actions/index.js | 4 +- .../components/Executions/execution-events.js | 15 +-- .../Executions/execution-snapshot.js | 62 ++++++++++++ .../components/Executions/executions-list.js | 27 +++-- app/src/js/components/Granules/granule.js | 16 +-- .../ReconciliationReports/gnf-report.js | 1 - .../ReconciliationReports/inventory-report.js | 1 - .../components/SortableTable/SortableTable.js | 99 +++++++++++-------- app/src/js/components/Table/Table.js | 6 +- app/src/js/components/Table/TableFilters.js | 4 - app/src/js/reducers/execution-status.js | 13 ++- app/src/js/reducers/executions.js | 20 ++-- .../js/utils/table-config/executions-list.js | 14 +++ app/src/js/utils/table-config/executions.js | 78 ++++++++++++++- audit-ci.json | 2 +- cypress/integration/executions_spec.js | 8 +- test/components/granules/granule.js | 2 + 19 files changed, 296 insertions(+), 100 deletions(-) create mode 100644 app/src/js/components/Executions/execution-snapshot.js diff --git a/CHANGELOG.md b/CHANGELOG.md index c5e3d5e11..6614f1873 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - **CUMULUS-2462** - Reingest a granule from granule details page is updated to select a workflow execution arn for reingest. - Batch Reingest and Bulk Reingest Actions are updated to select the workflowName for reingest. +- **CUMULUS-2585** + - Added failed execution step snapshot to execution list ### Changed diff --git a/app/src/css/modules/_table.scss b/app/src/css/modules/_table.scss index 409c61631..8565d64f4 100644 --- a/app/src/css/modules/_table.scss +++ b/app/src/css/modules/_table.scss @@ -7,12 +7,13 @@ } .table { - width: 100%; - line-height: 1.6em; - overflow-x: scroll; - border-radius: 8px 8px 0px 0px; - scroll-behavior: smooth; - // transform: translate3d(0px, -200px, 0px); + &:not(.sub-table) { + width: 100%; + line-height: 1.6em; + overflow-x: scroll; + border-radius: 8px 8px 0px 0px; + scroll-behavior: smooth; + } .content-fit { width: fit-content!important; @@ -44,7 +45,7 @@ } .tbody { - .tr { + & > .tr { border-bottom: 1px solid $lightest-grey; .td { font-size: .86em; @@ -85,6 +86,13 @@ } } +.sub-table { + .thead .th { + background-color: $background-white; + color: $black; + } +} + .table__header { display: flex; align-items: center; diff --git a/app/src/js/actions/index.js b/app/src/js/actions/index.js index a363f2e10..64b6fabc9 100644 --- a/app/src/js/actions/index.js +++ b/app/src/js/actions/index.js @@ -743,6 +743,7 @@ export const getExecutionStatus = (arn) => ({ [CALL_API]: { type: types.EXECUTION_STATUS, method: 'GET', + id: arn, url: new URL(`executions/status/${arn}`, root).href } }); @@ -767,10 +768,11 @@ export const listExecutions = (options) => (dispatch, getState) => { }); }; -export const listExecutionsByGranule = (payload) => ({ +export const listExecutionsByGranule = (granuleId, payload) => ({ [CALL_API]: { type: types.EXECUTIONS_LIST, method: 'POST', + id: granuleId, path: 'executions/search-by-granules', params: { limit: defaultPageLimit }, data: payload diff --git a/app/src/js/components/Executions/execution-events.js b/app/src/js/components/Executions/execution-events.js index 7e3a7e913..b04c1f2ad 100644 --- a/app/src/js/components/Executions/execution-events.js +++ b/app/src/js/components/Executions/execution-events.js @@ -2,7 +2,6 @@ import React, { useEffect } from 'react'; import { Helmet } from 'react-helmet'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; -import cloneDeep from 'lodash/cloneDeep'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons'; import { withRouter } from 'react-router-dom'; @@ -18,9 +17,9 @@ import { tableColumns } from '../../utils/table-config/execution-status'; import ErrorReport from '../Errors/report'; import Search from '../Search/search'; -import { getEventDetails } from './execution-graph-utils'; import SortableTable from '../SortableTable/SortableTable'; import ListFilters from '../ListActions/ListFilters'; +import { formatEvents } from '../../utils/table-config/executions'; const ExecutionEvents = ({ dispatch, @@ -33,15 +32,7 @@ const ExecutionEvents = ({ const { search } = location; const { error, execution, executionHistory, stateMachine } = executionStatus || {}; const { events } = executionHistory || {}; - const mutableEvents = cloneDeep(events); - if (mutableEvents) { - mutableEvents.forEach((event, index, eventsArray) => { - event.eventDetails = getEventDetails(event); - if (index === 0 || event.name || !event.type.match('LambdaFunction')) return; - const prevStep = eventsArray[index - 1]; - event.name = prevStep.name; - }); - } + const formattedEvents = formatEvents(events); useEffect(() => { dispatch(getCumulusInstanceMetadata()); @@ -113,7 +104,7 @@ const ExecutionEvents = ({ (a.id > b.id ? 1 : -1))} + data={formattedEvents.sort((a, b) => (a.id > b.id ? 1 : -1))} tableColumns={tableColumns} rowId='id' /> diff --git a/app/src/js/components/Executions/execution-snapshot.js b/app/src/js/components/Executions/execution-snapshot.js new file mode 100644 index 000000000..26295d432 --- /dev/null +++ b/app/src/js/components/Executions/execution-snapshot.js @@ -0,0 +1,62 @@ +import React, { useEffect } from 'react'; +import PropTypes from 'prop-types'; +import { connect } from 'react-redux'; +import { Alert } from 'react-bootstrap'; +import SortableTable from '../SortableTable/SortableTable'; +import { getExecutionStatus } from '../../actions'; +import { formatEvents, subColumns } from '../../utils/table-config/executions'; + +const ExecutionSnapshot = ({ + dispatch, + executionStatus, + row, +}) => { + const { original: { arn }, isExpanded } = row || {}; + const { map } = executionStatus || {}; + const currentExecutionStatus = map ? map[arn] : {}; + const { execution, executionHistory, inflight, warning, error } = currentExecutionStatus || {}; + const { events } = executionHistory || {}; + const hasEvents = events?.length > 1; + + useEffect(() => { + if (isExpanded && !currentExecutionStatus) { + dispatch(getExecutionStatus(arn)); + } + }, [dispatch, arn, isExpanded, currentExecutionStatus]); + + if (!inflight && !execution) return null; + + return ( + <> + {inflight && Fetching snapshot...} + {(isExpanded && !inflight) && + <> + {hasEvents && + } + {warning && {warning}} + {error && {error}} + + } + + ); +}; + +ExecutionSnapshot.propTypes = { + dispatch: PropTypes.func, + executionStatus: PropTypes.shape({ + executionHistory: PropTypes.shape({ + events: PropTypes.array + }) + }), + row: PropTypes.object +}; + +export default connect((state) => ({ + executionStatus: state.executionStatus, +}))(ExecutionSnapshot); diff --git a/app/src/js/components/Executions/executions-list.js b/app/src/js/components/Executions/executions-list.js index 7851fd05f..77e905862 100644 --- a/app/src/js/components/Executions/executions-list.js +++ b/app/src/js/components/Executions/executions-list.js @@ -2,12 +2,12 @@ import React from 'react'; import { Helmet } from 'react-helmet'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; -import { withRouter } from 'react-router-dom'; -import { Link } from 'react-router-dom'; -import Breadcrumbs from '../Breadcrumbs/Breadcrumbs'; +import { Link, withRouter } from 'react-router-dom'; import { listExecutionsByGranule } from '../../actions'; -import List from '../Table/Table'; import { tableColumns } from '../../utils/table-config/executions-list'; +import Breadcrumbs from '../Breadcrumbs/Breadcrumbs'; +import List from '../Table/Table'; +import ExecutionSnapshot from './execution-snapshot'; const breadcrumbConfig = [ { @@ -28,9 +28,11 @@ const ExecutionsList = ({ match, executions }) => { - const { list } = executions || { list: { meta: { count: 0 }, results: [] } }; const { params } = match || {}; const { collectionId, granuleId } = params; + const { map } = executions || {}; + const granuleExecutionslist = map[granuleId] || {}; + const { meta } = granuleExecutionslist; const payload = { granules: [ @@ -41,6 +43,12 @@ const ExecutionsList = ({ ], }; + function renderRowSubComponent(row) { + return ( + + ); + } + return (
    @@ -62,13 +70,16 @@ const ExecutionsList = ({

    Total Executions - {list.meta.count || 0} + {meta?.count || 0}

    listExecutionsByGranule(payload))} + action={() => listExecutionsByGranule(granuleId, payload)} + rowId='name' + initialSortId='updatedAt' + renderRowSubComponent={renderRowSubComponent} >
    diff --git a/app/src/js/components/Granules/granule.js b/app/src/js/components/Granules/granule.js index 3df12f0e3..235c36855 100644 --- a/app/src/js/components/Granules/granule.js +++ b/app/src/js/components/Granules/granule.js @@ -175,7 +175,7 @@ class GranuleOverview extends React.Component { dispatch(getGranule(granuleId, { getRecoveryStatus })) .then((granuleResponse) => { const payload = { granules: [pick(granuleResponse.data, ['granuleId', 'collectionId'])] }; - dispatch(listExecutionsByGranule(payload)); + dispatch(listExecutionsByGranule(granuleId, payload)); }); } @@ -248,11 +248,13 @@ class GranuleOverview extends React.Component { } getReingestOptions() { - const { granuleId } = this.props.match.params; - const granExecutions = get(this.props.executions, 'list.data', []); - const reingestExecutionOptions = granExecutions + const { match, executions } = this.props; + const { granuleId } = match.params; + const granuleExecutions = executions.map?.[granuleId] || {}; + const { data: granuleExecutionsList = [], error } = granuleExecutions || {}; + const reingestExecutionOptions = granuleExecutionsList .map((execution) => ({ - label: `${execution.type}${(execution.arn === granExecutions[0].arn) ? ' (default)' : ''}`, + label: `${execution.type}${(execution.arn === granuleExecutionsList[0].arn) ? ' (default)' : ''}`, value: execution.arn })); @@ -265,8 +267,8 @@ class GranuleOverview extends React.Component { Below you can select a specific workflow to apply to this selected granule. Note: The default is the latest workflow.

    - {get(this.props.executions, 'list.error') && - } + {error && + }
    { @@ -132,6 +135,7 @@ const SortableTable = ({ useFlexLayout, // this allows table to have dynamic layouts outside of standard table markup useResizeColumns, // this allows for resizing columns useSortBy, // this allows for sorting + useExpanded, // this allows for expandable rows usePagination, useRowSelect, // this allows for checkbox in table (hooks) => { @@ -155,17 +159,19 @@ const SortableTable = ({ ); const dispatch = useDispatch(); const tableRows = page || rows; - const includeFilters = typeof getToggleColumnOptions !== 'function'; + // We only include filters if not wrapped in list component and hideFilter is false + const wrappedInList = typeof getToggleColumnOptions === 'function'; + const includeFilters = !wrappedInList && !hideFilters; const tableRef = createRef(); const scrollLeftButton = createRef(); const scrollRightButton = createRef(); useEffect(() => { - if (clearSelected) { + if (canSelect && clearSelected) { toggleAllRowsSelected(false); } - }, [clearSelected, toggleAllRowsSelected]); + }, [canSelect, clearSelected, toggleAllRowsSelected]); useEffect(() => { const selected = Object.keys(selectedRowIds).reduce((selectedRows, key) => { @@ -193,13 +199,13 @@ const SortableTable = ({ }, [changeSortProps, sortBy]); useEffect(() => { - if (typeof getToggleColumnOptions === 'function') { + if (wrappedInList) { getToggleColumnOptions({ setHiddenColumns, hiddenColumns }); } - }, [getToggleColumnOptions, hiddenColumns, setHiddenColumns]); + }, [getToggleColumnOptions, hiddenColumns, setHiddenColumns, wrappedInList]); function resetHiddenColumns() { setHiddenColumns(initialHiddenColumns); @@ -221,21 +227,21 @@ const SortableTable = ({ } function handleTableColumnMouseEnter(event) { - if ((event.target.className.includes('th') || event.target.className.includes('td')) && !checkInView(tableRef.current, event.target.nextSibling, false)) { + if ((event.target?.className.includes('th') || event.target?.className.includes('td')) && !checkInView(tableRef.current, event.target.nextSibling, false)) { showScrollRightButton(event); } - if ((event.target.className.includes('th') || event.target.className.includes('td')) && !checkInView(tableRef.current, event.target.previousSibling, false)) { + if ((event.target?.className.includes('th') || event.target?.className.includes('td')) && !checkInView(tableRef.current, event.target.previousSibling, false)) { showScrollLeftButton(event); } } function handleTableColumnMouseLeave(event) { - if ((event.target.className.includes('th') || event.target.className.includes('td')) && !checkInView(tableRef.current, event.target.nextSibling, false)) { + if ((event.target?.className.includes('th') || event.target?.className.includes('td')) && !checkInView(tableRef.current, event.target.nextSibling, false)) { hideScrollRightButton(); } - if ((event.target.className.includes('th') || event.target.className.includes('td')) && !checkInView(tableRef.current, event.target.previousSibling, false)) { + if ((event.target?.className.includes('th') || event.target?.className.includes('td')) && !checkInView(tableRef.current, event.target.previousSibling, false)) { hideScrollLeftButton(); } } @@ -336,7 +342,8 @@ const SortableTable = ({ {(includeFilters || legend) && {includeFilters && - } -
    +
    {headerGroups.map((headerGroup) => ( @@ -411,35 +418,42 @@ const SortableTable = ({ {tableRows.map((row, i) => { prepareRow(row); return ( -
    - {row.cells.map((cell, cellIndex) => { - const primaryIdx = canSelect ? 1 : 0; - const wrapperClassNames = classNames( - 'td', - { - 'table__main-asset': cellIndex === primaryIdx, - table__checkbox: canSelect && cellIndex === 0, - } - ); - - const { style, ...restCellProps } = cell.getCellProps(); - const columnWidth = fitColumn[cell.column.id]; - if (columnWidth) style.width = `${columnWidth}px`; - - return ( -
    handleTableColumnMouseEnter(e)} - onMouseLeave={(e) => handleTableColumnMouseLeave(e)} - > - {cell.render('Cell')} -
    - ); - })} -
    + +
    + {row.cells.map((cell, cellIndex) => { + const primaryIdx = canSelect ? 1 : 0; + const wrapperClassNames = classNames( + 'td', + { + 'table__main-asset': cellIndex === primaryIdx, + table__checkbox: canSelect && cellIndex === 0, + } + ); + + const { style, ...restCellProps } = cell.getCellProps(); + const columnWidth = fitColumn[cell.column.id]; + if (columnWidth) style.width = `${columnWidth}px`; + + return ( +
    handleTableColumnMouseEnter(e)} + onMouseLeave={(e) => handleTableColumnMouseLeave(e)} + > + {cell.render('Cell')} +
    + ); + })} +
    + + {renderRowSubComponent && + <>{renderRowSubComponent(row)} + } + +
    ); })}
    @@ -493,9 +507,11 @@ const SortableTable = ({ SortableTable.propTypes = { canSelect: PropTypes.bool, changeSortProps: PropTypes.func, + className: PropTypes.string, clearSelected: PropTypes.bool, data: PropTypes.array, getToggleColumnOptions: PropTypes.func, + hideFilters: PropTypes.bool, initialHiddenColumns: PropTypes.array, initialSortId: PropTypes.string, legend: PropTypes.node, @@ -504,6 +520,7 @@ SortableTable.propTypes = { shouldManualSort: PropTypes.bool, shouldUsePagination: PropTypes.bool, tableColumns: PropTypes.array, + renderRowSubComponent: PropTypes.func, tableId: PropTypes.string, initialSortBy: PropTypes.array, }; diff --git a/app/src/js/components/Table/Table.js b/app/src/js/components/Table/Table.js index 30f4faeec..3779f3449 100644 --- a/app/src/js/components/Table/Table.js +++ b/app/src/js/components/Table/Table.js @@ -39,6 +39,7 @@ const List = ({ onSelect, query, queryParams, + renderRowSubComponent, rowId, sorts, tableColumns, @@ -52,7 +53,7 @@ const List = ({ meta, } = list; const { count, limit } = meta || {}; - const tableData = data || listData; + const tableData = data || listData || []; const [selected, setSelected] = useState([]); const [clearSelected, setClearSelected] = useState(false); @@ -70,7 +71,6 @@ const List = ({ bulkActionError: null, }); const [toggleColumnOptions, setToggleColumnOptions] = useState({ - onChange: noop, hiddenColumns: initialHiddenColumns, setHiddenColumns: noop, }); @@ -252,6 +252,7 @@ const List = ({ // according to that id, and therefore we are using sever-side/manual sorting shouldManualSort={!!initialSortId} getToggleColumnOptions={getToggleColumnOptions} + renderRowSubComponent={renderRowSubComponent} tableId={tableId} initialSortBy={sortBy} /> @@ -291,6 +292,7 @@ List.propTypes = { tableColumns: PropTypes.array, onSelect: PropTypes.func, queryParams: PropTypes.object, + renderRowSubComponent: PropTypes.func, tableId: PropTypes.string, sorts: PropTypes.object, }; diff --git a/app/src/js/components/Table/TableFilters.js b/app/src/js/components/Table/TableFilters.js index 6fbe9444d..655e09170 100644 --- a/app/src/js/components/Table/TableFilters.js +++ b/app/src/js/components/Table/TableFilters.js @@ -12,10 +12,6 @@ const TableFilters = ({ columns = [], setHiddenColumns, hiddenColumns = [], init } else { setLocalHiddenColumns(localHiddenColumns.concat(id)); } - - // if (typeof onChange === 'function') { - // onChange(id); - // } } function handleResetHiddenColumns() { diff --git a/app/src/js/reducers/execution-status.js b/app/src/js/reducers/execution-status.js index 738bc9610..ee99a1243 100644 --- a/app/src/js/reducers/execution-status.js +++ b/app/src/js/reducers/execution-status.js @@ -15,6 +15,7 @@ export const initialState = { inflight: false, error: false, meta: {}, + map: {} }; const typeContains = (string) => ({ type }) => type.toLowerCase().includes(string.toLowerCase()); @@ -27,19 +28,29 @@ export default createReducer(initialState, { state.execution = data.execution; state.executionHistory = data.executionHistory; state.stateMachine = data.stateMachine; + state.warning = data.warning; if (state.searchString) { state.executionHistory.events = data.executionHistory.events.filter( typeContains(state.searchString) ); } + + const { map, ...restOfState } = state; + + state.map[action.id] = restOfState; }, - [EXECUTION_STATUS_INFLIGHT]: (state) => { + [EXECUTION_STATUS_INFLIGHT]: (state, action) => { state.inflight = true; + state.map[action.id] = { inflight: true }; }, [EXECUTION_STATUS_ERROR]: (state, action) => { state.inflight = false; state.error = action.error; + state.map[action.id] = { + inflight: false, + error: action.error, + }; }, [SEARCH_EXECUTION_EVENTS]: (state, action) => { state.searchString = action.searchString; diff --git a/app/src/js/reducers/executions.js b/app/src/js/reducers/executions.js index ac9b87bb6..4ff94864a 100644 --- a/app/src/js/reducers/executions.js +++ b/app/src/js/reducers/executions.js @@ -51,16 +51,20 @@ export default createReducer(initialState, { state.list.infix = null; }, [EXECUTIONS_LIST]: (state, action) => { - state.list.data = action.data.results; - state.list.meta = assignDate(action.data.meta); - state.list.inflight = false; - state.list.error = false; + state.map[action.id] = { + data: action.data.results, + meta: assignDate(action.data.meta), + inflight: false, + error: false, + }; }, - [EXECUTIONS_LIST_INFLIGHT]: (state) => { - state.list.inflight = true; + [EXECUTIONS_LIST_INFLIGHT]: (state, action) => { + state.map[action.id] = { inflight: true }; }, [EXECUTIONS_LIST_ERROR]: (state, action) => { - state.list.inflight = false; - state.list.error = action.error; + state.map[action.id] = { + inflight: false, + error: action.error, + }; }, }); diff --git a/app/src/js/utils/table-config/executions-list.js b/app/src/js/utils/table-config/executions-list.js index 0a766c076..bca2f8a7f 100644 --- a/app/src/js/utils/table-config/executions-list.js +++ b/app/src/js/utils/table-config/executions-list.js @@ -1,5 +1,7 @@ import React from 'react'; import { Link } from 'react-router-dom'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faChevronCircleDown, faChevronCircleUp } from '@fortawesome/free-solid-svg-icons'; import { displayCase, seconds, @@ -36,6 +38,18 @@ export const tableColumns = [ accessor: (row) => seconds(row.duration), id: 'duration', width: 75 + }, + { + Header: 'Failed Events Snapshot', + id: 'failed', + Cell: ({ row }) => { // eslint-disable-line react/prop-types + const { getToggleRowExpandedProps, isExpanded } = row; // eslint-disable-line react/prop-types + return ( + + {isExpanded ? 'Close' : 'Open'} + + ); + }, } ]; diff --git a/app/src/js/utils/table-config/executions.js b/app/src/js/utils/table-config/executions.js index da6f50717..fdbd33434 100644 --- a/app/src/js/utils/table-config/executions.js +++ b/app/src/js/utils/table-config/executions.js @@ -1,13 +1,74 @@ import React from 'react'; import { Link } from 'react-router-dom'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faCheckCircle, faTimesCircle } from '@fortawesome/free-solid-svg-icons'; +import cloneDeep from 'lodash/cloneDeep'; import { displayCase, seconds, fromNowWithTooltip, - formatCollectionId + formatCollectionId, + fullDate } from '../format'; import { strings } from '../../components/locale'; import { getPersistentQueryParams } from '../url-helper'; +import { getEventDetails } from '../../components/Executions/execution-graph-utils'; +import Tooltip from '../../components/Tooltip/tooltip'; + +export const formatEvents = (events) => { + const mutableEvents = cloneDeep(events); + if (mutableEvents) { + mutableEvents.forEach((event, index, eventsArray) => { + event.eventDetails = getEventDetails(event); + if (index === 0 || event.name || !event.type.match('LambdaFunction')) return; + const prevStep = eventsArray[index - 1]; + event.name = prevStep.name; + }); + } + return mutableEvents; +}; + +export const subColumns = [ + { + Header: 'Event ID', + accessor: 'id', + }, + { + Header: 'Step Name', + accessor: 'name' + }, + { + Header: 'Event Type', + accessor: 'type', + // eslint-disable-next-line react/prop-types + Cell: ({ cell: { value }, row: { original: { error } } }) => { + const failed = !!error; + const icon = failed ? faTimesCircle : faCheckCircle; + const iconColor = failed ? 'red' : 'green'; + return ( + <> + {value && +
    + {value}   + {!failed && } + {failed && } + tip={
    {error}
    } + />} +
    } + + ); + } + }, + { + Header: 'Timestamp', + accessor: 'timestamp', + Cell: ({ cell: { value } }) => fullDate(value) + }, +]; export const tableColumns = [ { @@ -18,9 +79,20 @@ export const tableColumns = [ ({ pathname: `/executions/execution/${arn}`, search: getPersistentQueryParams(location) })} title={name}>{name}) }, { - Header: 'Status', + Header: 'Progress', accessor: (row) => displayCase(row.status), - id: 'status' + id: 'status', + // eslint-disable-next-line react/prop-types + Cell: ({ cell: { value }, row: { original: { error } } }) => ( + <>{value} {value === 'Failed' && } + // eslint-disable-next-line react/prop-types + tip={
    {error.Error}
    } + />} + ) }, { Header: 'Workflow', diff --git a/audit-ci.json b/audit-ci.json index e60081712..8c0450573 100644 --- a/audit-ci.json +++ b/audit-ci.json @@ -2,5 +2,5 @@ "high": true, "pass-enoaudit": true, "retry-count": 20, - "allowlist": ["underscore", "css-what", "cypress"] + "allowlist": ["underscore"] } diff --git a/cypress/integration/executions_spec.js b/cypress/integration/executions_spec.js index 37d65b068..a00ec9dda 100644 --- a/cypress/integration/executions_spec.js +++ b/cypress/integration/executions_spec.js @@ -1,5 +1,5 @@ import { shouldBeRedirectedToLogin } from '../support/assertions'; -import { fullDate } from '../../app/src/js/utils/format'; +import { displayCase, fullDate } from '../../app/src/js/utils/format'; describe('Dashboard Executions Page', () => { describe('When not logged in', () => { @@ -57,7 +57,7 @@ describe('Dashboard Executions Page', () => { .should('have.attr', 'title') .and('be.eq', execution.name); cy.get('@columns').eq(1).invoke('text') - .should('be.eq', execution.status.replace(/^\w/, (c) => c.toUpperCase())); + .should('contain', displayCase(execution.status)); cy.get('@columns').eq(2).invoke('text') .should('be.eq', execution.type); cy.get('@columns').eq(3).invoke('text') @@ -325,12 +325,14 @@ describe('Dashboard Executions Page', () => { cy.get('.num-title').should('contain.text', '3'); cy.get('.thead .tr .tr').children().as('columns'); - cy.get('@columns').should('have.length', 5); + cy.get('@columns').should('have.length', 6); + cy.get('@columns').eq(0).should('have.text', 'Name'); cy.get('@columns').eq(1).should('have.text', 'Status'); cy.get('@columns').eq(2).should('have.text', 'Workflow'); cy.get('@columns').eq(3).should('have.text', 'Updated'); cy.get('@columns').eq(4).should('have.text', 'Duration'); + cy.get('@columns').eq(5).should('have.text', 'Failed Events Snapshot'); }); }); }); diff --git a/test/components/granules/granule.js b/test/components/granules/granule.js index 74f67083e..b456b3bd1 100644 --- a/test/components/granules/granule.js +++ b/test/components/granules/granule.js @@ -51,6 +51,7 @@ test.serial('CUMULUS-336 Granule file links use the correct URL', function (t) { Date: Wed, 13 Oct 2021 10:10:51 -0400 Subject: [PATCH 4/7] [CUMULUS-2643] Search bugfix (#1007) --- CHANGELOG.md | 5 + app/src/js/components/Collections/list.js | 167 +- .../components/Executions/execution-events.js | 7 +- app/src/js/components/Search/search.js | 33 +- app/src/js/components/Table/Table.js | 13 +- app/src/js/components/Workflows/overview.js | 13 +- app/src/js/reducers/workflows.js | 14 +- app/src/js/utils/url-helper.js | 6 +- audit-ci.json | 2 +- cypress/integration/executions_spec.js | 25 + cypress/integration/workflows_spec.js | 7 + package-lock.json | 1792 +++++------------ package.json | 6 +- test/reducers/workflows.js | 2 +- webpack.dev.js | 9 +- 15 files changed, 667 insertions(+), 1434 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6614f1873..784f1f6b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - **CUMULUS-NONE** - update development version of @cumulus/api to v9.7.0 to pick up test fixes. +### Fixed + +- **CUMULUS-2643** + - Fixed issue with search component that was causing search to be triggered excessively + ## [v7.0.0] - 2021-10-04 ## Breaking Changes diff --git a/app/src/js/components/Collections/list.js b/app/src/js/components/Collections/list.js index 0469ba1d1..5f1fe3412 100644 --- a/app/src/js/components/Collections/list.js +++ b/app/src/js/components/Collections/list.js @@ -1,6 +1,6 @@ // This is the main Collections Overview page import { get } from 'object-path'; -import React from 'react'; +import React, { useEffect } from 'react'; import { Helmet } from 'react-helmet'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; @@ -39,30 +39,35 @@ const breadcrumbConfig = [ }, ]; -class CollectionList extends React.Component { - constructor() { - super(); - this.generateQuery = this.generateQuery.bind(this); - this.generateBulkActions = this.generateBulkActions.bind(this); - } +const CollectionList = ({ + collections, + config, + datepicker, + dispatch, + providers, + queryParams, +}) => { + const { dropdowns } = providers; + const { list } = collections; + const { startDateTime, endDateTime } = datepicker || {}; + const hasTimeFilter = startDateTime || endDateTime; + + const { count, queriedAt } = list.meta; - componentDidMount() { - const { dispatch } = this.props; + useEffect(() => { dispatch(getCumulusInstanceMetadata()); - } + }, [dispatch]); - generateQuery() { - const { queryParams } = this.props; + function generateQuery() { return { ...queryParams }; } - generateBulkActions() { + function generateBulkActions() { const actionConfig = { recover: { action: applyRecoveryWorkflowToCollection, }, }; - const { collections, config } = this.props; let actions = bulkActions(collections); if (config.enableRecovery) { actions = actions.concat(recoverAction(collections, actionConfig)); @@ -70,79 +75,71 @@ class CollectionList extends React.Component { return actions; } - render() { - const { collections, datepicker, providers: { dropdowns } } = this.props; - const { list } = collections; - const { startDateTime, endDateTime } = datepicker || {}; - const hasTimeFilter = startDateTime || endDateTime; - - const { count, queriedAt } = list.meta; - return ( -
    - - Collections - -
    -
    - -
    -
    -

    - {strings.collection_overview} -

    - {lastUpdated(queriedAt)} -
    + return ( +
    + + Collections + +
    +
    +
    -
    -
    -

    - {hasTimeFilter - ? strings.active_collections - : strings.all_collections} - {count ? tally(count) : 0} -

    -
    +
    +

    + {strings.collection_overview} +

    + {lastUpdated(queriedAt)} +
    +
    +
    +
    +

    + {hasTimeFilter + ? strings.active_collections + : strings.all_collections} + {count ? tally(count) : 0} +

    +
    - - + + + - - - - -
    -
    - ); - } -} + + +
    +
    + ); +}; CollectionList.propTypes = { collections: PropTypes.object, @@ -153,8 +150,6 @@ CollectionList.propTypes = { queryParams: PropTypes.object, }; -CollectionList.displayName = 'CollectionList'; - export { CollectionList }; export default withRouter( connect((state) => ({ diff --git a/app/src/js/components/Executions/execution-events.js b/app/src/js/components/Executions/execution-events.js index b04c1f2ad..9d99a7e66 100644 --- a/app/src/js/components/Executions/execution-events.js +++ b/app/src/js/components/Executions/execution-events.js @@ -29,8 +29,7 @@ const ExecutionEvents = ({ }) => { const { params } = match || {}; const { executionArn } = params; - const { search } = location; - const { error, execution, executionHistory, stateMachine } = executionStatus || {}; + const { error, execution, executionHistory, stateMachine, searchString } = executionStatus || {}; const { events } = executionHistory || {}; const formattedEvents = formatEvents(events); @@ -41,7 +40,7 @@ const ExecutionEvents = ({ useEffect(() => { dispatch(getExecutionStatus(executionArn)); // when we have a new search, we also want to dispatch - }, [dispatch, executionArn, search]); + }, [dispatch, executionArn, searchString]); if (!execution) return null; @@ -98,8 +97,8 @@ const ExecutionEvents = ({ clear={clearExecutionEventsSearch} label="Search" labelKey="type" + options={formattedEvents} placeholder="Search Type" - searchKey="executions" /> diff --git a/app/src/js/components/Search/search.js b/app/src/js/components/Search/search.js index 5d416ac5f..223cac1ac 100644 --- a/app/src/js/components/Search/search.js +++ b/app/src/js/components/Search/search.js @@ -1,4 +1,4 @@ -import React, { createRef, useEffect } from 'react'; +import React, { createRef, useCallback, useEffect, useRef } from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import withQueryParams from 'react-router-query-params'; @@ -40,20 +40,28 @@ const Search = ({ }) => { const searchRef = createRef(); const formID = `form-${label}-${paramKey}`; - const initialValue = getInitialValueFromLocation({ + const initialValueRef = useRef(getInitialValueFromLocation({ location, paramKey, queryParams, - }); + })); const searchList = get(rest[searchKey], 'list'); const { data: searchOptions, inflight = false } = searchList || {}; - useEffect(() => () => dispatch(clear(paramKey)), [clear, dispatch, paramKey]); + useEffect(() => { + dispatch(clear(paramKey)); + }, [clear, dispatch, paramKey]); - function handleSearch(query) { + useEffect(() => { + if (initialValueRef.current) { + dispatch(action(initialValueRef.current)); + } + }, [action, dispatch]); + + const handleSearch = useCallback((query) => { if (query) dispatch(action(query)); else dispatch(clear); - } + }, [action, clear, dispatch]); function handleChange(selections) { if (selections && selections.length > 0) { @@ -66,9 +74,8 @@ const Search = ({ } } - function handleInputChange(text, event) { + function handleInputChange(text) { if (text) { - dispatch(action(text)); setQueryParams({ [paramKey]: text }); } else { dispatch(clear()); @@ -82,17 +89,21 @@ const Search = ({ function handleKeyDown(event) { if (event.keyCode === 13) { + event.preventDefault(); searchRef.current.hideMenu(); } } return (
    - {label && } + {label && ( + + )}
    { - const count = workflows.list.data.length; + const { list, searchString } = workflows; + const count = list.data.length; + + useEffect(() => { + dispatch(listWorkflows()); + // when searchString changes, we want a fresh workflow fetch + }, [dispatch, searchString]); return (
    @@ -31,10 +37,11 @@ const WorkflowOverview = ({ dispatch, queryParams, workflows }) => {
    diff --git a/app/src/js/reducers/workflows.js b/app/src/js/reducers/workflows.js index 483eeea9a..ea052d82f 100644 --- a/app/src/js/reducers/workflows.js +++ b/app/src/js/reducers/workflows.js @@ -15,7 +15,7 @@ export const initialState = { error: false, }, map: {}, - searchString: null, + searchString: '', }; const mapByName = (data) => data.reduce((map, datum) => ({ ...map, [datum.name]: datum }), {}); @@ -29,12 +29,10 @@ const mapByName = (data) => data.reduce((map, datum) => ({ ...map, [datum.name]: * @param {string} filterString - string to check if name includes * @returns {Array} array of data's objects with names that include filterString */ -export const filterData = (data, filterString) => (!filterString - ? data - : data.filter( - (item) => item.name && - item.name.toLowerCase().includes(filterString.toLowerCase()) - )); +export const filterData = (data, filterString = '') => data.filter( + (item) => item.name && + item.name.toLowerCase().includes(filterString.toLowerCase()) +); export default createReducer(initialState, { [WORKFLOWS]: (state, action) => { @@ -57,6 +55,6 @@ export default createReducer(initialState, { state.searchString = action.searchString; }, [CLEAR_WORKFLOWS_SEARCH]: (state) => { - state.searchString = null; + state.searchString = ''; }, }); diff --git a/app/src/js/utils/url-helper.js b/app/src/js/utils/url-helper.js index 27d0a7096..0477cf069 100644 --- a/app/src/js/utils/url-helper.js +++ b/app/src/js/utils/url-helper.js @@ -41,11 +41,7 @@ export function initialValuesFromLocation (location, paramKeys) { export function filterQueryParams(queryParams = {}) { const { startDateTime, endDateTime, search, ...filteredQueryParams } = queryParams; - const infix = search ? { infix: search } : {}; - return { - ...infix, - ...filteredQueryParams - }; + return filteredQueryParams; } /** diff --git a/audit-ci.json b/audit-ci.json index 8c0450573..39977a7d2 100644 --- a/audit-ci.json +++ b/audit-ci.json @@ -2,5 +2,5 @@ "high": true, "pass-enoaudit": true, "retry-count": 20, - "allowlist": ["underscore"] + "allowlist": ["set-value", "glob-parent"] } diff --git a/cypress/integration/executions_spec.js b/cypress/integration/executions_spec.js index a00ec9dda..05f34bbac 100644 --- a/cypress/integration/executions_spec.js +++ b/cypress/integration/executions_spec.js @@ -207,11 +207,36 @@ describe('Dashboard Executions Page', () => { cy.contains('.execution__modal .button', 'Close').click(); }); }); + }); + + it('should correctly handle searching execution events', () => { + const executionName = '8e21ca0f-79d3-4782-8247-cacd42a595ea'; + const executionArn = 'arn:aws:states:us-east-1:012345678901:execution:test-stack-HelloWorldWorkflow:8e21ca0f-79d3-4782-8247-cacd42a595ea'; + + cy.intercept( + { method: 'GET', url: `http://localhost:5001/executions/status/${executionArn}` }, + { fixture: 'valid-execution.json', statusCode: 200 } + ); + cy.visit(`/executions/execution/${executionArn}/events`); + + cy.contains('.heading--large', executionName); + cy.contains('.num-title', 7); + + cy.get('.table .tbody .tr').as('events'); + cy.get('@events').should('have.length', 7); cy.get('.search').as('search'); cy.get('@search').click().type('task'); cy.url().should('include', 'search=task'); cy.get('@events').should('have.length', 2); + cy.get('@search').clear(); + cy.url().should('not.include', 'search'); + cy.get('@events').should('have.length', 7); + + // test that initial search value works + cy.visit('/'); + cy.visit(`/executions/execution/${executionArn}/events?search=task`); + cy.get('@events').should('have.length', 2); }); it('should show an execution with limited information', () => { diff --git a/cypress/integration/workflows_spec.js b/cypress/integration/workflows_spec.js index abb17a19b..541815525 100644 --- a/cypress/integration/workflows_spec.js +++ b/cypress/integration/workflows_spec.js @@ -64,8 +64,15 @@ describe('Dashboard Workflows Page', () => { cy.get('.table .tbody .tr').should('have.length', 2); cy.get('.table .tbody .tr').first().contains('HelloWorldWorkflow'); cy.get('.search').click().type('condtes'); + cy.get('.table .tbody .tr').should('have.length', 1); cy.get('.table .tbody .tr').first().contains('SecondTestWorkflow'); + }); + + it('filters workflows when a user comes to the page with a search query', () => { + cy.intercept('GET', '/workflows*').as('get-workflows'); + cy.visit('/workflows?search=condtes'); cy.get('.table .tbody .tr').should('have.length', 1); + cy.get('.table .tbody .tr').first().contains('SecondTestWorkflow'); }); }); }); diff --git a/package-lock.json b/package-lock.json index 9b64442e3..68da176f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3057,6 +3057,12 @@ } } }, + "@discoveryjs/json-ext": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", + "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==", + "dev": true + }, "@elastic/elasticsearch": { "version": "5.6.22", "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-5.6.22.tgz", @@ -3327,20 +3333,20 @@ "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==" }, "@reduxjs/toolkit": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.6.0.tgz", - "integrity": "sha512-eGL50G+Vj5AG5uD0lineb6rRtbs96M8+hxbcwkHpZ8LQcmt0Bm33WyBSnj5AweLkjQ7ZP+KFRDHiLMznljRQ3A==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-1.6.2.tgz", + "integrity": "sha512-HbfI/hOVrAcMGAYsMWxw3UJyIoAS9JTdwddsjlr5w3S50tXhWb+EMyhIw+IAvCVCLETkzdjgH91RjDSYZekVBA==", "requires": { - "immer": "^9.0.1", + "immer": "^9.0.6", "redux": "^4.1.0", "redux-thunk": "^2.3.0", "reselect": "^4.0.0" }, "dependencies": { "redux": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.0.tgz", - "integrity": "sha512-uI2dQN43zqLWCt6B/BMGRMY6db7TTY4qeHHfGeKb3EOhmOKjU3KdWvNLJyqaHRksv/ErdNH7cFZWg9jXtewy4g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz", + "integrity": "sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw==", "requires": { "@babel/runtime": "^7.9.2" } @@ -3464,6 +3470,15 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, + "@types/http-proxy": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.7.tgz", + "integrity": "sha512-9hdj6iXH64tHSLTY+Vt2eYOGzSogC+JQ2H7bdPWkuh7KXP5qLllWx++t+K9Wk556c3dkDdPws/SpMRi0sdCT1w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/invariant": { "version": "2.2.34", "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.34.tgz", @@ -3848,6 +3863,27 @@ "@xtuc/long": "4.2.2" } }, + "@webpack-cli/configtest": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.0.tgz", + "integrity": "sha512-ttOkEkoalEHa7RaFYpM0ErK1xc4twg3Am9hfHhL7MVqlHebnkYd2wuI/ZqTDj0cVzZho6PdinY0phFZV3O0Mzg==", + "dev": true + }, + "@webpack-cli/info": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.0.tgz", + "integrity": "sha512-F6b+Man0rwE4n0409FyAJHStYA5OIZERxmnUfLVwv0mc0V1wLad3V7jqRlMkgKBeAq07jUvglacNaa6g9lOpuw==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.0.tgz", + "integrity": "sha512-ZkVeqEmRpBV2GHvjjUZqEai2PpUbuq8Bqd//vEYsp63J8WyexI8ppCqVS3Zs0QADf6aWuPdU+0XsPI647PVlQA==", + "dev": true + }, "@wojtekmaj/date-utils": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@wojtekmaj/date-utils/-/date-utils-1.0.3.tgz", @@ -4112,22 +4148,16 @@ } } }, - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "optional": true }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { @@ -4429,7 +4459,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true + "dev": true, + "optional": true }, "async-limiter": { "version": "1.0.1", @@ -8226,101 +8257,50 @@ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" }, "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "execa": "^5.0.0" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "isexe": "^2.0.0" + "mimic-fn": "^2.1.0" } } } @@ -8340,6 +8320,12 @@ "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -8893,6 +8879,12 @@ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, "enzyme": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", @@ -9937,15 +9929,6 @@ "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", "dev": true }, - "eventsource": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", - "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -10366,6 +10349,12 @@ "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==", "dev": true }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -10853,6 +10842,12 @@ "minipass": "^3.0.0" } }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -11076,43 +11071,6 @@ "ini": "2.0.0" } }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - }, - "dependencies": { - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", @@ -11648,9 +11606,9 @@ } }, "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", + "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==", "dev": true }, "html-loader": { @@ -11798,217 +11756,107 @@ } }, "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.1.tgz", + "integrity": "sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==", "dev": true, "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" + "@types/http-proxy": "^1.17.5", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "http-server": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", + "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", + "dev": true, + "requires": { + "basic-auth": "^1.0.3", + "colors": "^1.4.0", + "corser": "^2.0.1", + "ecstatic": "^3.3.2", + "http-proxy": "^1.18.0", + "minimist": "^1.2.5", + "opener": "^1.5.1", + "portfinder": "^1.0.25", + "secure-compare": "3.0.1", + "union": "~0.5.0" }, "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "http-server": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", - "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", - "dev": true, - "requires": { - "basic-auth": "^1.0.3", - "colors": "^1.4.0", - "corser": "^2.0.1", - "ecstatic": "^3.3.2", - "http-proxy": "^1.18.0", - "minimist": "^1.2.5", - "opener": "^1.5.1", - "portfinder": "^1.0.25", - "secure-compare": "3.0.1", - "union": "~0.5.0" - }, - "dependencies": { - "basic-auth": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", - "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", - "dev": true - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "basic-auth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", + "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", + "dev": true + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -12116,9 +11964,9 @@ "dev": true }, "immer": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.3.tgz", - "integrity": "sha512-mONgeNSMuyjIe0lkQPa9YhdmTv8P19IeHV0biYhcXhbd5dhdB9HSK93zBpyKjp6wersSUgT5QyU0skmejUVP2A==" + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.6.tgz", + "integrity": "sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==" }, "immutable": { "version": "4.0.0-rc.12", @@ -12303,13 +12151,15 @@ } }, "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.2.0.tgz", + "integrity": "sha512-D8WGsR6yDt8uq7vDMu7mjcR+yRMm3dW8yufyChmszWRjcSHuxLBkR3GdS2HZAjodsaGuCvXeEJpueisXJULghg==", "dev": true, "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" + "default-gateway": "^6.0.0", + "ipaddr.js": "^1.9.1", + "is-ip": "^3.1.0", + "p-event": "^4.2.0" } }, "internal-slot": { @@ -12324,9 +12174,9 @@ } }, "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", "dev": true }, "into-stream": { @@ -12556,6 +12406,12 @@ } } }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, "is-error": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", @@ -12681,6 +12537,12 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true + }, "is-plain-object": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", @@ -13010,12 +12872,6 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, "json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", @@ -13119,12 +12975,6 @@ "json-buffer": "3.0.1" } }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -13836,12 +13686,6 @@ } } }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true - }, "lolex": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", @@ -14015,6 +13859,15 @@ } } }, + "memfs": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.3.0.tgz", + "integrity": "sha512-BEE62uMfKOavX3iG7GYX43QJ+hAeeWnwIAuJ/R6q96jaMtiLzhsxHJC8B1L7fK7Pt/vXDRwb3SG/yBpNGDPqzg==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, "memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", @@ -14722,7 +14575,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "optional": true, "requires": { "path-key": "^3.0.0" } @@ -14980,21 +14832,34 @@ "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "optional": true }, + "open": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.3.0.tgz", + "integrity": "sha512-7INcPWb1UcOwSQxAXTnBJ+FxVV4MPs/X++FWWBtgY69/J5lc+tCteMt/oFK1MnkyHC4VILLa9ntmwKTwDR4Q9w==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, "opener": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", "dev": true }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, "optimize-css-assets-webpack-plugin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-6.0.0.tgz", @@ -15089,15 +14954,6 @@ } } }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -15543,7 +15399,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "dev": true, + "optional": true }, "path-exists": { "version": "4.0.0", @@ -20585,12 +20442,6 @@ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", "dev": true }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "queue-async": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/queue-async/-/queue-async-1.0.7.tgz", @@ -22606,57 +22457,26 @@ "websocket-driver": "^0.7.4" } }, - "sockjs-client": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", - "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", - "dev": true, - "requires": { - "debug": "^3.2.6", - "eventsource": "^1.0.7", - "faye-websocket": "^0.11.3", - "inherits": "^2.0.4", - "json3": "^3.3.3", - "url-parse": "^1.5.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, + "source-map-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { "atob": "^2.1.2", @@ -23137,17 +22957,10 @@ "is-utf8": "^0.2.1" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "optional": true + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" }, "strip-json-comments": { "version": "2.0.1", @@ -24054,7 +23867,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true + "dev": true, + "optional": true }, "update-input-width": { "version": "1.2.1", @@ -24157,16 +23971,6 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, - "url-parse": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", - "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "url-parse-lax": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", @@ -25020,885 +24824,261 @@ } }, "webpack-cli": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", - "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.1", - "findup-sync": "^3.0.0", - "global-modules": "^2.0.0", - "import-local": "^2.0.0", - "interpret": "^1.4.0", - "loader-utils": "^1.4.0", - "supports-color": "^6.1.0", - "v8-compile-cache": "^2.1.1", - "yargs": "^13.3.2" + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.0.tgz", + "integrity": "sha512-n/jZZBMzVEl4PYIBs+auy2WI0WTQ74EnJDiyD98O2JZY6IVIHJNitkYp/uTXOviIOMfgzrNvC9foKv/8o8KSZw==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.0", + "@webpack-cli/info": "^1.4.0", + "@webpack-cli/serve": "^1.6.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" }, "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" } }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "mimic-fn": "^2.1.0" } }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "resolve": "^1.9.0" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", "dev": true, "requires": { - "color-name": "1.1.3" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" } + } + } + }, + "webpack-dev-middleware": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.2.1.tgz", + "integrity": "sha512-Kx1X+36Rn9JaZcQMrJ7qN3PMAuKmEDD9ZISjUj3Cgq4A6PtwYsC4mpaKotSRYH3iOF6HsUa8viHKS59FlyVifQ==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.2.2", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^3.1.0" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + } + } + }, + "webpack-dev-server": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.3.1.tgz", + "integrity": "sha512-qNXQCVYo1kYhH9pgLtm8LRNkXX3XzTfHSj/zqzaqYzGPca+Qjr+81wj1jgPMCHhIhso9WEQ+kX9z23iG9PzQ7w==", + "dev": true, + "requires": { + "ansi-html-community": "^0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^3.5.1", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "del": "^6.0.0", + "express": "^4.17.1", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.0", + "internal-ip": "^6.2.0", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "schema-utils": "^3.1.0", + "selfsigned": "^1.10.11", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "strip-ansi": "^7.0.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^5.2.1", + "ws": "^8.1.0" + }, + "dependencies": { + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", "dev": true }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "aggregate-error": "^3.0.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "@types/retry": "^0.12.0", + "retry": "^0.13.1" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, "requires": { - "resolve-from": "^3.0.0" + "ansi-regex": "^6.0.1" } }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", - "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - } - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - } - }, "webpack-merge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", @@ -26168,6 +25348,12 @@ "string-width": "^4.0.0" } }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "window": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/window/-/window-4.2.6.tgz", diff --git a/package.json b/package.json index 4bfa58b00..299e5c400 100644 --- a/package.json +++ b/package.json @@ -136,8 +136,8 @@ "vinyl-source-stream": "^2.0.0", "webpack": "^4.46.0", "webpack-bundle-analyzer": "^3.9.0", - "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0", + "webpack-cli": "^4.9.0", + "webpack-dev-server": "^4.3.1", "webpack-merge": "^4.2.2", "webpack-node-externals": "^1.7.2", "webpackbar": "^4.0.0" @@ -147,7 +147,7 @@ "@fortawesome/fontawesome-svg-core": "^1.2.32", "@fortawesome/free-solid-svg-icons": "^5.15.1", "@fortawesome/react-fontawesome": "^0.1.12", - "@reduxjs/toolkit": "^1.5.0", + "@reduxjs/toolkit": "^1.6.2", "assert": "^1.4.1", "axios": "^0.21.4", "bootstrap": "^4.5.3", diff --git a/test/reducers/workflows.js b/test/reducers/workflows.js index 90cae9cb0..ba8a5bebe 100644 --- a/test/reducers/workflows.js +++ b/test/reducers/workflows.js @@ -43,7 +43,7 @@ test('verify WORKFLOWS loadState', (t) => { HelloWorldWorkflow: testData[0], AnotherWorkflow: testData[1], }, - searchString: null, + searchString: '', }); const actual = reducer(initialState, { type: 'WORKFLOWS', data: testData }); diff --git a/webpack.dev.js b/webpack.dev.js index b4ab7a88e..07ae00efd 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -1,5 +1,6 @@ const webpack = require('webpack'); const merge = require('webpack-merge'); +const path = require('path'); const CommonConfig = require('./webpack.common'); @@ -15,11 +16,13 @@ const DevConfig = merge.smartStrategy( hot: false, historyApiFallback: { disableDotRule: true }, // host: '0.0.0.0', // Required for Docker -- someone will need to link this somehow - publicPath: '/', - watchContentBase: true, compress: true, port: process.env.PORT || 3000, - contentBase: 'dist', + static: { + directory: path.join(__dirname, 'dist'), + watch: true, + publicPath: '/', + } }, module: { rules: [ From c128aa63693e3f7dd0c7ea584c86cafd2c0dffbb Mon Sep 17 00:00:00 2001 From: jennyhliu <34660846+jennyhliu@users.noreply.github.com> Date: Wed, 13 Oct 2021 11:53:45 -0400 Subject: [PATCH 5/7] CUMULUS-2462-2: selected granules from different pages are passed to reingest and bulkGranule actions (#1008) * CUMULUS-2462: selected granules from different pages are passed to reingest and bulkGranule * setState in classic component, remove unused state * add test to reingest granules from multiple page * remove files from selectedRows to save memory * specify workflow in batch reingest --- README.md | 2 +- app/src/js/components/Collections/granules.js | 11 +++--- app/src/js/components/Collections/overview.js | 12 ++++--- app/src/js/components/Granules/list.js | 12 +++---- app/src/js/components/Granules/overview.js | 10 +++--- .../components/SortableTable/SortableTable.js | 14 +++++--- app/src/js/components/Table/Table.js | 8 ++--- cypress/integration/granules_spec.js | 36 +++++++++++++++++-- 8 files changed, 72 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index f5ed42e53..03c973787 100644 --- a/README.md +++ b/README.md @@ -242,7 +242,7 @@ These are started and stopped with the commands: $ npm run stop-localstack ``` -After these containers are running, you can start a cumulus API locally in a terminal window `npm run serve-api`, the dashboard in another window. `[HIDE_PDR=false SHOW_DISTRIBUTION_API_METRICS=true ESROOT=http://example.com ES_CLOUDWATCH_TARGET_PATTERN=cwpattern ES_DISTRIBUTION_TARGET_PATTERN=distpattern APIROOT=http://localhost:5001] npm run serve` and finally cypress in a third window. `npm run cypress`. +After these containers are running, you can start a cumulus API locally in a terminal window `npm run serve-api`, the dashboard in another window. `[HIDE_PDR=false SHOW_DISTRIBUTION_API_METRICS=true ENABLE_RECOVERY=true ESROOT=http://example.com ES_CLOUDWATCH_TARGET_PATTERN=cwpattern ES_DISTRIBUTION_TARGET_PATTERN=distpattern APIROOT=http://localhost:5001] npm run serve` and finally cypress in a third window. `npm run cypress`. Once the Docker app is running, If you would like to see sample data you can seed the database. This will load the same sample data into the application that is used during cypress testing. ```bash diff --git a/app/src/js/components/Collections/granules.js b/app/src/js/components/Collections/granules.js index 346f9d7d0..5bc5f5e64 100644 --- a/app/src/js/components/Collections/granules.js +++ b/app/src/js/components/Collections/granules.js @@ -103,9 +103,7 @@ const CollectionGranules = ({ }, }; - const selectedGranules = selected - .map((id) => granules.list.data.find((g) => id === g.granuleId)).filter(Boolean); - return bulkActions(granules, actionConfig, selectedGranules); + return bulkActions(granules, actionConfig, selected); } function selectWorkflow(_selector, selectedWorkflow) { @@ -131,8 +129,11 @@ const CollectionGranules = ({ ]; } - function updateSelection(selection) { - setSelected(selection); + function updateSelection(selectedIds, currentSelectedRows) { + const allSelectedRows = selected.concat(currentSelectedRows); + const selectedRows = selectedIds + .map((id) => allSelectedRows.find((g) => id === g.granuleId)).filter(Boolean); + setSelected(selectedRows); } return ( diff --git a/app/src/js/components/Collections/overview.js b/app/src/js/components/Collections/overview.js index 6ad579aad..46c5dee4a 100644 --- a/app/src/js/components/Collections/overview.js +++ b/app/src/js/components/Collections/overview.js @@ -125,9 +125,8 @@ const CollectionOverview = ({ action: applyRecoveryWorkflow } }; - const selectedGranules = selected - .map((id) => granules.list.data.find((g) => id === g.granuleId)).filter(Boolean); - let actions = bulkActions(granules, config, selectedGranules); + + let actions = bulkActions(granules, config, selected); if (config.enableRecovery) { actions = actions.concat(recoverAction(granules, config)); } @@ -187,8 +186,11 @@ const CollectionOverview = ({ ].filter(Boolean); } /* Look at incorporating granule action errors maybe? */ - function updateSelection(selection) { - setSelected(selection); + function updateSelection(selectedIds, currentSelectedRows) { + const allSelectedRows = selected.concat(currentSelectedRows); + const selectedRows = selectedIds + .map((id) => allSelectedRows.find((g) => id === g.granuleId)).filter(Boolean); + setSelected(selectedRows); } return ( diff --git a/app/src/js/components/Granules/list.js b/app/src/js/components/Granules/list.js index bbde1a289..dae59f83f 100644 --- a/app/src/js/components/Granules/list.js +++ b/app/src/js/components/Granules/list.js @@ -118,10 +118,7 @@ const AllGranules = ({ action: applyWorkflow, }, }; - const selectedGranules = selected - .map((id) => granules.list.data.find((g) => id === g.granuleId)).filter(Boolean); - - return bulkActions(granules, config, selectedGranules); + return bulkActions(granules, config, selected); } function selectWorkflow(selector, selectedWorkflow) { @@ -154,8 +151,11 @@ const AllGranules = ({ })); } - function updateSelection(selection) { - setSelected(selection); + function updateSelection(selectedIds, currentSelectedRows) { + const allSelectedRows = selected.concat(currentSelectedRows); + const selectedRows = selectedIds + .map((id) => allSelectedRows.find((g) => id === g.granuleId)).filter(Boolean); + setSelected(selectedRows); } return ( diff --git a/app/src/js/components/Granules/overview.js b/app/src/js/components/Granules/overview.js index f7633af23..39a0111b4 100644 --- a/app/src/js/components/Granules/overview.js +++ b/app/src/js/components/Granules/overview.js @@ -102,9 +102,7 @@ class GranulesOverview extends React.Component { }; const { granules, config } = this.props; const { selected } = this.state; - const selectedGranules = selected - .map((id) => granules.list.data.find((g) => id === g.granuleId)).filter(Boolean); - let actions = bulkActions(granules, actionConfig, selectedGranules); + let actions = bulkActions(granules, actionConfig, selected); if (config.enableRecovery) { actions = actions.concat(recoverAction(granules, actionConfig)); } @@ -143,7 +141,10 @@ class GranulesOverview extends React.Component { ]; } - updateSelection(selected) { + updateSelection(selectedIds, currentSelectedRows) { + const allSelectedRows = this.state.selected.concat(currentSelectedRows); + const selected = selectedIds + .map((id) => allSelectedRows.find((g) => id === g.granuleId)).filter(Boolean); this.setState({ selected }); } @@ -265,7 +266,6 @@ export default withRouter( collections: state.collections, config: state.config, granules: state.granules, - selected: state.selected, workflowOptions: workflowOptionNames(state), providers: state.providers, }))(GranulesOverview) diff --git a/app/src/js/components/SortableTable/SortableTable.js b/app/src/js/components/SortableTable/SortableTable.js index 048083a8e..fcbb5393a 100644 --- a/app/src/js/components/SortableTable/SortableTable.js +++ b/app/src/js/components/SortableTable/SortableTable.js @@ -106,6 +106,7 @@ const SortableTable = ({ pageIndex, hiddenColumns }, + selectedFlatRows, toggleAllRowsSelected, page, canPreviousPage, @@ -174,17 +175,20 @@ const SortableTable = ({ }, [canSelect, clearSelected, toggleAllRowsSelected]); useEffect(() => { - const selected = Object.keys(selectedRowIds).reduce((selectedRows, key) => { + const selectedIds = Object.keys(selectedRowIds).reduce((ids, key) => { if (selectedRowIds[key]) { - selectedRows.push(key); + ids.push(key); } - return selectedRows; + return ids; }, []); + const currentSelectedRows = selectedFlatRows.map((row) => omit(row.original, ['files'])); + if (typeof onSelect === 'function') { - onSelect(selected); + onSelect(selectedIds, currentSelectedRows); } - }, [selectedRowIds, onSelect]); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(selectedRowIds), onSelect, JSON.stringify(selectedFlatRows.map((row) => row.id))]); useEffect(() => { if (tableId) { diff --git a/app/src/js/components/Table/Table.js b/app/src/js/components/Table/Table.js index 768b4172f..e82f6a4c3 100644 --- a/app/src/js/components/Table/Table.js +++ b/app/src/js/components/Table/Table.js @@ -142,13 +142,13 @@ const List = ({ } } - function updateSelection(newSelections) { - if (!isEqual(selected, newSelections)) { - setSelected(newSelections); + function updateSelection(selectedIds, currentSelectedRows) { + if (!isEqual(selected, selectedIds)) { + setSelected(selectedIds); setClearSelected(false); // Current selection is passed to the parent component if (typeof onSelect === 'function') { - onSelect(newSelections); + onSelect(selectedIds, currentSelectedRows); } } } diff --git a/cypress/integration/granules_spec.js b/cypress/integration/granules_spec.js index cf3338a90..349d1e24a 100644 --- a/cypress/integration/granules_spec.js +++ b/cypress/integration/granules_spec.js @@ -422,7 +422,7 @@ describe('Dashboard Granules Page', () => { it('Should reingest multiple granules and redirect to the running page.', () => { const granuleIds = [ - 'MOD09GQ.A0142558.ee5lpE.006.5112577830916', + 'MOD09GQ.A2417309.YZ9tCV.006.4640974889044', 'MOD09GQ.A9344328.K9yI3O.006.4625818663028' ]; cy.intercept( @@ -434,6 +434,9 @@ describe('Dashboard Granules Page', () => { cy.get(`[data-value="${granuleIds[1]}"] > .td >input[type="checkbox"]`).click(); cy.contains('button', 'Granule Actions').click(); cy.contains('button', 'Reingest').click(); + cy.get('.modal-body .form__dropdown .dropdown__element input').as('workflow-input'); + cy.get('@workflow-input').click({ force: true }).type('IngestAndP').type('{enter}'); + cy.get('.modal-body .form__dropdown .dropdown__element').should('have.text', 'IngestAndPublishGranule'); cy.get('.button--submit').click(); cy.get('.modal-content .modal-body .alert', { timeout: 10000 }).should('contain.text', 'Success'); cy.get('.button__goto').click(); @@ -441,6 +444,35 @@ describe('Dashboard Granules Page', () => { cy.get('.heading--large').should('have.text', 'Running Granules 2'); }); + it('Should reingest multiple granules selected from multiple pages.', () => { + cy.intercept( + { method: 'PUT', url: new RegExp('/granules/.*') }, + { body: { message: 'ingested' }, statusCode: 200 }, + ); + cy.visit('/granules?limit=2'); + cy.get('.table .tbody .tr').should('have.length', 2); + cy.get('.table .tbody .tr .td input[type=checkbox]').as('granule-checkbox'); + cy.get('@granule-checkbox').click({ multiple: true }); + + cy.get('.pagination ol li').last().should('have.text', 'Next').click(); + cy.wait(1000); + cy.url().should('include', 'page=2'); + cy.get('.table .tbody .tr').should('have.length', 2); + cy.get('.table .tbody .tr .td input[type=checkbox]').as('granule-checkbox2'); + cy.get('@granule-checkbox2').click({ multiple: true }); + + cy.get('.pagination ol li').last().should('have.text', 'Next').click(); + cy.wait(1000); + cy.url().should('include', 'page=3'); + + cy.contains('button', 'Granule Actions').click(); + cy.contains('button', 'Reingest').click(); + cy.get('.modal-content .modal-body').should('contain.text', 'Selected granules:'); + cy.get('.modal-content .modal-body > ul > li').should('have.length', 4); + cy.get('.button--submit').click(); + cy.get('.modal-content .modal-body .alert', { timeout: 10000 }).should('contain.text', 'Success'); + }); + it('Should fail to reingest multiple granules and remain on the page.', () => { const granuleIds = [ 'MOD09GQ.A0142558.ee5lpE.006.5112577830916', @@ -706,7 +738,7 @@ describe('Dashboard Granules Page', () => { cy.contains('button', 'Delete').click(); cy.contains('.button--submit', 'Confirm').click(); - cy.get('.default-modal.batch-async-modal ').as('modal'); + cy.get('.default-modal.batch-async-modal ', { timeout: 10000 }).as('modal'); cy.get('@modal').contains('div', 'Success!'); }); From 7fa0da8e2dd9570511cfdce611575a11478aca6c Mon Sep 17 00:00:00 2001 From: Matt Savoie Date: Thu, 14 Oct 2021 09:00:20 -0600 Subject: [PATCH 6/7] Naive attempt to upgrade cypress to latest. (#1009) * upgrade cypress to latest. * Use older package lock with fewer changes. There was a test failing for the datepicker. That might not be safe to update. --- CHANGELOG.md | 1 + cypress/tsconfig.json | 6 +- localAPI/docker-compose-cypress.yml | 2 +- package-lock.json | 702 ++++++++++------------------ package.json | 2 +- 5 files changed, 252 insertions(+), 461 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 784f1f6b6..0d438e17b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - **CUMULUS-NONE** - update development version of @cumulus/api to v9.7.0 to pick up test fixes. + - update Cypress to latest version 8.6.0 ### Fixed diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json index 0af5f89fa..382aeda10 100644 --- a/cypress/tsconfig.json +++ b/cypress/tsconfig.json @@ -8,6 +8,6 @@ ] }, "include": [ - "**/*.*", - ], -} \ No newline at end of file + "**/*.*" + ] +} diff --git a/localAPI/docker-compose-cypress.yml b/localAPI/docker-compose-cypress.yml index 99e57834b..e2cacb11f 100644 --- a/localAPI/docker-compose-cypress.yml +++ b/localAPI/docker-compose-cypress.yml @@ -2,7 +2,7 @@ version: "3" services: e2e: # must be run in conjunction with the docker-compose stack. - image: ${DOCKER_REPOSITORY}cypress/included:7.3.0 + image: ${DOCKER_REPOSITORY}cypress/included:8.6.0 network_mode: "service:shim" entrypoint: [ "./localAPI/wait-for-dashboard.sh", "npm", "run", "cypress-ci"] working_dir: diff --git a/package-lock.json b/package-lock.json index 68da176f7..108fd8571 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2945,43 +2945,10 @@ "integrity": "sha512-RzX/vkFpqx+G/bubXuVnLRGVLXIW6/d06tvCl7qnDR0kAiMVX/s9E4DARveko6XS/25bOKNk0a9c0xvAMsJheA==", "dev": true }, - "@cypress/listr-verbose-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", - "integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=", - "optional": true, - "requires": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "optional": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "optional": true - } - } - }, "@cypress/request": { - "version": "2.88.5", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.5.tgz", - "integrity": "sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==", + "version": "2.88.6", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.6.tgz", + "integrity": "sha512-z0UxBE/+qaESAHY9p9sM2h8Y4XqtsbDCt0/DPOrqA/RZgKi4PkxdpXyK4wCCnSk1xHqWHZZAE+gV6aDAR6+caQ==", "optional": true, "requires": { "aws-sign2": "~0.7.0", @@ -2997,13 +2964,20 @@ "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "uuid": "^8.3.2" + }, + "dependencies": { + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "optional": true + } } }, "@cypress/webpack-preprocessor": { @@ -3367,15 +3341,6 @@ "lodash-es": "^4.17.20" } }, - "@samverschueren/stream-to-observable": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", - "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", - "optional": true, - "requires": { - "any-observable": "^0.3.0" - } - }, "@sindresorhus/is": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz", @@ -3592,9 +3557,9 @@ "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==" }, "@types/sinonjs__fake-timers": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz", - "integrity": "sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", + "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", "optional": true }, "@types/sizzle": { @@ -3678,6 +3643,15 @@ } } }, + "@types/yauzl": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", + "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", + "optional": true, + "requires": { + "@types/node": "*" + } + }, "@vendia/serverless-express": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@vendia/serverless-express/-/serverless-express-3.4.0.tgz", @@ -4032,7 +4006,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -4041,8 +4014,7 @@ "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" } } }, @@ -4148,12 +4120,29 @@ } } }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "optional": true }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "optional": true, + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "optional": true + } + } + }, "ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -4163,18 +4152,14 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "optional": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true }, "anymatch": { "version": "3.1.2", @@ -4447,8 +4432,7 @@ "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" }, "async": { "version": "3.2.0", @@ -5771,7 +5755,8 @@ "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true }, "buffer-indexof": { "version": "1.1.1", @@ -6211,8 +6196,7 @@ "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" }, "clean-webpack-plugin": { "version": "3.0.0", @@ -6299,12 +6283,12 @@ "dev": true }, "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "optional": true, "requires": { - "restore-cursor": "^1.0.1" + "restore-cursor": "^3.1.0" } }, "cli-spinners": { @@ -6325,35 +6309,13 @@ } }, "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "optional": true, "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" } }, "cli-width": { @@ -6496,12 +6458,6 @@ "convert-to-spaces": "^1.0.1" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true - }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -6659,6 +6615,7 @@ "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -6669,7 +6626,8 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true } } }, @@ -7719,13 +7677,12 @@ "dev": true }, "cypress": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-7.3.0.tgz", - "integrity": "sha512-aseRCH1tRVCrM6oEfja6fR/bo5l6e4SkHRRSATh27UeN4f/ANC8U7tGIulmrISJVy9xuOkOdbYKbUb2MNM+nrw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.6.0.tgz", + "integrity": "sha512-F7qEK/6Go5FsqTueR+0wEw2vOVKNgk5847Mys8vsWkzPoEKdxs+7N9Y1dit+zhaZCLtMPyrMwjfA53ZFy+lSww==", "optional": true, "requires": { - "@cypress/listr-verbose-renderer": "^0.4.1", - "@cypress/request": "^2.88.5", + "@cypress/request": "^2.88.6", "@cypress/xvfb": "^1.2.4", "@types/node": "^14.14.31", "@types/sinonjs__fake-timers": "^6.0.2", @@ -7736,26 +7693,30 @@ "cachedir": "^2.3.0", "chalk": "^4.1.0", "check-more-types": "^2.24.0", + "cli-cursor": "^3.1.0", "cli-table3": "~0.6.0", "commander": "^5.1.0", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "4.3.2", + "debug": "^4.3.2", + "enquirer": "^2.3.6", "eventemitter2": "^6.4.3", "execa": "4.1.0", "executable": "^4.1.1", - "extract-zip": "^1.7.0", + "extract-zip": "2.0.1", + "figures": "^3.2.0", "fs-extra": "^9.1.0", "getos": "^3.2.1", "is-ci": "^3.0.0", "is-installed-globally": "~0.4.0", "lazy-ass": "^1.6.0", - "listr": "^0.14.3", + "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", "minimist": "^1.2.5", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", "ramda": "~0.27.1", "request-progress": "^3.0.0", "supports-color": "^8.1.1", @@ -8138,12 +8099,6 @@ "whatwg-url": "^7.0.0" } }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "optional": true - }, "date-time": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", @@ -8154,9 +8109,9 @@ } }, "dayjs": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.5.tgz", - "integrity": "sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g==", + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==", "optional": true }, "debug": { @@ -8766,12 +8721,6 @@ "integrity": "sha512-2Tg+7jSl3oPxgsBsWKh5H83QazTkmWG/cnNwJplmyZc7KcN61+I10oUgaXSVk/NwfvN3BdkKDR4FYuRBQQ2v0A==", "dev": true }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=", - "optional": true - }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -8873,6 +8822,15 @@ } } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "optional": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -9912,9 +9870,9 @@ "dev": true }, "eventemitter2": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.4.tgz", - "integrity": "sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==", + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", + "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", "optional": true }, "eventemitter3": { @@ -9954,17 +9912,6 @@ "onetime": "^5.1.0", "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" - }, - "dependencies": { - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "optional": true, - "requires": { - "mimic-fn": "^2.1.0" - } - } } }, "executable": { @@ -9976,12 +9923,6 @@ "pify": "^2.2.0" } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "optional": true - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -10274,32 +10215,15 @@ } }, "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "optional": true, "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "optional": true - } } }, "extsprintf": { @@ -10395,13 +10319,12 @@ "dev": true }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "optional": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "^1.0.5" } }, "file-entry-cache": { @@ -11332,6 +11255,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" } @@ -12016,12 +11940,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "optional": true - }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -12497,15 +12415,6 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "optional": true, - "requires": { - "symbol-observable": "^1.1.0" - } - }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -12661,7 +12570,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -13124,186 +13034,34 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "optional": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - }, - "dependencies": { - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "optional": true - } - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=", - "optional": true - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "optional": true, - "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "optional": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", - "optional": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "optional": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "listr2": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.12.2.tgz", + "integrity": "sha512-64xC2CJ/As/xgVI3wbhlPWVPx0wfTqbUAkpb7bjDi0thSWMqrf07UFhrfsGoo8YSXmF049Rp9C0cjLC8rZxK9A==", "optional": true, "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" + "cli-truncate": "^2.1.0", + "colorette": "^1.4.0", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^6.6.7", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "optional": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "optional": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "optional": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "optional": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "optional": true - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "optional": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "optional": true - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "optional": true }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "optional": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "optional": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "optional": true, "requires": { - "has-flag": "^3.0.0" + "aggregate-error": "^3.0.0" } } } @@ -13579,48 +13337,61 @@ } }, "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "optional": true, "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "optional": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "optional": true, "requires": { - "restore-cursor": "^2.0.0" + "color-convert": "^2.0.1" } }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "optional": true + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "optional": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "optional": true, "requires": { - "mimic-fn": "^1.0.0" + "ansi-regex": "^5.0.1" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "optional": true, "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } @@ -14150,6 +13921,7 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -14594,12 +14366,6 @@ "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", "dev": true }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "optional": true - }, "numeral": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", @@ -14625,7 +14391,8 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "object-assign": { "version": "4.1.1", @@ -14827,10 +14594,13 @@ } }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "optional": true + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "optional": true, + "requires": { + "mimic-fn": "^2.1.0" + } }, "open": { "version": "8.3.0", @@ -15032,7 +14802,8 @@ "p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true }, "p-retry": { "version": "2.0.0", @@ -20098,7 +19869,8 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "progress": { "version": "2.0.3", @@ -20185,6 +19957,12 @@ "ipaddr.js": "1.9.1" } }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=", + "optional": true + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -21057,6 +20835,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -21070,12 +20849,14 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -21658,13 +21439,13 @@ } }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "optional": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, "ret": { @@ -22302,10 +22083,26 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "optional": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "optional": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + } + } }, "slugify": { "version": "1.5.3", @@ -22916,6 +22713,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" }, @@ -22923,7 +22721,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -22931,6 +22730,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, "requires": { "ansi-regex": "^2.0.0" }, @@ -22938,7 +22738,8 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true } } }, @@ -23378,8 +23179,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { "version": "2.0.5", @@ -23641,7 +23441,8 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, "typedarray-to-buffer": { "version": "3.1.5", @@ -24003,7 +23804,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "util.promisify": { "version": "1.0.0", @@ -24030,7 +23832,8 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true }, "v8-compile-cache": { "version": "2.3.0", @@ -25379,51 +25182,38 @@ } }, "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "optional": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "dependencies": { "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "optional": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "optional": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "color-convert": "^2.0.1" } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "optional": true, "requires": { - "ansi-regex": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "optional": true - } + "ansi-regex": "^5.0.1" } } } diff --git a/package.json b/package.json index 299e5c400..99d23cab5 100644 --- a/package.json +++ b/package.json @@ -204,6 +204,6 @@ "url": "^0.11.0" }, "optionalDependencies": { - "cypress": "7.3.0" + "cypress": "8.6.0" } } From 07f6a4fd699ee33e4a3712eb9e93f564a92f6ca6 Mon Sep 17 00:00:00 2001 From: Matt Savoie Date: Wed, 20 Oct 2021 08:09:29 -0600 Subject: [PATCH 7/7] Update changelog and upgrade @cumulus/api (#1011) --- CHANGELOG.md | 5 +- package-lock.json | 1257 ++++++++++++++------------------------------- package.json | 4 +- 3 files changed, 398 insertions(+), 868 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d438e17b..347d4a3b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [v7.0.1] - 2021-10-19 + ### Added - **CUMULUS-2462** @@ -1010,7 +1012,8 @@ Fix for serving the dashboard through the Cumulus API. ### Added - Versioning and changelog [CUMULUS-197] by @kkelly51 -[Unreleased]: https://github.com/nasa/cumulus-dashboard/compare/v7.0.0...HEAD +[Unreleased]: https://github.com/nasa/cumulus-dashboard/compare/v7.1.0...HEAD +[v7.1.0]: https://github.com/nasa/cumulus-dashboard/compare/v7.0.0...v7.1.0 [v7.0.0]: https://github.com/nasa/cumulus-dashboard/compare/v6.0.0...v7.0.0 [v6.0.0]: https://github.com/nasa/cumulus-dashboard/compare/v5.0.0...v6.0.0 [v5.0.0]: https://github.com/nasa/cumulus-dashboard/compare/v4.0.0...v5.0.0 diff --git a/package-lock.json b/package-lock.json index 108fd8571..b303c2eb8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cumulus-dashboard", - "version": "7.0.0", + "version": "7.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1343,31 +1343,31 @@ "dev": true }, "@cumulus/api": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/api/-/api-9.7.0.tgz", - "integrity": "sha512-eGdBZrqOl58HKafiTPqEvmT+mU51D6rDDMTl55hFKis4ItkxadHav/0D1/WXSdbbzqoWKMwJ0jrm8JvgKnIt8Q==", - "dev": true, - "requires": { - "@cumulus/api-client": "9.7.0", - "@cumulus/async-operations": "9.7.0", - "@cumulus/aws-client": "9.7.0", - "@cumulus/cmr-client": "9.7.0", - "@cumulus/cmrjs": "9.7.0", - "@cumulus/collection-config-store": "9.7.0", - "@cumulus/common": "9.7.0", - "@cumulus/db": "9.7.0", - "@cumulus/distribution-utils": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/es-client": "9.7.0", - "@cumulus/ingest": "9.7.0", - "@cumulus/launchpad-auth": "9.7.0", - "@cumulus/logger": "9.7.0", - "@cumulus/message": "9.7.0", - "@cumulus/oauth-client": "9.7.0", - "@cumulus/object-store": "9.7.0", - "@cumulus/pvl": "9.7.0", - "@cumulus/sftp-client": "9.7.0", - "@cumulus/types": "9.7.0", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/api/-/api-9.8.0.tgz", + "integrity": "sha512-ic2ZjwDqnRKwT15MRpK7ndL8e3Eed8O4ZSRFClaynHt/H8grGssDEjOXvfqPdNPlc5jo7ZZvsdlKkNha2UPelA==", + "dev": true, + "requires": { + "@cumulus/api-client": "9.8.0", + "@cumulus/async-operations": "9.8.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/cmr-client": "9.8.0", + "@cumulus/cmrjs": "9.8.0", + "@cumulus/collection-config-store": "9.8.0", + "@cumulus/common": "9.8.0", + "@cumulus/db": "9.8.0", + "@cumulus/distribution-utils": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/es-client": "9.8.0", + "@cumulus/ingest": "9.8.0", + "@cumulus/launchpad-auth": "9.8.0", + "@cumulus/logger": "9.8.0", + "@cumulus/message": "9.8.0", + "@cumulus/oauth-client": "9.8.0", + "@cumulus/object-store": "9.8.0", + "@cumulus/pvl": "9.8.0", + "@cumulus/sftp-client": "9.8.0", + "@cumulus/types": "9.8.0", "@mapbox/dyno": "^1.4.2", "aggregate-error": "^3.1.0", "ajv": "^6.12.3", @@ -1390,7 +1390,7 @@ "json2csv": "^4.5.1", "jsonpath-plus": "^1.1.0", "jsonwebtoken": "^8.4.0", - "knex": "0.21.13", + "knex": "0.95.11", "lodash": "^4.17.20", "moment": "2.24.0", "morgan": "^1.9.1", @@ -1412,14 +1412,14 @@ }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -1457,24 +1457,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -1527,12 +1527,6 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -1545,25 +1539,25 @@ } }, "@cumulus/api-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/api-client/-/api-client-9.7.0.tgz", - "integrity": "sha512-X4jyLCEh26pZ6YtUoAZub16MLLeBeod9Y5ZSsGD7wH1/RryufPK5x7zaV8ObxJRTIKV7/ayNDifOjC7CM76PiQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/api-client/-/api-client-9.8.0.tgz", + "integrity": "sha512-TP60aHZ3WwBcqigqZju4EHDIpwOA2FFht3BVzs3GUVUGpKYaTlmScXvUoiqocD/JD2b1hn01f64YQeq/AId8zA==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/logger": "9.8.0", "p-retry": "^2.0.0" }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -1586,24 +1580,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -1623,37 +1617,31 @@ "requires": { "p-timeout": "^3.0.0" } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true } } }, "@cumulus/async-operations": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/async-operations/-/async-operations-9.7.0.tgz", - "integrity": "sha512-rSNce7M7nrmUFd0/4IkvtfZz5BL1C2Fp+yhzCIVeFaaXJbjJi5uOzhxVl2GHuE6mLAT3o3WQHCIw7quwJbkdBA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/async-operations/-/async-operations-9.8.0.tgz", + "integrity": "sha512-1iX3gUvQ1czAmHZMDHZFX1IAt7GD3ykfWuGMm+3LTOuXDk2HwtTqcxjC6aOxEFXxF4DewKf8lH4QmF0hUEkAgg==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/db": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/types": "9.7.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/db": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/types": "9.8.0", "uuid": "8.3.2" }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -1664,24 +1652,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -1712,12 +1700,6 @@ "p-timeout": "^3.0.0" } }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -1787,14 +1769,14 @@ } }, "@cumulus/cmr-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/cmr-client/-/cmr-client-9.7.0.tgz", - "integrity": "sha512-7AEt7c1LlIhQk8qsbakavCWkYJiSmUBgTSRmnbmgZXn61pIJMpGRVSnbZKsWmxpDmidMcqDsMpyGe84a0ZVOcw==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/cmr-client/-/cmr-client-9.8.0.tgz", + "integrity": "sha512-wnnqFQP1UGCkfRG0T4IwpUcjtX9CWXXrjpmYCEnGL66Qv7BS+E1dx/OIBaFbxaxdQfI98D/XhsNOjXuKrSG53A==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "got": "^11.7.0", "lodash": "^4.17.20", "public-ip": "^3.0.0", @@ -1802,14 +1784,14 @@ }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -1820,24 +1802,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -1867,27 +1849,22 @@ "requires": { "p-timeout": "^3.0.0" } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true } } }, "@cumulus/cmrjs": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/cmrjs/-/cmrjs-9.7.0.tgz", - "integrity": "sha512-p96QYuSxVJirSUOZFVBoW25K9lvrw7PPcrPReLf6CVWYVsqNeVX2b6o6ZEThFR/yvA6eHXruDE+Quqzfm68EXQ==", - "dev": true, - "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/cmr-client": "9.7.0", - "@cumulus/common": "9.7.0", - "@cumulus/distribution-utils": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/launchpad-auth": "9.7.0", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/cmrjs/-/cmrjs-9.8.0.tgz", + "integrity": "sha512-5ytOnC+Hpl+lnPPjCZnYauWdwPCka72Wp/k7+YouLFR8nK8LuRmz2Y0SxCngAg//PjYTGcU/4STLNoUdXaDDvQ==", + "dev": true, + "requires": { + "@cumulus/aws-client": "9.8.0", + "@cumulus/cmr-client": "9.8.0", + "@cumulus/common": "9.8.0", + "@cumulus/distribution-utils": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/launchpad-auth": "9.8.0", + "@cumulus/logger": "9.8.0", "got": "^11.8.1", "js2xmlparser": "^4.0.0", "lodash": "^4.17.20", @@ -1897,14 +1874,14 @@ }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -1915,24 +1892,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -1963,12 +1940,6 @@ "p-timeout": "^3.0.0" } }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, "url-join": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", @@ -1978,25 +1949,25 @@ } }, "@cumulus/collection-config-store": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/collection-config-store/-/collection-config-store-9.7.0.tgz", - "integrity": "sha512-UD9QNI8jZrkGbPZqdL+lpUKX7JaXvIPWj1TJyJ6kJXVvUUQLFo6NAxa0V8zUDUa/kqgqEiJaYbD9ThpPpf3sXQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/collection-config-store/-/collection-config-store-9.8.0.tgz", + "integrity": "sha512-ZG6ybfJEN1lG+6m8IOhmVhVi4my/UMLplTGpArPQmlXYqqmGNmUfjtzMhht0k60svWS4sspSmAGnI8VPQiOKCw==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/common": "9.7.0", - "@cumulus/message": "9.7.0" + "@cumulus/aws-client": "9.8.0", + "@cumulus/common": "9.8.0", + "@cumulus/message": "9.8.0" }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -2007,24 +1978,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2054,23 +2025,17 @@ "requires": { "p-timeout": "^3.0.0" } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true } } }, "@cumulus/common": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/common/-/common-9.7.0.tgz", - "integrity": "sha512-p3qaQ3mJL1K4xzrE9kHSBjoWJXN7qT0mQL2XSQQPg8SNrvX7jnk6+7eK+FwFtEdf6comD5GWalskQzRQKV2s9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/common/-/common-9.8.0.tgz", + "integrity": "sha512-gBXtoDRes59RdeVhzYMHnnxBLo4YCeU0yxpjMqzY6/nEtd9GKQsUBUu/+9T+PDx7z9Pqe4yqPcc1RHucszpTmQ==", "dev": true, "requires": { - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "ajv": "^6.12.3", "aws-sdk": "^2.585.0", "follow-redirects": "^1.2.4", @@ -2088,15 +2053,15 @@ }, "dependencies": { "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2123,30 +2088,24 @@ "@types/retry": "^0.12.0", "retry": "^0.13.1" } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true } } }, "@cumulus/db": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/db/-/db-9.7.0.tgz", - "integrity": "sha512-6V/h4OeYMQr6ciHhyYfhtkbJyEqQPlcksiJpalZCkHaCecXmRO0uRPeZ2hKIzA/YHTfewVvO3M+k+zkheSwriQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/db/-/db-9.8.0.tgz", + "integrity": "sha512-awSP0HnZBMMImmwWuwjTjRdFsgAGcN48gBT6iZnGyqJHnGhBAr5CAwJXbTDoBA6P6NBxZgUpNNzwlBbEuOdM4Q==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/common": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", - "@cumulus/message": "9.7.0", - "@cumulus/types": "9.7.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/common": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", + "@cumulus/message": "9.8.0", + "@cumulus/types": "9.8.0", "crypto-random-string": "^3.2.0", "is-valid-hostname": "0.0.1", - "knex": "0.21.13", + "knex": "0.95.11", "lodash": "^4.17.20", "pg": "^8.3.0", "snake-camel": "^1.0.6", @@ -2154,14 +2113,14 @@ }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -2172,24 +2131,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2229,12 +2188,6 @@ "p-timeout": "^3.0.0" } }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, "uuid": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.1.tgz", @@ -2244,26 +2197,26 @@ } }, "@cumulus/distribution-utils": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/distribution-utils/-/distribution-utils-9.7.0.tgz", - "integrity": "sha512-rfeveWOQMswh8x0/cCbOl9/RdA0A13A2pkRUaCoyS8JN1P3C2m5mBNEdf0kId+5DmT3X8LSt47nQAAu35sX+nw==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/distribution-utils/-/distribution-utils-9.8.0.tgz", + "integrity": "sha512-FGvejHh5TO4jIXWfK7rXkI4t2UuoaDgql0syGeYwwxovV7KhBZHczZ4YLVTWQPjaklloO6qHuYbnnxPHIAlZbw==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/common": "9.7.0", - "@cumulus/errors": "9.7.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/common": "9.8.0", + "@cumulus/errors": "9.8.0", "url-join": "^1.1.0" }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -2274,24 +2227,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2322,12 +2275,6 @@ "p-timeout": "^3.0.0" } }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, "url-join": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", @@ -2343,15 +2290,15 @@ "dev": true }, "@cumulus/es-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/es-client/-/es-client-9.7.0.tgz", - "integrity": "sha512-s1X4Tm2v1zVhjLIQ0ycGFKsZyfnh7E6kK+ydnUIvTFVN0iqwB3RkcON4Y2d/ss3kSyVYrvcr4QwXhprPuli6Dw==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/es-client/-/es-client-9.8.0.tgz", + "integrity": "sha512-1EAjQY9PP85bIxgMvsuaJhLnn/KHFleLONw3bBPQmExTCzTOMPa9rM4zRD8CxaTPwBOcdTWr2oKR4MVaWqZurw==", "dev": true, "requires": { - "@cumulus/common": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", - "@cumulus/message": "9.7.0", + "@cumulus/common": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", + "@cumulus/message": "9.8.0", "@elastic/elasticsearch": "^5.6.20", "aws-elasticsearch-connector": "8.2.0", "aws-sdk": "^2.585.0", @@ -2361,15 +2308,15 @@ }, "dependencies": { "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2399,18 +2346,18 @@ } }, "@cumulus/ingest": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/ingest/-/ingest-9.7.0.tgz", - "integrity": "sha512-CKeYepfW2Nq+98bDQnMKIsZvByo3bfYtyuHtn8fDd7TzYGBXU8MLAcKokDZolvW/QzdkYTEGIruSbzOLRs29+w==", - "dev": true, - "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/common": "9.7.0", - "@cumulus/db": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", - "@cumulus/message": "9.7.0", - "@cumulus/sftp-client": "9.7.0", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/ingest/-/ingest-9.8.0.tgz", + "integrity": "sha512-tSveQUdF6LOXVJFrliLfCaJUfJzHhyUAFbVvTdqvfVgAanJ6BBN1w5BgnWXByFsK6GVNf1rX3LSMiCBcnpRAtg==", + "dev": true, + "requires": { + "@cumulus/aws-client": "9.8.0", + "@cumulus/common": "9.8.0", + "@cumulus/db": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", + "@cumulus/message": "9.8.0", + "@cumulus/sftp-client": "9.8.0", "aws-sdk": "^2.585.0", "cksum": "^1.3.0", "delay": "^4.3.0", @@ -2428,14 +2375,14 @@ }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -2446,24 +2393,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2515,12 +2462,6 @@ "p-timeout": "^3.0.0" } }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, "tough-cookie": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", @@ -2541,27 +2482,27 @@ } }, "@cumulus/launchpad-auth": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/launchpad-auth/-/launchpad-auth-9.7.0.tgz", - "integrity": "sha512-eVPJHFBDQG7dcQiVpCLpXNoMAgjfuUmLRSXiYpYKlmBd2FecLaId2MbagzpmWVqwFpCadTwH34JV8n7pWEf80g==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/launchpad-auth/-/launchpad-auth-9.8.0.tgz", + "integrity": "sha512-8kn1aov4Oh6f2NKhyGeCPqbCw+zef6fAqxMZYpNtMYje2rwWeGt6VgRjE3OC5tvgk7j6n4JDuY90i/mBxAQLBQ==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/logger": "9.8.0", "got": "^11.7.0", "lodash": "^4.17.20", "uuid": "^3.2.1" }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -2572,24 +2513,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2619,12 +2560,6 @@ "requires": { "p-timeout": "^3.0.0" } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true } } }, @@ -2638,30 +2573,30 @@ } }, "@cumulus/message": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/message/-/message-9.7.0.tgz", - "integrity": "sha512-FYfIULWmBxHJAQjWOzuobUre3pjzBHSDI/dZEqx810LLjhjUFIWb88lV0EMCT9zPPy+1C0Q1t0A41M8KKuF89Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/message/-/message-9.8.0.tgz", + "integrity": "sha512-YNuEoP/Q7sQsq/sF/w9dcIZpfBZ4CXk/CDrhajH48N3irz9XUCT9KIv3AwKJ7/n8f3JhEoDodga93situFwYSg==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/common": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", - "@cumulus/types": "9.7.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/common": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", + "@cumulus/types": "9.8.0", "jsonpath-plus": "^3.0.0", "lodash": "^4.17.20", "uuid": "^8.2.0" }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -2680,24 +2615,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2734,12 +2669,6 @@ "p-timeout": "^3.0.0" } }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -2749,32 +2678,32 @@ } }, "@cumulus/oauth-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/oauth-client/-/oauth-client-9.7.0.tgz", - "integrity": "sha512-7SWURTtJGWEIQpjiEHa/Mf4ipMGRkUMSa3DDEq8dMfaQrQlNSbXdhubKeCLLifuPHhJHIYXaJFWODX8Imjfb7g==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/oauth-client/-/oauth-client-9.8.0.tgz", + "integrity": "sha512-bp0pL6Fiw216bRcRn3oXJ1zuTWAdT7chPGDq8wTewnT7+hehJvh2NjOR/do7W7vHWy8ygvJwioktOIit7jEM+g==", "dev": true, "requires": { "got": "^11.7.0" } }, "@cumulus/object-store": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/object-store/-/object-store-9.7.0.tgz", - "integrity": "sha512-W7QU1YdUtdeD9HsjI/yjUIFDcjVIcx14m7mL/t1+MDW5WnsURPJ9fWIyeoVWzopo0hPjSj1Mgjb5QpSEN+m5LQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/object-store/-/object-store-9.8.0.tgz", + "integrity": "sha512-AMdk264xnLWJYHXAmFLXSeYbAHC8NIfVas/C5kgGxQt/OlbShf/vZgWdcdxM11BKKjoTpbouq034rndyiIAqww==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0" + "@cumulus/aws-client": "9.8.0" }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -2785,24 +2714,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2832,32 +2761,26 @@ "requires": { "p-timeout": "^3.0.0" } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true } } }, "@cumulus/pvl": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/pvl/-/pvl-9.7.0.tgz", - "integrity": "sha512-iILA8GtPLX0c7WPPiWKLV7b+vycRRzuUQSW5yxdazcd4+5+BsDsj0HChQtIKiC6q53vq/qF0fj19AARNoW20aQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/pvl/-/pvl-9.8.0.tgz", + "integrity": "sha512-uReFDZsAuxsKlYT2iCybF4K4u+UdZRsdbfOjKhVNRXkUGPK0bHnhDjwjfCAjpnCbqPpROrZL7rOhlsyb4Nb26w==", "dev": true, "requires": { "lodash": "^4.17.20" } }, "@cumulus/sftp-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/sftp-client/-/sftp-client-9.7.0.tgz", - "integrity": "sha512-XVkVZxw5rVtok/KwCqQkuMK+T5DHF2FfKnCDTFMuX6iDafm+5kcMUyRKXVuBnvc+fXEDc//ayFBvmGC6hz5A5w==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/sftp-client/-/sftp-client-9.8.0.tgz", + "integrity": "sha512-yAbpsEs8Qk0+i2TYLOiytspclU8RoQKbRbCWYfzJ3YzT0mOc67gaZaPg0K7mbwGhQ/B+alfYMnLEC5txvWgXDw==", "dev": true, "requires": { - "@cumulus/aws-client": "9.7.0", - "@cumulus/common": "9.7.0", + "@cumulus/aws-client": "9.8.0", + "@cumulus/common": "9.8.0", "lodash": "^4.17.20", "mime-types": "^2.1.27", "ssh2": "^1.0.0", @@ -2865,14 +2788,14 @@ }, "dependencies": { "@cumulus/aws-client": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.7.0.tgz", - "integrity": "sha512-nZ2lHgN7fWh+tu33GWNKoXSC3C6L3iv4SoYeA14zFGieIdcOYmKAmAsioPr1h/w770NiTcJnLJYBiHwB68vJGQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/aws-client/-/aws-client-9.8.0.tgz", + "integrity": "sha512-Hj1PbLoLAUsufeD8IlryYJUE61r/pgOx9zRDuq91RWLFYXeUhTB2qqUfAHBu03TSAhC912YBOHGbCztAqV7sPA==", "dev": true, "requires": { - "@cumulus/checksum": "9.7.0", - "@cumulus/errors": "9.7.0", - "@cumulus/logger": "9.7.0", + "@cumulus/checksum": "9.8.0", + "@cumulus/errors": "9.8.0", + "@cumulus/logger": "9.8.0", "aws-sdk": "^2.814.0", "jsonpath-plus": "^1.1.0", "lodash": "~4.17.20", @@ -2883,24 +2806,24 @@ } }, "@cumulus/checksum": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.7.0.tgz", - "integrity": "sha512-xm+y2YbPf5M4dPoNc77xSk3nD3WFax1A82JVkCYcMvkulQNhDffKJfZyCH/mqtXvvJxxeG+j/QQGHbZfVXLR9Q==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/checksum/-/checksum-9.8.0.tgz", + "integrity": "sha512-gD7xLP0HzQW2jZuMAtlucEztlqH6ViDp8XecxBdfwNZY7qQyIUfqV1P9LH7kM/tMkTMyrvG2Y89GZ6TYI3NiTw==", "dev": true, "requires": { "cksum": "^1.3.0" } }, "@cumulus/errors": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.7.0.tgz", - "integrity": "sha512-JeYD0L143O+eOt5htIaAQpOI1327ow9f5oZmvmUOr18z38G2bG2GcYZxDPS0SvjNIQVlrIuaq3GtpndDgZyttA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/errors/-/errors-9.8.0.tgz", + "integrity": "sha512-jyX/SXcnxpqYOa2+ZZfs13MPz/4lEp7GcmHquIIhjGLX9z3g9zmO2oIl0aHdPPZVKqjrToWV2FMX89OzXJpXuA==", "dev": true }, "@cumulus/logger": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.7.0.tgz", - "integrity": "sha512-XrEqMfDfcFlLQMH+PcTJQQJZZB1lLWh2TqpqDD+rbcencguDa+ZyWnTwd/h0EtRhNc1A3FPLDnmEs3ZFjokFAQ==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/logger/-/logger-9.8.0.tgz", + "integrity": "sha512-MSaGmTbcaxsmmjBAAB5q7QJ6Cy0//YfM6A3fpSGm62UAZo//CnLcPf1kbX6wEQ60Nmg0EdvhTxO6jV6wwH824A==", "dev": true, "requires": { "lodash.iserror": "^3.1.1" @@ -2930,19 +2853,13 @@ "requires": { "p-timeout": "^3.0.0" } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true } } }, "@cumulus/types": { - "version": "9.7.0", - "resolved": "https://registry.npmjs.org/@cumulus/types/-/types-9.7.0.tgz", - "integrity": "sha512-RzX/vkFpqx+G/bubXuVnLRGVLXIW6/d06tvCl7qnDR0kAiMVX/s9E4DARveko6XS/25bOKNk0a9c0xvAMsJheA==", + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/@cumulus/types/-/types-9.8.0.tgz", + "integrity": "sha512-G8VJMDbbM6hUumZOoK+/cGnhkA4AriNkoK5popELo8STJve1uFN05l8KqXeHLyuJ0qpNl/dbt0j9G2ZDPefPmw==", "dev": true }, "@cypress/request": { @@ -4226,12 +4143,6 @@ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", @@ -4263,12 +4174,6 @@ "is-string": "^1.0.5" } }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true - }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -8447,12 +8352,6 @@ "resolved": "https://registry.npmjs.org/detect-element-overflow/-/detect-element-overflow-1.2.0.tgz", "integrity": "sha512-Jtr9ivYPhpd9OJux+hjL0QjUKiS1Ghgy8tvIufUjFslQgIWvgGr4mn57H190APbKkiOmXnmtMI6ytaKzMusecg==" }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", - "dev": true - }, "detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", @@ -9973,15 +9872,6 @@ } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -10439,159 +10329,6 @@ "path-exists": "^4.0.0" } }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true - }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -10667,15 +10404,6 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -10994,36 +10722,6 @@ "ini": "2.0.0" } }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -11448,15 +11146,6 @@ "react-is": "^16.7.0" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, "hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", @@ -12139,16 +11828,6 @@ "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==", "dev": true }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, "is-absolute-url": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", @@ -12472,15 +12151,6 @@ "has-symbols": "^1.0.2" } }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, "is-resolvable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", @@ -12517,15 +12187,6 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -12898,23 +12559,24 @@ "dev": true }, "knex": { - "version": "0.21.13", - "resolved": "https://registry.npmjs.org/knex/-/knex-0.21.13.tgz", - "integrity": "sha512-O3Zfc7ZHWe32q5k1Z8TqzmiGYVQ9+Tiqb4wP9tPF/ho9DUrHuuy5fLVDdkwDN0gHIr+q5t+XJzNW40DkmeL7lw==", + "version": "0.95.11", + "resolved": "https://registry.npmjs.org/knex/-/knex-0.95.11.tgz", + "integrity": "sha512-grDetD91O8VoQVCFqeWTgkzdq5406W6rggF/lK1hHuwzmjDs/0m9KxyncGdZbklTi7aUgHvw3+Cfy4x7FvpdaQ==", "dev": true, "requires": { "colorette": "1.2.1", - "commander": "^6.2.0", - "debug": "4.3.1", + "commander": "^7.1.0", + "debug": "4.3.2", + "escalade": "^3.1.1", "esm": "^3.2.25", "getopts": "2.2.5", "interpret": "^2.2.0", - "liftoff": "3.1.0", - "lodash": "^4.17.20", - "pg-connection-string": "2.4.0", + "lodash": "^4.17.21", + "pg-connection-string": "2.5.0", + "rechoir": "0.7.0", + "resolve-from": "^5.0.0", "tarn": "^3.0.1", - "tildify": "2.0.0", - "v8flags": "^3.2.0" + "tildify": "2.0.0" }, "dependencies": { "colorette": { @@ -12924,30 +12586,15 @@ "dev": true }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true } } @@ -13002,33 +12649,6 @@ "type-check": "~0.3.2" } }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -13518,15 +13138,6 @@ "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.2.0.tgz", "integrity": "sha512-BmWFkm/jZzVH9A0tEBdkjAARUz/eha+5IRyfOndeSMKRadkgR5DawoBHoRwLxkYmjJOI5bHkXKpaZocxj+dKgg==" }, - "make-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -14488,18 +14099,6 @@ "object-keys": "^1.1.1" } }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, "object.entries": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", @@ -14534,16 +14133,6 @@ "es-abstract": "^1.18.0-next.2" } }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -14812,6 +14401,14 @@ "dev": true, "requires": { "retry": "^0.12.0" + }, + "dependencies": { + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + } } }, "p-timeout": { @@ -15085,17 +14682,6 @@ "safe-buffer": "^5.1.1" } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, "parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -15119,12 +14705,6 @@ "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", "dev": true }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true - }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -15200,21 +14780,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, "path-to-regexp": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", @@ -15287,20 +14852,12 @@ "pg-protocol": "^1.5.0", "pg-types": "^2.1.0", "pgpass": "1.x" - }, - "dependencies": { - "pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", - "dev": true - } } }, "pg-connection-string": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.4.0.tgz", - "integrity": "sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==", "dev": true }, "pg-int8": { @@ -19909,6 +19466,14 @@ "requires": { "err-code": "^2.0.2", "retry": "^0.12.0" + }, + "dependencies": { + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + } } }, "prop-types": { @@ -20896,12 +20461,12 @@ } }, "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", "dev": true, "requires": { - "resolve": "^1.1.6" + "resolve": "^1.9.0" } }, "redux": { @@ -21260,29 +20825,6 @@ } } }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "dependencies": { - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - } - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -21455,9 +20997,9 @@ "dev": true }, "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, "reusify": { @@ -22424,9 +21966,9 @@ "dev": true }, "ssh2": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.4.0.tgz", - "integrity": "sha512-XvXwcXKvS452DyQvCa6Ct+chpucwc/UyxgliYz+rWXJ3jDHdtBb9xgmxJdMmnIn5bpgGAEV3KaEsH98ZGPHqwg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.5.0.tgz", + "integrity": "sha512-iUmRkhH9KGeszQwDW7YyyqjsMTf4z+0o48Cp4xOwlY5LjtbIAvyd3fwnsoUZW/hXmTCRA3yt7S/Jb9uVjErVlA==", "dev": true, "requires": { "asn1": "^0.2.4", @@ -22445,14 +21987,14 @@ } }, "ssh2-sftp-client": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-7.0.4.tgz", - "integrity": "sha512-4fFSTgoYlzcAtGfEjiXN6N41s1jSUmPlI00f7uD7pQOjt9yK9susminINKTRvPp35dkrATrlNZVhUxNCt3z5+w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssh2-sftp-client/-/ssh2-sftp-client-7.1.0.tgz", + "integrity": "sha512-RyeBnutDAbIwmQrGO+MafKuXHkg2F6AMrdZtB7fbQdGm2c8AhPEY6hMwc41DKJlNtDcQCr2vaZlrBriu6xC5PA==", "dev": true, "requires": { "concat-stream": "^2.0.0", "promise-retry": "^2.0.1", - "ssh2": "^1.4.0" + "ssh2": "^1.5.0" }, "dependencies": { "concat-stream": { @@ -23489,12 +23031,6 @@ "which-boxed-primitive": "^1.0.2" } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, "uncontrollable": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", @@ -23841,15 +23377,6 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", diff --git a/package.json b/package.json index 99d23cab5..37916515e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cumulus-dashboard", - "version": "7.0.0", + "version": "7.1.0", "description": "A dashboard for Cumulus API", "repository": { "type": "git", @@ -68,7 +68,7 @@ "@babel/preset-react": "^7.10.4", "@babel/register": "^7.12.0", "@babel/runtime": "^7.12.0", - "@cumulus/api": "9.7.0", + "@cumulus/api": "9.8.0", "@cumulus/aws-client": "9.5.0", "@cypress/webpack-preprocessor": "^4.1.5", "audit-ci": "^3.1.1",