@hashgraph/hedera-wallet-connect 1.3.2 → 1.3.4

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -71,8 +71,8 @@ use this library’s functions to easily create and handle requests for the Hede
71
71
 
72
72
  ### Example code
73
73
 
74
- - [Typescript dApp example code](src/examples/typescript/dapp/main.ts)
75
- - [Typescript Wallet example code](src/examples/typescript/wallet/main.ts)
74
+ - [Typescript dApp example code](demos/typescript/dapp/main.ts)
75
+ - [Typescript Wallet example code](demos/typescript/wallet/main.ts)
76
76
  - [React dApp example code](demos/react-dapp)
77
77
 
78
78
 
@@ -288,7 +288,7 @@ example useful for testing and development while integrating WalletConnect and H
288
288
  The docs site utilizes [Typedoc](https://typedoc.org) to generate a library documentation site
289
289
  at <https://wc.hgraph.app/docs/>
290
290
 
291
- The demo source code lives in `./src/examples/typescript` and is available at
291
+ The demo source code lives in `./demos/typescript` and is available at
292
292
  <https://wc.hgraph.app>
293
293
 
294
294
  ## Passing tests
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  *
19
19
  */
20
- import { AccountBalance, AccountId, AccountInfo, LedgerId, SignerSignature, Transaction, TransactionRecord, Client, PublicKey, TransactionId, TransactionResponse, Query, AccountRecordsQuery, AccountInfoQuery, AccountBalanceQuery, TransactionReceiptQuery, TransactionReceipt, } from '@hashgraph/sdk';
20
+ import { AccountBalance, AccountId, AccountInfo, LedgerId, SignerSignature, Transaction, TransactionRecord, Client, PublicKey, TransactionId, TransactionResponse, Query, AccountRecordsQuery, AccountInfoQuery, AccountBalanceQuery, TransactionReceiptQuery, TransactionReceipt, TransactionRecordQuery, } from '@hashgraph/sdk';
21
21
  import { proto } from '@hashgraph/proto';
22
22
  import { HederaJsonRpcMethod, Uint8ArrayToBase64String, base64StringToSignatureMap, base64StringToUint8Array, ledgerIdToCAIPChainId, queryToBase64String, transactionBodyToBase64String, transactionToBase64String, transactionToTransactionBody, extensionOpen, } from '../shared';
23
23
  const clients = {};
@@ -121,6 +121,8 @@ export class DAppSigner {
121
121
  else
122
122
  nodeAccountId = transaction.nodeAccountIds[0];
123
123
  const transactionBody = transactionToTransactionBody(transaction, nodeAccountId);
124
+ if (!transactionBody)
125
+ throw new Error('Failed to serialize transaction body');
124
126
  const transactionBodyBase64 = transactionBodyToBase64String(transactionBody);
125
127
  const { signatureMap } = await this.request({
126
128
  method: HederaJsonRpcMethod.SignTransaction,
@@ -166,6 +168,9 @@ export class DAppSigner {
166
168
  else if (query instanceof TransactionReceiptQuery) {
167
169
  return TransactionReceipt.fromBytes(data);
168
170
  }
171
+ else if (query instanceof TransactionRecordQuery) {
172
+ return TransactionRecord.fromBytes(data);
173
+ }
169
174
  else {
170
175
  throw new Error('Unsupported query type');
171
176
  }
@@ -36,9 +36,17 @@ export declare class DAppConnector {
36
36
  init({ logger }?: {
37
37
  logger?: BaseLogger;
38
38
  }): Promise<void>;
39
+ /**
40
+ * Retrieves a DAppSigner for the specified Hedera Account ID.
41
+ *
42
+ * @param {AccountId} accountId - The Hedera Account ID to find the associated signer.
43
+ * @returns {DAppSigner} - The signer object of type {@link DAppSigner} corresponding to the provided account ID.
44
+ * @throws {Error} - If no signer is found for the provided account ID.
45
+ */
39
46
  getSigner(accountId: AccountId): DAppSigner;
40
47
  /**
41
48
  * Initiates the WalletConnect connection flow using a QR code.
49
+ * @deprecated Use `openModal` instead.
42
50
  * @param pairingTopic - The pairing topic for the connection (optional).
43
51
  * @returns A Promise that resolves when the connection process is complete.
44
52
  */
@@ -114,15 +114,24 @@ export class DAppConnector {
114
114
  this.walletConnectClient.on('session_delete', (pairing) => {
115
115
  console.log(pairing);
116
116
  this.signers = this.signers.filter((signer) => signer.topic !== pairing.topic);
117
- this.disconnect(pairing.topic);
118
117
  // Session was deleted -> reset the dapp state, clean up from user session, etc.
118
+ try {
119
+ this.disconnect(pairing.topic);
120
+ }
121
+ catch (e) {
122
+ console.error(e);
123
+ }
119
124
  console.log('Dapp: Session deleted by wallet!');
120
125
  });
121
126
  this.walletConnectClient.core.pairing.events.on('pairing_delete', (pairing) => {
122
- // Session was deleted
123
127
  console.log(pairing);
124
128
  this.signers = this.signers.filter((signer) => signer.topic !== pairing.topic);
125
- this.disconnect(pairing.topic);
129
+ try {
130
+ this.disconnect(pairing.topic);
131
+ }
132
+ catch (e) {
133
+ console.error(e);
134
+ }
126
135
  console.log(`Dapp: Pairing deleted by wallet!`);
127
136
  // clean up after the pairing for `topic` was deleted.
128
137
  });
@@ -131,6 +140,13 @@ export class DAppConnector {
131
140
  this.isInitializing = false;
132
141
  }
133
142
  }
143
+ /**
144
+ * Retrieves a DAppSigner for the specified Hedera Account ID.
145
+ *
146
+ * @param {AccountId} accountId - The Hedera Account ID to find the associated signer.
147
+ * @returns {DAppSigner} - The signer object of type {@link DAppSigner} corresponding to the provided account ID.
148
+ * @throws {Error} - If no signer is found for the provided account ID.
149
+ */
134
150
  getSigner(accountId) {
135
151
  const signer = this.signers.find((signer) => signer.getAccountId().equals(accountId));
136
152
  if (!signer)
@@ -139,6 +155,7 @@ export class DAppConnector {
139
155
  }
140
156
  /**
141
157
  * Initiates the WalletConnect connection flow using a QR code.
158
+ * @deprecated Use `openModal` instead.
142
159
  * @param pairingTopic - The pairing topic for the connection (optional).
143
160
  * @returns A Promise that resolves when the connection process is complete.
144
161
  */
@@ -49,8 +49,8 @@ export declare function base64StringToTransaction<T extends Transaction>(transac
49
49
  * @param transaction - a base64 encoded string of proto.TransactionBody.encode().finish()
50
50
  * @returns `string`
51
51
  * */
52
- export declare function transactionToTransactionBody<T extends Transaction>(transaction: T, nodeAccountId: AccountId): any;
53
- export declare function transactionBodyToBase64String(transactionBody: proto.TransactionBody): string;
52
+ export declare function transactionToTransactionBody<T extends Transaction>(transaction: T, nodeAccountId: AccountId): Uint8Array | null | undefined;
53
+ export declare function transactionBodyToBase64String(transactionBody: Uint8Array): string;
54
54
  /**
55
55
  * @param transactionList - a proto.TransactionList object
56
56
  * @returns `string`
@@ -86,10 +86,10 @@ export function base64StringToTransaction(transactionBytes) {
86
86
  export function transactionToTransactionBody(transaction, nodeAccountId) {
87
87
  // This is a private function, though provides the capabilities to construct a proto.TransactionBody
88
88
  //@ts-ignore
89
- return transaction._makeTransactionBody(nodeAccountId);
89
+ return transaction._signedTransactions.current.bodyBytes;
90
90
  }
91
91
  export function transactionBodyToBase64String(transactionBody) {
92
- return Uint8ArrayToBase64String(proto.TransactionBody.encode(transactionBody).finish());
92
+ return Uint8ArrayToBase64String(transactionBody);
93
93
  }
94
94
  /**
95
95
  * @param transactionList - a proto.TransactionList object
@@ -203,9 +203,7 @@ describe('DAppConnector', () => {
203
203
  const transaction = prepareTestTransaction(new TopicCreateTransaction(), { freeze: true });
204
204
  const params = {
205
205
  signerAccountId: testUserAccountId.toString(),
206
- transactionBody: transactionBodyToBase64String(
207
- // must specify a node account id for the transaction body
208
- transactionToTransactionBody(transaction, AccountId.fromString('0.0.3'))),
206
+ transactionBody: transactionBodyToBase64String(transactionToTransactionBody(transaction, AccountId.fromString('0.0.3'))),
209
207
  };
210
208
  it('should throw an error if there is no any signer', async () => {
211
209
  connector.signers = [];
@@ -79,7 +79,6 @@ describe(`Uint8Array helpers`, () => {
79
79
  it('should decode base64 string to Uint8Array', async () => {
80
80
  const base64String = btoa('Hello World!');
81
81
  uInt8Array = base64StringToUint8Array(base64String);
82
- console.log(Array.from(uInt8Array));
83
82
  expect(uInt8Array).toBeInstanceOf(Uint8Array);
84
83
  expect(Array.from(uInt8Array)).toEqual([
85
84
  72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33,
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  *
19
19
  */
20
- import { TransferTransaction, AccountId, Hbar } from '@hashgraph/sdk';
20
+ import { TransferTransaction, Hbar, AccountId } from '@hashgraph/sdk';
21
21
  import { HederaChainId, Wallet, transactionToTransactionBody, } from '../../../src';
22
22
  import { projectId, requestId, requestTopic, testPrivateKeyECDSA, testUserAccountId, useJsonFixture, walletMetadata, } from '../../_helpers';
23
23
  describe(Wallet.name, () => {
@@ -31,6 +31,8 @@ describe(Wallet.name, () => {
31
31
  .addHbarTransfer('0.0.123', new Hbar(10))
32
32
  .addHbarTransfer('0.0.321', new Hbar(-10));
33
33
  const transactionBody = transactionToTransactionBody(transaction, AccountId.fromString('0.0.3'));
34
+ if (!transactionBody)
35
+ throw new Error('Failed to create transaction body');
34
36
  const respondSessionRequestSpy = jest.spyOn(wallet, 'respondSessionRequest');
35
37
  const response = await wallet.hedera_signTransaction(requestId, requestTopic, transactionBody, hederaWallet);
36
38
  console.log(response);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hashgraph/hedera-wallet-connect",
3
- "version": "1.3.2",
3
+ "version": "1.3.4",
4
4
  "description": "A library to facilitate integrating Hedera with WalletConnect",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,13 +18,13 @@
18
18
  "devDependencies": {
19
19
  "@hashgraph/hedera-wallet-connect": "^1.3.1",
20
20
  "@types/jest": "^29.5.3",
21
- "@types/node": "^20.11.10",
21
+ "@types/node": "^22.5.0",
22
22
  "@types/react-dom": "^18.2.21",
23
- "@walletconnect/modal": "^2.6.2",
24
- "@walletconnect/sign-client": "^2.11.0",
25
- "@walletconnect/types": "^2.11.0",
26
- "concurrently": "^8.2.2",
27
- "esbuild": "^0.23.0",
23
+ "@walletconnect/modal": "^2.7.0",
24
+ "@walletconnect/sign-client": "^2.17.0",
25
+ "@walletconnect/types": "^2.17.0",
26
+ "concurrently": "^9.0.1",
27
+ "esbuild": "^0.24.0",
28
28
  "esbuild-plugin-copy": "^2.1.1",
29
29
  "eslint-plugin-tsdoc": "^0.3.0",
30
30
  "husky": "^9.0.6",
@@ -44,12 +44,13 @@
44
44
  },
45
45
  "scripts": {
46
46
  "build": "rimraf dist && tsc",
47
- "build:example": "node scripts/examples/build.mjs",
48
- "build:demos": "node scripts/demos/build.mjs",
47
+ "build:ts-demo": "node scripts/demos/typescript/build.mjs",
48
+ "build:react-demo": "node scripts/demos/react/build.mjs",
49
49
  "build:docs": "typedoc --options typedoc.json",
50
50
  "watch": "nodemon --watch src/lib/ --ext ts --exec \"npm run build\"",
51
- "dev": "rimraf dist && npm run build && concurrently --raw \"npm run watch\" \"node scripts/examples/dev.mjs\"",
52
- "dev:demos": "rimraf dist && npm run build && concurrently --raw \"npm run watch\" \"node scripts/demos/dev.mjs\"",
51
+ "dev": "npm run dev:ts-demo",
52
+ "dev:ts-demo": "rimraf dist && npm run build && concurrently --raw \"npm run watch\" \"node scripts/demos/typescript/dev.mjs\"",
53
+ "dev:react-demo": "rimraf dist && npm run build && concurrently --raw \"npm run watch\" \"node scripts/demos/react/dev.mjs\"",
53
54
  "test": "jest",
54
55
  "test:connect": "jest --testMatch '**/DAppConnector.test.ts' --verbose",
55
56
  "test:signer": "jest --testMatch '**/DAppSigner.test.ts' --verbose",
@@ -62,8 +63,8 @@
62
63
  "peerDependencies": {
63
64
  "@hashgraph/sdk": "^2.40.0",
64
65
  "@walletconnect/qrcode-modal": "^1.8.0",
65
- "@walletconnect/types": "^2.11.0",
66
- "@walletconnect/utils": "^2.11.0",
67
- "@walletconnect/web3wallet": "^1.9.3"
66
+ "@walletconnect/types": "^2.17.0",
67
+ "@walletconnect/utils": "^2.17.0",
68
+ "@walletconnect/web3wallet": "^1.16.0"
68
69
  }
69
70
  }