Commit 388add81 by HaOuiha

remove polling && use subscription mastercard status & change end point

parent 9e4e07b1
import React from 'react';
import React, { useEffect, useState } from 'react';
import { View, Icon, Text } from 'native-base';
import { Image, StyleSheet, Platform } from 'react-native';
import { BaseButton, TouchableOpacity } from 'react-native-gesture-handler';
import { color, theme } from '../constants/Styles';
import { graphql } from '@apollo/react-hoc';
import { READ_SHADOW, SUBSCRIBE_SHADOW } from '../utils/apollo/apollo';
// const MeterCardWithSubscription = props => {
// console.log(props);
// return (
// <Query query={READ_SHADOW} variables={{ deviceid: props.item.deviceId }}>
// {({ subscribeToMore, ...result }) => (
// <MeterCard
// {...props}
// {...result}
// subscribeToNewShadow={() =>
// subscribeToMore({
// document: SUBSCRIBE_SHADOW,
// variables: { deviceid: props.item.deviceId },
// updateQuery: (prev, { subscriptionData }) => {
// return subscriptionData;
// },
// })
// }
// />
// )}
// </Query>
// );
// };
const MeterCard = ({ item, onPressEachCard, data, ...rest }) => {
const [breakerStatus, setBreakerStatus] = useState(item.breakerStatus);
useEffect(() => {
subscribeToNewShadow(data.subscribeToMore);
return () => {
subscribeToNewShadow.unsubscribe();
};
}, []);
const subscribeToNewShadow = subscribeToMore => {
subscribeToMore({
document: SUBSCRIBE_SHADOW,
variables: { deviceid: item.deviceId },
updateQuery: (prev, { subscriptionData }) => {
console.log(subscriptionData);
if (subscriptionData.data.shadowUpdated.data.hasOwnProperty('SM1')) {
setBreakerStatus(subscriptionData.data.shadowUpdated.data.SM1.BK_S);
}
},
});
};
const MeterCard = ({ item, onPressEachCard }) => {
const renderContent = () => (
<>
<View
style={[
styles.meterOn,
{ backgroundColor: item.breakerStatus === 1 ? 'rgba(65, 204, 0, 0.59)' : 'rgba(223, 0, 0, 0.59)' },
{ backgroundColor: breakerStatus === 1 ? 'rgba(65, 204, 0, 0.59)' : 'rgba(223, 0, 0, 0.59)' },
]}
/>
{/* <View style={[styles.meterOnInner, { backgroundColor: item.breakerStatus === 1 ? 'rgba(65, 204, 0, 0.2)' : 'rgba(223, 0, 0, 0.2)'}]} /> */}
{/* <View style={[styles.meterOnInner, { backgroundColor: breakerStatus === 1 ? 'rgba(65, 204, 0, 0.2)' : 'rgba(223, 0, 0, 0.2)'}]} /> */}
<View style={[theme.centerContainer, { paddingLeft: 10 }]}>
{item.img ? (
<Image source={{ uri: item.img }} style={styles.meterImgStyle} />
......@@ -40,7 +86,7 @@ const MeterCard = ({ item, onPressEachCard }) => {
return Platform.OS === 'android' ? (
<BaseButton
onPress={onPressEachCard}
rippleColor={item.breakerStatus === 1 ? 'rgba(65, 204, 0, 0.1)' : 'rgba(223, 0, 0, 0.1)'}
rippleColor={breakerStatus === 1 ? 'rgba(65, 204, 0, 0.1)' : 'rgba(223, 0, 0, 0.1)'}
style={styles.cardContainer}
>
{renderContent()}
......@@ -54,7 +100,13 @@ const MeterCard = ({ item, onPressEachCard }) => {
);
};
export default MeterCard;
const withShadow = graphql(READ_SHADOW, {
options: props => ({
variables: { deviceid: props.deviceId },
}),
});
export default withShadow(MeterCard);
const styles = StyleSheet.create({
meterOn: {
......
......@@ -10,10 +10,20 @@
"lint": "eslint ."
},
"dependencies": {
"@apollo/react-components": "^3.1.1",
"@apollo/react-hoc": "^3.1.1",
"@apollo/react-hooks": "^3.1.1",
"@eva-design/eva": "^1.0.1",
"@react-native-community/async-storage": "^1.6.1",
"apollo-boost": "^0.4.4",
"apollo-cache-inmemory": "^1.6.3",
"apollo-client": "^2.6.4",
"apollo-link": "^1.2.13",
"apollo-link-context": "^1.0.19",
"apollo-link-error": "^1.1.12",
"apollo-link-http": "^1.5.16",
"apollo-link-ws": "^1.0.19",
"apollo-utilities": "^1.3.2",
"axios": "^0.19.0",
"date-fns": "^1.30.1",
"firebase": "^6.5.0",
......@@ -53,7 +63,8 @@
"redux": "^4.0.4",
"redux-form": "^8.2.4",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.3.0"
"redux-thunk": "^2.3.0",
"subscriptions-transport-ws": "^0.9.16"
},
"devDependencies": {
"@babel/core": "^7.5.5",
......
import app, { fireStore, baseURL } from '../../firebase';
import _ from 'lodash';
import { apolloQuery, READ_SHADOW } from '../../utils/apollo/apollo';
// import { useQuery } from '@apollo/react-hooks';
export const GET_ALL_MAIN_DEVICE_INFO = 'GET_ALL_MAIN_DEVICE_INFO';
export const GET_ALL_MAIN_DEVICE_INFO_LOADING = 'GET_ALL_MAIN_DEVICE_INFO_LOADING';
......@@ -91,15 +90,26 @@ const getBreakerStatus = async deviceId => {
try {
const {
data: {
shadow: { value },
shadow: { data },
},
} = await apolloQuery(READ_SHADOW, { deviceid: deviceId });
const tempBreakerStatus = _.pick(value, ['SM1']);
// const hello = await apolloSubscription(READ_SHADOW, { deviceid: deviceId }, SUBSCRIBE_SHADOW, {
// deviceid: deviceId,
// });
// console.log('hello', hello);
// const res = await apolloSubscription(READ_SHADOW, { deviceid: deviceId });
// console.log(res);
const tempBreakerStatus = _.pick(data, ['SM1']);
const breakerStatus = tempBreakerStatus.SM1.BK_S;
return breakerStatus;
} catch (e) {
// console.log(e || 'error');
// alert('Something went wrong!!');
console.log(e);
return 0;
}
};
......@@ -49,12 +49,12 @@ export const getCurrentSelectedShadow = deviceId => async (dispatch, getState) =
try {
const {
data: {
shadow: { value },
shadow: { data },
},
} = await apolloQuery(READ_SHADOW, { deviceid: deviceId || selectedDeviceId });
// const tempBreakersStatus = _.pick(value, ['CMD_MSG', 'SM1', 'MD_STA', 'ML0', 'ML1', 'ML2', 'ML3', 'ML4']);
const tempBreakersStatus = _.pick(value, ['SM1', 'ML1', 'ML2', 'ML3', 'ML4']);
const tempBreakersStatus = _.pick(data, ['SM1', 'ML1', 'ML2', 'ML3', 'ML4']);
const breakersStatus = { ...tempBreakersStatus, SM1: { BK_S: tempBreakersStatus.SM1.BK_S } };
let shadowTimers = [];
......@@ -62,7 +62,7 @@ export const getCurrentSelectedShadow = deviceId => async (dispatch, getState) =
for (let i = 1; i <= 4; i++) {
for (let j = 1; j <= 8; j++) {
shadowTimers.push(`L${i}B${j}T`);
shadowValue = _.omit(value, [
shadowValue = _.omit(data, [
'CMD_MSG',
'TIME_NOW',
'TIME_ZONE',
......@@ -100,11 +100,11 @@ export const getCurrentSelectedData = (deviceId, showLoading) => async dispatch
//CLOUD FUNCTION :: GET SHADOW
const {
data: {
shadow: { value },
shadow: { data },
},
} = await apolloQuery(READ_SHADOW, { deviceid: deviceId || selectedDeviceId });
const tempBreakersStatus = _.pick(value, ['SM1', 'ML1', 'ML2', 'ML3', 'ML4']);
const tempBreakersStatus = _.pick(data, ['SM1', 'ML1', 'ML2', 'ML3', 'ML4']);
const breakersStatus = { ...tempBreakersStatus, SM1: { BK_S: tempBreakersStatus.SM1.BK_S } };
let shadowTimers = [];
......@@ -112,7 +112,7 @@ export const getCurrentSelectedData = (deviceId, showLoading) => async dispatch
for (let i = 1; i <= 4; i++) {
for (let j = 1; j <= 8; j++) {
shadowTimers.push(`L${i}B${j}T`);
shadowValue = _.omit(value, [
shadowValue = _.omit(data, [
'CMD_MSG',
'TIME_NOW',
'TIME_ZONE',
......@@ -196,25 +196,25 @@ export const setMainStatus = settingValue => async (dispatch, getState) => {
await apolloMutation(WRITE_SHADOW, { deviceid: selectedDeviceId, data: data });
/*---------------polling-----------------*/
let countTimes = 0;
const queryShadowInterval = setInterval(async () => {
const {
data: {
shadow: { value },
},
} = await apolloQuery(READ_SHADOW, { deviceid: selectedDeviceId });
const tempBreakersStatus = _.pick(value, ['SM1', 'ML1', 'ML2', 'ML3', 'ML4']);
const breakersStatus = { ...tempBreakersStatus, SM1: { BK_S: tempBreakersStatus.SM1.BK_S } };
countTimes === 3 && dispatch(getBreakersStatusAction(breakersStatus));
// console.log(countTimes);
if (countTimes >= 3) {
clearInterval(queryShadowInterval);
countTimes = 0;
}
++countTimes;
}, 3000);
// let countTimes = 0;
// const queryShadowInterval = setInterval(async () => {
// const {
// data: {
// shadow: { data },
// },
// } = await apolloQuery(READ_SHADOW, { deviceid: selectedDeviceId });
// const tempBreakersStatus = _.pick(data, ['SM1', 'ML1', 'ML2', 'ML3', 'ML4']);
// const breakersStatus = { ...tempBreakersStatus, SM1: { BK_S: tempBreakersStatus.SM1.BK_S } };
// countTimes === 3 && dispatch(getBreakersStatusAction(breakersStatus));
// // console.log(countTimes);
// if (countTimes >= 3) {
// clearInterval(queryShadowInterval);
// countTimes = 0;
// }
// ++countTimes;
// }, 3000);
} catch (error) {
console.log(error);
}
......@@ -249,24 +249,24 @@ export const setSubBreakerStatus = (settingValue, MainIndex, SubIndex) => async
await apolloMutation(WRITE_SHADOW, { deviceid: selectedDeviceId, data: data });
/*---------------polling-----------------*/
let countTimes = 0;
const queryShadowInterval = setInterval(async () => {
const {
data: {
shadow: { value },
},
} = await apolloQuery(READ_SHADOW, { deviceid: selectedDeviceId });
const breakersStatus = _.pick(value, ['SM1', 'ML1', 'ML2', 'ML3', 'ML4']);
// console.log('BreakerStatus_polling', breakersStatus);
countTimes === 3 && dispatch(getBreakersStatusAction(breakersStatus));
if (countTimes >= 3) {
clearInterval(queryShadowInterval);
countTimes = 0;
}
++countTimes;
}, 3000);
// let countTimes = 0;
// const queryShadowInterval = setInterval(async () => {
// const {
// data: {
// shadow: { data },
// },
// } = await apolloQuery(READ_SHADOW, { deviceid: selectedDeviceId });
// const breakersStatus = _.pick(data, ['SM1', 'ML1', 'ML2', 'ML3', 'ML4']);
// // console.log('BreakerStatus_polling', breakersStatus);
// countTimes === 3 && dispatch(getBreakersStatusAction(breakersStatus));
// if (countTimes >= 3) {
// clearInterval(queryShadowInterval);
// countTimes = 0;
// }
// ++countTimes;
// }, 3000);
} catch (error) {
console.log(error);
}
......
......@@ -67,11 +67,11 @@ class CameraScreen extends Component {
createNewDevice = async deviceId => {
const {
data: {
shadow: { value },
shadow: { data },
},
} = await apolloQuery(READ_SHADOW, { deviceid: deviceId });
const breakersStatus = _.pick(value, ['MD_STA', 'ML1', 'ML2', 'ML3', 'ML4']);
const breakersStatus = _.pick(data, ['MD_STA', 'ML1', 'ML2', 'ML3', 'ML4']);
const { existedMainBreaker, existedSubBreaker } = this.checkingExistedBreaker(breakersStatus);
createDefaultData(deviceId, existedMainBreaker, existedSubBreaker);
......
......@@ -23,15 +23,18 @@ class McbLinkSettingScreen extends React.Component {
mcbLinkInfo: this.props.existedMcbLinksData[this.props.navigation.getParam('mcbIndex')],
subBreakerInfo: this.props.existedSubBreakersData[this.props.navigation.getParam('mcbIndex')],
};
setDataState = () => {
this.setState({
mcbLinkInfo: this.props.existedMcbLinksData[this.props.navigation.getParam('mcbIndex')],
subBreakerInfo: this.props.existedSubBreakersData[this.props.navigation.getParam('mcbIndex')],
});
};
componentDidMount = () => {
this.setDataState();
};
componentDidUpdate = (prevProps, prevState) => {
if (
prevProps.existedMcbLinksData !== this.props.existedMcbLinksData ||
......@@ -40,7 +43,6 @@ class McbLinkSettingScreen extends React.Component {
this.setDataState();
}
};
renderList = (item, subIndex) => {
const mcbIndex = this.props.navigation.getParam('mcbIndex');
return (
......
......@@ -60,7 +60,7 @@ class SmartMeterDetailScreen extends Component {
await this.props.getCurrentSelectedData(this.deviceId, true);
await this.props.getTimers();
this.getDataInterval = setInterval(() => this.props.getCurrentSelectedData(this.deviceId), 6000);
// this.getDataInterval = setInterval(() => this.props.getCurrentSelectedData(this.deviceId), 6000);
};
componentDidMount = async () => {
......@@ -85,15 +85,15 @@ class SmartMeterDetailScreen extends Component {
this.setSubBreakersState();
}
if (prevProps.isFocused !== this.props.isFocused) {
if (this.props.isFocused === true) {
clearInterval(this.getDataInterval);
this.getDataInterval = setInterval(() => this.props.getCurrentSelectedData(this.deviceId), 6000);
}
// if (this.props.isFocused === true) {
// clearInterval(this.getDataInterval);
// this.getDataInterval = setInterval(() => this.props.getCurrentSelectedData(this.deviceId), 6000);
// }
// when not focud this page
if (this.props.isFocused === false) {
this._mcbLinksListMounted = false;
clearInterval(this.getDataInterval);
}
// if (this.props.isFocused === false) {
// this._mcbLinksListMounted = false;
// clearInterval(this.getDataInterval);
// }
}
if (prevProps.shadow !== this.props.shadow) {
this.setState({
......@@ -110,11 +110,11 @@ class SmartMeterDetailScreen extends Component {
};
handleToggle = async value => {
clearInterval(this.getDataInterval);
// clearInterval(this.getDataInterval);
this.setState({ isWaiting: true });
await this.props.setMainStatus(value);
this.setState({ isWaiting: false });
this.getDataInterval = setInterval(() => this.props.getCurrentSelectedData(this.deviceId), 6000);
// this.getDataInterval = setInterval(() => this.props.getCurrentSelectedData(this.deviceId), 6000);
};
componentWillUnmount = () => {
......@@ -256,11 +256,11 @@ class SmartMeterDetailScreen extends Component {
const renderSubBreaker = (subBreaker, indexSubBreakers) => {
const handleOnPressSubBreakerSwitch = async value => {
clearInterval(this.getDataInterval);
// clearInterval(this.getDataInterval);
this.setState({ isWaiting: true });
await this.props.setSubBreakerStatus(value, indexMcbLinks, indexSubBreakers);
this.setState({ isWaiting: false });
this.getDataInterval = setInterval(() => this.props.getCurrentSelectedData(this.deviceId), 6000);
// this.getDataInterval = setInterval(() => this.props.getCurrentSelectedData(this.deviceId), 6000);
};
return (
......
......@@ -84,7 +84,6 @@ class SmartMeterScreen extends PureComponent {
const { isLoading, error } = this.props;
const { data } = this.state;
// !error ? (
return (
<View style={[theme.container]}>
<View style={theme.containerWithPadding}>
......@@ -130,11 +129,6 @@ class SmartMeterScreen extends PureComponent {
/>
</View>
);
// ) : (
// <View>
// <Text>{'Something went wrong ' + error}</Text>
// </View>
// );
}
}
......
import ApolloClient from 'apollo-boost';
// import ApolloClient from 'apollo-boost';
import { ApolloClient } from 'apollo-client';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { ApolloLink, split, from } from 'apollo-link';
import { HttpLink } from 'apollo-link-http';
import { WebSocketLink } from 'apollo-link-ws';
import { getMainDefinition } from 'apollo-utilities';
import gql from 'graphql-tag';
import { setContext } from 'apollo-link-context';
import AsyncStorage from '@react-native-community/async-storage';
// import rootStore from '../../reduxStore';
// import { getAllMainDeviceInfoAction } from '../../reduxStore/actions/allMainDeviceAction';
const BASE_URL = 'https://gqlv1.nexpie.io';
const BASE_URL = 'gqlv2.nexpie.io';
const client = new ApolloClient({
uri: BASE_URL,
request: async operation => {
const token = await AsyncStorage.getItem('token');
operation.setContext({
headers: {
authorization: token ? `Bearer ${token}` : '',
},
});
let T = null;
const getToken = async () => (T = await AsyncStorage.getItem('token'));
getToken();
/*-------------------------------------------------------------------------*/
const wsLink = new WebSocketLink({
uri: `wss://${BASE_URL}/graphql`,
options: {
reconnect: true,
connectionParams: {
headers: { Authorization: `Bearer ${T}` },
},
},
});
const setAuthorizationLink = setContext(async () => {
const token = await AsyncStorage.getItem('token');
return {
headers: { authorization: token ? `Bearer ${token}` : '' },
};
});
const httpLink = new HttpLink({ uri: `https://${BASE_URL}` });
const link = split(
({ query }) => {
const definition = getMainDefinition(query);
return definition.kind === 'OperationDefinition' && definition.operation === 'subscription';
},
wsLink,
from([setAuthorizationLink, httpLink])
);
const client = new ApolloClient({
link,
cache: new InMemoryCache(),
});
//https://www.apollographql.com/docs/react/api/apollo-client/
......@@ -35,6 +70,51 @@ const apolloMutation = async (mutation, variables) => {
});
};
// const apolloSubscription = async (query, queryVariables, subscribe, subscribeVariables) => {
// const queryData = client.watchQuery({
// query: query,
// variables: queryVariables,
// fetchPolicy: 'cache-and-network',
// errorPolicy: 'all',
// });
// console.log('queryData', queryData.subscribeToMore);
// const subscribeToNewShadow = subscribeToMore => {
// return subscribeToMore({
// document: subscribe,
// variables: subscribeVariables,
// updateQuery: (prev, { subscriptionData }) => {
// console.log(prev);
// console.log(subscriptionData);
// },
// });
// };
// // console.log(subscribeToNewShadow(queryData));
// return await subscribeToNewShadow(queryData.subscribeToMore);
// };
// const apolloSubscription = async (subscribe, subscribeVariables) => {
// const queryData = client.watchQuery({
// query: subscribe,
// variables: subscribeVariables,
// errorPolicy: 'all',
// });
// let tempData = null;
// queryData.subscribeToMore({
// document: SUBSCRIBE_SHADOW,
// variables: subscribeVariables,
// updateQuery: (prev, { subscriptionData }) => {
// console.log(prev);
// console.log(subscriptionData);
// tempData = { ...prev, subscriptionData };
// },
// });
// return tempData;
// };
export { client, apolloQuery, apolloMutation };
/*----------------------------------------------------------------- */
......@@ -42,8 +122,7 @@ export { client, apolloQuery, apolloMutation };
const READ_SHADOW = gql`
query($deviceid: String!) {
shadow(deviceid: $deviceid) {
deviceid
value
data
}
}
`;
......@@ -51,11 +130,19 @@ const READ_SHADOW = gql`
const WRITE_SHADOW = gql`
mutation($deviceid: String!, $data: JSON!) {
writeShadow(deviceid: $deviceid, value: $data) {
deviceid
value
data
}
}
`;
const SUBSCRIBE_SHADOW = gql`
subscription($deviceid: String!) {
shadowUpdated(deviceid: $deviceid) {
data
}
}
`;
const QUERY_DEVICE_BY_TAG = gql`
query($tag: String!) {
device(tag: $tag) {
......@@ -63,4 +150,16 @@ const QUERY_DEVICE_BY_TAG = gql`
}
}
`;
export { READ_SHADOW, WRITE_SHADOW, QUERY_DEVICE_BY_TAG };
export { READ_SHADOW, WRITE_SHADOW, QUERY_DEVICE_BY_TAG, SUBSCRIBE_SHADOW };
// const client = new ApolloClient({
// link,
// // request: async operation => {
// // const token = await AsyncStorage.getItem('token');
// // operation.setContext({
// // headers: {
// // authorization: token ? `Bearer ${token}` : '',
// // },
// // });
// // },
// });
......@@ -10,6 +10,28 @@
ts-invariant "^0.4.4"
tslib "^1.10.0"
"@apollo/react-components@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@apollo/react-components/-/react-components-3.1.1.tgz#dde560f0296318d230a5e73b9b450a881baace29"
integrity sha512-ozoq3XkHZKXrLQUOTZlbbPg9SvZryPQCRhTl+WJZu75ysaAKbwl6iVt+emBymZ5/eNXSUSdxqnOCX281sFLRRw==
dependencies:
"@apollo/react-common" "^3.1.1"
"@apollo/react-hooks" "^3.1.1"
prop-types "^15.7.2"
ts-invariant "^0.4.4"
tslib "^1.10.0"
"@apollo/react-hoc@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@apollo/react-hoc/-/react-hoc-3.1.1.tgz#e02ee62792924a13b8e4e023899fdb74333060f8"
integrity sha512-j6ITPSFmZnaw+tWzjqh25Ib2jBzOPpyBFsh1u0Ep4oJWFhCHwGLFAns0I6aAWP8a+3R0P7ZarwEVy56ylKG58w==
dependencies:
"@apollo/react-common" "^3.1.1"
"@apollo/react-components" "^3.1.1"
hoist-non-react-statics "^3.3.0"
ts-invariant "^0.4.4"
tslib "^1.10.0"
"@apollo/react-hooks@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@apollo/react-hooks/-/react-hooks-3.1.1.tgz#8e5a0f281a9778aaf17496ad38a178d23375077c"
......@@ -1635,7 +1657,15 @@ apollo-client@^2.6.4:
tslib "^1.9.3"
zen-observable "^0.8.0"
apollo-link-error@^1.0.3:
apollo-link-context@^1.0.19:
version "1.0.19"
resolved "https://registry.yarnpkg.com/apollo-link-context/-/apollo-link-context-1.0.19.tgz#3c9ba5bf75ed5428567ce057b8837ef874a58987"
integrity sha512-TUi5TyufU84hEiGkpt+5gdH5HkB3Gx46npNfoxR4of3DKBCMuItGERt36RCaryGcU/C3u2zsICU3tJ+Z9LjFoQ==
dependencies:
apollo-link "^1.2.13"
tslib "^1.9.3"
apollo-link-error@^1.0.3, apollo-link-error@^1.1.12:
version "1.1.12"
resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.1.12.tgz#e24487bb3c30af0654047611cda87038afbacbf9"
integrity sha512-psNmHyuy3valGikt/XHJfe0pKJnRX19tLLs6P6EHRxg+6q6JMXNVLYPaQBkL0FkwdTCB0cbFJAGRYCBviG8TDA==
......@@ -1653,7 +1683,7 @@ apollo-link-http-common@^0.2.15:
ts-invariant "^0.4.0"
tslib "^1.9.3"
apollo-link-http@^1.3.1:
apollo-link-http@^1.3.1, apollo-link-http@^1.5.16:
version "1.5.16"
resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.16.tgz#44fe760bcc2803b8a7f57fc9269173afb00f3814"
integrity sha512-IA3xA/OcrOzINRZEECI6IdhRp/Twom5X5L9jMehfzEo2AXdeRwAMlH5LuvTZHgKD8V1MBnXdM6YXawXkTDSmJw==
......@@ -1662,6 +1692,14 @@ apollo-link-http@^1.3.1:
apollo-link-http-common "^0.2.15"
tslib "^1.9.3"
apollo-link-ws@^1.0.19:
version "1.0.19"
resolved "https://registry.yarnpkg.com/apollo-link-ws/-/apollo-link-ws-1.0.19.tgz#dfa871d4df883a8777c9556c872fc892e103daa5"
integrity sha512-mRXmeUkc55ixOdYRtfq5rq3o9sboKghKABKroDVhJnkdS56zthBEWMAD+phajujOUbqByxjok0te8ABqByBdeQ==
dependencies:
apollo-link "^1.2.13"
tslib "^1.9.3"
apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.13:
version "1.2.13"
resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.13.tgz#dff00fbf19dfcd90fddbc14b6a3f9a771acac6c4"
......@@ -1960,6 +1998,11 @@ babel-runtime@^6.22.0:
core-js "^2.4.0"
regenerator-runtime "^0.11.0"
backo2@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
integrity sha1-MasayLEpNjRj41s+u2n038+6eUc=
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
......@@ -3090,7 +3133,7 @@ event-target-shim@^5.0.0, event-target-shim@^5.0.1:
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
eventemitter3@^3.0.0:
eventemitter3@^3.0.0, eventemitter3@^3.1.0:
version "3.1.2"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
......@@ -4229,7 +4272,7 @@ istanbul-reports@^2.2.6:
dependencies:
handlebars "^4.1.2"
iterall@^1.2.2:
iterall@^1.2.1, iterall@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7"
integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==
......@@ -7554,6 +7597,17 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
subscriptions-transport-ws@^0.9.16:
version "0.9.16"
resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.16.tgz#90a422f0771d9c32069294c08608af2d47f596ec"
integrity sha512-pQdoU7nC+EpStXnCfh/+ho0zE0Z+ma+i7xvj7bkXKb1dvYHSZxgRPaU6spRP+Bjzow67c/rRDoix5RT0uU9omw==
dependencies:
backo2 "^1.0.2"
eventemitter3 "^3.1.0"
iterall "^1.2.1"
symbol-observable "^1.0.4"
ws "^5.2.0"
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
......@@ -7578,7 +7632,7 @@ symbol-observable@1.0.1:
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=
symbol-observable@^1.0.2, symbol-observable@^1.2.0:
symbol-observable@^1.0.2, symbol-observable@^1.0.4, symbol-observable@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment