@hashgraph/hedera-wallet-connect 1.3.2-0 → 1.3.2-1

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 (99) hide show
  1. package/README.md +4 -4
  2. package/dist/src/index.d.ts +1 -0
  3. package/dist/src/index.js +20 -0
  4. package/dist/{types/src → src}/lib/dapp/DAppSigner.d.ts +0 -1
  5. package/dist/src/lib/dapp/DAppSigner.js +214 -0
  6. package/dist/{types/src → src}/lib/dapp/index.d.ts +0 -1
  7. package/dist/src/lib/dapp/index.js +431 -0
  8. package/dist/{types/src → src}/lib/index.d.ts +0 -1
  9. package/dist/src/lib/index.js +22 -0
  10. package/dist/{types/src → src}/lib/shared/chainIds.d.ts +0 -1
  11. package/dist/src/lib/shared/chainIds.js +31 -0
  12. package/dist/{types/src → src}/lib/shared/errors.d.ts +0 -1
  13. package/dist/src/lib/shared/errors.js +51 -0
  14. package/dist/{types/src → src}/lib/shared/events.d.ts +0 -1
  15. package/dist/src/lib/shared/events.js +27 -0
  16. package/dist/{types/src → src}/lib/shared/extensionController.d.ts +0 -1
  17. package/dist/src/lib/shared/extensionController.js +42 -0
  18. package/dist/{types/src → src}/lib/shared/index.d.ts +0 -1
  19. package/dist/src/lib/shared/index.js +26 -0
  20. package/dist/{types/src → src}/lib/shared/methods.d.ts +0 -1
  21. package/dist/src/lib/shared/methods.js +32 -0
  22. package/dist/{types/src → src}/lib/shared/payloads.d.ts +0 -1
  23. package/dist/src/lib/shared/payloads.js +20 -0
  24. package/dist/{types/src → src}/lib/shared/utils.d.ts +0 -1
  25. package/dist/src/lib/shared/utils.js +424 -0
  26. package/dist/{types/src → src}/lib/wallet/index.d.ts +0 -1
  27. package/dist/src/lib/wallet/index.js +301 -0
  28. package/dist/{types/src → src}/lib/wallet/provider.d.ts +0 -1
  29. package/dist/src/lib/wallet/provider.js +58 -0
  30. package/dist/{types/src → src}/lib/wallet/types.d.ts +0 -1
  31. package/dist/src/lib/wallet/types.js +20 -0
  32. package/dist/{types/test → test}/_helpers.d.ts +0 -1
  33. package/dist/test/_helpers.js +95 -0
  34. package/dist/test/dapp/DAppConnector.test.d.ts +1 -0
  35. package/dist/test/dapp/DAppConnector.test.js +236 -0
  36. package/dist/test/dapp/DAppSigner.test.d.ts +1 -0
  37. package/dist/test/dapp/DAppSigner.test.js +155 -0
  38. package/dist/test/utils.test.d.ts +1 -0
  39. package/dist/test/utils.test.js +202 -0
  40. package/dist/test/wallet/methods/wallet-executeTransaction.test.d.ts +1 -0
  41. package/dist/test/wallet/methods/wallet-executeTransaction.test.js +43 -0
  42. package/dist/test/wallet/methods/wallet-getNodeAddresses.test.d.ts +1 -0
  43. package/dist/test/wallet/methods/wallet-getNodeAddresses.test.js +40 -0
  44. package/dist/test/wallet/methods/wallet-signAndExecuteQuery.test.d.ts +1 -0
  45. package/dist/test/wallet/methods/wallet-signAndExecuteQuery.test.js +41 -0
  46. package/dist/test/wallet/methods/wallet-signAndExecuteTransaction.test.d.ts +1 -0
  47. package/dist/test/wallet/methods/wallet-signAndExecuteTransaction.test.js +48 -0
  48. package/dist/test/wallet/methods/wallet-signMessage.test.d.ts +1 -0
  49. package/dist/test/wallet/methods/wallet-signMessage.test.js +60 -0
  50. package/dist/test/wallet/methods/wallet-signTransaction.test.d.ts +1 -0
  51. package/dist/test/wallet/methods/wallet-signTransaction.test.js +45 -0
  52. package/dist/test/wallet/wallet-init.test.d.ts +1 -0
  53. package/dist/test/wallet/wallet-init.test.js +53 -0
  54. package/package.json +11 -19
  55. package/dist/browser-cjs-metafile.json +0 -1
  56. package/dist/browser-cjs.js +0 -250
  57. package/dist/browser-esm-metafile.json +0 -1
  58. package/dist/browser-esm.js +0 -250
  59. package/dist/node-cjs-metafile.json +0 -1
  60. package/dist/node-cjs.js +0 -11404
  61. package/dist/node-esm-metafile.json +0 -1
  62. package/dist/node-esm.js +0 -11404
  63. package/dist/types/src/index.d.ts +0 -2
  64. package/dist/types/src/index.d.ts.map +0 -1
  65. package/dist/types/src/lib/dapp/DAppSigner.d.ts.map +0 -1
  66. package/dist/types/src/lib/dapp/index.d.ts.map +0 -1
  67. package/dist/types/src/lib/index.d.ts.map +0 -1
  68. package/dist/types/src/lib/shared/chainIds.d.ts.map +0 -1
  69. package/dist/types/src/lib/shared/errors.d.ts.map +0 -1
  70. package/dist/types/src/lib/shared/events.d.ts.map +0 -1
  71. package/dist/types/src/lib/shared/extensionController.d.ts.map +0 -1
  72. package/dist/types/src/lib/shared/index.d.ts.map +0 -1
  73. package/dist/types/src/lib/shared/methods.d.ts.map +0 -1
  74. package/dist/types/src/lib/shared/payloads.d.ts.map +0 -1
  75. package/dist/types/src/lib/shared/utils.d.ts.map +0 -1
  76. package/dist/types/src/lib/wallet/index.d.ts.map +0 -1
  77. package/dist/types/src/lib/wallet/provider.d.ts.map +0 -1
  78. package/dist/types/src/lib/wallet/types.d.ts.map +0 -1
  79. package/dist/types/test/_helpers.d.ts.map +0 -1
  80. package/dist/types/test/dapp/DAppConnector.test.d.ts +0 -2
  81. package/dist/types/test/dapp/DAppConnector.test.d.ts.map +0 -1
  82. package/dist/types/test/dapp/DAppSigner.test.d.ts +0 -2
  83. package/dist/types/test/dapp/DAppSigner.test.d.ts.map +0 -1
  84. package/dist/types/test/utils.test.d.ts +0 -2
  85. package/dist/types/test/utils.test.d.ts.map +0 -1
  86. package/dist/types/test/wallet/methods/wallet-executeTransaction.test.d.ts +0 -2
  87. package/dist/types/test/wallet/methods/wallet-executeTransaction.test.d.ts.map +0 -1
  88. package/dist/types/test/wallet/methods/wallet-getNodeAddresses.test.d.ts +0 -2
  89. package/dist/types/test/wallet/methods/wallet-getNodeAddresses.test.d.ts.map +0 -1
  90. package/dist/types/test/wallet/methods/wallet-signAndExecuteQuery.test.d.ts +0 -2
  91. package/dist/types/test/wallet/methods/wallet-signAndExecuteQuery.test.d.ts.map +0 -1
  92. package/dist/types/test/wallet/methods/wallet-signAndExecuteTransaction.test.d.ts +0 -2
  93. package/dist/types/test/wallet/methods/wallet-signAndExecuteTransaction.test.d.ts.map +0 -1
  94. package/dist/types/test/wallet/methods/wallet-signMessage.test.d.ts +0 -2
  95. package/dist/types/test/wallet/methods/wallet-signMessage.test.d.ts.map +0 -1
  96. package/dist/types/test/wallet/methods/wallet-signTransaction.test.d.ts +0 -2
  97. package/dist/types/test/wallet/methods/wallet-signTransaction.test.d.ts.map +0 -1
  98. package/dist/types/test/wallet/wallet-init.test.d.ts +0 -2
  99. package/dist/types/test/wallet/wallet-init.test.d.ts.map +0 -1
