@hsuite/native-connect-client 1.0.0 → 2.1.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.
- package/coverage/coverage-summary.json +9 -9
- package/coverage/index.html +24 -24
- package/coverage/lcov-report/index.html +24 -24
- package/coverage/lcov-report/src/handlers/index.html +9 -9
- package/coverage/lcov-report/src/handlers/session-handler.ts.html +6 -57
- package/coverage/lcov-report/src/handlers/signing-handler.ts.html +6 -57
- package/coverage/lcov-report/src/handlers/wallet-handler.ts.html +5 -56
- package/coverage/lcov-report/src/harness/index.html +10 -10
- package/coverage/lcov-report/src/harness/signing-harness.ts.html +25 -37
- package/coverage/lcov-report/src/index.html +15 -15
- package/coverage/lcov-report/src/memory-transport.ts.html +23 -44
- package/coverage/lcov-report/src/protocol/e2e-harness.ts.html +39 -30
- package/coverage/lcov-report/src/protocol/index.html +11 -11
- package/coverage/lcov-report/src/query-client.ts.html +17 -53
- package/coverage/lcov-report/src/reference-client.ts.html +35 -47
- package/coverage/lcov.info +259 -334
- package/coverage/src/handlers/index.html +9 -9
- package/coverage/src/handlers/session-handler.ts.html +6 -57
- package/coverage/src/handlers/signing-handler.ts.html +6 -57
- package/coverage/src/handlers/wallet-handler.ts.html +5 -56
- package/coverage/src/harness/index.html +10 -10
- package/coverage/src/harness/signing-harness.ts.html +25 -37
- package/coverage/src/index.html +15 -15
- package/coverage/src/memory-transport.ts.html +23 -44
- package/coverage/src/protocol/e2e-harness.ts.html +39 -30
- package/coverage/src/protocol/index.html +11 -11
- package/coverage/src/query-client.ts.html +17 -53
- package/coverage/src/reference-client.ts.html +35 -47
- package/package.json +3 -3
- package/tests/e2e-harness.spec.ts +1 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>84/84</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>84/84</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -147,23 +147,12 @@
|
|
|
147
147
|
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
148
|
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
149
|
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
158
|
-
<span class="cline-any cline-yes">1x</span>
|
|
159
|
-
<span class="cline-any cline-yes">1x</span>
|
|
160
|
-
<span class="cline-any cline-yes">1x</span>
|
|
161
|
-
<span class="cline-any cline-yes">1x</span>
|
|
162
|
-
<span class="cline-any cline-yes">1x</span>
|
|
163
|
-
<span class="cline-any cline-yes">1x</span>
|
|
164
|
-
<span class="cline-any cline-yes">1x</span>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
165
151
|
<span class="cline-any cline-yes">1x</span>
|
|
166
152
|
<span class="cline-any cline-yes">1x</span>
|
|
153
|
+
<span class="cline-any cline-yes">3x</span>
|
|
154
|
+
<span class="cline-any cline-yes">3x</span>
|
|
155
|
+
<span class="cline-any cline-yes">3x</span>
|
|
167
156
|
<span class="cline-any cline-yes">1x</span>
|
|
168
157
|
<span class="cline-any cline-yes">1x</span>
|
|
169
158
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -174,9 +163,6 @@
|
|
|
174
163
|
<span class="cline-any cline-yes">1x</span>
|
|
175
164
|
<span class="cline-any cline-yes">1x</span>
|
|
176
165
|
<span class="cline-any cline-yes">1x</span>
|
|
177
|
-
<span class="cline-any cline-yes">3x</span>
|
|
178
|
-
<span class="cline-any cline-yes">3x</span>
|
|
179
|
-
<span class="cline-any cline-yes">3x</span>
|
|
180
166
|
<span class="cline-any cline-yes">1x</span>
|
|
181
167
|
<span class="cline-any cline-yes">1x</span>
|
|
182
168
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -245,38 +231,31 @@
|
|
|
245
231
|
<span class="cline-any cline-yes">1x</span>
|
|
246
232
|
<span class="cline-any cline-yes">1x</span>
|
|
247
233
|
<span class="cline-any cline-yes">2x</span>
|
|
248
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
249
|
-
|
|
250
|
-
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
251
|
-
*
|
|
252
|
-
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
253
|
-
*
|
|
254
|
-
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
255
|
-
* visit https://hsuite.finance/licensing
|
|
256
|
-
*/
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* @file In-memory transport implementation for testing RPC communication.
|
|
260
|
-
* Provides isolated message delivery between client and server without network I/O.
|
|
261
|
-
*
|
|
262
|
-
* @module @hsuite/native-connect-client/memory-transport
|
|
263
|
-
*/
|
|
264
|
-
|
|
265
|
-
import { EventEmitter } from 'eventemitter3';
|
|
266
|
-
import type { RpcEnvelope } from '@hsuite/native-connect-types';
|
|
234
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { EventEmitter } from 'eventemitter3';
|
|
235
|
+
import type { RpcEnvelope } from '@hsuite/connect-types';
|
|
267
236
|
|
|
268
237
|
function cloneEnvelope(envelope: RpcEnvelope): RpcEnvelope {
|
|
269
238
|
return JSON.parse(JSON.stringify(envelope)) as RpcEnvelope;
|
|
270
239
|
}
|
|
271
240
|
|
|
272
241
|
/**
|
|
273
|
-
* @
|
|
274
|
-
*
|
|
275
|
-
*
|
|
242
|
+
* @description In-memory transport for testing RPC communication
|
|
243
|
+
*
|
|
276
244
|
* Provides:
|
|
277
245
|
* - Synchronous message delivery between client and server emitters
|
|
278
|
-
* - Message isolation via deep cloning
|
|
246
|
+
* - Message isolation via deep cloning
|
|
279
247
|
* - Pending promise queue for ordered delivery
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```typescript
|
|
251
|
+
* const transport = new MemoryTransport();
|
|
252
|
+
*
|
|
253
|
+
* transport.onMessage((msg) => console.log('Client received:', msg));
|
|
254
|
+
* transport.onServerMessage((msg) => console.log('Server received:', msg));
|
|
255
|
+
*
|
|
256
|
+
* await transport.send(envelope, 'client');
|
|
257
|
+
* await transport.drain();
|
|
258
|
+
* ```
|
|
280
259
|
*/
|
|
281
260
|
export class MemoryTransport {
|
|
282
261
|
private readonly clientEmitter = new EventEmitter();
|
|
@@ -343,7 +322,7 @@ export class MemoryTransport {
|
|
|
343
322
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
344
323
|
Code coverage generated by
|
|
345
324
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
346
|
-
at 2026-
|
|
325
|
+
at 2026-01-12T14:27:06.757Z
|
|
347
326
|
</div>
|
|
348
327
|
<script src="../prettify.js"></script>
|
|
349
328
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">82.31% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>135/164</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">82.31% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>135/164</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -224,7 +224,13 @@
|
|
|
224
224
|
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
225
|
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
226
|
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
231
|
+
<span class="cline-any cline-yes">1x</span>
|
|
232
|
+
<span class="cline-any cline-yes">1x</span>
|
|
233
|
+
<span class="cline-any cline-yes">1x</span>
|
|
228
234
|
<span class="cline-any cline-yes">1x</span>
|
|
229
235
|
<span class="cline-any cline-yes">1x</span>
|
|
230
236
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -385,25 +391,7 @@
|
|
|
385
391
|
<span class="cline-any cline-yes">1x</span>
|
|
386
392
|
<span class="cline-any cline-yes">1x</span>
|
|
387
393
|
<span class="cline-any cline-yes">1x</span>
|
|
388
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
389
|
-
* HSuite Native Connect
|
|
390
|
-
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
391
|
-
*
|
|
392
|
-
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
393
|
-
*
|
|
394
|
-
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
395
|
-
* visit https://hsuite.finance/licensing
|
|
396
|
-
*/
|
|
397
|
-
|
|
398
|
-
/**
|
|
399
|
-
* @file End-to-end test harness with full wallet SDK integration.
|
|
400
|
-
* Provides complete WalletCore, ledger registration, and session management
|
|
401
|
-
* for comprehensive integration testing.
|
|
402
|
-
*
|
|
403
|
-
* @module @hsuite/native-connect-client/protocol/e2e-harness
|
|
404
|
-
*/
|
|
405
|
-
|
|
406
|
-
import { ReferenceClient } from '../reference-client';
|
|
394
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { ReferenceClient } from '../reference-client';
|
|
407
395
|
import { MemoryTransport } from '../memory-transport';
|
|
408
396
|
import {
|
|
409
397
|
WalletCore,
|
|
@@ -412,9 +400,9 @@ import {
|
|
|
412
400
|
KeyVaultService,
|
|
413
401
|
CryptoService,
|
|
414
402
|
createChannelInvite,
|
|
415
|
-
} from '@hsuite/
|
|
403
|
+
} from '@hsuite/connect-sdk';
|
|
416
404
|
import { base64 } from '@scure/base';
|
|
417
|
-
import type { LedgerAdapter, ChannelInvite } from '@hsuite/
|
|
405
|
+
import type { LedgerAdapter, ChannelInvite } from '@hsuite/connect-sdk';
|
|
418
406
|
|
|
419
407
|
/**
|
|
420
408
|
* @description Configuration options for end-to-end test harness
|
|
@@ -431,14 +419,35 @@ export interface HarnessOptions {
|
|
|
431
419
|
}
|
|
432
420
|
|
|
433
421
|
/**
|
|
434
|
-
* @
|
|
435
|
-
*
|
|
436
|
-
*
|
|
422
|
+
* @description End-to-end test harness with full wallet SDK integration
|
|
423
|
+
*
|
|
437
424
|
* Provides:
|
|
438
425
|
* - Complete WalletCore instance with ledger registration
|
|
439
426
|
* - Reference client for RPC communication
|
|
440
427
|
* - In-memory transport for isolated testing
|
|
441
428
|
* - Session establishment utilities
|
|
429
|
+
*
|
|
430
|
+
* @example
|
|
431
|
+
* ```typescript
|
|
432
|
+
* import { createChannelInvite } from '@hsuite/connect-sdk';
|
|
433
|
+
*
|
|
434
|
+
* const invite = createChannelInvite({
|
|
435
|
+
* type: 'session',
|
|
436
|
+
* app: { id: 'my-dapp', name: 'My DApp' },
|
|
437
|
+
* context: { ledgerId: 'hedera', networkId: 'hedera:testnet' },
|
|
438
|
+
* permissions: [],
|
|
439
|
+
* });
|
|
440
|
+
*
|
|
441
|
+
* const harness = new EndToEndHarness({
|
|
442
|
+
* ledgerAdapter: new HederaLedgerAdapter(),
|
|
443
|
+
* session: {
|
|
444
|
+
* request: invite,
|
|
445
|
+
* }
|
|
446
|
+
* });
|
|
447
|
+
*
|
|
448
|
+
* const sessionId = await harness.establishSession();
|
|
449
|
+
* await harness.teardown();
|
|
450
|
+
* ```
|
|
442
451
|
*/
|
|
443
452
|
export class EndToEndHarness {
|
|
444
453
|
readonly client: ReferenceClient;
|
|
@@ -553,7 +562,7 @@ export class EndToEndHarness {
|
|
|
553
562
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
554
563
|
Code coverage generated by
|
|
555
564
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
556
|
-
at 2026-
|
|
565
|
+
at 2026-01-12T14:27:06.757Z
|
|
557
566
|
</div>
|
|
558
567
|
<script src="../../prettify.js"></script>
|
|
559
568
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">82.31% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>135/164</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">82.31% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>135/164</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file high" data-value="e2e-harness.ts"><a href="e2e-harness.ts.html">e2e-harness.ts</a></td>
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
83
|
+
<td data-value="82.31" class="pic high">
|
|
84
|
+
<div class="chart"><div class="cover-fill" style="width: 82%"></div><div class="cover-empty" style="width: 18%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="
|
|
87
|
-
<td data-value="
|
|
86
|
+
<td data-value="82.31" class="pct high">82.31%</td>
|
|
87
|
+
<td data-value="164" class="abs high">135/164</td>
|
|
88
88
|
<td data-value="66.66" class="pct medium">66.66%</td>
|
|
89
89
|
<td data-value="6" class="abs medium">4/6</td>
|
|
90
90
|
<td data-value="21.05" class="pct low">21.05%</td>
|
|
91
91
|
<td data-value="19" class="abs low">4/19</td>
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
92
|
+
<td data-value="82.31" class="pct high">82.31%</td>
|
|
93
|
+
<td data-value="164" class="abs high">135/164</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
</tbody>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at 2026-
|
|
104
|
+
at 2026-01-12T14:27:06.757Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../../prettify.js"></script>
|
|
107
107
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>0/
|
|
28
|
+
<span class='fraction'>0/52</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">0% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>0/
|
|
49
|
+
<span class='fraction'>0/52</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -115,19 +115,7 @@
|
|
|
115
115
|
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
116
|
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
117
|
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
131
119
|
<span class="cline-any cline-no"> </span>
|
|
132
120
|
<span class="cline-any cline-no"> </span>
|
|
133
121
|
<span class="cline-any cline-no"> </span>
|
|
@@ -179,46 +167,22 @@
|
|
|
179
167
|
<span class="cline-any cline-no"> </span>
|
|
180
168
|
<span class="cline-any cline-no"> </span>
|
|
181
169
|
<span class="cline-any cline-no"> </span>
|
|
182
|
-
<span class="cline-any cline-
|
|
183
|
-
<span class="
|
|
184
|
-
<span class="cline-any cline-no"> </span>
|
|
185
|
-
<span class="cline-any cline-no"> </span>
|
|
186
|
-
<span class="cline-any cline-no"> </span>
|
|
187
|
-
<span class="cline-any cline-no"> </span>
|
|
188
|
-
<span class="cline-any cline-no"> </span>
|
|
189
|
-
<span class="cline-any cline-no"> </span>
|
|
190
|
-
<span class="cline-any cline-no"> </span>
|
|
191
|
-
<span class="cline-any cline-no"> </span>
|
|
192
|
-
<span class="cline-any cline-no"> </span>
|
|
193
|
-
<span class="cline-any cline-no"> </span>
|
|
194
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >/**<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
195
|
-
<span class="cstat-no" title="statement not covered" > * HSuite Native Connect</span>
|
|
196
|
-
<span class="cstat-no" title="statement not covered" > * Copyright 2024-2025 HSuite (https://hsuite.finance)</span>
|
|
197
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
198
|
-
<span class="cstat-no" title="statement not covered" > * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0</span>
|
|
199
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
200
|
-
<span class="cstat-no" title="statement not covered" > * This file is part of HSuite Native Connect. For commercial licensing,</span>
|
|
201
|
-
<span class="cstat-no" title="statement not covered" > * visit https://hsuite.finance/licensing</span>
|
|
202
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
203
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
204
|
-
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
205
|
-
<span class="cstat-no" title="statement not covered" > * @file High-level query client for common wallet RPC methods.</span>
|
|
206
|
-
<span class="cstat-no" title="statement not covered" > * Provides convenience methods wrapping ReferenceClient for typical</span>
|
|
207
|
-
<span class="cstat-no" title="statement not covered" > * wallet operations like account discovery and configuration retrieval.</span>
|
|
208
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
209
|
-
<span class="cstat-no" title="statement not covered" > * @module @hsuite/native-connect-client/query-client</span>
|
|
210
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
211
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
212
|
-
<span class="cstat-no" title="statement not covered" >import { ReferenceClient } from './reference-client';</span>
|
|
213
|
-
<span class="cstat-no" title="statement not covered" >import type { RpcRequest, RpcResponse } from '@hsuite/native-connect-types';</span>
|
|
170
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >import { ReferenceClient } from './reference-client';<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
171
|
+
<span class="cstat-no" title="statement not covered" >import type { RpcRequest, RpcResponse } from '@hsuite/connect-types';</span>
|
|
214
172
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
215
173
|
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
216
|
-
<span class="cstat-no" title="statement not covered" > * @
|
|
217
|
-
<span class="cstat-no" title="statement not covered" > *
|
|
218
|
-
<span class="cstat-no" title="statement not covered" > *</span>
|
|
174
|
+
<span class="cstat-no" title="statement not covered" > * @description High-level query client for common wallet RPC methods</span>
|
|
175
|
+
<span class="cstat-no" title="statement not covered" > * </span>
|
|
219
176
|
<span class="cstat-no" title="statement not covered" > * Provides convenience methods for:</span>
|
|
220
|
-
<span class="cstat-no" title="statement not covered" > * - Account discovery
|
|
221
|
-
<span class="cstat-no" title="statement not covered" > * - Configuration retrieval
|
|
177
|
+
<span class="cstat-no" title="statement not covered" > * - Account discovery</span>
|
|
178
|
+
<span class="cstat-no" title="statement not covered" > * - Configuration retrieval</span>
|
|
179
|
+
<span class="cstat-no" title="statement not covered" > * </span>
|
|
180
|
+
<span class="cstat-no" title="statement not covered" > * @example</span>
|
|
181
|
+
<span class="cstat-no" title="statement not covered" > * ```typescript</span>
|
|
182
|
+
<span class="cstat-no" title="statement not covered" > * const queryClient = new QueryClient(referenceClient);</span>
|
|
183
|
+
<span class="cstat-no" title="statement not covered" > * const accounts = await queryClient.getAccounts();</span>
|
|
184
|
+
<span class="cstat-no" title="statement not covered" > * const config = await queryClient.getConfig();</span>
|
|
185
|
+
<span class="cstat-no" title="statement not covered" > * ```</span>
|
|
222
186
|
<span class="cstat-no" title="statement not covered" > */</span>
|
|
223
187
|
<span class="cstat-no" title="statement not covered" >export class QueryClient {</span>
|
|
224
188
|
<span class="cstat-no" title="statement not covered" > constructor(private readonly client: ReferenceClient) {}</span>
|
|
@@ -262,7 +226,7 @@
|
|
|
262
226
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
263
227
|
Code coverage generated by
|
|
264
228
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
265
|
-
at 2026-
|
|
229
|
+
at 2026-01-12T14:27:06.757Z
|
|
266
230
|
</div>
|
|
267
231
|
<script src="../prettify.js"></script>
|
|
268
232
|
<script>
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">98.98% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>196/198</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">98.98% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>196/198</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -261,14 +261,7 @@
|
|
|
261
261
|
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
262
|
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
263
|
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
269
|
-
<span class="cline-any cline-yes">1x</span>
|
|
270
|
-
<span class="cline-any cline-yes">1x</span>
|
|
271
|
-
<span class="cline-any cline-yes">1x</span>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
272
265
|
<span class="cline-any cline-yes">1x</span>
|
|
273
266
|
<span class="cline-any cline-yes">1x</span>
|
|
274
267
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -434,7 +427,6 @@
|
|
|
434
427
|
<span class="cline-any cline-yes">3x</span>
|
|
435
428
|
<span class="cline-any cline-yes">8x</span>
|
|
436
429
|
<span class="cline-any cline-yes">8x</span>
|
|
437
|
-
<span class="cline-any cline-yes">8x</span>
|
|
438
430
|
<span class="cline-any cline-yes">12x</span>
|
|
439
431
|
<span class="cline-any cline-yes">12x</span>
|
|
440
432
|
<span class="cline-any cline-yes">12x</span>
|
|
@@ -467,28 +459,16 @@
|
|
|
467
459
|
<span class="cline-any cline-no"> </span>
|
|
468
460
|
<span class="cline-any cline-no"> </span>
|
|
469
461
|
<span class="cline-any cline-yes">19x</span>
|
|
470
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js"
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
/**
|
|
481
|
-
* @file Reference client implementation for dApp developers.
|
|
482
|
-
* Provides a complete RPC client with bidirectional message routing,
|
|
483
|
-
* timeout protection, and event-driven lifecycle hooks.
|
|
484
|
-
*
|
|
485
|
-
* @module @hsuite/native-connect-client/reference-client
|
|
486
|
-
*/
|
|
487
|
-
|
|
488
|
-
import EventEmitter from 'eventemitter3';
|
|
489
|
-
import { RpcClient, RpcCodec, RpcServer, RpcRouter, getLogger } from '@hsuite/native-connect-sdk';
|
|
490
|
-
import type { RpcRequest, RpcResponse, RpcEnvelope } from '@hsuite/native-connect-types';
|
|
491
|
-
import { RpcRequestSchema, RpcErrorSchema, RpcSuccessSchema } from '@hsuite/native-connect-types';
|
|
462
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import EventEmitter from 'eventemitter3';
|
|
463
|
+
import {
|
|
464
|
+
RpcClient,
|
|
465
|
+
RpcCodec,
|
|
466
|
+
RpcServer,
|
|
467
|
+
RpcRouter,
|
|
468
|
+
getLogger,
|
|
469
|
+
} from '@hsuite/connect-sdk';
|
|
470
|
+
import type { RpcRequest, RpcResponse, RpcEnvelope } from '@hsuite/connect-types';
|
|
471
|
+
import { RpcRequestSchema, RpcErrorSchema, RpcSuccessSchema } from '@hsuite/connect-types';
|
|
492
472
|
|
|
493
473
|
/**
|
|
494
474
|
* @description Transport abstraction for RPC message exchange
|
|
@@ -526,19 +506,28 @@ export interface ReferenceClientOptions {
|
|
|
526
506
|
export type ReferenceClientEvent = 'request' | 'response' | 'response:error' | 'error';
|
|
527
507
|
|
|
528
508
|
/**
|
|
529
|
-
* @
|
|
530
|
-
*
|
|
531
|
-
*
|
|
532
|
-
*
|
|
533
|
-
* This is a reference implementation designed for dApp developers to understand
|
|
534
|
-
* and test wallet communication patterns. It demonstrates the complete RPC
|
|
535
|
-
* request/response lifecycle with proper timeout handling and error recovery.
|
|
536
|
-
*
|
|
537
|
-
* Features:
|
|
509
|
+
* @description Developer-facing RPC client for HSuite SDK integration testing
|
|
510
|
+
*
|
|
511
|
+
* Provides:
|
|
538
512
|
* - Request/response RPC communication with timeout protection
|
|
539
513
|
* - Bidirectional message routing for client-server scenarios
|
|
540
514
|
* - Event emission for request/response lifecycle hooks
|
|
541
515
|
* - Handler registration for incoming RPC methods
|
|
516
|
+
*
|
|
517
|
+
* @example
|
|
518
|
+
* ```typescript
|
|
519
|
+
* const client = new ReferenceClient({
|
|
520
|
+
* transport: new MemoryTransport(),
|
|
521
|
+
* timeoutMs: 5000
|
|
522
|
+
* });
|
|
523
|
+
*
|
|
524
|
+
* const response = await client.send({
|
|
525
|
+
* id: '1',
|
|
526
|
+
* jsonrpc: '2.0',
|
|
527
|
+
* method: 'wallet/accounts',
|
|
528
|
+
* params: {}
|
|
529
|
+
* });
|
|
530
|
+
* ```
|
|
542
531
|
*/
|
|
543
532
|
export class ReferenceClient extends EventEmitter<ReferenceClientEvent | string> {
|
|
544
533
|
private readonly rpc: RpcClient;
|
|
@@ -636,8 +625,7 @@ export class ReferenceClient extends EventEmitter<ReferenceClientEvent | stri
|
|
|
636
625
|
}
|
|
637
626
|
|
|
638
627
|
const result = payload as RpcResponse;
|
|
639
|
-
const id =
|
|
640
|
-
typeof result.id === <span class="branch-0 cbranch-no" title="branch not covered" >'string' || typeof result.id === 'number' ? r</span>esult.<span class="branch-0 cbranch-no" title="branch not covered" >id : 'unknown';</span>
|
|
628
|
+
const id = typeof result.id === <span class="branch-0 cbranch-no" title="branch not covered" >'string' || typeof result.id === 'number' ? r</span>esult.<span class="branch-0 cbranch-no" title="branch not covered" >id : 'unknown';</span>
|
|
641
629
|
const callback = this.pending.get(id);
|
|
642
630
|
|
|
643
631
|
if (callback) {
|
|
@@ -676,7 +664,7 @@ export class ReferenceClient extends EventEmitter<ReferenceClientEvent | stri
|
|
|
676
664
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
677
665
|
Code coverage generated by
|
|
678
666
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
679
|
-
at 2026-
|
|
667
|
+
at 2026-01-12T14:27:06.757Z
|
|
680
668
|
</div>
|
|
681
669
|
<script src="../prettify.js"></script>
|
|
682
670
|
<script>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hsuite/native-connect-client",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"docs": "compodoc -p tsconfig.build.json -c ../../compodoc.tier3.json -d dist/docs --name 'Reference Client API' --includes docs"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@hsuite/native-connect-sdk": "^1.
|
|
20
|
-
"@hsuite/native-connect-types": "^1.
|
|
19
|
+
"@hsuite/native-connect-sdk": "^2.1.1",
|
|
20
|
+
"@hsuite/native-connect-types": "^2.1.1",
|
|
21
21
|
"eventemitter3": "^5.0.1",
|
|
22
22
|
"@scure/base": "^1.2.6"
|
|
23
23
|
},
|