@hsuite/native-connect-client 1.0.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.
- package/README.md +51 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-summary.json +10 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +161 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +161 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/src/handlers/index.html +146 -0
- package/coverage/lcov-report/src/handlers/session-handler.ts.html +223 -0
- package/coverage/lcov-report/src/handlers/signing-handler.ts.html +217 -0
- package/coverage/lcov-report/src/handlers/wallet-handler.ts.html +193 -0
- package/coverage/lcov-report/src/harness/index.html +116 -0
- package/coverage/lcov-report/src/harness/signing-harness.ts.html +352 -0
- package/coverage/lcov-report/src/index.html +146 -0
- package/coverage/lcov-report/src/memory-transport.ts.html +358 -0
- package/coverage/lcov-report/src/protocol/e2e-harness.ts.html +568 -0
- package/coverage/lcov-report/src/protocol/index.html +116 -0
- package/coverage/lcov-report/src/query-client.ts.html +277 -0
- package/coverage/lcov-report/src/reference-client.ts.html +691 -0
- package/coverage/lcov.info +981 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/handlers/index.html +146 -0
- package/coverage/src/handlers/session-handler.ts.html +223 -0
- package/coverage/src/handlers/signing-handler.ts.html +217 -0
- package/coverage/src/handlers/wallet-handler.ts.html +193 -0
- package/coverage/src/harness/index.html +116 -0
- package/coverage/src/harness/signing-harness.ts.html +352 -0
- package/coverage/src/index.html +146 -0
- package/coverage/src/memory-transport.ts.html +358 -0
- package/coverage/src/protocol/e2e-harness.ts.html +568 -0
- package/coverage/src/protocol/index.html +116 -0
- package/coverage/src/query-client.ts.html +277 -0
- package/coverage/src/reference-client.ts.html +691 -0
- package/dist/handlers/session-handler.d.ts +22 -0
- package/dist/handlers/session-handler.d.ts.map +1 -0
- package/dist/handlers/session-handler.js +41 -0
- package/dist/handlers/session-handler.js.map +1 -0
- package/dist/handlers/signing-handler.d.ts +22 -0
- package/dist/handlers/signing-handler.d.ts.map +1 -0
- package/dist/handlers/signing-handler.js +39 -0
- package/dist/handlers/signing-handler.js.map +1 -0
- package/dist/handlers/wallet-handler.d.ts +22 -0
- package/dist/handlers/wallet-handler.d.ts.map +1 -0
- package/dist/handlers/wallet-handler.js +32 -0
- package/dist/handlers/wallet-handler.js.map +1 -0
- package/dist/harness/signing-harness.d.ts +47 -0
- package/dist/harness/signing-harness.d.ts.map +1 -0
- package/dist/harness/signing-harness.js +79 -0
- package/dist/harness/signing-harness.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/memory-transport-options.d.ts +27 -0
- package/dist/memory-transport-options.d.ts.map +1 -0
- package/dist/memory-transport-options.js +11 -0
- package/dist/memory-transport-options.js.map +1 -0
- package/dist/memory-transport.d.ts +55 -0
- package/dist/memory-transport.d.ts.map +1 -0
- package/dist/memory-transport.js +81 -0
- package/dist/memory-transport.js.map +1 -0
- package/dist/protocol/e2e-harness.d.ts +65 -0
- package/dist/protocol/e2e-harness.d.ts.map +1 -0
- package/dist/protocol/e2e-harness.js +130 -0
- package/dist/protocol/e2e-harness.js.map +1 -0
- package/dist/protocol/index.d.ts +22 -0
- package/dist/protocol/index.d.ts.map +1 -0
- package/dist/protocol/index.js +22 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/query-client.d.ts +41 -0
- package/dist/query-client.d.ts.map +1 -0
- package/dist/query-client.js +52 -0
- package/dist/query-client.js.map +1 -0
- package/dist/reference-client.d.ts +100 -0
- package/dist/reference-client.d.ts.map +1 -0
- package/dist/reference-client.js +149 -0
- package/dist/reference-client.js.map +1 -0
- package/package.json +46 -0
- package/src/handlers/session-handler.ts +46 -0
- package/src/handlers/signing-handler.ts +44 -0
- package/src/handlers/wallet-handler.ts +36 -0
- package/src/harness/signing-harness.ts +89 -0
- package/src/index.ts +24 -0
- package/src/memory-transport-options.ts +28 -0
- package/src/memory-transport.ts +91 -0
- package/src/protocol/e2e-harness.ts +161 -0
- package/src/protocol/index.ts +23 -0
- package/src/query-client.ts +64 -0
- package/src/reference-client.spec.ts +408 -0
- package/src/reference-client.ts +202 -0
- package/tests/e2e-harness.spec.ts +64 -0
- package/tests/realnet-session.spec.ts +303 -0
- package/tests/signing-harness.spec.ts +41 -0
- package/tsconfig.build.json +10 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.json +17 -0
- package/vitest.config.ts +35 -0
|
@@ -0,0 +1,691 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/reference-client.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../index.html">All files</a> / <a href="index.html">src</a> reference-client.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">99% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>200/202</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">91.42% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>32/35</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">90% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>9/10</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">99% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>200/202</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
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>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
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>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</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>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
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>
|
|
272
|
+
<span class="cline-any cline-yes">1x</span>
|
|
273
|
+
<span class="cline-any cline-yes">1x</span>
|
|
274
|
+
<span class="cline-any cline-yes">1x</span>
|
|
275
|
+
<span class="cline-any cline-yes">1x</span>
|
|
276
|
+
<span class="cline-any cline-yes">1x</span>
|
|
277
|
+
<span class="cline-any cline-yes">1x</span>
|
|
278
|
+
<span class="cline-any cline-yes">1x</span>
|
|
279
|
+
<span class="cline-any cline-yes">1x</span>
|
|
280
|
+
<span class="cline-any cline-yes">1x</span>
|
|
281
|
+
<span class="cline-any cline-yes">1x</span>
|
|
282
|
+
<span class="cline-any cline-yes">1x</span>
|
|
283
|
+
<span class="cline-any cline-yes">1x</span>
|
|
284
|
+
<span class="cline-any cline-yes">1x</span>
|
|
285
|
+
<span class="cline-any cline-yes">1x</span>
|
|
286
|
+
<span class="cline-any cline-yes">1x</span>
|
|
287
|
+
<span class="cline-any cline-yes">1x</span>
|
|
288
|
+
<span class="cline-any cline-yes">1x</span>
|
|
289
|
+
<span class="cline-any cline-yes">1x</span>
|
|
290
|
+
<span class="cline-any cline-yes">1x</span>
|
|
291
|
+
<span class="cline-any cline-yes">1x</span>
|
|
292
|
+
<span class="cline-any cline-yes">1x</span>
|
|
293
|
+
<span class="cline-any cline-yes">1x</span>
|
|
294
|
+
<span class="cline-any cline-yes">1x</span>
|
|
295
|
+
<span class="cline-any cline-yes">1x</span>
|
|
296
|
+
<span class="cline-any cline-yes">1x</span>
|
|
297
|
+
<span class="cline-any cline-yes">1x</span>
|
|
298
|
+
<span class="cline-any cline-yes">1x</span>
|
|
299
|
+
<span class="cline-any cline-yes">1x</span>
|
|
300
|
+
<span class="cline-any cline-yes">1x</span>
|
|
301
|
+
<span class="cline-any cline-yes">1x</span>
|
|
302
|
+
<span class="cline-any cline-yes">1x</span>
|
|
303
|
+
<span class="cline-any cline-yes">1x</span>
|
|
304
|
+
<span class="cline-any cline-yes">1x</span>
|
|
305
|
+
<span class="cline-any cline-yes">1x</span>
|
|
306
|
+
<span class="cline-any cline-yes">1x</span>
|
|
307
|
+
<span class="cline-any cline-yes">1x</span>
|
|
308
|
+
<span class="cline-any cline-yes">1x</span>
|
|
309
|
+
<span class="cline-any cline-yes">1x</span>
|
|
310
|
+
<span class="cline-any cline-yes">1x</span>
|
|
311
|
+
<span class="cline-any cline-yes">1x</span>
|
|
312
|
+
<span class="cline-any cline-yes">1x</span>
|
|
313
|
+
<span class="cline-any cline-yes">1x</span>
|
|
314
|
+
<span class="cline-any cline-yes">1x</span>
|
|
315
|
+
<span class="cline-any cline-yes">1x</span>
|
|
316
|
+
<span class="cline-any cline-yes">1x</span>
|
|
317
|
+
<span class="cline-any cline-yes">1x</span>
|
|
318
|
+
<span class="cline-any cline-yes">1x</span>
|
|
319
|
+
<span class="cline-any cline-yes">1x</span>
|
|
320
|
+
<span class="cline-any cline-yes">1x</span>
|
|
321
|
+
<span class="cline-any cline-yes">1x</span>
|
|
322
|
+
<span class="cline-any cline-yes">1x</span>
|
|
323
|
+
<span class="cline-any cline-yes">1x</span>
|
|
324
|
+
<span class="cline-any cline-yes">1x</span>
|
|
325
|
+
<span class="cline-any cline-yes">1x</span>
|
|
326
|
+
<span class="cline-any cline-yes">1x</span>
|
|
327
|
+
<span class="cline-any cline-yes">1x</span>
|
|
328
|
+
<span class="cline-any cline-yes">1x</span>
|
|
329
|
+
<span class="cline-any cline-yes">1x</span>
|
|
330
|
+
<span class="cline-any cline-yes">1x</span>
|
|
331
|
+
<span class="cline-any cline-yes">1x</span>
|
|
332
|
+
<span class="cline-any cline-yes">1x</span>
|
|
333
|
+
<span class="cline-any cline-yes">1x</span>
|
|
334
|
+
<span class="cline-any cline-yes">1x</span>
|
|
335
|
+
<span class="cline-any cline-yes">1x</span>
|
|
336
|
+
<span class="cline-any cline-yes">1x</span>
|
|
337
|
+
<span class="cline-any cline-yes">1x</span>
|
|
338
|
+
<span class="cline-any cline-yes">1x</span>
|
|
339
|
+
<span class="cline-any cline-yes">1x</span>
|
|
340
|
+
<span class="cline-any cline-yes">1x</span>
|
|
341
|
+
<span class="cline-any cline-yes">1x</span>
|
|
342
|
+
<span class="cline-any cline-yes">19x</span>
|
|
343
|
+
<span class="cline-any cline-yes">19x</span>
|
|
344
|
+
<span class="cline-any cline-yes">19x</span>
|
|
345
|
+
<span class="cline-any cline-yes">19x</span>
|
|
346
|
+
<span class="cline-any cline-yes">19x</span>
|
|
347
|
+
<span class="cline-any cline-yes">19x</span>
|
|
348
|
+
<span class="cline-any cline-yes">19x</span>
|
|
349
|
+
<span class="cline-any cline-yes">19x</span>
|
|
350
|
+
<span class="cline-any cline-yes">19x</span>
|
|
351
|
+
<span class="cline-any cline-yes">19x</span>
|
|
352
|
+
<span class="cline-any cline-yes">19x</span>
|
|
353
|
+
<span class="cline-any cline-yes">19x</span>
|
|
354
|
+
<span class="cline-any cline-yes">19x</span>
|
|
355
|
+
<span class="cline-any cline-yes">19x</span>
|
|
356
|
+
<span class="cline-any cline-yes">19x</span>
|
|
357
|
+
<span class="cline-any cline-yes">19x</span>
|
|
358
|
+
<span class="cline-any cline-yes">19x</span>
|
|
359
|
+
<span class="cline-any cline-yes">19x</span>
|
|
360
|
+
<span class="cline-any cline-yes">19x</span>
|
|
361
|
+
<span class="cline-any cline-yes">19x</span>
|
|
362
|
+
<span class="cline-any cline-yes">19x</span>
|
|
363
|
+
<span class="cline-any cline-yes">19x</span>
|
|
364
|
+
<span class="cline-any cline-yes">19x</span>
|
|
365
|
+
<span class="cline-any cline-yes">19x</span>
|
|
366
|
+
<span class="cline-any cline-yes">19x</span>
|
|
367
|
+
<span class="cline-any cline-yes">19x</span>
|
|
368
|
+
<span class="cline-any cline-yes">19x</span>
|
|
369
|
+
<span class="cline-any cline-yes">19x</span>
|
|
370
|
+
<span class="cline-any cline-yes">19x</span>
|
|
371
|
+
<span class="cline-any cline-yes">19x</span>
|
|
372
|
+
<span class="cline-any cline-yes">8x</span>
|
|
373
|
+
<span class="cline-any cline-yes">8x</span>
|
|
374
|
+
<span class="cline-any cline-yes">8x</span>
|
|
375
|
+
<span class="cline-any cline-yes">8x</span>
|
|
376
|
+
<span class="cline-any cline-yes">8x</span>
|
|
377
|
+
<span class="cline-any cline-yes">1x</span>
|
|
378
|
+
<span class="cline-any cline-yes">1x</span>
|
|
379
|
+
<span class="cline-any cline-yes">8x</span>
|
|
380
|
+
<span class="cline-any cline-yes">8x</span>
|
|
381
|
+
<span class="cline-any cline-yes">8x</span>
|
|
382
|
+
<span class="cline-any cline-yes">7x</span>
|
|
383
|
+
<span class="cline-any cline-yes">7x</span>
|
|
384
|
+
<span class="cline-any cline-yes">7x</span>
|
|
385
|
+
<span class="cline-any cline-yes">8x</span>
|
|
386
|
+
<span class="cline-any cline-yes">8x</span>
|
|
387
|
+
<span class="cline-any cline-yes">8x</span>
|
|
388
|
+
<span class="cline-any cline-yes">8x</span>
|
|
389
|
+
<span class="cline-any cline-yes">8x</span>
|
|
390
|
+
<span class="cline-any cline-yes">8x</span>
|
|
391
|
+
<span class="cline-any cline-yes">19x</span>
|
|
392
|
+
<span class="cline-any cline-yes">19x</span>
|
|
393
|
+
<span class="cline-any cline-yes">19x</span>
|
|
394
|
+
<span class="cline-any cline-yes">19x</span>
|
|
395
|
+
<span class="cline-any cline-yes">19x</span>
|
|
396
|
+
<span class="cline-any cline-yes">19x</span>
|
|
397
|
+
<span class="cline-any cline-yes">19x</span>
|
|
398
|
+
<span class="cline-any cline-yes">1x</span>
|
|
399
|
+
<span class="cline-any cline-yes">1x</span>
|
|
400
|
+
<span class="cline-any cline-yes">19x</span>
|
|
401
|
+
<span class="cline-any cline-yes">19x</span>
|
|
402
|
+
<span class="cline-any cline-yes">19x</span>
|
|
403
|
+
<span class="cline-any cline-yes">19x</span>
|
|
404
|
+
<span class="cline-any cline-yes">19x</span>
|
|
405
|
+
<span class="cline-any cline-yes">21x</span>
|
|
406
|
+
<span class="cline-any cline-yes">21x</span>
|
|
407
|
+
<span class="cline-any cline-yes">21x</span>
|
|
408
|
+
<span class="cline-any cline-yes">19x</span>
|
|
409
|
+
<span class="cline-any cline-yes">19x</span>
|
|
410
|
+
<span class="cline-any cline-yes">12x</span>
|
|
411
|
+
<span class="cline-any cline-yes">12x</span>
|
|
412
|
+
<span class="cline-any cline-yes">11x</span>
|
|
413
|
+
<span class="cline-any cline-yes">11x</span>
|
|
414
|
+
<span class="cline-any cline-yes">12x</span>
|
|
415
|
+
<span class="cline-any cline-yes">3x</span>
|
|
416
|
+
<span class="cline-any cline-yes">3x</span>
|
|
417
|
+
<span class="cline-any cline-yes">3x</span>
|
|
418
|
+
<span class="cline-any cline-yes">2x</span>
|
|
419
|
+
<span class="cline-any cline-yes">2x</span>
|
|
420
|
+
<span class="cline-any cline-yes">2x</span>
|
|
421
|
+
<span class="cline-any cline-yes">2x</span>
|
|
422
|
+
<span class="cline-any cline-yes">2x</span>
|
|
423
|
+
<span class="cline-any cline-yes">2x</span>
|
|
424
|
+
<span class="cline-any cline-yes">2x</span>
|
|
425
|
+
<span class="cline-any cline-yes">2x</span>
|
|
426
|
+
<span class="cline-any cline-yes">2x</span>
|
|
427
|
+
<span class="cline-any cline-yes">3x</span>
|
|
428
|
+
<span class="cline-any cline-yes">3x</span>
|
|
429
|
+
<span class="cline-any cline-yes">3x</span>
|
|
430
|
+
<span class="cline-any cline-yes">3x</span>
|
|
431
|
+
<span class="cline-any cline-yes">3x</span>
|
|
432
|
+
<span class="cline-any cline-yes">3x</span>
|
|
433
|
+
<span class="cline-any cline-yes">3x</span>
|
|
434
|
+
<span class="cline-any cline-yes">3x</span>
|
|
435
|
+
<span class="cline-any cline-yes">8x</span>
|
|
436
|
+
<span class="cline-any cline-yes">8x</span>
|
|
437
|
+
<span class="cline-any cline-yes">8x</span>
|
|
438
|
+
<span class="cline-any cline-yes">12x</span>
|
|
439
|
+
<span class="cline-any cline-yes">12x</span>
|
|
440
|
+
<span class="cline-any cline-yes">12x</span>
|
|
441
|
+
<span class="cline-any cline-yes">12x</span>
|
|
442
|
+
<span class="cline-any cline-yes">7x</span>
|
|
443
|
+
<span class="cline-any cline-yes">7x</span>
|
|
444
|
+
<span class="cline-any cline-yes">7x</span>
|
|
445
|
+
<span class="cline-any cline-yes">8x</span>
|
|
446
|
+
<span class="cline-any cline-yes">12x</span>
|
|
447
|
+
<span class="cline-any cline-yes">12x</span>
|
|
448
|
+
<span class="cline-any cline-yes">12x</span>
|
|
449
|
+
<span class="cline-any cline-yes">12x</span>
|
|
450
|
+
<span class="cline-any cline-yes">12x</span>
|
|
451
|
+
<span class="cline-any cline-yes">12x</span>
|
|
452
|
+
<span class="cline-any cline-yes">12x</span>
|
|
453
|
+
<span class="cline-any cline-yes">1x</span>
|
|
454
|
+
<span class="cline-any cline-yes">1x</span>
|
|
455
|
+
<span class="cline-any cline-yes">1x</span>
|
|
456
|
+
<span class="cline-any cline-yes">12x</span>
|
|
457
|
+
<span class="cline-any cline-yes">19x</span>
|
|
458
|
+
<span class="cline-any cline-yes">19x</span>
|
|
459
|
+
<span class="cline-any cline-yes">11x</span>
|
|
460
|
+
<span class="cline-any cline-yes">11x</span>
|
|
461
|
+
<span class="cline-any cline-yes">19x</span>
|
|
462
|
+
<span class="cline-any cline-yes">19x</span>
|
|
463
|
+
<span class="cline-any cline-yes">16x</span>
|
|
464
|
+
<span class="cline-any cline-yes">16x</span>
|
|
465
|
+
<span class="cline-any cline-yes">19x</span>
|
|
466
|
+
<span class="cline-any cline-yes">19x</span>
|
|
467
|
+
<span class="cline-any cline-no"> </span>
|
|
468
|
+
<span class="cline-any cline-no"> </span>
|
|
469
|
+
<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
|
+
* HSuite Native Connect
|
|
472
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
473
|
+
*
|
|
474
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
475
|
+
*
|
|
476
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
477
|
+
* visit https://hsuite.finance/licensing
|
|
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';
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* @description Transport abstraction for RPC message exchange
|
|
495
|
+
* @property {function} send - Send RPC envelope to peer
|
|
496
|
+
* @property {function} onMessage - Register listener for incoming messages
|
|
497
|
+
* @property {function} [offMessage] - Unregister message listener
|
|
498
|
+
* @property {function} [onServerMessage] - Register listener for server-originated messages
|
|
499
|
+
* @property {function} [offServerMessage] - Unregister server message listener
|
|
500
|
+
*/
|
|
501
|
+
export interface ReferenceClientTransport {
|
|
502
|
+
send(message: RpcEnvelope, from?: 'client' | 'server'): Promise<void>;
|
|
503
|
+
onMessage(listener: (message: RpcEnvelope) => void): void;
|
|
504
|
+
offMessage?(listener: (message: RpcEnvelope) => void): void;
|
|
505
|
+
onServerMessage?(listener: (message: RpcEnvelope) => void): void;
|
|
506
|
+
offServerMessage?(listener: (message: RpcEnvelope) => void): void;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* @description Configuration for reference client instantiation
|
|
511
|
+
* @property {ReferenceClientTransport} transport - Transport layer for message exchange
|
|
512
|
+
* @property {number} [timeoutMs] - Request timeout in milliseconds
|
|
513
|
+
* @property {RpcServer} [server] - Optional RPC server for bidirectional communication
|
|
514
|
+
* @property {function} [onResponse] - Callback invoked on response receipt
|
|
515
|
+
*/
|
|
516
|
+
export interface ReferenceClientOptions {
|
|
517
|
+
transport: ReferenceClientTransport;
|
|
518
|
+
timeoutMs?: number;
|
|
519
|
+
server?: RpcServer;
|
|
520
|
+
onResponse?(response: RpcResponse): void;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* @description Events emitted by reference client
|
|
525
|
+
*/
|
|
526
|
+
export type ReferenceClientEvent = 'request' | 'response' | 'response:error' | 'error';
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* @class ReferenceClient
|
|
530
|
+
* @augments EventEmitter
|
|
531
|
+
* @description Developer-facing RPC client for HSuite SDK integration testing.
|
|
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:
|
|
538
|
+
* - Request/response RPC communication with timeout protection
|
|
539
|
+
* - Bidirectional message routing for client-server scenarios
|
|
540
|
+
* - Event emission for request/response lifecycle hooks
|
|
541
|
+
* - Handler registration for incoming RPC methods
|
|
542
|
+
*/
|
|
543
|
+
export class ReferenceClient extends EventEmitter<ReferenceClientEvent | string> {
|
|
544
|
+
private readonly rpc: RpcClient;
|
|
545
|
+
private readonly codec = new RpcCodec();
|
|
546
|
+
private readonly pending = new Map<string | number, (response: RpcResponse) => void>();
|
|
547
|
+
private readonly timeoutMs: number;
|
|
548
|
+
private readonly messageListener: (envelope: RpcEnvelope) => void;
|
|
549
|
+
private readonly server?: RpcServer;
|
|
550
|
+
private readonly router = new RpcRouter();
|
|
551
|
+
private readonly logger = getLogger().scoped?.('ReferenceClient'<span class="branch-0 cbranch-no" title="branch not covered" >) ?? getLogger();</span>
|
|
552
|
+
|
|
553
|
+
constructor(private readonly options: ReferenceClientOptions) {
|
|
554
|
+
super();
|
|
555
|
+
this.timeoutMs = options.timeoutMs ?? 5000;
|
|
556
|
+
this.rpc = new RpcClient({
|
|
557
|
+
transport: options.transport,
|
|
558
|
+
codec: this.codec,
|
|
559
|
+
timeoutMs: this.timeoutMs,
|
|
560
|
+
});
|
|
561
|
+
this.server = options.server;
|
|
562
|
+
this.messageListener = (envelope) => this.handleEnvelope(envelope);
|
|
563
|
+
options.transport.onMessage(this.messageListener);
|
|
564
|
+
options.transport.onServerMessage?.((envelope) => this.handleEnvelope(envelope));
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* @description Send RPC request and await response with timeout
|
|
569
|
+
* @param request - RPC request payload
|
|
570
|
+
* @returns Promise resolving to RPC response
|
|
571
|
+
* @throws Error if request times out
|
|
572
|
+
*/
|
|
573
|
+
async send<T = unknown>(request: RpcRequest): Promise<RpcResponse<T>> {
|
|
574
|
+
const id = request.id ?? crypto.randomUUID();
|
|
575
|
+
const finalRequest: RpcRequest = { ...request, id, timestamp: request.timestamp ?? Date.now() };
|
|
576
|
+
this.logger.debug('Sending RPC request', { method: finalRequest.method, id: String(id) });
|
|
577
|
+
const promise = new Promise<RpcResponse<T>>((resolve, reject) => {
|
|
578
|
+
const timeout = setTimeout(() => {
|
|
579
|
+
this.pending.delete(id);
|
|
580
|
+
reject(new Error(`RPC request ${String(id)} timed out after ${this.timeoutMs}ms`));
|
|
581
|
+
}, this.timeoutMs);
|
|
582
|
+
|
|
583
|
+
this.pending.set(id, (response) => {
|
|
584
|
+
clearTimeout(timeout);
|
|
585
|
+
this.logger.debug('RPC response received', { id: String(id), method: finalRequest.method });
|
|
586
|
+
resolve(response as RpcResponse<T>);
|
|
587
|
+
});
|
|
588
|
+
});
|
|
589
|
+
|
|
590
|
+
await this.rpc.send(finalRequest);
|
|
591
|
+
return promise;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
/**
|
|
595
|
+
* @description Register handler for incoming RPC method
|
|
596
|
+
* @param method - RPC method name
|
|
597
|
+
* @param handler - Handler function returning response data
|
|
598
|
+
*/
|
|
599
|
+
register(method: string, handler: Parameters<typeof RpcRouter.prototype.register>[1]): void {
|
|
600
|
+
this.router.register(method, handler);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* @description Dispose client and cleanup listeners
|
|
605
|
+
*/
|
|
606
|
+
destroy(): void {
|
|
607
|
+
this.pending.clear();
|
|
608
|
+
this.options.transport.offMessage?.(this.messageListener);
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
private async handleEnvelope(envelope: RpcEnvelope): Promise<void> {
|
|
612
|
+
try {
|
|
613
|
+
const decoded = await this.codec.decode(envelope);
|
|
614
|
+
const payload = decoded.payload;
|
|
615
|
+
|
|
616
|
+
if (this.isRequest(payload)) {
|
|
617
|
+
const handled = this.server ? await this.server.handle(decoded) : undefined;
|
|
618
|
+
|
|
619
|
+
if (!handled) {
|
|
620
|
+
const response = await this.router.handle(payload);
|
|
621
|
+
const responseEnvelope = await this.codec.encodeResponse(response);
|
|
622
|
+
await this.options.transport.send(responseEnvelope, 'server');
|
|
623
|
+
|
|
624
|
+
this.logger.debug('RPC response sent from local router', {
|
|
625
|
+
method: payload.method,
|
|
626
|
+
id: String(payload.id),
|
|
627
|
+
});
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
this.emit('request', payload);
|
|
631
|
+
this.logger.info('RPC request handled locally', {
|
|
632
|
+
method: payload.method,
|
|
633
|
+
id: String(payload.id),
|
|
634
|
+
});
|
|
635
|
+
return;
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
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>
|
|
641
|
+
const callback = this.pending.get(id);
|
|
642
|
+
|
|
643
|
+
if (callback) {
|
|
644
|
+
callback(result);
|
|
645
|
+
this.pending.delete(id);
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
this.options.onResponse?.(result);
|
|
649
|
+
this.emit(this.isError(result) ? 'response:error' : 'response', result);
|
|
650
|
+
this.logger.info('RPC response processed', {
|
|
651
|
+
id: String(result.id),
|
|
652
|
+
status: this.isError(result) ? 'error' : 'success',
|
|
653
|
+
});
|
|
654
|
+
} catch (error) {
|
|
655
|
+
this.emit('error', error);
|
|
656
|
+
this.logger.error('RPC envelope handling failed', { error });
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
private isRequest(payload: unknown): payload is RpcRequest {
|
|
661
|
+
return RpcRequestSchema.safeParse(payload).success;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
private isError(payload: RpcResponse): payload is ReturnType<typeof RpcErrorSchema.parse> {
|
|
665
|
+
return RpcErrorSchema.safeParse(payload).success;
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
private <span class="fstat-no" title="function not covered" >isSuccess<T>(payload: RpcResponse<T>): payload is RpcResponse<T> & { result: T } {</span>
|
|
669
|
+
<span class="cstat-no" title="statement not covered" > return RpcSuccessSchema.safeParse(payload).success;</span>
|
|
670
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
671
|
+
}
|
|
672
|
+
</pre></td></tr></table></pre>
|
|
673
|
+
|
|
674
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
675
|
+
</div><!-- /wrapper -->
|
|
676
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
677
|
+
Code coverage generated by
|
|
678
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
679
|
+
at 2026-06-02T14:29:49.152Z
|
|
680
|
+
</div>
|
|
681
|
+
<script src="../prettify.js"></script>
|
|
682
|
+
<script>
|
|
683
|
+
window.onload = function () {
|
|
684
|
+
prettyPrint();
|
|
685
|
+
};
|
|
686
|
+
</script>
|
|
687
|
+
<script src="../sorter.js"></script>
|
|
688
|
+
<script src="../block-navigation.js"></script>
|
|
689
|
+
</body>
|
|
690
|
+
</html>
|
|
691
|
+
|