@hiero-ledger/sdk 2.72.0 → 2.73.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/dist/umd.js +648 -338
  2. package/dist/umd.min.js +16 -15
  3. package/lib/EntityIdHelper.cjs +1 -2
  4. package/lib/EntityIdHelper.js +1 -1
  5. package/lib/EntityIdHelper.js.map +1 -1
  6. package/lib/EthereumFlow.cjs +1 -2
  7. package/lib/EthereumTransaction.cjs +1 -2
  8. package/lib/EthereumTransactionDataEip1559.cjs +1 -2
  9. package/lib/EthereumTransactionDataEip1559.js +1 -1
  10. package/lib/EthereumTransactionDataEip1559.js.map +1 -1
  11. package/lib/EthereumTransactionDataEip2930.cjs +1 -2
  12. package/lib/EthereumTransactionDataEip2930.js +1 -1
  13. package/lib/EthereumTransactionDataEip2930.js.map +1 -1
  14. package/lib/EthereumTransactionDataLegacy.cjs +1 -2
  15. package/lib/EthereumTransactionDataLegacy.js +1 -1
  16. package/lib/EthereumTransactionDataLegacy.js.map +1 -1
  17. package/lib/EvmAddress.cjs +1 -2
  18. package/lib/ExchangeRates.cjs +1 -2
  19. package/lib/Executable.cjs +1 -2
  20. package/lib/Executable.js +1 -1
  21. package/lib/Executable.js.map +1 -1
  22. package/lib/FeeComponents.cjs +1 -2
  23. package/lib/FeeData.cjs +1 -2
  24. package/lib/FeeSchedule.cjs +1 -2
  25. package/lib/FeeSchedule.js +1 -1
  26. package/lib/FeeSchedule.js.map +1 -1
  27. package/lib/FeeSchedules.cjs +1 -2
  28. package/lib/KeyList.js +1 -1
  29. package/lib/KeyList.js.map +1 -1
  30. package/lib/LedgerId.cjs +1 -2
  31. package/lib/LocalProviderWeb.cjs +165 -0
  32. package/lib/LocalProviderWeb.d.ts +127 -0
  33. package/lib/LocalProviderWeb.js +2 -0
  34. package/lib/LocalProviderWeb.js.map +1 -0
  35. package/lib/ManagedNode.js +1 -1
  36. package/lib/ManagedNode.js.map +1 -1
  37. package/lib/ObjectMap.js +1 -1
  38. package/lib/ObjectMap.js.map +1 -1
  39. package/lib/PrivateKey.js +1 -1
  40. package/lib/PrivateKey.js.map +1 -1
  41. package/lib/PrngTransaction.cjs +1 -2
  42. package/lib/PublicKey.js +1 -1
  43. package/lib/PublicKey.js.map +1 -1
  44. package/lib/StakingInfo.cjs +1 -2
  45. package/lib/Timestamp.js.map +1 -1
  46. package/lib/TransactionFeeSchedule.cjs +1 -2
  47. package/lib/TransactionFeeSchedule.js +1 -1
  48. package/lib/TransactionFeeSchedule.js.map +1 -1
  49. package/lib/Wallet.cjs +1 -2
  50. package/lib/Wallet.js +1 -1
  51. package/lib/Wallet.js.map +1 -1
  52. package/lib/account/AccountAllowanceAdjustTransaction.cjs +1 -2
  53. package/lib/account/AccountAllowanceAdjustTransaction.js +1 -1
  54. package/lib/account/AccountAllowanceAdjustTransaction.js.map +1 -1
  55. package/lib/account/AccountAllowanceApproveTransaction.cjs +1 -2
  56. package/lib/account/AccountAllowanceApproveTransaction.js +1 -1
  57. package/lib/account/AccountAllowanceApproveTransaction.js.map +1 -1
  58. package/lib/account/AccountAllowanceDeleteTransaction.cjs +1 -2
  59. package/lib/account/AccountAllowanceDeleteTransaction.js +1 -1
  60. package/lib/account/AccountAllowanceDeleteTransaction.js.map +1 -1
  61. package/lib/account/AccountBalance.cjs +1 -2
  62. package/lib/account/AccountBalanceQuery.cjs +1 -2
  63. package/lib/account/AccountCreateTransaction.cjs +1 -2
  64. package/lib/account/AccountDeleteTransaction.cjs +1 -2
  65. package/lib/account/AccountId.cjs +1 -2
  66. package/lib/account/AccountId.js +1 -1
  67. package/lib/account/AccountId.js.map +1 -1
  68. package/lib/account/AccountInfo.cjs +1 -2
  69. package/lib/account/AccountInfo.js +1 -1
  70. package/lib/account/AccountInfo.js.map +1 -1
  71. package/lib/account/AccountInfoQuery.cjs +1 -2
  72. package/lib/account/AccountRecordsQuery.cjs +1 -2
  73. package/lib/account/AccountRecordsQuery.js +1 -1
  74. package/lib/account/AccountRecordsQuery.js.map +1 -1
  75. package/lib/account/AccountUpdateTransaction.cjs +1 -2
  76. package/lib/account/HbarTransferMap.js +1 -1
  77. package/lib/account/HbarTransferMap.js.map +1 -1
  78. package/lib/account/LiveHashAddTransaction.cjs +1 -2
  79. package/lib/account/LiveHashAddTransaction.js +1 -1
  80. package/lib/account/LiveHashAddTransaction.js.map +1 -1
  81. package/lib/account/LiveHashDeleteTransaction.cjs +1 -2
  82. package/lib/account/LiveHashQuery.cjs +1 -2
  83. package/lib/account/NullableTokenDecimalMap.js +1 -1
  84. package/lib/account/NullableTokenDecimalMap.js.map +1 -1
  85. package/lib/account/TokenBalanceMap.js +1 -1
  86. package/lib/account/TokenBalanceMap.js.map +1 -1
  87. package/lib/account/TokenDecimalMap.js +1 -1
  88. package/lib/account/TokenDecimalMap.js.map +1 -1
  89. package/lib/account/TokenNftAllowance.js +1 -1
  90. package/lib/account/TokenNftAllowance.js.map +1 -1
  91. package/lib/account/TokenNftTransferMap.js +1 -1
  92. package/lib/account/TokenNftTransferMap.js.map +1 -1
  93. package/lib/account/TokenRelationshipMap.js +1 -1
  94. package/lib/account/TokenRelationshipMap.js.map +1 -1
  95. package/lib/account/TokenTransferAccountMap.js +1 -1
  96. package/lib/account/TokenTransferAccountMap.js.map +1 -1
  97. package/lib/account/TokenTransferMap.js +1 -1
  98. package/lib/account/TokenTransferMap.js.map +1 -1
  99. package/lib/account/TransferTransaction.cjs +1 -2
  100. package/lib/account/TransferTransaction.js +1 -1
  101. package/lib/account/TransferTransaction.js.map +1 -1
  102. package/lib/address_book/AddressBooks.cjs +1 -2
  103. package/lib/address_book/NodeAddress.cjs +1 -2
  104. package/lib/address_book/NodeAddress.js +1 -1
  105. package/lib/address_book/NodeAddress.js.map +1 -1
  106. package/lib/address_book/NodeAddressBook.cjs +1 -2
  107. package/lib/address_book/NodeAddressBook.js +1 -1
  108. package/lib/address_book/NodeAddressBook.js.map +1 -1
  109. package/lib/browser.cjs +8 -0
  110. package/lib/browser.d.ts +1 -0
  111. package/lib/browser.js +1 -1
  112. package/lib/channel/Channel.cjs +1 -2
  113. package/lib/channel/NativeChannel.cjs +1 -2
  114. package/lib/channel/NativeChannel.js +1 -1
  115. package/lib/channel/NativeChannel.js.map +1 -1
  116. package/lib/channel/NodeChannel.js +1 -1
  117. package/lib/channel/NodeChannel.js.map +1 -1
  118. package/lib/channel/NodeMirrorChannel.cjs +1 -2
  119. package/lib/channel/NodeMirrorChannel.js +1 -1
  120. package/lib/channel/NodeMirrorChannel.js.map +1 -1
  121. package/lib/channel/WebChannel.cjs +1 -2
  122. package/lib/client/Client.js +1 -1
  123. package/lib/client/Client.js.map +1 -1
  124. package/lib/client/ManagedNetwork.cjs +1 -2
  125. package/lib/client/ManagedNetwork.js +1 -1
  126. package/lib/client/ManagedNetwork.js.map +1 -1
  127. package/lib/client/MirrorNetwork.js +1 -1
  128. package/lib/client/MirrorNetwork.js.map +1 -1
  129. package/lib/client/NativeClient.js.map +1 -1
  130. package/lib/client/Network.js +1 -1
  131. package/lib/client/Network.js.map +1 -1
  132. package/lib/client/NodeClient.cjs +4 -11
  133. package/lib/client/NodeClient.d.ts +5 -6
  134. package/lib/client/NodeClient.js +1 -1
  135. package/lib/client/NodeClient.js.map +1 -1
  136. package/lib/client/WebClient.cjs +32 -7
  137. package/lib/client/WebClient.d.ts +10 -0
  138. package/lib/client/WebClient.js +1 -1
  139. package/lib/client/WebClient.js.map +1 -1
  140. package/lib/client/addressbooks/mainnet.cjs +1 -1
  141. package/lib/client/addressbooks/mainnet.d.ts +1 -1
  142. package/lib/client/addressbooks/mainnet.js +1 -1
  143. package/lib/client/addressbooks/mainnet.js.map +1 -1
  144. package/lib/client/addressbooks/previewnet.cjs +1 -1
  145. package/lib/client/addressbooks/previewnet.d.ts +1 -1
  146. package/lib/client/addressbooks/previewnet.js +1 -1
  147. package/lib/client/addressbooks/previewnet.js.map +1 -1
  148. package/lib/client/addressbooks/testnet.cjs +1 -1
  149. package/lib/client/addressbooks/testnet.d.ts +1 -1
  150. package/lib/client/addressbooks/testnet.js +1 -1
  151. package/lib/client/addressbooks/testnet.js.map +1 -1
  152. package/lib/constants/ClientConstants.cjs +21 -2
  153. package/lib/constants/ClientConstants.d.ts +17 -0
  154. package/lib/constants/ClientConstants.js +1 -1
  155. package/lib/constants/ClientConstants.js.map +1 -1
  156. package/lib/contract/ContractByteCodeQuery.cjs +1 -2
  157. package/lib/contract/ContractCallQuery.cjs +1 -2
  158. package/lib/contract/ContractCreateFlow.cjs +1 -2
  159. package/lib/contract/ContractCreateFlow.js +1 -1
  160. package/lib/contract/ContractCreateFlow.js.map +1 -1
  161. package/lib/contract/ContractCreateTransaction.cjs +1 -2
  162. package/lib/contract/ContractDeleteTransaction.cjs +1 -2
  163. package/lib/contract/ContractExecuteTransaction.cjs +1 -2
  164. package/lib/contract/ContractFunctionParameters.cjs +1 -2
  165. package/lib/contract/ContractFunctionParameters.js +1 -1
  166. package/lib/contract/ContractFunctionParameters.js.map +1 -1
  167. package/lib/contract/ContractFunctionResult.cjs +1 -2
  168. package/lib/contract/ContractFunctionResult.js +1 -1
  169. package/lib/contract/ContractFunctionResult.js.map +1 -1
  170. package/lib/contract/ContractFunctionSelector.cjs +1 -2
  171. package/lib/contract/ContractId.cjs +1 -2
  172. package/lib/contract/ContractId.js +1 -1
  173. package/lib/contract/ContractId.js.map +1 -1
  174. package/lib/contract/ContractInfo.cjs +1 -2
  175. package/lib/contract/ContractInfoQuery.cjs +1 -2
  176. package/lib/contract/ContractNonceInfo.cjs +1 -2
  177. package/lib/contract/ContractStateChange.cjs +1 -2
  178. package/lib/contract/ContractUpdateTransaction.cjs +1 -2
  179. package/lib/contract/DelegateContractId.js +1 -1
  180. package/lib/contract/DelegateContractId.js.map +1 -1
  181. package/lib/contract/StorageChange.cjs +1 -2
  182. package/lib/cryptography/keccak.js +1 -1
  183. package/lib/cryptography/keccak.js.map +1 -1
  184. package/lib/cryptography/sha384.native.cjs +1 -2
  185. package/lib/encoding/base64.native.js +1 -1
  186. package/lib/encoding/base64.native.js.map +1 -1
  187. package/lib/encoding/hex.browser.js +1 -1
  188. package/lib/encoding/hex.browser.js.map +1 -1
  189. package/lib/encoding/utf8.native.cjs +1 -2
  190. package/lib/exports.cjs +1 -2
  191. package/lib/file/FileAppendTransaction.cjs +1 -2
  192. package/lib/file/FileContentsQuery.cjs +1 -2
  193. package/lib/file/FileCreateTransaction.cjs +1 -2
  194. package/lib/file/FileCreateTransaction.js +1 -1
  195. package/lib/file/FileCreateTransaction.js.map +1 -1
  196. package/lib/file/FileDeleteTransaction.cjs +1 -2
  197. package/lib/file/FileId.cjs +1 -2
  198. package/lib/file/FileInfo.cjs +1 -2
  199. package/lib/file/FileInfoQuery.cjs +1 -2
  200. package/lib/file/FileUpdateTransaction.cjs +1 -2
  201. package/lib/file/FileUpdateTransaction.js +1 -1
  202. package/lib/file/FileUpdateTransaction.js.map +1 -1
  203. package/lib/network/AddressBookQuery.cjs +1 -2
  204. package/lib/network/AddressBookQuery.js +1 -1
  205. package/lib/network/AddressBookQuery.js.map +1 -1
  206. package/lib/network/AddressBookQueryWeb.js +1 -1
  207. package/lib/network/AddressBookQueryWeb.js.map +1 -1
  208. package/lib/network/NetworkVersionInfo.cjs +1 -2
  209. package/lib/network/NetworkVersionInfoQuery.cjs +1 -2
  210. package/lib/network/SemanticVersion.cjs +1 -2
  211. package/lib/node/NodeCreateTransaction.cjs +1 -2
  212. package/lib/node/NodeCreateTransaction.js +1 -1
  213. package/lib/node/NodeCreateTransaction.js.map +1 -1
  214. package/lib/node/NodeDeleteTransaction.cjs +15 -3
  215. package/lib/node/NodeDeleteTransaction.d.ts +2 -1
  216. package/lib/node/NodeDeleteTransaction.js +1 -1
  217. package/lib/node/NodeDeleteTransaction.js.map +1 -1
  218. package/lib/node/NodeUpdateTransaction.cjs +13 -3
  219. package/lib/node/NodeUpdateTransaction.d.ts +2 -1
  220. package/lib/node/NodeUpdateTransaction.js +1 -1
  221. package/lib/node/NodeUpdateTransaction.js.map +1 -1
  222. package/lib/query/CostQuery.cjs +1 -2
  223. package/lib/query/MirrorNodeContractCallQuery.cjs +1 -2
  224. package/lib/query/MirrorNodeContractEstimateQuery.cjs +1 -2
  225. package/lib/query/MirrorNodeContractQuery.cjs +2 -1
  226. package/lib/query/MirrorNodeContractQuery.js +1 -1
  227. package/lib/query/MirrorNodeContractQuery.js.map +1 -1
  228. package/lib/query/Query.cjs +1 -2
  229. package/lib/query/Query.js +1 -1
  230. package/lib/query/Query.js.map +1 -1
  231. package/lib/query/QueryBase.cjs +1 -2
  232. package/lib/schedule/ScheduleCreateTransaction.cjs +1 -2
  233. package/lib/schedule/ScheduleCreateTransaction.js +1 -1
  234. package/lib/schedule/ScheduleCreateTransaction.js.map +1 -1
  235. package/lib/schedule/ScheduleDeleteTransaction.cjs +1 -2
  236. package/lib/schedule/ScheduleId.cjs +1 -2
  237. package/lib/schedule/ScheduleInfo.cjs +1 -2
  238. package/lib/schedule/ScheduleInfoQuery.cjs +1 -2
  239. package/lib/schedule/ScheduleSignTransaction.cjs +1 -2
  240. package/lib/system/FreezeTransaction.cjs +1 -2
  241. package/lib/system/SystemDeleteTransaction.cjs +1 -2
  242. package/lib/system/SystemUndeleteTransaction.cjs +1 -2
  243. package/lib/token/AbstractTokenTransferTransaction.js +1 -1
  244. package/lib/token/AbstractTokenTransferTransaction.js.map +1 -1
  245. package/lib/token/AssessedCustomFee.js +1 -1
  246. package/lib/token/AssessedCustomFee.js.map +1 -1
  247. package/lib/token/NftId.cjs +1 -2
  248. package/lib/token/TokenAirdropTransaction.cjs +1 -2
  249. package/lib/token/TokenAssociateTransaction.cjs +1 -2
  250. package/lib/token/TokenAssociateTransaction.js +1 -1
  251. package/lib/token/TokenAssociateTransaction.js.map +1 -1
  252. package/lib/token/TokenBurnTransaction.cjs +1 -2
  253. package/lib/token/TokenBurnTransaction.js +1 -1
  254. package/lib/token/TokenBurnTransaction.js.map +1 -1
  255. package/lib/token/TokenCancelAirdropTransaction.cjs +1 -2
  256. package/lib/token/TokenCancelAirdropTransaction.js +1 -1
  257. package/lib/token/TokenCancelAirdropTransaction.js.map +1 -1
  258. package/lib/token/TokenClaimAirdropTransaction.cjs +1 -2
  259. package/lib/token/TokenClaimAirdropTransaction.js +1 -1
  260. package/lib/token/TokenClaimAirdropTransaction.js.map +1 -1
  261. package/lib/token/TokenCreateTransaction.cjs +1 -2
  262. package/lib/token/TokenCreateTransaction.js +1 -1
  263. package/lib/token/TokenCreateTransaction.js.map +1 -1
  264. package/lib/token/TokenDeleteTransaction.cjs +1 -2
  265. package/lib/token/TokenDissociateTransaction.cjs +1 -2
  266. package/lib/token/TokenDissociateTransaction.js +1 -1
  267. package/lib/token/TokenDissociateTransaction.js.map +1 -1
  268. package/lib/token/TokenFeeScheduleUpdateTransaction.cjs +1 -2
  269. package/lib/token/TokenFeeScheduleUpdateTransaction.js +1 -1
  270. package/lib/token/TokenFeeScheduleUpdateTransaction.js.map +1 -1
  271. package/lib/token/TokenFreezeTransaction.cjs +1 -2
  272. package/lib/token/TokenGrantKycTransaction.cjs +1 -2
  273. package/lib/token/TokenId.cjs +1 -2
  274. package/lib/token/TokenInfo.cjs +1 -2
  275. package/lib/token/TokenInfo.js +1 -1
  276. package/lib/token/TokenInfo.js.map +1 -1
  277. package/lib/token/TokenInfoQuery.cjs +1 -2
  278. package/lib/token/TokenMintTransaction.cjs +1 -2
  279. package/lib/token/TokenMintTransaction.js +1 -1
  280. package/lib/token/TokenMintTransaction.js.map +1 -1
  281. package/lib/token/TokenNftInfo.cjs +1 -2
  282. package/lib/token/TokenNftInfoQuery.cjs +1 -2
  283. package/lib/token/TokenNftInfoQuery.js +1 -1
  284. package/lib/token/TokenNftInfoQuery.js.map +1 -1
  285. package/lib/token/TokenNftsUpdateTransaction.cjs +1 -2
  286. package/lib/token/TokenPauseTransaction.cjs +1 -2
  287. package/lib/token/TokenRejectFlow.js +1 -1
  288. package/lib/token/TokenRejectFlow.js.map +1 -1
  289. package/lib/token/TokenRejectTransaction.cjs +1 -2
  290. package/lib/token/TokenRejectTransaction.js +1 -1
  291. package/lib/token/TokenRejectTransaction.js.map +1 -1
  292. package/lib/token/TokenRevokeKycTransaction.cjs +1 -2
  293. package/lib/token/TokenUnfreezeTransaction.cjs +1 -2
  294. package/lib/token/TokenUnpauseTransaction.cjs +1 -2
  295. package/lib/token/TokenUpdateNftsTransaction.cjs +1 -2
  296. package/lib/token/TokenUpdateTransaction.cjs +1 -2
  297. package/lib/token/TokenWipeTransaction.cjs +1 -2
  298. package/lib/token/TokenWipeTransaction.js +1 -1
  299. package/lib/token/TokenWipeTransaction.js.map +1 -1
  300. package/lib/topic/TopicCreateTransaction.cjs +1 -2
  301. package/lib/topic/TopicCreateTransaction.js +1 -1
  302. package/lib/topic/TopicCreateTransaction.js.map +1 -1
  303. package/lib/topic/TopicDeleteTransaction.cjs +1 -2
  304. package/lib/topic/TopicId.cjs +1 -2
  305. package/lib/topic/TopicInfo.cjs +1 -2
  306. package/lib/topic/TopicInfo.js +1 -1
  307. package/lib/topic/TopicInfo.js.map +1 -1
  308. package/lib/topic/TopicInfoQuery.cjs +1 -2
  309. package/lib/topic/TopicMessage.js +1 -1
  310. package/lib/topic/TopicMessage.js.map +1 -1
  311. package/lib/topic/TopicMessageQuery.cjs +1 -2
  312. package/lib/topic/TopicMessageQuery.js +1 -1
  313. package/lib/topic/TopicMessageQuery.js.map +1 -1
  314. package/lib/topic/TopicMessageSubmitTransaction.cjs +1 -2
  315. package/lib/topic/TopicUpdateTransaction.cjs +1 -2
  316. package/lib/topic/TopicUpdateTransaction.js +1 -1
  317. package/lib/topic/TopicUpdateTransaction.js.map +1 -1
  318. package/lib/transaction/BatchTransaction.cjs +1 -2
  319. package/lib/transaction/BatchTransaction.js +1 -1
  320. package/lib/transaction/BatchTransaction.js.map +1 -1
  321. package/lib/transaction/CustomFeeLimit.js +1 -1
  322. package/lib/transaction/CustomFeeLimit.js.map +1 -1
  323. package/lib/transaction/NodeAccountIdSignatureMap.cjs +1 -2
  324. package/lib/transaction/NodeAccountIdSignatureMap.js +1 -1
  325. package/lib/transaction/NodeAccountIdSignatureMap.js.map +1 -1
  326. package/lib/transaction/NodeAccountIdSignatureMapLegacy.js +1 -1
  327. package/lib/transaction/NodeAccountIdSignatureMapLegacy.js.map +1 -1
  328. package/lib/transaction/SignatureMap.js +1 -1
  329. package/lib/transaction/SignatureMap.js.map +1 -1
  330. package/lib/transaction/SignatureMapLegacy.js +1 -1
  331. package/lib/transaction/SignatureMapLegacy.js.map +1 -1
  332. package/lib/transaction/SignaturePairMap.js +1 -1
  333. package/lib/transaction/SignaturePairMap.js.map +1 -1
  334. package/lib/transaction/Transaction.cjs +1 -2
  335. package/lib/transaction/Transaction.js +1 -1
  336. package/lib/transaction/Transaction.js.map +1 -1
  337. package/lib/transaction/TransactionHashMap.cjs +1 -2
  338. package/lib/transaction/TransactionHashMap.js +1 -1
  339. package/lib/transaction/TransactionHashMap.js.map +1 -1
  340. package/lib/transaction/TransactionId.cjs +1 -2
  341. package/lib/transaction/TransactionReceipt.cjs +1 -2
  342. package/lib/transaction/TransactionReceipt.js +1 -1
  343. package/lib/transaction/TransactionReceipt.js.map +1 -1
  344. package/lib/transaction/TransactionReceiptQuery.cjs +1 -2
  345. package/lib/transaction/TransactionRecord.cjs +1 -2
  346. package/lib/transaction/TransactionRecord.js +1 -1
  347. package/lib/transaction/TransactionRecord.js.map +1 -1
  348. package/lib/transaction/TransactionRecordQuery.cjs +1 -2
  349. package/lib/transaction/TransactionResponse.cjs +1 -2
  350. package/lib/transaction/TransactionResponse.js.map +1 -1
  351. package/lib/util/ASN1-Decoder.js +1 -1
  352. package/lib/util/ASN1-Decoder.js.map +1 -1
  353. package/lib/util.js +1 -1
  354. package/lib/util.js.map +1 -1
  355. package/lib/version.js +1 -1
  356. package/package.json +75 -71
  357. package/src/Executable.js +10 -4
  358. package/src/LocalProviderWeb.js +165 -0
  359. package/src/Timestamp.js +2 -2
  360. package/src/account/AccountAllowanceAdjustTransaction.js +48 -48
  361. package/src/account/AccountAllowanceApproveTransaction.js +48 -48
  362. package/src/account/TokenNftAllowance.js +4 -4
  363. package/src/browser.js +1 -0
  364. package/src/client/NodeClient.js +6 -9
  365. package/src/client/WebClient.js +33 -8
  366. package/src/client/addressbooks/mainnet.js +1 -1
  367. package/src/client/addressbooks/previewnet.js +1 -1
  368. package/src/client/addressbooks/testnet.js +1 -1
  369. package/src/constants/ClientConstants.js +25 -0
  370. package/src/network/AddressBookQueryWeb.js +8 -2
  371. package/src/node/NodeDeleteTransaction.js +20 -1
  372. package/src/node/NodeUpdateTransaction.js +19 -1
  373. package/src/query/MirrorNodeContractQuery.js +8 -1
  374. package/src/token/TokenInfo.js +4 -4
  375. package/src/topic/TopicMessageQuery.js +7 -5
  376. package/src/transaction/TransactionRecord.js +5 -5
  377. package/src/transaction/TransactionResponse.js +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NativeClient.js","sources":["../../src/client/NativeClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./Client.js\";\nimport NativeChannel from \"../channel/NativeChannel.js\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport AccountId from \"../account/AccountId.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport { MirrorNetwork, WebNetwork } from \"../constants/ClientConstants.js\";\nimport AddressBookQuery from \"../network/AddressBookQueryWeb.js\";\nimport FileId from \"../file/FileId.js\";\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n */\n\n/**\n * @augments {Client<NativeChannel, *>}\n */\nexport default class NativeClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n\n if (props != null) {\n if (typeof props.network === \"string\") {\n switch (props.network) {\n case \"mainnet\":\n this.setNetwork(WebNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetwork(WebNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetwork(WebNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${props.network}`,\n );\n }\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {NativeClient}\n */\n static fromConfig(data) {\n return new NativeClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {NativeClient}\n */\n static forNetwork(network) {\n return new NativeClient({\n network,\n });\n }\n\n /**\n * @param {string} network\n * @returns {NativeClient}\n */\n static forName(network) {\n return new NativeClient({ network });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @returns {NativeClient}\n */\n static forMainnet() {\n return new NativeClient({\n network: \"mainnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @returns {NativeClient}\n */\n static forTestnet() {\n return new NativeClient({\n network: \"testnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @returns {NativeClient}\n */\n static forPreviewnet() {\n return new NativeClient({\n network: \"previewnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @returns {Promise<NativeClient>}\n */\n static async forMainnetAsync() {\n return new NativeClient({\n network: \"mainnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @returns {Promise<NativeClient>}\n */\n static async forTestnetAsync() {\n return new NativeClient({\n network: \"testnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @returns {Promise<NativeClient>}\n */\n static async forPreviewnetAsync() {\n return new NativeClient({\n network: \"previewnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @returns {Promise<NativeClient>}\n */\n static async forNameAsync(network) {\n const client = new NativeClient({ network });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * Construct a client configured to use mirror nodes.\n * This will query the address book to get the network nodes.\n *\n * @param {string[] | string} mirrorNetwork\n * @returns {Promise<NativeClient>}\n */\n static async forMirrorNetwork(mirrorNetwork) {\n const client = new NativeClient({\n mirrorNetwork,\n });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n switch (network) {\n case \"previewnet\":\n this._network.setNetwork(WebNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._network.setNetwork(WebNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._network.setNetwork(WebNetwork.MAINNET);\n }\n } else {\n this._network.setNetwork(network);\n }\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {Promise<this>}\n */\n async updateNetwork() {\n if (this._isUpdatingNetwork) {\n return this;\n }\n\n this._isUpdatingNetwork = true;\n\n try {\n const addressBook = await new AddressBookQuery()\n .setFileId(\n FileId.getAddressBookFileIdFor(this.shard, this.realm),\n )\n .execute(this);\n\n /** @type {Record<string, AccountId>} */\n const network = {};\n for (const nodeAddress of addressBook.nodeAddresses) {\n for (const endpoint of nodeAddress.addresses) {\n if (nodeAddress.accountId != null) {\n network[endpoint.toString()] = nodeAddress.accountId;\n }\n }\n }\n\n this.setNetwork(network);\n } catch (/** @type {unknown} */ error) {\n if (this._logger) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this._logger.trace(\n `failed to update client address book: ${errorMessage}`,\n );\n }\n } finally {\n this._isUpdatingNetwork = false;\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string) => NativeChannel}\n */\n _createNetworkChannel() {\n return (address) => new NativeChannel(address);\n }\n\n /**\n * @override\n * @returns {(address: string) => *}\n */\n _createMirrorNetworkChannel() {\n return () => {\n throw new Error(\"mirror support is not supported in native\");\n };\n }\n}\n"],"names":["NativeClient","Client","constructor","props","super","network","this","setNetwork","WebNetwork","MAINNET","setLedgerId","LedgerId","setMirrorNetwork","MirrorNetwork","TESTNET","PREVIEWNET","Error","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","fromConfig","data","JSON","parse","forNetwork","forName","forMainnet","forTestnet","forPreviewnet","forMainnetAsync","updateNetwork","forTestnetAsync","forPreviewnetAsync","forNameAsync","client","forMirrorNetwork","mirrorNetwork","_network","_mirrorNetwork","LOCAL_NODE","_isUpdatingNetwork","addressBook","AddressBookQuery","setFileId","FileId","getAddressBookFileIdFor","execute","nodeAddress","nodeAddresses","endpoint","addresses","accountId","toString","error","_logger","errorMessage","message","String","trace","_createNetworkChannel","address","NativeChannel","_createMirrorNetworkChannel"],"mappings":"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"}
