@bsv/sdk 1.3.12 → 1.3.14

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 (607) hide show
  1. package/dist/cjs/package.json +15 -3
  2. package/dist/cjs/src/auth/Peer.js +83 -57
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/SessionManager.js +14 -9
  5. package/dist/cjs/src/auth/SessionManager.js.map +1 -1
  6. package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
  7. package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
  8. package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
  9. package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
  10. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
  11. package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  12. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
  13. package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  14. package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
  15. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  16. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
  17. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  18. package/dist/cjs/src/auth/utils/createNonce.js +2 -1
  19. package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
  20. package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  21. package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
  22. package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
  23. package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
  24. package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
  25. package/dist/cjs/src/compat/BSM.js +7 -17
  26. package/dist/cjs/src/compat/BSM.js.map +1 -1
  27. package/dist/cjs/src/compat/ECIES.js +172 -133
  28. package/dist/cjs/src/compat/ECIES.js.map +1 -1
  29. package/dist/cjs/src/compat/HD.js +63 -73
  30. package/dist/cjs/src/compat/HD.js.map +1 -1
  31. package/dist/cjs/src/compat/Mnemonic.js +102 -106
  32. package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
  33. package/dist/cjs/src/compat/Utxo.js +2 -2
  34. package/dist/cjs/src/compat/Utxo.js.map +1 -1
  35. package/dist/cjs/src/compat/index.js +7 -17
  36. package/dist/cjs/src/compat/index.js.map +1 -1
  37. package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
  38. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
  39. package/dist/cjs/src/messages/SignedMessage.js +1 -0
  40. package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
  41. package/dist/cjs/src/messages/index.js +7 -17
  42. package/dist/cjs/src/messages/index.js.map +1 -1
  43. package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
  44. package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
  45. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  46. package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  47. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
  48. package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  49. package/dist/cjs/src/primitives/AESGCM.js +6 -5
  50. package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
  51. package/dist/cjs/src/primitives/BasePoint.js +1 -1
  52. package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
  53. package/dist/cjs/src/primitives/BigNumber.js +50 -62
  54. package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
  55. package/dist/cjs/src/primitives/Curve.js +46 -22
  56. package/dist/cjs/src/primitives/Curve.js.map +1 -1
  57. package/dist/cjs/src/primitives/DRBG.js +2 -8
  58. package/dist/cjs/src/primitives/DRBG.js.map +1 -1
  59. package/dist/cjs/src/primitives/ECDSA.js +51 -35
  60. package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
  61. package/dist/cjs/src/primitives/Hash.js +191 -216
  62. package/dist/cjs/src/primitives/Hash.js.map +1 -1
  63. package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
  64. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
  65. package/dist/cjs/src/primitives/K256.js.map +1 -1
  66. package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
  67. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
  68. package/dist/cjs/src/primitives/Point.js +117 -88
  69. package/dist/cjs/src/primitives/Point.js.map +1 -1
  70. package/dist/cjs/src/primitives/Polynomial.js +4 -2
  71. package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
  72. package/dist/cjs/src/primitives/PrivateKey.js +32 -33
  73. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
  74. package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
  75. package/dist/cjs/src/primitives/Random.js +6 -5
  76. package/dist/cjs/src/primitives/Random.js.map +1 -1
  77. package/dist/cjs/src/primitives/ReductionContext.js +1 -1
  78. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
  79. package/dist/cjs/src/primitives/Schnorr.js +21 -15
  80. package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
  81. package/dist/cjs/src/primitives/Signature.js +8 -7
  82. package/dist/cjs/src/primitives/Signature.js.map +1 -1
  83. package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
  84. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
  85. package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
  86. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
  87. package/dist/cjs/src/primitives/index.js +7 -17
  88. package/dist/cjs/src/primitives/index.js.map +1 -1
  89. package/dist/cjs/src/primitives/utils.js +79 -68
  90. package/dist/cjs/src/primitives/utils.js.map +1 -1
  91. package/dist/cjs/src/script/OP.js +3 -3
  92. package/dist/cjs/src/script/OP.js.map +1 -1
  93. package/dist/cjs/src/script/Script.js +12 -10
  94. package/dist/cjs/src/script/Script.js.map +1 -1
  95. package/dist/cjs/src/script/Spend.js +47 -49
  96. package/dist/cjs/src/script/Spend.js.map +1 -1
  97. package/dist/cjs/src/script/templates/P2PKH.js +24 -12
  98. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
  99. package/dist/cjs/src/script/templates/PushDrop.js +28 -23
  100. package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
  101. package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
  102. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
  103. package/dist/cjs/src/totp/totp.js +2 -1
  104. package/dist/cjs/src/totp/totp.js.map +1 -1
  105. package/dist/cjs/src/transaction/Beef.js +177 -154
  106. package/dist/cjs/src/transaction/Beef.js.map +1 -1
  107. package/dist/cjs/src/transaction/BeefParty.js +24 -24
  108. package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
  109. package/dist/cjs/src/transaction/BeefTx.js +26 -18
  110. package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
  111. package/dist/cjs/src/transaction/Broadcaster.js +3 -2
  112. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
  113. package/dist/cjs/src/transaction/MerklePath.js +64 -37
  114. package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
  115. package/dist/cjs/src/transaction/Transaction.js +111 -137
  116. package/dist/cjs/src/transaction/Transaction.js.map +1 -1
  117. package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
  118. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
  119. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
  120. package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  121. package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  122. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
  123. package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
  124. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  125. package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  126. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  127. package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
  128. package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
  129. package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
  130. package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
  131. package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
  132. package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
  133. package/dist/cjs/src/transaction/http/index.js.map +1 -1
  134. package/dist/cjs/src/transaction/index.js.map +1 -1
  135. package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
  136. package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
  137. package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
  138. package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
  139. package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
  140. package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
  141. package/dist/cjs/src/wallet/WalletClient.js +7 -2
  142. package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
  143. package/dist/cjs/src/wallet/WalletError.js +2 -2
  144. package/dist/cjs/src/wallet/WalletError.js.map +1 -1
  145. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
  146. package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  147. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
  148. package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  149. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  150. package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  151. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
  152. package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  153. package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
  154. package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
  155. package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
  156. package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
  157. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/dist/esm/mod.js +15 -15
  159. package/dist/esm/src/auth/Peer.js +75 -54
  160. package/dist/esm/src/auth/Peer.js.map +1 -1
  161. package/dist/esm/src/auth/SessionManager.js +14 -9
  162. package/dist/esm/src/auth/SessionManager.js.map +1 -1
  163. package/dist/esm/src/auth/certificates/Certificate.js +15 -11
  164. package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
  165. package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
  166. package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
  167. package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
  168. package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
  169. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
  170. package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
  171. package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
  172. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  173. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
  174. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  175. package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
  176. package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
  177. package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
  178. package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
  179. package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
  180. package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
  181. package/dist/esm/src/compat/BSM.js.map +1 -1
  182. package/dist/esm/src/compat/ECIES.js +165 -116
  183. package/dist/esm/src/compat/ECIES.js.map +1 -1
  184. package/dist/esm/src/compat/HD.js +56 -56
  185. package/dist/esm/src/compat/HD.js.map +1 -1
  186. package/dist/esm/src/compat/Mnemonic.js +95 -89
  187. package/dist/esm/src/compat/Mnemonic.js.map +1 -1
  188. package/dist/esm/src/compat/Utxo.js +1 -1
  189. package/dist/esm/src/compat/Utxo.js.map +1 -1
  190. package/dist/esm/src/messages/EncryptedMessage.js +3 -1
  191. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
  192. package/dist/esm/src/messages/SignedMessage.js +1 -0
  193. package/dist/esm/src/messages/SignedMessage.js.map +1 -1
  194. package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
  195. package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
  196. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
  197. package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
  198. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
  199. package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
  200. package/dist/esm/src/primitives/AESGCM.js +1 -0
  201. package/dist/esm/src/primitives/AESGCM.js.map +1 -1
  202. package/dist/esm/src/primitives/BasePoint.js +1 -1
  203. package/dist/esm/src/primitives/BasePoint.js.map +1 -1
  204. package/dist/esm/src/primitives/BigNumber.js +50 -62
  205. package/dist/esm/src/primitives/BigNumber.js.map +1 -1
  206. package/dist/esm/src/primitives/Curve.js +45 -22
  207. package/dist/esm/src/primitives/Curve.js.map +1 -1
  208. package/dist/esm/src/primitives/DRBG.js +2 -8
  209. package/dist/esm/src/primitives/DRBG.js.map +1 -1
  210. package/dist/esm/src/primitives/ECDSA.js +50 -35
  211. package/dist/esm/src/primitives/ECDSA.js.map +1 -1
  212. package/dist/esm/src/primitives/Hash.js +188 -213
  213. package/dist/esm/src/primitives/Hash.js.map +1 -1
  214. package/dist/esm/src/primitives/JacobianPoint.js +18 -5
  215. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
  216. package/dist/esm/src/primitives/K256.js.map +1 -1
  217. package/dist/esm/src/primitives/Mersenne.js.map +1 -1
  218. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
  219. package/dist/esm/src/primitives/Point.js +107 -88
  220. package/dist/esm/src/primitives/Point.js.map +1 -1
  221. package/dist/esm/src/primitives/Polynomial.js +4 -2
  222. package/dist/esm/src/primitives/Polynomial.js.map +1 -1
  223. package/dist/esm/src/primitives/PrivateKey.js +25 -16
  224. package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
  225. package/dist/esm/src/primitives/PublicKey.js.map +1 -1
  226. package/dist/esm/src/primitives/Random.js +7 -6
  227. package/dist/esm/src/primitives/Random.js.map +1 -1
  228. package/dist/esm/src/primitives/ReductionContext.js +1 -1
  229. package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
  230. package/dist/esm/src/primitives/Schnorr.js +21 -15
  231. package/dist/esm/src/primitives/Schnorr.js.map +1 -1
  232. package/dist/esm/src/primitives/Signature.js +8 -7
  233. package/dist/esm/src/primitives/Signature.js.map +1 -1
  234. package/dist/esm/src/primitives/SymmetricKey.js +13 -13
  235. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
  236. package/dist/esm/src/primitives/TransactionSignature.js +22 -12
  237. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
  238. package/dist/esm/src/primitives/utils.js +76 -66
  239. package/dist/esm/src/primitives/utils.js.map +1 -1
  240. package/dist/esm/src/script/OP.js +3 -3
  241. package/dist/esm/src/script/OP.js.map +1 -1
  242. package/dist/esm/src/script/Script.js +12 -10
  243. package/dist/esm/src/script/Script.js.map +1 -1
  244. package/dist/esm/src/script/Spend.js +39 -32
  245. package/dist/esm/src/script/Spend.js.map +1 -1
  246. package/dist/esm/src/script/templates/P2PKH.js +26 -11
  247. package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
  248. package/dist/esm/src/script/templates/PushDrop.js +29 -22
  249. package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
  250. package/dist/esm/src/script/templates/RPuzzle.js +11 -6
  251. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
  252. package/dist/esm/src/totp/totp.js +2 -1
  253. package/dist/esm/src/totp/totp.js.map +1 -1
  254. package/dist/esm/src/transaction/Beef.js +176 -154
  255. package/dist/esm/src/transaction/Beef.js.map +1 -1
  256. package/dist/esm/src/transaction/BeefParty.js +24 -24
  257. package/dist/esm/src/transaction/BeefParty.js.map +1 -1
  258. package/dist/esm/src/transaction/BeefTx.js +26 -18
  259. package/dist/esm/src/transaction/BeefTx.js.map +1 -1
  260. package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
  261. package/dist/esm/src/transaction/MerklePath.js +61 -36
  262. package/dist/esm/src/transaction/MerklePath.js.map +1 -1
  263. package/dist/esm/src/transaction/Transaction.js +105 -138
  264. package/dist/esm/src/transaction/Transaction.js.map +1 -1
  265. package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
  266. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
  267. package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
  268. package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
  269. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
  270. package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
  271. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
  272. package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
  273. package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
  274. package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
  275. package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
  276. package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
  277. package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
  278. package/dist/esm/src/transaction/http/index.js.map +1 -1
  279. package/dist/esm/src/transaction/index.js.map +1 -1
  280. package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
  281. package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
  282. package/dist/esm/src/wallet/KeyDeriver.js +60 -52
  283. package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
  284. package/dist/esm/src/wallet/ProtoWallet.js +75 -29
  285. package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
  286. package/dist/esm/src/wallet/WalletClient.js +7 -2
  287. package/dist/esm/src/wallet/WalletClient.js.map +1 -1
  288. package/dist/esm/src/wallet/WalletError.js +2 -2
  289. package/dist/esm/src/wallet/WalletError.js.map +1 -1
  290. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
  291. package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
  292. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
  293. package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
  294. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
  295. package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
  296. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
  297. package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
  298. package/dist/esm/src/wallet/substrates/XDM.js +8 -3
  299. package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
  300. package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
  301. package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
  302. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  303. package/dist/types/mod.d.ts +15 -15
  304. package/dist/types/src/auth/Peer.d.ts +10 -10
  305. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  306. package/dist/types/src/auth/SessionManager.d.ts +4 -4
  307. package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
  308. package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
  309. package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
  310. package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
  311. package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
  312. package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
  313. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
  314. package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
  315. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  316. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
  317. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  318. package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
  319. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
  320. package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
  321. package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
  322. package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
  323. package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
  324. package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
  325. package/dist/types/src/compat/BSM.d.ts +1 -1
  326. package/dist/types/src/compat/BSM.d.ts.map +1 -1
  327. package/dist/types/src/compat/ECIES.d.ts +36 -36
  328. package/dist/types/src/compat/ECIES.d.ts.map +1 -1
  329. package/dist/types/src/compat/HD.d.ts +51 -51
  330. package/dist/types/src/compat/HD.d.ts.map +1 -1
  331. package/dist/types/src/compat/Mnemonic.d.ts +79 -79
  332. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
  333. package/dist/types/src/compat/Utxo.d.ts.map +1 -1
  334. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
  335. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
  336. package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
  337. package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
  338. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
  339. package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
  340. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
  341. package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
  342. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
  343. package/dist/types/src/primitives/BasePoint.d.ts +8 -8
  344. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
  345. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
  346. package/dist/types/src/primitives/Curve.d.ts +14 -7
  347. package/dist/types/src/primitives/Curve.d.ts.map +1 -1
  348. package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
  349. package/dist/types/src/primitives/ECDSA.d.ts +1 -1
  350. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
  351. package/dist/types/src/primitives/Hash.d.ts +11 -11
  352. package/dist/types/src/primitives/Hash.d.ts.map +1 -1
  353. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
  354. package/dist/types/src/primitives/Point.d.ts +14 -10
  355. package/dist/types/src/primitives/Point.d.ts.map +1 -1
  356. package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
  357. package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
  358. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
  359. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
  360. package/dist/types/src/primitives/Random.d.ts.map +1 -1
  361. package/dist/types/src/primitives/Schnorr.d.ts +14 -14
  362. package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
  363. package/dist/types/src/primitives/Signature.d.ts +1 -1
  364. package/dist/types/src/primitives/Signature.d.ts.map +1 -1
  365. package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
  366. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
  367. package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
  368. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
  369. package/dist/types/src/primitives/utils.d.ts +3 -6
  370. package/dist/types/src/primitives/utils.d.ts.map +1 -1
  371. package/dist/types/src/script/Script.d.ts +3 -3
  372. package/dist/types/src/script/Script.d.ts.map +1 -1
  373. package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
  374. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
  375. package/dist/types/src/script/Spend.d.ts.map +1 -1
  376. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
  377. package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
  378. package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
  379. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
  380. package/dist/types/src/totp/totp.d.ts.map +1 -1
  381. package/dist/types/src/transaction/Beef.d.ts +96 -96
  382. package/dist/types/src/transaction/Beef.d.ts.map +1 -1
  383. package/dist/types/src/transaction/BeefParty.d.ts +22 -22
  384. package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
  385. package/dist/types/src/transaction/BeefTx.d.ts +5 -5
  386. package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
  387. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
  388. package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
  389. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
  390. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
  391. package/dist/types/src/transaction/Transaction.d.ts +4 -12
  392. package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
  393. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
  394. package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
  395. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
  396. package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
  397. package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
  398. package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
  399. package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
  400. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
  401. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
  402. package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
  403. package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
  404. package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
  405. package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
  406. package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
  407. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
  408. package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
  409. package/dist/types/src/transaction/http/index.d.ts.map +1 -1
  410. package/dist/types/src/transaction/index.d.ts.map +1 -1
  411. package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
  412. package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
  413. package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
  414. package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
  415. package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
  416. package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
  417. package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
  418. package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
  419. package/dist/types/src/wallet/WalletClient.d.ts +5 -5
  420. package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
  421. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
  422. package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
  423. package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
  424. package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
  425. package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
  426. package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
  427. package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
  428. package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
  429. package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
  430. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  431. package/dist/umd/bundle.js +1 -1
  432. package/docs/auth.md +92 -82
  433. package/docs/compat.md +24 -24
  434. package/docs/messages.md +7 -5
  435. package/docs/overlay-tools.md +21 -21
  436. package/docs/primitives.md +336 -315
  437. package/docs/script.md +35 -35
  438. package/docs/swagger/dist/swagger-initializer.js +7 -7
  439. package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
  440. package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
  441. package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
  442. package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
  443. package/docs/swagger/dist/swagger-ui.js +2 -2
  444. package/docs/totp.md +5 -5
  445. package/docs/transaction.md +103 -105
  446. package/docs/wallet-substrates.md +17 -17
  447. package/docs/wallet.md +202 -204
  448. package/mod.ts +15 -15
  449. package/package.json +15 -3
  450. package/src/auth/Peer.ts +271 -121
  451. package/src/auth/SessionManager.ts +17 -10
  452. package/src/auth/__tests/Peer.test.ts +361 -179
  453. package/src/auth/__tests/SessionManager.test.ts +67 -19
  454. package/src/auth/__tests/build.test.ts +11 -0
  455. package/src/auth/certificates/Certificate.ts +27 -14
  456. package/src/auth/certificates/MasterCertificate.ts +106 -62
  457. package/src/auth/certificates/VerifiableCertificate.ts +30 -8
  458. package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
  459. package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
  460. package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
  461. package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
  462. package/src/auth/certificates/index.ts +1 -1
  463. package/src/auth/clients/AuthFetch.ts +1 -0
  464. package/src/auth/clients/index.ts +1 -1
  465. package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
  466. package/src/auth/transports/index.ts +1 -1
  467. package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
  468. package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
  469. package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
  470. package/src/auth/utils/createNonce.ts +11 -3
  471. package/src/auth/utils/getVerifiableCertificates.ts +12 -7
  472. package/src/auth/utils/validateCertificates.ts +57 -39
  473. package/src/auth/utils/verifyNonce.ts +6 -2
  474. package/src/compat/BSM.ts +10 -2
  475. package/src/compat/ECIES.ts +265 -141
  476. package/src/compat/HD.ts +81 -63
  477. package/src/compat/Mnemonic.ts +104 -91
  478. package/src/compat/Utxo.ts +8 -5
  479. package/src/compat/__tests/BSM.test.ts +42 -16
  480. package/src/compat/__tests/ECIES.test.ts +117 -52
  481. package/src/compat/__tests/HD.test.ts +55 -42
  482. package/src/compat/__tests/Mnemonic.test.ts +11 -12
  483. package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
  484. package/src/messages/EncryptedMessage.ts +6 -2
  485. package/src/messages/SignedMessage.ts +14 -8
  486. package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
  487. package/src/messages/__tests/SignedMessage.test.ts +17 -11
  488. package/src/overlay-tools/LookupResolver.ts +108 -56
  489. package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
  490. package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
  491. package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
  492. package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
  493. package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
  494. package/src/primitives/AESGCM.ts +2 -0
  495. package/src/primitives/BasePoint.ts +4 -4
  496. package/src/primitives/BigNumber.ts +99 -90
  497. package/src/primitives/Curve.ts +117 -46
  498. package/src/primitives/DRBG.ts +9 -11
  499. package/src/primitives/ECDSA.ts +109 -63
  500. package/src/primitives/Hash.ts +492 -321
  501. package/src/primitives/JacobianPoint.ts +67 -19
  502. package/src/primitives/Point.ts +254 -152
  503. package/src/primitives/Polynomial.ts +8 -3
  504. package/src/primitives/PrivateKey.ts +41 -17
  505. package/src/primitives/PublicKey.ts +13 -3
  506. package/src/primitives/Random.ts +14 -8
  507. package/src/primitives/ReductionContext.ts +1 -1
  508. package/src/primitives/Schnorr.ts +40 -18
  509. package/src/primitives/Signature.ts +26 -16
  510. package/src/primitives/SymmetricKey.ts +14 -14
  511. package/src/primitives/TransactionSignature.ts +41 -17
  512. package/src/primitives/__tests/AESGCM.test.ts +457 -151
  513. package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
  514. package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
  515. package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
  516. package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
  517. package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
  518. package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
  519. package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
  520. package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
  521. package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
  522. package/src/primitives/__tests/Curve.unit.test.ts +75 -53
  523. package/src/primitives/__tests/DRBG.test.ts +1 -1
  524. package/src/primitives/__tests/DRBG.vectors.ts +45 -75
  525. package/src/primitives/__tests/ECDH.test.ts +15 -8
  526. package/src/primitives/__tests/ECDSA.test.ts +12 -6
  527. package/src/primitives/__tests/HMAC.test.ts +24 -18
  528. package/src/primitives/__tests/Hash.test.ts +57 -46
  529. package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
  530. package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
  531. package/src/primitives/__tests/PrivateKey.test.ts +11 -10
  532. package/src/primitives/__tests/PublicKey.test.ts +64 -53
  533. package/src/primitives/__tests/Random.test.ts +1 -1
  534. package/src/primitives/__tests/Reader.test.ts +240 -219
  535. package/src/primitives/__tests/ReductionContext.test.ts +98 -61
  536. package/src/primitives/__tests/Schnorr.test.ts +249 -237
  537. package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
  538. package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
  539. package/src/primitives/__tests/Writer.test.ts +23 -13
  540. package/src/primitives/__tests/bug-31.test.ts +6 -10
  541. package/src/primitives/__tests/utils.test.ts +70 -19
  542. package/src/primitives/utils.ts +103 -79
  543. package/src/script/Script.ts +18 -12
  544. package/src/script/ScriptTemplate.ts +3 -5
  545. package/src/script/Spend.ts +306 -108
  546. package/src/script/__tests/Script.test.ts +73 -55
  547. package/src/script/__tests/Spend.test.ts +208 -83
  548. package/src/script/__tests/SpendComplex.test.ts +19 -13
  549. package/src/script/__tests/script.invalid.vectors.ts +428 -1796
  550. package/src/script/__tests/script.valid.vectors.ts +728 -2764
  551. package/src/script/templates/P2PKH.ts +34 -12
  552. package/src/script/templates/PushDrop.ts +65 -31
  553. package/src/script/templates/RPuzzle.ts +29 -8
  554. package/src/script/templates/__tests/PushDrop.test.ts +146 -41
  555. package/src/totp/__tests/totp.test.ts +45 -44
  556. package/src/totp/totp.ts +3 -2
  557. package/src/transaction/Beef.ts +269 -174
  558. package/src/transaction/BeefParty.ts +41 -31
  559. package/src/transaction/BeefTx.ts +36 -26
  560. package/src/transaction/Broadcaster.ts +10 -6
  561. package/src/transaction/ChainTracker.ts +2 -2
  562. package/src/transaction/FeeModel.ts +0 -1
  563. package/src/transaction/MerklePath.ts +124 -59
  564. package/src/transaction/Transaction.ts +188 -187
  565. package/src/transaction/TransactionOutput.ts +0 -1
  566. package/src/transaction/__tests/Beef.test.ts +390 -287
  567. package/src/transaction/__tests/MerklePath.test.ts +59 -26
  568. package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
  569. package/src/transaction/__tests/Transaction.test.ts +758 -482
  570. package/src/transaction/__tests/bigtx.vectors.ts +2 -1
  571. package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
  572. package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
  573. package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
  574. package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
  575. package/src/transaction/broadcasters/ARC.ts +69 -38
  576. package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
  577. package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
  578. package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
  579. package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
  580. package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
  581. package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
  582. package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
  583. package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
  584. package/src/transaction/http/DefaultHttpClient.ts +5 -4
  585. package/src/transaction/http/FetchHttpClient.ts +18 -9
  586. package/src/transaction/http/HttpClient.ts +27 -22
  587. package/src/transaction/http/NodejsHttpClient.ts +23 -9
  588. package/src/transaction/http/index.ts +5 -1
  589. package/src/transaction/index.ts +5 -1
  590. package/src/wallet/CachedKeyDeriver.ts +151 -82
  591. package/src/wallet/KeyDeriver.ts +186 -105
  592. package/src/wallet/ProtoWallet.ts +121 -52
  593. package/src/wallet/Wallet.interfaces.ts +167 -156
  594. package/src/wallet/WalletClient.ts +314 -59
  595. package/src/wallet/WalletError.ts +2 -2
  596. package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
  597. package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
  598. package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
  599. package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
  600. package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
  601. package/src/wallet/substrates/WalletWireCalls.ts +2 -2
  602. package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
  603. package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
  604. package/src/wallet/substrates/XDM.ts +425 -36
  605. package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
  606. package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
  607. package/src/wallet/substrates/window.CWI.ts +520 -61
