UNPKG

@ton-actions/tondev-contest

Version:

TON Dev Environment

171 lines 6.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NetworkRegistry = exports.getGiverSummary = void 0; const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); const core_1 = require("../../core"); const giver_1 = require("./giver"); const core_2 = require("@tonclient/core"); const known_contracts_1 = require("../../core/known-contracts"); function networkHome() { return path_1.default.resolve(core_1.tondevHome(), "network"); } function registryPath() { return path_1.default.resolve(networkHome(), "registry.json"); } function getGiverSummary(giver) { if (!giver) { return ""; } const { signer, name, address, } = giver; return `${address}\n${name}${signer ? ` signed by ${signer}` : ""}`; } exports.getGiverSummary = getGiverSummary; class NetworkRegistry { constructor() { var _a; this.items = []; let loaded = false; if (fs_extra_1.default.pathExistsSync(registryPath())) { try { const data = JSON.parse(fs_extra_1.default.readFileSync(registryPath(), "utf8")); this.items = (_a = data.items) !== null && _a !== void 0 ? _a : []; if (data.default) { this.default = data.default; } loaded = true; } catch { } } if (!loaded) { this.items = [{ name: "se", endpoints: ["http://localhost"], giver: { name: known_contracts_1.KnownContracts.GiverV2.name, address: "0:b5e9240fc2d2f1ff8cbb1d1dee7fb7cae155e5f6320e585fcc685698994a19a5", signer: "", }, }, { name: "dev", endpoints: [ "net.ton.dev", "net1.ton.dev", "net5.ton.dev", ], }, { name: "main", endpoints: ["main.ton.dev", "main2.ton.dev", "main3.ton.dev", "main4.ton.dev"], }]; this.default = "dev"; } } save() { if (!fs_extra_1.default.pathExistsSync(networkHome())) { fs_extra_1.default.mkdirSync(networkHome(), { recursive: true }); } fs_extra_1.default.writeFileSync(registryPath(), JSON.stringify({ items: this.items, default: this.default, })); } add(name, description, endpoints, overwrite) { name = name.trim(); const existingIndex = this.items.findIndex(x => x.name.toLowerCase() === name.toLowerCase()); if (existingIndex >= 0 && !overwrite) { throw new Error(`Net "${name}" already exists.`); } const network = { name, description, endpoints, }; if (existingIndex >= 0) { this.items[existingIndex] = network; } else { this.items.push(network); } if (!this.default) { this.default = name; } this.save(); } get(name) { var _a; let findName = name.toLowerCase().trim(); if (findName === "") { findName = (_a = this.default) !== null && _a !== void 0 ? _a : ""; } if (findName === "") { if (this.items.length === 0) { throw new Error("There are no networks defined. " + "Use \"tondev network add\" command to register a network."); } else { throw new Error("There is no default network. " + "Use \"tondev network default\" command to set the default network. " + "Or explicitly specify the network with \"--network\" option."); } } const network = this.items.find(x => x.name.toLowerCase() === findName); if (network) { return network; } throw new Error(`Network not found: ${name}`); } delete(name) { const net = this.get(name); this.items.splice(this.items.findIndex(x => x.name === net.name), 1); if (this.default === net.name) { delete this.default; } this.save(); } setDefault(name) { this.default = this.get(name).name; this.save(); } async setGiver(name, address, signer, value) { const network = this.get(name); const client = new core_2.TonClient({ network: { endpoints: network.endpoints } }); try { const giver = await giver_1.NetworkGiver.get(client, { name: "", address, signer, value, }); network.giver = { name: giver.contract.name, address: giver.address, signer, value, }; this.save(); } finally { await client.close(); } } static getEndpointsSummary(network) { const maxEndpoints = 3; const endpoints = network.endpoints.length <= maxEndpoints ? network.endpoints : [...network.endpoints.slice(0, maxEndpoints), "..."]; return endpoints.join(", "); } getNetworkSummary(network) { var _a; return { name: `${network.name}${network.name === this.default ? " (Default)" : ""}`, endpoints: NetworkRegistry.getEndpointsSummary(network), giver: getGiverSummary(network.giver), description: (_a = network.description) !== null && _a !== void 0 ? _a : "", }; } } exports.NetworkRegistry = NetworkRegistry; //# sourceMappingURL=registry.js.map