@sidhujag/sysweb3-keyring 1.0.547 → 1.0.549

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 (212) hide show
  1. package/{dist/cjs → cjs}/providers.js +1 -64
  2. package/cjs/providers.js.map +1 -0
  3. package/{dist/cjs → cjs}/transactions/ethereum.js +1 -16
  4. package/cjs/transactions/ethereum.js.map +1 -0
  5. package/package.json +2 -30
  6. package/{dist/types → types}/providers.d.ts +0 -8
  7. package/{dist/types → types}/transactions/ethereum.d.ts +2 -2
  8. package/{dist/types → types}/types.d.ts +2 -2
  9. package/coverage/clover.xml +0 -2875
  10. package/coverage/coverage-final.json +0 -29468
  11. package/coverage/lcov-report/base.css +0 -354
  12. package/coverage/lcov-report/block-navigation.js +0 -85
  13. package/coverage/lcov-report/favicon.png +0 -0
  14. package/coverage/lcov-report/index.html +0 -320
  15. package/coverage/lcov-report/prettify.css +0 -101
  16. package/coverage/lcov-report/prettify.js +0 -1008
  17. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  18. package/coverage/lcov-report/sorter.js +0 -191
  19. package/coverage/lcov-report/src/index.html +0 -276
  20. package/coverage/lcov-report/src/index.ts.html +0 -114
  21. package/coverage/lcov-report/src/initial-state.ts.html +0 -558
  22. package/coverage/lcov-report/src/keyring-manager.ts.html +0 -6279
  23. package/coverage/lcov-report/src/ledger/bitcoin_client/index.html +0 -178
  24. package/coverage/lcov-report/src/ledger/bitcoin_client/index.ts.html +0 -144
  25. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/appClient.ts.html +0 -1560
  26. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/bip32.ts.html +0 -276
  27. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/buffertools.ts.html +0 -495
  28. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/clientCommands.ts.html +0 -1138
  29. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/index.html +0 -363
  30. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts.html +0 -289
  31. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkle.ts.html +0 -486
  32. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/merkleMap.ts.html +0 -240
  33. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/policy.ts.html +0 -342
  34. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/psbtv2.ts.html +0 -2388
  35. package/coverage/lcov-report/src/ledger/bitcoin_client/lib/varint.ts.html +0 -453
  36. package/coverage/lcov-report/src/ledger/consts.ts.html +0 -177
  37. package/coverage/lcov-report/src/ledger/index.html +0 -216
  38. package/coverage/lcov-report/src/ledger/index.ts.html +0 -1371
  39. package/coverage/lcov-report/src/ledger/utils.ts.html +0 -102
  40. package/coverage/lcov-report/src/signers.ts.html +0 -591
  41. package/coverage/lcov-report/src/storage.ts.html +0 -198
  42. package/coverage/lcov-report/src/transactions/ethereum.ts.html +0 -5826
  43. package/coverage/lcov-report/src/transactions/index.html +0 -216
  44. package/coverage/lcov-report/src/transactions/index.ts.html +0 -93
  45. package/coverage/lcov-report/src/transactions/syscoin.ts.html +0 -1521
  46. package/coverage/lcov-report/src/trezor/index.html +0 -176
  47. package/coverage/lcov-report/src/trezor/index.ts.html +0 -2655
  48. package/coverage/lcov-report/src/types.ts.html +0 -1443
  49. package/coverage/lcov-report/src/utils/derivation-paths.ts.html +0 -486
  50. package/coverage/lcov-report/src/utils/index.html +0 -196
  51. package/coverage/lcov-report/src/utils/psbt.ts.html +0 -159
  52. package/coverage/lcov-report/test/helpers/constants.ts.html +0 -627
  53. package/coverage/lcov-report/test/helpers/index.html +0 -176
  54. package/coverage/lcov.info +0 -4832
  55. package/dist/cjs/providers.js.map +0 -1
  56. package/dist/cjs/transactions/ethereum.js.map +0 -1
  57. package/dist/package.json +0 -50
  58. package/examples/basic-usage.js +0 -140
  59. package/jest.config.js +0 -32
  60. package/readme.md +0 -201
  61. package/src/declare.d.ts +0 -7
  62. package/src/errorUtils.ts +0 -83
  63. package/src/hardware-wallet-manager.ts +0 -655
  64. package/src/index.ts +0 -12
  65. package/src/initial-state.ts +0 -108
  66. package/src/keyring-manager.ts +0 -2698
  67. package/src/ledger/bitcoin_client/index.ts +0 -19
  68. package/src/ledger/bitcoin_client/lib/appClient.ts +0 -405
  69. package/src/ledger/bitcoin_client/lib/bip32.ts +0 -61
  70. package/src/ledger/bitcoin_client/lib/buffertools.ts +0 -134
  71. package/src/ledger/bitcoin_client/lib/clientCommands.ts +0 -356
  72. package/src/ledger/bitcoin_client/lib/constants.ts +0 -12
  73. package/src/ledger/bitcoin_client/lib/merkelizedPsbt.ts +0 -65
  74. package/src/ledger/bitcoin_client/lib/merkle.ts +0 -136
  75. package/src/ledger/bitcoin_client/lib/merkleMap.ts +0 -49
  76. package/src/ledger/bitcoin_client/lib/policy.ts +0 -91
  77. package/src/ledger/bitcoin_client/lib/psbtv2.ts +0 -768
  78. package/src/ledger/bitcoin_client/lib/varint.ts +0 -120
  79. package/src/ledger/consts.ts +0 -3
  80. package/src/ledger/index.ts +0 -685
  81. package/src/ledger/types.ts +0 -74
  82. package/src/network-utils.ts +0 -99
  83. package/src/providers.ts +0 -345
  84. package/src/signers.ts +0 -158
  85. package/src/storage.ts +0 -63
  86. package/src/transactions/__tests__/integration.test.ts +0 -303
  87. package/src/transactions/__tests__/syscoin.test.ts +0 -409
  88. package/src/transactions/ethereum.ts +0 -2503
  89. package/src/transactions/index.ts +0 -2
  90. package/src/transactions/syscoin.ts +0 -542
  91. package/src/trezor/index.ts +0 -1050
  92. package/src/types.ts +0 -366
  93. package/src/utils/derivation-paths.ts +0 -133
  94. package/src/utils/psbt.ts +0 -24
  95. package/src/utils.ts +0 -191
  96. package/test/README.md +0 -158
  97. package/test/__mocks__/ledger-mock.js +0 -20
  98. package/test/__mocks__/trezor-mock.js +0 -75
  99. package/test/cleanup-summary.md +0 -167
  100. package/test/helpers/README.md +0 -78
  101. package/test/helpers/constants.ts +0 -79
  102. package/test/helpers/setup.ts +0 -714
  103. package/test/integration/import-validation.spec.ts +0 -588
  104. package/test/unit/hardware/ledger.spec.ts +0 -869
  105. package/test/unit/hardware/trezor.spec.ts +0 -828
  106. package/test/unit/keyring-manager/account-management.spec.ts +0 -970
  107. package/test/unit/keyring-manager/import-watchonly.spec.ts +0 -181
  108. package/test/unit/keyring-manager/import-wif.spec.ts +0 -126
  109. package/test/unit/keyring-manager/initialization.spec.ts +0 -782
  110. package/test/unit/keyring-manager/key-derivation.spec.ts +0 -996
  111. package/test/unit/keyring-manager/security.spec.ts +0 -505
  112. package/test/unit/keyring-manager/state-management.spec.ts +0 -375
  113. package/test/unit/network/network-management.spec.ts +0 -372
  114. package/test/unit/transactions/ethereum-transactions.spec.ts +0 -382
  115. package/test/unit/transactions/syscoin-transactions.spec.ts +0 -615
  116. package/tsconfig.json +0 -14
  117. /package/{dist/README.md → README.md} +0 -0
  118. /package/{dist/cjs → cjs}/errorUtils.js +0 -0
  119. /package/{dist/cjs → cjs}/errorUtils.js.map +0 -0
  120. /package/{dist/cjs → cjs}/hardware-wallet-manager.js +0 -0
  121. /package/{dist/cjs → cjs}/hardware-wallet-manager.js.map +0 -0
  122. /package/{dist/cjs → cjs}/index.js +0 -0
  123. /package/{dist/cjs → cjs}/index.js.map +0 -0
  124. /package/{dist/cjs → cjs}/initial-state.js +0 -0
  125. /package/{dist/cjs → cjs}/initial-state.js.map +0 -0
  126. /package/{dist/cjs → cjs}/keyring-manager.js +0 -0
  127. /package/{dist/cjs → cjs}/keyring-manager.js.map +0 -0
  128. /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js +0 -0
  129. /package/{dist/cjs → cjs}/ledger/bitcoin_client/index.js.map +0 -0
  130. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js +0 -0
  131. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/appClient.js.map +0 -0
  132. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js +0 -0
  133. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/bip32.js.map +0 -0
  134. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js +0 -0
  135. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/buffertools.js.map +0 -0
  136. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js +0 -0
  137. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/clientCommands.js.map +0 -0
  138. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js +0 -0
  139. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/constants.js.map +0 -0
  140. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js +0 -0
  141. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkelizedPsbt.js.map +0 -0
  142. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js +0 -0
  143. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkle.js.map +0 -0
  144. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js +0 -0
  145. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/merkleMap.js.map +0 -0
  146. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js +0 -0
  147. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/policy.js.map +0 -0
  148. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js +0 -0
  149. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/psbtv2.js.map +0 -0
  150. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js +0 -0
  151. /package/{dist/cjs → cjs}/ledger/bitcoin_client/lib/varint.js.map +0 -0
  152. /package/{dist/cjs → cjs}/ledger/consts.js +0 -0
  153. /package/{dist/cjs → cjs}/ledger/consts.js.map +0 -0
  154. /package/{dist/cjs → cjs}/ledger/index.js +0 -0
  155. /package/{dist/cjs → cjs}/ledger/index.js.map +0 -0
  156. /package/{dist/cjs → cjs}/ledger/types.js +0 -0
  157. /package/{dist/cjs → cjs}/ledger/types.js.map +0 -0
  158. /package/{dist/cjs → cjs}/network-utils.js +0 -0
  159. /package/{dist/cjs → cjs}/network-utils.js.map +0 -0
  160. /package/{dist/cjs → cjs}/signers.js +0 -0
  161. /package/{dist/cjs → cjs}/signers.js.map +0 -0
  162. /package/{dist/cjs → cjs}/storage.js +0 -0
  163. /package/{dist/cjs → cjs}/storage.js.map +0 -0
  164. /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js +0 -0
  165. /package/{dist/cjs → cjs}/transactions/__tests__/integration.test.js.map +0 -0
  166. /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js +0 -0
  167. /package/{dist/cjs → cjs}/transactions/__tests__/syscoin.test.js.map +0 -0
  168. /package/{dist/cjs → cjs}/transactions/index.js +0 -0
  169. /package/{dist/cjs → cjs}/transactions/index.js.map +0 -0
  170. /package/{dist/cjs → cjs}/transactions/syscoin.js +0 -0
  171. /package/{dist/cjs → cjs}/transactions/syscoin.js.map +0 -0
  172. /package/{dist/cjs → cjs}/trezor/index.js +0 -0
  173. /package/{dist/cjs → cjs}/trezor/index.js.map +0 -0
  174. /package/{dist/cjs → cjs}/types.js +0 -0
  175. /package/{dist/cjs → cjs}/types.js.map +0 -0
  176. /package/{dist/cjs → cjs}/utils/derivation-paths.js +0 -0
  177. /package/{dist/cjs → cjs}/utils/derivation-paths.js.map +0 -0
  178. /package/{dist/cjs → cjs}/utils/psbt.js +0 -0
  179. /package/{dist/cjs → cjs}/utils/psbt.js.map +0 -0
  180. /package/{dist/cjs → cjs}/utils.js +0 -0
  181. /package/{dist/cjs → cjs}/utils.js.map +0 -0
  182. /package/{dist/types → types}/errorUtils.d.ts +0 -0
  183. /package/{dist/types → types}/hardware-wallet-manager.d.ts +0 -0
  184. /package/{dist/types → types}/index.d.ts +0 -0
  185. /package/{dist/types → types}/initial-state.d.ts +0 -0
  186. /package/{dist/types → types}/keyring-manager.d.ts +0 -0
  187. /package/{dist/types → types}/ledger/bitcoin_client/index.d.ts +0 -0
  188. /package/{dist/types → types}/ledger/bitcoin_client/lib/appClient.d.ts +0 -0
  189. /package/{dist/types → types}/ledger/bitcoin_client/lib/bip32.d.ts +0 -0
  190. /package/{dist/types → types}/ledger/bitcoin_client/lib/buffertools.d.ts +0 -0
  191. /package/{dist/types → types}/ledger/bitcoin_client/lib/clientCommands.d.ts +0 -0
  192. /package/{dist/types → types}/ledger/bitcoin_client/lib/constants.d.ts +0 -0
  193. /package/{dist/types → types}/ledger/bitcoin_client/lib/merkelizedPsbt.d.ts +0 -0
  194. /package/{dist/types → types}/ledger/bitcoin_client/lib/merkle.d.ts +0 -0
  195. /package/{dist/types → types}/ledger/bitcoin_client/lib/merkleMap.d.ts +0 -0
  196. /package/{dist/types → types}/ledger/bitcoin_client/lib/policy.d.ts +0 -0
  197. /package/{dist/types → types}/ledger/bitcoin_client/lib/psbtv2.d.ts +0 -0
  198. /package/{dist/types → types}/ledger/bitcoin_client/lib/varint.d.ts +0 -0
  199. /package/{dist/types → types}/ledger/consts.d.ts +0 -0
  200. /package/{dist/types → types}/ledger/index.d.ts +0 -0
  201. /package/{dist/types → types}/ledger/types.d.ts +0 -0
  202. /package/{dist/types → types}/network-utils.d.ts +0 -0
  203. /package/{dist/types → types}/signers.d.ts +0 -0
  204. /package/{dist/types → types}/storage.d.ts +0 -0
  205. /package/{dist/types → types}/transactions/__tests__/integration.test.d.ts +0 -0
  206. /package/{dist/types → types}/transactions/__tests__/syscoin.test.d.ts +0 -0
  207. /package/{dist/types → types}/transactions/index.d.ts +0 -0
  208. /package/{dist/types → types}/transactions/syscoin.d.ts +0 -0
  209. /package/{dist/types → types}/trezor/index.d.ts +0 -0
  210. /package/{dist/types → types}/utils/derivation-paths.d.ts +0 -0
  211. /package/{dist/types → types}/utils/psbt.d.ts +0 -0
  212. /package/{dist/types → types}/utils.d.ts +0 -0
