provider-quicknode.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. "use strict";
  2. /**
  3. * [[link-quicknode]] provides a third-party service for connecting to
  4. * various blockchains over JSON-RPC.
  5. *
  6. * **Supported Networks**
  7. *
  8. * - Ethereum Mainnet (``mainnet``)
  9. * - Goerli Testnet (``goerli``)
  10. * - Sepolia Testnet (``sepolia``)
  11. * - Holesky Testnet (``holesky``)
  12. * - Arbitrum (``arbitrum``)
  13. * - Arbitrum Goerli Testnet (``arbitrum-goerli``)
  14. * - Arbitrum Sepolia Testnet (``arbitrum-sepolia``)
  15. * - Base Mainnet (``base``);
  16. * - Base Goerli Testnet (``base-goerli``);
  17. * - Base Sepolia Testnet (``base-sepolia``);
  18. * - BNB Smart Chain Mainnet (``bnb``)
  19. * - BNB Smart Chain Testnet (``bnbt``)
  20. * - Optimism (``optimism``)
  21. * - Optimism Goerli Testnet (``optimism-goerli``)
  22. * - Optimism Sepolia Testnet (``optimism-sepolia``)
  23. * - Polygon (``matic``)
  24. * - Polygon Mumbai Testnet (``matic-mumbai``)
  25. *
  26. * @_subsection: api/providers/thirdparty:QuickNode [providers-quicknode]
  27. */
  28. Object.defineProperty(exports, "__esModule", { value: true });
  29. exports.QuickNodeProvider = void 0;
  30. const index_js_1 = require("../utils/index.js");
  31. const community_js_1 = require("./community.js");
  32. const network_js_1 = require("./network.js");
  33. const provider_jsonrpc_js_1 = require("./provider-jsonrpc.js");
  34. const defaultToken = "919b412a057b5e9c9b6dce193c5a60242d6efadb";
  35. function getHost(name) {
  36. switch (name) {
  37. case "mainnet":
  38. return "ethers.quiknode.pro";
  39. case "goerli":
  40. return "ethers.ethereum-goerli.quiknode.pro";
  41. case "sepolia":
  42. return "ethers.ethereum-sepolia.quiknode.pro";
  43. case "holesky":
  44. return "ethers.ethereum-holesky.quiknode.pro";
  45. case "arbitrum":
  46. return "ethers.arbitrum-mainnet.quiknode.pro";
  47. case "arbitrum-goerli":
  48. return "ethers.arbitrum-goerli.quiknode.pro";
  49. case "arbitrum-sepolia":
  50. return "ethers.arbitrum-sepolia.quiknode.pro";
  51. case "base":
  52. return "ethers.base-mainnet.quiknode.pro";
  53. case "base-goerli":
  54. return "ethers.base-goerli.quiknode.pro";
  55. case "base-spolia":
  56. return "ethers.base-sepolia.quiknode.pro";
  57. case "bnb":
  58. return "ethers.bsc.quiknode.pro";
  59. case "bnbt":
  60. return "ethers.bsc-testnet.quiknode.pro";
  61. case "matic":
  62. return "ethers.matic.quiknode.pro";
  63. case "matic-mumbai":
  64. return "ethers.matic-testnet.quiknode.pro";
  65. case "optimism":
  66. return "ethers.optimism.quiknode.pro";
  67. case "optimism-goerli":
  68. return "ethers.optimism-goerli.quiknode.pro";
  69. case "optimism-sepolia":
  70. return "ethers.optimism-sepolia.quiknode.pro";
  71. case "xdai":
  72. return "ethers.xdai.quiknode.pro";
  73. }
  74. (0, index_js_1.assertArgument)(false, "unsupported network", "network", name);
  75. }
  76. /*
  77. @TODO:
  78. These networks are not currently present in the Network
  79. default included networks. Research them and ensure they
  80. are EVM compatible and work with ethers
  81. http://ethers.matic-amoy.quiknode.pro
  82. http://ethers.avalanche-mainnet.quiknode.pro
  83. http://ethers.avalanche-testnet.quiknode.pro
  84. http://ethers.blast-sepolia.quiknode.pro
  85. http://ethers.celo-mainnet.quiknode.pro
  86. http://ethers.fantom.quiknode.pro
  87. http://ethers.imx-demo.quiknode.pro
  88. http://ethers.imx-mainnet.quiknode.pro
  89. http://ethers.imx-testnet.quiknode.pro
  90. http://ethers.near-mainnet.quiknode.pro
  91. http://ethers.near-testnet.quiknode.pro
  92. http://ethers.nova-mainnet.quiknode.pro
  93. http://ethers.scroll-mainnet.quiknode.pro
  94. http://ethers.scroll-testnet.quiknode.pro
  95. http://ethers.tron-mainnet.quiknode.pro
  96. http://ethers.zkevm-mainnet.quiknode.pro
  97. http://ethers.zkevm-testnet.quiknode.pro
  98. http://ethers.zksync-mainnet.quiknode.pro
  99. http://ethers.zksync-testnet.quiknode.pro
  100. */
  101. /**
  102. * The **QuickNodeProvider** connects to the [[link-quicknode]]
  103. * JSON-RPC end-points.
  104. *
  105. * By default, a highly-throttled API token is used, which is
  106. * appropriate for quick prototypes and simple scripts. To
  107. * gain access to an increased rate-limit, it is highly
  108. * recommended to [sign up here](link-quicknode).
  109. */
  110. class QuickNodeProvider extends provider_jsonrpc_js_1.JsonRpcProvider {
  111. /**
  112. * The API token.
  113. */
  114. token;
  115. /**
  116. * Creates a new **QuickNodeProvider**.
  117. */
  118. constructor(_network, token) {
  119. if (_network == null) {
  120. _network = "mainnet";
  121. }
  122. const network = network_js_1.Network.from(_network);
  123. if (token == null) {
  124. token = defaultToken;
  125. }
  126. const request = QuickNodeProvider.getRequest(network, token);
  127. super(request, network, { staticNetwork: network });
  128. (0, index_js_1.defineProperties)(this, { token });
  129. }
  130. _getProvider(chainId) {
  131. try {
  132. return new QuickNodeProvider(chainId, this.token);
  133. }
  134. catch (error) { }
  135. return super._getProvider(chainId);
  136. }
  137. isCommunityResource() {
  138. return (this.token === defaultToken);
  139. }
  140. /**
  141. * Returns a new request prepared for %%network%% and the
  142. * %%token%%.
  143. */
  144. static getRequest(network, token) {
  145. if (token == null) {
  146. token = defaultToken;
  147. }
  148. const request = new index_js_1.FetchRequest(`https:/\/${getHost(network.name)}/${token}`);
  149. request.allowGzip = true;
  150. //if (projectSecret) { request.setCredentials("", projectSecret); }
  151. if (token === defaultToken) {
  152. request.retryFunc = async (request, response, attempt) => {
  153. (0, community_js_1.showThrottleMessage)("QuickNodeProvider");
  154. return true;
  155. };
  156. }
  157. return request;
  158. }
  159. }
  160. exports.QuickNodeProvider = QuickNodeProvider;
  161. //# sourceMappingURL=provider-quicknode.js.map