1
+ {"version":3,"file":"NativeClient.js","sources":["../../src/client/NativeClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./Client.js\";\nimport NativeChannel from \"../channel/NativeChannel.js\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport AccountId from \"../account/AccountId.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport { MirrorNetwork, WebNetwork } from \"../constants/ClientConstants.js\";\nimport AddressBookQuery from \"../network/AddressBookQueryWeb.js\";\nimport FileId from \"../file/FileId.js\";\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n */\n\n/**\n * @augments {Client<NativeChannel, *>}\n */\nexport default class NativeClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n\n if (props != null) {\n if (typeof props.network === \"string\") {\n switch (props.network) {\n case \"mainnet\":\n this.setNetwork(WebNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetwork(WebNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetwork(WebNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${props.network}`,\n );\n }\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {NativeClient}\n */\n static fromConfig(data) {\n return new NativeClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {NativeClient}\n */\n static forNetwork(network) {\n return new NativeClient({\n network,\n });\n }\n\n /**\n * @param {string} network\n * @returns {NativeClient}\n */\n static forName(network) {\n return new NativeClient({ network });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @returns {NativeClient}\n */\n static forMainnet() {\n return new NativeClient({\n network: \"mainnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @returns {NativeClient}\n */\n static forTestnet() {\n return new NativeClient({\n network: \"testnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @returns {NativeClient}\n */\n static forPreviewnet() {\n return new NativeClient({\n network: \"previewnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @returns {Promise<NativeClient>}\n */\n static async forMainnetAsync() {\n return new NativeClient({\n network: \"mainnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @returns {Promise<NativeClient>}\n */\n static async forTestnetAsync() {\n return new NativeClient({\n network: \"testnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @returns {Promise<NativeClient>}\n */\n static async forPreviewnetAsync() {\n return new NativeClient({\n network: \"previewnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @returns {Promise<NativeClient>}\n */\n static async forNameAsync(network) {\n const client = new NativeClient({ network });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * Construct a client configured to use mirror nodes.\n * This will query the address book to get the network nodes.\n *\n * @param {string[] | string} mirrorNetwork\n * @returns {Promise<NativeClient>}\n */\n static async forMirrorNetwork(mirrorNetwork) {\n const client = new NativeClient({\n mirrorNetwork,\n });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n switch (network) {\n case \"previewnet\":\n this._network.setNetwork(WebNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._network.setNetwork(WebNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._network.setNetwork(WebNetwork.MAINNET);\n }\n } else {\n this._network.setNetwork(network);\n }\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {Promise<this>}\n */\n async updateNetwork() {\n if (this._isUpdatingNetwork) {\n return this;\n }\n\n this._isUpdatingNetwork = true;\n\n try {\n const addressBook = await new AddressBookQuery()\n .setFileId(\n FileId.getAddressBookFileIdFor(this.shard, this.realm),\n )\n .execute(this);\n\n /** @type {Record<string, AccountId>} */\n const network = {};\n for (const nodeAddress of addressBook.nodeAddresses) {\n for (const endpoint of nodeAddress.addresses) {\n if (nodeAddress.accountId != null) {\n network[endpoint.toString()] = nodeAddress.accountId;\n }\n }\n }\n\n this.setNetwork(network);\n } catch (/** @type {unknown} */ error) {\n if (this._logger) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this._logger.trace(\n `failed to update client address book: ${errorMessage}`,\n );\n }\n } finally {\n this._isUpdatingNetwork = false;\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string) => NativeChannel}\n */\n _createNetworkChannel() {\n return (address) => new NativeChannel(address);\n }\n\n /**\n * @override\n * @returns {(address: string) => *}\n */\n _createMirrorNetworkChannel() {\n return () => {\n throw new Error(\"mirror support is not supported in native\");\n };\n }\n}\n"],"names":["NativeClient","Client","constructor","props","super","network","this","setNetwork","WebNetwork","MAINNET","setLedgerId","LedgerId","setMirrorNetwork","MirrorNetwork","TESTNET","PREVIEWNET","Error","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","fromConfig","data","JSON","parse","forNetwork","forName","forMainnet","forTestnet","forPreviewnet","forMainnetAsync","updateNetwork","forTestnetAsync","forPreviewnetAsync","forNameAsync","client","forMirrorNetwork","mirrorNetwork","_network","_mirrorNetwork","LOCAL_NODE","_isUpdatingNetwork","addressBook","AddressBookQuery","setFileId","FileId","getAddressBookFileIdFor","execute","nodeAddress","nodeAddresses","endpoint","addresses","accountId","toString","error","_logger","errorMessage","message","String","trace","_createNetworkChannel","address","NativeChannel","_createMirrorNetworkChannel"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import t from"../account/AccountId.js";import e from"../Node.js";import{PREVIEWNET_ADDRESS_BOOK as s,TESTNET_ADDRESS_BOOK as r,MAINNET_ADDRESS_BOOK as o}from"../address_book/AddressBooks.js";import n from"./ManagedNetwork.js";class i extends n{constructor(t){super(t),this._maxNodesPerTransaction=-1,this._addressBook=null,this._transportSecurity=!1}setNetwork(e){this._setNetwork(new Map(Object.entries(e).map((([e,s])=>[e,"string"==typeof s?t.fromString(s):s]))))}setNetworkFromAddressBook(t){const e={},s=this.isTransportSecurity()?50212:50211;for(const r of t.nodeAddresses)for(const t of r.addresses)t.port===s&&null!=r.accountId&&(e[t.toString()]=r.accountId);return this.setNetwork(e),this}get network(){var t={};for(const e of this._nodes)t[e.address.toString()]=e.accountId;return t}setNetworkName(t){switch(super.setLedgerId(t),t){case"mainnet":this._addressBook=o;break;case"testnet":this._addressBook=r;break;case"previewnet":this._addressBook=s}if(null!=this._addressBook)for(const t of this._nodes)for(const e of this._addressBook.nodeAddresses)null!=e.accountId&&e.accountId.toString()===t.accountId.toString()&&t.setNodeAddress(e);return this}get networkName(){return null!=this._ledgerId?this._ledgerId.toString():null}_createNodeFromNetworkEntry(s){const r="string"==typeof s[1]?t.fromString(s[1]):s[1];return new e({newNode:{address:s[0],accountId:r,channelInitFunction:this._createNetworkChannel}}).setMinBackoff(this._minBackoff)}_getNodesToRemove(t){const e=[];for(let s=this._nodes.length-1;s>=0;s--){const r=this._nodes[s],o=t.get(r.address.toString());null!=o&&o.toString()===r.accountId.toString()||e.push(s)}return e}_checkNetworkContainsEntry(t){for(const e of this._nodes)if(e.address.toString()===t[0])return!0;return!1}get maxNodesPerTransaction(){return this._maxNodesPerTransaction}setMaxNodesPerTransaction(t){return this._maxNodesPerTransaction=t,this}get maxNodeAttempts(){return this._maxNodeAttempts}setMaxNodeAttempts(t){return this._maxNodeAttempts=t,this}isTransportSecurity(){return this._transportSecurity}setTransportSecurity(t){if(this._transportSecurity==t)return this;this._network.clear();for(let e=0;e<this._nodes.length;e++){let s=this._nodes[e];s.close(),s=t?s.toSecure().setCert(null!=this._ledgerId?this._ledgerId.toString():""):s.toInsecure(),this._nodes[e]=s;const r=null!=this._network.get(s.getKey())?this._network.get(s.getKey()):[];r.push(s),this._network.set(s.getKey(),r)}return this._healthyNodes=[...this._nodes],this._transportSecurity=t,this}getNumberOfNodesForTransaction(){return this._maxNodesPerTransaction>0?this._maxNodesPerTransaction:this._nodes.length<=9?this._nodes.length:Math.floor((this._nodes.length+3-1)/3)}getNodeAccountIdsForExecute(){return this._getNumberOfMostHealthyNodes(this.getNumberOfNodesForTransaction()).map((t=>t.accountId))}}export{i as default};
1
+ import t from"../account/AccountId.js";import e from"../Node.js";import{PREVIEWNET_ADDRESS_BOOK as s,TESTNET_ADDRESS_BOOK as r,MAINNET_ADDRESS_BOOK as o}from"../address_book/AddressBooks.js";import n from"./ManagedNetwork.js";class i extends n{constructor(t){super(t),this._maxNodesPerTransaction=-1,this._addressBook=null,this._transportSecurity=!1}setNetwork(e){this._setNetwork(new Map(Object.entries(e).map(([e,s])=>[e,"string"==typeof s?t.fromString(s):s])))}setNetworkFromAddressBook(t){const e={},s=this.isTransportSecurity()?50212:50211;for(const r of t.nodeAddresses)for(const t of r.addresses)t.port===s&&null!=r.accountId&&(e[t.toString()]=r.accountId);return this.setNetwork(e),this}get network(){var t={};for(const e of this._nodes)t[e.address.toString()]=e.accountId;return t}setNetworkName(t){switch(super.setLedgerId(t),t){case"mainnet":this._addressBook=o;break;case"testnet":this._addressBook=r;break;case"previewnet":this._addressBook=s}if(null!=this._addressBook)for(const t of this._nodes)for(const e of this._addressBook.nodeAddresses)null!=e.accountId&&e.accountId.toString()===t.accountId.toString()&&t.setNodeAddress(e);return this}get networkName(){return null!=this._ledgerId?this._ledgerId.toString():null}_createNodeFromNetworkEntry(s){const r="string"==typeof s[1]?t.fromString(s[1]):s[1];return new e({newNode:{address:s[0],accountId:r,channelInitFunction:this._createNetworkChannel}}).setMinBackoff(this._minBackoff)}_getNodesToRemove(t){const e=[];for(let s=this._nodes.length-1;s>=0;s--){const r=this._nodes[s],o=t.get(r.address.toString());null!=o&&o.toString()===r.accountId.toString()||e.push(s)}return e}_checkNetworkContainsEntry(t){for(const e of this._nodes)if(e.address.toString()===t[0])return!0;return!1}get maxNodesPerTransaction(){return this._maxNodesPerTransaction}setMaxNodesPerTransaction(t){return this._maxNodesPerTransaction=t,this}get maxNodeAttempts(){return this._maxNodeAttempts}setMaxNodeAttempts(t){return this._maxNodeAttempts=t,this}isTransportSecurity(){return this._transportSecurity}setTransportSecurity(t){if(this._transportSecurity==t)return this;this._network.clear();for(let e=0;e<this._nodes.length;e++){let s=this._nodes[e];s.close(),s=t?s.toSecure().setCert(null!=this._ledgerId?this._ledgerId.toString():""):s.toInsecure(),this._nodes[e]=s;const r=null!=this._network.get(s.getKey())?this._network.get(s.getKey()):[];r.push(s),this._network.set(s.getKey(),r)}return this._healthyNodes=[...this._nodes],this._transportSecurity=t,this}getNumberOfNodesForTransaction(){return this._maxNodesPerTransaction>0?this._maxNodesPerTransaction:this._nodes.length<=9?this._nodes.length:Math.floor((this._nodes.length+3-1)/3)}getNodeAccountIdsForExecute(){return this._getNumberOfMostHealthyNodes(this.getNumberOfNodesForTransaction()).map(t=>t.accountId)}}export{i as default};
2
2
  //# sourceMappingURL=Network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Network.js","sources":["../../src/client/Network.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport AccountId from \"../account/AccountId.js\";\nimport Node from \"../Node.js\";\nimport {\n PREVIEWNET_ADDRESS_BOOK,\n TESTNET_ADDRESS_BOOK,\n MAINNET_ADDRESS_BOOK,\n} from \"../address_book/AddressBooks.js\";\nimport ManagedNetwork from \"./ManagedNetwork.js\";\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../address_book/NodeAddressBook.js\").default} NodeAddressBook\n */\n\n/**\n * @augments {ManagedNetwork<Channel, Node, AccountId>}\n */\nexport default class Network extends ManagedNetwork {\n /**\n * @param {(address: string) => Channel} createNetworkChannel\n */\n constructor(createNetworkChannel) {\n super(createNetworkChannel);\n\n this._maxNodesPerTransaction = -1;\n\n /** @type {NodeAddressBook | null} */\n this._addressBook = null;\n\n /** @type {boolean} */\n this._transportSecurity = false;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)}} network\n */\n setNetwork(network) {\n this._setNetwork(\n // eslint-disable-next-line ie11/no-collection-args\n new Map(\n // eslint-disable-next-line ie11/no-collection-args\n Object.entries(network).map(([key, value]) => {\n return [\n key,\n typeof value === \"string\"\n ? AccountId.fromString(value)\n : value,\n ];\n }),\n ),\n );\n }\n\n /**\n * @param {NodeAddressBook} addressBook\n * @returns {this}\n */\n setNetworkFromAddressBook(addressBook) {\n /** @type {Record<string, AccountId>} */\n const network = {};\n const port = this.isTransportSecurity() ? 50212 : 50211;\n\n for (const nodeAddress of addressBook.nodeAddresses) {\n for (const endpoint of nodeAddress.addresses) {\n // TODO: We hard code ports too much, should fix\n if (endpoint.port === port && nodeAddress.accountId != null) {\n network[endpoint.toString()] = nodeAddress.accountId;\n }\n }\n }\n\n this.setNetwork(network);\n return this;\n }\n\n /**\n * @returns {{[key: string]: (string | AccountId)}}\n */\n get network() {\n /**\n * @type {{[key: string]: (string | AccountId)}}\n */\n var n = {};\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const node of this._nodes) {\n n[node.address.toString()] = node.accountId;\n }\n\n return n;\n }\n\n /**\n * @param {string} networkName\n * @returns {this}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setNetworkName(networkName) {\n super.setLedgerId(networkName);\n\n switch (networkName) {\n case \"mainnet\":\n this._addressBook = MAINNET_ADDRESS_BOOK;\n break;\n case \"testnet\":\n this._addressBook = TESTNET_ADDRESS_BOOK;\n break;\n case \"previewnet\":\n this._addressBook = PREVIEWNET_ADDRESS_BOOK;\n break;\n }\n\n if (this._addressBook != null) {\n for (const node of this._nodes) {\n for (const address of this._addressBook.nodeAddresses) {\n if (\n address.accountId != null &&\n address.accountId.toString() ===\n node.accountId.toString()\n ) {\n node.setNodeAddress(address);\n }\n }\n }\n }\n\n return this;\n }\n\n /**\n * @returns {string | null}\n */\n get networkName() {\n return this._ledgerId != null ? this._ledgerId.toString() : null;\n }\n\n /**\n * @abstract\n * @param {[string, (string | AccountId)]} entry\n * @returns {Node}\n */\n _createNodeFromNetworkEntry(entry) {\n const accountId =\n typeof entry[1] === \"string\"\n ? AccountId.fromString(entry[1])\n : entry[1];\n\n return new Node({\n newNode: {\n address: entry[0],\n accountId,\n channelInitFunction: this._createNetworkChannel,\n },\n }).setMinBackoff(this._minBackoff);\n }\n\n /**\n * @abstract\n * @param {Map<string, AccountId>} network\n * @returns {number[]}\n */\n _getNodesToRemove(network) {\n const indexes = [];\n\n for (let i = this._nodes.length - 1; i >= 0; i--) {\n const node = this._nodes[i];\n const accountId = network.get(node.address.toString());\n\n if (\n accountId == null ||\n accountId.toString() !== node.accountId.toString()\n ) {\n indexes.push(i);\n }\n }\n\n return indexes;\n }\n\n /**\n * @abstract\n * @param {[string, (string | AccountId)]} entry\n * @returns {boolean}\n */\n _checkNetworkContainsEntry(entry) {\n for (const node of this._nodes) {\n if (node.address.toString() === entry[0]) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * @returns {number}\n */\n get maxNodesPerTransaction() {\n return this._maxNodesPerTransaction;\n }\n\n /**\n * @param {number} maxNodesPerTransaction\n * @returns {this}\n */\n setMaxNodesPerTransaction(maxNodesPerTransaction) {\n this._maxNodesPerTransaction = maxNodesPerTransaction;\n return this;\n }\n\n /**\n * @returns {number}\n */\n get maxNodeAttempts() {\n return this._maxNodeAttempts;\n }\n\n /**\n * @param {number} maxNodeAttempts\n * @returns {this}\n */\n setMaxNodeAttempts(maxNodeAttempts) {\n this._maxNodeAttempts = maxNodeAttempts;\n return this;\n }\n\n /**\n * @returns {boolean}\n */\n isTransportSecurity() {\n return this._transportSecurity;\n }\n\n /**\n * @param {boolean} transportSecurity\n * @returns {this}\n */\n setTransportSecurity(transportSecurity) {\n if (this._transportSecurity == transportSecurity) {\n return this;\n }\n\n this._network.clear();\n\n for (let i = 0; i < this._nodes.length; i++) {\n let node = this._nodes[i];\n node.close();\n\n node = /** @type {Node} */ (\n transportSecurity\n ? node\n .toSecure()\n .setCert(\n this._ledgerId != null\n ? this._ledgerId.toString()\n : \"\",\n )\n : node.toInsecure()\n );\n this._nodes[i] = node;\n\n const nodes =\n this._network.get(node.getKey()) != null\n ? /** @type {Node[]} */ (this._network.get(node.getKey()))\n : [];\n nodes.push(node);\n this._network.set(node.getKey(), nodes);\n }\n\n // Overwrite healthy node list since new ports might make the node work again\n this._healthyNodes = [...this._nodes];\n\n this._transportSecurity = transportSecurity;\n return this;\n }\n\n /**\n * @internal\n * @returns {number}\n */\n getNumberOfNodesForTransaction() {\n if (this._maxNodesPerTransaction > 0) {\n return this._maxNodesPerTransaction;\n }\n // ultimately it does not matter if we round up or down\n // if we round up, we will eventually take one more healthy node for execution\n // and we would hit the 'nodes.length == count' check in _getNumberOfMostHealthyNodes() less often\n return this._nodes.length <= 9\n ? this._nodes.length\n : Math.floor((this._nodes.length + 3 - 1) / 3);\n }\n\n /**\n * @internal\n * @returns {AccountId[]}\n */\n getNodeAccountIdsForExecute() {\n return this._getNumberOfMostHealthyNodes(\n this.getNumberOfNodesForTransaction(),\n ).map((node) => node.accountId);\n }\n}\n"],"names":["Network","ManagedNetwork","constructor","createNetworkChannel","super","this","_maxNodesPerTransaction","_addressBook","_transportSecurity","setNetwork","network","_setNetwork","Map","Object","entries","map","key","value","AccountId","fromString","setNetworkFromAddressBook","addressBook","port","isTransportSecurity","nodeAddress","nodeAddresses","endpoint","addresses","accountId","toString","n","node","_nodes","address","setNetworkName","networkName","setLedgerId","MAINNET_ADDRESS_BOOK","TESTNET_ADDRESS_BOOK","PREVIEWNET_ADDRESS_BOOK","setNodeAddress","_ledgerId","_createNodeFromNetworkEntry","entry","Node","newNode","channelInitFunction","_createNetworkChannel","setMinBackoff","_minBackoff","_getNodesToRemove","indexes","i","length","get","push","_checkNetworkContainsEntry","maxNodesPerTransaction","setMaxNodesPerTransaction","maxNodeAttempts","_maxNodeAttempts","setMaxNodeAttempts","setTransportSecurity","transportSecurity","_network","clear","close","toSecure","setCert","toInsecure","nodes","getKey","set","_healthyNodes","getNumberOfNodesForTransaction","Math","floor","getNodeAccountIdsForExecute","_getNumberOfMostHealthyNodes"],"mappings":"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"}
1
+ {"version":3,"file":"Network.js","sources":["../../src/client/Network.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport AccountId from \"../account/AccountId.js\";\nimport Node from \"../Node.js\";\nimport {\n PREVIEWNET_ADDRESS_BOOK,\n TESTNET_ADDRESS_BOOK,\n MAINNET_ADDRESS_BOOK,\n} from \"../address_book/AddressBooks.js\";\nimport ManagedNetwork from \"./ManagedNetwork.js\";\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../address_book/NodeAddressBook.js\").default} NodeAddressBook\n */\n\n/**\n * @augments {ManagedNetwork<Channel, Node, AccountId>}\n */\nexport default class Network extends ManagedNetwork {\n /**\n * @param {(address: string) => Channel} createNetworkChannel\n */\n constructor(createNetworkChannel) {\n super(createNetworkChannel);\n\n this._maxNodesPerTransaction = -1;\n\n /** @type {NodeAddressBook | null} */\n this._addressBook = null;\n\n /** @type {boolean} */\n this._transportSecurity = false;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)}} network\n */\n setNetwork(network) {\n this._setNetwork(\n // eslint-disable-next-line ie11/no-collection-args\n new Map(\n // eslint-disable-next-line ie11/no-collection-args\n Object.entries(network).map(([key, value]) => {\n return [\n key,\n typeof value === \"string\"\n ? AccountId.fromString(value)\n : value,\n ];\n }),\n ),\n );\n }\n\n /**\n * @param {NodeAddressBook} addressBook\n * @returns {this}\n */\n setNetworkFromAddressBook(addressBook) {\n /** @type {Record<string, AccountId>} */\n const network = {};\n const port = this.isTransportSecurity() ? 50212 : 50211;\n\n for (const nodeAddress of addressBook.nodeAddresses) {\n for (const endpoint of nodeAddress.addresses) {\n // TODO: We hard code ports too much, should fix\n if (endpoint.port === port && nodeAddress.accountId != null) {\n network[endpoint.toString()] = nodeAddress.accountId;\n }\n }\n }\n\n this.setNetwork(network);\n return this;\n }\n\n /**\n * @returns {{[key: string]: (string | AccountId)}}\n */\n get network() {\n /**\n * @type {{[key: string]: (string | AccountId)}}\n */\n var n = {};\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n for (const node of this._nodes) {\n n[node.address.toString()] = node.accountId;\n }\n\n return n;\n }\n\n /**\n * @param {string} networkName\n * @returns {this}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n setNetworkName(networkName) {\n super.setLedgerId(networkName);\n\n switch (networkName) {\n case \"mainnet\":\n this._addressBook = MAINNET_ADDRESS_BOOK;\n break;\n case \"testnet\":\n this._addressBook = TESTNET_ADDRESS_BOOK;\n break;\n case \"previewnet\":\n this._addressBook = PREVIEWNET_ADDRESS_BOOK;\n break;\n }\n\n if (this._addressBook != null) {\n for (const node of this._nodes) {\n for (const address of this._addressBook.nodeAddresses) {\n if (\n address.accountId != null &&\n address.accountId.toString() ===\n node.accountId.toString()\n ) {\n node.setNodeAddress(address);\n }\n }\n }\n }\n\n return this;\n }\n\n /**\n * @returns {string | null}\n */\n get networkName() {\n return this._ledgerId != null ? this._ledgerId.toString() : null;\n }\n\n /**\n * @abstract\n * @param {[string, (string | AccountId)]} entry\n * @returns {Node}\n */\n _createNodeFromNetworkEntry(entry) {\n const accountId =\n typeof entry[1] === \"string\"\n ? AccountId.fromString(entry[1])\n : entry[1];\n\n return new Node({\n newNode: {\n address: entry[0],\n accountId,\n channelInitFunction: this._createNetworkChannel,\n },\n }).setMinBackoff(this._minBackoff);\n }\n\n /**\n * @abstract\n * @param {Map<string, AccountId>} network\n * @returns {number[]}\n */\n _getNodesToRemove(network) {\n const indexes = [];\n\n for (let i = this._nodes.length - 1; i >= 0; i--) {\n const node = this._nodes[i];\n const accountId = network.get(node.address.toString());\n\n if (\n accountId == null ||\n accountId.toString() !== node.accountId.toString()\n ) {\n indexes.push(i);\n }\n }\n\n return indexes;\n }\n\n /**\n * @abstract\n * @param {[string, (string | AccountId)]} entry\n * @returns {boolean}\n */\n _checkNetworkContainsEntry(entry) {\n for (const node of this._nodes) {\n if (node.address.toString() === entry[0]) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * @returns {number}\n */\n get maxNodesPerTransaction() {\n return this._maxNodesPerTransaction;\n }\n\n /**\n * @param {number} maxNodesPerTransaction\n * @returns {this}\n */\n setMaxNodesPerTransaction(maxNodesPerTransaction) {\n this._maxNodesPerTransaction = maxNodesPerTransaction;\n return this;\n }\n\n /**\n * @returns {number}\n */\n get maxNodeAttempts() {\n return this._maxNodeAttempts;\n }\n\n /**\n * @param {number} maxNodeAttempts\n * @returns {this}\n */\n setMaxNodeAttempts(maxNodeAttempts) {\n this._maxNodeAttempts = maxNodeAttempts;\n return this;\n }\n\n /**\n * @returns {boolean}\n */\n isTransportSecurity() {\n return this._transportSecurity;\n }\n\n /**\n * @param {boolean} transportSecurity\n * @returns {this}\n */\n setTransportSecurity(transportSecurity) {\n if (this._transportSecurity == transportSecurity) {\n return this;\n }\n\n this._network.clear();\n\n for (let i = 0; i < this._nodes.length; i++) {\n let node = this._nodes[i];\n node.close();\n\n node = /** @type {Node} */ (\n transportSecurity\n ? node\n .toSecure()\n .setCert(\n this._ledgerId != null\n ? this._ledgerId.toString()\n : \"\",\n )\n : node.toInsecure()\n );\n this._nodes[i] = node;\n\n const nodes =\n this._network.get(node.getKey()) != null\n ? /** @type {Node[]} */ (this._network.get(node.getKey()))\n : [];\n nodes.push(node);\n this._network.set(node.getKey(), nodes);\n }\n\n // Overwrite healthy node list since new ports might make the node work again\n this._healthyNodes = [...this._nodes];\n\n this._transportSecurity = transportSecurity;\n return this;\n }\n\n /**\n * @internal\n * @returns {number}\n */\n getNumberOfNodesForTransaction() {\n if (this._maxNodesPerTransaction > 0) {\n return this._maxNodesPerTransaction;\n }\n // ultimately it does not matter if we round up or down\n // if we round up, we will eventually take one more healthy node for execution\n // and we would hit the 'nodes.length == count' check in _getNumberOfMostHealthyNodes() less often\n return this._nodes.length <= 9\n ? this._nodes.length\n : Math.floor((this._nodes.length + 3 - 1) / 3);\n }\n\n /**\n * @internal\n * @returns {AccountId[]}\n */\n getNodeAccountIdsForExecute() {\n return this._getNumberOfMostHealthyNodes(\n this.getNumberOfNodesForTransaction(),\n ).map((node) => node.accountId);\n }\n}\n"],"names":["Network","ManagedNetwork","constructor","createNetworkChannel","super","this","_maxNodesPerTransaction","_addressBook","_transportSecurity","setNetwork","network","_setNetwork","Map","Object","entries","map","key","value","AccountId","fromString","setNetworkFromAddressBook","addressBook","port","isTransportSecurity","nodeAddress","nodeAddresses","endpoint","addresses","accountId","toString","n","node","_nodes","address","setNetworkName","networkName","setLedgerId","MAINNET_ADDRESS_BOOK","TESTNET_ADDRESS_BOOK","PREVIEWNET_ADDRESS_BOOK","setNodeAddress","_ledgerId","_createNodeFromNetworkEntry","entry","Node","newNode","channelInitFunction","_createNetworkChannel","setMinBackoff","_minBackoff","_getNodesToRemove","indexes","i","length","get","push","_checkNetworkContainsEntry","maxNodesPerTransaction","setMaxNodesPerTransaction","maxNodeAttempts","_maxNodeAttempts","setMaxNodeAttempts","setTransportSecurity","transportSecurity","_network","clear","close","toSecure","setCert","toInsecure","nodes","getKey","set","_healthyNodes","getNumberOfNodesForTransaction","Math","floor","getNodeAccountIdsForExecute","_getNumberOfMostHealthyNodes"],"mappings":"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"}
@@ -3,22 +3,20 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = exports.Network = void 0;
6
+ exports.default = void 0;
7
7
  var _fs = _interopRequireDefault(require("fs"));
8
8
  var _util = _interopRequireDefault(require("util"));
9
9
  var _Client = _interopRequireDefault(require("./Client.cjs"));
10
10
  var _NodeChannel = _interopRequireDefault(require("../channel/NodeChannel.cjs"));
11
11
  var _NodeMirrorChannel = _interopRequireDefault(require("../channel/NodeMirrorChannel.cjs"));
12
12
  var _LedgerId = _interopRequireDefault(require("../LedgerId.cjs"));
13
- var _AccountId = _interopRequireDefault(require("../account/AccountId.cjs"));
14
13
  var _NodeAddressBook = _interopRequireDefault(require("../address_book/NodeAddressBook.cjs"));
15
14
  var mainnet = _interopRequireWildcard(require("./addressbooks/mainnet.cjs"));
16
15
  var testnet = _interopRequireWildcard(require("./addressbooks/testnet.cjs"));
17
16
  var previewnet = _interopRequireWildcard(require("./addressbooks/previewnet.cjs"));
18
17
  var hex = _interopRequireWildcard(require("../encoding/hex.cjs"));
19
18
  var _ClientConstants = require("../constants/ClientConstants.cjs");
20
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
22
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
21
  // SPDX-License-Identifier: Apache-2.0
24
22
 
@@ -26,14 +24,9 @@ const readFileAsync = _util.default.promisify(_fs.default.readFile);
26
24
 
27
25
  /**
28
26
  * @typedef {import("./Client.js").ClientConfiguration} ClientConfiguration
27
+ * @typedef {import("../account/AccountId.js").default} AccountId
29
28
  */
30
29
 
31
- const Network = exports.Network = {
32
- LOCAL_NODE: {
33
- "127.0.0.1:50211": new _AccountId.default(3)
34
- }
35
- };
36
-
37
30
  /**
38
31
  * @augments {Client<NodeChannel, NodeMirrorChannel>}
39
32
  * Client for interacting with the Hedera network using Node.js.
@@ -318,7 +311,7 @@ class NodeClient extends _Client.default {
318
311
  this.setLedgerId(_LedgerId.default.PREVIEWNET);
319
312
  break;
320
313
  case "local-node":
321
- this.setNetwork(Network.LOCAL_NODE);
314
+ this.setNetwork(_ClientConstants.LocalNodeNetwork);
322
315
  this.setMirrorNetwork(_ClientConstants.MirrorNetwork.LOCAL_NODE);
323
316
  this.setLedgerId(_LedgerId.default.LOCAL_NODE);
324
317
  break;
@@ -1,8 +1,7 @@
1
- export namespace Network {
2
- let LOCAL_NODE: {
3
- "127.0.0.1:50211": AccountId;
4
- };
5
- }
1
+ /**
2
+ * @typedef {import("./Client.js").ClientConfiguration} ClientConfiguration
3
+ * @typedef {import("../account/AccountId.js").default} AccountId
4
+ */
6
5
  /**
7
6
  * @augments {Client<NodeChannel, NodeMirrorChannel>}
8
7
  * Client for interacting with the Hedera network using Node.js.
@@ -165,7 +164,7 @@ export default class NodeClient extends Client<NodeChannel, NodeMirrorChannel> {
165
164
  override _createNetworkChannel(): (address: string, cert?: string) => NodeChannel;
166
165
  }
167
166
  export type ClientConfiguration = import("./Client.js").ClientConfiguration;
168
- import AccountId from "../account/AccountId.js";
167
+ export type AccountId = import("../account/AccountId.js").default;
169
168
  import NodeChannel from "../channel/NodeChannel.js";
170
169
  import NodeMirrorChannel from "../channel/NodeMirrorChannel.js";
171
170
  import Client from "./Client.js";
@@ -1,2 +1,2 @@
1
- import e from"fs";import r from"util";import t from"./Client.js";import o from"../channel/NodeChannel.js";import s from"../channel/NodeMirrorChannel.js";import n from"../LedgerId.js";import i from"../account/AccountId.js";import a from"../address_book/NodeAddressBook.js";import{addressBook as w}from"./addressbooks/mainnet.js";import{addressBook as k}from"./addressbooks/testnet.js";import{addressBook as N}from"./addressbooks/previewnet.js";import{decode as m}from"../encoding/hex.js";import{MirrorNetwork as c}from"../constants/ClientConstants.js";const d=r.promisify(e.readFile),h={LOCAL_NODE:{"127.0.0.1:50211":new i(3)}};class f extends t{constructor(e){if(super(e),this._maxExecutionTime=1e4,null!=e){if("string"==typeof e.network)this._setNetworkFromName(e.network);else if(null!=e.network){t._validateNetworkConsistency(e.network);const{shard:r,realm:o}=t._extractShardRealm(e.network);this._shard=r,this._realm=o,this.setNetwork(e.network)}if("string"==typeof e.mirrorNetwork)switch(e.mirrorNetwork){case"mainnet":this.setMirrorNetwork(c.MAINNET);break;case"testnet":this.setMirrorNetwork(c.TESTNET);break;case"previewnet":this.setMirrorNetwork(c.PREVIEWNET);break;default:this.setMirrorNetwork([e.mirrorNetwork])}else null!=e.mirrorNetwork&&this.setMirrorNetwork(e.mirrorNetwork)}}static fromConfig(e){return new f("string"==typeof e?JSON.parse(e):e)}static async fromConfigFile(e){return f.fromConfig(await d(e,"utf8"))}static forNetwork(e,r){return new f({network:e,...r})}static forName(e,r={}){return new f({network:e,...r})}static forMainnet(e={}){return new f({network:"mainnet",...e})}static forTestnet(e={}){return new f({network:"testnet",...e})}static async forMirrorNetwork(e,r,t){const o=new f({mirrorNetwork:e,shard:r,realm:t});return await o.updateNetwork(),o}static forPreviewnet(e={}){return new f({network:"previewnet",...e})}static forLocalNode(e={scheduleNetworkUpdate:!1}){return new f({network:"local-node",...e})}static async forMainnetAsync(e={}){return new f({network:"mainnet",...e}).updateNetwork()}static async forTestnetAsync(e={}){return new f({network:"testnet",...e}).updateNetwork()}static async forPreviewnetAsync(e={}){return new f({network:"previewnet",...e}).updateNetwork()}static async forNameAsync(e,r={}){const t=new f({network:e,...r});return"local-node"!==e&&await t.updateNetwork(),t}setNetwork(e){"string"==typeof e?this._setNetworkFromName(e):this._network.setNetwork(e)}setMaxExecutionTime(e){return this._maxExecutionTime=e,this}_setNetworkFromName(e){switch(e){case"mainnet":this.setNetworkFromAddressBook(a.fromBytes(m(w))),this.setMirrorNetwork(c.MAINNET),this.setLedgerId(n.MAINNET);break;case"testnet":this.setNetworkFromAddressBook(a.fromBytes(m(k))),this.setMirrorNetwork(c.TESTNET),this.setLedgerId(n.TESTNET);break;case"previewnet":this.setNetworkFromAddressBook(a.fromBytes(m(N))),this.setMirrorNetwork(c.PREVIEWNET),this.setLedgerId(n.PREVIEWNET);break;case"local-node":this.setNetwork(h.LOCAL_NODE),this.setMirrorNetwork(c.LOCAL_NODE),this.setLedgerId(n.LOCAL_NODE);break;default:throw new Error(`unknown network: ${e}`)}return this}setMirrorNetwork(e){if("string"==typeof e)switch(e){case"local-node":this._mirrorNetwork.setNetwork(c.LOCAL_NODE);break;case"previewnet":this._mirrorNetwork.setNetwork(c.PREVIEWNET);break;case"testnet":this._mirrorNetwork.setNetwork(c.TESTNET);break;case"mainnet":this._mirrorNetwork.setNetwork(c.MAINNET);break;default:this._mirrorNetwork.setNetwork([e])}else this._mirrorNetwork.setNetwork(e);return this}_createNetworkChannel(){return e=>new o(e,this._maxExecutionTime)}_createMirrorNetworkChannel(){return e=>new s(e)}}export{h as Network,f as default};
1
+ import e from"fs";import r from"util";import t from"./Client.js";import o from"../channel/NodeChannel.js";import s from"../channel/NodeMirrorChannel.js";import n from"../LedgerId.js";import i from"../address_book/NodeAddressBook.js";import{addressBook as a}from"./addressbooks/mainnet.js";import{addressBook as w}from"./addressbooks/testnet.js";import{addressBook as k}from"./addressbooks/previewnet.js";import{decode as N}from"../encoding/hex.js";import{MirrorNetwork as m,LocalNodeNetwork as c}from"../constants/ClientConstants.js";const d=r.promisify(e.readFile);class h extends t{constructor(e){if(super(e),this._maxExecutionTime=1e4,null!=e){if("string"==typeof e.network)this._setNetworkFromName(e.network);else if(null!=e.network){t._validateNetworkConsistency(e.network);const{shard:r,realm:o}=t._extractShardRealm(e.network);this._shard=r,this._realm=o,this.setNetwork(e.network)}if("string"==typeof e.mirrorNetwork)switch(e.mirrorNetwork){case"mainnet":this.setMirrorNetwork(m.MAINNET);break;case"testnet":this.setMirrorNetwork(m.TESTNET);break;case"previewnet":this.setMirrorNetwork(m.PREVIEWNET);break;default:this.setMirrorNetwork([e.mirrorNetwork])}else null!=e.mirrorNetwork&&this.setMirrorNetwork(e.mirrorNetwork)}}static fromConfig(e){return new h("string"==typeof e?JSON.parse(e):e)}static async fromConfigFile(e){return h.fromConfig(await d(e,"utf8"))}static forNetwork(e,r){return new h({network:e,...r})}static forName(e,r={}){return new h({network:e,...r})}static forMainnet(e={}){return new h({network:"mainnet",...e})}static forTestnet(e={}){return new h({network:"testnet",...e})}static async forMirrorNetwork(e,r,t){const o=new h({mirrorNetwork:e,shard:r,realm:t});return await o.updateNetwork(),o}static forPreviewnet(e={}){return new h({network:"previewnet",...e})}static forLocalNode(e={scheduleNetworkUpdate:!1}){return new h({network:"local-node",...e})}static async forMainnetAsync(e={}){return new h({network:"mainnet",...e}).updateNetwork()}static async forTestnetAsync(e={}){return new h({network:"testnet",...e}).updateNetwork()}static async forPreviewnetAsync(e={}){return new h({network:"previewnet",...e}).updateNetwork()}static async forNameAsync(e,r={}){const t=new h({network:e,...r});return"local-node"!==e&&await t.updateNetwork(),t}setNetwork(e){"string"==typeof e?this._setNetworkFromName(e):this._network.setNetwork(e)}setMaxExecutionTime(e){return this._maxExecutionTime=e,this}_setNetworkFromName(e){switch(e){case"mainnet":this.setNetworkFromAddressBook(i.fromBytes(N(a))),this.setMirrorNetwork(m.MAINNET),this.setLedgerId(n.MAINNET);break;case"testnet":this.setNetworkFromAddressBook(i.fromBytes(N(w))),this.setMirrorNetwork(m.TESTNET),this.setLedgerId(n.TESTNET);break;case"previewnet":this.setNetworkFromAddressBook(i.fromBytes(N(k))),this.setMirrorNetwork(m.PREVIEWNET),this.setLedgerId(n.PREVIEWNET);break;case"local-node":this.setNetwork(c),this.setMirrorNetwork(m.LOCAL_NODE),this.setLedgerId(n.LOCAL_NODE);break;default:throw new Error(`unknown network: ${e}`)}return this}setMirrorNetwork(e){if("string"==typeof e)switch(e){case"local-node":this._mirrorNetwork.setNetwork(m.LOCAL_NODE);break;case"previewnet":this._mirrorNetwork.setNetwork(m.PREVIEWNET);break;case"testnet":this._mirrorNetwork.setNetwork(m.TESTNET);break;case"mainnet":this._mirrorNetwork.setNetwork(m.MAINNET);break;default:this._mirrorNetwork.setNetwork([e])}else this._mirrorNetwork.setNetwork(e);return this}_createNetworkChannel(){return e=>new o(e,this._maxExecutionTime)}_createMirrorNetworkChannel(){return e=>new s(e)}}export{h as default};
2
2
  //# sourceMappingURL=NodeClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeClient.js","sources":["../../src/client/NodeClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport fs from \"fs\";\nimport util from \"util\";\nimport Client from \"./Client.js\";\nimport NodeChannel from \"../channel/NodeChannel.js\";\nimport NodeMirrorChannel from \"../channel/NodeMirrorChannel.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport AccountId from \"../account/AccountId.js\";\nimport NodeAddressBook from \"../address_book/NodeAddressBook.js\";\nimport * as mainnet from \"./addressbooks/mainnet.js\";\nimport * as testnet from \"./addressbooks/testnet.js\";\nimport * as previewnet from \"./addressbooks/previewnet.js\";\nimport * as hex from \"../encoding/hex.js\";\nimport { MirrorNetwork } from \"../constants/ClientConstants.js\";\n\nconst readFileAsync = util.promisify(fs.readFile);\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n */\n\nexport const Network = {\n LOCAL_NODE: {\n \"127.0.0.1:50211\": new AccountId(3),\n },\n};\n\n/**\n * @augments {Client<NodeChannel, NodeMirrorChannel>}\n * Client for interacting with the Hedera network using Node.js.\n * Extends the base Client class with Node.js specific implementations.\n */\nexport default class NodeClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n\n /** @private */\n this._maxExecutionTime = 10000;\n\n if (props != null) {\n if (typeof props.network === \"string\") {\n this._setNetworkFromName(props.network);\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n\n if (typeof props.mirrorNetwork === \"string\") {\n switch (props.mirrorNetwork) {\n case \"mainnet\":\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n break;\n\n case \"testnet\":\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n break;\n\n default:\n this.setMirrorNetwork([props.mirrorNetwork]);\n break;\n }\n } else if (props.mirrorNetwork != null) {\n this.setMirrorNetwork(props.mirrorNetwork);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {NodeClient}\n */\n static fromConfig(data) {\n return new NodeClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * @param {string} filename\n * @returns {Promise<NodeClient>}\n */\n static async fromConfigFile(filename) {\n return NodeClient.fromConfig(await readFileAsync(filename, \"utf8\"));\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)}} network\n * @param {ClientConfiguration} [props]\n * @returns {NodeClient}\n */\n static forNetwork(network, props) {\n return new NodeClient({\n network,\n ...props,\n });\n }\n\n /**\n * @param {string} network\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forName(network, props = {}) {\n return new NodeClient({ network, ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forMainnet(props = {}) {\n return new NodeClient({ network: \"mainnet\", ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forTestnet(props = {}) {\n return new NodeClient({ network: \"testnet\", ...props });\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @param {number} [shard]\n * @param {number} [realm]\n * @returns {Promise<NodeClient>}\n */\n static async forMirrorNetwork(mirrorNetwork, shard, realm) {\n const client = new NodeClient({\n mirrorNetwork,\n shard,\n realm,\n });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forPreviewnet(props = {}) {\n return new NodeClient({ network: \"previewnet\", ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for local-node access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forLocalNode(props = { scheduleNetworkUpdate: false }) {\n return new NodeClient({\n network: \"local-node\",\n ...props,\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forMainnetAsync(props = {}) {\n return new NodeClient({ network: \"mainnet\", ...props }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forTestnetAsync(props = {}) {\n return new NodeClient({ network: \"testnet\", ...props }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forPreviewnetAsync(props = {}) {\n return new NodeClient({\n network: \"previewnet\",\n ...props,\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forNameAsync(network, props = {}) {\n const client = new NodeClient({ network, ...props });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n this._setNetworkFromName(network);\n } else {\n this._network.setNetwork(network);\n }\n }\n\n /**\n * Available only for NodeClient\n *\n * @param {number} maxExecutionTime\n * @returns {this}\n */\n setMaxExecutionTime(maxExecutionTime) {\n this._maxExecutionTime = maxExecutionTime;\n return this;\n }\n\n /**\n * @private\n * @param {string} name\n * @returns {this}\n */\n _setNetworkFromName(name) {\n switch (name) {\n case \"mainnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(hex.decode(mainnet.addressBook)),\n );\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(hex.decode(testnet.addressBook)),\n );\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(\n hex.decode(previewnet.addressBook),\n ),\n );\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n break;\n\n case \"local-node\":\n this.setNetwork(Network.LOCAL_NODE);\n this.setMirrorNetwork(MirrorNetwork.LOCAL_NODE);\n this.setLedgerId(LedgerId.LOCAL_NODE);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${name}`,\n );\n }\n return this;\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string, cert?: string) => NodeChannel}\n */\n _createNetworkChannel() {\n return (address) => new NodeChannel(address, this._maxExecutionTime);\n }\n\n /**\n * @override\n * @returns {(address: string) => NodeMirrorChannel}\n */\n _createMirrorNetworkChannel() {\n return (address) => new NodeMirrorChannel(address);\n }\n}\n"],"names":["readFileAsync","util","promisify","fs","readFile","Network","LOCAL_NODE","AccountId","NodeClient","Client","constructor","props","super","this","_maxExecutionTime","network","_setNetworkFromName","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","setNetwork","mirrorNetwork","setMirrorNetwork","MirrorNetwork","MAINNET","TESTNET","PREVIEWNET","fromConfig","data","JSON","parse","fromConfigFile","filename","forNetwork","forName","forMainnet","forTestnet","forMirrorNetwork","client","updateNetwork","forPreviewnet","forLocalNode","scheduleNetworkUpdate","forMainnetAsync","forTestnetAsync","forPreviewnetAsync","forNameAsync","_network","setMaxExecutionTime","maxExecutionTime","name","setNetworkFromAddressBook","NodeAddressBook","fromBytes","hex.decode","mainnet.addressBook","setLedgerId","LedgerId","testnet.addressBook","previewnet.addressBook","Error","_mirrorNetwork","_createNetworkChannel","address","NodeChannel","_createMirrorNetworkChannel","NodeMirrorChannel"],"mappings":"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"}
1
+ {"version":3,"file":"NodeClient.js","sources":["../../src/client/NodeClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport fs from \"fs\";\nimport util from \"util\";\nimport Client from \"./Client.js\";\nimport NodeChannel from \"../channel/NodeChannel.js\";\nimport NodeMirrorChannel from \"../channel/NodeMirrorChannel.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport NodeAddressBook from \"../address_book/NodeAddressBook.js\";\nimport * as mainnet from \"./addressbooks/mainnet.js\";\nimport * as testnet from \"./addressbooks/testnet.js\";\nimport * as previewnet from \"./addressbooks/previewnet.js\";\nimport * as hex from \"../encoding/hex.js\";\nimport {\n LocalNodeNetwork,\n MirrorNetwork,\n} from \"../constants/ClientConstants.js\";\n\nconst readFileAsync = util.promisify(fs.readFile);\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * @augments {Client<NodeChannel, NodeMirrorChannel>}\n * Client for interacting with the Hedera network using Node.js.\n * Extends the base Client class with Node.js specific implementations.\n */\nexport default class NodeClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n\n /** @private */\n this._maxExecutionTime = 10000;\n\n if (props != null) {\n if (typeof props.network === \"string\") {\n this._setNetworkFromName(props.network);\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n\n if (typeof props.mirrorNetwork === \"string\") {\n switch (props.mirrorNetwork) {\n case \"mainnet\":\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n break;\n\n case \"testnet\":\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n break;\n\n default:\n this.setMirrorNetwork([props.mirrorNetwork]);\n break;\n }\n } else if (props.mirrorNetwork != null) {\n this.setMirrorNetwork(props.mirrorNetwork);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {NodeClient}\n */\n static fromConfig(data) {\n return new NodeClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * @param {string} filename\n * @returns {Promise<NodeClient>}\n */\n static async fromConfigFile(filename) {\n return NodeClient.fromConfig(await readFileAsync(filename, \"utf8\"));\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)}} network\n * @param {ClientConfiguration} [props]\n * @returns {NodeClient}\n */\n static forNetwork(network, props) {\n return new NodeClient({\n network,\n ...props,\n });\n }\n\n /**\n * @param {string} network\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forName(network, props = {}) {\n return new NodeClient({ network, ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forMainnet(props = {}) {\n return new NodeClient({ network: \"mainnet\", ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forTestnet(props = {}) {\n return new NodeClient({ network: \"testnet\", ...props });\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @param {number} [shard]\n * @param {number} [realm]\n * @returns {Promise<NodeClient>}\n */\n static async forMirrorNetwork(mirrorNetwork, shard, realm) {\n const client = new NodeClient({\n mirrorNetwork,\n shard,\n realm,\n });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forPreviewnet(props = {}) {\n return new NodeClient({ network: \"previewnet\", ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for local-node access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forLocalNode(props = { scheduleNetworkUpdate: false }) {\n return new NodeClient({\n network: \"local-node\",\n ...props,\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forMainnetAsync(props = {}) {\n return new NodeClient({ network: \"mainnet\", ...props }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forTestnetAsync(props = {}) {\n return new NodeClient({ network: \"testnet\", ...props }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forPreviewnetAsync(props = {}) {\n return new NodeClient({\n network: \"previewnet\",\n ...props,\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forNameAsync(network, props = {}) {\n const client = new NodeClient({ network, ...props });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n this._setNetworkFromName(network);\n } else {\n this._network.setNetwork(network);\n }\n }\n\n /**\n * Available only for NodeClient\n *\n * @param {number} maxExecutionTime\n * @returns {this}\n */\n setMaxExecutionTime(maxExecutionTime) {\n this._maxExecutionTime = maxExecutionTime;\n return this;\n }\n\n /**\n * @private\n * @param {string} name\n * @returns {this}\n */\n _setNetworkFromName(name) {\n switch (name) {\n case \"mainnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(hex.decode(mainnet.addressBook)),\n );\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(hex.decode(testnet.addressBook)),\n );\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(\n hex.decode(previewnet.addressBook),\n ),\n );\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n break;\n\n case \"local-node\":\n this.setNetwork(LocalNodeNetwork);\n this.setMirrorNetwork(MirrorNetwork.LOCAL_NODE);\n this.setLedgerId(LedgerId.LOCAL_NODE);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${name}`,\n );\n }\n return this;\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string, cert?: string) => NodeChannel}\n */\n _createNetworkChannel() {\n return (address) => new NodeChannel(address, this._maxExecutionTime);\n }\n\n /**\n * @override\n * @returns {(address: string) => NodeMirrorChannel}\n */\n _createMirrorNetworkChannel() {\n return (address) => new NodeMirrorChannel(address);\n }\n}\n"],"names":["readFileAsync","util","promisify","fs","readFile","NodeClient","Client","constructor","props","super","this","_maxExecutionTime","network","_setNetworkFromName","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","setNetwork","mirrorNetwork","setMirrorNetwork","MirrorNetwork","MAINNET","TESTNET","PREVIEWNET","fromConfig","data","JSON","parse","fromConfigFile","filename","forNetwork","forName","forMainnet","forTestnet","forMirrorNetwork","client","updateNetwork","forPreviewnet","forLocalNode","scheduleNetworkUpdate","forMainnetAsync","forTestnetAsync","forPreviewnetAsync","forNameAsync","_network","setMaxExecutionTime","maxExecutionTime","name","setNetworkFromAddressBook","NodeAddressBook","fromBytes","hex.decode","mainnet.addressBook","setLedgerId","LedgerId","testnet.addressBook","previewnet.addressBook","LocalNodeNetwork","LOCAL_NODE","Error","_mirrorNetwork","_createNetworkChannel","address","NodeChannel","_createMirrorNetworkChannel","NodeMirrorChannel"],"mappings":"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"}
@@ -37,18 +37,23 @@ class WebClient extends _Client.default {
37
37
  switch (props.network) {
38
38
  case "mainnet":
39
39
  this.setNetwork(_ClientConstants.WebNetwork.MAINNET);
40
+ this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.MAINNET);
40
41
  this.setLedgerId(_LedgerId.default.MAINNET);
41
- this.setMirrorNetwork(_ClientConstants.MirrorNetwork.MAINNET);
42
42
  break;
43
43
  case "testnet":
44
44
  this.setNetwork(_ClientConstants.WebNetwork.TESTNET);
45
45
  this.setLedgerId(_LedgerId.default.TESTNET);
46
- this.setMirrorNetwork(_ClientConstants.MirrorNetwork.TESTNET);
46
+ this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.TESTNET);
47
47
  break;
48
48
  case "previewnet":
49
49
  this.setNetwork(_ClientConstants.WebNetwork.PREVIEWNET);
50
50
  this.setLedgerId(_LedgerId.default.PREVIEWNET);
51
- this.setMirrorNetwork(_ClientConstants.MirrorNetwork.PREVIEWNET);
51
+ this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.PREVIEWNET);
52
+ break;
53
+ case "local-node":
54
+ this.setNetwork(_ClientConstants.WebNetwork.LOCAL_NODE);
55
+ this.setLedgerId(_LedgerId.default.LOCAL_NODE);
56
+ this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.LOCAL_NODE);
52
57
  break;
