| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.ChainstackProvider = void 0;/** *  [[link-chainstack]] provides a third-party service for connecting to *  various blockchains over JSON-RPC. * *  **Supported Networks** * *  - Ethereum Mainnet (``mainnet``) *  - Arbitrum (``arbitrum``) *  - BNB Smart Chain Mainnet (``bnb``) *  - Polygon (``matic``) * *  @_subsection: api/providers/thirdparty:Chainstack  [providers-chainstack] */const index_js_1 = require("../utils/index.js");const community_js_1 = require("./community.js");const network_js_1 = require("./network.js");const provider_jsonrpc_js_1 = require("./provider-jsonrpc.js");function getApiKey(name) {    switch (name) {        case "mainnet": return "39f1d67cedf8b7831010a665328c9197";        case "arbitrum": return "0550c209db33c3abf4cc927e1e18cea1";        case "bnb": return "98b5a77e531614387366f6fc5da097f8";        case "matic": return "cd9d4d70377471aa7c142ec4a4205249";    }    (0, index_js_1.assertArgument)(false, "unsupported network", "network", name);}function getHost(name) {    switch (name) {        case "mainnet":            return "ethereum-mainnet.core.chainstack.com";        case "arbitrum":            return "arbitrum-mainnet.core.chainstack.com";        case "bnb":            return "bsc-mainnet.core.chainstack.com";        case "matic":            return "polygon-mainnet.core.chainstack.com";    }    (0, index_js_1.assertArgument)(false, "unsupported network", "network", name);}/** *  The **ChainstackProvider** connects to the [[link-chainstack]] *  JSON-RPC end-points. * *  By default, a highly-throttled API key is used, which is *  appropriate for quick prototypes and simple scripts. To *  gain access to an increased rate-limit, it is highly *  recommended to [sign up here](link-chainstack). */class ChainstackProvider extends provider_jsonrpc_js_1.JsonRpcProvider {    /**     *  The API key for the Chainstack connection.     */    apiKey;    /**     *  Creates a new **ChainstackProvider**.     */    constructor(_network, apiKey) {        if (_network == null) {            _network = "mainnet";        }        const network = network_js_1.Network.from(_network);        if (apiKey == null) {            apiKey = getApiKey(network.name);        }        const request = ChainstackProvider.getRequest(network, apiKey);        super(request, network, { staticNetwork: network });        (0, index_js_1.defineProperties)(this, { apiKey });    }    _getProvider(chainId) {        try {            return new ChainstackProvider(chainId, this.apiKey);        }        catch (error) { }        return super._getProvider(chainId);    }    isCommunityResource() {        return (this.apiKey === getApiKey(this._network.name));    }    /**     *  Returns a prepared request for connecting to %%network%%     *  with %%apiKey%% and %%projectSecret%%.     */    static getRequest(network, apiKey) {        if (apiKey == null) {            apiKey = getApiKey(network.name);        }        const request = new index_js_1.FetchRequest(`https:/\/${getHost(network.name)}/${apiKey}`);        request.allowGzip = true;        if (apiKey === getApiKey(network.name)) {            request.retryFunc = async (request, response, attempt) => {                (0, community_js_1.showThrottleMessage)("ChainstackProvider");                return true;            };        }        return request;    }}exports.ChainstackProvider = ChainstackProvider;//# sourceMappingURL=provider-chainstack.js.map
 |