diff --git a/.circleci/config.yml b/.circleci/config.yml
index 6418dd91d..d413ed527 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -71,12 +71,12 @@ jobs:
- run:
name: Build
command: |
- detox build
+ detox build --configuration ios.sim.release
- run:
name: Test
command: |
- detox test
+ detox test --configuration ios.sim.release --cleanup
- store_artifacts:
path: /tmp/screenshots
diff --git a/__tests__/__snapshots__/RoomItem.js.snap b/__tests__/__snapshots__/RoomItem.js.snap
index 33aec8e75..c2fcbe4b7 100644
--- a/__tests__/__snapshots__/RoomItem.js.snap
+++ b/__tests__/__snapshots__/RoomItem.js.snap
@@ -102,6 +102,7 @@ exports[`render channel 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -259,6 +260,7 @@ exports[`render no icon 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -416,6 +418,7 @@ exports[`render private group 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -636,6 +639,7 @@ exports[`render unread +999 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -875,6 +879,7 @@ exports[`render unread 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -1114,6 +1119,7 @@ exports[`renders correctly 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap
index af7b22ae6..43564cf54 100644
--- a/__tests__/__snapshots__/Storyshots.test.js.snap
+++ b/__tests__/__snapshots__/Storyshots.test.js.snap
@@ -460,6 +460,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -674,6 +675,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -892,6 +894,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -1126,6 +1129,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -1364,6 +1368,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -1598,6 +1603,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -1832,6 +1838,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -2066,6 +2073,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -2300,6 +2308,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -2514,6 +2523,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
@@ -2728,6 +2738,7 @@ exports[`Storyshots Channel Cell Direct Messages 1`] = `
"fontStyle": "normal",
"fontWeight": "normal",
},
+ Object {},
]
}
>
diff --git a/app/Icons.js b/app/Icons.js
index d9f947972..b5329d741 100644
--- a/app/Icons.js
+++ b/app/Icons.js
@@ -10,9 +10,10 @@ const icons = {
[`${ prefix }-menu`]: [30, Ionicons, 'menu'],
[`${ prefix }-star`]: [30, Ionicons, 'star'],
[`${ prefix }-star-outline`]: [30, Ionicons, 'starOutline'],
- [isIOS ? 'ios-create-outline' : 'md-create']: [30, Ionicons, 'create'],
+ [isIOS ? 'ios-create' : 'md-create']: [30, Ionicons, 'create'],
[`${ prefix }-more`]: [30, Ionicons, 'more'],
- [`${ prefix }-add`]: [30, Ionicons, 'add']
+ [`${ prefix }-add`]: [30, Ionicons, 'add'],
+ [`${ prefix }-close`]: [30, Ionicons, 'close']
};
const iconsMap = {};
diff --git a/app/Navigation.js b/app/Navigation.js
index f192d2a80..e7bb38bed 100644
--- a/app/Navigation.js
+++ b/app/Navigation.js
@@ -8,6 +8,7 @@ class NavigationActionsClass {
popToRoot = params => this.navigator && this.navigator.popToRoot(params);
resetTo = params => this.navigator && this.navigator.resetTo(params);
toggleDrawer = params => this.navigator && this.navigator.toggleDrawer(params);
+ dismissModal = params => this.navigator && this.navigator.dismissModal(params);
}
export const NavigationActions = new NavigationActionsClass();
diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js
index f65142f66..eb56da9e5 100644
--- a/app/actions/actionsTypes.js
+++ b/app/actions/actionsTypes.js
@@ -76,9 +76,7 @@ export const NAVIGATION = createRequestTypes('NAVIGATION', ['SET']);
export const SERVER = createRequestTypes('SERVER', [
...defaultTypes,
'SELECT_SUCCESS',
- 'SELECT_REQUEST',
- 'CHANGED',
- 'ADD'
+ 'SELECT_REQUEST'
]);
export const METEOR = createRequestTypes('METEOR_CONNECT', [...defaultTypes, 'DISCONNECT', 'DISCONNECT_BY_USER']);
export const LOGOUT = 'LOGOUT'; // logout is always success
diff --git a/app/actions/server.js b/app/actions/server.js
index 4bca6c236..51d1bafff 100644
--- a/app/actions/server.js
+++ b/app/actions/server.js
@@ -21,14 +21,6 @@ export function serverRequest(server) {
};
}
-export function addServer(server) {
- return {
- type: SERVER.ADD,
- server
- };
-}
-
-
export function serverSuccess() {
return {
type: SERVER.SUCCESS
@@ -41,11 +33,3 @@ export function serverFailure(err) {
err
};
}
-
-
-export function changedServer(server) {
- return {
- type: SERVER.CHANGED,
- server
- };
-}
diff --git a/app/containers/Button/index.js b/app/containers/Button/index.js
index 2709aae9f..3bb13137b 100644
--- a/app/containers/Button/index.js
+++ b/app/containers/Button/index.js
@@ -1,48 +1,53 @@
import React from 'react';
import PropTypes from 'prop-types';
-import { StyleSheet, View, Text, Platform } from 'react-native';
+import { StyleSheet, View, Text, Platform, ActivityIndicator } from 'react-native';
import { COLOR_BUTTON_PRIMARY, COLOR_TEXT } from '../../constants/colors';
import Touch from '../../utils/touch';
+import { scale, moderateScale, verticalScale } from '../../utils/scaling';
const colors = {
- backgroundPrimary: COLOR_BUTTON_PRIMARY,
- backgroundSecondary: 'white',
+ background_primary: COLOR_BUTTON_PRIMARY,
+ background_secondary: 'white',
- textColorPrimary: 'white',
- textColorSecondary: COLOR_TEXT
+ text_color_primary: 'white',
+ text_color_secondary: COLOR_TEXT
};
/* eslint-disable react-native/no-unused-styles */
const styles = StyleSheet.create({
container: {
- paddingHorizontal: 15,
- paddingVertical: 10
+ paddingHorizontal: scale(15),
+ justifyContent: 'center',
+ height: scale(48)
},
text: {
+ fontSize: moderateScale(18),
+ height: verticalScale(20),
+ lineHeight: verticalScale(20),
textAlign: 'center',
- fontWeight: '700'
+ fontWeight: '500'
},
background_primary: {
- backgroundColor: colors.backgroundPrimary
+ backgroundColor: colors.background_primary
},
background_secondary: {
- backgroundColor: colors.backgroundSecondary
+ backgroundColor: colors.background_secondary
},
text_color_primary: {
- color: colors.textColorPrimary
+ color: colors.text_color_primary
},
text_color_secondary: {
- color: colors.textColorSecondary
+ color: colors.text_color_secondary
},
margin: {
- marginBottom: 10
+ marginBottom: verticalScale(10)
},
disabled: {
opacity: 0.5
},
border: {
- borderRadius: 2
+ borderRadius: scale(2)
}
});
@@ -53,26 +58,28 @@ export default class Button extends React.PureComponent {
onPress: PropTypes.func,
disabled: PropTypes.bool,
margin: PropTypes.any,
- backgroundColor: PropTypes.string
+ backgroundColor: PropTypes.string,
+ loading: PropTypes.bool
}
static defaultProps = {
title: 'Press me!',
type: 'primary',
onPress: () => alert('It works!'),
- disabled: false
+ disabled: false,
+ loading: false
}
render() {
const {
- title, type, onPress, disabled, margin, backgroundColor, ...otherProps
+ title, type, onPress, disabled, margin, backgroundColor, loading, ...otherProps
} = this.props;
return (
- {title}
+ {
+ loading ?
+ :
+ {title}
+ }
);
diff --git a/app/containers/Sidebar.js b/app/containers/Sidebar.js
index 6a79a16d2..0cbf8aa3f 100644
--- a/app/containers/Sidebar.js
+++ b/app/containers/Sidebar.js
@@ -1,12 +1,13 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
-import { ScrollView, Text, View, StyleSheet, FlatList, LayoutAnimation, SafeAreaView } from 'react-native';
+import { ScrollView, Text, View, StyleSheet, FlatList, LayoutAnimation, SafeAreaView, AsyncStorage } from 'react-native';
import { connect } from 'react-redux';
import FastImage from 'react-native-fast-image';
import Icon from 'react-native-vector-icons/MaterialIcons';
import database from '../lib/realm';
import { selectServerRequest } from '../actions/server';
+import { appStart } from '../actions';
import { logout } from '../actions/login';
import Avatar from '../containers/Avatar';
import Status from '../containers/status';
@@ -16,6 +17,7 @@ import RocketChat from '../lib/rocketchat';
import log from '../utils/log';
import I18n from '../i18n';
import { NavigationActions } from '../Navigation';
+import scrollPersistTaps from '../utils/scrollPersistTaps';
const styles = StyleSheet.create({
container: {
@@ -86,7 +88,8 @@ const keyExtractor = item => item.id;
}
}), dispatch => ({
selectServerRequest: server => dispatch(selectServerRequest(server)),
- logout: () => dispatch(logout())
+ logout: () => dispatch(logout()),
+ appStart: () => dispatch(appStart('outside'))
}))
export default class Sidebar extends Component {
static propTypes = {
@@ -94,7 +97,8 @@ export default class Sidebar extends Component {
server: PropTypes.string.isRequired,
selectServerRequest: PropTypes.func.isRequired,
user: PropTypes.object,
- logout: PropTypes.func.isRequired
+ logout: PropTypes.func.isRequired,
+ appStart: PropTypes.func
}
constructor(props) {
@@ -206,7 +210,7 @@ export default class Sidebar extends Component {
try {
RocketChat.setUserPresenceDefaultStatus(item.id);
} catch (e) {
- log('onPressModalButton', e);
+ log('setUserPresenceDefaultStatus', e);
}
}
}
@@ -226,6 +230,21 @@ export default class Sidebar extends Component {
this.toggleServers();
if (this.props.server !== item.id) {
this.props.selectServerRequest(item.id);
+ const token = await AsyncStorage.getItem(`${ RocketChat.TOKEN_KEY }-${ item.id }`);
+ if (!token) {
+ this.props.appStart();
+ setTimeout(() => {
+ NavigationActions.push({
+ screen: 'NewServerView',
+ passProps: {
+ server: item.id
+ },
+ navigatorStyle: {
+ navBarHidden: true
+ }
+ });
+ }, 1000);
+ }
}
},
testID: `sidebar-${ item.id }`
@@ -289,9 +308,12 @@ export default class Sidebar extends Component {
onPress: () => {
this.closeDrawer();
this.toggleServers();
- NavigationActions.push({
+ this.props.navigator.showModal({
screen: 'NewServerView',
- title: I18n.t('Add_Server')
+ title: I18n.t('Add_Server'),
+ passProps: {
+ previousServer: this.props.server
+ }
});
},
testID: 'sidebar-add-server'
@@ -305,8 +327,8 @@ export default class Sidebar extends Component {
return null;
}
return (
-
-
+
+
this.toggleServers()}
underlayColor='rgba(255, 255, 255, 0.5)'
@@ -338,8 +360,8 @@ export default class Sidebar extends Component {
{!this.state.showServers ? this.renderNavigation() : null}
{this.state.showServers ? this.renderServers() : null}
-
-
+
+
);
}
}
diff --git a/app/containers/TextInput.js b/app/containers/TextInput.js
index fb8504ad8..68178c178 100644
--- a/app/containers/TextInput.js
+++ b/app/containers/TextInput.js
@@ -1,7 +1,6 @@
import React from 'react';
import { View, StyleSheet, Text, TextInput, ViewPropTypes, Platform } from 'react-native';
import PropTypes from 'prop-types';
-
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
import sharedStyles from '../views/Styles';
@@ -21,13 +20,11 @@ const styles = StyleSheet.create({
fontSize: 14,
paddingTop: 12,
paddingBottom: 12,
- // paddingTop: 5,
- // paddingBottom: 5,
paddingHorizontal: 10,
- borderWidth: 2,
- borderRadius: 4,
+ borderWidth: 1.5,
+ borderRadius: 2,
backgroundColor: 'white',
- borderColor: 'rgba(0,0,0,.15)',
+ borderColor: '#E7EBF2',
color: 'black'
},
labelError: {
diff --git a/app/containers/message/Markdown.js b/app/containers/message/Markdown.js
index 67454c115..29d7e4f79 100644
--- a/app/containers/message/Markdown.js
+++ b/app/containers/message/Markdown.js
@@ -65,7 +65,8 @@ export default class Markdown extends React.Component {
}
return null;
},
- blocklink: () => {},
+ hardbreak: () => null,
+ blocklink: () => null,
image: node => (
// TODO: should use Image component
diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js
index ef8175340..cdb64afec 100644
--- a/app/i18n/locales/en.js
+++ b/app/i18n/locales/en.js
@@ -116,6 +116,7 @@ export default {
Code: 'Code',
Colaborative: 'Colaborative',
Connect: 'Connect',
+ Connect_to_a_server: 'Connect to a server',
Connected_to: 'Connected to',
Connecting: 'Connecting',
Copied_to_clipboard: 'Copied to clipboard!',
@@ -123,6 +124,7 @@ export default {
Copy_Permalink: 'Copy Permalink',
Create_account: 'Create account',
Create_Channel: 'Create Channel',
+ Create_a_new_workspace: 'Create a new workspace',
Create: 'Create',
Delete_Room_Warning: 'Deleting a room will delete all messages posted within the room. This cannot be undone.',
delete: 'delete',
@@ -153,6 +155,7 @@ export default {
is_a_valid_RocketChat_instance: 'is a valid Rocket.Chat instance',
is_not_a_valid_RocketChat_instance: 'is not a valid Rocket.Chat instance',
is_typing: 'is typing',
+ Join_the_community: 'Join the community',
Just_invited_people_can_access_this_channel: 'Just invited people can access this channel',
Language: 'Language',
last_message: 'last message',
@@ -197,9 +200,11 @@ export default {
Notify_active_in_this_room: 'Notify active users in this room',
Notify_all_in_this_room: 'Notify all in this room',
Offline: 'Offline',
+ Oops: 'Oops!',
Online: 'Online',
Only_authorized_users_can_write_new_messages: 'Only authorized users can write new messages',
Open_emoji_selector: 'Open emoji selector',
+ Open_Source_Communication: 'Open Source Communication',
Or_continue_using_social_accounts: 'Or continue using social accounts',
Password: 'Password',
Permalink_copied_to_clipboard: 'Permalink copied to clipboard!',
@@ -274,6 +279,7 @@ export default {
tap_to_change_status: 'tap to change status',
Tap_to_view_servers_list: 'Tap to view servers list',
Terms_of_Service: ' Terms of Service ',
+ The_URL_is_invalid: 'The URL you entered is invalid. Check it and try again, please!',
There_was_an_error_while_action: 'There was an error while {{action}}!',
This_room_is_blocked: 'This room is blocked',
This_room_is_read_only: 'This room is read only',
@@ -307,6 +313,7 @@ export default {
Welcome: 'Welcome',
Welcome_title_pt_1: 'Prepare to take off with',
Welcome_title_pt_2: 'the ultimate chat platform',
+ Welcome_to_RocketChat: 'Welcome to Rocket.Chat',
Yes_action_it: 'Yes, {{action}} it!',
Yesterday: 'Yesterday',
You_are_in_preview_mode: 'You are in preview mode',
diff --git a/app/index.js b/app/index.js
index d0ceb4ef9..8427d44ce 100644
--- a/app/index.js
+++ b/app/index.js
@@ -4,7 +4,6 @@ import { Navigation } from 'react-native-navigation';
import store from './lib/createStore';
import { appInit } from './actions';
-import database from './lib/realm';
import { iconsLoaded } from './Icons';
import { registerScreens } from './views';
import { deepLinkingOpen } from './actions/deepLinking';
@@ -27,21 +26,21 @@ const startLogged = () => {
});
};
-const startNotLogged = (route) => {
+const startNotLogged = () => {
Navigation.startSingleScreenApp({
screen: {
- screen: route,
- title: route === 'NewServerView' ? I18n.t('New_Server') : I18n.t('Servers')
+ screen: 'OnboardingView',
+ navigatorStyle: {
+ navBarHidden: true
+ }
},
- animationType: 'fade'
+ animationType: 'fade',
+ appStyle: {
+ orientation: 'portrait'
+ }
});
};
-const hasServers = () => {
- const db = database.databases.serversDB.objects('servers');
- return db.length > 0;
-};
-
const handleOpenURL = ({ url }) => {
if (url) {
url = url.replace(/rocketchat:\/\/|https:\/\/go.rocket.chat\//, '');
@@ -77,11 +76,7 @@ export default class App extends Component {
if (this.currentRoot !== root) {
this.currentRoot = root;
if (root === 'outside') {
- if (hasServers()) {
- startNotLogged('ListServerView');
- } else {
- startNotLogged('NewServerView');
- }
+ startNotLogged();
} else if (root === 'inside') {
startLogged();
}
diff --git a/app/lib/methods/helpers/mergeSubscriptionsRooms.js b/app/lib/methods/helpers/mergeSubscriptionsRooms.js
index a95d59b95..05a866f6e 100644
--- a/app/lib/methods/helpers/mergeSubscriptionsRooms.js
+++ b/app/lib/methods/helpers/mergeSubscriptionsRooms.js
@@ -2,6 +2,9 @@ import normalizeMessage from './normalizeMessage';
// TODO: delete and update
export const merge = (subscription, room) => {
+ if (!subscription) {
+ return;
+ }
if (room) {
if (room.rid) {
subscription.rid = room.rid;
diff --git a/app/reducers/server.js b/app/reducers/server.js
index 6b9d8c29e..db6d59119 100644
--- a/app/reducers/server.js
+++ b/app/reducers/server.js
@@ -3,11 +3,10 @@ import { SERVER } from '../actions/actionsTypes';
const initialState = {
connecting: false,
connected: false,
- errorMessage: '',
failure: false,
server: '',
- adding: false,
- loading: true
+ loading: true,
+ adding: true
};
@@ -17,14 +16,8 @@ export default function server(state = initialState, action) {
return {
...state,
connecting: true,
- failure: false
- };
- case SERVER.SUCCESS:
- return {
- ...state,
- connecting: false,
- connected: true,
- failure: false
+ failure: false,
+ adding: true
};
case SERVER.FAILURE:
return {
@@ -32,24 +25,22 @@ export default function server(state = initialState, action) {
connecting: false,
connected: false,
failure: true,
- errorMessage: action.err
- };
- case SERVER.ADD:
- return {
- ...state,
- adding: true
+ adding: false
};
case SERVER.SELECT_REQUEST:
return {
...state,
server: action.server,
+ connecting: true,
+ connected: false,
loading: true
};
case SERVER.SELECT_SUCCESS:
return {
...state,
server: action.server,
- adding: false,
+ connecting: false,
+ connected: true,
loading: false
};
default:
diff --git a/app/sagas/createChannel.js b/app/sagas/createChannel.js
index f9b285616..9f64e3b40 100644
--- a/app/sagas/createChannel.js
+++ b/app/sagas/createChannel.js
@@ -12,7 +12,7 @@ const create = function* create(data) {
const handleRequest = function* handleRequest({ data }) {
try {
- yield delay(1000);
+ // yield delay(1000);
const auth = yield select(state => state.login.isAuthenticated);
if (!auth) {
yield take(LOGIN.SUCCESS);
diff --git a/app/sagas/deepLinking.js b/app/sagas/deepLinking.js
index 11bbbd35b..ce21d94b4 100644
--- a/app/sagas/deepLinking.js
+++ b/app/sagas/deepLinking.js
@@ -3,7 +3,7 @@ import { takeLatest, take, select, put } from 'redux-saga/effects';
import * as types from '../actions/actionsTypes';
import { appStart } from '../actions';
-import { selectServerRequest, addServer } from '../actions/server';
+import { selectServerRequest } from '../actions/server';
import database from '../lib/realm';
import RocketChat from '../lib/rocketchat';
import { NavigationActions } from '../Navigation';
@@ -73,7 +73,7 @@ const handleOpen = function* handleOpen({ params }) {
yield navigate({ params, sameServer: false });
}
} else {
- yield put(addServer(host));
+ yield put(selectServerRequest(host));
}
}
};
diff --git a/app/sagas/login.js b/app/sagas/login.js
index 25ce45c52..cf7732a19 100644
--- a/app/sagas/login.js
+++ b/app/sagas/login.js
@@ -23,6 +23,7 @@ import {
import RocketChat from '../lib/rocketchat';
import log from '../utils/log';
import I18n from '../i18n';
+import { NavigationActions } from '../Navigation';
const getUser = state => state.login.user;
const getServer = state => state.server.server;
@@ -44,6 +45,7 @@ const handleLoginSuccess = function* handleLoginSuccess() {
yield put(registerIncomplete());
} else {
yield delay(300);
+ NavigationActions.dismissModal();
yield put(appStart('inside'));
}
} catch (e) {
@@ -103,7 +105,10 @@ const handleLogout = function* handleLogout() {
};
const handleRegisterIncomplete = function* handleRegisterIncomplete() {
- yield put(appStart('outside'));
+ const server = yield select(state => state.server);
+ if (!server.adding) {
+ yield put(appStart('outside'));
+ }
};
const handleForgotPasswordRequest = function* handleForgotPasswordRequest({ email }) {
diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js
index ae30f4e9e..9a1e4f248 100644
--- a/app/sagas/selectServer.js
+++ b/app/sagas/selectServer.js
@@ -1,17 +1,15 @@
import { put, call, takeLatest } from 'redux-saga/effects';
-import { delay } from 'redux-saga';
import { AsyncStorage } from 'react-native';
import { NavigationActions } from '../Navigation';
import { SERVER } from '../actions/actionsTypes';
import * as actions from '../actions';
import { connectRequest } from '../actions/connect';
-import { serverSuccess, serverFailure, selectServerRequest, selectServerSuccess } from '../actions/server';
+import { serverFailure, selectServerRequest, selectServerSuccess } from '../actions/server';
import { setRoles } from '../actions/roles';
import RocketChat from '../lib/rocketchat';
import database from '../lib/realm';
import log from '../utils/log';
-import I18n from '../i18n';
const validate = function* validate(server) {
return yield RocketChat.testServer(server);
@@ -24,8 +22,6 @@ const handleSelectServer = function* handleSelectServer({ server }) {
const token = yield AsyncStorage.getItem(`${ RocketChat.TOKEN_KEY }-${ server }`);
if (token) {
yield put(actions.appStart('inside'));
- } else {
- yield put(actions.appStart('outside'));
}
const settings = database.objects('settings');
@@ -45,33 +41,22 @@ const handleSelectServer = function* handleSelectServer({ server }) {
}
};
-const validateServer = function* validateServer({ server }) {
+const handleServerRequest = function* handleServerRequest({ server }) {
try {
- yield delay(1000);
yield call(validate, server);
- yield put(serverSuccess());
- } catch (e) {
- console.warn('validateServer', e);
- yield put(serverFailure(e));
- }
-};
-
-const addServer = function* addServer({ server }) {
- try {
- yield put(actions.appStart('outside'));
- yield call(NavigationActions.resetTo, { screen: 'ListServerView', title: I18n.t('Servers') });
+ yield call(NavigationActions.push, { screen: 'LoginSignupView', title: server });
database.databases.serversDB.write(() => {
database.databases.serversDB.create('servers', { id: server, current: false }, true);
});
yield put(selectServerRequest(server));
} catch (e) {
- log('addServer', e);
+ yield put(serverFailure());
+ log('handleServerRequest', e);
}
};
const root = function* root() {
- yield takeLatest(SERVER.REQUEST, validateServer);
yield takeLatest(SERVER.SELECT_REQUEST, handleSelectServer);
- yield takeLatest(SERVER.ADD, addServer);
+ yield takeLatest(SERVER.REQUEST, handleServerRequest);
};
export default root;
diff --git a/app/static/images/connectServer.png b/app/static/images/connectServer.png
new file mode 100644
index 000000000..e5e2c021f
Binary files /dev/null and b/app/static/images/connectServer.png differ
diff --git a/app/static/images/connectServer@2x.png b/app/static/images/connectServer@2x.png
new file mode 100644
index 000000000..5cd548403
Binary files /dev/null and b/app/static/images/connectServer@2x.png differ
diff --git a/app/static/images/connectServer@3x.png b/app/static/images/connectServer@3x.png
new file mode 100644
index 000000000..a75cf1fa7
Binary files /dev/null and b/app/static/images/connectServer@3x.png differ
diff --git a/app/static/images/disclosureIndicator.png b/app/static/images/disclosureIndicator.png
new file mode 100644
index 000000000..ad75c1fbe
Binary files /dev/null and b/app/static/images/disclosureIndicator.png differ
diff --git a/app/static/images/disclosureIndicator@2x.png b/app/static/images/disclosureIndicator@2x.png
new file mode 100644
index 000000000..b3e963102
Binary files /dev/null and b/app/static/images/disclosureIndicator@2x.png differ
diff --git a/app/static/images/disclosureIndicator@3x.png b/app/static/images/disclosureIndicator@3x.png
new file mode 100644
index 000000000..788e682e8
Binary files /dev/null and b/app/static/images/disclosureIndicator@3x.png differ
diff --git a/app/static/images/logoSmall.png b/app/static/images/logoSmall.png
new file mode 100644
index 000000000..75d82a00d
Binary files /dev/null and b/app/static/images/logoSmall.png differ
diff --git a/app/static/images/logoSmall@2x.png b/app/static/images/logoSmall@2x.png
new file mode 100644
index 000000000..a3e70aa1f
Binary files /dev/null and b/app/static/images/logoSmall@2x.png differ
diff --git a/app/static/images/logoSmall@3x.png b/app/static/images/logoSmall@3x.png
new file mode 100644
index 000000000..0eb81e2e2
Binary files /dev/null and b/app/static/images/logoSmall@3x.png differ
diff --git a/app/static/images/logo_with_text.png b/app/static/images/logo_with_text.png
deleted file mode 100644
index 623349a06..000000000
Binary files a/app/static/images/logo_with_text.png and /dev/null differ
diff --git a/app/static/images/navicon_add@2x.png b/app/static/images/navicon_add@2x.png
deleted file mode 100644
index 4df23afcc..000000000
Binary files a/app/static/images/navicon_add@2x.png and /dev/null differ
diff --git a/app/static/images/navicon_menu@2x.png b/app/static/images/navicon_menu@2x.png
deleted file mode 100644
index 12c54031f..000000000
Binary files a/app/static/images/navicon_menu@2x.png and /dev/null differ
diff --git a/app/static/images/onboarding.png b/app/static/images/onboarding.png
new file mode 100644
index 000000000..c3b3f90fb
Binary files /dev/null and b/app/static/images/onboarding.png differ
diff --git a/app/static/images/onboarding@2x.png b/app/static/images/onboarding@2x.png
new file mode 100644
index 000000000..f0b2bc754
Binary files /dev/null and b/app/static/images/onboarding@2x.png differ
diff --git a/app/static/images/onboarding@3x.png b/app/static/images/onboarding@3x.png
new file mode 100644
index 000000000..c5fda3c19
Binary files /dev/null and b/app/static/images/onboarding@3x.png differ
diff --git a/app/static/images/planet.png b/app/static/images/planet.png
deleted file mode 100644
index 29989ae75..000000000
Binary files a/app/static/images/planet.png and /dev/null differ
diff --git a/app/static/images/plusWhite.png b/app/static/images/plusWhite.png
new file mode 100644
index 000000000..4cceffccc
Binary files /dev/null and b/app/static/images/plusWhite.png differ
diff --git a/app/static/images/plusWhite@2x.png b/app/static/images/plusWhite@2x.png
new file mode 100644
index 000000000..69276aa00
Binary files /dev/null and b/app/static/images/plusWhite@2x.png differ
diff --git a/app/static/images/plusWhite@3x.png b/app/static/images/plusWhite@3x.png
new file mode 100644
index 000000000..5a9c0ceee
Binary files /dev/null and b/app/static/images/plusWhite@3x.png differ
diff --git a/app/static/images/server.png b/app/static/images/server.png
new file mode 100644
index 000000000..68d0a3a91
Binary files /dev/null and b/app/static/images/server.png differ
diff --git a/app/static/images/server@2x.png b/app/static/images/server@2x.png
new file mode 100644
index 000000000..faa77e0bc
Binary files /dev/null and b/app/static/images/server@2x.png differ
diff --git a/app/static/images/server@3x.png b/app/static/images/server@3x.png
new file mode 100644
index 000000000..402786c78
Binary files /dev/null and b/app/static/images/server@3x.png differ
diff --git a/app/utils/openLink.android.js b/app/utils/openLink/index.android.js
similarity index 53%
rename from app/utils/openLink.android.js
rename to app/utils/openLink/index.android.js
index 59ab9fba2..804318476 100644
--- a/app/utils/openLink.android.js
+++ b/app/utils/openLink/index.android.js
@@ -1,4 +1,4 @@
-import CustomTabsAndroid from '../nativeModules/CustomTabsAndroid';
+import CustomTabsAndroid from '../../nativeModules/CustomTabsAndroid';
const openLink = url => CustomTabsAndroid.openURL(url);
diff --git a/app/utils/openLink.ios.js b/app/utils/openLink/index.ios.js
similarity index 100%
rename from app/utils/openLink.ios.js
rename to app/utils/openLink/index.ios.js
diff --git a/app/utils/scaling.js b/app/utils/scaling.js
new file mode 100644
index 000000000..17fc1b93e
--- /dev/null
+++ b/app/utils/scaling.js
@@ -0,0 +1,12 @@
+import { Dimensions } from 'react-native';
+
+const { width, height } = Dimensions.get('window');
+
+const guidelineBaseWidth = 375;
+const guidelineBaseHeight = 667;
+
+const scale = size => (width / guidelineBaseWidth) * size;
+const verticalScale = size => (height / guidelineBaseHeight) * size;
+const moderateScale = (size, factor = 0.5) => size + ((scale(size) - size) * factor);
+
+export { scale, verticalScale, moderateScale };
diff --git a/app/views/ListServerView.js b/app/views/ListServerView.js
deleted file mode 100644
index 072e4e372..000000000
--- a/app/views/ListServerView.js
+++ /dev/null
@@ -1,205 +0,0 @@
-import React from 'react';
-import Icon from 'react-native-vector-icons/Ionicons';
-import PropTypes from 'prop-types';
-import { View, Text, SectionList, StyleSheet, SafeAreaView } from 'react-native';
-import { connect } from 'react-redux';
-
-import LoggedView from './View';
-import { selectServerRequest } from '../actions/server';
-import database from '../lib/realm';
-import Fade from '../animations/fade';
-import Touch from '../utils/touch';
-import I18n from '../i18n';
-import { iconsMap } from '../Icons';
-
-const styles = StyleSheet.create({
- container: {
- flex: 1,
- backgroundColor: '#fff'
- },
- separator: {
- height: 1,
- backgroundColor: '#eee'
- },
- headerStyle: {
- backgroundColor: '#eee',
- lineHeight: 24,
- paddingLeft: 14,
- color: '#888'
- },
- serverItem: {
- flexDirection: 'row',
- alignItems: 'center',
- backgroundColor: '#fff',
- padding: 14
- },
- listItem: {
- color: '#666',
- flexGrow: 1,
- lineHeight: 30
- },
- serverChecked: {
- flexGrow: 0
- }
-});
-
-@connect(state => ({
- server: state.server.server,
- login: state.login,
- connected: state.meteor.connected
-}), dispatch => ({
- selectServerRequest: server => dispatch(selectServerRequest(server))
-}))
-/** @extends React.Component */
-export default class ListServerView extends LoggedView {
- static propTypes = {
- navigator: PropTypes.object,
- login: PropTypes.object.isRequired,
- selectServerRequest: PropTypes.func.isRequired,
- server: PropTypes.string
- }
-
- constructor(props) {
- super('ListServerView', props);
- this.focused = true;
- this.state = {
- sections: []
- };
- this.data = database.databases.serversDB.objects('servers');
- this.data.addListener(this.updateState);
- props.navigator.setOnNavigatorEvent(this.onNavigatorEvent.bind(this));
- }
-
- async componentWillMount() {
- this.props.navigator.setButtons({
- rightButtons: [{
- id: 'addServer',
- icon: iconsMap.add
- }]
- });
- }
-
- componentDidMount() {
- this.updateState();
- this.jumpToSelectedServer();
- }
-
- componentWillReceiveProps(nextProps) {
- if (this.props.server !== nextProps.server && nextProps.server && !this.props.login.isRegistering) {
- this.timeout = setTimeout(() => {
- this.openLogin(nextProps.server);
- }, 1000);
- }
- }
-
- componentWillUnmount() {
- this.data.removeAllListeners();
- if (this.timeout) {
- clearTimeout(this.timeout);
- }
- }
-
- onNavigatorEvent(event) {
- if (event.type === 'NavBarButtonPress') {
- if (event.id === 'addServer') {
- this.props.navigator.push({
- screen: 'NewServerView',
- title: I18n.t('New_Server')
- });
- }
- } else if (event.type === 'ScreenChangedEvent') {
- this.focused = event.id === 'didAppear' || event.id === 'onActivityResumed';
- }
- }
-
- onPressItem = (item) => {
- this.selectAndNavigateTo(item.id);
- }
-
- getState = () => {
- const sections = [{
- title: I18n.t('My_servers'),
- data: this.data
- }];
-
- return {
- ...this.state,
- sections
- };
- };
-
- openLogin = (server) => {
- if (this.focused) {
- this.props.navigator.push({
- screen: 'LoginSignupView',
- title: server
- });
- }
- }
-
- selectAndNavigateTo = (server) => {
- this.props.selectServerRequest(server);
- this.openLogin(server);
- }
-
- jumpToSelectedServer() {
- if (this.props.server && !this.props.login.isRegistering) {
- setTimeout(() => {
- this.openLogin(this.props.server);
- }, 1000);
- }
- }
-
- updateState = () => {
- this.setState(this.getState());
- }
-
- renderItem = ({ item }) => (
- { this.onPressItem(item); }}
- >
-
-
- {item.id}
-
-
-
-
-
-
- );
-
-
- renderSectionHeader = ({ section }) => (
- {section.title}
- );
-
- renderSeparator = () => (
-
- );
-
- render() {
- return (
-
- item.id}
- ItemSeparatorComponent={this.renderSeparator}
- />
-
- );
- }
-}
diff --git a/app/views/LoginSignupView.js b/app/views/LoginSignupView.js
index 2ef0ba760..9560021fd 100644
--- a/app/views/LoginSignupView.js
+++ b/app/views/LoginSignupView.js
@@ -281,16 +281,11 @@ export default class LoginSignupView extends LoggedView {
>
-
{I18n.t('Welcome_title_pt_1')}
{I18n.t('Welcome_title_pt_2')}
);
diff --git a/app/views/RoomView/index.js b/app/views/RoomView/index.js
index e824b9aa9..a754e5736 100644
--- a/app/views/RoomView/index.js
+++ b/app/views/RoomView/index.js
@@ -72,7 +72,7 @@ export default class RoomView extends LoggedView {
props.navigator.setOnNavigatorEvent(this.onNavigatorEvent.bind(this));
}
- async componentWillMount() {
+ componentWillMount() {
this.props.navigator.setButtons({
rightButtons: [{
id: 'more',
@@ -267,7 +267,7 @@ export default class RoomView extends LoggedView {
);
}
- return ;
+ return ;
};
renderHeader = () => {
@@ -282,14 +282,17 @@ export default class RoomView extends LoggedView {
return ;
}
return (
-
+ [
+
,
+ this.renderFooter()
+ ]
);
}
@@ -297,7 +300,6 @@ export default class RoomView extends LoggedView {
return (
{this.renderList()}
- {this.renderFooter()}
{this.state.room._id && this.props.showActions ?
:
null}
diff --git a/app/views/Styles.js b/app/views/Styles.js
index 4f4569e03..c0fe421ff 100644
--- a/app/views/Styles.js
+++ b/app/views/Styles.js
@@ -8,7 +8,7 @@ export default StyleSheet.create({
flex: 1
},
containerScrollView: {
- padding: 20
+ padding: 15
},
label: {
lineHeight: 40,
@@ -191,11 +191,6 @@ export default StyleSheet.create({
fontSize: 20,
marginBottom: 20
},
- loginLogo: {
- width: 50,
- height: 50,
- marginVertical: 25
- },
headerButton: {
backgroundColor: 'transparent',
height: 44,
diff --git a/app/views/index.js b/app/views/index.js
index 1a586a8b3..1370a01dd 100644
--- a/app/views/index.js
+++ b/app/views/index.js
@@ -3,12 +3,12 @@ import { Provider } from 'react-redux';
import CreateChannelView from './CreateChannelView';
import ForgotPasswordView from './ForgotPasswordView';
-import ListServerView from './ListServerView';
import LoginSignupView from './LoginSignupView';
import LoginView from './LoginView';
import MentionedMessagesView from './MentionedMessagesView';
import NewServerView from './NewServerView';
import OAuthView from './OAuthView';
+import OnboardingView from './OnboardingView';
import PinnedMessagesView from './PinnedMessagesView';
import PrivacyPolicyView from './PrivacyPolicyView';
import ProfileView from './ProfileView';
@@ -32,12 +32,12 @@ import TermsServiceView from './TermsServiceView';
export const registerScreens = (store) => {
Navigation.registerComponent('CreateChannelView', () => CreateChannelView, store, Provider);
Navigation.registerComponent('ForgotPasswordView', () => ForgotPasswordView, store, Provider);
- Navigation.registerComponent('ListServerView', () => ListServerView, store, Provider);
Navigation.registerComponent('LoginSignupView', () => LoginSignupView, store, Provider);
Navigation.registerComponent('LoginView', () => LoginView, store, Provider);
Navigation.registerComponent('MentionedMessagesView', () => MentionedMessagesView, store, Provider);
Navigation.registerComponent('NewServerView', () => NewServerView, store, Provider);
Navigation.registerComponent('OAuthView', () => OAuthView, store, Provider);
+ Navigation.registerComponent('OnboardingView', () => OnboardingView, store, Provider);
Navigation.registerComponent('PinnedMessagesView', () => PinnedMessagesView, store, Provider);
Navigation.registerComponent('PrivacyPolicyView', () => PrivacyPolicyView, store, Provider);
Navigation.registerComponent('ProfileView', () => ProfileView, store, Provider);
diff --git a/e2e/00-addserver.spec.js b/e2e/00-addserver.spec.js
deleted file mode 100644
index 5c57bacfa..000000000
--- a/e2e/00-addserver.spec.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const {
- device, expect, element, by, waitFor
-} = require('detox');
-const { takeScreenshot } = require('./helpers/screenshot');
-const data = require('./data');
-
-describe('Add server', () => {
- before(async() => {
- await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(2000);
- });
-
- describe('Render', async() => {
- it('should have add server screen', async() => {
- await expect(element(by.id('new-server-view'))).toBeVisible();
- });
-
- it('should have server input', async() => {
- await expect(element(by.id('new-server-view-input'))).toBeVisible();
- });
-
- it('should have submit button', async() => {
- await expect(element(by.id('new-server-view-button'))).toBeVisible();
- });
-
- after(async() => {
- takeScreenshot();
- });
- });
-
- describe('Usage', async() => {
- it('should insert "invalidtest" and get an invalid instance', async() => {
- await element(by.id('new-server-view-input')).replaceText('invalidtest');
- await waitFor(element(by.text(' is not a valid Rocket.Chat instance'))).toBeVisible().withTimeout(60000);
- await expect(element(by.text(' is not a valid Rocket.Chat instance'))).toBeVisible();
- });
-
- it('should have a button to add a new server', async() => {
- await element(by.id('new-server-view-input')).replaceText(data.server);
- await waitFor(element(by.text(' is a valid Rocket.Chat instance'))).toBeVisible().withTimeout(60000);
- await expect(element(by.id('new-server-view-button'))).toBeVisible();
- await element(by.id('new-server-view-button')).tap();
- await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
- await expect(element(by.id('welcome-view'))).toBeVisible();
- });
-
- afterEach(async() => {
- takeScreenshot();
- });
- });
-});
diff --git a/e2e/00-onboarding.spec.js b/e2e/00-onboarding.spec.js
new file mode 100644
index 000000000..a75921957
--- /dev/null
+++ b/e2e/00-onboarding.spec.js
@@ -0,0 +1,76 @@
+const {
+ device, expect, element, by, waitFor
+} = require('detox');
+const { takeScreenshot } = require('./helpers/screenshot');
+const data = require('./data');
+
+describe('Onboarding', () => {
+ before(async() => {
+ await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
+ });
+
+ describe('Render', async() => {
+ it('should have onboarding screen', async() => {
+ await expect(element(by.id('onboarding-view'))).toBeVisible();
+ });
+
+ it('should have "Connect to a server"', async() => {
+ await expect(element(by.id('connect-server-button'))).toBeVisible();
+ });
+
+ it('should have "Join the community"', async() => {
+ await expect(element(by.id('join-community-button'))).toBeVisible();
+ });
+
+ it('should have "Create a new workspace"', async() => {
+ await expect(element(by.id('create-workspace-button'))).toBeVisible();
+ });
+
+ after(async() => {
+ takeScreenshot();
+ });
+ });
+
+ describe('Usage', async() => {
+ it('should navigate to create new workspace', async() => {
+ // webviews are not supported by detox: https://github.com/wix/detox/issues/136#issuecomment-306591554
+ });
+
+ it('should navigate to join community', async() => {
+ await element(by.id('join-community-button')).tap();
+ await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id('welcome-view'))).toBeVisible();
+ await waitFor(element(by.text('https://open.rocket.chat'))).toBeVisible().withTimeout(60000);
+ await expect(element(by.text('https://open.rocket.chat'))).toBeVisible();
+ });
+
+ it('should navigate to new server', async() => {
+ await device.reloadReactNative();
+ await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
+ await element(by.id('connect-server-button')).tap();
+ await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id('new-server-view'))).toBeVisible();
+ });
+
+ it('should enter an invalid server and get error', async() => {
+ await element(by.id('new-server-view-input')).replaceText('invalidtest');
+ await element(by.id('new-server-view-button')).tap();
+ const errorText = 'The URL you entered is invalid. Check it and try again, please!';
+ await waitFor(element(by.text(errorText))).toBeVisible().withTimeout(60000);
+ await expect(element(by.text(errorText))).toBeVisible();
+ });
+
+ it('should enter a valid server and navigate to welcome', async() => {
+ await element(by.text('OK')).tap();
+ await element(by.id('new-server-view-input')).replaceText(data.server);
+ await element(by.id('new-server-view-button')).tap();
+ await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id('welcome-view'))).toBeVisible();
+ });
+
+
+ afterEach(async() => {
+ takeScreenshot();
+ });
+ });
+});
diff --git a/e2e/03-createuser.spec.js b/e2e/03-createuser.spec.js
index 572eb6888..e4d9615b8 100644
--- a/e2e/03-createuser.spec.js
+++ b/e2e/03-createuser.spec.js
@@ -5,16 +5,17 @@ const { takeScreenshot } = require('./helpers/screenshot');
const { logout, sleep } = require('./helpers/app');
const data = require('./data');
-async function navigateToRegister() {
- await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000);
- await element(by.id('welcome-view-register')).tap();
- await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000);
-}
-
describe('Create user screen', () => {
before(async() => {
await device.reloadReactNative();
- await navigateToRegister();
+ await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
+ await element(by.id('connect-server-button')).tap();
+ await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
+ await element(by.id('new-server-view-input')).replaceText(data.server);
+ await element(by.id('new-server-view-button')).tap();
+ await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
+ await element(by.id('welcome-view-register')).tap();
+ await waitFor(element(by.id('register-view'))).toBeVisible().withTimeout(2000);
});
describe('Render', () => {
diff --git a/e2e/04-login.spec.js b/e2e/04-login.spec.js
index 24549d71e..c017646f3 100644
--- a/e2e/04-login.spec.js
+++ b/e2e/04-login.spec.js
@@ -63,7 +63,8 @@ describe('Login screen', () => {
await tapBack('Welcome');
await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000);
await expect(element(by.id('welcome-view'))).toBeVisible();
- await navigateToLogin();
+ await element(by.id('welcome-view-login')).tap();
+ await expect(element(by.id('login-view'))).toBeVisible();
});
it('should insert wrong password and get error', async() => {
diff --git a/e2e/05-roomslist.spec.js b/e2e/05-roomslist.spec.js
index 4fd52089a..c0281d4b3 100644
--- a/e2e/05-roomslist.spec.js
+++ b/e2e/05-roomslist.spec.js
@@ -6,9 +6,9 @@ const { login, navigateToLogin, tapBack } = require('./helpers/app');
const data = require('./data');
describe('Rooms list screen', () => {
- before(async() => {
- await device.reloadReactNative(); // TODO: remove this after fix logout subscription
- });
+ // before(async() => {
+ // await device.reloadReactNative(); // TODO: remove this after fix logout subscription
+ // });
describe('Render', async() => {
it('should have rooms list screen', async() => {
@@ -71,7 +71,7 @@ describe('Rooms list screen', () => {
await element(by.id('sidebar-add-server')).tap();
await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(2000);
await expect(element(by.id('new-server-view'))).toBeVisible();
- await tapBack('Messages');
+ await element(by.text('Close')).tap();
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(2000);
await expect(element(by.id('rooms-list-view'))).toBeVisible();
});
@@ -81,15 +81,18 @@ describe('Rooms list screen', () => {
await waitFor(element(by.id('sidebar'))).toBeVisible().withTimeout(2000);
await waitFor(element(by.id('sidebar-logout'))).toBeVisible().withTimeout(2000);
await element(by.id('sidebar-logout')).tap();
- await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(60000);
- await expect(element(by.id('welcome-view'))).toBeVisible();
- await navigateToLogin();
- await login();
+ await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id('onboarding-view'))).toBeVisible();
});
});
afterEach(async() => {
takeScreenshot();
});
+
+ after(async() => {
+ await navigateToLogin();
+ await login();
+ })
});
});
diff --git a/e2e/06-createroom.spec.js b/e2e/06-createroom.spec.js
index 346321d29..ffa510e3b 100644
--- a/e2e/06-createroom.spec.js
+++ b/e2e/06-createroom.spec.js
@@ -7,7 +7,7 @@ const { tapBack } = require('./helpers/app');
describe('Create room screen', () => {
before(async() => {
- await device.reloadReactNative(); // TODO: remove this after fix logout subscription
+ // await device.reloadReactNative(); // TODO: remove this after fix logout subscription
await element(by.id('rooms-list-view-create-channel')).tap();
await waitFor(element(by.id('select-users-view'))).toBeVisible().withTimeout(2000);
});
diff --git a/e2e/07-room.spec.js b/e2e/07-room.spec.js
index d00fdd5c1..2100ad0f2 100644
--- a/e2e/07-room.spec.js
+++ b/e2e/07-room.spec.js
@@ -149,7 +149,7 @@ describe('Room screen', () => {
await element(by.id('messagebox-input')).typeText('#general');
await waitFor(element(by.id('messagebox-container'))).toBeVisible().withTimeout(60000);
await expect(element(by.id('messagebox-container'))).toBeVisible();
- await element(by.id('mention-item-general')).tap();
+ await element(by.id('mention-item-general')).atIndex(0).tap();
await expect(element(by.id('messagebox-input'))).toHaveText('#general ');
await element(by.id('messagebox-input')).clearText();
});
diff --git a/e2e/08-roomactions.spec.js b/e2e/08-roomactions.spec.js
index 7e3f0bb8c..cc314a8fb 100644
--- a/e2e/08-roomactions.spec.js
+++ b/e2e/08-roomactions.spec.js
@@ -289,22 +289,21 @@ describe('Room actions screen', () => {
describe('Add User', async() => {
it('should add user to the room', async() => {
- const user = 'detoxrn';
await waitFor(element(by.id('room-actions-add-user'))).toBeVisible().whileElement(by.id('room-actions-list')).scroll(scrollDown, 'up');
await element(by.id('room-actions-add-user')).tap();
await element(by.id('select-users-view-search')).tap();
- await element(by.id('select-users-view-search')).replaceText(user);
- await waitFor(element(by.id(`select-users-view-item-${ user }`))).toBeVisible().withTimeout(60000);
- await expect(element(by.id(`select-users-view-item-${ user }`))).toBeVisible();
- await element(by.id(`select-users-view-item-${ user }`)).tap();
- await waitFor(element(by.id(`selected-user-${ user }`))).toBeVisible().withTimeout(5000);
- await expect(element(by.id(`selected-user-${ user }`))).toBeVisible();
+ await element(by.id('select-users-view-search')).replaceText(data.alternateUser);
+ await waitFor(element(by.id(`select-users-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id(`select-users-view-item-${ data.alternateUser }`))).toBeVisible();
+ await element(by.id(`select-users-view-item-${ data.alternateUser }`)).tap();
+ await waitFor(element(by.id(`selected-user-${ data.alternateUser }`))).toBeVisible().withTimeout(5000);
+ await expect(element(by.id(`selected-user-${ data.alternateUser }`))).toBeVisible();
await element(by.id('selected-users-view-submit')).tap();
await waitFor(element(by.id('room-actions-view'))).toBeVisible().withTimeout(2000);
await element(by.id('room-actions-members')).tap();
await element(by.id('room-members-view-toggle-status')).tap();
- await waitFor(element(by.id(`room-members-view-item-${ user }`))).toBeVisible().withTimeout(60000);
- await expect(element(by.id(`room-members-view-item-${ user }`))).toBeVisible();
+ await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible();
await backToActions();
});
@@ -314,7 +313,6 @@ describe('Room actions screen', () => {
});
describe('Room Members', async() => {
- const user = 'detoxrn';
before(async() => {
await element(by.id('room-actions-members')).tap();
await waitFor(element(by.id('room-members-view'))).toExist().withTimeout(2000);
@@ -323,24 +321,24 @@ describe('Room actions screen', () => {
it('should show all users', async() => {
await element(by.id('room-members-view-toggle-status')).tap();
- await waitFor(element(by.id(`room-members-view-item-${ user }`))).toBeVisible().withTimeout(60000);
- await expect(element(by.id(`room-members-view-item-${ user }`))).toBeVisible();
+ await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible();
});
it('should filter user', async() => {
- await waitFor(element(by.id(`room-members-view-item-${ user }`))).toBeVisible().withTimeout(60000);
- await expect(element(by.id(`room-members-view-item-${ user }`))).toBeVisible();
+ await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible();
await element(by.id('room-members-view-search')).replaceText('rocket');
- await waitFor(element(by.id(`room-members-view-item-${ user }`))).toBeNotVisible().withTimeout(60000);
- await expect(element(by.id(`room-members-view-item-${ user }`))).toBeNotVisible();
+ await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeNotVisible().withTimeout(60000);
+ await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeNotVisible();
await element(by.id('room-members-view-search')).tap();
await element(by.id('room-members-view-search')).clearText('');
- await waitFor(element(by.id(`room-members-view-item-${ user }`))).toBeVisible().withTimeout(60000);
- await expect(element(by.id(`room-members-view-item-${ user }`))).toBeVisible();
+ await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toBeVisible();
});
it('should mute user', async() => {
- await element(by.id(`room-members-view-item-${ user }`)).longPress();
+ await element(by.id(`room-members-view-item-${ data.alternateUser }`)).longPress();
await waitFor(element(by.text('Mute'))).toBeVisible().withTimeout(5000);
await expect(element(by.text('Mute'))).toBeVisible();
await element(by.text('Mute')).tap();
@@ -348,7 +346,7 @@ describe('Room actions screen', () => {
await expect(element(by.text('User has been muted!'))).toBeVisible();
await waitFor(element(by.text('User has been muted!'))).toBeNotVisible().withTimeout(60000);
await expect(element(by.text('User has been muted!'))).toBeNotVisible();
- await element(by.id(`room-members-view-item-${ user }`)).longPress();
+ await element(by.id(`room-members-view-item-${ data.alternateUser }`)).longPress();
await waitFor(element(by.text('Unmute'))).toBeVisible().withTimeout(2000);
await expect(element(by.text('Unmute'))).toBeVisible();
await element(by.text('Unmute')).tap();
@@ -359,12 +357,12 @@ describe('Room actions screen', () => {
});
it('should navigate to direct room', async() => {
- await waitFor(element(by.id(`room-members-view-item-${ user }`))).toExist().withTimeout(5000);
- await element(by.id(`room-members-view-item-${ user }`)).tap();
+ await waitFor(element(by.id(`room-members-view-item-${ data.alternateUser }`))).toExist().withTimeout(5000);
+ await element(by.id(`room-members-view-item-${ data.alternateUser }`)).tap();
await waitFor(element(by.id('room-view'))).toBeVisible().withTimeout(60000);
await expect(element(by.id('room-view'))).toBeVisible();
- await waitFor(element(by.text(user))).toBeVisible().withTimeout(60000);
- await expect(element(by.text(user))).toBeVisible();
+ await waitFor(element(by.text(data.alternateUser))).toBeVisible().withTimeout(60000);
+ await expect(element(by.text(data.alternateUser))).toBeVisible();
await tapBack('Messages');
await waitFor(element(by.id('room-list-view'))).toBeVisible().withTimeout(2000);
});
diff --git a/e2e/10-changeserver.spec.js b/e2e/10-changeserver.spec.js
index aee231416..fd13d61c1 100644
--- a/e2e/10-changeserver.spec.js
+++ b/e2e/10-changeserver.spec.js
@@ -7,6 +7,7 @@ const data = require('./data');
describe('Change server', () => {
before(async() => {
await device.reloadReactNative();
+ await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(10000);
});
it('should add server and create new user', async() => {
@@ -16,10 +17,9 @@ describe('Change server', () => {
await element(by.id('sidebar-toggle-server')).tap();
await waitFor(element(by.id('sidebar-add-server'))).toBeVisible().withTimeout(2000);
await element(by.id('sidebar-add-server')).tap();
- await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(2000);
- // Add server
+ // Add server
+ await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
await element(by.id('new-server-view-input')).replaceText(data.alternateServer);
- await waitFor(element(by.text(' is a valid Rocket.Chat instance'))).toBeVisible().withTimeout(60000);
await element(by.id('new-server-view-button')).tap();
// Navigate to register
await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000);
@@ -36,7 +36,6 @@ describe('Change server', () => {
await element(by.id('register-view-submit-username')).tap();
await waitFor(element(by.id('rooms-list-view'))).toBeVisible().withTimeout(60000);
await expect(element(by.id('rooms-list-view'))).toBeVisible();
- // await expect(element(by.id('rooms-list-view-sidebar'))).toHaveLabel(`Connected to ${ data.alternateServer }. Tap to view servers list.`);
// For a sanity test, to make sure roomslist is showing correct rooms
// app CANNOT show public room created on previous tests
await waitFor(element(by.id(`rooms-list-view-item-public${ data.random }`))).toBeNotVisible().withTimeout(60000);
diff --git a/e2e/11-broadcast.spec.js b/e2e/11-broadcast.spec.js
index f128edc6a..bdc93d7f6 100644
--- a/e2e/11-broadcast.spec.js
+++ b/e2e/11-broadcast.spec.js
@@ -89,8 +89,8 @@ describe('Broadcast room', () => {
it('should tap on reply button and navigate to direct room', async() => {
await element(by.text('Reply')).tap();
- await waitFor(element(by.text(data.user))).toBeVisible().withTimeout(60000);
- await expect(element(by.text(data.user))).toBeVisible();
+ await waitFor(element(by.text(data.user)).atIndex(0)).toBeVisible().withTimeout(60000);
+ await expect(element(by.text(data.user)).atIndex(0)).toBeVisible();
});
it('should reply broadcasted message', async() => {
diff --git a/e2e/12-profile.spec.js b/e2e/12-profile.spec.js
index f9153339a..c1ded9c67 100644
--- a/e2e/12-profile.spec.js
+++ b/e2e/12-profile.spec.js
@@ -86,7 +86,7 @@ describe('Profile screen', () => {
});
it('should change email and password', async() => {
- await element(by.id('profile-view-email')).replaceText(`test${ data.email }`);
+ await element(by.id('profile-view-email')).replaceText(`diego.mello+e2e${ data.random }test@rocket.chat`);
await element(by.id('profile-view-new-password')).replaceText(`${ data.password }new`);
await element(by.id('profile-view-submit')).tap();
await waitFor(element(by.id('profile-view-typed-password'))).toBeVisible().withTimeout(10000);
diff --git a/e2e/data.js b/e2e/data.js
index a7f7927be..19257a80f 100644
--- a/e2e/data.js
+++ b/e2e/data.js
@@ -1,13 +1,13 @@
const random = require('./helpers/random');
const value = random(20);
const data = {
- server: 'https://unstable.rocket.chat',
- alternateServer: 'https://stable.rocket.chat',
+ server: 'https://stable.rocket.chat',
+ alternateServer: 'https://open.rocket.chat',
user: `user${ value }`,
password: `password${ value }`,
- alternateUser: 'detoxrn',
+ alternateUser: 'detox',
alternateUserPassword: '123',
- email: `detoxrn+${ value }@rocket.chat`,
+ email: `diego.mello+e2e${ value }@rocket.chat`,
random: value
}
module.exports = data;
\ No newline at end of file
diff --git a/e2e/helpers/app.js b/e2e/helpers/app.js
index 481814842..873dd0be1 100644
--- a/e2e/helpers/app.js
+++ b/e2e/helpers/app.js
@@ -4,14 +4,16 @@ const {
const data = require('../data');
async function addServer() {
- await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(2000);
+ await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
+ await element(by.id('connect-server-button')).tap();
+ await waitFor(element(by.id('new-server-view'))).toBeVisible().withTimeout(60000);
+ await expect(element(by.id('new-server-view'))).toBeVisible();
await element(by.id('new-server-view-input')).replaceText(data.server);
- await waitFor(element(by.text(' is a valid Rocket.Chat instance'))).toBeVisible().withTimeout(2000);
- await waitFor(element(by.id('new-server-view-button'))).toBeVisible().withTimeout(2000);
await element(by.id('new-server-view-button')).tap();
}
async function navigateToLogin() {
+ await addServer();
await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000);
await element(by.id('welcome-view-login')).tap();
await waitFor(element(by.id('login-view'))).toBeVisible().withTimeout(2000);
@@ -30,8 +32,8 @@ async function logout() {
await waitFor(element(by.id('sidebar'))).toBeVisible().withTimeout(2000);
await waitFor(element(by.id('sidebar-logout'))).toBeVisible().withTimeout(2000);
await element(by.id('sidebar-logout')).tap();
- await waitFor(element(by.id('welcome-view'))).toBeVisible().withTimeout(2000);
- await expect(element(by.id('welcome-view'))).toBeVisible();
+ await waitFor(element(by.id('onboarding-view'))).toBeVisible().withTimeout(2000);
+ await expect(element(by.id('onboarding-view'))).toBeVisible();
}
async function tapBack(label) {
diff --git a/ios/RocketChatRN.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/RocketChatRN.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 000000000..18d981003
--- /dev/null
+++ b/ios/RocketChatRN.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ IDEDidComputeMac32BitWarning
+
+
+
diff --git a/package-lock.json b/package-lock.json
index 8ae8443d7..a0f3e543b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -929,11 +929,11 @@
"integrity": "sha512-iOD1PRnTSVr9sDWQdesIpfRrwJhHfeEQe5BpalQxC5OhM9thpiE6cu2NlW1KBWl0RJG4ZiJaF1xLlCo9YxU6dA=="
},
"@storybook/addon-actions": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.4.8.tgz",
- "integrity": "sha512-lYCCdVXNO1OrBUcrg5Kj3LJFxZXzaXv4S4JLYGvf1UV87i1vNfc8U8nNltXvJhtF7ohldOmmUbIaW37Ynl0ftQ==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.4.10.tgz",
+ "integrity": "sha512-5UptYl8amjWe1hBRqZ8JL/dDxzGGYUF7bYtWVLgI6X4yfkMhG62H4IFARaukYfvUmf86jyPBybPQ6BibQ8eZXg==",
"requires": {
- "@storybook/components": "3.4.8",
+ "@storybook/components": "3.4.10",
"babel-runtime": "^6.26.0",
"deep-equal": "^1.0.1",
"glamor": "^2.20.40",
@@ -953,24 +953,24 @@
}
},
"@storybook/addon-links": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.4.8.tgz",
- "integrity": "sha512-z/krQGMlKb6C3ai4tzscNhjmDzmqod/M6qN5ZFvlvhZmgAiN1Iou2mdOkkmLBALd4d6m88BGjgDN/5aj1wtrXQ==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.4.10.tgz",
+ "integrity": "sha512-GIxgSj2/42WgG8iFPOE0nrl7lrSFD/vNC8ipAAHCQYkZR2leFamVmV2M+hntcwxbIeW9RPS3sOoB6+tFEM8dnA==",
"requires": {
- "@storybook/components": "3.4.8",
+ "@storybook/components": "3.4.10",
"babel-runtime": "^6.26.0",
"global": "^4.3.2",
"prop-types": "^15.6.1"
}
},
"@storybook/addon-storyshots": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-3.4.8.tgz",
- "integrity": "sha512-I4V1MloFSINWkGa1E7OUDyl5R0bRCHGg6k0ypgau9grwxfTTtMcif4rzBV8UCPc65o1WI8OWQOQd20nXRPDnhQ==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-3.4.10.tgz",
+ "integrity": "sha512-TndPPSRjv/rM+qveO82j5+kNRqGNDD2pAU/Lndkmtx2pOnPqvjDvf8IAuv1Zbhi1nBGmK2VFmVaSnAhRXHXGtQ==",
"dev": true,
"requires": {
- "@storybook/channels": "3.4.8",
- "@storybook/node-logger": "3.4.8",
+ "@storybook/channels": "3.4.10",
+ "@storybook/node-logger": "3.4.10",
"babel-runtime": "^6.26.0",
"glob": "^7.1.2",
"global": "^4.3.2",
@@ -1041,58 +1041,58 @@
}
},
"@storybook/addons": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-3.4.8.tgz",
- "integrity": "sha512-2ND/D3J2WqryUxmU0NsihG97zxWcnQ+N5OR0hcCvF2kpe2e3RV55ywHzh9f0lxK8Lcqum2gsv+f5+bT1T4bCdg=="
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-3.4.10.tgz",
+ "integrity": "sha512-Be/ZxfQ6F434qNQPLK0Q7xNvSMf63LmLZgwoy4mT2fIc2ye2yNXfO7nxh97s5zhMXMGmFispUNiRAMXzbjfpJA=="
},
"@storybook/channel-postmessage": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-3.4.8.tgz",
- "integrity": "sha512-jWWd11fyQsW9Oa4fYtimKLfRTvv5tM0ZI/05pNtpaDSM9AFj0QFba2+1SdHvG2e3DL0uxpY0Ko/V8v+/7WH3+A==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-3.4.10.tgz",
+ "integrity": "sha512-9gh6CNf55Zq8taBorDO6oZ0oB4FFugtZcjKphtlbZLmuybmhvzgdX5dzdNxc3lIs9F3fF2dWfRdKPJZCeijY9Q==",
"requires": {
- "@storybook/channels": "3.4.8",
+ "@storybook/channels": "3.4.10",
"global": "^4.3.2",
"json-stringify-safe": "^5.0.1"
},
"dependencies": {
"@storybook/channels": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.4.8.tgz",
- "integrity": "sha512-tcKTMfEQehv/hjtdIjM5e/12Hklj1rByAUVg3467yAs8wFle/D1VBfWthsFmVLezBV2+6wUots2KPUIXxLkDVg=="
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.4.10.tgz",
+ "integrity": "sha512-ozYnZsPEkSdMmtC+9/CnFXa+ZuQLL/9U1dK9rU2AdrbwkPlHaeGcae1RMlZjgjkHH3PNiuXFLPM8G+R9E7Tx4A=="
}
}
},
"@storybook/channel-websocket": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-3.4.8.tgz",
- "integrity": "sha512-JNQYIUi1gum/6RmMOnY7WosCcsNZn6FoXlo24DVmz+298bksy/CJpUO7MZ+SUxFiiikp3nCsAULuSLBApXPchA==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-3.4.10.tgz",
+ "integrity": "sha512-AwUgEflOG5eMyQDM+H11OyPgYmUtpr2byC1rs/Gcm+SlWy6I3xsJJpejxaKmCTAdZ5njI868pVcKPEtylvFKdg==",
"requires": {
- "@storybook/channels": "3.4.8",
+ "@storybook/channels": "3.4.10",
"global": "^4.3.2"
},
"dependencies": {
"@storybook/channels": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.4.8.tgz",
- "integrity": "sha512-tcKTMfEQehv/hjtdIjM5e/12Hklj1rByAUVg3467yAs8wFle/D1VBfWthsFmVLezBV2+6wUots2KPUIXxLkDVg=="
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.4.10.tgz",
+ "integrity": "sha512-ozYnZsPEkSdMmtC+9/CnFXa+ZuQLL/9U1dK9rU2AdrbwkPlHaeGcae1RMlZjgjkHH3PNiuXFLPM8G+R9E7Tx4A=="
}
}
},
"@storybook/channels": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.4.8.tgz",
- "integrity": "sha512-tcKTMfEQehv/hjtdIjM5e/12Hklj1rByAUVg3467yAs8wFle/D1VBfWthsFmVLezBV2+6wUots2KPUIXxLkDVg==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.4.10.tgz",
+ "integrity": "sha512-ozYnZsPEkSdMmtC+9/CnFXa+ZuQLL/9U1dK9rU2AdrbwkPlHaeGcae1RMlZjgjkHH3PNiuXFLPM8G+R9E7Tx4A==",
"dev": true
},
"@storybook/client-logger": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-3.4.8.tgz",
- "integrity": "sha512-ZOat8vZh/M8pSZ2J38HKHc2fxyY7bJeUhhkFBR+/2u/erF3EmWT+YK3nLhkI5Xa8V6sbPS/jdxTQyMSdmDvzaA=="
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-3.4.10.tgz",
+ "integrity": "sha512-WRINmY3OqVSwBWz62ij9B1MoQsXkI+Slq2qp6RRWSYEh7/7kyNiPbYfX6ODUcPEaUNdXlZgLfDk1alJWGeJrDw=="
},
"@storybook/components": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-3.4.8.tgz",
- "integrity": "sha512-r3fLayskVxxzDBq5MO9pGMTubs5RN0g8UFY3n9drwgfzZj3pKhDbdJ0uQF0epfg7oUmH678dvceuduyP//dacA==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-3.4.10.tgz",
+ "integrity": "sha512-0X2H3iCz8JXpSItcAYgxrTQSEnYDaSWiLl3nz303JTkadcmBLJcIMnuQHKGKYLXde6jTkbxbb0AO/wgK7wXCYw==",
"requires": {
"glamor": "^2.20.40",
"glamorous": "^4.12.1",
@@ -1100,15 +1100,15 @@
}
},
"@storybook/core": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/core/-/core-3.4.8.tgz",
- "integrity": "sha512-izxtnGQQ26nkXI246qqhNtcYY/LbJ+L3D0Nk3hc1VDTrSMpftbI1/zJ/9ENFiz+XrsaDnxXW4iSgC626Ki/RCQ==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-3.4.10.tgz",
+ "integrity": "sha512-VByCEHdfJgsETIwC0qvQG9+MY614qCn7cE1t2cGaMG+T+kPWV9YiI7DumWlwFVk+bYgOrLvoXjou38xmKVVF8A==",
"requires": {
- "@storybook/addons": "3.4.8",
- "@storybook/channel-postmessage": "3.4.8",
- "@storybook/client-logger": "3.4.8",
- "@storybook/node-logger": "3.4.8",
- "@storybook/ui": "3.4.8",
+ "@storybook/addons": "3.4.10",
+ "@storybook/channel-postmessage": "3.4.10",
+ "@storybook/client-logger": "3.4.10",
+ "@storybook/node-logger": "3.4.10",
+ "@storybook/ui": "3.4.10",
"autoprefixer": "^7.2.6",
"babel-runtime": "^6.26.0",
"chalk": "^2.3.2",
@@ -1134,9 +1134,9 @@
},
"dependencies": {
"@storybook/node-logger": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.4.8.tgz",
- "integrity": "sha512-xLN8aofM3TEGs7cAJeagi1OJeaY2CwqQeNe5z7I4YSgVqF+FmgN6vPahCVZo//Zvw/UHPCPRplS9qpCI9hGS+w==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.4.10.tgz",
+ "integrity": "sha512-r6f5UMf7wHFuDYZFQRzBCUoAvQbVh3OprHxupWmbRwZbzPllp+v8klReeeDA9i4HVckrTlNt05rlVe1ToU2lFQ==",
"requires": {
"npmlog": "^4.1.2"
}
@@ -1164,19 +1164,6 @@
"resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz",
"integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg=="
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -1184,17 +1171,6 @@
"requires": {
"has-flag": "^3.0.0"
}
- },
- "webpack-hot-middleware": {
- "version": "2.22.2",
- "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.22.2.tgz",
- "integrity": "sha512-uccPS6b/UlXJoNCS+3fuc40z2KZgO0qQhnu+Ne1iZiHTy9s5fMCJAV+Vc8VTVkN203UphsxQmkumxYeHLiQ5jg==",
- "requires": {
- "ansi-html": "0.0.7",
- "html-entities": "^1.2.0",
- "querystring": "^0.2.0",
- "strip-ansi": "^3.0.0"
- }
}
}
},
@@ -1209,9 +1185,9 @@
}
},
"@storybook/node-logger": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.4.8.tgz",
- "integrity": "sha512-xLN8aofM3TEGs7cAJeagi1OJeaY2CwqQeNe5z7I4YSgVqF+FmgN6vPahCVZo//Zvw/UHPCPRplS9qpCI9hGS+w==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.4.10.tgz",
+ "integrity": "sha512-r6f5UMf7wHFuDYZFQRzBCUoAvQbVh3OprHxupWmbRwZbzPllp+v8klReeeDA9i4HVckrTlNt05rlVe1ToU2lFQ==",
"dev": true,
"requires": {
"npmlog": "^4.1.2"
@@ -1239,16 +1215,16 @@
}
},
"@storybook/react-native": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/react-native/-/react-native-3.4.8.tgz",
- "integrity": "sha512-8cqFikEiLeEh6Une/7/u+bKFxx7UvriP+7DoJOWYQjO3Bfl95zNQQwDtDeQgfX6BcQ42mPPFxwNTz3yxMDonhA==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/react-native/-/react-native-3.4.10.tgz",
+ "integrity": "sha512-GkPQlTi/CmCfmScjWAMnrDBstoNlDRyP045bx247u2z4PVC3NCQWpBXTHdORJojIVxiZJ7gBM4UrPkqILE967Q==",
"requires": {
- "@storybook/addon-actions": "3.4.8",
- "@storybook/addon-links": "3.4.8",
- "@storybook/addons": "3.4.8",
- "@storybook/channel-websocket": "3.4.8",
- "@storybook/core": "3.4.8",
- "@storybook/ui": "3.4.8",
+ "@storybook/addon-actions": "3.4.10",
+ "@storybook/addon-links": "3.4.10",
+ "@storybook/addons": "3.4.10",
+ "@storybook/channel-websocket": "3.4.10",
+ "@storybook/core": "3.4.10",
+ "@storybook/ui": "3.4.10",
"babel-loader": "^7.1.4",
"babel-plugin-macros": "^2.2.0",
"babel-plugin-syntax-async-functions": "^6.13.0",
@@ -1285,30 +1261,11 @@
"ws": "^4.1.0"
},
"dependencies": {
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
"uuid": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
"integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
},
- "webpack-hot-middleware": {
- "version": "2.22.2",
- "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.22.2.tgz",
- "integrity": "sha512-uccPS6b/UlXJoNCS+3fuc40z2KZgO0qQhnu+Ne1iZiHTy9s5fMCJAV+Vc8VTVkN203UphsxQmkumxYeHLiQ5jg==",
- "requires": {
- "ansi-html": "0.0.7",
- "html-entities": "^1.2.0",
- "querystring": "^0.2.0",
- "strip-ansi": "^3.0.0"
- }
- },
"ws": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
@@ -1340,11 +1297,11 @@
}
},
"@storybook/ui": {
- "version": "3.4.8",
- "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-3.4.8.tgz",
- "integrity": "sha512-BLa1eEZ3MHmJ0P9LT+tVJ9MK7Gcec+rFtUw4fDfBqCJ8NYNZz93qkc5CL9ebeqS8C2UgOz+glM8Mi3kTIq/dQg==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-3.4.10.tgz",
+ "integrity": "sha512-bmSBEiN4tI5WO7inhzM8P74ogftXayhTQnZrPGTxpvTRvWUZU0Ctmcm//GYLCcG5WcBn90SpqpcKXBdkvIaxLw==",
"requires": {
- "@storybook/components": "3.4.8",
+ "@storybook/components": "3.4.10",
"@storybook/mantra-core": "^1.7.2",
"@storybook/podda": "^1.2.3",
"@storybook/react-komposer": "^2.0.3",
@@ -1656,9 +1613,9 @@
}
},
"abab": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
- "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
+ "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==",
"dev": true
},
"abbrev": {
@@ -2703,9 +2660,9 @@
}
},
"babel-jest": {
- "version": "23.4.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.0.tgz",
- "integrity": "sha1-IsNMOS4hdvakw2eZKn/P9p0uhVc=",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.4.2.tgz",
+ "integrity": "sha512-wg1LJ2tzsafXqPFVgAsYsMCVD5U7kwJZAvbZIxVm27iOewsQw1BR7VZifDlMTEWVo3wasoPPyMdKXWCsfFPr3Q==",
"dev": true,
"requires": {
"babel-plugin-istanbul": "^4.1.6",
@@ -2765,28 +2722,27 @@
"dev": true
},
"babel-plugin-macros": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.2.2.tgz",
- "integrity": "sha512-wq6DYqjNmSPskGyhOeRIbmuvLtsHTfc6ROtGqapTttIGL1RoQmM3V5N8aJiDxPaw3/fveIsVspF51E3V7qTOMQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.4.0.tgz",
+ "integrity": "sha512-flIBfrqAdHWn+4l2cS/4jZEyl+m5EaBHVzTb0aOF+eu/zR7E41/MoCFHPhDNL8Wzq1nyelnXeT+vcL2byFLSZw==",
"requires": {
- "cosmiconfig": "^4.0.0"
+ "cosmiconfig": "^5.0.5"
},
"dependencies": {
"cosmiconfig": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz",
- "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==",
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.5.tgz",
+ "integrity": "sha512-94j37OtvxS5w7qr7Ta6dt67tWdnOxigBVN4VnSxNXFez9o18PGQ0D33SchKP17r9LAcWVTYV72G6vDayAUBFIg==",
"requires": {
"is-directory": "^0.3.1",
"js-yaml": "^3.9.0",
- "parse-json": "^4.0.0",
- "require-from-string": "^2.0.1"
+ "parse-json": "^4.0.0"
}
},
"esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"js-yaml": {
"version": "3.12.0",
@@ -2805,11 +2761,6 @@
"error-ex": "^1.3.1",
"json-parse-better-errors": "^1.0.1"
}
- },
- "require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
}
}
},
@@ -4010,9 +3961,9 @@
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
},
"buffer-from": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
- "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"buffer-xor": {
@@ -4030,6 +3981,28 @@
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
},
+ "bunyan": {
+ "version": "1.8.12",
+ "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz",
+ "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=",
+ "dev": true,
+ "requires": {
+ "dtrace-provider": "~0.8",
+ "moment": "^2.10.6",
+ "mv": "~2",
+ "safe-json-stringify": "~1"
+ }
+ },
+ "bunyan-debug-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/bunyan-debug-stream/-/bunyan-debug-stream-1.1.0.tgz",
+ "integrity": "sha512-Yu3mVHHMyfnBkC5uKNpMSXKoiY+wF7vnoRdY7n+mNtH0bJMKcf0FmdAGtkBk0LuQmieMryY8yqdot9IP9kqI0A==",
+ "dev": true,
+ "requires": {
+ "colors": "^1.0.3",
+ "exception-formatter": "^1.0.4"
+ }
+ },
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -4148,9 +4121,9 @@
}
},
"caniuse-db": {
- "version": "1.0.30000862",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000862.tgz",
- "integrity": "sha1-bB4pb4u+Xl6kbwQhXouQ7Y+52o0="
+ "version": "1.0.30000875",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000875.tgz",
+ "integrity": "sha512-L1YQcIv8YPymJpbQyO8uM2KEkEVsuFcQRO2vNp0n4GNGAmq0f8GWQKUCTqZHvsyX2EeOO4aLWgc3qCH6zMWFag=="
},
"caniuse-lite": {
"version": "1.0.30000823",
@@ -4761,14 +4734,45 @@
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
},
"codecov": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.2.tgz",
- "integrity": "sha512-9ljtIROIjPIUmMRqO+XuDITDoV8xRrZmA0jcEq6p2hg2+wY9wGmLfreAZGIL72IzUfdEDZaU8+Vjidg1fBQ8GQ==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.0.4.tgz",
+ "integrity": "sha512-KJyzHdg9B8U9LxXa7hS6jnEW5b1cNckLYc2YpnJ1nEFiOW+/iSzDHp+5MYEIQd9fN3/tC6WmGZmYiwxzkuGp/A==",
"dev": true,
"requires": {
- "argv": "0.0.2",
- "request": "^2.81.0",
- "urlgrey": "0.4.4"
+ "argv": "^0.0.2",
+ "ignore-walk": "^3.0.1",
+ "request": "^2.87.0",
+ "urlgrey": "^0.4.4"
+ },
+ "dependencies": {
+ "request": {
+ "version": "2.87.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
+ "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.6.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.1",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.1",
+ "har-validator": "~5.0.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.17",
+ "oauth-sign": "~0.8.2",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1",
+ "tough-cookie": "~2.3.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.1.0"
+ }
+ }
}
},
"collection-visit": {
@@ -5122,17 +5126,39 @@
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
},
"cosmiconfig": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz",
- "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz",
+ "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==",
"requires": {
"is-directory": "^0.3.1",
- "js-yaml": "^3.4.3",
- "minimist": "^1.2.0",
- "object-assign": "^4.1.0",
- "os-homedir": "^1.0.1",
- "parse-json": "^2.2.0",
- "require-from-string": "^1.1.0"
+ "js-yaml": "^3.9.0",
+ "parse-json": "^4.0.0",
+ "require-from-string": "^2.0.1"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "js-yaml": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
+ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ }
}
},
"create-ecdh": {
@@ -5448,9 +5474,9 @@
"dev": true
},
"cssstyle": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.3.1.tgz",
- "integrity": "sha512-tNvaxM5blOnxanyxI6panOsnfiyLRj3HV4qjqqS45WPNS1usdYWRUQjqTEEELK73lpeP/1KoIGYUwrBn/VcECA==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.0.0.tgz",
+ "integrity": "sha512-Bpuh47j2mRMY60X90mXaJAEtJwxvA2roZzbgwAXYhMbmwmakdRr4Cq9L5SkleKJNLOKqHIa2YWyOXDX3VgggSQ==",
"dev": true,
"requires": {
"cssom": "0.3.x"
@@ -5508,6 +5534,14 @@
"abab": "^1.0.4",
"whatwg-mimetype": "^2.0.0",
"whatwg-url": "^6.4.0"
+ },
+ "dependencies": {
+ "abab": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
+ "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "dev": true
+ }
}
},
"date-now": {
@@ -5784,20 +5818,20 @@
}
},
"detox": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/detox/-/detox-8.0.0.tgz",
- "integrity": "sha512-M+Nr5rm+5hX0YWKXQvW8y8HVBgDOEMio125jAY52x3QVVOUHieZpVfW+/4hHiSxhtOyLaxboKooJezyIW3Vedw==",
+ "version": "8.1.4",
+ "resolved": "https://registry.npmjs.org/detox/-/detox-8.1.4.tgz",
+ "integrity": "sha512-giozyXJPVywS8XsHUbyHe/1EMDsxR2A8I+3om3apE7NFqv+ArJYYaYmVu12yCETN44F/ons5CA47Tz7ij2gFUg==",
"dev": true,
"requires": {
+ "bunyan": "^1.8.12",
+ "bunyan-debug-stream": "^1.1.0",
"child-process-promise": "^2.2.0",
"commander": "^2.15.1",
- "detox-server": "^7.0.0",
"fs-extra": "^4.0.2",
"get-port": "^2.1.0",
"ini": "^1.3.4",
- "lodash": "^4.14.1",
+ "lodash": "^4.17.5",
"minimist": "^1.2.0",
- "npmlog": "^4.0.2",
"proper-lockfile": "^3.0.2",
"shell-utils": "^1.0.9",
"tail": "^1.2.3",
@@ -5828,17 +5862,6 @@
}
}
},
- "detox-server": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/detox-server/-/detox-server-7.0.0.tgz",
- "integrity": "sha512-zs9ZP/MgeEmaZD/+MCl5PVcYHRjUtFBkBx3xQRPcsjJ/PmpCKy/BvygjLO6tRsR/2SC9UYay6W+BdguEYeft8g==",
- "dev": true,
- "requires": {
- "lodash": "^4.13.1",
- "npmlog": "^4.0.2",
- "ws": "^1.1.0"
- }
- },
"diff": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
@@ -5954,6 +5977,16 @@
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz",
"integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow=="
},
+ "dtrace-provider": {
+ "version": "0.8.7",
+ "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz",
+ "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.10.0"
+ }
+ },
"duplexer": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
@@ -6138,9 +6171,9 @@
}
},
"es5-ext": {
- "version": "0.10.42",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz",
- "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==",
+ "version": "0.10.45",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz",
+ "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==",
"requires": {
"es6-iterator": "~2.0.3",
"es6-symbol": "~3.1.1",
@@ -6688,6 +6721,15 @@
"safe-buffer": "^5.1.1"
}
},
+ "exception-formatter": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/exception-formatter/-/exception-formatter-1.0.7.tgz",
+ "integrity": "sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw==",
+ "dev": true,
+ "requires": {
+ "colors": "^1.0.3"
+ }
+ },
"exec-sh": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz",
@@ -8536,9 +8578,9 @@
}
},
"has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"has-unicode": {
"version": "2.0.1",
@@ -9268,9 +9310,9 @@
}
},
"html-minifier": {
- "version": "3.5.18",
- "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.18.tgz",
- "integrity": "sha512-sczoq/9zeXiKZMj8tsQzHJE7EyjrpMHvblTLuh9o8h5923a6Ts5uQ/3YdY+xIqJYRjzHQPlrHjfjh0BtwPJG0g==",
+ "version": "3.5.19",
+ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.19.tgz",
+ "integrity": "sha512-Qr2JC9nsjK8oCrEmuB430ZIA8YWbF3D5LSjywD75FTuXmeqacwHgIM8wp3vHYzzPbklSjp53RdmDuzR4ub2HzA==",
"requires": {
"camel-case": "3.0.x",
"clean-css": "4.1.x",
@@ -9292,9 +9334,9 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"uglify-js": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.3.tgz",
- "integrity": "sha512-RbOgGjF04sFUNSi8xGOTB9AmtVmMmVVAL5a7lxIgJ8urejJen+priq0ooRIHHa8AXI/dSvNF9yYMz9OP4PhybQ==",
+ "version": "3.4.6",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.6.tgz",
+ "integrity": "sha512-O1D7L6WcOzS1qW2ehopEm4cWm5yA6bQBozlks8jO8ODxYCy4zv+bR/la4Lwp01tpkYGNonnpXvUpYtrvSu8Yzg==",
"requires": {
"commander": "~2.16.0",
"source-map": "~0.6.1"
@@ -9514,6 +9556,15 @@
"integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
"dev": true
},
+ "ignore-walk": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
+ "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
"image-size": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz",
@@ -9524,6 +9575,29 @@
"resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz",
"integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM="
},
+ "import-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
+ "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+ "requires": {
+ "import-from": "^2.1.0"
+ }
+ },
+ "import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
+ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+ "requires": {
+ "resolve-from": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
+ }
+ }
+ },
"import-local": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
@@ -10127,28 +10201,28 @@
}
},
"jest": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest/-/jest-23.4.1.tgz",
- "integrity": "sha512-HTOuA9epknN7RKdzhmp9qrbP0z3TibAMXI+sluLOcrEoF54ZCG8/urFB2DK/sOINcMeyX6epMUqka8i0+d0xOA==",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-23.4.2.tgz",
+ "integrity": "sha512-w10HGpVFWT1oN8B2coxeiMEsZoggkDaw3i26xHGLU+rsR+LYkBk8qpZCgi+1cD1S6ttPjZDL8E8M99lmNhgTeA==",
"dev": true,
"requires": {
"import-local": "^1.0.0",
- "jest-cli": "^23.4.1"
+ "jest-cli": "^23.4.2"
}
},
"jest-changed-files": {
- "version": "23.4.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.0.tgz",
- "integrity": "sha1-8bME+YwjWvXZox7FJCYsXk3jxv8=",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz",
+ "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==",
"dev": true,
"requires": {
"throat": "^4.0.0"
}
},
"jest-cli": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.4.1.tgz",
- "integrity": "sha512-Cmd7bex+kYmMGwGrIh/crwUieUFr+4PCTaK32tEA0dm0wklXV8zGgWh8n+8WbhsFPNzacolxdtcfBKIorcV5FQ==",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.4.2.tgz",
+ "integrity": "sha512-vaDzy0wRWrgSfz4ZImCqD2gtZqCSoEWp60y3USvGDxA2b4K0rGj2voru6a5scJFjDx5GCiNWKpz2E8IdWDVjdw==",
"dev": true,
"requires": {
"ansi-escapes": "^3.0.0",
@@ -10162,17 +10236,17 @@
"istanbul-lib-coverage": "^1.2.0",
"istanbul-lib-instrument": "^1.10.1",
"istanbul-lib-source-maps": "^1.2.4",
- "jest-changed-files": "^23.4.0",
- "jest-config": "^23.4.1",
+ "jest-changed-files": "^23.4.2",
+ "jest-config": "^23.4.2",
"jest-environment-jsdom": "^23.4.0",
"jest-get-type": "^22.1.0",
"jest-haste-map": "^23.4.1",
"jest-message-util": "^23.4.0",
"jest-regex-util": "^23.3.0",
- "jest-resolve-dependencies": "^23.4.1",
- "jest-runner": "^23.4.1",
- "jest-runtime": "^23.4.1",
- "jest-snapshot": "^23.4.1",
+ "jest-resolve-dependencies": "^23.4.2",
+ "jest-runner": "^23.4.2",
+ "jest-runtime": "^23.4.2",
+ "jest-snapshot": "^23.4.2",
"jest-util": "^23.4.0",
"jest-validate": "^23.4.0",
"jest-watcher": "^23.4.0",
@@ -10189,12 +10263,6 @@
"yargs": "^11.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -10226,12 +10294,6 @@
"wrap-ansi": "^2.0.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"jest-docblock": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz",
@@ -10256,25 +10318,6 @@
"sane": "^2.0.0"
}
},
- "jest-snapshot": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz",
- "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==",
- "dev": true,
- "requires": {
- "babel-traverse": "^6.0.0",
- "babel-types": "^6.0.0",
- "chalk": "^2.0.1",
- "jest-diff": "^23.2.0",
- "jest-matcher-utils": "^23.2.0",
- "jest-message-util": "^23.4.0",
- "jest-resolve": "^23.4.1",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "pretty-format": "^23.2.0",
- "semver": "^5.5.0"
- }
- },
"jest-worker": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz",
@@ -10284,22 +10327,6 @@
"merge-stream": "^1.0.1"
}
},
- "pretty-format": {
- "version": "23.2.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
- "integrity": "sha1-OwqqY8AYpTWDNzwcs6XZbMXoMBc=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0",
- "ansi-styles": "^3.2.0"
- }
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
- "dev": true
- },
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -10341,19 +10368,19 @@
}
},
"jest-config": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.4.1.tgz",
- "integrity": "sha512-OT29qlcw9Iw7u0PC04wD9tjLJL4vpGdMZrrHMFwYSO3HxOikbHywjmtQ7rntW4qvBcpbi7iCMTPPRmpDjImQEw==",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.4.2.tgz",
+ "integrity": "sha512-CDJGO4H+7P+T6khaSHEjTxqVaIlmQMEFAyJFOVrAQeM+Xn12iZ+YY8Pluk1RDxi8Jqj9DoE09PHQzASCGePGtg==",
"dev": true,
"requires": {
"babel-core": "^6.0.0",
- "babel-jest": "^23.4.0",
+ "babel-jest": "^23.4.2",
"chalk": "^2.0.1",
"glob": "^7.1.1",
"jest-environment-jsdom": "^23.4.0",
"jest-environment-node": "^23.4.0",
"jest-get-type": "^22.1.0",
- "jest-jasmine2": "^23.4.1",
+ "jest-jasmine2": "^23.4.2",
"jest-regex-util": "^23.3.0",
"jest-resolve": "^23.4.1",
"jest-util": "^23.4.0",
@@ -10420,12 +10447,6 @@
"integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=",
"dev": true
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"pretty-format": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
@@ -10485,12 +10506,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"pretty-format": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
@@ -10556,12 +10571,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"pretty-format": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
@@ -10640,11 +10649,12 @@
}
},
"jest-jasmine2": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.4.1.tgz",
- "integrity": "sha512-nHmRgTtM9fuaK3RBz2z4j9mYVEJwB7FdoflQSvrwHV8mCT5z4DeHoKCvPp2R27F8fZTYJUYVMb36xn+ydg0tfA==",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.4.2.tgz",
+ "integrity": "sha512-MUoqn41XHMQe5u8QvRTH2HahpBNzImnnjS3pV/T7LvrCM6f2zfGdi1Pm+bRbFMLJROqR8VlK8HmsenL2WjrUIQ==",
"dev": true,
"requires": {
+ "babel-traverse": "^6.0.0",
"chalk": "^2.0.1",
"co": "^4.6.0",
"expect": "^23.4.0",
@@ -10653,7 +10663,7 @@
"jest-each": "^23.4.0",
"jest-matcher-utils": "^23.2.0",
"jest-message-util": "^23.4.0",
- "jest-snapshot": "^23.4.1",
+ "jest-snapshot": "^23.4.2",
"jest-util": "^23.4.0",
"pretty-format": "^23.2.0"
},
@@ -10684,31 +10694,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "jest-snapshot": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz",
- "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==",
- "dev": true,
- "requires": {
- "babel-traverse": "^6.0.0",
- "babel-types": "^6.0.0",
- "chalk": "^2.0.1",
- "jest-diff": "^23.2.0",
- "jest-matcher-utils": "^23.2.0",
- "jest-message-util": "^23.4.0",
- "jest-resolve": "^23.4.1",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "pretty-format": "^23.2.0",
- "semver": "^5.5.0"
- }
- },
"pretty-format": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
@@ -10719,12 +10704,6 @@
"ansi-styles": "^3.2.0"
}
},
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
- "dev": true
- },
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -10809,12 +10788,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"pretty-format": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
@@ -10869,12 +10842,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -10929,12 +10896,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -10947,108 +10908,30 @@
}
},
"jest-resolve-dependencies": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.4.1.tgz",
- "integrity": "sha512-Jp0wgNJg3OYPvXJfNVX4k4/niwGS6ARuKacum/vue48+4A1XPJ2H3aVFuNb3gUaiB/6Le7Zyl8AUb4MELBfcmg==",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.4.2.tgz",
+ "integrity": "sha512-JUrU1/1mQAf0eKwKT4+RRnaqcw0UcRzRE38vyO+YnqoXUVidf646iuaKE+NG7E6Gb0+EVPOJ6TgqkaTPdQz78A==",
"dev": true,
"requires": {
"jest-regex-util": "^23.3.0",
- "jest-snapshot": "^23.4.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "jest-snapshot": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz",
- "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==",
- "dev": true,
- "requires": {
- "babel-traverse": "^6.0.0",
- "babel-types": "^6.0.0",
- "chalk": "^2.0.1",
- "jest-diff": "^23.2.0",
- "jest-matcher-utils": "^23.2.0",
- "jest-message-util": "^23.4.0",
- "jest-resolve": "^23.4.1",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "pretty-format": "^23.2.0",
- "semver": "^5.5.0"
- }
- },
- "pretty-format": {
- "version": "23.2.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
- "integrity": "sha1-OwqqY8AYpTWDNzwcs6XZbMXoMBc=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0",
- "ansi-styles": "^3.2.0"
- }
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
- "dev": true
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "jest-snapshot": "^23.4.2"
}
},
"jest-runner": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.4.1.tgz",
- "integrity": "sha512-78KyhObsx0VEuUQ74ikGt68NpP6PApTjGpJPSyZ7AvwOFRqFlxdHpCU/lFPQxW/fLEghl4irz9OHjRLGcGFNyQ==",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.4.2.tgz",
+ "integrity": "sha512-o+aEdDE7/Gyp8fLYEEf5B8aOUguz76AYcAMl5pueucey2Q50O8uUIXJ7zvt8O6OEJDztR3Kb+osMoh8MVIqgTw==",
"dev": true,
"requires": {
"exit": "^0.1.2",
"graceful-fs": "^4.1.11",
- "jest-config": "^23.4.1",
+ "jest-config": "^23.4.2",
"jest-docblock": "^23.2.0",
"jest-haste-map": "^23.4.1",
- "jest-jasmine2": "^23.4.1",
+ "jest-jasmine2": "^23.4.2",
"jest-leak-detector": "^23.2.0",
"jest-message-util": "^23.4.0",
- "jest-runtime": "^23.4.1",
+ "jest-runtime": "^23.4.2",
"jest-util": "^23.4.0",
"jest-worker": "^23.2.0",
"source-map-support": "^0.5.6",
@@ -11107,9 +10990,9 @@
}
},
"jest-runtime": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.4.1.tgz",
- "integrity": "sha512-fnInrsEAbLpNctQa+RLnKZyQLMmb5u4YdoT9CbRKWhjMY7q6ledOu+x+ORZ3glQOK/vJIS701RaJRp1pc5ziaA==",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.4.2.tgz",
+ "integrity": "sha512-qaUDOi7tcdDe3MH5g5ycEslTpx0voPZvzIYbKjvWxCzCL2JEemLM+7IEe0BeLi2v5wvb/uh3dkb2wQI67uPtCw==",
"dev": true,
"requires": {
"babel-core": "^6.0.0",
@@ -11119,12 +11002,12 @@
"exit": "^0.1.2",
"fast-json-stable-stringify": "^2.0.0",
"graceful-fs": "^4.1.11",
- "jest-config": "^23.4.1",
+ "jest-config": "^23.4.2",
"jest-haste-map": "^23.4.1",
"jest-message-util": "^23.4.0",
"jest-regex-util": "^23.3.0",
"jest-resolve": "^23.4.1",
- "jest-snapshot": "^23.4.1",
+ "jest-snapshot": "^23.4.2",
"jest-util": "^23.4.0",
"jest-validate": "^23.4.0",
"micromatch": "^2.3.11",
@@ -11135,12 +11018,6 @@
"yargs": "^11.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -11207,12 +11084,6 @@
"wrap-ansi": "^2.0.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"jest-docblock": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz",
@@ -11237,25 +11108,6 @@
"sane": "^2.0.0"
}
},
- "jest-snapshot": {
- "version": "23.4.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.1.tgz",
- "integrity": "sha512-oMjaQ4vB4uT211zx00X0R7hg+oLVRDvhVKiC6+vSg7Be9S/AmkDMCVUoaPcLRK/0NkZBTzrh4WCzrSZgUEZW3g==",
- "dev": true,
- "requires": {
- "babel-traverse": "^6.0.0",
- "babel-types": "^6.0.0",
- "chalk": "^2.0.1",
- "jest-diff": "^23.2.0",
- "jest-matcher-utils": "^23.2.0",
- "jest-message-util": "^23.4.0",
- "jest-resolve": "^23.4.1",
- "mkdirp": "^0.5.1",
- "natural-compare": "^1.4.0",
- "pretty-format": "^23.2.0",
- "semver": "^5.5.0"
- }
- },
"jest-worker": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz",
@@ -11265,22 +11117,6 @@
"merge-stream": "^1.0.1"
}
},
- "pretty-format": {
- "version": "23.2.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
- "integrity": "sha1-OwqqY8AYpTWDNzwcs6XZbMXoMBc=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0",
- "ansi-styles": "^3.2.0"
- }
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
- "dev": true
- },
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -11338,17 +11174,21 @@
"integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU="
},
"jest-snapshot": {
- "version": "23.2.0",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.2.0.tgz",
- "integrity": "sha1-x6PQFxd7utYMillYac+QqHguan4=",
+ "version": "23.4.2",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.4.2.tgz",
+ "integrity": "sha512-rCBxIURDlVEW1gJgJSpo8l2F2gFwp9U7Yb3CmcABUpmQ8NASpb6LJkEvtcQifAYSi22OL44TSuanq1G6x1GJwg==",
"dev": true,
"requires": {
+ "babel-types": "^6.0.0",
"chalk": "^2.0.1",
"jest-diff": "^23.2.0",
"jest-matcher-utils": "^23.2.0",
+ "jest-message-util": "^23.4.0",
+ "jest-resolve": "^23.4.1",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
- "pretty-format": "^23.2.0"
+ "pretty-format": "^23.2.0",
+ "semver": "^5.5.0"
},
"dependencies": {
"ansi-regex": {
@@ -11377,12 +11217,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"pretty-format": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
@@ -11393,6 +11227,12 @@
"ansi-styles": "^3.2.0"
}
},
+ "semver": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "dev": true
+ },
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -11455,12 +11295,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -11516,12 +11350,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"pretty-format": {
"version": "23.2.0",
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.2.0.tgz",
@@ -11574,12 +11402,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
@@ -11600,9 +11422,9 @@
}
},
"js-base64": {
- "version": "2.4.6",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.6.tgz",
- "integrity": "sha512-O9SR2NVICx6rCqh1qsU91QZ5IoNa+2T1ROJ0OQlfvATKGmnjsAvg3r0E5ufPZ4a95jdKTPXhFWiE/sOZ7a5Rtg=="
+ "version": "2.4.8",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.8.tgz",
+ "integrity": "sha512-hm2nYpDrwoO/OzBhdcqs/XGT6XjSuSSCVEpia+Kl2J6x4CYt5hISlVL/AYU1khoDXv0AQVgxtdJySb9gjAn56Q=="
},
"js-sha256": {
"version": "0.9.0",
@@ -11630,36 +11452,36 @@
"optional": true
},
"jsdom": {
- "version": "11.11.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.11.0.tgz",
- "integrity": "sha512-ou1VyfjwsSuWkudGxb03FotDajxAto6USAlmMZjE2lc0jCznt7sBWkhfRBRaWwbnmDqdMSTKTLT5d9sBFkkM7A==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
+ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
"dev": true,
"requires": {
- "abab": "^1.0.4",
- "acorn": "^5.3.0",
+ "abab": "^2.0.0",
+ "acorn": "^5.5.3",
"acorn-globals": "^4.1.0",
"array-equal": "^1.0.0",
"cssom": ">= 0.3.2 < 0.4.0",
- "cssstyle": ">= 0.3.1 < 0.4.0",
+ "cssstyle": "^1.0.0",
"data-urls": "^1.0.0",
- "domexception": "^1.0.0",
- "escodegen": "^1.9.0",
+ "domexception": "^1.0.1",
+ "escodegen": "^1.9.1",
"html-encoding-sniffer": "^1.0.2",
- "left-pad": "^1.2.0",
- "nwsapi": "^2.0.0",
+ "left-pad": "^1.3.0",
+ "nwsapi": "^2.0.7",
"parse5": "4.0.0",
"pn": "^1.1.0",
- "request": "^2.83.0",
+ "request": "^2.87.0",
"request-promise-native": "^1.0.5",
"sax": "^1.2.4",
"symbol-tree": "^3.2.2",
- "tough-cookie": "^2.3.3",
+ "tough-cookie": "^2.3.4",
"w3c-hr-time": "^1.0.1",
"webidl-conversions": "^4.0.2",
"whatwg-encoding": "^1.0.3",
"whatwg-mimetype": "^2.1.0",
"whatwg-url": "^6.4.1",
- "ws": "^4.0.0",
+ "ws": "^5.2.0",
"xml-name-validator": "^3.0.0"
},
"dependencies": {
@@ -11669,14 +11491,68 @@
"integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
"dev": true
},
- "ws": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
- "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
+ "left-pad": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
+ "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
+ "dev": true
+ },
+ "request": {
+ "version": "2.87.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
+ "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
"dev": true,
"requires": {
- "async-limiter": "~1.0.0",
- "safe-buffer": "~5.1.0"
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.6.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.5",
+ "extend": "~3.0.1",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.1",
+ "har-validator": "~5.0.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.17",
+ "oauth-sign": "~0.8.2",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1",
+ "tough-cookie": "~2.3.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.1.0"
+ },
+ "dependencies": {
+ "tough-cookie": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+ "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "dev": true,
+ "requires": {
+ "punycode": "^1.4.1"
+ }
+ }
+ }
+ },
+ "tough-cookie": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+ "dev": true,
+ "requires": {
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ }
+ },
+ "ws": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
}
}
}
@@ -11831,9 +11707,9 @@
}
},
"kleur": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-1.0.1.tgz",
- "integrity": "sha512-8srIZ5BK5PCJw1L/JN741xgNfSjuQNK9ImYbYzv7ZUD3WPfuywaY+yd7lQOphJ+2vwXnMLnRZoAh5X+orRt4LQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.1.tgz",
+ "integrity": "sha512-Zq/jyANIJ2uX8UZjWlqLwbyhcxSXJtT/Y89lClyeZd3l++3ztL1I5SSCYrbcbwSunTjC88N3WuMk0kRDQD6gzA==",
"dev": true
},
"lazy-cache": {
@@ -13003,6 +12879,44 @@
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s="
},
+ "mv": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
+ "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "mkdirp": "~0.5.1",
+ "ncp": "~2.0.0",
+ "rimraf": "~2.4.0"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
+ "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "rimraf": {
+ "version": "2.4.5",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
+ "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^6.0.1"
+ }
+ }
+ }
+ },
"nan": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
@@ -13127,6 +13041,13 @@
}
}
},
+ "ncp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+ "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
+ "dev": true,
+ "optional": true
+ },
"needle": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/needle/-/needle-2.2.1.tgz",
@@ -13481,9 +13402,9 @@
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
},
"nwsapi": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.5.tgz",
- "integrity": "sha512-cqfA/wLUW6YbFQLkd5ZKq2SCaZkCoxehU9qt6ccMwH3fHbzUkcien9BzOgfBXfIkxeWnRFKb1ZKmjwaa9MYOMw==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.8.tgz",
+ "integrity": "sha512-7RZ+qbFGiVc6v14Y8DSZjPN1wZPOaMbiiP4tzf5eNuyOITAeOIA3cMhjuKUypVIqBgCSg1KaSyAv8Ocq/0ZJ1A==",
"dev": true
},
"oauth-sign": {
@@ -13740,11 +13661,11 @@
}
},
"original": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/original/-/original-1.0.1.tgz",
- "integrity": "sha512-IEvtB5vM5ULvwnqMxWBLxkS13JIEXbakizMSo3yoPNPCIWzg8TG3Usn/UhXoZFM/m+FuEA20KdzPSFq/0rS+UA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+ "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
"requires": {
- "url-parse": "~1.4.0"
+ "url-parse": "^1.4.3"
}
},
"os-browserify": {
@@ -14159,11 +14080,6 @@
"supports-color": "^5.3.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -14500,42 +14416,22 @@
}
},
"postcss-load-config": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz",
- "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz",
+ "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==",
"requires": {
- "cosmiconfig": "^2.1.0",
- "object-assign": "^4.1.0",
- "postcss-load-options": "^1.2.0",
- "postcss-load-plugins": "^2.3.0"
- }
- },
- "postcss-load-options": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz",
- "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=",
- "requires": {
- "cosmiconfig": "^2.1.0",
- "object-assign": "^4.1.0"
- }
- },
- "postcss-load-plugins": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz",
- "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=",
- "requires": {
- "cosmiconfig": "^2.1.1",
- "object-assign": "^4.1.0"
+ "cosmiconfig": "^4.0.0",
+ "import-cwd": "^2.0.0"
}
},
"postcss-loader": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.5.tgz",
- "integrity": "sha512-pV7kB5neJ0/1tZ8L1uGOBNTVBCSCXQoIsZMsrwvO8V2rKGa2tBl/f80GGVxow2jJnRJ2w1ocx693EKhZAb9Isg==",
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz",
+ "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==",
"requires": {
"loader-utils": "^1.1.0",
"postcss": "^6.0.0",
- "postcss-load-config": "^1.2.0",
+ "postcss-load-config": "^2.0.0",
"schema-utils": "^0.4.0"
}
},
@@ -15245,12 +15141,12 @@
"dev": true
},
"prompts": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.12.tgz",
- "integrity": "sha512-pgR1GE1JM8q8UsHVIgjdK62DPwvrf0kvaKWJ/mfMoCm2lwfIReX/giQ1p0AlMoUXNhQap/8UiOdqi3bOROm/eg==",
+ "version": "0.1.14",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz",
+ "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==",
"dev": true,
"requires": {
- "kleur": "^1.0.0",
+ "kleur": "^2.0.1",
"sisteransi": "^0.1.1"
}
},
@@ -15283,9 +15179,9 @@
}
},
"proxy-agent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.0.tgz",
- "integrity": "sha512-g6n6vnk8fRf705ShN+FEXFG/SDJaW++lSs0d9KaJh4uBWW/wi7en4Cpo5VYQW3SZzAE121lhB/KLQrbURoubZw==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-2.3.1.tgz",
+ "integrity": "sha512-CNKuhC1jVtm8KJYFTS2ZRO71VCBx3QSA92So/e6NrY6GoJonkx3Irnk4047EsCcswczwqAekRj3s8qLRGahSKg==",
"requires": {
"agent-base": "^4.2.0",
"debug": "^3.1.0",
@@ -15331,6 +15227,12 @@
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
},
+ "psl": {
+ "version": "1.1.29",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+ "dev": true
+ },
"public-encrypt": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz",
@@ -15368,9 +15270,9 @@
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
},
"puppeteer": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.5.0.tgz",
- "integrity": "sha512-eELwFtFxL+uhmg4jPZOZXzSrPEYy4CaYQNbcchBbfxY+KjMpnv6XGf/aYWaQG49OTpfi2/DMziXtDM8XuJgoUA==",
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.6.2.tgz",
+ "integrity": "sha512-KBgMr/ZdwIwDQWTqcAlGhnQ2Vd6p+o5B89H60XUfdmCpia2KViSZsdRjvrf2wYOxXSrpYx6OuCBzV7ppLuNjNg==",
"dev": true,
"requires": {
"debug": "^3.1.0",
@@ -15399,9 +15301,9 @@
"dev": true
},
"ws": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.1.tgz",
- "integrity": "sha512-2NkHdPKjDBj3CHdnAGNpmlliryKqF+n9MYXX7/wsVC4yqYocKreKNjydPDvT3wShAZnndlM0RytEfTALCDvz7A==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
"dev": true,
"requires": {
"async-limiter": "~1.0.0"
@@ -15591,9 +15493,9 @@
}
},
"react": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react/-/react-16.4.1.tgz",
- "integrity": "sha512-3GEs0giKp6E0Oh/Y9ZC60CmYgUPnp7voH9fbjWsvXtYFb4EWtgQub0ADSq0sJR0BbHc4FThLLtzlcFaFXIorwg==",
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.4.2.tgz",
+ "integrity": "sha512-dMv7YrbxO4y2aqnvA7f/ik9ibeLSHQJTI6TrYAenPSaQ6OXfb+Oti+oJiy8WBxgRzlKatYqtCjphTgDSCEiWFg==",
"requires": {
"fbjs": "^0.8.16",
"loose-envify": "^1.1.0",
@@ -15668,9 +15570,9 @@
}
},
"react-dom": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.1.tgz",
- "integrity": "sha512-1Gin+wghF/7gl4Cqcvr1DxFX2Osz7ugxSwl6gBqCMpdrxHjIFUS7GYxrFftZ9Ln44FHw0JxCFD9YtZsrbR5/4A==",
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.4.2.tgz",
+ "integrity": "sha512-Usl73nQqzvmJN+89r97zmeUpQDKDlh58eX6Hbs/ERdDHzeBzWy+ENk7fsGQ+5KxArV1iOFPT46/VneklK9zoWw==",
"dev": true,
"requires": {
"fbjs": "^0.8.16",
@@ -15741,9 +15643,9 @@
}
},
"react-html-attributes": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.2.tgz",
- "integrity": "sha1-DSzPE0/Hmy01Q4N9wVkdMre5A/k=",
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/react-html-attributes/-/react-html-attributes-1.4.3.tgz",
+ "integrity": "sha1-jDbDX85rdQk40oavQo7R2nYlGG4=",
"requires": {
"html-element-attributes": "^1.0.0"
}
@@ -15771,9 +15673,9 @@
}
},
"react-is": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.1.tgz",
- "integrity": "sha512-xpb0PpALlFWNw/q13A+1aHeyJyLYCg0/cCHPUA43zYluZuIPHaHL3k8OBsTgQtxqW0FhyDEMvi8fZ/+7+r4OSQ==",
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.4.2.tgz",
+ "integrity": "sha512-rI3cGFj/obHbBz156PvErrS5xc6f1eWyTwyV4mo0vF2lGgXgS+mm7EKD5buLJq6jNgIagQescGSVG2YzgXt8Yg==",
"dev": true
},
"react-komposer": {
@@ -15803,9 +15705,9 @@
}
},
"react-modal": {
- "version": "3.4.5",
- "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.4.5.tgz",
- "integrity": "sha512-fYaGmsvt4z5voC2Bl/9ngIWES4BSRYgGnTljMwuzTuYZ1BBpaZbnXia8xlvj7mF0kg3aPV+5APjZRiMfRG6vyA==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.5.1.tgz",
+ "integrity": "sha512-GxL7ycOgKC+p641cR+V1bw5dC1faL2N86/AJlzbMVmvt1totoylgkJmn9zvLuHeuarGbB7CLfHMGpeRowaj2jQ==",
"requires": {
"exenv": "^1.2.0",
"prop-types": "^15.5.10",
@@ -16006,11 +15908,11 @@
}
},
"react-native-i18n": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/react-native-i18n/-/react-native-i18n-2.0.14.tgz",
- "integrity": "sha512-Cv38EgAfZTWjRBj0yPSb8c68qPME554d6k0dxGKM/wlHL8xV3bdvzP5F60MyNWdmTOUC4V2jFmGDvVU5VkFIpg==",
+ "version": "2.0.15",
+ "resolved": "https://registry.npmjs.org/react-native-i18n/-/react-native-i18n-2.0.15.tgz",
+ "integrity": "sha512-V8VwUP0TLda3oJvgt5tdnFaOV7WXPhTjCTLO7sXI3C2SHggSbD4bCUryMzNJhesimJidH21V2Owvj4zAylHoQQ==",
"requires": {
- "i18n-js": "^3.0.11"
+ "i18n-js": "3.0.11"
}
},
"react-native-image-crop-picker": {
@@ -16023,9 +15925,9 @@
"integrity": "sha512-UwoHcn5cp/NgU8pjzod3GiIV/U1OKOp9/7G/xPaAbwsMm7AJ6aogn7vFaVdPFUc5Qor6fCsFjeNICcxiDOcPqw=="
},
"react-native-image-zoom-viewer": {
- "version": "2.2.13",
- "resolved": "https://registry.npmjs.org/react-native-image-zoom-viewer/-/react-native-image-zoom-viewer-2.2.13.tgz",
- "integrity": "sha512-4Kce8dttWO4NdXBLf+2CC2aP2p2Hgwj+7NVQZlmpM9f4xitQNIf+mgWT2jDnSsXdNKiwv5BykLzuNmv542wSPQ==",
+ "version": "2.2.14",
+ "resolved": "https://registry.npmjs.org/react-native-image-zoom-viewer/-/react-native-image-zoom-viewer-2.2.14.tgz",
+ "integrity": "sha512-ZgVXnlTftQRxbd3YU4k8jvOO94GXWHvW3ITWXoxRupUsztaE4lWdLZizG/M2hxqdNOhHzZfPu60nU0+g0dZqzA==",
"requires": {
"react-native-image-pan-zoom": "^2.1.7"
}
@@ -16088,18 +15990,18 @@
}
},
"react-native-modal": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/react-native-modal/-/react-native-modal-6.4.0.tgz",
- "integrity": "sha512-X+bOV8P24NwnIrc2vhLMwowi1iUs2NA4LJv21B/dB67n5/I4ncbhIgf13v5QJ5zGSZ3wfVgRuEKEkKyn6XpYfw==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/react-native-modal/-/react-native-modal-6.5.0.tgz",
+ "integrity": "sha512-ewchdETAGd32xLGLK93NETEGkRcePtN7ZwjmLSQnNW1Zd0SRUYE8NqftjamPyfKvK0i2DZjX4YAghGZTqaRUbA==",
"requires": {
"prop-types": "^15.6.1",
"react-native-animatable": "^1.2.4"
}
},
"react-native-navigation": {
- "version": "1.1.474",
- "resolved": "https://registry.npmjs.org/react-native-navigation/-/react-native-navigation-1.1.474.tgz",
- "integrity": "sha512-bnQyfkzj4wozHyndQMDyfcgMla5QbKDnmH4IdCEjiBpXAuH9qp5kAW9Z1+yio/Zez/KTs+7ndGv6UlOgo2acrg==",
+ "version": "1.1.479",
+ "resolved": "https://registry.npmjs.org/react-native-navigation/-/react-native-navigation-1.1.479.tgz",
+ "integrity": "sha512-0Qdr8ybkSbwr2RhaTWfonNMCbIyky0zDTJaN5RTr3y2uz4wFAySDANB64wK/8xNz7uscE8mObDC3gLHTMRdb2Q==",
"requires": {
"lodash": "4.x.x"
}
@@ -16133,9 +16035,9 @@
}
},
"react-native-picker-select": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/react-native-picker-select/-/react-native-picker-select-4.0.0.tgz",
- "integrity": "sha512-3wxKlFyfLsTptftTrdO1cqrXEYoJZ84wEuhfHocpkClIxK4FGEzsrZiKgIiRicaF9TCDFn76dsYdLgWFVJMqwQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/react-native-picker-select/-/react-native-picker-select-4.2.0.tgz",
+ "integrity": "sha512-e9sjqZQHfv9ab+shYYZcdVSk/woFdfh7kufdVa6wQTXAeamHavX0x9LrDvzlytM/GOvr5YxmO0O3X1OaTNPTTg==",
"requires": {
"lodash.isequal": "^4.5.0"
}
@@ -16171,9 +16073,9 @@
}
},
"react-native-svg": {
- "version": "6.4.1",
- "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-6.4.1.tgz",
- "integrity": "sha512-dWBuebSKWREd6THUYWotGdM6cokQ1pPuEkuf/4k5WQtEd4y29m0A6tREynfPux/N1pCr45EE3gWISJjs+phSng==",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-6.5.2.tgz",
+ "integrity": "sha512-r9SXx/AOzlo/jkahAo9WjNTRJ+A2lDHE3yS3WtgZ4Gzqqyxb3L6LpuAG02x1TaKEowdTEG3r6u7vhnCZON8N/A==",
"requires": {
"color": "^2.0.1",
"lodash": "^4.16.6",
@@ -16190,9 +16092,9 @@
}
},
"color-string": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz",
- "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
"requires": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
@@ -16209,9 +16111,9 @@
}
},
"react-native-vector-icons": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-4.6.0.tgz",
- "integrity": "sha512-rpfhfPiXCK2PX1nrNhdxSMrEGB/Gw/SvKoPM0G2wAkSoqynnes19K0VYI+Up7DqR1rFIpE4hP2erpT1tNx2tfg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-5.0.0.tgz",
+ "integrity": "sha512-3ZmLGhQFk5QeHuttx0tOpghXhpVMGwXzb3pVaW/M8Qj0qkcg7koVyZmoR9vABQuxFC6KbM3l6/WLYZPh2aGfuQ==",
"requires": {
"lodash": "^4.0.0",
"prop-types": "^15.5.10",
@@ -16219,9 +16121,9 @@
}
},
"react-native-video": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-3.0.0.tgz",
- "integrity": "sha512-c86Gne9/dA5Je1I07/cg5OHmKgf3vTZWISa0eRge4rCJHAe2NyTBNQODFqDdqS4LFio5AuWjV/+bP7/8FXLy1g==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/react-native-video/-/react-native-video-3.2.0.tgz",
+ "integrity": "sha512-LLqyV9xK67FQTcQDpYruyRODlkQdE59uLExGoXjBngBHrf0q/R13yYaLk3G4CU2Bz+bi3cVzzI6E+q03eNeVYQ==",
"requires": {
"keymirror": "0.1.1",
"prop-types": "^15.5.10"
@@ -16356,9 +16258,9 @@
}
},
"react-split-pane": {
- "version": "0.1.81",
- "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.81.tgz",
- "integrity": "sha512-UMOFL4UtZ2L9zgu6L+f5zxWFbL9R6lMxNKrN28jLdK2j544haldNUTVZT3SuvolTqm1Hdl/QhhFGFuq9Y+/37A==",
+ "version": "0.1.82",
+ "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.82.tgz",
+ "integrity": "sha1-Qvu5/Ugj8F4DfeDas81s+b8M9Oo=",
"requires": {
"inline-style-prefixer": "^3.0.6",
"prop-types": "^15.5.10",
@@ -16375,15 +16277,15 @@
}
},
"react-test-renderer": {
- "version": "16.4.1",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.4.1.tgz",
- "integrity": "sha512-wyyiPxRZOTpKnNIgUBOB6xPLTpIzwcQMIURhZvzUqZzezvHjaGNsDPBhMac5fIY3Jf5NuKxoGvV64zDSOECPPQ==",
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.4.2.tgz",
+ "integrity": "sha512-vdTPnRMDbxfv4wL4lzN4EkVGXyYs7LE2uImOsqh1FKiP6L5o1oJl8nore5sFi9vxrP9PK3l4rgb/fZ4PVUaWSA==",
"dev": true,
"requires": {
"fbjs": "^0.8.16",
"object-assign": "^4.1.1",
"prop-types": "^15.6.0",
- "react-is": "^16.4.1"
+ "react-is": "^16.4.2"
}
},
"react-timer-mixin": {
@@ -16557,9 +16459,9 @@
}
},
"realm": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/realm/-/realm-2.13.0.tgz",
- "integrity": "sha1-+lW+uR1anntUIwPCVS1nI4sIw7s=",
+ "version": "2.14.2",
+ "resolved": "https://registry.npmjs.org/realm/-/realm-2.14.2.tgz",
+ "integrity": "sha512-57P839VbThGTjbF4xQ17ojX2Dp2tp6FxZK1umfCFZEXmqB4JFR9eAWWYwPOqOki25v5UsVB3BLqUQG7ABe9/Zw==",
"requires": {
"command-line-args": "^4.0.6",
"decompress": "^4.2.0",
@@ -16748,9 +16650,9 @@
}
},
"regenerator-runtime": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.0.tgz",
- "integrity": "sha512-SpV2LhF5Dm9UYMEprB3WwsBnWwqTrmjrm2UZb42cl2G02WVGgx7Mg8aa9pdLEKp6hZ+/abcMc2NxKA8f02EG2w=="
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
+ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
},
"regenerator-transform": {
"version": "0.10.1",
@@ -16932,9 +16834,9 @@
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"require-from-string": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz",
- "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg="
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
},
"require-main-filename": {
"version": "1.0.1",
@@ -17047,9 +16949,9 @@
}
},
"rn-fetch-blob": {
- "version": "0.10.11",
- "resolved": "https://registry.npmjs.org/rn-fetch-blob/-/rn-fetch-blob-0.10.11.tgz",
- "integrity": "sha512-QHF8qlDdAcS0ZjydRlh8nZDVWBQJGsshPrXgyB0z34gY654T1+z2fkmC0WWxQ4CSKyweVFvU4fYa0AE/r1nI4A==",
+ "version": "0.10.12",
+ "resolved": "https://registry.npmjs.org/rn-fetch-blob/-/rn-fetch-blob-0.10.12.tgz",
+ "integrity": "sha512-MWxD3gV5Hy4AvtZA2HtAtBSne4YwcsE6HKLhXyPonWf6Rpi4C3sw7fO4wAPnKVkcgOKQQfGMPs1jLH6Ugw9Ecw==",
"requires": {
"base-64": "0.1.0",
"glob": "7.0.6"
@@ -17121,6 +17023,13 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
},
+ "safe-json-stringify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz",
+ "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==",
+ "dev": true,
+ "optional": true
+ },
"safe-regex": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
@@ -17848,9 +17757,9 @@
}
},
"snyk": {
- "version": "1.88.1",
- "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.88.1.tgz",
- "integrity": "sha1-0hKzFjE0g/aSErlN89f4eunpwP0=",
+ "version": "1.90.0",
+ "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.90.0.tgz",
+ "integrity": "sha1-ujf2ZIThilb8mPZNVlpRelP8hWI=",
"requires": {
"abbrev": "^1.1.1",
"ansi-escapes": "^3.1.0",
@@ -17863,7 +17772,7 @@
"needle": "^2.0.1",
"opn": "^5.2.0",
"os-name": "^2.0.1",
- "proxy-agent": "^3.0.0",
+ "proxy-agent": "^2.0.0",
"proxy-from-env": "^1.0.0",
"recursive-readdir": "^2.2.2",
"semver": "^5.5.0",
@@ -17873,10 +17782,10 @@
"snyk-gradle-plugin": "1.3.0",
"snyk-module": "1.8.2",
"snyk-mvn-plugin": "1.2.0",
- "snyk-nuget-plugin": "1.6.2",
+ "snyk-nuget-plugin": "1.6.3",
"snyk-php-plugin": "1.5.1",
"snyk-policy": "1.12.0",
- "snyk-python-plugin": "1.6.1",
+ "snyk-python-plugin": "1.8.0",
"snyk-resolve": "1.0.1",
"snyk-resolve-deps": "3.1.0",
"snyk-sbt-plugin": "1.3.0",
@@ -17919,11 +17828,6 @@
"ms": "2.0.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
"recursive-readdir": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
@@ -18081,9 +17985,9 @@
"integrity": "sha512-ieTWhn1MB88gEQ6nUtGCeUKQ6Xoxm+u+QmD9u3zfP1QS5ep9fWt3YYDUQjgUiDTJJy7QyVQdZ/fsz3RECnOA7w=="
},
"snyk-nuget-plugin": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.2.tgz",
- "integrity": "sha512-8l8hS85esXyweTFgUFdwnGT94Ts42KcG5fdBX2wYosQkpUMePd+GTT9+64k/GvdH5hqcNt2OvtzW+Uf8JF+pbA==",
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.6.3.tgz",
+ "integrity": "sha512-sC590aveQb0ns7HuDheIZ7FhN/HZzWgzXKUnBGfia/SXIFBpQz/6tognraMJ4+877uLLSdsB2jkyDeHYeWICrg==",
"requires": {
"debug": "^3.1.0",
"es6-promise": "^4.1.1",
@@ -18154,9 +18058,9 @@
}
},
"snyk-python-plugin": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.6.1.tgz",
- "integrity": "sha512-6zr5jAB3p/bwMZQxZpdj+aPmioTgHB4DI6JMLInhZupss0x8Ome5YqzVzBbOvUKNrc3KaLtjGrJWcAuxDL6M/g==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.8.0.tgz",
+ "integrity": "sha512-44oDdNjCaNEy+uSmLB3iqtGJa6TAmB7bcG7j9+KkHH6WNxjrwCDHAZQXncIeliYXohb0FFTNMAnbAK4PosqN2Q==",
"requires": {
"tmp": "0.0.33"
}
@@ -18723,9 +18627,9 @@
}
},
"tail": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/tail/-/tail-1.2.4.tgz",
- "integrity": "sha512-IAAm998XX0A1yuQgYzfyfWyDYb1tFI6Q548g71xLwqRn4MvnB+fstbmBoexxRI3i+n04rtetDBqmE0jrYSTvkA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/tail/-/tail-1.3.0.tgz",
+ "integrity": "sha512-9Blh9bCW3lQyr10UAh//7K3kqljspQ+NcMa5nwVXicnxFXfiUizZrEC71kqVKPhe2UcMLXDEb+YnqR+tzvOEDQ==",
"dev": true
},
"tapable": {
@@ -19232,9 +19136,9 @@
"integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0="
},
"time-stamp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz",
- "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c="
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.1.tgz",
+ "integrity": "sha512-KUnkvOWC3C+pEbwE/0u3CcmNpGCDqkYGYZOphe1QFxApYQkJ5g195TDBjgZch/zG6chU1NcabLwnM7BCpWAzTQ=="
},
"timers-browserify": {
"version": "2.0.6",
@@ -19792,9 +19696,9 @@
}
},
"url-parse": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.1.tgz",
- "integrity": "sha512-x95Td74QcvICAA0+qERaVkRpTGKyBHHYdwL2LXZm5t/gBtCB9KQSO/0zQgSTYEV1p0WcvSg79TLNPSvd5IDJMQ==",
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz",
+ "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==",
"requires": {
"querystringify": "^2.0.0",
"requires-port": "^1.0.0"
@@ -19881,9 +19785,9 @@
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"velocity-animate": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/velocity-animate/-/velocity-animate-1.5.1.tgz",
- "integrity": "sha512-VJ3csMz5zP1ifkbBlsNYpxnoWkPHfVRQ8tUongS78W5DxSGHB68pjYHDTgUYBkVM7P/HpYdVukgVUFcxjr1gGg=="
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/velocity-animate/-/velocity-animate-1.5.2.tgz",
+ "integrity": "sha512-m6EXlCAMetKztO1ppBhGU1/1MR3IiEevO6ESq6rcrSQ3Q77xYSW13jkfXW88o4xMrkXJhy/U7j4wFR/twMB0Eg=="
},
"velocity-react": {
"version": "1.4.1",
@@ -20014,6 +19918,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
+ },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -20062,7 +19971,6 @@
"version": "2.22.2",
"resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.22.2.tgz",
"integrity": "sha512-uccPS6b/UlXJoNCS+3fuc40z2KZgO0qQhnu+Ne1iZiHTy9s5fMCJAV+Vc8VTVkN203UphsxQmkumxYeHLiQ5jg==",
- "dev": true,
"requires": {
"ansi-html": "0.0.7",
"html-entities": "^1.2.0",
@@ -20074,7 +19982,6 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
@@ -20394,13 +20301,6 @@
"requires": {
"sax": ">=0.6.0",
"xmlbuilder": "~9.0.1"
- },
- "dependencies": {
- "xmlbuilder": {
- "version": "9.0.7",
- "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
- "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
- }
}
},
"xmlbuilder": {
diff --git a/package.json b/package.json
index a3b7365f4..d75fbdf09 100644
--- a/package.json
+++ b/package.json
@@ -25,17 +25,18 @@
"dependencies": {
"@babel/polyfill": "^7.0.0-beta.47",
"@remobile/react-native-toast": "^1.0.7",
- "@storybook/addons": "^3.4.8",
- "@storybook/react-native": "^3.4.8",
+ "@storybook/addons": "^3.4.10",
+ "@storybook/react-native": "^3.4.10",
"deep-equal": "^1.0.1",
"ejson": "^2.1.2",
- "js-base64": "^2.4.6",
+ "js-base64": "^2.4.8",
"js-sha256": "^0.9.0",
"lodash": "^4.17.10",
"markdown-it-flowdock": "^0.3.7",
"moment": "^2.22.2",
"prop-types": "^15.6.2",
- "react": "^16.4.1",
+ "react": "^16.4.2",
+ "react-clone-referenced-element": "^1.0.1",
"react-emojione": "^5.0.0",
"react-native": "^0.56.0",
"react-native-actionsheet": "^2.4.2",
@@ -43,51 +44,51 @@
"react-native-dialog": "^5.1.0",
"react-native-fabric": "^0.5.1",
"react-native-fast-image": "^4.0.14",
- "react-native-i18n": "^2.0.14",
+ "react-native-i18n": "^2.0.15",
"react-native-image-crop-picker": "git+https://github.com/RocketChat/react-native-image-crop-picker.git",
- "react-native-image-zoom-viewer": "^2.2.13",
+ "react-native-image-zoom-viewer": "^2.2.14",
"react-native-keyboard-aware-scroll-view": "^0.6.0",
"react-native-keyboard-input": "^5.2.3",
"react-native-keyboard-tracking-view": "^5.4.4",
"react-native-markdown-renderer": "^3.2.8",
"react-native-meteor": "^1.4.0",
- "react-native-modal": "^6.4.0",
- "react-native-navigation": "^1.1.474",
+ "react-native-modal": "^6.5.0",
+ "react-native-navigation": "^1.1.479",
"react-native-notifications": "git+https://github.com/RocketChat/react-native-notifications.git",
"react-native-optimized-flatlist": "^1.0.4",
- "react-native-picker-select": "^4.0.0",
+ "react-native-picker-select": "^4.2.0",
"react-native-responsive-ui": "^1.1.1",
"react-native-safari-view": "^2.1.0",
"react-native-scrollable-tab-view": "git+https://github.com/skv-headless/react-native-scrollable-tab-view.git",
"react-native-slider": "^0.11.0",
- "react-native-svg": "^6.4.1",
+ "react-native-svg": "^6.5.2",
"react-native-svg-image": "^2.0.1",
- "react-native-vector-icons": "^4.6.0",
- "react-native-video": "^3.0.0",
+ "react-native-vector-icons": "^5.0.0",
+ "react-native-video": "^3.2.0",
"react-native-video-controls": "^2.2.3",
"react-native-zeroconf": "^0.9.0",
"react-redux": "^5.0.6",
- "realm": "^2.13.0",
+ "realm": "^2.14.2",
"redux": "^4.0.0",
"redux-enhancer-react-native-appstate": "^0.3.1",
"redux-immutable-state-invariant": "^2.1.0",
"redux-saga": "^0.16.0",
- "regenerator-runtime": "^0.12.0",
- "rn-fetch-blob": "^0.10.11",
- "snyk": "^1.88.1",
+ "regenerator-runtime": "^0.12.1",
+ "rn-fetch-blob": "^0.10.12",
+ "snyk": "^1.90.0",
"strip-ansi": "^4.0.0"
},
"devDependencies": {
"@babel/core": "7.0.0-beta.47",
"@babel/plugin-proposal-decorators": "7.0.0-beta.47",
- "@storybook/addon-storyshots": "^3.4.8",
+ "@storybook/addon-storyshots": "^3.4.10",
"babel-core": "^7.0.0-beta.47",
"babel-eslint": "^8.2.6",
- "babel-jest": "^23.4.0",
+ "babel-jest": "^23.4.2",
"babel-plugin-transform-remove-console": "^6.9.4",
"babel-preset-react-native": "^5.0.2",
- "codecov": "^3.0.2",
- "detox": "^8.0.0",
+ "codecov": "^3.0.4",
+ "detox": "^8.1.4",
"eslint": "^4.19.1",
"eslint-config-airbnb": "^16.1.0",
"eslint-plugin-import": "^2.13.0",
@@ -95,12 +96,12 @@
"eslint-plugin-react": "^7.10.0",
"eslint-plugin-react-native": "^3.2.0",
"identity-obj-proxy": "^3.0.0",
- "jest": "^23.4.1",
- "jest-cli": "^23.4.1",
+ "jest": "^23.4.2",
+ "jest-cli": "^23.4.2",
"mocha": "^5.2.0",
- "react-dom": "^16.4.1",
+ "react-dom": "^16.4.2",
"react-native-bundle-visualizer": "^1.3.0",
- "react-test-renderer": "^16.4.1",
+ "react-test-renderer": "^16.4.2",
"reactotron-react-native": "^2.0.0",
"reactotron-redux": "^2.0.0",
"reactotron-redux-saga": "^2.0.0"
@@ -128,7 +129,13 @@
"configurations": {
"ios.sim.debug": {
"binaryPath": "ios/build/Build/Products/Debug-iphonesimulator/RocketChatRN.app",
- "build": "xcodebuild -project ios/RocketChatRN.xcodeproj -scheme RocketChatRN -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
+ "build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build",
+ "type": "ios.simulator",
+ "name": "iPhone 7"
+ },
+ "ios.sim.release": {
+ "binaryPath": "ios/build/Build/Products/Release-iphonesimulator/RocketChatRN.app",
+ "build": "xcodebuild -workspace ios/RocketChatRN.xcworkspace -scheme RocketChatRN -configuration Release -sdk iphonesimulator -derivedDataPath ios/build",
"type": "ios.simulator",
"name": "iPhone 7"
}