@docknetwork/wallet-sdk-wasm 1.5.9 → 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 -23
- package/lib/index.mjs +13 -23
- package/lib/rpc-server.js +13 -23
- package/lib/rpc-server.mjs +13 -23
- package/lib/rpc-util.js +14 -0
- package/lib/rpc-util.mjs +14 -0
- package/lib/services/blockchain/index.js +3 -6
- package/lib/services/blockchain/index.mjs +3 -6
- package/lib/services/blockchain/service.js +4 -6
- package/lib/services/blockchain/service.mjs +4 -6
- package/lib/services/credential/bbs-revocation.js +4 -7
- package/lib/services/credential/bbs-revocation.mjs +3 -6
- 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 -13
- package/lib/services/credential/index.mjs +11 -13
- package/lib/services/credential/service.js +18 -18
- package/lib/services/credential/service.mjs +15 -15
- package/lib/services/credential/utils.js +65 -28
- package/lib/services/credential/utils.mjs +62 -32
- package/lib/services/dids/index.js +11 -14
- package/lib/services/dids/index.mjs +11 -14
- package/lib/services/dids/keypair-utils.js +142 -0
- package/lib/services/dids/keypair-utils.mjs +113 -0
- package/lib/services/dids/service.js +15 -34
- package/lib/services/dids/service.mjs +15 -34
- package/lib/services/edv/index.js +8 -14
- package/lib/services/edv/index.mjs +8 -14
- package/lib/services/edv/service.js +10 -22
- package/lib/services/edv/service.mjs +10 -22
- package/lib/services/index.js +13 -25
- package/lib/services/index.mjs +13 -25
- 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 -44
- package/lib/services/test-utils.mjs +1 -44
- 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 -23
- package/lib/setup-nodejs.mjs +13 -23
- package/lib/setup-tests.js +13 -23
- package/lib/setup-tests.mjs +13 -23
- 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.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/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 +5 -25
- 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/service.ts +1 -0
- 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 +8 -19
- package/src/services/dids/keypair-utils.js +111 -0
- package/src/services/dids/service.ts +6 -25
- package/src/services/edv/service.ts +2 -9
- package/src/services/index.js +0 -4
- package/src/services/test-utils.js +0 -29
- 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-357ab05d.js +0 -742
- package/lib/account-399e6053.js +0 -752
- 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 -48
- package/lib/modules/account.mjs +0 -40
- package/lib/modules/accounts.js +0 -49
- package/lib/modules/accounts.mjs +0 -40
- 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 -49
- package/lib/modules/wallet.mjs +0 -40
- 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/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 -48
- 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/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 -81
- package/lib/test/setup-test-state.mjs +0 -73
- 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 -63
- package/src/modules/accounts.ts +0 -231
- package/src/modules/data-migration.test.js +0 -61
- 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 -216
- 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/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 -35
- package/src/test/test-wallet.test.js +0 -15
package/src/modules/wallet.ts
DELETED
|
@@ -1,424 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import {v4 as uuid} from 'uuid';
|
|
4
|
-
import {getStorage} from '../core/storage';
|
|
5
|
-
import {blockchainService} from '../services/blockchain';
|
|
6
|
-
import {keyringService} from '../services/keyring';
|
|
7
|
-
import {utilCryptoService} from '../services/util-crypto';
|
|
8
|
-
import {walletService} from '../services/wallet';
|
|
9
|
-
import {DocumentType, WalletDocument} from '../types';
|
|
10
|
-
import {Accounts} from './accounts';
|
|
11
|
-
import {EventManager} from './event-manager';
|
|
12
|
-
import {NetworkManager} from './network-manager';
|
|
13
|
-
import {migrate} from './data-migration';
|
|
14
|
-
import {Logger} from '../core/logger';
|
|
15
|
-
import legacyWalletSchema from '../test/fixtures/legacy-wallet-schema.json';
|
|
16
|
-
|
|
17
|
-
/** Wallet events */
|
|
18
|
-
export const WalletEvents = {
|
|
19
|
-
ready: 'ready',
|
|
20
|
-
error: 'error',
|
|
21
|
-
migrated: 'migrated',
|
|
22
|
-
statusUpdated: 'status-updated',
|
|
23
|
-
documentAdded: 'document-added',
|
|
24
|
-
documentUpdated: 'document-updated',
|
|
25
|
-
documentRemoved: 'document-removed',
|
|
26
|
-
walletDeleted: 'wallet-deleted',
|
|
27
|
-
walletImported: 'wallet-imported',
|
|
28
|
-
networkUpdated: 'network-updated',
|
|
29
|
-
networkConnected: 'network-connected',
|
|
30
|
-
networkError: 'network-error',
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Can be used to debug the data migration behavior in the wallet
|
|
35
|
-
*/
|
|
36
|
-
const MOCK_STORAGE = process.env.MOCK_STORAGE;
|
|
37
|
-
|
|
38
|
-
async function shouldMockStorage(walletId) {
|
|
39
|
-
if (MOCK_STORAGE !== 'true') {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
await getStorage().setItem(walletId, JSON.stringify(legacyWalletSchema));
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
/** Wallet status */
|
|
47
|
-
export type WalletStatus = 'closed' | 'loading' | 'ready' | 'error';
|
|
48
|
-
|
|
49
|
-
// const environment = getEnvironment();
|
|
50
|
-
|
|
51
|
-
// if (environment !== 'reactnative') {
|
|
52
|
-
// require('../setup-nodejs');
|
|
53
|
-
// }
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Wallet
|
|
57
|
-
*/
|
|
58
|
-
class Wallet {
|
|
59
|
-
networkManager: NetworkManager;
|
|
60
|
-
context: string[];
|
|
61
|
-
status: WalletStatus;
|
|
62
|
-
apiConnected: boolean;
|
|
63
|
-
eventManager: EventManager;
|
|
64
|
-
walletId: string;
|
|
65
|
-
accounts: Accounts;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* @constructor
|
|
69
|
-
* @param {object} params
|
|
70
|
-
*/
|
|
71
|
-
constructor({
|
|
72
|
-
walletId = 'wallet',
|
|
73
|
-
context = ['https://w3id.org/wallet/v1'],
|
|
74
|
-
} = {}) {
|
|
75
|
-
this.walletId = walletId;
|
|
76
|
-
this.context = context;
|
|
77
|
-
this.networkManager = NetworkManager.getInstance();
|
|
78
|
-
this.eventManager = new EventManager();
|
|
79
|
-
this.accounts = Accounts.getInstance({wallet: this});
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
async recoverFromBadState() {
|
|
83
|
-
const storageItems = await getStorage().getItem(this.walletId);
|
|
84
|
-
const walletData = JSON.parse(storageItems);
|
|
85
|
-
|
|
86
|
-
Object.keys(walletData).forEach(docKey => {
|
|
87
|
-
const document = walletData[docKey];
|
|
88
|
-
if (!document['@context']) {
|
|
89
|
-
document['@context'] = this.context;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
await getStorage().setItem(this.walletId, JSON.stringify(walletData));
|
|
94
|
-
|
|
95
|
-
await this.createWallet();
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
async createWallet() {
|
|
99
|
-
await walletService.create({
|
|
100
|
-
walletId: this.walletId,
|
|
101
|
-
type: 'rpc',
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
await walletService.sync();
|
|
105
|
-
await walletService.load();
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Get the y value.
|
|
109
|
-
* @return {Promise} The y value.
|
|
110
|
-
*/
|
|
111
|
-
async load() {
|
|
112
|
-
if (this.status === 'loading') {
|
|
113
|
-
return this.eventManager.waitFor(WalletEvents.ready);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (this.status === 'ready') {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
this.setStatus('loading');
|
|
121
|
-
|
|
122
|
-
// TODO: get network from dataStore
|
|
123
|
-
const networkId = (await getStorage().getItem('networkId')) || 'mainnet';
|
|
124
|
-
this.networkManager.setNetworkId(networkId);
|
|
125
|
-
|
|
126
|
-
await shouldMockStorage(this.walletId);
|
|
127
|
-
|
|
128
|
-
try {
|
|
129
|
-
await utilCryptoService.cryptoWaitReady();
|
|
130
|
-
await keyringService.initialize({
|
|
131
|
-
ss58Format: this.networkManager.getNetworkInfo().addressPrefix,
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
try {
|
|
135
|
-
await this.createWallet();
|
|
136
|
-
} catch (err) {
|
|
137
|
-
await this.recoverFromBadState();
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
this.setStatus('ready');
|
|
141
|
-
|
|
142
|
-
this.eventManager.emit(WalletEvents.ready);
|
|
143
|
-
|
|
144
|
-
this.initNetwork();
|
|
145
|
-
|
|
146
|
-
this.migrated = await migrate({wallet: this});
|
|
147
|
-
this.eventManager.emit(WalletEvents.migrated);
|
|
148
|
-
} catch (err) {
|
|
149
|
-
this.setStatus('error');
|
|
150
|
-
this.eventManager.emit(WalletEvents.error, err);
|
|
151
|
-
throw err;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
async getVersion() {
|
|
156
|
-
const docs = await this.query({});
|
|
157
|
-
const versionDoc = docs.find(
|
|
158
|
-
(item: WalletDocument) =>
|
|
159
|
-
item.type === 'Metadata' && !!item.walletVersion,
|
|
160
|
-
);
|
|
161
|
-
return (versionDoc && versionDoc.walletVersion) || '0.1';
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
*
|
|
165
|
-
* Close wallet
|
|
166
|
-
*/
|
|
167
|
-
async close() {
|
|
168
|
-
await blockchainService.disconnect();
|
|
169
|
-
this.setStatus('closed');
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
async switchNetwork(networkId) {
|
|
173
|
-
getStorage().setItem('networkId', networkId);
|
|
174
|
-
|
|
175
|
-
this.networkManager.setNetworkId(networkId);
|
|
176
|
-
|
|
177
|
-
await this.initNetwork();
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* delete wallet
|
|
181
|
-
*/
|
|
182
|
-
async deleteWallet() {
|
|
183
|
-
this.eventManager.emit(WalletEvents.walletDeleted);
|
|
184
|
-
await getStorage().removeItem('logs');
|
|
185
|
-
await getStorage().removeItem('transactions');
|
|
186
|
-
await getStorage().removeItem(this.walletId);
|
|
187
|
-
await walletService.create({
|
|
188
|
-
walletId: this.walletId,
|
|
189
|
-
});
|
|
190
|
-
await walletService.load();
|
|
191
|
-
await walletService.sync();
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
*
|
|
196
|
-
* @param {*} status
|
|
197
|
-
*/
|
|
198
|
-
setStatus(status: WalletStatus) {
|
|
199
|
-
assert(!!status, 'status is required');
|
|
200
|
-
|
|
201
|
-
this.status = status;
|
|
202
|
-
this.eventManager.emit(WalletEvents.statusUpdated, status);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Ensure network
|
|
207
|
-
*
|
|
208
|
-
* @returns Promise
|
|
209
|
-
*/
|
|
210
|
-
async ensureNetwork() {
|
|
211
|
-
if (!this.connectionInProgress) {
|
|
212
|
-
this.initNetwork();
|
|
213
|
-
} else if (this.networkReady) {
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
await this.eventManager.waitFor(WalletEvents.networkConnected);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
async initNetwork() {
|
|
221
|
-
try {
|
|
222
|
-
this.connectionInProgress = true;
|
|
223
|
-
|
|
224
|
-
const networkInfo = this.networkManager.getNetworkInfo();
|
|
225
|
-
await keyringService.initialize({
|
|
226
|
-
ss58Format: networkInfo.addressPrefix,
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
Logger.debug(`Initializing network ${JSON.stringify(networkInfo)}`);
|
|
230
|
-
const isDockConnected = await blockchainService.isApiConnected();
|
|
231
|
-
|
|
232
|
-
if (isDockConnected) {
|
|
233
|
-
await blockchainService.disconnect();
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
await blockchainService.init({
|
|
237
|
-
cheqdApiUrl: networkInfo.cheqdApiUrl,
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
this.eventManager.emit(WalletEvents.networkConnected);
|
|
241
|
-
} catch (err) {
|
|
242
|
-
this.eventManager.emit(WalletEvents.error, err);
|
|
243
|
-
throw err;
|
|
244
|
-
} finally {
|
|
245
|
-
this.connectionInProgress = false;
|
|
246
|
-
this.networkReady = true;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
async waitReady() {
|
|
251
|
-
if (this.status === 'ready') {
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
let warningTimeout = setTimeout(() => {
|
|
256
|
-
throw new Error(
|
|
257
|
-
'Wallet module timed out. Make sure the wallet is loaded, or you are not using multiple instances',
|
|
258
|
-
);
|
|
259
|
-
}, 6000);
|
|
260
|
-
|
|
261
|
-
await this.eventManager.waitFor(WalletEvents.ready);
|
|
262
|
-
|
|
263
|
-
clearTimeout(warningTimeout);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
getContext() {
|
|
267
|
-
return this.getContext;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
setContext(context) {
|
|
271
|
-
this.context = context;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
assertReady() {
|
|
275
|
-
return this.waitReady();
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Remove document
|
|
279
|
-
* @returns Promise<boolean>
|
|
280
|
-
*/
|
|
281
|
-
async remove(documentId) {
|
|
282
|
-
await walletService.remove(documentId);
|
|
283
|
-
this.eventManager.emit(WalletEvents.documentRemoved, documentId);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
async upsert(document: WalletDocument) {
|
|
287
|
-
const existing = await this.getDocumentById(document.id);
|
|
288
|
-
|
|
289
|
-
if (existing) {
|
|
290
|
-
return this.update({
|
|
291
|
-
...existing,
|
|
292
|
-
...document,
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
return this.add(document);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
/**
|
|
300
|
-
* Add document to the wallet
|
|
301
|
-
* @param {*} options
|
|
302
|
-
* @throws InvalidAccountErrors
|
|
303
|
-
* @returns document
|
|
304
|
-
*/
|
|
305
|
-
async add(document: WalletDocument) {
|
|
306
|
-
await this.assertReady();
|
|
307
|
-
|
|
308
|
-
const newDocument = {
|
|
309
|
-
...document,
|
|
310
|
-
id: document.id || uuid(),
|
|
311
|
-
'@context': document.context || this.context,
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
await walletService.add(newDocument);
|
|
315
|
-
|
|
316
|
-
this.eventManager.emit(WalletEvents.documentAdded, newDocument);
|
|
317
|
-
|
|
318
|
-
return newDocument;
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
async update(document: WalletDocument) {
|
|
322
|
-
await this.assertReady();
|
|
323
|
-
|
|
324
|
-
await walletService.update({
|
|
325
|
-
'@context': document['@context'] || this.context,
|
|
326
|
-
...document,
|
|
327
|
-
});
|
|
328
|
-
this.eventManager.emit(WalletEvents.documentUpdated, document);
|
|
329
|
-
return document;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
async export(password) {
|
|
333
|
-
return walletService.exportWallet(password);
|
|
334
|
-
}
|
|
335
|
-
/**
|
|
336
|
-
* Add all documents in the wallet
|
|
337
|
-
* @param {*} options
|
|
338
|
-
* @returns document
|
|
339
|
-
*/
|
|
340
|
-
async query(
|
|
341
|
-
params: {
|
|
342
|
-
type: DocumentType,
|
|
343
|
-
id: string,
|
|
344
|
-
name: string,
|
|
345
|
-
} = {},
|
|
346
|
-
): Promise<WalletDocument[]> {
|
|
347
|
-
await this.assertReady();
|
|
348
|
-
|
|
349
|
-
let equals;
|
|
350
|
-
|
|
351
|
-
Object.keys(params).forEach(key => {
|
|
352
|
-
const value = params[key];
|
|
353
|
-
|
|
354
|
-
if (!value) {
|
|
355
|
-
return;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
if (!equals) {
|
|
359
|
-
equals = {};
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
equals[`content.${key}`] = value;
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
return walletService.query({
|
|
366
|
-
equals,
|
|
367
|
-
});
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
async getDocumentById(documentId) {
|
|
371
|
-
await this.assertReady();
|
|
372
|
-
|
|
373
|
-
const result = await this.query({id: documentId});
|
|
374
|
-
return result[0];
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
static async create({walletId, json, password} = {}): Wallet {
|
|
378
|
-
const wallet = new Wallet({walletId});
|
|
379
|
-
|
|
380
|
-
await wallet.load();
|
|
381
|
-
|
|
382
|
-
if (json) {
|
|
383
|
-
await wallet.importWallet({json, password});
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
return wallet;
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
async importWallet({json, password}) {
|
|
390
|
-
await this.deleteWallet();
|
|
391
|
-
await walletService.importWallet({json, password});
|
|
392
|
-
this.migrated = await migrate({wallet: this});
|
|
393
|
-
await this.eventManager.emit(WalletEvents.walletImported);
|
|
394
|
-
}
|
|
395
|
-
async getDocumentsFromEncryptedWallet({encryptedJSONWallet, password}) {
|
|
396
|
-
return walletService.getDocumentsFromEncryptedWallet({
|
|
397
|
-
encryptedJSONWallet,
|
|
398
|
-
password,
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
|
-
async resolveCorrelations(documentId) {
|
|
402
|
-
return walletService.resolveCorrelations(documentId);
|
|
403
|
-
}
|
|
404
|
-
async exportDocuments({documents, password}) {
|
|
405
|
-
return walletService.exportDocuments({
|
|
406
|
-
documents,
|
|
407
|
-
password,
|
|
408
|
-
});
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
/**
|
|
412
|
-
* Get wallet module instance
|
|
413
|
-
* @returns Wallet
|
|
414
|
-
*/
|
|
415
|
-
static getInstance(): Wallet {
|
|
416
|
-
if (!Wallet.instance) {
|
|
417
|
-
Wallet.instance = new Wallet();
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
return Wallet.instance;
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
export {Wallet};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
2
|
-
import {isNumberValid} from '../../core/validation';
|
|
3
|
-
|
|
4
|
-
export const validation = {
|
|
5
|
-
sum(params: SumParams) {
|
|
6
|
-
assert(isNumberValid(params.number1), 'invalid number1');
|
|
7
|
-
assert(isNumberValid(params.number2), 'invalid number2');
|
|
8
|
-
},
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export type SumParams = {
|
|
12
|
-
number1: number,
|
|
13
|
-
number2: number,
|
|
14
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import {assertRpcService, getPromiseError} from '../test-utils';
|
|
2
|
-
import {validation} from './configs';
|
|
3
|
-
import {exampleService as service} from './service';
|
|
4
|
-
import {ExampleServiceRpc} from './service-rpc';
|
|
5
|
-
|
|
6
|
-
describe('ExampleService', () => {
|
|
7
|
-
it('ServiceRpc', () => {
|
|
8
|
-
assertRpcService(ExampleServiceRpc, service, validation);
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
describe('service', () => {
|
|
12
|
-
beforeAll(async () => {});
|
|
13
|
-
|
|
14
|
-
describe('sum', () => {
|
|
15
|
-
it('expect to sum numbers', async () => {
|
|
16
|
-
const result = await service.sum({number1: 1, number2: 1});
|
|
17
|
-
expect(result).toBe(2);
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
it('expect to validate params', async () => {
|
|
21
|
-
const error = await getPromiseError(() =>
|
|
22
|
-
service.sum({number1: null, number2: 1}),
|
|
23
|
-
);
|
|
24
|
-
expect(error.message).toBe('invalid number1');
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import {SumParams, validation} from './configs';
|
|
3
|
-
|
|
4
|
-
export class ExampleService {
|
|
5
|
-
rpcMethods = [ExampleService.prototype.sum];
|
|
6
|
-
|
|
7
|
-
constructor() {
|
|
8
|
-
this.name = 'example';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
sum(params: SumParams) {
|
|
12
|
-
validation.sum(params);
|
|
13
|
-
|
|
14
|
-
return params.number1 + params.number2;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const exampleService: ExampleService = new ExampleService();
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
// @ts-nocheck
|
|
2
|
-
import assert from 'assert';
|
|
3
|
-
import {assertKeyType} from '../../core/validation';
|
|
4
|
-
|
|
5
|
-
export const validation = {
|
|
6
|
-
addFromJson({jsonData, password}: AddFromJsonParams) {
|
|
7
|
-
assert(typeof jsonData === 'object', 'invalid jsonData');
|
|
8
|
-
assert(typeof password === 'string', 'invalid password');
|
|
9
|
-
},
|
|
10
|
-
initialize({ss58Format, type}: InitializeParams) {
|
|
11
|
-
assert(typeof ss58Format === 'number', 'invalid ss58Format');
|
|
12
|
-
|
|
13
|
-
if (type) {
|
|
14
|
-
assertKeyType(type);
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
addFromMnemonic({mnemonic, meta, type}: AddFromMnemonicParams) {
|
|
18
|
-
assert(typeof mnemonic === 'string', 'invalid mnemonic');
|
|
19
|
-
|
|
20
|
-
if (type) {
|
|
21
|
-
assertKeyType(type);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (meta) {
|
|
25
|
-
assert(typeof meta === 'object', 'invalid meta');
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
getKeyringPair(params: GetKeyringParams) {
|
|
29
|
-
const {mnemonic, derivePath, meta, type} = params;
|
|
30
|
-
|
|
31
|
-
assert(
|
|
32
|
-
!params.keyPairType,
|
|
33
|
-
'invalid parameter keyPairType, you should use type instead',
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
assert(typeof mnemonic === 'string', 'invalid mnemonic');
|
|
37
|
-
|
|
38
|
-
if (derivePath) {
|
|
39
|
-
assert(typeof derivePath === 'string', 'invalid derivePath');
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (type) {
|
|
43
|
-
assertKeyType(type);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (meta) {
|
|
47
|
-
assert(typeof meta === 'object', 'invalid meta');
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
createFromPair(params: CreateFromPairParams) {
|
|
51
|
-
const {pair, meta, type} = params;
|
|
52
|
-
|
|
53
|
-
assert(typeof pair === 'object', 'invalid pair');
|
|
54
|
-
assert(pair.publicKey instanceof Uint8Array, 'invalid publicKey');
|
|
55
|
-
assert(pair.secretKey instanceof Uint8Array, 'invalid secretKey');
|
|
56
|
-
|
|
57
|
-
if (type) {
|
|
58
|
-
assertKeyType(type);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (meta) {
|
|
62
|
-
assert(typeof meta === 'object', 'invalid meta');
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
signData(params: SignDataParams) {
|
|
67
|
-
assert(!!params.keyPair, 'invalid keypair');
|
|
68
|
-
assert(!!params.data, 'invalid data');
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
validation.addressFromUri = validation.getKeyringPair;
|
|
73
|
-
|
|
74
|
-
export const serviceName = 'keyring';
|
|
75
|
-
|
|
76
|
-
export type GetKeyringParams = {
|
|
77
|
-
mnemonic: string,
|
|
78
|
-
meta?: any,
|
|
79
|
-
type?: string,
|
|
80
|
-
derivePath?: string,
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export type CreateFromPairParams = {
|
|
84
|
-
pair: any,
|
|
85
|
-
meta?: any,
|
|
86
|
-
type?: string,
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export type AddressFromUriParams = GetKeyringParams;
|
|
90
|
-
|
|
91
|
-
export type AddFromJsonParams = {
|
|
92
|
-
jsonData: string,
|
|
93
|
-
password: string,
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
export type InitializeParams = {
|
|
97
|
-
ss58Format: number,
|
|
98
|
-
type?: string,
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
export type AddFromMnemonicParams = {
|
|
102
|
-
mnemonic: string,
|
|
103
|
-
meta?: any,
|
|
104
|
-
type: string,
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
export type SignDataParams = {
|
|
108
|
-
keyPair: any,
|
|
109
|
-
data: any,
|
|
110
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {keyringService} from './service';
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import {mnemonicGenerate} from '@polkadot/util-crypto';
|
|
2
|
-
import {NetworkManager} from '../../modules/network-manager';
|
|
3
|
-
import {assertRpcService, getPromiseError} from '../test-utils';
|
|
4
|
-
import {validation} from './configs';
|
|
5
|
-
import {keyringService as service} from './service';
|
|
6
|
-
import {KeyringServiceRpc} from './service-rpc';
|
|
7
|
-
|
|
8
|
-
describe('KeyringService', () => {
|
|
9
|
-
it('ServiceRpc', () => {
|
|
10
|
-
assertRpcService(KeyringServiceRpc, service, validation);
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
describe('service', () => {
|
|
14
|
-
beforeAll(async () => {});
|
|
15
|
-
|
|
16
|
-
describe('initialize', () => {
|
|
17
|
-
it('expect to initialize keyring', async () => {
|
|
18
|
-
await service.initialize({
|
|
19
|
-
ss58Format:
|
|
20
|
-
NetworkManager.getInstance().getNetworkInfo().addressPrefix,
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
expect(service.keyring).toBeDefined();
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it('expect to validate params', async () => {
|
|
27
|
-
const error = await getPromiseError(() => service.initialize({}));
|
|
28
|
-
expect(error.message).toBe('invalid ss58Format');
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
describe('addFromMnemonic', () => {
|
|
33
|
-
it('expect to add keypair from mnemonic', async () => {
|
|
34
|
-
await service.addFromMnemonic({
|
|
35
|
-
mnemonic: mnemonicGenerate(12),
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
expect(service.keyring).toBeDefined();
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it('expect to validate params', async () => {
|
|
42
|
-
const error = await getPromiseError(() => service.addFromMnemonic({}));
|
|
43
|
-
|
|
44
|
-
expect(error.message).toBe('invalid mnemonic');
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
});
|