diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js
index bca1e486..eff1ee41 100644
--- a/app/actions/actionsTypes.js
+++ b/app/actions/actionsTypes.js
@@ -75,7 +75,7 @@ export const SERVER = createRequestTypes('SERVER', [
'ADD',
'GOTO_ADD'
]);
-export const METEOR = createRequestTypes('METEOR_CONNECT', [...defaultTypes, 'DISCONNECT']);
+export const METEOR = createRequestTypes('METEOR_CONNECT', [...defaultTypes, 'DISCONNECT', 'DISCONNECT_BY_USER']);
export const LOGOUT = 'LOGOUT'; // logout is always success
export const ACTIVE_USERS = createRequestTypes('ACTIVE_USERS', ['SET', 'REQUEST']);
diff --git a/app/actions/connect.js b/app/actions/connect.js
index 412c096f..40049f28 100644
--- a/app/actions/connect.js
+++ b/app/actions/connect.js
@@ -25,3 +25,8 @@ export function disconnect(err) {
err
};
}
+export function disconnect_by_user() {
+ return {
+ type: types.METEOR.DISCONNECT_BY_USER
+ };
+}
diff --git a/app/containers/Routes.js b/app/containers/Routes.js
index 09fb6eee..8772306c 100644
--- a/app/containers/Routes.js
+++ b/app/containers/Routes.js
@@ -41,10 +41,9 @@ export default class Routes extends React.Component {
return ();
}
- if (login.token && !login.failure && !login.isRegistering) {
- return ( this.navigator = nav} />);
+ if (!login.token || login.isRegistering) {
+ return ( this.navigator = nav} />);
}
-
- return ( this.navigator = nav} />);
+ return ( this.navigator = nav} />);
}
}
diff --git a/app/containers/routes/AuthRoutes.js b/app/containers/routes/AuthRoutes.js
index eaf7e445..15bbde56 100644
--- a/app/containers/routes/AuthRoutes.js
+++ b/app/containers/routes/AuthRoutes.js
@@ -6,6 +6,7 @@ import RoomsListView from '../../views/RoomsListView';
import RoomView from '../../views/RoomView';
import CreateChannelView from '../../views/CreateChannelView';
import SelectUsersView from '../../views/SelectUsersView';
+import NewServerView from '../../views/NewServerView';
const AuthRoutes = StackNavigator(
{
@@ -26,6 +27,12 @@ const AuthRoutes = StackNavigator(
navigationOptions: {
title: 'Select Users'
}
+ },
+ AddServer: {
+ screen: NewServerView,
+ navigationOptions: {
+ title: 'New server'
+ }
}
},
{
diff --git a/app/lib/ddp.js b/app/lib/ddp.js
new file mode 100644
index 00000000..91a05097
--- /dev/null
+++ b/app/lib/ddp.js
@@ -0,0 +1,126 @@
+import EJSON from 'ejson';
+
+class EventEmitter {
+ constructor() {
+ this.events = {};
+ }
+ on(event, listener) {
+ if (typeof this.events[event] !== 'object') {
+ this.events[event] = [];
+ }
+ this.events[event].push(listener);
+ }
+ removeListener(event, listener) {
+ if (typeof this.events[event] === 'object') {
+ const idx = this.events[event].indexOf(listener);
+ if (idx > -1) {
+ this.events[event].splice(idx, 1);
+ }
+ }
+ }
+ emit(event, ...args) {
+ if (typeof this.events[event] === 'object') {
+ this.events[event].forEach((listener) => {
+ try {
+ listener.apply(this, args);
+ } catch (e) {
+ console.log(e);
+ }
+ });
+ }
+ }
+ once(event, listener) {
+ this.on(event, function g(...args) {
+ this.removeListener(event, g);
+ listener.apply(this, args);
+ });
+ }
+}
+
+export default class Socket extends EventEmitter {
+ constructor(url) {
+ super();
+ this.url = url.replace(/^http/, 'ws');
+ this.id = 0;
+ this.subscriptions = {};
+ this._connect();
+ this.ddp = new EventEmitter();
+ this.on('ping', () => this.send({ msg: 'pong' }));
+ this.on('result', data => this.ddp.emit(data.id, { result: data.result, error: data.error }));
+ this.on('ready', data => this.ddp.emit(data.subs[0], data));
+ }
+ send(obj) {
+ return new Promise((resolve, reject) => {
+ this.id += 1;
+ const id = obj.id || `${ this.id }`;
+ this.connection.send(EJSON.stringify({ ...obj, id }));
+ this.ddp.once(id, data => (data.error ? reject(data.error) : resolve(data.result || data.subs)));
+ });
+ }
+ _connect() {
+ const connection = new WebSocket(`${ this.url }/websocket`);
+ connection.onopen = () => {
+ this.emit('open');
+ this.send({ msg: 'connect', version: '1', support: ['1', 'pre2', 'pre1'] });
+ };
+ connection.onclose = e => this.emit('disconnected', e);
+ // connection.onerror = () => {
+ // // alert(error.type);
+ // // console.log(error);
+ // // console.log(`WebSocket Error ${ JSON.stringify({...error}) }`);
+ // };
+
+ connection.onmessage = (e) => {
+ const data = EJSON.parse(e.data);
+ this.emit(data.msg, data);
+ return data.collection && this.emit(data.collection, data);
+ };
+ // this.on('disconnected', e => alert(JSON.stringify(e)));
+ this.connection = connection;
+ }
+ logout() {
+ return this.call('logout').then(() => this.subscriptions = {});
+ }
+ disconnect() {
+ this.emit('disconnected_by_user');
+ this.connection.close();
+ }
+ reconnect() {
+ this.disconnect();
+ this.once('connected', () => {
+ Object.keys(this.subscriptions).forEach((key) => {
+ const { name, params } = this.subscriptions[key];
+ this.subscriptions[key].unsubscribe();
+ this.subscribe(name, params);
+ });
+ });
+ this._connect();
+ }
+ call(method, ...params) {
+ return this.send({
+ msg: 'method', method, params
+ });
+ }
+ unsubscribe(id) {
+ if (!this.subscriptions[id]) {
+ return Promise.reject();
+ }
+ delete this.subscriptions[id];
+ return this.send({
+ msg: 'unsub',
+ id
+ });
+ }
+ subscribe(name, ...params) {
+ return this.send({
+ msg: 'sub', name, params
+ }).then((data) => {
+ this.subscriptions[data.id] = {
+ name,
+ params,
+ unsubscribe: () => this.unsubscribe(data.id)
+ };
+ return this.subscriptions[data.id];
+ });
+ }
+}
diff --git a/app/lib/meteor-redux.js b/app/lib/meteor-redux.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js
index 97faaac0..884d1b3f 100644
--- a/app/lib/rocketchat.js
+++ b/app/lib/rocketchat.js
@@ -1,4 +1,3 @@
-import Meteor from 'react-native-meteor';
import Random from 'react-native-meteor/lib/Random';
import { AsyncStorage, Platform } from 'react-native';
import { hashPassword } from 'react-native-meteor/lib/utils';
@@ -11,19 +10,13 @@ import realm from './realm';
import * as actions from '../actions';
import { someoneTyping } from '../actions/room';
import { setUser } from '../actions/login';
-import { disconnect, connectSuccess } from '../actions/connect';
+import { disconnect, disconnect_by_user, connectSuccess, connectFailure } from '../actions/connect';
import { requestActiveUser } from '../actions/activeUsers';
+import Ddp from './ddp';
export { Accounts } from 'react-native-meteor';
-const call = (method, ...params) => new Promise((resolve, reject) => {
- Meteor.call(method, ...params, (err, data) => {
- if (err) {
- reject(err);
- }
- resolve(data);
- });
-});
+const call = (method, ...params) => RocketChat.ddp.call(method, ...params); // eslint-disable-line
const TOKEN_KEY = 'reactnativemeteor_usertoken';
const SERVER_TIMEOUT = 30000;
@@ -67,92 +60,72 @@ const RocketChat = {
activeUser[ddpMessage.id] = status;
return reduxStore.dispatch(requestActiveUser(activeUser));
},
- connect(_url) {
+ reconnect() {
+ if (this.ddp) {
+ this.ddp.reconnect();
+ }
+ },
+ connect(url) {
+ if (this.ddp) {
+ this.ddp.disconnect();
+ }
+ this.ddp = new Ddp(url);
return new Promise((resolve) => {
- const url = `${ _url }/websocket`;
-
- Meteor.connect(url, { autoConnect: true, autoReconnect: true });
-
- Meteor.ddp.on('disconnected', () => {
+ this.ddp.on('disconnected_by_user', () => {
+ reduxStore.dispatch(disconnect_by_user());
+ });
+ this.ddp.on('disconnected', () => {
reduxStore.dispatch(disconnect());
});
-
- Meteor.ddp.on('connected', () => {
- reduxStore.dispatch(connectSuccess());
- resolve();
- });
-
- Meteor.ddp.on('connected', async() => {
- Meteor.ddp.on('added', (ddpMessage) => {
- if (ddpMessage.collection === 'users') {
- return RocketChat._setUser(ddpMessage);
- }
- });
- Meteor.ddp.on('removed', (ddpMessage) => {
- if (ddpMessage.collection === 'users') {
- return RocketChat._setUser(ddpMessage);
- }
- });
- Meteor.ddp.on('changed', (ddpMessage) => {
- if (ddpMessage.collection === 'stream-room-messages') {
- return realm.write(() => {
- const message = this._buildMessage(ddpMessage.fields.args[0]);
- realm.create('messages', message, true);
- });
- }
- if (ddpMessage.collection === 'stream-notify-room') {
- const [_rid, ev] = ddpMessage.fields.eventName.split('/');
- if (ev !== 'typing') {
- return;
- }
- return reduxStore.dispatch(someoneTyping({ _rid, username: ddpMessage.fields.args[0], typing: ddpMessage.fields.args[1] }));
- }
- if (ddpMessage.collection === 'stream-notify-user') {
- const [type, data] = ddpMessage.fields.args;
- const [, ev] = ddpMessage.fields.eventName.split('/');
- if (/subscriptions/.test(ev)) {
- if (data.roles) {
- data.roles = data.roles.map(role => ({ value: role }));
- }
- realm.write(() => {
- realm.create('subscriptions', data, true);
- });
- }
- if (/rooms/.test(ev) && type === 'updated') {
- const sub = realm.objects('subscriptions').filtered('rid == $0', data._id)[0];
- realm.write(() => {
- sub.roomUpdatedAt = data._updatedAt;
- });
- }
- }
- if (ddpMessage.collection === 'users') {
- return RocketChat._setUser(ddpMessage);
- }
- });
+ this.ddp.on('open', async() => resolve(reduxStore.dispatch(connectSuccess())));
+ this.ddp.on('connected', () => {
RocketChat.getSettings();
RocketChat.getPermissions();
});
- })
- .catch(e => console.error(e));
- },
- login(params, callback) {
- return new Promise((resolve, reject) => {
- Meteor._startLoggingIn();
- return Meteor.call('login', params, (err, result) => {
- Meteor._endLoggingIn();
- Meteor._handleLoginCallback(err, result);
- if (err) {
- if (/user not found/i.test(err.reason)) {
- err.error = 1;
- err.reason = 'User or Password incorrect';
- err.message = 'User or Password incorrect';
- }
- reject(err);
- } else {
- resolve(result);
+
+ this.ddp.on('error', (err) => {
+ alert(JSON.stringify(err));
+ reduxStore.dispatch(connectFailure());
+ });
+
+ this.ddp.on('connected', () => this.ddp.subscribe('activeUsers', null, false));
+
+
+ this.ddp.on('users', (ddpMessage) => {
+ if (ddpMessage.collection === 'users') {
+ return RocketChat._setUser(ddpMessage);
}
- if (typeof callback === 'function') {
- callback(err, result);
+ });
+
+ this.ddp.on('stream-room-messages', ddpMessage => realm.write(() => {
+ const message = this._buildMessage(ddpMessage.fields.args[0]);
+ realm.create('messages', message, true);
+ }));
+
+ this.ddp.on('stream-notify-room', (ddpMessage) => {
+ const [_rid, ev] = ddpMessage.fields.eventName.split('/');
+ if (ev !== 'typing') {
+ return;
+ }
+ return reduxStore.dispatch(someoneTyping({ _rid, username: ddpMessage.fields.args[0], typing: ddpMessage.fields.args[1] }));
+ });
+
+ this.ddp.on('stream-notify-user', (ddpMessage) => {
+ const [type, data] = ddpMessage.fields.args;
+ const [, ev] = ddpMessage.fields.eventName.split('/');
+ if (/subscriptions/.test(ev)) {
+ if (data.roles) {
+ data.roles = data.roles.map(role => ({ value: role }));
+ }
+ realm.write(() => {
+ realm.create('subscriptions', data, true);
+ });
+ }
+ if (/rooms/.test(ev) && type === 'updated') {
+ const sub = realm.objects('subscriptions').filtered('rid == $0', data._id)[0];
+ realm.write(() => {
+ sub.roomUpdatedAt = data._updatedAt;
+ });
}
});
});
@@ -236,10 +209,7 @@ const RocketChat = {
loadSubscriptions(cb) {
const { server } = reduxStore.getState().server;
- Meteor.call('subscriptions/get', (err, data) => {
- if (err) {
- console.error(err);
- }
+ this.ddp.call('subscriptions/get').then((data) => {
if (data.length) {
realm.write(() => {
data.forEach((subscription) => {
@@ -305,32 +275,26 @@ const RocketChat = {
return message;
},
loadMessagesForRoom(rid, end, cb) {
- return new Promise((resolve, reject) => {
- Meteor.call('loadHistory', rid, end, 20, (err, data) => {
- if (err) {
- if (cb) {
- cb({ end: true });
- }
- return reject(err);
- }
- if (data && data.messages.length) {
- const messages = data.messages.map(message => this._buildMessage(message));
- realm.write(() => {
- messages.forEach((message) => {
- realm.create('messages', message, true);
- });
+ return this.ddp.call('loadHistory', rid, end, 20).then((data) => {
+ if (data && data.messages.length) {
+ const messages = data.messages.map(message => this._buildMessage(message));
+ realm.write(() => {
+ messages.forEach((message) => {
+ realm.create('messages', message, true);
});
- }
-
+ });
+ }
+ if (cb) {
+ cb({ end: data && data.messages.length < 20 });
+ }
+ return data.message;
+ }, (err) => {
+ if (err) {
if (cb) {
- if (data && data.messages.length < 20) {
- cb({ end: true });
- } else {
- cb({ end: false });
- }
+ cb({ end: true });
}
- resolve();
- });
+ return Promise.reject(err);
+ }
});
},
@@ -484,14 +448,41 @@ const RocketChat = {
data.forEach(subscription =>
realm.create('subscriptions', subscription, true));
});
- Meteor.subscribe('stream-notify-user', `${ login.user.id }/subscriptions-changed`, false);
- Meteor.subscribe('stream-notify-user', `${ login.user.id }/rooms-changed`, false);
- Meteor.subscribe('activeUsers', null, false);
+ this.ddp.subscribe('stream-notify-user', `${ login.user.id }/subscriptions-changed`, false);
+ this.ddp.subscribe('stream-notify-user', `${ login.user.id }/rooms-changed`, false);
return data;
},
+ disconnect() {
+ if (!this.ddp) {
+ return;
+ }
+ reduxStore.dispatch(disconnect_by_user());
+ delete this.ddp;
+ return this.ddp.disconnect();
+ },
+ login(params, callback) {
+ return this.ddp.call('login', params).then((result) => {
+ if (typeof callback === 'function') {
+ callback(null, result);
+ }
+ return result;
+ }, (err) => {
+ if (/user not found/i.test(err.reason)) {
+ err.error = 1;
+ err.reason = 'User or Password incorrect';
+ err.message = 'User or Password incorrect';
+ }
+ if (typeof callback === 'function') {
+ callback(err, null);
+ }
+ return Promise.reject(err);
+ });
+ },
logout({ server }) {
- Meteor.logout();
- Meteor.disconnect();
+ if (this.ddp) {
+ this.ddp.logout();
+ // this.disconnect();
+ }
AsyncStorage.removeItem(TOKEN_KEY);
AsyncStorage.removeItem(`${ TOKEN_KEY }-${ server }`);
},
@@ -570,7 +561,7 @@ const RocketChat = {
return `${ room._server.id }/${ roomType }/${ room.name }?msg=${ message._id }`;
},
subscribe(...args) {
- return Meteor.subscribe(...args);
+ return this.ddp.subscribe(...args);
},
emitTyping(room, t = true) {
const { login } = reduxStore.getState();
diff --git a/app/reducers/connect.js b/app/reducers/connect.js
index 0aad57c3..abfd142c 100644
--- a/app/reducers/connect.js
+++ b/app/reducers/connect.js
@@ -4,6 +4,7 @@ const initialState = {
connecting: false,
connected: false,
errorMessage: '',
+ disconnected_by_user: false,
failure: false
};
@@ -12,7 +13,8 @@ export default function connect(state = initialState, action) {
case METEOR.REQUEST:
return {
...state,
- connecting: true
+ connecting: true,
+ disconnected_by_user: false
};
case METEOR.SUCCESS:
return {
@@ -29,6 +31,11 @@ export default function connect(state = initialState, action) {
failure: true,
errorMessage: action.err
};
+ case METEOR.DISCONNECT_BY_USER:
+ return {
+ ...state,
+ disconnected_by_user: true
+ };
case METEOR.DISCONNECT:
return initialState;
default:
diff --git a/app/reducers/login.js b/app/reducers/login.js
index 37d72ef6..cccf73b1 100644
--- a/app/reducers/login.js
+++ b/app/reducers/login.js
@@ -26,7 +26,7 @@ export default function login(state = initialState, action) {
...state,
isFetching: false,
isAuthenticated: true,
- user: action.user,
+ user: { ...state.user, ...action.user },
token: action.user.token,
failure: false,
error: ''
diff --git a/app/sagas/connect.js b/app/sagas/connect.js
index 3b0c6f79..8291073c 100644
--- a/app/sagas/connect.js
+++ b/app/sagas/connect.js
@@ -1,27 +1,44 @@
-import { put, call, takeLatest, select } from 'redux-saga/effects';
+import { call, takeLatest, select, take, race } from 'redux-saga/effects';
+import { delay } from 'redux-saga';
import { METEOR } from '../actions/actionsTypes';
import RocketChat from '../lib/rocketchat';
-import { connectSuccess, connectFailure } from '../actions/connect';
-
const getServer = ({ server }) => server.server;
const connect = url => RocketChat.connect(url);
-const test = function* test() {
- try {
- const server = yield select(getServer);
- const response = yield call(connect, server);
- yield put(connectSuccess(response));
- } catch (err) {
- yield put(connectFailure(err.status));
+const watchConnect = function* watchConnect() {
+ const { disconnect } = yield race({
+ disconnect: take(METEOR.DISCONNECT),
+ disconnected_by_user: take(METEOR.DISCONNECT_BY_USER)
+ });
+ if (disconnect) {
+ while (true) {
+ const { connected } = yield race({
+ connected: take(METEOR.SUCCESS),
+ timeout: call(delay, 1000)
+ });
+ if (connected) {
+ return;
+ }
+ yield RocketChat.reconnect();
+ }
}
};
-// const watchConnect = function* watchConnect() {
-// };
+const test = function* test() {
+ // try {
+ const server = yield select(getServer);
+ // const response =
+ yield call(connect, server);
+ // yield put(connectSuccess(response));
+ // } catch (err) {
+ // yield put(connectFailure(err.status));
+ // }
+};
+
const root = function* root() {
yield takeLatest(METEOR.REQUEST, test);
- // yield fork(watchConnect);
- // yield fork(auto);
+ // yield take(METEOR.SUCCESS, watchConnect);
+ yield takeLatest(METEOR.SUCCESS, watchConnect);
};
export default root;
diff --git a/app/sagas/login.js b/app/sagas/login.js
index 4941756d..fae21699 100644
--- a/app/sagas/login.js
+++ b/app/sagas/login.js
@@ -1,5 +1,5 @@
import { AsyncStorage } from 'react-native';
-import { take, put, call, takeLatest, select, all } from 'redux-saga/effects';
+import { put, call, takeLatest, select, all } from 'redux-saga/effects';
import * as types from '../actions/actionsTypes';
import {
loginRequest,
@@ -8,6 +8,7 @@ import {
registerIncomplete,
loginSuccess,
loginFailure,
+ logout,
setToken,
registerSuccess,
setUsernameRequest,
@@ -40,16 +41,13 @@ const getToken = function* getToken() {
console.log('getTokenerr', e);
}
} else {
- yield put(setToken());
+ return yield put(setToken());
}
};
const handleLoginWhenServerChanges = function* handleLoginWhenServerChanges() {
try {
- yield take(types.METEOR.SUCCESS);
- yield call(getToken);
-
- const user = yield select(getUser);
+ const user = yield call(getToken);
if (user.token) {
yield put(loginRequest({ resume: user.token }));
}
@@ -76,17 +74,19 @@ const handleLoginRequest = function* handleLoginRequest({ credentials }) {
// if user has username
if (me.username) {
- user.username = me.username;
const userInfo = yield call(userInfoCall, { server, token: user.token, userId: user.id });
+ user.username = userInfo.user.username;
if (userInfo.user.roles) {
user.roles = userInfo.user.roles;
}
} else {
yield put(registerIncomplete());
}
-
yield put(loginSuccess(user));
} catch (err) {
+ if (err.error === 403) {
+ return yield put(logout());
+ }
yield put(loginFailure(err));
}
};
@@ -149,7 +149,7 @@ const handleForgotPasswordRequest = function* handleForgotPasswordRequest({ emai
};
const root = function* root() {
- yield takeLatest(types.SERVER.CHANGED, handleLoginWhenServerChanges);
+ yield takeLatest(types.METEOR.SUCCESS, handleLoginWhenServerChanges);
yield takeLatest(types.LOGIN.REQUEST, handleLoginRequest);
yield takeLatest(types.LOGIN.SUCCESS, saveToken);
yield takeLatest(types.LOGIN.SUBMIT, handleLoginSubmit);
diff --git a/app/sagas/rooms.js b/app/sagas/rooms.js
index 747da425..fc8e1230 100644
--- a/app/sagas/rooms.js
+++ b/app/sagas/rooms.js
@@ -67,7 +67,7 @@ const watchRoomOpen = function* watchRoomOpen({ room }) {
const thread = yield fork(usersTyping, { rid: room.rid });
yield take(types.ROOM.OPEN);
cancel(thread);
- subscriptions.forEach(sub => sub.stop());
+ subscriptions.forEach(sub => sub.unsubscribe());
};
const watchuserTyping = function* watchuserTyping({ status }) {
diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js
index 84ad3a3e..8e4d9cdf 100644
--- a/app/sagas/selectServer.js
+++ b/app/sagas/selectServer.js
@@ -1,10 +1,9 @@
-import { put, takeEvery, call, takeLatest, race, take } from 'redux-saga/effects';
+import { put, call, takeLatest, race, take } from 'redux-saga/effects';
import { delay } from 'redux-saga';
import { AsyncStorage } from 'react-native';
import { SERVER } from '../actions/actionsTypes';
-import { connectRequest, disconnect } from '../actions/connect';
+import { connectRequest, disconnect, disconnect_by_user } from '../actions/connect';
import { changedServer, serverSuccess, serverFailure, serverRequest, setServer } from '../actions/server';
-import { logout } from '../actions/login';
import RocketChat from '../lib/rocketchat';
import realm from '../lib/realm';
import * as NavigationService from '../containers/routes/NavigationService';
@@ -14,13 +13,13 @@ const validate = function* validate(server) {
};
const selectServer = function* selectServer({ server }) {
+ yield put(disconnect_by_user());
yield put(disconnect());
yield put(changedServer(server));
yield call([AsyncStorage, 'setItem'], 'currentServer', server);
yield put(connectRequest(server));
};
-
const validateServer = function* validateServer({ server }) {
try {
yield delay(1000);
@@ -48,16 +47,14 @@ const addServer = function* addServer({ server }) {
};
const handleGotoAddServer = function* handleGotoAddServer() {
- yield put(logout());
yield call(AsyncStorage.removeItem, RocketChat.TOKEN_KEY);
- yield delay(1000);
yield call(NavigationService.navigate, 'AddServer');
};
const root = function* root() {
yield takeLatest(SERVER.REQUEST, validateServer);
- yield takeEvery(SERVER.SELECT, selectServer);
- yield takeEvery(SERVER.ADD, addServer);
- yield takeEvery(SERVER.GOTO_ADD, handleGotoAddServer);
+ yield takeLatest(SERVER.SELECT, selectServer);
+ yield takeLatest(SERVER.ADD, addServer);
+ yield takeLatest(SERVER.GOTO_ADD, handleGotoAddServer);
};
export default root;
diff --git a/app/views/ListServerView.js b/app/views/ListServerView.js
index 30bf7ea4..4dccbc48 100644
--- a/app/views/ListServerView.js
+++ b/app/views/ListServerView.js
@@ -8,7 +8,6 @@ import { connect } from 'react-redux';
import { setServer } from '../actions/server';
import realm from '../lib/realm';
import Fade from '../animations/fade';
-import Banner from '../containers/Banner';
const styles = StyleSheet.create({
view: {
@@ -184,7 +183,6 @@ export default class ListServerView extends React.Component {
render() {
return (
-
({
- validInstance: !state.server.failure,
+ validInstance: !state.server.failure && !state.server.connecting,
validating: state.server.connecting
}), dispatch => ({
validateServer: url => dispatch(serverRequest(url)),
@@ -83,7 +44,7 @@ export default class NewServerView extends React.Component {
this.setState({ editable: true });
this.adding = false;
}
- if (this.props.validInstance && !this.props.validating) {
+ if (this.props.validInstance) {
this.props.navigation.goBack();
this.adding = false;
}
@@ -127,7 +88,7 @@ export default class NewServerView extends React.Component {
if (this.props.validating) {
return (
- Validating {this.state.url} ...
+ Validating {this.state.text} ...
);
}
@@ -149,27 +110,37 @@ export default class NewServerView extends React.Component {
render() {
return (
-
- this.inputElement = ref}
- style={styles.input}
- onChangeText={this.onChangeText}
- keyboardType='url'
- autoCorrect={false}
- returnKeyType='done'
- autoCapitalize='none'
- autoFocus
- editable={this.state.editable}
- onSubmitEditing={this.submit}
- placeholder={this.state.defaultServer}
- />
-
+
+ this.inputElement = ref}
+ style={styles.input_white}
+ onChangeText={this.onChangeText}
+ keyboardType='url'
+ autoCorrect={false}
+ returnKeyType='done'
+ autoCapitalize='none'
+ autoFocus
+ editable={this.state.editable}
+ placeholder={this.state.defaultServer}
+ underlineColorAndroid='transparent'
+ />
+
+ Add
+
{this.renderValidation()}
-
+
);
}
diff --git a/app/views/RoomsListView/Header/index.js b/app/views/RoomsListView/Header/index.js
index 1e5f1a4e..a095bc58 100644
--- a/app/views/RoomsListView/Header/index.js
+++ b/app/views/RoomsListView/Header/index.js
@@ -15,6 +15,7 @@ import styles from './styles';
@connect(state => ({
user: state.login.user,
+ connected: state.meteor.connected,
baseUrl: state.settings.Site_Url
}), dispatch => ({
setSearch: searchText => dispatch(setSearch(searchText))
@@ -23,6 +24,7 @@ export default class extends React.Component {
static propTypes = {
navigation: PropTypes.object.isRequired,
user: PropTypes.object.isRequired,
+ connected: PropTypes.bool,
baseUrl: PropTypes.string,
setSearch: PropTypes.func
}
@@ -57,7 +59,7 @@ export default class extends React.Component {
}
getUserStatus() {
- return this.props.user.status || 'offline';
+ return (this.props.connected && this.props.user.status) || 'offline';
}
getUserStatusLabel() {
diff --git a/app/views/Styles.js b/app/views/Styles.js
index 728b9e7c..de5ba7b9 100644
--- a/app/views/Styles.js
+++ b/app/views/Styles.js
@@ -156,5 +156,14 @@ export default StyleSheet.create({
flexDirection: 'row',
flexWrap: 'wrap',
justifyContent: 'space-around'
+ },
+ validText: {
+ color: 'green'
+ },
+ invalidText: {
+ color: 'red'
+ },
+ validatingText: {
+ color: '#aaa'
}
});
diff --git a/package-lock.json b/package-lock.json
index 0f03eaf0..82f2cff5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -149,39 +149,26 @@
"resolved": "https://registry.npmjs.org/@hypnosphi/fuse.js/-/fuse.js-3.0.9.tgz",
"integrity": "sha1-6pn2EhtKjwZbTHH4VZXbJxRJiAc="
},
- "@storybook/addon-actions": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.2.15.tgz",
- "integrity": "sha512-j7vX0NQaIKaa5BHdzJkznck1K42Ai9IjXN0Vull1za/CYGz11xTXovLsANcK00j4jDGgjs4HAJbqSgEdH47SPA==",
- "requires": {
- "@storybook/addons": "3.2.15",
- "deep-equal": "1.0.1",
- "json-stringify-safe": "5.0.1",
- "prop-types": "15.6.0",
- "react-inspector": "2.2.1",
- "uuid": "3.1.0"
- }
- },
- "@storybook/addon-links": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.2.15.tgz",
- "integrity": "sha512-SjyWyCr0mOURYEjOcpQSP2DiWYkk0EHTq29S2pVjFBa07eT+MT1wSiNjRD/s5LsVA9xHHLjRAXLRKhslO3lcpQ==",
- "requires": {
- "@storybook/addons": "3.2.15"
- }
- },
"@storybook/addon-storyshots": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-3.2.15.tgz",
- "integrity": "sha512-p2p2sZBr4oxNFkZfgm1nu8Fl67qLVTCZymkYIdEgpb5hdAvx4wJDOwR+pnc1QAJb6+0d+2TNwKRmasOVPrYd7w==",
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-storyshots/-/addon-storyshots-3.2.18.tgz",
+ "integrity": "sha512-XHEMWSaDHvKsII7hOgCXyYjXrqZ9GCoPe+rjNzCvbd+vddM4lc3gwerq8Eze394yZzFWeSaSldfvSBkwqEGM+A==",
"dev": true,
"requires": {
+ "@storybook/channels": "3.2.18",
+ "babel-core": "6.26.0",
"babel-runtime": "6.26.0",
"global": "4.3.2",
"prop-types": "15.6.0",
"read-pkg-up": "3.0.0"
},
"dependencies": {
+ "@storybook/channels": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.2.18.tgz",
+ "integrity": "sha512-7+3Kic5FRWyojff/CA4wfhI24xxbXmQzdVLx0gUZm8r4+h/3JSt8hVfhJeXkS+GEvo852PRS/AOHnN4ENKw9uw==",
+ "dev": true
+ },
"load-json-file": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
@@ -242,33 +229,14 @@
}
}
},
- "@storybook/addons": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-3.2.15.tgz",
- "integrity": "sha512-fZ9XXOh4aUQvIFMDLmiK4gis7NbnFAZtYVs3+N+BqV6IpEvzHMr3eKdMc2O92j9+dkMd8J89OKwg/5AVFMGkMw=="
- },
- "@storybook/channel-websocket": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-3.2.15.tgz",
- "integrity": "sha512-cnrQA51oP3D5KJVz1+U7kuQx6m7BacgG4dUTg+B+R0ge3tCist+KgLCDTzoXTZAqus3RlgjVb+A+JrC1aMPP6A==",
+ "@storybook/mantra-core": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@storybook/mantra-core/-/mantra-core-1.7.2.tgz",
+ "integrity": "sha512-GD4OYJ8GsayVhIg306sfgcKDk9j8YfuSKIAWvdB/g7IDlw0pDgueONALVEEE2XWJtCwcsUyDtCYzXFgCBWLEjA==",
"requires": {
- "@storybook/channels": "3.2.15",
- "global": "4.3.2"
- }
- },
- "@storybook/channels": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.2.15.tgz",
- "integrity": "sha512-3SvmtL1+YpPaW42svIDN8xkmsb0aUyxyfmpcaaRS9BM/pjTrX+VPuSPZAwf6Dge9w41VuMx92ofMjLsCpRAXeQ=="
- },
- "@storybook/components": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-3.2.15.tgz",
- "integrity": "sha512-nrB9zZZCq3XsFFd6LL/1CRV4a93pYQbr5Sisfk0Yzj7V1tYNT8Z0QEXI0v+w0vdy9ogi+kq2YAxIy5CsAB7KyA==",
- "requires": {
- "glamor": "2.20.40",
- "glamorous": "4.11.0",
- "prop-types": "15.6.0"
+ "@storybook/react-komposer": "2.0.3",
+ "@storybook/react-simple-di": "1.3.0",
+ "babel-runtime": "6.26.0"
}
},
"@storybook/react-fuzzy": {
@@ -282,17 +250,29 @@
"prop-types": "15.6.0"
}
},
- "@storybook/react-native": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/react-native/-/react-native-3.2.15.tgz",
- "integrity": "sha512-IWwVKXwvauN6PyZgPaA/U+lljKxLgkRV4+6vyCKemm3UQdskpYqkW0hkOuvHZWLzalTNbk+xLK1CtiZd9XPdcA==",
+ "@storybook/react-komposer": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@storybook/react-komposer/-/react-komposer-2.0.3.tgz",
+ "integrity": "sha512-DjL/XwZLNx79Rc1y0dyjxme64eUSJeJvajCN587sVDsVZIgsPlDWwmaohOCkPhR8HNGrY89qoeFZZxFslT203w==",
"requires": {
- "@storybook/addon-actions": "3.2.15",
- "@storybook/addon-links": "3.2.15",
- "@storybook/addons": "3.2.15",
- "@storybook/channel-websocket": "3.2.15",
- "@storybook/ui": "3.2.15",
- "autoprefixer": "7.1.6",
+ "@storybook/react-stubber": "1.0.1",
+ "babel-runtime": "6.26.0",
+ "hoist-non-react-statics": "1.2.0",
+ "lodash.pick": "4.4.0",
+ "shallowequal": "0.2.2"
+ }
+ },
+ "@storybook/react-native": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/react-native/-/react-native-3.2.18.tgz",
+ "integrity": "sha512-qA3RDobz6iTLtObz5xgp+qBJPtc/j9axOGRwehmgFptv8K2D2P/Sk7apDMQO22lZxk/INagWhdvoKm8NQYUQqg==",
+ "requires": {
+ "@storybook/addon-actions": "3.2.18",
+ "@storybook/addon-links": "3.2.18",
+ "@storybook/addons": "3.2.18",
+ "@storybook/channel-websocket": "3.2.18",
+ "@storybook/ui": "3.2.18",
+ "autoprefixer": "7.2.3",
"babel-core": "6.26.0",
"babel-loader": "7.1.2",
"babel-plugin-syntax-async-functions": "6.13.0",
@@ -309,7 +289,7 @@
"babel-preset-stage-0": "6.24.1",
"babel-runtime": "6.26.0",
"case-sensitive-paths-webpack-plugin": "2.1.1",
- "commander": "2.11.0",
+ "commander": "2.12.2",
"css-loader": "0.28.7",
"events": "1.1.1",
"express": "4.16.2",
@@ -318,88 +298,336 @@
"global": "4.3.2",
"json-loader": "0.5.7",
"json5": "0.5.1",
- "postcss-loader": "2.0.8",
+ "postcss-loader": "2.0.9",
"prop-types": "15.6.0",
"react-native-compat": "1.0.0",
"react-native-iphone-x-helper": "1.0.1",
"shelljs": "0.7.8",
- "style-loader": "0.18.2",
+ "style-loader": "0.19.1",
"url-loader": "0.6.2",
"url-parse": "1.2.0",
"util-deprecate": "1.0.2",
"uuid": "3.1.0",
- "webpack": "3.8.1",
- "webpack-dev-middleware": "1.12.0",
- "webpack-hot-middleware": "2.20.0",
- "ws": "3.3.1"
+ "webpack": "3.10.0",
+ "webpack-dev-middleware": "1.12.2",
+ "webpack-hot-middleware": "2.21.0",
+ "ws": "3.3.3"
},
"dependencies": {
- "ws": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.1.tgz",
- "integrity": "sha512-8A/uRMnQy8KCQsmep1m7Bk+z/+LIkeF7w+TDMLtX1iZm5Hq9HsUDmgFGaW1ACW5Cj0b2Qo7wCvRhYN2ErUVp/A==",
+ "@storybook/addon-actions": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.2.18.tgz",
+ "integrity": "sha512-jIbNxYXm3MyPECcPWZ9Vxuq31/rwq/oPXhfPpf4xD9sdQcfwm/5on2d75UJOXKio60xWagP4RpECz7d3uc6nJA==",
"requires": {
- "async-limiter": "1.0.0",
- "safe-buffer": "5.1.1",
- "ultron": "1.1.0"
+ "@storybook/addons": "3.2.18",
+ "deep-equal": "1.0.1",
+ "json-stringify-safe": "5.0.1",
+ "prop-types": "15.6.0",
+ "react-inspector": "2.2.2",
+ "uuid": "3.1.0"
}
- }
- }
- },
- "@storybook/ui": {
- "version": "3.2.15",
- "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-3.2.15.tgz",
- "integrity": "sha512-TeEInIbO80psTpy9WMkkkUo814b7RnVM+fGu7igEiqJjcmnwt4gUrOJ9bzSBMJcNZSnE1hu5i5MSwLWyDjJakQ==",
- "requires": {
- "@hypnosphi/fuse.js": "3.0.9",
- "@storybook/components": "3.2.15",
- "@storybook/react-fuzzy": "0.4.3",
- "babel-runtime": "6.26.0",
- "deep-equal": "1.0.1",
- "events": "1.1.1",
- "global": "4.3.2",
- "json-stringify-safe": "5.0.1",
- "keycode": "2.1.9",
- "lodash.debounce": "4.0.8",
- "lodash.pick": "4.4.0",
- "lodash.sortby": "4.7.0",
- "mantra-core": "1.7.0",
- "podda": "1.2.2",
- "prop-types": "15.6.0",
- "qs": "6.5.1",
- "react-icons": "2.2.7",
- "react-inspector": "2.2.1",
- "react-komposer": "2.0.0",
- "react-modal": "3.1.2",
- "react-split-pane": "0.1.70",
- "react-treebeard": "2.1.0",
- "redux": "3.7.2"
- },
- "dependencies": {
+ },
+ "@storybook/addon-links": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.2.18.tgz",
+ "integrity": "sha512-X96TNRA0x0rWWVweIQCDM84GJdQpAXQutxnARvskV0RD6bf8Bhq7nw3FVzElNilnFyfhtFzYVqCUlEOAJcKEgg==",
+ "requires": {
+ "@storybook/addons": "3.2.18"
+ }
+ },
+ "@storybook/addons": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-3.2.18.tgz",
+ "integrity": "sha512-I1oJhimBZiyrDa2UxorXhBBGapAIa+KxF8thtCUWmFgToeWhlHnRepQiRE+mCDM2yjSQpmTN+md/W8DPcLIHag=="
+ },
+ "@storybook/channel-websocket": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/channel-websocket/-/channel-websocket-3.2.18.tgz",
+ "integrity": "sha512-P1faqKO+uD653Q9RvOu+upFJyUFU9kAag9fIGfNq4tUHnDK1HFbCe97MxOwytaxROYmi0OKjhOZgxyH60bBZug==",
+ "requires": {
+ "@storybook/channels": "3.2.18",
+ "global": "4.3.2"
+ }
+ },
+ "@storybook/channels": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.2.18.tgz",
+ "integrity": "sha512-7+3Kic5FRWyojff/CA4wfhI24xxbXmQzdVLx0gUZm8r4+h/3JSt8hVfhJeXkS+GEvo852PRS/AOHnN4ENKw9uw=="
+ },
+ "@storybook/components": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-3.2.18.tgz",
+ "integrity": "sha512-jvwUewMiwG+svDqLxu6YyHQdBdvDQ5etA5dUplpx7aPW4bZog+DHkZ0RLgwHadxbeff1qs/RXlz23D3El6BDxA==",
+ "requires": {
+ "glamor": "2.20.40",
+ "glamorous": "4.11.0",
+ "prop-types": "15.6.0"
+ }
+ },
+ "@storybook/ui": {
+ "version": "3.2.18",
+ "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-3.2.18.tgz",
+ "integrity": "sha512-n3j//YF5gbTRZHrdIREGK8C+weaCF/pu4iWKu4Pty8rbMjrghkgrhENga2XaFvEOfTsBUc2ldXCCjNw0tJOGWg==",
+ "requires": {
+ "@hypnosphi/fuse.js": "3.0.9",
+ "@storybook/components": "3.2.18",
+ "@storybook/mantra-core": "1.7.2",
+ "@storybook/react-fuzzy": "0.4.3",
+ "@storybook/react-komposer": "2.0.3",
+ "babel-runtime": "6.26.0",
+ "deep-equal": "1.0.1",
+ "events": "1.1.1",
+ "global": "4.3.2",
+ "json-stringify-safe": "5.0.1",
+ "keycode": "2.1.9",
+ "lodash.debounce": "4.0.8",
+ "lodash.pick": "4.4.0",
+ "lodash.sortby": "4.7.0",
+ "podda": "1.2.2",
+ "prop-types": "15.6.0",
+ "qs": "6.5.1",
+ "react-icons": "2.2.7",
+ "react-inspector": "2.2.2",
+ "react-modal": "3.1.10",
+ "react-split-pane": "0.1.72",
+ "react-treebeard": "2.1.0",
+ "redux": "3.7.2"
+ }
+ },
+ "autoprefixer": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.3.tgz",
+ "integrity": "sha512-dqzVGiz3v934+s3YZA6nk7tAs9xuTz5wMJbX1M+L4cY/MTNkOUqP61c1GWkEVlUL/PEy1pKRSCFuoRZrXYx9qA==",
+ "requires": {
+ "browserslist": "2.10.0",
+ "caniuse-lite": "1.0.30000784",
+ "normalize-range": "0.1.2",
+ "num2fraction": "1.2.2",
+ "postcss": "6.0.14",
+ "postcss-value-parser": "3.3.0"
+ }
+ },
+ "browserslist": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.10.0.tgz",
+ "integrity": "sha512-WyvzSLsuAVPOjbljXnyeWl14Ae+ukAT8MUuagKVzIDvwBxl4UAwD1xqtyQs2eWYPGUKMeC3Ol62goqYuKqTTcw==",
+ "requires": {
+ "caniuse-lite": "1.0.30000784",
+ "electron-to-chromium": "1.3.29"
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30000784",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000784.tgz",
+ "integrity": "sha1-EpztdOmhKApEGIC2zSvOMO9Z5sA="
+ },
+ "commander": {
+ "version": "2.12.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz",
+ "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA=="
+ },
+ "electron-to-chromium": {
+ "version": "1.3.29",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.29.tgz",
+ "integrity": "sha1-elgja5VGjD52YAkTSFItZddzazY="
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "postcss-loader": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.9.tgz",
+ "integrity": "sha512-sgoXPtmgVT3aBAhU47Kig8oPF+mbXl8Unjvtz1Qj1q2D2EvSVJW2mKJNzxv5y/LvA9xWwuvdysvhc7Zn80UWWw==",
+ "requires": {
+ "loader-utils": "1.1.0",
+ "postcss": "6.0.14",
+ "postcss-load-config": "1.2.0",
+ "schema-utils": "0.3.0"
+ }
+ },
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
},
- "react-komposer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/react-komposer/-/react-komposer-2.0.0.tgz",
- "integrity": "sha1-uWRzgBSptK7klKg8C1uDPWYHKpA=",
+ "react-inspector": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-2.2.2.tgz",
+ "integrity": "sha512-SzkmYvVUJEmUBuFwGgaGOTGucUBnKXH2wWFdzatkCrawm4P85eqgYvqevHE3DGWpfXqE1pJO4d98TYUANQGCrg==",
"requires": {
"babel-runtime": "6.26.0",
- "hoist-non-react-statics": "1.2.0",
- "lodash.pick": "4.4.0",
- "react-stubber": "1.0.0",
- "shallowequal": "0.2.2"
+ "is-dom": "1.0.9"
+ }
+ },
+ "react-modal": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.1.10.tgz",
+ "integrity": "sha512-7b77AGWCkdg0YOf/qcYIGCpuwbxRwOA8P3UrUovk4grUNv+idOmHovJAx/Dcd3fuwHtgixxVjpcjVG60985MSA==",
+ "requires": {
+ "exenv": "1.2.2",
+ "prop-types": "15.6.0",
+ "warning": "3.0.0"
+ }
+ },
+ "react-split-pane": {
+ "version": "0.1.72",
+ "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.72.tgz",
+ "integrity": "sha512-9dFQsCLNsz9SYBr61kcHUoMsyNtaB2sHNIMtaMX4RJjUWlRGnDqoGYeCnH+C+y6VbWSC7lBKpwibF83e5pdQNg==",
+ "requires": {
+ "@types/inline-style-prefixer": "3.0.1",
+ "@types/react": "16.0.22",
+ "fast-deep-equal": "1.0.0",
+ "inline-style-prefixer": "3.0.8",
+ "prop-types": "15.6.0",
+ "react-style-proptype": "3.1.0"
+ }
+ },
+ "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.1.1"
+ }
+ },
+ "style-loader": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.19.1.tgz",
+ "integrity": "sha512-IRE+ijgojrygQi3rsqT0U4dd+UcPCqcVvauZpCnQrGAlEe+FUIyrK93bUDScamesjP08JlQNsFJU+KmPedP5Og==",
+ "requires": {
+ "loader-utils": "1.1.0",
+ "schema-utils": "0.3.0"
+ }
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+ "requires": {
+ "has-flag": "2.0.0"
+ }
+ },
+ "time-stamp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz",
+ "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c="
+ },
+ "webpack": {
+ "version": "3.10.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz",
+ "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==",
+ "requires": {
+ "acorn": "5.2.1",
+ "acorn-dynamic-import": "2.0.2",
+ "ajv": "5.3.0",
+ "ajv-keywords": "2.1.1",
+ "async": "2.6.0",
+ "enhanced-resolve": "3.4.1",
+ "escope": "3.6.0",
+ "interpret": "1.0.4",
+ "json-loader": "0.5.7",
+ "json5": "0.5.1",
+ "loader-runner": "2.3.0",
+ "loader-utils": "1.1.0",
+ "memory-fs": "0.4.1",
+ "mkdirp": "0.5.1",
+ "node-libs-browser": "2.0.0",
+ "source-map": "0.5.7",
+ "supports-color": "4.5.0",
+ "tapable": "0.2.8",
+ "uglifyjs-webpack-plugin": "0.4.6",
+ "watchpack": "1.4.0",
+ "webpack-sources": "1.0.2",
+ "yargs": "8.0.2"
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz",
+ "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==",
+ "requires": {
+ "memory-fs": "0.4.1",
+ "mime": "1.6.0",
+ "path-is-absolute": "1.0.1",
+ "range-parser": "1.0.3",
+ "time-stamp": "2.0.0"
+ }
+ },
+ "webpack-hot-middleware": {
+ "version": "2.21.0",
+ "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.21.0.tgz",
+ "integrity": "sha512-P6xiOLy10QlSVSO7GanU9PLxN6zLLQ7RG16MPTvmFwf2KUG7jMp6m+fmdgsR7xoaVVLA7OlX3YO6JjoZEKjCuA==",
+ "requires": {
+ "ansi-html": "0.0.7",
+ "html-entities": "1.2.1",
+ "querystring": "0.2.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "ws": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
+ "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
+ "requires": {
+ "async-limiter": "1.0.0",
+ "safe-buffer": "5.1.1",
+ "ultron": "1.1.0"
+ }
+ },
+ "yargs": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
+ "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
+ "requires": {
+ "camelcase": "4.1.0",
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "read-pkg-up": "2.0.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "7.0.0"
}
}
}
},
+ "@storybook/react-simple-di": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@storybook/react-simple-di/-/react-simple-di-1.3.0.tgz",
+ "integrity": "sha512-RH6gPQaYMs/VzQX2dgbZU8DQMKFXVOv1ruohHjjNPys4q+YdqMFMDe5jOP1AUE3j9g01x0eW7bVjRawSpl++Ew==",
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "create-react-class": "15.6.2",
+ "hoist-non-react-statics": "1.2.0",
+ "prop-types": "15.6.0"
+ }
+ },
+ "@storybook/react-stubber": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@storybook/react-stubber/-/react-stubber-1.0.1.tgz",
+ "integrity": "sha512-k+CHH+vA8bQfCmzBTtJsPkITFgD+C/w19KuByZ9WeEvNUFtnDaCqfP+Vp3/OR+3IAfAXYYOWolqPLxNPcEqEjw==",
+ "requires": {
+ "babel-runtime": "6.26.0"
+ }
+ },
"@types/inline-style-prefixer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@types/inline-style-prefixer/-/inline-style-prefixer-3.0.1.tgz",
"integrity": "sha512-+kbOcYW1/noncDwRryRoB9tH87IYcMfdBGvw98iocK39LtTA2DFL7agmk4UHW/GxjzVfwrxfjlLrqrgA7MCtmg=="
},
+ "@types/node": {
+ "version": "8.5.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.2.tgz",
+ "integrity": "sha512-KA4GKOpgXnrqEH2eCVhiv2CsxgXGQJgV1X0vsGlh+WCnxbeAE1GT44ZsTU1IN5dEeV/gDupKa7gWo08V5IxWVQ==",
+ "dev": true
+ },
"@types/react": {
"version": "16.0.22",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.0.22.tgz",
@@ -450,23 +678,6 @@
}
}
},
- "acorn-globals": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz",
- "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=",
- "dev": true,
- "requires": {
- "acorn": "4.0.13"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
- "dev": true
- }
- }
- },
"acorn-jsx": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
@@ -810,19 +1021,6 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
- "autoprefixer": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz",
- "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==",
- "requires": {
- "browserslist": "2.9.0",
- "caniuse-lite": "1.0.30000760",
- "normalize-range": "0.1.2",
- "num2fraction": "1.2.2",
- "postcss": "6.0.14",
- "postcss-value-parser": "3.3.0"
- }
- },
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -1105,13 +1303,31 @@
}
},
"babel-jest": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz",
- "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==",
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-22.0.3.tgz",
+ "integrity": "sha512-vIJAdq0YuLwg5TF6DDvcSFYx+Cqb9f2pTzC3ZcpGUBeysUUzPxZ6J3WVvuFMzpxgHa23tDKlNivDN9C4jIAKUQ==",
"dev": true,
"requires": {
"babel-plugin-istanbul": "4.1.5",
- "babel-preset-jest": "21.2.0"
+ "babel-preset-jest": "22.0.3"
+ },
+ "dependencies": {
+ "babel-plugin-jest-hoist": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.0.3.tgz",
+ "integrity": "sha512-Z0pOZFs0xDctwF0bPEKrnAzvbbgDi2vDFbQ0EdofnLI2bOa3P1H66gNLb2vMJJaa00VDjfiGhIocsHvBkqtyEQ==",
+ "dev": true
+ },
+ "babel-preset-jest": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-22.0.3.tgz",
+ "integrity": "sha512-FbMMniSMXFvkKldCf+e4Tuol/v3XMaIpIp8xiT1WFlEW3ZapTKDW9YgVt3hqcpZXsIGFf6eUF3Owxom7yFlI8w==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-jest-hoist": "22.0.3",
+ "babel-plugin-syntax-object-rest-spread": "6.13.0"
+ }
+ }
}
},
"babel-loader": {
@@ -1159,12 +1375,6 @@
"test-exclude": "4.1.1"
}
},
- "babel-plugin-jest-hoist": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz",
- "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==",
- "dev": true
- },
"babel-plugin-minify-builtins": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.2.0.tgz",
@@ -1983,16 +2193,6 @@
"babel-plugin-transform-flow-strip-types": "6.22.0"
}
},
- "babel-preset-jest": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz",
- "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==",
- "dev": true,
- "requires": {
- "babel-plugin-jest-hoist": "21.2.0",
- "babel-plugin-syntax-object-rest-spread": "6.13.0"
- }
- },
"babel-preset-minify": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz",
@@ -2149,7 +2349,7 @@
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"requires": {
"core-js": "2.5.1",
- "regenerator-runtime": "0.11.0"
+ "regenerator-runtime": "0.11.1"
}
},
"babel-template": {
@@ -2260,6 +2460,13 @@
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz",
"integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA="
},
+ "bindings": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
+ "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==",
+ "dev": true,
+ "optional": true
+ },
"bl": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.2.1.tgz",
@@ -2462,6 +2669,12 @@
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
"integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
},
+ "browser-process-hrtime": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz",
+ "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=",
+ "dev": true
+ },
"browser-resolve": {
"version": "1.11.2",
"resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz",
@@ -4167,6 +4380,12 @@
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz",
"integrity": "sha1-ca1dIEvxempsqPRQxhRUBm70YeE="
},
+ "detect-newline": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz",
+ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=",
+ "dev": true
+ },
"diff": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz",
@@ -4216,6 +4435,12 @@
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz",
"integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw="
},
+ "domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.0.tgz",
+ "integrity": "sha512-WpwuBlZ2lQRFa4H/4w49deb9rJLot9KmqrKKjMc9qBl7CID+DdC2swoa34ccRl+anL2B6bLp6TjFdIdnzekMBQ==",
+ "dev": true
+ },
"dot-prop": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
@@ -4313,6 +4538,11 @@
"minimalistic-crypto-utils": "1.0.1"
}
},
+ "email-validator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-1.1.1.tgz",
+ "integrity": "sha512-vkcJJZEb7JXDY883Nx1Lkmb6noM3j1SfSt8L9tVFhZPnPQiFq+Nkd5evc77+tRVS4ChTUSr34voThsglI/ja/A=="
+ },
"emoji-regex": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz",
@@ -4765,9 +4995,9 @@
}
},
"eslint-plugin-jsx-a11y": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.2.tgz",
- "integrity": "sha1-ZZJ3p1iwNsMFp+ShMFfDAc075z8=",
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.3.tgz",
+ "integrity": "sha1-VFg9GuRCSDFi4EDhPMMYZUZRAOU=",
"dev": true,
"requires": {
"aria-query": "0.7.0",
@@ -4776,7 +5006,18 @@
"axobject-query": "0.1.0",
"damerau-levenshtein": "1.0.4",
"emoji-regex": "6.5.1",
- "jsx-ast-utils": "1.4.1"
+ "jsx-ast-utils": "2.0.1"
+ },
+ "dependencies": {
+ "jsx-ast-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz",
+ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=",
+ "dev": true,
+ "requires": {
+ "array-includes": "3.0.3"
+ }
+ }
}
},
"eslint-plugin-react": {
@@ -4953,31 +5194,6 @@
"fill-range": "2.2.3"
}
},
- "expect": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz",
- "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "jest-diff": "21.2.1",
- "jest-get-type": "21.2.0",
- "jest-matcher-utils": "21.2.1",
- "jest-message-util": "21.2.1",
- "jest-regex-util": "21.2.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- }
- }
- },
"express": {
"version": "4.16.2",
"resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz",
@@ -7507,27 +7723,18 @@
}
},
"jest": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz",
- "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==",
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-22.0.3.tgz",
+ "integrity": "sha512-90H1wLqiNR3tLhQUgwhC6GWHfRCG+Da14m7vxD608Mt/QTKR0TA751D+QH09x5bvcrLfvxLtxArtA0VEC0ORow==",
"dev": true,
"requires": {
- "jest-cli": "21.2.1"
- }
- },
- "jest-changed-files": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz",
- "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==",
- "dev": true,
- "requires": {
- "throat": "4.1.0"
+ "jest-cli": "22.0.3"
}
},
"jest-cli": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz",
- "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==",
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-22.0.3.tgz",
+ "integrity": "sha512-aX71DL4q9aLxbSmYI8uuPVlXVRyREU4VbApOdiuD79oqqqSGYu9E5S1SLXRm/PB5lJPh5xd8bVRrdsrMVs2hyw==",
"dev": true,
"requires": {
"ansi-escapes": "3.0.0",
@@ -7539,614 +7746,56 @@
"istanbul-lib-coverage": "1.1.1",
"istanbul-lib-instrument": "1.9.1",
"istanbul-lib-source-maps": "1.2.2",
- "jest-changed-files": "21.2.0",
- "jest-config": "21.2.1",
- "jest-environment-jsdom": "21.2.1",
- "jest-haste-map": "21.2.0",
- "jest-message-util": "21.2.1",
- "jest-regex-util": "21.2.0",
- "jest-resolve-dependencies": "21.2.0",
- "jest-runner": "21.2.1",
- "jest-runtime": "21.2.1",
- "jest-snapshot": "21.2.1",
- "jest-util": "21.2.1",
+ "jest-changed-files": "22.0.3",
+ "jest-config": "22.0.3",
+ "jest-environment-jsdom": "22.0.3",
+ "jest-get-type": "22.0.3",
+ "jest-haste-map": "22.0.3",
+ "jest-message-util": "22.0.3",
+ "jest-regex-util": "22.0.3",
+ "jest-resolve-dependencies": "22.0.3",
+ "jest-runner": "22.0.3",
+ "jest-runtime": "22.0.3",
+ "jest-snapshot": "22.0.3",
+ "jest-util": "22.0.3",
+ "jest-worker": "22.0.3",
"micromatch": "2.3.11",
"node-notifier": "5.1.2",
- "pify": "3.0.0",
+ "realpath-native": "1.0.0",
+ "rimraf": "2.6.2",
"slash": "1.0.0",
"string-length": "2.0.0",
"strip-ansi": "4.0.0",
"which": "1.3.0",
- "worker-farm": "1.5.1",
- "yargs": "9.0.1"
+ "yargs": "10.0.3"
},
"dependencies": {
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
+ "@babel/code-frame": {
+ "version": "7.0.0-beta.35",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.35.tgz",
+ "integrity": "sha512-l0SE8cl9DUIY4hYAFAKTLX3F2Yr14Qri7uTsuI7iegB5E4KyQy4XY72L3VOxmj6kwR/RDQURoKYr2NzyETGo7A==",
"dev": true,
"requires": {
- "color-convert": "1.9.1"
+ "chalk": "2.3.0",
+ "esutils": "2.0.2",
+ "js-tokens": "3.0.2"
}
},
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "acorn-globals": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.1.0.tgz",
+ "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==",
"dev": true,
"requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
+ "acorn": "5.2.1"
}
},
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- }
- }
- },
- "jest-config": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz",
- "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "glob": "7.1.2",
- "jest-environment-jsdom": "21.2.1",
- "jest-environment-node": "21.2.1",
- "jest-get-type": "21.2.0",
- "jest-jasmine2": "21.2.1",
- "jest-regex-util": "21.2.0",
- "jest-resolve": "21.2.0",
- "jest-util": "21.2.1",
- "jest-validate": "21.2.1",
- "pretty-format": "21.2.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.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "pretty-format": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz",
- "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0",
- "ansi-styles": "3.2.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- }
- }
- },
- "jest-diff": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz",
- "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "diff": "3.4.0",
- "jest-get-type": "21.2.0",
- "pretty-format": "21.2.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.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "pretty-format": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz",
- "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0",
- "ansi-styles": "3.2.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- }
- }
- },
- "jest-docblock": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz",
- "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw=="
- },
- "jest-environment-jsdom": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz",
- "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==",
- "dev": true,
- "requires": {
- "jest-mock": "21.2.0",
- "jest-util": "21.2.1",
- "jsdom": "9.12.0"
- }
- },
- "jest-environment-node": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz",
- "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==",
- "dev": true,
- "requires": {
- "jest-mock": "21.2.0",
- "jest-util": "21.2.1"
- }
- },
- "jest-get-type": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz",
- "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==",
- "dev": true
- },
- "jest-haste-map": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz",
- "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==",
- "requires": {
- "fb-watchman": "2.0.0",
- "graceful-fs": "4.1.11",
- "jest-docblock": "21.2.0",
- "micromatch": "2.3.11",
- "sane": "2.2.0",
- "worker-farm": "1.5.1"
- }
- },
- "jest-jasmine2": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz",
- "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "expect": "21.2.1",
- "graceful-fs": "4.1.11",
- "jest-diff": "21.2.1",
- "jest-matcher-utils": "21.2.1",
- "jest-message-util": "21.2.1",
- "jest-snapshot": "21.2.1",
- "p-cancelable": "0.3.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- }
- }
- },
- "jest-matcher-utils": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz",
- "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "jest-get-type": "21.2.0",
- "pretty-format": "21.2.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.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "pretty-format": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz",
- "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0",
- "ansi-styles": "3.2.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- }
- }
- },
- "jest-message-util": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz",
- "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "micromatch": "2.3.11",
- "slash": "1.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- }
- }
- },
- "jest-mock": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz",
- "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==",
- "dev": true
- },
- "jest-regex-util": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz",
- "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==",
- "dev": true
- },
- "jest-resolve": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz",
- "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==",
- "dev": true,
- "requires": {
- "browser-resolve": "1.11.2",
- "chalk": "2.3.0",
- "is-builtin-module": "1.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- }
- }
- },
- "jest-resolve-dependencies": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz",
- "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==",
- "dev": true,
- "requires": {
- "jest-regex-util": "21.2.0"
- }
- },
- "jest-runner": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz",
- "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==",
- "dev": true,
- "requires": {
- "jest-config": "21.2.1",
- "jest-docblock": "21.2.0",
- "jest-haste-map": "21.2.0",
- "jest-jasmine2": "21.2.1",
- "jest-message-util": "21.2.1",
- "jest-runtime": "21.2.1",
- "jest-util": "21.2.1",
- "pify": "3.0.0",
- "throat": "4.1.0",
- "worker-farm": "1.5.1"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
- }
- }
- },
- "jest-runtime": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz",
- "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==",
- "dev": true,
- "requires": {
- "babel-core": "6.26.0",
- "babel-jest": "21.2.0",
- "babel-plugin-istanbul": "4.1.5",
- "chalk": "2.3.0",
- "convert-source-map": "1.5.0",
- "graceful-fs": "4.1.11",
- "jest-config": "21.2.1",
- "jest-haste-map": "21.2.0",
- "jest-regex-util": "21.2.0",
- "jest-resolve": "21.2.0",
- "jest-util": "21.2.1",
- "json-stable-stringify": "1.0.1",
- "micromatch": "2.3.11",
- "slash": "1.0.0",
- "strip-bom": "3.0.0",
- "write-file-atomic": "2.3.0",
- "yargs": "9.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- },
- "write-file-atomic": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
- "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
- "dev": true,
- "requires": {
- "graceful-fs": "4.1.11",
- "imurmurhash": "0.1.4",
- "signal-exit": "3.0.2"
- }
- }
- }
- },
- "jest-snapshot": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz",
- "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==",
- "dev": true,
- "requires": {
- "chalk": "2.3.0",
- "jest-diff": "21.2.1",
- "jest-matcher-utils": "21.2.1",
- "mkdirp": "0.5.1",
- "natural-compare": "1.4.0",
- "pretty-format": "21.2.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.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
- "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==",
- "dev": true,
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
- "pretty-format": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz",
- "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==",
- "dev": true,
- "requires": {
- "ansi-regex": "3.0.0",
- "ansi-styles": "3.2.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
- }
- }
- },
- "jest-util": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz",
- "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==",
- "dev": true,
- "requires": {
- "callsites": "2.0.0",
- "chalk": "2.3.0",
- "graceful-fs": "4.1.11",
- "jest-message-util": "21.2.1",
- "jest-mock": "21.2.0",
- "jest-validate": "21.2.1",
- "mkdirp": "0.5.1"
- },
- "dependencies": {
"ansi-styles": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz",
@@ -8173,6 +7822,351 @@
"supports-color": "4.5.0"
}
},
+ "expect": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-22.0.3.tgz",
+ "integrity": "sha512-QapzeQkcA3jCx4pDnD07I4SPPxScKbey8TD/WwrnzmpHmL5q0dUtXfUt5OIFOjVBCg+C4zn4Y1zK9Rb9SIDL1g==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "3.2.0",
+ "jest-diff": "22.0.3",
+ "jest-get-type": "22.0.3",
+ "jest-matcher-utils": "22.0.3",
+ "jest-message-util": "22.0.3",
+ "jest-regex-util": "22.0.3"
+ }
+ },
+ "jest-changed-files": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.0.3.tgz",
+ "integrity": "sha512-CG7eNJNO9x1O/3J4Uhe2QXra1MnC9+KS1f2NeOg+7iQ+8dDCgxCtpusmKfu44TnEyKwkIDhDr6htPfPaI+Fwbw==",
+ "dev": true,
+ "requires": {
+ "throat": "4.1.0"
+ }
+ },
+ "jest-config": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-22.0.3.tgz",
+ "integrity": "sha512-omqyzFPhRm+YaHku+jPuqpSFJ0QD61G/hqR+m09r2IajJbaRjV9XDezCIOD+rJiQlAyfFfo+DAc+u1mLy2IEaA==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "glob": "7.1.2",
+ "jest-environment-jsdom": "22.0.3",
+ "jest-environment-node": "22.0.3",
+ "jest-get-type": "22.0.3",
+ "jest-jasmine2": "22.0.3",
+ "jest-regex-util": "22.0.3",
+ "jest-resolve": "22.0.3",
+ "jest-util": "22.0.3",
+ "jest-validate": "22.0.3",
+ "pretty-format": "22.0.3"
+ }
+ },
+ "jest-diff": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-22.0.3.tgz",
+ "integrity": "sha512-Y7xN9Lc/NgFvR14lvjrJXB6x2x1LLe5NnMyzLvilBSSOyjy9uAVnR2Bt1YgzdfRrfaxsx7xFUVcqXLUnPkrJcA==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "diff": "3.4.0",
+ "jest-get-type": "22.0.3",
+ "pretty-format": "22.0.3"
+ }
+ },
+ "jest-docblock": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.0.3.tgz",
+ "integrity": "sha512-LhviP2rqIg2IzS6m97W7T032oMrT699Tr6Njjhhl4FCLj+75BUy9CsSmGgfoVEql1uc+myBkssvcbn7T9xDR+A==",
+ "dev": true,
+ "requires": {
+ "detect-newline": "2.1.0"
+ }
+ },
+ "jest-environment-jsdom": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-22.0.3.tgz",
+ "integrity": "sha512-LrR9flT6I4IZKIA/dmoAiTmTzGi7W8sP5mCXbgsTjFop1Jh3rNluza/xnf6VfK/aOZvBglJIVYbKqGxtcm0KsQ==",
+ "dev": true,
+ "requires": {
+ "jest-mock": "22.0.3",
+ "jest-util": "22.0.3",
+ "jsdom": "11.5.1"
+ }
+ },
+ "jest-environment-node": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-22.0.3.tgz",
+ "integrity": "sha512-Kk7FYtCQZ+CFwwCL1t3DJ/Lxvjoda4qRt/NJh/6jsAEWM7VcSBAzmmayA5JcMRpQQ4FRiUcLrvrKEfO01/Fgsw==",
+ "dev": true,
+ "requires": {
+ "jest-mock": "22.0.3",
+ "jest-util": "22.0.3"
+ }
+ },
+ "jest-get-type": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.0.3.tgz",
+ "integrity": "sha512-TaJnc/lnJQ3jwry+NUWkqaJmKrM/Ut3XdK89HfiqdI3DMRLd6Zb4wyKjwuNP37MEQqlNg0YWH4sbBR8D4exjCA==",
+ "dev": true
+ },
+ "jest-haste-map": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-22.0.3.tgz",
+ "integrity": "sha512-VosIMOFQFu1rTF+MvOWVuv2KVmZ9eTkRgfwW2yUAs6/AhwmIfXRl/tih+fIOYcHzU4Auu1G8Fvl2kkF5g0k6/A==",
+ "dev": true,
+ "requires": {
+ "fb-watchman": "2.0.0",
+ "graceful-fs": "4.1.11",
+ "jest-docblock": "22.0.3",
+ "jest-worker": "22.0.3",
+ "micromatch": "2.3.11",
+ "sane": "2.2.0"
+ }
+ },
+ "jest-jasmine2": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-22.0.3.tgz",
+ "integrity": "sha512-0Gz3pFZytCjbCKssBJWzx5NolNLg179gkT0Zfe+fWrJS9Ap9EH7eTB9UHoiT2O3lRNBfaYTzrXhOMgf4l/jCMg==",
+ "dev": true,
+ "requires": {
+ "callsites": "2.0.0",
+ "chalk": "2.3.0",
+ "expect": "22.0.3",
+ "graceful-fs": "4.1.11",
+ "jest-diff": "22.0.3",
+ "jest-matcher-utils": "22.0.3",
+ "jest-message-util": "22.0.3",
+ "jest-snapshot": "22.0.3",
+ "source-map-support": "0.5.0"
+ }
+ },
+ "jest-matcher-utils": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-22.0.3.tgz",
+ "integrity": "sha512-FJbKpCR3K7YYE/Pnvy5OrLFgPEswpYWIfVtdwT2NC6pBARbYGX39KF3bTxS9yg2mv0YL2zHe3UbwzFsi9nFpVA==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "jest-get-type": "22.0.3",
+ "pretty-format": "22.0.3"
+ }
+ },
+ "jest-message-util": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-22.0.3.tgz",
+ "integrity": "sha512-AVBdCx7Oj5wBpMOH089lx7Zgwpdz9HbReA82HuVAlIT4kEQRvCy6Sl9yVWDGJwHTgB/OYQGkgmbv/P/K8TkWNw==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "7.0.0-beta.35",
+ "chalk": "2.3.0",
+ "micromatch": "2.3.11",
+ "slash": "1.0.0",
+ "stack-utils": "1.0.1"
+ }
+ },
+ "jest-mock": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-22.0.3.tgz",
+ "integrity": "sha512-donODXcDG03EAEavc9xfJ7fBF/LNVjoZYkmj9DLrQ1B9YcT6wh8Xx7IYg25b8V/8F/eXPMAE0KK5q6Fqe6yAeg==",
+ "dev": true
+ },
+ "jest-regex-util": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-22.0.3.tgz",
+ "integrity": "sha512-mplC9chiAotES3ClzNhy0SJcfHB2DivooKJZW+2hDdvP8LLB+OUI+D6bJd7sncbKUsyFcmblEvpm/zz/hef7HA==",
+ "dev": true
+ },
+ "jest-resolve": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-22.0.3.tgz",
+ "integrity": "sha512-UHpim1kXTXH5hlftIpVOUkh0n+wd36/QNuYgpZnzwX8PsB8DizBuaPJbl5VvorHBpRouz21Ty0K0QM1pPny9cw==",
+ "dev": true,
+ "requires": {
+ "browser-resolve": "1.11.2",
+ "chalk": "2.3.0"
+ }
+ },
+ "jest-resolve-dependencies": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-22.0.3.tgz",
+ "integrity": "sha512-u9MUNJIa9GJ0YFhvM0+Scr4tyX84nC42d3w18Cly1doY7pTT+9momm+TncpuDlFyB2aNmS8SfdEbiLr1e6tBwg==",
+ "dev": true,
+ "requires": {
+ "jest-regex-util": "22.0.3"
+ }
+ },
+ "jest-runner": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-22.0.3.tgz",
+ "integrity": "sha512-b/Eh+bPFLU09R0AULy4/IcUQ4Cgiao7YcmCehI7eailVj2xGQAfhmzSlhDpVIYmvoRZFyReOseihZXXRsdFafA==",
+ "dev": true,
+ "requires": {
+ "jest-config": "22.0.3",
+ "jest-docblock": "22.0.3",
+ "jest-haste-map": "22.0.3",
+ "jest-jasmine2": "22.0.3",
+ "jest-leak-detector": "22.0.3",
+ "jest-message-util": "22.0.3",
+ "jest-runtime": "22.0.3",
+ "jest-util": "22.0.3",
+ "jest-worker": "22.0.3",
+ "throat": "4.1.0"
+ }
+ },
+ "jest-runtime": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-22.0.3.tgz",
+ "integrity": "sha512-SSOiAde16JhEtVtNaWV2OmimmyxP8lmUdHxYde5rwv7iibkRy/o4QtalmmmH48oUxwy/epZVDaEyBKBA/iDFBg==",
+ "dev": true,
+ "requires": {
+ "babel-core": "6.26.0",
+ "babel-jest": "22.0.3",
+ "babel-plugin-istanbul": "4.1.5",
+ "chalk": "2.3.0",
+ "convert-source-map": "1.5.0",
+ "graceful-fs": "4.1.11",
+ "jest-config": "22.0.3",
+ "jest-haste-map": "22.0.3",
+ "jest-regex-util": "22.0.3",
+ "jest-resolve": "22.0.3",
+ "jest-util": "22.0.3",
+ "json-stable-stringify": "1.0.1",
+ "micromatch": "2.3.11",
+ "realpath-native": "1.0.0",
+ "slash": "1.0.0",
+ "strip-bom": "3.0.0",
+ "write-file-atomic": "2.3.0",
+ "yargs": "10.0.3"
+ }
+ },
+ "jest-snapshot": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-22.0.3.tgz",
+ "integrity": "sha512-e/a/EvMsY5XROWy4QWX6PvYziuJ8ttD6+QcnbogODWtx2LGhvVQOb7pmqGTo0tL/p0vzFetZA9GlZSh/EfMepg==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "jest-diff": "22.0.3",
+ "jest-matcher-utils": "22.0.3",
+ "mkdirp": "0.5.1",
+ "natural-compare": "1.4.0",
+ "pretty-format": "22.0.3"
+ }
+ },
+ "jest-util": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-22.0.3.tgz",
+ "integrity": "sha512-iDnKIw4P+9433L7II90UGYZ4rQOatbbcjZO/+1+Fga+rNUF1wEijDfTDjGQil98smAquvB02RBrDgfbquUHLmg==",
+ "dev": true,
+ "requires": {
+ "callsites": "2.0.0",
+ "chalk": "2.3.0",
+ "graceful-fs": "4.1.11",
+ "is-ci": "1.0.10",
+ "jest-message-util": "22.0.3",
+ "jest-validate": "22.0.3",
+ "mkdirp": "0.5.1"
+ }
+ },
+ "jest-validate": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-22.0.3.tgz",
+ "integrity": "sha512-GmlLmPCtrSQ3iB4A1uxcfjawaaQnwESCDcUg5tMxJKeBbmPdcWPAb6EWzvANxULPUV7hfPKLwg4xIPpi7cx1/g==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "jest-get-type": "22.0.3",
+ "leven": "2.1.0",
+ "pretty-format": "22.0.3"
+ }
+ },
+ "jsdom": {
+ "version": "11.5.1",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz",
+ "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==",
+ "dev": true,
+ "requires": {
+ "abab": "1.0.4",
+ "acorn": "5.2.1",
+ "acorn-globals": "4.1.0",
+ "array-equal": "1.0.0",
+ "browser-process-hrtime": "0.1.2",
+ "content-type-parser": "1.0.2",
+ "cssom": "0.3.2",
+ "cssstyle": "0.2.37",
+ "domexception": "1.0.0",
+ "escodegen": "1.9.0",
+ "html-encoding-sniffer": "1.0.2",
+ "left-pad": "1.2.0",
+ "nwmatcher": "1.4.3",
+ "parse5": "3.0.3",
+ "pn": "1.0.0",
+ "request": "2.83.0",
+ "request-promise-native": "1.0.5",
+ "sax": "1.2.4",
+ "symbol-tree": "3.2.2",
+ "tough-cookie": "2.3.3",
+ "webidl-conversions": "4.0.2",
+ "whatwg-encoding": "1.0.3",
+ "whatwg-url": "6.4.0",
+ "xml-name-validator": "2.0.1"
+ }
+ },
+ "left-pad": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz",
+ "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=",
+ "dev": true
+ },
+ "parse5": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
+ "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "8.5.2"
+ }
+ },
+ "pretty-format": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.0.3.tgz",
+ "integrity": "sha512-qXbDFJ2/Kk3HFIaLdOblbsCKQ09kZu4MKbXB+m/EaqD7PZ/wXe2XcRREmQleMh4wmerxlma6eJTh3nxCXYUmmA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0",
+ "ansi-styles": "3.2.0"
+ }
+ },
+ "punycode": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz",
+ "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=",
+ "dev": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.0.tgz",
+ "integrity": "sha512-vUoN3I7fHQe0R/SJLKRdKYuEdRGogsviXFkHHo17AWaTGv17VLnxw+CFXvqy+y4ORZ3doWLQcxRYfwKrsd/H7Q==",
+ "dev": true,
+ "requires": {
+ "source-map": "0.6.1"
+ }
+ },
"supports-color": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
@@ -8181,19 +8175,95 @@
"requires": {
"has-flag": "2.0.0"
}
+ },
+ "tr46": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
+ "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=",
+ "dev": true,
+ "requires": {
+ "punycode": "2.1.0"
+ }
+ },
+ "whatwg-url": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.0.tgz",
+ "integrity": "sha512-Z0CVh/YE217Foyb488eo+iBv+r7eAQ0wSTyApi9n06jhcA3z6Nidg/EGvl0UFkg7kMdKxfBzzr+o9JF+cevgMg==",
+ "dev": true,
+ "requires": {
+ "lodash.sortby": "4.7.0",
+ "tr46": "1.0.1",
+ "webidl-conversions": "4.0.2"
+ }
+ },
+ "write-file-atomic": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
+ "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "imurmurhash": "0.1.4",
+ "signal-exit": "3.0.2"
+ }
+ },
+ "yargs": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz",
+ "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",
+ "dev": true,
+ "requires": {
+ "cliui": "3.2.0",
+ "decamelize": "1.2.0",
+ "find-up": "2.1.0",
+ "get-caller-file": "1.0.2",
+ "os-locale": "2.1.0",
+ "require-directory": "2.1.1",
+ "require-main-filename": "1.0.1",
+ "set-blocking": "2.0.0",
+ "string-width": "2.1.1",
+ "which-module": "2.0.0",
+ "y18n": "3.2.1",
+ "yargs-parser": "8.1.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
+ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "4.1.0"
+ }
}
}
},
- "jest-validate": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz",
- "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==",
+ "jest-docblock": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz",
+ "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw=="
+ },
+ "jest-haste-map": {
+ "version": "21.2.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz",
+ "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==",
+ "requires": {
+ "fb-watchman": "2.0.0",
+ "graceful-fs": "4.1.11",
+ "jest-docblock": "21.2.0",
+ "micromatch": "2.3.11",
+ "sane": "2.2.0",
+ "worker-farm": "1.5.1"
+ }
+ },
+ "jest-leak-detector": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-22.0.3.tgz",
+ "integrity": "sha512-xyVdAmcG8M3jWtVeadDUU6MAHLBrjkP4clz2UtTZ1gpe5bRLk27VjQOpzTwK20MkV/6iZQhSuRVuzHS5kD0HpA==",
"dev": true,
"requires": {
- "chalk": "2.3.0",
- "jest-get-type": "21.2.0",
- "leven": "2.1.0",
- "pretty-format": "21.2.1"
+ "pretty-format": "22.0.3",
+ "weak": "1.0.1"
},
"dependencies": {
"ansi-regex": {
@@ -8211,38 +8281,27 @@
"color-convert": "1.9.1"
}
},
- "chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "3.2.0",
- "escape-string-regexp": "1.0.5",
- "supports-color": "4.5.0"
- }
- },
"pretty-format": {
- "version": "21.2.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz",
- "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==",
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.0.3.tgz",
+ "integrity": "sha512-qXbDFJ2/Kk3HFIaLdOblbsCKQ09kZu4MKbXB+m/EaqD7PZ/wXe2XcRREmQleMh4wmerxlma6eJTh3nxCXYUmmA==",
"dev": true,
"requires": {
"ansi-regex": "3.0.0",
"ansi-styles": "3.2.0"
}
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "dev": true,
- "requires": {
- "has-flag": "2.0.0"
- }
}
}
},
+ "jest-worker": {
+ "version": "22.0.3",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-22.0.3.tgz",
+ "integrity": "sha512-fPdCTnogFQiR0CP6whEsIly2RfcHxvalqyLjhui6qa1SnOmHiX7L8k4Umo8CBIp5ndWY0+ej1o7OTE5MlzPabg==",
+ "dev": true,
+ "requires": {
+ "merge-stream": "1.0.1"
+ }
+ },
"js-base64": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz",
@@ -8278,47 +8337,6 @@
"resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz",
"integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ=="
},
- "jsdom": {
- "version": "9.12.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz",
- "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=",
- "dev": true,
- "requires": {
- "abab": "1.0.4",
- "acorn": "4.0.13",
- "acorn-globals": "3.1.0",
- "array-equal": "1.0.0",
- "content-type-parser": "1.0.2",
- "cssom": "0.3.2",
- "cssstyle": "0.2.37",
- "escodegen": "1.9.0",
- "html-encoding-sniffer": "1.0.2",
- "nwmatcher": "1.4.3",
- "parse5": "1.5.1",
- "request": "2.83.0",
- "sax": "1.2.4",
- "symbol-tree": "3.2.2",
- "tough-cookie": "2.3.3",
- "webidl-conversions": "4.0.2",
- "whatwg-encoding": "1.0.3",
- "whatwg-url": "4.8.0",
- "xml-name-validator": "2.0.1"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
- "dev": true
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "dev": true
- }
- }
- },
"jsesc": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz",
@@ -8393,12 +8411,6 @@
"verror": "1.10.0"
}
},
- "jsx-ast-utils": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz",
- "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=",
- "dev": true
- },
"keycode": {
"version": "2.1.9",
"resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.9.tgz",
@@ -9490,16 +9502,6 @@
"tmpl": "1.0.4"
}
},
- "mantra-core": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/mantra-core/-/mantra-core-1.7.0.tgz",
- "integrity": "sha1-qMg+jO6D72pzgxMVGf6AMa1UY4Y=",
- "requires": {
- "babel-runtime": "6.26.0",
- "react-komposer": "1.13.1",
- "react-simple-di": "1.2.0"
- }
- },
"math-expression-evaluator": {
"version": "1.2.17",
"resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
@@ -9846,9 +9848,9 @@
"integrity": "sha1-zz2C0YwMp/RY2PKiQIF7PcflSgE="
},
"moment": {
- "version": "2.19.4",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.4.tgz",
- "integrity": "sha512-1xFTAknSLfc47DIxHDUbnJWC+UwgWxATmymaxIPQpmMh7LBm7ZbwVEsuushqwL2GYZU0jie4xO+TK44hJPjNSQ=="
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz",
+ "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg=="
},
"morgan": {
"version": "1.6.1",
@@ -10394,6 +10396,16 @@
"integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
"dev": true
},
+ "object.getownpropertydescriptors": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+ "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.2",
+ "es-abstract": "1.9.0"
+ }
+ },
"object.omit": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
@@ -10536,12 +10548,6 @@
"minimist": "1.2.0"
}
},
- "p-cancelable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz",
- "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==",
- "dev": true
- },
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
@@ -10607,12 +10613,6 @@
"error-ex": "1.3.1"
}
},
- "parse5": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
- "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=",
- "dev": true
- },
"parseurl": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
@@ -10747,6 +10747,12 @@
"integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
"dev": true
},
+ "pn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/pn/-/pn-1.0.0.tgz",
+ "integrity": "sha1-HPWjCw2AbNGPiPxBprXUrWFbO6k=",
+ "dev": true
+ },
"podda": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/podda/-/podda-1.2.2.tgz",
@@ -11141,17 +11147,6 @@
"object-assign": "4.1.1"
}
},
- "postcss-loader": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.0.8.tgz",
- "integrity": "sha512-KtXBiQ/r/WYW8LxTSJK7h8wLqvCMSub/BqmRnud/Mu8RzwflW9cmXxwsMwbn15TNv287Hcufdb3ZSs7xHKnG8Q==",
- "requires": {
- "loader-utils": "1.1.0",
- "postcss": "6.0.14",
- "postcss-load-config": "1.2.0",
- "schema-utils": "0.3.0"
- }
- },
"postcss-merge-idents": {
"version": "2.1.7",
"resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
@@ -12141,15 +12136,6 @@
"react-icon-base": "2.1.0"
}
},
- "react-inspector": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-2.2.1.tgz",
- "integrity": "sha512-aXrxJTfriJtZtv/+A9cFIOpfbt711yCD1Ht3fSn3JyuDaAt1+eLtb01R5d/8gGpyquOVWn/d+eM1VPqFXS7UZA==",
- "requires": {
- "babel-runtime": "6.26.0",
- "is-dom": "1.0.9"
- }
- },
"react-komposer": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/react-komposer/-/react-komposer-1.13.1.tgz",
@@ -12171,19 +12157,10 @@
"smart-mixin": "2.0.0"
}
},
- "react-modal": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.1.2.tgz",
- "integrity": "sha512-a3L2qP0kaqMBy4C1aojs2caUIz3kHRFlnuWJ8zsnuUmh/fKHEDASujVBiQcatn+yUosdE9hViB6JvLfkB0tN2A==",
- "requires": {
- "exenv": "1.2.2",
- "prop-types": "15.6.0"
- }
- },
"react-native": {
- "version": "0.50.4",
- "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.50.4.tgz",
- "integrity": "sha1-GU9dpJOQh7Os7nEqUDR19JQtyn4=",
+ "version": "0.51.0",
+ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.51.0.tgz",
+ "integrity": "sha512-XpLmz3C7DOds5TUwIOpQBEXqoFDtU2/HmMBzVItGlHtowXpcHoQxJYSxL4Z9u8B4EeDfSvGfU2TFHq0sV3xd3Q==",
"requires": {
"absolute-path": "0.0.0",
"art": "0.10.1",
@@ -12191,6 +12168,7 @@
"babel-plugin-syntax-trailing-function-commas": "6.22.0",
"babel-plugin-transform-async-to-generator": "6.16.0",
"babel-plugin-transform-class-properties": "6.24.1",
+ "babel-plugin-transform-exponentiation-operator": "6.24.1",
"babel-plugin-transform-flow-strip-types": "6.22.0",
"babel-plugin-transform-object-rest-spread": "6.26.0",
"babel-register": "6.26.0",
@@ -12227,7 +12205,7 @@
"react-clone-referenced-element": "1.0.1",
"react-devtools-core": "2.5.2",
"react-timer-mixin": "0.13.3",
- "regenerator-runtime": "0.9.6",
+ "regenerator-runtime": "0.11.1",
"rimraf": "2.6.2",
"semver": "5.4.1",
"shell-quote": "1.6.1",
@@ -12239,11 +12217,6 @@
"yargs": "9.0.1"
},
"dependencies": {
- "regenerator-runtime": {
- "version": "0.9.6",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz",
- "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck="
- },
"whatwg-fetch": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz",
@@ -12569,35 +12542,6 @@
}
}
},
- "react-simple-di": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/react-simple-di/-/react-simple-di-1.2.0.tgz",
- "integrity": "sha1-3eDlv2ifOR7yqwLJBDshP+I5xtA=",
- "requires": {
- "babel-runtime": "6.26.0",
- "hoist-non-react-statics": "1.2.0"
- }
- },
- "react-split-pane": {
- "version": "0.1.70",
- "resolved": "https://registry.npmjs.org/react-split-pane/-/react-split-pane-0.1.70.tgz",
- "integrity": "sha512-vXLE4gTI9gTFXEaX2pKKyZilwDsxGVmAQi7yombplzzj2oBY/fmd3o4DlNSMN43m9XchtStcWri9mOrBx3yMiQ==",
- "requires": {
- "@types/inline-style-prefixer": "3.0.1",
- "@types/react": "16.0.22",
- "inline-style-prefixer": "3.0.8",
- "prop-types": "15.6.0",
- "react-style-proptype": "3.1.0"
- }
- },
- "react-stubber": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/react-stubber/-/react-stubber-1.0.0.tgz",
- "integrity": "sha1-Qe4srHLU1P1wpjiW2pjhNzm4Rig=",
- "requires": {
- "babel-runtime": "6.26.0"
- }
- },
"react-style-proptype": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/react-style-proptype/-/react-style-proptype-3.1.0.tgz",
@@ -12810,6 +12754,15 @@
}
}
},
+ "realpath-native": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz",
+ "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==",
+ "dev": true,
+ "requires": {
+ "util.promisify": "1.0.0"
+ }
+ },
"rechoir": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
@@ -12903,9 +12856,9 @@
"integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg=="
},
"regenerator-runtime": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
- "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A=="
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
},
"regenerator-transform": {
"version": "0.10.1",
@@ -13069,6 +13022,26 @@
}
}
},
+ "request-promise-core": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz",
+ "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.4"
+ }
+ },
+ "request-promise-native": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz",
+ "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=",
+ "dev": true,
+ "requires": {
+ "request-promise-core": "1.1.1",
+ "stealthy-require": "1.1.1",
+ "tough-cookie": "2.3.3"
+ }
+ },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -13577,9 +13550,9 @@
}
},
"snyk": {
- "version": "1.52.1",
- "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.52.1.tgz",
- "integrity": "sha1-lSvdnS2rLMA6RR/ZhtkUUcxv7ZE=",
+ "version": "1.61.2",
+ "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.61.2.tgz",
+ "integrity": "sha1-wUJvhLaGFJmcauxwrG8I2BVaCZs=",
"requires": {
"abbrev": "1.1.1",
"ansi-escapes": "1.4.0",
@@ -13595,13 +13568,13 @@
"proxy-from-env": "1.0.0",
"semver": "5.4.1",
"snyk-config": "1.0.1",
- "snyk-go-plugin": "1.3.8",
+ "snyk-go-plugin": "1.4.3",
"snyk-gradle-plugin": "1.2.0",
"snyk-module": "1.8.1",
"snyk-mvn-plugin": "1.1.0",
- "snyk-nuget-plugin": "1.3.3",
- "snyk-php-plugin": "1.1.2",
- "snyk-policy": "1.7.1",
+ "snyk-nuget-plugin": "1.3.6",
+ "snyk-php-plugin": "1.3.0",
+ "snyk-policy": "1.10.1",
"snyk-python-plugin": "1.4.0",
"snyk-recursive-readdir": "2.0.0",
"snyk-resolve": "1.0.0",
@@ -13695,6 +13668,76 @@
"onetime": "1.1.0"
}
},
+ "snyk-go-plugin": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.4.3.tgz",
+ "integrity": "sha512-xU+X+4qNwpe+0dwkxBiMrKbTXBT5HSaUViqTZ/SlgtPDRZ9XclgJ/b9IPU4ujAZ69Pzv5hRDyRP0wFO7hw0kXg==",
+ "requires": {
+ "graphlib": "2.1.1",
+ "toml": "2.3.3"
+ }
+ },
+ "snyk-nuget-plugin": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.3.6.tgz",
+ "integrity": "sha512-3y+n1MEzZVWFphpjsa8ETyjqfWLsnZbTeY4JirJhLX3YjT1PfSVIEdCfHjtu54VKbG/aIixrn5pUrxeo4VFnOQ==",
+ "requires": {
+ "debug": "3.1.0",
+ "es6-promise": "4.1.1",
+ "xml2js": "0.4.19",
+ "zip": "1.2.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "es6-promise": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz",
+ "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng=="
+ }
+ }
+ },
+ "snyk-php-plugin": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.3.0.tgz",
+ "integrity": "sha512-78QTlDta81rWVhbpeW36ykfvghIF9W6oEO51S5my5N6CEvmC1Fh55tWdB5fs8zCsFxC1IhocEnSQgbD3eD/Slw==",
+ "requires": {
+ "debug": "3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "snyk-policy": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.10.1.tgz",
+ "integrity": "sha1-saJsiu9SnGFgSso4IRHlNdURt2M=",
+ "requires": {
+ "debug": "2.6.9",
+ "email-validator": "1.1.1",
+ "es6-promise": "3.3.1",
+ "js-yaml": "3.7.0",
+ "lodash.clonedeep": "4.5.0",
+ "semver": "5.4.1",
+ "snyk-module": "1.8.1",
+ "snyk-resolve": "1.0.0",
+ "snyk-try-require": "1.2.0",
+ "then-fs": "2.0.0"
+ }
+ },
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
@@ -13725,15 +13768,6 @@
"path-is-absolute": "1.0.1"
}
},
- "snyk-go-plugin": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.3.8.tgz",
- "integrity": "sha512-jHdC6+wEgSCV287PWFPx/9yb7NaLIi/jf4qxxu4CfNVjepA7Nk88LWAb4URQ/kJbw2IY7lz9z6OJlr/npqt9MA==",
- "requires": {
- "graphlib": "2.1.1",
- "toml": "2.3.3"
- }
- },
"snyk-gradle-plugin": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-1.2.0.tgz",
@@ -13756,66 +13790,6 @@
"resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-1.1.0.tgz",
"integrity": "sha512-eWRTGzSNnuhLF49015ZyRgYsNC7N0uXltNZVvaLrKClL9tERG7uX9IAWMwKyMeyLS9Dlpml4zLZ5nYY/Z+aU1Q=="
},
- "snyk-nuget-plugin": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.3.3.tgz",
- "integrity": "sha512-TekZeStK5VNWcCDiaTOJKrlA2BR8kueuduRpmUIDF7dORsDTbDFKDT+OfFdKfm+oqCmM7eCxLk2IqWnVzAbzwQ==",
- "requires": {
- "debug": "3.1.0",
- "es6-promise": "4.1.1",
- "xml2js": "0.4.19",
- "zip": "1.2.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "es6-promise": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.1.1.tgz",
- "integrity": "sha512-OaU1hHjgJf+b0NzsxCg7NdIYERD6Hy/PEmFLTjw+b65scuisG3Kt4QoTvJ66BBkPZ581gr0kpoVzKnxniM8nng=="
- }
- }
- },
- "snyk-php-plugin": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.1.2.tgz",
- "integrity": "sha512-6eINTroSUeSFU8W/HRGyDZEykunqrQI0kMPQxJzq6HyNxlRSAlFBI2RQVbGV+GwuaeKXHeGTeWjaLE6s2tVkdw==",
- "requires": {
- "debug": "3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "snyk-policy": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.7.1.tgz",
- "integrity": "sha1-5BO2vUr2BQxeX0RSh5CeTpigmyI=",
- "requires": {
- "debug": "2.6.9",
- "es6-promise": "3.3.1",
- "js-yaml": "3.7.0",
- "lodash.clonedeep": "4.5.0",
- "semver": "5.4.1",
- "snyk-module": "1.8.1",
- "snyk-resolve": "1.0.0",
- "snyk-try-require": "1.2.0",
- "then-fs": "2.0.0"
- }
- },
"snyk-python-plugin": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.4.0.tgz",
@@ -14000,6 +13974,12 @@
"tweetnacl": "0.14.5"
}
},
+ "stack-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz",
+ "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=",
+ "dev": true
+ },
"stacktrace-parser": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz",
@@ -14010,6 +13990,12 @@
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
},
+ "stealthy-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
+ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
+ "dev": true
+ },
"stream-browserify": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz",
@@ -14179,15 +14165,6 @@
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
},
- "style-loader": {
- "version": "0.18.2",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz",
- "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==",
- "requires": {
- "loader-utils": "1.1.0",
- "schema-utils": "0.3.0"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -14675,12 +14652,6 @@
"punycode": "1.4.1"
}
},
- "tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
- "dev": true
- },
"trackr": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/trackr/-/trackr-2.0.2.tgz",
@@ -15060,6 +15031,16 @@
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "1.1.2",
+ "object.getownpropertydescriptors": "2.0.3"
+ }
+ },
"utils-merge": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz",
@@ -15185,111 +15166,23 @@
"graceful-fs": "4.1.11"
}
},
+ "weak": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/weak/-/weak-1.0.1.tgz",
+ "integrity": "sha1-q5mqswcGlZqgIAy4z1RbucszuZ4=",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "bindings": "1.3.0",
+ "nan": "2.7.0"
+ }
+ },
"webidl-conversions": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
"integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
"dev": true
},
- "webpack": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.8.1.tgz",
- "integrity": "sha512-5ZXLWWsMqHKFr5y0N3Eo5IIisxeEeRAajNq4mELb/WELOR7srdbQk2N5XiyNy2A/AgvlR3AmeBCZJW8lHrolbw==",
- "requires": {
- "acorn": "5.2.1",
- "acorn-dynamic-import": "2.0.2",
- "ajv": "5.3.0",
- "ajv-keywords": "2.1.1",
- "async": "2.6.0",
- "enhanced-resolve": "3.4.1",
- "escope": "3.6.0",
- "interpret": "1.0.4",
- "json-loader": "0.5.7",
- "json5": "0.5.1",
- "loader-runner": "2.3.0",
- "loader-utils": "1.1.0",
- "memory-fs": "0.4.1",
- "mkdirp": "0.5.1",
- "node-libs-browser": "2.0.0",
- "source-map": "0.5.7",
- "supports-color": "4.5.0",
- "tapable": "0.2.8",
- "uglifyjs-webpack-plugin": "0.4.6",
- "watchpack": "1.4.0",
- "webpack-sources": "1.0.2",
- "yargs": "8.0.2"
- },
- "dependencies": {
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "requires": {
- "has-flag": "2.0.0"
- }
- },
- "yargs": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz",
- "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
- "requires": {
- "camelcase": "4.1.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "os-locale": "2.1.0",
- "read-pkg-up": "2.0.0",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "2.1.1",
- "which-module": "2.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "7.0.0"
- }
- }
- }
- },
- "webpack-dev-middleware": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.0.tgz",
- "integrity": "sha1-007++y7dp+HTtdvgcolRMhllFwk=",
- "requires": {
- "memory-fs": "0.4.1",
- "mime": "1.4.1",
- "path-is-absolute": "1.0.1",
- "range-parser": "1.0.3",
- "time-stamp": "2.0.0"
- },
- "dependencies": {
- "time-stamp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz",
- "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c="
- }
- }
- },
- "webpack-hot-middleware": {
- "version": "2.20.0",
- "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.20.0.tgz",
- "integrity": "sha512-AYwVG9DCvMoXbwx8eK16CbJY3Ltwap44lW3T7hFsE0U3zRwtViHMw1DFpY5hMwXNqKsUk3HtNcf3PoV+gIxJeg==",
- "requires": {
- "ansi-html": "0.0.7",
- "html-entities": "1.2.1",
- "querystring": "0.2.0",
- "strip-ansi": "3.0.1"
- },
- "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.1.1"
- }
- }
- }
- },
"webpack-sources": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.2.tgz",
@@ -15320,24 +15213,6 @@
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz",
"integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ="
},
- "whatwg-url": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz",
- "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=",
- "dev": true,
- "requires": {
- "tr46": "0.0.3",
- "webidl-conversions": "3.0.1"
- },
- "dependencies": {
- "webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
- "dev": true
- }
- }
- },
"whet.extend": {
"version": "0.9.9",
"resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
diff --git a/package.json b/package.json
index e4b9eb2d..8b21d0d9 100644
--- a/package.json
+++ b/package.json
@@ -21,16 +21,17 @@
]
},
"dependencies": {
- "@storybook/react-native": "^3.2.15",
+ "@storybook/addons": "^3.2.18",
+ "@storybook/react-native": "^3.2.18",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-remove-console": "^6.8.5",
"babel-polyfill": "^6.26.0",
"ejson": "^2.1.2",
- "moment": "^2.19.3",
+ "moment": "^2.20.1",
"prop-types": "^15.6.0",
"react": "^16.2.0",
"react-emojione": "^5.0.0",
- "react-native": "^0.50.4",
+ "react-native": "^0.51.0",
"react-native-action-button": "^2.8.3",
"react-native-actionsheet": "^2.3.0",
"react-native-animatable": "^1.2.4",
@@ -59,16 +60,16 @@
"redux-immutable-state-invariant": "^2.1.0",
"redux-logger": "^3.0.6",
"redux-saga": "^0.16.0",
- "regenerator-runtime": "^0.11.0",
+ "regenerator-runtime": "^0.11.1",
"remote-redux-devtools": "^0.5.12",
"simple-markdown": "^0.3.1",
- "snyk": "^1.41.1",
+ "snyk": "^1.61.1",
"strip-ansi": "^4.0.0"
},
"devDependencies": {
- "@storybook/addon-storyshots": "^3.2.15",
+ "@storybook/addon-storyshots": "^3.2.18",
"babel-eslint": "^8.0.2",
- "babel-jest": "21.2.0",
+ "babel-jest": "^22.0.3",
"babel-plugin-transform-react-remove-prop-types": "^0.4.10",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react-native": "4.0.0",
@@ -76,12 +77,12 @@
"eslint": "^4.12.0",
"eslint-config-airbnb": "^16.1.0",
"eslint-plugin-import": "^2.8.0",
- "eslint-plugin-jsx-a11y": "^6.0.2",
+ "eslint-plugin-jsx-a11y": "^6.0.3",
"eslint-plugin-react": "^7.5.1",
"eslint-plugin-react-native": "^3.2.0",
"identity-obj-proxy": "^3.0.0",
- "jest": "21.2.1",
- "jest-cli": "^21.2.1",
+ "jest": "^22.0.3",
+ "jest-cli": "^22.0.3",
"react-dom": "^16.2.0",
"react-test-renderer": "^16.2.0"
},