@docknetwork/wallet-sdk-core 1.4.0 → 1.5.0

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 (41) hide show
  1. package/lib/biometric-provider.d.ts.map +1 -1
  2. package/lib/biometric-provider.js +8 -0
  3. package/lib/biometric-provider.js.map +1 -1
  4. package/lib/cloud-wallet.d.ts +9 -6
  5. package/lib/cloud-wallet.d.ts.map +1 -1
  6. package/lib/cloud-wallet.js +118 -54
  7. package/lib/cloud-wallet.js.map +1 -1
  8. package/lib/credential-provider.js +2 -2
  9. package/lib/credential-provider.js.map +1 -1
  10. package/lib/credentials/oidvc.d.ts +1 -1
  11. package/lib/credentials/oidvc.d.ts.map +1 -1
  12. package/lib/credentials/oidvc.js +3 -0
  13. package/lib/credentials/oidvc.js.map +1 -1
  14. package/lib/did-provider.d.ts +0 -9
  15. package/lib/did-provider.d.ts.map +1 -1
  16. package/lib/did-provider.js +1 -26
  17. package/lib/did-provider.js.map +1 -1
  18. package/lib/ecosystem-tools.d.ts.map +1 -1
  19. package/lib/ecosystem-tools.js +2 -1
  20. package/lib/ecosystem-tools.js.map +1 -1
  21. package/lib/message-provider.d.ts.map +1 -1
  22. package/lib/message-provider.js +3 -2
  23. package/lib/message-provider.js.map +1 -1
  24. package/lib/types.d.ts +2 -0
  25. package/lib/types.d.ts.map +1 -1
  26. package/lib/wallet-wasm.d.ts +2 -2
  27. package/lib/wallet-wasm.d.ts.map +1 -1
  28. package/lib/wallet-wasm.js +78 -29
  29. package/lib/wallet-wasm.js.map +1 -1
  30. package/package.json +4 -4
  31. package/src/biometric-provider.ts +9 -1
  32. package/src/cloud-wallet.ts +140 -53
  33. package/src/credential-provider.ts +2 -2
  34. package/src/credentials/oidvc.ts +5 -1
  35. package/src/did-provider.test.ts +0 -60
  36. package/src/did-provider.ts +0 -33
  37. package/src/ecosystem-tools.ts +2 -4
  38. package/src/message-provider.ts +9 -2
  39. package/src/types.ts +1 -0
  40. package/src/wallet-wasm.ts +91 -32
  41. package/tsconfig.build.tsbuildinfo +1 -1
@@ -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
  },
@@ -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.dock.io' : 'https://api-testnet.dock.io';
6
+ return networkId === 'mainnet' ? 'https://api.truvera.io' : 'https://api-testnet.truvera.io';
9
7
  }
10
8
 
11
9
  export async function getEcosystems({
@@ -139,7 +139,7 @@ export function createMessageProvider({
139
139
  return;
140
140
  }
141
141
 
142
- console.log(`Fetched ${encryptedMessages.length} messages`);
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(`Acknowledging messages for ${did}`);
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 = {
@@ -1,14 +1,14 @@
1
- import {keyringService} from '@docknetwork/wallet-sdk-wasm/src/services/keyring';
2
- import {utilCryptoService} from '@docknetwork/wallet-sdk-wasm/src/services/util-crypto';
3
- import {dockService} from '@docknetwork/wallet-sdk-wasm/src/services/dock';
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 {IWallet} from './types';
6
- import {Network} from '@docknetwork/wallet-sdk-data-store/src/types';
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 isSubstrateNetwork(network: Network) {
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 handleSubstrateNetworkChange(
19
+ export async function handleBlockchainNetworkChange(
20
20
  wallet: IWallet,
21
21
  ): Promise<void> {
22
- const currentSubstrateAddress = await dockService.getAddress();
23
- const substrateNetworkId = wallet.dataStore.networks.find(
24
- network => network.configs.substrateUrl === currentSubstrateAddress,
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 (substrateNetworkId === currentNetworkId) {
28
+ if (networkId === currentNetworkId) {
29
29
  return;
30
30
  }
31
31
 
32
- await dockService.disconnect();
33
- await setSubstrateNetwork(wallet);
32
+ await blockchainService.disconnect();
33
+ await setBlockchainNetwork(wallet);
34
34
  }
35
35
 
36
- export async function setSubstrateNetwork(wallet: IWallet) {
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
- dockService
45
- .init({
46
- address: networkConfigs.substrateUrl,
47
- })
48
- .then(() => {
49
- wallet.eventManager.emit(WalletEvents.networkConnected);
50
- })
51
- .catch(err => {
52
- captureException(new Error('Unable to connect to substrate node'));
53
- captureException(err);
54
- console.error(err);
55
- wallet.eventManager.emit(WalletEvents.networkError, err);
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 (isSubstrateNetwork(network)) {
64
- await setSubstrateNetwork(wallet);
108
+ if (isBlockchainNetwork(network)) {
109
+ await setBlockchainNetwork(wallet);
65
110
 
66
111
  wallet.eventManager.on(WalletEvents.networkUpdated, async () => {
67
- handleSubstrateNetworkChange(wallet).catch(err => console.error(err));
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);