@@ -0,0 +1,301 @@
1
+ /*
2
+ *
3
+ * Hedera Wallet Connect
4
+ *
5
+ * Copyright (C) 2023 Hedera Hashgraph, LLC
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ import { Buffer } from 'buffer';
21
+ import { Core } from '@walletconnect/core';
22
+ import { Web3Wallet } from '@walletconnect/web3wallet';
23
+ import { buildApprovedNamespaces, getSdkError } from '@walletconnect/utils';
24
+ import { Wallet as HederaWallet, Client, AccountId } from '@hashgraph/sdk';
25
+ import { HederaChainId, HederaSessionEvent, HederaJsonRpcMethod, base64StringToQuery, Uint8ArrayToBase64String, stringToSignerMessage, signatureMapToBase64String, signerSignaturesToSignatureMap, base64StringToTransaction, getHederaError, } from '../shared';
26
+ import { proto } from '@hashgraph/proto';
27
+ import Provider from './provider';
28
+ export { default as WalletProvider } from './provider';
29
+ /*
30
+ *
31
+ * @see {@link https://github.com/WalletConnect/walletconnect-monorepo/blob/v2.0/packages/web3wallet/src/client.ts}
32
+ */
33
+ export class HederaWeb3Wallet extends Web3Wallet {
34
+ /*
35
+ * Set default values for chains, methods, events
36
+ */
37
+ constructor(opts, chains = Object.values(HederaChainId), methods = Object.values(HederaJsonRpcMethod), sessionEvents = Object.values(HederaSessionEvent)) {
38
+ super(opts);
39
+ this.chains = chains;
40
+ this.methods = methods;
41
+ this.sessionEvents = sessionEvents;
42
+ }
43
+ // wrapper to reduce needing to instantiate Core object on client, also add hedera sensible defaults
44
+ static async create(projectId, metadata, chains, methods, sessionEvents) {
45
+ const wallet = new HederaWeb3Wallet({ core: new Core({ projectId }), metadata }, chains, methods, sessionEvents);
46
+ //https://github.com/WalletConnect/walletconnect-monorepo/blob/14f54684c3d89a5986a68f4dd700a79a958f1604/packages/web3wallet/src/client.ts#L178
47
+ wallet.logger.trace(`Initialized`);
48
+ try {
49
+ await wallet.engine.init();
50
+ wallet.logger.info(`Web3Wallet Initialization Success`);
51
+ }
52
+ catch (error) {
53
+ wallet.logger.info(`Web3Wallet Initialization Failure`);
54
+ wallet.logger.error(error.message);
55
+ throw error;
56
+ }
57
+ return wallet;
58
+ }
59
+ /*
60
+ * Hedera Wallet Signer
61
+ */
62
+ getHederaWallet(chainId, accountId, privateKey, _provider) {
63
+ const network = chainId.split(':')[1];
64
+ const client = Client.forName(network);
65
+ const provider = _provider !== null && _provider !== void 0 ? _provider : new Provider(client);
66
+ return new HederaWallet(accountId, privateKey, provider);
67
+ }
68
+ /*
69
+ * Session proposal
70
+ */
71
+ async buildAndApproveSession(accounts, { id, params }) {
72
+ // filter to get unique chains
73
+ const chains = accounts
74
+ .map((account) => account.split(':').slice(0, 2).join(':'))
75
+ .filter((x, i, a) => a.indexOf(x) == i);
76
+ return await this.approveSession({
77
+ id,
78
+ namespaces: buildApprovedNamespaces({
79
+ proposal: params,
80
+ supportedNamespaces: {
81
+ hedera: {
82
+ chains,
83
+ methods: this.methods,
84
+ events: this.sessionEvents,
85
+ accounts,
86
+ },
87
+ },
88
+ }),
89
+ });
90
+ }
91
+ /*
92
+ * Session Requests
93
+ */
94
+ validateParam(name, value, expectedType) {
95
+ if (expectedType === 'array' && Array.isArray(value))
96
+ return;
97
+ if (typeof value === expectedType)
98
+ return;
99
+ throw getHederaError('INVALID_PARAMS', `Invalid paramameter value for ${name}, expected ${expectedType} but got ${typeof value}`);
100
+ }
101
+ parseSessionRequest(event,
102
+ // optional arg to throw error if request is invalid, call with shouldThrow = false when calling from rejectSessionRequest as we only need id and top to send reject response
103
+ shouldThrow = true) {
104
+ const { id, topic } = event;
105
+ const { request: { method, params }, chainId, } = event.params;
106
+ let body;
107
+ // get account id from optional second param for transactions and queries or from transaction id
108
+ // this allows for the case where the requested signer is not the payer, but defaults to the payer if a second param is not provided
109
+ let signerAccountId;
110
+ // First test for valid params for each method
111
+ // then convert params to a body that the respective function expects
112
+ try {
113
+ switch (method) {
114
+ case HederaJsonRpcMethod.GetNodeAddresses: {
115
+ // 1
116
+ if (params)
117
+ throw getHederaError('INVALID_PARAMS');
118
+ break;
119
+ }
120
+ case HederaJsonRpcMethod.ExecuteTransaction: {
121
+ // 2
122
+ const { transactionList } = params;
123
+ this.validateParam('transactionList', transactionList, 'string');
124
+ body = base64StringToTransaction(transactionList);
125
+ break;
126
+ }
127
+ case HederaJsonRpcMethod.SignMessage: {
128
+ // 3
129
+ const { signerAccountId: _accountId, message } = params;
130
+ this.validateParam('signerAccountId', _accountId, 'string');
131
+ this.validateParam('message', message, 'string');
132
+ signerAccountId = AccountId.fromString(_accountId.replace(chainId + ':', ''));
133
+ body = message;
134
+ break;
135
+ }
136
+ case HederaJsonRpcMethod.SignAndExecuteQuery: {
137
+ // 4
138
+ const { signerAccountId: _accountId, query } = params;
139
+ this.validateParam('signerAccountId', _accountId, 'string');
140
+ this.validateParam('query', query, 'string');
141
+ signerAccountId = AccountId.fromString(_accountId.replace(chainId + ':', ''));
142
+ body = base64StringToQuery(query);
143
+ break;
144
+ }
145
+ case HederaJsonRpcMethod.SignAndExecuteTransaction: {
146
+ // 5
147
+ const { signerAccountId: _accountId, transactionList } = params;
148
+ this.validateParam('signerAccountId', _accountId, 'string');
149
+ this.validateParam('transactionList', transactionList, 'string');
150
+ signerAccountId = AccountId.fromString(_accountId.replace(chainId + ':', ''));
151
+ body = base64StringToTransaction(transactionList);
152
+ break;
153
+ }
154
+ case HederaJsonRpcMethod.SignTransaction: {
155
+ // 6
156
+ const { signerAccountId: _accountId, transactionBody } = params;
157
+ this.validateParam('signerAccountId', _accountId, 'string');
158
+ this.validateParam('transactionBody', transactionBody, 'string');
159
+ signerAccountId = AccountId.fromString(_accountId.replace(chainId + ':', ''));
160
+ body = Buffer.from(transactionBody, 'base64');
161
+ break;
162
+ }
163
+ default:
164
+ throw getSdkError('INVALID_METHOD');
165
+ }
166
+ // error parsing request params
167
+ }
168
+ catch (e) {
169
+ if (shouldThrow)
170
+ throw e;
171
+ }
172
+ return {
173
+ method: method,
174
+ chainId: chainId,
175
+ id,
176
+ topic,
177
+ body,
178
+ accountId: signerAccountId,
179
+ };
180
+ }
181
+ async executeSessionRequest(event, hederaWallet) {
182
+ const { method, id, topic, body } = this.parseSessionRequest(event);
183
+ return await this[method](id, topic, body, hederaWallet);
184
+ }
185
+ // https://docs.walletconnect.com/web3wallet/wallet-usage#responding-to-session-requests
186
+ async rejectSessionRequest(event, error) {
187
+ const { id, topic } = this.parseSessionRequest(event, false);
188
+ return await this.respondSessionRequest({
189
+ topic,
190
+ response: { id, error, jsonrpc: '2.0' },
191
+ });
192
+ }
193
+ /*
194
+ * JSON RPC Methods
195
+ */
196
+ // 1. hedera_getNodeAddresses
197
+ async hedera_getNodeAddresses(id, topic, _, // ignore this param to be consistent call signature with other functions
198
+ signer) {
199
+ const nodesAccountIds = signer.getNetwork();
200
+ const nodes = Object.values(nodesAccountIds).map((nodeAccountId) => nodeAccountId.toString());
201
+ const response = {
202
+ topic,
203
+ response: {
204
+ jsonrpc: '2.0',
205
+ id,
206
+ result: {
207
+ nodes,
208
+ },
209
+ },
210
+ };
211
+ return await this.respondSessionRequest(response);
212
+ }
213
+ // 2. hedera_executeTransaction
214
+ async hedera_executeTransaction(id, topic, body, signer) {
215
+ const response = {
216
+ topic,
217
+ response: {
218
+ id,
219
+ result: (await signer.call(body)).toJSON(),
220
+ jsonrpc: '2.0',
221
+ },
222
+ };
223
+ return await this.respondSessionRequest(response);
224
+ }
225
+ // 3. hedera_signMessage
226
+ async hedera_signMessage(id, topic, body, signer) {
227
+ // signer takes an array of Uint8Arrays though spec allows for 1 message to be signed
228
+ const signerSignatures = await signer.sign(stringToSignerMessage(body));
229
+ const _signatureMap = proto.SignatureMap.create(signerSignaturesToSignatureMap(signerSignatures));
230
+ const signatureMap = signatureMapToBase64String(_signatureMap);
231
+ const response = {
232
+ topic,
233
+ response: {
234
+ jsonrpc: '2.0',
235
+ id,
236
+ result: {
237
+ signatureMap,
238
+ },
239
+ },
240
+ };
241
+ return await this.respondSessionRequest(response);
242
+ }
243
+ // 4. hedera_signAndExecuteQuery
244
+ async hedera_signAndExecuteQuery(id, topic, body, signer) {
245
+ /*
246
+ * Can be used with return values the have a toBytes method implemented
247
+ * For example:
248
+ * https://github.com/hashgraph/hedera-sdk-js/blob/c4438cbaa38074d8bfc934dba84e3b430344ed89/src/account/AccountInfo.js#L402
249
+ */
250
+ const queryResult = await body.executeWithSigner(signer);
251
+ let queryResponse = '';
252
+ if (Array.isArray(queryResult)) {
253
+ queryResponse = queryResult.map((qr) => Uint8ArrayToBase64String(qr.toBytes())).join(',');
254
+ }
255
+ else {
256
+ queryResponse = Uint8ArrayToBase64String(queryResult.toBytes());
257
+ }
258
+ const response = {
259
+ topic,
260
+ response: {
261
+ jsonrpc: '2.0',
262
+ id,
263
+ result: {
264
+ response: queryResponse,
265
+ },
266
+ },
267
+ };
268
+ return await this.respondSessionRequest(response);
269
+ }
270
+ // 5. hedera_signAndExecuteTransaction
271
+ async hedera_signAndExecuteTransaction(id, topic, body, signer) {
272
+ const signedTransaction = await signer.signTransaction(body);
273
+ const response = {
274
+ topic,
275
+ response: {
276
+ id,
277
+ result: (await signer.call(signedTransaction)).toJSON(),
278
+ jsonrpc: '2.0',
279
+ },
280
+ };
281
+ return await this.respondSessionRequest(response);
282
+ }
283
+ // 6. hedera_signTransaction
284
+ async hedera_signTransaction(id, topic, body, signer) {
285
+ const signerSignatures = await signer.sign([body]);
286
+ const _signatureMap = proto.SignatureMap.create(signerSignaturesToSignatureMap(signerSignatures));
287
+ const signatureMap = signatureMapToBase64String(_signatureMap);
288
+ const response = {
289
+ topic,
290
+ response: {
291
+ jsonrpc: '2.0',
292
+ id,
293
+ result: {
294
+ signatureMap,
295
+ },
296
+ },
297
+ };
298
+ return await this.respondSessionRequest(response);
299
+ }
300
+ }
301
+ export default HederaWeb3Wallet;
@@ -15,4 +15,3 @@ export default class Provider implements HederaWalletProvider {
15
15
  waitForReceipt(response: TransactionResponse): Promise<TransactionReceipt>;
16
16
  call<Request, Response, Output>(request: Executable<Request, Response, Output>): Promise<Output>;
17
17
  }