@@ -1,486 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <title>
5
- Code coverage report for src/ledger/bitcoin_client/lib/merkle.ts
6
- </title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../../../prettify.css" />
9
- <link rel="stylesheet" href="../../../../base.css" />
10
- <link
11
- rel="shortcut icon"
12
- type="image/x-icon"
13
- href="../../../../favicon.png"
14
- />
15
- <meta name="viewport" content="width=device-width, initial-scale=1" />
16
- <style type="text/css">
17
- .coverage-summary .sorter {
18
- background-image: url(../../../../sort-arrow-sprite.png);
19
- }
20
- </style>
21
- </head>
22
-
23
- <body>
24
- <div class="wrapper">
25
- <div class="pad1">
26
- <h1>
27
- <a href="../../../../index.html">All files</a> /
28
- <a href="index.html">src/ledger/bitcoin_client/lib</a> merkle.ts
29
- </h1>
30
- <div class="clearfix">
31
- <div class="fl pad1y space-right2">
32
- <span class="strong">5.66% </span>
33
- <span class="quiet">Statements</span>
34
- <span class="fraction">3/53</span>
35
- </div>
36
-
37
- <div class="fl pad1y space-right2">
38
- <span class="strong">0% </span>
39
- <span class="quiet">Branches</span>
40
- <span class="fraction">0/12</span>
41
- </div>
42
-
43
- <div class="fl pad1y space-right2">
44
- <span class="strong">0% </span>
45
- <span class="quiet">Functions</span>
46
- <span class="fraction">0/15</span>
47
- </div>
48
-
49
- <div class="fl pad1y space-right2">
50
- <span class="strong">5.76% </span>
51
- <span class="quiet">Lines</span>
52
- <span class="fraction">3/52</span>
53
- </div>
54
- </div>
55
- <p class="quiet">
56
- Press <em>n</em> or <em>j</em> to go to the next uncovered block,
57
- <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
58
- </p>
59
- <template id="filterTemplate">
60
- <div class="quiet">
61
- Filter:
62
- <input type="search" id="fileSearch" />
63
- </div>
64
- </template>
65
- </div>
66
- <div class="status-line low"></div>
67
- <pre><table class="coverage">
68
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
69
- <a name='L2'></a><a href='#L2'>2</a>
70
- <a name='L3'></a><a href='#L3'>3</a>
71
- <a name='L4'></a><a href='#L4'>4</a>
72
- <a name='L5'></a><a href='#L5'>5</a>
73
- <a name='L6'></a><a href='#L6'>6</a>
74
- <a name='L7'></a><a href='#L7'>7</a>
75
- <a name='L8'></a><a href='#L8'>8</a>
76
- <a name='L9'></a><a href='#L9'>9</a>
77
- <a name='L10'></a><a href='#L10'>10</a>
78
- <a name='L11'></a><a href='#L11'>11</a>
79
- <a name='L12'></a><a href='#L12'>12</a>
80
- <a name='L13'></a><a href='#L13'>13</a>
81
- <a name='L14'></a><a href='#L14'>14</a>
82
- <a name='L15'></a><a href='#L15'>15</a>
83
- <a name='L16'></a><a href='#L16'>16</a>
84
- <a name='L17'></a><a href='#L17'>17</a>
85
- <a name='L18'></a><a href='#L18'>18</a>
86
- <a name='L19'></a><a href='#L19'>19</a>
87
- <a name='L20'></a><a href='#L20'>20</a>
88
- <a name='L21'></a><a href='#L21'>21</a>
89
- <a name='L22'></a><a href='#L22'>22</a>
90
- <a name='L23'></a><a href='#L23'>23</a>
91
- <a name='L24'></a><a href='#L24'>24</a>
92
- <a name='L25'></a><a href='#L25'>25</a>
93
- <a name='L26'></a><a href='#L26'>26</a>
94
- <a name='L27'></a><a href='#L27'>27</a>
95
- <a name='L28'></a><a href='#L28'>28</a>
96
- <a name='L29'></a><a href='#L29'>29</a>
97
- <a name='L30'></a><a href='#L30'>30</a>
98
- <a name='L31'></a><a href='#L31'>31</a>
99
- <a name='L32'></a><a href='#L32'>32</a>
100
- <a name='L33'></a><a href='#L33'>33</a>
101
- <a name='L34'></a><a href='#L34'>34</a>
102
- <a name='L35'></a><a href='#L35'>35</a>
103
- <a name='L36'></a><a href='#L36'>36</a>
104
- <a name='L37'></a><a href='#L37'>37</a>
105
- <a name='L38'></a><a href='#L38'>38</a>
106
- <a name='L39'></a><a href='#L39'>39</a>
107
- <a name='L40'></a><a href='#L40'>40</a>
108
- <a name='L41'></a><a href='#L41'>41</a>
109
- <a name='L42'></a><a href='#L42'>42</a>
110
- <a name='L43'></a><a href='#L43'>43</a>
111
- <a name='L44'></a><a href='#L44'>44</a>
112
- <a name='L45'></a><a href='#L45'>45</a>
113
- <a name='L46'></a><a href='#L46'>46</a>
114
- <a name='L47'></a><a href='#L47'>47</a>
115
- <a name='L48'></a><a href='#L48'>48</a>
116
- <a name='L49'></a><a href='#L49'>49</a>
117
- <a name='L50'></a><a href='#L50'>50</a>
118
- <a name='L51'></a><a href='#L51'>51</a>
119
- <a name='L52'></a><a href='#L52'>52</a>
120
- <a name='L53'></a><a href='#L53'>53</a>
121
- <a name='L54'></a><a href='#L54'>54</a>
122
- <a name='L55'></a><a href='#L55'>55</a>
123
- <a name='L56'></a><a href='#L56'>56</a>
124
- <a name='L57'></a><a href='#L57'>57</a>
125
- <a name='L58'></a><a href='#L58'>58</a>
126
- <a name='L59'></a><a href='#L59'>59</a>
127
- <a name='L60'></a><a href='#L60'>60</a>
128
- <a name='L61'></a><a href='#L61'>61</a>
129
- <a name='L62'></a><a href='#L62'>62</a>
130
- <a name='L63'></a><a href='#L63'>63</a>
131
- <a name='L64'></a><a href='#L64'>64</a>
132
- <a name='L65'></a><a href='#L65'>65</a>
133
- <a name='L66'></a><a href='#L66'>66</a>
134
- <a name='L67'></a><a href='#L67'>67</a>
135
- <a name='L68'></a><a href='#L68'>68</a>
136
- <a name='L69'></a><a href='#L69'>69</a>
137
- <a name='L70'></a><a href='#L70'>70</a>
138
- <a name='L71'></a><a href='#L71'>71</a>
139
- <a name='L72'></a><a href='#L72'>72</a>
140
- <a name='L73'></a><a href='#L73'>73</a>
141
- <a name='L74'></a><a href='#L74'>74</a>
142
- <a name='L75'></a><a href='#L75'>75</a>
143
- <a name='L76'></a><a href='#L76'>76</a>
144
- <a name='L77'></a><a href='#L77'>77</a>
145
- <a name='L78'></a><a href='#L78'>78</a>
146
- <a name='L79'></a><a href='#L79'>79</a>
147
- <a name='L80'></a><a href='#L80'>80</a>
148
- <a name='L81'></a><a href='#L81'>81</a>
149
- <a name='L82'></a><a href='#L82'>82</a>
150
- <a name='L83'></a><a href='#L83'>83</a>
151
- <a name='L84'></a><a href='#L84'>84</a>
152
- <a name='L85'></a><a href='#L85'>85</a>
153
- <a name='L86'></a><a href='#L86'>86</a>
154
- <a name='L87'></a><a href='#L87'>87</a>
155
- <a name='L88'></a><a href='#L88'>88</a>
156
- <a name='L89'></a><a href='#L89'>89</a>
157
- <a name='L90'></a><a href='#L90'>90</a>
158
- <a name='L91'></a><a href='#L91'>91</a>
159
- <a name='L92'></a><a href='#L92'>92</a>
160
- <a name='L93'></a><a href='#L93'>93</a>
161
- <a name='L94'></a><a href='#L94'>94</a>
162
- <a name='L95'></a><a href='#L95'>95</a>
163
- <a name='L96'></a><a href='#L96'>96</a>
164
- <a name='L97'></a><a href='#L97'>97</a>
165
- <a name='L98'></a><a href='#L98'>98</a>
166
- <a name='L99'></a><a href='#L99'>99</a>
167
- <a name='L100'></a><a href='#L100'>100</a>
168
- <a name='L101'></a><a href='#L101'>101</a>
169
- <a name='L102'></a><a href='#L102'>102</a>
170
- <a name='L103'></a><a href='#L103'>103</a>
171
- <a name='L104'></a><a href='#L104'>104</a>
172
- <a name='L105'></a><a href='#L105'>105</a>
173
- <a name='L106'></a><a href='#L106'>106</a>
174
- <a name='L107'></a><a href='#L107'>107</a>
175
- <a name='L108'></a><a href='#L108'>108</a>
176
- <a name='L109'></a><a href='#L109'>109</a>
177
- <a name='L110'></a><a href='#L110'>110</a>
178
- <a name='L111'></a><a href='#L111'>111</a>
179
- <a name='L112'></a><a href='#L112'>112</a>
180
- <a name='L113'></a><a href='#L113'>113</a>
181
- <a name='L114'></a><a href='#L114'>114</a>
182
- <a name='L115'></a><a href='#L115'>115</a>
183
- <a name='L116'></a><a href='#L116'>116</a>
184
- <a name='L117'></a><a href='#L117'>117</a>
185
- <a name='L118'></a><a href='#L118'>118</a>
186
- <a name='L119'></a><a href='#L119'>119</a>
187
- <a name='L120'></a><a href='#L120'>120</a>
188
- <a name='L121'></a><a href='#L121'>121</a>
189
- <a name='L122'></a><a href='#L122'>122</a>
190
- <a name='L123'></a><a href='#L123'>123</a>
191
- <a name='L124'></a><a href='#L124'>124</a>
192
- <a name='L125'></a><a href='#L125'>125</a>
193
- <a name='L126'></a><a href='#L126'>126</a>
194
- <a name='L127'></a><a href='#L127'>127</a>
195
- <a name='L128'></a><a href='#L128'>128</a>
196
- <a name='L129'></a><a href='#L129'>129</a>
197
- <a name='L130'></a><a href='#L130'>130</a>
198
- <a name='L131'></a><a href='#L131'>131</a>
199
- <a name='L132'></a><a href='#L132'>132</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
200
- <span class="cline-any cline-neutral">&nbsp;</span>
201
- <span class="cline-any cline-neutral">&nbsp;</span>
202
- <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-neutral">&nbsp;</span>
204
- <span class="cline-any cline-neutral">&nbsp;</span>
205
- <span class="cline-any cline-neutral">&nbsp;</span>
206
- <span class="cline-any cline-yes">2x</span>
207
- <span class="cline-any cline-neutral">&nbsp;</span>
208
- <span class="cline-any cline-neutral">&nbsp;</span>
209
- <span class="cline-any cline-neutral">&nbsp;</span>
210
- <span class="cline-any cline-neutral">&nbsp;</span>
211
- <span class="cline-any cline-neutral">&nbsp;</span>
212
- <span class="cline-any cline-neutral">&nbsp;</span>
213
- <span class="cline-any cline-neutral">&nbsp;</span>
214
- <span class="cline-any cline-neutral">&nbsp;</span>
215
- <span class="cline-any cline-no">&nbsp;</span>
216
- <span class="cline-any cline-no">&nbsp;</span>
217
- <span class="cline-any cline-no">&nbsp;</span>
218
- <span class="cline-any cline-no">&nbsp;</span>
219
- <span class="cline-any cline-no">&nbsp;</span>
220
- <span class="cline-any cline-neutral">&nbsp;</span>
221
- <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-no">&nbsp;</span>
223
- <span class="cline-any cline-neutral">&nbsp;</span>
224
- <span class="cline-any cline-neutral">&nbsp;</span>
225
- <span class="cline-any cline-no">&nbsp;</span>
226
- <span class="cline-any cline-neutral">&nbsp;</span>
227
- <span class="cline-any cline-neutral">&nbsp;</span>
228
- <span class="cline-any cline-no">&nbsp;</span>
229
- <span class="cline-any cline-neutral">&nbsp;</span>
230
- <span class="cline-any cline-neutral">&nbsp;</span>
231
- <span class="cline-any cline-no">&nbsp;</span>
232
- <span class="cline-any cline-neutral">&nbsp;</span>
233
- <span class="cline-any cline-neutral">&nbsp;</span>
234
- <span class="cline-any cline-no">&nbsp;</span>
235
- <span class="cline-any cline-no">&nbsp;</span>
236
- <span class="cline-any cline-neutral">&nbsp;</span>
237
- <span class="cline-any cline-neutral">&nbsp;</span>
238
- <span class="cline-any cline-neutral">&nbsp;</span>
239
- <span class="cline-any cline-neutral">&nbsp;</span>
240
- <span class="cline-any cline-neutral">&nbsp;</span>
241
- <span class="cline-any cline-neutral">&nbsp;</span>
242
- <span class="cline-any cline-no">&nbsp;</span>
243
- <span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-neutral">&nbsp;</span>
246
- <span class="cline-any cline-neutral">&nbsp;</span>
247
- <span class="cline-any cline-neutral">&nbsp;</span>
248
- <span class="cline-any cline-neutral">&nbsp;</span>
249
- <span class="cline-any cline-no">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-no">&nbsp;</span>
252
- <span class="cline-any cline-neutral">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-no">&nbsp;</span>
256
- <span class="cline-any cline-no">&nbsp;</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
259
- <span class="cline-any cline-no">&nbsp;</span>
260
- <span class="cline-any cline-no">&nbsp;</span>
261
- <span class="cline-any cline-no">&nbsp;</span>
262
- <span class="cline-any cline-no">&nbsp;</span>
263
- <span class="cline-any cline-neutral">&nbsp;</span>
264
- <span class="cline-any cline-neutral">&nbsp;</span>
265
- <span class="cline-any cline-neutral">&nbsp;</span>
266
- <span class="cline-any cline-no">&nbsp;</span>
267
- <span class="cline-any cline-neutral">&nbsp;</span>
268
- <span class="cline-any cline-neutral">&nbsp;</span>
269
- <span class="cline-any cline-neutral">&nbsp;</span>
270
- <span class="cline-any cline-yes">2x</span>
271
- <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-neutral">&nbsp;</span>
273
- <span class="cline-any cline-neutral">&nbsp;</span>
274
- <span class="cline-any cline-no">&nbsp;</span>
275
- <span class="cline-any cline-neutral">&nbsp;</span>
276
- <span class="cline-any cline-neutral">&nbsp;</span>
277
- <span class="cline-any cline-neutral">&nbsp;</span>
278
- <span class="cline-any cline-neutral">&nbsp;</span>
279
- <span class="cline-any cline-neutral">&nbsp;</span>
280
- <span class="cline-any cline-neutral">&nbsp;</span>
281
- <span class="cline-any cline-neutral">&nbsp;</span>
282
- <span class="cline-any cline-no">&nbsp;</span>
283
- <span class="cline-any cline-neutral">&nbsp;</span>
284
- <span class="cline-any cline-neutral">&nbsp;</span>
285
- <span class="cline-any cline-neutral">&nbsp;</span>
286
- <span class="cline-any cline-neutral">&nbsp;</span>
287
- <span class="cline-any cline-neutral">&nbsp;</span>
288
- <span class="cline-any cline-neutral">&nbsp;</span>
289
- <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-neutral">&nbsp;</span>
291
- <span class="cline-any cline-no">&nbsp;</span>
292
- <span class="cline-any cline-no">&nbsp;</span>
293
- <span class="cline-any cline-no">&nbsp;</span>
294
- <span class="cline-any cline-neutral">&nbsp;</span>
295
- <span class="cline-any cline-neutral">&nbsp;</span>
296
- <span class="cline-any cline-no">&nbsp;</span>
297
- <span class="cline-any cline-neutral">&nbsp;</span>
298
- <span class="cline-any cline-neutral">&nbsp;</span>
299
- <span class="cline-any cline-neutral">&nbsp;</span>
300
- <span class="cline-any cline-neutral">&nbsp;</span>
301
- <span class="cline-any cline-no">&nbsp;</span>
302
- <span class="cline-any cline-no">&nbsp;</span>
303
- <span class="cline-any cline-neutral">&nbsp;</span>
304
- <span class="cline-any cline-no">&nbsp;</span>
305
- <span class="cline-any cline-no">&nbsp;</span>
306
- <span class="cline-any cline-no">&nbsp;</span>
307
- <span class="cline-any cline-neutral">&nbsp;</span>
308
- <span class="cline-any cline-no">&nbsp;</span>
309
- <span class="cline-any cline-neutral">&nbsp;</span>
310
- <span class="cline-any cline-no">&nbsp;</span>
311
- <span class="cline-any cline-no">&nbsp;</span>
312
- <span class="cline-any cline-neutral">&nbsp;</span>
313
- <span class="cline-any cline-no">&nbsp;</span>
314
- <span class="cline-any cline-neutral">&nbsp;</span>
315
- <span class="cline-any cline-neutral">&nbsp;</span>
316
- <span class="cline-any cline-neutral">&nbsp;</span>
317
- <span class="cline-any cline-neutral">&nbsp;</span>
318
- <span class="cline-any cline-no">&nbsp;</span>
319
- <span class="cline-any cline-no">&nbsp;</span>
320
- <span class="cline-any cline-neutral">&nbsp;</span>
321
- <span class="cline-any cline-no">&nbsp;</span>
322
- <span class="cline-any cline-no">&nbsp;</span>
323
- <span class="cline-any cline-neutral">&nbsp;</span>
324
- <span class="cline-any cline-no">&nbsp;</span>
325
- <span class="cline-any cline-neutral">&nbsp;</span>
326
- <span class="cline-any cline-neutral">&nbsp;</span>
327
- <span class="cline-any cline-neutral">&nbsp;</span>
328
- <span class="cline-any cline-no">&nbsp;</span>
329
- <span class="cline-any cline-neutral">&nbsp;</span>
330
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { crypto } from 'bitcoinjs-lib';
331
- &nbsp;
332
- /**
333
- * This class implements the merkle tree used by Ledger Bitcoin app v2+,
334
- * which is documented at
335
- * https://github.com/LedgerHQ/app-bitcoin-new/blob/master/doc/merkle.md
336
- */
337
- export class Merkle {
338
- private leaves: Buffer[];
339
- private rootNode: Node;
340
- private leafNodes: Node[];
341
- private h: (buf: Buffer) =&gt; Buffer;
342
- <span class="fstat-no" title="function not covered" > constructor(</span>
343
- leaves: Buffer[],
344
- hasher: (buf: Buffer) =&gt; Buffer = <span class="branch-0 cbranch-no" title="branch not covered" >crypto.sha256</span>
345
- ) {
346
- <span class="cstat-no" title="statement not covered" > this.leaves = leaves;</span>
347
- <span class="cstat-no" title="statement not covered" > this.h = hasher;</span>
348
- const nodes = <span class="cstat-no" title="statement not covered" >this.calculateRoot(leaves);</span>
349
- <span class="cstat-no" title="statement not covered" > this.rootNode = nodes.root;</span>
350
- <span class="cstat-no" title="statement not covered" > this.leafNodes = nodes.leaves;</span>
351
- }
352
- <span class="fstat-no" title="function not covered" > getRoot(</span>): Buffer {
353
- <span class="cstat-no" title="statement not covered" > return this.rootNode.hash;</span>
354
- }
355
- <span class="fstat-no" title="function not covered" > size(</span>): number {
356
- <span class="cstat-no" title="statement not covered" > return this.leaves.length;</span>
357
- }
358
- <span class="fstat-no" title="function not covered" > getLeaves(</span>): Buffer[] {
359
- <span class="cstat-no" title="statement not covered" > return this.leaves;</span>
360
- }
361
- <span class="fstat-no" title="function not covered" > getLeafHash(</span>index: number): Buffer {
362
- <span class="cstat-no" title="statement not covered" > return this.leafNodes[index].hash;</span>
363
- }
364
- <span class="fstat-no" title="function not covered" > getProof(</span>index: number): Buffer[] {
365
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (index &gt;= this.leaves.length) <span class="cstat-no" title="statement not covered" >throw Error('Index out of bounds');</span></span>
366
- <span class="cstat-no" title="statement not covered" > return proveNode(this.leafNodes[index]);</span>
367
- }
368
- &nbsp;
369
- <span class="fstat-no" title="function not covered" > calculateRoot(</span>leaves: Buffer[]): {
370
- leaves: Node[];
371
- root: Node;
372
- } {
373
- const n = <span class="cstat-no" title="statement not covered" >leaves.length;</span>
374
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (n == 0) {</span>
375
- <span class="cstat-no" title="statement not covered" > return {</span>
376
- root: new Node(undefined, undefined, Buffer.alloc(32, 0)),
377
- leaves: [],
378
- };
379
- }
380
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (n == 1) {</span>
381
- const newNode = <span class="cstat-no" title="statement not covered" >new Node(undefined, undefined, leaves[0]);</span>
382
- <span class="cstat-no" title="statement not covered" > return { root: newNode, leaves: [newNode] };</span>
383
- }
384
- const leftCount = <span class="cstat-no" title="statement not covered" >highestPowerOf2LessThan(n);</span>
385
- const leftBranch = <span class="cstat-no" title="statement not covered" >this.calculateRoot(leaves.slice(0, leftCount));</span>
386
- const rightBranch = <span class="cstat-no" title="statement not covered" >this.calculateRoot(leaves.slice(leftCount));</span>
387
- const leftChild = <span class="cstat-no" title="statement not covered" >leftBranch.root;</span>
388
- const rightChild = <span class="cstat-no" title="statement not covered" >rightBranch.root;</span>
389
- const hash = <span class="cstat-no" title="statement not covered" >this.hashNode(leftChild.hash, rightChild.hash);</span>
390
- const node = <span class="cstat-no" title="statement not covered" >new Node(leftChild, rightChild, hash);</span>
391
- <span class="cstat-no" title="statement not covered" > leftChild.parent = node;</span>
392
- <span class="cstat-no" title="statement not covered" > rightChild.parent = node;</span>
393
- <span class="cstat-no" title="statement not covered" > return { root: node, leaves: leftBranch.leaves.concat(rightBranch.leaves) };</span>
394
- }
395
- &nbsp;
396
- <span class="fstat-no" title="function not covered" > hashNode(</span>left: Buffer, right: Buffer): Buffer {
397
- <span class="cstat-no" title="statement not covered" > return this.h(Buffer.concat([Buffer.from([1]), left, right]));</span>
398
- }
399
- }
400
- &nbsp;
401
- export function <span class="fstat-no" title="function not covered" >hashLeaf(</span>
402
- buf: Buffer,
403
- hashFunction: (buf: Buffer) =&gt; Buffer = <span class="branch-0 cbranch-no" title="branch not covered" >crypto.sha256</span>
404
- ): Buffer {
405
- <span class="cstat-no" title="statement not covered" > return hashConcat(Buffer.from([0]), buf, hashFunction);</span>
406
- }
407
- &nbsp;
408
- function <span class="fstat-no" title="function not covered" >hashConcat(</span>
409
- bufA: Buffer,
410
- bufB: Buffer,
411
- hashFunction: (buf: Buffer) =&gt; Buffer
412
- ): Buffer {
413
- <span class="cstat-no" title="statement not covered" > return hashFunction(Buffer.concat([bufA, bufB]));</span>
414
- }
415
- &nbsp;
416
- class Node {
417
- leftChild?: Node;
418
- rightChild?: Node;
419
- parent?: Node;
420
- hash: Buffer;
421
- <span class="fstat-no" title="function not covered" > constructor(l</span>eft: Node | undefined, right: Node | undefined, hash: Buffer) {
422
- <span class="cstat-no" title="statement not covered" > this.leftChild = left;</span>
423
- <span class="cstat-no" title="statement not covered" > this.rightChild = right;</span>
424
- <span class="cstat-no" title="statement not covered" > this.hash = hash;</span>
425
- }
426
- <span class="fstat-no" title="function not covered" > isLeaf(</span>): boolean {
427
- <span class="cstat-no" title="statement not covered" > return this.leftChild == undefined;</span>
428
- }
429
- }
430
- &nbsp;
431
- function <span class="fstat-no" title="function not covered" >proveNode(</span>node: Node): Buffer[] {
432
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!node.parent) {</span>
433
- <span class="cstat-no" title="statement not covered" > return [];</span>
434
- }
435
- <span class="cstat-no" title="statement not covered" > if (node.parent.leftChild == node) {</span>
436
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!node.parent.rightChild) {</span>
437
- <span class="cstat-no" title="statement not covered" > throw new Error('Expected right child to exist');</span>
438
- }
439
- <span class="cstat-no" title="statement not covered" > return [node.parent.rightChild.hash, ...proveNode(node.parent)];</span>
440
- } else {
441
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!node.parent.leftChild) {</span>
442
- <span class="cstat-no" title="statement not covered" > throw new Error('Expected left child to exist');</span>
443
- }
444
- <span class="cstat-no" title="statement not covered" > return [node.parent.leftChild.hash, ...proveNode(node.parent)];</span>
445
- }
446
- }
447
- &nbsp;
448
- function <span class="fstat-no" title="function not covered" >highestPowerOf2LessThan(</span>n: number) {
449
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (n &lt; 2) {</span>
450
- <span class="cstat-no" title="statement not covered" > throw Error('Expected n &gt;= 2');</span>
451
- }
452
- <span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (isPowerOf2(n)) {</span>
453
- <span class="cstat-no" title="statement not covered" > return n / 2;</span>
454
- }
455
- <span class="cstat-no" title="statement not covered" > return 1 &lt;&lt; Math.floor(Math.log2(n));</span>
456
- }
457
- &nbsp;
458
- function <span class="fstat-no" title="function not covered" >isPowerOf2(</span>n: number): boolean {
459
- <span class="cstat-no" title="statement not covered" > return (n &amp; (n - 1)) == 0;</span>
460
- }
461
- &nbsp;</pre></td></tr></table></pre>
462
-
463
- <div class="push"></div>
464
- <!-- for sticky footer -->
465
- </div>
466
- <!-- /wrapper -->
467
- <div class="footer quiet pad2 space-top1 center small">
468
- Code coverage generated by
469
- <a
470
- href="https://istanbul.js.org/"
471
- target="_blank"
472
- rel="noopener noreferrer"
473
- >istanbul</a
474
- >
475
- at 2025-06-20T17:45:56.456Z
476
- </div>
477
- <script src="../../../../prettify.js"></script>
478
- <script>
479
- window.onload = function () {
480
- prettyPrint();
481
- };
482
- </script>
483
- <script src="../../../../sorter.js"></script>
484
- <script src="../../../../block-navigation.js"></script>
485
- </body>
486
- </html>