53
58
  default:
54
59
  throw new Error(
@@ -142,6 +147,22 @@ class WebClient extends _Client.default {
142
147
  });
143
148
  }
144
149
 
150
+ /**
151
+ * Construct a Hedera client pre-configured for local-node access.
152
+ *
153
+ * @param {object} [props]
154
+ * @param {boolean} [props.scheduleNetworkUpdate]
155
+ * @returns {WebClient}
156
+ */
157
+ static forLocalNode(props = {
158
+ scheduleNetworkUpdate: false
159
+ }) {
160
+ return new WebClient({
161
+ network: "local-node",
162
+ ...props
163
+ });
164
+ }
165
+
145
166
  /**
146
167
  * Construct a Hedera client pre-configured for Mainnet access with network update.
147
168
  *
@@ -222,6 +243,10 @@ class WebClient extends _Client.default {
222
243
  break;
223
244
  case "mainnet":
224
245
  this._network.setNetwork(_ClientConstants.WebNetwork.MAINNET);
246
+ break;
247
+ case "local-node":
248
+ this._network.setNetwork(_ClientConstants.WebNetwork.LOCAL_NODE);
249
+ break;
225
250
  }
226
251
  } else {
227
252
  this._network.setNetwork(network);
@@ -236,16 +261,16 @@ class WebClient extends _Client.default {
236
261
  if (typeof mirrorNetwork === "string") {
237
262
  switch (mirrorNetwork) {
238
263
  case "local-node":
239
- this._mirrorNetwork.setNetwork(_ClientConstants.MirrorNetwork.LOCAL_NODE);
264
+ this._mirrorNetwork.setNetwork(_ClientConstants.WebMirrorNetwork.LOCAL_NODE);
240
265
  break;
241
266
  case "previewnet":
242
- this._mirrorNetwork.setNetwork(_ClientConstants.MirrorNetwork.PREVIEWNET);
267
+ this._mirrorNetwork.setNetwork(_ClientConstants.WebMirrorNetwork.PREVIEWNET);
243
268
  break;
244
269
  case "testnet":
245
- this._mirrorNetwork.setNetwork(_ClientConstants.MirrorNetwork.TESTNET);
270
+ this._mirrorNetwork.setNetwork(_ClientConstants.WebMirrorNetwork.TESTNET);
246
271
  break;
247
272
  case "mainnet":
248
- this._mirrorNetwork.setNetwork(_ClientConstants.MirrorNetwork.MAINNET);
273
+ this._mirrorNetwork.setNetwork(_ClientConstants.WebMirrorNetwork.MAINNET);
249
274
  break;
250
275
  default:
251
276
  this._mirrorNetwork.setNetwork([mirrorNetwork]);
@@ -55,6 +55,16 @@ export default class WebClient extends Client<WebChannel, any> {
55
55
  * @returns {WebClient}
56
56
  */
