@hiero-ledger/sdk 2.73.1 → 2.74.0
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 +279 -96
- package/dist/umd.min.js +3 -3
- package/lib/MirrorNode.cjs +46 -0
- package/lib/MirrorNode.d.ts +16 -0
- package/lib/MirrorNode.js +1 -1
- package/lib/MirrorNode.js.map +1 -1
- package/lib/account/AccountAllowanceApproveTransaction.cjs +11 -5
- package/lib/account/AccountAllowanceApproveTransaction.d.ts +4 -5
- package/lib/account/AccountAllowanceApproveTransaction.js +1 -1
- package/lib/account/AccountAllowanceApproveTransaction.js.map +1 -1
- package/lib/account/AccountId.cjs +4 -4
- package/lib/account/AccountId.js +1 -1
- package/lib/account/AccountId.js.map +1 -1
- package/lib/account/TokenAllowance.cjs +4 -2
- package/lib/account/TokenAllowance.d.ts +4 -2
- package/lib/account/TokenAllowance.js +1 -1
- package/lib/account/TokenAllowance.js.map +1 -1
- package/lib/account/TokenTransferMap.cjs +7 -2
- package/lib/account/TokenTransferMap.d.ts +6 -2
- package/lib/account/TokenTransferMap.js +1 -1
- package/lib/account/TokenTransferMap.js.map +1 -1
- package/lib/client/Client.cjs +20 -3
- package/lib/client/Client.d.ts +17 -3
- package/lib/client/Client.js +1 -1
- package/lib/client/Client.js.map +1 -1
- package/lib/client/MirrorNetwork.cjs +16 -0
- package/lib/client/MirrorNetwork.d.ts +7 -0
- package/lib/client/MirrorNetwork.js +1 -1
- package/lib/client/MirrorNetwork.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 +4 -1
- package/lib/constants/ClientConstants.d.ts +2 -0
- package/lib/constants/ClientConstants.js +1 -1
- package/lib/constants/ClientConstants.js.map +1 -1
- package/lib/contract/ContractId.cjs +2 -5
- package/lib/contract/ContractId.js +1 -1
- package/lib/contract/ContractId.js.map +1 -1
- package/lib/query/MirrorNodeContractQuery.cjs +16 -9
- package/lib/query/MirrorNodeContractQuery.js +1 -1
- package/lib/query/MirrorNodeContractQuery.js.map +1 -1
- package/lib/token/AbstractTokenTransferTransaction.cjs +12 -8
- package/lib/token/AbstractTokenTransferTransaction.d.ts +14 -11
- package/lib/token/AbstractTokenTransferTransaction.js +1 -1
- package/lib/token/AbstractTokenTransferTransaction.js.map +1 -1
- package/lib/token/AssessedCustomFee.cjs +8 -4
- package/lib/token/AssessedCustomFee.d.ts +8 -5
- package/lib/token/AssessedCustomFee.js +1 -1
- package/lib/token/AssessedCustomFee.js.map +1 -1
- package/lib/token/CustomFixedFee.cjs +8 -4
- package/lib/token/CustomFixedFee.d.ts +8 -5
- package/lib/token/CustomFixedFee.js +1 -1
- package/lib/token/CustomFixedFee.js.map +1 -1
- package/lib/token/PendingAirdropRecord.cjs +7 -2
- package/lib/token/PendingAirdropRecord.d.ts +6 -2
- package/lib/token/PendingAirdropRecord.js +1 -1
- package/lib/token/PendingAirdropRecord.js.map +1 -1
- package/lib/token/TokenAirdropTransaction.cjs +2 -1
- package/lib/token/TokenAirdropTransaction.d.ts +4 -2
- package/lib/token/TokenAirdropTransaction.js.map +1 -1
- package/lib/token/TokenBurnTransaction.cjs +5 -3
- package/lib/token/TokenBurnTransaction.d.ts +6 -4
- package/lib/token/TokenBurnTransaction.js +1 -1
- package/lib/token/TokenBurnTransaction.js.map +1 -1
- package/lib/token/TokenCreateTransaction.cjs +7 -6
- package/lib/token/TokenCreateTransaction.d.ts +8 -8
- package/lib/token/TokenCreateTransaction.js +1 -1
- package/lib/token/TokenCreateTransaction.js.map +1 -1
- package/lib/token/TokenMintTransaction.cjs +5 -4
- package/lib/token/TokenMintTransaction.d.ts +6 -5
- package/lib/token/TokenMintTransaction.js +1 -1
- package/lib/token/TokenMintTransaction.js.map +1 -1
- package/lib/token/TokenTransfer.cjs +3 -2
- package/lib/token/TokenTransfer.d.ts +2 -2
- package/lib/token/TokenTransfer.js +1 -1
- package/lib/token/TokenTransfer.js.map +1 -1
- package/lib/token/TokenWipeTransaction.cjs +5 -3
- package/lib/token/TokenWipeTransaction.d.ts +6 -4
- package/lib/token/TokenWipeTransaction.js +1 -1
- package/lib/token/TokenWipeTransaction.js.map +1 -1
- package/lib/transaction/Transaction.cjs +54 -0
- package/lib/transaction/Transaction.d.ts +10 -0
- package/lib/transaction/Transaction.js +1 -1
- package/lib/transaction/Transaction.js.map +1 -1
- package/lib/util.cjs +25 -0
- package/lib/util.d.ts +8 -0
- package/lib/util.js +1 -1
- package/lib/util.js.map +1 -1
- package/lib/version.js +1 -1
- package/package.json +12 -8
- package/src/MirrorNode.js +49 -0
- package/src/account/AccountAllowanceApproveTransaction.js +11 -11
- package/src/account/AccountId.js +6 -10
- package/src/account/TokenAllowance.js +5 -2
- package/src/account/TokenTransferMap.js +7 -2
- package/src/client/Client.js +20 -3
- package/src/client/MirrorNetwork.js +18 -0
- 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 +3 -0
- package/src/contract/ContractId.js +2 -10
- package/src/query/MirrorNodeContractQuery.js +17 -19
- package/src/token/AbstractTokenTransferTransaction.js +12 -8
- package/src/token/AssessedCustomFee.js +8 -5
- package/src/token/CustomFixedFee.js +8 -5
- package/src/token/PendingAirdropRecord.js +7 -2
- package/src/token/TokenAirdropTransaction.js +2 -1
- package/src/token/TokenBurnTransaction.js +5 -3
- package/src/token/TokenCreateTransaction.js +7 -9
- package/src/token/TokenMintTransaction.js +5 -4
- package/src/token/TokenTransfer.js +3 -2
- package/src/token/TokenWipeTransaction.js +5 -3
- package/src/transaction/Transaction.js +63 -0
- package/src/util.js +26 -0
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sources":["../src/util.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport BigNumber from \"bignumber.js\";\nimport Long from \"long\";\n\n/**\n * @typedef {import(\"./Hbar.js\").default} Hbar\n */\n\n/**\n * Utility Error Messages\n */\nexport const REQUIRE_NON_NULL_ERROR = \"This value cannot be null | undefined.\";\nexport const REQUIRE_STRING_ERROR = \"This value must be a string.\";\nexport const REQUIRE_UINT8ARRAY_ERROR = \"This value must be a Uint8Array.\";\nexport const REQUIRE_STRING_OR_UINT8ARRAY_ERROR =\n \"This value must be a string or Uint8Array.\";\nexport const REQUIRE_NUMBER_ERROR = \"This value must be a Number.\";\nexport const REQUIRE_BIGNUMBER_ERROR = \"This value must be a BigNumber.\";\nexport const REQUIRE_ARRAY_ERROR = \"The provided variable must be an Array.\";\nexport const REQUIRE_LONG_ERROR = \"This value must be a Long.\";\n\nexport const REQUIRE_TYPE_ERROR =\n \"The provided variables are not matching types.\";\n\nexport const FUNCTION_CONVERT_TO_BIGNUMBER_ERROR =\n \"This value must be a String, Number, or BigNumber to be converted.\";\nexport const FUNCTION_CONVERT_TO_NUMBER_ERROR =\n \"This value must be a String, Number, or BigNumber to be converted.\";\nexport const FUNCTION_CONVERT_TO_NUMBER_PARSE_ERROR =\n \"Unable to parse given variable. Returns NaN.\";\n\n//Soft Checks\n\n/**\n * Takes any param and returns false if null or undefined.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isNonNull(variable) {\n return variable != null;\n}\n\n/**\n * Takes any param and returns true if param variable and type are the same.\n *\n * @param {any | null | undefined} variable\n * @param {any | null | undefined} type\n * @returns {boolean}\n */\nexport function isType(variable, type) {\n return typeof variable == typeof type;\n}\n\n/**\n * Takes any param and returns true if param is not null and of type Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isUint8Array(variable) {\n return isNonNull(variable) && variable instanceof Uint8Array;\n}\n\n/**\n * Takes any param and returns true if param is not null and of type Number.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isNumber(variable) {\n return (\n isNonNull(variable) &&\n (typeof variable == \"number\" || variable instanceof Number)\n );\n}\n\n/**\n * Takes any param and returns true if param is not null and of type BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isBigNumber(variable) {\n return isNonNull(variable) && variable instanceof BigNumber;\n}\n\n/**\n * Takes any param and returns true if param is not null and of type BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isLong(variable) {\n return isNonNull(variable) && variable instanceof Long;\n}\n\n/**\n * Takes any param and returns true if param is not null and of type string.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isString(variable) {\n return isNonNull(variable) && typeof variable == \"string\";\n}\n\n/**\n * Takes any param and returns true if param is not null and type string or Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isStringOrUint8Array(variable) {\n return (\n isNonNull(variable) && (isString(variable) || isUint8Array(variable))\n );\n}\n\n/**\n * Takes an address as `Uint8Array` and returns whether or not this is a long-zero address\n *\n * @param {Uint8Array} address\n * @returns {boolean}\n */\nexport function isLongZeroAddress(address) {\n for (let i = 0; i < 12; i++) {\n if (address[i] != 0) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Takes any param and returns false if null or undefined.\n *\n * @template {Long | Hbar} T\n * @param {T} variable\n * @returns {T}\n */\nexport function requireNotNegative(variable) {\n if (variable.isNegative()) {\n throw new Error(\"negative value not allowed\");\n }\n\n return variable;\n}\n\n/**\n * Takes any param and throws custom error if null or undefined.\n *\n * @param {any} variable\n * @returns {object}\n */\nexport function requireNonNull(variable) {\n if (!isNonNull(variable)) {\n throw new Error(REQUIRE_NON_NULL_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return variable;\n }\n}\n\n/**\n * Takes any param and throws custom error if params are not same type.\n *\n * @param {any | null | undefined} variable\n * @param {any | null | undefined} type\n * @returns {object}\n */\nexport function requireType(variable, type) {\n if (!isType(variable, type)) {\n throw new Error(REQUIRE_TYPE_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return variable;\n }\n}\n\n/**\n * Takes any param and throws custom error if non BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {BigNumber}\n */\nexport function requireBigNumber(variable) {\n if (!isBigNumber(requireNonNull(variable))) {\n throw new Error(REQUIRE_BIGNUMBER_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {BigNumber} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if non BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {Long}\n */\nexport function requireLong(variable) {\n if (!isLong(requireNonNull(variable))) {\n throw new Error(REQUIRE_LONG_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {Long} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if non string.\n *\n * @param {any | null | undefined} variable\n * @returns {string}\n */\nexport function requireString(variable) {\n if (!isString(requireNonNull(variable))) {\n throw new Error(REQUIRE_STRING_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {string} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if non Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {Uint8Array}\n */\nexport function requireUint8Array(variable) {\n if (!isUint8Array(requireNonNull(variable))) {\n throw new Error(REQUIRE_UINT8ARRAY_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {Uint8Array} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if non Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {number}\n */\nexport function requireNumber(variable) {\n if (!isNumber(requireNonNull(variable))) {\n throw new Error(REQUIRE_NUMBER_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {number} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if null or undefined and not a string or Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {string | Uint8Array}\n */\nexport function requireStringOrUint8Array(variable) {\n if (isStringOrUint8Array(requireNonNull(variable))) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {string | Uint8Array} */ (variable);\n } else {\n throw new Error(REQUIRE_STRING_OR_UINT8ARRAY_ERROR);\n }\n}\n\n//Conversions\n\n/**\n * Converts number or string to BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {BigNumber}\n */\nexport function convertToBigNumber(variable) {\n requireNonNull(variable);\n if (\n isBigNumber(variable) ||\n isString(variable) ||\n isNumber(variable) ||\n isLong(variable)\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new BigNumber(variable);\n }\n throw new Error(FUNCTION_CONVERT_TO_BIGNUMBER_ERROR);\n}\n\n/**\n * Converts Array of Numbers or Strings to Array of BigNumbers.\n *\n * @param {any | null | undefined} variable\n * @returns {Array<BigNumber>}\n */\nexport function convertToBigNumberArray(variable) {\n if (variable instanceof Array) {\n return /** @type {Array<BigNumber>} */ (\n variable.map(convertToBigNumber)\n );\n } else {\n throw new Error(REQUIRE_ARRAY_ERROR);\n }\n}\n\n/**\n * @param {*} variable\n * @returns {number}\n */\nexport function convertToNumber(variable) {\n requireNonNull(variable);\n if (\n isBigNumber(variable) ||\n isString(variable) ||\n isNumber(variable) ||\n isLong(variable)\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const num = parseInt(variable);\n if (isNaN(num)) {\n throw new Error(FUNCTION_CONVERT_TO_NUMBER_PARSE_ERROR);\n } else {\n return num;\n }\n } else {\n throw new Error(FUNCTION_CONVERT_TO_NUMBER_ERROR);\n }\n}\n\n/**\n * Creates a DataView on top of an Uint8Array that could be or not be pooled, ensuring that we don't get out of bounds.\n *\n * @param {Uint8Array | Int8Array} arr\n * @param {number | undefined} offset\n * @param {number | undefined} length\n * @returns {DataView}\n */\nexport function safeView(arr, offset = 0, length = arr.byteLength) {\n if (!(Number.isInteger(offset) && offset >= 0))\n throw new Error(\"Invalid offset!\");\n if (!(Number.isInteger(length) && length >= 0))\n throw new Error(\"Invalid length!\");\n return new DataView(\n arr.buffer,\n arr.byteOffset + offset,\n Math.min(length, arr.byteLength - offset),\n );\n}\n\n/**\n * @param {any} a\n * @param {any} b\n * @param {Set<string>=} ignore\n * @returns {boolean}\n */\nexport function compare(a, b, ignore = new Set()) {\n if (typeof a === \"object\" && typeof b === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const aKeys = Object.keys(a);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n for (let i = 0; i < aKeys.length; i++) {\n if (aKeys[i] !== bKeys[i]) {\n return false;\n }\n\n if (ignore.has(aKeys[i])) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!compare(a[aKeys[i]], b[bKeys[i]], ignore)) {\n return false;\n }\n }\n\n return true;\n } else if (typeof a === \"number\" && typeof b === \"number\") {\n return a === b;\n } else if (typeof a === \"string\" && typeof b === \"string\") {\n return a === b;\n } else if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n return a === b;\n } else {\n return false;\n }\n}\n\n/**\n * https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array\n *\n * @template T\n * @param {Array<T>} array\n */\nexport function shuffle(array) {\n var currentIndex = array.length,\n temporaryValue,\n randomIndex;\n\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n}\n\n/**\n * @param {Uint8Array} array1\n * @param {Uint8Array} array2\n * @returns {boolean}\n */\nexport function arrayEqual(array1, array2) {\n if (array1 === array2) {\n return true;\n }\n\n if (array1.byteLength !== array2.byteLength) {\n return false;\n }\n\n const view1 = new DataView(\n array1.buffer,\n array1.byteOffset,\n array1.byteLength,\n );\n const view2 = new DataView(\n array2.buffer,\n array2.byteOffset,\n array2.byteLength,\n );\n\n let i = array1.byteLength;\n\n while (i--) {\n if (view1.getUint8(i) !== view2.getUint8(i)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * @description Function that delays an execution for a given time (in milliseconds)\n * @param {number} ms\n * @returns {Promise<void>}\n */\nexport function wait(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Converts a SCREAMING_SNAKE_CASE string to PascalCase\n * @param {string} name - The string to convert\n * @returns {string} The converted PascalCase string\n */\nexport function screamingSnakeToPascalCase(name) {\n const words = name.toLowerCase().split(\"_\");\n let result = \"\";\n for (let i = 0; i < words.length; i++) {\n result += words[i].charAt(0).toUpperCase() + words[i].slice(1);\n }\n return result;\n}\n"],"names":["REQUIRE_NON_NULL_ERROR","REQUIRE_STRING_OR_UINT8ARRAY_ERROR","REQUIRE_ARRAY_ERROR","FUNCTION_CONVERT_TO_BIGNUMBER_ERROR","FUNCTION_CONVERT_TO_NUMBER_ERROR","FUNCTION_CONVERT_TO_NUMBER_PARSE_ERROR","isNonNull","variable","isUint8Array","Uint8Array","isNumber","Number","isBigNumber","BigNumber","isLong","Long","isString","isStringOrUint8Array","isLongZeroAddress","address","i","requireNotNegative","isNegative","Error","requireNonNull","requireStringOrUint8Array","convertToBigNumber","convertToBigNumberArray","Array","map","convertToNumber","num","parseInt","isNaN","safeView","arr","offset","length","byteLength","isInteger","DataView","buffer","byteOffset","Math","min","compare","a","b","ignore","Set","aKeys","Object","keys","bKeys","has","shuffle","array","temporaryValue","randomIndex","currentIndex","floor","random","arrayEqual","array1","array2","view1","view2","getUint8","wait","ms","Promise","resolve","setTimeout"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"util.js","sources":["../src/util.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport BigNumber from \"bignumber.js\";\nimport Long from \"long\";\n\n/**\n * @typedef {import(\"./Hbar.js\").default} Hbar\n */\n\n/**\n * Utility Error Messages\n */\nexport const REQUIRE_NON_NULL_ERROR = \"This value cannot be null | undefined.\";\nexport const REQUIRE_STRING_ERROR = \"This value must be a string.\";\nexport const REQUIRE_UINT8ARRAY_ERROR = \"This value must be a Uint8Array.\";\nexport const REQUIRE_STRING_OR_UINT8ARRAY_ERROR =\n \"This value must be a string or Uint8Array.\";\nexport const REQUIRE_NUMBER_ERROR = \"This value must be a Number.\";\nexport const REQUIRE_BIGNUMBER_ERROR = \"This value must be a BigNumber.\";\nexport const REQUIRE_ARRAY_ERROR = \"The provided variable must be an Array.\";\nexport const REQUIRE_LONG_ERROR = \"This value must be a Long.\";\n\nexport const REQUIRE_TYPE_ERROR =\n \"The provided variables are not matching types.\";\n\nexport const FUNCTION_CONVERT_TO_BIGNUMBER_ERROR =\n \"This value must be a String, Number, or BigNumber to be converted.\";\nexport const FUNCTION_CONVERT_TO_NUMBER_ERROR =\n \"This value must be a String, Number, or BigNumber to be converted.\";\nexport const FUNCTION_CONVERT_TO_NUMBER_PARSE_ERROR =\n \"Unable to parse given variable. Returns NaN.\";\n\n//Soft Checks\n\n/**\n * Takes any param and returns false if null or undefined.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isNonNull(variable) {\n return variable != null;\n}\n\n/**\n * Takes any param and returns true if param variable and type are the same.\n *\n * @param {any | null | undefined} variable\n * @param {any | null | undefined} type\n * @returns {boolean}\n */\nexport function isType(variable, type) {\n return typeof variable == typeof type;\n}\n\n/**\n * Takes any param and returns true if param is not null and of type Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isUint8Array(variable) {\n return isNonNull(variable) && variable instanceof Uint8Array;\n}\n\n/**\n * Takes any param and returns true if param is not null and of type Number.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isNumber(variable) {\n return (\n isNonNull(variable) &&\n (typeof variable == \"number\" || variable instanceof Number)\n );\n}\n\n/**\n * Takes any param and returns true if param is not null and of type BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isBigNumber(variable) {\n return isNonNull(variable) && variable instanceof BigNumber;\n}\n\n/**\n * Takes any param and returns true if param is not null and of type BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isLong(variable) {\n return isNonNull(variable) && variable instanceof Long;\n}\n\n/**\n * Takes any param and returns true if param is not null and of type string.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isString(variable) {\n return isNonNull(variable) && typeof variable == \"string\";\n}\n\n/**\n * Takes any param and returns true if param is not null and type string or Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {boolean}\n */\nexport function isStringOrUint8Array(variable) {\n return (\n isNonNull(variable) && (isString(variable) || isUint8Array(variable))\n );\n}\n\n/**\n * Takes an address as `Uint8Array` and returns whether or not this is a long-zero address\n *\n * @param {Uint8Array} address\n * @returns {boolean}\n */\nexport function isLongZeroAddress(address) {\n for (let i = 0; i < 12; i++) {\n if (address[i] != 0) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Takes any param and returns false if null or undefined.\n *\n * @template {Long | Hbar} T\n * @param {T} variable\n * @returns {T}\n */\nexport function requireNotNegative(variable) {\n if (variable.isNegative()) {\n throw new Error(\"negative value not allowed\");\n }\n\n return variable;\n}\n\n/**\n * Takes any param and throws custom error if null or undefined.\n *\n * @param {any} variable\n * @returns {object}\n */\nexport function requireNonNull(variable) {\n if (!isNonNull(variable)) {\n throw new Error(REQUIRE_NON_NULL_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return variable;\n }\n}\n\n/**\n * Takes any param and throws custom error if params are not same type.\n *\n * @param {any | null | undefined} variable\n * @param {any | null | undefined} type\n * @returns {object}\n */\nexport function requireType(variable, type) {\n if (!isType(variable, type)) {\n throw new Error(REQUIRE_TYPE_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return variable;\n }\n}\n\n/**\n * Takes any param and throws custom error if non BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {BigNumber}\n */\nexport function requireBigNumber(variable) {\n if (!isBigNumber(requireNonNull(variable))) {\n throw new Error(REQUIRE_BIGNUMBER_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {BigNumber} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if non BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {Long}\n */\nexport function requireLong(variable) {\n if (!isLong(requireNonNull(variable))) {\n throw new Error(REQUIRE_LONG_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {Long} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if non string.\n *\n * @param {any | null | undefined} variable\n * @returns {string}\n */\nexport function requireString(variable) {\n if (!isString(requireNonNull(variable))) {\n throw new Error(REQUIRE_STRING_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {string} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if non Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {Uint8Array}\n */\nexport function requireUint8Array(variable) {\n if (!isUint8Array(requireNonNull(variable))) {\n throw new Error(REQUIRE_UINT8ARRAY_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {Uint8Array} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if non Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {number}\n */\nexport function requireNumber(variable) {\n if (!isNumber(requireNonNull(variable))) {\n throw new Error(REQUIRE_NUMBER_ERROR);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {number} */ (variable);\n }\n}\n\n/**\n * Takes any param and throws custom error if null or undefined and not a string or Uint8Array.\n *\n * @param {any | null | undefined} variable\n * @returns {string | Uint8Array}\n */\nexport function requireStringOrUint8Array(variable) {\n if (isStringOrUint8Array(requireNonNull(variable))) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return /** @type {string | Uint8Array} */ (variable);\n } else {\n throw new Error(REQUIRE_STRING_OR_UINT8ARRAY_ERROR);\n }\n}\n\n//Conversions\n\n/**\n * Converts number or string to BigNumber.\n *\n * @param {any | null | undefined} variable\n * @returns {BigNumber}\n */\nexport function convertToBigNumber(variable) {\n requireNonNull(variable);\n if (\n isBigNumber(variable) ||\n isString(variable) ||\n isNumber(variable) ||\n isLong(variable)\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new BigNumber(variable);\n }\n throw new Error(FUNCTION_CONVERT_TO_BIGNUMBER_ERROR);\n}\n\n/**\n * Converts amount (number, Long, BigNumber, or bigint) to Long.\n * This utility ensures consistent amount handling across the SDK.\n *\n * @param {number | Long | BigNumber | bigint} amount\n * @returns {Long}\n */\nexport function convertAmountToLong(amount) {\n requireNonNull(amount);\n\n // Preserve exact original behavior for existing types\n if (Long.isLong(amount)) {\n return amount;\n } else if (typeof amount === \"number\") {\n return Long.fromNumber(amount);\n } else if (BigNumber.isBigNumber(amount)) {\n return Long.fromValue(\n amount.integerValue(BigNumber.ROUND_DOWN).toString(),\n );\n } else if (typeof amount === \"bigint\") {\n return Long.fromValue(amount.toString());\n } else {\n // Handle other types that can be converted to string\n return Long.fromValue(String(amount));\n }\n}\n/**\n * Converts Array of Numbers or Strings to Array of BigNumbers.\n *\n * @param {any | null | undefined} variable\n * @returns {Array<BigNumber>}\n */\nexport function convertToBigNumberArray(variable) {\n if (variable instanceof Array) {\n return /** @type {Array<BigNumber>} */ (\n variable.map(convertToBigNumber)\n );\n } else {\n throw new Error(REQUIRE_ARRAY_ERROR);\n }\n}\n\n/**\n * @param {*} variable\n * @returns {number}\n */\nexport function convertToNumber(variable) {\n requireNonNull(variable);\n if (\n isBigNumber(variable) ||\n isString(variable) ||\n isNumber(variable) ||\n isLong(variable)\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const num = parseInt(variable);\n if (isNaN(num)) {\n throw new Error(FUNCTION_CONVERT_TO_NUMBER_PARSE_ERROR);\n } else {\n return num;\n }\n } else {\n throw new Error(FUNCTION_CONVERT_TO_NUMBER_ERROR);\n }\n}\n\n/**\n * Creates a DataView on top of an Uint8Array that could be or not be pooled, ensuring that we don't get out of bounds.\n *\n * @param {Uint8Array | Int8Array} arr\n * @param {number | undefined} offset\n * @param {number | undefined} length\n * @returns {DataView}\n */\nexport function safeView(arr, offset = 0, length = arr.byteLength) {\n if (!(Number.isInteger(offset) && offset >= 0))\n throw new Error(\"Invalid offset!\");\n if (!(Number.isInteger(length) && length >= 0))\n throw new Error(\"Invalid length!\");\n return new DataView(\n arr.buffer,\n arr.byteOffset + offset,\n Math.min(length, arr.byteLength - offset),\n );\n}\n\n/**\n * @param {any} a\n * @param {any} b\n * @param {Set<string>=} ignore\n * @returns {boolean}\n */\nexport function compare(a, b, ignore = new Set()) {\n if (typeof a === \"object\" && typeof b === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const aKeys = Object.keys(a);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n\n for (let i = 0; i < aKeys.length; i++) {\n if (aKeys[i] !== bKeys[i]) {\n return false;\n }\n\n if (ignore.has(aKeys[i])) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!compare(a[aKeys[i]], b[bKeys[i]], ignore)) {\n return false;\n }\n }\n\n return true;\n } else if (typeof a === \"number\" && typeof b === \"number\") {\n return a === b;\n } else if (typeof a === \"string\" && typeof b === \"string\") {\n return a === b;\n } else if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n return a === b;\n } else {\n return false;\n }\n}\n\n/**\n * https://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array\n *\n * @template T\n * @param {Array<T>} array\n */\nexport function shuffle(array) {\n var currentIndex = array.length,\n temporaryValue,\n randomIndex;\n\n // While there remain elements to shuffle...\n while (0 !== currentIndex) {\n // Pick a remaining element...\n randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n\n // And swap it with the current element.\n temporaryValue = array[currentIndex];\n array[currentIndex] = array[randomIndex];\n array[randomIndex] = temporaryValue;\n }\n}\n\n/**\n * @param {Uint8Array} array1\n * @param {Uint8Array} array2\n * @returns {boolean}\n */\nexport function arrayEqual(array1, array2) {\n if (array1 === array2) {\n return true;\n }\n\n if (array1.byteLength !== array2.byteLength) {\n return false;\n }\n\n const view1 = new DataView(\n array1.buffer,\n array1.byteOffset,\n array1.byteLength,\n );\n const view2 = new DataView(\n array2.buffer,\n array2.byteOffset,\n array2.byteLength,\n );\n\n let i = array1.byteLength;\n\n while (i--) {\n if (view1.getUint8(i) !== view2.getUint8(i)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * @description Function that delays an execution for a given time (in milliseconds)\n * @param {number} ms\n * @returns {Promise<void>}\n */\nexport function wait(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Converts a SCREAMING_SNAKE_CASE string to PascalCase\n * @param {string} name - The string to convert\n * @returns {string} The converted PascalCase string\n */\nexport function screamingSnakeToPascalCase(name) {\n const words = name.toLowerCase().split(\"_\");\n let result = \"\";\n for (let i = 0; i < words.length; i++) {\n result += words[i].charAt(0).toUpperCase() + words[i].slice(1);\n }\n return result;\n}\n"],"names":["REQUIRE_NON_NULL_ERROR","REQUIRE_STRING_OR_UINT8ARRAY_ERROR","REQUIRE_ARRAY_ERROR","FUNCTION_CONVERT_TO_BIGNUMBER_ERROR","FUNCTION_CONVERT_TO_NUMBER_ERROR","FUNCTION_CONVERT_TO_NUMBER_PARSE_ERROR","isNonNull","variable","isUint8Array","Uint8Array","isNumber","Number","isBigNumber","BigNumber","isLong","Long","isString","isStringOrUint8Array","isLongZeroAddress","address","i","requireNotNegative","isNegative","Error","requireNonNull","requireStringOrUint8Array","convertToBigNumber","convertAmountToLong","amount","fromNumber","fromValue","integerValue","ROUND_DOWN","toString","String","convertToBigNumberArray","Array","map","convertToNumber","num","parseInt","isNaN","safeView","arr","offset","length","byteLength","isInteger","DataView","buffer","byteOffset","Math","min","compare","a","b","ignore","Set","aKeys","Object","keys","bKeys","has","shuffle","array","temporaryValue","randomIndex","currentIndex","floor","random","arrayEqual","array1","array2","view1","view2","getUint8","wait","ms","Promise","resolve","setTimeout"],"mappings":"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"}
|
package/lib/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const o="hiero-sdk-js",s="2.
|
|
1
|
+
const o="hiero-sdk-js",s="2.74.0";export{o as SDK_NAME,s as SDK_VERSION};
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hiero-ledger/sdk",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.74.0",
|
|
4
4
|
"description": "Hiero SDK",
|
|
5
5
|
"types": "./lib/index.d.ts",
|
|
6
6
|
"main": "./lib/index.cjs",
|
|
7
7
|
"module": "./src/index.js",
|
|
8
8
|
"react-native": {
|
|
9
|
-
"./lib/index.cjs": "./
|
|
10
|
-
"./
|
|
11
|
-
"./
|
|
12
|
-
"./
|
|
9
|
+
"./lib/index.cjs": "./lib/native.js",
|
|
10
|
+
"./lib/encoding/hex.js": "./lib/encoding/hex.native.cjs",
|
|
11
|
+
"./lib/encoding/hex.cjs": "./lib/encoding/hex.native.cjs",
|
|
12
|
+
"./lib/encoding/utf8.js": "./lib/encoding/utf8.native.cjs",
|
|
13
|
+
"./lib/encoding/utf8.cjs": "./lib/encoding/utf8.native.cjs",
|
|
14
|
+
"./lib/cryptography/sha384.js": "./lib/cryptography/sha384.native.cjs",
|
|
15
|
+
"./lib/cryptography/sha384.cjs": "./lib/cryptography/sha384.native.cjs"
|
|
13
16
|
},
|
|
14
17
|
"browser": {
|
|
15
18
|
"./lib/index.js": "./lib/browser.js",
|
|
@@ -22,6 +25,7 @@
|
|
|
22
25
|
"exports": {
|
|
23
26
|
"./package.json": "./package.json",
|
|
24
27
|
".": {
|
|
28
|
+
"react-native": "./lib/native.js",
|
|
25
29
|
"types": "./lib/index.d.ts",
|
|
26
30
|
"import": "./lib/index.js",
|
|
27
31
|
"require": "./lib/index.cjs"
|
|
@@ -61,7 +65,7 @@
|
|
|
61
65
|
"@ethersproject/bytes": "5.8.0",
|
|
62
66
|
"@ethersproject/rlp": "5.8.0",
|
|
63
67
|
"@grpc/grpc-js": "1.12.6",
|
|
64
|
-
"@hashgraph/cryptography": "1.
|
|
68
|
+
"@hashgraph/cryptography": "1.12.0",
|
|
65
69
|
"@hashgraph/proto": "2.23.0",
|
|
66
70
|
"ansi-regex": "6.2.2",
|
|
67
71
|
"ansi-styles": "6.2.3",
|
|
@@ -106,7 +110,7 @@
|
|
|
106
110
|
"babel-plugin-dynamic-import-node": "2.3.3",
|
|
107
111
|
"babel-plugin-module-rewrite": "0.2.0",
|
|
108
112
|
"c8": "10.1.3",
|
|
109
|
-
"chromedriver": "
|
|
113
|
+
"chromedriver": "140.0.4",
|
|
110
114
|
"codecov": "3.8.3",
|
|
111
115
|
"dotenv": "17.0.1",
|
|
112
116
|
"dpdm": "3.11.0",
|
|
@@ -118,7 +122,7 @@
|
|
|
118
122
|
"eslint-plugin-jsdoc": "54.1.1",
|
|
119
123
|
"eslint-plugin-n": "17.16.1",
|
|
120
124
|
"eslint-plugin-vitest": "0.3.25",
|
|
121
|
-
"geckodriver": "
|
|
125
|
+
"geckodriver": "6.0.1",
|
|
122
126
|
"jsdom": "26.0.0",
|
|
123
127
|
"msw": "2.10.2",
|
|
124
128
|
"npm-run-all": "4.1.5",
|
package/src/MirrorNode.js
CHANGED
|
@@ -38,4 +38,53 @@ export default class MirrorNode extends ManagedNode {
|
|
|
38
38
|
getKey() {
|
|
39
39
|
return this._address.toString();
|
|
40
40
|
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Gets the base URL for this mirror node's REST API.
|
|
44
|
+
*
|
|
45
|
+
* @returns {string} The base URL for the mirror node REST API
|
|
46
|
+
* @throws {Error} When the mirror node has invalid address configuration
|
|
47
|
+
*/
|
|
48
|
+
get mirrorRestApiBaseUrl() {
|
|
49
|
+
const host = this.address.address;
|
|
50
|
+
const port = this.address.port;
|
|
51
|
+
|
|
52
|
+
if (!host || !port) {
|
|
53
|
+
throw new Error("Mirror node has invalid address configuration");
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// For localhost/127.0.0.1, mirror node gRPC and REST API use different ports
|
|
57
|
+
// gRPC typically uses port 5600, but REST API uses port 5551
|
|
58
|
+
// Note: Contract calls may use port 8545 (handled separately in MirrorNodeContractQuery)
|
|
59
|
+
if (host === "localhost" || host === "127.0.0.1") {
|
|
60
|
+
return `http://${host}:5551/api/v1`;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const scheme = this._getSchemeFromHostAndPort(host, port);
|
|
64
|
+
|
|
65
|
+
return `${scheme}://${host}:${port}/api/v1`;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Determines the appropriate scheme (http/https) based on the host and port.
|
|
70
|
+
*
|
|
71
|
+
* @private
|
|
72
|
+
* @param {string} host - The host address
|
|
73
|
+
* @param {number} port - The port number
|
|
74
|
+
* @returns {string} - The scheme ('http' or 'https')
|
|
75
|
+
*/
|
|
76
|
+
_getSchemeFromHostAndPort(host, port) {
|
|
77
|
+
// For localhost and 127.0.0.1, use HTTP scheme
|
|
78
|
+
if (host === "localhost" || host === "127.0.0.1") {
|
|
79
|
+
return "http";
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Standard HTTP ports
|
|
83
|
+
if (port === 80) {
|
|
84
|
+
return "http";
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// For other ports, assume HTTPS for security
|
|
88
|
+
return "https";
|
|
89
|
+
}
|
|
41
90
|
}
|
|
@@ -7,11 +7,11 @@ import AccountId from "./AccountId.js";
|
|
|
7
7
|
import ContractId from "../contract/ContractId.js";
|
|
8
8
|
import TokenId from "../token/TokenId.js";
|
|
9
9
|
import NftId from "../token/NftId.js";
|
|
10
|
-
import Long from "long";
|
|
11
10
|
import Hbar from "../Hbar.js";
|
|
12
11
|
import HbarAllowance from "./HbarAllowance.js";
|
|
13
12
|
import TokenAllowance from "./TokenAllowance.js";
|
|
14
13
|
import TokenNftAllowance from "./TokenNftAllowance.js";
|
|
14
|
+
import { convertAmountToLong } from "../util.js";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* @namespace proto
|
|
@@ -192,12 +192,15 @@ export default class AccountAllowanceApproveTransaction extends Transaction {
|
|
|
192
192
|
* @param {TokenId | string} tokenId
|
|
193
193
|
* @param {AccountId | string} ownerAccountId
|
|
194
194
|
* @param {AccountId | ContractId | string} spenderAccountId
|
|
195
|
-
* @param {Long | number} amount
|
|
195
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
196
196
|
* @returns {AccountAllowanceApproveTransaction}
|
|
197
197
|
*/
|
|
198
198
|
approveTokenAllowance(tokenId, ownerAccountId, spenderAccountId, amount) {
|
|
199
199
|
this._requireNotFrozen();
|
|
200
200
|
|
|
201
|
+
// Convert amount to Long
|
|
202
|
+
const amountLong = convertAmountToLong(amount);
|
|
203
|
+
|
|
201
204
|
this._tokenApprovals.push(
|
|
202
205
|
new TokenAllowance({
|
|
203
206
|
tokenId:
|
|
@@ -224,10 +227,7 @@ export default class AccountAllowanceApproveTransaction extends Transaction {
|
|
|
224
227
|
ownerAccountId.toEvmAddress(),
|
|
225
228
|
)
|
|
226
229
|
: ownerAccountId,
|
|
227
|
-
amount:
|
|
228
|
-
typeof amount === "number"
|
|
229
|
-
? Long.fromNumber(amount)
|
|
230
|
-
: amount,
|
|
230
|
+
amount: amountLong,
|
|
231
231
|
}),
|
|
232
232
|
);
|
|
233
233
|
|
|
@@ -238,12 +238,15 @@ export default class AccountAllowanceApproveTransaction extends Transaction {
|
|
|
238
238
|
* @deprecated - Use `approveTokenAllowance()` instead
|
|
239
239
|
* @param {TokenId | string} tokenId
|
|
240
240
|
* @param {AccountId | string} spenderAccountId
|
|
241
|
-
* @param {Long | number} amount
|
|
241
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
242
242
|
* @returns {AccountAllowanceApproveTransaction}
|
|
243
243
|
*/
|
|
244
244
|
addTokenAllowance(tokenId, spenderAccountId, amount) {
|
|
245
245
|
this._requireNotFrozen();
|
|
246
246
|
|
|
247
|
+
// Convert amount to Long
|
|
248
|
+
const amountLong = convertAmountToLong(amount);
|
|
249
|
+
|
|
247
250
|
this._tokenApprovals.push(
|
|
248
251
|
new TokenAllowance({
|
|
249
252
|
tokenId:
|
|
@@ -254,10 +257,7 @@ export default class AccountAllowanceApproveTransaction extends Transaction {
|
|
|
254
257
|
typeof spenderAccountId === "string"
|
|
255
258
|
? AccountId.fromString(spenderAccountId)
|
|
256
259
|
: spenderAccountId,
|
|
257
|
-
amount:
|
|
258
|
-
typeof amount === "number"
|
|
259
|
-
? Long.fromNumber(amount)
|
|
260
|
-
: amount,
|
|
260
|
+
amount: amountLong,
|
|
261
261
|
ownerAccountId: null,
|
|
262
262
|
}),
|
|
263
263
|
);
|
package/src/account/AccountId.js
CHANGED
|
@@ -179,17 +179,15 @@ export default class AccountId {
|
|
|
179
179
|
if (this.evmAddress === null) {
|
|
180
180
|
throw new Error("field `evmAddress` should not be null");
|
|
181
181
|
}
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
);
|
|
182
|
+
const mirrorRestApiBaseUrl = client.mirrorRestApiBaseUrl;
|
|
183
|
+
|
|
184
|
+
const url = `${mirrorRestApiBaseUrl}/accounts/${this.evmAddress.toString()}`;
|
|
186
185
|
|
|
187
186
|
await new Promise((resolve) => {
|
|
188
187
|
setTimeout(resolve, 3000);
|
|
189
188
|
});
|
|
190
189
|
|
|
191
190
|
/* eslint-disable */
|
|
192
|
-
const url = `https://${mirrorUrl}/api/v1/accounts/${this.evmAddress.toString()}`;
|
|
193
191
|
const response = await fetch(url);
|
|
194
192
|
const data = await response.json();
|
|
195
193
|
const mirrorAccountId = data.account;
|
|
@@ -211,17 +209,15 @@ export default class AccountId {
|
|
|
211
209
|
if (this.num === null) {
|
|
212
210
|
throw new Error("field `num` should not be null");
|
|
213
211
|
}
|
|
214
|
-
const
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
);
|
|
212
|
+
const mirrorRestApiBaseUrl = client.mirrorRestApiBaseUrl;
|
|
213
|
+
|
|
214
|
+
const url = `${mirrorRestApiBaseUrl}/accounts/${this.num.toString()}`;
|
|
218
215
|
|
|
219
216
|
await new Promise((resolve) => {
|
|
220
217
|
setTimeout(resolve, 3000);
|
|
221
218
|
});
|
|
222
219
|
|
|
223
220
|
/* eslint-disable */
|
|
224
|
-
const url = `https://${mirrorUrl}/api/v1/accounts/${this.num.toString()}`;
|
|
225
221
|
const response = await fetch(url);
|
|
226
222
|
const data = await response.json();
|
|
227
223
|
const mirrorAccountId = data.evm_address;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import TokenId from "../token/TokenId.js";
|
|
4
4
|
import AccountId from "./AccountId.js";
|
|
5
5
|
import Long from "long";
|
|
6
|
+
import { convertAmountToLong } from "../util.js";
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* @namespace proto
|
|
@@ -14,6 +15,7 @@ import Long from "long";
|
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* @typedef {import("../client/Client.js").default<*, *>} Client
|
|
18
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
17
19
|
*/
|
|
18
20
|
|
|
19
21
|
/**
|
|
@@ -30,7 +32,7 @@ export default class TokenAllowance {
|
|
|
30
32
|
* @param {TokenId} props.tokenId
|
|
31
33
|
* @param {AccountId | null} props.spenderAccountId
|
|
32
34
|
* @param {AccountId | null} props.ownerAccountId
|
|
33
|
-
* @param {Long | null} props.amount
|
|
35
|
+
* @param {Long | number | BigNumber | bigint | null} props.amount
|
|
34
36
|
*/
|
|
35
37
|
constructor(props) {
|
|
36
38
|
/**
|
|
@@ -61,7 +63,8 @@ export default class TokenAllowance {
|
|
|
61
63
|
*
|
|
62
64
|
* @readonly
|
|
63
65
|
*/
|
|
64
|
-
this.amount =
|
|
66
|
+
this.amount =
|
|
67
|
+
props.amount != null ? convertAmountToLong(props.amount) : null;
|
|
65
68
|
|
|
66
69
|
Object.freeze(this);
|
|
67
70
|
}
|
|
@@ -4,6 +4,7 @@ import TokenId from "../token/TokenId.js";
|
|
|
4
4
|
import AccountId from "../account/AccountId.js";
|
|
5
5
|
import TokenTransferAccountMap from "./TokenTransferAccountMap.js";
|
|
6
6
|
import ObjectMap from "../ObjectMap.js";
|
|
7
|
+
import { convertAmountToLong } from "../util.js";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @namespace proto
|
|
@@ -13,6 +14,10 @@ import ObjectMap from "../ObjectMap.js";
|
|
|
13
14
|
* @typedef {import("@hashgraph/proto").proto.IAccountID} HieroProto.proto.IAccountID
|
|
14
15
|
*/
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* @typedef {import("bignumber.js").default} BigNumber
|
|
19
|
+
*/
|
|
20
|
+
|
|
16
21
|
/**
|
|
17
22
|
* @augments {ObjectMap<TokenId, TokenTransferAccountMap>}
|
|
18
23
|
*/
|
|
@@ -25,7 +30,7 @@ export default class TokenTransferMap extends ObjectMap {
|
|
|
25
30
|
* @internal
|
|
26
31
|
* @param {TokenId} tokenId
|
|
27
32
|
* @param {AccountId} accountId
|
|
28
|
-
* @param {Long} amount
|
|
33
|
+
* @param {Long | number | BigNumber | bigint} amount
|
|
29
34
|
*/
|
|
30
35
|
__set(tokenId, accountId, amount) {
|
|
31
36
|
const token = tokenId.toString();
|
|
@@ -37,7 +42,7 @@ export default class TokenTransferMap extends ObjectMap {
|
|
|
37
42
|
this.__map.set(tokenId, _map);
|
|
38
43
|
}
|
|
39
44
|
|
|
40
|
-
_map._set(accountId, amount);
|
|
45
|
+
_map._set(accountId, convertAmountToLong(amount));
|
|
41
46
|
}
|
|
42
47
|
|
|
43
48
|
/**
|
package/src/client/Client.js
CHANGED
|
@@ -267,6 +267,14 @@ export default class Client {
|
|
|
267
267
|
return this._mirrorNetwork.network;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
+
/**
|
|
271
|
+
* @returns {string}
|
|
272
|
+
* @throws {Error} When no mirror network is configured or available
|
|
273
|
+
*/
|
|
274
|
+
get mirrorRestApiBaseUrl() {
|
|
275
|
+
return this._mirrorNetwork.mirrorRestApiBaseUrl;
|
|
276
|
+
}
|
|
277
|
+
|
|
270
278
|
/**
|
|
271
279
|
* @returns {boolean}
|
|
272
280
|
*/
|
|
@@ -535,15 +543,24 @@ export default class Client {
|
|
|
535
543
|
}
|
|
536
544
|
|
|
537
545
|
/**
|
|
538
|
-
*
|
|
546
|
+
* Gets the maximum number of nodes that a transaction or query will attempt to execute against.
|
|
547
|
+
*
|
|
548
|
+
* @returns {number} The current maximum nodes per transaction setting.
|
|
549
|
+
* Returns -1 if no limit is set (uses network defaults).
|
|
539
550
|
*/
|
|
540
551
|
get maxNodesPerTransaction() {
|
|
541
552
|
return this._network.maxNodesPerTransaction;
|
|
542
553
|
}
|
|
543
554
|
|
|
544
555
|
/**
|
|
545
|
-
*
|
|
546
|
-
*
|
|
556
|
+
* Sets the maximum number of nodes that a transaction or query will execute against.
|
|
557
|
+
*
|
|
558
|
+
* - **Before freezing**: Limits automatic node selection when no explicit nodes are set
|
|
559
|
+
* - **After freezing**: Trims frozen transactions to the first N nodes while preserving signatures
|
|
560
|
+
* - **Special values**: 0 disables limiting, values > available nodes cause no trimming
|
|
561
|
+
*
|
|
562
|
+
* @param {number} maxNodesPerTransaction - Maximum nodes per transaction. Set to 0 to disable.
|
|
563
|
+
* @returns {this} The client instance for method chaining
|
|
547
564
|
*/
|
|
548
565
|
setMaxNodesPerTransaction(maxNodesPerTransaction) {
|
|
549
566
|
this._network.setMaxNodesPerTransaction(maxNodesPerTransaction);
|
|
@@ -84,4 +84,22 @@ export default class MirrorNetwork extends ManagedNetwork {
|
|
|
84
84
|
getNextMirrorNode() {
|
|
85
85
|
return this._getNumberOfMostHealthyNodes(1)[0];
|
|
86
86
|
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Gets the base URL for the mirror node REST API.
|
|
90
|
+
*
|
|
91
|
+
* @returns {string} The base URL for the mirror node REST API
|
|
92
|
+
* @throws {Error} When no mirror network is configured or available
|
|
93
|
+
*/
|
|
94
|
+
get mirrorRestApiBaseUrl() {
|
|
95
|
+
try {
|
|
96
|
+
const mirrorNode = this.getNextMirrorNode();
|
|
97
|
+
return mirrorNode.mirrorRestApiBaseUrl;
|
|
98
|
+
} catch (error) {
|
|
99
|
+
// Re-throw with a more descriptive error message
|
|
100
|
+
throw new Error(
|
|
101
|
+
"Client has no mirror network configured or no healthy mirror nodes are available",
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
87
105
|
}
|