@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/lib/account-e7156c51.js
DELETED
|
@@ -1,764 +0,0 @@
|
|
|
1
|
-
import assert from 'assert';
|
|
2
|
-
import { isAddressValid } from './core/validation.mjs';
|
|
3
|
-
import { walletService } from './services/wallet/service.mjs';
|
|
4
|
-
import { utilCryptoService } from './services/util-crypto/service.mjs';
|
|
5
|
-
import { keyringService } from './services/keyring/service.mjs';
|
|
6
|
-
import { substrateService } from './services/substrate/service.mjs';
|
|
7
|
-
import { polkadotService } from './services/polkadot/service.mjs';
|
|
8
|
-
import { v4 } from 'uuid';
|
|
9
|
-
import { getStorage } from './core/storage.mjs';
|
|
10
|
-
import { blockchainService } from './services/blockchain/service.mjs';
|
|
11
|
-
import { EventManager } from './modules/event-manager.mjs';
|
|
12
|
-
import { NetworkManager } from './modules/network-manager.mjs';
|
|
13
|
-
import { migrate } from './modules/data-migration.mjs';
|
|
14
|
-
import { Logger } from './core/logger.mjs';
|
|
15
|
-
import { Errors } from './errors.mjs';
|
|
16
|
-
import { KeypairTypes } from './types.mjs';
|
|
17
|
-
|
|
18
|
-
var doc2213 = {
|
|
19
|
-
"@context": [
|
|
20
|
-
"https://w3id.org/wallet/v1"
|
|
21
|
-
],
|
|
22
|
-
id: "credential-1652390503413",
|
|
23
|
-
value: {
|
|
24
|
-
"@context": [
|
|
25
|
-
"https://www.w3.org/2018/credentials/v1",
|
|
26
|
-
{
|
|
27
|
-
dk: "https://ld.dock.io/credentials#",
|
|
28
|
-
BasicCredential: "dk:BasicCredential",
|
|
29
|
-
subjectName: "dk:subjectName",
|
|
30
|
-
title: "dk:title",
|
|
31
|
-
name: "dk:name",
|
|
32
|
-
description: "dk:description",
|
|
33
|
-
logo: "dk:logo"
|
|
34
|
-
}
|
|
35
|
-
],
|
|
36
|
-
credentialStatus: {
|
|
37
|
-
id: "rev-reg:dock:0x8e4ff3d6de36a3e4dbd014b5979e6fc0ab1e4c0a5f1ceddae2c7c67a4b94d0de",
|
|
38
|
-
type: "CredentialStatusList2017"
|
|
39
|
-
},
|
|
40
|
-
id: "https://creds.dock.io/79277556ab5504ec064492780d3678d04f9f4ec370de28537e9d5be09f11df92",
|
|
41
|
-
type: [
|
|
42
|
-
"VerifiableCredential",
|
|
43
|
-
"BasicCredential"
|
|
44
|
-
],
|
|
45
|
-
credentialSubject: {
|
|
46
|
-
id: "planespotter325",
|
|
47
|
-
subjectName: "Oleh Yatskiv",
|
|
48
|
-
title: "Beta Testing Credential"
|
|
49
|
-
},
|
|
50
|
-
issuanceDate: "2022-05-10T10:06:49.346Z",
|
|
51
|
-
proof: {
|
|
52
|
-
type: "Ed25519Signature2018",
|
|
53
|
-
created: "2022-05-10T10:07:08Z",
|
|
54
|
-
verificationMethod: "did:dock:5C53c6uirausdvARD891dyyEkQE388iXhDwypkmp1nHh1odv#keys-1",
|
|
55
|
-
proofPurpose: "assertionMethod",
|
|
56
|
-
proofValue: "z2RVKT1jYhooV3JidULqxTwPq2R41RqPNEMf14GWMTrh2NpzoFj4uiEzkzcu3HYZ8C8Vc7qBctVALMjXferqTiJkQ"
|
|
57
|
-
},
|
|
58
|
-
issuer: {
|
|
59
|
-
name: "Dock Beta Testing",
|
|
60
|
-
description: "",
|
|
61
|
-
logo: "data:image/png;base64,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",
|
|
62
|
-
id: "did:dock:5C53c6uirausdvARD891dyyEkQE388iXhDwypkmp1nHh1odv"
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
type: "VerifiableCredential"
|
|
66
|
-
};
|
|
67
|
-
var legacyWalletSchema = {
|
|
68
|
-
"doc:d4bd8145-4a56-456e-9b78-71509184f6ed": {
|
|
69
|
-
"@context": [
|
|
70
|
-
"https://w3id.org/wallet/v1"
|
|
71
|
-
],
|
|
72
|
-
id: "6ee76a80-bdf2-4cf8-9647-4897ed6feadd",
|
|
73
|
-
name: "Account 1",
|
|
74
|
-
type: "Mnemonic",
|
|
75
|
-
value: "toe crowd portion cook feel minute deny piece feel barrel member swarm"
|
|
76
|
-
},
|
|
77
|
-
"doc:74366f2f-a137-46f1-b661-be2956d9afb2": {
|
|
78
|
-
"@context": [
|
|
79
|
-
"https://w3id.org/wallet/v1"
|
|
80
|
-
],
|
|
81
|
-
id: "0a7d45d3-8ca4-41a2-93c8-d4bec5652376",
|
|
82
|
-
name: "mnemonic 1",
|
|
83
|
-
type: "Mnemonic",
|
|
84
|
-
value: "exact next frown coconut exit pledge blind program film elephant wife clutch"
|
|
85
|
-
},
|
|
86
|
-
"doc:670ef0a2-c748-45ab-9515-460d907ba529": {
|
|
87
|
-
"@context": [
|
|
88
|
-
"https://w3id.org/wallet/v1"
|
|
89
|
-
],
|
|
90
|
-
id: "7e0b6479-59c8-4f76-95d5-d25f7413751f",
|
|
91
|
-
name: "mnemonic1 ",
|
|
92
|
-
type: "Mnemonic",
|
|
93
|
-
value: "exact next frown coconut exit pledge blind program film elephant wife clutch"
|
|
94
|
-
},
|
|
95
|
-
"doc:497337c2-29fc-4a88-9b78-ee55abd0a500": {
|
|
96
|
-
"@context": [
|
|
97
|
-
"https://w3id.org/wallet/v1"
|
|
98
|
-
],
|
|
99
|
-
id: "37g1HpqrRjWozRxT5MCpqUDxHQtu2ASPy6yJRD5cqKRVBefS",
|
|
100
|
-
type: "Account",
|
|
101
|
-
correlation: [
|
|
102
|
-
"7e0b6479-59c8-4f76-95d5-d25f7413751f"
|
|
103
|
-
],
|
|
104
|
-
meta: {
|
|
105
|
-
name: "mnemonic1 ",
|
|
106
|
-
keypairType: "sr25519",
|
|
107
|
-
derivationPath: "",
|
|
108
|
-
hasBackup: true,
|
|
109
|
-
balance: 0
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
"doc:069c5733-8516-4dff-aa91-cb3eefc3f16d": {
|
|
113
|
-
"@context": [
|
|
114
|
-
"https://w3id.org/wallet/v1"
|
|
115
|
-
],
|
|
116
|
-
id: "80f68f17-14a8-4f2d-9865-b1477e605115",
|
|
117
|
-
name: "test 33",
|
|
118
|
-
type: "KeyPair",
|
|
119
|
-
value: {
|
|
120
|
-
encoded: "MFMCAQEwBQYDK2VwBCIEIGhWQpGhRsLAOg8FFbvjUOOZ0UZZX2OJzIKhrTJ2Od1mKEidt13wS9Kxefy98pm/8w9an45To/IuYiKX7PlDyS6hIwMhAP4WQCN9VTz2Hn18GOwXw9ZhVZyCYQnbE5DcZeMamHYt",
|
|
121
|
-
encoding: {
|
|
122
|
-
content: [
|
|
123
|
-
"pkcs8",
|
|
124
|
-
"sr25519"
|
|
125
|
-
],
|
|
126
|
-
type: [
|
|
127
|
-
"none"
|
|
128
|
-
],
|
|
129
|
-
version: "3"
|
|
130
|
-
},
|
|
131
|
-
address: "3CH1Ce5k516MNoyJvRbq4CtuiSDisa8SF9JBqCcSYRAEzgUk",
|
|
132
|
-
meta: {
|
|
133
|
-
genesisHash: "0x17643cd935f8379c6683c74f739460be4ccc4e4c30b0183bdb2fb9973af242f1",
|
|
134
|
-
isHardware: false,
|
|
135
|
-
name: "test 33",
|
|
136
|
-
tags: [
|
|
137
|
-
],
|
|
138
|
-
whenCreated: 1654447770598
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
"doc:d56aa925-2da8-469a-ab4b-c4878e19b9fc": {
|
|
143
|
-
"@context": [
|
|
144
|
-
"https://w3id.org/wallet/v1"
|
|
145
|
-
],
|
|
146
|
-
id: "3CH1Ce5k516MNoyJvRbq4CtuiSDisa8SF9JBqCcSYRAEzgUk",
|
|
147
|
-
type: "Account",
|
|
148
|
-
correlation: [
|
|
149
|
-
"80f68f17-14a8-4f2d-9865-b1477e605115"
|
|
150
|
-
],
|
|
151
|
-
meta: {
|
|
152
|
-
name: "test 33",
|
|
153
|
-
hasBackup: true,
|
|
154
|
-
balance: 0
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
|
-
"doc:69cfaf57-4b04-40b4-9d2a-143c4f05a2e3": {
|
|
158
|
-
"@context": [
|
|
159
|
-
"https://w3id.org/wallet/v1"
|
|
160
|
-
],
|
|
161
|
-
id: "dd3868e5-dab7-4e43-95ac-530a65ef8917",
|
|
162
|
-
name: "ACCOUNT NEW",
|
|
163
|
-
type: "Mnemonic",
|
|
164
|
-
value: "surround cotton ecology happy artist opera alert resemble jewel jaguar risk rude"
|
|
165
|
-
},
|
|
166
|
-
"doc:729e40eb-e36c-460e-a85b-0f9ad2fbf199": {
|
|
167
|
-
"@context": [
|
|
168
|
-
"https://w3id.org/wallet/v1"
|
|
169
|
-
],
|
|
170
|
-
id: "3BcMTtyijuEQYBfSCR45jaZUCgEeCgLCNeJGZm336S638C7G",
|
|
171
|
-
type: "Account",
|
|
172
|
-
correlation: [
|
|
173
|
-
"dd3868e5-dab7-4e43-95ac-530a65ef8917"
|
|
174
|
-
],
|
|
175
|
-
meta: {
|
|
176
|
-
name: "ACCOUNT NEW",
|
|
177
|
-
keypairType: "sr25519",
|
|
178
|
-
derivationPath: "",
|
|
179
|
-
hasBackup: false,
|
|
180
|
-
balance: 0
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
doc2213: doc2213
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
// @ts-nocheck
|
|
187
|
-
/** Wallet events */
|
|
188
|
-
const WalletEvents = {
|
|
189
|
-
ready: 'ready',
|
|
190
|
-
error: 'error',
|
|
191
|
-
migrated: 'migrated',
|
|
192
|
-
statusUpdated: 'status-updated',
|
|
193
|
-
documentAdded: 'document-added',
|
|
194
|
-
documentUpdated: 'document-updated',
|
|
195
|
-
documentRemoved: 'document-removed',
|
|
196
|
-
walletDeleted: 'wallet-deleted',
|
|
197
|
-
walletImported: 'wallet-imported',
|
|
198
|
-
networkUpdated: 'network-updated',
|
|
199
|
-
networkConnected: 'network-connected',
|
|
200
|
-
networkError: 'network-error',
|
|
201
|
-
};
|
|
202
|
-
/**
|
|
203
|
-
* Can be used to debug the data migration behavior in the wallet
|
|
204
|
-
*/
|
|
205
|
-
const MOCK_STORAGE = process.env.MOCK_STORAGE;
|
|
206
|
-
async function shouldMockStorage(walletId) {
|
|
207
|
-
if (MOCK_STORAGE !== 'true') {
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
await getStorage().setItem(walletId, JSON.stringify(legacyWalletSchema));
|
|
211
|
-
}
|
|
212
|
-
// const environment = getEnvironment();
|
|
213
|
-
// if (environment !== 'reactnative') {
|
|
214
|
-
// require('../setup-nodejs');
|
|
215
|
-
// }
|
|
216
|
-
/**
|
|
217
|
-
* Wallet
|
|
218
|
-
*/
|
|
219
|
-
class Wallet {
|
|
220
|
-
networkManager;
|
|
221
|
-
context;
|
|
222
|
-
status;
|
|
223
|
-
apiConnected;
|
|
224
|
-
eventManager;
|
|
225
|
-
walletId;
|
|
226
|
-
accounts;
|
|
227
|
-
/**
|
|
228
|
-
* @constructor
|
|
229
|
-
* @param {object} params
|
|
230
|
-
*/
|
|
231
|
-
constructor({ walletId = 'wallet', context = ['https://w3id.org/wallet/v1'], } = {}) {
|
|
232
|
-
this.walletId = walletId;
|
|
233
|
-
this.context = context;
|
|
234
|
-
this.networkManager = NetworkManager.getInstance();
|
|
235
|
-
this.eventManager = new EventManager();
|
|
236
|
-
this.accounts = Accounts.getInstance({ wallet: this });
|
|
237
|
-
}
|
|
238
|
-
async recoverFromBadState() {
|
|
239
|
-
const storageItems = await getStorage().getItem(this.walletId);
|
|
240
|
-
const walletData = JSON.parse(storageItems);
|
|
241
|
-
Object.keys(walletData).forEach(docKey => {
|
|
242
|
-
const document = walletData[docKey];
|
|
243
|
-
if (!document['@context']) {
|
|
244
|
-
document['@context'] = this.context;
|
|
245
|
-
}
|
|
246
|
-
});
|
|
247
|
-
await getStorage().setItem(this.walletId, JSON.stringify(walletData));
|
|
248
|
-
await this.createWallet();
|
|
249
|
-
}
|
|
250
|
-
async createWallet() {
|
|
251
|
-
await walletService.create({
|
|
252
|
-
walletId: this.walletId,
|
|
253
|
-
type: 'rpc',
|
|
254
|
-
});
|
|
255
|
-
await walletService.sync();
|
|
256
|
-
await walletService.load();
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Get the y value.
|
|
260
|
-
* @return {Promise} The y value.
|
|
261
|
-
*/
|
|
262
|
-
async load() {
|
|
263
|
-
if (this.status === 'loading') {
|
|
264
|
-
return this.eventManager.waitFor(WalletEvents.ready);
|
|
265
|
-
}
|
|
266
|
-
if (this.status === 'ready') {
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
this.setStatus('loading');
|
|
270
|
-
// TODO: get network from dataStore
|
|
271
|
-
const networkId = (await getStorage().getItem('networkId')) || 'mainnet';
|
|
272
|
-
this.networkManager.setNetworkId(networkId);
|
|
273
|
-
await shouldMockStorage(this.walletId);
|
|
274
|
-
try {
|
|
275
|
-
await utilCryptoService.cryptoWaitReady();
|
|
276
|
-
await keyringService.initialize({
|
|
277
|
-
ss58Format: this.networkManager.getNetworkInfo().addressPrefix,
|
|
278
|
-
});
|
|
279
|
-
try {
|
|
280
|
-
await this.createWallet();
|
|
281
|
-
}
|
|
282
|
-
catch (err) {
|
|
283
|
-
await this.recoverFromBadState();
|
|
284
|
-
}
|
|
285
|
-
this.setStatus('ready');
|
|
286
|
-
this.eventManager.emit(WalletEvents.ready);
|
|
287
|
-
this.initNetwork();
|
|
288
|
-
this.migrated = await migrate({ wallet: this });
|
|
289
|
-
this.eventManager.emit(WalletEvents.migrated);
|
|
290
|
-
}
|
|
291
|
-
catch (err) {
|
|
292
|
-
this.setStatus('error');
|
|
293
|
-
this.eventManager.emit(WalletEvents.error, err);
|
|
294
|
-
throw err;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
async getVersion() {
|
|
298
|
-
const docs = await this.query({});
|
|
299
|
-
const versionDoc = docs.find((item) => item.type === 'Metadata' && !!item.walletVersion);
|
|
300
|
-
return (versionDoc && versionDoc.walletVersion) || '0.1';
|
|
301
|
-
}
|
|
302
|
-
/**
|
|
303
|
-
*
|
|
304
|
-
* Close wallet
|
|
305
|
-
*/
|
|
306
|
-
async close() {
|
|
307
|
-
await blockchainService.disconnect();
|
|
308
|
-
this.setStatus('closed');
|
|
309
|
-
}
|
|
310
|
-
async switchNetwork(networkId) {
|
|
311
|
-
getStorage().setItem('networkId', networkId);
|
|
312
|
-
this.networkManager.setNetworkId(networkId);
|
|
313
|
-
await this.initNetwork();
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* delete wallet
|
|
317
|
-
*/
|
|
318
|
-
async deleteWallet() {
|
|
319
|
-
this.eventManager.emit(WalletEvents.walletDeleted);
|
|
320
|
-
await getStorage().removeItem('logs');
|
|
321
|
-
await getStorage().removeItem('transactions');
|
|
322
|
-
await getStorage().removeItem(this.walletId);
|
|
323
|
-
await walletService.create({
|
|
324
|
-
walletId: this.walletId,
|
|
325
|
-
});
|
|
326
|
-
await walletService.load();
|
|
327
|
-
await walletService.sync();
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
*
|
|
331
|
-
* @param {*} status
|
|
332
|
-
*/
|
|
333
|
-
setStatus(status) {
|
|
334
|
-
assert(!!status, 'status is required');
|
|
335
|
-
this.status = status;
|
|
336
|
-
this.eventManager.emit(WalletEvents.statusUpdated, status);
|
|
337
|
-
}
|
|
338
|
-
/**
|
|
339
|
-
* Ensure network
|
|
340
|
-
*
|
|
341
|
-
* @returns Promise
|
|
342
|
-
*/
|
|
343
|
-
async ensureNetwork() {
|
|
344
|
-
if (!this.connectionInProgress) {
|
|
345
|
-
this.initNetwork();
|
|
346
|
-
}
|
|
347
|
-
else if (this.networkReady) {
|
|
348
|
-
return;
|
|
349
|
-
}
|
|
350
|
-
await this.eventManager.waitFor(WalletEvents.networkConnected);
|
|
351
|
-
}
|
|
352
|
-
async initNetwork() {
|
|
353
|
-
try {
|
|
354
|
-
this.connectionInProgress = true;
|
|
355
|
-
const networkInfo = this.networkManager.getNetworkInfo();
|
|
356
|
-
await keyringService.initialize({
|
|
357
|
-
ss58Format: networkInfo.addressPrefix,
|
|
358
|
-
});
|
|
359
|
-
Logger.debug(`Initializing network ${JSON.stringify(networkInfo)}`);
|
|
360
|
-
const isDockConnected = await blockchainService.isApiConnected();
|
|
361
|
-
if (isDockConnected) {
|
|
362
|
-
await blockchainService.disconnect();
|
|
363
|
-
}
|
|
364
|
-
await blockchainService.init({
|
|
365
|
-
address: networkInfo.substrateUrl,
|
|
366
|
-
});
|
|
367
|
-
this.eventManager.emit(WalletEvents.networkConnected);
|
|
368
|
-
}
|
|
369
|
-
catch (err) {
|
|
370
|
-
this.eventManager.emit(WalletEvents.error, err);
|
|
371
|
-
throw err;
|
|
372
|
-
}
|
|
373
|
-
finally {
|
|
374
|
-
this.connectionInProgress = false;
|
|
375
|
-
this.networkReady = true;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
async waitReady() {
|
|
379
|
-
if (this.status === 'ready') {
|
|
380
|
-
return;
|
|
381
|
-
}
|
|
382
|
-
let warningTimeout = setTimeout(() => {
|
|
383
|
-
throw new Error('Wallet module timed out. Make sure the wallet is loaded, or you are not using multiple instances');
|
|
384
|
-
}, 6000);
|
|
385
|
-
await this.eventManager.waitFor(WalletEvents.ready);
|
|
386
|
-
clearTimeout(warningTimeout);
|
|
387
|
-
}
|
|
388
|
-
getContext() {
|
|
389
|
-
return this.getContext;
|
|
390
|
-
}
|
|
391
|
-
setContext(context) {
|
|
392
|
-
this.context = context;
|
|
393
|
-
}
|
|
394
|
-
assertReady() {
|
|
395
|
-
return this.waitReady();
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Remove document
|
|
399
|
-
* @returns Promise<boolean>
|
|
400
|
-
*/
|
|
401
|
-
async remove(documentId) {
|
|
402
|
-
await walletService.remove(documentId);
|
|
403
|
-
this.eventManager.emit(WalletEvents.documentRemoved, documentId);
|
|
404
|
-
}
|
|
405
|
-
async upsert(document) {
|
|
406
|
-
const existing = await this.getDocumentById(document.id);
|
|
407
|
-
if (existing) {
|
|
408
|
-
return this.update({
|
|
409
|
-
...existing,
|
|
410
|
-
...document,
|
|
411
|
-
});
|
|
412
|
-
}
|
|
413
|
-
return this.add(document);
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Add document to the wallet
|
|
417
|
-
* @param {*} options
|
|
418
|
-
* @throws InvalidAccountErrors
|
|
419
|
-
* @returns document
|
|
420
|
-
*/
|
|
421
|
-
async add(document) {
|
|
422
|
-
await this.assertReady();
|
|
423
|
-
const newDocument = {
|
|
424
|
-
...document,
|
|
425
|
-
id: document.id || v4(),
|
|
426
|
-
'@context': document.context || this.context,
|
|
427
|
-
};
|
|
428
|
-
await walletService.add(newDocument);
|
|
429
|
-
this.eventManager.emit(WalletEvents.documentAdded, newDocument);
|
|
430
|
-
return newDocument;
|
|
431
|
-
}
|
|
432
|
-
async update(document) {
|
|
433
|
-
await this.assertReady();
|
|
434
|
-
await walletService.update({
|
|
435
|
-
'@context': document['@context'] || this.context,
|
|
436
|
-
...document,
|
|
437
|
-
});
|
|
438
|
-
this.eventManager.emit(WalletEvents.documentUpdated, document);
|
|
439
|
-
return document;
|
|
440
|
-
}
|
|
441
|
-
async export(password) {
|
|
442
|
-
return walletService.exportWallet(password);
|
|
443
|
-
}
|
|
444
|
-
/**
|
|
445
|
-
* Add all documents in the wallet
|
|
446
|
-
* @param {*} options
|
|
447
|
-
* @returns document
|
|
448
|
-
*/
|
|
449
|
-
async query(params = {}) {
|
|
450
|
-
await this.assertReady();
|
|
451
|
-
let equals;
|
|
452
|
-
Object.keys(params).forEach(key => {
|
|
453
|
-
const value = params[key];
|
|
454
|
-
if (!value) {
|
|
455
|
-
return;
|
|
456
|
-
}
|
|
457
|
-
if (!equals) {
|
|
458
|
-
equals = {};
|
|
459
|
-
}
|
|
460
|
-
equals[`content.${key}`] = value;
|
|
461
|
-
});
|
|
462
|
-
return walletService.query({
|
|
463
|
-
equals,
|
|
464
|
-
});
|
|
465
|
-
}
|
|
466
|
-
async getDocumentById(documentId) {
|
|
467
|
-
await this.assertReady();
|
|
468
|
-
const result = await this.query({ id: documentId });
|
|
469
|
-
return result[0];
|
|
470
|
-
}
|
|
471
|
-
static async create({ walletId, json, password } = {}) {
|
|
472
|
-
const wallet = new Wallet({ walletId });
|
|
473
|
-
await wallet.load();
|
|
474
|
-
if (json) {
|
|
475
|
-
await wallet.importWallet({ json, password });
|
|
476
|
-
}
|
|
477
|
-
return wallet;
|
|
478
|
-
}
|
|
479
|
-
async importWallet({ json, password }) {
|
|
480
|
-
await this.deleteWallet();
|
|
481
|
-
await walletService.importWallet({ json, password });
|
|
482
|
-
this.migrated = await migrate({ wallet: this });
|
|
483
|
-
await this.eventManager.emit(WalletEvents.walletImported);
|
|
484
|
-
}
|
|
485
|
-
async getDocumentsFromEncryptedWallet({ encryptedJSONWallet, password }) {
|
|
486
|
-
return walletService.getDocumentsFromEncryptedWallet({
|
|
487
|
-
encryptedJSONWallet,
|
|
488
|
-
password,
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
async resolveCorrelations(documentId) {
|
|
492
|
-
return walletService.resolveCorrelations(documentId);
|
|
493
|
-
}
|
|
494
|
-
async exportDocuments({ documents, password }) {
|
|
495
|
-
return walletService.exportDocuments({
|
|
496
|
-
documents,
|
|
497
|
-
password,
|
|
498
|
-
});
|
|
499
|
-
}
|
|
500
|
-
/**
|
|
501
|
-
* Get wallet module instance
|
|
502
|
-
* @returns Wallet
|
|
503
|
-
*/
|
|
504
|
-
static getInstance() {
|
|
505
|
-
if (!Wallet.instance) {
|
|
506
|
-
Wallet.instance = new Wallet();
|
|
507
|
-
}
|
|
508
|
-
return Wallet.instance;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
// @ts-nocheck
|
|
513
|
-
const AccountsEvents = {
|
|
514
|
-
loaded: 'loaded',
|
|
515
|
-
accountCreated: 'account-added',
|
|
516
|
-
accountUpdated: 'account-updated',
|
|
517
|
-
accountRemoved: 'account-removed',
|
|
518
|
-
};
|
|
519
|
-
class Accounts {
|
|
520
|
-
accounts;
|
|
521
|
-
wallet;
|
|
522
|
-
eventManager;
|
|
523
|
-
static DocumentFilters = {
|
|
524
|
-
mnemonicType: (item) => item.type === 'Mnemonic',
|
|
525
|
-
currencyType: (item) => item.type === 'Currency',
|
|
526
|
-
};
|
|
527
|
-
constructor({ wallet, walletService: walletService$1 } = {}) {
|
|
528
|
-
this.accounts = [];
|
|
529
|
-
this.wallet = wallet || Wallet.getInstance();
|
|
530
|
-
this.walletService = walletService$1 || walletService;
|
|
531
|
-
this.eventManager = new EventManager();
|
|
532
|
-
}
|
|
533
|
-
async load() {
|
|
534
|
-
this.accounts = await this.wallet.query({
|
|
535
|
-
type: 'Address',
|
|
536
|
-
});
|
|
537
|
-
this.eventManager.emit(AccountsEvents.loaded);
|
|
538
|
-
return this.accounts;
|
|
539
|
-
}
|
|
540
|
-
async exportAccount(address, password) {
|
|
541
|
-
return this.walletService.exportAccount({ address, password });
|
|
542
|
-
}
|
|
543
|
-
async importAccount(json, password) {
|
|
544
|
-
return this.create({
|
|
545
|
-
json,
|
|
546
|
-
password,
|
|
547
|
-
});
|
|
548
|
-
}
|
|
549
|
-
async fetchBalance(address) {
|
|
550
|
-
assert(isAddressValid(address), 'invalid address');
|
|
551
|
-
console.log('fetching balance from substrate');
|
|
552
|
-
let balance;
|
|
553
|
-
try {
|
|
554
|
-
balance = await substrateService.getAccountBalance({ address });
|
|
555
|
-
console.log('balance found', balance.toString());
|
|
556
|
-
console.log('updating cache');
|
|
557
|
-
const currency = await this.findCorrelationByType(address, 'Currency', true);
|
|
558
|
-
console.log('currency', currency);
|
|
559
|
-
if (currency.value !== balance) {
|
|
560
|
-
currency.value = balance;
|
|
561
|
-
await this.wallet.update(currency);
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
catch (err) {
|
|
565
|
-
console.log('Unable to update cache');
|
|
566
|
-
console.error(err);
|
|
567
|
-
}
|
|
568
|
-
return balance;
|
|
569
|
-
}
|
|
570
|
-
async getBalance(address, skipFetch) {
|
|
571
|
-
assert(isAddressValid(address), 'address is required');
|
|
572
|
-
if (!skipFetch) {
|
|
573
|
-
await this.fetchBalance(address);
|
|
574
|
-
}
|
|
575
|
-
const currency = await this.findCorrelationByType(address, 'Currency', true);
|
|
576
|
-
return currency.value;
|
|
577
|
-
}
|
|
578
|
-
getAccounts() {
|
|
579
|
-
return this.accounts;
|
|
580
|
-
}
|
|
581
|
-
getAccountIcon(address, isAlternative) {
|
|
582
|
-
return polkadotService.getPolkadotSvgIcon(address, isAlternative);
|
|
583
|
-
}
|
|
584
|
-
async getByAddress(address) {
|
|
585
|
-
return Account.with(address);
|
|
586
|
-
}
|
|
587
|
-
async findCorrelationByType(address, type, assertResult) {
|
|
588
|
-
assert(isAddressValid(address), 'invalid address');
|
|
589
|
-
const correlations = await this.wallet.resolveCorrelations(address);
|
|
590
|
-
const result = correlations.find(c => c.type.includes(type));
|
|
591
|
-
if (assertResult) {
|
|
592
|
-
assert(!!result, `${type} document not found for the account ${address}`);
|
|
593
|
-
}
|
|
594
|
-
return result;
|
|
595
|
-
}
|
|
596
|
-
generateMnemonic() {
|
|
597
|
-
return utilCryptoService.mnemonicGenerate(12);
|
|
598
|
-
}
|
|
599
|
-
async update(account) {
|
|
600
|
-
assert(!!account, 'account is required');
|
|
601
|
-
await this.walletService.update(account);
|
|
602
|
-
this.eventManager.emit(AccountsEvents.accountUpdated);
|
|
603
|
-
await this.load();
|
|
604
|
-
}
|
|
605
|
-
async getOrCreate(params) {
|
|
606
|
-
return this.create({
|
|
607
|
-
...params,
|
|
608
|
-
getIfExists: true,
|
|
609
|
-
});
|
|
610
|
-
}
|
|
611
|
-
async create(params) {
|
|
612
|
-
let { name, json, password, type = 'sr25519', getIfExists, hasBackup } = params;
|
|
613
|
-
assert(!!name, 'name is required');
|
|
614
|
-
assert(!!type, 'keypair type is required');
|
|
615
|
-
assert(KeypairTypes.find(t => t === type), `invalid keypair type ${type}`);
|
|
616
|
-
if (json) {
|
|
617
|
-
assert(typeof password === 'string', 'password is required');
|
|
618
|
-
}
|
|
619
|
-
const mnemonic = params.mnemonic || (!json && (await this.generateMnemonic()));
|
|
620
|
-
const derivePath = params.derivationPath || '';
|
|
621
|
-
const address = json
|
|
622
|
-
? json.address
|
|
623
|
-
: await keyringService.addressFromUri({
|
|
624
|
-
mnemonic,
|
|
625
|
-
type,
|
|
626
|
-
derivePath,
|
|
627
|
-
});
|
|
628
|
-
const existingAccountDocs = await this.wallet.query({
|
|
629
|
-
id: address,
|
|
630
|
-
});
|
|
631
|
-
const accountExists = existingAccountDocs.length > 0;
|
|
632
|
-
if (getIfExists && accountExists) {
|
|
633
|
-
return this.getByAddress(address);
|
|
634
|
-
}
|
|
635
|
-
assert(!accountExists, Errors.accountAlreadyExists);
|
|
636
|
-
if (json) {
|
|
637
|
-
const pair = await keyringService.decryptKeyPair({
|
|
638
|
-
jsonData: json,
|
|
639
|
-
password,
|
|
640
|
-
});
|
|
641
|
-
assert(pair && pair.address, 'invalid keypair');
|
|
642
|
-
type = pair.type;
|
|
643
|
-
}
|
|
644
|
-
const account = {
|
|
645
|
-
id: address,
|
|
646
|
-
name,
|
|
647
|
-
type,
|
|
648
|
-
address,
|
|
649
|
-
};
|
|
650
|
-
const documents = await this.walletService.createAccountDocuments({
|
|
651
|
-
name,
|
|
652
|
-
type,
|
|
653
|
-
derivePath,
|
|
654
|
-
mnemonic,
|
|
655
|
-
json,
|
|
656
|
-
password,
|
|
657
|
-
hasBackup,
|
|
658
|
-
});
|
|
659
|
-
documents.forEach(doc => {
|
|
660
|
-
this.wallet.eventManager.emit(WalletEvents.documentAdded, doc);
|
|
661
|
-
});
|
|
662
|
-
this.eventManager.emit(AccountsEvents.accountCreated, account);
|
|
663
|
-
await this.load();
|
|
664
|
-
return Account.withAsync(account.address, this);
|
|
665
|
-
}
|
|
666
|
-
async remove(accountId) {
|
|
667
|
-
await this.wallet.remove(accountId);
|
|
668
|
-
// remove other documents
|
|
669
|
-
// mnemonic phrase and all the stuff
|
|
670
|
-
this.eventManager.emit(AccountsEvents.accountRemoved, accountId);
|
|
671
|
-
this.load();
|
|
672
|
-
}
|
|
673
|
-
static getInstance(options) {
|
|
674
|
-
if (!Accounts.instance || options) {
|
|
675
|
-
Accounts.instance = new Accounts(options);
|
|
676
|
-
}
|
|
677
|
-
return Accounts.instance;
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
// @ts-nocheck
|
|
682
|
-
/**
|
|
683
|
-
* Account
|
|
684
|
-
*/
|
|
685
|
-
class Account {
|
|
686
|
-
details;
|
|
687
|
-
address;
|
|
688
|
-
name;
|
|
689
|
-
accounts;
|
|
690
|
-
constructor(address, accounts) {
|
|
691
|
-
this.accounts = accounts;
|
|
692
|
-
this.address = address;
|
|
693
|
-
this.id = address;
|
|
694
|
-
}
|
|
695
|
-
/**
|
|
696
|
-
* Get account for a given address
|
|
697
|
-
* The account needs to exist in the wallet
|
|
698
|
-
*
|
|
699
|
-
* @example
|
|
700
|
-
* const accounts = Account.with('some-address')
|
|
701
|
-
* @param {string} address
|
|
702
|
-
* @returns
|
|
703
|
-
*/
|
|
704
|
-
static with(address, accounts) {
|
|
705
|
-
assert(isAddressValid(address), 'invalid address');
|
|
706
|
-
const account = new Account(address, accounts || Accounts.getInstance());
|
|
707
|
-
account.loadPromise = account.loadDetails();
|
|
708
|
-
return account;
|
|
709
|
-
}
|
|
710
|
-
/**
|
|
711
|
-
*
|
|
712
|
-
* @param {string} address
|
|
713
|
-
* @returns
|
|
714
|
-
*/
|
|
715
|
-
static async withAsync(address, accounts) {
|
|
716
|
-
const account = Account.with(address, accounts);
|
|
717
|
-
await account.loadPromise;
|
|
718
|
-
return account;
|
|
719
|
-
}
|
|
720
|
-
/**
|
|
721
|
-
* @returns {Promise<void>}
|
|
722
|
-
*/
|
|
723
|
-
async loadDetails() {
|
|
724
|
-
this.details = await this.accounts.wallet.getDocumentById(this.id);
|
|
725
|
-
this.name = this.details && this.details.name;
|
|
726
|
-
}
|
|
727
|
-
getAddress() {
|
|
728
|
-
return this.details.address;
|
|
729
|
-
}
|
|
730
|
-
getDetails() {
|
|
731
|
-
return this.details;
|
|
732
|
-
}
|
|
733
|
-
async getBalance(skipFetch) {
|
|
734
|
-
return this.accounts.getBalance(this.details.address, skipFetch);
|
|
735
|
-
}
|
|
736
|
-
export(password) {
|
|
737
|
-
return this.accounts.exportAccount(this.address, password);
|
|
738
|
-
}
|
|
739
|
-
remove() {
|
|
740
|
-
return this.accounts.remove(this.address);
|
|
741
|
-
}
|
|
742
|
-
update({ name }) {
|
|
743
|
-
return this.accounts.update({
|
|
744
|
-
...this.details,
|
|
745
|
-
name,
|
|
746
|
-
});
|
|
747
|
-
}
|
|
748
|
-
async getMnemonic() {
|
|
749
|
-
const doc = await this.accounts.findCorrelationByType(this.address, 'Mnemonic');
|
|
750
|
-
return doc.value;
|
|
751
|
-
}
|
|
752
|
-
async getKeyPair() {
|
|
753
|
-
const doc = await this.accounts.findCorrelationByType(this.address, 'KeyringPair');
|
|
754
|
-
return doc.value;
|
|
755
|
-
}
|
|
756
|
-
getName() {
|
|
757
|
-
return this.details.name;
|
|
758
|
-
}
|
|
759
|
-
getIcon(isAlternative) {
|
|
760
|
-
return this.accounts.getAccountIcon(this.details.address, isAlternative);
|
|
761
|
-
}
|
|
762
|
-
}
|
|
763
|
-
|
|
764
|
-
export { AccountsEvents as A, Wallet as W, WalletEvents as a, Accounts as b, Account as c };
|