From 9e3714758fa96f6f3722520a8c7820c45a7e3521 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Fri, 2 Mar 2018 21:31:44 +0000 Subject: [PATCH] [WIP] Improves (#245) --- .circleci/config.yml | 2 +- __tests__/__snapshots__/RoomItem.js.snap | 54 +- .../__snapshots__/Storyshots.test.js.snap | 99 +- android/gradle.properties | 2 +- app/animations/fade.js | 8 +- app/containers/EmojiPicker/EmojiCategory.js | 7 +- app/containers/EmojiPicker/index.js | 15 +- app/containers/MessageBox/index.js | 30 +- app/containers/Routes.js | 7 +- app/containers/Sidebar.js | 14 +- app/containers/message/index.js | 24 +- app/containers/routes/NavigationService.js | 5 +- app/lib/rocketchat.js | 18 +- app/utils/debounce.js | 6 +- app/views/ForgotPasswordView.js | 2 +- app/views/ListServerView.js | 17 +- app/views/LoginView.js | 8 +- app/views/RoomView/Header/index.js | 4 +- app/views/RoomView/ListView.js | 82 +- app/views/RoomView/ReactionPicker.js | 7 +- app/views/RoomView/index.js | 8 +- app/views/RoomsListView/Header/index.js | 3 +- app/views/RoomsListView/index.js | 146 +- package-lock.json | 1823 +++++++++-------- package.json | 17 +- yarn.lock | 1163 ++++++----- 26 files changed, 1766 insertions(+), 1805 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 927bbc008..2882058f2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -119,7 +119,7 @@ jobs: ios-build: macos: - xcode: "8.3.3" + xcode: "9.0" environment: BASH_ENV: "~/.nvm/nvm.sh" diff --git a/__tests__/__snapshots__/RoomItem.js.snap b/__tests__/__snapshots__/RoomItem.js.snap index dbbdb23c1..81cea847b 100644 --- a/__tests__/__snapshots__/RoomItem.js.snap +++ b/__tests__/__snapshots__/RoomItem.js.snap @@ -18,14 +18,7 @@ exports[`render channel 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -185,14 +178,7 @@ exports[`render no icon 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -352,14 +338,7 @@ exports[`render private group 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -520,14 +499,7 @@ exports[`render unread +999 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -721,14 +693,7 @@ exports[`render unread 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -922,14 +887,7 @@ exports[`renders correctly 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 6c77fd294..86e9a4e19 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -170,14 +170,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -343,14 +336,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -520,14 +506,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -716,14 +695,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -916,14 +888,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -1112,14 +1077,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -1308,14 +1266,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -1504,14 +1455,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -1700,14 +1644,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -1873,14 +1810,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > @@ -2046,14 +1976,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = ` onResponderTerminate={[Function]} onResponderTerminationRequest={[Function]} onStartShouldSetResponder={[Function]} - style={ - Array [ - Object { - "backgroundColor": "transparent", - }, - undefined, - ] - } + style={null} testID={undefined} tvParallaxProperties={undefined} > diff --git a/android/gradle.properties b/android/gradle.properties index 55422fd77..d94d12020 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -17,4 +17,4 @@ # org.gradle.parallel=true android.useDeprecatedNdk=true -# VERSIONCODE=999999999 +VERSIONCODE=999999999 diff --git a/app/animations/fade.js b/app/animations/fade.js index 36da8da33..b9657e494 100644 --- a/app/animations/fade.js +++ b/app/animations/fade.js @@ -19,10 +19,6 @@ export default class Fade extends React.Component { }; } - componentWillMount() { - this._visibility = new Animated.Value(this.props.visible ? 1 : 0); - } - componentWillReceiveProps(nextProps) { if (nextProps.visible) { this.setState({ visible: true }); @@ -36,6 +32,10 @@ export default class Fade extends React.Component { }); } + UNSAFE_componentWillMount() { + this._visibility = new Animated.Value(this.props.visible ? 1 : 0); + } + render() { const { style, children, ...rest } = this.props; diff --git a/app/containers/EmojiPicker/EmojiCategory.js b/app/containers/EmojiPicker/EmojiCategory.js index 09e15fde3..5643e0570 100644 --- a/app/containers/EmojiPicker/EmojiCategory.js +++ b/app/containers/EmojiPicker/EmojiCategory.js @@ -38,14 +38,15 @@ export default class EmojiCategory extends React.Component { this.size = Math.min(this.props.width || width, height) / (this.props.emojisPerRow || emojisPerRow); this.emojis = []; } - componentWillMount() { - this.emojis = this.props.emojis; - } shouldComponentUpdate() { return false; } + UNSAFE_componentWillMount() { + this.emojis = this.props.emojis; + } + renderItem(emoji, size) { return ( this.setState({ show: true })); } @@ -69,6 +63,14 @@ export default class EmojiPicker extends Component { this.props.onEmojiSelected(emojify(shortname, { output: 'unicode' }), shortname); } } + + UNSAFE_componentWillMount() { + this.frequentlyUsed.addListener(this.updateFrequentlyUsed); + this.customEmojis.addListener(this.updateCustomEmojis); + this.updateFrequentlyUsed(); + this.updateCustomEmojis(); + } + _addFrequentlyUsed = (emoji) => { database.write(() => { database.create('frequentlyUsedEmoji', emoji, true); @@ -123,7 +125,6 @@ export default class EmojiPicker extends Component { } contentProps={scrollProps} - // prerenderingSiblingsNumber={1} > { categories.tabs.map((tab, i) => ( diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index d9811895b..45886561f 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -195,22 +195,20 @@ export default class MessageBox extends React.PureComponent { this.setState({ text: '' }); this.closeEmoji(); this.stopTrackingMention(); - requestAnimationFrame(() => { - this.props.typing(false); - if (message.trim() === '') { - return; - } - // if is editing a message - const { editing } = this.props; - if (editing) { - const { _id, rid } = this.props.message; - this.props.editRequest({ _id, msg: message, rid }); - } else { - // if is submiting a new message - this.props.onSubmit(message); - } - this.props.clearInput(); - }); + this.props.typing(false); + if (message.trim() === '') { + return; + } + // if is editing a message + const { editing } = this.props; + if (editing) { + const { _id, rid } = this.props.message; + this.props.editRequest({ _id, msg: message, rid }); + } else { + // if is submiting a new message + this.props.onSubmit(message); + } + this.props.clearInput(); } _getFixedMentions(keyword) { diff --git a/app/containers/Routes.js b/app/containers/Routes.js index 11dc773fb..067327970 100644 --- a/app/containers/Routes.js +++ b/app/containers/Routes.js @@ -26,14 +26,11 @@ export default class Routes extends React.Component { appInit: PropTypes.func.isRequired } - componentWillMount() { - return !this.props.app.ready && this.props.appInit(); - } - componentDidMount() { if (this.props.app.ready) { - SplashScreen.hide(); + return SplashScreen.hide(); } + this.props.appInit(); } componentWillReceiveProps(nextProps) { diff --git a/app/containers/Sidebar.js b/app/containers/Sidebar.js index ae76794f8..186a0af32 100644 --- a/app/containers/Sidebar.js +++ b/app/containers/Sidebar.js @@ -35,7 +35,7 @@ const styles = StyleSheet.create({ backgroundColor: '#eeeeee' } }); - +const keyExtractor = item => item.id; @connect(state => ({ server: state.server.server }), dispatch => ({ @@ -52,11 +52,6 @@ export default class Sidebar extends Component { gotoAddServer: PropTypes.func.isRequired } - componentWillMount() { - database.databases.serversDB.addListener('change', this.updateState); - this.setState(this.getState()); - } - componentWillUnmount() { database.databases.serversDB.removeListener('change', this.updateState); } @@ -77,6 +72,11 @@ export default class Sidebar extends Component { servers: database.databases.serversDB.objects('servers') }) + UNSAFE_componentWillMount() { + database.databases.serversDB.addListener('change', this.updateState); + this.setState(this.getState()); + } + updateState = () => { this.setState(this.getState()); } @@ -103,7 +103,7 @@ export default class Sidebar extends Component { item.id} + keyExtractor={keyExtractor} /> { this.props.logout(); }} diff --git a/app/containers/message/index.js b/app/containers/message/index.js index 7e95216b7..d58bbb805 100644 --- a/app/containers/message/index.js +++ b/app/containers/message/index.js @@ -4,7 +4,7 @@ import { View, TouchableHighlight, Text, TouchableOpacity, Vibration, ViewPropTy import { connect } from 'react-redux'; import Icon from 'react-native-vector-icons/MaterialIcons'; import moment from 'moment'; -// import equal from 'deep-equal'; +import equal from 'deep-equal'; import { KeyboardUtils } from 'react-native-keyboard-input'; import { actionsShow, errorActionsShow, toggleReactionPicker } from '../../actions/messages'; @@ -32,6 +32,7 @@ import styles from './styles'; })) export default class Message extends React.Component { static propTypes = { + status: PropTypes.any, item: PropTypes.object.isRequired, reactions: PropTypes.any.isRequired, baseUrl: PropTypes.string.isRequired, @@ -44,7 +45,8 @@ export default class Message extends React.Component { toggleReactionPicker: PropTypes.func, onReactionPress: PropTypes.func, style: ViewPropTypes.style, - onLongPress: PropTypes.func + onLongPress: PropTypes.func, + _updatedAt: PropTypes.instanceOf(Date) } constructor(props) { @@ -53,15 +55,15 @@ export default class Message extends React.Component { this.onClose = this.onClose.bind(this); } - // shouldComponentUpdate(nextProps, nextState) { - // if (!equal(this.props.reactions, nextProps.reactions)) { - // return true; - // } - // if (this.state.reactionsModal !== nextState.reactionsModal) { - // return true; - // } - // return this.props.item._updatedAt.toGMTString() !== nextProps.item._updatedAt.toGMTString() || this.props.item.status !== nextProps.item.status; - // } + shouldComponentUpdate(nextProps, nextState) { + if (!equal(this.props.reactions, nextProps.reactions)) { + return true; + } + if (this.state.reactionsModal !== nextState.reactionsModal) { + return true; + } + return this.props._updatedAt.toGMTString() !== nextProps._updatedAt.toGMTString() || this.props.status !== nextProps.status; + } onPress = () => { KeyboardUtils.dismiss(); diff --git a/app/containers/routes/NavigationService.js b/app/containers/routes/NavigationService.js index 38f0e9690..a43320585 100644 --- a/app/containers/routes/NavigationService.js +++ b/app/containers/routes/NavigationService.js @@ -1,5 +1,4 @@ import { NavigationActions } from 'react-navigation'; -import reduxStore from '../../lib/createStore'; const config = {}; @@ -30,7 +29,7 @@ export function goRoom({ rid, name }, counter = 0) { return; } if (!config.navigator) { - return setTimeout(() => goRoom({ rid, name }, counter + 1), 200); + return setTimeout(() => goRoom({ rid, name }, counter + 1), 100); } const action = NavigationActions.reset({ @@ -41,5 +40,5 @@ export function goRoom({ rid, name }, counter = 0) { ] }); - requestAnimationFrame(() => config.navigator.dispatch(action), reduxStore.getState().app.starting); + config.navigator.dispatch(action); } diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index c2877c92c..d1df2baa9 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -41,6 +41,22 @@ const RocketChat = { createChannel({ name, users, type }) { return call(type ? 'createChannel' : 'createPrivateGroup', name, users, type); }, + async createDirectMessageAndWait(username) { + const room = await RocketChat.createDirectMessage(username); + return new Promise((resolve) => { + const data = database.objects('subscriptions') + .filtered('rid = $1', room.rid); + + if (data.length) { + return resolve(data[0]); + } + data.addListener(() => { + if (!data.length) { return; } + data.removeAllListeners(); + resolve(data[0]); + }); + }); + }, async getUserToken() { try { @@ -78,7 +94,7 @@ const RocketChat = { reduxStore.dispatch(requestActiveUser(this.activeUsers)); this._setUserTimer = null; return this.activeUsers = {}; - }, 1000); + }, 5000); this.activeUsers[ddpMessage.id] = status; }, reconnect() { diff --git a/app/utils/debounce.js b/app/utils/debounce.js index 2291167c7..27fdffc99 100644 --- a/app/utils/debounce.js +++ b/app/utils/debounce.js @@ -1,6 +1,6 @@ export default function debounce(func, wait, immediate) { let timeout; - return function _debounce(...args) { + function _debounce(...args) { const context = this; const later = function __debounce() { timeout = null; @@ -10,5 +10,7 @@ export default function debounce(func, wait, immediate) { clearTimeout(timeout); timeout = setTimeout(later, wait); if (callNow) { func.apply(context, args); } - }; + } + _debounce.stop = () => clearTimeout(timeout); + return _debounce; } diff --git a/app/views/ForgotPasswordView.js b/app/views/ForgotPasswordView.js index d7af4ad7f..fd7cc0277 100644 --- a/app/views/ForgotPasswordView.js +++ b/app/views/ForgotPasswordView.js @@ -27,7 +27,7 @@ class ForgotPasswordView extends React.Component { }; } - componentWillMount() { + componentDidMount() { this.props.forgotPasswordInit(); } diff --git a/app/views/ListServerView.js b/app/views/ListServerView.js index cb3772010..423e967c8 100644 --- a/app/views/ListServerView.js +++ b/app/views/ListServerView.js @@ -88,14 +88,6 @@ export default class ListServerView extends React.Component { this.data.addListener(this.updateState); } - componentWillMount() { - zeroconf.on('update', this.updateState); - - zeroconf.scan('http', 'tcp', 'local.'); - - this.setState(this.getState()); - } - componentDidUpdate() { if (this.props.connected && this.props.server && @@ -148,6 +140,14 @@ export default class ListServerView extends React.Component { }; }; + UNSAFE_componentWillMount() { + zeroconf.on('update', this.updateState); + + zeroconf.scan('http', 'tcp', 'local.'); + + this.setState(this.getState()); + } + updateState = () => { this.setState(this.getState()); } @@ -173,6 +173,7 @@ export default class ListServerView extends React.Component { ); + renderSectionHeader = ({ section }) => ( {section.title} ); diff --git a/app/views/LoginView.js b/app/views/LoginView.js index f05520e1c..523378794 100644 --- a/app/views/LoginView.js +++ b/app/views/LoginView.js @@ -70,10 +70,6 @@ export default class LoginView extends React.Component { this.redirectRegex = new RegExp(`(?=.*(${ this.props.server }))(?=.*(credentialToken))(?=.*(credentialSecret))`, 'g'); } - componentWillMount() { - this.props.open(); - } - componentWillReceiveProps(nextProps) { if (this.props.services !== nextProps.services) { LayoutAnimation.easeInEaseOut(); @@ -154,6 +150,10 @@ export default class LoginView extends React.Component { return Base64.encodeURI(JSON.stringify({ loginStyle: 'popup', credentialToken, isCordova: true })); } + UNSAFE_componentWillMount() { + this.props.open(); + } + openOAuth = (oAuthUrl) => { this.setState({ oAuthUrl, modalVisible: true }); } diff --git a/app/views/RoomView/Header/index.js b/app/views/RoomView/Header/index.js index adb8f8d76..582fd72ca 100644 --- a/app/views/RoomView/Header/index.js +++ b/app/views/RoomView/Header/index.js @@ -34,7 +34,7 @@ export default class RoomHeaderView extends React.PureComponent { super(props); this.state = { room: {}, - roomName: props.navigation.state.params.name + roomName: props.navigation.state.params.room.name }; this.rid = props.navigation.state.params.room.rid; this.room = realm.objects('subscriptions').filtered('rid = $0', this.rid); @@ -66,8 +66,8 @@ export default class RoomHeaderView extends React.PureComponent { renderLeft = () => ( { - this.props.close(); this.props.navigation.goBack(null); + requestAnimationFrame(() => this.props.close()); }} tintColor='#292E35' title='Back' diff --git a/app/views/RoomView/ListView.js b/app/views/RoomView/ListView.js index 40fdc4601..cf67514e1 100644 --- a/app/views/RoomView/ListView.js +++ b/app/views/RoomView/ListView.js @@ -65,6 +65,7 @@ export class List extends React.Component { return ( } @@ -84,20 +85,9 @@ export class ListView extends OldList2 { constructor(props) { super(props); this.state = { - curRenderedRowsCount: this.props.initialListSize, + curRenderedRowsCount: 20, highlightedRow: ({}: Object) }; - - - this.renderRow = this.renderRow.bind(this); - } - - renderRow(_, sectionId, rowId, ...args) { - const { props } = this; - const item = props.dataSource.getRow(sectionId, rowId); - - // The item could be null because our data is a snapshot and it was deleted. - return item ? props.renderRow(item, sectionId, rowId, ...args) : null; } getInnerViewNode() { @@ -115,9 +105,6 @@ export class ListView extends OldList2 { render() { const bodyComponents = []; - const { dataSource } = this.props; - const allRowIDs = dataSource.rowIdentities; - let rowCount = 0; // const stickySectionHeaderIndices = []; // const { renderSectionHeader } = this.props; @@ -126,58 +113,27 @@ export class ListView extends OldList2 { const footer = this.props.renderFooter && this.props.renderFooter(); // let totalIndex = header ? 1 : 0; - for (let sectionIdx = 0; sectionIdx < allRowIDs.length; sectionIdx += 1) { - const sectionID = dataSource.sectionIdentities[sectionIdx]; - const rowIDs = allRowIDs[sectionIdx]; - if (rowIDs.length === 0) { + const { data } = this.props; + let count = 0; + + for (let i = 0; i < this.state.curRenderedRowsCount && i < data.length; i += 1, count += 1) { + const room = data[i]; + bodyComponents.push(this.props.renderRow(room)); + + const nextData = data[i + 1]; + + if (!nextData) { continue; // eslint-disable-line } - // if (renderSectionHeader) { - // const element = renderSectionHeader( - // dataSource.getSectionHeaderData(sectionIdx), - // sectionID, - // ); - // if (element) { - // bodyComponents.push(React.cloneElement(element, { key: `s_${ sectionID }` }), ); - // if (this.props.stickySectionHeadersEnabled) { - // stickySectionHeaderIndices.push(totalIndex); - // } - // totalIndex++; - // } - // } - - for (let rowIdx = 0; rowIdx < rowIDs.length; rowIdx += 1) { - const rowID = rowIDs[rowIdx]; - const data = dataSource._dataBlob[sectionID][rowID]; - bodyComponents.push(this.props.renderRow.bind( - null, - data, - sectionID, - rowID, - this._onRowHighlighted, - )()); - if (rowIdx !== rowIDs.length - 1) { - const nextRowID = rowIDs[rowIdx + 1]; - const nextData = dataSource._dataBlob[sectionID][nextRowID]; - if (!moment(data.ts).isSame(nextData.ts, 'day')) { - bodyComponents.push(); - } - if (this.props.lastOpen && - moment(data.ts).isAfter(this.props.lastOpen) && - moment(nextData.ts).isBefore(this.props.lastOpen) - ) { - bodyComponents.push(); - } - } - // totalIndex += 1; - rowCount += 1; - if (rowCount === this.state.curRenderedRowsCount) { - break; - } + if (!moment(room.ts).isSame(nextData.ts, 'day')) { + bodyComponents.push(); } - if (rowCount >= this.state.curRenderedRowsCount) { - break; + if (this.props.lastOpen && + moment(room.ts).isAfter(this.props.lastOpen) && + moment(nextData.ts).isBefore(this.props.lastOpen) + ) { + bodyComponents.push(); } } diff --git a/app/views/RoomView/ReactionPicker.js b/app/views/RoomView/ReactionPicker.js index 7c5592cb1..620e99384 100644 --- a/app/views/RoomView/ReactionPicker.js +++ b/app/views/RoomView/ReactionPicker.js @@ -37,8 +37,9 @@ export default class ReactionPicker extends React.Component { } render() { - const { width, height } = this.props.window; - return ( + const { width, height, showReactionPicker } = this.props.window; + + return (showReactionPicker ? this.onEmojiSelected(emoji, shortname)} /> - + : null ); } } diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js index b9513c02f..0377adcd5 100644 --- a/app/views/RoomView/index.js +++ b/app/views/RoomView/index.js @@ -73,7 +73,7 @@ export default class RoomView extends React.Component { this.state = { loaded: true, joined: typeof props.rid === 'undefined', - room: {} + room: this.rooms[0] }; this.onReactionPress = this.onReactionPress.bind(this); } @@ -110,10 +110,6 @@ export default class RoomView extends React.Component { if (this.props.loading || this.state.end) { return; } - if (!this.state.loaded) { - alert(2); - return; - } requestAnimationFrame(() => { const lastRowData = data[data.length - 1]; @@ -159,6 +155,8 @@ export default class RoomView extends React.Component { ({ setSearch: searchText => dispatch(setSearch(searchText)) })) -export default class RoomsListHeaderView extends React.Component { + +export default class RoomsListHeaderView extends React.PureComponent { static propTypes = { navigation: PropTypes.object.isRequired, user: PropTypes.object.isRequired, diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index bc68396e4..1ad2a9e39 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -15,6 +15,7 @@ import { goRoom } from '../../containers/routes/NavigationService'; import Header from '../../containers/Header'; import RoomsListHeader from './Header'; import styles from './styles'; +import debounce from '../../utils/debounce'; const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 }); @connect(state => ({ @@ -63,10 +64,6 @@ export default class RoomsListView extends React.Component { this.updateState(); } - // shouldComponentUpdate() { - // return false; - // } - componentWillReceiveProps(props) { if (this.props.server !== props.server) { this.data.removeListener(this.updateState); @@ -76,10 +73,9 @@ export default class RoomsListView extends React.Component { this.search(props.searchText); } } - // componentWillUpdate() { - // LayoutAnimation.easeInEaseOut(); - // } + componentWillUnmount() { + this.updateState.stop(); this.data.removeAllListeners(); } @@ -88,109 +84,65 @@ export default class RoomsListView extends React.Component { this.search(text); } - getLastMessage = (subscription) => { - const [room] = database.objects('rooms').filtered('_id = $0', subscription.rid).slice(); - return room && room.lastMessage; - } + updateState = debounce(() => { + this.forceUpdate(); + }, 1000); - search(text) { + async search(text) { const searchText = text.trim(); if (searchText === '') { + delete this.oldPromise; return this.setState({ - dataSource: ds.cloneWithRows(this.data) + search: false }); } - const data = this.data.filtered('name CONTAINS[c] $0', searchText).slice(); + let data = this.data.filtered('name CONTAINS[c] $0', searchText).slice(0, 7); - const usernames = []; - const dataSource = data.map((sub) => { - if (sub.t === 'd') { - usernames.push(sub.name); + const usernames = data.map(sub => sub.map); + try { + if (data.length < 7) { + if (this.oldPromise) { + this.oldPromise('cancel'); + } + + const { users, rooms } = await Promise.race([ + RocketChat.spotlight(searchText, usernames, { users: true, rooms: true }), + new Promise((resolve, reject) => this.oldPromise = reject) + ]); + + data = data.concat(users.map(user => ({ + ...user, + rid: user.username, + name: user.username, + t: 'd', + search: true + })), rooms.map(room => ({ + rid: room._id, + ...room, + search: true + }))); + + delete this.oldPromise; } - return sub; - }); - - if (dataSource.length < 7) { - if (this.oldPromise) { - this.oldPromise(); - } - Promise.race([ - RocketChat.spotlight(searchText, usernames), - new Promise((resolve, reject) => this.oldPromise = reject) - ]) - .then((results) => { - results.users.forEach((user) => { - dataSource.push({ - ...user, - name: user.username, - t: 'd', - search: true - }); - }); - - results.rooms.forEach((room) => { - dataSource.push({ - ...room, - search: true - }); - }); - - this.setState({ - dataSource: ds.cloneWithRows(dataSource) - }); - }, () => console.log('spotlight stopped')) - .then(() => delete this.oldPromise); + this.setState({ + search: data + }); + } catch (e) { + // alert(JSON.stringify(e)); } - this.setState({ - dataSource: ds.cloneWithRows(dataSource) - }); } - updateState = () => { - this.setState({ - dataSource: ds.cloneWithRows(this.data) - }); - // this.forceUpdate(); - }; - - _onPressItem = (item = {}) => { - const clearSearch = () => { - this.setState({ - searchText: '' - }); - }; - + _onPressItem = async(item = {}) => { // if user is using the search we need first to join/create room - if (item.search) { - if (item.t === 'd') { - RocketChat.createDirectMessage(item.username) - .then(room => new Promise((resolve) => { - const data = database.objects('subscriptions') - .filtered('rid = $1', room.rid); - - if (data.length) { - return resolve(data[0]); - } - - data.addListener(() => { - if (data.length) { - resolve(data[0]); - data.removeAllListeners(); - } - }); - })) - .then(sub => goRoom({ room: sub, name: sub.name })) - .then(() => clearSearch()); - } else { - clearSearch(); - goRoom(item); - } - return; + if (!item.search) { + return this.props.navigation.navigate({ routeName: 'Room', params: { room: item, ...item } }); } - - goRoom(item); - clearSearch(); + if (item.t === 'd') { + const sub = await RocketChat.createDirectMessageAndWait(item.username); + return goRoom({ room: sub, name: sub.name }); + } + return goRoom(item); } _createChannel() { @@ -236,7 +188,7 @@ export default class RoomsListView extends React.Component { renderList = () => ( = 1.29.0 < 2" + mime-db ">= 1.33.0 < 2" -compression@~1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.5.2.tgz#b03b8d86e6f8ad29683cba8df91ddc6ffc77b395" +compression@^1.7.1: + version "1.7.2" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.2.tgz#aaffbcd6aaf854b44ebb280353d5ad1651f59a69" dependencies: - accepts "~1.2.12" - bytes "2.1.0" - compressible "~2.0.5" - debug "~2.2.0" - on-headers "~1.0.0" - vary "~1.0.1" + accepts "~1.3.4" + bytes "3.0.0" + compressible "~2.0.13" + debug "2.6.9" + on-headers "~1.0.1" + safe-buffer "5.1.1" + vary "~1.1.2" concat-map@0.0.1: version "0.0.1" @@ -2557,50 +2767,14 @@ configstore@^2.0.0: write-file-atomic "^1.1.2" xdg-basedir "^2.0.0" -connect-timeout@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/connect-timeout/-/connect-timeout-1.6.2.tgz#de9a5ec61e33a12b6edaab7b5f062e98c599b88e" +connect@^3.6.5: + version "3.6.6" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.6.6.tgz#09eff6c55af7236e137135a72574858b6786f524" dependencies: - debug "~2.2.0" - http-errors "~1.3.1" - ms "0.7.1" - on-headers "~1.0.0" - -connect@^2.8.3: - version "2.30.2" - resolved "https://registry.yarnpkg.com/connect/-/connect-2.30.2.tgz#8da9bcbe8a054d3d318d74dfec903b5c39a1b609" - dependencies: - basic-auth-connect "1.0.0" - body-parser "~1.13.3" - bytes "2.1.0" - compression "~1.5.2" - connect-timeout "~1.6.2" - content-type "~1.0.1" - cookie "0.1.3" - cookie-parser "~1.3.5" - cookie-signature "1.0.6" - csurf "~1.8.3" - debug "~2.2.0" - depd "~1.0.1" - errorhandler "~1.4.2" - express-session "~1.11.3" - finalhandler "0.4.0" - fresh "0.3.0" - http-errors "~1.3.1" - method-override "~2.3.5" - morgan "~1.6.1" - multiparty "3.3.2" - on-headers "~1.0.0" - parseurl "~1.3.0" - pause "0.1.0" - qs "4.0.0" - response-time "~2.3.1" - serve-favicon "~2.3.0" - serve-index "~1.7.2" - serve-static "~1.10.0" - type-is "~1.6.6" - utils-merge "1.0.0" - vhost "~3.0.1" + debug "2.6.9" + finalhandler "1.1.0" + parseurl "~1.3.2" + utils-merge "1.0.1" console-browserify@^1.1.0: version "1.1.0" @@ -2628,33 +2802,22 @@ content-type-parser@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/content-type-parser/-/content-type-parser-1.0.2.tgz#caabe80623e63638b2502fd4c7f12ff4ce2352e7" -content-type@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" - content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" +convert-source-map@^1.1.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" + convert-source-map@^1.4.0, convert-source-map@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" -cookie-parser@~1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.3.5.tgz#9d755570fb5d17890771227a02314d9be7cf8356" - dependencies: - cookie "0.1.3" - cookie-signature "1.0.6" - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" -cookie@0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.1.3.tgz#e734a5c1417fce472d5aef82c381cabb64d1a435" - cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" @@ -2698,10 +2861,6 @@ cosmiconfig@^2.1.0, cosmiconfig@^2.1.1: parse-json "^2.2.0" require-from-string "^1.1.0" -crc@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/crc/-/crc-3.3.0.tgz#fa622e1bc388bf257309082d6b65200ce67090ba" - create-ecdh@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" @@ -2735,7 +2894,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.2, create-react-class@^15.6.0: +create-react-class@^15.6.0: version "15.6.0" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" dependencies: @@ -2743,7 +2902,7 @@ create-react-class@^15.5.2, create-react-class@^15.6.0: loose-envify "^1.3.1" object-assign "^4.1.1" -create-react-class@^15.6.2: +create-react-class@^15.6.2, create-react-class@^15.6.3: version "15.6.3" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" dependencies: @@ -2794,14 +2953,6 @@ crypto-js@^3.1.9-1: version "3.1.9-1" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.9-1.tgz#fda19e761fc077e01ffbfdc6e9fdfc59e8806cd8" -csrf@~3.0.0: - version "3.0.6" - resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.0.6.tgz#b61120ddceeafc91e76ed5313bb5c0b2667b710a" - dependencies: - rndm "1.2.0" - tsscmp "1.0.5" - uid-safe "2.1.4" - css-color-names@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" @@ -2910,15 +3061,6 @@ cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0": dependencies: cssom "0.3.x" -csurf@~1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/csurf/-/csurf-1.8.3.tgz#23f2a13bf1d8fce1d0c996588394442cba86a56a" - dependencies: - cookie "0.1.3" - cookie-signature "1.0.6" - csrf "~3.0.0" - http-errors "~1.3.1" - cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" @@ -2947,7 +3089,7 @@ dateformat@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" -debug@2.2.0, debug@~2.2.0: +debug@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" dependencies: @@ -2959,18 +3101,18 @@ debug@2.3.3: dependencies: ms "0.7.2" -debug@2.6.8, debug@^2.2.0, debug@^2.6.3, debug@^2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - debug@2.6.9, debug@^2.1.2: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" +debug@^2.2.0, debug@^2.6.3, debug@^2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + debug@^3.0.1, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -3086,13 +3228,13 @@ denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" -depd@1.1.1, depd@~1.1.0, depd@~1.1.1: +depd@1.1.1, depd@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" -depd@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.0.1.tgz#80aec64c9d6d97e65cc2a9caa93c0aa6abf73aaa" +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" des.js@^1.0.0: version "1.0.0" @@ -3281,6 +3423,10 @@ encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + encoding@^0.1.11: version "0.1.12" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" @@ -3356,11 +3502,11 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -errorhandler@~1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.4.3.tgz#b7b70ed8f359e9db88092f2d20c0f831420ad83f" +errorhandler@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/errorhandler/-/errorhandler-1.5.0.tgz#eaba64ca5d542a311ac945f582defc336165d9f4" dependencies: - accepts "~1.3.0" + accepts "~1.3.3" escape-html "~1.0.3" es-abstract@^1.5.1: @@ -3451,10 +3597,6 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -escape-html@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.2.tgz#d77d32fa98e38c2f41ae85e9278e0e0e6ba1022c" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -3509,9 +3651,9 @@ eslint-module-utils@^2.1.1: debug "^2.6.8" pkg-dir "^1.0.0" -eslint-plugin-import@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" +eslint-plugin-import@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz#26002efbfca5989b7288ac047508bd24f217b169" dependencies: builtin-modules "^1.1.1" contains-path "^0.1.0" @@ -3520,7 +3662,7 @@ eslint-plugin-import@^2.8.0: eslint-import-resolver-node "^0.3.1" eslint-module-utils "^2.1.1" has "^1.0.1" - lodash.cond "^4.3.0" + lodash "^4.17.4" minimatch "^3.0.3" read-pkg-up "^2.0.0" @@ -3546,9 +3688,9 @@ eslint-plugin-react-native@^3.2.0: dependencies: eslint-plugin-react-native-globals "^0.1.1" -eslint-plugin-react@^7.5.1: - version "7.6.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.6.1.tgz#5d0e908be599f0c02fbf4eef0c7ed6f29dff7633" +eslint-plugin-react@^7.7.0: + version "7.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.7.0.tgz#f606c719dbd8a1a2b3d25c16299813878cca0160" dependencies: doctrine "^2.0.2" has "^1.0.1" @@ -3570,9 +3712,9 @@ eslint-visitor-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" -eslint@^4.12.0: - version "4.18.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.18.0.tgz#ebd0ba795af6dc59aa5cee17938160af5950e051" +eslint@^4.18.1: + version "4.18.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.18.1.tgz#b9138440cb1e98b2f44a0d578c6ecf8eae6150b0" dependencies: ajv "^5.3.0" babel-code-frame "^6.22.0" @@ -3648,14 +3790,10 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" -esutils@^2.0.2: +esutils@^2.0.0, esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -etag@~1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" - etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -3675,6 +3813,10 @@ eventemitter3@^1.1.0: 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, events@^1.1.0, events@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" @@ -3750,20 +3892,6 @@ expect@^22.3.0: jest-message-util "^22.2.0" jest-regex-util "^22.1.0" -express-session@~1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.11.3.tgz#5cc98f3f5ff84ed835f91cbf0aabd0c7107400af" - dependencies: - cookie "0.1.3" - cookie-signature "1.0.6" - crc "3.3.0" - debug "~2.2.0" - depd "~1.0.1" - on-headers "~1.0.0" - parseurl "~1.3.0" - uid-safe "~2.0.0" - utils-merge "1.0.0" - express@^4.16.2: version "4.16.2" resolved "https://registry.yarnpkg.com/express/-/express-4.16.2.tgz#e35c6dfe2d64b7dca0a5cd4f21781be3299e076c" @@ -3961,15 +4089,6 @@ filled-array@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/filled-array/-/filled-array-1.1.0.tgz#c3c4f6c663b923459a9aa29912d2d031f1507f84" -finalhandler@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.4.0.tgz#965a52d9e8d05d2b857548541fb89b53a2497d9b" - dependencies: - debug "~2.2.0" - escape-html "1.0.2" - on-finished "~2.3.0" - unpipe "~1.0.0" - finalhandler@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.0.tgz#ce0b6855b45853e791b2fcc680046d88253dd7f5" @@ -4085,10 +4204,6 @@ forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" -fresh@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" - fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -4631,13 +4746,6 @@ http-errors@1.6.2, http-errors@~1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" -http-errors@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.3.1.tgz#197e22cdebd4198585e8694ef6786197b91ed942" - dependencies: - inherits "~2.0.1" - statuses "1" - http-response-object@^1.0.0, http-response-object@^1.0.1, http-response-object@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-1.1.0.tgz#a7c4e75aae82f3bb4904e4f43f615673b4d518c3" @@ -4666,10 +4774,6 @@ hyphenate-style-name@^1.0.1, hyphenate-style-name@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" -iconv-lite@0.4.11: - version "0.4.11" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.11.tgz#2ecb42fd294744922209a2e7c404dac8793d8ade" - iconv-lite@0.4.13: version "0.4.13" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" @@ -5218,9 +5322,11 @@ jest-diff@^22.1.0: jest-get-type "^22.1.0" pretty-format "^22.1.0" -jest-docblock@^21, jest-docblock@^21.2.0: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" +jest-docblock@22.4.0, jest-docblock@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.0.tgz#dbf1877e2550070cfc4d9b07a55775a0483159b8" + dependencies: + detect-newline "^2.1.0" jest-docblock@^22.2.2: version "22.2.2" @@ -5247,16 +5353,17 @@ jest-get-type@^22.1.0: version "22.1.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.1.0.tgz#4e90af298ed6181edc85d2da500dbd2753e0d5a9" -jest-haste-map@^21: - version "21.2.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-21.2.0.tgz#1363f0a8bb4338f24f001806571eff7a4b2ff3d8" +jest-haste-map@22.4.2: + version "22.4.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.2.tgz#a90178e66146d4378bb076345a949071f3b015b4" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" - jest-docblock "^21.2.0" + jest-docblock "^22.4.0" + jest-serializer "^22.4.0" + jest-worker "^22.2.2" micromatch "^2.3.11" sane "^2.0.0" - worker-farm "^1.3.1" jest-haste-map@^22.3.0: version "22.3.0" @@ -5370,6 +5477,10 @@ jest-runtime@^22.3.0: write-file-atomic "^2.1.0" yargs "^10.0.3" +jest-serializer@^22.4.0: + version "22.4.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.0.tgz#b5d145b98c4b0d2c20ab686609adbb81fe23b566" + jest-snapshot@>=20.0.3, jest-snapshot@^22.2.0: version "22.2.0" resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.2.0.tgz#0c0ba152d296ef70fa198cc84977a2cc269ee4cf" @@ -5408,7 +5519,7 @@ jest-validate@^22.2.2: leven "^2.1.0" pretty-format "^22.1.0" -jest-worker@^22.2.2: +jest-worker@22.2.2, jest-worker@^22.2.2: version "22.2.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.2.2.tgz#c1f5dc39976884b81f68ec50cb8532b2cbab3390" dependencies: @@ -5425,6 +5536,10 @@ js-base64@^2.1.9: version "2.1.9" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" +js-base64@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" + js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -5497,6 +5612,10 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -5769,10 +5888,6 @@ lodash.clonedeep@^4.3.0, lodash.clonedeep@^4.3.1: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" -lodash.cond@^4.3.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -5791,6 +5906,14 @@ lodash.escape@^3.0.0: dependencies: lodash._root "^3.0.0" +lodash.every@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" + +lodash.filter@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" + lodash.isarguments@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" @@ -5799,10 +5922,22 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + +lodash.isfunction@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + lodash.keys@^3.0.0, lodash.keys@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -5811,6 +5946,10 @@ lodash.keys@^3.0.0, lodash.keys@^3.1.2: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" +lodash.keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -5868,6 +6007,14 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -5880,7 +6027,7 @@ lodash@^4.0.0, lodash@^4.14.0, lodash@^4.16.6, lodash@^4.17.4, lodash@^4.2.0, lo version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@^4.11.1, lodash@^4.13.1, lodash@^4.16.4, lodash@^4.17.3: +lodash@^4.11.1, lodash@^4.13.1, lodash@^4.16.4, lodash@^4.17.3, lodash@^4.17.5: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" @@ -5972,28 +6119,86 @@ merge@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da" -method-override@~2.3.5: - version "2.3.9" - resolved "https://registry.yarnpkg.com/method-override/-/method-override-2.3.9.tgz#bd151f2ce34cf01a76ca400ab95c012b102d8f71" - dependencies: - debug "2.6.8" - methods "~1.1.2" - parseurl "~1.3.1" - vary "~1.1.1" - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -metro-bundler@^0.20.0: - version "0.20.3" - resolved "https://registry.yarnpkg.com/metro-bundler/-/metro-bundler-0.20.3.tgz#0ded01b64e8963117017b106f75b83cfc34f3656" +metro-babylon7@0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/metro-babylon7/-/metro-babylon7-0.28.0.tgz#cf9701ffdc1992d1562b4cb667d9692164950df4" dependencies: + babylon "^7.0.0-beta" + +metro-cache@0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.28.0.tgz#c5164a361985fc0294059fccdf4ea824e3173c1d" + dependencies: + jest-serializer "^22.4.0" + mkdirp "^0.5.1" + +metro-core@0.28.0, metro-core@^0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.28.0.tgz#e1ced4cf07ca8fb5196a6e5ca853b5d893f06038" + dependencies: + lodash.throttle "^4.1.1" + +metro-minify-uglify@0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/metro-minify-uglify/-/metro-minify-uglify-0.28.0.tgz#c9aecb8e893430d2fd58e00cf799c00b99dc0f79" + dependencies: + uglify-es "^3.1.9" + +metro-resolver@0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.28.0.tgz#813802d60fc762772927c81d02e01c7eec84bad8" + dependencies: + absolute-path "^0.0.0" + +metro-source-map@0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.28.0.tgz#ec8c3161d8516ad3c4e7149f2c3d4802f4fd6fa2" + dependencies: + source-map "^0.5.6" + +metro@^0.28.0: + version "0.28.0" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.28.0.tgz#22999c96c3129682a76acd4e1f2adc17f7d77cac" + dependencies: + "@babel/core" "^7.0.0-beta" + "@babel/generator" "^7.0.0-beta" + "@babel/helper-remap-async-to-generator" "^7.0.0-beta" + "@babel/plugin-check-constants" "^7.0.0-beta" + "@babel/plugin-external-helpers" "^7.0.0-beta" + "@babel/plugin-proposal-class-properties" "^7.0.0-beta" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0-beta" + "@babel/plugin-syntax-dynamic-import" "^7.0.0-beta" + "@babel/plugin-transform-arrow-functions" "^7.0.0-beta" + "@babel/plugin-transform-block-scoping" "^7.0.0-beta" + "@babel/plugin-transform-classes" "^7.0.0-beta" + "@babel/plugin-transform-computed-properties" "^7.0.0-beta" + "@babel/plugin-transform-destructuring" "^7.0.0-beta" + "@babel/plugin-transform-flow-strip-types" "^7.0.0-beta" + "@babel/plugin-transform-for-of" "^7.0.0-beta" + "@babel/plugin-transform-function-name" "^7.0.0-beta" + "@babel/plugin-transform-literals" "^7.0.0-beta" + "@babel/plugin-transform-modules-commonjs" "^7.0.0-beta" + "@babel/plugin-transform-object-assign" "^7.0.0-beta" + "@babel/plugin-transform-parameters" "^7.0.0-beta" + "@babel/plugin-transform-react-display-name" "^7.0.0-beta" + "@babel/plugin-transform-react-jsx" "^7.0.0-beta" + "@babel/plugin-transform-react-jsx-source" "^7.0.0-beta" + "@babel/plugin-transform-regenerator" "^7.0.0-beta" + "@babel/plugin-transform-shorthand-properties" "^7.0.0-beta" + "@babel/plugin-transform-spread" "^7.0.0-beta" + "@babel/plugin-transform-template-literals" "^7.0.0-beta" + "@babel/template" "^7.0.0-beta" + "@babel/traverse" "^7.0.0-beta" + "@babel/types" "^7.0.0-beta" absolute-path "^0.0.0" async "^2.4.0" babel-core "^6.24.1" - babel-generator "^6.24.1" - babel-plugin-external-helpers "^6.18.0" + babel-generator "^6.26.0" + babel-plugin-external-helpers "^6.22.0" babel-preset-es2015-node "^6.1.1" babel-preset-fbjs "^2.1.4" babel-preset-react-native "^4.0.0" @@ -6001,30 +6206,42 @@ metro-bundler@^0.20.0: babylon "^6.18.0" chalk "^1.1.1" concat-stream "^1.6.0" + connect "^3.6.5" core-js "^2.2.2" debug "^2.2.0" denodeify "^1.2.1" + eventemitter3 "^3.0.0" fbjs "^0.8.14" + fs-extra "^1.0.0" graceful-fs "^4.1.3" image-size "^0.6.0" - jest-docblock "^21" - jest-haste-map "^21" + jest-docblock "22.4.0" + jest-haste-map "22.4.2" + jest-worker "22.2.2" json-stable-stringify "^1.0.1" json5 "^0.4.0" left-pad "^1.1.3" - lodash "^4.16.6" + lodash.throttle "^4.1.1" merge-stream "^1.0.1" + metro-babylon7 "0.28.0" + metro-cache "0.28.0" + metro-core "0.28.0" + metro-minify-uglify "0.28.0" + metro-resolver "0.28.0" + metro-source-map "0.28.0" mime-types "2.1.11" mkdirp "^0.5.1" request "^2.79.0" rimraf "^2.5.4" + serialize-error "^2.1.0" source-map "^0.5.6" temp "0.8.3" throat "^4.1.0" - uglify-es "^3.1.8" wordwrap "^1.0.0" write-file-atomic "^1.2.0" + ws "^1.1.0" xpipe "^1.0.5" + yargs "^9.0.0" micromatch@^2.1.5, micromatch@^2.3.11: version "2.3.11" @@ -6051,17 +6268,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.29.0 < 2", mime-db@~1.29.0: - version "1.29.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" +"mime-db@>= 1.33.0 < 2", mime-db@~1.33.0: + version "1.33.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" mime-db@~1.23.0: version "1.23.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" +mime-db@~1.29.0: + version "1.29.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.29.0.tgz#48d26d235589651704ac5916ca06001914266878" mime-types@2.1.11: version "2.1.11" @@ -6069,7 +6286,7 @@ mime-types@2.1.11: dependencies: mime-db "~1.23.0" -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.6, mime-types@~2.1.7, mime-types@~2.1.9: +mime-types@^2.1.12, mime-types@~2.1.15, mime-types@~2.1.7: version "2.1.16" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.16.tgz#2b858a52e5ecd516db897ac2be87487830698e23" dependencies: @@ -6081,10 +6298,6 @@ mime-types@~2.1.16, mime-types@~2.1.17: dependencies: mime-db "~1.33.0" -mime@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" - mime@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" @@ -6187,15 +6400,15 @@ moment@^2.20.1: version "2.20.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd" -morgan@~1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.6.1.tgz#5fd818398c6819cba28a7cd6664f292fe1c0bbf2" +morgan@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.0.tgz#d01fa6c65859b76fcf31b3cb53a3821a311d8051" dependencies: - basic-auth "~1.0.3" - debug "~2.2.0" - depd "~1.0.1" + basic-auth "~2.0.0" + debug "2.6.9" + depd "~1.1.1" on-finished "~2.3.0" - on-headers "~1.0.0" + on-headers "~1.0.1" move-concurrently@^1.0.1: version "1.0.1" @@ -6220,13 +6433,6 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" -multiparty@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/multiparty/-/multiparty-3.3.2.tgz#35de6804dc19643e5249f3d3e3bdc6c8ce301d3f" - dependencies: - readable-stream "~1.1.9" - stream-counter "~0.2.0" - multipipe@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" @@ -6241,7 +6447,11 @@ 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.3.0, nan@^2.3.3: +nan@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" + +nan@^2.3.0: version "2.6.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45" @@ -6270,10 +6480,6 @@ needle@^2.0.1: debug "^2.1.2" iconv-lite "^0.4.4" -negotiator@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" - negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -6488,7 +6694,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -on-headers@~1.0.0, on-headers@~1.0.1: +on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" @@ -6702,10 +6908,6 @@ parseuri@0.0.5: dependencies: better-assert "~1.0.0" -parseurl@~1.3.0, parseurl@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" - parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -6770,10 +6972,6 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -pause@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/pause/-/pause-0.1.0.tgz#ebc8a4a8619ff0b8a81ac1513c3434ff469fdb74" - pbkdf2@^3.0.3: version "3.0.13" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.13.tgz#c37d295531e786b1da3e3eadc840426accb0ae25" @@ -7212,16 +7410,24 @@ promise-inflight@^1.0.1: dependencies: asap "~2.0.3" -prop-types@15.5.10, prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.5.9: +prop-types@15.6.0, prop-types@^15.6.0: + version "15.6.0" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.5.9: version "15.5.10" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" dependencies: fbjs "^0.8.9" loose-envify "^1.3.1" -prop-types@^15.6.0: - version "15.6.0" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" +prop-types@^15.6.1: + version "15.6.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" dependencies: fbjs "^0.8.16" loose-envify "^1.3.1" @@ -7287,10 +7493,6 @@ q@^1.1.2: version "1.5.0" resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" -qs@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" - qs@6.5.1, qs@^6.5.1, qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" @@ -7347,10 +7549,6 @@ ramdasauce@^2.0.0: dependencies: ramda "^0.24.1" -random-bytes@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" - randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -7368,10 +7566,6 @@ range-parser@^1.0.3, range-parser@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" -range-parser@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.0.3.tgz#6872823535c692e2c2a0103826afd82c2e0ff175" - raw-body@2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" @@ -7381,14 +7575,6 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" -raw-body@~2.1.2: - version "2.1.7" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774" - dependencies: - bytes "2.4.0" - iconv-lite "0.4.13" - unpipe "1.0.0" - rc@^1.0.1, rc@^1.1.6: version "1.2.5" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" @@ -7415,9 +7601,9 @@ react-deep-force-update@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.0.tgz#8d131ae07ae02f08df60744eb2cf2de4fcb325f1" -react-devtools-core@^2.5.0: - version "2.5.2" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-2.5.2.tgz#f97bec5afae5d9318d16778065e0c214c4d5714c" +react-devtools-core@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-3.1.0.tgz#eec2e9e0e6edb77772e2bfc7d286a296f55a261a" dependencies: shell-quote "^1.6.1" ws "^2.0.3" @@ -7502,12 +7688,6 @@ react-native-actionsheet@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/react-native-actionsheet/-/react-native-actionsheet-2.3.0.tgz#a9552a356dc5939829062353804d5e5609e8f969" -react-native-animatable@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/react-native-animatable/-/react-native-animatable-1.2.3.tgz#d0f0bd694833b934f3aaa1275739228b786ecb4b" - dependencies: - prop-types "^15.5.10" - react-native-animatable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/react-native-animatable/-/react-native-animatable-1.2.4.tgz#b5fb7657e8f6edadbc26697057a327fb920b3039" @@ -7601,12 +7781,12 @@ react-native-meteor@^1.2.0: underscore "^1.8.3" wolfy87-eventemitter "^4.3.0" -react-native-modal@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/react-native-modal/-/react-native-modal-4.1.1.tgz#4c1055dc045106542a8e3bb3fd656a6d3bc319d9" +react-native-modal@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/react-native-modal/-/react-native-modal-5.1.1.tgz#01ebad777cd016c980ab43d46d3adde1307dfb09" dependencies: - prop-types "15.5.10" - react-native-animatable "^1.2.3" + prop-types "15.6.0" + react-native-animatable "^1.2.4" react-native-optimized-flatlist@^1.0.4: version "1.0.4" @@ -7628,9 +7808,9 @@ react-native-safari-view@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/react-native-safari-view/-/react-native-safari-view-2.1.0.tgz#1e0cd12c62bce79bc1759c7e281646b08b61c959" -react-native-safe-area-view@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.6.0.tgz#ce01eb27905a77780219537e0f53fe9c783a8b3d" +react-native-safe-area-view@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.7.0.tgz#38f5ab9368d6ef9e5d18ab64212938af3ec39421" dependencies: hoist-non-react-statics "^2.3.1" @@ -7680,9 +7860,9 @@ react-native-vector-icons@^4.4.2: prop-types "^15.5.10" yargs "^8.0.2" -react-native-video-controls@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/react-native-video-controls/-/react-native-video-controls-2.0.2.tgz#c500573e644c28aa6c0185b3380da4834c4a5b92" +react-native-video-controls@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/react-native-video-controls/-/react-native-video-controls-2.1.0.tgz#44b56308d704563efb19bdddfae0ff453a78d429" dependencies: lodash "^4.16.4" @@ -7699,9 +7879,9 @@ react-native-zeroconf@^0.8.3: dependencies: events "^1.1.0" -react-native@^0.51.0: - version "0.51.0" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.51.0.tgz#fe25934b3030fd323f3ca1a70f034133465955ed" +react-native@0.54.0-rc.4: + version "0.54.0-rc.4" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.54.0-rc.4.tgz#d678ac7ae69345060c3dea639fd3665adb4016fd" dependencies: absolute-path "^0.0.0" art "^0.10.0" @@ -7717,11 +7897,13 @@ react-native@^0.51.0: base64-js "^1.1.2" chalk "^1.1.1" commander "^2.9.0" - connect "^2.8.3" - create-react-class "^15.5.2" + compression "^1.7.1" + connect "^3.6.5" + create-react-class "^15.6.3" debug "^2.2.0" denodeify "^1.2.1" envinfo "^3.0.0" + errorhandler "^1.5.0" event-target-shim "^1.0.5" fbjs "^0.8.14" fbjs-scripts "^0.8.1" @@ -7729,11 +7911,13 @@ react-native@^0.51.0: glob "^7.1.1" graceful-fs "^4.1.3" inquirer "^3.0.6" - lodash "^4.16.6" - metro-bundler "^0.20.0" + lodash "^4.17.5" + metro "^0.28.0" + metro-core "^0.28.0" mime "^1.3.4" minimist "^1.2.0" mkdirp "^0.5.1" + morgan "^1.9.0" node-fetch "^1.3.3" node-notifier "^5.1.2" npmlog "^2.0.4" @@ -7744,11 +7928,12 @@ react-native@^0.51.0: promise "^7.1.1" prop-types "^15.5.8" react-clone-referenced-element "^1.0.1" - react-devtools-core "^2.5.0" + react-devtools-core "3.1.0" react-timer-mixin "^0.13.2" regenerator-runtime "^0.11.0" rimraf "^2.5.4" semver "^5.0.3" + serve-static "^1.13.1" shell-quote "1.6.1" stacktrace-parser "^0.1.3" whatwg-fetch "^1.0.0" @@ -7757,16 +7942,16 @@ react-native@^0.51.0: xmldoc "^0.4.0" yargs "^9.0.0" -react-navigation@^1.0.0-beta.19: - version "1.0.3" - resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-1.0.3.tgz#1687ea67a72a382633b01e7afda88582ebc3b5f9" +react-navigation@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-1.2.1.tgz#06cb2c97eb1b2e20bdb4ff7aee1acfa218a1561b" dependencies: clamp "^1.0.1" hoist-non-react-statics "^2.2.0" path-to-regexp "^1.7.0" prop-types "^15.5.10" react-native-drawer-layout-polyfill "^1.3.2" - react-native-safe-area-view "^0.6.0" + react-native-safe-area-view "^0.7.0" react-native-tab-view "^0.0.74" react-proxy@^1.1.7: @@ -7956,7 +8141,7 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" -readable-stream@~1.1.8, readable-stream@~1.1.9: +readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" dependencies: @@ -7974,15 +8159,15 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -realm@^2.0.11: - version "2.2.8" - resolved "https://registry.yarnpkg.com/realm/-/realm-2.2.8.tgz#b076b6f69f79739ff1aec1fbfb37c2801be0a3db" +realm@^2.2.12: + version "2.2.12" + resolved "https://registry.yarnpkg.com/realm/-/realm-2.2.12.tgz#e6548f8c1302360bebb67de17504a2b7ea492288" dependencies: command-line-args "^4.0.6" decompress "^4.2.0" fs-extra "^4.0.2" ini "^1.3.4" - nan "^2.3.3" + nan "2.8.0" node-fetch "^1.6.3" node-pre-gyp "^0.6.36" progress "^2.0.0" @@ -8085,6 +8270,12 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" +regenerator-transform@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.12.3.tgz#459adfb64f6a27164ab991b7873f45ab969eca8b" + dependencies: + private "^0.1.6" + regex-cache@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" @@ -8315,12 +8506,11 @@ resolve@^1.1.6, resolve@^1.2.0: dependencies: path-parse "^1.0.5" -response-time@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/response-time/-/response-time-2.3.2.tgz#ffa71bab952d62f7c1d49b7434355fbc68dffc5a" +resolve@^1.3.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: - depd "~1.1.0" - on-headers "~1.0.1" + path-parse "^1.0.5" restore-cursor@^1.0.1: version "1.0.1" @@ -8369,10 +8559,6 @@ rn-host-detect@^1.0.1, rn-host-detect@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/rn-host-detect/-/rn-host-detect-1.1.3.tgz#242d76e2fa485c48d751416e65b7cce596969e91" -rndm@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" - run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -8482,23 +8668,6 @@ semver@^5.0.1, semver@^5.4.1: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" -send@0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz#765e7607c8055452bba6f0b052595350986036de" - dependencies: - debug "~2.2.0" - depd "~1.1.0" - destroy "~1.0.4" - escape-html "~1.0.3" - etag "~1.7.0" - fresh "0.3.0" - http-errors "~1.3.1" - mime "1.3.4" - ms "0.7.1" - on-finished "~2.3.0" - range-parser "~1.0.3" - statuses "~1.2.1" - send@0.16.1: version "0.16.1" resolved "https://registry.yarnpkg.com/send/-/send-0.16.1.tgz#a70e1ca21d1382c11d0d9f6231deb281080d7ab3" @@ -8517,31 +8686,32 @@ send@0.16.1: range-parser "~1.2.0" statuses "~1.3.1" +send@0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.6.2" + mime "1.4.1" + ms "2.0.0" + on-finished "~2.3.0" + range-parser "~1.2.0" + statuses "~1.4.0" + +serialize-error@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-2.1.0.tgz#50b679d5635cdf84667bdc8e59af4e5b81d5f60a" + serialize-javascript@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.4.0.tgz#7c958514db6ac2443a8abc062dc9f7886a7f6005" -serve-favicon@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/serve-favicon/-/serve-favicon-2.3.2.tgz#dd419e268de012ab72b319d337f2105013f9381f" - dependencies: - etag "~1.7.0" - fresh "0.3.0" - ms "0.7.2" - parseurl "~1.3.1" - -serve-index@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.7.3.tgz#7a057fc6ee28dc63f64566e5fa57b111a86aecd2" - dependencies: - accepts "~1.2.13" - batch "0.5.3" - debug "~2.2.0" - escape-html "~1.0.3" - http-errors "~1.3.1" - mime-types "~2.1.9" - parseurl "~1.3.1" - serve-static@1.13.1: version "1.13.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.1.tgz#4c57d53404a761d8f2e7c1e8a18a47dbf278a719" @@ -8551,13 +8721,14 @@ serve-static@1.13.1: parseurl "~1.3.2" send "0.16.1" -serve-static@~1.10.0: - version "1.10.3" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.10.3.tgz#ce5a6ecd3101fed5ec09827dac22a9c29bfb0535" +serve-static@^1.13.1: + version "1.13.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" dependencies: + encodeurl "~1.0.2" escape-html "~1.0.3" - parseurl "~1.3.1" - send "0.13.2" + parseurl "~1.3.2" + send "0.16.2" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -8903,7 +9074,7 @@ source-map-support@^0.5.0: dependencies: source-map "^0.6.0" -source-map@0.5.x, source-map@^0.5.7, source-map@~0.5.6: +source-map@0.5.x, source-map@^0.5.0, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -8971,13 +9142,13 @@ stacktrace-parser@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz#01397922e5f62ecf30845522c95c4fe1d25e7d4e" -statuses@1, "statuses@>= 1.3.1 < 2", statuses@~1.3.1: +"statuses@>= 1.3.1 < 2", statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" -statuses@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.2.1.tgz#dded45cc18256d51ed40aec142489d5c61026d28" +statuses@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" stealthy-require@^1.1.0: version "1.1.1" @@ -8998,12 +9169,6 @@ stream-counter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-1.0.0.tgz#91cf2569ce4dc5061febcd7acb26394a5a114751" -stream-counter@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-0.2.0.tgz#ded266556319c8b0e222812b9cf3b26fa7d947de" - dependencies: - readable-stream "~1.1.8" - stream-each@^1.1.0: version "1.2.2" resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.2.tgz#8e8c463f91da8991778765873fe4d960d8f616bd" @@ -9372,10 +9537,6 @@ tryit@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" -tsscmp@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.5.tgz#7dc4a33af71581ab4337da91d85ca5427ebd9a97" - tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -9396,7 +9557,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-is@~1.6.15, type-is@~1.6.6: +type-is@~1.6.15: version "1.6.15" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.15.tgz#cab10fb4909e441c82842eafe1ad646c81804410" dependencies: @@ -9415,7 +9576,7 @@ ua-parser-js@^0.7.9: version "0.7.14" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca" -uglify-es@^3.1.8, uglify-es@^3.3.4: +uglify-es@^3.1.9, uglify-es@^3.3.4: version "3.3.10" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.10.tgz#8b0b7992cebe20edc26de1bf325cef797b8f3fa5" dependencies: @@ -9467,18 +9628,6 @@ uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" -uid-safe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.4.tgz#3ad6f38368c6d4c8c75ec17623fb79aa1d071d81" - dependencies: - random-bytes "~1.0.0" - -uid-safe@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.0.0.tgz#a7f3c6ca64a1f6a5d04ec0ef3e4c3d5367317137" - dependencies: - base64-url "1.2.1" - ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" @@ -9624,10 +9773,6 @@ utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" -utils-merge@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -9655,14 +9800,6 @@ validate-npm-package-license@^3.0.1: spdx-correct "~1.0.0" spdx-expression-parse "~1.0.0" -vary@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.0.1.tgz#99e4981566a286118dfb2b817357df7993376d10" - -vary@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.1.tgz#67535ebb694c1d52257457984665323f587e8d37" - vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -9692,10 +9829,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vhost@~3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/vhost/-/vhost-3.0.2.tgz#2fb1decd4c466aa88b0f9341af33dc1aff2478d5" - vinyl@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" @@ -9853,6 +9986,20 @@ which@^1.2.12, which@^1.2.14, which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" +why-did-you-update@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/why-did-you-update/-/why-did-you-update-0.1.1.tgz#c73d361511fecd899056e9954ca9b1ab760d3097" + dependencies: + lodash.every "^4.6.0" + lodash.filter "^4.6.0" + lodash.isequal "^4.5.0" + lodash.isfunction "^3.0.8" + lodash.isstring "^4.0.1" + lodash.keys "^4.2.0" + lodash.pick "^4.4.0" + lodash.some "^4.6.0" + lodash.union "^4.6.0" + wide-align@^1.1.0: version "1.1.2" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" @@ -9899,7 +10046,7 @@ wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" -worker-farm@^1.3.1, worker-farm@^1.5.2: +worker-farm@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.5.2.tgz#32b312e5dc3d5d45d79ef44acc2587491cd729ae" dependencies: