diff --git a/assets/js/src/common/confirm_alert.jsx b/assets/js/src/common/confirm_alert.jsx index 9b43658191..62360f934e 100644 --- a/assets/js/src/common/confirm_alert.jsx +++ b/assets/js/src/common/confirm_alert.jsx @@ -49,5 +49,13 @@ ConfirmAlert.defaultProps = { export default function confirmAlert(props) { // the below render is only to invoke proptypes on ConfirmAlert - ReactDOMServer.renderToString(); + ReactDOMServer.renderToString( + + ); } diff --git a/assets/js/src/common/sender_email_address_warning.jsx b/assets/js/src/common/sender_email_address_warning.jsx index 2737b4c9c4..fcfc070e0b 100644 --- a/assets/js/src/common/sender_email_address_warning.jsx +++ b/assets/js/src/common/sender_email_address_warning.jsx @@ -11,7 +11,7 @@ const SenderEmailAddressWarning = ({ emailAddress, mssActive }) => { const emailAddressDomain = emailAddress.split('@').pop().toLowerCase(); if (window.mailpoet_free_domains.indexOf(emailAddressDomain) > -1) { return ( - + <> { {MailPoet.I18n.t('senderEmailAddressWarning3')} - + > ); } return null; diff --git a/assets/js/src/form/fields/field.jsx b/assets/js/src/form/fields/field.jsx index a1117d08ab..617c712454 100644 --- a/assets/js/src/form/fields/field.jsx +++ b/assets/js/src/form/fields/field.jsx @@ -27,35 +27,107 @@ class FormField extends React.Component { switch (dataField.type) { case 'text': - field = (); + field = ( + + ); break; case 'textarea': - field = (); + field = ( + + ); break; case 'select': - field = (); + field = ( + + ); break; case 'radio': - field = (); + field = ( + + ); break; case 'checkbox': - field = (); + field = ( + + ); break; case 'selection': - field = (); + field = ( + + ); break; case 'date': - field = (); + field = ( + + ); break; case 'reactComponent': - field = (); + field = ( + + ); break; default: diff --git a/assets/js/src/form/fields/select.jsx b/assets/js/src/form/fields/select.jsx index 033210642e..5d0c01a4e3 100644 --- a/assets/js/src/form/fields/select.jsx +++ b/assets/js/src/form/fields/select.jsx @@ -64,7 +64,7 @@ class FormFieldSelect extends React.Component { value={this.props.item[this.props.field.name] || ''} onChange={this.props.onValueChange} data-automation-id={this.props.automationId} - {...this.props.field.validation} + {...this.props.field.validation} // eslint-disable-line react/jsx-props-no-spreading > {placeholder} {options} diff --git a/assets/js/src/form/fields/selection.jsx b/assets/js/src/form/fields/selection.jsx index c0d23fc787..daddce700c 100644 --- a/assets/js/src/form/fields/selection.jsx +++ b/assets/js/src/form/fields/selection.jsx @@ -243,7 +243,11 @@ class Selection extends React.Component { // For single selects only, in order for the placeholder value to appear, // we must have a blank as the first option in the control. if (this.allowMultipleValues()) return undefined; - if (this.props.field.placeholder) return (); + if (this.props.field.placeholder) { + return ( + // eslint-disable-line jsx-a11y/control-has-associated-label + ); + } return undefined; }; @@ -275,7 +279,7 @@ class Selection extends React.Component { data-placeholder={this.props.field.placeholder} multiple={this.props.field.multiple} defaultValue={selectedValues} - {...this.props.field.validation} + {...this.props.field.validation}// eslint-disable-line react/jsx-props-no-spreading > { this.insertEmptyOption() } { options } diff --git a/assets/js/src/form/fields/text.jsx b/assets/js/src/form/fields/text.jsx index 1323c81761..1d9bd97967 100644 --- a/assets/js/src/form/fields/text.jsx +++ b/assets/js/src/form/fields/text.jsx @@ -49,7 +49,7 @@ class FormFieldText extends React.Component { // eslint-disable-line react/prefe defaultValue={defaultValue} placeholder={this.props.field.placeholder} onChange={this.props.onValueChange} - {...this.props.field.validation} + {...this.props.field.validation}// eslint-disable-line react/jsx-props-no-spreading /> ); } diff --git a/assets/js/src/form/fields/textarea.jsx b/assets/js/src/form/fields/textarea.jsx index ce0d10c6d3..8335e391f2 100644 --- a/assets/js/src/form/fields/textarea.jsx +++ b/assets/js/src/form/fields/textarea.jsx @@ -11,7 +11,7 @@ const FormFieldTextarea = (props) => ( placeholder={props.field.placeholder} defaultValue={props.field.defaultValue} onChange={props.onValueChange} - {...props.field.validation} + {...props.field.validation}// eslint-disable-line react/jsx-props-no-spreading /> ); diff --git a/assets/js/src/form/form.jsx b/assets/js/src/form/form.jsx index 53fb07cf44..fd69b8a314 100644 --- a/assets/js/src/form/form.jsx +++ b/assets/js/src/form/form.jsx @@ -7,29 +7,6 @@ import PropTypes from 'prop-types'; import { withRouter } from 'react-router-dom'; class Form extends React.Component { - static defaultProps = { - params: {}, - errors: undefined, - fields: undefined, - item: undefined, - onItemLoad: undefined, - isValid: undefined, - onSuccess: undefined, - onChange: undefined, - loading: false, - beforeFormContent: undefined, - afterFormContent: undefined, - children: undefined, - id: '', - onSubmit: undefined, - automationId: '', - messages: { - onUpdate: () => { /* no-op */ }, - onCreate: () => { /* no-op */ }, - }, - endpoint: undefined, - }; - constructor(props) { super(props); this.formRef = React.createRef(); @@ -291,4 +268,27 @@ Form.propTypes = { }).isRequired, }; +Form.defaultProps = { + params: {}, + errors: undefined, + fields: undefined, + item: undefined, + onItemLoad: undefined, + isValid: undefined, + onSuccess: undefined, + onChange: undefined, + loading: false, + beforeFormContent: undefined, + afterFormContent: undefined, + children: undefined, + id: '', + onSubmit: undefined, + automationId: '', + messages: { + onUpdate: () => { /* no-op */ }, + onCreate: () => { /* no-op */ }, + }, + endpoint: undefined, +}; + export default withRouter(Form); diff --git a/assets/js/src/form_editor/blocks/custom_checkbox/edit.jsx b/assets/js/src/form_editor/blocks/custom_checkbox/edit.jsx index 561ed6c997..a5e0842dc2 100644 --- a/assets/js/src/form_editor/blocks/custom_checkbox/edit.jsx +++ b/assets/js/src/form_editor/blocks/custom_checkbox/edit.jsx @@ -129,6 +129,7 @@ const CustomCheckboxEdit = ({ attributes, setAttributes, clientId }) => { CustomCheckboxEdit.propTypes = { attributes: PropTypes.shape({ label: PropTypes.string.isRequired, + customFieldId: PropTypes.number.isRequired, mandatory: PropTypes.bool.isRequired, hideLabel: PropTypes.bool, values: PropTypes.arrayOf(PropTypes.shape({ diff --git a/assets/js/src/form_editor/blocks/custom_date/edit.jsx b/assets/js/src/form_editor/blocks/custom_date/edit.jsx index 1c68a564e3..c75f7191ac 100644 --- a/assets/js/src/form_editor/blocks/custom_date/edit.jsx +++ b/assets/js/src/form_editor/blocks/custom_date/edit.jsx @@ -112,6 +112,7 @@ CustomDateEdit.propTypes = { dateType: PropTypes.string.isRequired, defaultToday: PropTypes.bool, mandatory: PropTypes.bool.isRequired, + customFieldId: PropTypes.number.isRequired, }).isRequired, clientId: PropTypes.string.isRequired, setAttributes: PropTypes.func.isRequired, diff --git a/assets/js/src/form_editor/blocks/custom_radio/edit.jsx b/assets/js/src/form_editor/blocks/custom_radio/edit.jsx index b66b00f9bb..377a925657 100644 --- a/assets/js/src/form_editor/blocks/custom_radio/edit.jsx +++ b/assets/js/src/form_editor/blocks/custom_radio/edit.jsx @@ -102,6 +102,7 @@ const CustomRadioEdit = ({ attributes, setAttributes, clientId }) => { CustomRadioEdit.propTypes = { attributes: PropTypes.shape({ label: PropTypes.string.isRequired, + customFieldId: PropTypes.number.isRequired, values: PropTypes.arrayOf(PropTypes.shape({ name: PropTypes.string.isRequired, id: PropTypes.string.isRequired, diff --git a/assets/js/src/form_editor/blocks/custom_select/edit.jsx b/assets/js/src/form_editor/blocks/custom_select/edit.jsx index 6d92405810..42eb949cda 100644 --- a/assets/js/src/form_editor/blocks/custom_select/edit.jsx +++ b/assets/js/src/form_editor/blocks/custom_select/edit.jsx @@ -121,6 +121,8 @@ const CustomSelectEdit = ({ attributes, setAttributes, clientId }) => { CustomSelectEdit.propTypes = { attributes: PropTypes.shape({ + customFieldId: PropTypes.number.isRequired, + labelWithinInput: PropTypes.bool.isRequired, label: PropTypes.string.isRequired, values: PropTypes.arrayOf(PropTypes.shape({ name: PropTypes.string.isRequired, diff --git a/assets/js/src/form_editor/blocks/custom_text/edit.jsx b/assets/js/src/form_editor/blocks/custom_text/edit.jsx index fe5623aa49..768baa8983 100644 --- a/assets/js/src/form_editor/blocks/custom_text/edit.jsx +++ b/assets/js/src/form_editor/blocks/custom_text/edit.jsx @@ -107,6 +107,7 @@ const CustomTextEdit = ({ attributes, setAttributes, clientId }) => { CustomTextEdit.propTypes = { attributes: PropTypes.shape({ label: PropTypes.string.isRequired, + validate: PropTypes.string, labelWithinInput: PropTypes.bool.isRequired, mandatory: PropTypes.bool.isRequired, customFieldId: PropTypes.number.isRequired, diff --git a/assets/js/src/form_editor/blocks/custom_textarea/edit.jsx b/assets/js/src/form_editor/blocks/custom_textarea/edit.jsx index 536ecc39ed..d811baa0ae 100644 --- a/assets/js/src/form_editor/blocks/custom_textarea/edit.jsx +++ b/assets/js/src/form_editor/blocks/custom_textarea/edit.jsx @@ -132,6 +132,9 @@ const CustomTextAreaEdit = ({ attributes, setAttributes, clientId }) => { CustomTextAreaEdit.propTypes = { attributes: PropTypes.shape({ label: PropTypes.string.isRequired, + lines: PropTypes.string.isRequired, + customFieldId: PropTypes.number.isRequired, + validate: PropTypes.string, labelWithinInput: PropTypes.bool.isRequired, mandatory: PropTypes.bool.isRequired, }).isRequired, diff --git a/assets/js/src/form_editor/blocks/html/edit.jsx b/assets/js/src/form_editor/blocks/html/edit.jsx index a2dd6c03de..046f8ceaca 100644 --- a/assets/js/src/form_editor/blocks/html/edit.jsx +++ b/assets/js/src/form_editor/blocks/html/edit.jsx @@ -58,6 +58,7 @@ const CustomHtmlEdit = ({ attributes, setAttributes }) => { CustomHtmlEdit.propTypes = { attributes: PropTypes.shape({ content: PropTypes.string.isRequired, + nl2br: PropTypes.bool.isRequired, }).isRequired, setAttributes: PropTypes.func.isRequired, }; diff --git a/assets/js/src/form_editor_legacy/form_editor.js b/assets/js/src/form_editor_legacy/form_editor.js index f7b3d3b39c..5816cefc92 100644 --- a/assets/js/src/form_editor_legacy/form_editor.js +++ b/assets/js/src/form_editor_legacy/form_editor.js @@ -5,9 +5,6 @@ * company: Wysija * framework: prototype 1.7.2 */ - -'use strict'; - var Observable; var WysijaHistory; var WysijaForm; @@ -803,7 +800,7 @@ WysijaForm.DraggableItem = window.Class.create({ window.Droppables.hideArea(); }, starteffect: function (element) { - new window.Effect.Opacity(element, {// eslint-disable-line no-new + new window.Effect.Opacity(element, { // eslint-disable-line no-new duration: 0.2, from: element.getOpacity(), to: 0.7, diff --git a/assets/js/src/help/cron_status.jsx b/assets/js/src/help/cron_status.jsx index cb762a7ef0..8e01a6d3b4 100644 --- a/assets/js/src/help/cron_status.jsx +++ b/assets/js/src/help/cron_status.jsx @@ -69,10 +69,13 @@ const CronStatus = (props) => { CronStatus.propTypes = { status_data: PropTypes.shape({ accessible: PropTypes.bool, + last_error_date: PropTypes.string, status: PropTypes.string, updated_at: PropTypes.number, run_accessed_at: PropTypes.number, run_completed_at: PropTypes.number, + run_started_at: PropTypes.number, + last_error: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), }).isRequired, }; diff --git a/assets/js/src/help/tasks_list/tasks_list_data_row.jsx b/assets/js/src/help/tasks_list/tasks_list_data_row.jsx index 84a1b7d855..fa7b65f13f 100644 --- a/assets/js/src/help/tasks_list/tasks_list_data_row.jsx +++ b/assets/js/src/help/tasks_list/tasks_list_data_row.jsx @@ -21,8 +21,7 @@ const TasksListDataRow = (props) => ( > {props.task.newsletter.subject || MailPoet.I18n.t('preview')} - ) : MailPoet.I18n.t('none') - } + ) : MailPoet.I18n.t('none')} { props.task.priority } diff --git a/assets/js/src/listing/listing.jsx b/assets/js/src/listing/listing.jsx index 95f3e97940..166e928d70 100644 --- a/assets/js/src/listing/listing.jsx +++ b/assets/js/src/listing/listing.jsx @@ -15,63 +15,6 @@ import MailerError from 'listing/notices.jsx'; import { withRouter } from 'react-router-dom'; class Listing extends React.Component { - static displayName = 'Listing'; - - /* eslint-disable react/require-default-props */ - static propTypes = { - limit: PropTypes.number, - sort_by: PropTypes.string, - sort_order: PropTypes.string, - params: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types - auto_refresh: PropTypes.bool, - location: PropTypes.shape({ - pathname: PropTypes.string, - }), - base_url: PropTypes.string, - type: PropTypes.string, - endpoint: PropTypes.string.isRequired, - afterGetItems: PropTypes.func, - messages: PropTypes.shape({ - onRestore: PropTypes.func, - onTrash: PropTypes.func, - onDelete: PropTypes.func, - }), - onRenderItem: PropTypes.func.isRequired, - columns: PropTypes.arrayOf(PropTypes.object), - bulk_actions: PropTypes.arrayOf(PropTypes.object), - item_actions: PropTypes.arrayOf(PropTypes.object), - search: PropTypes.bool, - groups: PropTypes.bool, - renderExtraActions: PropTypes.func, - onBeforeSelectFilter: PropTypes.func, - getListingItemKey: PropTypes.func, - history: PropTypes.shape({ - push: PropTypes.func.isRequired, - }).isRequired, - }; - - /* eslint-enable react/require-default-props */ - - static defaultProps = { - limit: 10, - sort_by: null, - sort_order: undefined, - auto_refresh: false, - location: undefined, - base_url: '', - type: undefined, - afterGetItems: undefined, - messages: undefined, - columns: [], - bulk_actions: [], - item_actions: [], - search: true, - groups: true, - renderExtraActions: undefined, - onBeforeSelectFilter: undefined, - getListingItemKey: undefined, - }; - constructor(props) { super(props); this.formRef = React.createRef(); @@ -643,6 +586,7 @@ class Listing extends React.Component { return ( <> + {/* eslint-disable-next-line react/jsx-props-no-spreading */} { this.state.meta.mta_method && } { groups } @@ -741,4 +685,58 @@ class Listing extends React.Component { } } +/* eslint-disable react/require-default-props */ +Listing.propTypes = { + limit: PropTypes.number, + sort_by: PropTypes.string, + sort_order: PropTypes.string, + params: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types + auto_refresh: PropTypes.bool, + location: PropTypes.shape({ + pathname: PropTypes.string, + }), + base_url: PropTypes.string, + type: PropTypes.string, + endpoint: PropTypes.string.isRequired, + afterGetItems: PropTypes.func, + messages: PropTypes.shape({ + onRestore: PropTypes.func, + onTrash: PropTypes.func, + onDelete: PropTypes.func, + }), + onRenderItem: PropTypes.func.isRequired, + columns: PropTypes.arrayOf(PropTypes.object), + bulk_actions: PropTypes.arrayOf(PropTypes.object), + item_actions: PropTypes.arrayOf(PropTypes.object), + search: PropTypes.bool, + groups: PropTypes.bool, + renderExtraActions: PropTypes.func, + onBeforeSelectFilter: PropTypes.func, + getListingItemKey: PropTypes.func, + history: PropTypes.shape({ + push: PropTypes.func.isRequired, + }).isRequired, +}; +/* eslint-enable react/require-default-props */ + +Listing.defaultProps = { + limit: 10, + sort_by: null, + sort_order: undefined, + auto_refresh: false, + location: undefined, + base_url: '', + type: undefined, + afterGetItems: undefined, + messages: undefined, + columns: [], + bulk_actions: [], + item_actions: [], + search: true, + groups: true, + renderExtraActions: undefined, + onBeforeSelectFilter: undefined, + getListingItemKey: undefined, +}; + export default withRouter(Listing); diff --git a/assets/js/src/listing/listing_item.jsx b/assets/js/src/listing/listing_item.jsx index 25cbd758b8..88eda62779 100644 --- a/assets/js/src/listing/listing_item.jsx +++ b/assets/js/src/listing/listing_item.jsx @@ -5,9 +5,12 @@ import { Link } from 'react-router-dom'; import classNames from 'classnames'; class ListingItem extends React.Component { - state = { - expanded: false, - }; + constructor(props) { + super(props); + this.state = { + expanded: false, + }; + } handleSelectItem = (e) => { this.props.onSelectItem( diff --git a/assets/js/src/listing/pages.jsx b/assets/js/src/listing/pages.jsx index 7773b10a90..9314d58903 100644 --- a/assets/js/src/listing/pages.jsx +++ b/assets/js/src/listing/pages.jsx @@ -4,9 +4,12 @@ import MailPoet from 'mailpoet'; import PropTypes from 'prop-types'; class ListingPages extends React.Component { - state = { - page: null, - }; + constructor(props) { + super(props); + this.state = { + page: null, + }; + } setPage = (page) => { this.setState({ diff --git a/assets/js/src/newsletters/automatic_emails.jsx b/assets/js/src/newsletters/automatic_emails.jsx index bc04a28f92..44356126af 100644 --- a/assets/js/src/newsletters/automatic_emails.jsx +++ b/assets/js/src/newsletters/automatic_emails.jsx @@ -69,6 +69,7 @@ if (newslettersContainer && !_.isEmpty(emails)) { email, name: event.slug, }; + // eslint-disable-next-line react/jsx-props-no-spreading return (); }, }); @@ -83,6 +84,7 @@ if (newslettersContainer && !_.isEmpty(emails)) { ...props, email, }; + // eslint-disable-next-line react/jsx-props-no-spreading return (); }, }); diff --git a/assets/js/src/newsletters/automatic_emails/events/event_options.jsx b/assets/js/src/newsletters/automatic_emails/events/event_options.jsx index a2409baafd..20b32f6fc9 100644 --- a/assets/js/src/newsletters/automatic_emails/events/event_options.jsx +++ b/assets/js/src/newsletters/automatic_emails/events/event_options.jsx @@ -65,7 +65,10 @@ class EventOptions extends React.Component { } return ( - + ); } diff --git a/assets/js/src/newsletters/automatic_emails/events/event_scheduling.jsx b/assets/js/src/newsletters/automatic_emails/events/event_scheduling.jsx index 3e0834c9be..b66dcabe94 100644 --- a/assets/js/src/newsletters/automatic_emails/events/event_scheduling.jsx +++ b/assets/js/src/newsletters/automatic_emails/events/event_scheduling.jsx @@ -55,7 +55,11 @@ class EventScheduling extends React.Component { }; return ( - + ); } @@ -86,7 +90,10 @@ class EventScheduling extends React.Component { }; return ( - + ); } diff --git a/assets/js/src/newsletters/automatic_emails/events_conditions.jsx b/assets/js/src/newsletters/automatic_emails/events_conditions.jsx index dbfcb31e75..da9c7b6d7b 100644 --- a/assets/js/src/newsletters/automatic_emails/events_conditions.jsx +++ b/assets/js/src/newsletters/automatic_emails/events_conditions.jsx @@ -75,7 +75,12 @@ class EventsConditions extends React.Component { }; return ( - + ); } @@ -97,7 +102,10 @@ class EventsConditions extends React.Component { return ( - + ); } @@ -114,7 +122,11 @@ class EventsConditions extends React.Component { }; return ( - + ); } @@ -242,7 +254,6 @@ EventsConditions.propTypes = { title: PropTypes.string.isRequired, slug: PropTypes.string.isRequired, }).isRequired, - location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types }; export default EventsConditions; diff --git a/assets/js/src/newsletters/automatic_emails/listings.jsx b/assets/js/src/newsletters/automatic_emails/listings.jsx index b45319286e..5cbd3341b0 100644 --- a/assets/js/src/newsletters/automatic_emails/listings.jsx +++ b/assets/js/src/newsletters/automatic_emails/listings.jsx @@ -151,17 +151,6 @@ const newsletterActions = [ Hooks.addFilter('mailpoet_newsletters_listings_automatic_email_actions', 'mailpoet', addStatsCTAAction); class Listings extends React.Component { - static displayName = 'Listings'; - - static propTypes = { - match: PropTypes.shape({ - params: PropTypes.shape({ - tab: PropTypes.string, - }).isRequired, - }).isRequired, - location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types - }; - constructor(props) { super(props); this.state = { @@ -422,4 +411,13 @@ class Listings extends React.Component { } } +Listings.propTypes = { + match: PropTypes.shape({ + params: PropTypes.shape({ + tab: PropTypes.string, + }).isRequired, + }).isRequired, + location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types +}; + export default Listings; diff --git a/assets/js/src/newsletters/automatic_emails/send_event_conditions.jsx b/assets/js/src/newsletters/automatic_emails/send_event_conditions.jsx index 6ba0b80289..b08b56ccb6 100644 --- a/assets/js/src/newsletters/automatic_emails/send_event_conditions.jsx +++ b/assets/js/src/newsletters/automatic_emails/send_event_conditions.jsx @@ -64,7 +64,13 @@ class SendEventConditions extends React.Component { } return ( - + ); } @@ -87,7 +93,10 @@ class SendEventConditions extends React.Component { return ( - + ); } @@ -104,7 +113,11 @@ class SendEventConditions extends React.Component { }; return ( - + ); } diff --git a/assets/js/src/newsletters/campaign_stats/newsletter_info.jsx b/assets/js/src/newsletters/campaign_stats/newsletter_info.jsx index 1b815e0fb5..09a5ef842a 100644 --- a/assets/js/src/newsletters/campaign_stats/newsletter_info.jsx +++ b/assets/js/src/newsletters/campaign_stats/newsletter_info.jsx @@ -83,6 +83,7 @@ NewsletterStatsInfo.propTypes = { sender_address: PropTypes.string, sender_name: PropTypes.string, reply_to_address: PropTypes.string, + preview_url: PropTypes.string, reply_to_name: PropTypes.string, segments: PropTypes.array, }).isRequired, diff --git a/assets/js/src/newsletters/listings/notification.jsx b/assets/js/src/newsletters/listings/notification.jsx index 9419b14b53..d8ff4a9fc7 100644 --- a/assets/js/src/newsletters/listings/notification.jsx +++ b/assets/js/src/newsletters/listings/notification.jsx @@ -163,15 +163,6 @@ const newsletterActions = [ ]; class NewsletterListNotification extends React.Component { - static displayName = 'NewsletterListNotification'; - - static propTypes = { - location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types - match: PropTypes.shape({ - params: PropTypes.object, // eslint-disable-line react/forbid-prop-types - }).isRequired, - }; - constructor(props) { super(props); this.state = { @@ -388,4 +379,11 @@ class NewsletterListNotification extends React.Component { } } +NewsletterListNotification.propTypes = { + location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types + match: PropTypes.shape({ + params: PropTypes.object, // eslint-disable-line react/forbid-prop-types + }).isRequired, +}; + export default NewsletterListNotification; diff --git a/assets/js/src/newsletters/listings/standard.jsx b/assets/js/src/newsletters/listings/standard.jsx index 819d64dd26..8b4996b3f7 100644 --- a/assets/js/src/newsletters/listings/standard.jsx +++ b/assets/js/src/newsletters/listings/standard.jsx @@ -173,17 +173,6 @@ let newsletterActions = [ newsletterActions = addStatsCTAAction(newsletterActions); class NewsletterListStandard extends React.Component { - static displayName = 'NewsletterListStandard'; - - static contextType = GlobalContext; - - static propTypes = { - location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types - match: PropTypes.shape({ - params: PropTypes.object, // eslint-disable-line react/forbid-prop-types - }).isRequired, - }; - constructor(props) { super(props); this.state = { @@ -282,4 +271,13 @@ class NewsletterListStandard extends React.Component { } } +NewsletterListStandard.contextType = GlobalContext; + +NewsletterListStandard.propTypes = { + location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types + match: PropTypes.shape({ + params: PropTypes.object, // eslint-disable-line react/forbid-prop-types + }).isRequired, +}; + export default NewsletterListStandard; diff --git a/assets/js/src/newsletters/listings/tabs.jsx b/assets/js/src/newsletters/listings/tabs.jsx index 20a23113ca..0729f41c01 100644 --- a/assets/js/src/newsletters/listings/tabs.jsx +++ b/assets/js/src/newsletters/listings/tabs.jsx @@ -7,25 +7,28 @@ import PropTypes from 'prop-types'; import withNpsPoll from 'nps_poll.jsx'; class ListingTabs extends React.Component { - state = { - tabs: Hooks.applyFilters('mailpoet_newsletters_listings_tabs', [ - { - name: 'standard', - label: MailPoet.I18n.t('tabStandardTitle'), - link: '/standard', - }, - { - name: 'welcome', - label: MailPoet.I18n.t('tabWelcomeTitle'), - link: '/welcome', - }, - { - name: 'notification', - label: MailPoet.I18n.t('tabNotificationTitle'), - link: '/notification', - }, - ]), - }; + constructor(props) { + super(props); + this.state = { + tabs: Hooks.applyFilters('mailpoet_newsletters_listings_tabs', [ + { + name: 'standard', + label: MailPoet.I18n.t('tabStandardTitle'), + link: '/standard', + }, + { + name: 'welcome', + label: MailPoet.I18n.t('tabWelcomeTitle'), + link: '/welcome', + }, + { + name: 'notification', + label: MailPoet.I18n.t('tabNotificationTitle'), + link: '/notification', + }, + ]), + }; + } render() { const tabs = this.state.tabs.map((tab) => { diff --git a/assets/js/src/newsletters/listings/welcome.jsx b/assets/js/src/newsletters/listings/welcome.jsx index a591507d6e..d78f2d8426 100644 --- a/assets/js/src/newsletters/listings/welcome.jsx +++ b/assets/js/src/newsletters/listings/welcome.jsx @@ -158,15 +158,6 @@ let newsletterActions = [ newsletterActions = addStatsCTAAction(newsletterActions); class NewsletterListWelcome extends React.Component { - static displayName = 'NewsletterListWelcome'; - - static propTypes = { - location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types - match: PropTypes.shape({ - params: PropTypes.object, // eslint-disable-line react/forbid-prop-types - }).isRequired, - }; - constructor(props) { super(props); this.state = { @@ -404,4 +395,11 @@ class NewsletterListWelcome extends React.Component { } } +NewsletterListWelcome.propTypes = { + location: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types + match: PropTypes.shape({ + params: PropTypes.object, // eslint-disable-line react/forbid-prop-types + }).isRequired, +}; + export default NewsletterListWelcome; diff --git a/assets/js/src/newsletters/newsletters.jsx b/assets/js/src/newsletters/newsletters.jsx index 8dc5bf7360..6f0ed0980b 100644 --- a/assets/js/src/newsletters/newsletters.jsx +++ b/assets/js/src/newsletters/newsletters.jsx @@ -122,6 +122,6 @@ const App = () => ( const container = document.getElementById('newsletters_container'); if (container) { - // eslint-disable-line react/no-render-return-value + // eslint-disable-next-line react/no-render-return-value window.mailpoet_listing = ReactDOM.render(, container); } diff --git a/assets/js/src/newsletters/send.jsx b/assets/js/src/newsletters/send.jsx index d11a1db13d..f260efefa8 100644 --- a/assets/js/src/newsletters/send.jsx +++ b/assets/js/src/newsletters/send.jsx @@ -24,19 +24,6 @@ const generateGaTrackingCampaignName = (id, subject) => { }; class NewsletterSend extends React.Component { - static displayName = 'NewsletterSend'; - - static propTypes = { - match: PropTypes.shape({ - params: PropTypes.shape({ - id: PropTypes.string, - }).isRequired, - }).isRequired, - history: PropTypes.shape({ - push: PropTypes.func.isRequired, - }).isRequired, - }; - constructor(props) { super(props); this.state = { @@ -505,7 +492,7 @@ class NewsletterSend extends React.Component { type="button" onClick={this.handleSend} value={MailPoet.I18n.t('send')} - {...sendButtonOptions} + {...sendButtonOptions} // eslint-disable-line react/jsx-props-no-spreading disabled={window.mailpoet_subscribers_limit_reached} /> ) @@ -541,4 +528,15 @@ class NewsletterSend extends React.Component { } } +NewsletterSend.propTypes = { + match: PropTypes.shape({ + params: PropTypes.shape({ + id: PropTypes.string, + }).isRequired, + }).isRequired, + history: PropTypes.shape({ + push: PropTypes.func.isRequired, + }).isRequired, +}; + export default withRouter(NewsletterSend); diff --git a/assets/js/src/newsletters/send/congratulate/fail.jsx b/assets/js/src/newsletters/send/congratulate/fail.jsx index 429130da91..47d9071bac 100644 --- a/assets/js/src/newsletters/send/congratulate/fail.jsx +++ b/assets/js/src/newsletters/send/congratulate/fail.jsx @@ -22,8 +22,7 @@ function Fail(props) { { match } ) - ) - } + )} {MailPoet.I18n.t('close')} diff --git a/assets/js/src/newsletters/send/congratulate/success.jsx b/assets/js/src/newsletters/send/congratulate/success.jsx index e37ae0b3e2..2d4589fdb1 100644 --- a/assets/js/src/newsletters/send/congratulate/success.jsx +++ b/assets/js/src/newsletters/send/congratulate/success.jsx @@ -28,7 +28,12 @@ function SuccessContent(props) { function Success(props) { return ( ); } diff --git a/assets/js/src/newsletters/send/date_text.jsx b/assets/js/src/newsletters/send/date_text.jsx index 67c8cf3b65..4209e5849c 100644 --- a/assets/js/src/newsletters/send/date_text.jsx +++ b/assets/js/src/newsletters/send/date_text.jsx @@ -155,7 +155,7 @@ class DateText extends React.Component { disabled={this.props.disabled} onChange={this.onChange} ref={this.dateInput} - {...this.props.validation} + {...this.props.validation} // eslint-disable-line react/jsx-props-no-spreading /> ); } diff --git a/assets/js/src/newsletters/send/sender_address_field.jsx b/assets/js/src/newsletters/send/sender_address_field.jsx index 1dbf0ad44b..43d69b6d2f 100644 --- a/assets/js/src/newsletters/send/sender_address_field.jsx +++ b/assets/js/src/newsletters/send/sender_address_field.jsx @@ -19,9 +19,10 @@ class SenderField extends React.Component { render() { return ( - + <> @@ -30,12 +31,13 @@ class SenderField extends React.Component { mssActive={window.mailpoet_mss_active} /> - + > ); } } SenderField.propTypes = { + field: PropTypes.object.isRequired, // eslint-disable-line react/forbid-prop-types item: PropTypes.shape({ sender_address: PropTypes.string.isRequired, }).isRequired, diff --git a/assets/js/src/newsletters/send/time_select.jsx b/assets/js/src/newsletters/send/time_select.jsx index 396c62d164..21543dce3a 100644 --- a/assets/js/src/newsletters/send/time_select.jsx +++ b/assets/js/src/newsletters/send/time_select.jsx @@ -20,7 +20,7 @@ class TimeSelect extends React.Component { // eslint-disable-line react/prefer-s value={this.props.value} disabled={this.props.disabled} onChange={this.props.onChange} - {...this.props.validation} + {...this.props.validation} // eslint-disable-line react/jsx-props-no-spreading > {options} diff --git a/assets/js/src/newsletters/sending_status.jsx b/assets/js/src/newsletters/sending_status.jsx index d3ea644cc0..cd13a91e96 100644 --- a/assets/js/src/newsletters/sending_status.jsx +++ b/assets/js/src/newsletters/sending_status.jsx @@ -83,7 +83,14 @@ const SendingStatusListing = React.memo(({ location, params }) => ( params={params} endpoint="sending_task_subscribers" base_url="sending-status/:id" - onRenderItem={(item) => } + onRenderItem={ + (item) => ( + + { /* eslint-disable-next-line react/jsx-props-no-spreading */ } + + + ) + } getListingItemKey={(item) => `${item.taskId}-${item.subscriberId}`} columns={columns} messages={messages} diff --git a/assets/js/src/newsletters/templates.jsx b/assets/js/src/newsletters/templates.jsx index fedf5a9499..e23148f8d2 100644 --- a/assets/js/src/newsletters/templates.jsx +++ b/assets/js/src/newsletters/templates.jsx @@ -241,7 +241,10 @@ class NewsletterTemplates extends React.Component { afterDelete={this.afterTemplateDelete} beforeSelect={() => this.setState({ loading: true })} afterSelect={this.afterTemplateSelect} - {...template} + id={template.id} + name={template.name} + thumbnail={template.thumbnail} + readonly={template.readonly} /> )); } diff --git a/assets/js/src/newsletters/types.jsx b/assets/js/src/newsletters/types.jsx index 17a11ed92d..13d669ae11 100644 --- a/assets/js/src/newsletters/types.jsx +++ b/assets/js/src/newsletters/types.jsx @@ -7,19 +7,6 @@ import _ from 'underscore'; import { withRouter } from 'react-router-dom'; class NewsletterTypes extends React.Component { - static propTypes = { - filter: PropTypes.func, - history: PropTypes.shape({ - push: PropTypes.func.isRequired, - }).isRequired, - showHeader: PropTypes.bool, - }; - - static defaultProps = { - filter: null, - showHeader: true, - }; - constructor(props) { super(props); this.state = { @@ -302,4 +289,17 @@ class NewsletterTypes extends React.Component { } } +NewsletterTypes.propTypes = { + filter: PropTypes.func, + history: PropTypes.shape({ + push: PropTypes.func.isRequired, + }).isRequired, + showHeader: PropTypes.bool, +}; + +NewsletterTypes.defaultProps = { + filter: null, + showHeader: true, +}; + export default withRouter(NewsletterTypes); diff --git a/assets/js/src/newsletters/types/automatic_emails/event.jsx b/assets/js/src/newsletters/types/automatic_emails/event.jsx index 4ff2806ac3..6539a304c0 100644 --- a/assets/js/src/newsletters/types/automatic_emails/event.jsx +++ b/assets/js/src/newsletters/types/automatic_emails/event.jsx @@ -67,8 +67,7 @@ class AutomaticEmailEvent extends React.PureComponent { {event.badge.text} - ) : '' - } + ) : ''} {event.description} @@ -91,6 +90,7 @@ AutomaticEmailEvent.propTypes = { event: PropTypes.shape({ slug: PropTypes.string.isRequired, thumbnailImage: PropTypes.string, + actionButtonLink: PropTypes.string, title: PropTypes.string.isRequired, soon: PropTypes.bool, badge: PropTypes.shape({ diff --git a/assets/js/src/newsletters/types/notification/notification.jsx b/assets/js/src/newsletters/types/notification/notification.jsx index 33b0ded60c..df1b59944d 100644 --- a/assets/js/src/newsletters/types/notification/notification.jsx +++ b/assets/js/src/newsletters/types/notification/notification.jsx @@ -13,21 +13,18 @@ const field = { }; class NewsletterNotification extends React.Component { - static propTypes = { - history: PropTypes.shape({ - push: PropTypes.func.isRequired, - }).isRequired, - }; - - state = { - options: { - intervalType: 'daily', - timeOfDay: 0, - weekDay: 1, - monthDay: 0, - nthWeekDay: 1, - }, - }; + constructor(props) { + super(props); + this.state = { + options: { + intervalType: 'daily', + timeOfDay: 0, + weekDay: 1, + monthDay: 0, + nthWeekDay: 1, + }, + }; + } handleValueChange = (event) => { const state = this.state; @@ -87,4 +84,10 @@ class NewsletterNotification extends React.Component { } } +NewsletterNotification.propTypes = { + history: PropTypes.shape({ + push: PropTypes.func.isRequired, + }).isRequired, +}; + export default withRouter(NewsletterNotification); diff --git a/assets/js/src/newsletters/types/standard.jsx b/assets/js/src/newsletters/types/standard.jsx index 64bafabf66..fcaebccf41 100644 --- a/assets/js/src/newsletters/types/standard.jsx +++ b/assets/js/src/newsletters/types/standard.jsx @@ -5,12 +5,6 @@ import Breadcrumb from 'newsletters/breadcrumb.jsx'; import { withRouter } from 'react-router-dom'; class NewsletterStandard extends React.Component { - static propTypes = { - history: PropTypes.shape({ - push: PropTypes.func.isRequired, - }).isRequired, - }; - componentDidMount() { // No options for this type, create a newsletter upon mounting MailPoet.Ajax.post({ @@ -46,4 +40,10 @@ class NewsletterStandard extends React.Component { } } +NewsletterStandard.propTypes = { + history: PropTypes.shape({ + push: PropTypes.func.isRequired, + }).isRequired, +}; + export default withRouter(NewsletterStandard); diff --git a/assets/js/src/notices/notices.jsx b/assets/js/src/notices/notices.jsx index 2fea308c07..8707394749 100644 --- a/assets/js/src/notices/notices.jsx +++ b/assets/js/src/notices/notices.jsx @@ -4,5 +4,10 @@ import Notice from './notice.jsx'; export default () => { const { notices } = React.useContext(GlobalContext); - return notices.items.map(({ id, ...props }) => ); + return notices.items.map( + ({ + id, + ...props + }) => // eslint-disable-line react/jsx-props-no-spreading + ); }; diff --git a/assets/js/src/notices/subscribers_limit_notice.jsx b/assets/js/src/notices/subscribers_limit_notice.jsx index daca436538..50d646cc03 100644 --- a/assets/js/src/notices/subscribers_limit_notice.jsx +++ b/assets/js/src/notices/subscribers_limit_notice.jsx @@ -39,16 +39,16 @@ const SubscribersLimitNotice = () => { {MailPoet.I18n.t('upgradeNow')} {hasValidApiKey && ( - <> - {' '} - - {MailPoet.I18n.t('refreshMySubscribers')} - - > + <> + {' '} + + {MailPoet.I18n.t('refreshMySubscribers')} + + > )} diff --git a/assets/js/src/nps_poll.jsx b/assets/js/src/nps_poll.jsx index 0501a4993f..89d489f372 100644 --- a/assets/js/src/nps_poll.jsx +++ b/assets/js/src/nps_poll.jsx @@ -76,7 +76,7 @@ const useNpsPoll = () => { const withNpsPoll = (Component) => (props) => { useNpsPoll(); - return ; + return ;// eslint-disable-line react/jsx-props-no-spreading }; export default withNpsPoll; diff --git a/assets/js/src/subscribers/form.jsx b/assets/js/src/subscribers/form.jsx index 2886ae4ebf..4dc85cb592 100644 --- a/assets/js/src/subscribers/form.jsx +++ b/assets/js/src/subscribers/form.jsx @@ -156,8 +156,7 @@ function beforeFormContent(subscriber) { { match } ) - ) - } + )} ); } diff --git a/assets/js/src/subscribers/importExport/import.jsx b/assets/js/src/subscribers/importExport/import.jsx index bbd65dac87..c2531bc0e5 100644 --- a/assets/js/src/subscribers/importExport/import.jsx +++ b/assets/js/src/subscribers/importExport/import.jsx @@ -1,3 +1,4 @@ +/* eslint-disable react/jsx-props-no-spreading */ import React, { useState } from 'react'; import ReactDOM from 'react-dom'; import { diff --git a/assets/js/src/subscribers/importExport/import/step_data_manipulation/match_table.jsx b/assets/js/src/subscribers/importExport/import/step_data_manipulation/match_table.jsx index f36f662a5e..510710d543 100644 --- a/assets/js/src/subscribers/importExport/import/step_data_manipulation/match_table.jsx +++ b/assets/js/src/subscribers/importExport/import/step_data_manipulation/match_table.jsx @@ -16,6 +16,7 @@ function ColumnDataMatch({ header, subscribers }) { matchedColumnTypes.map((columnType, i) => ( // eslint-disable-next-line react/no-array-index-key + {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */} + {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */} diff --git a/assets/js/src/subscribers/importExport/import/step_method_selection/method_mailchimp.jsx b/assets/js/src/subscribers/importExport/import/step_method_selection/method_mailchimp.jsx index 9c2f525ae4..d0731923ce 100644 --- a/assets/js/src/subscribers/importExport/import/step_method_selection/method_mailchimp.jsx +++ b/assets/js/src/subscribers/importExport/import/step_method_selection/method_mailchimp.jsx @@ -108,8 +108,7 @@ const MethodMailChimp = ({ onFinish }) => { { Array.isArray(mailChimpLoadedLists) && mailChimpLoadedLists.length === 0 ? MailPoet.I18n.t('noMailChimpLists') - : null - } + : null} {showListsSelection()} diff --git a/assets/js/src/subscribers/importExport/import/step_results.jsx b/assets/js/src/subscribers/importExport/import/step_results.jsx index 3b67ebf656..66330f8154 100644 --- a/assets/js/src/subscribers/importExport/import/step_results.jsx +++ b/assets/js/src/subscribers/importExport/import/step_results.jsx @@ -131,6 +131,7 @@ function StepResults({ StepResults.propTypes = { history: PropTypes.shape({ push: PropTypes.func.isRequired, + replace: PropTypes.func.isRequired, }).isRequired, errors: PropTypes.arrayOf(PropTypes.string.isRequired), segments: PropTypes.arrayOf(PropTypes.string.isRequired), diff --git a/assets/js/src/wizard/create_sender_settings.jsx b/assets/js/src/wizard/create_sender_settings.jsx index f2fceb8646..2a4f86ab77 100644 --- a/assets/js/src/wizard/create_sender_settings.jsx +++ b/assets/js/src/wizard/create_sender_settings.jsx @@ -1,5 +1,4 @@ - const notFreeAddress = ({ name, address }) => ({ sender: { name, address }, reply_to: { name, address }, diff --git a/assets/js/src/wizard/layout/step_layout_body.jsx b/assets/js/src/wizard/layout/step_layout_body.jsx index af23e07fd6..7f55ba7e53 100644 --- a/assets/js/src/wizard/layout/step_layout_body.jsx +++ b/assets/js/src/wizard/layout/step_layout_body.jsx @@ -11,8 +11,7 @@ const WelcomeWizardStepLayoutBody = (props) => ( { props.displayProgressBar && (props.step <= props.stepsCount) ? ( - ) : null - } + ) : null} {props.children} diff --git a/assets/js/src/wizard/steps/pitch_mss_step.jsx b/assets/js/src/wizard/steps/pitch_mss_step.jsx index 6393f58481..25558efa9d 100644 --- a/assets/js/src/wizard/steps/pitch_mss_step.jsx +++ b/assets/js/src/wizard/steps/pitch_mss_step.jsx @@ -113,8 +113,7 @@ const Step = (props) => ( mailpoetAccountUrl={props.mailpoetAccountUrl} next={props.next} /> - ) - } + )} ); diff --git a/assets/js/src/wizard/welcome_wizard_controller.jsx b/assets/js/src/wizard/welcome_wizard_controller.jsx index 2eddf06d08..01045f277c 100644 --- a/assets/js/src/wizard/welcome_wizard_controller.jsx +++ b/assets/js/src/wizard/welcome_wizard_controller.jsx @@ -90,8 +90,7 @@ const WelcomeWizardStepsController = (props) => { sender={sender} /> - ) : null - } + ) : null} { stepName === 'WelcomeWizardMigratedUserStep' ? ( @@ -104,8 +103,7 @@ const WelcomeWizardStepsController = (props) => { next={() => redirect(step)} /> - ) : null - } + ) : null} { stepName === 'WelcomeWizardEmailCourseStep' ? ( @@ -118,8 +116,7 @@ const WelcomeWizardStepsController = (props) => { next={() => redirect(step)} /> - ) : null - } + ) : null} { stepName === 'WelcomeWizardUsageTrackingStep' ? ( @@ -136,8 +133,7 @@ const WelcomeWizardStepsController = (props) => { loading={loading} /> - ) : null - } + ) : null} { stepName === 'WelcomeWizardWooCommerceStep' ? ( @@ -152,8 +148,7 @@ const WelcomeWizardStepsController = (props) => { loading={loading} /> - ) : null - } + ) : null} { stepName === 'WelcomeWizardPitchMSSStep' ? ( @@ -168,8 +163,7 @@ const WelcomeWizardStepsController = (props) => { mailpoetAccountUrl={window.mailpoet_account_url} /> - ) : null - } + ) : null} ); }; diff --git a/package-lock.json b/package-lock.json index 85dff2288f..019a3541fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3025,9 +3025,9 @@ } }, "acorn-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", "dev": true }, "acorn-walk": { @@ -3123,10 +3123,13 @@ "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==", - "dev": true + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } }, "ansi-regex": { "version": "2.1.1", @@ -3224,13 +3227,120 @@ "dev": true }, "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + } } }, "array-union": { @@ -3624,12 +3734,34 @@ "dev": true }, "axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.1.tgz", + "integrity": "sha512-lF98xa/yvy6j3fBHAgQXIYl+J4eZadOSqsPojemUqClzNbBV38wWGpUbQbVEyf4eUF5yF7eHmGgGA2JiHyjeqw==", "dev": true, "requires": { - "ast-types-flow": "0.0.7" + "@babel/runtime": "^7.7.4", + "@babel/runtime-corejs3": "^7.7.4" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz", + "integrity": "sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/runtime-corejs3": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.8.3.tgz", + "integrity": "sha512-lrIU4aVbmlM/wQPzhEvzvNJskKyYptuXb0fGC0lTQTupTOYtR2Vqbu6/jf8vTr4M8Wt1nIzxVrSvPI5qESa/xA==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.2" + } + } } }, "babel-code-frame": { @@ -4718,12 +4850,12 @@ } }, "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=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "restore-cursor": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-width": { @@ -4840,9 +4972,9 @@ } }, "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "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 }, "commondir": { @@ -4885,6 +5017,12 @@ "typedarray": "^0.0.6" } }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -5394,9 +5532,9 @@ "dev": true }, "damerau-levenshtein": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", - "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz", + "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==", "dev": true }, "dashdash": { @@ -5639,9 +5777,9 @@ "integrity": "sha512-8bHRqMt4w/kND19KBksE4NOJo+gIOPuiZfxQvbd6xikfKbuNBYBdLIw0hA/4lWzBaDpwpW+Olmg1BjD9+0LU2w==" }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "requires": { "esutils": "^2.0.2" @@ -5813,9 +5951,9 @@ } }, "emoji-regex": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", - "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "emojis-list": { @@ -5931,65 +6069,66 @@ } }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", + "ajv": "^6.10.0", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", "table": "^5.2.3", - "text-table": "^0.2.0" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "cross-spawn": { @@ -6003,6 +6142,14 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "debug": { @@ -6014,43 +6161,55 @@ "ms": "^2.1.1" } }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", "dev": true, "requires": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-glob": "^4.0.1" + }, + "dependencies": { + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + } + } + }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" } }, "json-schema-traverse": { @@ -6065,53 +6224,73 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "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": "^3.0.0" + "ansi-regex": "^4.1.0" } + }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true } } }, "eslint-config-airbnb": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.0.tgz", - "integrity": "sha512-R9jw28hFfEQnpPau01NO5K/JWMGLi6aymiF6RsnMURjTk+MqZKllCqGK/0tOvHkPi/NWSSOU2Ced/GX++YxLnw==", + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.0.1.tgz", + "integrity": "sha512-hLb/ccvW4grVhvd6CT83bECacc+s4Z3/AEyWQdIT2KeTsG9dR7nx1gs7Iw4tDmGKozCNHFn4yZmRm3Tgy+XxyQ==", "dev": true, "requires": { - "eslint-config-airbnb-base": "^13.1.0", + "eslint-config-airbnb-base": "^14.0.0", "object.assign": "^4.1.0", - "object.entries": "^1.0.4" + "object.entries": "^1.1.0" } }, "eslint-config-airbnb-base": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.1.0.tgz", - "integrity": "sha512-XWwQtf3U3zIoKO1BbHh6aUhJZQweOwSt4c2JrPDg9FP3Ltv3+YfEv7jIDB8275tVnO/qOHbfuYg3kzw6Je7uWw==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz", + "integrity": "sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA==", "dev": true, "requires": { - "eslint-restricted-globals": "^0.1.1", + "confusing-browser-globals": "^1.0.7", "object.assign": "^4.1.0", - "object.entries": "^1.0.4" + "object.entries": "^1.1.0" } }, "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", "dev": true, "requires": { "debug": "^2.6.9", - "resolve": "^1.5.0" + "resolve": "^1.13.1" }, "dependencies": { "path-parse": { @@ -6121,9 +6300,9 @@ "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -6132,50 +6311,83 @@ } }, "eslint-import-resolver-webpack": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.8.4.tgz", - "integrity": "sha512-b6JxR57ruiMxq2tIu4T/SrYED5RKJfeBEs8u3+JWF+O2RxDmFpUH84c5uS1T5qiP0K4r0SL7CXhvd41hXdDlAg==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.12.1.tgz", + "integrity": "sha512-O/sUAXk6GWrICiN8JUkkjdt9uZpqZHP+FVnTxtEILL6EZMaPSrnP4lGPSFwcKsv7O211maqq4Nz60+dh236hVg==", "dev": true, "requires": { "array-find": "^1.0.0", - "debug": "^2.6.8", - "enhanced-resolve": "~0.9.0", - "find-root": "^0.1.1", - "has": "^1.0.1", - "interpret": "^1.0.0", - "is-absolute": "^0.2.3", - "lodash.get": "^3.7.0", + "debug": "^2.6.9", + "enhanced-resolve": "^0.9.1", + "find-root": "^1.1.0", + "has": "^1.0.3", + "interpret": "^1.2.0", + "lodash": "^4.17.15", "node-libs-browser": "^1.0.0 || ^2.0.0", - "resolve": "^1.2.0", - "semver": "^5.3.0" + "resolve": "^1.13.1", + "semver": "^5.7.1" + }, + "dependencies": { + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "eslint-module-utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz", - "integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", + "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", "dev": true, "requires": { - "debug": "^2.6.8", + "debug": "^2.6.9", "pkg-dir": "^2.0.0" } }, "eslint-plugin-import": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.15.0.tgz", - "integrity": "sha512-LEHqgR+RcnpGqYW7h9WMkPb/tP+ekKxWdQDztfTtZeV43IHF+X8lXU+1HOCcR4oXD24qRgEwNSxIweD5uNKGVg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz", + "integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==", "dev": true, "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", "contains-path": "^0.1.0", "debug": "^2.6.9", "doctrine": "1.5.0", "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.3.0", + "eslint-module-utils": "^2.4.1", "has": "^1.0.3", - "lodash": "^4.17.11", "minimatch": "^3.0.4", + "object.values": "^1.1.0", "read-pkg-up": "^2.0.0", - "resolve": "^1.9.0" + "resolve": "^1.12.0" }, "dependencies": { "doctrine": { @@ -6197,12 +6409,6 @@ "function-bind": "^1.1.1" } }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", @@ -6210,9 +6416,9 @@ "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -6221,21 +6427,28 @@ } }, "eslint-plugin-jsx-a11y": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.1.2.tgz", - "integrity": "sha512-7gSSmwb3A+fQwtw0arguwMdOdzmKUgnUcbSNlo+GjKLAQFuC2EZxWqG9XHRI8VscBJD5a8raz3RuxQNFW+XJbw==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", "dev": true, "requires": { + "@babel/runtime": "^7.4.5", "aria-query": "^3.0.0", "array-includes": "^3.0.3", "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.1", + "axobject-query": "^2.0.2", "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^6.5.1", + "emoji-regex": "^7.0.2", "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1" + "jsx-ast-utils": "^2.2.1" }, "dependencies": { + "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 + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -6248,26 +6461,76 @@ } }, "eslint-plugin-no-only-tests": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-2.1.0.tgz", - "integrity": "sha512-T02dNNDj7sKJNvH7YLKqgv4+BDupxKG4OgadF0AecDHrYTb9hlosxqCgZbFKt28C7Ueof6ziCtEh6rnPvN4YYA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-2.4.0.tgz", + "integrity": "sha512-azP9PwQYfGtXJjW273nIxQH9Ygr+5/UyeW2wEjYoDtVYPI+WPKwbj0+qcAKYUXFZLRumq4HKkFaoDBAwBoXImQ==", "dev": true }, "eslint-plugin-react": { - "version": "7.12.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.12.4.tgz", - "integrity": "sha512-1puHJkXJY+oS1t467MjbqjvX53uQ05HXwjqDgdbGBqf5j9eeydI54G3KwiJmWciQ0HTBacIKw2jgwSBSH3yfgQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.18.0.tgz", + "integrity": "sha512-p+PGoGeV4SaZRDsXqdj9OWcOrOpZn8gXoGPcIQTzo2IDMbAKhNDnME9myZWqO3Ic4R3YmwAZ1lDjWl2R2hMUVQ==", "dev": true, "requires": { - "array-includes": "^3.0.3", + "array-includes": "^3.1.1", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.0.1", - "object.fromentries": "^2.0.0", - "prop-types": "^15.6.2", - "resolve": "^1.9.0" + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.14.2" }, "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -6277,13 +6540,73 @@ "function-bind": "^1.1.1" } }, - "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "dev": true, "requires": { - "array-includes": "^3.0.3" + "has": "^1.0.3" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.entries": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz", + "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "path-parse": { @@ -6292,27 +6615,52 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", "dev": true, "requires": { "path-parse": "^1.0.6" } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } } } }, "eslint-plugin-react-hooks": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.5.1.tgz", - "integrity": "sha512-i3dIrmZ+Ssrm0LrbbtuGcRf7EEpe1FaMuL8XnnpZO0X4tk3dZNzevWxD0/7nMAFa5yZQfNnYkfEP0MmwLvbdHw==", - "dev": true - }, - "eslint-restricted-globals": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", - "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.3.0.tgz", + "integrity": "sha512-gLKCa52G4ee7uXzdLiorca7JIQZPPXRAQDXV83J4bUEeUuc5pIEyZYAZ45Xnxe5IuupxEqHS+hUhSLIimK1EMw==", "dev": true }, "eslint-scope": { @@ -6326,12 +6674,20 @@ } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + } } }, "eslint-visitor-keys": { @@ -6341,20 +6697,26 @@ "dev": true }, "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true } } @@ -6395,9 +6757,9 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", "dev": true }, "evp_bytestokey": { @@ -6721,9 +7083,9 @@ "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" @@ -6805,9 +7167,9 @@ } }, "find-root": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", - "integrity": "sha1-mNImfP8ZFsyvJ0OzoO6oHXnX3NE=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", "dev": true }, "find-up": { @@ -7715,9 +8077,9 @@ } }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -7872,12 +8234,6 @@ "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", "dev": true }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, "infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -7915,32 +8271,60 @@ } }, "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", "dev": true, "requires": { - "ansi-escapes": "^3.2.0", + "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", + "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", "strip-ansi": "^5.1.0", "through": "^2.3.6" }, "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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -7948,6 +8332,14 @@ "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 + } } } } @@ -7964,9 +8356,9 @@ "integrity": "sha1-tivABFY7XG8pS2sRWzliBdhD9gs=" }, "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", "dev": true }, "invariant": { @@ -7984,24 +8376,6 @@ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, - "is-absolute": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", - "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", - "dev": true, - "requires": { - "is-relative": "^0.2.1", - "is-windows": "^0.2.0" - }, - "dependencies": { - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true - } - } - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -8203,20 +8577,17 @@ "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", "dev": true }, - "is-relative": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", - "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", - "dev": true, - "requires": { - "is-unc-path": "^0.1.1" - } - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", @@ -8233,15 +8604,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-unc-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", - "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.0" - } - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -8468,12 +8830,13 @@ } }, "jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", "dev": true, "requires": { - "array-includes": "^3.0.3" + "array-includes": "^3.0.3", + "object.assign": "^4.1.0" } }, "kind-of": { @@ -8593,21 +8956,6 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "lodash._baseget": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/lodash._baseget/-/lodash._baseget-3.7.2.tgz", - "integrity": "sha1-G2rh1frPPCVTI1ChPBGXy4u2dPQ=", - "dev": true - }, - "lodash._topath": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/lodash._topath/-/lodash._topath-3.8.1.tgz", - "integrity": "sha1-PsXiYGAU9MuX91X+aRTt2L/ADqw=", - "dev": true, - "requires": { - "lodash.isarray": "^3.0.0" - } - }, "lodash.escaperegexp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", @@ -8618,22 +8966,6 @@ "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" }, - "lodash.get": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-3.7.0.tgz", - "integrity": "sha1-POaK4skWg7KBzFOUEoMDy/deaR8=", - "dev": true, - "requires": { - "lodash._baseget": "^3.0.0", - "lodash._topath": "^3.0.0" - } - }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", - "dev": true - }, "lodash.isregexp": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isregexp/-/lodash.isregexp-4.0.1.tgz", @@ -9196,9 +9528,9 @@ "dev": true }, "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "nan": { @@ -9303,9 +9635,9 @@ } }, "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -9315,10 +9647,10 @@ "constants-browserify": "^1.0.0", "crypto-browserify": "^3.11.0", "domain-browser": "^1.1.1", - "events": "^1.0.0", + "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -9329,32 +9661,17 @@ "timers-browserify": "^2.0.4", "tty-browserify": "0.0.0", "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" + "util": "^0.11.0", + "vm-browserify": "^1.0.1" }, "dependencies": { - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, "requires": { - "pako": "~1.0.5" - } - }, - "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" + "inherits": "2.0.3" } } } @@ -9667,46 +9984,49 @@ } }, "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.11.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", "function-bind": "^1.1.1", - "has": "^1.0.1" + "has": "^1.0.3" }, "dependencies": { - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { - "es-to-primitive": "^1.2.0", + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - }, - "dependencies": { - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - } + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" } }, "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { "is-callable": "^1.1.4", @@ -9714,26 +10034,70 @@ "is-symbol": "^1.0.2" } }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "has-symbols": "^1.0.0" + "function-bind": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" } }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } } } }, @@ -9854,12 +10218,20 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "mimic-fn": "^2.1.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } } }, "optimist": { @@ -10067,9 +10439,9 @@ "dev": true }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -10089,12 +10461,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -11686,12 +12052,12 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "onetime": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, @@ -11781,9 +12147,9 @@ "integrity": "sha1-QAwJ6+kU57F+C27zJjQA/Cq8fLM=" }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -12836,9 +13202,9 @@ } }, "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", "dev": true }, "style-search": { @@ -13903,6 +14269,12 @@ "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", "dev": true }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -13932,12 +14304,6 @@ } } }, - "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 - }, "underscore": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", @@ -14302,13 +14668,10 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, "w3c-hr-time": { "version": "1.0.1", @@ -15411,6 +15774,12 @@ "string-width": "^1.0.2 || 2" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", diff --git a/package.json b/package.json index 7b25d72fa9..c52b9eb2fc 100644 --- a/package.json +++ b/package.json @@ -91,14 +91,14 @@ "clean-webpack-plugin": "^1.0.0", "copy-webpack-plugin": "^5.1.1", "cross-env": "^5.1.5", - "eslint": "^5.16.0", - "eslint-config-airbnb": "^17.1.0", - "eslint-import-resolver-webpack": "^0.8.4", - "eslint-plugin-import": "^2.15.0", - "eslint-plugin-jsx-a11y": "^6.1.2", - "eslint-plugin-no-only-tests": "^2.1.0", - "eslint-plugin-react": "^7.12.4", - "eslint-plugin-react-hooks": "^1.5.1", + "eslint": "^6.8.0", + "eslint-config-airbnb": "^18.0.1", + "eslint-import-resolver-webpack": "^0.12.1", + "eslint-plugin-import": "^2.20.0", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-no-only-tests": "^2.4.0", + "eslint-plugin-react": "^7.18.0", + "eslint-plugin-react-hooks": "^2.3.0", "exports-loader": "~0.6.4", "expose-loader": "^0.7.5", "grunt-cli": "~1.2.0", diff --git a/tests/javascript_newsletter_editor/newsletter_editor/blocks/automatedLatestContentLayout.spec.js b/tests/javascript_newsletter_editor/newsletter_editor/blocks/automatedLatestContentLayout.spec.js index 02a2d6c93c..d3dd017cac 100644 --- a/tests/javascript_newsletter_editor/newsletter_editor/blocks/automatedLatestContentLayout.spec.js +++ b/tests/javascript_newsletter_editor/newsletter_editor/blocks/automatedLatestContentLayout.spec.js @@ -3,7 +3,8 @@ import AutomatedLatestContentBlock from 'newsletter_editor/blocks/automatedLates import ContainerBlock from 'newsletter_editor/blocks/container'; import Communication from 'newsletter_editor/components/communication'; -/* eslint-disable-next-line max-len (ES6 -> CommonJS transform needed for inject-loader) */ +/* (ES6 -> CommonJS transform needed for inject-loader) */ +/* eslint-disable-next-line max-len */ import AutomatedLatestContentInjector from 'inject-loader!babel-loader?plugins[]=@babel/plugin-transform-modules-commonjs!newsletter_editor/blocks/automatedLatestContentLayout'; const expect = global.expect; diff --git a/tests/javascript_newsletter_editor/newsletter_editor/components/communication.spec.js b/tests/javascript_newsletter_editor/newsletter_editor/components/communication.spec.js index d03bc68c13..9169fe5587 100644 --- a/tests/javascript_newsletter_editor/newsletter_editor/components/communication.spec.js +++ b/tests/javascript_newsletter_editor/newsletter_editor/components/communication.spec.js @@ -1,4 +1,5 @@ -/* eslint-disable-next-line max-len (ES6 -> CommonJS transform needed for inject-loader) */ +/* (ES6 -> CommonJS transform needed for inject-loader) */ +/* eslint-disable-next-line max-len */ import CommunicationInjector from 'inject-loader!babel-loader?plugins[]=@babel/plugin-transform-modules-commonjs!newsletter_editor/components/communication'; const expect = global.expect; diff --git a/tests/javascript_newsletter_editor/newsletter_editor/components/save.spec.js b/tests/javascript_newsletter_editor/newsletter_editor/components/save.spec.js index 79cab18137..dc8fb069a0 100644 --- a/tests/javascript_newsletter_editor/newsletter_editor/components/save.spec.js +++ b/tests/javascript_newsletter_editor/newsletter_editor/components/save.spec.js @@ -2,7 +2,8 @@ import App from 'newsletter_editor/App'; import SaveComponent from 'newsletter_editor/components/save'; import jQuery from 'jquery'; -/* eslint-disable-next-line max-len (ES6 -> CommonJS transform needed for inject-loader) */ +/* (ES6 -> CommonJS transform needed for inject-loader) */ +/* eslint-disable-next-line max-len */ import SaveInjector from 'inject-loader!babel-loader?plugins[]=@babel/plugin-transform-modules-commonjs!newsletter_editor/components/save'; const expect = global.expect;
{ {MailPoet.I18n.t('senderEmailAddressWarning3')}
{event.description}