diff --git a/.eslintrc.js b/.eslintrc.js index b4d05c75d1..bec94e6016 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -26,6 +26,7 @@ module.exports = { 'react/prefer-stateless-function': 0, 'react/no-multi-comp': 0, 'react/no-unused-prop-types': [1, { 'customValidators': [], skipShapeProps: true }], + 'react/require-default-props': 0, // TODO set default props and enable this check 'no-param-reassign': 0, 'new-cap': 0, 'import/no-unresolved': 2, diff --git a/frontend/components/App/App.jsx b/frontend/components/App/App.jsx index 38f4e6681d..f1dd3e88e3 100644 --- a/frontend/components/App/App.jsx +++ b/frontend/components/App/App.jsx @@ -55,7 +55,7 @@ export class App extends Component { const wrapperStyles = classnames( 'wrapper', - { 'wrapper--background': showBackgroundImage } + { 'wrapper--background': showBackgroundImage }, ); return ( diff --git a/frontend/components/App/App.tests.jsx b/frontend/components/App/App.tests.jsx index 819c1786a0..0dc5d4d06d 100644 --- a/frontend/components/App/App.tests.jsx +++ b/frontend/components/App/App.tests.jsx @@ -15,7 +15,7 @@ describe('App - component', () => { const store = { app: {}, auth: {}, notifications: {} }; const mockStore = reduxMockStore(store); const component = mount( - connectedComponent(ConnectedApp, { mockStore }) + connectedComponent(ConnectedApp, { mockStore }), ); afterEach(() => { diff --git a/frontend/components/AuthenticatedAdminRoutes/AuthenticatedAdminRoutes.tests.js b/frontend/components/AuthenticatedAdminRoutes/AuthenticatedAdminRoutes.tests.js index 4a1a32a6b3..098fe0f385 100644 --- a/frontend/components/AuthenticatedAdminRoutes/AuthenticatedAdminRoutes.tests.js +++ b/frontend/components/AuthenticatedAdminRoutes/AuthenticatedAdminRoutes.tests.js @@ -18,7 +18,7 @@ describe('AuthenticatedAdminRoutes - layout', () => { const storeWithoutAdminUser = { auth: { user } }; const mockStore = reduxMockStore(storeWithoutAdminUser); mount( - connectedComponent(ConnectedAdminRoutes, { mockStore }) + connectedComponent(ConnectedAdminRoutes, { mockStore }), ); expect(mockStore.getActions()).toInclude(redirectToHomeAction); @@ -29,7 +29,7 @@ describe('AuthenticatedAdminRoutes - layout', () => { const storeWithAdminUser = { auth: { user } }; const mockStore = reduxMockStore(storeWithAdminUser); mount( - connectedComponent(ConnectedAdminRoutes, { mockStore }) + connectedComponent(ConnectedAdminRoutes, { mockStore }), ); expect(mockStore.getActions()).toNotInclude(redirectToHomeAction); diff --git a/frontend/components/AuthenticatedRoutes/AuthenticatedRoutes.tests.jsx b/frontend/components/AuthenticatedRoutes/AuthenticatedRoutes.tests.jsx index ee6a1551fa..c7eb413217 100644 --- a/frontend/components/AuthenticatedRoutes/AuthenticatedRoutes.tests.jsx +++ b/frontend/components/AuthenticatedRoutes/AuthenticatedRoutes.tests.jsx @@ -75,7 +75,7 @@ describe('AuthenticatedRoutes - component', () => {
{renderedText}
- + , ); expect(component.text()).toEqual(renderedText); @@ -89,7 +89,7 @@ describe('AuthenticatedRoutes - component', () => {
{renderedText}
- + , ); expect(mockStore.getActions()).toInclude(redirectToPasswordResetAction); @@ -103,7 +103,7 @@ describe('AuthenticatedRoutes - component', () => {
{renderedText}
- + , ); expect(mockStore.getActions()).toInclude(redirectToLoginAction); @@ -118,7 +118,7 @@ describe('AuthenticatedRoutes - component', () => {
{renderedText}
- + , ); expect(mockStore.getActions()).toNotInclude(redirectToLoginAction); diff --git a/frontend/components/StackedWhiteBoxes/StackedWhiteBoxes.jsx b/frontend/components/StackedWhiteBoxes/StackedWhiteBoxes.jsx index 4363612ee3..99f77ca50a 100644 --- a/frontend/components/StackedWhiteBoxes/StackedWhiteBoxes.jsx +++ b/frontend/components/StackedWhiteBoxes/StackedWhiteBoxes.jsx @@ -61,7 +61,7 @@ class StackedWhiteBoxes extends Component { if (previousLocation) { window.setTimeout( () => { onLeave(previousLocation); }, - 300 + 300, ); } @@ -109,7 +109,7 @@ class StackedWhiteBoxes extends Component { [`${baseClass}--loading`]: isLoading, [`${baseClass}--loaded`]: isLoaded, [`${baseClass}--leaving`]: isLeaving, - } + }, ); return ( diff --git a/frontend/components/UserBlock/UserBlock.jsx b/frontend/components/UserBlock/UserBlock.jsx index 05eeef9771..d76b8e6afc 100644 --- a/frontend/components/UserBlock/UserBlock.jsx +++ b/frontend/components/UserBlock/UserBlock.jsx @@ -83,7 +83,7 @@ class UserBlock extends Component { const userWrapperClass = classnames( baseClass, { [`${baseClass}--invited`]: isInvite }, - { [`${baseClass}--disabled`]: !enabled && !isInvite } + { [`${baseClass}--disabled`]: !enabled && !isInvite }, ); const userHeaderClass = classnames( @@ -91,40 +91,40 @@ class UserBlock extends Component { { [`${baseClass}__header--admin`]: admin }, { [`${baseClass}__header--user`]: !admin }, { [`${baseClass}__header--invited`]: isInvite }, - { [`${baseClass}__header--disabled`]: !enabled && !isInvite } + { [`${baseClass}__header--disabled`]: !enabled && !isInvite }, ); const userAvatarClass = classnames( `${baseClass}__avatar`, - { [`${baseClass}__avatar--enabled`]: enabled } + { [`${baseClass}__avatar--enabled`]: enabled }, ); const userStatusLabelClass = classnames( `${baseClass}__status-label`, - { [`${baseClass}__status-label--admin`]: admin } + { [`${baseClass}__status-label--admin`]: admin }, ); const userStatusTextClass = classnames( `${baseClass}__status-text`, { [`${baseClass}__status-text--invited`]: isInvite }, { [`${baseClass}__status-text--enabled`]: enabled }, - { [`${baseClass}__status-text--disabled`]: !enabled && !isInvite } + { [`${baseClass}__status-text--disabled`]: !enabled && !isInvite }, ); const userUsernameClass = classnames( `${baseClass}__username`, { [`${baseClass}__username--enabled`]: enabled }, - { [`${baseClass}__username--hidden`]: !username } + { [`${baseClass}__username--hidden`]: !username }, ); const userPositionClass = classnames( `${baseClass}__position`, - { [`${baseClass}__position--hidden`]: !position } + { [`${baseClass}__position--hidden`]: !position }, ); const userEmailClass = classnames( `${baseClass}__email`, - { [`${baseClass}__email--disabled`]: !enabled } + { [`${baseClass}__email--disabled`]: !enabled }, ); if (isEditing) { diff --git a/frontend/components/buttons/DropdownButton/DropdownButton.jsx b/frontend/components/buttons/DropdownButton/DropdownButton.jsx index 7e3b05cabd..576355079e 100644 --- a/frontend/components/buttons/DropdownButton/DropdownButton.jsx +++ b/frontend/components/buttons/DropdownButton/DropdownButton.jsx @@ -19,7 +19,7 @@ export class DropdownButton extends Component { disabled: PropTypes.bool, label: PropTypes.string, onClick: PropTypes.func, - }) + }), ).isRequired, size: PropTypes.string, tabIndex: PropTypes.number, diff --git a/frontend/components/buttons/DropdownButton/DropdownButton.tests.jsx b/frontend/components/buttons/DropdownButton/DropdownButton.tests.jsx index de4ffc6f36..b8aaaf6a04 100644 --- a/frontend/components/buttons/DropdownButton/DropdownButton.tests.jsx +++ b/frontend/components/buttons/DropdownButton/DropdownButton.tests.jsx @@ -14,7 +14,7 @@ describe('DropdownButton - component', () => { const component = mount( New Button - + , ); component.find('button.dropdown-button').simulate('click'); diff --git a/frontend/components/buttons/EllipsisMenu/EllipsisMenu.tests.jsx b/frontend/components/buttons/EllipsisMenu/EllipsisMenu.tests.jsx index 0c2b3d90bd..4603667379 100644 --- a/frontend/components/buttons/EllipsisMenu/EllipsisMenu.tests.jsx +++ b/frontend/components/buttons/EllipsisMenu/EllipsisMenu.tests.jsx @@ -9,7 +9,7 @@ describe('EllipsisMenu - component', () => { const component = mount( EllipsisMenu Children - + , ); expect(component.state().showChildren).toEqual(false); diff --git a/frontend/components/config/EnrollSecretTable/EnrollSecretTable.jsx b/frontend/components/config/EnrollSecretTable/EnrollSecretTable.jsx index 87824a6594..6d84bc20c8 100644 --- a/frontend/components/config/EnrollSecretTable/EnrollSecretTable.jsx +++ b/frontend/components/config/EnrollSecretTable/EnrollSecretTable.jsx @@ -91,7 +91,6 @@ class EnrollSecretRow extends Component { ); } - } class EnrollSecretTable extends Component { @@ -110,12 +109,11 @@ class EnrollSecretTable extends Component { return (
{activeSecrets.map(({ name, secret }) => - - )} + , + )}
); } - } export default EnrollSecretTable; diff --git a/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.jsx b/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.jsx index ada2bbe021..b80151d987 100644 --- a/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.jsx +++ b/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.jsx @@ -43,6 +43,7 @@ export class ConfigurePackQueryForm extends Component { logging_type: formFieldInterface.isRequired, platform: formFieldInterface.isRequired, version: formFieldInterface.isRequired, + shard: formFieldInterface.isRequired, }).isRequired, formData: PropTypes.shape({ id: PropTypes.number, @@ -54,7 +55,7 @@ export class ConfigurePackQueryForm extends Component { componentWillMount () { const { fields } = this.props; - if (fields && fields.shared && !fields.shard.value) { + if (fields && fields.shard && !fields.shard.value) { fields.shard.value = ''; } } diff --git a/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.tests.jsx b/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.tests.jsx index 6915463820..316af0ba79 100644 --- a/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.tests.jsx +++ b/frontend/components/forms/ConfigurePackQueryForm/ConfigurePackQueryForm.tests.jsx @@ -14,7 +14,7 @@ describe('ConfigurePackQueryForm - component', () => { const form = mount( + />, ); it('updates form state', () => { @@ -41,7 +41,7 @@ describe('ConfigurePackQueryForm - component', () => { fields={fieldsObj} handleSubmit={noop} formData={{ query_id: 1 }} - /> + />, ); it("doesn't allow All when other options are chosen", () => { @@ -63,7 +63,7 @@ describe('ConfigurePackQueryForm - component', () => { + />, ); it('submits the form with the form data', () => { @@ -95,14 +95,14 @@ describe('ConfigurePackQueryForm - component', () => { formData={{ query_id: 1 }} handleSubmit={noop} onCancel={noop} - /> + />, ); const UpdateScheduledQueryForm = mount( + />, ); expect(CancelButton(NewScheduledQueryForm).length).toEqual(0); @@ -116,7 +116,7 @@ describe('ConfigurePackQueryForm - component', () => { formData={scheduledQueryStub} handleSubmit={noop} onCancel={spy} - /> + />, ); CancelButton(UpdateScheduledQueryForm).hostNodes().simulate('click'); diff --git a/frontend/components/forms/FormField/FormField.jsx b/frontend/components/forms/FormField/FormField.jsx index 3901c27b16..b6bfd45e31 100644 --- a/frontend/components/forms/FormField/FormField.jsx +++ b/frontend/components/forms/FormField/FormField.jsx @@ -19,7 +19,7 @@ class FormField extends Component { const { error, label, name } = this.props; const labelWrapperClasses = classnames( `${baseClass}__label`, - { [`${baseClass}__label--error`]: error } + { [`${baseClass}__label--error`]: error }, ); if (!label) { diff --git a/frontend/components/forms/InviteUserForm/InviteUserForm.jsx b/frontend/components/forms/InviteUserForm/InviteUserForm.jsx index 33d99a0a73..444a61fc33 100644 --- a/frontend/components/forms/InviteUserForm/InviteUserForm.jsx +++ b/frontend/components/forms/InviteUserForm/InviteUserForm.jsx @@ -84,14 +84,14 @@ class InviteUserForm extends Component { const valid = this.validate(); if (valid) { - const { formData: { admin, email, name, sso_enabled } } = this.state; + const { formData: { admin, email, name, sso_enabled: ssoEnabled } } = this.state; const { invitedBy, onSubmit } = this.props; return onSubmit({ admin, email, invited_by: invitedBy.id, name, - sso_enabled, + sso_enabled: ssoEnabled, }); } diff --git a/frontend/components/forms/LoginForm/LoginForm.jsx b/frontend/components/forms/LoginForm/LoginForm.jsx index f7cfcfad99..6982e6df38 100644 --- a/frontend/components/forms/LoginForm/LoginForm.jsx +++ b/frontend/components/forms/LoginForm/LoginForm.jsx @@ -74,7 +74,7 @@ class LoginForm extends Component { const loginFormClass = classnames( baseClass, - { [`${baseClass}--hidden`]: isHidden } + { [`${baseClass}--hidden`]: isHidden }, ); return ( diff --git a/frontend/components/forms/RegistrationForm/ConfirmationPage/ConfirmationPage.tests.jsx b/frontend/components/forms/RegistrationForm/ConfirmationPage/ConfirmationPage.tests.jsx index baa5c03e76..f6d631f24e 100644 --- a/frontend/components/forms/RegistrationForm/ConfirmationPage/ConfirmationPage.tests.jsx +++ b/frontend/components/forms/RegistrationForm/ConfirmationPage/ConfirmationPage.tests.jsx @@ -20,7 +20,7 @@ describe('ConfirmationPage - form', () => { + />, ); expect(form.text()).toInclude(formData.username); @@ -35,7 +35,7 @@ describe('ConfirmationPage - form', () => { + />, ); const htmlForm = form.find('form'); diff --git a/frontend/components/forms/RegistrationForm/RegistrationForm.jsx b/frontend/components/forms/RegistrationForm/RegistrationForm.jsx index 8801765e0a..e8803cd748 100644 --- a/frontend/components/forms/RegistrationForm/RegistrationForm.jsx +++ b/frontend/components/forms/RegistrationForm/RegistrationForm.jsx @@ -148,17 +148,17 @@ class RegistrationForm extends Component { const adminDetailsClass = classnames( `${baseClass}__field-wrapper`, - `${baseClass}__field-wrapper--admin` + `${baseClass}__field-wrapper--admin`, ); const orgDetailsClass = classnames( `${baseClass}__field-wrapper`, - `${baseClass}__field-wrapper--org` + `${baseClass}__field-wrapper--org`, ); const kolideDetailsClass = classnames( `${baseClass}__field-wrapper`, - `${baseClass}__field-wrapper--kolide` + `${baseClass}__field-wrapper--kolide`, ); const formSectionClasses = classnames( @@ -170,7 +170,7 @@ class RegistrationForm extends Component { [`${baseClass}__form--step2-complete`]: page > 2, [`${baseClass}__form--step3-active`]: page === 3, [`${baseClass}__form--step3-complete`]: page > 3, - } + }, ); return ( diff --git a/frontend/components/forms/fields/Checkbox/Checkbox.tests.jsx b/frontend/components/forms/fields/Checkbox/Checkbox.tests.jsx index b898460716..44f5fa5df2 100644 --- a/frontend/components/forms/fields/Checkbox/Checkbox.tests.jsx +++ b/frontend/components/forms/fields/Checkbox/Checkbox.tests.jsx @@ -20,7 +20,7 @@ describe('Checkbox - component', () => { name="checkbox" onChange={onCheckedComponentChangeSpy} value - /> + />, ).find('input'); const uncheckedComponent = mount( @@ -28,7 +28,7 @@ describe('Checkbox - component', () => { name="checkbox" onChange={onUncheckedComponentChangeSpy} value={false} - /> + />, ).find('input'); checkedComponent.simulate('change'); diff --git a/frontend/components/forms/fields/Dropdown/Dropdown.jsx b/frontend/components/forms/fields/Dropdown/Dropdown.jsx index 5384ca5ffa..45943beaa6 100644 --- a/frontend/components/forms/fields/Dropdown/Dropdown.jsx +++ b/frontend/components/forms/fields/Dropdown/Dropdown.jsx @@ -50,7 +50,7 @@ class Dropdown extends Component { const labelWrapperClasses = classnames( `${baseClass}__label`, labelClassName, - { [`${baseClass}__label--error`]: error } + { [`${baseClass}__label--error`]: error }, ); if (!label) { diff --git a/frontend/components/forms/fields/InputField/InputField.jsx b/frontend/components/forms/fields/InputField/InputField.jsx index 5b465868fc..7b6a676002 100644 --- a/frontend/components/forms/fields/InputField/InputField.jsx +++ b/frontend/components/forms/fields/InputField/InputField.jsx @@ -21,7 +21,7 @@ class InputField extends Component { placeholder: PropTypes.string, type: PropTypes.string, value: PropTypes.oneOfType( - [PropTypes.bool, PropTypes.string, PropTypes.number] + [PropTypes.bool, PropTypes.string, PropTypes.number], ).isRequired, }; diff --git a/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx b/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx index 5bab95866b..53c11698cc 100644 --- a/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx +++ b/frontend/components/forms/fields/InputFieldWithIcon/InputFieldWithIcon.jsx @@ -26,7 +26,7 @@ class InputFieldWithIcon extends InputField { const labelClasses = classnames( `${baseClass}__label`, - { [`${baseClass}__label--hidden`]: !value } + { [`${baseClass}__label--hidden`]: !value }, ); if (error) { @@ -55,13 +55,13 @@ class InputFieldWithIcon extends InputField { 'input-with-icon', className, { [`${baseClass}__input--error`]: error }, - { [`${baseClass}__input--password`]: type === 'password' && value } + { [`${baseClass}__input--password`]: type === 'password' && value }, ); const iconClasses = classnames( `${baseClass}__icon`, { [`${baseClass}__icon--error`]: error }, - { [`${baseClass}__icon--active`]: value } + { [`${baseClass}__icon--active`]: value }, ); return ( diff --git a/frontend/components/forms/fields/SelectTargetsDropdown/SelectTargetsMenu/SelectTargetsMenu.jsx b/frontend/components/forms/fields/SelectTargetsDropdown/SelectTargetsMenu/SelectTargetsMenu.jsx index 4a66a115fd..21c66fff73 100644 --- a/frontend/components/forms/fields/SelectTargetsDropdown/SelectTargetsMenu/SelectTargetsMenu.jsx +++ b/frontend/components/forms/fields/SelectTargetsDropdown/SelectTargetsMenu/SelectTargetsMenu.jsx @@ -61,7 +61,7 @@ const SelectTargetsMenuWrapper = (onMoreInfoClick, moreInfoTarget, handleBackToR isDisabled={isDisabled} isFocused={isFocused} isSelected={isSelected} - key={`option-${index}-${target[valueKey]}`} + key={`option-${target[valueKey]}`} onFocus={onFocus} onSelect={noop} option={target} diff --git a/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetOption.tests.jsx b/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetOption.tests.jsx index 4ce1dbf61b..3b60b85dc5 100644 --- a/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetOption.tests.jsx +++ b/frontend/components/forms/fields/SelectTargetsDropdown/TargetOption/TargetOption.tests.jsx @@ -30,7 +30,7 @@ describe('TargetOption - component', () => { onMoreInfoClick={noop} onSelect={onSelectSpy} target={hostStub} - /> + />, ); component.find('.target-option__add-btn').simulate('click'); expect(onSelectSpy).toHaveBeenCalled(); @@ -45,7 +45,7 @@ describe('TargetOption - component', () => { + />, ); component.find('.target-option__target-content').simulate('click'); expect(onMoreInfoClickSpy).toHaveBeenCalled(); diff --git a/frontend/components/forms/fields/Slider/Slider.jsx b/frontend/components/forms/fields/Slider/Slider.jsx index ba7d9b84fc..f1d93abd01 100644 --- a/frontend/components/forms/fields/Slider/Slider.jsx +++ b/frontend/components/forms/fields/Slider/Slider.jsx @@ -11,12 +11,12 @@ const Slider = (props) => { const sliderBtnClass = classnames( baseClass, - { [`${baseClass}--active`]: value } + { [`${baseClass}--active`]: value }, ); const sliderDotClass = classnames( `${baseClass}__dot`, - { [`${baseClass}__dot--active`]: value } + { [`${baseClass}__dot--active`]: value }, ); const handleClick = (evt) => { diff --git a/frontend/components/forms/validators/validate_query/validate_query.tests.js b/frontend/components/forms/validators/validate_query/validate_query.tests.js index 4d6a43edc1..19414cb147 100644 --- a/frontend/components/forms/validators/validate_query/validate_query.tests.js +++ b/frontend/components/forms/validators/validate_query/validate_query.tests.js @@ -23,12 +23,12 @@ const validQueries = [ describe('validateQuery', () => { it('rejects malformed queries', () => { - for (const query of malformedQueries) { + malformedQueries.forEach((query) => { const { error, valid } = validateQuery(query); expect(valid).toEqual(false); expect(error).toMatch(/Syntax error found near .+/); - } + }); }); it('rejects blank queries', () => { @@ -39,10 +39,10 @@ describe('validateQuery', () => { }); it('accepts valid queries', () => { - for (const query of validQueries) { + validQueries.forEach((query) => { const { error, valid } = validateQuery(query); expect(valid).toEqual(true, query); expect(error).toNotExist(); - } + }); }); }); diff --git a/frontend/components/hosts/AddHostModal/AddHostModal.jsx b/frontend/components/hosts/AddHostModal/AddHostModal.jsx index 9c541c1a9c..69438e459a 100644 --- a/frontend/components/hosts/AddHostModal/AddHostModal.jsx +++ b/frontend/components/hosts/AddHostModal/AddHostModal.jsx @@ -60,7 +60,7 @@ class AddHostModal extends Component {

diff --git a/frontend/components/hosts/HostDetails/HostDetails.tests.jsx b/frontend/components/hosts/HostDetails/HostDetails.tests.jsx index 04c24db5e5..d3443a0fa6 100644 --- a/frontend/components/hosts/HostDetails/HostDetails.tests.jsx +++ b/frontend/components/hosts/HostDetails/HostDetails.tests.jsx @@ -20,7 +20,7 @@ describe('HostDetails - component', () => { onDestroyHost={destroySpy} onQueryHost={querySpy} isLoading={false} - /> + />, ); const btn = offlineComponent.find('Button'); @@ -43,7 +43,7 @@ describe('HostDetails - component', () => { onDestroyHost={destroySpy} onQueryHost={querySpy} isLoading={false} - /> + />, ); const btn = miaComponent.find('Button'); @@ -66,7 +66,7 @@ describe('HostDetails - component', () => { onDestroyHost={destroySpy} onQueryHost={querySpy} isLoading={false} - /> + />, ); const btn = onlineComponent.find('Button'); @@ -85,7 +85,7 @@ describe('HostDetails - component', () => { onDestroyHost={noop} onQueryHost={noop} isLoading - /> + />, ); expect(loadingComponent.find('Circle').length).toEqual(1); diff --git a/frontend/components/hosts/HostsTable/HostsTable.jsx b/frontend/components/hosts/HostsTable/HostsTable.jsx index 324197b8e4..e8abf1d033 100644 --- a/frontend/components/hosts/HostsTable/HostsTable.jsx +++ b/frontend/components/hosts/HostsTable/HostsTable.jsx @@ -53,7 +53,7 @@ class HostsTable extends Component { const { onDestroyHost, onQueryHost } = this.props; const statusClassName = classnames( `${baseClass}__status`, - `${baseClass}__status--${host.status}` + `${baseClass}__status--${host.status}`, ); return ( diff --git a/frontend/components/hosts/HostsTable/HostsTable.tests.jsx b/frontend/components/hosts/HostsTable/HostsTable.tests.jsx index 1b400b5c45..cda0275e4f 100644 --- a/frontend/components/hosts/HostsTable/HostsTable.tests.jsx +++ b/frontend/components/hosts/HostsTable/HostsTable.tests.jsx @@ -18,7 +18,7 @@ describe('HostsTable - component', () => { hosts={[offlineHost]} onDestroyHost={destroySpy} onQueryHost={querySpy} - /> + />, ); const btn = offlineComponent.find('Button'); @@ -40,7 +40,7 @@ describe('HostsTable - component', () => { hosts={[miaHost]} onDestroyHost={destroySpy} onQueryHost={querySpy} - /> + />, ); const btn = miaComponent.find('Button'); @@ -62,7 +62,7 @@ describe('HostsTable - component', () => { hosts={[onlineHost]} onDestroyHost={destroySpy} onQueryHost={querySpy} - /> + />, ); const btn = onlineComponent.find('Button'); diff --git a/frontend/components/hosts/LonelyHost/LonelyHost.jsx b/frontend/components/hosts/LonelyHost/LonelyHost.jsx index 6b046f0cfd..935a465fd4 100644 --- a/frontend/components/hosts/LonelyHost/LonelyHost.jsx +++ b/frontend/components/hosts/LonelyHost/LonelyHost.jsx @@ -14,7 +14,7 @@ const LonelyHost = ({ onClick = noop }) => { @@ -22,7 +22,7 @@ const LonelyHost = ({ onClick = noop }) => {

It's Kinda Lonely In Here...

Get started adding hosts to Fleet.

This can be done individually or across your entire fleet.

- + ); diff --git a/frontend/components/packs/EditPackFormWrapper/EditPackFormWrapper.tests.jsx b/frontend/components/packs/EditPackFormWrapper/EditPackFormWrapper.tests.jsx index a28a90ca50..ee6f4c9cf3 100644 --- a/frontend/components/packs/EditPackFormWrapper/EditPackFormWrapper.tests.jsx +++ b/frontend/components/packs/EditPackFormWrapper/EditPackFormWrapper.tests.jsx @@ -16,7 +16,7 @@ describe('EditPackFormWrapper - component', () => { onCancelEditPack={noop} onEditPack={noop} pack={packStub} - /> + />, ); expect(component.find('EditPackForm').length).toEqual(0); @@ -29,7 +29,7 @@ describe('EditPackFormWrapper - component', () => { onCancelEditPack={noop} onEditPack={noop} pack={packStub} - /> + />, ); expect(component.find('EditPackForm').length).toEqual(1); @@ -43,7 +43,7 @@ describe('EditPackFormWrapper - component', () => { onCancelEditPack={noop} onEditPack={spy} pack={packStub} - /> + />, ); const editBtn = component.find('Button'); diff --git a/frontend/components/queries/QueryResultsTable/QueryResultsRow.jsx b/frontend/components/queries/QueryResultsTable/QueryResultsRow.jsx index 004acfe0f3..e3f72e56bf 100644 --- a/frontend/components/queries/QueryResultsTable/QueryResultsRow.jsx +++ b/frontend/components/queries/QueryResultsTable/QueryResultsRow.jsx @@ -1,12 +1,10 @@ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; -import { isEqual, omit, values } from 'lodash'; +import { isEqual, omit } from 'lodash'; import queryResultInterface from 'interfaces/query_result'; class QueryResultsRow extends Component { static propTypes = { - index: PropTypes.number.isRequired, queryResult: queryResultInterface.isRequired, }; @@ -15,16 +13,15 @@ class QueryResultsRow extends Component { } render () { - const { index, queryResult } = this.props; + const { queryResult } = this.props; const { host_hostname: hostHostname } = queryResult; - const queryAttrs = omit(queryResult, ['host_hostname']); - const queryAttrValues = values(queryAttrs); + const queryColumns = omit(queryResult, ['host_hostname']); return ( {hostHostname} - {queryAttrValues.map((attribute, i) => { - return {attribute}; + {Object.keys(queryColumns).map((col) => { + return {queryColumns[col]}; })} ); diff --git a/frontend/components/queries/QueryResultsTable/QueryResultsTable.jsx b/frontend/components/queries/QueryResultsTable/QueryResultsTable.jsx index 7b2320959a..d9d5bb2d09 100644 --- a/frontend/components/queries/QueryResultsTable/QueryResultsTable.jsx +++ b/frontend/components/queries/QueryResultsTable/QueryResultsTable.jsx @@ -101,13 +101,9 @@ class QueryResultsTable extends Component { const { resultsFilter } = this.state; const filteredQueryResults = filterArrayByHash(queryResults, resultsFilter); - return filteredQueryResults.map((queryResult, index) => { + return filteredQueryResults.map((queryResult) => { return ( - + ); }); } diff --git a/frontend/components/queries/QueryResultsTable/QueryResultsTable.tests.jsx b/frontend/components/queries/QueryResultsTable/QueryResultsTable.tests.jsx index bad09c8210..4f3a18dcff 100644 --- a/frontend/components/queries/QueryResultsTable/QueryResultsTable.tests.jsx +++ b/frontend/components/queries/QueryResultsTable/QueryResultsTable.tests.jsx @@ -63,10 +63,10 @@ describe('QueryResultsTable - component', () => { afterEach(restoreSpies); const componentWithoutQueryResults = mount( - + , ); const componentWithQueryResults = mount( - + , ); it('renders', () => { diff --git a/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesList.tests.jsx b/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesList.tests.jsx index 241c249ed5..bbc55aaefe 100644 --- a/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesList.tests.jsx +++ b/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesList.tests.jsx @@ -20,7 +20,7 @@ describe('ScheduledQueriesList - component', () => { onSelectQuery={noop} scheduledQueries={scheduledQueries} selectedScheduledQueryIDs={[]} - /> + />, ); expect(component.find('ScheduledQueriesListItem').length).toEqual(2); @@ -35,7 +35,7 @@ describe('ScheduledQueriesList - component', () => { onSelectQuery={noop} scheduledQueries={[]} selectedScheduledQueryIDs={[]} - /> + />, ); expect(component.text()).toInclude('No queries matched your search criteria'); @@ -49,7 +49,7 @@ describe('ScheduledQueriesList - component', () => { onSelectQuery={noop} scheduledQueries={[]} selectedScheduledQueryIDs={[]} - /> + />, ); expect(component.text()).toInclude("First let's add a query"); diff --git a/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.jsx b/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.jsx index 5b5be7e66b..bfbaf52b84 100644 --- a/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.jsx +++ b/frontend/components/queries/ScheduledQueriesList/ScheduledQueriesListItem/ScheduledQueriesListItem.jsx @@ -71,7 +71,7 @@ class ScheduledQueriesListItem extends Component { return ; } - return platformArr.map((pltf, idx) => ); + return platformArr.map(pltf => ); } render () { diff --git a/frontend/components/side_panels/HostSidePanel/PanelGroup/PanelGroup.tests.jsx b/frontend/components/side_panels/HostSidePanel/PanelGroup/PanelGroup.tests.jsx index 889ee68d94..4d4543322b 100644 --- a/frontend/components/side_panels/HostSidePanel/PanelGroup/PanelGroup.tests.jsx +++ b/frontend/components/side_panels/HostSidePanel/PanelGroup/PanelGroup.tests.jsx @@ -12,7 +12,7 @@ describe('PanelGroup - component', () => { ]; const component = mount( - + , ); it('renders a PanelGroupItem for each group item', () => { diff --git a/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.jsx b/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.jsx index eaed6013d1..4b7013fe5b 100644 --- a/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.jsx +++ b/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.jsx @@ -12,10 +12,11 @@ const baseClass = 'panel-group-item'; class PanelGroupItem extends Component { static propTypes = { item: PropTypes.shape({ - count: PropTypes.number, + count: PropTypes.number.isRequired, title_description: PropTypes.string, - display_text: PropTypes.string, - type: PropTypes.string, + display_text: PropTypes.string.isRequired, + type: PropTypes.string.isRequired, + id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, }).isRequired, onLabelClick: PropTypes.func, isSelected: PropTypes.bool, @@ -73,7 +74,7 @@ class PanelGroupItem extends Component { `${baseClass}__${type.toLowerCase()}--${displayText.toLowerCase().replace(' ', '-')}`, { [`${baseClass}--selected`]: isSelected, - } + }, ); return ( diff --git a/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.tests.jsx b/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.tests.jsx index 864a7d1084..66386e161c 100644 --- a/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.tests.jsx +++ b/frontend/components/side_panels/HostSidePanel/PanelGroupItem/PanelGroupItem.tests.jsx @@ -26,19 +26,19 @@ describe('PanelGroupItem - component', () => { }; const labelComponent = mount( - + , ); const platformComponent = mount( - + , ); const statusLabelComponent = mount( - + , ); const loadingStatusLabelComponent = mount( - + , ); it('renders the appropriate icon', () => { diff --git a/frontend/components/side_panels/QuerySidePanel/QuerySidePanel.jsx b/frontend/components/side_panels/QuerySidePanel/QuerySidePanel.jsx index 889ce1ff37..47b5110800 100644 --- a/frontend/components/side_panels/QuerySidePanel/QuerySidePanel.jsx +++ b/frontend/components/side_panels/QuerySidePanel/QuerySidePanel.jsx @@ -95,12 +95,12 @@ class QuerySidePanel extends Component {

OS Availability

    - {platformArr.map((os, idx) => { + {platformArr.map((os) => { if (os.type === 'all') { - return
  • {os.display_text}
  • ; + return
  • {os.display_text}
  • ; } - return
  • {os.display_text}
  • ; + return
  • {os.display_text}
  • ; })}
diff --git a/frontend/components/side_panels/SiteNavHeader/SiteNavHeader.jsx b/frontend/components/side_panels/SiteNavHeader/SiteNavHeader.jsx index 111da9c112..88c2f9ff50 100644 --- a/frontend/components/side_panels/SiteNavHeader/SiteNavHeader.jsx +++ b/frontend/components/side_panels/SiteNavHeader/SiteNavHeader.jsx @@ -75,12 +75,12 @@ class SiteNavHeader extends Component { const headerToggleClass = classnames( `${headerBaseClass}__button`, 'button', - 'button--unstyled' + 'button--unstyled', ); const userStatusClass = classnames( `${headerBaseClass}__user-status`, - { [`${headerBaseClass}__user-status--enabled`]: enabled } + { [`${headerBaseClass}__user-status--enabled`]: enabled }, ); return ( diff --git a/frontend/components/side_panels/SiteNavHeader/UserMenu.jsx b/frontend/components/side_panels/SiteNavHeader/UserMenu.jsx index 2354f05d89..8ad290cf27 100644 --- a/frontend/components/side_panels/SiteNavHeader/UserMenu.jsx +++ b/frontend/components/side_panels/SiteNavHeader/UserMenu.jsx @@ -14,6 +14,7 @@ class UserMenu extends Component { user: PropTypes.shape({ gravatarURL: PropTypes.string, name: PropTypes.string, + username: PropTypes.string.isRequired, position: PropTypes.string, }).isRequired, }; @@ -29,7 +30,7 @@ class UserMenu extends Component { const toggleBaseClass = 'user-menu-toggle'; const userMenuClass = classnames( toggleBaseClass, - { [`${toggleBaseClass}--open`]: isOpened } + { [`${toggleBaseClass}--open`]: isOpened }, ); return ( diff --git a/frontend/components/side_panels/SiteNavSidePanel/SiteNavSidePanel.jsx b/frontend/components/side_panels/SiteNavSidePanel/SiteNavSidePanel.jsx index 9d4feef1e5..e1de5f1888 100644 --- a/frontend/components/side_panels/SiteNavSidePanel/SiteNavSidePanel.jsx +++ b/frontend/components/side_panels/SiteNavSidePanel/SiteNavSidePanel.jsx @@ -59,7 +59,7 @@ class SiteNavSidePanel extends Component { { [`${navItemBaseClass}--active`]: active, [`${navItemBaseClass}--single`]: subItems.length === 0, - } + }, ); return ( @@ -100,7 +100,7 @@ class SiteNavSidePanel extends Component { const baseSubItemItemClass = classnames( `${baseSubItemClass}`, - { [`${baseSubItemClass}--active`]: active } + { [`${baseSubItemClass}--active`]: active }, ); return ( @@ -128,7 +128,7 @@ class SiteNavSidePanel extends Component { const subItemListClasses = classnames( `${baseSubItemsClass}__list`, - { [`${baseSubItemsClass}__list--expanded`]: showSubItems } + { [`${baseSubItemsClass}__list--expanded`]: showSubItems }, ); if (!subItems.length) return false; diff --git a/frontend/interfaces/enroll_secret.js b/frontend/interfaces/enroll_secret.js index 2694851f34..7f984fa8d3 100644 --- a/frontend/interfaces/enroll_secret.js +++ b/frontend/interfaces/enroll_secret.js @@ -1,10 +1,10 @@ import PropTypes from 'prop-types'; export default PropTypes.arrayOf( - PropTypes.shape({ - name: PropTypes.string, - secret: PropTypes.string, - active: PropTypes.bool, - created_at: PropTypes.string, - }), + PropTypes.shape({ + name: PropTypes.string, + secret: PropTypes.string, + active: PropTypes.bool, + created_at: PropTypes.string, + }), ); diff --git a/frontend/interfaces/form_field.js b/frontend/interfaces/form_field.js index 13fd865ff8..acedc28d42 100644 --- a/frontend/interfaces/form_field.js +++ b/frontend/interfaces/form_field.js @@ -5,7 +5,7 @@ export default PropTypes.shape({ name: PropTypes.string, onChange: PropTypes.func, value: PropTypes.oneOfType( - [PropTypes.array, PropTypes.bool, PropTypes.number, PropTypes.string] + [PropTypes.array, PropTypes.bool, PropTypes.number, PropTypes.string], ), }); diff --git a/frontend/kolide/helpers.tests.js b/frontend/kolide/helpers.tests.js index 5aae3b753c..6b1a2fa690 100644 --- a/frontend/kolide/helpers.tests.js +++ b/frontend/kolide/helpers.tests.js @@ -47,18 +47,18 @@ describe('Kolide API - helpers', () => { org_info: { org_name: 'The Gnar Co' }, }); expect( - formatConfigDataForServer({ org_name: 'The Gnar Co', kolide_server_url: 'https://example.com' }) + formatConfigDataForServer({ org_name: 'The Gnar Co', kolide_server_url: 'https://example.com' }), ).toEqual({ org_info: { org_name: 'The Gnar Co' }, server_settings: { kolide_server_url: 'https://example.com' }, }); expect( - formatConfigDataForServer({ domain: 'https://kolide.co' }) + formatConfigDataForServer({ domain: 'https://kolide.co' }), ).toEqual({ smtp_settings: { domain: 'https://kolide.co' }, }); expect( - formatConfigDataForServer({ host_expiry_window: '12' }) + formatConfigDataForServer({ host_expiry_window: '12' }), ).toEqual({ host_expiry_settings: { host_expiry_window: 12, diff --git a/frontend/pages/ConfirmInvitePage/ConfirmInvitePage.tests.jsx b/frontend/pages/ConfirmInvitePage/ConfirmInvitePage.tests.jsx index 6e61c8df62..99c002a548 100644 --- a/frontend/pages/ConfirmInvitePage/ConfirmInvitePage.tests.jsx +++ b/frontend/pages/ConfirmInvitePage/ConfirmInvitePage.tests.jsx @@ -18,7 +18,7 @@ describe('ConfirmInvitePage - component', () => { it('renders', () => { expect(page.length).toEqual(1); expect( - page.find('ConfirmInvitePage').prop('inviteFormData') + page.find('ConfirmInvitePage').prop('inviteFormData'), ).toEqual({ email: 'hi@gnar.dog', invite_token: inviteToken, diff --git a/frontend/pages/ConfirmSSOInvitePage/ConfirmSSOInvitePage.tests.jsx b/frontend/pages/ConfirmSSOInvitePage/ConfirmSSOInvitePage.tests.jsx index 6e61c8df62..99c002a548 100644 --- a/frontend/pages/ConfirmSSOInvitePage/ConfirmSSOInvitePage.tests.jsx +++ b/frontend/pages/ConfirmSSOInvitePage/ConfirmSSOInvitePage.tests.jsx @@ -18,7 +18,7 @@ describe('ConfirmInvitePage - component', () => { it('renders', () => { expect(page.length).toEqual(1); expect( - page.find('ConfirmInvitePage').prop('inviteFormData') + page.find('ConfirmInvitePage').prop('inviteFormData'), ).toEqual({ email: 'hi@gnar.dog', invite_token: inviteToken, diff --git a/frontend/pages/ForgotPasswordPage/ForgotPasswordPage.jsx b/frontend/pages/ForgotPasswordPage/ForgotPasswordPage.jsx index 31f25638b0..43b4666ca0 100644 --- a/frontend/pages/ForgotPasswordPage/ForgotPasswordPage.jsx +++ b/frontend/pages/ForgotPasswordPage/ForgotPasswordPage.jsx @@ -62,7 +62,7 @@ export class ForgotPasswordPage extends Component {

An email was sent to {email}. - Click the link on the email to proceed with the password reset process. + Click the link on the email to proceed with the password reset process.

diff --git a/frontend/pages/Kolide404/Kolide404.jsx b/frontend/pages/Kolide404/Kolide404.jsx index ad79dca919..1b317b9877 100644 --- a/frontend/pages/Kolide404/Kolide404.jsx +++ b/frontend/pages/Kolide404/Kolide404.jsx @@ -6,7 +6,6 @@ import gopher from '../../../assets/images/404.svg'; const baseClass = 'kolide-404'; class Kolide404 extends Component { - render () { return (
@@ -21,7 +20,7 @@ class Kolide404 extends Component {

You seem to have lost your way.

Might we recommend going back on your browser or visiting the home page?

- +

Need assistance? File an issue.

diff --git a/frontend/pages/Kolide500/Kolide500.jsx b/frontend/pages/Kolide500/Kolide500.jsx index 0b518fc4b2..dd9282f41e 100644 --- a/frontend/pages/Kolide500/Kolide500.jsx +++ b/frontend/pages/Kolide500/Kolide500.jsx @@ -6,7 +6,6 @@ import gopher from '../../../assets/images/500.svg'; const baseClass = 'kolide-500'; class Kolide404 extends Component { - render () { return (
@@ -21,7 +20,7 @@ class Kolide404 extends Component {

Something went wrong on our end.

We have alerted the engineers and they are working on a solution.

- +

Need assistance? File an issue.

diff --git a/frontend/pages/LoginSuccessfulPage/LoginSuccessfulPage.jsx b/frontend/pages/LoginSuccessfulPage/LoginSuccessfulPage.jsx index cc560c7a9e..9ea45e7879 100644 --- a/frontend/pages/LoginSuccessfulPage/LoginSuccessfulPage.jsx +++ b/frontend/pages/LoginSuccessfulPage/LoginSuccessfulPage.jsx @@ -1,14 +1,9 @@ import React, { Component } from 'react'; -import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import Icon from 'components/icons/Icon'; class LoginSuccessfulPage extends Component { - static propTypes = { - dispatch: PropTypes.func.isRequired, - }; - render () { const baseClass = 'login-success'; return ( diff --git a/frontend/pages/admin/AppSettingsPage/AppSettingsPage.tests.jsx b/frontend/pages/admin/AppSettingsPage/AppSettingsPage.tests.jsx index 03227a4aa0..7efe029abe 100644 --- a/frontend/pages/admin/AppSettingsPage/AppSettingsPage.tests.jsx +++ b/frontend/pages/admin/AppSettingsPage/AppSettingsPage.tests.jsx @@ -37,7 +37,7 @@ describe('AppSettingsPage - component', () => { it('renders a warning if SMTP has not been configured', () => { const mockStore = reduxMockStore(storeWithoutSMTPConfig); const page = mount( - connectedComponent(AppSettingsPage, { mockStore }) + connectedComponent(AppSettingsPage, { mockStore }), ).find('AppSettingsPage'); const smtpWarning = page.find('WarningBanner'); @@ -50,7 +50,7 @@ describe('AppSettingsPage - component', () => { it('dismisses the smtp warning when "DISMISS" is clicked', () => { const mockStore = reduxMockStore(storeWithoutSMTPConfig); const page = mount( - connectedComponent(AppSettingsPage, { mockStore }) + connectedComponent(AppSettingsPage, { mockStore }), ); const smtpWarning = page.find('WarningBanner'); @@ -64,7 +64,7 @@ describe('AppSettingsPage - component', () => { it('does not render a warning if SMTP has been configured', () => { const mockStore = reduxMockStore(storeWithSMTPConfig); const page = mount( - connectedComponent(AppSettingsPage, { mockStore }) + connectedComponent(AppSettingsPage, { mockStore }), ).find('AppSettingsPage'); expect(page.find('WarningBanner').html()).toNotExist(); diff --git a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tests.jsx b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tests.jsx index 22612ea8e0..4fb8a9365f 100644 --- a/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tests.jsx +++ b/frontend/pages/hosts/ManageHostsPage/ManageHostsPage.tests.jsx @@ -112,14 +112,14 @@ describe('ManageHostsPage - component', () => { {...props} hosts={[hostStub, offlineHost]} selectedLabel={allHostsLabel} - /> + />, ).instance(); const offlineHostsLabelPageNode = mount( + />, ).instance(); expect(allHostsLabelPageNode.filterAllHosts([hostStub, offlineHost], allHostsLabel)).toEqual([hostStub, offlineHost]); diff --git a/frontend/redux/nodes/entities/base/config_thunks.tests.js b/frontend/redux/nodes/entities/base/config_thunks.tests.js index ea63c00462..762bee0cd2 100644 --- a/frontend/redux/nodes/entities/base/config_thunks.tests.js +++ b/frontend/redux/nodes/entities/base/config_thunks.tests.js @@ -52,9 +52,9 @@ describe('ReduxConfig - thunks', () => { it('calls the createFunc', () => { const params = { first_name: 'Mike' }; return mockStore.dispatch(config.actions.create(params)) - .then(() => { - expect(createFunc).toHaveBeenCalledWith(params); - }); + .then(() => { + expect(createFunc).toHaveBeenCalledWith(params); + }); }); it('dispatches the correct actions', () => { @@ -139,9 +139,9 @@ describe('ReduxConfig - thunks', () => { it('calls the destroyFunc', () => { return mockStore.dispatch(config.actions.destroy(params)) - .then(() => { - expect(destroyFunc).toHaveBeenCalledWith(params); - }); + .then(() => { + expect(destroyFunc).toHaveBeenCalledWith(params); + }); }); it('dispatches the correct actions', () => { @@ -217,9 +217,9 @@ describe('ReduxConfig - thunks', () => { const params = { id: 1 }; return mockStore.dispatch(config.actions.load(params)) - .then(() => { - expect(loadFunc).toHaveBeenCalledWith(params); - }); + .then(() => { + expect(loadFunc).toHaveBeenCalledWith(params); + }); }); it('dispatches the correct actions', () => { @@ -296,9 +296,9 @@ describe('ReduxConfig - thunks', () => { const params = { id: 1 }; return mockStore.dispatch(config.actions.loadAll(params)) - .then(() => { - expect(loadAllFunc).toHaveBeenCalledWith(params); - }); + .then(() => { + expect(loadAllFunc).toHaveBeenCalledWith(params); + }); }); it('dispatches the correct actions', () => { @@ -375,9 +375,9 @@ describe('ReduxConfig - thunks', () => { const params = { id: 1 }; return mockStore.dispatch(config.actions.update(params)) - .then(() => { - expect(updateFunc).toHaveBeenCalledWith(params); - }); + .then(() => { + expect(updateFunc).toHaveBeenCalledWith(params); + }); }); it('dispatches the correct actions', () => { diff --git a/package.json b/package.json index cbcbdfdf23..6c39dd360f 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "@types/node": "6.0.112", "@types/react": "0.14.57", "babel-core": "6.26.3", - "babel-eslint": "6.1.2", + "babel-eslint": "^7", "babel-loader": "^7.0.0", "babel-preset-env": "1.7.0", "babel-preset-react": "6.24.1", @@ -85,12 +85,12 @@ "babel-preset-stage-0": "6.24.1", "css-loader": "0.28.11", "enzyme-adapter-react-16": "^1.7.1", - "eslint": "3.19.0", - "eslint-config-airbnb": "12.0.0", + "eslint": "^4", + "eslint-config-airbnb": "^15", "eslint-import-resolver-webpack": "0.10.0", - "eslint-plugin-import": "1.16.0", - "eslint-plugin-jsx-a11y": "2.2.3", - "eslint-plugin-react": "6.10.3", + "eslint-plugin-import": "^2", + "eslint-plugin-jsx-a11y": "^5", + "eslint-plugin-react": "^7", "expose-loader": "0.7.5", "file-loader": "^4.1.0", "html-webpack-plugin": "^3.2.0", diff --git a/yarn.lock b/yarn.lock index 88f5075395..18f762bb6c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20,6 +20,11 @@ resolved "https://registry.yarnpkg.com/@types/expect/-/expect-1.20.3.tgz#a99d059ace4bd051332faf03f5b4b4266149a501" integrity sha512-g0+CQosizg1hjNn06fKB2tEvS5kExrvVOkIfsGuIRfsQ/A9u/Xjp/6/czJVyLuCYdkmMbplDUXvQW+YjBQK7dA== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/mocha@2.2.48": version "2.2.48" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.48.tgz#3523b126a0b049482e1c3c11877460f76622ffab" @@ -274,6 +279,11 @@ ajv-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" integrity sha1-MU3QpLM2j609/NxU7eYXG4htrzw= +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= + ajv-keywords@^3.1.0: version "3.4.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" @@ -287,6 +297,16 @@ ajv@^4.7.0: co "^4.6.0" json-stable-stringify "^1.0.1" +ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + ajv@^6.1.0, ajv@^6.5.5: version "6.10.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593" @@ -317,6 +337,11 @@ ansi-escapes@^1.1.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" integrity sha1-06ioOzGapneTZisT52HHkRQiMG4= +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + ansi-html@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" @@ -382,6 +407,14 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +aria-query@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e" + integrity sha1-Jsu1r/ZBRLCoJb4YRuCxbPoAsR4= + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -422,12 +455,21 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= +array-includes@^3.0.3, array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.find@^2.0.1, array.prototype.find@^2.0.4: +array.prototype.find@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.0.tgz#630f2eaf70a39e608ac3573e45cf8ccd0ede9ad7" integrity sha512-Wn41+K1yuO5p7wRZDl7890c3xvv5UBrfVXTVIe28rSQb6LS0fZMDrQB6PAcxQFRFy6vJTLDc3A2+3CjQdzVKRg== @@ -444,6 +486,23 @@ array.prototype.flat@^1.2.1: es-abstract "^1.10.0" function-bind "^1.1.1" +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +array.prototype.flatmap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" + integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -493,6 +552,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -555,7 +619,14 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== -babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +axobject-query@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" + integrity sha1-YvWdvFnJ+SQnWco0mWDnov48NsA= + dependencies: + ast-types-flow "0.0.7" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= @@ -589,16 +660,15 @@ babel-core@6.26.3, babel-core@^6.26.0, babel-core@^6.4.5: slash "^1.0.0" source-map "^0.5.7" -babel-eslint@6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-6.1.2.tgz#5293419fe3672d66598d327da9694567ba6a5f2f" - integrity sha1-UpNBn+NnLWZZjTJ9qWlFZ7pqXy8= +babel-eslint@^7: + version "7.2.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" + integrity sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc= dependencies: - babel-traverse "^6.0.20" - babel-types "^6.0.19" - babylon "^6.0.18" - lodash.assign "^4.0.0" - lodash.pickby "^4.0.0" + babel-code-frame "^6.22.0" + babel-traverse "^6.23.1" + babel-types "^6.23.0" + babylon "^6.17.0" babel-generator@^6.26.0: version "6.26.1" @@ -1379,7 +1449,7 @@ babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.5.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.0.20, babel-traverse@^6.24.1, babel-traverse@^6.26.0: +babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= @@ -1394,7 +1464,7 @@ babel-traverse@^6.0.20, babel-traverse@^6.24.1, babel-traverse@^6.26.0: invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.0.19, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: +babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= @@ -1404,7 +1474,7 @@ babel-types@^6.0.19, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26 lodash "^4.17.4" to-fast-properties "^1.0.3" -babylon@^6.0.18, babylon@^6.18.0: +babylon@^6.17.0, babylon@^6.18.0: version "6.18.0" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== @@ -1802,7 +1872,7 @@ caseless@~0.12.0: deep-eql "^0.1.3" type-detect "^1.0.0" -chalk@2.4.2, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1822,6 +1892,11 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + cheerio@^1.0.0-rc.2: version "1.0.0-rc.3" resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" @@ -1919,6 +1994,13 @@ cli-cursor@^1.0.1: dependencies: restore-cursor "^1.0.1" +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -2053,6 +2135,11 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" +commander@^2.11.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@^2.8.1: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" @@ -2078,7 +2165,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.5.2: +concat-stream@^1.4.6, concat-stream@^1.5.0, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -2243,6 +2330,15 @@ cross-spawn@^3.0.0: lru-cache "^4.0.1" which "^1.2.9" +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -2423,7 +2519,7 @@ debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6. dependencies: ms "2.0.0" -debug@^3.2.6: +debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2583,15 +2679,7 @@ doctrine@0.7.2: esutils "^1.1.6" isarray "0.0.1" -doctrine@1.3.x: - version "1.3.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.3.0.tgz#13e75682b55518424276f7c173783456ef913d26" - integrity sha1-E+dWgrVVGEJCdvfBc3g0Vu+RPSY= - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^1.2.2: +doctrine@1.5.0, doctrine@^1.2.2: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= @@ -2599,7 +2687,7 @@ doctrine@^1.2.2: esutils "^2.0.2" isarray "^1.0.0" -doctrine@^2.0.0: +doctrine@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== @@ -2700,6 +2788,11 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +emoji-regex@^6.1.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + integrity sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2838,6 +2931,23 @@ es-abstract@^1.10.0, es-abstract@^1.11.0, es-abstract@^1.12.0, es-abstract@^1.13 is-regex "^1.0.4" object-keys "^1.0.12" +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + es-to-primitive@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" @@ -2847,6 +2957,15 @@ es-to-primitive@^1.2.0: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14: version "0.10.50" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.50.tgz#6d0e23a0abdb27018e5ac4fd09b412bc5517a778" @@ -2887,7 +3006,7 @@ es6-promise@4.2.4: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.4.tgz#dc4221c2b16518760bd8c39a52d8f356fc00ed29" integrity sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ== -es6-set@^0.1.4, es6-set@~0.1.5: +es6-set@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" integrity sha1-0rPsXU2ADO2BjbU40ol02wpzzLE= @@ -2948,26 +3067,27 @@ escope@^3.6.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-config-airbnb-base@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-8.0.0.tgz#c5e958a469ab8af76aff068b43d784e5afe74ca7" - integrity sha1-xelYpGmrivdq/waLQ9eE5a/nTKc= - -eslint-config-airbnb@12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-12.0.0.tgz#ab282b756a25f03d04ac264c24d673a08a803270" - integrity sha1-qygrdWol8D0ErCZMJNZzoIqAMnA= +eslint-config-airbnb-base@^11.3.0: + version "11.3.2" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz#8703b11abe3c88ac7ec2b745b7fdf52e00ae680a" + integrity sha512-/fhjt/VqzBA2SRsx7ErDtv6Ayf+XLw9LIOqmpBuHFCVwyJo2EtzGWMB9fYRFBoWWQLxmNmCpenNiH0RxyeS41w== dependencies: - eslint-config-airbnb-base "^8.0.0" + eslint-restricted-globals "^0.1.1" -eslint-import-resolver-node@^0.2.0: - version "0.2.3" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz#5add8106e8c928db2cba232bcd9efa846e3da16c" - integrity sha1-Wt2BBujJKNssuiMrzZ76hG49oWw= +eslint-config-airbnb@^15: + version "15.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-15.1.0.tgz#fd432965a906e30139001ba830f58f73aeddae8e" + integrity sha512-m0q9fiMBzDAIbirlGnpJNWToIhdhJmXXnMG+IFflYzzod9231ZhtmGKegKg8E9T8F1YuVaDSU1FnCm5b9iXVhQ== dependencies: - debug "^2.2.0" - object-assign "^4.0.1" - resolve "^1.1.6" + eslint-config-airbnb-base "^11.3.0" + +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" eslint-import-resolver-webpack@0.10.0: version "0.10.0" @@ -2985,47 +3105,75 @@ eslint-import-resolver-webpack@0.10.0: resolve "^1.4.0" semver "^5.3.0" -eslint-plugin-import@1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-1.16.0.tgz#b2fa07ebcc53504d0f2a4477582ec8bff1871b9f" - integrity sha1-svoH68xTUE0PKkR3WC7Iv/GHG58= +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== dependencies: - builtin-modules "^1.1.1" + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" contains-path "^0.1.0" - debug "^2.2.0" - doctrine "1.3.x" - es6-map "^0.1.3" - es6-set "^0.1.4" - eslint-import-resolver-node "^0.2.0" - has "^1.0.1" - lodash.cond "^4.3.0" - lodash.endswith "^4.0.1" - lodash.find "^4.3.0" - lodash.findindex "^4.3.0" - minimatch "^3.0.3" - object-assign "^4.0.1" - pkg-dir "^1.0.0" - pkg-up "^1.0.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" -eslint-plugin-jsx-a11y@2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-2.2.3.tgz#4e35cb71b8a7db702ac415c806eb8e8d9ea6c65d" - integrity sha1-TjXLcbin23AqxBXIBuuOjZ6mxl0= +eslint-plugin-jsx-a11y@^5: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1" + integrity sha512-5I9SpoP7gT4wBFOtXT8/tXNPYohHBVfyVfO17vkbC7r9kEIxYJF12D3pKqhk8+xnk12rfxKClS3WCFpVckFTPQ== dependencies: + aria-query "^0.7.0" + array-includes "^3.0.3" + ast-types-flow "0.0.7" + axobject-query "^0.1.0" damerau-levenshtein "^1.0.0" - jsx-ast-utils "^1.0.0" - object-assign "^4.0.1" + emoji-regex "^6.1.0" + jsx-ast-utils "^1.4.0" -eslint-plugin-react@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" - integrity sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g= +eslint-plugin-react@^7: + version "7.20.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.3.tgz#0590525e7eb83890ce71f73c2cf836284ad8c2f1" + integrity sha512-txbo090buDeyV0ugF3YMWrzLIUqpYTsWSDZV9xLSmExE1P/Kmgg9++PD931r+KEWS66O1c9R4srLVVHmeHpoAg== dependencies: - array.prototype.find "^2.0.1" - doctrine "^1.2.2" - has "^1.0.1" - jsx-ast-utils "^1.3.4" - object.assign "^4.0.4" + array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1" + object.entries "^1.1.2" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.17.0" + string.prototype.matchall "^4.0.2" + +eslint-restricted-globals@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" + integrity sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc= + +eslint-scope@^3.7.1: + version "3.7.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" + integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" eslint-scope@^4.0.0: version "4.0.3" @@ -3035,46 +3183,10 @@ eslint-scope@^4.0.0: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint@3.19.0: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" - integrity sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw= - dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" - doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" - esquery "^1.0.0" - estraverse "^4.2.0" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" - imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" - is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" - levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" - strip-json-comments "~2.0.1" - table "^3.7.8" - text-table "~0.2.0" - user-home "^2.0.0" +eslint-visitor-keys@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== eslint@^2.7.0: version "2.13.1" @@ -3115,7 +3227,51 @@ eslint@^2.7.0: text-table "~0.2.0" user-home "^2.0.0" -espree@^3.1.6, espree@^3.4.0: +eslint@^4: + version "4.19.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ== + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +espree@^3.1.6, espree@^3.5.4: version "3.5.4" resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A== @@ -3312,6 +3468,15 @@ extend@~3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" @@ -3336,6 +3501,11 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" @@ -3389,6 +3559,13 @@ figures@^1.3.5: escape-string-regexp "^1.0.5" object-assign "^4.1.0" +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + file-entry-cache@^1.1.1: version "1.3.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-1.3.1.tgz#44c61ea607ae4be9c1402f41f44270cbfe334ff8" @@ -3488,7 +3665,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.1.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -3661,6 +3838,11 @@ function.prototype.name@^1.1.0: function-bind "^1.1.1" is-callable "^1.1.3" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -3817,7 +3999,12 @@ global@^4.3.0: min-document "^2.19.0" process "^0.11.10" -globals@^9.14.0, globals@^9.18.0, globals@^9.2.0: +globals@^11.0.1: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^9.18.0, globals@^9.2.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== @@ -3893,6 +4080,11 @@ has-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + has-unicode@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -4122,7 +4314,7 @@ iconv-lite@0.4.19: resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== -iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -4163,7 +4355,7 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.1.2, ignore@^3.2.0: +ignore@^3.1.2, ignore@^3.3.3: version "3.3.10" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== @@ -4275,6 +4467,35 @@ inquirer@^0.12.0: strip-ansi "^3.0.0" through "^2.3.6" +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + interpret@1.2.0, interpret@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" @@ -4355,6 +4576,11 @@ is-callable@^1.0.4, is-callable@^1.1.3, is-callable@^1.1.4: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -4526,6 +4752,13 @@ is-regex@^1.0.3, is-regex@^1.0.4: dependencies: has "^1.0.1" +is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== + dependencies: + has-symbols "^1.0.1" + is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" @@ -4541,6 +4774,11 @@ is-string@^1.0.4: resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.4.tgz#cc3a9b69857d621e963725a24caeec873b826e64" integrity sha1-zDqbaYV9Yh6WNyWiTK7shzuCbmQ= +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-subset@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" @@ -4648,6 +4886,14 @@ js-yaml@^3.13.1, js-yaml@^3.4.6, js-yaml@^3.5.1, js-yaml@^3.5.4, js-yaml@^3.7.0: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.9.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" @@ -4706,6 +4952,11 @@ json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -4716,6 +4967,11 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" @@ -4777,11 +5033,19 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^1.0.0, jsx-ast-utils@^1.3.4: +jsx-ast-utils@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" integrity sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE= +jsx-ast-utils@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" + integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== + dependencies: + array-includes "^3.1.1" + object.assign "^4.1.0" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -4844,6 +5108,16 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + loader-runner@^2.3.0: version "2.4.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" @@ -4917,11 +5191,6 @@ lodash._isiterateecall@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= -lodash.assign@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= - lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" @@ -4932,11 +5201,6 @@ lodash.capitalize@^4.1.0: resolved "https://registry.yarnpkg.com/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz#f826c9b4e2a8511d84e3aca29db05e1a4f3b72a9" integrity sha1-+CbJtOKoUR2E46yinbBeGk87cqk= -lodash.cond@^4.3.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" - integrity sha1-9HGh2khr5g9quVXRcRVSPdHSVdU= - lodash.create@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" @@ -4946,26 +5210,11 @@ lodash.create@3.1.1: lodash._basecreate "^3.0.0" lodash._isiterateecall "^3.0.0" -lodash.endswith@^4.0.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.endswith/-/lodash.endswith-4.2.1.tgz#fed59ac1738ed3e236edd7064ec456448b37bc09" - integrity sha1-/tWawXOO0+I27dcGTsRWRIs3vAk= - lodash.escape@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" integrity sha1-yQRGkMIeBClL6qUXcS/e0fqI3pg= -lodash.find@^4.3.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" - integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E= - -lodash.findindex@^4.3.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.findindex/-/lodash.findindex-4.6.0.tgz#a3245dee61fb9b6e0624b535125624bb69c11106" - integrity sha1-oyRd7mH7m24GJLU1ElYku2nBEQY= - lodash.flattendeep@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" @@ -5015,11 +5264,6 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= -lodash.pickby@^4.0.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" - integrity sha1-feoh2MGNdwOifHBMFdO4SmfjOv8= - lodash.tail@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.tail/-/lodash.tail-4.1.1.tgz#d2333a36d9e7717c8ad2f7cacafec7c32b444664" @@ -5268,6 +5512,11 @@ mime@^2.4.2, mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + mimic-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -5300,7 +5549,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= -"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -5431,6 +5680,11 @@ mute-stream@0.0.5: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA= +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + nan@^2.12.1, nan@^2.13.2: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" @@ -5773,12 +6027,17 @@ object-inspect@^1.1.0, object-inspect@^1.6.0: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.6.0.tgz#c70b6cbf72f274aab4c34c0c82f5167bf82cf15b" integrity sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ== +object-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + object-is@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.9: +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.9, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -5790,7 +6049,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@^4.0.4, object.assign@^4.1.0: +object.assign@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -5810,6 +6069,15 @@ object.entries@^1.0.4, object.entries@^1.1.0: function-bind "^1.1.1" has "^1.0.3" +object.entries@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + has "^1.0.3" + object.fromentries@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" @@ -5820,6 +6088,16 @@ object.fromentries@^2.0.0: function-bind "^1.1.1" has "^1.0.1" +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + object.getownpropertydescriptors@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" @@ -5845,6 +6123,16 @@ object.values@^1.0.4, object.values@^1.1.0: function-bind "^1.1.1" has "^1.0.3" +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -5864,6 +6152,13 @@ onetime@^1.0.0: resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + optionator@^0.8.1, optionator@^0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -5909,7 +6204,7 @@ os-locale@^3.1.0: lcid "^2.0.0" mem "^4.0.0" -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= @@ -6077,7 +6372,7 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.1: +path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= @@ -6106,6 +6401,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -6180,18 +6482,16 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" -pkg-up@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-1.0.0.tgz#3e08fb461525c4421624a33b9f7e6d0af5b05a26" - integrity sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY= - dependencies: - find-up "^1.0.0" - pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" integrity sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU= +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -6546,6 +6846,11 @@ progress@^1.1.8: resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" @@ -6952,6 +7257,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -6961,6 +7274,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -7001,13 +7323,6 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - redbox-react@^1.2.2: version "1.6.0" resolved "https://registry.yarnpkg.com/redbox-react/-/redbox-react-1.6.0.tgz#e753ac02595bc1bf695b3935889a4f5b1b5a21a1" @@ -7101,6 +7416,19 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== + regexpu-core@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" @@ -7218,7 +7546,7 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -require-uncached@^1.0.2: +require-uncached@^1.0.2, require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= @@ -7261,13 +7589,20 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: +resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0: version "1.11.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== dependencies: path-parse "^1.0.6" +resolve@^1.13.1, resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + restore-cursor@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" @@ -7276,6 +7611,14 @@ restore-cursor@^1.0.1: exit-hook "^1.0.0" onetime "^1.0.0" +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -7311,6 +7654,11 @@ run-async@^0.1.0: dependencies: once "^1.3.0" +run-async@^2.2.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + run-queue@^1.0.0, run-queue@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" @@ -7318,6 +7666,18 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + rx-lite@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" @@ -7555,25 +7915,29 @@ shelljs@^0.6.0: resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.6.1.tgz#ec6211bed1920442088fe0f70b2837232ed2c8a8" integrity sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg= -shelljs@^0.7.5: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" - integrity sha1-3svPh0sNHl+3LhSxZKloMEjprLM= - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + signal-exit@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" @@ -7584,6 +7948,13 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -7848,7 +8219,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7865,6 +8236,18 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + string.prototype.trim@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" @@ -7874,6 +8257,22 @@ string.prototype.trim@^1.1.2: es-abstract "^1.5.0" function-bind "^1.0.2" +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" @@ -8007,6 +8406,18 @@ symbol-tree@^3.2.1: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +table@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA== + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + table@^3.7.8: version "3.8.3" resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" @@ -8106,6 +8517,13 @@ tmatch@^2.0.1: resolved "https://registry.yarnpkg.com/tmatch/-/tmatch-2.0.1.tgz#0c56246f33f30da1b8d3d72895abaf16660f38cf" integrity sha1-DFYkbzPzDaG409colauvFmYPOM8= +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -8220,6 +8638,16 @@ ts-node@1.7.3: xtend "^4.0.0" yn "^1.2.0" +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tsconfig@^5.0.2: version "5.0.3" resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a"