@docknetwork/wallet-sdk-core 1.4.0 → 1.5.6
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/biometric-provider.d.ts.map +1 -1
- package/lib/biometric-provider.js +8 -0
- package/lib/biometric-provider.js.map +1 -1
- package/lib/cloud-wallet.d.ts +9 -6
- package/lib/cloud-wallet.d.ts.map +1 -1
- package/lib/cloud-wallet.js +118 -54
- package/lib/cloud-wallet.js.map +1 -1
- package/lib/credential-provider.js +2 -2
- package/lib/credential-provider.js.map +1 -1
- package/lib/credentials/oidvc.d.ts +1 -1
- package/lib/credentials/oidvc.d.ts.map +1 -1
- package/lib/credentials/oidvc.js +3 -0
- package/lib/credentials/oidvc.js.map +1 -1
- package/lib/did-provider.d.ts +0 -9
- package/lib/did-provider.d.ts.map +1 -1
- package/lib/did-provider.js +1 -26
- package/lib/did-provider.js.map +1 -1
- package/lib/ecosystem-tools.d.ts.map +1 -1
- package/lib/ecosystem-tools.js +2 -1
- package/lib/ecosystem-tools.js.map +1 -1
- package/lib/message-provider.d.ts.map +1 -1
- package/lib/message-provider.js +3 -2
- package/lib/message-provider.js.map +1 -1
- package/lib/types.d.ts +2 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/wallet-wasm.d.ts +2 -2
- package/lib/wallet-wasm.d.ts.map +1 -1
- package/lib/wallet-wasm.js +78 -29
- package/lib/wallet-wasm.js.map +1 -1
- package/package.json +4 -4
- package/src/biometric-provider.ts +9 -1
- package/src/cloud-wallet.ts +140 -53
- package/src/credential-provider.ts +2 -2
- package/src/credentials/oidvc.ts +5 -1
- package/src/did-provider.test.ts +0 -60
- package/src/did-provider.ts +0 -33
- package/src/ecosystem-tools.ts +2 -4
- package/src/message-provider.ts +9 -2
- package/src/types.ts +1 -0
- package/src/wallet-wasm.ts +91 -32
- package/tsconfig.build.tsbuildinfo +1 -1
package/src/did-provider.ts
CHANGED
|
@@ -54,35 +54,6 @@ export async function importDID({
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
export async function createDIDock({wallet, address, name}) {
|
|
58
|
-
assert(!!wallet, 'wallet is required');
|
|
59
|
-
assert(!!address, 'address is required');
|
|
60
|
-
assert(!!name, 'name is required');
|
|
61
|
-
|
|
62
|
-
const keyPair = await wallet.getAccountKeyPair(address);
|
|
63
|
-
const {dockDID, keyPairWalletId} = await didServiceRPC.registerDidDock(
|
|
64
|
-
keyPair,
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
const keydoc = await didServiceRPC.generateKeyDoc({
|
|
68
|
-
keyPairJSON: keyPair,
|
|
69
|
-
controller: dockDID,
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
const didDocument = await didServiceRPC.getDidDockDocument(dockDID);
|
|
73
|
-
|
|
74
|
-
const dockDIDResolution = {
|
|
75
|
-
id: dockDID,
|
|
76
|
-
type: 'DIDResolutionResponse',
|
|
77
|
-
name,
|
|
78
|
-
didDocument,
|
|
79
|
-
correlation: [keydoc.id, keyPairWalletId],
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
await wallet.add(keydoc);
|
|
83
|
-
await wallet.add(dockDIDResolution);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
57
|
async function editDID({wallet, id, name}){
|
|
87
58
|
if (typeof id === 'string' && id.length > 0) {
|
|
88
59
|
const docs = await wallet.query({
|
|
@@ -216,7 +187,6 @@ export interface IDIDProvider {
|
|
|
216
187
|
encryptedJSONWallet: any;
|
|
217
188
|
password: string;
|
|
218
189
|
}): Promise<void>;
|
|
219
|
-
createDIDock(params: {address: string; name: string}): Promise<void>;
|
|
220
190
|
createDIDKey(params: {name: string, derivePath?:string, type?: string}): Promise<any>;
|
|
221
191
|
editDID(params: {id: string; name: string}): Promise<void>;
|
|
222
192
|
deleteDID(params: {id: string;}): Promise<void>;
|
|
@@ -232,9 +202,6 @@ export function createDIDProvider({wallet}): IDIDProvider {
|
|
|
232
202
|
async importDID({encryptedJSONWallet, password}) {
|
|
233
203
|
return importDID({wallet, encryptedJSONWallet, password});
|
|
234
204
|
},
|
|
235
|
-
async createDIDock({address, name}) {
|
|
236
|
-
return createDIDock({wallet, address, name});
|
|
237
|
-
},
|
|
238
205
|
async createDIDKey({name, derivePath, type}) {
|
|
239
206
|
return createDIDKey({wallet, name, derivePath, type});
|
|
240
207
|
},
|
package/src/ecosystem-tools.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import {dockService} from '@docknetwork/wallet-sdk-wasm/src/services/dock';
|
|
2
|
-
import {trustRegistryService} from '@docknetwork/wallet-sdk-wasm/src/services/trust-registry';
|
|
3
1
|
import assert from 'assert';
|
|
4
2
|
import axios from 'axios';
|
|
5
3
|
|
|
6
|
-
|
|
4
|
+
// TODO: FIXME: this wont work for other staging envs
|
|
7
5
|
function getApiURL(networkId) {
|
|
8
|
-
return networkId === 'mainnet' ? 'https://api.
|
|
6
|
+
return networkId === 'mainnet' ? 'https://api.truvera.io' : 'https://api-testnet.truvera.io';
|
|
9
7
|
}
|
|
10
8
|
|
|
11
9
|
export async function getEcosystems({
|
package/src/message-provider.ts
CHANGED
|
@@ -139,7 +139,7 @@ export function createMessageProvider({
|
|
|
139
139
|
return;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
logger.debug(`Fetched ${encryptedMessages.length} messages`);
|
|
143
143
|
|
|
144
144
|
for (const message of encryptedMessages) {
|
|
145
145
|
try {
|
|
@@ -157,13 +157,20 @@ export function createMessageProvider({
|
|
|
157
157
|
|
|
158
158
|
recentlyFetchedMessages.push(message._id);
|
|
159
159
|
} catch (err) {
|
|
160
|
+
logger.debug(
|
|
161
|
+
`Failed to store message in wallet: ${JSON.stringify(message)}`,
|
|
162
|
+
);
|
|
160
163
|
// this message will be lost if it fails to be stored in the wallet
|
|
161
164
|
captureException(err);
|
|
162
165
|
}
|
|
163
166
|
}
|
|
164
167
|
|
|
165
168
|
for (const [did, messageIds] of Object.entries(messageIdsPerDid)) {
|
|
166
|
-
logger.debug(
|
|
169
|
+
logger.debug(
|
|
170
|
+
`Acknowledging ${
|
|
171
|
+
(messageIds as string[])?.length
|
|
172
|
+
} messages for ${did}`,
|
|
173
|
+
);
|
|
167
174
|
let startTime = new Date().getTime();
|
|
168
175
|
relayService
|
|
169
176
|
.ackMessages({
|
package/src/types.ts
CHANGED
|
@@ -70,6 +70,7 @@ export type IWallet = {
|
|
|
70
70
|
getNetworkId: () => string;
|
|
71
71
|
resolveDocumentNetwork: (document: any) => Promise<DocumentResolverResult>;
|
|
72
72
|
dataStore: DataStore;
|
|
73
|
+
networkCheckInterval?: NodeJS.Timeout;
|
|
73
74
|
} & IV1Wallet;
|
|
74
75
|
|
|
75
76
|
export type CrateWalletWithDataStore = {
|
package/src/wallet-wasm.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { blockchainService } from '@docknetwork/wallet-sdk-wasm/src/services/blockchain';
|
|
2
|
+
import { keyringService } from '@docknetwork/wallet-sdk-wasm/src/services/keyring';
|
|
3
|
+
import { utilCryptoService } from '@docknetwork/wallet-sdk-wasm/src/services/util-crypto';
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {WalletEvents} from '@docknetwork/wallet-sdk-wasm/src/modules/wallet';
|
|
5
|
+
import { Network } from '@docknetwork/wallet-sdk-data-store/src/types';
|
|
6
|
+
import { WalletEvents } from '@docknetwork/wallet-sdk-wasm/src/modules/wallet';
|
|
8
7
|
import { captureException } from './helpers';
|
|
8
|
+
import { IWallet } from './types';
|
|
9
9
|
|
|
10
|
-
function
|
|
11
|
-
return !!network.configs.substrateUrl;
|
|
10
|
+
function isBlockchainNetwork(network: Network) {
|
|
11
|
+
return !!(network.configs.substrateUrl || network.configs.cheqdApiUrl);
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
/**
|
|
@@ -16,58 +16,117 @@ function isSubstrateNetwork(network: Network) {
|
|
|
16
16
|
* Compare connected substrate connection with the current walle network
|
|
17
17
|
* Disconnect and Establish a new connection if the network is different
|
|
18
18
|
*/
|
|
19
|
-
export async function
|
|
19
|
+
export async function handleBlockchainNetworkChange(
|
|
20
20
|
wallet: IWallet,
|
|
21
21
|
): Promise<void> {
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
network => network.configs.substrateUrl ===
|
|
22
|
+
const currentAddress = await blockchainService.getAddress();
|
|
23
|
+
const networkId = wallet.dataStore.networks.find(
|
|
24
|
+
network => network.configs.substrateUrl === currentAddress || network.configs.cheqdApiUrl === currentAddress,
|
|
25
25
|
)?.id;
|
|
26
26
|
const currentNetworkId = wallet.dataStore.network?.id;
|
|
27
27
|
|
|
28
|
-
if (
|
|
28
|
+
if (networkId === currentNetworkId) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
await
|
|
33
|
-
await
|
|
32
|
+
await blockchainService.disconnect();
|
|
33
|
+
await setBlockchainNetwork(wallet);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
export async function
|
|
36
|
+
export async function setBlockchainNetwork(wallet: IWallet) {
|
|
37
37
|
const network = wallet.dataStore.network;
|
|
38
38
|
const networkConfigs = network.configs;
|
|
39
39
|
|
|
40
|
+
|
|
41
|
+
let cheqdMnemonicDoc = await wallet.getDocumentById('cheqd-mnemonic');
|
|
42
|
+
|
|
43
|
+
if (!cheqdMnemonicDoc) {
|
|
44
|
+
cheqdMnemonicDoc = {
|
|
45
|
+
id: 'cheqd-mnemonic',
|
|
46
|
+
type: 'Mnemonic',
|
|
47
|
+
value: await utilCryptoService.mnemonicGenerate(12),
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
await wallet.addDocument(cheqdMnemonicDoc);
|
|
51
|
+
}
|
|
52
|
+
|
|
40
53
|
await keyringService.initialize({
|
|
41
54
|
ss58Format: networkConfigs.addressPrefix,
|
|
42
55
|
});
|
|
43
56
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
let connectionInProgress = false;
|
|
58
|
+
|
|
59
|
+
const initializeBlockchain = () => {
|
|
60
|
+
clearInterval(wallet.networkCheckInterval);
|
|
61
|
+
|
|
62
|
+
if (connectionInProgress) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
connectionInProgress = true;
|
|
67
|
+
|
|
68
|
+
blockchainService
|
|
69
|
+
.init({
|
|
70
|
+
substrateUrl: networkConfigs.substrateUrl,
|
|
71
|
+
cheqdApiUrl: networkConfigs.cheqdApiUrl,
|
|
72
|
+
networkId: network.id,
|
|
73
|
+
cheqdMnemonic: cheqdMnemonicDoc.value,
|
|
74
|
+
})
|
|
75
|
+
.then(() => {
|
|
76
|
+
wallet.eventManager.emit(WalletEvents.networkConnected);
|
|
77
|
+
})
|
|
78
|
+
.catch(err => {
|
|
79
|
+
const errorMessage = new Error('Unable to connect to blockchain');
|
|
80
|
+
captureException(errorMessage);
|
|
81
|
+
captureException(err);
|
|
82
|
+
console.error(err);
|
|
83
|
+
wallet.eventManager.emit(WalletEvents.networkError, err);
|
|
84
|
+
})
|
|
85
|
+
.finally(() => {
|
|
86
|
+
connectionInProgress = false;
|
|
87
|
+
|
|
88
|
+
wallet.networkCheckInterval = setInterval(async () => {
|
|
89
|
+
try {
|
|
90
|
+
if (!await blockchainService.isApiConnected()) {
|
|
91
|
+
wallet.eventManager.emit(WalletEvents.networkError, new Error('Network not connected'));
|
|
92
|
+
initializeBlockchain();
|
|
93
|
+
}
|
|
94
|
+
} catch (err) {
|
|
95
|
+
console.error('Error during connectivity check:', err);
|
|
96
|
+
}
|
|
97
|
+
}, 10000);
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
initializeBlockchain();
|
|
57
102
|
}
|
|
58
103
|
|
|
59
104
|
export async function initWalletWasm(wallet: IWallet) {
|
|
60
105
|
await utilCryptoService.cryptoWaitReady();
|
|
61
106
|
const network = wallet.dataStore.network;
|
|
62
107
|
|
|
63
|
-
if (
|
|
64
|
-
await
|
|
108
|
+
if (isBlockchainNetwork(network)) {
|
|
109
|
+
await setBlockchainNetwork(wallet);
|
|
65
110
|
|
|
66
111
|
wallet.eventManager.on(WalletEvents.networkUpdated, async () => {
|
|
67
|
-
|
|
112
|
+
handleBlockchainNetworkChange(wallet).catch(err => console.error(err));
|
|
68
113
|
});
|
|
69
114
|
}
|
|
70
115
|
|
|
116
|
+
wallet.ensureNetwork = async () => {
|
|
117
|
+
try {
|
|
118
|
+
const isConnected = await blockchainService.isApiConnected();
|
|
119
|
+
|
|
120
|
+
if (!isConnected) {
|
|
121
|
+
await setBlockchainNetwork(wallet);
|
|
122
|
+
wallet.eventManager.emit(WalletEvents.networkConnected);
|
|
123
|
+
}
|
|
124
|
+
} catch (err) {
|
|
125
|
+
console.error('Error checking network connection:', err);
|
|
126
|
+
wallet.eventManager.emit(WalletEvents.networkError, err);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
71
130
|
wallet.setStatus('ready');
|
|
72
131
|
|
|
73
132
|
wallet.eventManager.emit(WalletEvents.ready);
|