From a65086c1efb3208d2b1ef5ce07708e8a838b1ec9 Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Mon, 3 Jun 2019 08:41:42 +0200 Subject: [PATCH 01/55] Add missed font-weights of IBM Plex Mono font --- public/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/index.html b/public/index.html index 65b3ac971..6f41873ff 100644 --- a/public/index.html +++ b/public/index.html @@ -10,7 +10,7 @@ <% } %> - + From c3912dd5a44679cdcae49860e84ce0e55afd9a74 Mon Sep 17 00:00:00 2001 From: Dmitry Kostin Date: Tue, 11 Jun 2019 19:24:23 +1000 Subject: [PATCH 02/55] Change colour of statusbar text accordingly to page colour --- config.xml | 2 ++ src/App.vue | 6 ++++++ src/components/mobile/Page.vue | 11 +++++++++++ src/pages/mobile/SettingsSecurityCourseWrapper.vue | 1 + 4 files changed, 20 insertions(+) diff --git a/config.xml b/config.xml index ad5da6944..1ebad83ab 100644 --- a/config.xml +++ b/config.xml @@ -40,6 +40,7 @@ + @@ -51,6 +52,7 @@ + diff --git a/src/App.vue b/src/App.vue index b5be336be..37b413cd4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -19,6 +19,12 @@ import { mapGetters } from 'vuex'; export default { computed: mapGetters('modals', ['opened', 'hidePage', 'grayscalePage']), + mounted() { + if (process.env.IS_CORDOVA && !process.env.IS_IOS) { + window.StatusBar.overlaysWebView(true); + window.StatusBar.styleDefault(); + } + }, }; diff --git a/src/components/mobile/Page.vue b/src/components/mobile/Page.vue index 9f49104fb..4ca797e68 100644 --- a/src/components/mobile/Page.vue +++ b/src/components/mobile/Page.vue @@ -69,6 +69,17 @@ export default { }, hideTabBar: { type: Boolean }, }, + mounted() { + if (process.env.IS_CORDOVA) { + this.$watch(() => this.headerFill || this.fill, (fill) => { + if (['primary', 'alternative', 'dark'].includes(fill)) { + window.StatusBar.styleLightContent(); + } else { + window.StatusBar.styleDefault(); + } + }, { immediate: true }); + } + }, }; diff --git a/src/pages/mobile/SettingsSecurityCourseWrapper.vue b/src/pages/mobile/SettingsSecurityCourseWrapper.vue index 0f208032a..0b276d65a 100644 --- a/src/pages/mobile/SettingsSecurityCourseWrapper.vue +++ b/src/pages/mobile/SettingsSecurityCourseWrapper.vue @@ -4,6 +4,7 @@ class="settings-security-course-details" hide-tab-bar :class="name" + header-fill="alternative" > @@ -71,19 +77,23 @@ export default { writingHandEmoji, envelopeEmoji, sharingSupported: navigator.share || process.env.IS_CORDOVA, + sharedChecked: false, }; }, computed: mapGetters({ activeAccount: 'accounts/active' }), methods: { - share() { - if (process.env.IS_CORDOVA) { - window.plugins.socialsharing.share(this.activeAccount.address); - return; - } - navigator.share({ - title: 'My address', - text: this.activeAccount.address, - }); + async share() { + await (process.env.IS_CORDOVA + ? new Promise(resolve => window.plugins.socialsharing.shareWithOptions( + { message: this.activeAccount.address }, + ({ app }) => app && resolve(), + )) : navigator.share({ + title: 'My address', + text: this.activeAccount.address, + })); + + this.sharedChecked = true; + setTimeout(() => { this.sharedChecked = false; }, 500); }, }, }; @@ -92,8 +102,8 @@ export default { From e9f9c6e697170fddfc0b9aaabc2dea94b842c2b0 Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Thu, 20 Jun 2019 15:32:33 +0200 Subject: [PATCH 12/55] TransactionDetails: Remove unused attribute --- src/pages/mobile/TransactionDetails.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/mobile/TransactionDetails.vue b/src/pages/mobile/TransactionDetails.vue index 1dcf82705..c7bb48429 100644 --- a/src/pages/mobile/TransactionDetails.vue +++ b/src/pages/mobile/TransactionDetails.vue @@ -39,7 +39,6 @@ From 4d38b2af80f80c973b180190c9f4c5adab51a49d Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Thu, 20 Jun 2019 16:15:06 +0200 Subject: [PATCH 13/55] Fix rendering of pending transactions --- src/components/ListItemTransaction.vue | 2 +- src/pages/mobile/TransactionDetails.vue | 1 + src/pages/mobile/TransactionList.vue | 2 +- src/store/plugins/ui/observables.js | 22 +++++++++++++++------- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/components/ListItemTransaction.vue b/src/components/ListItemTransaction.vue index fffc37634..053f684d5 100644 --- a/src/components/ListItemTransaction.vue +++ b/src/components/ListItemTransaction.vue @@ -55,7 +55,7 @@ export default { props: { pending: { type: Boolean }, received: { type: Boolean }, - time: { type: Date, required: true }, + time: { type: Date, default: null }, peerId: { type: String, default: '' }, tx: { type: Object, required: true }, }, diff --git a/src/pages/mobile/TransactionDetails.vue b/src/pages/mobile/TransactionDetails.vue index c7bb48429..9a0f392cb 100644 --- a/src/pages/mobile/TransactionDetails.vue +++ b/src/pages/mobile/TransactionDetails.vue @@ -26,6 +26,7 @@ diff --git a/src/pages/mobile/TransactionList.vue b/src/pages/mobile/TransactionList.vue index 9f2a1de79..512d61740 100644 --- a/src/pages/mobile/TransactionList.vue +++ b/src/pages/mobile/TransactionList.vue @@ -101,7 +101,7 @@ export default { || this.direction === '' )), (tx) => { - const dateString = tx.time.toDateString(); + const dateString = tx.pending ? 'Pending transactions' : tx.time.toDateString(); return dateString === new Date().toDateString() ? 'Today' : dateString; }, ); diff --git a/src/store/plugins/ui/observables.js b/src/store/plugins/ui/observables.js index 6fbf876f8..ee4830d47 100644 --- a/src/store/plugins/ui/observables.js +++ b/src/store/plugins/ui/observables.js @@ -47,7 +47,11 @@ export default (store) => { }) => ({ ...otherTransaction, blockHash, - time: new Date(time || (await store.state.sdk.api.getMicroBlockHeaderByHash(blockHash)).time), + ...blockHash !== 'none' && { + time: new Date( + time || (await store.state.sdk.api.getMicroBlockHeaderByHash(blockHash)).time, + ), + }, tx: { ...otherTx, amount: BigNumber(amount).shiftedBy(-MAGNITUDE), @@ -133,14 +137,18 @@ export default (store) => { const getTransactionsByAddress = (address) => { if (!transactionRangeForAddress[address]) return []; const txs = Object.values(transactions) - .filter(({ tx }) => [tx.senderId, tx.accountId, tx.recipientId, tx.ownerId].includes(address)) + .filter(({ tx }) => [tx.senderId, tx.accountId, tx.recipientId, tx.ownerId] + .includes(address)); + const minedTxs = txs + .filter(({ pending }) => !pending) .sort((a, b) => b.time - a.time); const { begin, end } = transactionRangeForAddress[address]; - const beginIdx = txs.findIndex(({ hash }) => hash === begin); - const endIdx = txs.findIndex(({ hash }) => hash === end); - return txs - .slice(beginIdx, endIdx - beginIdx + 1) - .map(tx => setTransactionFieldsRelatedToAddress(tx, address)); + const beginIdx = minedTxs.findIndex(({ hash }) => hash === begin); + const endIdx = minedTxs.findIndex(({ hash }) => hash === end); + return [ + ...txs.filter(({ pending }) => pending), + ...minedTxs.slice(beginIdx, endIdx - beginIdx + 1), + ].map(tx => setTransactionFieldsRelatedToAddress(tx, address)); }; const getTransactionList = (loadMore$) => { From aec795b9f5624981d7ce8c9882943757f48601ea Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Fri, 21 Jun 2019 12:28:34 +1000 Subject: [PATCH 14/55] Make AeLoader transparent --- src/components/AeLoader.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AeLoader.vue b/src/components/AeLoader.vue index 89108b2de..552943924 100644 --- a/src/components/AeLoader.vue +++ b/src/components/AeLoader.vue @@ -46,7 +46,7 @@ } .stop-start { - stop-color: #fff; + stop-color: rgba($color-primary, 0); } .stop-end { From d47e0d2d3a3a2d43f1705e1d51a82736b6894cfc Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Fri, 21 Jun 2019 14:27:26 +1000 Subject: [PATCH 15/55] Update input error state design --- src/components/AeInputWrapper.vue | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/components/AeInputWrapper.vue b/src/components/AeInputWrapper.vue index 4ca7871a1..310384881 100644 --- a/src/components/AeInputWrapper.vue +++ b/src/components/AeInputWrapper.vue @@ -94,6 +94,15 @@ export default { } } + &.error:not(.focus) { + background-color: $color-primary-positive-3; + + .ae-toolbar { + background-color: $color-primary-positive-1; + color: $color-white; + } + } + $states: ( error: $color-error, focus: $color-focus, From f358fe6fe47590a54deecc22f57ae3672583cbf1 Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Fri, 21 Jun 2019 17:56:02 +1000 Subject: [PATCH 16/55] Fix custom node onclick behaviour --- src/components/NetworkSwitcher.vue | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/NetworkSwitcher.vue b/src/components/NetworkSwitcher.vue index c593000a9..17d5453cf 100644 --- a/src/components/NetworkSwitcher.vue +++ b/src/components/NetworkSwitcher.vue @@ -6,14 +6,14 @@ :title="network.name" :subtitle="network.url" > - - + Date: Fri, 21 Jun 2019 11:20:23 +0200 Subject: [PATCH 17/55] Consistent usage of share API --- src/pages/mobile/Receive.vue | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/pages/mobile/Receive.vue b/src/pages/mobile/Receive.vue index fdfe1d983..b8e9d6019 100644 --- a/src/pages/mobile/Receive.vue +++ b/src/pages/mobile/Receive.vue @@ -87,10 +87,8 @@ export default { ? new Promise(resolve => window.plugins.socialsharing.shareWithOptions( { message: this.activeAccount.address }, ({ app }) => app && resolve(), - )) : navigator.share({ - title: 'My address', - text: this.activeAccount.address, - })); + )) + : navigator.share({ text: this.activeAccount.address })); this.sharedChecked = true; setTimeout(() => { this.sharedChecked = false; }, 500); From 76750d3f3905791de4068d5ab9fa86b320d8919c Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Fri, 21 Jun 2019 19:35:36 +1000 Subject: [PATCH 18/55] Add create a first ledger account button --- src/components/desktop/ConnectGuide.vue | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/components/desktop/ConnectGuide.vue b/src/components/desktop/ConnectGuide.vue index aa1e81b57..4f1ee09a8 100644 --- a/src/components/desktop/ConnectGuide.vue +++ b/src/components/desktop/ConnectGuide.vue @@ -76,6 +76,14 @@ /> Confirm your Ledger address + + + + +
From 384464ac2e91141ecf3773b1d8734174027526c0 Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Fri, 21 Jun 2019 11:13:55 +1000 Subject: [PATCH 19/55] Add notification on revoking remote connection --- src/pages/mobile/SettingsRemoteConnection.vue | 4 ++-- src/store/modules/mobile.js | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pages/mobile/SettingsRemoteConnection.vue b/src/pages/mobile/SettingsRemoteConnection.vue index c74045b67..331955630 100644 --- a/src/pages/mobile/SettingsRemoteConnection.vue +++ b/src/pages/mobile/SettingsRemoteConnection.vue @@ -31,7 +31,7 @@ diff --git a/src/store/modules/mobile.js b/src/store/modules/mobile.js index eb5914432..0a958f7fc 100644 --- a/src/store/modules/mobile.js +++ b/src/store/modules/mobile.js @@ -42,4 +42,14 @@ export default { state.readSecurityCourses.push(courseName); }, }, + + actions: { + removeFollower({ state: { followers }, commit, dispatch }, followerId) { + dispatch('modals/open', { + name: 'notification', + text: `Access was successfully revoked for ${followers[followerId].name}`, + }); + commit('removeFollower', followerId); + }, + }, }; From 706120a10ed5a8e6f612ceed38e7ee9f740ee41c Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Mon, 24 Jun 2019 09:26:44 +0200 Subject: [PATCH 20/55] Avoid ledger polling to get rid of annoying popups on the latest Windows --- src/components/desktop/ConnectGuide.vue | 4 ++-- src/store/plugins/ui/ledgerConnection.js | 10 ---------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/src/components/desktop/ConnectGuide.vue b/src/components/desktop/ConnectGuide.vue index 4f1ee09a8..ed1d64887 100644 --- a/src/components/desktop/ConnectGuide.vue +++ b/src/components/desktop/ConnectGuide.vue @@ -74,10 +74,10 @@ numerator="3" denominator="3" /> - Confirm your Ledger address + Create a first account by pressing the button below diff --git a/src/store/plugins/ui/ledgerConnection.js b/src/store/plugins/ui/ledgerConnection.js index a9835118b..f46a2db44 100644 --- a/src/store/plugins/ui/ledgerConnection.js +++ b/src/store/plugins/ui/ledgerConnection.js @@ -1,16 +1,6 @@ import TransportU2F from '@ledgerhq/hw-transport-u2f'; -import Ae from '@aeternity/ledger-app-api'; export default async (store) => { const isSupported = await TransportU2F.isSupported(); store.commit('setLedgerSupported', isSupported); - if (!isSupported) return; - - if (!store.state.accounts.list.some(({ source: { type } }) => type === 'ledger')) { - const transport = new TransportU2F(); - const ledgerAppApi = new Ae(transport); - // eslint-disable-next-line no-await-in-loop - while (await ledgerAppApi.getAppConfiguration().then(() => false, () => true)); - store.dispatch('accounts/ledger/create'); - } }; From 6be32447c54f1916992da8a9994e1f37a9a03416 Mon Sep 17 00:00:00 2001 From: Dmitry Kostin Date: Fri, 21 Jun 2019 19:45:31 +1000 Subject: [PATCH 21/55] Add backup remainder icon --- src/components/IconGroup.vue | 19 +++++++++ .../mobile/MnemonicBackupWarning.vue | 40 +++++++++++++++++++ src/components/mobile/TabBar.vue | 17 ++++---- src/pages/mobile/Settings.vue | 10 +++-- src/pages/mobile/SettingsMnemonicConfirm.vue | 4 +- src/store/index.js | 4 +- src/store/modules/accounts/hdWallet.js | 6 +++ 7 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 src/components/IconGroup.vue create mode 100644 src/components/mobile/MnemonicBackupWarning.vue diff --git a/src/components/IconGroup.vue b/src/components/IconGroup.vue new file mode 100644 index 000000000..a3e2c8cbe --- /dev/null +++ b/src/components/IconGroup.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/mobile/MnemonicBackupWarning.vue b/src/components/mobile/MnemonicBackupWarning.vue new file mode 100644 index 000000000..68473c6a6 --- /dev/null +++ b/src/components/mobile/MnemonicBackupWarning.vue @@ -0,0 +1,40 @@ + + + + + diff --git a/src/components/mobile/TabBar.vue b/src/components/mobile/TabBar.vue index afebc0c37..8c9ffbecd 100644 --- a/src/components/mobile/TabBar.vue +++ b/src/components/mobile/TabBar.vue @@ -5,12 +5,12 @@
- æpps +
æpps
- Transfer +
Transfer
- Contacts +
Contacts
- - Settings + +
Settings
@@ -44,6 +44,7 @@ import { } from '../icons'; import AeIdenticon from '../AeIdenticon.vue'; import ConnectionStatus from './ConnectionStatus.vue'; +import MnemonicBackupWarning from './MnemonicBackupWarning.vue'; export default { components: { @@ -54,6 +55,7 @@ export default { Contacts, Settings, ConnectionStatus, + MnemonicBackupWarning, }, props: { showAccountSwitcher: { type: Boolean }, @@ -104,9 +106,8 @@ export default { color: $color-neutral-negative-3; } - .icon { - display: block; - margin: 0 auto 4px auto; + div { + margin-top: 4px; } .ae-identicon { diff --git a/src/pages/mobile/Settings.vue b/src/pages/mobile/Settings.vue index 56a07cec2..ccf15335e 100644 --- a/src/pages/mobile/Settings.vue +++ b/src/pages/mobile/Settings.vue @@ -57,9 +57,11 @@ title="Backup Recovery Phrase" class="mnemonic" > - - - + + + + + @@ -110,6 +112,7 @@ import ListItem from '../../components/ListItem.vue'; import ListItemCircle from '../../components/ListItemCircle.vue'; import ListItemAccount from '../../components/ListItemAccount.vue'; import ListItemSettingsReset from '../../components/ListItemSettingsReset.vue'; +import MnemonicBackupWarning from '../../components/mobile/MnemonicBackupWarning.vue'; import { Globe, LeftMore, Device, Grid, Key, Share, LockOpen, } from '../../components/icons'; @@ -123,6 +126,7 @@ export default { ListItemCircle, ListItemAccount, ListItemSettingsReset, + MnemonicBackupWarning, Globe, LeftMore, Device, diff --git a/src/pages/mobile/SettingsMnemonicConfirm.vue b/src/pages/mobile/SettingsMnemonicConfirm.vue index 190b419b1..cbec16b4d 100644 --- a/src/pages/mobile/SettingsMnemonicConfirm.vue +++ b/src/pages/mobile/SettingsMnemonicConfirm.vue @@ -114,7 +114,9 @@ export default { }, confirmPhrase() { this.error = this.selectedMnemonic !== this.mnemonic; - if (!this.error) this.$router.push({ name: 'settings-mnemonic-confirmed' }); + if (this.error) return; + this.$store.commit('accounts/hdWallet/markMnemonicAsBackedUp'); + this.$router.push({ name: 'settings-mnemonic-confirmed' }); }, }, }; diff --git a/src/store/index.js b/src/store/index.js index 6361d7fc6..f1dc73171 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -27,7 +27,7 @@ const store = new Vuex.Store({ ({ migrations, sdkUrl, addressBook, customNetworks, apps, cachedAppManifests, peerId, - accounts: { list, activeIdx, hdWallet: { encryptedWallet } = {} } = {}, + accounts: { list, activeIdx, hdWallet: { encryptedWallet, mnemonicBackedUp } = {} } = {}, mobile: { readSecurityCourses, followers } = {}, desktop: { showGuideOnStartup } = {}, }) => ({ @@ -50,7 +50,7 @@ const store = new Vuex.Store({ } }), activeIdx, - hdWallet: { encryptedWallet }, + hdWallet: { encryptedWallet, mnemonicBackedUp }, }, ...process.env.IS_MOBILE_DEVICE ? { apps, diff --git a/src/store/modules/accounts/hdWallet.js b/src/store/modules/accounts/hdWallet.js index 1b1161969..eb3f67b7a 100644 --- a/src/store/modules/accounts/hdWallet.js +++ b/src/store/modules/accounts/hdWallet.js @@ -25,6 +25,7 @@ export default { encryptedWallet: null, passwordDerivedKey: null, mnemonic: '', + mnemonicBackedUp: false, wallet: null, } : {}, @@ -48,6 +49,10 @@ export default { state.mnemonic = mnemonic; }, + markMnemonicAsBackedUp(state) { + state.mnemonicBackedUp = true; + }, + setWallet(state, wallet) { state.wallet = wallet; this.getters['accounts/getByType']('hd-wallet') @@ -93,6 +98,7 @@ export default { const passwordDerivedKey = await derivePasswordKey(password, salt); const aes = new AES(passwordDerivedKey); commit('setPasswordDerivedKey', passwordDerivedKey); + if (mnemonic) commit('markMnemonicAsBackedUp'); const newMnemonic = mnemonic || generateMnemonic(); commit('setMnemonic', newMnemonic); commit('setEncryptedWallet', { From e5d1a84400751cac9e9802b98041fae8dddf6089 Mon Sep 17 00:00:00 2001 From: Dmitry Kostin Date: Fri, 21 Jun 2019 19:45:51 +1000 Subject: [PATCH 22/55] Add backup remainder notification --- .../mobile/NotificationMnemonicBackup.vue | 61 +++++++++++++++++++ src/router/modals/index.js | 2 +- src/router/modals/mobile.js | 3 + src/router/modals/utils.js | 2 + src/store/plugins/ui/index.js | 2 + .../ui/notificationForMnemonicBackup.js | 15 +++++ 6 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 src/components/mobile/NotificationMnemonicBackup.vue create mode 100644 src/router/modals/utils.js create mode 100644 src/store/plugins/ui/notificationForMnemonicBackup.js diff --git a/src/components/mobile/NotificationMnemonicBackup.vue b/src/components/mobile/NotificationMnemonicBackup.vue new file mode 100644 index 000000000..da3f2159a --- /dev/null +++ b/src/components/mobile/NotificationMnemonicBackup.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/router/modals/index.js b/src/router/modals/index.js index e97d2ae1d..7b0234773 100644 --- a/src/router/modals/index.js +++ b/src/router/modals/index.js @@ -1,5 +1,6 @@ import { merge } from 'lodash-es'; import { registerModal } from '../../store/plugins/ui/modals'; +import { notificationOptions } from './utils'; import AlertModal from '../../components/AlertModal.vue'; import { QrCodeReader } from '../../components/async'; import Notification from '../../components/Notification.vue'; @@ -15,7 +16,6 @@ export default async () => { }, }); registerModal({ name: 'readQrCode', component: QrCodeReader, hidePage: true }); - const notificationOptions = { allowRedirect: true, dontGrayscalePage: true }; registerModal({ name: 'notification', component: Notification, ...notificationOptions }); registerModal({ name: 'notificationSpend', component: NotificationSpend, ...notificationOptions }); diff --git a/src/router/modals/mobile.js b/src/router/modals/mobile.js index e74d03222..9d8447deb 100644 --- a/src/router/modals/mobile.js +++ b/src/router/modals/mobile.js @@ -1,4 +1,5 @@ import { registerModal } from '../../store/plugins/ui/modals'; +import { notificationOptions } from './utils'; import AccountSwitcherModal from '../../components/mobile/AccountSwitcherModal.vue'; import SecurityCourseModal from '../../components/mobile/SecurityCourseModal.vue'; import MigratedBalanceModal from '../../components/mobile/MigratedBalanceModal.vue'; @@ -8,6 +9,7 @@ import ConfirmContractDeployModal from '../../components/mobile/ConfirmContractD import ConfirmSignModal from '../../components/mobile/ConfirmSignModal.vue'; import ConfirmSpendModal from '../../components/mobile/ConfirmSpendModal.vue'; import VaultSignModal from '../../components/mobile/VaultSignModal.vue'; +import NotificationMnemonicBackup from '../../components/mobile/NotificationMnemonicBackup.vue'; export default () => { registerModal({ name: 'accountSwitcher', component: AccountSwitcherModal }); @@ -19,4 +21,5 @@ export default () => { registerModal({ name: 'confirmSign', component: ConfirmSignModal, hidePage: true }); registerModal({ name: 'confirmSpend', component: ConfirmSpendModal, hidePage: true }); registerModal({ name: 'vaultSign', component: VaultSignModal, hidePage: true }); + registerModal({ name: 'notificationMnemonicBackup', component: NotificationMnemonicBackup, ...notificationOptions }); }; diff --git a/src/router/modals/utils.js b/src/router/modals/utils.js new file mode 100644 index 000000000..94f1a617f --- /dev/null +++ b/src/router/modals/utils.js @@ -0,0 +1,2 @@ +// eslint-disable-next-line import/prefer-default-export +export const notificationOptions = { allowRedirect: true, dontGrayscalePage: true }; diff --git a/src/store/plugins/ui/index.js b/src/store/plugins/ui/index.js index 0b1a0a1cc..afd9c7f8f 100644 --- a/src/store/plugins/ui/index.js +++ b/src/store/plugins/ui/index.js @@ -3,6 +3,7 @@ import connectionStatusTracker from './connectionStatusTracker'; import desktopGuide from './desktopGuide'; import ledgerConnection from './ledgerConnection'; import modals from './modals'; +import notificationForMnemonicBackup from './notificationForMnemonicBackup'; import notificationOnRemoteConnection from './notificationOnRemoteConnection'; import observables from './observables'; @@ -13,6 +14,7 @@ export default store => [ ...process.env.IS_MOBILE_DEVICE ? [ browserPathTracker, + notificationForMnemonicBackup, notificationOnRemoteConnection, ] : [ diff --git a/src/store/plugins/ui/notificationForMnemonicBackup.js b/src/store/plugins/ui/notificationForMnemonicBackup.js new file mode 100644 index 000000000..dfe179a2b --- /dev/null +++ b/src/store/plugins/ui/notificationForMnemonicBackup.js @@ -0,0 +1,15 @@ +export default (store) => { + store.subscribeAction(({ type }) => { + if ( + type !== 'accounts/hdWallet/unlockWallet' + || store.state.accounts.hdWallet.mnemonicBackedUp + ) return; + const unwatch = store.watch( + (state, { loggedIn }) => loggedIn, + () => { + store.dispatch('modals/open', { name: 'notificationMnemonicBackup' }); + unwatch(); + }, + ); + }); +}; From 83dad740b2c50ba5a60723dddbe4da36b4735ec0 Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Thu, 20 Jun 2019 13:02:40 +1000 Subject: [PATCH 23/55] Update README.md Co-Authored-By: Denis Davidyuk --- README.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 6e1e8619c..3df52ea5b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,12 @@ -# Base æpp +# Base æpp [![Build Status](https://api.travis-ci.org/aeternity/aepp-base.svg?branch=master)](https://api.travis-ci.org/aeternity/aepp-base) + +## How to get the Base æpp + +* [Google Play](https://play.google.com/store/apps/details?id=com.aeternity.base) +* [App Store](https://apps.apple.com/ru/app/base-%C3%A6pp-wallet/id1458655724) +* [Web version](https://base.aepps.com/) + +Also join our [Telegram channel](https://t.me/aeppbase) and our [Forum](https://forum.aeternity.com/t/base-aepp-wallet-we-would-like-your-feedback/3387). ## Build Setup @@ -12,17 +20,44 @@ npm run serve # serve with hot reload at https://localhost:8080/ npm run serve -- --https +# run on android emulator or device +npm run serve:android + +# run on ios emulator +npm run serve:ios + # build for production with minification npm run build # build for production and view the bundle analyzer report npm run build -- --report +# generate resources for cordova +npm run gen:cordova-resource + +# build for cordova +npm run build:cordova + +# build an app file +npm run build:ios + +# build an apk file +npm run build:android + # run unit tests npm run test:unit +# run e2e tests +npm run test:e2e + # run all tests npm test + +# build a storybook +npm run storybook:build + +# serve a storybook at http://localhost:6006 +npm run storybook:serve ``` ## Contributing @@ -35,16 +70,28 @@ We use the [gitflow](https://danielkummer.github.io/git-flow-cheatsheet/) workfl * Create a PR to master which then also has to be accepted. * Create a tag for this version and push the tag. * Also merge back the changes (like the version bump) into develop. -* The master branch is deployed to the [live environment](https://identity.aepps.com) by travis. +* The master branch has to be deployed to the [production environment](https://base.aepps.com/) manually. -## Live vs. Stage +## Deployment -We have a stage (develop) and a live (master) branch and environments where these branches will be deployed to. +We have a stage (develop) and a production (master) branch and environments where these branches will be deployed to. * [stage environment](https://stage-identity.aepps.com) -* [live environment](https://identity.aepps.com) +* [production environment](https://base.aepps.com/) ### stage -* Is used to see changes to the code in effect in a "real" environment without the fear of breaking the live environment. +* Is used to see changes to the code in effect in a "real" environment without the fear of breaking the production environment. + +### production +* Is the production environment, code lives in the "master" branch. + +### other branches +* Every branch is auto-deployed on https://`branch-name`.origin.aepps.com/, with each `/`, `.` symbol in a branch name replaced by `-`. + +### unsigned .apk and .app file +* Find `aetenity.app.tar.gz` file in the [latest release](https://github.com/aeternity/aepp-base/releases/latest) or download corresponding +version from a branch https://`branch-name`.origin.aepps.com/aetenity.app.tar.gz +* Find `aeternity.apk` file in the [latest release](https://github.com/aeternity/aepp-base/releases/latest) or download corresponding +version from a branch https://`branch-name`.origin.aepps.com/aeternity.apk -### live -* Is the live environment, code lives in the "master" branch +### bundle analyzer report +* Get bundle analyzer report on each domain by adding /report.html. Example [https://stage-identity.aepps.com/report.html](https://stage-identity.aepps.com/report.html). From 9908bd2857b8721929a09822491e76adce1dcf30 Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Wed, 26 Jun 2019 14:48:12 +1000 Subject: [PATCH 24/55] Update SDK to 4.1.0 --- package-lock.json | 774 +++++++++++++------------ package.json | 2 +- src/store/modules/accounts/hdWallet.js | 3 - src/store/modules/accounts/ledger.js | 3 - 4 files changed, 390 insertions(+), 392 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6cc0202b7..0ad2ef1b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@aeternity/aepp-sdk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@aeternity/aepp-sdk/-/aepp-sdk-4.0.1.tgz", - "integrity": "sha512-FGVJl9r4bgyJ/a1t5Is+1GPrtc0o/MC7R6z3GOkeVsYqGQjE2GLUHIKOAKJHyuZUVaUXTcbUiB5pECq1TP+/MA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@aeternity/aepp-sdk/-/aepp-sdk-4.1.0.tgz", + "integrity": "sha512-CRYEU6CggXpWhTbJzdusBV88P+jyOFSp2Cii2meLUO5Mq0CWoECh6nJZS/6pB2HPEvXgmUDBpVjidPSQP5TMVg==", "requires": { "@aeternity/bip39": "^0.1.0", "@babel/runtime": "^7.0.0-beta.46", @@ -105,9 +105,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -892,9 +892,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -1144,16 +1144,23 @@ "dev": true }, "@hapi/joi": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.0.3.tgz", - "integrity": "sha512-z6CesJ2YBwgVCi+ci8SI8zixoj8bGFn/vZb9MBPbSyoxsS2PnWYjHcyTM17VLK6tx64YVK38SDIh10hJypB+ig==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.0.tgz", + "integrity": "sha512-n6kaRQO8S+kepUTbXL9O/UOL788Odqs38/VOfoCrATDtTvyfiO3fgjlSRaNkHabpTLgM7qru9ifqXlXbXk8SeQ==", "dev": true, "requires": { "@hapi/address": "2.x.x", "@hapi/hoek": "6.x.x", + "@hapi/marker": "1.x.x", "@hapi/topo": "3.x.x" } }, + "@hapi/marker": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@hapi/marker/-/marker-1.0.0.tgz", + "integrity": "sha512-JOfdekTXnJexfE8PyhZFyHvHjt81rBFSAbTIRAhF2vv/2Y1JzoKsGqxH/GpZJoF7aEfYok8JVcAHmSz1gkBieA==", + "dev": true + }, "@hapi/topo": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.0.tgz", @@ -1216,9 +1223,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "through2": { @@ -1233,45 +1240,45 @@ } }, "@ledgerhq/devices": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-4.61.0.tgz", - "integrity": "sha512-ZBXtV4JFOSvxwfr9PwoAfOdh9Qb/nIPpMR69uG0BwCkz6KzFyJWinsJvf+wFBQmnxDJKcPz2eWrCEL/viQ0HOQ==", + "version": "4.63.2", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-4.63.2.tgz", + "integrity": "sha512-91kWtrAcGoAV5zNWBDTMF3gqwMBvyZBvDnSiOJ2Top3hZvHUrwLqb6HuA87bOwPDIWBnW4BVGWswy2VnYb/ueQ==", "requires": { - "@ledgerhq/errors": "^4.61.0", - "@ledgerhq/logs": "^4.61.0", + "@ledgerhq/errors": "^4.63.2", + "@ledgerhq/logs": "^4.62.0", "rxjs": "^6.5.2" } }, "@ledgerhq/errors": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-4.61.0.tgz", - "integrity": "sha512-sEbAF7H/0EL8WiQ+m2qaZFzIJjtrXUFaxHyI4J/FSgK3uszDAVcnXwetq7TFOswZtPS2u2g/5oa1/iuoNVKwXQ==" + "version": "4.63.2", + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-4.63.2.tgz", + "integrity": "sha512-NF4KkRQ2X1ZEmaxcCXUv0VNHaMqy/t/PXvii5IoZeNochQn56DlXcbgMzZ8HBpGQYTLdZuliT7RjKSZmUMjhrg==" }, "@ledgerhq/hw-transport": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-4.61.0.tgz", - "integrity": "sha512-jsITF3HAttITBVKZOEASeTSBENbnrhcZmyxhiI1ijRFqDSEAPp7LuttNnI1d99301/4dWZV9NSe40naBsCJHXQ==", + "version": "4.63.2", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-4.63.2.tgz", + "integrity": "sha512-WtejtJXyeDQe+ppiOvES2bxWaXkmHLxrwCt2cQzq2wvrH32AABE652isIxkJfUst0Q6p2QwCKO6YZN2PZiSRuQ==", "requires": { - "@ledgerhq/devices": "^4.61.0", - "@ledgerhq/errors": "^4.61.0", + "@ledgerhq/devices": "^4.63.2", + "@ledgerhq/errors": "^4.63.2", "events": "^3.0.0" } }, "@ledgerhq/hw-transport-u2f": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-4.61.0.tgz", - "integrity": "sha512-qQlELJcwdtheE2WmPPVZo43F+Pa1IppzsXID8j89VVjwAKk22uCI0a75pyPG3Of2H07BZVab+jqL3fxzPEMCPw==", + "version": "4.63.2", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-4.63.2.tgz", + "integrity": "sha512-IvsR1PBwSrmrg83gfmTXzcaFrC/txZScjbNYHEQ1JTv8cB5W+lt4Y2zwD4mrpArc7kRJvrYeJy4M2UJJQgkB3Q==", "requires": { - "@ledgerhq/errors": "^4.61.0", - "@ledgerhq/hw-transport": "^4.61.0", - "@ledgerhq/logs": "^4.61.0", + "@ledgerhq/errors": "^4.63.2", + "@ledgerhq/hw-transport": "^4.63.2", + "@ledgerhq/logs": "^4.62.0", "u2f-api": "0.2.7" } }, "@ledgerhq/logs": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-4.61.0.tgz", - "integrity": "sha512-AObEnA+tgzKEwY306i6FOT/hlc+zjF817Bty/IxG3f2wPJFRK9cJuD3Ijl4pfJP2pt7KubN4YbRGXREXhEsknQ==" + "version": "4.62.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-4.62.0.tgz", + "integrity": "sha512-f/XtWHzHxE4AJlB53vZllH/4gY3t7n1vNoGkjHFfu3keLmbyHWC1sGdG+lW9FRlToSLQuVotGIbm04SBn0vSIQ==" }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", @@ -1722,9 +1729,9 @@ } }, "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", + "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -1995,9 +2002,9 @@ "dev": true }, "@types/node": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.4.tgz", - "integrity": "sha512-j8YL2C0fXq7IONwl/Ud5Kt0PeXw22zGERt+HSSnwbKOJVsAGkEz3sFCYwaF9IOuoG1HOtE0vKCj6sXF7Q0+Vaw==", + "version": "12.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.10.tgz", + "integrity": "sha512-LcsGbPomWsad6wmMNv7nBLw7YYYyfdYcz6xryKYQhx89c3XXan+8Q6AJ43G5XDIaklaVkK3mE4fCb0SBvMiPSQ==", "dev": true }, "@types/normalize-package-data": { @@ -2339,9 +2346,9 @@ } }, "@vue/cli-service": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.8.0.tgz", - "integrity": "sha512-ipJF4RHjyLyLC4oLx+JM1Jk6tiIG0KjCFAqfOscQ44K4CdyS03oFMAUR+SZYy/UXKccMnoeY6Ld4YrGXSytQsg==", + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@vue/cli-service/-/cli-service-3.8.4.tgz", + "integrity": "sha512-OWKTPZN+Wk3gpd8ar6DsQWlpIFPCIULZuVsHarJXjlXpIx3FOleXzaT2QiDB+tprbTRZMfsMMZMt5b0nvacY9Q==", "dev": true, "requires": { "@intervolga/optimize-cssnano-plugin": "^1.0.5", @@ -2367,6 +2374,7 @@ "cssnano": "^4.1.10", "current-script-polyfill": "^1.0.0", "debug": "^4.1.1", + "default-gateway": "^5.0.2", "dotenv": "^7.0.0", "dotenv-expand": "^5.1.0", "escape-string-regexp": "^1.0.5", @@ -2455,9 +2463,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "parse-json": { @@ -2483,9 +2491,9 @@ } }, "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz", + "integrity": "sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ==", "dev": true }, "string-width": { @@ -2533,9 +2541,9 @@ }, "dependencies": { "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz", + "integrity": "sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ==", "dev": true } } @@ -3383,16 +3391,17 @@ "dev": true }, "autoprefixer": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz", - "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.0.tgz", + "integrity": "sha512-kuip9YilBqhirhHEGHaBTZKXL//xxGnzvsD0FtBQa6z+A69qZD6s/BAX9VzDF1i9VKDquTJDQaPLSEhOnL6FvQ==", "dev": true, "requires": { - "browserslist": "^4.5.4", - "caniuse-lite": "^1.0.30000957", + "browserslist": "^4.6.1", + "caniuse-lite": "^1.0.30000971", + "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.14", + "postcss": "^7.0.16", "postcss-value-parser": "^3.3.1" } }, @@ -3483,9 +3492,9 @@ "dev": true }, "babel-eslint": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz", - "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.2.tgz", + "integrity": "sha512-UdsurWPtgiPgpJ06ryUnuaSXC2s0WoSZnQmEpbAH65XZSdwowgN5MvyP7e88nW07FYXv72erVtpBkxyDVKhH1Q==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -3625,9 +3634,9 @@ } }, "babel-plugin-dynamic-import-node": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz", - "integrity": "sha512-fP899ELUnTaBcIzmrW7nniyqqdYWrWuJUyPWHxFa/c7r7hS6KC8FscNfLlBNIoPSc55kYMGEEKjPjJGCLbE1qA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", "dev": true, "requires": { "object.assign": "^4.1.0" @@ -3652,9 +3661,9 @@ "dev": true }, "babel-plugin-macros": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.6.0.tgz", - "integrity": "sha512-6hrXm6NIoSp+JiqhHZ6tUemhClnu//vjx9fAU5tkRCztTKxgiUpFpMDBX4yZiJIco7qkf0CPX2u4Ax3x6GCiUg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.6.1.tgz", + "integrity": "sha512-6W2nwiXme6j1n2erPOnmRiWfObUhWH7Qw1LMi9XZy8cj+KtESu3T6asZvtk5bMQQjX8te35o7CFueiSdL/2NmQ==", "dev": true, "requires": { "@babel/runtime": "^7.4.2", @@ -4212,9 +4221,9 @@ } }, "big-integer": { - "version": "1.6.43", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", - "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==", + "version": "1.6.44", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.44.tgz", + "integrity": "sha512-7MzElZPTyJ2fNvBkPxtFQ2fWIkVmuzw41+BZHSzpEq3ymB2MfeKp1+yXl/tS75xCx+WnyV+yb0kp+K1C3UNwmQ==", "dev": true }, "big.js": { @@ -4562,14 +4571,14 @@ } }, "browserslist": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.1.tgz", - "integrity": "sha512-1MC18ooMPRG2UuVFJTHFIAkk6mpByJfxCrnUyvSlu/hyQSFHMrlhM02SzNuCV+quTP4CKmqtOMAIjrifrpBJXQ==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.3.tgz", + "integrity": "sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000971", - "electron-to-chromium": "^1.3.137", - "node-releases": "^1.1.21" + "caniuse-lite": "^1.0.30000975", + "electron-to-chromium": "^1.3.164", + "node-releases": "^1.1.23" } }, "bs58": { @@ -4591,9 +4600,9 @@ } }, "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.0.tgz", + "integrity": "sha512-8zsjWrQkkBoLK6uxASk1nJ2SKv97ltiGDo6A3wA0/yRPz+CwmEyDo0hUrhIuukG2JHpAl3bvFIixw2/3Hi0DOg==", "dev": true, "requires": { "node-int64": "^0.4.0" @@ -4683,22 +4692,22 @@ "dev": true }, "cacache": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", - "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", + "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", "dev": true, "requires": { - "bluebird": "^3.5.3", + "bluebird": "^3.5.5", "chownr": "^1.1.1", "figgy-pudding": "^3.5.1", - "glob": "^7.1.3", + "glob": "^7.1.4", "graceful-fs": "^4.1.15", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", "move-concurrently": "^1.0.1", "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", + "rimraf": "^2.6.3", "ssri": "^6.0.1", "unique-filename": "^1.1.1", "y18n": "^4.0.0" @@ -4848,9 +4857,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000971", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz", - "integrity": "sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g==", + "version": "1.0.30000977", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000977.tgz", + "integrity": "sha512-RTXL32vdfAc2g9aoDL6vnBzbOO/3sM+T+YX4m7W9iFZnl3qIz7WYoZZpcZpALud8xq4+N56rnruX/NQy9HQu6A==", "dev": true }, "capture-exit": { @@ -5237,9 +5246,9 @@ } }, "yargs-parser": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.0.tgz", - "integrity": "sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -5315,9 +5324,9 @@ "dev": true }, "clipboardy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.0.0.tgz", - "integrity": "sha512-XbVjHMsss0giNUkp/tV/3eEAZe8i1fZTLzmPKqjE1RGIAWOTiF5D014f6R+g53ZAq0IK3cPrJXFvqE8eQjhFYQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.1.0.tgz", + "integrity": "sha512-2pzOUxWcLlXWtn+Jd6js3o12TysNOOVes/aQfg+MT/35vrxWzedHlLwyoJpXjsFKWm95BTNEcMGD9+a7mKzZkQ==", "dev": true, "requires": { "arch": "^2.1.1", @@ -5431,9 +5440,9 @@ } }, "color": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.1.tgz", - "integrity": "sha512-PvUltIXRjehRKPSy89VnDWFKY58xyhTLyxIg21vwQBI6qLwZNPmC8k3C1uytIgFKEpOIzN4y32iPm8231zFHIg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", "dev": true, "requires": { "color-convert": "^1.9.1", @@ -5971,9 +5980,9 @@ "dev": true }, "cordova-common": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.1.0.tgz", - "integrity": "sha512-J2MM1ioyLlBYdwdXH40OZL4hN7XEBOfurddKYifF4aTkb2PkbeM+KVORt53eyU+8ScA0QmRLuTG0EM55eLms0A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-3.2.0.tgz", + "integrity": "sha512-EvlQ6PirfR65hGDoQvsluW00uSS2MTVIRKQ3c1Xvsddx7D5T5JgF3fHWkGik/Y/8yNcpI0zI2NcJyie2z/ak2A==", "dev": true, "requires": { "ansi": "^0.3.1", @@ -5981,7 +5990,7 @@ "cross-spawn": "^6.0.5", "elementtree": "0.1.7", "endent": "^1.1.1", - "fs-extra": "^7.0.0", + "fs-extra": "^8.0.0", "glob": "^7.1.2", "minimatch": "^3.0.0", "plist": "^3.0.1", @@ -5992,9 +6001,9 @@ }, "dependencies": { "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.0.1.tgz", + "integrity": "sha512-W+XLrggcDzlle47X/XnS7FXrXu9sDo+Ze9zpndeBxdgv88FHLm1HtmkhEwavruS6koanBjp098rUpHs65EmG7A==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -6219,9 +6228,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "sharp": { @@ -6800,9 +6809,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "ramda": { @@ -6831,6 +6840,19 @@ "abab": "^2.0.0", "whatwg-mimetype": "^2.2.0", "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } } }, "date-fns": { @@ -6910,9 +6932,9 @@ "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" }, "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-5.0.2.tgz", + "integrity": "sha512-wXuT0q8T5vxQNecrTgz/KbU2lPUMRc98I9Y5dnH3yhFB3BGYqtADK4lhivLlG0OfjhmfKx1PGILG2jR4zjI+WA==", "dev": true, "requires": { "execa": "^1.0.0", @@ -7407,15 +7429,15 @@ "dev": true }, "ejs": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", - "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", + "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==", "dev": true }, "electron-to-chromium": { - "version": "1.3.143", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.143.tgz", - "integrity": "sha512-J9jOpxIljQZlV6GIP2fwAWq0T69syawU0sH3EW3O2Bgxquiy+veeIT5mBDRz+i3oHUSL1tvVgRKH3/4QiQh9Pg==", + "version": "1.3.173", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.173.tgz", + "integrity": "sha512-weH16m8as+4Fy4XJxrn/nFXsIqB7zkxERhvj/5YX2HE4HB8MCu98Wsef4E3mu0krIT27ic0bGsr+TvqYrUn6Qg==", "dev": true }, "elegant-spinner": { @@ -7442,9 +7464,9 @@ } }, "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", + "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", "dev": true, "requires": { "bn.js": "^4.4.0", @@ -7825,9 +7847,9 @@ } }, "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", + "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -7869,9 +7891,9 @@ "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "regexpp": { @@ -7917,9 +7939,9 @@ } }, "table": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.0.tgz", - "integrity": "sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.1.tgz", + "integrity": "sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==", "dev": true, "requires": { "ajv": "^6.9.1", @@ -8113,9 +8135,9 @@ } }, "eslint-plugin-import": { - "version": "2.17.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz", - "integrity": "sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.0.tgz", + "integrity": "sha512-PZpAEC4gj/6DEMMoU2Df01C5c50r7zdGIN52Yfi7CvvWaYssG7Jt5R9nFG5gmqodxNOz9vQS87xk6Izdtpdrig==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -8213,9 +8235,9 @@ } }, "eslint-plugin-vue": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.2.2.tgz", - "integrity": "sha512-CtGWH7IB0DA6BZOwcV9w9q3Ri6Yuo8qMjx05SmOGJ6X6E0Yo3y9E/gQ5tuNxg2dEt30tRnBoFTbvtmW9iEoyHA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-5.2.3.tgz", + "integrity": "sha512-mGwMqbbJf0+VvpGR5Lllq0PMxvTdrZ/ZPjmhkacrCHbubJeJOt+T6E3HUzAifa2Mxi7RSdJfC9HFpOeSYVMMIw==", "dev": true, "requires": { "vue-eslint-parser": "^5.0.0" @@ -8254,9 +8276,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "vue-eslint-parser": { @@ -9141,9 +9163,9 @@ } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, "flush-write-stream": { @@ -10056,13 +10078,13 @@ "dev": true }, "global": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", - "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", "dev": true, "requires": { "min-document": "^2.19.0", - "process": "~0.5.1" + "process": "^0.11.10" } }, "global-dirs": { @@ -10616,12 +10638,20 @@ "setprototypeof": "1.1.1", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", "dev": true }, "http-proxy": { @@ -10860,9 +10890,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -11028,9 +11058,9 @@ } }, "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", + "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -11105,6 +11135,18 @@ "requires": { "default-gateway": "^4.2.0", "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + } } }, "interpret": { @@ -11314,10 +11356,14 @@ "dev": true }, "is-dom": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.0.9.tgz", - "integrity": "sha1-SDgy1SlyBz3hK5/j9gMghw2oNw0=", - "dev": true + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", + "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", + "dev": true, + "requires": { + "is-object": "^1.0.1", + "is-window": "^1.0.2" + } }, "is-dotfile": { "version": "1.0.3", @@ -11427,6 +11473,12 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=", + "dev": true + }, "is-path-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.1.0.tgz", @@ -11581,6 +11633,12 @@ "integrity": "sha1-Fjnssb4DauxppUy7QBz77XEUq38=", "dev": true }, + "is-window": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", + "integrity": "sha1-LIlspT25feRdPDMTOmXYyfVjSA0=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -12967,17 +13025,6 @@ "xml-name-validator": "^3.0.0" }, "dependencies": { - "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "ws": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", @@ -13764,9 +13811,9 @@ } }, "loglevel": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.2.tgz", - "integrity": "sha512-Jt2MHrCNdtIe1W6co3tF5KXGRkzF+TYffiQstfXa04mrss9IKXzAAXYWak8LbZseAQY03sH2GzMCMU0ZOUc9bg==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz", + "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==", "dev": true }, "loose-envify": { @@ -13809,9 +13856,9 @@ } }, "macos-release": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.2.0.tgz", - "integrity": "sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==", "dev": true }, "make-dir": { @@ -14045,9 +14092,9 @@ } }, "mime": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.3.tgz", - "integrity": "sha512-QgrPRJfE+riq5TPZMcHZOtm8c6K/yYrMbKIoRfapfiGLxS8OTeIfRhUGW5LU7MlRa52KOAGCfUNruqLrIBvWZw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", "dev": true }, "mime-db": { @@ -14187,9 +14234,9 @@ } }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -14364,9 +14411,9 @@ } }, "node-abi": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.8.0.tgz", - "integrity": "sha512-1/aa2clS0pue0HjckL62CsbhWWU35HARvBDXcJtYKbYR7LnIutmpxmXbuDMV9kEviD2lP/wACOgWmmwljghHyQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.9.0.tgz", + "integrity": "sha512-jmEOvv0eanWjhX8dX1pmjb7oJl1U1oR4FOh0b2GnvALwSYoOdU7sj+kLDSAyjo4pfC9aj/IxkloxdLJQhSSQBA==", "dev": true, "requires": { "semver": "^5.4.1" @@ -14474,9 +14521,9 @@ } }, "node-libs-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", - "integrity": "sha512-5MQunG/oyOaBdttrL40dA7bUfPORLRWMUJLQtMg7nluxUvk5XwnLdL9twQHFAjRx/y7mIMkLKT9++qPbbk6BZA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", "dev": true, "requires": { "assert": "^1.1.1", @@ -14489,7 +14536,7 @@ "events": "^3.0.0", "https-browserify": "^1.0.0", "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", + "path-browserify": "0.0.1", "process": "^0.11.10", "punycode": "^1.2.4", "querystring-es3": "^0.2.0", @@ -14501,15 +14548,9 @@ "tty-browserify": "0.0.0", "url": "^0.11.0", "util": "^0.11.0", - "vm-browserify": "0.0.4" + "vm-browserify": "^1.0.1" }, "dependencies": { - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -14532,9 +14573,9 @@ } }, "node-releases": { - "version": "1.1.22", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.22.tgz", - "integrity": "sha512-O6XpteBuntW1j86mw6LlovBIwTe+sO2+7vi9avQffNeIW4upgnaCVm6xrBWH+KATz7mNNRNNeEpuWB7dT6Cr3w==", + "version": "1.1.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.23.tgz", + "integrity": "sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==", "dev": true, "requires": { "semver": "^5.3.0" @@ -15182,6 +15223,15 @@ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", "dev": true }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -15336,9 +15386,9 @@ "dev": true }, "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true }, "path-dirname": { @@ -15567,9 +15617,9 @@ "dev": true }, "postcss": { - "version": "7.0.16", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.16.tgz", - "integrity": "sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==", + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", + "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -15675,37 +15725,13 @@ } }, "postcss-load-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", - "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", "dev": true, "requires": { - "cosmiconfig": "^4.0.0", + "cosmiconfig": "^5.0.0", "import-cwd": "^2.0.0" - }, - "dependencies": { - "cosmiconfig": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", - "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", - "dev": true, - "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0", - "require-from-string": "^2.0.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } } }, "postcss-loader": { @@ -16267,15 +16293,15 @@ "dev": true }, "process": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", - "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=", + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true }, "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { @@ -16395,9 +16421,9 @@ "dev": true }, "psl": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz", - "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==", + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.33.tgz", + "integrity": "sha512-LTDP2uSrsc7XCb5lO7A8BI1qYxRe/8EqlRvMeEl6rsnYAqDOl8xHR+8lSAIVfrNaSAlTPTNOCgNjWcoUL3AZsw==", "dev": true }, "public-encrypt": { @@ -16708,9 +16734,9 @@ } }, "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" @@ -17511,12 +17537,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", @@ -17547,9 +17567,9 @@ "dev": true }, "resolve": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", - "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -17620,6 +17640,12 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, "rgb-regex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", @@ -18006,9 +18032,9 @@ "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==" }, "serve": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/serve/-/serve-11.0.1.tgz", - "integrity": "sha512-kmcR5jOumMcmoDVJk7izj2Gnz+ql4K3Xq1g0l4XX598lLYvbXgfS1oeTgckPVGzsk0MU/dBPHiolRgH0fI7c5g==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/serve/-/serve-11.0.2.tgz", + "integrity": "sha512-TjjjwUdPU+STkUyxvZFtkWOTRXdNDNMfot9Z/f97eEeyjPAV69o1TmJrNAlDbvpPu1JEjCoWiGCjkel7kWNF4A==", "dev": true, "requires": { "@zeit/schemas": "2.6.0", @@ -18018,7 +18044,7 @@ "chalk": "2.4.1", "clipboardy": "1.2.3", "compression": "1.7.3", - "serve-handler": "6.0.1", + "serve-handler": "6.0.2", "update-check": "1.5.2" }, "dependencies": { @@ -18163,9 +18189,9 @@ } }, "serve-handler": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.0.1.tgz", - "integrity": "sha512-k/im4Fbx96d8VcrJDjrsagNd9Vq18tVYRDDe90rpNO8Mr76KJF/zES5tBZdlLEbhBXjOs36m9Wl+hRCiDnYfmA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.0.2.tgz", + "integrity": "sha512-D1zgDpvx9Rgjip6rzY2QBjlZwfr/oiDSg66HipOWkEw1appHn7/mXdVRL6F8+bd1KD117Wch4+4x78OTXQVwDg==", "dev": true, "requires": { "bytes": "3.0.0", @@ -18255,6 +18281,12 @@ "statuses": ">= 1.4.0 < 2" } }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -18282,9 +18314,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -18369,9 +18401,9 @@ }, "dependencies": { "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz", + "integrity": "sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ==", "dev": true } } @@ -18700,18 +18732,18 @@ } }, "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", "dev": true, "requires": { "websocket-driver": ">=0.5.1" } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -18838,9 +18870,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true } } @@ -18869,9 +18901,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "readable-stream": { @@ -19298,46 +19330,34 @@ } }, "svg-url-loader": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-2.3.2.tgz", - "integrity": "sha1-3YaybBn+O5FPBOoQ7zlZTq3gRGQ=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-2.3.3.tgz", + "integrity": "sha512-dFXrXCrtyEucN6dWdvDGMipbVwPPez4OVVYUpxJwLJ5WuaPLYY9RmpOjUparDNs1+sPEXrsdDGIOCOK8NOy5VQ==", "dev": true, "requires": { - "file-loader": "1.1.11", - "loader-utils": "1.1.0" + "file-loader": "4.0.0", + "loader-utils": "1.2.3" }, "dependencies": { - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true - }, "file-loader": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", - "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.0.0.tgz", + "integrity": "sha512-roAbL6IdSGczwfXxhMi6Zq+jD4IfUpL0jWHD7fvmjdOVb7xBfdRUHe4LpBgO23VtVK5AW1OlWZo0p34Jvx3iWg==", "dev": true, "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^0.4.5" + "loader-utils": "^1.2.2", + "schema-utils": "^1.0.0" } }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true - }, - "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" } } } @@ -19365,12 +19385,12 @@ } }, "svgo-loader": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-2.2.0.tgz", - "integrity": "sha512-AtIy4kmUQc1zo+QK3ZFvRrULRZAhUC63cLJxdVo1cONZ9WeYAkySUlaB05uZKKcYpsTb/9tDsBSXMab3/0QWtw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/svgo-loader/-/svgo-loader-2.2.1.tgz", + "integrity": "sha512-9dyz/h6ae04pAVRz7QY8bLXtMbwA19NPpCPfCixgW0qXNDCOlHbDRqvtT5/2gzRxfuibWCUP6ZBQmZWF9rjWhQ==", "dev": true, "requires": { - "js-yaml": "^3.12.0", + "js-yaml": "^3.13.1", "loader-utils": "^1.0.3" } }, @@ -19381,9 +19401,9 @@ "dev": true }, "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, "symbol.prototype.description": { @@ -19536,9 +19556,9 @@ } }, "tar": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.9.tgz", - "integrity": "sha512-xisFa7Q2i3HOgfn+nmnWLGHD6Tm23hxjkx6wwGmgxkJFr6wxwXnJOdJYcZjL453PSdF0+bemO03+flAzkIdLBQ==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz", + "integrity": "sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==", "dev": true, "requires": { "chownr": "^1.1.1", @@ -20111,9 +20131,9 @@ } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" }, "tty-browserify": { "version": "0.0.0", @@ -20188,9 +20208,9 @@ "integrity": "sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg==" }, "ua-parser-js": { - "version": "0.7.19", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.19.tgz", - "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==", + "version": "0.7.20", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz", + "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==", "dev": true }, "uglify-js": { @@ -20248,38 +20268,15 @@ "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "uniq": { @@ -20304,9 +20301,9 @@ } }, "unique-slug": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", - "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, "requires": { "imurmurhash": "^0.1.4" @@ -20577,6 +20574,14 @@ "dev": true, "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } } }, "util-deprecate": { @@ -20644,9 +20649,9 @@ "dev": true }, "vee-validate": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-2.2.9.tgz", - "integrity": "sha512-+nfg8dwH3rDOg8Y9sZ1TCvFFWXecRxG2L6sZelQECKrqLVjX4/UuFoyezhfPGMTfI6Lx66ygERgeRdOw4S3r4g==" + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/vee-validate/-/vee-validate-2.2.11.tgz", + "integrity": "sha512-wQMhq1cPOk+eaE+iKVyoyEUp1mczpeSvL4V3sardi9+KMgDw853kCd6v0iajdH8uUSpj319BVdXkmDlx1qWFog==" }, "velocity-animate": { "version": "1.5.2", @@ -20684,13 +20689,10 @@ } }, "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", + "dev": true }, "vue": { "version": "2.6.10", @@ -21023,9 +21025,9 @@ } }, "webpack-dev-server": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.5.1.tgz", - "integrity": "sha512-0IdMGddJcnK9zesZOeHWl4uAOVfypn7DSrdNWtclROkVBXy/TcBN+6eEG1wNfLT9dXVfaRZZsLTJt0mJtgTQgw==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.7.2.tgz", + "integrity": "sha512-mjWtrKJW2T9SsjJ4/dxDC2fkFVUw8jlpemDERqV0ZJIkjjjamR2AbQlr3oz+j4JLhYCHImHnXZK5H06P2wvUew==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -21042,8 +21044,9 @@ "internal-ip": "^4.3.0", "ip": "^1.1.5", "killable": "^1.0.1", - "loglevel": "^1.6.2", + "loglevel": "^1.6.3", "opn": "^5.5.0", + "p-retry": "^3.0.1", "portfinder": "^1.0.20", "schema-utils": "^1.0.0", "selfsigned": "^1.10.4", @@ -21143,9 +21146,9 @@ "dev": true }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, "os-locale": { @@ -21195,9 +21198,9 @@ } }, "semver": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.1.tgz", - "integrity": "sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.2.tgz", + "integrity": "sha512-z4PqiCpomGtWj8633oeAdXm1Kn1W++3T8epkZYnwiVgIYIJ0QHszhInYSJTYxebByQH7KVCEAn8R9duzZW2PhQ==", "dev": true }, "string-width": { @@ -21365,12 +21368,13 @@ } }, "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", + "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "dev": true, "requires": { - "http-parser-js": ">=0.4.0", + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, @@ -21402,9 +21406,9 @@ "dev": true }, "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", diff --git a/package.json b/package.json index 1b9e98338..11a761077 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test:unit": "vue-cli-service test:unit" }, "dependencies": { - "@aeternity/aepp-sdk": "^4.0.1", + "@aeternity/aepp-sdk": "^4.1.0", "@aeternity/bip39": "^0.1.0", "@aeternity/hd-wallet": "^0.2.0", "@aeternity/ledger-app-api": "0.1.0", diff --git a/src/store/modules/accounts/hdWallet.js b/src/store/modules/accounts/hdWallet.js index eb3f67b7a..1aa6d5236 100644 --- a/src/store/modules/accounts/hdWallet.js +++ b/src/store/modules/accounts/hdWallet.js @@ -191,9 +191,6 @@ export default { ...txObject, fee: (await dispatch('modals/open', confirmProps, { root: true })) .shiftedBy(MAGNITUDE), - payload: txObject.payload && Crypto.decodeBase64Check( - Crypto.assertedType(txObject.payload, 'ba'), - ).toString(), }, OBJECT_ID_TX_TYPE[txObject.tag], ).rlpEncoded; diff --git a/src/store/modules/accounts/ledger.js b/src/store/modules/accounts/ledger.js index 0e1847f85..d4fcbff14 100644 --- a/src/store/modules/accounts/ledger.js +++ b/src/store/modules/accounts/ledger.js @@ -100,9 +100,6 @@ export default { fee: (await dispatch('modals/open', { name: 'getLedgerTransactionFee' }, { root: true })) .shiftedBy(MAGNITUDE), }, - payload: txObject.payload && Crypto.decodeBase64Check( - Crypto.assertedType(txObject.payload, 'ba'), - ).toString(), }, OBJECT_ID_TX_TYPE[txObject.tag], ).tx; From fe3f2f5abf350e9366e22e397e0943b81e0f4138 Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Wed, 26 Jun 2019 20:21:43 +1000 Subject: [PATCH 25/55] Update account-card.svg --- src/assets/account-card.svg | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/assets/account-card.svg b/src/assets/account-card.svg index 3460a760a..efc03d8da 100644 --- a/src/assets/account-card.svg +++ b/src/assets/account-card.svg @@ -27,11 +27,7 @@ - - Type something - ething 33 333 - et 2rewf 33f - + From fed81afe86fa5d1adc38b0b02cb6f65907532e6b Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Wed, 26 Jun 2019 15:58:46 +0200 Subject: [PATCH 26/55] Use SDK with optimized swagger module --- package-lock.json | 5 ++--- package.json | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ad2ef1b6..22b69ef59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,9 +5,8 @@ "requires": true, "dependencies": { "@aeternity/aepp-sdk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@aeternity/aepp-sdk/-/aepp-sdk-4.1.0.tgz", - "integrity": "sha512-CRYEU6CggXpWhTbJzdusBV88P+jyOFSp2Cii2meLUO5Mq0CWoECh6nJZS/6pB2HPEvXgmUDBpVjidPSQP5TMVg==", + "version": "github:aeternity/aepp-sdk-js#9a959c61b4a2c0e7ff344cd2a6b15e66072c94fe", + "from": "github:aeternity/aepp-sdk-js#9a959c61b4a2c0e7ff344cd2a6b15e66072c94fe", "requires": { "@aeternity/bip39": "^0.1.0", "@babel/runtime": "^7.0.0-beta.46", diff --git a/package.json b/package.json index 11a761077..e0d7f1422 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "test:unit": "vue-cli-service test:unit" }, "dependencies": { - "@aeternity/aepp-sdk": "^4.1.0", + "@aeternity/aepp-sdk": "github:aeternity/aepp-sdk-js#9a959c61b4a2c0e7ff344cd2a6b15e66072c94fe", "@aeternity/bip39": "^0.1.0", "@aeternity/hd-wallet": "^0.2.0", "@aeternity/ledger-app-api": "0.1.0", From 914aa0ae35e2705c90abaac4a3435af4091105a6 Mon Sep 17 00:00:00 2001 From: Dmitry Kostin Date: Wed, 26 Jun 2019 20:51:27 +1000 Subject: [PATCH 27/55] Send: Add button for pasting from clipboard --- config.xml | 1 + src/components/AeInputAddress.vue | 25 +++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/config.xml b/config.xml index adbe8aa44..7cc5e1278 100644 --- a/config.xml +++ b/config.xml @@ -55,6 +55,7 @@ + diff --git a/src/components/AeInputAddress.vue b/src/components/AeInputAddress.vue index 723015fe2..56c22b9da 100644 --- a/src/components/AeInputAddress.vue +++ b/src/components/AeInputAddress.vue @@ -45,6 +45,14 @@ + + + {{ $globals.IS_MOBILE_DEVICE ? 'Paste' : '' }} + ({ showAccountsDropdown: false, + clipboardReadSupported: process.env.IS_CORDOVA || navigator.clipboard, }), subscriptions() { return !process.env.IS_MOBILE_DEVICE && { @@ -114,6 +130,11 @@ export default { async readValueFromQrCode() { this.setAddress(await this.$store.dispatch('modals/open', { name: 'readQrCode', title: 'Scan AE Address' })); }, + async readValueFromClipboard() { + this.setAddress(await (process.env.IS_CORDOVA + ? new Promise((...args) => window.cordova.plugins.clipboard.paste(...args)) + : navigator.clipboard.readText())); + }, }, }; From d49c53a0fbc4e007621f686fd37ce549a8d1e2ce Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Wed, 26 Jun 2019 22:16:06 +0200 Subject: [PATCH 28/55] Use the latest version of cordova-clipboard from GitHub --- config.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.xml b/config.xml index 7cc5e1278..d7a0479f0 100644 --- a/config.xml +++ b/config.xml @@ -55,7 +55,7 @@ - + From b348cc4420c269a8aed4be3ce51b60f861a01498 Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Thu, 27 Jun 2019 07:59:00 +0200 Subject: [PATCH 29/55] Refactor checkLoggedIn --- src/router/routes/common.js | 8 ++--- src/router/routes/desktop.js | 4 +-- src/router/routes/mobile.js | 58 ++++++++++++++++++------------------ src/router/utils.js | 10 +++---- 4 files changed, 39 insertions(+), 41 deletions(-) diff --git a/src/router/routes/common.js b/src/router/routes/common.js index 958689528..6bf0ad8ee 100644 --- a/src/router/routes/common.js +++ b/src/router/routes/common.js @@ -1,4 +1,4 @@ -import { checkLoggedIn } from '../utils'; +import { ensureLoggedIn } from '../utils'; import AddressBook from '../../pages/AddressBook.vue'; import AddressBookNew from '../../pages/AddressBookNew.vue'; import AddressBookChoose from '../../pages/AddressBookChoose.vue'; @@ -8,17 +8,17 @@ export default [...process.env.UNFINISHED_FEATURES ? [{ name: 'address-book', path: '/addresses', component: AddressBook, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'address-book-new', path: '/addresses/new', component: AddressBookNew, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'address-book-choose', path: '/addresses/choose/:redirectPathTemplate', component: AddressBookChoose, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, props: true, }] : [], { name: 'not-found', diff --git a/src/router/routes/desktop.js b/src/router/routes/desktop.js index 637f127be..c60d5dc16 100644 --- a/src/router/routes/desktop.js +++ b/src/router/routes/desktop.js @@ -2,7 +2,7 @@ import Apps from '../../pages/desktop/Apps.vue'; import Send from '../../pages/desktop/Send.vue'; import Receive from '../../pages/desktop/Receive.vue'; import Settings from '../../pages/desktop/Settings.vue'; -import { checkLoggedIn } from '../utils'; +import { ensureLoggedIn } from '../utils'; export default [{ name: 'apps', @@ -12,7 +12,7 @@ export default [{ name: 'send', path: '/send', component: Send, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'receive', path: '/receive', diff --git a/src/router/routes/mobile.js b/src/router/routes/mobile.js index aeb87eba7..e0ae07a0c 100644 --- a/src/router/routes/mobile.js +++ b/src/router/routes/mobile.js @@ -1,4 +1,4 @@ -import { checkLoggedIn } from '../utils'; +import { ensureLoggedIn } from '../utils'; import store from '../../store/index'; import Intro from '../../pages/mobile/Intro.vue'; import Onboarding from '../../pages/mobile/Onboarding.vue'; @@ -71,8 +71,8 @@ const checkStoreMnemonic = (to, from, next) => { next(); }; -const vaultBeforeEnter = mergeEnterHandlers(checkLoggedIn(true), checkAccountName); -const settingsMnemonicBeforeEnter = mergeEnterHandlers(checkLoggedIn(true), checkStoreMnemonic); +const vaultBeforeEnter = mergeEnterHandlers(ensureLoggedIn, checkAccountName); +const settingsMnemonicBeforeEnter = mergeEnterHandlers(ensureLoggedIn, checkStoreMnemonic); export default [{ name: 'intro', @@ -133,22 +133,22 @@ export default [{ name: 'app-intro', path: '/browser/intro', component: AppIntro, - beforeEnter: checkLoggedIn(false), + beforeEnter: ensureLoggedIn, }, { name: 'apps', path: '/browser', component: Apps, - beforeEnter: checkLoggedIn(false), + beforeEnter: ensureLoggedIn, }, { name: 'app-browser', path: '/browser/*', component: AppBrowser, - beforeEnter: checkLoggedIn(false), + beforeEnter: ensureLoggedIn, }, { name: 'accounts-new', path: '/accounts-new', component: AccountsNew, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, meta: { accountType: 'hd-wallet', }, @@ -156,7 +156,7 @@ export default [{ name: 'vault-new', path: '/vault/new', component: AccountsNew, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, meta: { accountType: 'air-gap', }, @@ -195,76 +195,76 @@ export default [{ name: 'transfer', path: '/transfer', component: Transfer, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'receive', path: '/transfer/receive', component: Receive, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'send', path: '/transfer/send', component: Send, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'send-to', path: '/transfer/send/:to', component: SendAmount, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, props: true, }, { name: 'send-confirm', path: '/transfer/send/:to/:amount', component: SendConfirm, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, props: true, }, { name: 'transaction-list', path: '/transfer/transactions/:direction?', component: TransactionList, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, props: true, }, { name: 'transaction-details', path: '/transfer/transactions/details/:hash', component: TransactionDetails, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, props: true, }, { name: 'settings', path: '/settings', component: Settings, - beforeEnter: checkLoggedIn(false), + beforeEnter: ensureLoggedIn, }, { name: 'settings-network', path: '/settings/network', component: SettingsNetwork, - beforeEnter: checkLoggedIn(false), + beforeEnter: ensureLoggedIn, }, { name: 'settings-network-new', path: '/settings/network/new', component: SettingsNetworkNew, - beforeEnter: checkLoggedIn(false), + beforeEnter: ensureLoggedIn, }, { name: 'settings-remote-connection', path: '/settings/remote-connection', component: SettingsRemoteConnection, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'settings-remote-connection-new', path: '/settings/remote-connection/new', component: SettingsRemoteConnectionNew, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'settings-app-list', path: '/settings/apps', component: SettingsAppList, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'settings-app-details', path: '/settings/apps/:appHost', component: SettingsAppDetails, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, props: true, }, { name: 'settings-mnemonic', @@ -290,37 +290,37 @@ export default [{ name: 'settings-mnemonic-deleted', path: '/settings/mnemonic/deleted', component: SettingsMnemonicDeleted, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'settings-security-course-list', path: '/settings/security-courses', component: SettingsSecurityCourseList, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, props: true, }, { name: 'settings-security-course-intro', path: '/settings/security-courses/intro', component: SettingsSecurityCourseIntro, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'settings-security-course-bank', path: '/settings/security-courses/bank', component: SettingsSecurityCourseBank, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'settings-security-course-privacy', path: '/settings/security-courses/privacy', component: SettingsSecurityCoursePrivacy, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'settings-security-course-layers', path: '/settings/security-courses/layers', component: SettingsSecurityCourseLayers, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, }, { name: 'settings-account-remove', path: '/settings/wallet/:idx', component: SettingsAccountRemove, - beforeEnter: checkLoggedIn(true), + beforeEnter: ensureLoggedIn, props: true, }]; diff --git a/src/router/utils.js b/src/router/utils.js index 544bb310d..67daccd97 100644 --- a/src/router/utils.js +++ b/src/router/utils.js @@ -1,19 +1,17 @@ import store from '../store'; // eslint-disable-next-line import/prefer-default-export -export const checkLoggedIn = requireLoggedIn => (to, from, next) => { +export const ensureLoggedIn = (to, from, next) => { if (!store.getters.loggedIn) { + store.commit('setLoginTarget', to.fullPath); if (process.env.IS_MOBILE_DEVICE) { - store.commit('setLoginTarget', to.fullPath); next({ name: store.state.accounts.hdWallet.encryptedWallet ? 'login' : 'intro' }); - return; - } if (requireLoggedIn) { - store.commit('setLoginTarget', to.fullPath); + } else { if (from.name) next(false); else next({ name: 'apps' }); store.commit('toggleSidebar'); - return; } + return; } next(); }; From ef653881dd9a96866032a3367077be6bb0c8e620 Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Thu, 27 Jun 2019 08:08:25 +0200 Subject: [PATCH 30/55] AeInputAddress: Mark Paste button as unfinished Because of rendering issues on small screens. --- src/components/AeInputAddress.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AeInputAddress.vue b/src/components/AeInputAddress.vue index 56c22b9da..c763bbafe 100644 --- a/src/components/AeInputAddress.vue +++ b/src/components/AeInputAddress.vue @@ -46,7 +46,7 @@ From ea4190d427d06f666a1fda8058a395c908a78737 Mon Sep 17 00:00:00 2001 From: Nikita Cedrik Date: Thu, 20 Jun 2019 17:49:32 +1000 Subject: [PATCH 31/55] AeInputAmountAe: Add Max button --- src/components/AeInputAmount.vue | 5 +++++ src/components/AeInputAmountAe.vue | 20 ++++++++++++++++---- src/components/AeToolbarButton.vue | 6 ++++++ src/pages/mobile/SendAmount.vue | 15 +++++++++++++-- 4 files changed, 40 insertions(+), 6 deletions(-) diff --git a/src/components/AeInputAmount.vue b/src/components/AeInputAmount.vue index 58dbf2d22..265623d8e 100644 --- a/src/components/AeInputAmount.vue +++ b/src/components/AeInputAmount.vue @@ -3,6 +3,11 @@ class="ae-input-amount" v-bind="$attrs" > + + > + + Max + + @@ -30,6 +32,10 @@ export default { text-transform: uppercase; color: $color-neutral-negative-1; + &.active { + color: #000; + } + /deep/ .icon { height: rem(14px); vertical-align: -.2em; diff --git a/src/pages/mobile/SendAmount.vue b/src/pages/mobile/SendAmount.vue index 73a92d2de..36bbd4fe1 100644 --- a/src/pages/mobile/SendAmount.vue +++ b/src/pages/mobile/SendAmount.vue @@ -30,8 +30,9 @@ required: true, decimal: MAGNITUDE, min_value_exclusive: 0, - max_value: activeAccount.balance.minus(MIN_SPEND_TX_FEE).toString(), + max_value: max, }" + :max="max" :error="errors.has('amount')" :footer="errors.first('amount')" autofocus @@ -40,6 +41,11 @@ + + Date: Thu, 27 Jun 2019 10:57:51 +0200 Subject: [PATCH 32/55] SendAmount: Transfer all tokens --- src/pages/mobile/SendAmount.vue | 48 +++++++++++++++++++++++++---- src/store/plugins/ui/observables.js | 18 ++++++----- 2 files changed, 52 insertions(+), 14 deletions(-) diff --git a/src/pages/mobile/SendAmount.vue b/src/pages/mobile/SendAmount.vue index 36bbd4fe1..b2e445907 100644 --- a/src/pages/mobile/SendAmount.vue +++ b/src/pages/mobile/SendAmount.vue @@ -43,7 +43,7 @@ ({ - amount: '', + customAmount: '', + maxSelected: false, + minFee: BigNumber(0), MAGNITUDE, - MIN_SPEND_TX_FEE, - BigNumber, }), computed: { ...mapGetters('accounts', ['activeColor']), max() { - return this.activeAccount.balance.minus(MIN_SPEND_TX_FEE).toString(); + return this.activeAccount.balance.minus(this.minFee).toString(); + }, + amount: { + get() { + return this.maxSelected ? this.max : this.customAmount; + }, + set(value) { + if (value === this.max) this.maxSelected = true; + else { + this.customAmount = value; + this.maxSelected = false; + } + }, }, }, subscriptions() { return pick(this.$store.state.observables, ['activeAccount']); }, + mounted() { + this.$watch( + ({ activeAccount: { address, nonce }, amount }) => ({ address, nonce, amount }), + ({ address, nonce, amount }) => { + const minFee = BigNumber(TxBuilder.calculateMinFee( + 'spendTx', { + gas: this.$store.state.sdk.Ae.defaults.gas, + params: { + ...this.$store.state.sdk.Ae.defaults, + senderId: address, + recipientId: address, + amount: BigNumber(amount || 0).shiftedBy(MAGNITUDE), + ttl: 0, + nonce: nonce + 1, + payload: '', + }, + }, + )).shiftedBy(-MAGNITUDE); + if (!minFee.isEqualTo(this.minFee)) this.minFee = minFee; + }, + { immediate: true }, + ); + }, methods: { async setAmount() { if (!await this.$validator.validateAll()) return; diff --git a/src/store/plugins/ui/observables.js b/src/store/plugins/ui/observables.js index ee4830d47..6f09a31e9 100644 --- a/src/store/plugins/ui/observables.js +++ b/src/store/plugins/ui/observables.js @@ -22,12 +22,15 @@ export default (store) => { pluck('newValue'), ); - const getBalance = memoize(address => sdk$ + const defaultAccountInfo = { balance: BigNumber(0), nonce: 0 }; + const getAccountInfo = memoize(address => sdk$ .pipe( switchMap(sdk => timer(0, 3000).pipe(map(() => sdk))), - switchMap(async sdk => BigNumber(sdk ? await sdk.balance(address).catch(() => 0) : 0) - .shiftedBy(-MAGNITUDE)), - multicast(new BehaviorSubject(BigNumber(0))), + switchMap(sdk => (sdk + ? sdk.api.getAccountByPubkey(address).catch(() => defaultAccountInfo) + : defaultAccountInfo)), + map(aci => ({ ...aci, balance: BigNumber(aci.balance).shiftedBy(-MAGNITUDE) })), + multicast(new BehaviorSubject(defaultAccountInfo)), refCountDelay(1000), )); @@ -35,8 +38,8 @@ export default (store) => { .pipe( pluck('newValue'), switchMap(acs => (acs.length - ? combineLatest(acs.map(({ address }) => getBalance(address))) - .pipe(map(balances => balances.map((balance, idx) => ({ ...acs[idx], balance })))) + ? combineLatest(acs.map(({ address }) => getAccountInfo(address))) + .pipe(map(acis => acis.map((aci, idx) => ({ ...acs[idx], ...aci })))) : of([]))), ); @@ -255,7 +258,6 @@ export default (store) => { store.state.observables = { // eslint-disable-line no-param-reassign topBlockHeight: topBlockHeight$, - getBalance, getTransaction, getTransactionList, activeAccount: watchAsObservable( @@ -265,7 +267,7 @@ export default (store) => { .pipe( pluck('newValue'), switchMap(acc => (acc - ? getBalance(acc.address).pipe(map(balance => ({ ...acc, balance }))) + ? getAccountInfo(acc.address).pipe(map(acci => ({ ...acc, ...acci }))) : of(acc))), ), accounts: accounts$, From 76b19a4a7fb2fabd89d77275ca05ee3862747159 Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Thu, 27 Jun 2019 17:04:28 +0200 Subject: [PATCH 33/55] SendAmount: Don't show negative amount if balance is less than fee --- src/pages/mobile/SendAmount.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/mobile/SendAmount.vue b/src/pages/mobile/SendAmount.vue index b2e445907..50604a11f 100644 --- a/src/pages/mobile/SendAmount.vue +++ b/src/pages/mobile/SendAmount.vue @@ -100,7 +100,8 @@ export default { computed: { ...mapGetters('accounts', ['activeColor']), max() { - return this.activeAccount.balance.minus(this.minFee).toString(); + const max = this.activeAccount.balance.minus(this.minFee); + return (max.isPositive() ? max : 0).toString(); }, amount: { get() { From 45ee38ce6958dafe8b008d226962e70f4175530e Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Thu, 27 Jun 2019 19:18:56 +0200 Subject: [PATCH 34/55] SendAmount: Fix minFee calculation if amount is negative --- src/pages/mobile/SendAmount.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/mobile/SendAmount.vue b/src/pages/mobile/SendAmount.vue index 50604a11f..4c7cc352e 100644 --- a/src/pages/mobile/SendAmount.vue +++ b/src/pages/mobile/SendAmount.vue @@ -130,7 +130,7 @@ export default { ...this.$store.state.sdk.Ae.defaults, senderId: address, recipientId: address, - amount: BigNumber(amount || 0).shiftedBy(MAGNITUDE), + amount: BigNumber(amount > 0 ? amount : 0).shiftedBy(MAGNITUDE), ttl: 0, nonce: nonce + 1, payload: '', From 5291601c046e3b900efe29123f3c14bd855b36ab Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Thu, 27 Jun 2019 20:04:30 +0200 Subject: [PATCH 35/55] DetailsFeeInput: Show actual range --- src/components/mobile/ConfirmSpendModal.vue | 1 + src/components/mobile/DetailsFeeInput.vue | 39 ++++++++++++++------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/components/mobile/ConfirmSpendModal.vue b/src/components/mobile/ConfirmSpendModal.vue index 59dd56da9..4237bdda8 100644 --- a/src/components/mobile/ConfirmSpendModal.vue +++ b/src/components/mobile/ConfirmSpendModal.vue @@ -24,6 +24,7 @@ - - - - +
+ + diff --git a/src/router/routes/mobile.js b/src/router/routes/mobile.js index e0ae07a0c..7cde90aa4 100644 --- a/src/router/routes/mobile.js +++ b/src/router/routes/mobile.js @@ -43,6 +43,7 @@ import SettingsSecurityCourseBank from '../../pages/mobile/SettingsSecurityCours import SettingsSecurityCoursePrivacy from '../../pages/mobile/SettingsSecurityCoursePrivacy.vue'; import SettingsSecurityCourseLayers from '../../pages/mobile/SettingsSecurityCourseLayers.vue'; import SettingsAccountRemove from '../../pages/mobile/SettingsAccountRemove.vue'; +import SettingsPassword from '../../pages/mobile/SettingsPassword.vue'; const Apps = () => import(/* webpackChunkName: "page-apps" */ '../../pages/mobile/Apps.vue'); @@ -323,4 +324,9 @@ export default [{ component: SettingsAccountRemove, beforeEnter: ensureLoggedIn, props: true, +}, { + name: 'settings-password', + path: '/settings/password', + component: SettingsPassword, + beforeEnter: ensureLoggedIn, }]; From 47d317c4f691742753b47d9e08a0f19ab91485db Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Fri, 21 Jun 2019 08:21:06 +0200 Subject: [PATCH 37/55] hdWallet: Simplify naming --- src/store/modules/accounts/hdWallet.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/store/modules/accounts/hdWallet.js b/src/store/modules/accounts/hdWallet.js index 1aa6d5236..c9ec87a73 100644 --- a/src/store/modules/accounts/hdWallet.js +++ b/src/store/modules/accounts/hdWallet.js @@ -135,11 +135,11 @@ export default { }, async deleteMnemonic({ state: { passwordDerivedKey, encryptedWallet, wallet }, commit }) { - const newAes = new AES(passwordDerivedKey); + const aes = new AES(passwordDerivedKey); commit('setEncryptedWallet', { - privateKey: await newAes.encrypt(wallet.privateKey), - chainCode: await newAes.encrypt(wallet.chainCode), - mac: await newAes.encrypt(new Uint8Array(2)), + privateKey: await aes.encrypt(wallet.privateKey), + chainCode: await aes.encrypt(wallet.chainCode), + mac: await aes.encrypt(new Uint8Array(2)), salt: encryptedWallet.salt, }); commit('setMnemonic', ''); From 301753c19fba12137bdc3978a57fc4adf72bbb21 Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Wed, 26 Jun 2019 12:54:31 +0200 Subject: [PATCH 38/55] Intro: Rename computed variables --- src/pages/mobile/Intro.vue | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pages/mobile/Intro.vue b/src/pages/mobile/Intro.vue index 388dc1556..be29eec4e 100644 --- a/src/pages/mobile/Intro.vue +++ b/src/pages/mobile/Intro.vue @@ -12,10 +12,10 @@ diff --git a/src/pages/mobile/Onboarding.vue b/src/pages/mobile/Onboarding.vue index 03a2a5ae0..8391f06e4 100644 --- a/src/pages/mobile/Onboarding.vue +++ b/src/pages/mobile/Onboarding.vue @@ -9,7 +9,7 @@