@hiero-ledger/sdk 2.76.0 → 2.77.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 +426 -82
- package/dist/umd.min.js +14 -14
- package/lib/Executable.cjs +13 -3
- package/lib/Executable.js +1 -1
- package/lib/Executable.js.map +1 -1
- package/lib/channel/Channel.cjs +25 -1
- package/lib/channel/Channel.d.ts +20 -0
- package/lib/channel/Channel.js +1 -1
- package/lib/channel/Channel.js.map +1 -1
- package/lib/channel/NativeChannel.cjs +96 -2
- package/lib/channel/NativeChannel.d.ts +21 -1
- package/lib/channel/NativeChannel.js +1 -1
- package/lib/channel/NativeChannel.js.map +1 -1
- package/lib/channel/NodeChannel.cjs +4 -5
- package/lib/channel/NodeChannel.d.ts +2 -3
- package/lib/channel/NodeChannel.js +1 -1
- package/lib/channel/NodeChannel.js.map +1 -1
- package/lib/channel/WebChannel.cjs +163 -13
- package/lib/channel/WebChannel.d.ts +51 -1
- package/lib/channel/WebChannel.js +1 -1
- package/lib/channel/WebChannel.js.map +1 -1
- package/lib/client/Client.cjs +62 -5
- package/lib/client/Client.d.ts +26 -3
- package/lib/client/Client.js +1 -1
- package/lib/client/Client.js.map +1 -1
- package/lib/client/NativeClient.cjs +1 -1
- package/lib/client/NativeClient.js +1 -1
- package/lib/client/NativeClient.js.map +1 -1
- package/lib/client/NodeClient.cjs +7 -6
- package/lib/client/NodeClient.d.ts +3 -3
- package/lib/client/NodeClient.js +1 -1
- package/lib/client/NodeClient.js.map +1 -1
- package/lib/client/WebClient.cjs +55 -27
- package/lib/client/WebClient.d.ts +6 -0
- package/lib/client/WebClient.js +1 -1
- package/lib/client/WebClient.js.map +1 -1
- package/lib/client/addressbooks/mainnet.cjs +1 -1
- package/lib/client/addressbooks/mainnet.d.ts +1 -1
- package/lib/client/addressbooks/mainnet.js +1 -1
- package/lib/client/addressbooks/mainnet.js.map +1 -1
- package/lib/client/addressbooks/previewnet.cjs +1 -1
- package/lib/client/addressbooks/previewnet.d.ts +1 -1
- package/lib/client/addressbooks/previewnet.js +1 -1
- package/lib/client/addressbooks/previewnet.js.map +1 -1
- package/lib/client/addressbooks/testnet.cjs +1 -1
- package/lib/client/addressbooks/testnet.d.ts +1 -1
- package/lib/client/addressbooks/testnet.js +1 -1
- package/lib/client/addressbooks/testnet.js.map +1 -1
- package/lib/constants/ClientConstants.cjs +17 -1
- package/lib/constants/ClientConstants.d.ts +14 -0
- package/lib/constants/ClientConstants.js +1 -1
- package/lib/constants/ClientConstants.js.map +1 -1
- package/lib/network/AddressBookQuery.cjs +0 -4
- package/lib/network/AddressBookQuery.js +1 -1
- package/lib/network/AddressBookQuery.js.map +1 -1
- package/lib/network/AddressBookQueryWeb.cjs +1 -5
- package/lib/network/AddressBookQueryWeb.js +1 -1
- package/lib/network/AddressBookQueryWeb.js.map +1 -1
- package/lib/version.js +1 -1
- package/package.json +7 -7
- package/src/Executable.js +18 -2
- package/src/channel/Channel.js +25 -1
- package/src/channel/NativeChannel.js +111 -2
- package/src/channel/NodeChannel.js +4 -7
- package/src/channel/WebChannel.js +189 -21
- package/src/client/Client.js +79 -5
- package/src/client/NativeClient.js +1 -1
- package/src/client/NodeClient.js +7 -6
- package/src/client/WebClient.js +64 -31
- 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 +16 -0
- package/src/network/AddressBookQuery.js +0 -7
- package/src/network/AddressBookQueryWeb.js +1 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeClient.js","sources":["../../src/client/NodeClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport fs from \"fs\";\nimport util from \"util\";\nimport Client from \"./Client.js\";\nimport NodeChannel from \"../channel/NodeChannel.js\";\nimport NodeMirrorChannel from \"../channel/NodeMirrorChannel.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport NodeAddressBook from \"../address_book/NodeAddressBook.js\";\nimport * as mainnet from \"./addressbooks/mainnet.js\";\nimport * as testnet from \"./addressbooks/testnet.js\";\nimport * as previewnet from \"./addressbooks/previewnet.js\";\nimport * as hex from \"../encoding/hex.js\";\nimport {\n LocalNodeNetwork,\n MirrorNetwork,\n} from \"../constants/ClientConstants.js\";\n\nconst readFileAsync = util.promisify(fs.readFile);\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * @augments {Client<NodeChannel, NodeMirrorChannel>}\n * Client for interacting with the Hedera network using Node.js.\n * Extends the base Client class with Node.js specific implementations.\n */\nexport default class NodeClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n\n /** @private */\n this._maxExecutionTime = 10000;\n\n if (props != null) {\n if (typeof props.network === \"string\") {\n this._setNetworkFromName(props.network);\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n\n if (typeof props.mirrorNetwork === \"string\") {\n switch (props.mirrorNetwork) {\n case \"mainnet\":\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n break;\n\n case \"testnet\":\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n break;\n\n default:\n this.setMirrorNetwork([props.mirrorNetwork]);\n break;\n }\n } else if (props.mirrorNetwork != null) {\n this.setMirrorNetwork(props.mirrorNetwork);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {NodeClient}\n */\n static fromConfig(data) {\n return new NodeClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * @param {string} filename\n * @returns {Promise<NodeClient>}\n */\n static async fromConfigFile(filename) {\n return NodeClient.fromConfig(await readFileAsync(filename, \"utf8\"));\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)}} network\n * @param {ClientConfiguration} [props]\n * @returns {NodeClient}\n */\n static forNetwork(network, props) {\n return new NodeClient({\n network,\n ...props,\n });\n }\n\n /**\n * @param {string} network\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forName(network, props = {}) {\n return new NodeClient({ network, ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forMainnet(props = {}) {\n return new NodeClient({ network: \"mainnet\", ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forTestnet(props = {}) {\n return new NodeClient({ network: \"testnet\", ...props });\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @param {number} [shard]\n * @param {number} [realm]\n * @returns {Promise<NodeClient>}\n */\n static async forMirrorNetwork(mirrorNetwork, shard, realm) {\n const client = new NodeClient({\n mirrorNetwork,\n shard,\n realm,\n });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forPreviewnet(props = {}) {\n return new NodeClient({ network: \"previewnet\", ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for local-node access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forLocalNode(props = { scheduleNetworkUpdate: false }) {\n return new NodeClient({\n network: \"local-node\",\n ...props,\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forMainnetAsync(props = {}) {\n return new NodeClient({ network: \"mainnet\", ...props }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forTestnetAsync(props = {}) {\n return new NodeClient({ network: \"testnet\", ...props }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forPreviewnetAsync(props = {}) {\n return new NodeClient({\n network: \"previewnet\",\n ...props,\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forNameAsync(network, props = {}) {\n const client = new NodeClient({ network, ...props });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n this._setNetworkFromName(network);\n } else {\n this._network.setNetwork(network);\n }\n }\n\n /**\n * Available only for NodeClient\n *\n * @param {number} maxExecutionTime\n * @returns {this}\n */\n setMaxExecutionTime(maxExecutionTime) {\n this._maxExecutionTime = maxExecutionTime;\n return this;\n }\n\n /**\n * @private\n * @param {string} name\n * @returns {this}\n */\n _setNetworkFromName(name) {\n switch (name) {\n case \"mainnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(hex.decode(mainnet.addressBook)),\n );\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(hex.decode(testnet.addressBook)),\n );\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(\n hex.decode(previewnet.addressBook),\n ),\n );\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n break;\n\n case \"local-node\":\n this.setNetwork(LocalNodeNetwork);\n this.setMirrorNetwork(MirrorNetwork.LOCAL_NODE);\n this.setLedgerId(LedgerId.LOCAL_NODE);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${name}`,\n );\n }\n return this;\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string, cert?: string) => NodeChannel}\n */\n _createNetworkChannel() {\n return (address) => new NodeChannel(address, this._maxExecutionTime);\n }\n\n /**\n * @override\n * @returns {(address: string) => NodeMirrorChannel}\n */\n _createMirrorNetworkChannel() {\n return (address) => new NodeMirrorChannel(address);\n }\n}\n"],"names":["readFileAsync","util","promisify","fs","readFile","NodeClient","Client","constructor","props","super","this","_maxExecutionTime","network","_setNetworkFromName","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","setNetwork","mirrorNetwork","setMirrorNetwork","MirrorNetwork","MAINNET","TESTNET","PREVIEWNET","fromConfig","data","JSON","parse","fromConfigFile","filename","forNetwork","forName","forMainnet","forTestnet","forMirrorNetwork","client","updateNetwork","forPreviewnet","forLocalNode","scheduleNetworkUpdate","forMainnetAsync","forTestnetAsync","forPreviewnetAsync","forNameAsync","_network","setMaxExecutionTime","maxExecutionTime","name","setNetworkFromAddressBook","NodeAddressBook","fromBytes","hex.decode","mainnet.addressBook","setLedgerId","LedgerId","testnet.addressBook","previewnet.addressBook","LocalNodeNetwork","LOCAL_NODE","Error","_mirrorNetwork","_createNetworkChannel","address","NodeChannel","_createMirrorNetworkChannel","NodeMirrorChannel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NodeClient.js","sources":["../../src/client/NodeClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport fs from \"fs\";\nimport util from \"util\";\nimport Client from \"./Client.js\";\nimport NodeChannel from \"../channel/NodeChannel.js\";\nimport NodeMirrorChannel from \"../channel/NodeMirrorChannel.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport NodeAddressBook from \"../address_book/NodeAddressBook.js\";\nimport * as mainnet from \"./addressbooks/mainnet.js\";\nimport * as testnet from \"./addressbooks/testnet.js\";\nimport * as previewnet from \"./addressbooks/previewnet.js\";\nimport * as hex from \"../encoding/hex.js\";\nimport {\n LocalNodeNetwork,\n MirrorNetwork,\n} from \"../constants/ClientConstants.js\";\n\nconst readFileAsync = util.promisify(fs.readFile);\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * @augments {Client<NodeChannel, NodeMirrorChannel>}\n * Client for interacting with the Hedera network using Node.js.\n * Extends the base Client class with Node.js specific implementations.\n */\nexport default class NodeClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n\n if (props != null) {\n if (typeof props.network === \"string\") {\n this._setNetworkFromName(props.network);\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n\n if (typeof props.mirrorNetwork === \"string\") {\n switch (props.mirrorNetwork) {\n case \"mainnet\":\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n break;\n\n case \"testnet\":\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n break;\n\n default:\n this.setMirrorNetwork([props.mirrorNetwork]);\n break;\n }\n } else if (props.mirrorNetwork != null) {\n this.setMirrorNetwork(props.mirrorNetwork);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {NodeClient}\n */\n static fromConfig(data) {\n return new NodeClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * @param {string} filename\n * @returns {Promise<NodeClient>}\n */\n static async fromConfigFile(filename) {\n return NodeClient.fromConfig(await readFileAsync(filename, \"utf8\"));\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)}} network\n * @param {ClientConfiguration} [props]\n * @returns {NodeClient}\n */\n static forNetwork(network, props) {\n return new NodeClient({\n network,\n ...props,\n });\n }\n\n /**\n * @param {string} network\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forName(network, props = {}) {\n return new NodeClient({ network, ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forMainnet(props = {}) {\n return new NodeClient({ network: \"mainnet\", ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forTestnet(props = {}) {\n return new NodeClient({ network: \"testnet\", ...props });\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @param {number} [shard]\n * @param {number} [realm]\n * @returns {Promise<NodeClient>}\n */\n static async forMirrorNetwork(mirrorNetwork, shard, realm) {\n const client = new NodeClient({\n mirrorNetwork,\n shard,\n realm,\n });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forPreviewnet(props = {}) {\n return new NodeClient({ network: \"previewnet\", ...props });\n }\n\n /**\n * Construct a Hedera client pre-configured for local-node access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {NodeClient}\n */\n static forLocalNode(props = { scheduleNetworkUpdate: false }) {\n return new NodeClient({\n network: \"local-node\",\n ...props,\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forMainnetAsync(props = {}) {\n return new NodeClient({ network: \"mainnet\", ...props }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forTestnetAsync(props = {}) {\n return new NodeClient({ network: \"testnet\", ...props }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forPreviewnetAsync(props = {}) {\n return new NodeClient({\n network: \"previewnet\",\n ...props,\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {Promise<NodeClient>}\n */\n static async forNameAsync(network, props = {}) {\n const client = new NodeClient({ network, ...props });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n this._setNetworkFromName(network);\n } else {\n this._network.setNetwork(network);\n }\n }\n\n /**\n * Available only for NodeClient\n * Legacy method maintained for backward compatibility.\n * This method now calls setGrpcDeadline internally to ensure proper validation.\n * @deprecated Use setGrpcDeadline instead.\n * @param {number} maxExecutionTime\n * @returns {this}\n */\n setMaxExecutionTime(maxExecutionTime) {\n // Use the parent class setGrpcDeadline method to ensure proper validation\n // This ensures that maxExecutionTime follows the same validation rules as grpcDeadline\n this.setGrpcDeadline(maxExecutionTime);\n return this;\n }\n\n /**\n * @private\n * @param {string} name\n * @returns {this}\n */\n _setNetworkFromName(name) {\n switch (name) {\n case \"mainnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(hex.decode(mainnet.addressBook)),\n );\n this.setMirrorNetwork(MirrorNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(hex.decode(testnet.addressBook)),\n );\n this.setMirrorNetwork(MirrorNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetworkFromAddressBook(\n NodeAddressBook.fromBytes(\n hex.decode(previewnet.addressBook),\n ),\n );\n this.setMirrorNetwork(MirrorNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n break;\n\n case \"local-node\":\n this.setNetwork(LocalNodeNetwork);\n this.setMirrorNetwork(MirrorNetwork.LOCAL_NODE);\n this.setLedgerId(LedgerId.LOCAL_NODE);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${name}`,\n );\n }\n return this;\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(MirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string, cert?: string) => NodeChannel}\n */\n _createNetworkChannel() {\n return (address) => new NodeChannel(address, this.grpcDeadline);\n }\n\n /**\n * @override\n * @returns {(address: string) => NodeMirrorChannel}\n */\n _createMirrorNetworkChannel() {\n return (address) => new NodeMirrorChannel(address);\n }\n}\n"],"names":["readFileAsync","util","promisify","fs","readFile","NodeClient","Client","constructor","props","super","network","this","_setNetworkFromName","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","setNetwork","mirrorNetwork","setMirrorNetwork","MirrorNetwork","MAINNET","TESTNET","PREVIEWNET","fromConfig","data","JSON","parse","fromConfigFile","filename","forNetwork","forName","forMainnet","forTestnet","forMirrorNetwork","client","updateNetwork","forPreviewnet","forLocalNode","scheduleNetworkUpdate","forMainnetAsync","forTestnetAsync","forPreviewnetAsync","forNameAsync","_network","setMaxExecutionTime","maxExecutionTime","setGrpcDeadline","name","setNetworkFromAddressBook","NodeAddressBook","fromBytes","hex.decode","mainnet.addressBook","setLedgerId","LedgerId","testnet.addressBook","previewnet.addressBook","LocalNodeNetwork","LOCAL_NODE","Error","_mirrorNetwork","_createNetworkChannel","address","NodeChannel","grpcDeadline","_createMirrorNetworkChannel","NodeMirrorChannel"],"mappings":"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"}
|
package/lib/client/WebClient.cjs
CHANGED
|
@@ -34,32 +34,7 @@ class WebClient extends _Client.default {
|
|
|
34
34
|
super(props);
|
|
35
35
|
if (props != null) {
|
|
36
36
|
if (typeof props.network === "string") {
|
|
37
|
-
|
|
38
|
-
case "mainnet":
|
|
39
|
-
this.setNetwork(_ClientConstants.WebNetwork.MAINNET);
|
|
40
|
-
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.MAINNET);
|
|
41
|
-
this.setLedgerId(_LedgerId.default.MAINNET);
|
|
42
|
-
break;
|
|
43
|
-
case "testnet":
|
|
44
|
-
this.setNetwork(_ClientConstants.WebNetwork.TESTNET);
|
|
45
|
-
this.setLedgerId(_LedgerId.default.TESTNET);
|
|
46
|
-
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.TESTNET);
|
|
47
|
-
break;
|
|
48
|
-
case "previewnet":
|
|
49
|
-
this.setNetwork(_ClientConstants.WebNetwork.PREVIEWNET);
|
|
50
|
-
this.setLedgerId(_LedgerId.default.PREVIEWNET);
|
|
51
|
-
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.PREVIEWNET);
|
|
52
|
-
break;
|
|
53
|
-
case "local-node":
|
|
54
|
-
this.setNetwork(_ClientConstants.WebNetwork.LOCAL_NODE);
|
|
55
|
-
this.setLedgerId(_LedgerId.default.LOCAL_NODE);
|
|
56
|
-
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.LOCAL_NODE);
|
|
57
|
-
break;
|
|
58
|
-
default:
|
|
59
|
-
throw new Error(
|
|
60
|
-
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
61
|
-
`unknown network: ${props.network}`);
|
|
62
|
-
}
|
|
37
|
+
this._setNetworkFromName(props.network);
|
|
63
38
|
} else if (props.network != null) {
|
|
64
39
|
_Client.default._validateNetworkConsistency(props.network);
|
|
65
40
|
const {
|
|
@@ -73,6 +48,24 @@ class WebClient extends _Client.default {
|
|
|
73
48
|
this._realm = realm;
|
|
74
49
|
this.setNetwork(props.network);
|
|
75
50
|
}
|
|
51
|
+
if (typeof props.mirrorNetwork === "string") {
|
|
52
|
+
switch (props.mirrorNetwork) {
|
|
53
|
+
case "mainnet":
|
|
54
|
+
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.MAINNET);
|
|
55
|
+
break;
|
|
56
|
+
case "testnet":
|
|
57
|
+
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.TESTNET);
|
|
58
|
+
break;
|
|
59
|
+
case "previewnet":
|
|
60
|
+
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.PREVIEWNET);
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
this.setMirrorNetwork([props.mirrorNetwork]);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
} else if (props.mirrorNetwork != null) {
|
|
67
|
+
this.setMirrorNetwork(props.mirrorNetwork);
|
|
68
|
+
}
|
|
76
69
|
}
|
|
77
70
|
}
|
|
78
71
|
|
|
@@ -287,6 +280,41 @@ class WebClient extends _Client.default {
|
|
|
287
280
|
return this;
|
|
288
281
|
}
|
|
289
282
|
|
|
283
|
+
/**
|
|
284
|
+
* @private
|
|
285
|
+
* @param {string} name
|
|
286
|
+
* @returns {this}
|
|
287
|
+
*/
|
|
288
|
+
_setNetworkFromName(name) {
|
|
289
|
+
switch (name) {
|
|
290
|
+
case "mainnet":
|
|
291
|
+
this.setNetwork(_ClientConstants.WebNetwork.MAINNET);
|
|
292
|
+
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.MAINNET);
|
|
293
|
+
this.setLedgerId(_LedgerId.default.MAINNET);
|
|
294
|
+
break;
|
|
295
|
+
case "testnet":
|
|
296
|
+
this.setNetwork(_ClientConstants.WebNetwork.TESTNET);
|
|
297
|
+
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.TESTNET);
|
|
298
|
+
this.setLedgerId(_LedgerId.default.TESTNET);
|
|
299
|
+
break;
|
|
300
|
+
case "previewnet":
|
|
301
|
+
this.setNetwork(_ClientConstants.WebNetwork.PREVIEWNET);
|
|
302
|
+
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.PREVIEWNET);
|
|
303
|
+
this.setLedgerId(_LedgerId.default.PREVIEWNET);
|
|
304
|
+
break;
|
|
305
|
+
case "local-node":
|
|
306
|
+
this.setNetwork(_ClientConstants.WebNetwork.LOCAL_NODE);
|
|
307
|
+
this.setMirrorNetwork(_ClientConstants.WebMirrorNetwork.LOCAL_NODE);
|
|
308
|
+
this.setLedgerId(_LedgerId.default.LOCAL_NODE);
|
|
309
|
+
break;
|
|
310
|
+
default:
|
|
311
|
+
throw new Error(
|
|
312
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
313
|
+
`unknown network: ${name}`);
|
|
314
|
+
}
|
|
315
|
+
return this;
|
|
316
|
+
}
|
|
317
|
+
|
|
290
318
|
/**
|
|
291
319
|
* @override
|
|
292
320
|
* @returns {Promise<this>}
|
|
@@ -325,7 +353,7 @@ class WebClient extends _Client.default {
|
|
|
325
353
|
* @returns {(address: string) => WebChannel}
|
|
326
354
|
*/
|
|
327
355
|
_createNetworkChannel() {
|
|
328
|
-
return address => new _WebChannel.default(address);
|
|
356
|
+
return address => new _WebChannel.default(address, this.grpcDeadline);
|
|
329
357
|
}
|
|
330
358
|
|
|
331
359
|
/**
|
|
@@ -108,6 +108,12 @@ export default class WebClient extends Client<WebChannel, any> {
|
|
|
108
108
|
* @returns {this}
|
|
109
109
|
*/
|
|
110
110
|
setMirrorNetwork(mirrorNetwork: string[] | string): this;
|
|
111
|
+
/**
|
|
112
|
+
* @private
|
|
113
|
+
* @param {string} name
|
|
114
|
+
* @returns {this}
|
|
115
|
+
*/
|
|
116
|
+
private _setNetworkFromName;
|
|
111
117
|
/**
|
|
112
118
|
* @override
|
|
113
119
|
* @returns {Promise<this>}
|
package/lib/client/WebClient.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./Client.js";import t from"../channel/WebChannel.js";import r from"../LedgerId.js";import{
|
|
1
|
+
import e from"./Client.js";import t from"../channel/WebChannel.js";import r from"../LedgerId.js";import{WebMirrorNetwork as s,WebNetwork as o}from"../constants/ClientConstants.js";import n from"../network/AddressBookQueryWeb.js";import i from"../file/FileId.js";class a extends e{constructor(t){if(super(t),null!=t){if("string"==typeof t.network)this._setNetworkFromName(t.network);else if(null!=t.network){e._validateNetworkConsistency(t.network);const{shard:r,realm:s}=e._extractShardRealm(t.network);this._shard=r,this._realm=s,this.setNetwork(t.network)}if("string"==typeof t.mirrorNetwork)switch(t.mirrorNetwork){case"mainnet":this.setMirrorNetwork(s.MAINNET);break;case"testnet":this.setMirrorNetwork(s.TESTNET);break;case"previewnet":this.setMirrorNetwork(s.PREVIEWNET);break;default:this.setMirrorNetwork([t.mirrorNetwork])}else null!=t.mirrorNetwork&&this.setMirrorNetwork(t.mirrorNetwork)}}static fromConfig(e){return new a("string"==typeof e?JSON.parse(e):e)}static forNetwork(e){return new a({network:e})}static forName(e){return new a({network:e})}static forMainnet(){return new a({network:"mainnet"})}static forTestnet(){return new a({network:"testnet"})}static forPreviewnet(){return new a({network:"previewnet"})}static forLocalNode(e={scheduleNetworkUpdate:!1}){return new a({network:"local-node",...e})}static async forMainnetAsync(){return new a({network:"mainnet"}).updateNetwork()}static async forTestnetAsync(){return new a({network:"testnet"}).updateNetwork()}static async forPreviewnetAsync(){return new a({network:"previewnet"}).updateNetwork()}static async forNameAsync(e){const t=new a({network:e});return"local-node"!==e&&await t.updateNetwork(),t}static async forMirrorNetwork(e){const t=new a({mirrorNetwork:e});return await t.updateNetwork(),t}setNetwork(e){if("string"==typeof e)switch(e){case"previewnet":this._network.setNetwork(o.PREVIEWNET);break;case"testnet":this._network.setNetwork(o.TESTNET);break;case"mainnet":this._network.setNetwork(o.MAINNET);break;case"local-node":this._network.setNetwork(o.LOCAL_NODE)}else{for(const[t]of Object.entries(e))(t.startsWith("https://")||t.startsWith("http://"))&&console.warn('[Deprecation Notice] Hiero SDK: Network endpoint "'+t+'" includes a URL scheme (e.g. "https://"). This format was accepted in earlier versions but is now deprecated. Please remove the scheme and use "host:port" instead (e.g. "node00.swirldslabs.com:443"). Support for scheme-prefixed endpoints will be removed in a future major release.');this._network.setNetwork(e)}}setMirrorNetwork(e){if("string"==typeof e)switch(e){case"local-node":this._mirrorNetwork.setNetwork(s.LOCAL_NODE);break;case"previewnet":this._mirrorNetwork.setNetwork(s.PREVIEWNET);break;case"testnet":this._mirrorNetwork.setNetwork(s.TESTNET);break;case"mainnet":this._mirrorNetwork.setNetwork(s.MAINNET);break;default:this._mirrorNetwork.setNetwork([e])}else this._mirrorNetwork.setNetwork(e);return this}_setNetworkFromName(e){switch(e){case"mainnet":this.setNetwork(o.MAINNET),this.setMirrorNetwork(s.MAINNET),this.setLedgerId(r.MAINNET);break;case"testnet":this.setNetwork(o.TESTNET),this.setMirrorNetwork(s.TESTNET),this.setLedgerId(r.TESTNET);break;case"previewnet":this.setNetwork(o.PREVIEWNET),this.setMirrorNetwork(s.PREVIEWNET),this.setLedgerId(r.PREVIEWNET);break;case"local-node":this.setNetwork(o.LOCAL_NODE),this.setMirrorNetwork(s.LOCAL_NODE),this.setLedgerId(r.LOCAL_NODE);break;default:throw new Error(`unknown network: ${e}`)}return this}async updateNetwork(){if(this._isUpdatingNetwork)return this;this._isUpdatingNetwork=!0;try{const e=await(new n).setFileId(i.getAddressBookFileIdFor(this.shard,this.realm)).execute(this),t={};for(const r of e.nodeAddresses)for(const e of r.addresses)null!=r.accountId&&(t[e.toString()]=r.accountId);this.setNetwork(t)}catch(e){if(this._logger){const t=e instanceof Error?e.message:String(e);this._logger.trace(`failed to update client address book: ${t}`)}}finally{this._isUpdatingNetwork=!1}return this}_createNetworkChannel(){return e=>new t(e,this.grpcDeadline)}_createMirrorNetworkChannel(){return()=>{throw new Error("mirror support is not supported in browsers")}}}export{a as default};
|
|
2
2
|
//# sourceMappingURL=WebClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebClient.js","sources":["../../src/client/WebClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./Client.js\";\nimport WebChannel from \"../channel/WebChannel.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport { WebNetwork, WebMirrorNetwork } from \"../constants/ClientConstants.js\";\n\nimport AddressBookQuery from \"../network/AddressBookQueryWeb.js\";\nimport FileId from \"../file/FileId.js\";\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * Represents a client for interacting with the Hedera network over the web.\n * The `WebClient` class extends the base `Client` class and provides methods\n * for configuring and managing connections to the Hedera network, including\n * setting the network type (mainnet, testnet, previewnet) and handling\n * transactions and queries.\n * @augments {Client<WebChannel, *>}\n */\nexport default class WebClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n if (props != null) {\n if (typeof props.network === \"string\") {\n switch (props.network) {\n case \"mainnet\":\n this.setNetwork(WebNetwork.MAINNET);\n this.setMirrorNetwork(WebMirrorNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetwork(WebNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n this.setMirrorNetwork(WebMirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetwork(WebNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n this.setMirrorNetwork(WebMirrorNetwork.PREVIEWNET);\n break;\n\n case \"local-node\":\n this.setNetwork(WebNetwork.LOCAL_NODE);\n this.setLedgerId(LedgerId.LOCAL_NODE);\n this.setMirrorNetwork(WebMirrorNetwork.LOCAL_NODE);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${props.network}`,\n );\n }\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {WebClient}\n */\n static fromConfig(data) {\n return new WebClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {WebClient}\n */\n static forNetwork(network) {\n return new WebClient({ network });\n }\n\n /**\n * @param {string} network\n * @returns {WebClient}\n */\n static forName(network) {\n return new WebClient({ network });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @returns {WebClient}\n */\n static forMainnet() {\n return new WebClient({\n network: \"mainnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @returns {WebClient}\n */\n static forTestnet() {\n return new WebClient({\n network: \"testnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @returns {WebClient}\n */\n static forPreviewnet() {\n return new WebClient({\n network: \"previewnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for local-node access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {WebClient}\n */\n static forLocalNode(props = { scheduleNetworkUpdate: false }) {\n return new WebClient({\n network: \"local-node\",\n ...props,\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forMainnetAsync() {\n return new WebClient({\n network: \"mainnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forTestnetAsync() {\n return new WebClient({\n network: \"testnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forPreviewnetAsync() {\n return new WebClient({\n network: \"previewnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @returns {Promise<WebClient>}\n */\n static async forNameAsync(network) {\n const client = new WebClient({ network });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * Construct a client configured to use mirror nodes.\n * This will query the address book to get the network nodes.\n *\n * @param {string[] | string} mirrorNetwork\n * @returns {Promise<WebClient>}\n */\n static async forMirrorNetwork(mirrorNetwork) {\n const client = new WebClient({ mirrorNetwork: mirrorNetwork });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n switch (network) {\n case \"previewnet\":\n this._network.setNetwork(WebNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._network.setNetwork(WebNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._network.setNetwork(WebNetwork.MAINNET);\n break;\n case \"local-node\":\n this._network.setNetwork(WebNetwork.LOCAL_NODE);\n break;\n }\n } else {\n // Check for deprecation warnings for network endpoints with schemes\n for (const [key] of Object.entries(network)) {\n if (key.startsWith(\"https://\") || key.startsWith(\"http://\")) {\n console.warn(\n '[Deprecation Notice] Hiero SDK: Network endpoint \"' +\n key +\n '\" includes a URL scheme (e.g. \"https://\"). ' +\n \"This format was accepted in earlier versions but is now deprecated. \" +\n 'Please remove the scheme and use \"host:port\" instead (e.g. \"node00.swirldslabs.com:443\"). ' +\n \"Support for scheme-prefixed endpoints will be removed in a future major release.\",\n );\n }\n }\n this._network.setNetwork(network);\n }\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {Promise<this>}\n */\n async updateNetwork() {\n if (this._isUpdatingNetwork) {\n return this;\n }\n\n this._isUpdatingNetwork = true;\n\n try {\n const addressBook = await new AddressBookQuery()\n .setFileId(\n FileId.getAddressBookFileIdFor(this.shard, this.realm),\n )\n .execute(this);\n\n /** @type {Record<string, AccountId>} */\n const network = {};\n for (const nodeAddress of addressBook.nodeAddresses) {\n for (const endpoint of nodeAddress.addresses) {\n if (nodeAddress.accountId != null) {\n network[endpoint.toString()] = nodeAddress.accountId;\n }\n }\n }\n\n this.setNetwork(network);\n } catch (/** @type {unknown} */ error) {\n if (this._logger) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this._logger.trace(\n `failed to update client address book: ${errorMessage}`,\n );\n }\n } finally {\n this._isUpdatingNetwork = false;\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string) => WebChannel}\n */\n _createNetworkChannel() {\n return (address) => new WebChannel(address);\n }\n\n /**\n * @override\n * @returns {(address: string) => *}\n */\n _createMirrorNetworkChannel() {\n return () => {\n throw new Error(\"mirror support is not supported in browsers\");\n };\n }\n}\n"],"names":["WebClient","Client","constructor","props","super","network","this","setNetwork","WebNetwork","MAINNET","setMirrorNetwork","WebMirrorNetwork","setLedgerId","LedgerId","TESTNET","PREVIEWNET","LOCAL_NODE","Error","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","fromConfig","data","JSON","parse","forNetwork","forName","forMainnet","forTestnet","forPreviewnet","forLocalNode","scheduleNetworkUpdate","forMainnetAsync","updateNetwork","forTestnetAsync","forPreviewnetAsync","forNameAsync","client","forMirrorNetwork","mirrorNetwork","_network","key","Object","entries","startsWith","console","warn","_mirrorNetwork","_isUpdatingNetwork","addressBook","AddressBookQuery","setFileId","FileId","getAddressBookFileIdFor","execute","nodeAddress","nodeAddresses","endpoint","addresses","accountId","toString","error","_logger","errorMessage","message","String","trace","_createNetworkChannel","address","WebChannel","_createMirrorNetworkChannel"],"mappings":"sQAuBe,MAAMA,UAAkBC,EAInC,WAAAC,CAAYC,GAER,GADAC,MAAMD,GACO,MAATA,EACA,GAA6B,iBAAlBA,EAAME,QACb,OAAQF,EAAME,SACV,IAAK,UACDC,KAAKC,WAAWC,EAAWC,SAC3BH,KAAKI,iBAAiBC,EAAiBF,SACvCH,KAAKM,YAAYC,EAASJ,SAC1B,MAEJ,IAAK,UACDH,KAAKC,WAAWC,EAAWM,SAC3BR,KAAKM,YAAYC,EAASC,SAC1BR,KAAKI,iBAAiBC,EAAiBG,SACvC,MAEJ,IAAK,aACDR,KAAKC,WAAWC,EAAWO,YAC3BT,KAAKM,YAAYC,EAASE,YAC1BT,KAAKI,iBAAiBC,EAAiBI,YACvC,MAEJ,IAAK,aACDT,KAAKC,WAAWC,EAAWQ,YAC3BV,KAAKM,YAAYC,EAASG,YAC1BV,KAAKI,iBAAiBC,EAAiBK,YACvC,MAEJ,QACI,MAAM,IAAIC,MAEN,oBAAoBd,EAAME,gBAGnC,GAAqB,MAAjBF,EAAME,QAAiB,CAC9BJ,EAAOiB,4BAA4Bf,EAAME,SAEzC,MAAMc,MAAEA,EAAKC,MAAEA,GAAUnB,EAAOoB,mBAC5BlB,EAAME,SAKVC,KAAKgB,OAASH,EACdb,KAAKiB,OAASH,EAEdd,KAAKC,WAAWJ,EAAME,QACtC,CAEA,CAMI,iBAAOmB,CAAWC,GACd,OAAO,IAAIzB,EACS,iBAATyB,EAEGC,KAAKC,MAAMF,GAEfA,EAElB,CAeI,iBAAOG,CAAWvB,GACd,OAAO,IAAIL,EAAU,CAAEK,WAC/B,CAMI,cAAOwB,CAAQxB,GACX,OAAO,IAAIL,EAAU,CAAEK,WAC/B,CAOI,iBAAOyB,GACH,OAAO,IAAI9B,EAAU,CACjBK,QAAS,WAErB,CAOI,iBAAO0B,GACH,OAAO,IAAI/B,EAAU,CACjBK,QAAS,WAErB,CAOI,oBAAO2B,GACH,OAAO,IAAIhC,EAAU,CACjBK,QAAS,cAErB,CASI,mBAAO4B,CAAa9B,EAAQ,CAAE+B,uBAAuB,IACjD,OAAO,IAAIlC,EAAU,CACjBK,QAAS,gBACNF,GAEf,CAOI,4BAAagC,GACT,OAAO,IAAInC,EAAU,CACjBK,QAAS,YACV+B,eACX,CAOI,4BAAaC,GACT,OAAO,IAAIrC,EAAU,CACjBK,QAAS,YACV+B,eACX,CAOI,+BAAaE,GACT,OAAO,IAAItC,EAAU,CACjBK,QAAS,eACV+B,eACX,CASI,yBAAaG,CAAalC,GACtB,MAAMmC,EAAS,IAAIxC,EAAU,CAAEK,YAM/B,MAJgB,eAAZA,SACMmC,EAAOJ,gBAGVI,CACf,CASI,6BAAaC,CAAiBC,GAC1B,MAAMF,EAAS,IAAIxC,EAAU,CAAE0C,cAAeA,IAI9C,aAFMF,EAAOJ,gBAENI,CACf,CAMI,UAAAjC,CAAWF,GACP,GAAuB,iBAAZA,EACP,OAAQA,GACJ,IAAK,aACDC,KAAKqC,SAASpC,WAAWC,EAAWO,YACpC,MACJ,IAAK,UACDT,KAAKqC,SAASpC,WAAWC,EAAWM,SACpC,MACJ,IAAK,UACDR,KAAKqC,SAASpC,WAAWC,EAAWC,SACpC,MACJ,IAAK,aACDH,KAAKqC,SAASpC,WAAWC,EAAWQ,gBAGzC,CAEH,IAAK,MAAO4B,KAAQC,OAAOC,QAAQzC,IAC3BuC,EAAIG,WAAW,aAAeH,EAAIG,WAAW,aAC7CC,QAAQC,KACJ,qDACIL,EADJ,6RASZtC,KAAKqC,SAASpC,WAAWF,EACrC,CACA,CAMI,gBAAAK,CAAiBgC,GACb,GAA6B,iBAAlBA,EACP,OAAQA,GACJ,IAAK,aACDpC,KAAK4C,eAAe3C,WAAWI,EAAiBK,YAChD,MACJ,IAAK,aACDV,KAAK4C,eAAe3C,WAAWI,EAAiBI,YAChD,MACJ,IAAK,UACDT,KAAK4C,eAAe3C,WAAWI,EAAiBG,SAChD,MACJ,IAAK,UACDR,KAAK4C,eAAe3C,WAAWI,EAAiBF,SAChD,MACJ,QACIH,KAAK4C,eAAe3C,WAAW,CAACmC,SAGxCpC,KAAK4C,eAAe3C,WAAWmC,GAGnC,OAAOpC,IACf,CAMI,mBAAM8B,GACF,GAAI9B,KAAK6C,mBACL,OAAO7C,KAGXA,KAAK6C,oBAAqB,EAE1B,IACI,MAAMC,QAAoB,IAAIC,GACzBC,UACGC,EAAOC,wBAAwBlD,KAAKa,MAAOb,KAAKc,QAEnDqC,QAAQnD,MAGPD,EAAU,CAAE,EAClB,IAAK,MAAMqD,KAAeN,EAAYO,cAClC,IAAK,MAAMC,KAAYF,EAAYG,UACF,MAAzBH,EAAYI,YACZzD,EAAQuD,EAASG,YAAcL,EAAYI,WAKvDxD,KAAKC,WAAWF,EACnB,CAAC,MAA8B2D,GAC5B,GAAI1D,KAAK2D,QAAS,CACd,MAAMC,EACFF,aAAiB/C,MAAQ+C,EAAMG,QAAUC,OAAOJ,GACpD1D,KAAK2D,QAAQI,MACT,yCAAyCH,IAE7D,CACA,CAAkB,QACN5D,KAAK6C,oBAAqB,CACtC,CAEQ,OAAO7C,IACf,CAMI,qBAAAgE,GACI,OAAQC,GAAY,IAAIC,EAAWD,EAC3C,CAMI,2BAAAE,GACI,MAAO,KACH,MAAM,IAAIxD,MAAM,+CAE5B"}
|
|
1
|
+
{"version":3,"file":"WebClient.js","sources":["../../src/client/WebClient.js"],"sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\nimport Client from \"./Client.js\";\nimport WebChannel from \"../channel/WebChannel.js\";\nimport LedgerId from \"../LedgerId.js\";\nimport { WebNetwork, WebMirrorNetwork } from \"../constants/ClientConstants.js\";\n\nimport AddressBookQuery from \"../network/AddressBookQueryWeb.js\";\nimport FileId from \"../file/FileId.js\";\n\n/**\n * @typedef {import(\"./Client.js\").ClientConfiguration} ClientConfiguration\n * @typedef {import(\"../account/AccountId.js\").default} AccountId\n */\n\n/**\n * Represents a client for interacting with the Hedera network over the web.\n * The `WebClient` class extends the base `Client` class and provides methods\n * for configuring and managing connections to the Hedera network, including\n * setting the network type (mainnet, testnet, previewnet) and handling\n * transactions and queries.\n * @augments {Client<WebChannel, *>}\n */\nexport default class WebClient extends Client {\n /**\n * @param {ClientConfiguration} [props]\n */\n constructor(props) {\n super(props);\n\n if (props != null) {\n if (typeof props.network === \"string\") {\n this._setNetworkFromName(props.network);\n } else if (props.network != null) {\n Client._validateNetworkConsistency(props.network);\n\n const { shard, realm } = Client._extractShardRealm(\n props.network,\n );\n\n // Shard and realm are inferred from the network, so we need to set them here\n // to ensure that the client is properly configured.\n this._shard = shard;\n this._realm = realm;\n\n this.setNetwork(props.network);\n }\n\n if (typeof props.mirrorNetwork === \"string\") {\n switch (props.mirrorNetwork) {\n case \"mainnet\":\n this.setMirrorNetwork(WebMirrorNetwork.MAINNET);\n break;\n\n case \"testnet\":\n this.setMirrorNetwork(WebMirrorNetwork.TESTNET);\n break;\n\n case \"previewnet\":\n this.setMirrorNetwork(WebMirrorNetwork.PREVIEWNET);\n break;\n\n default:\n this.setMirrorNetwork([props.mirrorNetwork]);\n break;\n }\n } else if (props.mirrorNetwork != null) {\n this.setMirrorNetwork(props.mirrorNetwork);\n }\n }\n }\n\n /**\n * @param {string | ClientConfiguration} data\n * @returns {WebClient}\n */\n static fromConfig(data) {\n return new WebClient(\n typeof data === \"string\"\n ? /** @type {ClientConfiguration | undefined} */ (\n JSON.parse(data)\n )\n : data,\n );\n }\n\n /**\n * Construct a client for a specific network.\n *\n * It is the responsibility of the caller to ensure that all nodes in the map are part of the\n * same Hedera network. Failure to do so will result in undefined behavior.\n *\n * The client will load balance all requests to Hedera using a simple round-robin scheme to\n * chose nodes to send transactions to. For one transaction, at most 1/3 of the nodes will be\n * tried.\n *\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {WebClient}\n */\n static forNetwork(network) {\n return new WebClient({ network });\n }\n\n /**\n * @param {string} network\n * @returns {WebClient}\n */\n static forName(network) {\n return new WebClient({ network });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access.\n *\n * @returns {WebClient}\n */\n static forMainnet() {\n return new WebClient({\n network: \"mainnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access.\n *\n * @returns {WebClient}\n */\n static forTestnet() {\n return new WebClient({\n network: \"testnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access.\n *\n * @returns {WebClient}\n */\n static forPreviewnet() {\n return new WebClient({\n network: \"previewnet\",\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for local-node access.\n *\n * @param {object} [props]\n * @param {boolean} [props.scheduleNetworkUpdate]\n * @returns {WebClient}\n */\n static forLocalNode(props = { scheduleNetworkUpdate: false }) {\n return new WebClient({\n network: \"local-node\",\n ...props,\n });\n }\n\n /**\n * Construct a Hedera client pre-configured for Mainnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forMainnetAsync() {\n return new WebClient({\n network: \"mainnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Testnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forTestnetAsync() {\n return new WebClient({\n network: \"testnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a Hedera client pre-configured for Previewnet access with network update.\n *\n * @returns {Promise<WebClient>}\n */\n static async forPreviewnetAsync() {\n return new WebClient({\n network: \"previewnet\",\n }).updateNetwork();\n }\n\n /**\n * Construct a client for a specific network with optional network update.\n * Updates network only if the network is not \"local-node\".\n *\n * @param {string} network\n * @returns {Promise<WebClient>}\n */\n static async forNameAsync(network) {\n const client = new WebClient({ network });\n\n if (network !== \"local-node\") {\n await client.updateNetwork();\n }\n\n return client;\n }\n\n /**\n * Construct a client configured to use mirror nodes.\n * This will query the address book to get the network nodes.\n *\n * @param {string[] | string} mirrorNetwork\n * @returns {Promise<WebClient>}\n */\n static async forMirrorNetwork(mirrorNetwork) {\n const client = new WebClient({ mirrorNetwork: mirrorNetwork });\n\n await client.updateNetwork();\n\n return client;\n }\n\n /**\n * @param {{[key: string]: (string | AccountId)} | string} network\n * @returns {void}\n */\n setNetwork(network) {\n if (typeof network === \"string\") {\n switch (network) {\n case \"previewnet\":\n this._network.setNetwork(WebNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._network.setNetwork(WebNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._network.setNetwork(WebNetwork.MAINNET);\n break;\n case \"local-node\":\n this._network.setNetwork(WebNetwork.LOCAL_NODE);\n break;\n }\n } else {\n // Check for deprecation warnings for network endpoints with schemes\n for (const [key] of Object.entries(network)) {\n if (key.startsWith(\"https://\") || key.startsWith(\"http://\")) {\n console.warn(\n '[Deprecation Notice] Hiero SDK: Network endpoint \"' +\n key +\n '\" includes a URL scheme (e.g. \"https://\"). ' +\n \"This format was accepted in earlier versions but is now deprecated. \" +\n 'Please remove the scheme and use \"host:port\" instead (e.g. \"node00.swirldslabs.com:443\"). ' +\n \"Support for scheme-prefixed endpoints will be removed in a future major release.\",\n );\n }\n }\n this._network.setNetwork(network);\n }\n }\n\n /**\n * @param {string[] | string} mirrorNetwork\n * @returns {this}\n */\n setMirrorNetwork(mirrorNetwork) {\n if (typeof mirrorNetwork === \"string\") {\n switch (mirrorNetwork) {\n case \"local-node\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.LOCAL_NODE);\n break;\n case \"previewnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.PREVIEWNET);\n break;\n case \"testnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.TESTNET);\n break;\n case \"mainnet\":\n this._mirrorNetwork.setNetwork(WebMirrorNetwork.MAINNET);\n break;\n default:\n this._mirrorNetwork.setNetwork([mirrorNetwork]);\n }\n } else {\n this._mirrorNetwork.setNetwork(mirrorNetwork);\n }\n\n return this;\n }\n\n /**\n * @private\n * @param {string} name\n * @returns {this}\n */\n _setNetworkFromName(name) {\n switch (name) {\n case \"mainnet\":\n this.setNetwork(WebNetwork.MAINNET);\n this.setMirrorNetwork(WebMirrorNetwork.MAINNET);\n this.setLedgerId(LedgerId.MAINNET);\n break;\n\n case \"testnet\":\n this.setNetwork(WebNetwork.TESTNET);\n this.setMirrorNetwork(WebMirrorNetwork.TESTNET);\n this.setLedgerId(LedgerId.TESTNET);\n break;\n\n case \"previewnet\":\n this.setNetwork(WebNetwork.PREVIEWNET);\n this.setMirrorNetwork(WebMirrorNetwork.PREVIEWNET);\n this.setLedgerId(LedgerId.PREVIEWNET);\n break;\n\n case \"local-node\":\n this.setNetwork(WebNetwork.LOCAL_NODE);\n this.setMirrorNetwork(WebMirrorNetwork.LOCAL_NODE);\n this.setLedgerId(LedgerId.LOCAL_NODE);\n break;\n\n default:\n throw new Error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `unknown network: ${name}`,\n );\n }\n return this;\n }\n\n /**\n * @override\n * @returns {Promise<this>}\n */\n async updateNetwork() {\n if (this._isUpdatingNetwork) {\n return this;\n }\n\n this._isUpdatingNetwork = true;\n\n try {\n const addressBook = await new AddressBookQuery()\n .setFileId(\n FileId.getAddressBookFileIdFor(this.shard, this.realm),\n )\n .execute(this);\n\n /** @type {Record<string, AccountId>} */\n const network = {};\n for (const nodeAddress of addressBook.nodeAddresses) {\n for (const endpoint of nodeAddress.addresses) {\n if (nodeAddress.accountId != null) {\n network[endpoint.toString()] = nodeAddress.accountId;\n }\n }\n }\n\n this.setNetwork(network);\n } catch (/** @type {unknown} */ error) {\n if (this._logger) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this._logger.trace(\n `failed to update client address book: ${errorMessage}`,\n );\n }\n } finally {\n this._isUpdatingNetwork = false;\n }\n\n return this;\n }\n\n /**\n * @override\n * @returns {(address: string) => WebChannel}\n */\n _createNetworkChannel() {\n return (address) => new WebChannel(address, this.grpcDeadline);\n }\n\n /**\n * @override\n * @returns {(address: string) => *}\n */\n _createMirrorNetworkChannel() {\n return () => {\n throw new Error(\"mirror support is not supported in browsers\");\n };\n }\n}\n"],"names":["WebClient","Client","constructor","props","super","network","this","_setNetworkFromName","_validateNetworkConsistency","shard","realm","_extractShardRealm","_shard","_realm","setNetwork","mirrorNetwork","setMirrorNetwork","WebMirrorNetwork","MAINNET","TESTNET","PREVIEWNET","fromConfig","data","JSON","parse","forNetwork","forName","forMainnet","forTestnet","forPreviewnet","forLocalNode","scheduleNetworkUpdate","forMainnetAsync","updateNetwork","forTestnetAsync","forPreviewnetAsync","forNameAsync","client","forMirrorNetwork","_network","WebNetwork","LOCAL_NODE","key","Object","entries","startsWith","console","warn","_mirrorNetwork","name","setLedgerId","LedgerId","Error","_isUpdatingNetwork","addressBook","AddressBookQuery","setFileId","FileId","getAddressBookFileIdFor","execute","nodeAddress","nodeAddresses","endpoint","addresses","accountId","toString","error","_logger","errorMessage","message","String","trace","_createNetworkChannel","address","WebChannel","grpcDeadline","_createMirrorNetworkChannel"],"mappings":"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"}
|