diff --git a/ios/Podfile.lock b/ios/Podfile.lock index d99a26faf..890ea09e7 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -360,7 +360,7 @@ DEPENDENCIES: - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: - trunk: + https://github.com/cocoapods/specs.git: - AppCenter - AppCenterReactNativeShared - boost-for-react-native @@ -523,4 +523,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 4faf3202c73803d0ba69b4aaf79ce8642ecf11b2 -COCOAPODS: 1.8.3 +COCOAPODS: 1.7.5 diff --git a/ios/eSteem.xcodeproj/project.pbxproj b/ios/eSteem.xcodeproj/project.pbxproj index 630d4c96c..46a708343 100644 --- a/ios/eSteem.xcodeproj/project.pbxproj +++ b/ios/eSteem.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ 4D1363A2D0804E3EA7132027 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 420ABF9795564845A0963C27 /* Feather.ttf */; }; 54D038BB7E4B4CA0805EF769 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 93B182C6FFA44610AB188D7C /* Entypo.ttf */; }; 58190B3C23294814000EA0E1 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58190B3B23294814000EA0E1 /* StoreKit.framework */; }; - 58190B582329808D000EA0E1 /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58190B572329807B000EA0E1 /* libRealmReact.a */; }; 588019272355C26C008397D1 /* AppCenter-Config.plist in Resources */ = {isa = PBXBuildFile; fileRef = 588019232355C26B008397D1 /* AppCenter-Config.plist */; }; 588A5055232A3A4C00FC1361 /* Sansation_Bold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 588A504E232A3A4B00FC1361 /* Sansation_Bold.ttf */; }; 588A5056232A3A4C00FC1361 /* RobotoMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 588A5050232A3A4B00FC1361 /* RobotoMono-Regular.ttf */; }; @@ -32,7 +31,6 @@ 588A5058232A3A4C00FC1361 /* Sansation_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 588A5052232A3A4C00FC1361 /* Sansation_Regular.ttf */; }; 588A5059232A3A4C00FC1361 /* Roboto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 588A5053232A3A4C00FC1361 /* Roboto.ttf */; }; 588A505A232A3A4C00FC1361 /* Roboto-medium.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 588A5054232A3A4C00FC1361 /* Roboto-medium.ttf */; }; - 58F630102350580B0017C953 /* libRealmJS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58F6300F2350580B0017C953 /* libRealmJS.a */; }; 60B4658C6F794BF28A644ADC /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4EB466C53BAE4EDC904357B3 /* FontAwesome5_Solid.ttf */; }; 834D70F2C64AF4A71AFB8536 /* libPods-eSteemTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FEBCC53EBF278472CC890AA8 /* libPods-eSteemTests.a */; }; 8739625C16E2FD1D46235BB0 /* libPods-eSteem-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 926635867AC7C716988E74B7 /* libPods-eSteem-tvOS.a */; }; @@ -65,13 +63,6 @@ remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7; remoteInfo = "eSteem-tvOS"; }; - 58190B562329807B000EA0E1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 58190B512329807B000EA0E1 /* RealmReact.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = F60690131CA2766F0003FB26; - remoteInfo = RealmReact; - }; 588A5069232A497100FC1361 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 588A5064232A497100FC1361 /* ReactNativeConfig.xcodeproj */; @@ -117,7 +108,6 @@ 58190B3B23294814000EA0E1 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; 58190B3D23294823000EA0E1 /* eSteem.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = eSteem.entitlements; path = eSteem/eSteem.entitlements; sourceTree = ""; }; 58190B4723294D1D000EA0E1 /* libreact-native-config.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libreact-native-config.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 58190B512329807B000EA0E1 /* RealmReact.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RealmReact.xcodeproj; path = "../node_modules/realm/react-native/ios/RealmReact.xcodeproj"; sourceTree = ""; }; 588019232355C26B008397D1 /* AppCenter-Config.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "AppCenter-Config.plist"; sourceTree = ""; }; 588A504E232A3A4B00FC1361 /* Sansation_Bold.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = Sansation_Bold.ttf; path = ../src/assets/Fonts/Sansation_Bold.ttf; sourceTree = ""; }; 588A5050232A3A4B00FC1361 /* RobotoMono-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "RobotoMono-Regular.ttf"; path = "../src/assets/Fonts/RobotoMono-Regular.ttf"; sourceTree = ""; }; @@ -164,8 +154,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 58F630102350580B0017C953 /* libRealmJS.a in Frameworks */, - 58190B582329808D000EA0E1 /* libRealmReact.a in Frameworks */, 58190B3C23294814000EA0E1 /* StoreKit.framework in Frameworks */, 350AB4A00BAFD4D99C09E484 /* libPods-eSteem.a in Frameworks */, ); @@ -269,14 +257,6 @@ name = Resources; sourceTree = ""; }; - 58190B522329807B000EA0E1 /* Products */ = { - isa = PBXGroup; - children = ( - 58190B572329807B000EA0E1 /* libRealmReact.a */, - ); - name = Products; - sourceTree = ""; - }; 588A5065232A497100FC1361 /* Products */ = { isa = PBXGroup; children = ( @@ -298,7 +278,6 @@ isa = PBXGroup; children = ( 588A5064232A497100FC1361 /* ReactNativeConfig.xcodeproj */, - 58190B512329807B000EA0E1 /* RealmReact.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -483,10 +462,6 @@ ProductGroup = 588A5065232A497100FC1361 /* Products */; ProjectRef = 588A5064232A497100FC1361 /* ReactNativeConfig.xcodeproj */; }, - { - ProductGroup = 58190B522329807B000EA0E1 /* Products */; - ProjectRef = 58190B512329807B000EA0E1 /* RealmReact.xcodeproj */; - }, ); projectRoot = ""; targets = ( @@ -499,13 +474,6 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 58190B572329807B000EA0E1 /* libRealmReact.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRealmReact.a; - remoteRef = 58190B562329807B000EA0E1 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 588A506A232A497100FC1361 /* libReactNativeConfig.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; diff --git a/ios/eSteem.xcworkspace/xcuserdata/mistik.xcuserdatad/UserInterfaceState.xcuserstate b/ios/eSteem.xcworkspace/xcuserdata/mistik.xcuserdatad/UserInterfaceState.xcuserstate index c0cb6ac83..9f7267666 100644 Binary files a/ios/eSteem.xcworkspace/xcuserdata/mistik.xcuserdatad/UserInterfaceState.xcuserstate and b/ios/eSteem.xcworkspace/xcuserdata/mistik.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/package.json b/package.json index b22b96466..0519de56f 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,6 @@ "react-navigation-stack": "^1.9.3", "react-navigation-tabs": "^2.5.5", "react-redux": "^7.1.1", - "realm": "^3.2.0", "redux": "^4.0.4", "redux-persist": "^6.0.0", "redux-promise": "^0.6.0", diff --git a/src/components/sideMenu/view/sideMenuView.js b/src/components/sideMenu/view/sideMenuView.js index cdabf4715..0b320902b 100644 --- a/src/components/sideMenu/view/sideMenuView.js +++ b/src/components/sideMenu/view/sideMenuView.js @@ -4,6 +4,7 @@ import { injectIntl } from 'react-intl'; import LinearGradient from 'react-native-linear-gradient'; import ActionSheet from 'react-native-actionsheet'; import VersionNumber from 'react-native-version-number'; +import { getStorageType } from '../../../realm/realm'; // Components import { IconButton } from '../../iconButton'; @@ -30,10 +31,16 @@ class SideMenuView extends Component { this.state = { menuItems: props.isLoggedIn ? MENU.AUTH_MENU_ITEMS : MENU.NO_AUTH_MENU_ITEMS, isAddAccountIconActive: false, + storageT: 'R', }; } // Component Life Cycles + componentDidMount() { + getStorageType().then(item => { + this.setState({ storageT: item }); + }); + } UNSAFE_componentWillReceiveProps(nextProps) { const { isLoggedIn, accounts } = this.props; @@ -86,7 +93,7 @@ class SideMenuView extends Component { render() { const { currentAccount, isLoggedIn, intl, handleLogout } = this.props; - const { menuItems, isAddAccountIconActive } = this.state; + const { menuItems, isAddAccountIconActive, storageT } = this.state; const { buildVersion, appVersion } = VersionNumber; return ( @@ -164,7 +171,7 @@ class SideMenuView extends Component { )} /> - {`v${appVersion}, ${buildVersion}`} + {`v${appVersion}, ${buildVersion}${storageT}`} (this.ActionSheet = o)} options={[ diff --git a/src/containers/transferContainer.js b/src/containers/transferContainer.js index e4562c6b0..149f3fc54 100644 --- a/src/containers/transferContainer.js +++ b/src/containers/transferContainer.js @@ -107,7 +107,7 @@ class TransferContainer extends Component { return validUsers; }; - _transferToAccount = (from, destination, amount, memo) => { + _transferToAccount = async (from, destination, amount, memo) => { const { pinCode, navigation, dispatch, intl } = this.props; let { currentAccount } = this.props; const { selectedAccount } = this.state; @@ -160,7 +160,7 @@ class TransferContainer extends Component { break; } if (!currentAccount.local) { - const realmData = getUserDataWithUsername(currentAccount.name); + const realmData = await getUserDataWithUsername(currentAccount.name); currentAccount.local = realmData[0]; } diff --git a/src/providers/steem/auth.js b/src/providers/steem/auth.js index 4b2c5676e..fb71de6bf 100644 --- a/src/providers/steem/auth.js +++ b/src/providers/steem/auth.js @@ -29,18 +29,22 @@ export const login = async (username, password, isPinCodeOpen) => { let authType = ''; // Get user account data from STEEM Blockchain const account = await getUser(username); + const isUserLoggedIn = await isLoggedInUser(username); + if (!account) { return Promise.reject(new Error('auth.invalid_username')); } - if (isLoggedInUser(username)) { + + if (isUserLoggedIn) { return Promise.reject(new Error('auth.already_logged')); } + // Public keys of user const publicKeys = { - activeKey: account.active.key_auths.map(x => x[0])[0], - memoKey: account.memo_key, - ownerKey: account.owner.key_auths.map(x => x[0])[0], - postingKey: account.posting.key_auths.map(x => x[0])[0], + activeKey: get(account, 'active.key_auths', []).map(x => x[0])[0], + memoKey: get(account, 'memo_key', ''), + ownerKey: get(account, 'owner.key_auths', []).map(x => x[0])[0], + postingKey: get(account, 'posting.key_auths', []).map(x => x[0])[0], }; // // Set private keys of user @@ -50,8 +54,11 @@ export const login = async (username, password, isPinCodeOpen) => { Object.keys(publicKeys).map(pubKey => { if (publicKeys[pubKey] === privateKeys[pubKey].createPublic().toString()) { loginFlag = true; - if (privateKeys.isMasterKey) authType = AUTH_TYPE.MASTER_KEY; - else authType = pubKey; + if (privateKeys.isMasterKey) { + authType = AUTH_TYPE.MASTER_KEY; + } else { + authType = pubKey; + } } }); @@ -105,7 +112,7 @@ export const login = async (username, password, isPinCodeOpen) => { export const loginWithSC2 = async (code, isPinCodeOpen) => { const scTokens = await getSCAccessToken(code); - await steemConnect.setAccessToken(scTokens.access_token); + await steemConnect.setAccessToken(get(scTokens, 'access_token', '')); const scAccount = await steemConnect.me(); const account = await getUser(scAccount.account.name); let avatar = ''; @@ -130,13 +137,14 @@ export const loginWithSC2 = async (code, isPinCodeOpen) => { memoKey: '', accessToken: '', }; + const isUserLoggedIn = await isLoggedInUser(account.name); if (isPinCodeOpen) { account.local = userData; } else { const resData = { pinCode: Config.DEFAULT_PIN, - accessToken: scTokens.access_token, + accessToken: get(scTokens, 'access_token', ''), }; const updatedUserData = await getUpdatedUserData(userData, resData); @@ -144,7 +152,7 @@ export const loginWithSC2 = async (code, isPinCodeOpen) => { account.local.avatar = avatar; } - if (isLoggedInUser(account.name)) { + if (isUserLoggedIn) { reject(new Error('auth.already_logged')); } @@ -157,7 +165,7 @@ export const loginWithSC2 = async (code, isPinCodeOpen) => { }; await setAuthStatus(authData); await setSCAccount(scTokens); - resolve({ ...account, accessToken: scTokens.access_token }); + resolve({ ...account, accessToken: get(scTokens, 'access_token', '') }); }) .catch(() => { reject(new Error('auth.unknow_error')); @@ -167,7 +175,7 @@ export const loginWithSC2 = async (code, isPinCodeOpen) => { export const setUserDataWithPinCode = async data => { try { - const result = getUserDataWithUsername(data.username); + const result = await getUserDataWithUsername(data.username); const userData = result[0]; if (!data.password) { @@ -178,13 +186,13 @@ export const setUserDataWithPinCode = async data => { get(userData, 'postingKey'); if (publicKey) { - data.password = decryptKey(publicKey, data.pinCode); + data.password = decryptKey(publicKey, get(data, 'pinCode')); } } const updatedUserData = getUpdatedUserData(userData, data); - await setPinCode(data.pinCode); + await setPinCode(get(data, 'pinCode')); await updateUserData(updatedUserData); return updatedUserData; @@ -197,15 +205,15 @@ export const updatePinCode = data => new Promise((resolve, reject) => { let currentUser = null; try { - setPinCode(data.pinCode); + setPinCode(get(data, 'pinCode')); getUserData().then(async users => { if (users && users.length > 0) { await users.forEach(userData => { if ( - userData.authType === AUTH_TYPE.MASTER_KEY || - userData.authType === AUTH_TYPE.ACTIVE_KEY || - userData.authType === AUTH_TYPE.MEMO_KEY || - userData.authType === AUTH_TYPE.POSTING_KEY + get(userData, 'authType', '') === AUTH_TYPE.MASTER_KEY || + get(userData, 'authType', '') === AUTH_TYPE.ACTIVE_KEY || + get(userData, 'authType', '') === AUTH_TYPE.MEMO_KEY || + get(userData, 'authType', '') === AUTH_TYPE.POSTING_KEY ) { const publicKey = get(userData, 'masterKey') || @@ -213,9 +221,12 @@ export const updatePinCode = data => get(userData, 'memoKey') || get(userData, 'postingKey'); - data.password = decryptKey(publicKey, data.oldPinCode); - } else if (userData.authType === AUTH_TYPE.STEEM_CONNECT) { - data.accessToken = decryptKey(userData.accessToken, data.oldPinCode); + data.password = decryptKey(publicKey, get(data, 'oldPinCode', '')); + } else if (get(userData, 'authType', '') === AUTH_TYPE.STEEM_CONNECT) { + data.accessToken = decryptKey( + get(userData, 'accessToken'), + get(data, 'oldPinCode', ''), + ); } const updatedUserData = getUpdatedUserData(userData, data); updateUserData(updatedUserData); @@ -234,30 +245,30 @@ export const updatePinCode = data => export const verifyPinCode = async data => { const pinHash = await getPinCode(); - const result = getUserDataWithUsername(data.username); + const result = await getUserDataWithUsername(data.username); const userData = result[0]; // This is migration for new pin structure, it will remove v2.2 if (!pinHash) { try { - if (userData.authType === AUTH_TYPE.STEEM_CONNECT) { - decryptKey(userData.accessToken, data.pinCode); + if (get(userData, 'authType', '') === AUTH_TYPE.STEEM_CONNECT) { + decryptKey(get(userData, 'accessToken'), get(data, 'pinCode')); } else { - decryptKey(userData.masterKey, data.pinCode); + decryptKey(userData.masterKey, get(data, 'pinCode')); } - await setPinCode(data.pinCode); + await setPinCode(get(data, 'pinCode')); } catch (error) { return Promise.reject(new Error('Invalid pin code, please check and try again')); } } - if (sha256(data.pinCode).toString() !== pinHash) { + if (sha256(get(data, 'pinCode')).toString() !== pinHash) { return Promise.reject(new Error('auth.invalid_pin')); } if (result.length > 0) { - if (userData.authType === AUTH_TYPE.STEEM_CONNECT) { - await refreshSCToken(userData, data.pinCode); + if (get(userData, 'authType', '') === AUTH_TYPE.STEEM_CONNECT) { + await refreshSCToken(userData, get(data, 'pinCode')); } } return true; @@ -313,33 +324,39 @@ const getPrivateKeys = (username, password) => { }; export const getUpdatedUserData = (userData, data) => { - const privateKeys = getPrivateKeys(userData.username, data.password); + const privateKeys = getPrivateKeys(get(userData, 'username', ''), get(data, 'password')); + return { - username: userData.username, - authType: userData.authType, + username: get(userData, 'username', ''), + authType: get(userData, 'authType', ''), accessToken: - userData.authType === AUTH_TYPE.STEEM_CONNECT - ? encryptKey(data.accessToken, data.pinCode) + get(userData, 'authType', '') === AUTH_TYPE.STEEM_CONNECT + ? encryptKey(data.accessToken, get(data, 'pinCode')) : '', masterKey: - userData.authType === AUTH_TYPE.MASTER_KEY ? encryptKey(data.password, data.pinCode) : '', + get(userData, 'authType', '') === AUTH_TYPE.MASTER_KEY + ? encryptKey(data.password, get(data, 'pinCode')) + : '', postingKey: - userData.authType === AUTH_TYPE.MASTER_KEY || userData.authType === AUTH_TYPE.POSTING_KEY - ? encryptKey(privateKeys.postingKey.toString(), data.pinCode) + get(userData, 'authType', '') === AUTH_TYPE.MASTER_KEY || + get(userData, 'authType', '') === AUTH_TYPE.POSTING_KEY + ? encryptKey(get(privateKeys, 'postingKey', '').toString(), get(data, 'pinCode')) : '', activeKey: - userData.authType === AUTH_TYPE.MASTER_KEY || userData.authType === AUTH_TYPE.ACTIVE_KEY - ? encryptKey(privateKeys.activeKey.toString(), data.pinCode) + get(userData, 'authType', '') === AUTH_TYPE.MASTER_KEY || + get(userData, 'authType', '') === AUTH_TYPE.ACTIVE_KEY + ? encryptKey(get(privateKeys, 'activeKey', '').toString(), get(data, 'pinCode')) : '', memoKey: - userData.authType === AUTH_TYPE.MASTER_KEY || userData.authType === AUTH_TYPE.MEMO_KEY - ? encryptKey(privateKeys.memoKey.toString(), data.pinCode) + get(userData, 'authType', '') === AUTH_TYPE.MASTER_KEY || + get(userData, 'authType', '') === AUTH_TYPE.MEMO_KEY + ? encryptKey(get(privateKeys, 'memoKey', '').toString(), get(data, 'pinCode')) : '', }; }; -const isLoggedInUser = username => { - const result = getUserDataWithUsername(username); +const isLoggedInUser = async username => { + const result = await getUserDataWithUsername(username); if (result.length > 0) { return true; } diff --git a/src/realm/realm.js b/src/realm/realm.js index 275f644d5..5ce7a5606 100644 --- a/src/realm/realm.js +++ b/src/realm/realm.js @@ -1,4 +1,3 @@ -import Realm from 'realm'; import sha256 from 'crypto-js/sha256'; import { AsyncStorage } from 'react-native'; @@ -9,117 +8,7 @@ const AUTH_SCHEMA = 'auth'; const DRAFT_SCHEMA = 'draft'; const SETTINGS_SCHEMA = 'settings'; const APPLICATION_SCHEMA = 'application'; - -const userSchema = { - name: USER_SCHEMA, - properties: { - username: { type: 'string' }, - avatar: { type: 'string' }, - authType: { type: 'string' }, - postingKey: { type: 'string' }, - activeKey: { type: 'string' }, - memoKey: { type: 'string' }, - masterKey: { type: 'string' }, - accessToken: { type: 'string' }, - }, -}; - -const scAccounts = { - name: SC_ACCOUNTS, - properties: { - username: { type: 'string', default: null }, - refreshToken: { type: 'string', default: null }, - expireDate: { type: 'string', default: null }, - }, -}; - -const draftSchema = { - name: DRAFT_SCHEMA, - properties: { - title: { type: 'string' }, - tags: { type: 'string' }, - body: { type: 'string' }, - username: { type: 'string' }, - }, -}; - -const settingsSchema = { - name: SETTINGS_SCHEMA, - properties: { - currency: { type: 'string', default: null }, - isDarkTheme: { type: 'bool', default: false }, - isPinCodeOpen: { type: 'bool', default: true }, - isDefaultFooter: { type: 'bool', default: true }, - language: { type: 'string', default: null }, - notification: { type: 'bool', default: true }, - nsfw: { type: 'string', default: null }, - server: { type: 'string', default: null }, - upvotePercent: { type: 'string', default: null }, - followNotification: { type: 'bool', default: true }, - voteNotification: { type: 'bool', default: true }, - commentNotification: { type: 'bool', default: true }, - mentionNotification: { type: 'bool', default: true }, - reblogNotification: { type: 'bool', default: true }, - transfersNotification: { type: 'bool', default: true }, - }, -}; - -const applicationSchema = { - name: APPLICATION_SCHEMA, - properties: { - isPushTokenSaved: { type: 'bool', default: false }, - isExistUser: { type: 'bool', default: false }, - }, -}; - -const authSchema = { - name: AUTH_SCHEMA, - properties: { - isLoggedIn: { type: 'bool', default: false }, - pinCode: { type: 'string' }, - currentUsername: { type: 'string' }, - }, -}; - -const realm = new Realm({ - path: 'esteem.realm', - schema: [userSchema, authSchema, draftSchema, settingsSchema, applicationSchema, scAccounts], - schemaVersion: 3, - migration: (oldRealm, newRealm) => { - if (oldRealm.schemaVersion < 3 && newRealm.schemaVersion > 2) { - const newObjects = newRealm.objects(SETTINGS_SCHEMA); - newObjects[0].isPinCodeOpen = true; - } - }, -}); - -const settings = realm.objects(SETTINGS_SCHEMA); - -if (Array.from(settings).length <= 0) { - realm.write(() => { - realm.create(SETTINGS_SCHEMA, { - language: '', - isDarkTheme: false, - currency: '', - notification: true, - server: '', - upvotePercent: '1', - nsfw: '0', - followNotification: true, - voteNotification: true, - commentNotification: true, - mentionNotification: true, - reblogNotification: true, - transfersNotification: true, - }); - }); -} - -export const convertToArray = realmObjectsArray => { - const copyOfJsonArray = Array.from(realmObjectsArray); - const jsonArray = JSON.parse(JSON.stringify(copyOfJsonArray)); - return jsonArray; -}; +const STORAGE_SCHEMA = 'storage'; export const getItemFromStorage = async key => { const data = await AsyncStorage.getItem(key); @@ -138,52 +27,6 @@ export const setItemToStorage = async (key, data) => { return false; }; -export const getAllData = async () => { - try { - const keys = await AsyncStorage.getAllKeys(); - - const isMigrated = [ - USER_SCHEMA, - SC_ACCOUNTS, - AUTH_SCHEMA, - DRAFT_SCHEMA, - SETTINGS_SCHEMA, - APPLICATION_SCHEMA, - ].some(el => keys.includes(el)); - if (!isMigrated) { - const users = convertToArray(realm.objects(USER_SCHEMA)); - const scAccount = convertToArray(realm.objects(SC_ACCOUNTS)); - const draft = convertToArray(realm.objects(DRAFT_SCHEMA)); - const auth = - convertToArray(realm.objects(AUTH_SCHEMA)).length === 1 - ? convertToArray(realm.objects(AUTH_SCHEMA))[0] - : convertToArray(realm.objects(AUTH_SCHEMA)); - const setting = - convertToArray(realm.objects(SETTINGS_SCHEMA)).length === 1 - ? convertToArray(realm.objects(SETTINGS_SCHEMA))[0] - : convertToArray(realm.objects(SETTINGS_SCHEMA)); - const application = - convertToArray(realm.objects(APPLICATION_SCHEMA)).length === 1 - ? convertToArray(realm.objects(APPLICATION_SCHEMA))[0] - : convertToArray(realm.objects(APPLICATION_SCHEMA)); - - const data = [ - [USER_SCHEMA, JSON.stringify(users)], - [SC_ACCOUNTS, JSON.stringify(scAccount)], - [AUTH_SCHEMA, JSON.stringify(auth)], - [DRAFT_SCHEMA, JSON.stringify(draft)], - [SETTINGS_SCHEMA, JSON.stringify(setting)], - [APPLICATION_SCHEMA, JSON.stringify(application)], - ]; - AsyncStorage.multiSet(data); - } - } catch (error) { - return error; - } -}; - -getAllData(); - // TODO: This is getting ALL user data, we should change this method with getUserDataWithUsername export const getUserData = async () => { try { @@ -197,8 +40,11 @@ export const getUserData = async () => { export const getUserDataWithUsername = async username => { try { const user = await getItemFromStorage(USER_SCHEMA); - const userObj = user.filter(u => u.username === username); - return userObj; + if (user) { + const userObj = user.filter(u => u.username === username); + return userObj; + } + return []; } catch (error) { return error; } @@ -207,7 +53,7 @@ export const getUserDataWithUsername = async username => { export const setUserData = async userData => { try { const account = await getUserDataWithUsername(userData.username); - const user = await getItemFromStorage(USER_SCHEMA); + const user = (await getItemFromStorage(USER_SCHEMA)) || []; if (account.length === 0) { user.push(userData); @@ -388,8 +234,8 @@ export const getPinCode = async () => { export const getPinCodeOpen = async () => { try { const setting = await getItemFromStorage(SETTINGS_SCHEMA); - if (setting[0]) { - return setting[0].isPinCodeOpen; + if (setting) { + return setting.isPinCodeOpen; } return false; } catch (error) { @@ -426,8 +272,8 @@ export const setTheme = async isDarkTheme => { export const getTheme = async () => { try { const setting = await getItemFromStorage(SETTINGS_SCHEMA); - if (setting[0]) { - return setting[0].isDarkTheme; + if (setting) { + return setting.isDarkTheme; } return false; } catch (error) { @@ -464,8 +310,8 @@ export const setUpvotePercent = async percent => { export const getUpvotePercent = async () => { try { const setting = await getItemFromStorage(SETTINGS_SCHEMA); - if (setting[0]) { - return setting[0].upvotePercent; + if (setting) { + return setting.upvotePercent; } return false; } catch (error) { @@ -476,8 +322,8 @@ export const getUpvotePercent = async () => { export const getNsfw = async () => { try { const setting = await getItemFromStorage(SETTINGS_SCHEMA); - if (setting[0]) { - return setting[0].nsfw; + if (setting) { + return setting.nsfw; } return false; } catch (error) { @@ -577,8 +423,8 @@ export const setCurrency = async currencyProps => { export const getLanguage = async () => { try { const setting = await getItemFromStorage(SETTINGS_SCHEMA); - if (setting[0]) { - return setting[0].language; + if (setting) { + return setting.language; } return false; } catch (error) { @@ -589,8 +435,8 @@ export const getLanguage = async () => { export const getServer = async () => { try { const setting = await getItemFromStorage(SETTINGS_SCHEMA); - if (setting[0]) { - return setting[0].server; + if (setting) { + return setting.server; } return false; } catch (error) { @@ -605,7 +451,23 @@ export const getSettings = async () => { if (setting) { return setting; } - return false; + const settingData = { + language: '', + isDarkTheme: false, + currency: '', + notification: true, + server: '', + upvotePercent: '1', + nsfw: '0', + followNotification: true, + voteNotification: true, + commentNotification: true, + mentionNotification: true, + reblogNotification: true, + transfersNotification: true, + }; + await setItemToStorage(SETTINGS_SCHEMA, settingData); + return settingData; } catch (error) { return error; } @@ -710,7 +572,7 @@ export const getSCAccount = async username => { try { const scAccountStr = await getItemFromStorage(SC_ACCOUNTS); const scAccount = scAccountStr.filter(u => u.username === username); - if (convertToArray(scAccount).length > 0) { + if (scAccount.length > 0) { return scAccount[0]; } return false; @@ -735,3 +597,15 @@ export const removeSCAccount = async username => { return error; } }; + +export const getStorageType = async () => { + try { + const storageType = await AsyncStorage.getItem(STORAGE_SCHEMA); + if (storageType !== null) { + return storageType; + } + return 'R'; + } catch (error) { + return error; + } +}; diff --git a/src/screens/application/container/applicationContainer.js b/src/screens/application/container/applicationContainer.js index 62b960a9a..abafbc44c 100644 --- a/src/screens/application/container/applicationContainer.js +++ b/src/screens/application/container/applicationContainer.js @@ -634,7 +634,7 @@ class ApplicationContainer extends Component { const accountData = await switchAccount(targetAccountUsername); - const realmData = getUserDataWithUsername(targetAccountUsername); + const realmData = await getUserDataWithUsername(targetAccountUsername); const _currentAccount = accountData; _currentAccount.username = accountData.name; [_currentAccount.local] = realmData; diff --git a/src/screens/pinCode/container/pinCodeContainer.js b/src/screens/pinCode/container/pinCodeContainer.js index f72d896ab..424de9ccf 100644 --- a/src/screens/pinCode/container/pinCodeContainer.js +++ b/src/screens/pinCode/container/pinCodeContainer.js @@ -207,21 +207,20 @@ class PinCodeContainer extends Component { verifyPinCode(pinData) .then(() => { this._savePinCode(pin); - const realmData = getUserDataWithUsername(currentAccount.name); - const _currentAccount = currentAccount; - _currentAccount.username = _currentAccount.name; - [_currentAccount.local] = realmData; - dispatch(updateCurrentAccount({ ..._currentAccount })); - dispatch(closePinCodeModal()); - if (callback) { - callback(pin, oldPinCode); - } - if (navigateTo) { - NavigationService.navigate({ - routeName: navigateTo, - params: navigateParams, - }); - } + getUserDataWithUsername(currentAccount.name).then(realmData => { + const _currentAccount = currentAccount; + _currentAccount.username = _currentAccount.name; + [_currentAccount.local] = realmData; + dispatch(updateCurrentAccount({ ..._currentAccount })); + dispatch(closePinCodeModal()); + if (callback) callback(pin, oldPinCode); + if (navigateTo) { + NavigationService.navigate({ + routeName: navigateTo, + params: navigateParams, + }); + } + }); }) .catch(err => { Alert.alert( @@ -246,7 +245,7 @@ class PinCodeContainer extends Component { const { intl, currentAccount, applicationPinCode } = this.props; const { isExistUser, pinCode } = this.state; - const realmData = getUserDataWithUsername(currentAccount.name); + const realmData = await getUserDataWithUsername(currentAccount.name); const userData = realmData[0]; // For exist users diff --git a/yarn.lock b/yarn.lock index c87d1c779..d3fdc471e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1890,20 +1890,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-back@^1.0.3, array-back@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" - integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= - dependencies: - typical "^2.6.0" - -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== - dependencies: - typical "^2.6.1" - array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -2273,14 +2259,6 @@ bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" -bl@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" - integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - bn.js@^4.11.8, bn.js@^4.4.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" @@ -2367,29 +2345,11 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - buffer-crc32@^0.2.13, buffer-crc32@~0.2.3: version "0.2.13" resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2511,11 +2471,6 @@ capture-exit@^2.0.0: dependencies: rsvp "^4.8.4" -caseless@~0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" - integrity sha1-cVuW6phBWTzDMGeSP17GDr2k99c= - caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" @@ -2707,15 +2662,6 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -command-line-args@^4.0.6: - version "4.0.7" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" - integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== - dependencies: - array-back "^2.0.0" - find-replace "^1.0.3" - typical "^2.6.1" - commander@2.20.0: version "2.20.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" @@ -2736,13 +2682,6 @@ commander@~2.13.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA== -commander@~2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4" - integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= - dependencies: - graceful-readlink ">= 1.0.0" - common-tags@^1.4.0: version "1.8.0" resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" @@ -2783,7 +2722,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -concat-stream@^1.4.6, concat-stream@^1.4.7, concat-stream@^1.6.0: +concat-stream@^1.4.7, concat-stream@^1.6.0: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -3053,59 +2992,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" - integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== - dependencies: - file-type "^5.2.0" - is-stream "^1.1.0" - tar-stream "^1.5.2" - -decompress-tarbz2@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" - integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== - dependencies: - decompress-tar "^4.1.0" - file-type "^6.1.0" - is-stream "^1.1.0" - seek-bzip "^1.0.5" - unbzip2-stream "^1.0.9" - -decompress-targz@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" - integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== - dependencies: - decompress-tar "^4.1.1" - file-type "^5.2.0" - is-stream "^1.1.0" - -decompress-unzip@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" - integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= - dependencies: - file-type "^3.8.0" - get-stream "^2.2.0" - pify "^2.3.0" - yauzl "^2.4.2" - -decompress@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d" - integrity sha1-eu3YVCflqS2s/lVnSnxQXpbQH50= - dependencies: - decompress-tar "^4.0.0" - decompress-tarbz2 "^4.0.0" - decompress-targz "^4.0.0" - decompress-unzip "^4.0.1" - graceful-fs "^4.1.10" - make-dir "^1.0.0" - pify "^2.3.0" - strip-dirs "^2.0.0" - dedent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb" @@ -3131,11 +3017,6 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.1.0.tgz#511a54fff405fc346f0240bb270a3e9533a31102" - integrity sha512-Q89Z26KAfA3lpPGhbF6XMfYAm3jIV3avViy6KOJ2JLzFbeWHOvPQUu5aSJIWXap3gDZC2y1eF5HXEPI2wGqgvw== - deepmerge@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.3.0.tgz#d3c47fd6f3a93d517b14426b0628a17b0125f5f7" @@ -3402,7 +3283,7 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -4132,13 +4013,6 @@ fbjs@^0.8.4, fbjs@^0.8.9: setimmediate "^1.0.5" ua-parser-js "^0.7.18" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - figures@^1.3.5, figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" @@ -4169,21 +4043,6 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-type@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" - integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= - -file-type@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" - integrity sha1-LdvqfHP/42No365J3DOMBYwritY= - -file-type@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" - integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== - file-uri-to-path@1, file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -4226,14 +4085,6 @@ find-parent-dir@^0.3.0: resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= -find-replace@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" - integrity sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A= - dependencies: - array-back "^1.0.4" - test-value "^2.1.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -4331,11 +4182,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" @@ -4345,15 +4191,6 @@ fs-extra@^1.0.0: jsonfile "^2.1.0" klaw "^1.0.0" -fs-extra@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - fs-extra@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" @@ -4435,14 +4272,6 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -4514,16 +4343,11 @@ globals@^11.0.1, globals@^11.1.0, globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.2.2" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= - growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -4703,15 +4527,6 @@ htmlparser2@^3.10.0, htmlparser2@^3.10.1: inherits "^2.0.1" readable-stream "^3.1.1" -http-basic@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-2.5.1.tgz#8ce447bdb5b6c577f8a63e3fa78056ec4bb4dbfb" - integrity sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s= - dependencies: - caseless "~0.11.0" - concat-stream "^1.4.6" - http-response-object "^1.0.0" - http-errors@1.7.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -4731,11 +4546,6 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" -http-response-object@^1.0.0, http-response-object@^1.0.1, http-response-object@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-1.1.0.tgz#a7c4e75aae82f3bb4904e4f43f615673b4d518c3" - integrity sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM= - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -4844,7 +4654,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== @@ -5082,11 +4892,6 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" -is-natural-number@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" - integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= - is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -6154,13 +5959,6 @@ lru-cache@^4.0.1, lru-cache@^4.1.2, lru-cache@^4.1.5: pseudomap "^1.0.2" yallist "^2.1.2" -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - make-dir@^2.0.0, make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -6700,7 +6498,7 @@ node-fetch@2.6.0, node-fetch@^2.2.0, node-fetch@^2.3.0, node-fetch@^2.5.0: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== -node-fetch@^1.0.1, node-fetch@^1.7.3: +node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== @@ -6713,11 +6511,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-machine-id@^1.1.10: - version "1.1.12" - resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" - integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== - node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" @@ -6750,22 +6543,6 @@ node-pre-gyp@^0.12.0: semver "^5.3.0" tar "^4" -node-pre-gyp@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz#df9ab7b68dd6498137717838e4f92a33fc9daa42" - integrity sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - nopt@^4.0.1, nopt@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -7288,17 +7065,12 @@ pegjs@^0.10.0: resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" integrity sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0= -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -7480,7 +7252,7 @@ process@^0.11.1: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -progress@^2.0.0, progress@^2.0.3: +progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -7579,7 +7351,7 @@ q@^1.4.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@^6.1.0, qs@^6.5.1: +qs@^6.5.1: version "6.9.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.0.tgz#d1297e2a049c53119cb49cca366adbbacc80b409" integrity sha512-27RP4UotQORTpmNQDX8BHPukOnBP3p1uUJY5UnDhaJB+rMt9iMsok724XL+UHU23bEFOHRMQ2ZhI99qOWUMGFA== @@ -7603,11 +7375,6 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -querystringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" - integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -8079,7 +7846,7 @@ readable-stream@3, readable-stream@^3.1.1: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -8092,28 +7859,6 @@ readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -realm@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/realm/-/realm-3.2.0.tgz#32aa87c98d9db5f0c289f4d235bd35813620a903" - integrity sha512-bAS16v0jVmmH2/o4kEdBETf+ywhIy9Bq4rXKBpGZ9egSBdlYBIOfO/dhDqeMaR+toEGrfMgvobDSiQYUgGiBBw== - dependencies: - command-line-args "^4.0.6" - decompress "^4.2.0" - deepmerge "2.1.0" - fs-extra "^4.0.3" - https-proxy-agent "^2.2.1" - ini "^1.3.5" - nan "^2.12.1" - node-fetch "^1.7.3" - node-machine-id "^1.1.10" - node-pre-gyp "^0.13.0" - progress "^2.0.3" - prop-types "^15.6.2" - request "^2.88.0" - stream-counter "^1.0.0" - sync-request "^3.0.1" - url-parse "^1.4.4" - realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -8281,7 +8026,7 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.87.0, request@^2.88.0: +request@^2.87.0: version "2.88.0" resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== @@ -8335,11 +8080,6 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" @@ -8562,13 +8302,6 @@ secp256k1@^3.5.2: nan "^2.14.0" safe-buffer "^5.1.2" -seek-bzip@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc" - integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= - dependencies: - commander "~2.8.1" - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -8995,11 +8728,6 @@ stream-buffers@~2.2.0: resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= -stream-counter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-counter/-/stream-counter-1.0.0.tgz#91cf2569ce4dc5061febcd7acb26394a5a114751" - integrity sha1-kc8lac5NxQYf6816yyY5SloRR1E= - strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -9114,13 +8842,6 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-dirs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" - integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== - dependencies: - is-natural-number "^4.0.1" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -9194,15 +8915,6 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== -sync-request@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-3.0.1.tgz#caa1235aaf889ba501076a1834c436830a82fb73" - integrity sha1-yqEjWq+Im6UBB2oYNMQ2gwqC+3M= - dependencies: - concat-stream "^1.4.7" - http-response-object "^1.0.1" - then-request "^2.0.1" - table@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -9225,19 +8937,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - tar@^4: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -9269,31 +8968,11 @@ test-exclude@^5.2.3: read-pkg-up "^4.0.0" require-main-filename "^2.0.0" -test-value@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" - integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= - dependencies: - array-back "^1.0.3" - typical "^2.6.0" - text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -then-request@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/then-request/-/then-request-2.2.0.tgz#6678b32fa0ca218fe569981bbd8871b594060d81" - integrity sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE= - dependencies: - caseless "~0.11.0" - concat-stream "^1.4.7" - http-basic "^2.5.1" - http-response-object "^1.1.0" - promise "^7.1.1" - qs "^6.1.0" - throat@^4.0.0, throat@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -9307,7 +8986,7 @@ through2@^2.0.0, through2@^2.0.1: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@^2.3.8: +through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -9341,11 +9020,6 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -9468,11 +9142,6 @@ typescript@^2.5.1: resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== -typical@^2.6.0, typical@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= - ua-parser-js@^0.7.18: version "0.7.20" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" @@ -9504,14 +9173,6 @@ ultron@~1.1.0: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -unbzip2-stream@^1.0.9: - version "1.3.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz#d156d205e670d8d8c393e1c02ebd506422873f6a" - integrity sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - underscore.string@^3.3.5: version "3.3.5" resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" @@ -9583,14 +9244,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -url-parse@^1.4.4: - version "1.4.7" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" - integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -9920,7 +9573,7 @@ xregexp@2.0.0: resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +xtend@^4.0.1, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -10021,14 +9674,6 @@ yargs@^9.0.0: y18n "^3.2.1" yargs-parser "^7.0.0" -yauzl@^2.4.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" - yazl@^2.4.1: version "2.5.1" resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.5.1.tgz#a3d65d3dd659a5b0937850e8609f22fffa2b5c35"