@docknetwork/wallet-sdk-wasm 1.5.8 → 1.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core/format-utils.js +0 -28
- package/lib/core/format-utils.mjs +1 -24
- package/lib/core/validation.js +1 -24
- package/lib/core/validation.mjs +2 -21
- package/lib/index.js +13 -32
- package/lib/index.mjs +13 -32
- package/lib/rpc-server.js +13 -32
- package/lib/rpc-server.mjs +13 -32
- package/lib/rpc-util.js +14 -0
- package/lib/rpc-util.mjs +14 -0
- package/lib/services/blockchain/index.js +3 -8
- package/lib/services/blockchain/index.mjs +3 -8
- package/lib/services/blockchain/service.js +37 -80
- package/lib/services/blockchain/service.mjs +38 -81
- package/lib/services/credential/bbs-revocation.js +4 -9
- package/lib/services/credential/bbs-revocation.mjs +3 -8
- package/lib/services/credential/bound-check.js +9 -4
- package/lib/services/credential/bound-check.mjs +9 -4
- package/lib/services/credential/index.js +11 -15
- package/lib/services/credential/index.mjs +11 -15
- package/lib/services/credential/service.js +18 -20
- package/lib/services/credential/service.mjs +15 -17
- package/lib/services/credential/utils.js +65 -28
- package/lib/services/credential/utils.mjs +62 -32
- package/lib/services/dids/index.js +11 -16
- package/lib/services/dids/index.mjs +11 -16
- package/lib/services/dids/keypair-utils.js +142 -0
- package/lib/services/dids/keypair-utils.mjs +113 -0
- package/lib/services/dids/service.js +16 -37
- package/lib/services/dids/service.mjs +16 -37
- package/lib/services/edv/index.js +8 -16
- package/lib/services/edv/index.mjs +8 -16
- package/lib/services/edv/service.js +10 -24
- package/lib/services/edv/service.mjs +10 -24
- package/lib/services/index.js +13 -37
- package/lib/services/index.mjs +13 -37
- package/lib/services/pex/service.js +2 -1
- package/lib/services/pex/service.mjs +2 -1
- package/lib/services/relay-service/configs.js +0 -1
- package/lib/services/relay-service/configs.mjs +0 -1
- package/lib/services/relay-service/index.android.js +0 -1
- package/lib/services/relay-service/index.android.mjs +0 -1
- package/lib/services/relay-service/index.ios.js +0 -1
- package/lib/services/relay-service/index.ios.mjs +0 -1
- package/lib/services/relay-service/index.js +0 -1
- package/lib/services/relay-service/index.mjs +0 -1
- package/lib/services/relay-service/service-rpc.js +0 -1
- package/lib/services/relay-service/service-rpc.mjs +0 -1
- package/lib/services/relay-service/service.js +0 -1
- package/lib/services/relay-service/service.mjs +0 -1
- package/lib/services/test-utils.js +0 -239
- package/lib/services/test-utils.mjs +1 -234
- package/lib/services/util-crypto/configs.js +0 -12
- package/lib/services/util-crypto/configs.mjs +0 -12
- package/lib/services/util-crypto/index.android.js +0 -3
- package/lib/services/util-crypto/index.android.mjs +0 -3
- package/lib/services/util-crypto/index.ios.js +0 -3
- package/lib/services/util-crypto/index.ios.mjs +0 -3
- package/lib/services/util-crypto/index.js +4 -7
- package/lib/services/util-crypto/index.mjs +4 -7
- package/lib/services/util-crypto/service-rpc.js +0 -23
- package/lib/services/util-crypto/service-rpc.mjs +0 -23
- package/lib/services/util-crypto/service.js +68 -61
- package/lib/services/util-crypto/service.mjs +50 -59
- package/lib/services/wallet/configs.js +0 -63
- package/lib/services/wallet/configs.mjs +1 -64
- package/lib/services/wallet/index.android.js +0 -1
- package/lib/services/wallet/index.android.mjs +0 -1
- package/lib/services/wallet/index.ios.js +0 -1
- package/lib/services/wallet/index.ios.mjs +0 -1
- package/lib/services/wallet/index.js +2 -12
- package/lib/services/wallet/index.mjs +2 -12
- package/lib/services/wallet/service-rpc.js +0 -77
- package/lib/services/wallet/service-rpc.mjs +0 -77
- package/lib/services/wallet/service.js +1 -215
- package/lib/services/wallet/service.mjs +1 -211
- package/lib/setup-nodejs.js +13 -32
- package/lib/setup-nodejs.mjs +13 -32
- package/lib/setup-tests.js +13 -32
- package/lib/setup-tests.mjs +13 -32
- package/lib/src/core/format-utils.d.ts +0 -5
- package/lib/src/core/format-utils.d.ts.map +1 -1
- package/lib/src/core/validation.d.ts +0 -3
- package/lib/src/core/validation.d.ts.map +1 -1
- package/lib/src/rpc-util.d.ts.map +1 -1
- package/lib/src/services/blockchain/service.d.ts +7 -3
- package/lib/src/services/blockchain/service.d.ts.map +1 -1
- package/lib/src/services/credential/bbs-revocation.d.ts.map +1 -1
- package/lib/src/services/credential/bound-check.d.ts +1 -1
- package/lib/src/services/credential/bound-check.d.ts.map +1 -1
- package/lib/src/services/credential/service.d.ts.map +1 -1
- package/lib/src/services/credential/utils.d.ts +2 -1
- package/lib/src/services/credential/utils.d.ts.map +1 -1
- package/lib/src/services/dids/keypair-utils.d.ts +15 -0
- package/lib/src/services/dids/keypair-utils.d.ts.map +1 -0
- package/lib/src/services/dids/service.d.ts +6 -6
- package/lib/src/services/dids/service.d.ts.map +1 -1
- package/lib/src/services/edv/service.d.ts.map +1 -1
- package/lib/src/services/pex/service.d.ts.map +1 -1
- package/lib/src/services/util-crypto/configs.d.ts +0 -3
- package/lib/src/services/util-crypto/configs.d.ts.map +1 -1
- package/lib/src/services/util-crypto/service.d.ts +3 -8
- package/lib/src/services/util-crypto/service.d.ts.map +1 -1
- package/lib/src/services/wallet/configs.d.ts +13 -0
- package/lib/src/services/wallet/configs.d.ts.map +1 -0
- package/lib/src/services/wallet/service.d.ts +1 -44
- package/lib/src/services/wallet/service.d.ts.map +1 -1
- package/lib/test-utils.js +0 -4
- package/lib/test-utils.mjs +1 -4
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -27
- package/readme.md +0 -61
- package/src/core/format-utils.test.js +1 -28
- package/src/core/format-utils.ts +0 -33
- package/src/core/validation.test.js +1 -33
- package/src/core/validation.ts +1 -25
- package/src/rpc-server.test.js +2 -9
- package/src/rpc-util.js +14 -0
- package/src/services/blockchain/index.test.js +4 -15
- package/src/services/blockchain/service.ts +39 -98
- package/src/services/credential/bbs-revocation.ts +2 -1
- package/src/services/credential/bound-check.test.ts +6 -6
- package/src/services/credential/bound-check.ts +4 -4
- package/src/services/credential/index.test.js +0 -2
- package/src/services/credential/service.ts +5 -2
- package/src/services/credential/utils.js +65 -23
- package/src/services/dids/index.test.js +9 -20
- package/src/services/dids/keypair-utils.js +111 -0
- package/src/services/dids/service.ts +7 -26
- package/src/services/edv/service.ts +2 -9
- package/src/services/index.js +0 -8
- package/src/services/pex/service.ts +7 -1
- package/src/services/test-utils.js +0 -207
- package/src/services/util-crypto/configs.ts +0 -12
- package/src/services/util-crypto/index.test.js +6 -83
- package/src/services/util-crypto/service-rpc.js +0 -20
- package/src/services/util-crypto/service.ts +62 -75
- package/src/services/wallet/configs.ts +1 -113
- package/src/services/wallet/index.test.js +0 -159
- package/src/services/wallet/service-rpc.js +1 -88
- package/src/services/wallet/service.ts +0 -258
- package/src/test-utils.js +0 -13
- package/lib/account-8fa95046.js +0 -774
- package/lib/account-e7156c51.js +0 -764
- package/lib/core/polkadot-utils.js +0 -119
- package/lib/core/polkadot-utils.mjs +0 -94
- package/lib/core/realm-schemas.js +0 -50
- package/lib/core/realm-schemas.mjs +0 -44
- package/lib/core/subscan.js +0 -75
- package/lib/core/subscan.mjs +0 -64
- package/lib/fixtures.js +0 -56
- package/lib/fixtures.mjs +0 -52
- package/lib/modules/account.js +0 -55
- package/lib/modules/account.mjs +0 -47
- package/lib/modules/accounts.js +0 -56
- package/lib/modules/accounts.mjs +0 -47
- package/lib/modules/data-migration.js +0 -72
- package/lib/modules/data-migration.mjs +0 -68
- package/lib/modules/wallet-backup.js +0 -82
- package/lib/modules/wallet-backup.mjs +0 -71
- package/lib/modules/wallet.js +0 -56
- package/lib/modules/wallet.mjs +0 -47
- package/lib/services/example/configs.js +0 -21
- package/lib/services/example/configs.mjs +0 -13
- package/lib/services/example/index.js +0 -18
- package/lib/services/example/index.mjs +0 -14
- package/lib/services/example/service-rpc.js +0 -25
- package/lib/services/example/service-rpc.mjs +0 -21
- package/lib/services/example/service.js +0 -25
- package/lib/services/example/service.mjs +0 -20
- package/lib/services/keyring/configs.js +0 -70
- package/lib/services/keyring/configs.mjs +0 -61
- package/lib/services/keyring/index.android.js +0 -22
- package/lib/services/keyring/index.android.mjs +0 -18
- package/lib/services/keyring/index.ios.js +0 -22
- package/lib/services/keyring/index.ios.mjs +0 -18
- package/lib/services/keyring/index.js +0 -16
- package/lib/services/keyring/index.mjs +0 -8
- package/lib/services/keyring/service-rpc.js +0 -65
- package/lib/services/keyring/service-rpc.mjs +0 -61
- package/lib/services/keyring/service.js +0 -84
- package/lib/services/keyring/service.mjs +0 -74
- package/lib/services/polkadot/configs.js +0 -17
- package/lib/services/polkadot/configs.mjs +0 -13
- package/lib/services/polkadot/index.android.js +0 -22
- package/lib/services/polkadot/index.android.mjs +0 -18
- package/lib/services/polkadot/index.ios.js +0 -22
- package/lib/services/polkadot/index.ios.mjs +0 -18
- package/lib/services/polkadot/index.js +0 -15
- package/lib/services/polkadot/index.mjs +0 -7
- package/lib/services/polkadot/service-rpc.js +0 -30
- package/lib/services/polkadot/service-rpc.mjs +0 -26
- package/lib/services/polkadot/service.js +0 -28
- package/lib/services/polkadot/service.mjs +0 -23
- package/lib/services/substrate/api-utils.js +0 -85
- package/lib/services/substrate/api-utils.mjs +0 -74
- package/lib/services/substrate/configs.js +0 -30
- package/lib/services/substrate/configs.mjs +0 -21
- package/lib/services/substrate/index.android.js +0 -22
- package/lib/services/substrate/index.android.mjs +0 -18
- package/lib/services/substrate/index.ios.js +0 -22
- package/lib/services/substrate/index.ios.mjs +0 -18
- package/lib/services/substrate/index.js +0 -37
- package/lib/services/substrate/index.mjs +0 -29
- package/lib/services/substrate/service-rpc.js +0 -37
- package/lib/services/substrate/service-rpc.mjs +0 -33
- package/lib/services/substrate/service.js +0 -115
- package/lib/services/substrate/service.mjs +0 -102
- package/lib/services/trust-registry/configs.js +0 -25
- package/lib/services/trust-registry/configs.mjs +0 -16
- package/lib/services/trust-registry/index.android.js +0 -19
- package/lib/services/trust-registry/index.android.mjs +0 -15
- package/lib/services/trust-registry/index.ios.js +0 -19
- package/lib/services/trust-registry/index.ios.mjs +0 -15
- package/lib/services/trust-registry/index.js +0 -33
- package/lib/services/trust-registry/index.mjs +0 -25
- package/lib/services/trust-registry/service-rpc.js +0 -29
- package/lib/services/trust-registry/service-rpc.mjs +0 -25
- package/lib/services/trust-registry/service.js +0 -89
- package/lib/services/trust-registry/service.mjs +0 -85
- package/lib/src/core/polkadot-utils.d.ts +0 -11
- package/lib/src/core/polkadot-utils.d.ts.map +0 -1
- package/lib/src/modules/account.d.ts +0 -60
- package/lib/src/modules/account.d.ts.map +0 -1
- package/lib/src/modules/accounts.d.ts +0 -49
- package/lib/src/modules/accounts.d.ts.map +0 -1
- package/lib/src/modules/data-migration.d.ts +0 -7
- package/lib/src/modules/data-migration.d.ts.map +0 -1
- package/lib/src/modules/wallet-backup.d.ts +0 -12
- package/lib/src/modules/wallet-backup.d.ts.map +0 -1
- package/lib/src/modules/wallet.d.ts +0 -134
- package/lib/src/modules/wallet.d.ts.map +0 -1
- package/lib/src/services/blockchain/index.d.ts +0 -2
- package/lib/src/services/blockchain/index.d.ts.map +0 -1
- package/lib/src/services/example/configs.d.ts +0 -9
- package/lib/src/services/example/configs.d.ts.map +0 -1
- package/lib/src/services/example/service.d.ts +0 -8
- package/lib/src/services/example/service.d.ts.map +0 -1
- package/lib/src/services/keyring/configs.d.ts +0 -39
- package/lib/src/services/keyring/configs.d.ts.map +0 -1
- package/lib/src/services/keyring/index.d.ts +0 -2
- package/lib/src/services/keyring/index.d.ts.map +0 -1
- package/lib/src/services/polkadot/configs.d.ts +0 -8
- package/lib/src/services/polkadot/configs.d.ts.map +0 -1
- package/lib/src/services/polkadot/index.d.ts +0 -2
- package/lib/src/services/polkadot/index.d.ts.map +0 -1
- package/lib/src/services/polkadot/service.d.ts +0 -8
- package/lib/src/services/polkadot/service.d.ts.map +0 -1
- package/lib/src/services/substrate/api-utils.d.ts +0 -14
- package/lib/src/services/substrate/api-utils.d.ts.map +0 -1
- package/lib/src/services/substrate/configs.d.ts +0 -16
- package/lib/src/services/substrate/configs.d.ts.map +0 -1
- package/lib/src/services/substrate/index.d.ts +0 -2
- package/lib/src/services/substrate/index.d.ts.map +0 -1
- package/lib/src/services/substrate/service.d.ts +0 -13
- package/lib/src/services/substrate/service.d.ts.map +0 -1
- package/lib/src/services/trust-registry/configs.d.ts +0 -6
- package/lib/src/services/trust-registry/configs.d.ts.map +0 -1
- package/lib/src/services/trust-registry/service.d.ts +0 -25
- package/lib/src/services/trust-registry/service.d.ts.map +0 -1
- package/lib/src/services/wallet/index.d.ts +0 -2
- package/lib/src/services/wallet/index.d.ts.map +0 -1
- package/lib/test/axiosMocks.js +0 -431
- package/lib/test/axiosMocks.mjs +0 -420
- package/lib/test/setup-test-state.js +0 -93
- package/lib/test/setup-test-state.mjs +0 -85
- package/src/core/polkadot-utils.js +0 -99
- package/src/core/realm-schemas.js +0 -42
- package/src/core/subscan.js +0 -62
- package/src/core/subscan.test.js +0 -56
- package/src/fixtures.js +0 -43
- package/src/modules/account.test.js +0 -56
- package/src/modules/account.ts +0 -128
- package/src/modules/accounts.test.js +0 -88
- package/src/modules/accounts.ts +0 -264
- package/src/modules/data-migration.test.js +0 -72
- package/src/modules/data-migration.ts +0 -86
- package/src/modules/wallet-backup.test.js +0 -24
- package/src/modules/wallet-backup.ts +0 -68
- package/src/modules/wallet.test.js +0 -227
- package/src/modules/wallet.ts +0 -424
- package/src/services/example/configs.js +0 -14
- package/src/services/example/index.js +0 -3
- package/src/services/example/index.test.js +0 -28
- package/src/services/example/service-rpc.js +0 -11
- package/src/services/example/service.ts +0 -18
- package/src/services/keyring/configs.ts +0 -110
- package/src/services/keyring/index.android.js +0 -3
- package/src/services/keyring/index.ios.js +0 -3
- package/src/services/keyring/index.js +0 -1
- package/src/services/keyring/index.test.js +0 -48
- package/src/services/keyring/service-rpc.js +0 -56
- package/src/services/keyring/service.ts +0 -111
- package/src/services/polkadot/configs.ts +0 -13
- package/src/services/polkadot/index.android.js +0 -3
- package/src/services/polkadot/index.ios.js +0 -3
- package/src/services/polkadot/index.js +0 -1
- package/src/services/polkadot/index.test.js +0 -52
- package/src/services/polkadot/service-rpc.js +0 -13
- package/src/services/polkadot/service.ts +0 -21
- package/src/services/substrate/api-utils.test.js +0 -73
- package/src/services/substrate/api-utils.ts +0 -66
- package/src/services/substrate/configs.ts +0 -34
- package/src/services/substrate/index.android.js +0 -3
- package/src/services/substrate/index.ios.js +0 -3
- package/src/services/substrate/index.js +0 -1
- package/src/services/substrate/index.test.js +0 -116
- package/src/services/substrate/service-rpc.js +0 -24
- package/src/services/substrate/service.ts +0 -117
- package/src/services/trust-registry/configs.ts +0 -14
- package/src/services/trust-registry/index.android.js +0 -3
- package/src/services/trust-registry/index.ios.js +0 -3
- package/src/services/trust-registry/index.js +0 -1
- package/src/services/trust-registry/index.test.js +0 -67
- package/src/services/trust-registry/service-rpc.js +0 -15
- package/src/services/trust-registry/service.ts +0 -94
- package/src/test/axiosMocks.js +0 -20
- package/src/test/fixtures/subscan-failure.json +0 -5
- package/src/test/fixtures/subscan-success.json +0 -370
- package/src/test/fixtures/subscan-too-many-requests.json +0 -9
- package/src/test/setup-test-state.js +0 -37
- package/src/test/test-wallet.test.js +0 -15
package/src/modules/accounts.ts
DELETED
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import {walletService as _walletService} from '../services/wallet';
|
|
4
|
-
import {utilCryptoService} from '../services/util-crypto';
|
|
5
|
-
import {keyringService} from '../services/keyring';
|
|
6
|
-
import {substrateService} from '../services/substrate';
|
|
7
|
-
import {polkadotService} from '../services/polkadot';
|
|
8
|
-
import {Wallet, WalletEvents} from './wallet';
|
|
9
|
-
import {Errors} from '../errors';
|
|
10
|
-
import {
|
|
11
|
-
KeypairType,
|
|
12
|
-
WalletDocument,
|
|
13
|
-
DocumentType,
|
|
14
|
-
KeypairTypes,
|
|
15
|
-
} from '../types';
|
|
16
|
-
import {EventManager} from './event-manager';
|
|
17
|
-
import {AccountDetails, Account} from './account';
|
|
18
|
-
import {isAddressValid} from '../core/validation';
|
|
19
|
-
|
|
20
|
-
export const AccountsEvents = {
|
|
21
|
-
loaded: 'loaded',
|
|
22
|
-
accountCreated: 'account-added',
|
|
23
|
-
accountUpdated: 'account-updated',
|
|
24
|
-
accountRemoved: 'account-removed',
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export type CreateAccountParams = {
|
|
28
|
-
name: string,
|
|
29
|
-
type?: KeypairType,
|
|
30
|
-
derivationPath?: string,
|
|
31
|
-
mnemonic?: string,
|
|
32
|
-
json?: string,
|
|
33
|
-
password?: string,
|
|
34
|
-
getIfExists?: boolean,
|
|
35
|
-
hasBackup?: boolean,
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export class Accounts {
|
|
39
|
-
accounts: AccountDetails[];
|
|
40
|
-
wallet: Wallet;
|
|
41
|
-
eventManager: EventManager;
|
|
42
|
-
static DocumentFilters = {
|
|
43
|
-
mnemonicType: (item: WalletDocument) => item.type === 'Mnemonic',
|
|
44
|
-
currencyType: (item: WalletDocument) => item.type === 'Currency',
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
constructor({wallet, walletService} = {}) {
|
|
48
|
-
this.accounts = [];
|
|
49
|
-
this.wallet = wallet || Wallet.getInstance();
|
|
50
|
-
this.walletService = walletService || _walletService;
|
|
51
|
-
this.eventManager = new EventManager();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
async load() {
|
|
55
|
-
this.accounts = await this.wallet.query({
|
|
56
|
-
type: 'Address',
|
|
57
|
-
});
|
|
58
|
-
this.eventManager.emit(AccountsEvents.loaded);
|
|
59
|
-
return this.accounts;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async exportAccount(address, password) {
|
|
63
|
-
return this.walletService.exportAccount({address, password});
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async importAccount(json, password) {
|
|
67
|
-
return this.create({
|
|
68
|
-
json,
|
|
69
|
-
password,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
async fetchBalance(address) {
|
|
74
|
-
assert(isAddressValid(address), 'invalid address');
|
|
75
|
-
console.log('fetching balance from substrate');
|
|
76
|
-
let balance;
|
|
77
|
-
|
|
78
|
-
try {
|
|
79
|
-
balance = await substrateService.getAccountBalance({address});
|
|
80
|
-
|
|
81
|
-
console.log('balance found', balance.toString());
|
|
82
|
-
|
|
83
|
-
console.log('updating cache');
|
|
84
|
-
const currency = await this.findCorrelationByType(
|
|
85
|
-
address,
|
|
86
|
-
'Currency',
|
|
87
|
-
true,
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
console.log('currency', currency);
|
|
91
|
-
|
|
92
|
-
if (currency.value !== balance) {
|
|
93
|
-
currency.value = balance;
|
|
94
|
-
|
|
95
|
-
await this.wallet.update(currency);
|
|
96
|
-
}
|
|
97
|
-
} catch(err) {
|
|
98
|
-
console.log('Unable to update cache');
|
|
99
|
-
console.error(err);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
return balance;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
async getBalance(address, skipFetch?) {
|
|
106
|
-
assert(isAddressValid(address), 'address is required');
|
|
107
|
-
|
|
108
|
-
if (!skipFetch) {
|
|
109
|
-
await this.fetchBalance(address);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
const currency = await this.findCorrelationByType(
|
|
113
|
-
address,
|
|
114
|
-
'Currency',
|
|
115
|
-
true,
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
return currency.value;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
getAccounts() {
|
|
122
|
-
return this.accounts;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
getAccountIcon(address: string, isAlternative: boolean): Promise<any> {
|
|
126
|
-
return polkadotService.getPolkadotSvgIcon(address, isAlternative);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
async getByAddress(address: string): Promise<AccountDetails> {
|
|
130
|
-
return Account.with(address);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
async findCorrelationByType(
|
|
134
|
-
address: string,
|
|
135
|
-
type: DocumentType,
|
|
136
|
-
assertResult: boolean,
|
|
137
|
-
) {
|
|
138
|
-
assert(isAddressValid(address), 'invalid address');
|
|
139
|
-
|
|
140
|
-
const correlations = await this.wallet.resolveCorrelations(address);
|
|
141
|
-
const result = correlations.find(c => c.type.includes(type));
|
|
142
|
-
|
|
143
|
-
if (assertResult) {
|
|
144
|
-
assert(!!result, `${type} document not found for the account ${address}`);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return result;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
generateMnemonic(): Promise<string> {
|
|
151
|
-
return utilCryptoService.mnemonicGenerate(12);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
async update(account: AccountDetails) {
|
|
155
|
-
assert(!!account, 'account is required');
|
|
156
|
-
|
|
157
|
-
await this.walletService.update(account);
|
|
158
|
-
this.eventManager.emit(AccountsEvents.accountUpdated);
|
|
159
|
-
await this.load();
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
async getOrCreate(params: CreateAccountParams) {
|
|
163
|
-
return this.create({
|
|
164
|
-
...params,
|
|
165
|
-
getIfExists: true,
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
async create(params: CreateAccountParams): Promise<Account> {
|
|
170
|
-
let {name, json, password, type = 'sr25519', getIfExists, hasBackup} = params;
|
|
171
|
-
|
|
172
|
-
assert(!!name, 'name is required');
|
|
173
|
-
assert(!!type, 'keypair type is required');
|
|
174
|
-
assert(
|
|
175
|
-
KeypairTypes.find(t => t === type),
|
|
176
|
-
`invalid keypair type ${type}`,
|
|
177
|
-
);
|
|
178
|
-
|
|
179
|
-
if (json) {
|
|
180
|
-
assert(typeof password === 'string', 'password is required');
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
const mnemonic =
|
|
184
|
-
params.mnemonic || (!json && (await this.generateMnemonic()));
|
|
185
|
-
const derivePath = params.derivationPath || '';
|
|
186
|
-
|
|
187
|
-
const address = json
|
|
188
|
-
? json.address
|
|
189
|
-
: await keyringService.addressFromUri({
|
|
190
|
-
mnemonic,
|
|
191
|
-
type,
|
|
192
|
-
derivePath,
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
const existingAccountDocs = await this.wallet.query({
|
|
196
|
-
id: address,
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
const accountExists = existingAccountDocs.length > 0;
|
|
200
|
-
|
|
201
|
-
if (getIfExists && accountExists) {
|
|
202
|
-
return this.getByAddress(address);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
assert(!accountExists, Errors.accountAlreadyExists);
|
|
206
|
-
|
|
207
|
-
if (json) {
|
|
208
|
-
const pair = await keyringService.decryptKeyPair({
|
|
209
|
-
jsonData: json,
|
|
210
|
-
password,
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
assert(pair && pair.address, 'invalid keypair');
|
|
214
|
-
|
|
215
|
-
type = pair.type;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
const account: AccountDetails = {
|
|
219
|
-
id: address,
|
|
220
|
-
name,
|
|
221
|
-
type,
|
|
222
|
-
address,
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
const documents = await this.walletService.createAccountDocuments({
|
|
226
|
-
name,
|
|
227
|
-
type,
|
|
228
|
-
derivePath,
|
|
229
|
-
mnemonic,
|
|
230
|
-
json,
|
|
231
|
-
password,
|
|
232
|
-
hasBackup,
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
documents.forEach(doc => {
|
|
236
|
-
this.wallet.eventManager.emit(WalletEvents.documentAdded, doc);
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
this.eventManager.emit(AccountsEvents.accountCreated, account);
|
|
240
|
-
|
|
241
|
-
await this.load();
|
|
242
|
-
|
|
243
|
-
return Account.withAsync(account.address, this);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
async remove(accountId) {
|
|
247
|
-
await this.wallet.remove(accountId);
|
|
248
|
-
|
|
249
|
-
// remove other documents
|
|
250
|
-
// mnemonic phrase and all the stuff
|
|
251
|
-
|
|
252
|
-
this.eventManager.emit(AccountsEvents.accountRemoved, accountId);
|
|
253
|
-
|
|
254
|
-
this.load();
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
static getInstance(options): Accounts {
|
|
258
|
-
if (!Accounts.instance || options) {
|
|
259
|
-
Accounts.instance = new Accounts(options);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
return Accounts.instance;
|
|
263
|
-
}
|
|
264
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import {Wallet} from './wallet';
|
|
2
|
-
import walletLegacyData from '../test/fixtures/legacy-wallet-schema.json';
|
|
3
|
-
import {mockDockService} from '../services/test-utils';
|
|
4
|
-
|
|
5
|
-
describe('DataMigration', () => {
|
|
6
|
-
let unmockDockService;
|
|
7
|
-
|
|
8
|
-
beforeAll(async () => {
|
|
9
|
-
unmockDockService = await mockDockService();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
describe('migrate wallet from v0.1 to v0.2 (file1)', () => {
|
|
13
|
-
let wallet: Wallet;
|
|
14
|
-
|
|
15
|
-
beforeAll(async () => {
|
|
16
|
-
global.localStorage.setItem(
|
|
17
|
-
'import-test',
|
|
18
|
-
JSON.stringify(walletLegacyData),
|
|
19
|
-
);
|
|
20
|
-
wallet = await Wallet.create({walletId: 'import-test'});
|
|
21
|
-
await wallet.load();
|
|
22
|
-
await wallet.ensureNetwork();
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
// TODO: Check why test is failing
|
|
26
|
-
// it('expect to migrate accounts', async () => {
|
|
27
|
-
// const accounts = await wallet.accounts.getAccounts();
|
|
28
|
-
// expect(accounts.length).toBe(3);
|
|
29
|
-
// expect(wallet.migrated).toBeTruthy();
|
|
30
|
-
// });
|
|
31
|
-
|
|
32
|
-
it('expect wallet version to be the latest', async () => {
|
|
33
|
-
const version = await wallet.getVersion();
|
|
34
|
-
expect(version).toBe('0.2');
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
it('expect not to migrate v0.2 wallet', async () => {
|
|
39
|
-
global.localStorage.setItem('dock-wallet', null);
|
|
40
|
-
const wallet = await Wallet.create();
|
|
41
|
-
|
|
42
|
-
await wallet.load();
|
|
43
|
-
await wallet.ensureNetwork();
|
|
44
|
-
|
|
45
|
-
const accounts = await wallet.accounts.getAccounts();
|
|
46
|
-
|
|
47
|
-
expect(accounts.length).toBe(0);
|
|
48
|
-
expect(wallet.migrated).toBeFalsy();
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
it('expect to recover wallet from missing @context on documents', async () => {
|
|
52
|
-
global.localStorage.setItem(
|
|
53
|
-
'bad-documents',
|
|
54
|
-
JSON.stringify({
|
|
55
|
-
'doc:d4bd8145-4a56-456e-9b78-71509184f6ed': {
|
|
56
|
-
// bad context data
|
|
57
|
-
'@context': null,
|
|
58
|
-
id: '6ee76a80-bdf2-4cf8-9647-4897ed6feadd',
|
|
59
|
-
name: 'Account 1',
|
|
60
|
-
type: 'Address',
|
|
61
|
-
value: 'some address',
|
|
62
|
-
},
|
|
63
|
-
}),
|
|
64
|
-
);
|
|
65
|
-
const wallet = await Wallet.create({walletId: 'bad-documents'});
|
|
66
|
-
await wallet.load();
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
afterAll(() => {
|
|
70
|
-
return unmockDockService();
|
|
71
|
-
});
|
|
72
|
-
});
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import {Logger} from '../core/logger';
|
|
3
|
-
import {getStorage} from '../core/storage';
|
|
4
|
-
import {Wallet} from './wallet';
|
|
5
|
-
|
|
6
|
-
type MigrateParams = {
|
|
7
|
-
wallet: Wallet,
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const currentWalletVersion = '0.2';
|
|
11
|
-
|
|
12
|
-
export async function migrate({wallet}: MigrateParams) {
|
|
13
|
-
Logger.debug('Starting wallet migration');
|
|
14
|
-
|
|
15
|
-
const docs = await wallet.query({});
|
|
16
|
-
|
|
17
|
-
if (!docs.length) {
|
|
18
|
-
Logger.debug(
|
|
19
|
-
`Empty wallet, adding version ${currentWalletVersion} document`,
|
|
20
|
-
);
|
|
21
|
-
await wallet.add({
|
|
22
|
-
type: 'Metadata',
|
|
23
|
-
walletVersion: currentWalletVersion,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const version = await wallet.getVersion();
|
|
28
|
-
let migrated = false;
|
|
29
|
-
|
|
30
|
-
Logger.debug(`Wallet version ${version}`);
|
|
31
|
-
|
|
32
|
-
if (version !== currentWalletVersion) {
|
|
33
|
-
const snapshot = await getStorage().getItem(wallet.walletId);
|
|
34
|
-
await getStorage().setItem(`${wallet.walletId}-snapshot`, snapshot);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (version === '0.1') {
|
|
38
|
-
const targetVersion = '0.2';
|
|
39
|
-
Logger.debug(`Migrating wallet ${version} to ${targetVersion}`);
|
|
40
|
-
const legacyAccounts = docs.filter((doc: any) => doc.type === 'Account');
|
|
41
|
-
await Promise.all(
|
|
42
|
-
legacyAccounts.map(async (account: any) => {
|
|
43
|
-
const relatedDocs = docs.filter(doc =>
|
|
44
|
-
account.correlation.find(id => id === doc.id),
|
|
45
|
-
);
|
|
46
|
-
const mnemonicDoc = relatedDocs.find(doc => doc.type === 'Mnemonic');
|
|
47
|
-
const keyPairDoc = relatedDocs.find(doc => doc.type === 'KeyPair');
|
|
48
|
-
|
|
49
|
-
try {
|
|
50
|
-
if (mnemonicDoc) {
|
|
51
|
-
await wallet.remove(mnemonicDoc.id);
|
|
52
|
-
await wallet.remove(account.id);
|
|
53
|
-
await wallet.accounts.create({
|
|
54
|
-
mnemonic: mnemonicDoc.value,
|
|
55
|
-
name: account.meta.name,
|
|
56
|
-
type: account.meta.keypairType,
|
|
57
|
-
derivationPath: account.meta.derivationPath,
|
|
58
|
-
});
|
|
59
|
-
} else if (keyPairDoc) {
|
|
60
|
-
console.log(keyPairDoc);
|
|
61
|
-
await wallet.remove(keyPairDoc.id);
|
|
62
|
-
await wallet.remove(account.id);
|
|
63
|
-
await wallet.accounts.create({
|
|
64
|
-
name: account.meta.name,
|
|
65
|
-
json: keyPairDoc.value,
|
|
66
|
-
password: '',
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
} catch (err) {
|
|
70
|
-
Logger.error(`failed to migrate account ${account.id}`);
|
|
71
|
-
Logger.error(err);
|
|
72
|
-
throw err;
|
|
73
|
-
}
|
|
74
|
-
}),
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
await wallet.add({
|
|
78
|
-
type: 'Metadata',
|
|
79
|
-
walletVersion: `${targetVersion}`,
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
migrated = true;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return migrated;
|
|
86
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import {getPromiseError} from '../services/test-utils';
|
|
2
|
-
import {walletService} from '../services/wallet/service';
|
|
3
|
-
import emptyBackup from '../test/fixtures/backup-files/empty-wallet-backup.json';
|
|
4
|
-
import {WalletBackup} from './wallet-backup';
|
|
5
|
-
|
|
6
|
-
describe('WalletBackup', () => {
|
|
7
|
-
describe('validate', () => {
|
|
8
|
-
beforeEach(async () => {
|
|
9
|
-
await walletService.create({
|
|
10
|
-
walletId: 'wallet',
|
|
11
|
-
type: 'memory',
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
await walletService.removeAll();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
it('expect to handle empty file', async () => {
|
|
18
|
-
const result = await getPromiseError(() =>
|
|
19
|
-
WalletBackup.getInstance().validate(emptyBackup, 'test'),
|
|
20
|
-
);
|
|
21
|
-
expect(result.message).toBeDefined();
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
});
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import {walletService} from '../services/wallet/service';
|
|
4
|
-
|
|
5
|
-
export const invalidFileMessage = 'Invalid backup file';
|
|
6
|
-
export const noDocumentsFound = 'No documents found';
|
|
7
|
-
export const noAccountsFound = 'No accounts found';
|
|
8
|
-
|
|
9
|
-
export class WalletBackup {
|
|
10
|
-
async validate(data, password) {
|
|
11
|
-
assert(!!data.credentialSubject, invalidFileMessage);
|
|
12
|
-
|
|
13
|
-
await walletService.importWallet({json: data, password});
|
|
14
|
-
|
|
15
|
-
const docs = await walletService.query({});
|
|
16
|
-
|
|
17
|
-
console.log(docs);
|
|
18
|
-
|
|
19
|
-
if (docs.length === 0) {
|
|
20
|
-
throw new Error(noDocumentsFound);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const accounts = docs.filter(doc => doc.type === 'Account');
|
|
24
|
-
|
|
25
|
-
if (accounts.length === 0) {
|
|
26
|
-
console.log('no accounts found');
|
|
27
|
-
console.log(docs);
|
|
28
|
-
throw new Error(noAccountsFound);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const warnings = [];
|
|
32
|
-
|
|
33
|
-
for (let account of accounts) {
|
|
34
|
-
const correlationDocs = account.correlation.map(docId =>
|
|
35
|
-
docs.find(doc => doc.id === docId),
|
|
36
|
-
);
|
|
37
|
-
const hasMnemonic = correlationDocs.find(doc => doc.type === 'Mnemonic');
|
|
38
|
-
const hasKeyPair = correlationDocs.find(doc => doc.type === 'KeyPair');
|
|
39
|
-
|
|
40
|
-
if (!hasMnemonic && !hasKeyPair) {
|
|
41
|
-
warnings.push(`keypair not found for account ${account.id}`);
|
|
42
|
-
|
|
43
|
-
await walletService.update({
|
|
44
|
-
...account,
|
|
45
|
-
meta: {
|
|
46
|
-
...account.meta,
|
|
47
|
-
readOnly: true,
|
|
48
|
-
keypairNotFoundWarning: true,
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return {
|
|
55
|
-
accounts,
|
|
56
|
-
warnings,
|
|
57
|
-
docs,
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
static getInstance(): WalletBackup {
|
|
62
|
-
if (!WalletBackup.instance) {
|
|
63
|
-
WalletBackup.instance = new WalletBackup();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return WalletBackup.instance;
|
|
67
|
-
}
|
|
68
|
-
}
|