57
57
  static forPreviewnet(): WebClient;
58
+ /**
59
+ * Construct a Hedera client pre-configured for local-node access.
60
+ *
61
+ * @param {object} [props]
62
+ * @param {boolean} [props.scheduleNetworkUpdate]
63
+ * @returns {WebClient}
64
+ */
65
+ static forLocalNode(props?: {
66
+ scheduleNetworkUpdate?: boolean | undefined;
67
+ }): WebClient;
58
68
  /**
59
69
  * Construct a Hedera client pre-configured for Mainnet access with network update.
60
70
  *
@@ -1,2 +1,2 @@
1
- import t from"./Client.js";import e from"../channel/WebChannel.js";import r from"../LedgerId.js";import{WebNetwork as s,MirrorNetwork as o}from"../constants/ClientConstants.js";import n from"../network/AddressBookQueryWeb.js";import i from"../file/FileId.js";class a extends t{constructor(e){if(super(e),null!=e)if("string"==typeof e.network)switch(e.network){case"mainnet":this.setNetwork(s.MAINNET),this.setLedgerId(r.MAINNET),this.setMirrorNetwork(o.MAINNET);break;case"testnet":this.setNetwork(s.TESTNET),this.setLedgerId(r.TESTNET),this.setMirrorNetwork(o.TESTNET);break;case"previewnet":this.setNetwork(s.PREVIEWNET),this.setLedgerId(r.PREVIEWNET),this.setMirrorNetwork(o.PREVIEWNET);break;default:throw new Error(`unknown network: ${e.network}`)}else if(null!=e.network){t._validateNetworkConsistency(e.network);const{shard:r,realm:s}=t._extractShardRealm(e.network);this._shard=r,this._realm=s,this.setNetwork(e.network)}}static fromConfig(t){return new a("string"==typeof t?JSON.parse(t):t)}static forNetwork(t){return new a({network:t})}static forName(t){return new a({network:t})}static forMainnet(){return new a({network:"mainnet"})}static forTestnet(){return new a({network:"testnet"})}static forPreviewnet(){return new a({network:"previewnet"})}static async forMainnetAsync(){return new a({network:"mainnet"}).updateNetwork()}static async forTestnetAsync(){return new a({network:"testnet"}).updateNetwork()}static async forPreviewnetAsync(){return new a({network:"previewnet"}).updateNetwork()}static async forNameAsync(t){const e=new a({network:t});return"local-node"!==t&&await e.updateNetwork(),e}static async forMirrorNetwork(t){const e=new a({mirrorNetwork:t});return await e.updateNetwork(),e}setNetwork(t){if("string"==typeof t)switch(t){case"previewnet":this._network.setNetwork(s.PREVIEWNET);break;case"testnet":this._network.setNetwork(s.TESTNET);break;case"mainnet":this._network.setNetwork(s.MAINNET)}else this._network.setNetwork(t)}setMirrorNetwork(t){if("string"==typeof t)switch(t){case"local-node":this._mirrorNetwork.setNetwork(o.LOCAL_NODE);break;case"previewnet":this._mirrorNetwork.setNetwork(o.PREVIEWNET);break;case"testnet":this._mirrorNetwork.setNetwork(o.TESTNET);break;case"mainnet":this._mirrorNetwork.setNetwork(o.MAINNET);break;default:this._mirrorNetwork.setNetwork([t])}else this._mirrorNetwork.setNetwork(t);return this}async updateNetwork(){if(this._isUpdatingNetwork)return this;this._isUpdatingNetwork=!0;try{const t=await(new n).setFileId(i.getAddressBookFileIdFor(this.shard,this.realm)).execute(this),e={};for(const r of t.nodeAddresses)for(const t of r.addresses)null!=r.accountId&&(e[t.toString()]=r.accountId);this.setNetwork(e)}catch(t){if(this._logger){const e=t instanceof Error?t.message:String(t);this._logger.trace(`failed to update client address book: ${e}`)}}finally{this._isUpdatingNetwork=!1}return this}_createNetworkChannel(){return t=>new e(t)}_createMirrorNetworkChannel(){return()=>{throw new Error("mirror support is not supported in browsers")}}}export{a as default};
1
+ import e from"./Client.js";import t from"../channel/WebChannel.js";import r from"../LedgerId.js";import{WebNetwork as s,WebMirrorNetwork as o}from"../constants/ClientConstants.js";import n from"../network/AddressBookQueryWeb.js";import i from"../file/FileId.js";class a extends e{constructor(t){if(super(t),null!=t)if("string"==typeof t.network)switch(t.network){case"mainnet":this.setNetwork(s.MAINNET),this.setMirrorNetwork(o.MAINNET),this.setLedgerId(r.MAINNET);break;case"testnet":this.setNetwork(s.TESTNET),this.setLedgerId(r.TESTNET),this.setMirrorNetwork(o.TESTNET);break;case"previewnet":this.setNetwork(s.PREVIEWNET),this.setLedgerId(r.PREVIEWNET),this.setMirrorNetwork(o.PREVIEWNET);break;case"local-node":this.setNetwork(s.LOCAL_NODE),this.setLedgerId(r.LOCAL_NODE),this.setMirrorNetwork(o.LOCAL_NODE);break;default:throw new Error(`unknown network: ${t.network}`)}else if(null!=t.network){e._validateNetworkConsistency(t.network);const{shard:r,realm:s}=e._extractShardRealm(t.network);this._shard=r,this._realm=s,this.setNetwork(t.network)}}static fromConfig(e){return new a("string"==typeof e?JSON.parse(e):e)}static forNetwork(e){return new a({network:e})}static forName(e){return new a({network:e})}static forMainnet(){return new a({network:"mainnet"})}static forTestnet(){return new a({network:"testnet"})}static forPreviewnet(){return new a({network:"previewnet"})}static forLocalNode(e={scheduleNetworkUpdate:!1}){return new a({network:"local-node",...e})}static async forMainnetAsync(){return new a({network:"mainnet"}).updateNetwork()}static async forTestnetAsync(){return new a({network:"testnet"}).updateNetwork()}static async forPreviewnetAsync(){return new a({network:"previewnet"}).updateNetwork()}static async forNameAsync(e){const t=new a({network:e});return"local-node"!==e&&await t.updateNetwork(),t}static async forMirrorNetwork(e){const t=new a({mirrorNetwork:e});return await t.updateNetwork(),t}setNetwork(e){if("string"==typeof e)switch(e){case"previewnet":this._network.setNetwork(s.PREVIEWNET);break;case"testnet":this._network.setNetwork(s.TESTNET);break;case"mainnet":this._network.setNetwork(s.MAINNET);break;case"local-node":this._network.setNetwork(s.LOCAL_NODE)}else this._network.setNetwork(e)}setMirrorNetwork(e){if("string"==typeof e)switch(e){case"local-node":this._mirrorNetwork.setNetwork(o.LOCAL_NODE);break;case"previewnet":this._mirrorNetwork.setNetwork(o.PREVIEWNET);break;case"testnet":this._mirrorNetwork.setNetwork(o.TESTNET);break;case"mainnet":this._mirrorNetwork.setNetwork(o.MAINNET);break;default:this._mirrorNetwork.setNetwork([e])}else this._mirrorNetwork.setNetwork(e);return this}async updateNetwork(){if(this._isUpdatingNetwork)return this;this._isUpdatingNetwork=!0;try{const e=await(new n).setFileId(i.getAddressBookFileIdFor(this.shard,this.realm)).execute(this),t={};for(const r of e.nodeAddresses)for(const e of r.addresses)null!=r.accountId&&(t[e.toString()]=r.accountId);this.setNetwork(t)}catch(e){if(this._logger){const t=e instanceof Error?e.message:String(e);this._logger.trace(`failed to update client address book: ${t}`)}}finally{this._isUpdatingNetwork=!1}return this}_createNetworkChannel(){return e=>new t(e)}_createMirrorNetworkChannel(){return()=>{throw new Error("mirror support is not supported in browsers")}}}export{a as default};
2
2
  //# sourceMappingURL=WebClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebClient.js","sources":["../../src/client/WebClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./Client.js\";\nimport WebChannel from \"../channel/WebChannel.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport { WebNetwork, MirrorNetwork } from \"../constants/ClientConstants.js\";\nimport AddressBookQuery from \"../network/AddressBookQueryWeb.js\";\nimport FileId from \"../file/FileId.js\";\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * Represents a client for interacting with the Hedera network over the web.\n * The `WebClient` class extends the base `Client` class and provides methods\n * for configuring and managing connections to the Hedera network, including\n * setting the network type (mainnet, testnet, previewnet) and handling\n * transactions and queries.\n * @augments {Client<WebChannel, *>}\n */\nexport default class WebClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n if (props != null) {\n if (typeof props.network === \"string\") {\n switch (props.network) {\n case \"mainnet\":\n this.setNetwork(WebNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetwork(WebNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetwork(WebNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${props.network}`,\n );\n }\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {WebClient}\n */\n static fromConfig(data) {\n return new WebClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {WebClient}\n */\n static forNetwork(network) {\n return new WebClient({ network });\n }\n\n /**\n * @param {string} network\n * @returns {WebClient}\n */\n static forName(network) {\n return new WebClient({ network });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @returns {WebClient}\n */\n static forMainnet() {\n return new WebClient({\n network: \"mainnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @returns {WebClient}\n */\n static forTestnet() {\n return new WebClient({\n network: \"testnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @returns {WebClient}\n */\n static forPreviewnet() {\n return new WebClient({\n network: \"previewnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forMainnetAsync() {\n return new WebClient({\n network: \"mainnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forTestnetAsync() {\n return new WebClient({\n network: \"testnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forPreviewnetAsync() {\n return new WebClient({\n network: \"previewnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @returns {Promise<WebClient>}\n */\n static async forNameAsync(network) {\n const client = new WebClient({ network });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * Construct a client configured to use mirror nodes.\n * This will query the address book to get the network nodes.\n *\n * @param {string[] | string} mirrorNetwork\n * @returns {Promise<WebClient>}\n */\n static async forMirrorNetwork(mirrorNetwork) {\n const client = new WebClient({ mirrorNetwork: mirrorNetwork });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n switch (network) {\n case \"previewnet\":\n this._network.setNetwork(WebNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._network.setNetwork(WebNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._network.setNetwork(WebNetwork.MAINNET);\n }\n } else {\n this._network.setNetwork(network);\n }\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {Promise<this>}\n */\n async updateNetwork() {\n if (this._isUpdatingNetwork) {\n return this;\n }\n\n this._isUpdatingNetwork = true;\n\n try {\n const addressBook = await new AddressBookQuery()\n .setFileId(\n FileId.getAddressBookFileIdFor(this.shard, this.realm),\n )\n .execute(this);\n\n /** @type {Record<string, AccountId>} */\n const network = {};\n for (const nodeAddress of addressBook.nodeAddresses) {\n for (const endpoint of nodeAddress.addresses) {\n if (nodeAddress.accountId != null) {\n network[endpoint.toString()] = nodeAddress.accountId;\n }\n }\n }\n\n this.setNetwork(network);\n } catch (/** @type {unknown} */ error) {\n if (this._logger) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this._logger.trace(\n `failed to update client address book: ${errorMessage}`,\n );\n }\n } finally {\n this._isUpdatingNetwork = false;\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string) => WebChannel}\n */\n _createNetworkChannel() {\n return (address) => new WebChannel(address);\n }\n\n /**\n * @override\n * @returns {(address: string) => *}\n */\n _createMirrorNetworkChannel() {\n return () => {\n throw new Error(\"mirror support is not supported in browsers\");\n };\n }\n}\n"],"names":["WebClient","Client","constructor","props","super","network","this","setNetwork","WebNetwork","MAINNET","setLedgerId","LedgerId","setMirrorNetwork","MirrorNetwork","TESTNET","PREVIEWNET","Error","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","fromConfig","data","JSON","parse","forNetwork","forName","forMainnet","forTestnet","forPreviewnet","forMainnetAsync","updateNetwork","forTestnetAsync","forPreviewnetAsync","forNameAsync","client","forMirrorNetwork","mirrorNetwork","_network","_mirrorNetwork","LOCAL_NODE","_isUpdatingNetwork","addressBook","AddressBookQuery","setFileId","FileId","getAddressBookFileIdFor","execute","nodeAddress","nodeAddresses","endpoint","addresses","accountId","toString","error","_logger","errorMessage","message","String","trace","_createNetworkChannel","address","WebChannel","_createMirrorNetworkChannel"],"mappings":"mQAsBe,MAAMA,UAAkBC,EAInC,WAAAC,CAAYC,GAER,GADAC,MAAMD,GACO,MAATA,EACA,GAA6B,iBAAlBA,EAAME,QACb,OAAQF,EAAME,SACV,IAAK,UACDC,KAAKC,WAAWC,EAAWC,SAC3BH,KAAKI,YAAYC,EAASF,SAC1BH,KAAKM,iBAAiBC,EAAcJ,SACpC,MAEJ,IAAK,UACDH,KAAKC,WAAWC,EAAWM,SAC3BR,KAAKI,YAAYC,EAASG,SAC1BR,KAAKM,iBAAiBC,EAAcC,SACpC,MAEJ,IAAK,aACDR,KAAKC,WAAWC,EAAWO,YAC3BT,KAAKI,YAAYC,EAASI,YAC1BT,KAAKM,iBAAiBC,EAAcE,YACpC,MAEJ,QACI,MAAM,IAAIC,MAEN,oBAAoBb,EAAME,gBAGnC,GAAqB,MAAjBF,EAAME,QAAiB,CAC9BJ,EAAOgB,4BAA4Bd,EAAME,SAEzC,MAAMa,MAAEA,EAAKC,MAAEA,GAAUlB,EAAOmB,mBAC5BjB,EAAME,SAKVC,KAAKe,OAASH,EACdZ,KAAKgB,OAASH,EAEdb,KAAKC,WAAWJ,EAAME,QACtC,CAEA,CAMI,iBAAOkB,CAAWC,GACd,OAAO,IAAIxB,EACS,iBAATwB,EAEGC,KAAKC,MAAMF,GAEfA,EAElB,CAeI,iBAAOG,CAAWtB,GACd,OAAO,IAAIL,EAAU,CAAEK,WAC/B,CAMI,cAAOuB,CAAQvB,GACX,OAAO,IAAIL,EAAU,CAAEK,WAC/B,CAOI,iBAAOwB,GACH,OAAO,IAAI7B,EAAU,CACjBK,QAAS,WAErB,CAOI,iBAAOyB,GACH,OAAO,IAAI9B,EAAU,CACjBK,QAAS,WAErB,CAOI,oBAAO0B,GACH,OAAO,IAAI/B,EAAU,CACjBK,QAAS,cAErB,CAOI,4BAAa2B,GACT,OAAO,IAAIhC,EAAU,CACjBK,QAAS,YACV4B,eACX,CAOI,4BAAaC,GACT,OAAO,IAAIlC,EAAU,CACjBK,QAAS,YACV4B,eACX,CAOI,+BAAaE,GACT,OAAO,IAAInC,EAAU,CACjBK,QAAS,eACV4B,eACX,CASI,yBAAaG,CAAa/B,GACtB,MAAMgC,EAAS,IAAIrC,EAAU,CAAEK,YAM/B,MAJgB,eAAZA,SACMgC,EAAOJ,gBAGVI,CACf,CASI,6BAAaC,CAAiBC,GAC1B,MAAMF,EAAS,IAAIrC,EAAU,CAAEuC,cAAeA,IAI9C,aAFMF,EAAOJ,gBAENI,CACf,CAMI,UAAA9B,CAAWF,GACP,GAAuB,iBAAZA,EACP,OAAQA,GACJ,IAAK,aACDC,KAAKkC,SAASjC,WAAWC,EAAWO,YACpC,MACJ,IAAK,UACDT,KAAKkC,SAASjC,WAAWC,EAAWM,SACpC,MACJ,IAAK,UACDR,KAAKkC,SAASjC,WAAWC,EAAWC,cAG5CH,KAAKkC,SAASjC,WAAWF,EAErC,CAMI,gBAAAO,CAAiB2B,GACb,GAA6B,iBAAlBA,EACP,OAAQA,GACJ,IAAK,aACDjC,KAAKmC,eAAelC,WAAWM,EAAc6B,YAC7C,MACJ,IAAK,aACDpC,KAAKmC,eAAelC,WAAWM,EAAcE,YAC7C,MACJ,IAAK,UACDT,KAAKmC,eAAelC,WAAWM,EAAcC,SAC7C,MACJ,IAAK,UACDR,KAAKmC,eAAelC,WAAWM,EAAcJ,SAC7C,MACJ,QACIH,KAAKmC,eAAelC,WAAW,CAACgC,SAGxCjC,KAAKmC,eAAelC,WAAWgC,GAGnC,OAAOjC,IACf,CAMI,mBAAM2B,GACF,GAAI3B,KAAKqC,mBACL,OAAOrC,KAGXA,KAAKqC,oBAAqB,EAE1B,IACI,MAAMC,QAAoB,IAAIC,GACzBC,UACGC,EAAOC,wBAAwB1C,KAAKY,MAAOZ,KAAKa,QAEnD8B,QAAQ3C,MAGPD,EAAU,CAAE,EAClB,IAAK,MAAM6C,KAAeN,EAAYO,cAClC,IAAK,MAAMC,KAAYF,EAAYG,UACF,MAAzBH,EAAYI,YACZjD,EAAQ+C,EAASG,YAAcL,EAAYI,WAKvDhD,KAAKC,WAAWF,EACnB,CAAC,MAA8BmD,GAC5B,GAAIlD,KAAKmD,QAAS,CACd,MAAMC,EACFF,aAAiBxC,MAAQwC,EAAMG,QAAUC,OAAOJ,GACpDlD,KAAKmD,QAAQI,MACT,yCAAyCH,IAE7D,CACA,CAAkB,QACNpD,KAAKqC,oBAAqB,CACtC,CAEQ,OAAOrC,IACf,CAMI,qBAAAwD,GACI,OAAQC,GAAY,IAAIC,EAAWD,EAC3C,CAMI,2BAAAE,GACI,MAAO,KACH,MAAM,IAAIjD,MAAM,8CAA8C,CAE1E"}
