@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
|
@@ -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.745Z
|
|
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.745Z
|
|
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.745Z
|
|
680
668
|
</div>
|
|
681
669
|
<script src="../prettify.js"></script>
|
|
682
670
|
<script>
|