UNPKG

@substrate/api-sidecar

Version:

REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.

175 lines 8.87 kB
"use strict"; // Copyright 2017-2025 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. Object.defineProperty(exports, "__esModule", { value: true }); exports.getControllers = exports.getControllersByPallets = exports.assetHubToBabe = exports.assetHubSpecNames = exports.specToControllerMap = void 0; exports.getControllersForSpec = getControllersForSpec; const util_1 = require("@polkadot/util"); const apiRegistry_1 = require("../apiRegistry"); const controllers_1 = require("../controllers"); const acalaControllers_1 = require("./acalaControllers"); const assetHubKusamaControllers_1 = require("./assetHubKusamaControllers"); const assetHubNextWestendControllers_1 = require("./assetHubNextWestendControllers"); const assetHubPolkadotControllers_1 = require("./assetHubPolkadotControllers"); const assetHubWestendControllers_1 = require("./assetHubWestendControllers"); const astarControllers_1 = require("./astarControllers"); const bifrostControllers_1 = require("./bifrostControllers"); const bifrostPolkadotControllers_1 = require("./bifrostPolkadotControllers"); const calamariControllers_1 = require("./calamariControllers"); const coretimeControllers_1 = require("./coretimeControllers"); const crustControllers_1 = require("./crustControllers"); const defaultControllers_1 = require("./defaultControllers"); const dockMainnetControllers_1 = require("./dockMainnetControllers"); const dockPoSMainnetControllers_1 = require("./dockPoSMainnetControllers"); const dockPoSTestnetControllers_1 = require("./dockPoSTestnetControllers"); const heikoControllers_1 = require("./heikoControllers"); const karuraControllers_1 = require("./karuraControllers"); const kiltControllers_1 = require("./kiltControllers"); const kulupuControllers_1 = require("./kulupuControllers"); const kusamaControllers_1 = require("./kusamaControllers"); const mandalaControllers_1 = require("./mandalaControllers"); const mantaControllers_1 = require("./mantaControllers"); const parallelControllers_1 = require("./parallelControllers"); const polkadotControllers_1 = require("./polkadotControllers"); const polymeshControllers_1 = require("./polymeshControllers"); const shidenControllers_1 = require("./shidenControllers"); const soraControllers_1 = require("./soraControllers"); const westendControllers_1 = require("./westendControllers"); exports.specToControllerMap = { westend: westendControllers_1.westendControllers, polkadot: polkadotControllers_1.polkadotControllers, polymesh_mainnet: polymeshControllers_1.polymeshControllers, polymesh_testnet: polymeshControllers_1.polymeshControllers, kusama: kusamaControllers_1.kusamaControllers, kulupu: kulupuControllers_1.kulupuControllers, kilt: kiltControllers_1.kiltControllers, mandala: mandalaControllers_1.mandalaControllers, 'dock-main-runtime': dockMainnetControllers_1.dockMainnetControllers, 'dock-pos-main-runtime': dockPoSMainnetControllers_1.dockPoSMainnetControllers, 'dock-pos-test-runtime': dockPoSTestnetControllers_1.dockTestnetControllers, 'asset-hub-kusama': assetHubKusamaControllers_1.assetHubKusamaControllers, 'asset-hub-polkadot': assetHubPolkadotControllers_1.assetHubPolkadotControllers, statemine: assetHubKusamaControllers_1.assetHubKusamaControllers, statemint: assetHubPolkadotControllers_1.assetHubPolkadotControllers, westmine: assetHubKusamaControllers_1.assetHubKusamaControllers, 'asset-hub-westend': assetHubWestendControllers_1.assetHubWestendControllers, 'asset-hub-next': assetHubNextWestendControllers_1.assetHubNextWestendControllers, westmint: assetHubWestendControllers_1.assetHubWestendControllers, shiden: shidenControllers_1.shidenControllers, astar: astarControllers_1.astarControllers, sora: soraControllers_1.soraControllers, calamari: calamariControllers_1.calamariControllers, karura: karuraControllers_1.karuraControllers, acala: acalaControllers_1.acalaControllers, manta: mantaControllers_1.mantaControllers, crust: crustControllers_1.crustControllers, bifrost: bifrostControllers_1.bifrostControllers, bifrost_polkadot: bifrostPolkadotControllers_1.bifrostPolkadotControllers, heiko: heikoControllers_1.heikoControllers, parallel: parallelControllers_1.parallelControllers, 'coretime-westend': coretimeControllers_1.coretimeControllers, 'coretime-polkadot': coretimeControllers_1.coretimeControllers, 'coretime-kusama': coretimeControllers_1.coretimeControllers, }; exports.assetHubSpecNames = new Set(['statemine', 'statemint', 'westmint', 'asset-hub-paseo']); exports.assetHubToBabe = { statemint: { epochDuration: new util_1.BN(2400), genesisSlot: new util_1.BN(265084563), slotDurationMs: new util_1.BN(6000), }, statemine: { epochDuration: new util_1.BN(600), genesisSlot: new util_1.BN(262493679), slotDurationMs: new util_1.BN(6000), }, westmint: { epochDuration: new util_1.BN(600), genesisSlot: new util_1.BN(264379767), slotDurationMs: new util_1.BN(6000), }, 'asset-hub-paseo': { epochDuration: new util_1.BN(600), genesisSlot: new util_1.BN(284730328), slotDurationMs: new util_1.BN(6000), }, }; /** * Return an array of instantiated controller instances based off of a `specName`. * * @param api ApiPromise to inject into controllers * @param specName spacName of the chain to get controllers and options for */ function getControllersForSpec(specName, withRC) { if (exports.specToControllerMap[specName]) { return getControllersFromConfig(specName, exports.specToControllerMap[specName], withRC); } // If we don't have the specName in the specToControllerMap we use the default // contoller config return getControllersFromConfig(specName, defaultControllers_1.defaultControllers, false); } /** * Return an array of instantiated controller instances based off of a * `ControllerConfig`. * * @param api ApiPromise to inject into controllers * @param config controller mount configuration object */ function getControllersFromConfig(specName, config, withRc) { const controllersToInclude = config.controllers; return controllersToInclude.reduce((acc, controller) => { if (controller.toString().toLowerCase().includes('rc') && !withRc) { return acc; } else { acc.push(new controllers_1.controllers[controller](specName, config.options)); } return acc; }, []); } /** * Return an array of instantiated controller instances based off of a `specName`. * @param pallets pallets available to define controllers * @param api ApiPromise to inject into controllers * @param specName specName of chain to get options */ const getControllersByPallets = (specName, pallets) => { var _a; const controllersSet = []; const config = ((_a = exports.specToControllerMap === null || exports.specToControllerMap === void 0 ? void 0 : exports.specToControllerMap[specName]) === null || _a === void 0 ? void 0 : _a.options) || (defaultControllers_1.defaultControllers === null || defaultControllers_1.defaultControllers === void 0 ? void 0 : defaultControllers_1.defaultControllers.options); Object.values(controllers_1.controllers).forEach((controller) => { if (controller.canInjectByPallets(pallets)) { controllersSet.push(new controller(specName, config)); } }); return controllersSet; }; exports.getControllersByPallets = getControllersByPallets; const getControllers = (config, specName, pallets) => { if (!specName || !specName.length) { throw new Error('specName is required'); } if (config.EXPRESS.INJECTED_CONTROLLERS) { return (0, exports.getControllersByPallets)(specName, pallets); } else { // filter by rc situtation const hasRelayConnection = !!apiRegistry_1.ApiPromiseRegistry.getApiByType('relay')[0]; return getControllersForSpec(specName, hasRelayConnection && exports.assetHubSpecNames.has(specName)); } }; exports.getControllers = getControllers; //# sourceMappingURL=index.js.map