@@ -1,17 +1,20 @@
1
- import Transaction from '../../../../dist/cjs/src/transaction/Transaction.js'
2
- import { NodejsHttpClient } from '../../../../dist/cjs/src/transaction/http/NodejsHttpClient.js'
3
- import WhatsOnChainBroadcaster from '../../../../dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js'
4
- import { FetchHttpClient } from '../../../../dist/cjs/src/transaction/http/FetchHttpClient.js'
1
+ import Transaction from '../../../transaction/Transaction'
2
+ import { NodejsHttpClient, HttpsNodejs } from '../../../transaction/http/NodejsHttpClient'
3
+ import WhatsOnChainBroadcaster from '../../../transaction/broadcasters/WhatsOnChainBroadcaster'
4
+ import { FetchHttpClient } from '../../../transaction/http/FetchHttpClient'
5
5
 
6
6
  // Mock Transaction
7
- jest.mock('../../Transaction', () => {
8
- return {
9
- default: jest.fn().mockImplementation(() => {
10
- return {
11
- toHex: () => 'mocked_transaction_hex'
12
- }
13
- })
7
+ jest.mock('../../../transaction/Transaction', () => {
8
+ class MockTransaction {
9
+ toHex (): String {
10
+ return 'mocked_transaction_hex'
11
+ }
12
+
13
+ toHexEF (): String {
14
+ return 'mocked_transaction_hexEF'
15
+ }
14
16
  }
17
+ return { __esModule: true, default: MockTransaction }
15
18
  })
16
19
 
17
20
  describe('WhatsOnChainBroadcaster', () => {
@@ -47,7 +50,7 @@ describe('WhatsOnChainBroadcaster', () => {
47
50
  // Mocking Node.js https module
48
51
  mockedHttps(successResponse)
49
52
  global.window = {} as any
50
-
53
+
51
54
  const broadcaster = new WhatsOnChainBroadcaster(network)
52
55
  const response = await broadcaster.broadcast(transaction)
53
56
 
@@ -61,7 +64,10 @@ describe('WhatsOnChainBroadcaster', () => {
61
64
  it('should broadcast successfully using provided fetch', async () => {
62
65
  const mockFetch = mockedFetch(successResponse)
63
66
 
64
- const broadcaster = new WhatsOnChainBroadcaster(network, new FetchHttpClient(mockFetch))
67
+ const broadcaster = new WhatsOnChainBroadcaster(
68
+ network,
69
+ new FetchHttpClient(mockFetch)
70
+ )
65
71
  const response = await broadcaster.broadcast(transaction)
66
72
 
67
73
  expect(mockFetch).toHaveBeenCalled()
@@ -73,8 +79,11 @@ describe('WhatsOnChainBroadcaster', () => {
73
79
  })
74
80
 
75
81
  it('should broadcast successfully using provided https', async () => {
76
- const mockHttps = mockedHttps(successResponse)
77
- const broadcaster = new WhatsOnChainBroadcaster(network, new NodejsHttpClient(mockHttps))
82
+ const mockHttps = mockedHttps(successResponse) as unknown as HttpsNodejs
83
+ const broadcaster = new WhatsOnChainBroadcaster(
84
+ network,
85
+ new NodejsHttpClient(mockHttps)
86
+ )
78
87
 
79
88
  const response = await broadcaster.broadcast(transaction)
80
89
 
@@ -118,7 +127,7 @@ describe('WhatsOnChainBroadcaster', () => {
118
127
  })
119
128
  })
120
129
 
121
- function mockedFetch (response) {
130
+ function mockedFetch (response: any): jest.Mock<any, any, any> {
122
131
  return jest.fn().mockResolvedValue({
123
132
  ok: response.status === 200,
124
133
  status: response.status,
@@ -134,13 +143,13 @@ describe('WhatsOnChainBroadcaster', () => {
134
143
  })
135
144
  }
136
145
 
137
- function mockedHttps (response) {
146
+ function mockedHttps (response: any): { request: Function } {
138
147
  const https = {
139
148
  request: (url, options, callback) => {
140
149
  // eslint-disable-next-line
141
150
  callback({
142
151
  statusCode: response.status,
143
- statusMessage: response.status == 200 ? 'OK' : 'Bad request',
152
+ statusMessage: response.status === 200 ? 'OK' : 'Bad request',
144
153
  headers: {
145
154
  'content-type': 'text/plain'
146
155
  },
@@ -1,6 +1,6 @@
1
1
  import WhatsOnChain from './WhatsOnChain.js'
2
2
  import ChainTracker from '../ChainTracker.js'
3
3
 
4
- export function defaultChainTracker (): ChainTracker {
4
+ export function defaultChainTracker(): ChainTracker {
5
5
  return new WhatsOnChain()
6
6
  }
@@ -1,3 +1,4 @@
1
+
1
2
  import ChainTracker from '../ChainTracker.js'
2
3
  import { HttpClient } from '../http/HttpClient.js'
3
4
  import { defaultHttpClient } from '../http/DefaultHttpClient.js'
@@ -29,55 +30,70 @@ export default class WhatsOnChain implements ChainTracker {
29
30
  * @param {'main' | 'test' | 'stn'} network - The BSV network to use when calling the WhatsOnChain API.
30
31
  * @param {WhatsOnChainConfig} config - Configuration options for the WhatsOnChain ChainTracker.
31
32
  */
32
- constructor (network: 'main' | 'test' | 'stn' = 'main', config: WhatsOnChainConfig = {}) {
33
+ constructor(
34
+ network: 'main' | 'test' | 'stn' = 'main',
35
+ config: WhatsOnChainConfig = {}
36
+ ) {
33
37
  const { apiKey, httpClient } = config
34
38
  this.network = network
35
39
  this.URL = `https://api.whatsonchain.com/v1/bsv/${network}`
36
40
  this.httpClient = httpClient ?? defaultHttpClient()
37
- this.apiKey = apiKey
41
+ this.apiKey = apiKey ?? ''
38
42
  }
39
43
 
40
- async isValidRootForHeight (root: string, height: number): Promise<boolean> {
44
+ async isValidRootForHeight(root: string, height: number): Promise<boolean> {
41
45
  const requestOptions = {
42
46
  method: 'GET',
43
47
  headers: this.getHttpHeaders()
44
48
  }
45
49
 
46
- const response = await this.httpClient.request<WhatsOnChainBlockHeader>(`${this.URL}/block/${height}/header`, requestOptions)
50
+ const response = await this.httpClient.request<WhatsOnChainBlockHeader>(
51
+ `${this.URL}/block/${height}/header`,
52
+ requestOptions
53
+ )
47
54
  if (response.ok) {
48
55
  const { merkleroot } = response.data
49
56
  return merkleroot === root
50
57
  } else if (response.status === 404) {
51
58
  return false
52
59
  } else {
53
- throw new Error(`Failed to verify merkleroot for height ${height} because of an error: ${JSON.stringify(response.data)} `)
60
+ throw new Error(
61
+ `Failed to verify merkleroot for height ${height} because of an error: ${JSON.stringify(response.data)} `
62
+ )
54
63
  }
55
64
  }
56
65
 
57
- async currentHeight (): Promise<number> {
66
+ async currentHeight(): Promise<number> {
58
67
  try {
59
68
  const requestOptions = {
60
69
  method: 'GET',
61
70
  headers: this.getHttpHeaders()
62
71
  }
63
72
 
64
- const response = await this.httpClient.request<{ height: number }>(`${this.URL}/block/headers`, requestOptions)
73
+ const response = await this.httpClient.request<{ height: number }>(
74
+ `${this.URL}/block/headers`,
75
+ requestOptions
76
+ )
65
77
  if (response.ok) {
66
78
  return response.data[0].height
67
79
  } else {
68
- throw new Error(`Failed to get current height because of an error: ${JSON.stringify(response.data)} `)
80
+ throw new Error(
81
+ `Failed to get current height because of an error: ${JSON.stringify(response.data)} `
82
+ )
69
83
  }
70
84
  } catch (error) {
71
- throw new Error(`Failed to get current height because of an error: ${error?.message}`)
85
+ throw new Error(
86
+ `Failed to get current height because of an error: ${error instanceof Error ? error.message : String(error)}`
87
+ )
72
88
  }
73
89
  }
74
90
 
75
- private getHttpHeaders () {
91
+ private getHttpHeaders(): Record<string, string> {
76
92
  const headers: Record<string, string> = {
77
93
  Accept: 'application/json'
78
94
  }
79
95
 
80
- if (this.apiKey) {
96
+ if (typeof this.apiKey === 'string' && this.apiKey.trim() !== '') {
81
97
  headers.Authorization = this.apiKey
82
98
  }
83
99
 
@@ -1,6 +1,6 @@
1
- import { NodejsHttpClient } from '../../../../dist/cjs/src/transaction/http/NodejsHttpClient.js'
2
- import WhatsOnChain from '../../../../dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js'
3
- import { FetchHttpClient } from '../../../../dist/cjs/src/transaction/http/FetchHttpClient.js'
1
+ import { NodejsHttpClient } from '../../../transaction/http/NodejsHttpClient'
2
+ import WhatsOnChain from '../../../transaction/chaintrackers/WhatsOnChain'
3
+ import { FetchHttpClient } from '../../../transaction/http/FetchHttpClient'
4
4
 
5
5
  describe('WhatsOnChain ChainTracker', () => {
6
6
  const network = 'main'
@@ -20,7 +20,10 @@ describe('WhatsOnChain ChainTracker', () => {
20
20
  global.window = { fetch: mockFetch } as any
21
21
 
22
22
  const chainTracker = new WhatsOnChain(network)
23
- const response = await chainTracker.isValidRootForHeight(merkleroot, height)
23
+ const response = await chainTracker.isValidRootForHeight(
24
+ merkleroot,
25
+ height
26
+ )
24
27
 
25
28
  expect(mockFetch).toHaveBeenCalled()
26
29
  expect(response).toEqual(true)
@@ -29,10 +32,13 @@ describe('WhatsOnChain ChainTracker', () => {
29
32
  it('should verify merkleroot successfully using Node.js https', async () => {
30
33
  // Mocking Node.js https module
31
34
  mockedHttps(successResponse)
32
- if (global.window) global.window = {} as any
35
+ if (typeof global.window !== 'undefined') global.window = {} as any
33
36
 
34
37
  const chainTracker = new WhatsOnChain(network)
35
- const response = await chainTracker.isValidRootForHeight(merkleroot, height)
38
+ const response = await chainTracker.isValidRootForHeight(
39
+ merkleroot,
40
+ height
41
+ )
36
42
 
37
43
  expect(response).toEqual(true)
38
44
  })
@@ -40,8 +46,13 @@ describe('WhatsOnChain ChainTracker', () => {
40
46
  it('should verify merkleroot successfully using provided window.fetch', async () => {
41
47
  const mockFetch = mockedFetch(successResponse)
42
48
 
43
- const chainTracker = new WhatsOnChain(network, { httpClient: new FetchHttpClient(mockFetch) })
44
- const response = await chainTracker.isValidRootForHeight(merkleroot, height)
49
+ const chainTracker = new WhatsOnChain(network, {
50
+ httpClient: new FetchHttpClient(mockFetch)
51
+ })
52
+ const response = await chainTracker.isValidRootForHeight(
53
+ merkleroot,
54
+ height
55
+ )
45
56
 
46
57
  expect(mockFetch).toHaveBeenCalled()
47
58
  expect(response).toEqual(true)
@@ -50,8 +61,13 @@ describe('WhatsOnChain ChainTracker', () => {
50
61
  it('should verify merkleroot successfully using provided Node.js https', async () => {
51
62
  const mockHttps = mockedHttps(successResponse)
52
63
 
53
- const chainTracker = new WhatsOnChain(network, { httpClient: new NodejsHttpClient(mockHttps) })
54
- const response = await chainTracker.isValidRootForHeight(merkleroot, height)
64
+ const chainTracker = new WhatsOnChain(network, {
65
+ httpClient: new NodejsHttpClient(mockHttps)
66
+ })
67
+ const response = await chainTracker.isValidRootForHeight(
68
+ merkleroot,
69
+ height
70
+ )
55
71
 
56
72
  expect(response).toEqual(true)
57
73
  })
@@ -62,8 +78,13 @@ describe('WhatsOnChain ChainTracker', () => {
62
78
  data: 'not found'
63
79
  })
64
80
 
65
- const chainTracker = new WhatsOnChain(network, { httpClient: new FetchHttpClient(mockFetch) })
66
- const response = await chainTracker.isValidRootForHeight(merkleroot, height)
81
+ const chainTracker = new WhatsOnChain(network, {
82
+ httpClient: new FetchHttpClient(mockFetch)
83
+ })
84
+ const response = await chainTracker.isValidRootForHeight(
85
+ merkleroot,
86
+ height
87
+ )
67
88
 
68
89
  expect(response).toEqual(false)
69
90
  })
@@ -71,9 +92,13 @@ describe('WhatsOnChain ChainTracker', () => {
71
92
  it('should handle network errors', async () => {
72
93
  const mockFetch = jest.fn().mockRejectedValue(new Error('Network error'))
73
94
 
74
- const chainTracker = new WhatsOnChain(network, { httpClient: new FetchHttpClient(mockFetch) })
95
+ const chainTracker = new WhatsOnChain(network, {
96
+ httpClient: new FetchHttpClient(mockFetch)
97
+ })
75
98
 
76
- await expect(chainTracker.isValidRootForHeight(merkleroot, height)).rejects.toThrow('Network error')
99
+ await expect(
100
+ chainTracker.isValidRootForHeight(merkleroot, height)
101
+ ).rejects.toThrow('Network error')
77
102
  })
78
103
 
79
104
  it('should throw error when received error response', async () => {
@@ -82,9 +107,15 @@ describe('WhatsOnChain ChainTracker', () => {
82
107
  data: { error: 'Unauthorized' }
83
108
  })
84
109
 
85
- const chainTracker = new WhatsOnChain(network, { httpClient: new FetchHttpClient(mockFetch) })
110
+ const chainTracker = new WhatsOnChain(network, {
111
+ httpClient: new FetchHttpClient(mockFetch)
112
+ })
86
113
 
87
- await expect(chainTracker.isValidRootForHeight(merkleroot, height)).rejects.toThrow(/Failed to verify merkleroot for height \d+ because of an error: .*/)
114
+ await expect(
115
+ chainTracker.isValidRootForHeight(merkleroot, height)
116
+ ).rejects.toThrow(
117
+ /Failed to verify merkleroot for height \d+ because of an error: .*/
118
+ )
88
119
  })
89
120
 
90
121
  it('should return the current height', async () => {
@@ -98,14 +129,17 @@ describe('WhatsOnChain ChainTracker', () => {
98
129
  height: 875904,
99
130
  version: 704643072,
100
131
  versionHex: '2a000000',
101
- merkleroot: '8af5a2d4325ec30e30103b1f365c303d4b49d11e42d26b0d7e9b6866724392e9',
132
+ merkleroot:
133
+ '8af5a2d4325ec30e30103b1f365c303d4b49d11e42d26b0d7e9b6866724392e9',
102
134
  time: 1734667612,
103
135
  mediantime: 1734663717,
104
136
  nonce: 157007350,
105
137
  bits: '180f2b74',
106
138
  difficulty: 72479484799.59058,
107
- chainwork: '00000000000000000000000000000000000000000160c2f41c8793b90f4500dd',
108
- previousblockhash: '00000000000000000128f312a7c62ef5f9a91a3f845a4464d10cfbaaecd233a0',
139
+ chainwork:
140
+ '00000000000000000000000000000000000000000160c2f41c8793b90f4500dd',
141
+ previousblockhash:
142
+ '00000000000000000128f312a7c62ef5f9a91a3f845a4464d10cfbaaecd233a0',
109
143
  nextblockhash: '',
110
144
  nTx: 0,
111
145
  num_tx: 167567
@@ -113,12 +147,14 @@ describe('WhatsOnChain ChainTracker', () => {
113
147
  ]
114
148
  })
115
149
 
116
- const chainTracker = new WhatsOnChain(network, { httpClient: new FetchHttpClient(mockFetch) })
150
+ const chainTracker = new WhatsOnChain(network, {
151
+ httpClient: new FetchHttpClient(mockFetch)
152
+ })
117
153
 
118
154
  await expect(await chainTracker.currentHeight()).toBe(875904)
119
155
  })
120
156
 
121
- function mockedFetch (response) {
157
+ function mockedFetch (response: { status: number, data: any }): jest.Mock<any, any, any> {
122
158
  return jest.fn().mockResolvedValue({
123
159
  ok: response.status === 200,
124
160
  status: response.status,
@@ -134,13 +170,13 @@ describe('WhatsOnChain ChainTracker', () => {
134
170
  })
135
171
  }
136
172
 
137
- function mockedHttps (response) {
173
+ function mockedHttps (response: { status: number, data: any }): { request: (url: string, options: any, callback: (res: any) => void) => any } {
138
174
  const https = {
139
175
  request: (url, options, callback) => {
140
176
  // eslint-disable-next-line
141
177
  callback({
142
178
  statusCode: response.status,
143
- statusMessage: response.status == 200 ? 'OK' : 'Bad request',
179
+ statusMessage: response.status === 200 ? 'OK' : 'Bad request',
144
180
  headers: {
145
181
  'content-type': 'application/json'
146
182
  },
@@ -1,6 +1,5 @@
1
1
  import FeeModel from '../FeeModel.js'
2
2
  import Transaction from '../Transaction.js'
3
- import BigNumber from '../../primitives/BigNumber.js'
4
3
 
5
4
  /**
6
5
  * Represents the "satoshis per kilobyte" transaction fee model.
@@ -17,7 +16,7 @@ export default class SatoshisPerKilobyte implements FeeModel {
17
16
  *
18
17
  * @param {number} value - The number of satoshis per kilobyte to charge as a fee.
19
18
  */
20
- constructor (value: number) {
19
+ constructor(value: number) {
21
20
  this.value = value
22
21
  }
23
22
 
@@ -27,7 +26,7 @@ export default class SatoshisPerKilobyte implements FeeModel {
27
26
  * @param tx The transaction for which a fee is to be computed.
28
27
  * @returns The fee in satoshis for the transaction, as a BigNumber.
29
28
  */
30
- async computeFee (tx: Transaction): Promise<number> {
29
+ async computeFee(tx: Transaction): Promise<number> {
31
30
  const getVarIntSize = (i: number): number => {
32
31
  if (i > 2 ** 32) {
33
32
  return 9
@@ -49,9 +48,14 @@ export default class SatoshisPerKilobyte implements FeeModel {
49
48
  if (typeof input.unlockingScript === 'object') {
50
49
  scriptLength = input.unlockingScript.toBinary().length
51
50
  } else if (typeof input.unlockingScriptTemplate === 'object') {
52
- scriptLength = await input.unlockingScriptTemplate.estimateLength(tx, i)
51
+ scriptLength = await input.unlockingScriptTemplate.estimateLength(
52
+ tx,
53
+ i
54
+ )
53
55
  } else {
54
- throw new Error('All inputs must have an unlocking script or an unlocking script template for sat/kb fee computation.')
56
+ throw new Error(
57
+ 'All inputs must have an unlocking script or an unlocking script template for sat/kb fee computation.'
58
+ )
55
59
  }
56
60
  size += getVarIntSize(scriptLength) // unlocking script length
57
61
  size += scriptLength // unlocking script
@@ -5,11 +5,11 @@ import { FetchHttpClient } from './FetchHttpClient.js'
5
5
  /**
6
6
  * Returns a default HttpClient implementation based on the environment that it is run on.
7
7
  * This method will attempt to use `window.fetch` if available (in browser environments).
8
- * If running in a Node.js environment, it falls back to using the Node.js `https` module
8
+ * If running in a Node environment, it falls back to using the Node `https` module
9
9
  */
10
- export function defaultHttpClient (): HttpClient {
10
+ export function defaultHttpClient(): HttpClient {
11
11
  const noHttpClient: HttpClient = {
12
- async request (..._): Promise<HttpClientResponse> {
12
+ async request(..._): Promise<HttpClientResponse> {
13
13
  throw new Error('No method available to perform HTTP request')
14
14
  }
15
15
  }
@@ -18,9 +18,10 @@ export function defaultHttpClient (): HttpClient {
18
18
  // Use fetch in a browser environment
19
19
  return new FetchHttpClient(window.fetch.bind(window))
20
20
  } else if (typeof require !== 'undefined') {
21
- // Use Node.js https module
21
+ // Use Node https module
22
22
  // eslint-disable-next-line
23
23
  try {
24
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
24
25
  const https = require('https')
25
26
  return new NodejsHttpClient(https)
26
27
  } catch (e) {
@@ -1,11 +1,15 @@
1
- import { HttpClient, HttpClientRequestOptions, HttpClientResponse } from './HttpClient.js'
1
+ import {
2
+ HttpClient,
3
+ HttpClientRequestOptions,
4
+ HttpClientResponse
5
+ } from './HttpClient.js'
2
6
 
3
7
  /** fetch function interface limited to options needed by ts-sdk */
4
8
  /**
5
- * Makes a request to the server.
6
- * @param url The URL to make the request to.
7
- * @param options The request configuration.
8
- */
9
+ * Makes a request to the server.
10
+ * @param url The URL to make the request to.
11
+ * @param options The request configuration.
12
+ */
9
13
  export type Fetch = (url: string, options: FetchOptions) => Promise<Response>
10
14
 
11
15
  /**
@@ -22,12 +26,15 @@ export interface FetchOptions {
22
26
  }
23
27
 
24
28
  /**
25
- * Adapter for Node.js Https module to be used as HttpClient
29
+ * Adapter for Node Https module to be used as HttpClient
26
30
  */
27
31
  export class FetchHttpClient implements HttpClient {
28
- constructor (private readonly fetch: Fetch) {}
32
+ constructor(private readonly fetch: Fetch) { }
29
33
 
30
- async request<D>(url: string, options: HttpClientRequestOptions): Promise<HttpClientResponse<D>> {
34
+ async request<D>(
35
+ url: string,
36
+ options: HttpClientRequestOptions
37
+ ): Promise<HttpClientResponse<D>> {
31
38
  const fetchOptions: FetchOptions = {
32
39
  method: options.method,
33
40
  headers: options.headers,
@@ -36,7 +43,9 @@ export class FetchHttpClient implements HttpClient {
36
43
 
37
44
  const res = await this.fetch(url, fetchOptions)
38
45
  const mediaType = res.headers.get('Content-Type')
39
- const data = mediaType.startsWith('application/json') ? await res.json() : await res.text()
46
+ const data = mediaType?.startsWith('application/json') ?? false
47
+ ? await res.json()
48
+ : await res.text()
40
49
 
41
50
  return {
42
51
  ok: res.ok,
@@ -3,11 +3,14 @@
3
3
  */
4
4
  export interface HttpClient {
5
5
  /**
6
- * Makes a request to the server.
7
- * @param url The URL to make the request to.
8
- * @param options The request configuration.
9
- */
10
- request: <T = any, D = any>(url: string, options: HttpClientRequestOptions<D>) => Promise<HttpClientResponse<T>>
6
+ * Makes a request to the server.
7
+ * @param url The URL to make the request to.
8
+ * @param options The request configuration.
9
+ */
10
+ request: <T = any, D = any>(
11
+ url: string,
12
+ options: HttpClientRequestOptions<D>
13
+ ) => Promise<HttpClientResponse<T>>
11
14
  }
12
15
 
13
16
  /**
@@ -25,20 +28,22 @@ export interface HttpClientRequestOptions<Data = any> {
25
28
  /**
26
29
  * An interface for the response returned by the request method.
27
30
  */
28
- export type HttpClientResponse<T = any> = {
29
- data: T
30
- /** The status code of the response. */
31
- status: number
32
- /** The status text of the response. */
33
- statusText: string
34
- /** A flag indicating whether the request ends with success status or not. */
35
- ok: true
36
- } | {
37
- data: any
38
- /** The status code of the response. */
39
- status: number
40
- /** The status text of the response. */
41
- statusText: string
42
- /** A flag indicating whether the request ends with success status or not. */
43
- ok: false
44
- }
31
+ export type HttpClientResponse<T = any> =
32
+ | {
33
+ data: T
34
+ /** The status code of the response. */
35
+ status: number
36
+ /** The status text of the response. */
37
+ statusText: string
38
+ /** A flag indicating whether the request ends with success status or not. */
39
+ ok: true
40
+ }
41
+ | {
42
+ data: any
43
+ /** The status code of the response. */
44
+ status: number
45
+ /** The status text of the response. */
46
+ statusText: string
47
+ /** A flag indicating whether the request ends with success status or not. */
48
+ ok: false
49
+ }
@@ -1,11 +1,19 @@
1
- import { HttpClient, HttpClientRequestOptions, HttpClientResponse } from './HttpClient.js'
1
+ import {
2
+ HttpClient,
3
+ HttpClientRequestOptions,
4
+ HttpClientResponse
5
+ } from './HttpClient.js'
2
6
 
3
- /** Node.js Https module interface limited to options needed by ts-sdk */
7
+ /** Node Https module interface limited to options needed by ts-sdk */
4
8
  export interface HttpsNodejs {
5
- request: (url: string, options: HttpClientRequestOptions, callback: (res: any) => void) => NodejsHttpClientRequest
9
+ request: (
10
+ url: string,
11
+ options: HttpClientRequestOptions,
12
+ callback: (res: any) => void
13
+ ) => NodejsHttpClientRequest
6
14
  }
7
15
 
8
- /** Nodejs result of the Node.js https.request call limited to options needed by ts-sdk */
16
+ /** Nodejs result of the Node https.request call limited to options needed by ts-sdk */
9
17
  export interface NodejsHttpClientRequest {
10
18
  write: (chunk: string) => void
11
19
 
@@ -15,12 +23,15 @@ export interface NodejsHttpClientRequest {
15
23
  }
16
24
 
17
25
  /**
18
- * Adapter for Node.js Https module to be used as HttpClient
26
+ * Adapter for Node Https module to be used as HttpClient
19
27
  */
20
28
  export class NodejsHttpClient implements HttpClient {
21
- constructor (private readonly https: HttpsNodejs) {}
29
+ constructor(private readonly https: HttpsNodejs) { }
22
30
 
23
- async request (url: string, requestOptions: HttpClientRequestOptions): Promise<HttpClientResponse> {
31
+ async request(
32
+ url: string,
33
+ requestOptions: HttpClientRequestOptions
34
+ ): Promise<HttpClientResponse> {
24
35
  return await new Promise((resolve, reject) => {
25
36
  const req = this.https.request(url, requestOptions, (res) => {
26
37
  let body = ''
@@ -30,7 +41,10 @@ export class NodejsHttpClient implements HttpClient {
30
41
  res.on('end', () => {
31
42
  const ok = res.statusCode >= 200 && res.statusCode <= 299
32
43
  const mediaType = res.headers['content-type']
33
- const data = body && mediaType.startsWith('application/json') ? JSON.parse(body) : body
44
+ const data =
45
+ body !== '' && typeof mediaType === 'string' && mediaType.startsWith('application/json')
46
+ ? JSON.parse(body)
47
+ : body
34
48
  resolve({
35
49
  status: res.statusCode,
36
50
  statusText: res.statusMessage,
@@ -44,7 +58,7 @@ export class NodejsHttpClient implements HttpClient {
44
58
  reject(error)
45
59
  })
46
60
 
47
- if (requestOptions.data) {
61
+ if (requestOptions.data !== null && requestOptions.data !== undefined) {
48
62
  req.write(JSON.stringify(requestOptions.data))
49
63
  }
50
64
  req.end()
@@ -1,4 +1,8 @@
1
- export type { HttpClient, HttpClientResponse, HttpClientRequestOptions } from './HttpClient.js'
1
+ export type {
2
+ HttpClient,
3
+ HttpClientResponse,
4
+ HttpClientRequestOptions
5
+ } from './HttpClient.js'
2
6
  export { defaultHttpClient } from './DefaultHttpClient.js'
3
7
  export { NodejsHttpClient } from './NodejsHttpClient.js'
4
8
  export { FetchHttpClient } from './FetchHttpClient.js'
@@ -2,7 +2,11 @@ export { default as Transaction } from './Transaction.js'
2
2
  export { default as MerklePath } from './MerklePath.js'
3
3
  export type { default as TransactionInput } from './TransactionInput.js'
4
4
  export type { default as TransactionOutput } from './TransactionOutput.js'
5
- export type { Broadcaster, BroadcastFailure, BroadcastResponse } from './Broadcaster.js'
5
+ export type {
6
+ Broadcaster,
7
+ BroadcastFailure,
8
+ BroadcastResponse
9
+ } from './Broadcaster.js'
6
10
  export { isBroadcastResponse, isBroadcastFailure } from './Broadcaster.js'
7
11
  export type { default as ChainTracker } from './ChainTracker.js'
8
12
  export { default as BeefTx } from './BeefTx.js'