1
+ {"version":3,"file":"WebClient.js","sources":["../../src/client/WebClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./Client.js\";\nimport WebChannel from \"../channel/WebChannel.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport { WebNetwork, WebMirrorNetwork } from \"../constants/ClientConstants.js\";\n\nimport AddressBookQuery from \"../network/AddressBookQueryWeb.js\";\nimport FileId from \"../file/FileId.js\";\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * Represents a client for interacting with the Hedera network over the web.\n * The `WebClient` class extends the base `Client` class and provides methods\n * for configuring and managing connections to the Hedera network, including\n * setting the network type (mainnet, testnet, previewnet) and handling\n * transactions and queries.\n * @augments {Client<WebChannel, *>}\n */\nexport default class WebClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n if (props != null) {\n if (typeof props.network === \"string\") {\n switch (props.network) {\n case \"mainnet\":\n this.setNetwork(WebNetwork.MAINNET);\n this.setMirrorNetwork(WebMirrorNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetwork(WebNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n this.setMirrorNetwork(WebMirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetwork(WebNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n this.setMirrorNetwork(WebMirrorNetwork.PREVIEWNET);\n break;\n\n case \"local-node\":\n this.setNetwork(WebNetwork.LOCAL_NODE);\n this.setLedgerId(LedgerId.LOCAL_NODE);\n this.setMirrorNetwork(WebMirrorNetwork.LOCAL_NODE);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${props.network}`,\n );\n }\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {WebClient}\n */\n static fromConfig(data) {\n return new WebClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {WebClient}\n */\n static forNetwork(network) {\n return new WebClient({ network });\n }\n\n /**\n * @param {string} network\n * @returns {WebClient}\n */\n static forName(network) {\n return new WebClient({ network });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @returns {WebClient}\n */\n static forMainnet() {\n return new WebClient({\n network: \"mainnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @returns {WebClient}\n */\n static forTestnet() {\n return new WebClient({\n network: \"testnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @returns {WebClient}\n */\n static forPreviewnet() {\n return new WebClient({\n network: \"previewnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for local-node access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {WebClient}\n */\n static forLocalNode(props = { scheduleNetworkUpdate: false }) {\n return new WebClient({\n network: \"local-node\",\n ...props,\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forMainnetAsync() {\n return new WebClient({\n network: \"mainnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forTestnetAsync() {\n return new WebClient({\n network: \"testnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forPreviewnetAsync() {\n return new WebClient({\n network: \"previewnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @returns {Promise<WebClient>}\n */\n static async forNameAsync(network) {\n const client = new WebClient({ network });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * Construct a client configured to use mirror nodes.\n * This will query the address book to get the network nodes.\n *\n * @param {string[] | string} mirrorNetwork\n * @returns {Promise<WebClient>}\n */\n static async forMirrorNetwork(mirrorNetwork) {\n const client = new WebClient({ mirrorNetwork: mirrorNetwork });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n switch (network) {\n case \"previewnet\":\n this._network.setNetwork(WebNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._network.setNetwork(WebNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._network.setNetwork(WebNetwork.MAINNET);\n break;\n case \"local-node\":\n this._network.setNetwork(WebNetwork.LOCAL_NODE);\n break;\n }\n } else {\n this._network.setNetwork(network);\n }\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {Promise<this>}\n */\n async updateNetwork() {\n if (this._isUpdatingNetwork) {\n return this;\n }\n\n this._isUpdatingNetwork = true;\n\n try {\n const addressBook = await new AddressBookQuery()\n .setFileId(\n FileId.getAddressBookFileIdFor(this.shard, this.realm),\n )\n .execute(this);\n\n /** @type {Record<string, AccountId>} */\n const network = {};\n for (const nodeAddress of addressBook.nodeAddresses) {\n for (const endpoint of nodeAddress.addresses) {\n if (nodeAddress.accountId != null) {\n network[endpoint.toString()] = nodeAddress.accountId;\n }\n }\n }\n\n this.setNetwork(network);\n } catch (/** @type {unknown} */ error) {\n if (this._logger) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this._logger.trace(\n `failed to update client address book: ${errorMessage}`,\n );\n }\n } finally {\n this._isUpdatingNetwork = false;\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string) => WebChannel}\n */\n _createNetworkChannel() {\n return (address) => new WebChannel(address);\n }\n\n /**\n * @override\n * @returns {(address: string) => *}\n */\n _createMirrorNetworkChannel() {\n return () => {\n throw new Error(\"mirror support is not supported in browsers\");\n };\n }\n}\n"],"names":["WebClient","Client","constructor","props","super","network","this","setNetwork","WebNetwork","MAINNET","setMirrorNetwork","WebMirrorNetwork","setLedgerId","LedgerId","TESTNET","PREVIEWNET","LOCAL_NODE","Error","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","fromConfig","data","JSON","parse","forNetwork","forName","forMainnet","forTestnet","forPreviewnet","forLocalNode","scheduleNetworkUpdate","forMainnetAsync","updateNetwork","forTestnetAsync","forPreviewnetAsync","forNameAsync","client","forMirrorNetwork","mirrorNetwork","_network","_mirrorNetwork","_isUpdatingNetwork","addressBook","AddressBookQuery","setFileId","FileId","getAddressBookFileIdFor","execute","nodeAddress","nodeAddresses","endpoint","addresses","accountId","toString","error","_logger","errorMessage","message","String","trace","_createNetworkChannel","address","WebChannel","_createMirrorNetworkChannel"],"mappings":"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"}