@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.
- package/dist/umd.js +648 -338
- package/dist/umd.min.js +16 -15
- package/lib/EntityIdHelper.cjs +1 -2
- package/lib/EntityIdHelper.js +1 -1
- package/lib/EntityIdHelper.js.map +1 -1
- package/lib/EthereumFlow.cjs +1 -2
- package/lib/EthereumTransaction.cjs +1 -2
- package/lib/EthereumTransactionDataEip1559.cjs +1 -2
- package/lib/EthereumTransactionDataEip1559.js +1 -1
- package/lib/EthereumTransactionDataEip1559.js.map +1 -1
- package/lib/EthereumTransactionDataEip2930.cjs +1 -2
- package/lib/EthereumTransactionDataEip2930.js +1 -1
- package/lib/EthereumTransactionDataEip2930.js.map +1 -1
- package/lib/EthereumTransactionDataLegacy.cjs +1 -2
- package/lib/EthereumTransactionDataLegacy.js +1 -1
- package/lib/EthereumTransactionDataLegacy.js.map +1 -1
- package/lib/EvmAddress.cjs +1 -2
- package/lib/ExchangeRates.cjs +1 -2
- package/lib/Executable.cjs +1 -2
- package/lib/Executable.js +1 -1
- package/lib/Executable.js.map +1 -1
- package/lib/FeeComponents.cjs +1 -2
- package/lib/FeeData.cjs +1 -2
- package/lib/FeeSchedule.cjs +1 -2
- package/lib/FeeSchedule.js +1 -1
- package/lib/FeeSchedule.js.map +1 -1
- package/lib/FeeSchedules.cjs +1 -2
- package/lib/KeyList.js +1 -1
- package/lib/KeyList.js.map +1 -1
- package/lib/LedgerId.cjs +1 -2
- package/lib/LocalProviderWeb.cjs +165 -0
- package/lib/LocalProviderWeb.d.ts +127 -0
- package/lib/LocalProviderWeb.js +2 -0
- package/lib/LocalProviderWeb.js.map +1 -0
- package/lib/ManagedNode.js +1 -1
- package/lib/ManagedNode.js.map +1 -1
- package/lib/ObjectMap.js +1 -1
- package/lib/ObjectMap.js.map +1 -1
- package/lib/PrivateKey.js +1 -1
- package/lib/PrivateKey.js.map +1 -1
- package/lib/PrngTransaction.cjs +1 -2
- package/lib/PublicKey.js +1 -1
- package/lib/PublicKey.js.map +1 -1
- package/lib/StakingInfo.cjs +1 -2
- package/lib/Timestamp.js.map +1 -1
- package/lib/TransactionFeeSchedule.cjs +1 -2
- package/lib/TransactionFeeSchedule.js +1 -1
- package/lib/TransactionFeeSchedule.js.map +1 -1
- package/lib/Wallet.cjs +1 -2
- package/lib/Wallet.js +1 -1
- package/lib/Wallet.js.map +1 -1
- package/lib/account/AccountAllowanceAdjustTransaction.cjs +1 -2
- package/lib/account/AccountAllowanceAdjustTransaction.js +1 -1
- package/lib/account/AccountAllowanceAdjustTransaction.js.map +1 -1
- package/lib/account/AccountAllowanceApproveTransaction.cjs +1 -2
- package/lib/account/AccountAllowanceApproveTransaction.js +1 -1
- package/lib/account/AccountAllowanceApproveTransaction.js.map +1 -1
- package/lib/account/AccountAllowanceDeleteTransaction.cjs +1 -2
- package/lib/account/AccountAllowanceDeleteTransaction.js +1 -1
- package/lib/account/AccountAllowanceDeleteTransaction.js.map +1 -1
- package/lib/account/AccountBalance.cjs +1 -2
- package/lib/account/AccountBalanceQuery.cjs +1 -2
- package/lib/account/AccountCreateTransaction.cjs +1 -2
- package/lib/account/AccountDeleteTransaction.cjs +1 -2
- package/lib/account/AccountId.cjs +1 -2
- package/lib/account/AccountId.js +1 -1
- package/lib/account/AccountId.js.map +1 -1
- package/lib/account/AccountInfo.cjs +1 -2
- package/lib/account/AccountInfo.js +1 -1
- package/lib/account/AccountInfo.js.map +1 -1
- package/lib/account/AccountInfoQuery.cjs +1 -2
- package/lib/account/AccountRecordsQuery.cjs +1 -2
- package/lib/account/AccountRecordsQuery.js +1 -1
- package/lib/account/AccountRecordsQuery.js.map +1 -1
- package/lib/account/AccountUpdateTransaction.cjs +1 -2
- package/lib/account/HbarTransferMap.js +1 -1
- package/lib/account/HbarTransferMap.js.map +1 -1
- package/lib/account/LiveHashAddTransaction.cjs +1 -2
- package/lib/account/LiveHashAddTransaction.js +1 -1
- package/lib/account/LiveHashAddTransaction.js.map +1 -1
- package/lib/account/LiveHashDeleteTransaction.cjs +1 -2
- package/lib/account/LiveHashQuery.cjs +1 -2
- package/lib/account/NullableTokenDecimalMap.js +1 -1
- package/lib/account/NullableTokenDecimalMap.js.map +1 -1
- package/lib/account/TokenBalanceMap.js +1 -1
- package/lib/account/TokenBalanceMap.js.map +1 -1
- package/lib/account/TokenDecimalMap.js +1 -1
- package/lib/account/TokenDecimalMap.js.map +1 -1
- package/lib/account/TokenNftAllowance.js +1 -1
- package/lib/account/TokenNftAllowance.js.map +1 -1
- package/lib/account/TokenNftTransferMap.js +1 -1
- package/lib/account/TokenNftTransferMap.js.map +1 -1
- package/lib/account/TokenRelationshipMap.js +1 -1
- package/lib/account/TokenRelationshipMap.js.map +1 -1
- package/lib/account/TokenTransferAccountMap.js +1 -1
- package/lib/account/TokenTransferAccountMap.js.map +1 -1
- package/lib/account/TokenTransferMap.js +1 -1
- package/lib/account/TokenTransferMap.js.map +1 -1
- package/lib/account/TransferTransaction.cjs +1 -2
- package/lib/account/TransferTransaction.js +1 -1
- package/lib/account/TransferTransaction.js.map +1 -1
- package/lib/address_book/AddressBooks.cjs +1 -2
- package/lib/address_book/NodeAddress.cjs +1 -2
- package/lib/address_book/NodeAddress.js +1 -1
- package/lib/address_book/NodeAddress.js.map +1 -1
- package/lib/address_book/NodeAddressBook.cjs +1 -2
- package/lib/address_book/NodeAddressBook.js +1 -1
- package/lib/address_book/NodeAddressBook.js.map +1 -1
- package/lib/browser.cjs +8 -0
- package/lib/browser.d.ts +1 -0
- package/lib/browser.js +1 -1
- package/lib/channel/Channel.cjs +1 -2
- package/lib/channel/NativeChannel.cjs +1 -2
- package/lib/channel/NativeChannel.js +1 -1
- package/lib/channel/NativeChannel.js.map +1 -1
- package/lib/channel/NodeChannel.js +1 -1
- package/lib/channel/NodeChannel.js.map +1 -1
- package/lib/channel/NodeMirrorChannel.cjs +1 -2
- package/lib/channel/NodeMirrorChannel.js +1 -1
- package/lib/channel/NodeMirrorChannel.js.map +1 -1
- package/lib/channel/WebChannel.cjs +1 -2
- package/lib/client/Client.js +1 -1
- package/lib/client/Client.js.map +1 -1
- package/lib/client/ManagedNetwork.cjs +1 -2
- package/lib/client/ManagedNetwork.js +1 -1
- package/lib/client/ManagedNetwork.js.map +1 -1
- package/lib/client/MirrorNetwork.js +1 -1
- package/lib/client/MirrorNetwork.js.map +1 -1
- package/lib/client/NativeClient.js.map +1 -1
- package/lib/client/Network.js +1 -1
- package/lib/client/Network.js.map +1 -1
- package/lib/client/NodeClient.cjs +4 -11
- package/lib/client/NodeClient.d.ts +5 -6
- package/lib/client/NodeClient.js +1 -1
- package/lib/client/NodeClient.js.map +1 -1
- package/lib/client/WebClient.cjs +32 -7
- package/lib/client/WebClient.d.ts +10 -0
- package/lib/client/WebClient.js +1 -1
- package/lib/client/WebClient.js.map +1 -1
- package/lib/client/addressbooks/mainnet.cjs +1 -1
- package/lib/client/addressbooks/mainnet.d.ts +1 -1
- package/lib/client/addressbooks/mainnet.js +1 -1
- package/lib/client/addressbooks/mainnet.js.map +1 -1
- package/lib/client/addressbooks/previewnet.cjs +1 -1
- package/lib/client/addressbooks/previewnet.d.ts +1 -1
- package/lib/client/addressbooks/previewnet.js +1 -1
- package/lib/client/addressbooks/previewnet.js.map +1 -1
- package/lib/client/addressbooks/testnet.cjs +1 -1
- package/lib/client/addressbooks/testnet.d.ts +1 -1
- package/lib/client/addressbooks/testnet.js +1 -1
- package/lib/client/addressbooks/testnet.js.map +1 -1
- package/lib/constants/ClientConstants.cjs +21 -2
- package/lib/constants/ClientConstants.d.ts +17 -0
- package/lib/constants/ClientConstants.js +1 -1
- package/lib/constants/ClientConstants.js.map +1 -1
- package/lib/contract/ContractByteCodeQuery.cjs +1 -2
- package/lib/contract/ContractCallQuery.cjs +1 -2
- package/lib/contract/ContractCreateFlow.cjs +1 -2
- package/lib/contract/ContractCreateFlow.js +1 -1
- package/lib/contract/ContractCreateFlow.js.map +1 -1
- package/lib/contract/ContractCreateTransaction.cjs +1 -2
- package/lib/contract/ContractDeleteTransaction.cjs +1 -2
- package/lib/contract/ContractExecuteTransaction.cjs +1 -2
- package/lib/contract/ContractFunctionParameters.cjs +1 -2
- package/lib/contract/ContractFunctionParameters.js +1 -1
- package/lib/contract/ContractFunctionParameters.js.map +1 -1
- package/lib/contract/ContractFunctionResult.cjs +1 -2
- package/lib/contract/ContractFunctionResult.js +1 -1
- package/lib/contract/ContractFunctionResult.js.map +1 -1
- package/lib/contract/ContractFunctionSelector.cjs +1 -2
- package/lib/contract/ContractId.cjs +1 -2
- package/lib/contract/ContractId.js +1 -1
- package/lib/contract/ContractId.js.map +1 -1
- package/lib/contract/ContractInfo.cjs +1 -2
- package/lib/contract/ContractInfoQuery.cjs +1 -2
- package/lib/contract/ContractNonceInfo.cjs +1 -2
- package/lib/contract/ContractStateChange.cjs +1 -2
- package/lib/contract/ContractUpdateTransaction.cjs +1 -2
- package/lib/contract/DelegateContractId.js +1 -1
- package/lib/contract/DelegateContractId.js.map +1 -1
- package/lib/contract/StorageChange.cjs +1 -2
- package/lib/cryptography/keccak.js +1 -1
- package/lib/cryptography/keccak.js.map +1 -1
- package/lib/cryptography/sha384.native.cjs +1 -2
- package/lib/encoding/base64.native.js +1 -1
- package/lib/encoding/base64.native.js.map +1 -1
- package/lib/encoding/hex.browser.js +1 -1
- package/lib/encoding/hex.browser.js.map +1 -1
- package/lib/encoding/utf8.native.cjs +1 -2
- package/lib/exports.cjs +1 -2
- package/lib/file/FileAppendTransaction.cjs +1 -2
- package/lib/file/FileContentsQuery.cjs +1 -2
- package/lib/file/FileCreateTransaction.cjs +1 -2
- package/lib/file/FileCreateTransaction.js +1 -1
- package/lib/file/FileCreateTransaction.js.map +1 -1
- package/lib/file/FileDeleteTransaction.cjs +1 -2
- package/lib/file/FileId.cjs +1 -2
- package/lib/file/FileInfo.cjs +1 -2
- package/lib/file/FileInfoQuery.cjs +1 -2
- package/lib/file/FileUpdateTransaction.cjs +1 -2
- package/lib/file/FileUpdateTransaction.js +1 -1
- package/lib/file/FileUpdateTransaction.js.map +1 -1
- package/lib/network/AddressBookQuery.cjs +1 -2
- package/lib/network/AddressBookQuery.js +1 -1
- package/lib/network/AddressBookQuery.js.map +1 -1
- package/lib/network/AddressBookQueryWeb.js +1 -1
- package/lib/network/AddressBookQueryWeb.js.map +1 -1
- package/lib/network/NetworkVersionInfo.cjs +1 -2
- package/lib/network/NetworkVersionInfoQuery.cjs +1 -2
- package/lib/network/SemanticVersion.cjs +1 -2
- package/lib/node/NodeCreateTransaction.cjs +1 -2
- package/lib/node/NodeCreateTransaction.js +1 -1
- package/lib/node/NodeCreateTransaction.js.map +1 -1
- package/lib/node/NodeDeleteTransaction.cjs +15 -3
- package/lib/node/NodeDeleteTransaction.d.ts +2 -1
- package/lib/node/NodeDeleteTransaction.js +1 -1
- package/lib/node/NodeDeleteTransaction.js.map +1 -1
- package/lib/node/NodeUpdateTransaction.cjs +13 -3
- package/lib/node/NodeUpdateTransaction.d.ts +2 -1
- package/lib/node/NodeUpdateTransaction.js +1 -1
- package/lib/node/NodeUpdateTransaction.js.map +1 -1
- package/lib/query/CostQuery.cjs +1 -2
- package/lib/query/MirrorNodeContractCallQuery.cjs +1 -2
- package/lib/query/MirrorNodeContractEstimateQuery.cjs +1 -2
- package/lib/query/MirrorNodeContractQuery.cjs +2 -1
- package/lib/query/MirrorNodeContractQuery.js +1 -1
- package/lib/query/MirrorNodeContractQuery.js.map +1 -1
- package/lib/query/Query.cjs +1 -2
- package/lib/query/Query.js +1 -1
- package/lib/query/Query.js.map +1 -1
- package/lib/query/QueryBase.cjs +1 -2
- package/lib/schedule/ScheduleCreateTransaction.cjs +1 -2
- package/lib/schedule/ScheduleCreateTransaction.js +1 -1
- package/lib/schedule/ScheduleCreateTransaction.js.map +1 -1
- package/lib/schedule/ScheduleDeleteTransaction.cjs +1 -2
- package/lib/schedule/ScheduleId.cjs +1 -2
- package/lib/schedule/ScheduleInfo.cjs +1 -2
- package/lib/schedule/ScheduleInfoQuery.cjs +1 -2
- package/lib/schedule/ScheduleSignTransaction.cjs +1 -2
- package/lib/system/FreezeTransaction.cjs +1 -2
- package/lib/system/SystemDeleteTransaction.cjs +1 -2
- package/lib/system/SystemUndeleteTransaction.cjs +1 -2
- package/lib/token/AbstractTokenTransferTransaction.js +1 -1
- package/lib/token/AbstractTokenTransferTransaction.js.map +1 -1
- package/lib/token/AssessedCustomFee.js +1 -1
- package/lib/token/AssessedCustomFee.js.map +1 -1
- package/lib/token/NftId.cjs +1 -2
- package/lib/token/TokenAirdropTransaction.cjs +1 -2
- package/lib/token/TokenAssociateTransaction.cjs +1 -2
- package/lib/token/TokenAssociateTransaction.js +1 -1
- package/lib/token/TokenAssociateTransaction.js.map +1 -1
- package/lib/token/TokenBurnTransaction.cjs +1 -2
- package/lib/token/TokenBurnTransaction.js +1 -1
- package/lib/token/TokenBurnTransaction.js.map +1 -1
- package/lib/token/TokenCancelAirdropTransaction.cjs +1 -2
- package/lib/token/TokenCancelAirdropTransaction.js +1 -1
- package/lib/token/TokenCancelAirdropTransaction.js.map +1 -1
- package/lib/token/TokenClaimAirdropTransaction.cjs +1 -2
- package/lib/token/TokenClaimAirdropTransaction.js +1 -1
- package/lib/token/TokenClaimAirdropTransaction.js.map +1 -1
- package/lib/token/TokenCreateTransaction.cjs +1 -2
- package/lib/token/TokenCreateTransaction.js +1 -1
- package/lib/token/TokenCreateTransaction.js.map +1 -1
- package/lib/token/TokenDeleteTransaction.cjs +1 -2
- package/lib/token/TokenDissociateTransaction.cjs +1 -2
- package/lib/token/TokenDissociateTransaction.js +1 -1
- package/lib/token/TokenDissociateTransaction.js.map +1 -1
- package/lib/token/TokenFeeScheduleUpdateTransaction.cjs +1 -2
- package/lib/token/TokenFeeScheduleUpdateTransaction.js +1 -1
- package/lib/token/TokenFeeScheduleUpdateTransaction.js.map +1 -1
- package/lib/token/TokenFreezeTransaction.cjs +1 -2
- package/lib/token/TokenGrantKycTransaction.cjs +1 -2
- package/lib/token/TokenId.cjs +1 -2
- package/lib/token/TokenInfo.cjs +1 -2
- package/lib/token/TokenInfo.js +1 -1
- package/lib/token/TokenInfo.js.map +1 -1
- package/lib/token/TokenInfoQuery.cjs +1 -2
- package/lib/token/TokenMintTransaction.cjs +1 -2
- package/lib/token/TokenMintTransaction.js +1 -1
- package/lib/token/TokenMintTransaction.js.map +1 -1
- package/lib/token/TokenNftInfo.cjs +1 -2
- package/lib/token/TokenNftInfoQuery.cjs +1 -2
- package/lib/token/TokenNftInfoQuery.js +1 -1
- package/lib/token/TokenNftInfoQuery.js.map +1 -1
- package/lib/token/TokenNftsUpdateTransaction.cjs +1 -2
- package/lib/token/TokenPauseTransaction.cjs +1 -2
- package/lib/token/TokenRejectFlow.js +1 -1
- package/lib/token/TokenRejectFlow.js.map +1 -1
- package/lib/token/TokenRejectTransaction.cjs +1 -2
- package/lib/token/TokenRejectTransaction.js +1 -1
- package/lib/token/TokenRejectTransaction.js.map +1 -1
- package/lib/token/TokenRevokeKycTransaction.cjs +1 -2
- package/lib/token/TokenUnfreezeTransaction.cjs +1 -2
- package/lib/token/TokenUnpauseTransaction.cjs +1 -2
- package/lib/token/TokenUpdateNftsTransaction.cjs +1 -2
- package/lib/token/TokenUpdateTransaction.cjs +1 -2
- package/lib/token/TokenWipeTransaction.cjs +1 -2
- package/lib/token/TokenWipeTransaction.js +1 -1
- package/lib/token/TokenWipeTransaction.js.map +1 -1
- package/lib/topic/TopicCreateTransaction.cjs +1 -2
- package/lib/topic/TopicCreateTransaction.js +1 -1
- package/lib/topic/TopicCreateTransaction.js.map +1 -1
- package/lib/topic/TopicDeleteTransaction.cjs +1 -2
- package/lib/topic/TopicId.cjs +1 -2
- package/lib/topic/TopicInfo.cjs +1 -2
- package/lib/topic/TopicInfo.js +1 -1
- package/lib/topic/TopicInfo.js.map +1 -1
- package/lib/topic/TopicInfoQuery.cjs +1 -2
- package/lib/topic/TopicMessage.js +1 -1
- package/lib/topic/TopicMessage.js.map +1 -1
- package/lib/topic/TopicMessageQuery.cjs +1 -2
- package/lib/topic/TopicMessageQuery.js +1 -1
- package/lib/topic/TopicMessageQuery.js.map +1 -1
- package/lib/topic/TopicMessageSubmitTransaction.cjs +1 -2
- package/lib/topic/TopicUpdateTransaction.cjs +1 -2
- package/lib/topic/TopicUpdateTransaction.js +1 -1
- package/lib/topic/TopicUpdateTransaction.js.map +1 -1
- package/lib/transaction/BatchTransaction.cjs +1 -2
- package/lib/transaction/BatchTransaction.js +1 -1
- package/lib/transaction/BatchTransaction.js.map +1 -1
- package/lib/transaction/CustomFeeLimit.js +1 -1
- package/lib/transaction/CustomFeeLimit.js.map +1 -1
- package/lib/transaction/NodeAccountIdSignatureMap.cjs +1 -2
- package/lib/transaction/NodeAccountIdSignatureMap.js +1 -1
- package/lib/transaction/NodeAccountIdSignatureMap.js.map +1 -1
- package/lib/transaction/NodeAccountIdSignatureMapLegacy.js +1 -1
- package/lib/transaction/NodeAccountIdSignatureMapLegacy.js.map +1 -1
- package/lib/transaction/SignatureMap.js +1 -1
- package/lib/transaction/SignatureMap.js.map +1 -1
- package/lib/transaction/SignatureMapLegacy.js +1 -1
- package/lib/transaction/SignatureMapLegacy.js.map +1 -1
- package/lib/transaction/SignaturePairMap.js +1 -1
- package/lib/transaction/SignaturePairMap.js.map +1 -1
- package/lib/transaction/Transaction.cjs +1 -2
- package/lib/transaction/Transaction.js +1 -1
- package/lib/transaction/Transaction.js.map +1 -1
- package/lib/transaction/TransactionHashMap.cjs +1 -2
- package/lib/transaction/TransactionHashMap.js +1 -1
- package/lib/transaction/TransactionHashMap.js.map +1 -1
- package/lib/transaction/TransactionId.cjs +1 -2
- package/lib/transaction/TransactionReceipt.cjs +1 -2
- package/lib/transaction/TransactionReceipt.js +1 -1
- package/lib/transaction/TransactionReceipt.js.map +1 -1
- package/lib/transaction/TransactionReceiptQuery.cjs +1 -2
- package/lib/transaction/TransactionRecord.cjs +1 -2
- package/lib/transaction/TransactionRecord.js +1 -1
- package/lib/transaction/TransactionRecord.js.map +1 -1
- package/lib/transaction/TransactionRecordQuery.cjs +1 -2
- package/lib/transaction/TransactionResponse.cjs +1 -2
- package/lib/transaction/TransactionResponse.js.map +1 -1
- package/lib/util/ASN1-Decoder.js +1 -1
- package/lib/util/ASN1-Decoder.js.map +1 -1
- package/lib/util.js +1 -1
- package/lib/util.js.map +1 -1
- package/lib/version.js +1 -1
- package/package.json +75 -71
- package/src/Executable.js +10 -4
- package/src/LocalProviderWeb.js +165 -0
- package/src/Timestamp.js +2 -2
- package/src/account/AccountAllowanceAdjustTransaction.js +48 -48
- package/src/account/AccountAllowanceApproveTransaction.js +48 -48
- package/src/account/TokenNftAllowance.js +4 -4
- package/src/browser.js +1 -0
- package/src/client/NodeClient.js +6 -9
- package/src/client/WebClient.js +33 -8
- package/src/client/addressbooks/mainnet.js +1 -1
- package/src/client/addressbooks/previewnet.js +1 -1
- package/src/client/addressbooks/testnet.js +1 -1
- package/src/constants/ClientConstants.js +25 -0
- package/src/network/AddressBookQueryWeb.js +8 -2
- package/src/node/NodeDeleteTransaction.js +20 -1
- package/src/node/NodeUpdateTransaction.js +19 -1
- package/src/query/MirrorNodeContractQuery.js +8 -1
- package/src/token/TokenInfo.js +4 -4
- package/src/topic/TopicMessageQuery.js +7 -5
- package/src/transaction/TransactionRecord.js +5 -5
- package/src/transaction/TransactionResponse.js +3 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressBookQuery.js","sources":["../../src/network/AddressBookQuery.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Query from \"../query/Query.js\";\nimport NodeAddress from \"../address_book/NodeAddress.js\";\nimport NodeAddressBook from \"../address_book/NodeAddressBook.js\";\nimport * as HieroProto from \"@hashgraph/proto\";\nimport FileId from \"../file/FileId.js\";\nimport { RST_STREAM } from \"../Executable.js\";\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"../channel/MirrorChannel.js\").MirrorError} MirrorError\n */\n\n/**\n * @template {Channel} ChannelT\n * @typedef {import(\"../client/Client.js\").default<ChannelT, MirrorChannel>} Client<ChannelT, MirrorChannel>\n */\n\n/**\n * Query to get a list of Hedera network node addresses from a mirror node.\n *\n * This query can be used to retrieve node addresses either from a specific file ID\n * or from the most recent address book if no file ID is specified. The response\n * contains node metadata including IP addresses and ports for both node and mirror\n * node services.\n * @augments {Query<NodeAddressBook>}\n */\nexport default class AddressBookQuery extends Query {\n /**\n * @param {object} props\n * @param {FileId | string} [props.fileId]\n * @param {number} [props.limit]\n */\n constructor(props = {}) {\n super();\n\n /**\n * @private\n * @type {?FileId}\n */\n this._fileId = null;\n if (props.fileId != null) {\n this.setFileId(props.fileId);\n }\n\n /**\n * @private\n * @type {?number}\n */\n this._limit = null;\n if (props.limit != null) {\n this.setLimit(props.limit);\n }\n\n /**\n * @private\n * @type {(error: MirrorError | Error | null) => boolean}\n */\n this._retryHandler = (error) => {\n if (error != null) {\n if (error instanceof Error) {\n // Retry on all errors which are not `MirrorError` because they're\n // likely lower level HTTP/2 errors\n return true;\n } else {\n // Retry on `NOT_FOUND`, `RESOURCE_EXHAUSTED`, `UNAVAILABLE`, and conditionally on `INTERNAL`\n // if the message matches the right regex.\n switch (error.code) {\n // INTERNAL\n // eslint-disable-next-line no-fallthrough\n case 13:\n return RST_STREAM.test(error.details.toString());\n // NOT_FOUND\n // eslint-disable-next-line no-fallthrough\n case 5:\n // RESOURCE_EXHAUSTED\n // eslint-disable-next-line no-fallthrough\n case 8:\n // UNAVAILABLE\n // eslint-disable-next-line no-fallthrough\n case 14:\n case 17:\n return true;\n default:\n return false;\n }\n }\n }\n\n return false;\n };\n\n /** @type {NodeAddress[]} */\n this._addresses = [];\n\n /**\n * @private\n * @type {number}\n */\n this._attempt = 0;\n }\n\n /**\n * @returns {?FileId}\n */\n get fileId() {\n return this._fileId;\n }\n\n /**\n * @param {FileId | string} fileId\n * @returns {AddressBookQuery}\n */\n setFileId(fileId) {\n this._fileId =\n typeof fileId === \"string\"\n ? FileId.fromString(fileId)\n : fileId.clone();\n\n return this;\n }\n\n /**\n * @returns {?number}\n */\n get limit() {\n return this._limit;\n }\n\n /**\n * @param {number} limit\n * @returns {AddressBookQuery}\n */\n setLimit(limit) {\n this._limit = limit;\n\n return this;\n }\n\n /**\n * @param {number} attempts\n * @returns {this}\n */\n setMaxAttempts(attempts) {\n this._maxAttempts = attempts;\n return this;\n }\n\n /**\n * @param {number} backoff\n * @returns {this}\n */\n setMaxBackoff(backoff) {\n this._maxBackoff = backoff;\n return this;\n }\n\n /**\n * @param {Client<Channel>} client\n * @param {number=} requestTimeout\n * @returns {Promise<NodeAddressBook>}\n */\n execute(client, requestTimeout) {\n // Extra validation when initializing the client with only a mirror network\n if (client._network._network.size === 0 && !client._timer) {\n throw new Error(\n \"The client's network update period is required. Please set it using the setNetworkUpdatePeriod method.\",\n );\n }\n\n return new Promise((resolve, reject) => {\n this._makeServerStreamRequest(\n client,\n /** @type {(value: NodeAddressBook) => void} */ (resolve),\n reject,\n requestTimeout,\n );\n });\n }\n\n /**\n * @private\n * @param {Client<Channel>} client\n * @param {(value: NodeAddressBook) => void} resolve\n * @param {(error: Error) => void} reject\n * @param {number=} requestTimeout\n */\n _makeServerStreamRequest(client, resolve, reject, requestTimeout) {\n const request =\n HieroProto.com.hedera.mirror.api.proto.AddressBookQuery.encode({\n fileId:\n this._fileId != null ? this._fileId._toProtobuf() : null,\n limit: this._limit,\n }).finish();\n\n client._mirrorNetwork\n .getNextMirrorNode()\n .getChannel()\n .makeServerStreamRequest(\n \"NetworkService\",\n \"getNodes\",\n request,\n (data) => {\n this._addresses.push(\n NodeAddress._fromProtobuf(\n HieroProto.proto.NodeAddress.decode(data),\n ),\n );\n\n if (this._limit != null && this._limit > 0) {\n this._limit = this._limit - 1;\n }\n },\n (error) => {\n const message =\n error instanceof Error ? error.message : error.details;\n if (\n this._attempt < this._maxAttempts &&\n !client.isClientShutDown &&\n this._retryHandler(error)\n ) {\n const delay = Math.min(\n 250 * 2 ** this._attempt,\n this._maxBackoff,\n );\n if (this._attempt >= this._maxAttempts) {\n console.warn(\n `Error getting nodes from mirror for file ${\n this._fileId != null\n ? this._fileId.toString()\n : \"UNKNOWN\"\n } during attempt ${\n this._attempt\n }. Waiting ${delay} ms before next attempt: ${message}`,\n );\n }\n if (this._logger) {\n this._logger.debug(\n `Error getting nodes from mirror for file ${\n this._fileId != null\n ? this._fileId.toString()\n : \"UNKNOWN\"\n } during attempt ${\n this._attempt\n }. Waiting ${delay} ms before next attempt: ${message}`,\n );\n }\n\n this._attempt += 1;\n\n setTimeout(() => {\n this._makeServerStreamRequest(\n client,\n resolve,\n reject,\n requestTimeout,\n );\n }, delay);\n } else {\n reject(new Error(\"failed to query address book\"));\n }\n },\n () => {\n resolve(\n new NodeAddressBook({ nodeAddresses: this._addresses }),\n );\n },\n );\n }\n}\n"],"names":["AddressBookQuery","Query","constructor","props","super","this","_fileId","fileId","setFileId","_limit","limit","setLimit","_retryHandler","error","Error","code","RST_STREAM","test","details","toString","_addresses","_attempt","FileId","fromString","clone","setMaxAttempts","attempts","_maxAttempts","setMaxBackoff","backoff","_maxBackoff","execute","client","requestTimeout","_network","size","_timer","Promise","resolve","reject","_makeServerStreamRequest","request","HieroProto","com","hedera","mirror","api","proto","encode","_toProtobuf","finish","_mirrorNetwork","getNextMirrorNode","getChannel","makeServerStreamRequest","data","push","NodeAddress","_fromProtobuf","decode","message","isClientShutDown","delay","Math","min","console","warn","_logger","debug","setTimeout","NodeAddressBook","nodeAddresses"],"mappings":"mPA6Be,MAAMA,UAAyBC,EAM1C,WAAAC,CAAYC,EAAQ,IAChBC,QAMAC,KAAKC,QAAU,KACK,MAAhBH,EAAMI,QACNF,KAAKG,UAAUL,EAAMI,QAOzBF,KAAKI,OAAS,KACK,MAAfN,EAAMO,OACNL,KAAKM,SAASR,EAAMO,OAOxBL,KAAKO,cAAiBC,IAClB,GAAa,MAATA,EAAe,CACf,GAAIA,aAAiBC,MAGjB,OAAO,EAIP,OAAQD,EAAME,MAGV,KAAK,GACD,OAAOC,EAAWC,KAAKJ,EAAMK,QAAQC,YAGzC,KAAK,EAGL,KAAK,EAGL,KAAK,GACL,KAAK,GACD,OAAO,EACX,QACI,OAAO,EAGnC,CAEY,OAAO,CAAK,EAIhBd,KAAKe,WAAa,GAMlBf,KAAKgB,SAAW,CACxB,CAKI,UAAId,GACA,OAAOF,KAAKC,OACpB,CAMI,SAAAE,CAAUD,GAMN,OALAF,KAAKC,QACiB,iBAAXC,EACDe,EAAOC,WAAWhB,GAClBA,EAAOiB,QAEVnB,IACf,CAKI,SAAIK,GACA,OAAOL,KAAKI,MACpB,CAMI,QAAAE,CAASD,GAGL,OAFAL,KAAKI,OAASC,EAEPL,IACf,CAMI,cAAAoB,CAAeC,GAEX,OADArB,KAAKsB,aAAeD,EACbrB,IACf,CAMI,aAAAuB,CAAcC,GAEV,OADAxB,KAAKyB,YAAcD,EACZxB,IACf,CAOI,OAAA0B,CAAQC,EAAQC,GAEZ,GAAsC,IAAlCD,EAAOE,SAASA,SAASC,OAAeH,EAAOI,OAC/C,MAAM,IAAItB,MACN,0GAIR,OAAO,IAAIuB,SAAQ,CAACC,EAASC,KACzBlC,KAAKmC,yBACDR,EAChB,EACgBO,EACAN,EACH,GAEb,CASI,wBAAAO,CAAyBR,EAAQM,EAASC,EAAQN,GAC9C,MAAMQ,EACFC,EAAWC,IAAIC,OAAOC,OAAOC,IAAIC,MAAM/C,iBAAiBgD,OAAO,CAC3DzC,OACoB,MAAhBF,KAAKC,QAAkBD,KAAKC,QAAQ2C,cAAgB,KACxDvC,MAAOL,KAAKI,SACbyC,SAEPlB,EAAOmB,eACFC,oBACAC,aACAC,wBACG,iBACA,WACAb,GACCc,IACGlD,KAAKe,WAAWoC,KACZC,EAAYC,cACRhB,EAAWK,MAAMU,YAAYE,OAAOJ,KAIzB,MAAflD,KAAKI,QAAkBJ,KAAKI,OAAS,IACrCJ,KAAKI,OAASJ,KAAKI,OAAS,EACpD,IAEiBI,IACG,MAAM+C,EACF/C,aAAiBC,MAAQD,EAAM+C,QAAU/C,EAAMK,QACnD,GACIb,KAAKgB,SAAWhB,KAAKsB,eACpBK,EAAO6B,kBACRxD,KAAKO,cAAcC,GACrB,CACE,MAAMiD,EAAQC,KAAKC,IACf,IAAM,GAAK3D,KAAKgB,SAChBhB,KAAKyB,aAELzB,KAAKgB,UAAYhB,KAAKsB,cACtBsC,QAAQC,KACJ,4CACoB,MAAhB7D,KAAKC,QACCD,KAAKC,QAAQa,WACb,4BAENd,KAAKgB,qBACIyC,6BAAiCF,KAGlDvD,KAAK8D,SACL9D,KAAK8D,QAAQC,MACT,4CACoB,MAAhB/D,KAAKC,QACCD,KAAKC,QAAQa,WACb,4BAENd,KAAKgB,qBACIyC,6BAAiCF,KAItDvD,KAAKgB,UAAY,EAEjBgD,YAAW,KACPhE,KAAKmC,yBACDR,EACAM,EACAC,EACAN,EACH,GACF6B,EAC3B,MACwBvB,EAAO,IAAIzB,MAAM,gCACzC,IAEgB,KACIwB,EACI,IAAIgC,EAAgB,CAAEC,cAAelE,KAAKe,aAC7C,GAGrB"}
|
|
1
|
+
{"version":3,"file":"AddressBookQuery.js","sources":["../../src/network/AddressBookQuery.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Query from \"../query/Query.js\";\nimport NodeAddress from \"../address_book/NodeAddress.js\";\nimport NodeAddressBook from \"../address_book/NodeAddressBook.js\";\nimport * as HieroProto from \"@hashgraph/proto\";\nimport FileId from \"../file/FileId.js\";\nimport { RST_STREAM } from \"../Executable.js\";\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"../channel/MirrorChannel.js\").MirrorError} MirrorError\n */\n\n/**\n * @template {Channel} ChannelT\n * @typedef {import(\"../client/Client.js\").default<ChannelT, MirrorChannel>} Client<ChannelT, MirrorChannel>\n */\n\n/**\n * Query to get a list of Hedera network node addresses from a mirror node.\n *\n * This query can be used to retrieve node addresses either from a specific file ID\n * or from the most recent address book if no file ID is specified. The response\n * contains node metadata including IP addresses and ports for both node and mirror\n * node services.\n * @augments {Query<NodeAddressBook>}\n */\nexport default class AddressBookQuery extends Query {\n /**\n * @param {object} props\n * @param {FileId | string} [props.fileId]\n * @param {number} [props.limit]\n */\n constructor(props = {}) {\n super();\n\n /**\n * @private\n * @type {?FileId}\n */\n this._fileId = null;\n if (props.fileId != null) {\n this.setFileId(props.fileId);\n }\n\n /**\n * @private\n * @type {?number}\n */\n this._limit = null;\n if (props.limit != null) {\n this.setLimit(props.limit);\n }\n\n /**\n * @private\n * @type {(error: MirrorError | Error | null) => boolean}\n */\n this._retryHandler = (error) => {\n if (error != null) {\n if (error instanceof Error) {\n // Retry on all errors which are not `MirrorError` because they're\n // likely lower level HTTP/2 errors\n return true;\n } else {\n // Retry on `NOT_FOUND`, `RESOURCE_EXHAUSTED`, `UNAVAILABLE`, and conditionally on `INTERNAL`\n // if the message matches the right regex.\n switch (error.code) {\n // INTERNAL\n // eslint-disable-next-line no-fallthrough\n case 13:\n return RST_STREAM.test(error.details.toString());\n // NOT_FOUND\n // eslint-disable-next-line no-fallthrough\n case 5:\n // RESOURCE_EXHAUSTED\n // eslint-disable-next-line no-fallthrough\n case 8:\n // UNAVAILABLE\n // eslint-disable-next-line no-fallthrough\n case 14:\n case 17:\n return true;\n default:\n return false;\n }\n }\n }\n\n return false;\n };\n\n /** @type {NodeAddress[]} */\n this._addresses = [];\n\n /**\n * @private\n * @type {number}\n */\n this._attempt = 0;\n }\n\n /**\n * @returns {?FileId}\n */\n get fileId() {\n return this._fileId;\n }\n\n /**\n * @param {FileId | string} fileId\n * @returns {AddressBookQuery}\n */\n setFileId(fileId) {\n this._fileId =\n typeof fileId === \"string\"\n ? FileId.fromString(fileId)\n : fileId.clone();\n\n return this;\n }\n\n /**\n * @returns {?number}\n */\n get limit() {\n return this._limit;\n }\n\n /**\n * @param {number} limit\n * @returns {AddressBookQuery}\n */\n setLimit(limit) {\n this._limit = limit;\n\n return this;\n }\n\n /**\n * @param {number} attempts\n * @returns {this}\n */\n setMaxAttempts(attempts) {\n this._maxAttempts = attempts;\n return this;\n }\n\n /**\n * @param {number} backoff\n * @returns {this}\n */\n setMaxBackoff(backoff) {\n this._maxBackoff = backoff;\n return this;\n }\n\n /**\n * @param {Client<Channel>} client\n * @param {number=} requestTimeout\n * @returns {Promise<NodeAddressBook>}\n */\n execute(client, requestTimeout) {\n // Extra validation when initializing the client with only a mirror network\n if (client._network._network.size === 0 && !client._timer) {\n throw new Error(\n \"The client's network update period is required. Please set it using the setNetworkUpdatePeriod method.\",\n );\n }\n\n return new Promise((resolve, reject) => {\n this._makeServerStreamRequest(\n client,\n /** @type {(value: NodeAddressBook) => void} */ (resolve),\n reject,\n requestTimeout,\n );\n });\n }\n\n /**\n * @private\n * @param {Client<Channel>} client\n * @param {(value: NodeAddressBook) => void} resolve\n * @param {(error: Error) => void} reject\n * @param {number=} requestTimeout\n */\n _makeServerStreamRequest(client, resolve, reject, requestTimeout) {\n const request =\n HieroProto.com.hedera.mirror.api.proto.AddressBookQuery.encode({\n fileId:\n this._fileId != null ? this._fileId._toProtobuf() : null,\n limit: this._limit,\n }).finish();\n\n client._mirrorNetwork\n .getNextMirrorNode()\n .getChannel()\n .makeServerStreamRequest(\n \"NetworkService\",\n \"getNodes\",\n request,\n (data) => {\n this._addresses.push(\n NodeAddress._fromProtobuf(\n HieroProto.proto.NodeAddress.decode(data),\n ),\n );\n\n if (this._limit != null && this._limit > 0) {\n this._limit = this._limit - 1;\n }\n },\n (error) => {\n const message =\n error instanceof Error ? error.message : error.details;\n if (\n this._attempt < this._maxAttempts &&\n !client.isClientShutDown &&\n this._retryHandler(error)\n ) {\n const delay = Math.min(\n 250 * 2 ** this._attempt,\n this._maxBackoff,\n );\n if (this._attempt >= this._maxAttempts) {\n console.warn(\n `Error getting nodes from mirror for file ${\n this._fileId != null\n ? this._fileId.toString()\n : \"UNKNOWN\"\n } during attempt ${\n this._attempt\n }. Waiting ${delay} ms before next attempt: ${message}`,\n );\n }\n if (this._logger) {\n this._logger.debug(\n `Error getting nodes from mirror for file ${\n this._fileId != null\n ? this._fileId.toString()\n : \"UNKNOWN\"\n } during attempt ${\n this._attempt\n }. Waiting ${delay} ms before next attempt: ${message}`,\n );\n }\n\n this._attempt += 1;\n\n setTimeout(() => {\n this._makeServerStreamRequest(\n client,\n resolve,\n reject,\n requestTimeout,\n );\n }, delay);\n } else {\n reject(new Error(\"failed to query address book\"));\n }\n },\n () => {\n resolve(\n new NodeAddressBook({ nodeAddresses: this._addresses }),\n );\n },\n );\n }\n}\n"],"names":["AddressBookQuery","Query","constructor","props","super","this","_fileId","fileId","setFileId","_limit","limit","setLimit","_retryHandler","error","Error","code","RST_STREAM","test","details","toString","_addresses","_attempt","FileId","fromString","clone","setMaxAttempts","attempts","_maxAttempts","setMaxBackoff","backoff","_maxBackoff","execute","client","requestTimeout","_network","size","_timer","Promise","resolve","reject","_makeServerStreamRequest","request","HieroProto","com","hedera","mirror","api","proto","encode","_toProtobuf","finish","_mirrorNetwork","getNextMirrorNode","getChannel","makeServerStreamRequest","data","push","NodeAddress","_fromProtobuf","decode","message","isClientShutDown","delay","Math","min","console","warn","_logger","debug","setTimeout","NodeAddressBook","nodeAddresses"],"mappings":"mPA6Be,MAAMA,UAAyBC,EAM1C,WAAAC,CAAYC,EAAQ,IAChBC,QAMAC,KAAKC,QAAU,KACK,MAAhBH,EAAMI,QACNF,KAAKG,UAAUL,EAAMI,QAOzBF,KAAKI,OAAS,KACK,MAAfN,EAAMO,OACNL,KAAKM,SAASR,EAAMO,OAOxBL,KAAKO,cAAiBC,IAClB,GAAa,MAATA,EAAe,CACf,GAAIA,aAAiBC,MAGjB,OAAO,EAIP,OAAQD,EAAME,MAGV,KAAK,GACD,OAAOC,EAAWC,KAAKJ,EAAMK,QAAQC,YAGzC,KAAK,EAGL,KAAK,EAGL,KAAK,GACL,KAAK,GACD,OAAO,EACX,QACI,OAAO,EAGnC,CAEY,OAAO,GAIXd,KAAKe,WAAa,GAMlBf,KAAKgB,SAAW,CACxB,CAKI,UAAId,GACA,OAAOF,KAAKC,OACpB,CAMI,SAAAE,CAAUD,GAMN,OALAF,KAAKC,QACiB,iBAAXC,EACDe,EAAOC,WAAWhB,GAClBA,EAAOiB,QAEVnB,IACf,CAKI,SAAIK,GACA,OAAOL,KAAKI,MACpB,CAMI,QAAAE,CAASD,GAGL,OAFAL,KAAKI,OAASC,EAEPL,IACf,CAMI,cAAAoB,CAAeC,GAEX,OADArB,KAAKsB,aAAeD,EACbrB,IACf,CAMI,aAAAuB,CAAcC,GAEV,OADAxB,KAAKyB,YAAcD,EACZxB,IACf,CAOI,OAAA0B,CAAQC,EAAQC,GAEZ,GAAsC,IAAlCD,EAAOE,SAASA,SAASC,OAAeH,EAAOI,OAC/C,MAAM,IAAItB,MACN,0GAIR,OAAO,IAAIuB,QAAQ,CAACC,EAASC,KACzBlC,KAAKmC,yBACDR,EAChB,EACgBO,EACAN,IAGhB,CASI,wBAAAO,CAAyBR,EAAQM,EAASC,EAAQN,GAC9C,MAAMQ,EACFC,EAAWC,IAAIC,OAAOC,OAAOC,IAAIC,MAAM/C,iBAAiBgD,OAAO,CAC3DzC,OACoB,MAAhBF,KAAKC,QAAkBD,KAAKC,QAAQ2C,cAAgB,KACxDvC,MAAOL,KAAKI,SACbyC,SAEPlB,EAAOmB,eACFC,oBACAC,aACAC,wBACG,iBACA,WACAb,EACCc,IACGlD,KAAKe,WAAWoC,KACZC,EAAYC,cACRhB,EAAWK,MAAMU,YAAYE,OAAOJ,KAIzB,MAAflD,KAAKI,QAAkBJ,KAAKI,OAAS,IACrCJ,KAAKI,OAASJ,KAAKI,OAAS,IAGnCI,IACG,MAAM+C,EACF/C,aAAiBC,MAAQD,EAAM+C,QAAU/C,EAAMK,QACnD,GACIb,KAAKgB,SAAWhB,KAAKsB,eACpBK,EAAO6B,kBACRxD,KAAKO,cAAcC,GACrB,CACE,MAAMiD,EAAQC,KAAKC,IACf,IAAM,GAAK3D,KAAKgB,SAChBhB,KAAKyB,aAELzB,KAAKgB,UAAYhB,KAAKsB,cACtBsC,QAAQC,KACJ,4CACoB,MAAhB7D,KAAKC,QACCD,KAAKC,QAAQa,WACb,4BAENd,KAAKgB,qBACIyC,6BAAiCF,KAGlDvD,KAAK8D,SACL9D,KAAK8D,QAAQC,MACT,4CACoB,MAAhB/D,KAAKC,QACCD,KAAKC,QAAQa,WACb,4BAENd,KAAKgB,qBACIyC,6BAAiCF,KAItDvD,KAAKgB,UAAY,EAEjBgD,WAAW,KACPhE,KAAKmC,yBACDR,EACAM,EACAC,EACAN,IAEL6B,EAC3B,MACwBvB,EAAO,IAAIzB,MAAM,kCAGzB,KACIwB,EACI,IAAIgC,EAAgB,CAAEC,cAAelE,KAAKe,eAIlE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"../query/Query.js";import e from"../address_book/NodeAddressBook.js";import r from"../file/FileId.js";import{RST_STREAM as s}from"../Executable.js";import i from"../address_book/NodeAddress.js";import{MAINNET as o,WEB_TESTNET as n,WEB_PREVIEWNET as d}from"../constants/ClientConstants.js";class a extends t{constructor(t={}){super(),this._fileId=null,null!=t.fileId&&this.setFileId(t.fileId),this._limit=null,null!=t.limit&&this.setLimit(t.limit),this._retryHandler=t=>{if(null!=t){if(t instanceof Error)return!0;switch(t.code){case 13:return s.test(t.details.toString());case 5:case 8:case 14:case 17:return!0;default:return!1}}return!1},this._addresses=[]}get fileId(){return this._fileId}setFileId(t){return this._fileId="string"==typeof t?r.fromString(t):t.clone(),this}get limit(){return this._limit}setLimit(t){return this._limit=t,this}setMaxAttempts(t){return this._maxAttempts=t,this}setMaxBackoff(t){return this._maxBackoff=t,this}execute(t,e){if(0===t._network._network.size&&!t._timer)throw new Error("The client's network update period is required. Please set it using the setNetworkUpdatePeriod method.");return new Promise((
|
|
1
|
+
import t from"../query/Query.js";import e from"../address_book/NodeAddressBook.js";import r from"../file/FileId.js";import{RST_STREAM as s}from"../Executable.js";import i from"../address_book/NodeAddress.js";import{MAINNET as o,WEB_TESTNET as n,WEB_PREVIEWNET as d}from"../constants/ClientConstants.js";class a extends t{constructor(t={}){super(),this._fileId=null,null!=t.fileId&&this.setFileId(t.fileId),this._limit=null,null!=t.limit&&this.setLimit(t.limit),this._retryHandler=t=>{if(null!=t){if(t instanceof Error)return!0;switch(t.code){case 13:return s.test(t.details.toString());case 5:case 8:case 14:case 17:return!0;default:return!1}}return!1},this._addresses=[]}get fileId(){return this._fileId}setFileId(t){return this._fileId="string"==typeof t?r.fromString(t):t.clone(),this}get limit(){return this._limit}setLimit(t){return this._limit=t,this}setMaxAttempts(t){return this._maxAttempts=t,this}setMaxBackoff(t){return this._maxBackoff=t,this}execute(t,e){if(0===t._network._network.size&&!t._timer)throw new Error("The client's network update period is required. Please set it using the setNetworkUpdatePeriod method.");return new Promise((r,s)=>{this._makeFetchRequest(t,r,s,e)})}async _makeFetchRequest(t,r,s,o){const{port:n,address:d}=t._mirrorNetwork.getNextMirrorNode().address;let a=`${d.includes("127.0.0.1")||d.includes("localhost")?"http":"https"}://${d}`;n&&(a=`${a}:${n}`);const l=new URL(`${a}/api/v1/network/nodes`);null!=this._fileId&&l.searchParams.append("file.id",this._fileId.toString()),null!=this._limit&&l.searchParams.append("limit",this._limit.toString());for(let n=0;n<=this._maxAttempts;n++)try{const s=await fetch(l.toString(),{method:"GET",headers:{Accept:"application/json"},signal:o?AbortSignal.timeout(o):void 0});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);const n=(await s.json()).nodes||[];this._addresses=n.map(e=>i.fromJSON({nodeId:e.node_id.toString(),accountId:e.node_account_id,addresses:this._handleAddressesFromGrpcProxyEndpoint(e,t),certHash:e.node_cert_hash,publicKey:e.public_key,description:e.description,stake:e.stake.toString()}));return void r(new e({nodeAddresses:this._addresses}))}catch(e){console.error("Error in _makeFetchRequest:",e);const r=e instanceof Error?e.message:String(e);if(n<this._maxAttempts&&!t.isClientShutDown&&this._retryHandler(e)){const t=Math.min(250*2**n,this._maxBackoff);this._logger&&this._logger.debug(`Error getting nodes from mirror for file ${null!=this._fileId?this._fileId.toString():"UNKNOWN"} during attempt ${n+1}. Waiting ${t} ms before next attempt: ${r}`),await new Promise(e=>setTimeout(e,t));continue}const i=n>=this._maxAttempts?`Failed to query address book after ${this._maxAttempts+1} attempts. Last error: ${r}`:`Failed to query address book: ${r}`;return void s(new Error(i))}s(new Error("failed to query address book"))}_handleAddressesFromGrpcProxyEndpoint(t,e){const r=t.grpc_proxy_endpoint;if(r&&r.domain_name&&r.port)return[{address:r.domain_name,port:r.port.toString()}];let s;const i=e._network.ledgerId;if(i&&i.isMainnet())s=o;else if(i&&i.isTestnet())s=n;else{if(!i||!i.isPreviewnet())return[];s=d}const a=t.node_account_id;for(const[t,e]of Object.entries(s))if(e.toString()===a){const[e,r]=t.split(":");return[{address:e,port:r}]}return[]}}export{a as default};
|
|
2
2
|
//# sourceMappingURL=AddressBookQueryWeb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressBookQueryWeb.js","sources":["../../src/network/AddressBookQueryWeb.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Query from \"../query/Query.js\";\nimport NodeAddressBook from \"../address_book/NodeAddressBook.js\";\nimport FileId from \"../file/FileId.js\";\nimport { RST_STREAM } from \"../Executable.js\";\nimport NodeAddress from \"../address_book/NodeAddress.js\";\nimport {\n MAINNET,\n WEB_TESTNET,\n WEB_PREVIEWNET,\n} from \"../constants/ClientConstants.js\";\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"../channel/MirrorChannel.js\").MirrorError} MirrorError\n */\n\n/**\n * @template {Channel} ChannelT\n * @typedef {import(\"../client/Client.js\").default<ChannelT, MirrorChannel>} Client<ChannelT, MirrorChannel>\n */\n\n/**\n * @typedef {object} EndpointWebResponse\n * @property {string} domain_name\n * @property {string} ip_address_v4\n * @property {number} port\n */\n\n/**\n * @typedef {object} AddressBookQueryWebResponse\n * @property {Array<{\n * admin_key: {\n * key: string,\n * _type: string,\n * },\n * decline_reward: boolean,\n * grpc_proxy_endpoint: EndpointWebResponse,\n * file_id: string,\n * memo: string,\n * public_key: string,\n * node_id: number,\n * node_account_id: string,\n * node_cert_hash: string,\n * address: string,\n * service_endpoints: EndpointWebResponse[],\n * description: string,\n * stake: number\n * }>} nodes\n */\n\n/**\n * Web-compatible query to get a list of Hedera network node addresses from a mirror node.\n * Uses fetch API instead of gRPC for web environments.\n *\n * This query can be used to retrieve node addresses either from a specific file ID\n * or from the most recent address book if no file ID is specified. The response\n * contains node metadata including IP addresses and ports for both node and mirror\n * node services.\n * @augments {Query<NodeAddressBook>}\n */\nexport default class AddressBookQueryWeb extends Query {\n /**\n * @param {object} props\n * @param {FileId | string} [props.fileId]\n * @param {number} [props.limit]\n */\n constructor(props = {}) {\n super();\n\n /**\n * @private\n * @type {?FileId}\n */\n this._fileId = null;\n if (props.fileId != null) {\n this.setFileId(props.fileId);\n }\n\n /**\n * Page limit for the query\n * @private\n * @type {?number}\n */\n this._limit = null;\n if (props.limit != null) {\n this.setLimit(props.limit);\n }\n\n /**\n * @private\n * @type {(error: MirrorError | Error | null) => boolean}\n */\n this._retryHandler = (error) => {\n if (error != null) {\n if (error instanceof Error) {\n // Retry on all errors which are not `MirrorError` because they're\n // likely lower level HTTP errors\n return true;\n } else {\n // Retry on `NOT_FOUND`, `RESOURCE_EXHAUSTED`, `UNAVAILABLE`, and conditionally on `INTERNAL`\n // if the message matches the right regex.\n switch (error.code) {\n // INTERNAL\n // eslint-disable-next-line no-fallthrough\n case 13:\n return RST_STREAM.test(error.details.toString());\n // NOT_FOUND\n // eslint-disable-next-line no-fallthrough\n case 5:\n // RESOURCE_EXHAUSTED\n // eslint-disable-next-line no-fallthrough\n case 8:\n // UNAVAILABLE\n // eslint-disable-next-line no-fallthrough\n case 14:\n case 17:\n return true;\n default:\n return false;\n }\n }\n }\n\n return false;\n };\n\n /** @type {NodeAddress[]} */\n this._addresses = [];\n }\n\n /**\n * @returns {?FileId}\n */\n get fileId() {\n return this._fileId;\n }\n\n /**\n * @param {FileId | string} fileId\n * @returns {AddressBookQueryWeb}\n */\n setFileId(fileId) {\n this._fileId =\n typeof fileId === \"string\"\n ? FileId.fromString(fileId)\n : fileId.clone();\n\n return this;\n }\n\n /**\n * Page limit for the query\n * @returns {?number}\n */\n get limit() {\n return this._limit;\n }\n\n /**\n * Set the page limit for the query\n * @param {number} limit\n * @returns {AddressBookQueryWeb}\n */\n setLimit(limit) {\n this._limit = limit;\n\n return this;\n }\n\n /**\n * @param {number} attempts\n * @returns {this}\n */\n setMaxAttempts(attempts) {\n this._maxAttempts = attempts;\n return this;\n }\n\n /**\n * @param {number} backoff\n * @returns {this}\n */\n setMaxBackoff(backoff) {\n this._maxBackoff = backoff;\n return this;\n }\n\n /**\n * @param {Client<Channel>} client\n * @param {number=} requestTimeout\n * @returns {Promise<NodeAddressBook>}\n */\n execute(client, requestTimeout) {\n // Extra validation when initializing the client with only a mirror network\n if (client._network._network.size === 0 && !client._timer) {\n throw new Error(\n \"The client's network update period is required. Please set it using the setNetworkUpdatePeriod method.\",\n );\n }\n\n return new Promise((resolve, reject) => {\n void this._makeFetchRequest(\n client,\n resolve,\n reject,\n requestTimeout,\n );\n });\n }\n\n /**\n * @private\n * @param {Client<Channel>} client\n * @param {(value: NodeAddressBook) => void} resolve\n * @param {(error: Error) => void} reject\n * @param {number=} requestTimeout\n */\n async _makeFetchRequest(client, resolve, reject, requestTimeout) {\n const { port, address } =\n client._mirrorNetwork.getNextMirrorNode().address;\n\n let baseUrl = `${address.includes(\"127.0.0.1\") || address.includes(\"localhost\") ? \"http\" : \"https\"}://${address}`;\n\n if (port) {\n baseUrl = `${baseUrl}:${port}`;\n }\n\n const url = new URL(`${baseUrl}/api/v1/network/nodes`);\n\n if (this._fileId != null) {\n url.searchParams.append(\"file.id\", this._fileId.toString());\n }\n if (this._limit != null) {\n url.searchParams.append(\"limit\", this._limit.toString());\n }\n\n for (let attempt = 0; attempt <= this._maxAttempts; attempt++) {\n try {\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n },\n signal: requestTimeout\n ? AbortSignal.timeout(requestTimeout)\n : undefined,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = /** @type {AddressBookQueryWebResponse} */ (\n await response.json()\n );\n\n const nodes = data.nodes || [];\n\n // eslint-disable-next-line ie11/no-loop-func\n this._addresses = nodes.map((node) =>\n NodeAddress.fromJSON({\n nodeId: node.node_id.toString(),\n accountId: node.node_account_id,\n addresses: this._handleAddressesFromGrpcProxyEndpoint(\n node,\n client,\n ),\n certHash: node.node_cert_hash,\n publicKey: node.public_key,\n description: node.description,\n stake: node.stake.toString(),\n }),\n );\n\n const addressBook = new NodeAddressBook({\n nodeAddresses: this._addresses,\n });\n\n resolve(addressBook);\n return;\n } catch (error) {\n console.error(\"Error in _makeFetchRequest:\", error);\n const message =\n error instanceof Error ? error.message : String(error);\n\n // Check if we should retry\n if (\n attempt < this._maxAttempts &&\n !client.isClientShutDown &&\n this._retryHandler(\n /** @type {MirrorError | Error | null} */ (error),\n )\n ) {\n const delay = Math.min(\n 250 * 2 ** attempt,\n this._maxBackoff,\n );\n\n if (this._logger) {\n this._logger.debug(\n `Error getting nodes from mirror for file ${\n this._fileId != null\n ? this._fileId.toString()\n : \"UNKNOWN\"\n } during attempt ${\n attempt + 1\n }. Waiting ${delay} ms before next attempt: ${message}`,\n );\n }\n\n // Wait before next attempt\n // eslint-disable-next-line ie11/no-loop-func\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n\n // If we shouldn't retry or have exhausted attempts, reject\n const maxAttemptsReached = attempt >= this._maxAttempts;\n const errorMessage = maxAttemptsReached\n ? `Failed to query address book after ${this._maxAttempts + 1} attempts. Last error: ${message}`\n : `Failed to query address book: ${message}`;\n reject(new Error(errorMessage));\n return;\n }\n }\n\n // This should never be reached, but just in case\n reject(new Error(\"failed to query address book\"));\n }\n\n /**\n * Handles the grpc_proxy_endpoint fallback logic for a node.\n * @param {AddressBookQueryWebResponse['nodes'][number]} node - The node object from the mirror node response.\n * @param {Client<Channel>} client - The client instance.\n * @returns {Array<{address: string, port: string}>}\n */\n _handleAddressesFromGrpcProxyEndpoint(node, client) {\n const grpcProxyEndpoint = node.grpc_proxy_endpoint;\n\n if (\n grpcProxyEndpoint &&\n grpcProxyEndpoint.domain_name &&\n grpcProxyEndpoint.port\n ) {\n return [\n {\n address: grpcProxyEndpoint.domain_name,\n port: grpcProxyEndpoint.port.toString(),\n },\n ];\n }\n\n let networkConstant;\n const ledgerId = client._network.ledgerId;\n\n if (ledgerId && ledgerId.isMainnet()) {\n networkConstant = MAINNET;\n } else if (ledgerId && ledgerId.isTestnet()) {\n networkConstant = WEB_TESTNET;\n } else if (ledgerId && ledgerId.isPreviewnet()) {\n networkConstant = WEB_PREVIEWNET;\n } else {\n return [];\n }\n\n const nodeAccountId = node.node_account_id;\n\n for (const [address, accountIdObj] of Object.entries(networkConstant)) {\n if (accountIdObj.toString() === nodeAccountId) {\n const [domain_name, port] = address.split(\":\");\n\n return [\n {\n address: domain_name,\n port,\n },\n ];\n }\n }\n\n return [];\n }\n}\n"],"names":["AddressBookQueryWeb","Query","constructor","props","super","this","_fileId","fileId","setFileId","_limit","limit","setLimit","_retryHandler","error","Error","code","RST_STREAM","test","details","toString","_addresses","FileId","fromString","clone","setMaxAttempts","attempts","_maxAttempts","setMaxBackoff","backoff","_maxBackoff","execute","client","requestTimeout","_network","size","_timer","Promise","resolve","reject","_makeFetchRequest","port","address","_mirrorNetwork","getNextMirrorNode","baseUrl","includes","url","URL","searchParams","append","attempt","response","fetch","method","headers","Accept","signal","AbortSignal","timeout","undefined","ok","status","nodes","json","map","node","NodeAddress","fromJSON","nodeId","node_id","accountId","node_account_id","addresses","_handleAddressesFromGrpcProxyEndpoint","certHash","node_cert_hash","publicKey","public_key","description","stake","NodeAddressBook","nodeAddresses","console","message","String","isClientShutDown","delay","Math","min","_logger","debug","setTimeout","errorMessage","grpcProxyEndpoint","grpc_proxy_endpoint","domain_name","networkConstant","ledgerId","isMainnet","MAINNET","isTestnet","WEB_TESTNET","isPreviewnet","WEB_PREVIEWNET","nodeAccountId","accountIdObj","Object","entries","split"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AddressBookQueryWeb.js","sources":["../../src/network/AddressBookQueryWeb.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Query from \"../query/Query.js\";\nimport NodeAddressBook from \"../address_book/NodeAddressBook.js\";\nimport FileId from \"../file/FileId.js\";\nimport { RST_STREAM } from \"../Executable.js\";\nimport NodeAddress from \"../address_book/NodeAddress.js\";\nimport {\n MAINNET,\n WEB_TESTNET,\n WEB_PREVIEWNET,\n} from \"../constants/ClientConstants.js\";\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../channel/MirrorChannel.js\").default} MirrorChannel\n * @typedef {import(\"../channel/MirrorChannel.js\").MirrorError} MirrorError\n */\n\n/**\n * @template {Channel} ChannelT\n * @typedef {import(\"../client/Client.js\").default<ChannelT, MirrorChannel>} Client<ChannelT, MirrorChannel>\n */\n\n/**\n * @typedef {object} EndpointWebResponse\n * @property {string} domain_name\n * @property {string} ip_address_v4\n * @property {number} port\n */\n\n/**\n * @typedef {object} AddressBookQueryWebResponse\n * @property {Array<{\n * admin_key: {\n * key: string,\n * _type: string,\n * },\n * decline_reward: boolean,\n * grpc_proxy_endpoint: EndpointWebResponse,\n * file_id: string,\n * memo: string,\n * public_key: string,\n * node_id: number,\n * node_account_id: string,\n * node_cert_hash: string,\n * address: string,\n * service_endpoints: EndpointWebResponse[],\n * description: string,\n * stake: number\n * }>} nodes\n */\n\n/**\n * Web-compatible query to get a list of Hedera network node addresses from a mirror node.\n * Uses fetch API instead of gRPC for web environments.\n *\n * This query can be used to retrieve node addresses either from a specific file ID\n * or from the most recent address book if no file ID is specified. The response\n * contains node metadata including IP addresses and ports for both node and mirror\n * node services.\n * @augments {Query<NodeAddressBook>}\n */\nexport default class AddressBookQueryWeb extends Query {\n /**\n * @param {object} props\n * @param {FileId | string} [props.fileId]\n * @param {number} [props.limit]\n */\n constructor(props = {}) {\n super();\n\n /**\n * @private\n * @type {?FileId}\n */\n this._fileId = null;\n if (props.fileId != null) {\n this.setFileId(props.fileId);\n }\n\n /**\n * Page limit for the query\n * @private\n * @type {?number}\n */\n this._limit = null;\n if (props.limit != null) {\n this.setLimit(props.limit);\n }\n\n /**\n * @private\n * @type {(error: MirrorError | Error | null) => boolean}\n */\n this._retryHandler = (error) => {\n if (error != null) {\n if (error instanceof Error) {\n // Retry on all errors which are not `MirrorError` because they're\n // likely lower level HTTP errors\n return true;\n } else {\n // Retry on `NOT_FOUND`, `RESOURCE_EXHAUSTED`, `UNAVAILABLE`, and conditionally on `INTERNAL`\n // if the message matches the right regex.\n switch (error.code) {\n // INTERNAL\n // eslint-disable-next-line no-fallthrough\n case 13:\n return RST_STREAM.test(error.details.toString());\n // NOT_FOUND\n // eslint-disable-next-line no-fallthrough\n case 5:\n // RESOURCE_EXHAUSTED\n // eslint-disable-next-line no-fallthrough\n case 8:\n // UNAVAILABLE\n // eslint-disable-next-line no-fallthrough\n case 14:\n case 17:\n return true;\n default:\n return false;\n }\n }\n }\n\n return false;\n };\n\n /** @type {NodeAddress[]} */\n this._addresses = [];\n }\n\n /**\n * @returns {?FileId}\n */\n get fileId() {\n return this._fileId;\n }\n\n /**\n * @param {FileId | string} fileId\n * @returns {AddressBookQueryWeb}\n */\n setFileId(fileId) {\n this._fileId =\n typeof fileId === \"string\"\n ? FileId.fromString(fileId)\n : fileId.clone();\n\n return this;\n }\n\n /**\n * Page limit for the query\n * @returns {?number}\n */\n get limit() {\n return this._limit;\n }\n\n /**\n * Set the page limit for the query\n * @param {number} limit\n * @returns {AddressBookQueryWeb}\n */\n setLimit(limit) {\n this._limit = limit;\n\n return this;\n }\n\n /**\n * @param {number} attempts\n * @returns {this}\n */\n setMaxAttempts(attempts) {\n this._maxAttempts = attempts;\n return this;\n }\n\n /**\n * @param {number} backoff\n * @returns {this}\n */\n setMaxBackoff(backoff) {\n this._maxBackoff = backoff;\n return this;\n }\n\n /**\n * @param {Client<Channel>} client\n * @param {number=} requestTimeout\n * @returns {Promise<NodeAddressBook>}\n */\n execute(client, requestTimeout) {\n // Extra validation when initializing the client with only a mirror network\n if (client._network._network.size === 0 && !client._timer) {\n throw new Error(\n \"The client's network update period is required. Please set it using the setNetworkUpdatePeriod method.\",\n );\n }\n\n return new Promise((resolve, reject) => {\n void this._makeFetchRequest(\n client,\n resolve,\n reject,\n requestTimeout,\n );\n });\n }\n\n /**\n * @private\n * @param {Client<Channel>} client\n * @param {(value: NodeAddressBook) => void} resolve\n * @param {(error: Error) => void} reject\n * @param {number=} requestTimeout\n */\n async _makeFetchRequest(client, resolve, reject, requestTimeout) {\n const { port, address } =\n client._mirrorNetwork.getNextMirrorNode().address;\n\n let baseUrl = `${\n address.includes(\"127.0.0.1\") || address.includes(\"localhost\")\n ? \"http\"\n : \"https\"\n }://${address}`;\n\n if (port) {\n baseUrl = `${baseUrl}:${port}`;\n }\n\n const url = new URL(`${baseUrl}/api/v1/network/nodes`);\n\n if (this._fileId != null) {\n url.searchParams.append(\"file.id\", this._fileId.toString());\n }\n if (this._limit != null) {\n url.searchParams.append(\"limit\", this._limit.toString());\n }\n\n for (let attempt = 0; attempt <= this._maxAttempts; attempt++) {\n try {\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n const response = await fetch(url.toString(), {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n },\n signal: requestTimeout\n ? AbortSignal.timeout(requestTimeout)\n : undefined,\n });\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const data = /** @type {AddressBookQueryWebResponse} */ (\n await response.json()\n );\n\n const nodes = data.nodes || [];\n\n // eslint-disable-next-line ie11/no-loop-func\n this._addresses = nodes.map((node) =>\n NodeAddress.fromJSON({\n nodeId: node.node_id.toString(),\n accountId: node.node_account_id,\n addresses: this._handleAddressesFromGrpcProxyEndpoint(\n node,\n client,\n ),\n certHash: node.node_cert_hash,\n publicKey: node.public_key,\n description: node.description,\n stake: node.stake.toString(),\n }),\n );\n\n const addressBook = new NodeAddressBook({\n nodeAddresses: this._addresses,\n });\n\n resolve(addressBook);\n return;\n } catch (error) {\n console.error(\"Error in _makeFetchRequest:\", error);\n const message =\n error instanceof Error ? error.message : String(error);\n\n // Check if we should retry\n if (\n attempt < this._maxAttempts &&\n !client.isClientShutDown &&\n this._retryHandler(\n /** @type {MirrorError | Error | null} */ (error),\n )\n ) {\n const delay = Math.min(\n 250 * 2 ** attempt,\n this._maxBackoff,\n );\n\n if (this._logger) {\n this._logger.debug(\n `Error getting nodes from mirror for file ${\n this._fileId != null\n ? this._fileId.toString()\n : \"UNKNOWN\"\n } during attempt ${\n attempt + 1\n }. Waiting ${delay} ms before next attempt: ${message}`,\n );\n }\n\n // Wait before next attempt\n // eslint-disable-next-line ie11/no-loop-func\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n\n // If we shouldn't retry or have exhausted attempts, reject\n const maxAttemptsReached = attempt >= this._maxAttempts;\n const errorMessage = maxAttemptsReached\n ? `Failed to query address book after ${\n this._maxAttempts + 1\n } attempts. Last error: ${message}`\n : `Failed to query address book: ${message}`;\n reject(new Error(errorMessage));\n return;\n }\n }\n\n // This should never be reached, but just in case\n reject(new Error(\"failed to query address book\"));\n }\n\n /**\n * Handles the grpc_proxy_endpoint fallback logic for a node.\n * @param {AddressBookQueryWebResponse['nodes'][number]} node - The node object from the mirror node response.\n * @param {Client<Channel>} client - The client instance.\n * @returns {Array<{address: string, port: string}>}\n */\n _handleAddressesFromGrpcProxyEndpoint(node, client) {\n const grpcProxyEndpoint = node.grpc_proxy_endpoint;\n\n if (\n grpcProxyEndpoint &&\n grpcProxyEndpoint.domain_name &&\n grpcProxyEndpoint.port\n ) {\n return [\n {\n address: grpcProxyEndpoint.domain_name,\n port: grpcProxyEndpoint.port.toString(),\n },\n ];\n }\n\n let networkConstant;\n const ledgerId = client._network.ledgerId;\n\n if (ledgerId && ledgerId.isMainnet()) {\n networkConstant = MAINNET;\n } else if (ledgerId && ledgerId.isTestnet()) {\n networkConstant = WEB_TESTNET;\n } else if (ledgerId && ledgerId.isPreviewnet()) {\n networkConstant = WEB_PREVIEWNET;\n } else {\n return [];\n }\n\n const nodeAccountId = node.node_account_id;\n\n for (const [address, accountIdObj] of Object.entries(networkConstant)) {\n if (accountIdObj.toString() === nodeAccountId) {\n const [domain_name, port] = address.split(\":\");\n\n return [\n {\n address: domain_name,\n port,\n },\n ];\n }\n }\n\n return [];\n }\n}\n"],"names":["AddressBookQueryWeb","Query","constructor","props","super","this","_fileId","fileId","setFileId","_limit","limit","setLimit","_retryHandler","error","Error","code","RST_STREAM","test","details","toString","_addresses","FileId","fromString","clone","setMaxAttempts","attempts","_maxAttempts","setMaxBackoff","backoff","_maxBackoff","execute","client","requestTimeout","_network","size","_timer","Promise","resolve","reject","_makeFetchRequest","port","address","_mirrorNetwork","getNextMirrorNode","baseUrl","includes","url","URL","searchParams","append","attempt","response","fetch","method","headers","Accept","signal","AbortSignal","timeout","undefined","ok","status","nodes","json","map","node","NodeAddress","fromJSON","nodeId","node_id","accountId","node_account_id","addresses","_handleAddressesFromGrpcProxyEndpoint","certHash","node_cert_hash","publicKey","public_key","description","stake","NodeAddressBook","nodeAddresses","console","message","String","isClientShutDown","delay","Math","min","_logger","debug","setTimeout","errorMessage","grpcProxyEndpoint","grpc_proxy_endpoint","domain_name","networkConstant","ledgerId","isMainnet","MAINNET","isTestnet","WEB_TESTNET","isPreviewnet","WEB_PREVIEWNET","nodeAccountId","accountIdObj","Object","entries","split"],"mappings":"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"}
|
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _SemanticVersion = _interopRequireDefault(require("./SemanticVersion.cjs"));
|
|
8
8
|
var HieroProto = _interopRequireWildcard(require("@hashgraph/proto"));
|
|
9
|
-
function
|
|
10
|
-
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; }
|
|
9
|
+
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); }
|
|
11
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
12
|
|
|
@@ -7,8 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
var _Query = _interopRequireWildcard(require("../query/Query.cjs"));
|
|
8
8
|
var _NetworkVersionInfo = _interopRequireDefault(require("./NetworkVersionInfo.cjs"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
-
function
|
|
11
|
-
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; }
|
|
10
|
+
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); }
|
|
12
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
12
|
|
|
14
13
|
/**
|
|
@@ -5,8 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var HieroProto = _interopRequireWildcard(require("@hashgraph/proto"));
|
|
8
|
-
function
|
|
9
|
-
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; }
|
|
8
|
+
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); }
|
|
10
9
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
10
|
|
|
12
11
|
/**
|
|
@@ -8,8 +8,7 @@ var _AccountId = _interopRequireDefault(require("../account/AccountId.cjs"));
|
|
|
8
8
|
var _Key = _interopRequireDefault(require("../Key.cjs"));
|
|
9
9
|
var _Transaction = _interopRequireWildcard(require("../transaction/Transaction.cjs"));
|
|
10
10
|
var _ServiceEndpoint = _interopRequireDefault(require("./ServiceEndpoint.cjs"));
|
|
11
|
-
function
|
|
12
|
-
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; }
|
|
11
|
+
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); }
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
// SPDX-License-Identifier: Apache-2.0
|
|
15
14
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"../account/AccountId.js";import i from"../Key.js";import e,{TRANSACTION_REGISTRY as n}from"../transaction/Transaction.js";import r from"./ServiceEndpoint.js";class s extends e{constructor(t){super(),this._accountId=null!=t?.accountId?t.accountId:null,this._description=null!=t?.description?t.description:null,this._gossipEndpoints=null!=t?.gossipEndpoints?t.gossipEndpoints:null,this._serviceEndpoints=null!=t?.serviceEndpoints?t.serviceEndpoints:null,this._gossipCaCertificate=null!=t?.gossipCaCertificate?t.gossipCaCertificate:null,this._grpcCertificateHash=null!=t?.grpcCertificateHash?t.grpcCertificateHash:null,this._grpcWebProxyEndpoint=t?.grpcWebProxyEndpoint||null,this._adminKey=null!=t?.adminKey?t.adminKey:null,this._declineReward=null!=t?.declineReward?t.declineReward:null}static _fromProtobuf(n,o,c,a,d){const p=d[0].nodeCreate;return e._fromProtobufTransactions(new s({accountId:null!=p.accountId?t._fromProtobuf(p.accountId):void 0,description:null!=p.description?p.description:void 0,gossipEndpoints:null!=p.gossipEndpoint?p.gossipEndpoint.map(
|
|
1
|
+
import t from"../account/AccountId.js";import i from"../Key.js";import e,{TRANSACTION_REGISTRY as n}from"../transaction/Transaction.js";import r from"./ServiceEndpoint.js";class s extends e{constructor(t){super(),this._accountId=null!=t?.accountId?t.accountId:null,this._description=null!=t?.description?t.description:null,this._gossipEndpoints=null!=t?.gossipEndpoints?t.gossipEndpoints:null,this._serviceEndpoints=null!=t?.serviceEndpoints?t.serviceEndpoints:null,this._gossipCaCertificate=null!=t?.gossipCaCertificate?t.gossipCaCertificate:null,this._grpcCertificateHash=null!=t?.grpcCertificateHash?t.grpcCertificateHash:null,this._grpcWebProxyEndpoint=t?.grpcWebProxyEndpoint||null,this._adminKey=null!=t?.adminKey?t.adminKey:null,this._declineReward=null!=t?.declineReward?t.declineReward:null}static _fromProtobuf(n,o,c,a,d){const p=d[0].nodeCreate;return e._fromProtobufTransactions(new s({accountId:null!=p.accountId?t._fromProtobuf(p.accountId):void 0,description:null!=p.description?p.description:void 0,gossipEndpoints:null!=p.gossipEndpoint?p.gossipEndpoint.map(t=>r._fromProtobuf(t)):void 0,serviceEndpoints:null!=p.serviceEndpoint?p.serviceEndpoint.map(t=>r._fromProtobuf(t)):void 0,gossipCaCertificate:null!=p.gossipCaCertificate?p.gossipCaCertificate:void 0,grpcCertificateHash:null!=p.grpcCertificateHash?p.grpcCertificateHash:void 0,adminKey:null!=p.adminKey?i._fromProtobufKey(p.adminKey):void 0,declineReward:null!=p.declineReward?p.declineReward:void 0,grpcWebProxyEndpoint:null!=p.grpcProxyEndpoint?r._fromProtobuf(p.grpcProxyEndpoint):void 0}),n,o,c,a,d)}setAccountId(i){return this._requireNotFrozen(),this._accountId=i instanceof t?i:t.fromString(i),this}get accountId(){return this._accountId}setDescription(t){if(this._requireNotFrozen(),t.length>100)throw new Error("Description must be at most 100 characters.");return this._description=t,this}get description(){return this._description}setGossipEndpoints(t){if(this._requireNotFrozen(),0==t.length)throw new Error("GossipEndpoints list must not be empty.");if(t.length>10)throw new Error("GossipEndpoints list must not contain more than 10 entries.");return this._gossipEndpoints=[...t],this}get gossipEndpoints(){return this._gossipEndpoints}addGossipEndpoint(t){return null!=this._gossipEndpoints&&this._gossipEndpoints.push(t),this}setServiceEndpoints(t){if(this._requireNotFrozen(),0==t.length)throw new Error("ServiceEndpoints list must not be empty.");if(t.length>8)throw new Error("ServiceEndpoints list must not contain more than 8 entries.");return this._serviceEndpoints=[...t],this}get serviceEndpoints(){return this._serviceEndpoints}addServiceEndpoint(t){return null!=this._serviceEndpoints&&this._serviceEndpoints.push(t),this}setGossipCaCertificate(t){if(this._requireNotFrozen(),0==t.length)throw new Error("GossipCaCertificate must not be empty.");return this._gossipCaCertificate=t,this}get gossipCaCertificate(){return this._gossipCaCertificate}setCertificateHash(t){return this._requireNotFrozen(),this._grpcCertificateHash=t,this}get certificateHash(){return this._grpcCertificateHash}setGrpcWebProxyEndpoint(t){return this._requireNotFrozen(),this._grpcWebProxyEndpoint=t,this}get grpcWebProxyEndpoint(){return this._grpcWebProxyEndpoint}setAdminKey(t){return this._requireNotFrozen(),this._adminKey=t,this}get adminKey(){return this._adminKey}setDeclineReward(t){return this._requireNotFrozen(),this._declineReward=t,this}get declineReward(){return this._declineReward}_execute(t,i){return t.addressBook.createNode(i)}_getTransactionDataCase(){return"nodeCreate"}_makeTransactionData(){return{accountId:null!=this._accountId?this._accountId._toProtobuf():null,description:null!=this._description?this._description:null,gossipEndpoint:null!=this._gossipEndpoints?this._gossipEndpoints.map(t=>t._toProtobuf()):null,serviceEndpoint:null!=this._serviceEndpoints?this._serviceEndpoints.map(t=>t._toProtobuf()):null,gossipCaCertificate:null!=this._gossipCaCertificate?this._gossipCaCertificate:null,grpcCertificateHash:null!=this._grpcCertificateHash?this._grpcCertificateHash:null,adminKey:null!=this._adminKey?this._adminKey._toProtobufKey():null,declineReward:null!=this._declineReward?this._declineReward:null,grpcProxyEndpoint:null!=this._grpcWebProxyEndpoint?this._grpcWebProxyEndpoint._toProtobuf():null}}_getLogId(){return`NodeCreateTransaction:${this._transactionIds.current.validStart.toString()}`}}n.set("nodeCreate",s._fromProtobuf);export{s as default};
|
|
2
2
|
//# sourceMappingURL=NodeCreateTransaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeCreateTransaction.js","sources":["../../src/node/NodeCreateTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport AccountId from \"../account/AccountId.js\";\nimport Key from \"../Key.js\";\nimport Transaction, {\n TRANSACTION_REGISTRY,\n} from \"../transaction/Transaction.js\";\nimport ServiceEndpoint from \"./ServiceEndpoint.js\";\n\nconst DESCRIPTION_MAX_LENGTH = 100;\nconst GOSSIP_ENDPOINTS_MAX_LENGTH = 10;\nconst SERVICE_ENDPOINTS_MAX_LENGTH = 8;\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} ISignedTransaction\n * @typedef {import(\"@hashgraph/proto\").proto.TransactionBody} TransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionBody} ITransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionResponse} ITransactionResponse\n */\n\n/**\n * @namespace com.hedera.hapi.node.addressbook\n * @typedef {import(\"@hashgraph/proto\").com.hedera.hapi.node.addressbook.INodeCreateTransactionBody} INodeCreateTransactionBody\n */\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"../client/Client.js\").default<*, *>} Client\n */\n\n/**\n * A transaction to create a new consensus node in the network.\n */\nexport default class NodeCreateTransaction extends Transaction {\n /**\n * @param {object} [props]\n * @param {AccountId} [props.accountId]\n * @param {?string} [props.description]\n * @param {Array<ServiceEndpoint>} [props.gossipEndpoints]\n * @param {?Array<ServiceEndpoint>} [props.serviceEndpoints]\n * @param {Uint8Array} [props.gossipCaCertificate]\n * @param {Uint8Array} [props.grpcCertificateHash]\n * @param {ServiceEndpoint} [props.grpcWebProxyEndpoint]\n * @param {Key} [props.adminKey]\n * @param {boolean} [props.declineReward]\n */\n constructor(props) {\n super();\n\n /**\n * @private\n * @type {?AccountId}\n * @description Node account identifier. It's required.\n */\n this._accountId = props?.accountId != null ? props.accountId : null;\n\n /**\n * @private\n * @type {?string}\n * @description Short description of the node.\n */\n this._description =\n props?.description != null ? props.description : null;\n\n /**\n * @private\n * @type {?Array<ServiceEndpoint>}\n * @description List of service endpoints for gossip. It's required.\n */\n this._gossipEndpoints =\n props?.gossipEndpoints != null ? props.gossipEndpoints : null;\n\n /**\n * @private\n * @type {?Array<ServiceEndpoint>}\n * @description List of service endpoints for gRPC calls.\n */\n this._serviceEndpoints =\n props?.serviceEndpoints != null ? props.serviceEndpoints : null;\n\n /**\n * @private\n * @type {?Uint8Array}\n * @description Certificate used to sign gossip events. It's required.\n */\n this._gossipCaCertificate =\n props?.gossipCaCertificate != null\n ? props.gossipCaCertificate\n : null;\n\n /**\n * @private\n * @type {?Uint8Array}\n * @description Hash of the node gRPC TLS certificate.\n */\n this._grpcCertificateHash =\n props?.grpcCertificateHash != null\n ? props.grpcCertificateHash\n : null;\n\n /**\n * @private\n * @type {?ServiceEndpoint}\n * @description Proxy endpoint for gRPC web calls.\n */\n this._grpcWebProxyEndpoint = props?.grpcWebProxyEndpoint || null;\n\n /**\n * @private\n * @type {?Key}\n * @description Administrative key controlled by the node operator. It's required.\n */\n this._adminKey = props?.adminKey != null ? props.adminKey : null;\n\n /**\n * @private\n * @type {?boolean}\n * @description Whether the node declines rewards.\n */\n this._declineReward =\n props?.declineReward != null ? props.declineReward : null;\n }\n\n /**\n * @internal\n * @param {ITransaction[]} transactions\n * @param {ISignedTransaction[]} signedTransactions\n * @param {TransactionId[]} transactionIds\n * @param {AccountId[]} nodeIds\n * @param {ITransactionBody[]} bodies\n * @returns {NodeCreateTransaction}\n */\n static _fromProtobuf(\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n ) {\n const body = bodies[0];\n const nodeCreate = /** @type {INodeCreateTransactionBody} */ (\n body.nodeCreate\n );\n\n return Transaction._fromProtobufTransactions(\n new NodeCreateTransaction({\n accountId:\n nodeCreate.accountId != null\n ? AccountId._fromProtobuf(nodeCreate.accountId)\n : undefined,\n description:\n nodeCreate.description != null\n ? nodeCreate.description\n : undefined,\n gossipEndpoints:\n nodeCreate.gossipEndpoint != null\n ? nodeCreate.gossipEndpoint.map((endpoint) =>\n ServiceEndpoint._fromProtobuf(endpoint),\n )\n : undefined,\n serviceEndpoints:\n nodeCreate.serviceEndpoint != null\n ? nodeCreate.serviceEndpoint.map((endpoint) =>\n ServiceEndpoint._fromProtobuf(endpoint),\n )\n : undefined,\n gossipCaCertificate:\n nodeCreate.gossipCaCertificate != null\n ? nodeCreate.gossipCaCertificate\n : undefined,\n grpcCertificateHash:\n nodeCreate.grpcCertificateHash != null\n ? nodeCreate.grpcCertificateHash\n : undefined,\n adminKey:\n nodeCreate.adminKey != null\n ? Key._fromProtobufKey(nodeCreate.adminKey)\n : undefined,\n declineReward:\n nodeCreate.declineReward != null\n ? nodeCreate.declineReward\n : undefined,\n grpcWebProxyEndpoint:\n nodeCreate.grpcProxyEndpoint != null\n ? ServiceEndpoint._fromProtobuf(\n nodeCreate.grpcProxyEndpoint,\n )\n : undefined,\n }),\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n );\n }\n\n /**\n * @param {AccountId | string} accountId\n * @description Set node account identifier.\n * @returns {NodeCreateTransaction}\n */\n setAccountId(accountId) {\n this._requireNotFrozen();\n this._accountId =\n accountId instanceof AccountId\n ? accountId\n : AccountId.fromString(accountId);\n\n return this;\n }\n\n /**\n * @description Get node account identifier.\n * @returns {?AccountId}\n */\n get accountId() {\n return this._accountId;\n }\n\n /**\n * @param {string} description\n * @description Set description of the node.\n * @returns {NodeCreateTransaction}\n */\n setDescription(description) {\n this._requireNotFrozen();\n if (description.length > DESCRIPTION_MAX_LENGTH) {\n throw new Error(\n `Description must be at most ${DESCRIPTION_MAX_LENGTH} characters.`,\n );\n }\n this._description = description;\n\n return this;\n }\n\n /**\n * @description Get description of the node.\n * @returns {?string}\n */\n get description() {\n return this._description;\n }\n\n /**\n * @param {ServiceEndpoint[]} gossipEndpoints\n * @description Set list of service endpoints for gossip.\n * @returns {NodeCreateTransaction}\n */\n setGossipEndpoints(gossipEndpoints) {\n this._requireNotFrozen();\n if (gossipEndpoints.length == 0) {\n throw new Error(\"GossipEndpoints list must not be empty.\");\n }\n\n if (gossipEndpoints.length > GOSSIP_ENDPOINTS_MAX_LENGTH) {\n throw new Error(\n `GossipEndpoints list must not contain more than ${GOSSIP_ENDPOINTS_MAX_LENGTH} entries.`,\n );\n }\n\n this._gossipEndpoints = [...gossipEndpoints];\n\n return this;\n }\n\n /**\n * @description Get list of service endpoints for gossip.\n * @returns {?Array<ServiceEndpoint>}\n */\n get gossipEndpoints() {\n return this._gossipEndpoints;\n }\n\n /**\n * @param {ServiceEndpoint} endpoint\n * @description Add an endpoint to the list of service endpoints for gossip.\n * @returns {NodeCreateTransaction}\n */\n addGossipEndpoint(endpoint) {\n if (this._gossipEndpoints != null) {\n this._gossipEndpoints.push(endpoint);\n }\n return this;\n }\n\n /**\n * @param {ServiceEndpoint[]} serviceEndpoints\n * @description Set list of service endpoints for gRPC calls.\n * @returns {NodeCreateTransaction}\n */\n setServiceEndpoints(serviceEndpoints) {\n this._requireNotFrozen();\n if (serviceEndpoints.length == 0) {\n throw new Error(\"ServiceEndpoints list must not be empty.\");\n }\n\n if (serviceEndpoints.length > SERVICE_ENDPOINTS_MAX_LENGTH) {\n throw new Error(\n `ServiceEndpoints list must not contain more than ${SERVICE_ENDPOINTS_MAX_LENGTH} entries.`,\n );\n }\n\n this._serviceEndpoints = [...serviceEndpoints];\n\n return this;\n }\n\n /**\n * @description Get list of service endpoints for gRPC calls.\n * @returns {?Array<ServiceEndpoint>}\n */\n get serviceEndpoints() {\n return this._serviceEndpoints;\n }\n\n /**\n * @param {ServiceEndpoint} endpoint\n * @description Add an endpoint to the list of service endpoints for gRPC calls.\n * @returns {NodeCreateTransaction}\n */\n addServiceEndpoint(endpoint) {\n if (this._serviceEndpoints != null) {\n this._serviceEndpoints.push(endpoint);\n }\n return this;\n }\n\n /**\n * @param {Uint8Array} bytes\n * @description Set certificate used to sign gossip events.\n * @returns {NodeCreateTransaction}\n */\n setGossipCaCertificate(bytes) {\n this._requireNotFrozen();\n if (bytes.length == 0) {\n throw new Error(\"GossipCaCertificate must not be empty.\");\n }\n\n this._gossipCaCertificate = bytes;\n\n return this;\n }\n\n /**\n * @description Get certificate used to sign gossip events.\n * @returns {?Uint8Array}\n */\n get gossipCaCertificate() {\n return this._gossipCaCertificate;\n }\n\n /**\n * @param {Uint8Array} bytes\n * @description Set hash of the node gRPC TLS certificate.\n * @returns {NodeCreateTransaction}\n */\n setCertificateHash(bytes) {\n this._requireNotFrozen();\n this._grpcCertificateHash = bytes;\n\n return this;\n }\n\n /**\n * @description Get hash of the node gRPC TLS certificate.\n * @returns {?Uint8Array}\n */\n get certificateHash() {\n return this._grpcCertificateHash;\n }\n\n /**\n * @param {ServiceEndpoint} endpoint\n * @description Set proxy endpoint for gRPC web calls.\n * @returns {NodeCreateTransaction}\n */\n setGrpcWebProxyEndpoint(endpoint) {\n this._requireNotFrozen();\n this._grpcWebProxyEndpoint = endpoint;\n return this;\n }\n\n /**\n * @description Get proxy endpoint for gRPC web calls.\n * @returns {?ServiceEndpoint}\n */\n get grpcWebProxyEndpoint() {\n return this._grpcWebProxyEndpoint;\n }\n\n /**\n * @param {Key} adminKey\n * @description Set administrative key controlled by the node operator.\n * @returns {NodeCreateTransaction}\n */\n setAdminKey(adminKey) {\n this._requireNotFrozen();\n this._adminKey = adminKey;\n\n return this;\n }\n\n /**\n * @description Get administrative key controlled by the node operator.\n * @returns {?Key}\n */\n get adminKey() {\n return this._adminKey;\n }\n\n /**\n * @param {boolean} declineReward\n * @description Set whether the node declines rewards.\n * @returns {NodeCreateTransaction}\n */\n setDeclineReward(declineReward) {\n this._requireNotFrozen();\n this._declineReward = declineReward;\n return this;\n }\n\n /**\n * @description Get whether the node declines rewards.\n * @returns {?boolean}\n */\n get declineReward() {\n return this._declineReward;\n }\n\n /**\n * @override\n * @internal\n * @param {Channel} channel\n * @param {ITransaction} request\n * @returns {Promise<ITransactionResponse>}\n */\n _execute(channel, request) {\n return channel.addressBook.createNode(request);\n }\n\n /**\n * @override\n * @protected\n * @returns {NonNullable<TransactionBody[\"data\"]>}\n */\n _getTransactionDataCase() {\n return \"nodeCreate\";\n }\n\n /**\n * @override\n * @protected\n * @returns {INodeCreateTransactionBody}\n */\n _makeTransactionData() {\n return {\n accountId:\n this._accountId != null ? this._accountId._toProtobuf() : null,\n description: this._description != null ? this._description : null,\n gossipEndpoint:\n this._gossipEndpoints != null\n ? this._gossipEndpoints.map(\n (/** @type {ServiceEndpoint} */ endpoint) =>\n endpoint._toProtobuf(),\n )\n : null,\n serviceEndpoint:\n this._serviceEndpoints != null\n ? this._serviceEndpoints.map(\n (/** @type {ServiceEndpoint} */ endpoint) =>\n endpoint._toProtobuf(),\n )\n : null,\n gossipCaCertificate:\n this._gossipCaCertificate != null\n ? this._gossipCaCertificate\n : null,\n grpcCertificateHash:\n this._grpcCertificateHash != null\n ? this._grpcCertificateHash\n : null,\n adminKey:\n this._adminKey != null ? this._adminKey._toProtobufKey() : null,\n declineReward:\n this._declineReward != null ? this._declineReward : null,\n grpcProxyEndpoint:\n this._grpcWebProxyEndpoint != null\n ? this._grpcWebProxyEndpoint._toProtobuf()\n : null,\n };\n }\n\n /**\n * @returns {string}\n */\n _getLogId() {\n const timestamp = /** @type {import(\"../Timestamp.js\").default} */ (\n this._transactionIds.current.validStart\n );\n return `NodeCreateTransaction:${timestamp.toString()}`;\n }\n}\n\nTRANSACTION_REGISTRY.set(\n \"nodeCreate\",\n // eslint-disable-next-line @typescript-eslint/unbound-method\n NodeCreateTransaction._fromProtobuf,\n);\n"],"names":["NodeCreateTransaction","Transaction","constructor","props","super","this","_accountId","accountId","_description","description","_gossipEndpoints","gossipEndpoints","_serviceEndpoints","serviceEndpoints","_gossipCaCertificate","gossipCaCertificate","_grpcCertificateHash","grpcCertificateHash","_grpcWebProxyEndpoint","grpcWebProxyEndpoint","_adminKey","adminKey","_declineReward","declineReward","_fromProtobuf","transactions","signedTransactions","transactionIds","nodeIds","bodies","nodeCreate","_fromProtobufTransactions","AccountId","undefined","gossipEndpoint","map","endpoint","ServiceEndpoint","serviceEndpoint","Key","_fromProtobufKey","grpcProxyEndpoint","setAccountId","_requireNotFrozen","fromString","setDescription","length","Error","setGossipEndpoints","addGossipEndpoint","push","setServiceEndpoints","addServiceEndpoint","setGossipCaCertificate","bytes","setCertificateHash","certificateHash","setGrpcWebProxyEndpoint","setAdminKey","setDeclineReward","_execute","channel","request","addressBook","createNode","_getTransactionDataCase","_makeTransactionData","_toProtobuf","_toProtobufKey","_getLogId","_transactionIds","current","toString","TRANSACTION_REGISTRY","set"],"mappings":"4KAoCe,MAAMA,UAA8BC,EAa/C,WAAAC,CAAYC,GACRC,QAOAC,KAAKC,WAAiC,MAApBH,GAAOI,UAAoBJ,EAAMI,UAAY,KAO/DF,KAAKG,aACqB,MAAtBL,GAAOM,YAAsBN,EAAMM,YAAc,KAOrDJ,KAAKK,iBACyB,MAA1BP,GAAOQ,gBAA0BR,EAAMQ,gBAAkB,KAO7DN,KAAKO,kBAC0B,MAA3BT,GAAOU,iBAA2BV,EAAMU,iBAAmB,KAO/DR,KAAKS,qBAC6B,MAA9BX,GAAOY,oBACDZ,EAAMY,oBACN,KAOVV,KAAKW,qBAC6B,MAA9Bb,GAAOc,oBACDd,EAAMc,oBACN,KAOVZ,KAAKa,sBAAwBf,GAAOgB,sBAAwB,KAO5Dd,KAAKe,UAA+B,MAAnBjB,GAAOkB,SAAmBlB,EAAMkB,SAAW,KAO5DhB,KAAKiB,eACuB,MAAxBnB,GAAOoB,cAAwBpB,EAAMoB,cAAgB,IACjE,CAWI,oBAAOC,CACHC,EACAC,EACAC,EACAC,EACAC,GAEA,MACMC,EADOD,EAAO,GAGnB,WAED,OAAO5B,EAAY8B,0BACf,IAAI/B,EAAsB,CACtBO,UAC4B,MAAxBuB,EAAWvB,UACLyB,EAAUR,cAAcM,EAAWvB,gBACnC0B,EACVxB,YAC8B,MAA1BqB,EAAWrB,YACLqB,EAAWrB,iBACXwB,EACVtB,gBACiC,MAA7BmB,EAAWI,eACLJ,EAAWI,eAAeC,KAAKC,GAC3BC,EAAgBb,cAAcY,UAElCH,EACVpB,iBACkC,MAA9BiB,EAAWQ,gBACLR,EAAWQ,gBAAgBH,KAAKC,GAC5BC,EAAgBb,cAAcY,UAElCH,EACVlB,oBACsC,MAAlCe,EAAWf,oBACLe,EAAWf,yBACXkB,EACVhB,oBACsC,MAAlCa,EAAWb,oBACLa,EAAWb,yBACXgB,EACVZ,SAC2B,MAAvBS,EAAWT,SACLkB,EAAIC,iBAAiBV,EAAWT,eAChCY,EACVV,cACgC,MAA5BO,EAAWP,cACLO,EAAWP,mBACXU,EACVd,qBACoC,MAAhCW,EAAWW,kBACLJ,EAAgBb,cACZM,EAAWW,wBAEfR,IAEdR,EACAC,EACAC,EACAC,EACAC,EAEZ,CAOI,YAAAa,CAAanC,GAOT,OANAF,KAAKsC,oBACLtC,KAAKC,WACDC,aAAqByB,EACfzB,EACAyB,EAAUY,WAAWrC,GAExBF,IACf,CAMI,aAAIE,GACA,OAAOF,KAAKC,UACpB,CAOI,cAAAuC,CAAepC,GAEX,GADAJ,KAAKsC,oBACDlC,EAAYqC,OA7NO,IA8NnB,MAAM,IAAIC,MACN,+CAKR,OAFA1C,KAAKG,aAAeC,EAEbJ,IACf,CAMI,eAAII,GACA,OAAOJ,KAAKG,YACpB,CAOI,kBAAAwC,CAAmBrC,GAEf,GADAN,KAAKsC,oBACyB,GAA1BhC,EAAgBmC,OAChB,MAAM,IAAIC,MAAM,2CAGpB,GAAIpC,EAAgBmC,OAzPQ,GA0PxB,MAAM,IAAIC,MACN,+DAMR,OAFA1C,KAAKK,iBAAmB,IAAIC,GAErBN,IACf,CAMI,mBAAIM,GACA,OAAON,KAAKK,gBACpB,CAOI,iBAAAuC,CAAkBb,GAId,OAH6B,MAAzB/B,KAAKK,kBACLL,KAAKK,iBAAiBwC,KAAKd,GAExB/B,IACf,CAOI,mBAAA8C,CAAoBtC,GAEhB,GADAR,KAAKsC,oBAC0B,GAA3B9B,EAAiBiC,OACjB,MAAM,IAAIC,MAAM,4CAGpB,GAAIlC,EAAiBiC,OAlSQ,EAmSzB,MAAM,IAAIC,MACN,+DAMR,OAFA1C,KAAKO,kBAAoB,IAAIC,GAEtBR,IACf,CAMI,oBAAIQ,GACA,OAAOR,KAAKO,iBACpB,CAOI,kBAAAwC,CAAmBhB,GAIf,OAH8B,MAA1B/B,KAAKO,mBACLP,KAAKO,kBAAkBsC,KAAKd,GAEzB/B,IACf,CAOI,sBAAAgD,CAAuBC,GAEnB,GADAjD,KAAKsC,oBACe,GAAhBW,EAAMR,OACN,MAAM,IAAIC,MAAM,0CAKpB,OAFA1C,KAAKS,qBAAuBwC,EAErBjD,IACf,CAMI,uBAAIU,GACA,OAAOV,KAAKS,oBACpB,CAOI,kBAAAyC,CAAmBD,GAIf,OAHAjD,KAAKsC,oBACLtC,KAAKW,qBAAuBsC,EAErBjD,IACf,CAMI,mBAAImD,GACA,OAAOnD,KAAKW,oBACpB,CAOI,uBAAAyC,CAAwBrB,GAGpB,OAFA/B,KAAKsC,oBACLtC,KAAKa,sBAAwBkB,EACtB/B,IACf,CAMI,wBAAIc,GACA,OAAOd,KAAKa,qBACpB,CAOI,WAAAwC,CAAYrC,GAIR,OAHAhB,KAAKsC,oBACLtC,KAAKe,UAAYC,EAEVhB,IACf,CAMI,YAAIgB,GACA,OAAOhB,KAAKe,SACpB,CAOI,gBAAAuC,CAAiBpC,GAGb,OAFAlB,KAAKsC,oBACLtC,KAAKiB,eAAiBC,EACflB,IACf,CAMI,iBAAIkB,GACA,OAAOlB,KAAKiB,cACpB,CASI,QAAAsC,CAASC,EAASC,GACd,OAAOD,EAAQE,YAAYC,WAAWF,EAC9C,CAOI,uBAAAG,GACI,MAAO,YACf,CAOI,oBAAAC,GACI,MAAO,CACH3D,UACuB,MAAnBF,KAAKC,WAAqBD,KAAKC,WAAW6D,cAAgB,KAC9D1D,YAAkC,MAArBJ,KAAKG,aAAuBH,KAAKG,aAAe,KAC7D0B,eAC6B,MAAzB7B,KAAKK,iBACCL,KAAKK,iBAAiByB,KACcC,GAC5BA,EAAS+B,gBAEjB,KACV7B,gBAC8B,MAA1BjC,KAAKO,kBACCP,KAAKO,kBAAkBuB,KACaC,GAC5BA,EAAS+B,gBAEjB,KACVpD,oBACiC,MAA7BV,KAAKS,qBACCT,KAAKS,qBACL,KACVG,oBACiC,MAA7BZ,KAAKW,qBACCX,KAAKW,qBACL,KACVK,SACsB,MAAlBhB,KAAKe,UAAoBf,KAAKe,UAAUgD,iBAAmB,KAC/D7C,cAC2B,MAAvBlB,KAAKiB,eAAyBjB,KAAKiB,eAAiB,KACxDmB,kBACkC,MAA9BpC,KAAKa,sBACCb,KAAKa,sBAAsBiD,cAC3B,KAEtB,CAKI,SAAAE,GAII,MAAO,yBAFHhE,KAAKiE,gBAAgBC,QACxB,WACyCC,YAClD,EAGAC,EAAqBC,IACjB,aAEA1E,EAAsBwB"}
|
|
1
|
+
{"version":3,"file":"NodeCreateTransaction.js","sources":["../../src/node/NodeCreateTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport AccountId from \"../account/AccountId.js\";\nimport Key from \"../Key.js\";\nimport Transaction, {\n TRANSACTION_REGISTRY,\n} from \"../transaction/Transaction.js\";\nimport ServiceEndpoint from \"./ServiceEndpoint.js\";\n\nconst DESCRIPTION_MAX_LENGTH = 100;\nconst GOSSIP_ENDPOINTS_MAX_LENGTH = 10;\nconst SERVICE_ENDPOINTS_MAX_LENGTH = 8;\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} ISignedTransaction\n * @typedef {import(\"@hashgraph/proto\").proto.TransactionBody} TransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionBody} ITransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionResponse} ITransactionResponse\n */\n\n/**\n * @namespace com.hedera.hapi.node.addressbook\n * @typedef {import(\"@hashgraph/proto\").com.hedera.hapi.node.addressbook.INodeCreateTransactionBody} INodeCreateTransactionBody\n */\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"../client/Client.js\").default<*, *>} Client\n */\n\n/**\n * A transaction to create a new consensus node in the network.\n */\nexport default class NodeCreateTransaction extends Transaction {\n /**\n * @param {object} [props]\n * @param {AccountId} [props.accountId]\n * @param {?string} [props.description]\n * @param {Array<ServiceEndpoint>} [props.gossipEndpoints]\n * @param {?Array<ServiceEndpoint>} [props.serviceEndpoints]\n * @param {Uint8Array} [props.gossipCaCertificate]\n * @param {Uint8Array} [props.grpcCertificateHash]\n * @param {ServiceEndpoint} [props.grpcWebProxyEndpoint]\n * @param {Key} [props.adminKey]\n * @param {boolean} [props.declineReward]\n */\n constructor(props) {\n super();\n\n /**\n * @private\n * @type {?AccountId}\n * @description Node account identifier. It's required.\n */\n this._accountId = props?.accountId != null ? props.accountId : null;\n\n /**\n * @private\n * @type {?string}\n * @description Short description of the node.\n */\n this._description =\n props?.description != null ? props.description : null;\n\n /**\n * @private\n * @type {?Array<ServiceEndpoint>}\n * @description List of service endpoints for gossip. It's required.\n */\n this._gossipEndpoints =\n props?.gossipEndpoints != null ? props.gossipEndpoints : null;\n\n /**\n * @private\n * @type {?Array<ServiceEndpoint>}\n * @description List of service endpoints for gRPC calls.\n */\n this._serviceEndpoints =\n props?.serviceEndpoints != null ? props.serviceEndpoints : null;\n\n /**\n * @private\n * @type {?Uint8Array}\n * @description Certificate used to sign gossip events. It's required.\n */\n this._gossipCaCertificate =\n props?.gossipCaCertificate != null\n ? props.gossipCaCertificate\n : null;\n\n /**\n * @private\n * @type {?Uint8Array}\n * @description Hash of the node gRPC TLS certificate.\n */\n this._grpcCertificateHash =\n props?.grpcCertificateHash != null\n ? props.grpcCertificateHash\n : null;\n\n /**\n * @private\n * @type {?ServiceEndpoint}\n * @description Proxy endpoint for gRPC web calls.\n */\n this._grpcWebProxyEndpoint = props?.grpcWebProxyEndpoint || null;\n\n /**\n * @private\n * @type {?Key}\n * @description Administrative key controlled by the node operator. It's required.\n */\n this._adminKey = props?.adminKey != null ? props.adminKey : null;\n\n /**\n * @private\n * @type {?boolean}\n * @description Whether the node declines rewards.\n */\n this._declineReward =\n props?.declineReward != null ? props.declineReward : null;\n }\n\n /**\n * @internal\n * @param {ITransaction[]} transactions\n * @param {ISignedTransaction[]} signedTransactions\n * @param {TransactionId[]} transactionIds\n * @param {AccountId[]} nodeIds\n * @param {ITransactionBody[]} bodies\n * @returns {NodeCreateTransaction}\n */\n static _fromProtobuf(\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n ) {\n const body = bodies[0];\n const nodeCreate = /** @type {INodeCreateTransactionBody} */ (\n body.nodeCreate\n );\n\n return Transaction._fromProtobufTransactions(\n new NodeCreateTransaction({\n accountId:\n nodeCreate.accountId != null\n ? AccountId._fromProtobuf(nodeCreate.accountId)\n : undefined,\n description:\n nodeCreate.description != null\n ? nodeCreate.description\n : undefined,\n gossipEndpoints:\n nodeCreate.gossipEndpoint != null\n ? nodeCreate.gossipEndpoint.map((endpoint) =>\n ServiceEndpoint._fromProtobuf(endpoint),\n )\n : undefined,\n serviceEndpoints:\n nodeCreate.serviceEndpoint != null\n ? nodeCreate.serviceEndpoint.map((endpoint) =>\n ServiceEndpoint._fromProtobuf(endpoint),\n )\n : undefined,\n gossipCaCertificate:\n nodeCreate.gossipCaCertificate != null\n ? nodeCreate.gossipCaCertificate\n : undefined,\n grpcCertificateHash:\n nodeCreate.grpcCertificateHash != null\n ? nodeCreate.grpcCertificateHash\n : undefined,\n adminKey:\n nodeCreate.adminKey != null\n ? Key._fromProtobufKey(nodeCreate.adminKey)\n : undefined,\n declineReward:\n nodeCreate.declineReward != null\n ? nodeCreate.declineReward\n : undefined,\n grpcWebProxyEndpoint:\n nodeCreate.grpcProxyEndpoint != null\n ? ServiceEndpoint._fromProtobuf(\n nodeCreate.grpcProxyEndpoint,\n )\n : undefined,\n }),\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n );\n }\n\n /**\n * @param {AccountId | string} accountId\n * @description Set node account identifier.\n * @returns {NodeCreateTransaction}\n */\n setAccountId(accountId) {\n this._requireNotFrozen();\n this._accountId =\n accountId instanceof AccountId\n ? accountId\n : AccountId.fromString(accountId);\n\n return this;\n }\n\n /**\n * @description Get node account identifier.\n * @returns {?AccountId}\n */\n get accountId() {\n return this._accountId;\n }\n\n /**\n * @param {string} description\n * @description Set description of the node.\n * @returns {NodeCreateTransaction}\n */\n setDescription(description) {\n this._requireNotFrozen();\n if (description.length > DESCRIPTION_MAX_LENGTH) {\n throw new Error(\n `Description must be at most ${DESCRIPTION_MAX_LENGTH} characters.`,\n );\n }\n this._description = description;\n\n return this;\n }\n\n /**\n * @description Get description of the node.\n * @returns {?string}\n */\n get description() {\n return this._description;\n }\n\n /**\n * @param {ServiceEndpoint[]} gossipEndpoints\n * @description Set list of service endpoints for gossip.\n * @returns {NodeCreateTransaction}\n */\n setGossipEndpoints(gossipEndpoints) {\n this._requireNotFrozen();\n if (gossipEndpoints.length == 0) {\n throw new Error(\"GossipEndpoints list must not be empty.\");\n }\n\n if (gossipEndpoints.length > GOSSIP_ENDPOINTS_MAX_LENGTH) {\n throw new Error(\n `GossipEndpoints list must not contain more than ${GOSSIP_ENDPOINTS_MAX_LENGTH} entries.`,\n );\n }\n\n this._gossipEndpoints = [...gossipEndpoints];\n\n return this;\n }\n\n /**\n * @description Get list of service endpoints for gossip.\n * @returns {?Array<ServiceEndpoint>}\n */\n get gossipEndpoints() {\n return this._gossipEndpoints;\n }\n\n /**\n * @param {ServiceEndpoint} endpoint\n * @description Add an endpoint to the list of service endpoints for gossip.\n * @returns {NodeCreateTransaction}\n */\n addGossipEndpoint(endpoint) {\n if (this._gossipEndpoints != null) {\n this._gossipEndpoints.push(endpoint);\n }\n return this;\n }\n\n /**\n * @param {ServiceEndpoint[]} serviceEndpoints\n * @description Set list of service endpoints for gRPC calls.\n * @returns {NodeCreateTransaction}\n */\n setServiceEndpoints(serviceEndpoints) {\n this._requireNotFrozen();\n if (serviceEndpoints.length == 0) {\n throw new Error(\"ServiceEndpoints list must not be empty.\");\n }\n\n if (serviceEndpoints.length > SERVICE_ENDPOINTS_MAX_LENGTH) {\n throw new Error(\n `ServiceEndpoints list must not contain more than ${SERVICE_ENDPOINTS_MAX_LENGTH} entries.`,\n );\n }\n\n this._serviceEndpoints = [...serviceEndpoints];\n\n return this;\n }\n\n /**\n * @description Get list of service endpoints for gRPC calls.\n * @returns {?Array<ServiceEndpoint>}\n */\n get serviceEndpoints() {\n return this._serviceEndpoints;\n }\n\n /**\n * @param {ServiceEndpoint} endpoint\n * @description Add an endpoint to the list of service endpoints for gRPC calls.\n * @returns {NodeCreateTransaction}\n */\n addServiceEndpoint(endpoint) {\n if (this._serviceEndpoints != null) {\n this._serviceEndpoints.push(endpoint);\n }\n return this;\n }\n\n /**\n * @param {Uint8Array} bytes\n * @description Set certificate used to sign gossip events.\n * @returns {NodeCreateTransaction}\n */\n setGossipCaCertificate(bytes) {\n this._requireNotFrozen();\n if (bytes.length == 0) {\n throw new Error(\"GossipCaCertificate must not be empty.\");\n }\n\n this._gossipCaCertificate = bytes;\n\n return this;\n }\n\n /**\n * @description Get certificate used to sign gossip events.\n * @returns {?Uint8Array}\n */\n get gossipCaCertificate() {\n return this._gossipCaCertificate;\n }\n\n /**\n * @param {Uint8Array} bytes\n * @description Set hash of the node gRPC TLS certificate.\n * @returns {NodeCreateTransaction}\n */\n setCertificateHash(bytes) {\n this._requireNotFrozen();\n this._grpcCertificateHash = bytes;\n\n return this;\n }\n\n /**\n * @description Get hash of the node gRPC TLS certificate.\n * @returns {?Uint8Array}\n */\n get certificateHash() {\n return this._grpcCertificateHash;\n }\n\n /**\n * @param {ServiceEndpoint} endpoint\n * @description Set proxy endpoint for gRPC web calls.\n * @returns {NodeCreateTransaction}\n */\n setGrpcWebProxyEndpoint(endpoint) {\n this._requireNotFrozen();\n this._grpcWebProxyEndpoint = endpoint;\n return this;\n }\n\n /**\n * @description Get proxy endpoint for gRPC web calls.\n * @returns {?ServiceEndpoint}\n */\n get grpcWebProxyEndpoint() {\n return this._grpcWebProxyEndpoint;\n }\n\n /**\n * @param {Key} adminKey\n * @description Set administrative key controlled by the node operator.\n * @returns {NodeCreateTransaction}\n */\n setAdminKey(adminKey) {\n this._requireNotFrozen();\n this._adminKey = adminKey;\n\n return this;\n }\n\n /**\n * @description Get administrative key controlled by the node operator.\n * @returns {?Key}\n */\n get adminKey() {\n return this._adminKey;\n }\n\n /**\n * @param {boolean} declineReward\n * @description Set whether the node declines rewards.\n * @returns {NodeCreateTransaction}\n */\n setDeclineReward(declineReward) {\n this._requireNotFrozen();\n this._declineReward = declineReward;\n return this;\n }\n\n /**\n * @description Get whether the node declines rewards.\n * @returns {?boolean}\n */\n get declineReward() {\n return this._declineReward;\n }\n\n /**\n * @override\n * @internal\n * @param {Channel} channel\n * @param {ITransaction} request\n * @returns {Promise<ITransactionResponse>}\n */\n _execute(channel, request) {\n return channel.addressBook.createNode(request);\n }\n\n /**\n * @override\n * @protected\n * @returns {NonNullable<TransactionBody[\"data\"]>}\n */\n _getTransactionDataCase() {\n return \"nodeCreate\";\n }\n\n /**\n * @override\n * @protected\n * @returns {INodeCreateTransactionBody}\n */\n _makeTransactionData() {\n return {\n accountId:\n this._accountId != null ? this._accountId._toProtobuf() : null,\n description: this._description != null ? this._description : null,\n gossipEndpoint:\n this._gossipEndpoints != null\n ? this._gossipEndpoints.map(\n (/** @type {ServiceEndpoint} */ endpoint) =>\n endpoint._toProtobuf(),\n )\n : null,\n serviceEndpoint:\n this._serviceEndpoints != null\n ? this._serviceEndpoints.map(\n (/** @type {ServiceEndpoint} */ endpoint) =>\n endpoint._toProtobuf(),\n )\n : null,\n gossipCaCertificate:\n this._gossipCaCertificate != null\n ? this._gossipCaCertificate\n : null,\n grpcCertificateHash:\n this._grpcCertificateHash != null\n ? this._grpcCertificateHash\n : null,\n adminKey:\n this._adminKey != null ? this._adminKey._toProtobufKey() : null,\n declineReward:\n this._declineReward != null ? this._declineReward : null,\n grpcProxyEndpoint:\n this._grpcWebProxyEndpoint != null\n ? this._grpcWebProxyEndpoint._toProtobuf()\n : null,\n };\n }\n\n /**\n * @returns {string}\n */\n _getLogId() {\n const timestamp = /** @type {import(\"../Timestamp.js\").default} */ (\n this._transactionIds.current.validStart\n );\n return `NodeCreateTransaction:${timestamp.toString()}`;\n }\n}\n\nTRANSACTION_REGISTRY.set(\n \"nodeCreate\",\n // eslint-disable-next-line @typescript-eslint/unbound-method\n NodeCreateTransaction._fromProtobuf,\n);\n"],"names":["NodeCreateTransaction","Transaction","constructor","props","super","this","_accountId","accountId","_description","description","_gossipEndpoints","gossipEndpoints","_serviceEndpoints","serviceEndpoints","_gossipCaCertificate","gossipCaCertificate","_grpcCertificateHash","grpcCertificateHash","_grpcWebProxyEndpoint","grpcWebProxyEndpoint","_adminKey","adminKey","_declineReward","declineReward","_fromProtobuf","transactions","signedTransactions","transactionIds","nodeIds","bodies","nodeCreate","_fromProtobufTransactions","AccountId","undefined","gossipEndpoint","map","endpoint","ServiceEndpoint","serviceEndpoint","Key","_fromProtobufKey","grpcProxyEndpoint","setAccountId","_requireNotFrozen","fromString","setDescription","length","Error","setGossipEndpoints","addGossipEndpoint","push","setServiceEndpoints","addServiceEndpoint","setGossipCaCertificate","bytes","setCertificateHash","certificateHash","setGrpcWebProxyEndpoint","setAdminKey","setDeclineReward","_execute","channel","request","addressBook","createNode","_getTransactionDataCase","_makeTransactionData","_toProtobuf","_toProtobufKey","_getLogId","_transactionIds","current","toString","TRANSACTION_REGISTRY","set"],"mappings":"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"}
|
|
@@ -5,8 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _Transaction = _interopRequireWildcard(require("../transaction/Transaction.cjs"));
|
|
8
|
-
|
|
9
|
-
function
|
|
8
|
+
var _long = _interopRequireDefault(require("long"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
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); }
|
|
10
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -73,7 +74,18 @@ class NodeDeleteTransaction extends _Transaction.default {
|
|
|
73
74
|
* @returns {NodeDeleteTransaction}
|
|
74
75
|
*/
|
|
75
76
|
setNodeId(nodeId) {
|
|
76
|
-
this.
|
|
77
|
+
this._requireNotFrozen();
|
|
78
|
+
if (nodeId == null) {
|
|
79
|
+
this._nodeId = null;
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Convert to Long if it's a plain number
|
|
84
|
+
const longNodeId = _long.default.isLong(nodeId) ? nodeId : _long.default.fromValue(nodeId);
|
|
85
|
+
if (longNodeId.toNumber() < 0) {
|
|
86
|
+
throw new Error("NodeDeleteTransaction: 'nodeId' must be positive.");
|
|
87
|
+
}
|
|
88
|
+
this._nodeId = longNodeId;
|
|
77
89
|
return this;
|
|
78
90
|
}
|
|
79
91
|
|
|
@@ -35,7 +35,7 @@ export default class NodeDeleteTransaction extends Transaction {
|
|
|
35
35
|
* @param {Long} [props.nodeId]
|
|
36
36
|
*/
|
|
37
37
|
constructor(props?: {
|
|
38
|
-
nodeId?:
|
|
38
|
+
nodeId?: Long | undefined;
|
|
39
39
|
});
|
|
40
40
|
/**
|
|
41
41
|
* @private
|
|
@@ -78,3 +78,4 @@ export type TransactionId = import("../transaction/TransactionId.js").default;
|
|
|
78
78
|
export type Client = import("../client/Client.js").default<any, any>;
|
|
79
79
|
export type AccountId = import("../account/AccountId.js").default;
|
|
80
80
|
import Transaction from "../transaction/Transaction.js";
|
|
81
|
+
import Long from "long";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e,{TRANSACTION_REGISTRY as t}from"../transaction/Transaction.js";class n extends e{constructor(e){super(),this._nodeId=null!=e?.nodeId?e.nodeId:null}static _fromProtobuf(t,o,r,d,s){const
|
|
1
|
+
import e,{TRANSACTION_REGISTRY as t}from"../transaction/Transaction.js";import o from"long";class n extends e{constructor(e){super(),this._nodeId=null!=e?.nodeId?e.nodeId:null}static _fromProtobuf(t,o,r,d,s){const i=s[0].nodeDelete;return e._fromProtobufTransactions(new n({nodeId:null!=i.nodeId?i.nodeId:void 0}),t,o,r,d,s)}setNodeId(e){if(this._requireNotFrozen(),null==e)return this._nodeId=null,this;const t=o.isLong(e)?e:o.fromValue(e);if(t.toNumber()<0)throw new Error("NodeDeleteTransaction: 'nodeId' must be positive.");return this._nodeId=t,this}get nodeId(){return this._nodeId}freezeWith(e){if(null==this.nodeId)throw new Error("NodeDeleteTransaction: 'nodeId' must be explicitly set before calling freeze().");return super.freezeWith(e)}_execute(e,t){return e.addressBook.deleteNode(t)}_getTransactionDataCase(){return"nodeDelete"}_makeTransactionData(){return{nodeId:null!=this._nodeId?this._nodeId:null}}_getLogId(){return`NodeDeleteTransaction:${this._transactionIds.current.validStart.toString()}`}}t.set("nodeDelete",n._fromProtobuf);export{n as default};
|
|
2
2
|
//# sourceMappingURL=NodeDeleteTransaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeDeleteTransaction.js","sources":["../../src/node/NodeDeleteTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Transaction, {\n TRANSACTION_REGISTRY,\n} from \"../transaction/Transaction.js\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} ISignedTransaction\n * @typedef {import(\"@hashgraph/proto\").proto.TransactionBody} TransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionBody} ITransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionResponse} ITransactionResponse\n */\n\n/**\n * @namespace com.hedera.hapi.node.addressbook\n * @typedef {import(\"@hashgraph/proto\").com.hedera.hapi.node.addressbook.INodeDeleteTransactionBody} INodeDeleteTransactionBody\n */\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"../client/Client.js\").default<*, *>} Client\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * A transaction to delete a consensus node in the network.\n */\nexport default class NodeDeleteTransaction extends Transaction {\n /**\n * @param {object} [props]\n * @param {Long} [props.nodeId]\n */\n constructor(props) {\n super();\n\n /**\n * @private\n * @type {?Long}\n * @description Consensus node identifier in the network state. It's required.\n */\n this._nodeId = props?.nodeId != null ? props.nodeId : null;\n }\n\n /**\n * @internal\n * @param {ITransaction[]} transactions\n * @param {ISignedTransaction[]} signedTransactions\n * @param {TransactionId[]} transactionIds\n * @param {AccountId[]} nodeIds\n * @param {ITransactionBody[]} bodies\n * @returns {NodeDeleteTransaction}\n */\n static _fromProtobuf(\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n ) {\n const body = bodies[0];\n const nodeDelete = /** @type {INodeDeleteTransactionBody} */ (\n body.nodeDelete\n );\n\n return Transaction._fromProtobufTransactions(\n new NodeDeleteTransaction({\n nodeId:\n nodeDelete.nodeId != null ? nodeDelete.nodeId : undefined,\n }),\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n );\n }\n\n /**\n * @param {Long} nodeId\n * @description Set consensus node identifier.\n * @returns {NodeDeleteTransaction}\n */\n setNodeId(nodeId) {\n this._nodeId = nodeId;\n\n return this;\n }\n\n /**\n * @description Get consensus node identifier.\n * @returns {?Long}\n */\n get nodeId() {\n return this._nodeId;\n }\n\n /**\n * @override\n * @param {?import(\"../client/Client.js\").default<Channel, *>} client\n * @returns {this}\n */\n freezeWith(client) {\n if (this.nodeId == null) {\n throw new Error(\n \"NodeDeleteTransaction: 'nodeId' must be explicitly set before calling freeze().\",\n );\n }\n\n return super.freezeWith(client);\n }\n\n /**\n * @override\n * @internal\n * @param {Channel} channel\n * @param {ITransaction} request\n * @returns {Promise<ITransactionResponse>}\n */\n _execute(channel, request) {\n return channel.addressBook.deleteNode(request);\n }\n\n /**\n * @override\n * @protected\n * @returns {NonNullable<TransactionBody[\"data\"]>}\n */\n _getTransactionDataCase() {\n return \"nodeDelete\";\n }\n\n /**\n * @override\n * @protected\n * @returns {INodeDeleteTransactionBody}\n */\n _makeTransactionData() {\n return {\n nodeId: this._nodeId != null ? this._nodeId : null,\n };\n }\n\n /**\n * @returns {string}\n */\n _getLogId() {\n const timestamp = /** @type {import(\"../Timestamp.js\").default} */ (\n this._transactionIds.current.validStart\n );\n return `NodeDeleteTransaction:${timestamp.toString()}`;\n }\n}\n\nTRANSACTION_REGISTRY.set(\n \"nodeDelete\",\n // eslint-disable-next-line @typescript-eslint/unbound-method\n NodeDeleteTransaction._fromProtobuf,\n);\n"],"names":["NodeDeleteTransaction","Transaction","constructor","props","super","this","_nodeId","nodeId","_fromProtobuf","transactions","signedTransactions","transactionIds","nodeIds","bodies","nodeDelete","_fromProtobufTransactions","undefined","setNodeId","
|
|
1
|
+
{"version":3,"file":"NodeDeleteTransaction.js","sources":["../../src/node/NodeDeleteTransaction.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Transaction, {\n TRANSACTION_REGISTRY,\n} from \"../transaction/Transaction.js\";\nimport Long from \"long\";\n\n/**\n * @namespace proto\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} ITransaction\n * @typedef {import(\"@hashgraph/proto\").proto.ITransaction} ISignedTransaction\n * @typedef {import(\"@hashgraph/proto\").proto.TransactionBody} TransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionBody} ITransactionBody\n * @typedef {import(\"@hashgraph/proto\").proto.ITransactionResponse} ITransactionResponse\n */\n\n/**\n * @namespace com.hedera.hapi.node.addressbook\n * @typedef {import(\"@hashgraph/proto\").com.hedera.hapi.node.addressbook.INodeDeleteTransactionBody} INodeDeleteTransactionBody\n */\n\n/**\n * @typedef {import(\"../channel/Channel.js\").default} Channel\n * @typedef {import(\"../transaction/TransactionId.js\").default} TransactionId\n * @typedef {import(\"../client/Client.js\").default<*, *>} Client\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * A transaction to delete a consensus node in the network.\n */\nexport default class NodeDeleteTransaction extends Transaction {\n /**\n * @param {object} [props]\n * @param {Long} [props.nodeId]\n */\n constructor(props) {\n super();\n\n /**\n * @private\n * @type {?Long}\n * @description Consensus node identifier in the network state. It's required.\n */\n this._nodeId = props?.nodeId != null ? props.nodeId : null;\n }\n\n /**\n * @internal\n * @param {ITransaction[]} transactions\n * @param {ISignedTransaction[]} signedTransactions\n * @param {TransactionId[]} transactionIds\n * @param {AccountId[]} nodeIds\n * @param {ITransactionBody[]} bodies\n * @returns {NodeDeleteTransaction}\n */\n static _fromProtobuf(\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n ) {\n const body = bodies[0];\n const nodeDelete = /** @type {INodeDeleteTransactionBody} */ (\n body.nodeDelete\n );\n\n return Transaction._fromProtobufTransactions(\n new NodeDeleteTransaction({\n nodeId:\n nodeDelete.nodeId != null ? nodeDelete.nodeId : undefined,\n }),\n transactions,\n signedTransactions,\n transactionIds,\n nodeIds,\n bodies,\n );\n }\n\n /**\n * @param {Long} nodeId\n * @description Set consensus node identifier.\n * @returns {NodeDeleteTransaction}\n */\n setNodeId(nodeId) {\n this._requireNotFrozen();\n\n if (nodeId == null) {\n this._nodeId = null;\n return this;\n }\n\n // Convert to Long if it's a plain number\n const longNodeId = Long.isLong(nodeId)\n ? nodeId\n : Long.fromValue(nodeId);\n\n if (longNodeId.toNumber() < 0) {\n throw new Error(\n \"NodeDeleteTransaction: 'nodeId' must be positive.\",\n );\n }\n\n this._nodeId = longNodeId;\n\n return this;\n }\n\n /**\n * @description Get consensus node identifier.\n * @returns {?Long}\n */\n get nodeId() {\n return this._nodeId;\n }\n\n /**\n * @override\n * @param {?import(\"../client/Client.js\").default<Channel, *>} client\n * @returns {this}\n */\n freezeWith(client) {\n if (this.nodeId == null) {\n throw new Error(\n \"NodeDeleteTransaction: 'nodeId' must be explicitly set before calling freeze().\",\n );\n }\n\n return super.freezeWith(client);\n }\n\n /**\n * @override\n * @internal\n * @param {Channel} channel\n * @param {ITransaction} request\n * @returns {Promise<ITransactionResponse>}\n */\n _execute(channel, request) {\n return channel.addressBook.deleteNode(request);\n }\n\n /**\n * @override\n * @protected\n * @returns {NonNullable<TransactionBody[\"data\"]>}\n */\n _getTransactionDataCase() {\n return \"nodeDelete\";\n }\n\n /**\n * @override\n * @protected\n * @returns {INodeDeleteTransactionBody}\n */\n _makeTransactionData() {\n return {\n nodeId: this._nodeId != null ? this._nodeId : null,\n };\n }\n\n /**\n * @returns {string}\n */\n _getLogId() {\n const timestamp = /** @type {import(\"../Timestamp.js\").default} */ (\n this._transactionIds.current.validStart\n );\n return `NodeDeleteTransaction:${timestamp.toString()}`;\n }\n}\n\nTRANSACTION_REGISTRY.set(\n \"nodeDelete\",\n // eslint-disable-next-line @typescript-eslint/unbound-method\n NodeDeleteTransaction._fromProtobuf,\n);\n"],"names":["NodeDeleteTransaction","Transaction","constructor","props","super","this","_nodeId","nodeId","_fromProtobuf","transactions","signedTransactions","transactionIds","nodeIds","bodies","nodeDelete","_fromProtobufTransactions","undefined","setNodeId","_requireNotFrozen","longNodeId","Long","isLong","fromValue","toNumber","Error","freezeWith","client","_execute","channel","request","addressBook","deleteNode","_getTransactionDataCase","_makeTransactionData","_getLogId","_transactionIds","current","toString","TRANSACTION_REGISTRY","set"],"mappings":"4FA+Be,MAAMA,UAA8BC,EAK/C,WAAAC,CAAYC,GACRC,QAOAC,KAAKC,QAA2B,MAAjBH,GAAOI,OAAiBJ,EAAMI,OAAS,IAC9D,CAWI,oBAAOC,CACHC,EACAC,EACAC,EACAC,EACAC,GAEA,MACMC,EADOD,EAAO,GAGnB,WAED,OAAOZ,EAAYc,0BACf,IAAIf,EAAsB,CACtBO,OACyB,MAArBO,EAAWP,OAAiBO,EAAWP,YAASS,IAExDP,EACAC,EACAC,EACAC,EACAC,EAEZ,CAOI,SAAAI,CAAUV,GAGN,GAFAF,KAAKa,oBAES,MAAVX,EAEA,OADAF,KAAKC,QAAU,KACRD,KAIX,MAAMc,EAAaC,EAAKC,OAAOd,GACzBA,EACAa,EAAKE,UAAUf,GAErB,GAAIY,EAAWI,WAAa,EACxB,MAAM,IAAIC,MACN,qDAMR,OAFAnB,KAAKC,QAAUa,EAERd,IACf,CAMI,UAAIE,GACA,OAAOF,KAAKC,OACpB,CAOI,UAAAmB,CAAWC,GACP,GAAmB,MAAfrB,KAAKE,OACL,MAAM,IAAIiB,MACN,mFAIR,OAAOpB,MAAMqB,WAAWC,EAChC,CASI,QAAAC,CAASC,EAASC,GACd,OAAOD,EAAQE,YAAYC,WAAWF,EAC9C,CAOI,uBAAAG,GACI,MAAO,YACf,CAOI,oBAAAC,GACI,MAAO,CACH1B,OAAwB,MAAhBF,KAAKC,QAAkBD,KAAKC,QAAU,KAE1D,CAKI,SAAA4B,GAII,MAAO,yBAFH7B,KAAK8B,gBAAgBC,QACxB,WACyCC,YAClD,EAGAC,EAAqBC,IACjB,aAEAvC,EAAsBQ"}
|
|
@@ -8,8 +8,8 @@ var _AccountId = _interopRequireDefault(require("../account/AccountId.cjs"));
|
|
|
8
8
|
var _Key = _interopRequireDefault(require("../Key.cjs"));
|
|
9
9
|
var _Transaction = _interopRequireWildcard(require("../transaction/Transaction.cjs"));
|
|
10
10
|
var _ServiceEndpoint = _interopRequireDefault(require("./ServiceEndpoint.cjs"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!
|
|
11
|
+
var _long = _interopRequireDefault(require("long"));
|
|
12
|
+
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); }
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
15
15
|
|
|
@@ -162,7 +162,17 @@ class NodeUpdateTransaction extends _Transaction.default {
|
|
|
162
162
|
*/
|
|
163
163
|
setNodeId(nodeId) {
|
|
164
164
|
this._requireNotFrozen();
|
|
165
|
-
|
|
165
|
+
if (nodeId == null) {
|
|
166
|
+
this._nodeId = null;
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Convert to Long if it's a plain number
|
|
171
|
+
const longNodeId = _long.default.isLong(nodeId) ? nodeId : _long.default.fromValue(nodeId);
|
|
172
|
+
if (longNodeId.toNumber() < 0) {
|
|
173
|
+
throw new Error("NodeUpdateTransaction: 'nodeId' must be positive.");
|
|
174
|
+
}
|
|
175
|
+
this._nodeId = longNodeId;
|
|
166
176
|
return this;
|
|
167
177
|
}
|
|
168
178
|
|
|
@@ -43,7 +43,7 @@ export default class NodeUpdateTransaction extends Transaction {
|
|
|
43
43
|
* @param {boolean} [props.declineReward]
|
|
44
44
|
*/
|
|
45
45
|
constructor(props?: {
|
|
46
|
-
nodeId?:
|
|
46
|
+
nodeId?: Long | undefined;
|
|
47
47
|
accountId?: AccountId | undefined;
|
|
48
48
|
description?: string | null | undefined;
|
|
49
49
|
gossipEndpoints?: ServiceEndpoint[] | undefined;
|
|
@@ -269,6 +269,7 @@ export type Channel = import("../channel/Channel.js").default;
|
|
|
269
269
|
export type TransactionId = import("../transaction/TransactionId.js").default;
|
|
270
270
|
export type Client = import("../client/Client.js").default<any, any>;
|
|
271
271
|
import Transaction from "../transaction/Transaction.js";
|
|
272
|
+
import Long from "long";
|
|
272
273
|
import AccountId from "../account/AccountId.js";
|
|
273
274
|
import ServiceEndpoint from "./ServiceEndpoint.js";
|
|
274
275
|
import Key from "../Key.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from"../account/AccountId.js";import e from"../Key.js";import i,{TRANSACTION_REGISTRY as n}from"../transaction/Transaction.js";import r from"./ServiceEndpoint.js";class s extends i{constructor(t){super(),this._nodeId=null!=t?.nodeId?t.nodeId:null,this._accountId=null!=t?.accountId?t.accountId:null,this._description=null!=t?.description?t.description:null,this._gossipEndpoints=null!=t?.gossipEndpoints?t.gossipEndpoints:null,this._serviceEndpoints=null!=t?.serviceEndpoints?t.serviceEndpoints:null,this._gossipCaCertificate=null!=t?.gossipCaCertificate?t.gossipCaCertificate:null,this._grpcCertificateHash=null!=t?.grpcCertificateHash?t.grpcCertificateHash:null,this._grpcWebProxyEndpoint=t?.grpcWebProxyEndpoint||null,this._adminKey=null!=t?.adminKey?t.adminKey:null,this._declineReward=null!=t?.declineReward?t.declineReward:null}static _fromProtobuf(n,o,d,a,c){const
|
|
1
|
+
import t from"../account/AccountId.js";import e from"../Key.js";import i,{TRANSACTION_REGISTRY as n}from"../transaction/Transaction.js";import r from"./ServiceEndpoint.js";import o from"long";class s extends i{constructor(t){super(),this._nodeId=null!=t?.nodeId?t.nodeId:null,this._accountId=null!=t?.accountId?t.accountId:null,this._description=null!=t?.description?t.description:null,this._gossipEndpoints=null!=t?.gossipEndpoints?t.gossipEndpoints:null,this._serviceEndpoints=null!=t?.serviceEndpoints?t.serviceEndpoints:null,this._gossipCaCertificate=null!=t?.gossipCaCertificate?t.gossipCaCertificate:null,this._grpcCertificateHash=null!=t?.grpcCertificateHash?t.grpcCertificateHash:null,this._grpcWebProxyEndpoint=t?.grpcWebProxyEndpoint||null,this._adminKey=null!=t?.adminKey?t.adminKey:null,this._declineReward=null!=t?.declineReward?t.declineReward:null}static _fromProtobuf(n,o,d,a,c){const u=c[0].nodeUpdate;return i._fromProtobufTransactions(new s({nodeId:null!=u.nodeId?u.nodeId:void 0,accountId:null!=u.accountId?t._fromProtobuf(u.accountId):void 0,description:null!=u.description&&Object.hasOwn(u.description,"value")?u.description.value:void 0,gossipEndpoints:null!=u.gossipEndpoint?u.gossipEndpoint.map(t=>r._fromProtobuf(t)):void 0,serviceEndpoints:null!=u.serviceEndpoint?u.serviceEndpoint.map(t=>r._fromProtobuf(t)):void 0,gossipCaCertificate:null!=u.gossipCaCertificate&&Object.hasOwn(u.gossipCaCertificate,"value")?u.gossipCaCertificate.value:void 0,grpcCertificateHash:null!=u.grpcCertificateHash&&Object.hasOwn(u.grpcCertificateHash,"value")?u.grpcCertificateHash.value:void 0,grpcWebProxyEndpoint:null!=u.grpcProxyEndpoint?r._fromProtobuf(u.grpcProxyEndpoint):void 0,adminKey:null!=u.adminKey?e._fromProtobufKey(u.adminKey):void 0,declineReward:null!=u.declineReward?.value?u.declineReward.value:void 0}),n,o,d,a,c)}setNodeId(t){if(this._requireNotFrozen(),null==t)return this._nodeId=null,this;const e=o.isLong(t)?t:o.fromValue(t);if(e.toNumber()<0)throw new Error("NodeUpdateTransaction: 'nodeId' must be positive.");return this._nodeId=e,this}get nodeId(){return this._nodeId}setAccountId(e){return this._requireNotFrozen(),this._accountId=e instanceof t?e:t.fromString(e),this}get accountId(){return this._accountId}setDescription(t){if(this._requireNotFrozen(),t.length>100)throw new Error("Description must be at most 100 characters.");return this._description=t,this}clearDescription(){this._description=""}get description(){return this._description}setGossipEndpoints(t){if(this._requireNotFrozen(),0==t.length)throw new Error("GossipEndpoints list must not be empty.");if(t.length>10)throw new Error("GossipEndpoints list must not contain more than 10 entries.");return this._gossipEndpoints=[...t],this}get gossipEndpoints(){return this._gossipEndpoints}addGossipEndpoint(t){return this._requireNotFrozen(),null!=this._gossipEndpoints&&this._gossipEndpoints.push(t),this}setServiceEndpoints(t){if(this._requireNotFrozen(),0==t.length)throw new Error("ServiceEndpoints list must not be empty.");if(t.length>8)throw new Error("ServiceEndpoints list must not contain more than 8 entries.");return this._serviceEndpoints=[...t],this}get serviceEndpoints(){return this._serviceEndpoints}addServiceEndpoint(t){return this._requireNotFrozen(),null!=this._serviceEndpoints&&this._serviceEndpoints.push(t),this}setGossipCaCertificate(t){if(this._requireNotFrozen(),0==t.length)throw new Error("GossipCaCertificate must not be empty.");return this._gossipCaCertificate=t,this}get gossipCaCertificate(){return this._gossipCaCertificate}setCertificateHash(t){return this._requireNotFrozen(),this._grpcCertificateHash=t,this}get certificateHash(){return this._grpcCertificateHash}setGrpcWebProxyEndpoint(t){return this._requireNotFrozen(),this._grpcWebProxyEndpoint=t,this}get grpcWebProxyEndpoint(){return this._grpcWebProxyEndpoint}setAdminKey(t){return this._requireNotFrozen(),this._adminKey=t,this}get adminKey(){return this._adminKey}setDeclineReward(t){return this._requireNotFrozen(),this._declineReward=t,this}get declineReward(){return this._declineReward}deleteGrpcWebProxyEndpoint(){return this._grpcWebProxyEndpoint=new r,this}freezeWith(t){if(null==this.nodeId)throw new Error("NodeUpdateTransaction: 'nodeId' must be explicitly set before calling freeze().");return super.freezeWith(t)}_execute(t,e){return t.addressBook.updateNode(e)}_getTransactionDataCase(){return"nodeUpdate"}_makeTransactionData(){return{accountId:null!=this._accountId?this._accountId._toProtobuf():null,description:{value:null!=this._description?this._description:null},gossipEndpoint:null!=this._gossipEndpoints?this._gossipEndpoints.map(t=>t._toProtobuf()):null,serviceEndpoint:null!=this._serviceEndpoints?this._serviceEndpoints.map(t=>t._toProtobuf()):null,gossipCaCertificate:null!=this._gossipCaCertificate?{value:this._gossipCaCertificate}:null,grpcCertificateHash:null!=this._grpcCertificateHash?{value:this._grpcCertificateHash}:null,grpcProxyEndpoint:null!=this._grpcWebProxyEndpoint?this._grpcWebProxyEndpoint._toProtobuf():null,adminKey:null!=this._adminKey?this._adminKey._toProtobufKey():null,nodeId:null!=this._nodeId?this._nodeId:null,declineReward:null!=this._declineReward?{value:this._declineReward}:null}}_getLogId(){return`NodeUpdateTransaction:${this._transactionIds.current.validStart.toString()}`}}n.set("nodeUpdate",s._fromProtobuf);export{s as default};
|
|
2
2
|
//# sourceMappingURL=NodeUpdateTransaction.js.map
|