diff --git a/ui/package.json b/ui/package.json index 87321ea69a..de8f74f90f 100644 --- a/ui/package.json +++ b/ui/package.json @@ -12,7 +12,8 @@ "build": "yarn run clean && webpack --config ./webpack/prod.config.js", "build:dev": "webpack --config ./webpack/dev.config.js", "build:vendor": "webpack --config webpack/vendor.config.js", - "start": "yarn run clean && yarn run build:vendor && webpack --watch --config ./webpack/dev.config.js --progress", + "start": + "yarn run clean && yarn run build:vendor && webpack --watch --config ./webpack/dev.config.js --progress", "start:fast": "webpack --watch --config ./webpack/dev.config.js", "start:hmr": "webpack-dev-server --open --config ./webpack/dev.config.js", "lint": "esw src/", @@ -22,9 +23,12 @@ "clean": "rm -rf ./build/*", "eslint:fix": "eslint src --fix", "tslint:fix": "tslint --fix -c ./tslint.json '{src,test}/**/*.ts?(x)'", - "prettier": "prettier --single-quote --trailing-comma es5 --bracket-spacing false --semi false --write \"{src,spec}/**/*.js\"", - "lint:fix": "yarn run prettier && yarn run eslint:fix && yarn run tslint:fix", - "eslint-check": "eslint --print-config .eslintrc | eslint-config-prettier-check" + "prettier": + "prettier --single-quote --trailing-comma es5 --bracket-spacing false --semi false --write \"{src,spec}/**/*.js\"", + "lint:fix": + "yarn run prettier && yarn run eslint:fix && yarn run tslint:fix", + "eslint-check": + "eslint --print-config .eslintrc | eslint-config-prettier-check" }, "author": "", "eslintConfig": { @@ -133,6 +137,7 @@ "query-string": "^5.0.0", "react": "^16.3.1", "react-addons-shallow-compare": "^15.0.2", + "react-codemirror": "^1.0.0", "react-codemirror2": "^4.2.1", "react-custom-scrollbars": "^4.1.1", "react-dimensions": "^1.2.0", diff --git a/ui/src/CheckSources.tsx b/ui/src/CheckSources.tsx index c6213ff2bd..1e56ec3713 100644 --- a/ui/src/CheckSources.tsx +++ b/ui/src/CheckSources.tsx @@ -84,7 +84,10 @@ export class CheckSources extends Component { } public async componentWillMount() { - const {router, auth: {isUsingAuth, me}} = this.props + const { + router, + auth: {isUsingAuth, me}, + } = this.props if (!isUsingAuth || isUserAuthorized(me.role, VIEWER_ROLE)) { await this.props.getSources() this.setState({isFetching: false}) @@ -189,7 +192,10 @@ export class CheckSources extends Component { const { params, sources, - auth: {isUsingAuth, me: {currentOrganization}}, + auth: { + isUsingAuth, + me: {currentOrganization}, + }, } = this.props const {isFetching} = this.state const source = sources.find(s => s.id === params.sourceID) diff --git a/ui/src/admin/actions/influxdb.js b/ui/src/admin/actions/influxdb.js index ce4d9b183d..cf899ac481 100644 --- a/ui/src/admin/actions/influxdb.js +++ b/ui/src/admin/actions/influxdb.js @@ -298,7 +298,9 @@ export const loadPermissionsAsync = url => async dispatch => { export const loadDBsAndRPsAsync = url => async dispatch => { try { - const {data: {databases}} = await getDbsAndRpsAJAX(url) + const { + data: {databases}, + } = await getDbsAndRpsAJAX(url) dispatch(loadDatabases(_.sortBy(databases, ({name}) => name.toLowerCase()))) } catch (error) { dispatch(errorThrown(error)) diff --git a/ui/src/admin/containers/DatabaseManagerPage.js b/ui/src/admin/containers/DatabaseManagerPage.js index 5ea3ca6f8f..8b50a67fa1 100644 --- a/ui/src/admin/containers/DatabaseManagerPage.js +++ b/ui/src/admin/containers/DatabaseManagerPage.js @@ -23,7 +23,12 @@ class DatabaseManagerPage extends Component { } componentDidMount() { - const {source: {links: {databases}}, actions} = this.props + const { + source: { + links: {databases}, + }, + actions, + } = this.props actions.loadDBsAndRPsAsync(databases) } @@ -80,7 +85,10 @@ class DatabaseManagerPage extends Component { } handleDatabaseDeleteConfirm = database => e => { - const {key, target: {value}} = e + const { + key, + target: {value}, + } = e const {actions, notify} = this.props if (key === 'Escape') { diff --git a/ui/src/admin/containers/chronograf/AllUsersPage.tsx b/ui/src/admin/containers/chronograf/AllUsersPage.tsx index edb33285d4..4f74b6683e 100644 --- a/ui/src/admin/containers/chronograf/AllUsersPage.tsx +++ b/ui/src/admin/containers/chronograf/AllUsersPage.tsx @@ -50,7 +50,10 @@ export class AllUsersPage extends PureComponent { } public componentDidMount() { - const {links, actionsConfig: {getAuthConfigAsync}} = this.props + const { + links, + actionsConfig: {getAuthConfigAsync}, + } = this.props getAuthConfigAsync(links.config.auth) } @@ -71,7 +74,10 @@ export class AllUsersPage extends PureComponent { } public handleCreateUser = (user: User) => { - const {links, actionsAdmin: {createUserAsync}} = this.props + const { + links, + actionsAdmin: {createUserAsync}, + } = this.props createUserAsync(links.allUsers, user) } @@ -80,13 +86,17 @@ export class AllUsersPage extends PureComponent { roles: Role[], successMessage: string ) => { - const {actionsAdmin: {updateUserAsync}} = this.props + const { + actionsAdmin: {updateUserAsync}, + } = this.props const updatedUser = {...user, roles} updateUserAsync(user, updatedUser, successMessage) } public handleUpdateUserSuperAdmin = (user: User, superAdmin: boolean) => { - const {actionsAdmin: {updateUserAsync}} = this.props + const { + actionsAdmin: {updateUserAsync}, + } = this.props const updatedUser = {...user, superAdmin} updateUserAsync( user, @@ -96,7 +106,9 @@ export class AllUsersPage extends PureComponent { } public handleDeleteUser = (user: User) => { - const {actionsAdmin: {deleteUserAsync}} = this.props + const { + actionsAdmin: {deleteUserAsync}, + } = this.props deleteUserAsync(user, {isAbsoluteDelete: true}) } diff --git a/ui/src/admin/containers/chronograf/OrganizationsPage.js b/ui/src/admin/containers/chronograf/OrganizationsPage.js index 491cf1845c..a9910a6bf8 100644 --- a/ui/src/admin/containers/chronograf/OrganizationsPage.js +++ b/ui/src/admin/containers/chronograf/OrganizationsPage.js @@ -12,24 +12,34 @@ import OrganizationsTable from 'src/admin/components/chronograf/OrganizationsTab @ErrorHandling class OrganizationsPage extends Component { componentDidMount() { - const {links, actionsAdmin: {loadOrganizationsAsync}} = this.props + const { + links, + actionsAdmin: {loadOrganizationsAsync}, + } = this.props loadOrganizationsAsync(links.organizations) } handleCreateOrganization = async organization => { - const {links, actionsAdmin: {createOrganizationAsync}} = this.props + const { + links, + actionsAdmin: {createOrganizationAsync}, + } = this.props await createOrganizationAsync(links.organizations, organization) this.refreshMe() } handleRenameOrganization = async (organization, name) => { - const {actionsAdmin: {updateOrganizationAsync}} = this.props + const { + actionsAdmin: {updateOrganizationAsync}, + } = this.props await updateOrganizationAsync(organization, {...organization, name}) this.refreshMe() } handleDeleteOrganization = organization => { - const {actionsAdmin: {deleteOrganizationAsync}} = this.props + const { + actionsAdmin: {deleteOrganizationAsync}, + } = this.props deleteOrganizationAsync(organization) this.refreshMe() } @@ -40,7 +50,9 @@ class OrganizationsPage extends Component { } handleChooseDefaultRole = (organization, defaultRole) => { - const {actionsAdmin: {updateOrganizationAsync}} = this.props + const { + actionsAdmin: {updateOrganizationAsync}, + } = this.props updateOrganizationAsync(organization, {...organization, defaultRole}) // refreshMe is here to update the org's defaultRole in `me.organizations` this.refreshMe() diff --git a/ui/src/admin/containers/chronograf/UsersPage.js b/ui/src/admin/containers/chronograf/UsersPage.js index d2fb102191..a53ab8b5f7 100644 --- a/ui/src/admin/containers/chronograf/UsersPage.js +++ b/ui/src/admin/containers/chronograf/UsersPage.js @@ -20,12 +20,17 @@ class UsersPage extends PureComponent { } handleCreateUser = user => { - const {links, actions: {createUserAsync}} = this.props + const { + links, + actions: {createUserAsync}, + } = this.props createUserAsync(links.users, user) } handleUpdateUserRole = (user, currentRole, {name}) => { - const {actions: {updateUserAsync}} = this.props + const { + actions: {updateUserAsync}, + } = this.props const updatedRole = {...currentRole, name} const newRoles = user.roles.map( r => (r.organization === currentRole.organization ? updatedRole : r) @@ -38,7 +43,9 @@ class UsersPage extends PureComponent { } handleDeleteUser = user => { - const {actions: {deleteUserAsync}} = this.props + const { + actions: {deleteUserAsync}, + } = this.props deleteUserAsync(user, {isAbsoluteDelete: false}) } diff --git a/ui/src/alerts/components/AlertsTable.js b/ui/src/alerts/components/AlertsTable.js index 82e0297b91..72e7fd3c18 100644 --- a/ui/src/alerts/components/AlertsTable.js +++ b/ui/src/alerts/components/AlertsTable.js @@ -74,7 +74,9 @@ class AlertsTable extends Component { } renderTable() { - const {source: {id}} = this.props + const { + source: {id}, + } = this.props const alerts = this.sort( this.state.filteredAlerts, this.state.sortKey, @@ -175,7 +177,10 @@ class AlertsTable extends Component { } renderTableEmpty() { - const {source: {id}, shouldNotBeFilterable} = this.props + const { + source: {id}, + shouldNotBeFilterable, + } = this.props return shouldNotBeFilterable ? (
diff --git a/ui/src/dashboards/actions/index.js b/ui/src/dashboards/actions/index.js index e7c565fefe..ce5c9678d1 100644 --- a/ui/src/dashboards/actions/index.js +++ b/ui/src/dashboards/actions/index.js @@ -210,7 +210,9 @@ export const setActiveCell = activeCellID => ({ export const getDashboardsAsync = () => async dispatch => { try { - const {data: {dashboards}} = await getDashboardsAJAX() + const { + data: {dashboards}, + } = await getDashboardsAJAX() dispatch(loadDashboards(dashboards)) return dashboards } catch (error) { @@ -260,7 +262,9 @@ export const putDashboard = dashboard => async dispatch => { export const putDashboardByID = dashboardID => async (dispatch, getState) => { try { - const {dashboardUI: {dashboards}} = getState() + const { + dashboardUI: {dashboards}, + } = getState() const dashboard = dashboards.find(d => d.id === +dashboardID) const templates = removeUnselectedTemplateValues(dashboard) await updateDashboardAJAX({...dashboard, templates}) diff --git a/ui/src/dashboards/components/AxesOptions.js b/ui/src/dashboards/components/AxesOptions.js index 6d1f95698b..a621b14fcd 100644 --- a/ui/src/dashboards/components/AxesOptions.js +++ b/ui/src/dashboards/components/AxesOptions.js @@ -41,7 +41,11 @@ class AxesOptions extends Component { handleSetYAxisBoundMin = min => { const {handleUpdateAxes, axes} = this.props - const {y: {bounds: [, max]}} = this.props.axes + const { + y: { + bounds: [, max], + }, + } = this.props.axes const newAxes = {...axes, y: {...axes.y, bounds: [min, max]}} handleUpdateAxes(newAxes) @@ -49,7 +53,11 @@ class AxesOptions extends Component { handleSetYAxisBoundMax = max => { const {handleUpdateAxes, axes} = this.props - const {y: {bounds: [min]}} = axes + const { + y: { + bounds: [min], + }, + } = axes const newAxes = {...axes, y: {...axes.y, bounds: [min, max]}} handleUpdateAxes(newAxes) @@ -78,7 +86,9 @@ class AxesOptions extends Component { render() { const { - axes: {y: {bounds, label, prefix, suffix, base, scale, defaultYLabel}}, + axes: { + y: {bounds, label, prefix, suffix, base, scale, defaultYLabel}, + }, type, staticLegend, onToggleStaticLegend, @@ -218,7 +228,11 @@ AxesOptions.propTypes = { handleUpdateAxes: func.isRequired, } -const mapStateToProps = ({cellEditorOverlay: {cell: {axes, type}}}) => ({ +const mapStateToProps = ({ + cellEditorOverlay: { + cell: {axes, type}, + }, +}) => ({ axes, type, }) diff --git a/ui/src/dashboards/components/CellEditorOverlay.tsx b/ui/src/dashboards/components/CellEditorOverlay.tsx index ce01274733..b49c7f7113 100644 --- a/ui/src/dashboards/components/CellEditorOverlay.tsx +++ b/ui/src/dashboards/components/CellEditorOverlay.tsx @@ -99,8 +99,12 @@ class CellEditorOverlay extends Component { constructor(props) { super(props) - const {cell: {legend}} = props - let {cell: {queries}} = props + const { + cell: {legend}, + } = props + let { + cell: {queries}, + } = props // Always have at least one query if (_.isEmpty(queries)) { @@ -395,7 +399,10 @@ class CellEditorOverlay extends Component { } private get sourceLink(): string { - const {cell: {queries}, source: {links}} = this.props + const { + cell: {queries}, + source: {links}, + } = this.props return _.get(queries, '0.source.links.self', links.self) } diff --git a/ui/src/dashboards/components/DisplayOptions.js b/ui/src/dashboards/components/DisplayOptions.js index ec3c47cf3b..8bc04102bb 100644 --- a/ui/src/dashboards/components/DisplayOptions.js +++ b/ui/src/dashboards/components/DisplayOptions.js @@ -97,7 +97,12 @@ DisplayOptions.propTypes = { onResetFocus: func.isRequired, } -const mapStateToProps = ({cellEditorOverlay: {cell, cell: {axes}}}) => ({ +const mapStateToProps = ({ + cellEditorOverlay: { + cell, + cell: {axes}, + }, +}) => ({ cell, axes, }) diff --git a/ui/src/dashboards/components/GaugeOptions.js b/ui/src/dashboards/components/GaugeOptions.js index 2a6c29b0bc..0145c366a8 100644 --- a/ui/src/dashboards/components/GaugeOptions.js +++ b/ui/src/dashboards/components/GaugeOptions.js @@ -156,7 +156,12 @@ class GaugeOptions extends Component { } render() { - const {gaugeColors, axes: {y: {prefix, suffix}}} = this.props + const { + gaugeColors, + axes: { + y: {prefix, suffix}, + }, + } = this.props const disableMaxColor = gaugeColors.length > MIN_THRESHOLDS const disableAddThreshold = gaugeColors.length > MAX_THRESHOLDS @@ -229,7 +234,12 @@ GaugeOptions.propTypes = { onResetFocus: func.isRequired, } -const mapStateToProps = ({cellEditorOverlay: {gaugeColors, cell: {axes}}}) => ({ +const mapStateToProps = ({ + cellEditorOverlay: { + gaugeColors, + cell: {axes}, + }, +}) => ({ gaugeColors, axes, }) diff --git a/ui/src/dashboards/components/GraphTypeSelector.js b/ui/src/dashboards/components/GraphTypeSelector.js index 162361ff7b..4e6e04f731 100644 --- a/ui/src/dashboards/components/GraphTypeSelector.js +++ b/ui/src/dashboards/components/GraphTypeSelector.js @@ -49,7 +49,11 @@ GraphTypeSelector.propTypes = { handleChangeCellType: func.isRequired, } -const mapStateToProps = ({cellEditorOverlay: {cell: {type}}}) => ({ +const mapStateToProps = ({ + cellEditorOverlay: { + cell: {type}, + }, +}) => ({ type, }) diff --git a/ui/src/dashboards/components/MeasurementDropdown.js b/ui/src/dashboards/components/MeasurementDropdown.js index 0ab2d9c86f..3df2f0a0f6 100644 --- a/ui/src/dashboards/components/MeasurementDropdown.js +++ b/ui/src/dashboards/components/MeasurementDropdown.js @@ -42,7 +42,11 @@ class MeasurementDropdown extends Component { } _getMeasurements = async () => { - const {source: {links: {proxy}}} = this.context + const { + source: { + links: {proxy}, + }, + } = this.context const { measurement, database, diff --git a/ui/src/dashboards/components/QueryTextArea.js b/ui/src/dashboards/components/QueryTextArea.js index 1e94bd83f1..ea152f8cd6 100644 --- a/ui/src/dashboards/components/QueryTextArea.js +++ b/ui/src/dashboards/components/QueryTextArea.js @@ -187,7 +187,9 @@ class QueryTextArea extends Component { } render() { - const {config: {status}} = this.props + const { + config: {status}, + } = this.props const { value, isTemplating, diff --git a/ui/src/dashboards/components/SingleStatOptions.js b/ui/src/dashboards/components/SingleStatOptions.js index c1beac6e62..c67ea1e82f 100644 --- a/ui/src/dashboards/components/SingleStatOptions.js +++ b/ui/src/dashboards/components/SingleStatOptions.js @@ -27,7 +27,12 @@ class SingleStatOptions extends Component { } render() { - const {axes: {y: {prefix, suffix}}, onResetFocus} = this.props + const { + axes: { + y: {prefix, suffix}, + }, + onResetFocus, + } = this.props return ( ({ +const mapStateToProps = ({ + cellEditorOverlay: { + cell: {axes}, + }, +}) => ({ axes, }) diff --git a/ui/src/dashboards/components/TableOptions.tsx b/ui/src/dashboards/components/TableOptions.tsx index c1056766cf..12a034f1d2 100644 --- a/ui/src/dashboards/components/TableOptions.tsx +++ b/ui/src/dashboards/components/TableOptions.tsx @@ -123,7 +123,9 @@ export class TableOptions extends Component { } private get fieldNames() { - const {tableOptions: {fieldNames}} = this.props + const { + tableOptions: {fieldNames}, + } = this.props return fieldNames || [] } @@ -217,7 +219,11 @@ export class TableOptions extends Component { } } -const mapStateToProps = ({cellEditorOverlay: {cell: {tableOptions}}}) => ({ +const mapStateToProps = ({ + cellEditorOverlay: { + cell: {tableOptions}, + }, +}) => ({ tableOptions, }) diff --git a/ui/src/dashboards/components/TagKeyDropdown.js b/ui/src/dashboards/components/TagKeyDropdown.js index afa71a3a34..8838c26866 100644 --- a/ui/src/dashboards/components/TagKeyDropdown.js +++ b/ui/src/dashboards/components/TagKeyDropdown.js @@ -54,7 +54,11 @@ class TagKeyDropdown extends Component { onSelectTagKey, onErrorThrown, } = this.props - const {source: {links: {proxy}}} = this.context + const { + source: { + links: {proxy}, + }, + } = this.context try { const {data} = await showTagKeys({source: proxy, database, measurement}) diff --git a/ui/src/dashboards/components/Threshold.tsx b/ui/src/dashboards/components/Threshold.tsx index 28d650943c..e74061d4ea 100644 --- a/ui/src/dashboards/components/Threshold.tsx +++ b/ui/src/dashboards/components/Threshold.tsx @@ -84,7 +84,9 @@ class Threshold extends PureComponent { } private get selectedColor(): SelectedColor { - const {threshold: {hex, name}} = this.props + const { + threshold: {hex, name}, + } = this.props return {hex, name} } diff --git a/ui/src/dashboards/components/Visualization.js b/ui/src/dashboards/components/Visualization.js index 82cf5ce831..96606fa228 100644 --- a/ui/src/dashboards/components/Visualization.js +++ b/ui/src/dashboards/components/Visualization.js @@ -25,7 +25,11 @@ const DashVisualization = ( thresholdsListColors, tableOptions, }, - {source: {links: {proxy}}} + { + source: { + links: {proxy}, + }, + } ) => { const colors = getCellTypeColors({ cellType: type, diff --git a/ui/src/dashboards/components/VisualizationName.js b/ui/src/dashboards/components/VisualizationName.js index 34928e36de..3998363826 100644 --- a/ui/src/dashboards/components/VisualizationName.js +++ b/ui/src/dashboards/components/VisualizationName.js @@ -64,7 +64,11 @@ VisualizationName.propTypes = { handleRenameCell: func, } -const mapStateToProps = ({cellEditorOverlay: {cell: {name}}}) => ({ +const mapStateToProps = ({ + cellEditorOverlay: { + cell: {name}, + }, +}) => ({ name, }) diff --git a/ui/src/dashboards/components/template_variables/Row.js b/ui/src/dashboards/components/template_variables/Row.js index e4aa077311..4760990f46 100644 --- a/ui/src/dashboards/components/template_variables/Row.js +++ b/ui/src/dashboards/components/template_variables/Row.js @@ -129,7 +129,9 @@ const TemplateVariableRow = ({ class RowWrapper extends Component { constructor(props) { super(props) - const {template: {type, query, isNew}} = this.props + const { + template: {type, query, isNew}, + } = this.props this.state = { isEditing: !!isNew, @@ -218,7 +220,11 @@ class RowWrapper extends Component { handleCancelEdit = () => { const { - template: {type, query: {db, measurement, tagKey}, id}, + template: { + type, + query: {db, measurement, tagKey}, + id, + }, onDelete, } = this.props const {hasBeenSavedToComponentStateOnce} = this.state diff --git a/ui/src/dashboards/containers/DashboardPage.js b/ui/src/dashboards/containers/DashboardPage.js index d0a27bf024..a0976bfe2c 100644 --- a/ui/src/dashboards/containers/DashboardPage.js +++ b/ui/src/dashboards/containers/DashboardPage.js @@ -239,7 +239,11 @@ class DashboardPage extends Component { } handleSelectTemplate = templateID => values => { - const {dashboardActions, dashboard, params: {dashboardID}} = this.props + const { + dashboardActions, + dashboard, + params: {dashboardID}, + } = this.props dashboardActions.templateVariableSelected(dashboard.id, templateID, [ values, ]) diff --git a/ui/src/dashboards/containers/DashboardsPage.js b/ui/src/dashboards/containers/DashboardsPage.js index 4e5589ad5f..163ead9dd9 100644 --- a/ui/src/dashboards/containers/DashboardsPage.js +++ b/ui/src/dashboards/containers/DashboardsPage.js @@ -20,13 +20,19 @@ class DashboardsPage extends Component { } handleCreateDashboard = async () => { - const {source: {id}, router: {push}} = this.props + const { + source: {id}, + router: {push}, + } = this.props const {data} = await createDashboard(NEW_DASHBOARD) push(`/sources/${id}/dashboards/${data.id}`) } handleCloneDashboard = dashboard => async () => { - const {source: {id}, router: {push}} = this.props + const { + source: {id}, + router: {push}, + } = this.props const {data} = await createDashboard({ ...dashboard, name: `${dashboard.name} (clone)`, diff --git a/ui/src/dashboards/reducers/cellEditorOverlay.js b/ui/src/dashboards/reducers/cellEditorOverlay.js index d51d2c503c..01f8692cf5 100644 --- a/ui/src/dashboards/reducers/cellEditorOverlay.js +++ b/ui/src/dashboards/reducers/cellEditorOverlay.js @@ -27,7 +27,10 @@ export const initialState = { export default function cellEditorOverlay(state = initialState, action) { switch (action.type) { case 'SHOW_CELL_EDITOR_OVERLAY': { - const {cell, cell: {colors}} = action.payload + const { + cell, + cell: {colors}, + } = action.payload const thresholdsListType = getThresholdsListType(colors) const thresholdsListColors = validateThresholdsListColors( diff --git a/ui/src/data_explorer/components/QueryEditor.js b/ui/src/data_explorer/components/QueryEditor.js index abc6a4b4dc..220f5b6090 100644 --- a/ui/src/data_explorer/components/QueryEditor.js +++ b/ui/src/data_explorer/components/QueryEditor.js @@ -48,7 +48,9 @@ class QueryEditor extends Component { } render() { - const {config: {status}} = this.props + const { + config: {status}, + } = this.props const {value} = this.state return ( diff --git a/ui/src/data_explorer/components/Visualization.js b/ui/src/data_explorer/components/Visualization.js index 4c07702b9d..b9ddc73545 100644 --- a/ui/src/data_explorer/components/Visualization.js +++ b/ui/src/data_explorer/components/Visualization.js @@ -64,7 +64,11 @@ class Visualization extends Component { errorThrown, } = this.props - const {source: {links: {proxy}}} = this.context + const { + source: { + links: {proxy}, + }, + } = this.context const {view} = this.state const queries = buildQueries(proxy, queryConfigs, timeRange) diff --git a/ui/src/data_explorer/containers/DataExplorer.tsx b/ui/src/data_explorer/containers/DataExplorer.tsx index 3c1e0ca787..57ae430f96 100644 --- a/ui/src/data_explorer/containers/DataExplorer.tsx +++ b/ui/src/data_explorer/containers/DataExplorer.tsx @@ -199,7 +199,9 @@ export class DataExplorer extends PureComponent { const mapStateToProps = state => { const { - app: {persisted: {autoRefresh}}, + app: { + persisted: {autoRefresh}, + }, dataExplorer, dataExplorerQueryConfigs: queryConfigs, timeRange, diff --git a/ui/src/hosts/containers/HostPage.js b/ui/src/hosts/containers/HostPage.js index a0bc77045a..8f81f52bc5 100644 --- a/ui/src/hosts/containers/HostPage.js +++ b/ui/src/hosts/containers/HostPage.js @@ -39,7 +39,9 @@ class HostPage extends Component { const {source, params, location} = this.props // fetching layouts and mappings can be done at the same time - const {data: {layouts}} = await getLayouts() + const { + data: {layouts}, + } = await getLayouts() const hosts = await getAllHosts(source.links.proxy, source.telegraf) const newHosts = await getAppsForHosts( source.links.proxy, @@ -220,7 +222,10 @@ HostPage.propTypes = { } const mapStateToProps = ({ - app: {ephemeral: {inPresentationMode}, persisted: {autoRefresh}}, + app: { + ephemeral: {inPresentationMode}, + persisted: {autoRefresh}, + }, }) => ({ inPresentationMode, autoRefresh, diff --git a/ui/src/hosts/containers/HostsPage.js b/ui/src/hosts/containers/HostsPage.js index e083202bf7..bcc8ae73db 100644 --- a/ui/src/hosts/containers/HostsPage.js +++ b/ui/src/hosts/containers/HostsPage.js @@ -162,7 +162,12 @@ export class HostsPage extends Component { const {func, shape, string, number} = PropTypes const mapStateToProps = state => { - const {app: {persisted: {autoRefresh}}, links} = state + const { + app: { + persisted: {autoRefresh}, + }, + links, + } = state return { links, autoRefresh, diff --git a/ui/src/ifql/components/ExpressionNode.tsx b/ui/src/ifql/components/ExpressionNode.tsx index 68422b3df4..5f6fabe916 100644 --- a/ui/src/ifql/components/ExpressionNode.tsx +++ b/ui/src/ifql/components/ExpressionNode.tsx @@ -11,7 +11,8 @@ interface Props { id: string funcs: Func[] } -// an expression is a group of one or more functions + +// an Expression is a group of one or more functions class ExpressionNode extends PureComponent { public render() { const {id, funcNames, funcs} = this.props diff --git a/ui/src/ifql/components/FuncArgs.tsx b/ui/src/ifql/components/FuncArgs.tsx index 95ecfbd8ac..c8be0ac3c9 100644 --- a/ui/src/ifql/components/FuncArgs.tsx +++ b/ui/src/ifql/components/FuncArgs.tsx @@ -16,10 +16,6 @@ export default class FuncArgs extends PureComponent { public render() { const {expressionID, func, onChangeArg, onGenerateScript} = this.props - if (!func.args) { - debugger - } - return (
{func.args.map(({key, value, type}) => { diff --git a/ui/src/ifql/components/TimeMachine.tsx b/ui/src/ifql/components/TimeMachine.tsx index d8302e1d58..3c8d45ce18 100644 --- a/ui/src/ifql/components/TimeMachine.tsx +++ b/ui/src/ifql/components/TimeMachine.tsx @@ -1,7 +1,6 @@ import React, {PureComponent} from 'react' import BodyBuilder from 'src/ifql/components/BodyBuilder' import TimeMachineEditor from 'src/ifql/components/TimeMachineEditor' -import {IFQLContext} from 'src/ifql/containers/IFQLPage' import { FlatBody, diff --git a/ui/src/ifql/containers/IFQLPage.tsx b/ui/src/ifql/containers/IFQLPage.tsx index af76f8297d..49b9703021 100644 --- a/ui/src/ifql/containers/IFQLPage.tsx +++ b/ui/src/ifql/containers/IFQLPage.tsx @@ -5,7 +5,7 @@ import {connect} from 'react-redux' import TimeMachine from 'src/ifql/components/TimeMachine' import KeyboardShortcuts from 'src/shared/components/KeyboardShortcuts' import {Suggestion, FlatBody} from 'src/types/ifql' -import {InputArg} from 'src/types/ifql' +import {InputArg, Handlers} from 'src/types/ifql' import {bodyNodes} from 'src/ifql/helpers' import {getSuggestions, getAST} from 'src/ifql/apis' @@ -33,7 +33,7 @@ interface State { suggestions: Suggestion[] } -export const IFQLContext = React.createContext(() => {}) +export const IFQLContext = React.createContext() @ErrorHandling export class IFQLPage extends PureComponent { @@ -96,7 +96,7 @@ export class IFQLPage extends PureComponent { ) } - private get handlers() { + private get handlers(): Handlers { return { onAddNode: this.handleAddNode, onChangeArg: this.handleChangeArg, diff --git a/ui/src/kapacitor/actions/view/index.js b/ui/src/kapacitor/actions/view/index.js index 6573671461..a0d9288378 100644 --- a/ui/src/kapacitor/actions/view/index.js +++ b/ui/src/kapacitor/actions/view/index.js @@ -92,7 +92,9 @@ export const loadDefaultRule = () => { export const fetchRules = kapacitor => async dispatch => { try { - const {data: {rules}} = await getRules(kapacitor) + const { + data: {rules}, + } = await getRules(kapacitor) dispatch({type: 'LOAD_RULES', payload: {rules}}) } catch (error) { dispatch(errorThrown(error)) diff --git a/ui/src/kapacitor/components/AlertTabs.js b/ui/src/kapacitor/components/AlertTabs.js index 841cfce388..4e81cc4fd9 100644 --- a/ui/src/kapacitor/components/AlertTabs.js +++ b/ui/src/kapacitor/components/AlertTabs.js @@ -55,7 +55,9 @@ class AlertTabs extends Component { refreshKapacitorConfig = async kapacitor => { try { - const {data: {sections}} = await getKapacitorConfig(kapacitor) + const { + data: {sections}, + } = await getKapacitorConfig(kapacitor) this.setState({configSections: sections}) } catch (error) { this.setState({configSections: null}) @@ -91,7 +93,9 @@ class AlertTabs extends Component { this.refreshKapacitorConfig(this.props.kapacitor) this.props.notify(notifyAlertEndpointSaved(section)) return true - } catch ({data: {error}}) { + } catch ({ + data: {error}, + }) { const errorMsg = _.join(_.drop(_.split(error, ': '), 2), ': ') this.props.notify(notifyAlertEndpointSaveFailed(section, errorMsg)) return false diff --git a/ui/src/kapacitor/components/KapacitorForm.tsx b/ui/src/kapacitor/components/KapacitorForm.tsx index 01f24472ba..3bbbb95a10 100644 --- a/ui/src/kapacitor/components/KapacitorForm.tsx +++ b/ui/src/kapacitor/components/KapacitorForm.tsx @@ -162,7 +162,9 @@ class KapacitorForm extends PureComponent { } private get url(): string { - const {kapacitor: {url}} = this.props + const { + kapacitor: {url}, + } = this.props if (url) { return url } diff --git a/ui/src/kapacitor/components/KapacitorRule.js b/ui/src/kapacitor/components/KapacitorRule.js index 3248f9673e..08892424c4 100644 --- a/ui/src/kapacitor/components/KapacitorRule.js +++ b/ui/src/kapacitor/components/KapacitorRule.js @@ -101,12 +101,18 @@ class KapacitorRule extends Component { } handleAddEvery = frequency => { - const {rule: {id: ruleID}, ruleActions: {addEvery}} = this.props + const { + rule: {id: ruleID}, + ruleActions: {addEvery}, + } = this.props addEvery(ruleID, frequency) } handleRemoveEvery = () => { - const {rule: {id: ruleID}, ruleActions: {removeEvery}} = this.props + const { + rule: {id: ruleID}, + ruleActions: {removeEvery}, + } = this.props removeEvery(ruleID) } diff --git a/ui/src/kapacitor/components/Relative.js b/ui/src/kapacitor/components/Relative.js index fd89960bd4..6b483f01ee 100644 --- a/ui/src/kapacitor/components/Relative.js +++ b/ui/src/kapacitor/components/Relative.js @@ -11,7 +11,9 @@ const operators = mapToItems(RELATIVE_OPERATORS, 'operator') const Relative = ({ onRuleTypeInputChange, onDropdownChange, - rule: {values: {change, shift, operator, value}}, + rule: { + values: {change, shift, operator, value}, + }, }) => (

Send Alert when

diff --git a/ui/src/kapacitor/components/Threshold.js b/ui/src/kapacitor/components/Threshold.js index cc1ecb2946..1c3ba10a3d 100644 --- a/ui/src/kapacitor/components/Threshold.js +++ b/ui/src/kapacitor/components/Threshold.js @@ -17,7 +17,9 @@ const getField = ({fields}) => { } const Threshold = ({ - rule: {values: {operator, value, rangeValue}}, + rule: { + values: {operator, value, rangeValue}, + }, query, onDropdownChange, onRuleTypeInputChange, diff --git a/ui/src/kapacitor/containers/KapacitorPage.tsx b/ui/src/kapacitor/containers/KapacitorPage.tsx index 63de5f327c..54953b6d61 100644 --- a/ui/src/kapacitor/containers/KapacitorPage.tsx +++ b/ui/src/kapacitor/containers/KapacitorPage.tsx @@ -78,7 +78,11 @@ export class KapacitorPage extends PureComponent { } public async componentDidMount() { - const {source, params: {id}, notify} = this.props + const { + source, + params: {id}, + notify, + } = this.props if (!id) { return } diff --git a/ui/src/kapacitor/containers/TickscriptPage.tsx b/ui/src/kapacitor/containers/TickscriptPage.tsx index 723b0429ee..83e54d74cb 100644 --- a/ui/src/kapacitor/containers/TickscriptPage.tsx +++ b/ui/src/kapacitor/containers/TickscriptPage.tsx @@ -201,7 +201,10 @@ export class TickscriptPage extends PureComponent { } private handleExit = () => { - const {source: {id: sourceID}, router} = this.props + const { + source: {id: sourceID}, + router, + } = this.props return router.push(`/sources/${sourceID}/alert-rules`) } diff --git a/ui/src/shared/actions/sources.js b/ui/src/shared/actions/sources.js index 4a3968b34a..f218ae11c3 100644 --- a/ui/src/shared/actions/sources.js +++ b/ui/src/shared/actions/sources.js @@ -73,7 +73,9 @@ export const removeAndLoadSources = source => async dispatch => { } } - const {data: {sources: newSources}} = await getSourcesAJAX() + const { + data: {sources: newSources}, + } = await getSourcesAJAX() dispatch(loadSources(newSources)) } catch (err) { dispatch(notify(notifyServerError())) @@ -107,7 +109,9 @@ export const deleteKapacitorAsync = kapacitor => async dispatch => { export const getSourcesAsync = () => async dispatch => { try { - const {data: {sources}} = await getSourcesAJAX() + const { + data: {sources}, + } = await getSourcesAJAX() dispatch(loadSources(sources)) return sources } catch (error) { diff --git a/ui/src/shared/apis/index.js b/ui/src/shared/apis/index.js index 18ec7d602f..436dea75a0 100644 --- a/ui/src/shared/apis/index.js +++ b/ui/src/shared/apis/index.js @@ -173,11 +173,9 @@ export function updateKapacitorConfigSection(kapacitor, section, properties) { export const testAlertOutput = async (kapacitor, outputName) => { try { - const {data: {services}} = await kapacitorProxy( - kapacitor, - 'GET', - '/kapacitor/v1/service-tests' - ) + const { + data: {services}, + } = await kapacitorProxy(kapacitor, 'GET', '/kapacitor/v1/service-tests') const service = services.find(s => s.name === outputName) return kapacitorProxy(kapacitor, 'POST', service.link.href, {}) } catch (error) { diff --git a/ui/src/shared/components/CustomTimeRangeDropdown.tsx b/ui/src/shared/components/CustomTimeRangeDropdown.tsx index 2031b4b9e8..c32a19cda6 100644 --- a/ui/src/shared/components/CustomTimeRangeDropdown.tsx +++ b/ui/src/shared/components/CustomTimeRangeDropdown.tsx @@ -61,7 +61,9 @@ class CustomTimeRangeDropdown extends PureComponent { } private get upperTimeRange(): string { - const {timeRange: {upper}} = this.props + const { + timeRange: {upper}, + } = this.props if (upper === 'now()') { return moment().format(this.timeFormat) @@ -71,7 +73,9 @@ class CustomTimeRangeDropdown extends PureComponent { } private get lowerTimeRange(): string { - const {timeRange: {lower}} = this.props + const { + timeRange: {lower}, + } = this.props return moment(lower).format(this.timeFormat) } diff --git a/ui/src/shared/components/Dygraph.js b/ui/src/shared/components/Dygraph.js index a495f85d5f..9c69171260 100644 --- a/ui/src/shared/components/Dygraph.js +++ b/ui/src/shared/components/Dygraph.js @@ -101,7 +101,12 @@ class Dygraph extends Component { } componentDidUpdate(prevProps) { - const {labels, axes: {y, y2}, options, isBarGraph} = this.props + const { + labels, + axes: {y, y2}, + options, + isBarGraph, + } = this.props const dygraph = this.dygraph @@ -154,7 +159,11 @@ class Dygraph extends Component { } getYRange = timeSeries => { - const {options, axes: {y}, ruleValues} = this.props + const { + options, + axes: {y}, + ruleValues, + } = this.props if (options.stackedGraph) { return getStackedRange(y.bounds) @@ -224,7 +233,9 @@ class Dygraph extends Component { } get labelWidth() { - const {axes: {y}} = this.props + const { + axes: {y}, + } = this.props return ( LABEL_WIDTH + y.prefix.length * CHAR_PIXELS + diff --git a/ui/src/shared/components/DygraphLegend.tsx b/ui/src/shared/components/DygraphLegend.tsx index 9bf7edae3c..e3f38b4361 100644 --- a/ui/src/shared/components/DygraphLegend.tsx +++ b/ui/src/shared/components/DygraphLegend.tsx @@ -280,7 +280,9 @@ class DygraphLegend extends PureComponent { } private get styles() { - const {dygraph: {graphDiv}} = this.props + const { + dygraph: {graphDiv}, + } = this.props const {pageX} = this.state return makeLegendStyles(graphDiv, this.legendRef, pageX) } diff --git a/ui/src/shared/components/MultiSelectDBDropdown.js b/ui/src/shared/components/MultiSelectDBDropdown.js index 4ac82c5aa7..08d5fbc126 100644 --- a/ui/src/shared/components/MultiSelectDBDropdown.js +++ b/ui/src/shared/components/MultiSelectDBDropdown.js @@ -37,7 +37,11 @@ class MultiSelectDBDropdown extends Component { } _getDbRps = async () => { - const {source: {links: {proxy}}} = this.context + const { + source: { + links: {proxy}, + }, + } = this.context const {onErrorThrown} = this.props try { diff --git a/ui/src/shared/components/Notification.js b/ui/src/shared/components/Notification.js index 62c85ede16..e185e6d53c 100644 --- a/ui/src/shared/components/Notification.js +++ b/ui/src/shared/components/Notification.js @@ -23,7 +23,9 @@ class Notification extends Component { } componentDidMount() { - const {notification: {duration}} = this.props + const { + notification: {duration}, + } = this.props this.updateHeight() @@ -46,7 +48,10 @@ class Notification extends Component { } handleDismiss = () => { - const {notification: {id}, dismissNotification} = this.props + const { + notification: {id}, + dismissNotification, + } = this.props this.setState({dismissed: true}) this.deleteTimer = setTimeout( @@ -61,7 +66,9 @@ class Notification extends Component { } render() { - const {notification: {type, message, icon}} = this.props + const { + notification: {type, message, icon}, + } = this.props const {height, dismissed} = this.state const notificationContainerClass = classnames('notification-container', { diff --git a/ui/src/shared/components/Notifications.js b/ui/src/shared/components/Notifications.js index 8d20a00eac..f08bec6245 100644 --- a/ui/src/shared/components/Notifications.js +++ b/ui/src/shared/components/Notifications.js @@ -33,7 +33,9 @@ Notifications.propTypes = { const mapStateToProps = ({ notifications, - app: {ephemeral: {inPresentationMode}}, + app: { + ephemeral: {inPresentationMode}, + }, }) => ({ notifications, inPresentationMode, diff --git a/ui/src/shared/components/TableGraph.js b/ui/src/shared/components/TableGraph.js index 9a1db53e48..8ec929f07b 100644 --- a/ui/src/shared/components/TableGraph.js +++ b/ui/src/shared/components/TableGraph.js @@ -135,7 +135,10 @@ class TableGraph extends Component { } handleHover = (columnIndex, rowIndex) => () => { - const {handleSetHoverTime, tableOptions: {verticalTimeAxis}} = this.props + const { + handleSetHoverTime, + tableOptions: {verticalTimeAxis}, + } = this.props const {sortedTimeVals} = this.state if (verticalTimeAxis && rowIndex === 0) { return @@ -193,7 +196,9 @@ class TableGraph extends Component { calculateColumnWidth = columnSizerWidth => column => { const {index} = column - const {tableOptions: {fixFirstColumn}} = this.props + const { + tableOptions: {fixFirstColumn}, + } = this.props const {processedData, columnWidths, totalColumnWidths} = this.state const columnCount = _.get(processedData, ['0', 'length'], 0) const columnLabel = processedData[0][index] diff --git a/ui/src/shared/middleware/errors.js b/ui/src/shared/middleware/errors.js index ee1fd5f72e..3dbc4c22be 100644 --- a/ui/src/shared/middleware/errors.js +++ b/ui/src/shared/middleware/errors.js @@ -23,10 +23,17 @@ const notificationsBlackoutDuration = 5000 let allowNotifications = true // eslint-disable-line const errorsMiddleware = store => next => action => { - const {auth: {me}} = store.getState() + const { + auth: {me}, + } = store.getState() if (action.type === 'ERROR_THROWN') { - const {error, error: {status, auth}, altText, alertType = 'info'} = action + const { + error, + error: {status, auth}, + altText, + alertType = 'info', + } = action if (status === HTTP_FORBIDDEN) { const message = _.get(error, 'data.message', '') diff --git a/ui/src/shared/parsing/parseHandlersFromConfig.js b/ui/src/shared/parsing/parseHandlersFromConfig.js index 48b14be43e..cb72415e46 100644 --- a/ui/src/shared/parsing/parseHandlersFromConfig.js +++ b/ui/src/shared/parsing/parseHandlersFromConfig.js @@ -6,7 +6,9 @@ import { } from 'src/kapacitor/constants' const parseHandlersFromConfig = config => { - const {data: {sections}} = config + const { + data: {sections}, + } = config const allHandlers = _.map(sections, (v, k) => { const fromConfig = _.get(v, ['elements', '0', 'options'], {}) diff --git a/ui/src/shared/reducers/auth.js b/ui/src/shared/reducers/auth.js index 4bb1281181..35fd5c2e59 100644 --- a/ui/src/shared/reducers/auth.js +++ b/ui/src/shared/reducers/auth.js @@ -43,7 +43,9 @@ const logoutLinkReceived = (state, {logoutLink}, isUsingAuth) => ({ const authReducer = (state = initialState, action) => { switch (action.type) { case 'AUTH_EXPIRED': { - const {auth: {links}} = action.payload + const { + auth: {links}, + } = action.payload return {...initialState, links} } case 'AUTH_REQUESTED': { diff --git a/ui/src/side_nav/components/UserNavBlock.js b/ui/src/side_nav/components/UserNavBlock.js index 274674437b..631607a967 100644 --- a/ui/src/side_nav/components/UserNavBlock.js +++ b/ui/src/side_nav/components/UserNavBlock.js @@ -24,7 +24,9 @@ class UserNavBlock extends Component { render() { const { logoutLink, - links: {external: {custom: customLinks}}, + links: { + external: {custom: customLinks}, + }, me, me: {currentOrganization, organizations, roles}, me: {role}, diff --git a/ui/src/side_nav/containers/SideNav.tsx b/ui/src/side_nav/containers/SideNav.tsx index dc17ddbb07..1e62e61603 100644 --- a/ui/src/side_nav/containers/SideNav.tsx +++ b/ui/src/side_nav/containers/SideNav.tsx @@ -153,7 +153,9 @@ class SideNav extends PureComponent { const mapStateToProps = ({ auth: {isUsingAuth, logoutLink, me}, - app: {ephemeral: {inPresentationMode}}, + app: { + ephemeral: {inPresentationMode}, + }, links, }) => ({ isHidden: inPresentationMode, diff --git a/ui/src/status/components/NewsFeed.js b/ui/src/status/components/NewsFeed.js index e2dbb325f1..8aa84fb77f 100644 --- a/ui/src/status/components/NewsFeed.js +++ b/ui/src/status/components/NewsFeed.js @@ -73,7 +73,9 @@ NewsFeed.propTypes = { } const mapStateToProps = ({ - links: {external: {statusFeed: statusFeedURL}}, + links: { + external: {statusFeed: statusFeedURL}, + }, JSONFeed: {hasCompletedFetchOnce, isFetching, isFailed, data}, }) => ({ hasCompletedFetchOnce, diff --git a/ui/src/types/ifql.ts b/ui/src/types/ifql.ts index 5de7708fa8..41d0cff52f 100644 --- a/ui/src/types/ifql.ts +++ b/ui/src/types/ifql.ts @@ -1,7 +1,23 @@ // function definitions -export type OnDeleteFuncNode = (funcID: string, expressionID: string) => void -export type OnChangeArg = (inputArg: InputArg) => void -export type OnAddNode = (expressionID: string, funcName: string) => void +type noop = () => void +export type OnDeleteFuncNode = ( + funcID: string, + expressionID: string +) => void | noop +export type OnChangeArg = (inputArg: InputArg) => void | noop +export type OnAddNode = (expressionID: string, funcName: string) => void | noop +export type OnGenerateScript = (script: string) => void | noop +export type OnChangeScript = (script: string) => void | noop + +export interface Handlers { + onAddNode: OnAddNode + onChangeArg: OnChangeArg + onSubmitScript: () => void + onChangeScript: OnChangeScript + onDeleteFuncNode: OnDeleteFuncNode + onGenerateScript: OnGenerateScript +} + export interface InputArg { funcID: string expressionID: string @@ -9,7 +25,6 @@ export interface InputArg { value: string | boolean generate?: boolean } - // Flattened AST export interface FlatBody { type: string diff --git a/ui/yarn.lock b/ui/yarn.lock index c5cb293228..aa367c686a 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -3,22 +3,22 @@ "@babel/code-frame@^7.0.0-beta.35": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz#e0d002100805daab1461c0fcb32a07e304f3a4f4" dependencies: - "@babel/highlight" "7.0.0-beta.44" + "@babel/highlight" "7.0.0-beta.46" -"@babel/highlight@7.0.0-beta.44": - version "7.0.0-beta.44" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" +"@babel/highlight@7.0.0-beta.46": + version "7.0.0-beta.46" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.46.tgz#c553c51e65f572bdedd6eff66fc0bb563016645e" dependencies: chalk "^2.0.0" esutils "^2.0.2" js-tokens "^3.0.0" "@types/chai@^4.1.2": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.2.tgz#f1af664769cfb50af805431c407425ed619daa21" + version "4.1.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.3.tgz#b8a74352977a23b604c01aa784f5b793443fb7dc" "@types/cheerio@*": version "0.22.7" @@ -31,8 +31,8 @@ "@types/google.visualization" "*" "@types/enzyme@^3.1.9": - version "3.1.9" - resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.1.9.tgz#fbd97f3beb7cad76fc9c6f04c97d77f4834522ef" + version "3.1.10" + resolved "https://registry.yarnpkg.com/@types/enzyme/-/enzyme-3.1.10.tgz#28108a9864e65699751469551a803a35d2e26160" dependencies: "@types/cheerio" "*" "@types/react" "*" @@ -50,12 +50,12 @@ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-22.2.3.tgz#0157c0316dc3722c43a7b71de3fdf3acbccef10d" "@types/lodash@^4.14.104": - version "4.14.106" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.106.tgz#6093e9a02aa567ddecfe9afadca89e53e5dce4dd" + version "4.14.107" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.107.tgz#b2d2ae3958bfb8ff828495cbe12214af9e4d035e" "@types/node@*", "@types/node@^9.4.6": - version "9.6.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.4.tgz#0ef7b4cfc3499881c81e0ea1ce61a23f6f4f5b42" + version "9.6.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-9.6.6.tgz#439b91f9caf3983cad2eef1e11f6bedcbf9431d2" "@types/prop-types@^15.5.2": version "15.5.2" @@ -80,13 +80,7 @@ "@types/history" "^3" "@types/react" "*" -"@types/react@*": - version "16.3.9" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.3.9.tgz#15be16b53c89aac558cf6445774502b2792555ff" - dependencies: - csstype "^2.2.0" - -"@types/react@^16.0.38": +"@types/react@*", "@types/react@^16.0.38": version "16.3.12" resolved "https://registry.yarnpkg.com/@types/react/-/react-16.3.12.tgz#68d9146f3e9797e38ffbf22f7ed1dde91a2cfd2e" dependencies: @@ -175,7 +169,7 @@ ajv-keywords@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" -ajv@^4.7.0, ajv@^4.9.1: +ajv@^4.7.0: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: @@ -513,7 +507,7 @@ babel-core@^6.0.0, babel-core@^6.26.0, babel-core@^6.5.1: babel-eslint@6.1.2: version "6.1.2" - resolved "http://registry.npmjs.org/babel-eslint/-/babel-eslint-6.1.2.tgz#5293419fe3672d66598d327da9694567ba6a5f2f" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-6.1.2.tgz#5293419fe3672d66598d327da9694567ba6a5f2f" dependencies: babel-traverse "^6.0.20" babel-types "^6.0.19" @@ -1262,8 +1256,8 @@ base62@^1.1.0: resolved "https://registry.yarnpkg.com/base62/-/base62-1.2.8.tgz#1264cb0fb848d875792877479dbe8bae6bae3428" base64-js@^1.0.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" + version "1.3.0" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" base@^0.11.1: version "0.11.2" @@ -1619,12 +1613,12 @@ caniuse-api@^1.5.2: lodash.uniq "^4.5.0" caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30000827" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000827.tgz#bd2839dd196093b44c28c17f93513140c9d92588" + version "1.0.30000830" + resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000830.tgz#6e45255b345649fd15ff59072da1e12bb3de2f13" caniuse-lite@^1.0.30000792: - version "1.0.30000827" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000827.tgz#2dad2354e4810c3c9bb1cfc57f655c270c25fa52" + version "1.0.30000830" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000830.tgz#cb96b8a2dd3cbfe04acea2af3c4e894249095328" caseless@~0.11.0: version "0.11.0" @@ -1662,8 +1656,8 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: supports-color "^2.0.0" chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" + version "2.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.0.tgz#a060a297a6b57e15b61ca63ce84995daa0fe6e52" dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" @@ -1802,8 +1796,8 @@ cliui@^3.2.0: wrap-ansi "^2.0.0" cliui@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -1836,9 +1830,9 @@ code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" -codemirror@^5.36.0: - version "5.36.0" - resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.36.0.tgz#1172ad9dc298056c06e0b34e5ccd23825ca15b40" +codemirror@^5.18.2, codemirror@^5.36.0: + version "5.37.0" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.37.0.tgz#c349b584e158f590277f26d37c2469a6bc538036" collection-visit@^1.0.0: version "1.0.0" @@ -2395,7 +2389,7 @@ debug@2.6.8: dependencies: ms "2.0.0" -debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8: +debug@2.6.9, debug@^2.1.1, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -2704,8 +2698,8 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" ejs@^2.5.7: - version "2.5.8" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.8.tgz#2ab6954619f225e6193b7ac5f7c39c48fefe4380" + version "2.5.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.9.tgz#7ba254582a560d267437109a68354112475b0ce5" electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.30: version "1.3.42" @@ -2940,8 +2934,8 @@ eslint-plugin-babel@^4.1.2: resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz#79202a0e35757dd92780919b2336f1fa2fe53c1e" eslint-plugin-jest@^21.12.2: - version "21.15.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.15.0.tgz#645a3f560d3e61d99611b215adc80b4f31e6d896" + version "21.15.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-21.15.1.tgz#662a3f0888002878f0f388efd09c190a95c33d82" eslint-plugin-prettier@^2.2.0, eslint-plugin-prettier@^2.6.0: version "2.6.0" @@ -3122,9 +3116,9 @@ event-emitter@~0.3.5: d "1" es5-ext "~0.10.14" -eventemitter3@1.x.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" +eventemitter3@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.0.1.tgz#4ce66c3fc5b5a6b9f2245e359e1938f1ab10f960" events@^1.0.0: version "1.1.1" @@ -3494,6 +3488,12 @@ follow-redirects@0.0.7: debug "^2.2.0" stream-consume "^0.1.0" +follow-redirects@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.1.tgz#d8120f4518190f55aac65bb6fc7b85fcd666d6aa" + dependencies: + debug "^3.1.0" + for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -3591,6 +3591,12 @@ fs-extra@^0.24.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + fs-promise@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/fs-promise/-/fs-promise-0.3.1.tgz#bf34050368f24d6dc9dfc6688ab5cead8f86842a" @@ -3611,21 +3617,13 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0, fsevents@^1.1.1, fsevents@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" + version "1.2.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.2.tgz#4f598f0f69b273188ef4a62ca4e9e08ace314bbf" dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.39" + nan "^2.9.2" + node-pre-gyp "^0.9.0" -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: +fstream@^1.0.0, fstream@^1.0.2: version "1.0.11" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" dependencies: @@ -3862,10 +3860,6 @@ hanson@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/hanson/-/hanson-1.2.0.tgz#2d198d5ca03ebccdcaeb7c9d9c492e18405be002" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" @@ -3879,13 +3873,6 @@ har-validator@~2.0.6: is-my-json-valid "^2.12.4" pinkie-promise "^2.0.0" -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -3958,12 +3945,6 @@ has@^1.0.1: dependencies: function-bind "^1.0.2" -hash-base@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" - dependencies: - inherits "^2.0.1" - hash-base@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" @@ -3978,7 +3959,7 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.0" -hawk@3.1.3, hawk@~3.1.3: +hawk@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" dependencies: @@ -4068,8 +4049,8 @@ html-entities@^1.2.0: resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" html-minifier@^3.2.3: - version "3.5.14" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.14.tgz#88653b24b344274e3e3d7052f1541ebea054ac60" + version "3.5.15" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.15.tgz#f869848d4543cbfd84f26d5514a2a87cbf9a05e0" dependencies: camel-case "3.0.x" clean-css "4.1.x" @@ -4154,11 +4135,12 @@ http-proxy-middleware@~0.17.4: micromatch "^2.3.11" http-proxy@^1.16.2: - version "1.16.2" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" + version "1.17.0" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" dependencies: - eventemitter3 "1.x.x" - requires-port "1.x.x" + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" http-signature@~1.1.0: version "1.1.1" @@ -4184,7 +4166,7 @@ iconv-lite@0.4.19: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -iconv-lite@^0.4.17, iconv-lite@^0.4.5, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13: version "0.4.21" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.21.tgz#c47f8733d02171189ebc4a400f3218d348094798" dependencies: @@ -4202,6 +4184,12 @@ iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + ignore@^3.2.0, ignore@^3.3.3: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" @@ -5030,8 +5018,8 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jsdom@^11.5.1: - version "11.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.7.0.tgz#8b45b657dae90d6d2d3a5f5d1126bb7102d0a172" + version "11.9.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.9.0.tgz#58ac6dfd248d560d736b0202d74eedad55590cd9" dependencies: abab "^1.0.4" acorn "^5.3.0" @@ -5360,6 +5348,10 @@ lodash.create@3.1.1: lodash._basecreate "^3.0.0" lodash._isiterateecall "^3.0.0" +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + lodash.deburr@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-3.2.0.tgz#6da8f54334a366a7cf4c4c76ef8d80aa1b365ed5" @@ -5397,7 +5389,7 @@ lodash.isempty@4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" -lodash.isequal@^4.0.0: +lodash.isequal@^4.0.0, lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -5675,7 +5667,7 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: +"minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: @@ -5693,6 +5685,19 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" +minipass@^2.2.1, minipass@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.2.4.tgz#03c824d84551ec38a8d1bb5bc350a5a30a354a40" + dependencies: + safe-buffer "^5.1.1" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + mississippi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" @@ -5745,8 +5750,8 @@ mocha@3.5.0: supports-color "3.1.2" moment@^2.13.0, moment@^2.8.2: - version "2.22.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.0.tgz#7921ade01017dd45186e7fee5f424f0b8663a730" + version "2.22.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.22.1.tgz#529a2e9bf973f259c9643d237fda84de3a26e8ad" move-concurrently@^1.0.1: version "1.0.1" @@ -5782,7 +5787,7 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@^2.10.0, nan@^2.3.0: +nan@^2.10.0, nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -5824,6 +5829,14 @@ nearley@^2.7.10: randexp "0.4.6" semver "^5.4.1" +needle@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.0.tgz#f14efc69cee1024b72c8b21c7bdf94a731dc12fa" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -5912,21 +5925,20 @@ node-notifier@^5.2.1: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@^0.6.39: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" +node-pre-gyp@^0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.9.1.tgz#f11c07516dd92f87199dbc7e1838eab7cd56c9e0" dependencies: detect-libc "^1.0.2" - hawk "3.1.3" mkdirp "^0.5.1" + needle "^2.2.0" nopt "^4.0.1" + npm-packlist "^1.1.6" npmlog "^4.0.2" rc "^1.1.7" - request "2.81.0" rimraf "^2.6.1" semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" + tar "^4" node-sass@^4.5.3: version "4.8.3" @@ -6000,6 +6012,17 @@ normalize-url@^1.4.0: query-string "^4.1.0" sort-keys "^1.0.0" +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -6144,7 +6167,7 @@ on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -6382,8 +6405,8 @@ path-type@^2.0.0: pify "^2.0.0" pbkdf2@^3.0.3: - version "3.0.14" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + version "3.0.16" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.16.tgz#7404208ec6b01b62d85bf83853a8064f8d9c2a5c" dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -6391,10 +6414,6 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -6881,8 +6900,8 @@ preserve@^0.2.0: resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" prettier@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.11.1.tgz#61e43fc4cd44e68f2b0dfc2c38cd4bb0fccdcc75" + version "1.12.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325" pretty-error@^2.0.2: version "2.1.1" @@ -7006,10 +7025,6 @@ qs@~6.3.0: version "6.3.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - query-string@^4.1.0, query-string@^4.2.2: version "4.3.4" resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" @@ -7037,9 +7052,9 @@ querystringify@0.0.x: version "0.0.4" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c" -querystringify@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-1.0.0.tgz#6286242112c5b712fa654e526652bf6a13ff05cb" +querystringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.0.0.tgz#fa3ed6e68eb15159457c89b37bc6472833195755" raf@^3.1.0, raf@^3.4.0: version "3.4.0" @@ -7108,8 +7123,19 @@ react-addons-shallow-compare@^15.0.2: object-assign "^4.1.0" react-codemirror2@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/react-codemirror2/-/react-codemirror2-4.2.1.tgz#4ad3c5c60ebbcb34880f961721b51527324ec021" + version "4.3.0" + resolved "https://registry.yarnpkg.com/react-codemirror2/-/react-codemirror2-4.3.0.tgz#e79aedca4da60d22402d2cd74f2885a3e5c009fd" + +react-codemirror@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/react-codemirror/-/react-codemirror-1.0.0.tgz#91467b53b1f5d80d916a2fd0b4c7adb85a9001ba" + dependencies: + classnames "^2.2.5" + codemirror "^5.18.2" + create-react-class "^15.5.1" + lodash.debounce "^4.0.8" + lodash.isequal "^4.5.0" + prop-types "^15.5.4" react-custom-scrollbars@^4.1.1: version "4.2.1" @@ -7286,7 +7312,7 @@ read-pkg@^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.4, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" dependencies: @@ -7527,33 +7553,6 @@ request@2, request@^2.79.0, request@^2.83.0: tunnel-agent "^0.6.0" uuid "^3.1.0" -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - request@~2.79.0: version "2.79.0" resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" @@ -7598,7 +7597,7 @@ require-uncached@^1.0.2, require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" -requires-port@1.0.x, requires-port@1.x.x, requires-port@~1.0.0: +requires-port@1.0.x, requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -7639,8 +7638,8 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.5.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.0.tgz#2bdf5374811207285df0df652b78f118ab8f3c5e" + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" dependencies: path-parse "^1.0.5" @@ -7683,17 +7682,17 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: +rimraf@2, rimraf@^2.2.8, rimraf@^2.4.4, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" dependencies: - hash-base "^2.0.0" + hash-base "^3.0.0" inherits "^2.0.1" rome@^2.1.22: @@ -7864,8 +7863,8 @@ send@0.16.2: statuses "~1.4.0" serialize-javascript@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" + version "1.5.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.5.0.tgz#1aa336162c88a890ddad5384baebc93a655161fe" serve-index@^1.7.2: version "1.9.1" @@ -8385,8 +8384,8 @@ supports-color@^4.2.1: has-flag "^2.0.0" supports-color@^5.1.0, supports-color@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.3.0.tgz#5b24ac15db80fa927cf5227a4a33fd3c4c7676c0" + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" dependencies: has-flag "^3.0.0" @@ -8436,20 +8435,7 @@ tapable@^0.2.7: version "0.2.8" resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.0.0, tar@^2.2.1: +tar@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" dependencies: @@ -8457,6 +8443,18 @@ tar@^2.0.0, tar@^2.2.1: fstream "^1.0.2" inherits "2" +tar@^4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.1.tgz#b25d5a8470c976fd7a9a8a350f42c59e9fa81749" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.2.4" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.1" + yallist "^3.0.2" + tcomb@^2.5.1: version "2.7.0" resolved "https://registry.yarnpkg.com/tcomb/-/tcomb-2.7.0.tgz#10d62958041669a5d53567b9a4ee8cde22b1c2b0" @@ -8511,8 +8509,8 @@ time-stamp@^2.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357" timers-browserify@^2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" + version "2.0.10" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae" dependencies: setimmediate "^1.0.4" @@ -8582,7 +8580,7 @@ tough-cookie@>=2.3.3, tough-cookie@^2.3.2, tough-cookie@^2.3.3, tough-cookie@~2. dependencies: punycode "^1.4.1" -tr46@^1.0.0: +tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" dependencies: @@ -8615,8 +8613,8 @@ tryer@^1.0.0: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.0.tgz#027b69fa823225e551cace3ef03b11f6ab37c1d7" ts-jest@^22.4.1: - version "22.4.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-22.4.2.tgz#2137bc0899b14dfb1d58257ee10b18ab8a2d92c5" + version "22.4.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-22.4.4.tgz#7b5c0abb2188fe7170840df9f80e78659aaf8a24" dependencies: babel-core "^6.26.0" babel-plugin-istanbul "^4.1.4" @@ -8643,8 +8641,8 @@ tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" tslint-config-prettier@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.10.0.tgz#5063c413d43de4f6988c73727f65ecfc239054ec" + version "1.12.0" + resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.12.0.tgz#bc8504f286ecf42b906f3d1126a093114f5729cc" tslint-loader@^3.6.0: version "3.6.0" @@ -8728,8 +8726,8 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" typescript@^2.7.2: - version "2.8.1" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.1.tgz#6160e4f8f195d5ba81d4876f9c0cc1fbc0820624" + version "2.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170" ua-parser-js@^0.7.9: version "0.7.17" @@ -8743,8 +8741,8 @@ uglify-es@^3.3.4: source-map "~0.6.1" uglify-js@3.3.x: - version "3.3.20" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.20.tgz#dc8bdee7d454c7d31dddc36f922d170bfcee3a0a" + version "3.3.22" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.22.tgz#e5f0e50ddd386b7e35b728b51600bf7a7ad0b0dc" dependencies: commander "~2.15.0" source-map "~0.6.1" @@ -8771,8 +8769,8 @@ uglifyjs-webpack-plugin@^0.4.6: webpack-sources "^1.0.1" uglifyjs-webpack-plugin@^1.2.2: - version "1.2.4" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.4.tgz#5eec941b2e9b8538be0a20fc6eda25b14c7c1043" + version "1.2.5" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.5.tgz#2ef8387c8f1a903ec5e44fa36f9f3cbdcea67641" dependencies: cacache "^10.0.4" find-cache-dir "^1.0.0" @@ -8783,10 +8781,6 @@ uglifyjs-webpack-plugin@^1.2.2: webpack-sources "^1.1.0" worker-farm "^1.5.2" -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - underscore@~1.4.4: version "1.4.4" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" @@ -8871,11 +8865,11 @@ url-parse@1.0.x: requires-port "1.0.x" url-parse@^1.1.8: - version "1.3.0" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.3.0.tgz#04a06c420d22beb9804f7ada2d57ad13160a4258" + version "1.4.0" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.0.tgz#6bfdaad60098c7fe06f623e42b22de62de0d3d75" dependencies: - querystringify "~1.0.0" - requires-port "~1.0.0" + querystringify "^2.0.0" + requires-port "^1.0.0" url@^0.11.0: version "0.11.0" @@ -8941,8 +8935,8 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" vendors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22" + version "1.0.2" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801" verror@1.10.0: version "1.10.0" @@ -9007,7 +9001,7 @@ webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" -webidl-conversions@^4.0.0, webidl-conversions@^4.0.1, webidl-conversions@^4.0.2: +webidl-conversions@^4.0.0, webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -9137,12 +9131,12 @@ whatwg-url@^4.3.0: webidl-conversions "^3.0.0" whatwg-url@^6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.0.tgz#08fdf2b9e872783a7a1f6216260a1d66cc722e08" + version "6.4.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.1.tgz#fdb94b440fd4ad836202c16e9737d511f012fd67" dependencies: lodash.sortby "^4.7.0" - tr46 "^1.0.0" - webidl-conversions "^4.0.1" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" whet.extend@~0.9.9: version "0.9.9" @@ -9253,6 +9247,10 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + yargs-parser@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"