@hiero-ledger/sdk 2.71.0-beta.0 → 2.71.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 +142 -40
- package/dist/umd.min.js +2 -2
- package/lib/LedgerId.cjs +4 -4
- package/lib/LedgerId.js +1 -1
- package/lib/LedgerId.js.map +1 -1
- package/lib/channel/NativeChannel.cjs +3 -2
- package/lib/channel/NativeChannel.js +1 -1
- package/lib/channel/NativeChannel.js.map +1 -1
- package/lib/channel/NodeMirrorChannel.cjs +0 -2
- package/lib/channel/NodeMirrorChannel.js +1 -1
- package/lib/channel/NodeMirrorChannel.js.map +1 -1
- package/lib/client/Client.cjs +3 -2
- package/lib/client/Client.d.ts +2 -2
- package/lib/client/Client.js +1 -1
- package/lib/client/Client.js.map +1 -1
- package/lib/client/NativeClient.cjs +141 -44
- package/lib/client/NativeClient.d.ts +48 -16
- package/lib/client/NativeClient.js +1 -1
- package/lib/client/NativeClient.js.map +1 -1
- package/lib/client/NodeClient.cjs +63 -2
- package/lib/client/NodeClient.d.ts +42 -0
- package/lib/client/NodeClient.js +1 -1
- package/lib/client/NodeClient.js.map +1 -1
- package/lib/client/WebClient.cjs +64 -34
- package/lib/client/WebClient.d.ts +35 -15
- package/lib/client/WebClient.js +1 -1
- package/lib/client/WebClient.js.map +1 -1
- package/lib/constants/ClientConstants.cjs +22 -7
- package/lib/constants/ClientConstants.d.ts +12 -6
- package/lib/constants/ClientConstants.js +1 -1
- package/lib/constants/ClientConstants.js.map +1 -1
- package/lib/contract/ContractCreateTransaction.cjs +5 -0
- package/lib/contract/ContractCreateTransaction.js +1 -1
- package/lib/contract/ContractCreateTransaction.js.map +1 -1
- package/lib/contract/ContractDeleteTransaction.cjs +35 -2
- package/lib/contract/ContractDeleteTransaction.d.ts +18 -0
- package/lib/contract/ContractDeleteTransaction.js +1 -1
- package/lib/contract/ContractDeleteTransaction.js.map +1 -1
- package/lib/contract/ContractUpdateTransaction.cjs +2 -1
- package/lib/contract/ContractUpdateTransaction.js +1 -1
- package/lib/contract/ContractUpdateTransaction.js.map +1 -1
- package/lib/encoding/hex.cjs +11 -0
- package/lib/encoding/hex.js +1 -1
- package/lib/encoding/hex.js.map +1 -1
- package/lib/native.cjs +2 -2
- package/lib/native.d.ts +1 -1
- package/lib/native.js +1 -1
- package/lib/version.js +1 -1
- package/package.json +2 -2
- package/src/LedgerId.js +4 -4
- package/src/channel/NativeChannel.js +9 -1
- package/src/channel/NodeMirrorChannel.js +0 -2
- package/src/client/Client.js +4 -2
- package/src/client/NativeClient.js +151 -47
- package/src/client/NodeClient.js +56 -3
- package/src/client/WebClient.js +63 -44
- package/src/constants/ClientConstants.js +26 -8
- package/src/contract/ContractCreateTransaction.js +5 -3
- package/src/contract/ContractDeleteTransaction.js +34 -0
- package/src/contract/ContractUpdateTransaction.js +4 -1
- package/src/encoding/hex.js +20 -0
- package/src/native.js +1 -1
package/lib/encoding/hex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hex.js","sources":["../../src/encoding/hex.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nexport function encode(data) {\n return Buffer.from(data).toString(\"hex\");\n}\n\n/**\n * @param {string} text\n * @returns {Uint8Array}\n */\nexport function decode(text) {\n const str = text.startsWith(\"0x\") ? text.substring(2) : text;\n return Buffer.from(str, \"hex\");\n}\n\n/**\n * Check if a string is a valid hexadecimal string\n * @param {string} text - The string to check\n * @returns {boolean} - True if the string is a valid hex string, false otherwise\n */\nexport function isHexString(text) {\n if (typeof text !== \"string\") {\n return false;\n }\n\n const str = text.startsWith(\"0x\") ? text.substring(2) : text;\n\n // Check if the string is empty after removing 0x prefix\n if (str.length === 0) {\n return false;\n }\n\n // Check if the string has even length (hex pairs)\n if (str.length % 2 !== 0) {\n return false;\n }\n\n // Check if all characters are valid hex digits\n const hexRegex = /^[0-9a-fA-F]+$/;\n return hexRegex.test(str);\n}\n\n/**\n * Encode with a specified length. Supports zero padding if the most significant byte is 0\n *\n * https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L315\n *\n * @param {Uint8Array} value\n * @param {number} length\n * @returns {string}\n */\nexport function hexZeroPadded(value, length) {\n const HexCharacters = \"0123456789abcdef\";\n\n // https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L243\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n\n // https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L315\n if (result.length > 2 * length + 2) {\n console.log(\"result out of range\", \"result\");\n }\n\n while (result.length < 2 * length + 2) {\n result = \"0x0\" + result.substring(2);\n }\n\n return result.substring(2);\n}\n"],"names":["encode","data","Buffer","from","toString","decode","text","str","startsWith","substring","
|
|
1
|
+
{"version":3,"file":"hex.js","sources":["../../src/encoding/hex.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * @param {Uint8Array} data\n * @returns {string}\n */\nexport function encode(data) {\n return Buffer.from(data).toString(\"hex\");\n}\n\n/**\n * @param {string} text\n * @returns {Uint8Array}\n */\nexport function decode(text) {\n const str = text.startsWith(\"0x\") ? text.substring(2) : text;\n\n if (str.length % 2 !== 0) {\n throw new Error(\n \"Invalid hex string: Must have an even number of characters.\",\n );\n }\n\n if (/[^0-9a-fA-F]/.test(str)) {\n throw new Error(\n \"Invalid hex string: Contains non-hexadecimal characters.\",\n );\n }\n\n const bytes = new Uint8Array(str.length / 2);\n\n for (let i = 0; i < str.length; i += 2) {\n const byte = parseInt(str.substring(i, i + 2), 16);\n bytes[i / 2] = byte;\n }\n\n return Buffer.from(str, \"hex\");\n}\n\n/**\n * Check if a string is a valid hexadecimal string\n * @param {string} text - The string to check\n * @returns {boolean} - True if the string is a valid hex string, false otherwise\n */\nexport function isHexString(text) {\n if (typeof text !== \"string\") {\n return false;\n }\n\n const str = text.startsWith(\"0x\") ? text.substring(2) : text;\n\n // Check if the string is empty after removing 0x prefix\n if (str.length === 0) {\n return false;\n }\n\n // Check if the string has even length (hex pairs)\n if (str.length % 2 !== 0) {\n return false;\n }\n\n // Check if all characters are valid hex digits\n const hexRegex = /^[0-9a-fA-F]+$/;\n return hexRegex.test(str);\n}\n\n/**\n * Encode with a specified length. Supports zero padding if the most significant byte is 0\n *\n * https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L315\n *\n * @param {Uint8Array} value\n * @param {number} length\n * @returns {string}\n */\nexport function hexZeroPadded(value, length) {\n const HexCharacters = \"0123456789abcdef\";\n\n // https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L243\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n\n // https://github.com/ethers-io/ethers.js/blob/master/packages/bytes/src.ts/index.ts#L315\n if (result.length > 2 * length + 2) {\n console.log(\"result out of range\", \"result\");\n }\n\n while (result.length < 2 * length + 2) {\n result = \"0x0\" + result.substring(2);\n }\n\n return result.substring(2);\n}\n"],"names":["encode","data","Buffer","from","toString","decode","text","str","startsWith","substring","length","Error","test","bytes","Uint8Array","i","byte","parseInt","isHexString"],"mappings":"AAMO,SAASA,EAAOC,GACnB,OAAOC,OAAOC,KAAKF,GAAMG,SAAS,MACtC,CAMO,SAASC,EAAOC,GACnB,MAAMC,EAAMD,EAAKE,WAAW,MAAQF,EAAKG,UAAU,GAAKH,EAExD,GAAIC,EAAIG,OAAS,GAAM,EACnB,MAAM,IAAIC,MACN,+DAIR,GAAI,eAAeC,KAAKL,GACpB,MAAM,IAAII,MACN,4DAIR,MAAME,EAAQ,IAAIC,WAAWP,EAAIG,OAAS,GAE1C,IAAK,IAAIK,EAAI,EAAGA,EAAIR,EAAIG,OAAQK,GAAK,EAAG,CACpC,MAAMC,EAAOC,SAASV,EAAIE,UAAUM,EAAGA,EAAI,GAAI,IAC/CF,EAAME,EAAI,GAAKC,CACvB,CAEI,OAAOd,OAAOC,KAAKI,EAAK,MAC5B,CAOO,SAASW,EAAYZ,GACxB,GAAoB,iBAATA,EACP,OAAO,EAGX,MAAMC,EAAMD,EAAKE,WAAW,MAAQF,EAAKG,UAAU,GAAKH,EAGxD,GAAmB,IAAfC,EAAIG,OACJ,OAAO,EAIX,GAAIH,EAAIG,OAAS,GAAM,EACnB,OAAO,EAKX,MADiB,iBACDE,KAAKL,EACzB"}
|
package/lib/native.cjs
CHANGED
|
@@ -10,7 +10,7 @@ var _exportNames = {
|
|
|
10
10
|
Object.defineProperty(exports, "AddressBookQuery", {
|
|
11
11
|
enumerable: true,
|
|
12
12
|
get: function () {
|
|
13
|
-
return
|
|
13
|
+
return _AddressBookQueryWeb.default;
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "Client", {
|
|
@@ -32,5 +32,5 @@ Object.keys(_exports).forEach(function (key) {
|
|
|
32
32
|
});
|
|
33
33
|
});
|
|
34
34
|
var _NativeClient = _interopRequireDefault(require("./client/NativeClient.cjs"));
|
|
35
|
-
var
|
|
35
|
+
var _AddressBookQueryWeb = _interopRequireDefault(require("./network/AddressBookQueryWeb.cjs"));
|
|
36
36
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
package/lib/native.d.ts
CHANGED
package/lib/native.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{NetworkName}from"./exports.js";export{default as Client}from"./client/NativeClient.js";export{default as AddressBookQuery}from"./network/AddressBookQuery.js";export{default as Cache}from"./Cache.js";export{default as PrivateKey}from"./PrivateKey.js";export{default as PublicKey}from"./PublicKey.js";export{default as KeyList}from"./KeyList.js";export{default as Key}from"./Key.js";export{default as Mnemonic}from"./Mnemonic.js";export{default as TokenAirdropTransaction}from"./token/TokenAirdropTransaction.js";export{default as TokenClaimAirdropTransaction}from"./token/TokenClaimAirdropTransaction.js";export{default as TokenCancelAirdropTransaction}from"./token/TokenCancelAirdropTransaction.js";export{default as AccountAllowanceAdjustTransaction}from"./account/AccountAllowanceAdjustTransaction.js";export{default as AccountAllowanceApproveTransaction}from"./account/AccountAllowanceApproveTransaction.js";export{default as AccountAllowanceDeleteTransaction}from"./account/AccountAllowanceDeleteTransaction.js";export{default as AccountBalance}from"./account/AccountBalance.js";export{default as AccountBalanceQuery}from"./account/AccountBalanceQuery.js";export{default as AccountCreateTransaction}from"./account/AccountCreateTransaction.js";export{default as AccountDeleteTransaction}from"./account/AccountDeleteTransaction.js";export{default as AccountId}from"./account/AccountId.js";export{default as AccountInfo}from"./account/AccountInfo.js";export{default as AccountInfoFlow}from"./account/AccountInfoFlow.js";export{default as AccountInfoQuery}from"./account/AccountInfoQuery.js";export{default as AccountRecordsQuery}from"./account/AccountRecordsQuery.js";export{default as AccountUpdateTransaction}from"./account/AccountUpdateTransaction.js";export{default as AssessedCustomFee}from"./token/AssessedCustomFee.js";export{default as BatchTransaction}from"./transaction/BatchTransaction.js";export{default as ContractByteCodeQuery}from"./contract/ContractByteCodeQuery.js";export{default as ContractCallQuery}from"./contract/ContractCallQuery.js";export{default as ContractCreateFlow}from"./contract/ContractCreateFlow.js";export{default as ContractCreateTransaction}from"./contract/ContractCreateTransaction.js";export{default as ContractDeleteTransaction}from"./contract/ContractDeleteTransaction.js";export{default as ContractExecuteTransaction}from"./contract/ContractExecuteTransaction.js";export{default as ContractFunctionParameters}from"./contract/ContractFunctionParameters.js";export{default as ContractFunctionResult}from"./contract/ContractFunctionResult.js";export{default as ContractFunctionSelector}from"./contract/ContractFunctionSelector.js";export{default as ContractId}from"./contract/ContractId.js";export{default as ContractInfo}from"./contract/ContractInfo.js";export{default as ContractInfoQuery}from"./contract/ContractInfoQuery.js";export{default as ContractLogInfo}from"./contract/ContractLogInfo.js";export{default as ContractNonceInfo}from"./contract/ContractNonceInfo.js";export{default as ContractUpdateTransaction}from"./contract/ContractUpdateTransaction.js";export{default as CustomFee}from"./token/CustomFee.js";export{default as CustomFixedFee}from"./token/CustomFixedFee.js";export{default as CustomFractionalFee}from"./token/CustomFractionalFee.js";export{default as CustomRoyaltyFee}from"./token/CustomRoyaltyFee.js";export{default as DelegateContractId}from"./contract/DelegateContractId.js";export{default as EthereumTransaction}from"./EthereumTransaction.js";export{default as EthereumTransactionDataLegacy}from"./EthereumTransactionDataLegacy.js";export{default as EthereumTransactionDataEip1559}from"./EthereumTransactionDataEip1559.js";export{default as EthereumTransactionDataEip2930}from"./EthereumTransactionDataEip2930.js";export{default as EthereumTransactionData}from"./EthereumTransactionData.js";export{default as EthereumFlow}from"./EthereumFlow.js";export{default as EvmAddress}from"./EvmAddress.js";export{default as ExchangeRate}from"./ExchangeRate.js";export{default as ExchangeRates}from"./ExchangeRates.js";export{default as Executable}from"./Executable.js";export{default as FeeAssessmentMethod}from"./token/FeeAssessmentMethod.js";export{default as FeeComponents}from"./FeeComponents.js";export{default as FeeData}from"./FeeData.js";export{default as FeeDataType}from"./FeeDataType.js";export{default as FeeSchedule}from"./FeeSchedule.js";export{default as FeeSchedules}from"./FeeSchedules.js";export{default as FileAppendTransaction}from"./file/FileAppendTransaction.js";export{default as FileContentsQuery}from"./file/FileContentsQuery.js";export{default as FileCreateTransaction}from"./file/FileCreateTransaction.js";export{default as FileDeleteTransaction}from"./file/FileDeleteTransaction.js";export{default as FileId}from"./file/FileId.js";export{default as FileInfo}from"./file/FileInfo.js";export{default as FileInfoQuery}from"./file/FileInfoQuery.js";export{default as FileUpdateTransaction}from"./file/FileUpdateTransaction.js";export{default as FreezeTransaction}from"./system/FreezeTransaction.js";export{default as Hbar}from"./Hbar.js";export{default as HbarAllowance}from"./account/HbarAllowance.js";export{default as HbarUnit}from"./HbarUnit.js";export{default as LiveHash}from"./account/LiveHash.js";export{default as LiveHashAddTransaction}from"./account/LiveHashAddTransaction.js";export{default as LiveHashDeleteTransaction}from"./account/LiveHashDeleteTransaction.js";export{default as LiveHashQuery}from"./account/LiveHashQuery.js";export{default as MaxQueryPaymentExceeded}from"./MaxQueryPaymentExceeded.js";export{default as MirrorNodeContractCallQuery}from"./query/MirrorNodeContractCallQuery.js";export{default as MirrorNodeContractEstimateQuery}from"./query/MirrorNodeContractEstimateQuery.js";export{default as NodeAddressBook}from"./address_book/NodeAddressBook.js";export{default as NetworkVersionInfo}from"./network/NetworkVersionInfo.js";export{default as NetworkVersionInfoQuery}from"./network/NetworkVersionInfoQuery.js";export{default as NftId}from"./token/NftId.js";export{default as PendingAirdropId}from"./token/PendingAirdropId.js";export{default as PrngTransaction}from"./PrngTransaction.js";export{default as ProxyStaker}from"./account/ProxyStaker.js";export{default as Query}from"./query/Query.js";export{default as RequestType}from"./RequestType.js";export{default as ScheduleCreateTransaction}from"./schedule/ScheduleCreateTransaction.js";export{default as ScheduleDeleteTransaction}from"./schedule/ScheduleDeleteTransaction.js";export{default as ScheduleId}from"./schedule/ScheduleId.js";export{default as ScheduleInfo}from"./schedule/ScheduleInfo.js";export{default as ScheduleInfoQuery}from"./schedule/ScheduleInfoQuery.js";export{default as ScheduleSignTransaction}from"./schedule/ScheduleSignTransaction.js";export{default as SemanticVersion}from"./network/SemanticVersion.js";export{default as SignatureMap}from"./transaction/SignatureMap.js";export{default as SignerSignature}from"./SignerSignature.js";export{default as Status}from"./Status.js";export{default as SubscriptionHandle}from"./topic/SubscriptionHandle.js";export{default as SystemDeleteTransaction}from"./system/SystemDeleteTransaction.js";export{default as SystemUndeleteTransaction}from"./system/SystemUndeleteTransaction.js";export{default as Timestamp}from"./Timestamp.js";export{default as TokenAllowance}from"./account/TokenAllowance.js";export{default as TokenAssociateTransaction}from"./token/TokenAssociateTransaction.js";export{default as TokenBurnTransaction}from"./token/TokenBurnTransaction.js";export{default as TokenRejectTransaction}from"./token/TokenRejectTransaction.js";export{default as TokenRejectFlow}from"./token/TokenRejectFlow.js";export{default as TokenCreateTransaction}from"./token/TokenCreateTransaction.js";export{default as TokenDeleteTransaction}from"./token/TokenDeleteTransaction.js";export{default as TokenDissociateTransaction}from"./token/TokenDissociateTransaction.js";export{default as TokenFeeScheduleUpdateTransaction}from"./token/TokenFeeScheduleUpdateTransaction.js";export{default as TokenFreezeTransaction}from"./token/TokenFreezeTransaction.js";export{default as TokenGrantKycTransaction}from"./token/TokenGrantKycTransaction.js";export{default as TokenId}from"./token/TokenId.js";export{default as TokenInfo}from"./token/TokenInfo.js";export{default as TokenInfoQuery}from"./token/TokenInfoQuery.js";export{default as TokenMintTransaction}from"./token/TokenMintTransaction.js";export{default as TokenNftAllowance}from"./account/TokenNftAllowance.js";export{default as TokenNftInfo}from"./token/TokenNftInfo.js";export{default as TokenNftInfoQuery}from"./token/TokenNftInfoQuery.js";export{default as TokenPauseTransaction}from"./token/TokenPauseTransaction.js";export{default as TokenRevokeKycTransaction}from"./token/TokenRevokeKycTransaction.js";export{default as TokenSupplyType}from"./token/TokenSupplyType.js";export{default as TokenType}from"./token/TokenType.js";export{default as TokenUnfreezeTransaction}from"./token/TokenUnfreezeTransaction.js";export{default as TokenUnpauseTransaction}from"./token/TokenUnpauseTransaction.js";export{default as TokenUpdateTransaction}from"./token/TokenUpdateTransaction.js";export{default as TokenWipeTransaction}from"./token/TokenWipeTransaction.js";export{default as TopicCreateTransaction}from"./topic/TopicCreateTransaction.js";export{default as TopicDeleteTransaction}from"./topic/TopicDeleteTransaction.js";export{default as TopicId}from"./topic/TopicId.js";export{default as TopicInfo}from"./topic/TopicInfo.js";export{default as TopicInfoQuery}from"./topic/TopicInfoQuery.js";export{default as TopicMessage}from"./topic/TopicMessage.js";export{default as TopicMessageChunk}from"./topic/TopicMessageChunk.js";export{default as TopicMessageQuery}from"./topic/TopicMessageQuery.js";export{default as TopicMessageSubmitTransaction}from"./topic/TopicMessageSubmitTransaction.js";export{default as TopicUpdateTransaction}from"./topic/TopicUpdateTransaction.js";export{default as CustomFeeLimit}from"./transaction/CustomFeeLimit.js";export{default as Transaction}from"./transaction/Transaction.js";export{default as TransactionFeeSchedule}from"./TransactionFeeSchedule.js";export{default as TransactionId}from"./transaction/TransactionId.js";export{default as TransactionReceipt}from"./transaction/TransactionReceipt.js";export{default as TransactionReceiptQuery}from"./transaction/TransactionReceiptQuery.js";export{default as TransactionRecord}from"./transaction/TransactionRecord.js";export{default as TransactionRecordQuery}from"./transaction/TransactionRecordQuery.js";export{default as TransactionResponse}from"./transaction/TransactionResponse.js";export{default as Transfer}from"./Transfer.js";export{default as TransferTransaction}from"./account/TransferTransaction.js";export{default as Wallet}from"./Wallet.js";export{default as Logger}from"./logger/Logger.js";export{default as LogLevel}from"./logger/LogLevel.js";export{default as FreezeType}from"./FreezeType.js";export{default as TokenKeyValidation}from"./token/TokenKeyValidation.js";export{default as StatusError}from"./StatusError.js";export{default as MaxAttemptsOrTimeoutError}from"./MaxAttemptsOrTimeoutError.js";export{default as PrecheckStatusError}from"./PrecheckStatusError.js";export{default as ReceiptStatusError}from"./ReceiptStatusError.js";export{default as LedgerId}from"./LedgerId.js";export{default as TokenUpdateNftsTransaction}from"./token/TokenUpdateNftsTransaction.js";export{default as NodeCreateTransaction}from"./node/NodeCreateTransaction.js";export{default as ServiceEndpoint}from"./node/ServiceEndpoint.js";export{default as NodeDeleteTransaction}from"./node/NodeDeleteTransaction.js";export{default as NodeUpdateTransaction}from"./node/NodeUpdateTransaction.js";export{default as WebClient}from"./client/WebClient.js";export{BadKeyError,BadMnemonicError,BadMnemonicReason,HEDERA_PATH,SLIP44_ECDSA_ETH_PATH,SLIP44_ECDSA_HEDERA_PATH}from"@hashgraph/cryptography";export{default as Provider}from"./Provider.js";export{default as Signer}from"./Signer.js";export{default as Long}from"long";import*as e from"./EntityIdHelper.js";export{e as EntityIdHelper};
|
|
1
|
+
export{NetworkName}from"./exports.js";export{default as Client}from"./client/NativeClient.js";export{default as AddressBookQuery}from"./network/AddressBookQueryWeb.js";export{default as Cache}from"./Cache.js";export{default as PrivateKey}from"./PrivateKey.js";export{default as PublicKey}from"./PublicKey.js";export{default as KeyList}from"./KeyList.js";export{default as Key}from"./Key.js";export{default as Mnemonic}from"./Mnemonic.js";export{default as TokenAirdropTransaction}from"./token/TokenAirdropTransaction.js";export{default as TokenClaimAirdropTransaction}from"./token/TokenClaimAirdropTransaction.js";export{default as TokenCancelAirdropTransaction}from"./token/TokenCancelAirdropTransaction.js";export{default as AccountAllowanceAdjustTransaction}from"./account/AccountAllowanceAdjustTransaction.js";export{default as AccountAllowanceApproveTransaction}from"./account/AccountAllowanceApproveTransaction.js";export{default as AccountAllowanceDeleteTransaction}from"./account/AccountAllowanceDeleteTransaction.js";export{default as AccountBalance}from"./account/AccountBalance.js";export{default as AccountBalanceQuery}from"./account/AccountBalanceQuery.js";export{default as AccountCreateTransaction}from"./account/AccountCreateTransaction.js";export{default as AccountDeleteTransaction}from"./account/AccountDeleteTransaction.js";export{default as AccountId}from"./account/AccountId.js";export{default as AccountInfo}from"./account/AccountInfo.js";export{default as AccountInfoFlow}from"./account/AccountInfoFlow.js";export{default as AccountInfoQuery}from"./account/AccountInfoQuery.js";export{default as AccountRecordsQuery}from"./account/AccountRecordsQuery.js";export{default as AccountUpdateTransaction}from"./account/AccountUpdateTransaction.js";export{default as AssessedCustomFee}from"./token/AssessedCustomFee.js";export{default as BatchTransaction}from"./transaction/BatchTransaction.js";export{default as ContractByteCodeQuery}from"./contract/ContractByteCodeQuery.js";export{default as ContractCallQuery}from"./contract/ContractCallQuery.js";export{default as ContractCreateFlow}from"./contract/ContractCreateFlow.js";export{default as ContractCreateTransaction}from"./contract/ContractCreateTransaction.js";export{default as ContractDeleteTransaction}from"./contract/ContractDeleteTransaction.js";export{default as ContractExecuteTransaction}from"./contract/ContractExecuteTransaction.js";export{default as ContractFunctionParameters}from"./contract/ContractFunctionParameters.js";export{default as ContractFunctionResult}from"./contract/ContractFunctionResult.js";export{default as ContractFunctionSelector}from"./contract/ContractFunctionSelector.js";export{default as ContractId}from"./contract/ContractId.js";export{default as ContractInfo}from"./contract/ContractInfo.js";export{default as ContractInfoQuery}from"./contract/ContractInfoQuery.js";export{default as ContractLogInfo}from"./contract/ContractLogInfo.js";export{default as ContractNonceInfo}from"./contract/ContractNonceInfo.js";export{default as ContractUpdateTransaction}from"./contract/ContractUpdateTransaction.js";export{default as CustomFee}from"./token/CustomFee.js";export{default as CustomFixedFee}from"./token/CustomFixedFee.js";export{default as CustomFractionalFee}from"./token/CustomFractionalFee.js";export{default as CustomRoyaltyFee}from"./token/CustomRoyaltyFee.js";export{default as DelegateContractId}from"./contract/DelegateContractId.js";export{default as EthereumTransaction}from"./EthereumTransaction.js";export{default as EthereumTransactionDataLegacy}from"./EthereumTransactionDataLegacy.js";export{default as EthereumTransactionDataEip1559}from"./EthereumTransactionDataEip1559.js";export{default as EthereumTransactionDataEip2930}from"./EthereumTransactionDataEip2930.js";export{default as EthereumTransactionData}from"./EthereumTransactionData.js";export{default as EthereumFlow}from"./EthereumFlow.js";export{default as EvmAddress}from"./EvmAddress.js";export{default as ExchangeRate}from"./ExchangeRate.js";export{default as ExchangeRates}from"./ExchangeRates.js";export{default as Executable}from"./Executable.js";export{default as FeeAssessmentMethod}from"./token/FeeAssessmentMethod.js";export{default as FeeComponents}from"./FeeComponents.js";export{default as FeeData}from"./FeeData.js";export{default as FeeDataType}from"./FeeDataType.js";export{default as FeeSchedule}from"./FeeSchedule.js";export{default as FeeSchedules}from"./FeeSchedules.js";export{default as FileAppendTransaction}from"./file/FileAppendTransaction.js";export{default as FileContentsQuery}from"./file/FileContentsQuery.js";export{default as FileCreateTransaction}from"./file/FileCreateTransaction.js";export{default as FileDeleteTransaction}from"./file/FileDeleteTransaction.js";export{default as FileId}from"./file/FileId.js";export{default as FileInfo}from"./file/FileInfo.js";export{default as FileInfoQuery}from"./file/FileInfoQuery.js";export{default as FileUpdateTransaction}from"./file/FileUpdateTransaction.js";export{default as FreezeTransaction}from"./system/FreezeTransaction.js";export{default as Hbar}from"./Hbar.js";export{default as HbarAllowance}from"./account/HbarAllowance.js";export{default as HbarUnit}from"./HbarUnit.js";export{default as LiveHash}from"./account/LiveHash.js";export{default as LiveHashAddTransaction}from"./account/LiveHashAddTransaction.js";export{default as LiveHashDeleteTransaction}from"./account/LiveHashDeleteTransaction.js";export{default as LiveHashQuery}from"./account/LiveHashQuery.js";export{default as MaxQueryPaymentExceeded}from"./MaxQueryPaymentExceeded.js";export{default as MirrorNodeContractCallQuery}from"./query/MirrorNodeContractCallQuery.js";export{default as MirrorNodeContractEstimateQuery}from"./query/MirrorNodeContractEstimateQuery.js";export{default as NodeAddressBook}from"./address_book/NodeAddressBook.js";export{default as NetworkVersionInfo}from"./network/NetworkVersionInfo.js";export{default as NetworkVersionInfoQuery}from"./network/NetworkVersionInfoQuery.js";export{default as NftId}from"./token/NftId.js";export{default as PendingAirdropId}from"./token/PendingAirdropId.js";export{default as PrngTransaction}from"./PrngTransaction.js";export{default as ProxyStaker}from"./account/ProxyStaker.js";export{default as Query}from"./query/Query.js";export{default as RequestType}from"./RequestType.js";export{default as ScheduleCreateTransaction}from"./schedule/ScheduleCreateTransaction.js";export{default as ScheduleDeleteTransaction}from"./schedule/ScheduleDeleteTransaction.js";export{default as ScheduleId}from"./schedule/ScheduleId.js";export{default as ScheduleInfo}from"./schedule/ScheduleInfo.js";export{default as ScheduleInfoQuery}from"./schedule/ScheduleInfoQuery.js";export{default as ScheduleSignTransaction}from"./schedule/ScheduleSignTransaction.js";export{default as SemanticVersion}from"./network/SemanticVersion.js";export{default as SignatureMap}from"./transaction/SignatureMap.js";export{default as SignerSignature}from"./SignerSignature.js";export{default as Status}from"./Status.js";export{default as SubscriptionHandle}from"./topic/SubscriptionHandle.js";export{default as SystemDeleteTransaction}from"./system/SystemDeleteTransaction.js";export{default as SystemUndeleteTransaction}from"./system/SystemUndeleteTransaction.js";export{default as Timestamp}from"./Timestamp.js";export{default as TokenAllowance}from"./account/TokenAllowance.js";export{default as TokenAssociateTransaction}from"./token/TokenAssociateTransaction.js";export{default as TokenBurnTransaction}from"./token/TokenBurnTransaction.js";export{default as TokenRejectTransaction}from"./token/TokenRejectTransaction.js";export{default as TokenRejectFlow}from"./token/TokenRejectFlow.js";export{default as TokenCreateTransaction}from"./token/TokenCreateTransaction.js";export{default as TokenDeleteTransaction}from"./token/TokenDeleteTransaction.js";export{default as TokenDissociateTransaction}from"./token/TokenDissociateTransaction.js";export{default as TokenFeeScheduleUpdateTransaction}from"./token/TokenFeeScheduleUpdateTransaction.js";export{default as TokenFreezeTransaction}from"./token/TokenFreezeTransaction.js";export{default as TokenGrantKycTransaction}from"./token/TokenGrantKycTransaction.js";export{default as TokenId}from"./token/TokenId.js";export{default as TokenInfo}from"./token/TokenInfo.js";export{default as TokenInfoQuery}from"./token/TokenInfoQuery.js";export{default as TokenMintTransaction}from"./token/TokenMintTransaction.js";export{default as TokenNftAllowance}from"./account/TokenNftAllowance.js";export{default as TokenNftInfo}from"./token/TokenNftInfo.js";export{default as TokenNftInfoQuery}from"./token/TokenNftInfoQuery.js";export{default as TokenPauseTransaction}from"./token/TokenPauseTransaction.js";export{default as TokenRevokeKycTransaction}from"./token/TokenRevokeKycTransaction.js";export{default as TokenSupplyType}from"./token/TokenSupplyType.js";export{default as TokenType}from"./token/TokenType.js";export{default as TokenUnfreezeTransaction}from"./token/TokenUnfreezeTransaction.js";export{default as TokenUnpauseTransaction}from"./token/TokenUnpauseTransaction.js";export{default as TokenUpdateTransaction}from"./token/TokenUpdateTransaction.js";export{default as TokenWipeTransaction}from"./token/TokenWipeTransaction.js";export{default as TopicCreateTransaction}from"./topic/TopicCreateTransaction.js";export{default as TopicDeleteTransaction}from"./topic/TopicDeleteTransaction.js";export{default as TopicId}from"./topic/TopicId.js";export{default as TopicInfo}from"./topic/TopicInfo.js";export{default as TopicInfoQuery}from"./topic/TopicInfoQuery.js";export{default as TopicMessage}from"./topic/TopicMessage.js";export{default as TopicMessageChunk}from"./topic/TopicMessageChunk.js";export{default as TopicMessageQuery}from"./topic/TopicMessageQuery.js";export{default as TopicMessageSubmitTransaction}from"./topic/TopicMessageSubmitTransaction.js";export{default as TopicUpdateTransaction}from"./topic/TopicUpdateTransaction.js";export{default as CustomFeeLimit}from"./transaction/CustomFeeLimit.js";export{default as Transaction}from"./transaction/Transaction.js";export{default as TransactionFeeSchedule}from"./TransactionFeeSchedule.js";export{default as TransactionId}from"./transaction/TransactionId.js";export{default as TransactionReceipt}from"./transaction/TransactionReceipt.js";export{default as TransactionReceiptQuery}from"./transaction/TransactionReceiptQuery.js";export{default as TransactionRecord}from"./transaction/TransactionRecord.js";export{default as TransactionRecordQuery}from"./transaction/TransactionRecordQuery.js";export{default as TransactionResponse}from"./transaction/TransactionResponse.js";export{default as Transfer}from"./Transfer.js";export{default as TransferTransaction}from"./account/TransferTransaction.js";export{default as Wallet}from"./Wallet.js";export{default as Logger}from"./logger/Logger.js";export{default as LogLevel}from"./logger/LogLevel.js";export{default as FreezeType}from"./FreezeType.js";export{default as TokenKeyValidation}from"./token/TokenKeyValidation.js";export{default as StatusError}from"./StatusError.js";export{default as MaxAttemptsOrTimeoutError}from"./MaxAttemptsOrTimeoutError.js";export{default as PrecheckStatusError}from"./PrecheckStatusError.js";export{default as ReceiptStatusError}from"./ReceiptStatusError.js";export{default as LedgerId}from"./LedgerId.js";export{default as TokenUpdateNftsTransaction}from"./token/TokenUpdateNftsTransaction.js";export{default as NodeCreateTransaction}from"./node/NodeCreateTransaction.js";export{default as ServiceEndpoint}from"./node/ServiceEndpoint.js";export{default as NodeDeleteTransaction}from"./node/NodeDeleteTransaction.js";export{default as NodeUpdateTransaction}from"./node/NodeUpdateTransaction.js";export{default as WebClient}from"./client/WebClient.js";export{BadKeyError,BadMnemonicError,BadMnemonicReason,HEDERA_PATH,SLIP44_ECDSA_ETH_PATH,SLIP44_ECDSA_HEDERA_PATH}from"@hashgraph/cryptography";export{default as Provider}from"./Provider.js";export{default as Signer}from"./Signer.js";export{default as Long}from"long";import*as e from"./EntityIdHelper.js";export{e as EntityIdHelper};
|
|
2
2
|
//# sourceMappingURL=native.js.map
|
package/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const
|
|
1
|
+
const o="hiero-sdk-js",s="2.71.1";export{o as SDK_NAME,s as SDK_VERSION};
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hiero-ledger/sdk",
|
|
3
|
-
"version": "2.71.
|
|
3
|
+
"version": "2.71.1",
|
|
4
4
|
"description": "Hiero SDK",
|
|
5
5
|
"types": "./lib/index.d.ts",
|
|
6
6
|
"main": "./lib/index.cjs",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"@ethersproject/rlp": "^5.8.0",
|
|
63
63
|
"@grpc/grpc-js": "^1.12.6",
|
|
64
64
|
"@hashgraph/cryptography": "1.9.0",
|
|
65
|
-
"@hashgraph/proto": "2.
|
|
65
|
+
"@hashgraph/proto": "2.22.0",
|
|
66
66
|
"bignumber.js": "^9.1.1",
|
|
67
67
|
"bn.js": "^5.1.1",
|
|
68
68
|
"crypto-js": "^4.2.0",
|
package/src/LedgerId.js
CHANGED
|
@@ -40,11 +40,11 @@ export default class LedgerId {
|
|
|
40
40
|
case "3":
|
|
41
41
|
return LedgerId.LOCAL_NODE;
|
|
42
42
|
default: {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
throw new Error("Default reached for fromString");
|
|
46
|
-
} else {
|
|
43
|
+
try {
|
|
44
|
+
let ledgerIdDecoded = hex.decode(ledgerId);
|
|
47
45
|
return new LedgerId(ledgerIdDecoded);
|
|
46
|
+
} catch (error) {
|
|
47
|
+
throw new Error("Default reached for fromString");
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -41,11 +41,19 @@ export default class NativeChannel extends Channel {
|
|
|
41
41
|
new Uint8Array(encodeRequest(requestData)),
|
|
42
42
|
);
|
|
43
43
|
|
|
44
|
+
const shouldUseHttps = !(
|
|
45
|
+
this._address.includes("localhost") ||
|
|
46
|
+
this._address.includes("127.0.0.1")
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
const address = shouldUseHttps
|
|
50
|
+
? `https://${this._address}`
|
|
51
|
+
: `http://${this._address}`;
|
|
44
52
|
// this will be executed in react native environment sho
|
|
45
53
|
// fetch should be available
|
|
46
54
|
//eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
47
55
|
const response = await fetch(
|
|
48
|
-
`${
|
|
56
|
+
`${address}/proto.${serviceName}/${method.name}`,
|
|
49
57
|
{
|
|
50
58
|
method: "POST",
|
|
51
59
|
headers: {
|
|
@@ -75,8 +75,6 @@ export default class NodeMirrorChannel extends MirrorChannel {
|
|
|
75
75
|
.on("status", (/** @type {grpc.StatusObject} */ status) => {
|
|
76
76
|
if (status.code == 0) {
|
|
77
77
|
end();
|
|
78
|
-
} else {
|
|
79
|
-
error(status);
|
|
80
78
|
}
|
|
81
79
|
})
|
|
82
80
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
package/src/client/Client.js
CHANGED
|
@@ -731,11 +731,11 @@ export default class Client {
|
|
|
731
731
|
|
|
732
732
|
/**
|
|
733
733
|
* Update the network address book.
|
|
734
|
-
* @returns {Promise<
|
|
734
|
+
* @returns {Promise<this>}
|
|
735
735
|
*/
|
|
736
736
|
async updateNetwork() {
|
|
737
737
|
if (this._isUpdatingNetwork) {
|
|
738
|
-
return;
|
|
738
|
+
return this;
|
|
739
739
|
}
|
|
740
740
|
|
|
741
741
|
this._isUpdatingNetwork = true;
|
|
@@ -758,6 +758,8 @@ export default class Client {
|
|
|
758
758
|
} finally {
|
|
759
759
|
this._isUpdatingNetwork = false;
|
|
760
760
|
}
|
|
761
|
+
|
|
762
|
+
return this;
|
|
761
763
|
}
|
|
762
764
|
|
|
763
765
|
/**
|
|
@@ -5,40 +5,13 @@ import NativeChannel from "../channel/NativeChannel.js";
|
|
|
5
5
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
6
6
|
import AccountId from "../account/AccountId.js";
|
|
7
7
|
import LedgerId from "../LedgerId.js";
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
NATIVE_PREVIEWNET,
|
|
12
|
-
} from "../constants/ClientConstants.js";
|
|
8
|
+
import { MirrorNetwork, WebNetwork } from "../constants/ClientConstants.js";
|
|
9
|
+
import AddressBookQuery from "../network/AddressBookQueryWeb.js";
|
|
10
|
+
import FileId from "../file/FileId.js";
|
|
13
11
|
|
|
14
12
|
/**
|
|
15
13
|
* @typedef {import("./Client.js").ClientConfiguration} ClientConfiguration
|
|
16
14
|
*/
|
|
17
|
-
export const Network = {
|
|
18
|
-
/**
|
|
19
|
-
* @param {string} name
|
|
20
|
-
* @returns {{[key: string]: (string | AccountId)}}
|
|
21
|
-
*/
|
|
22
|
-
fromName(name) {
|
|
23
|
-
switch (name) {
|
|
24
|
-
case "mainnet":
|
|
25
|
-
return Network.MAINNET;
|
|
26
|
-
|
|
27
|
-
case "testnet":
|
|
28
|
-
return Network.TESTNET;
|
|
29
|
-
|
|
30
|
-
case "previewnet":
|
|
31
|
-
return Network.PREVIEWNET;
|
|
32
|
-
|
|
33
|
-
default:
|
|
34
|
-
throw new Error(`unknown network name: ${name}`);
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
MAINNET: MAINNET,
|
|
39
|
-
TESTNET: NATIVE_TESTNET,
|
|
40
|
-
PREVIEWNET: NATIVE_PREVIEWNET,
|
|
41
|
-
};
|
|
42
15
|
|
|
43
16
|
/**
|
|
44
17
|
* @augments {Client<NativeChannel, *>}
|
|
@@ -54,18 +27,21 @@ export default class NativeClient extends Client {
|
|
|
54
27
|
if (typeof props.network === "string") {
|
|
55
28
|
switch (props.network) {
|
|
56
29
|
case "mainnet":
|
|
57
|
-
this.setNetwork(
|
|
30
|
+
this.setNetwork(WebNetwork.MAINNET);
|
|
58
31
|
this.setLedgerId(LedgerId.MAINNET);
|
|
32
|
+
this.setMirrorNetwork(MirrorNetwork.MAINNET);
|
|
59
33
|
break;
|
|
60
34
|
|
|
61
35
|
case "testnet":
|
|
62
|
-
this.setNetwork(
|
|
36
|
+
this.setNetwork(WebNetwork.TESTNET);
|
|
63
37
|
this.setLedgerId(LedgerId.TESTNET);
|
|
38
|
+
this.setMirrorNetwork(MirrorNetwork.TESTNET);
|
|
64
39
|
break;
|
|
65
40
|
|
|
66
41
|
case "previewnet":
|
|
67
|
-
this.setNetwork(
|
|
42
|
+
this.setNetwork(WebNetwork.PREVIEWNET);
|
|
68
43
|
this.setLedgerId(LedgerId.PREVIEWNET);
|
|
44
|
+
this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);
|
|
69
45
|
break;
|
|
70
46
|
|
|
71
47
|
default:
|
|
@@ -121,7 +97,6 @@ export default class NativeClient extends Client {
|
|
|
121
97
|
static forNetwork(network) {
|
|
122
98
|
return new NativeClient({
|
|
123
99
|
network,
|
|
124
|
-
scheduleNetworkUpdate: false,
|
|
125
100
|
});
|
|
126
101
|
}
|
|
127
102
|
|
|
@@ -130,7 +105,7 @@ export default class NativeClient extends Client {
|
|
|
130
105
|
* @returns {NativeClient}
|
|
131
106
|
*/
|
|
132
107
|
static forName(network) {
|
|
133
|
-
return new NativeClient({ network
|
|
108
|
+
return new NativeClient({ network });
|
|
134
109
|
}
|
|
135
110
|
|
|
136
111
|
/**
|
|
@@ -141,7 +116,6 @@ export default class NativeClient extends Client {
|
|
|
141
116
|
static forMainnet() {
|
|
142
117
|
return new NativeClient({
|
|
143
118
|
network: "mainnet",
|
|
144
|
-
scheduleNetworkUpdate: false,
|
|
145
119
|
});
|
|
146
120
|
}
|
|
147
121
|
|
|
@@ -153,7 +127,6 @@ export default class NativeClient extends Client {
|
|
|
153
127
|
static forTestnet() {
|
|
154
128
|
return new NativeClient({
|
|
155
129
|
network: "testnet",
|
|
156
|
-
scheduleNetworkUpdate: false,
|
|
157
130
|
});
|
|
158
131
|
}
|
|
159
132
|
|
|
@@ -165,10 +138,76 @@ export default class NativeClient extends Client {
|
|
|
165
138
|
static forPreviewnet() {
|
|
166
139
|
return new NativeClient({
|
|
167
140
|
network: "previewnet",
|
|
168
|
-
scheduleNetworkUpdate: false,
|
|
169
141
|
});
|
|
170
142
|
}
|
|
171
143
|
|
|
144
|
+
/**
|
|
145
|
+
* Construct a Hedera client pre-configured for Mainnet access with network update.
|
|
146
|
+
*
|
|
147
|
+
* @returns {Promise<NativeClient>}
|
|
148
|
+
*/
|
|
149
|
+
static async forMainnetAsync() {
|
|
150
|
+
return new NativeClient({
|
|
151
|
+
network: "mainnet",
|
|
152
|
+
}).updateNetwork();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Construct a Hedera client pre-configured for Testnet access with network update.
|
|
157
|
+
*
|
|
158
|
+
* @returns {Promise<NativeClient>}
|
|
159
|
+
*/
|
|
160
|
+
static async forTestnetAsync() {
|
|
161
|
+
return new NativeClient({
|
|
162
|
+
network: "testnet",
|
|
163
|
+
}).updateNetwork();
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Construct a Hedera client pre-configured for Previewnet access with network update.
|
|
168
|
+
*
|
|
169
|
+
* @returns {Promise<NativeClient>}
|
|
170
|
+
*/
|
|
171
|
+
static async forPreviewnetAsync() {
|
|
172
|
+
return new NativeClient({
|
|
173
|
+
network: "previewnet",
|
|
174
|
+
}).updateNetwork();
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Construct a client for a specific network with optional network update.
|
|
179
|
+
* Updates network only if the network is not "local-node".
|
|
180
|
+
*
|
|
181
|
+
* @param {string} network
|
|
182
|
+
* @returns {Promise<NativeClient>}
|
|
183
|
+
*/
|
|
184
|
+
static async forNameAsync(network) {
|
|
185
|
+
const client = new NativeClient({ network });
|
|
186
|
+
|
|
187
|
+
if (network !== "local-node") {
|
|
188
|
+
await client.updateNetwork();
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return client;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Construct a client configured to use mirror nodes.
|
|
196
|
+
* This will query the address book to get the network nodes.
|
|
197
|
+
*
|
|
198
|
+
* @param {string[] | string} mirrorNetwork
|
|
199
|
+
* @returns {Promise<NativeClient>}
|
|
200
|
+
*/
|
|
201
|
+
static async forMirrorNetwork(mirrorNetwork) {
|
|
202
|
+
const client = new NativeClient({
|
|
203
|
+
mirrorNetwork,
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
await client.updateNetwork();
|
|
207
|
+
|
|
208
|
+
return client;
|
|
209
|
+
}
|
|
210
|
+
|
|
172
211
|
/**
|
|
173
212
|
* @param {{[key: string]: (string | AccountId)} | string} network
|
|
174
213
|
* @returns {void}
|
|
@@ -177,13 +216,13 @@ export default class NativeClient extends Client {
|
|
|
177
216
|
if (typeof network === "string") {
|
|
178
217
|
switch (network) {
|
|
179
218
|
case "previewnet":
|
|
180
|
-
this._network.setNetwork(
|
|
219
|
+
this._network.setNetwork(WebNetwork.PREVIEWNET);
|
|
181
220
|
break;
|
|
182
221
|
case "testnet":
|
|
183
|
-
this._network.setNetwork(
|
|
222
|
+
this._network.setNetwork(WebNetwork.TESTNET);
|
|
184
223
|
break;
|
|
185
224
|
case "mainnet":
|
|
186
|
-
this._network.setNetwork(
|
|
225
|
+
this._network.setNetwork(WebNetwork.MAINNET);
|
|
187
226
|
}
|
|
188
227
|
} else {
|
|
189
228
|
this._network.setNetwork(network);
|
|
@@ -192,11 +231,75 @@ export default class NativeClient extends Client {
|
|
|
192
231
|
|
|
193
232
|
/**
|
|
194
233
|
* @param {string[] | string} mirrorNetwork
|
|
195
|
-
* @returns {
|
|
234
|
+
* @returns {this}
|
|
196
235
|
*/
|
|
197
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
198
236
|
setMirrorNetwork(mirrorNetwork) {
|
|
199
|
-
|
|
237
|
+
if (typeof mirrorNetwork === "string") {
|
|
238
|
+
switch (mirrorNetwork) {
|
|
239
|
+
case "local-node":
|
|
240
|
+
this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);
|
|
241
|
+
break;
|
|
242
|
+
case "previewnet":
|
|
243
|
+
this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);
|
|
244
|
+
break;
|
|
245
|
+
case "testnet":
|
|
246
|
+
this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);
|
|
247
|
+
break;
|
|
248
|
+
case "mainnet":
|
|
249
|
+
this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);
|
|
250
|
+
break;
|
|
251
|
+
default:
|
|
252
|
+
this._mirrorNetwork.setNetwork([mirrorNetwork]);
|
|
253
|
+
}
|
|
254
|
+
} else {
|
|
255
|
+
this._mirrorNetwork.setNetwork(mirrorNetwork);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
return this;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* @override
|
|
263
|
+
* @returns {Promise<this>}
|
|
264
|
+
*/
|
|
265
|
+
async updateNetwork() {
|
|
266
|
+
if (this._isUpdatingNetwork) {
|
|
267
|
+
return this;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
this._isUpdatingNetwork = true;
|
|
271
|
+
|
|
272
|
+
try {
|
|
273
|
+
const addressBook = await new AddressBookQuery()
|
|
274
|
+
.setFileId(
|
|
275
|
+
FileId.getAddressBookFileIdFor(this.shard, this.realm),
|
|
276
|
+
)
|
|
277
|
+
.execute(this);
|
|
278
|
+
|
|
279
|
+
/** @type {Record<string, AccountId>} */
|
|
280
|
+
const network = {};
|
|
281
|
+
for (const nodeAddress of addressBook.nodeAddresses) {
|
|
282
|
+
for (const endpoint of nodeAddress.addresses) {
|
|
283
|
+
if (nodeAddress.accountId != null) {
|
|
284
|
+
network[endpoint.toString()] = nodeAddress.accountId;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
this.setNetwork(network);
|
|
290
|
+
} catch (/** @type {unknown} */ error) {
|
|
291
|
+
if (this._logger) {
|
|
292
|
+
const errorMessage =
|
|
293
|
+
error instanceof Error ? error.message : String(error);
|
|
294
|
+
this._logger.trace(
|
|
295
|
+
`failed to update client address book: ${errorMessage}`,
|
|
296
|
+
);
|
|
297
|
+
}
|
|
298
|
+
} finally {
|
|
299
|
+
this._isUpdatingNetwork = false;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
return this;
|
|
200
303
|
}
|
|
201
304
|
|
|
202
305
|
/**
|
|
@@ -208,11 +311,12 @@ export default class NativeClient extends Client {
|
|
|
208
311
|
}
|
|
209
312
|
|
|
210
313
|
/**
|
|
211
|
-
* @
|
|
314
|
+
* @override
|
|
212
315
|
* @returns {(address: string) => *}
|
|
213
316
|
*/
|
|
214
317
|
_createMirrorNetworkChannel() {
|
|
215
|
-
|
|
216
|
-
|
|
318
|
+
return () => {
|
|
319
|
+
throw new Error("mirror support is not supported in native");
|
|
320
|
+
};
|
|
217
321
|
}
|
|
218
322
|
}
|
package/src/client/NodeClient.js
CHANGED
|
@@ -165,13 +165,11 @@ export default class NodeClient extends Client {
|
|
|
165
165
|
* @returns {Promise<NodeClient>}
|
|
166
166
|
*/
|
|
167
167
|
static async forMirrorNetwork(mirrorNetwork, shard, realm) {
|
|
168
|
-
const INITIAL_UPDATE_PERIOD = 10_000;
|
|
169
|
-
|
|
170
168
|
const client = new NodeClient({
|
|
171
169
|
mirrorNetwork,
|
|
172
170
|
shard,
|
|
173
171
|
realm,
|
|
174
|
-
})
|
|
172
|
+
});
|
|
175
173
|
|
|
176
174
|
await client.updateNetwork();
|
|
177
175
|
|
|
@@ -203,6 +201,61 @@ export default class NodeClient extends Client {
|
|
|
203
201
|
});
|
|
204
202
|
}
|
|
205
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Construct a Hedera client pre-configured for Mainnet access with network update.
|
|
206
|
+
*
|
|
207
|
+
* @param {object} [props]
|
|
208
|
+
* @param {boolean} [props.scheduleNetworkUpdate]
|
|
209
|
+
* @returns {Promise<NodeClient>}
|
|
210
|
+
*/
|
|
211
|
+
static async forMainnetAsync(props = {}) {
|
|
212
|
+
return new NodeClient({ network: "mainnet", ...props }).updateNetwork();
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Construct a Hedera client pre-configured for Testnet access with network update.
|
|
217
|
+
*
|
|
218
|
+
* @param {object} [props]
|
|
219
|
+
* @param {boolean} [props.scheduleNetworkUpdate]
|
|
220
|
+
* @returns {Promise<NodeClient>}
|
|
221
|
+
*/
|
|
222
|
+
static async forTestnetAsync(props = {}) {
|
|
223
|
+
return new NodeClient({ network: "testnet", ...props }).updateNetwork();
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Construct a Hedera client pre-configured for Previewnet access with network update.
|
|
228
|
+
*
|
|
229
|
+
* @param {object} [props]
|
|
230
|
+
* @param {boolean} [props.scheduleNetworkUpdate]
|
|
231
|
+
* @returns {Promise<NodeClient>}
|
|
232
|
+
*/
|
|
233
|
+
static async forPreviewnetAsync(props = {}) {
|
|
234
|
+
return new NodeClient({
|
|
235
|
+
network: "previewnet",
|
|
236
|
+
...props,
|
|
237
|
+
}).updateNetwork();
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Construct a client for a specific network with optional network update.
|
|
242
|
+
* Updates network only if the network is not "local-node".
|
|
243
|
+
*
|
|
244
|
+
* @param {string} network
|
|
245
|
+
* @param {object} [props]
|
|
246
|
+
* @param {boolean} [props.scheduleNetworkUpdate]
|
|
247
|
+
* @returns {Promise<NodeClient>}
|
|
248
|
+
*/
|
|
249
|
+
static async forNameAsync(network, props = {}) {
|
|
250
|
+
const client = new NodeClient({ network, ...props });
|
|
251
|
+
|
|
252
|
+
if (network !== "local-node") {
|
|
253
|
+
await client.updateNetwork();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
return client;
|
|
257
|
+
}
|
|
258
|
+
|
|
206
259
|
/**
|
|
207
260
|
* @param {{[key: string]: (string | AccountId)} | string} network
|
|
208
261
|
* @returns {void}
|