UNPKG

@newos/cli

Version:
98 lines 4.39 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.deployRegular = exports.action = exports.preAction = void 0; const upgrades_1 = require("@newos/upgrades"); const Session_1 = __importDefault(require("../../models/network/Session")); const Compiler_1 = require("../../models/compiler/Compiler"); const naming_1 = require("../../utils/naming"); const NetworkController_1 = __importDefault(require("../../models/network/NetworkController")); const interfaces_1 = require("../../scripts/interfaces"); const stdout_1 = __importDefault(require("../../utils/stdout")); const input_1 = require("../../utils/input"); const upgrades_2 = require("@newos/upgrades"); const link_1 = __importDefault(require("../link")); const add_1 = __importDefault(require("../add")); const push_1 = __importDefault(require("../push")); function isProxyKind(kind) { switch (kind) { case 'regular': return false; case 'upgradeable': case 'minimal': return true; default: throw new Error(`Unknown proxy kind: ${kind}`); } } async function preAction(params) { if (!params.skipCompile) { await Compiler_1.compile(); } } exports.preAction = preAction; async function action(params) { if (params.network === undefined) { const { network: lastNetwork, expired } = Session_1.default.getNetwork(); if (!expired) { params.network = lastNetwork; } } const address = isProxyKind(params.kind) ? await deployProxy(params) : await deployRegular(params); stdout_1.default(address); } exports.action = action; async function deployRegular(params) { const { contract: fullContractName, arguments: deployArgs } = params; const { network, txParams } = params; const { package: packageName, contractName } = naming_1.fromContractFullName(fullContractName); const controller = new NetworkController_1.default(network, txParams, params.networkFile); const args = getConstructorArgs(packageName, contractName, deployArgs, controller.contractManager); try { const instance = await controller.createInstance(packageName, contractName, args); return instance.address; } finally { controller.writeNetworkPackageIfNeeded(); } } exports.deployRegular = deployRegular; async function deployProxy(params) { const { contract: fullContractName, arguments: deployArgs, kind } = params; const { network, txParams } = params; const { package: packageName, contractName } = naming_1.fromContractFullName(fullContractName); await link_1.default.runActionIfNeeded(fullContractName, params); await add_1.default.runActionIfNeeded(fullContractName, params); await push_1.default.runActionIfNeeded([fullContractName], Object.assign(Object.assign({}, params), { network: params.userNetwork })); const controller = new NetworkController_1.default(network, txParams, params.networkFile); const args = getConstructorArgs(packageName, contractName, deployArgs, controller.contractManager); try { await controller.logErrorIfContractPackageIsInvalid(packageName, contractName, false); const instance = await controller.createProxy(packageName, contractName, 'initialize', args, literalToProxyType(kind)); if (params.kind === 'upgradeable') { upgrades_2.Loggy.noSpin(__filename, 'deploy', 'deploy-hint', `To upgrade this instance run 'newos upgrade'`); } return instance.address; } finally { controller.writeNetworkPackageIfNeeded(); } } function getConstructorArgs(packageName, contractName, deployArgs, contractManager) { const contract = contractManager.getContractClass(packageName, contractName); const constructorInputs = upgrades_1.getConstructorInputs(contract); return input_1.parseMultipleArgs(deployArgs, constructorInputs); } function literalToProxyType(kind) { switch (kind) { case 'upgradeable': return interfaces_1.ProxyType.Upgradeable; case 'minimal': return interfaces_1.ProxyType.Minimal; case 'regular': return interfaces_1.ProxyType.NonProxy; } } //# sourceMappingURL=action.js.map