18
- //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1,58 @@
1
+ /*
2
+ *
3
+ * Hedera Wallet Connect
4
+ *
5
+ * Copyright (C) 2023 Hedera Hashgraph, LLC
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ import { AccountBalanceQuery, AccountInfoQuery, AccountRecordsQuery, TransactionReceiptQuery, } from '@hashgraph/sdk';
21
+ export default class Provider {
22
+ constructor(client) {
23
+ this.client = client;
24
+ }
25
+ static fromClient(client) {
26
+ return new Provider(client);
27
+ }
28
+ getLedgerId() {
29
+ return this.client.ledgerId;
30
+ }
31
+ getNetwork() {
32
+ return this.client.network;
33
+ }
34
+ getMirrorNetwork() {
35
+ return this.client.mirrorNetwork;
36
+ }
37
+ getAccountBalance(accountId) {
38
+ return new AccountBalanceQuery().setAccountId(accountId).execute(this.client);
39
+ }
40
+ getAccountInfo(accountId) {
41
+ return new AccountInfoQuery().setAccountId(accountId).execute(this.client);
42
+ }
43
+ getAccountRecords(accountId) {
44
+ return new AccountRecordsQuery().setAccountId(accountId).execute(this.client);
45
+ }
46
+ getTransactionReceipt(transactionId) {
47
+ return new TransactionReceiptQuery().setTransactionId(transactionId).execute(this.client);
48
+ }
49
+ waitForReceipt(response) {
50
+ return new TransactionReceiptQuery()
51
+ .setNodeAccountIds([response.nodeId])
52
+ .setTransactionId(response.transactionId)
53
+ .execute(this.client);
54
+ }
55
+ call(request) {
56
+ return request.execute(this.client);
57
+ }
58
+ }
@@ -29,4 +29,3 @@ export interface HederaNativeWallet {
29
29
  }
30
30
  export interface HederaEvmCompatibleWallet {
31
31
  }
32
- //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,20 @@
1
+ /*
2
+ *
3
+ * Hedera Wallet Connect
4
+ *
5
+ * Copyright (C) 2023 Hedera Hashgraph, LLC
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ export {};
@@ -36,4 +36,3 @@ export declare const testPrivateKeyED25519 = "302e020100300506032b65700422042013
36
36
  export declare function useJsonFixture(filename: string): any;
37
37
  export declare function writeJsonFixture(filename: string, data: any): void;
38
38
  export {};
39
- //# sourceMappingURL=_helpers.d.ts.map
@@ -0,0 +1,95 @@
1
+ /*
2
+ *
3
+ * Hedera Wallet Connect
4
+ *
5
+ * Copyright (C) 2023 Hedera Hashgraph, LLC
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ */
20
+ import fs from 'fs';
21
+ import path from 'path';
22
+ import { AccountId, TransactionId } from '@hashgraph/sdk';
23
+ export const projectId = 'ce06497abf4102004138a10edd29c921';
24
+ export const walletMetadata = {
25
+ name: 'Wallet Test',
26
+ url: 'https://dapp.hedera.app',
27
+ description: 'Hedera Hashgraph Wallet Example.',
28
+ icons: [
29
+ 'https://cdn-assets-cloud.frontify.com/s3/frontify-cloud-files-us/eyJwYXRoIjoiZnJvbnRpZnlcL2FjY291bnRzXC8xNFwvMTQzMTI3XC9wcm9qZWN0c1wvMTgwMjE1XC9hc3NldHNcL2M3XC8zNDU0ODY3XC85ZjM1NDliYmE5MGQ2NDA0OGU0NzlhZTNiMzkyYzY4Yy0xNTY2NTkxOTQ4LmpwZyJ9:frontify:v_zJvQTCjtNploUvnSpk8S5NJB4R5eei6f7ERL2KSeQ?width=800',
30
+ ],
31
+ };
32
+ export const dAppMetadata = {
33
+ name: 'dApp Test',
34
+ url: 'https://dapp.hedera.app',
35
+ description: 'Hedera Hashgraph dApp Example.',
36
+ icons: [
37
+ 'https://cdn-assets-cloud.frontify.com/s3/frontify-cloud-files-us/eyJwYXRoIjoiZnJvbnRpZnlcL2FjY291bnRzXC8xNFwvMTQzMTI3XC9wcm9qZWN0c1wvMTgwMjE1XC9hc3NldHNcL2M3XC8zNDU0ODY3XC85ZjM1NDliYmE5MGQ2NDA0OGU0NzlhZTNiMzkyYzY4Yy0xNTY2NTkxOTQ4LmpwZyJ9:frontify:v_zJvQTCjtNploUvnSpk8S5NJB4R5eei6f7ERL2KSeQ?width=800',
38
+ ],
39
+ };
40
+ export const requestId = 1;
41
+ export const requestTopic = 'test-topic';
42
+ export const defaultAccountNumber = 12345;
43
+ export const defaultNodeId = 3;
44
+ export const testUserAccountId = new AccountId(defaultAccountNumber);
45
+ export const testNodeAccountId = new AccountId(defaultNodeId);
46
+ /** Fixed to a specific timestamp */
47
+ export const testTransactionId = TransactionId.fromString(`0.0.${defaultAccountNumber}@1691705630.325343432`);
48
+ export function prepareTestTransaction(transaction, options) {
49
+ const selectedOptions = Object.assign({
50
+ // defaults
51
+ freeze: false, setNodeAccountIds: true, setTransactionId: true, operatorAccountId: defaultAccountNumber }, options);
52
+ if (selectedOptions.setNodeAccountIds) {
53
+ transaction.setNodeAccountIds([testNodeAccountId]);
54
+ }
55
+ if (selectedOptions.setTransactionId) {
56
+ let transactionId = testTransactionId;
57
+ if (selectedOptions.operatorAccountId &&
58
+ selectedOptions.operatorAccountId !== defaultAccountNumber) {
59
+ transactionId = TransactionId.generate(new AccountId(selectedOptions.operatorAccountId));
60
+ }
61
+ transaction.setTransactionId(transactionId);
62
+ }
63
+ if (selectedOptions.freeze) {
64
+ transaction.freeze();
65
+ }
66
+ return transaction;
67
+ }
68
+ export function prepareTestQuery(query, options) {
69
+ const selectedOptions = Object.assign({
70
+ // defaults
71
+ setNodeAccountIds: true }, options);
72
+ if (selectedOptions.setNodeAccountIds) {
73
+ query.setNodeAccountIds([testNodeAccountId]);
74
+ }
75
+ return query;
76
+ }
77
+ // from PrivateKey.generateECDSA().toStringDer()
78
+ export const testPrivateKeyECDSA = '3030020100300706052b8104000a042204203ce31ffad30d6db47c315bbea08232aad2266d8800a12aa3d8a812486e782759';
79
+ // from PrivateKey.generateED25519().toStringDer()
80
+ export const testPrivateKeyED25519 = '302e020100300506032b657004220420133eefea772add1f995c96bccf42b08b76daf67665f0c4c5ae308fae9275c142';
81
+ /** JSON fixture helpers */
82
+ const FIXTURES_PATH = 'test/_fixtures';
83
+ const filenameWithJsonExtension = (filename) => {
84
+ const file = /\.json$/.test(filename) ? filename : filename + '.json';
85
+ return path.join(FIXTURES_PATH, file);
86
+ };
87
+ export function useJsonFixture(filename) {
88
+ const filepath = filenameWithJsonExtension(filename);
89
+ const data = fs.readFileSync(filepath).toString();
90
+ return JSON.parse(data);
91
+ }
92
+ export function writeJsonFixture(filename, data) {
93
+ const filepath = filenameWithJsonExtension(filename);
94
+ fs.writeFileSync(filepath, JSON.stringify(data, null, 2));
95
+ }
@@ -0,0 +1 @@
1
+ export {};