@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.
Files changed (322) hide show
  1. package/lib/core/format-utils.js +0 -28
  2. package/lib/core/format-utils.mjs +1 -24
  3. package/lib/core/validation.js +1 -24
  4. package/lib/core/validation.mjs +2 -21
  5. package/lib/index.js +13 -32
  6. package/lib/index.mjs +13 -32
  7. package/lib/rpc-server.js +13 -32
  8. package/lib/rpc-server.mjs +13 -32
  9. package/lib/rpc-util.js +14 -0
  10. package/lib/rpc-util.mjs +14 -0
  11. package/lib/services/blockchain/index.js +3 -8
  12. package/lib/services/blockchain/index.mjs +3 -8
  13. package/lib/services/blockchain/service.js +37 -80
  14. package/lib/services/blockchain/service.mjs +38 -81
  15. package/lib/services/credential/bbs-revocation.js +4 -9
  16. package/lib/services/credential/bbs-revocation.mjs +3 -8
  17. package/lib/services/credential/bound-check.js +9 -4
  18. package/lib/services/credential/bound-check.mjs +9 -4
  19. package/lib/services/credential/index.js +11 -15
  20. package/lib/services/credential/index.mjs +11 -15
  21. package/lib/services/credential/service.js +18 -20
  22. package/lib/services/credential/service.mjs +15 -17
  23. package/lib/services/credential/utils.js +65 -28
  24. package/lib/services/credential/utils.mjs +62 -32
  25. package/lib/services/dids/index.js +11 -16
  26. package/lib/services/dids/index.mjs +11 -16
  27. package/lib/services/dids/keypair-utils.js +142 -0
  28. package/lib/services/dids/keypair-utils.mjs +113 -0
  29. package/lib/services/dids/service.js +16 -37
  30. package/lib/services/dids/service.mjs +16 -37
  31. package/lib/services/edv/index.js +8 -16
  32. package/lib/services/edv/index.mjs +8 -16
  33. package/lib/services/edv/service.js +10 -24
  34. package/lib/services/edv/service.mjs +10 -24
  35. package/lib/services/index.js +13 -37
  36. package/lib/services/index.mjs +13 -37
  37. package/lib/services/pex/service.js +2 -1
  38. package/lib/services/pex/service.mjs +2 -1
  39. package/lib/services/relay-service/configs.js +0 -1
  40. package/lib/services/relay-service/configs.mjs +0 -1
  41. package/lib/services/relay-service/index.android.js +0 -1
  42. package/lib/services/relay-service/index.android.mjs +0 -1
  43. package/lib/services/relay-service/index.ios.js +0 -1
  44. package/lib/services/relay-service/index.ios.mjs +0 -1
  45. package/lib/services/relay-service/index.js +0 -1
  46. package/lib/services/relay-service/index.mjs +0 -1
  47. package/lib/services/relay-service/service-rpc.js +0 -1
  48. package/lib/services/relay-service/service-rpc.mjs +0 -1
  49. package/lib/services/relay-service/service.js +0 -1
  50. package/lib/services/relay-service/service.mjs +0 -1
  51. package/lib/services/test-utils.js +0 -239
  52. package/lib/services/test-utils.mjs +1 -234
  53. package/lib/services/util-crypto/configs.js +0 -12
  54. package/lib/services/util-crypto/configs.mjs +0 -12
  55. package/lib/services/util-crypto/index.android.js +0 -3
  56. package/lib/services/util-crypto/index.android.mjs +0 -3
  57. package/lib/services/util-crypto/index.ios.js +0 -3
  58. package/lib/services/util-crypto/index.ios.mjs +0 -3
  59. package/lib/services/util-crypto/index.js +4 -7
  60. package/lib/services/util-crypto/index.mjs +4 -7
  61. package/lib/services/util-crypto/service-rpc.js +0 -23
  62. package/lib/services/util-crypto/service-rpc.mjs +0 -23
  63. package/lib/services/util-crypto/service.js +68 -61
  64. package/lib/services/util-crypto/service.mjs +50 -59
  65. package/lib/services/wallet/configs.js +0 -63
  66. package/lib/services/wallet/configs.mjs +1 -64
  67. package/lib/services/wallet/index.android.js +0 -1
  68. package/lib/services/wallet/index.android.mjs +0 -1
  69. package/lib/services/wallet/index.ios.js +0 -1
  70. package/lib/services/wallet/index.ios.mjs +0 -1
  71. package/lib/services/wallet/index.js +2 -12
  72. package/lib/services/wallet/index.mjs +2 -12
  73. package/lib/services/wallet/service-rpc.js +0 -77
  74. package/lib/services/wallet/service-rpc.mjs +0 -77
  75. package/lib/services/wallet/service.js +1 -215
  76. package/lib/services/wallet/service.mjs +1 -211
  77. package/lib/setup-nodejs.js +13 -32
  78. package/lib/setup-nodejs.mjs +13 -32
  79. package/lib/setup-tests.js +13 -32
  80. package/lib/setup-tests.mjs +13 -32
  81. package/lib/src/core/format-utils.d.ts +0 -5
  82. package/lib/src/core/format-utils.d.ts.map +1 -1
  83. package/lib/src/core/validation.d.ts +0 -3
  84. package/lib/src/core/validation.d.ts.map +1 -1
  85. package/lib/src/rpc-util.d.ts.map +1 -1
  86. package/lib/src/services/blockchain/service.d.ts +7 -3
  87. package/lib/src/services/blockchain/service.d.ts.map +1 -1
  88. package/lib/src/services/credential/bbs-revocation.d.ts.map +1 -1
  89. package/lib/src/services/credential/bound-check.d.ts +1 -1
  90. package/lib/src/services/credential/bound-check.d.ts.map +1 -1
  91. package/lib/src/services/credential/service.d.ts.map +1 -1
  92. package/lib/src/services/credential/utils.d.ts +2 -1
  93. package/lib/src/services/credential/utils.d.ts.map +1 -1
  94. package/lib/src/services/dids/keypair-utils.d.ts +15 -0
  95. package/lib/src/services/dids/keypair-utils.d.ts.map +1 -0
  96. package/lib/src/services/dids/service.d.ts +6 -6
  97. package/lib/src/services/dids/service.d.ts.map +1 -1
  98. package/lib/src/services/edv/service.d.ts.map +1 -1
  99. package/lib/src/services/pex/service.d.ts.map +1 -1
  100. package/lib/src/services/util-crypto/configs.d.ts +0 -3
  101. package/lib/src/services/util-crypto/configs.d.ts.map +1 -1
  102. package/lib/src/services/util-crypto/service.d.ts +3 -8
  103. package/lib/src/services/util-crypto/service.d.ts.map +1 -1
  104. package/lib/src/services/wallet/configs.d.ts +13 -0
  105. package/lib/src/services/wallet/configs.d.ts.map +1 -0
  106. package/lib/src/services/wallet/service.d.ts +1 -44
  107. package/lib/src/services/wallet/service.d.ts.map +1 -1
  108. package/lib/test-utils.js +0 -4
  109. package/lib/test-utils.mjs +1 -4
  110. package/lib/tsconfig.tsbuildinfo +1 -1
  111. package/package.json +6 -27
  112. package/readme.md +0 -61
  113. package/src/core/format-utils.test.js +1 -28
  114. package/src/core/format-utils.ts +0 -33
  115. package/src/core/validation.test.js +1 -33
  116. package/src/core/validation.ts +1 -25
  117. package/src/rpc-server.test.js +2 -9
  118. package/src/rpc-util.js +14 -0
  119. package/src/services/blockchain/index.test.js +4 -15
  120. package/src/services/blockchain/service.ts +39 -98
  121. package/src/services/credential/bbs-revocation.ts +2 -1
  122. package/src/services/credential/bound-check.test.ts +6 -6
  123. package/src/services/credential/bound-check.ts +4 -4
  124. package/src/services/credential/index.test.js +0 -2
  125. package/src/services/credential/service.ts +5 -2
  126. package/src/services/credential/utils.js +65 -23
  127. package/src/services/dids/index.test.js +9 -20
  128. package/src/services/dids/keypair-utils.js +111 -0
  129. package/src/services/dids/service.ts +7 -26
  130. package/src/services/edv/service.ts +2 -9
  131. package/src/services/index.js +0 -8
  132. package/src/services/pex/service.ts +7 -1
  133. package/src/services/test-utils.js +0 -207
  134. package/src/services/util-crypto/configs.ts +0 -12
  135. package/src/services/util-crypto/index.test.js +6 -83
  136. package/src/services/util-crypto/service-rpc.js +0 -20
  137. package/src/services/util-crypto/service.ts +62 -75
  138. package/src/services/wallet/configs.ts +1 -113
  139. package/src/services/wallet/index.test.js +0 -159
  140. package/src/services/wallet/service-rpc.js +1 -88
  141. package/src/services/wallet/service.ts +0 -258
  142. package/src/test-utils.js +0 -13
  143. package/lib/account-8fa95046.js +0 -774
  144. package/lib/account-e7156c51.js +0 -764
  145. package/lib/core/polkadot-utils.js +0 -119
  146. package/lib/core/polkadot-utils.mjs +0 -94
  147. package/lib/core/realm-schemas.js +0 -50
  148. package/lib/core/realm-schemas.mjs +0 -44
  149. package/lib/core/subscan.js +0 -75
  150. package/lib/core/subscan.mjs +0 -64
  151. package/lib/fixtures.js +0 -56
  152. package/lib/fixtures.mjs +0 -52
  153. package/lib/modules/account.js +0 -55
  154. package/lib/modules/account.mjs +0 -47
  155. package/lib/modules/accounts.js +0 -56
  156. package/lib/modules/accounts.mjs +0 -47
  157. package/lib/modules/data-migration.js +0 -72
  158. package/lib/modules/data-migration.mjs +0 -68
  159. package/lib/modules/wallet-backup.js +0 -82
  160. package/lib/modules/wallet-backup.mjs +0 -71
  161. package/lib/modules/wallet.js +0 -56
  162. package/lib/modules/wallet.mjs +0 -47
  163. package/lib/services/example/configs.js +0 -21
  164. package/lib/services/example/configs.mjs +0 -13
  165. package/lib/services/example/index.js +0 -18
  166. package/lib/services/example/index.mjs +0 -14
  167. package/lib/services/example/service-rpc.js +0 -25
  168. package/lib/services/example/service-rpc.mjs +0 -21
  169. package/lib/services/example/service.js +0 -25
  170. package/lib/services/example/service.mjs +0 -20
  171. package/lib/services/keyring/configs.js +0 -70
  172. package/lib/services/keyring/configs.mjs +0 -61
  173. package/lib/services/keyring/index.android.js +0 -22
  174. package/lib/services/keyring/index.android.mjs +0 -18
  175. package/lib/services/keyring/index.ios.js +0 -22
  176. package/lib/services/keyring/index.ios.mjs +0 -18
  177. package/lib/services/keyring/index.js +0 -16
  178. package/lib/services/keyring/index.mjs +0 -8
  179. package/lib/services/keyring/service-rpc.js +0 -65
  180. package/lib/services/keyring/service-rpc.mjs +0 -61
  181. package/lib/services/keyring/service.js +0 -84
  182. package/lib/services/keyring/service.mjs +0 -74
  183. package/lib/services/polkadot/configs.js +0 -17
  184. package/lib/services/polkadot/configs.mjs +0 -13
  185. package/lib/services/polkadot/index.android.js +0 -22
  186. package/lib/services/polkadot/index.android.mjs +0 -18
  187. package/lib/services/polkadot/index.ios.js +0 -22
  188. package/lib/services/polkadot/index.ios.mjs +0 -18
  189. package/lib/services/polkadot/index.js +0 -15
  190. package/lib/services/polkadot/index.mjs +0 -7
  191. package/lib/services/polkadot/service-rpc.js +0 -30
  192. package/lib/services/polkadot/service-rpc.mjs +0 -26
  193. package/lib/services/polkadot/service.js +0 -28
  194. package/lib/services/polkadot/service.mjs +0 -23
  195. package/lib/services/substrate/api-utils.js +0 -85
  196. package/lib/services/substrate/api-utils.mjs +0 -74
  197. package/lib/services/substrate/configs.js +0 -30
  198. package/lib/services/substrate/configs.mjs +0 -21
  199. package/lib/services/substrate/index.android.js +0 -22
  200. package/lib/services/substrate/index.android.mjs +0 -18
  201. package/lib/services/substrate/index.ios.js +0 -22
  202. package/lib/services/substrate/index.ios.mjs +0 -18
  203. package/lib/services/substrate/index.js +0 -37
  204. package/lib/services/substrate/index.mjs +0 -29
  205. package/lib/services/substrate/service-rpc.js +0 -37
  206. package/lib/services/substrate/service-rpc.mjs +0 -33
  207. package/lib/services/substrate/service.js +0 -115
  208. package/lib/services/substrate/service.mjs +0 -102
  209. package/lib/services/trust-registry/configs.js +0 -25
  210. package/lib/services/trust-registry/configs.mjs +0 -16
  211. package/lib/services/trust-registry/index.android.js +0 -19
  212. package/lib/services/trust-registry/index.android.mjs +0 -15
  213. package/lib/services/trust-registry/index.ios.js +0 -19
  214. package/lib/services/trust-registry/index.ios.mjs +0 -15
  215. package/lib/services/trust-registry/index.js +0 -33
  216. package/lib/services/trust-registry/index.mjs +0 -25
  217. package/lib/services/trust-registry/service-rpc.js +0 -29
  218. package/lib/services/trust-registry/service-rpc.mjs +0 -25
  219. package/lib/services/trust-registry/service.js +0 -89
  220. package/lib/services/trust-registry/service.mjs +0 -85
  221. package/lib/src/core/polkadot-utils.d.ts +0 -11
  222. package/lib/src/core/polkadot-utils.d.ts.map +0 -1
  223. package/lib/src/modules/account.d.ts +0 -60
  224. package/lib/src/modules/account.d.ts.map +0 -1
  225. package/lib/src/modules/accounts.d.ts +0 -49
  226. package/lib/src/modules/accounts.d.ts.map +0 -1
  227. package/lib/src/modules/data-migration.d.ts +0 -7
  228. package/lib/src/modules/data-migration.d.ts.map +0 -1
  229. package/lib/src/modules/wallet-backup.d.ts +0 -12
  230. package/lib/src/modules/wallet-backup.d.ts.map +0 -1
  231. package/lib/src/modules/wallet.d.ts +0 -134
  232. package/lib/src/modules/wallet.d.ts.map +0 -1
  233. package/lib/src/services/blockchain/index.d.ts +0 -2
  234. package/lib/src/services/blockchain/index.d.ts.map +0 -1
  235. package/lib/src/services/example/configs.d.ts +0 -9
  236. package/lib/src/services/example/configs.d.ts.map +0 -1
  237. package/lib/src/services/example/service.d.ts +0 -8
  238. package/lib/src/services/example/service.d.ts.map +0 -1
  239. package/lib/src/services/keyring/configs.d.ts +0 -39
  240. package/lib/src/services/keyring/configs.d.ts.map +0 -1
  241. package/lib/src/services/keyring/index.d.ts +0 -2
  242. package/lib/src/services/keyring/index.d.ts.map +0 -1
  243. package/lib/src/services/polkadot/configs.d.ts +0 -8
  244. package/lib/src/services/polkadot/configs.d.ts.map +0 -1
  245. package/lib/src/services/polkadot/index.d.ts +0 -2
  246. package/lib/src/services/polkadot/index.d.ts.map +0 -1
  247. package/lib/src/services/polkadot/service.d.ts +0 -8
  248. package/lib/src/services/polkadot/service.d.ts.map +0 -1
  249. package/lib/src/services/substrate/api-utils.d.ts +0 -14
  250. package/lib/src/services/substrate/api-utils.d.ts.map +0 -1
  251. package/lib/src/services/substrate/configs.d.ts +0 -16
  252. package/lib/src/services/substrate/configs.d.ts.map +0 -1
  253. package/lib/src/services/substrate/index.d.ts +0 -2
  254. package/lib/src/services/substrate/index.d.ts.map +0 -1
  255. package/lib/src/services/substrate/service.d.ts +0 -13
  256. package/lib/src/services/substrate/service.d.ts.map +0 -1
  257. package/lib/src/services/trust-registry/configs.d.ts +0 -6
  258. package/lib/src/services/trust-registry/configs.d.ts.map +0 -1
  259. package/lib/src/services/trust-registry/service.d.ts +0 -25
  260. package/lib/src/services/trust-registry/service.d.ts.map +0 -1
  261. package/lib/src/services/wallet/index.d.ts +0 -2
  262. package/lib/src/services/wallet/index.d.ts.map +0 -1
  263. package/lib/test/axiosMocks.js +0 -431
  264. package/lib/test/axiosMocks.mjs +0 -420
  265. package/lib/test/setup-test-state.js +0 -93
  266. package/lib/test/setup-test-state.mjs +0 -85
  267. package/src/core/polkadot-utils.js +0 -99
  268. package/src/core/realm-schemas.js +0 -42
  269. package/src/core/subscan.js +0 -62
  270. package/src/core/subscan.test.js +0 -56
  271. package/src/fixtures.js +0 -43
  272. package/src/modules/account.test.js +0 -56
  273. package/src/modules/account.ts +0 -128
  274. package/src/modules/accounts.test.js +0 -88
  275. package/src/modules/accounts.ts +0 -264
  276. package/src/modules/data-migration.test.js +0 -72
  277. package/src/modules/data-migration.ts +0 -86
  278. package/src/modules/wallet-backup.test.js +0 -24
  279. package/src/modules/wallet-backup.ts +0 -68
  280. package/src/modules/wallet.test.js +0 -227
  281. package/src/modules/wallet.ts +0 -424
  282. package/src/services/example/configs.js +0 -14
  283. package/src/services/example/index.js +0 -3
  284. package/src/services/example/index.test.js +0 -28
  285. package/src/services/example/service-rpc.js +0 -11
  286. package/src/services/example/service.ts +0 -18
  287. package/src/services/keyring/configs.ts +0 -110
  288. package/src/services/keyring/index.android.js +0 -3
  289. package/src/services/keyring/index.ios.js +0 -3
  290. package/src/services/keyring/index.js +0 -1
  291. package/src/services/keyring/index.test.js +0 -48
  292. package/src/services/keyring/service-rpc.js +0 -56
  293. package/src/services/keyring/service.ts +0 -111
  294. package/src/services/polkadot/configs.ts +0 -13
  295. package/src/services/polkadot/index.android.js +0 -3
  296. package/src/services/polkadot/index.ios.js +0 -3
  297. package/src/services/polkadot/index.js +0 -1
  298. package/src/services/polkadot/index.test.js +0 -52
  299. package/src/services/polkadot/service-rpc.js +0 -13
  300. package/src/services/polkadot/service.ts +0 -21
  301. package/src/services/substrate/api-utils.test.js +0 -73
  302. package/src/services/substrate/api-utils.ts +0 -66
  303. package/src/services/substrate/configs.ts +0 -34
  304. package/src/services/substrate/index.android.js +0 -3
  305. package/src/services/substrate/index.ios.js +0 -3
  306. package/src/services/substrate/index.js +0 -1
  307. package/src/services/substrate/index.test.js +0 -116
  308. package/src/services/substrate/service-rpc.js +0 -24
  309. package/src/services/substrate/service.ts +0 -117
  310. package/src/services/trust-registry/configs.ts +0 -14
  311. package/src/services/trust-registry/index.android.js +0 -3
  312. package/src/services/trust-registry/index.ios.js +0 -3
  313. package/src/services/trust-registry/index.js +0 -1
  314. package/src/services/trust-registry/index.test.js +0 -67
  315. package/src/services/trust-registry/service-rpc.js +0 -15
  316. package/src/services/trust-registry/service.ts +0 -94
  317. package/src/test/axiosMocks.js +0 -20
  318. package/src/test/fixtures/subscan-failure.json +0 -5
  319. package/src/test/fixtures/subscan-success.json +0 -370
  320. package/src/test/fixtures/subscan-too-many-requests.json +0 -9
  321. package/src/test/setup-test-state.js +0 -37
  322. package/src/test/test-wallet.test.js +0 -15
@@ -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
- }