locklift-deploy-artifacts
Version:
Locklift plugin that enables you to store build artifacts across contract migration scripts.
43 lines (42 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeploymentHandler = void 0;
const everscale_inpage_provider_1 = require("everscale-inpage-provider");
const artifacts_1 = require("./artifacts");
const ARTIFACTS_HISTORY_FILE = "./artifacts/journal.json";
class DeploymentHandler {
constructor(locklift) {
this.artifacts = new artifacts_1.Artifacts(ARTIFACTS_HISTORY_FILE);
this.locklift = locklift;
}
getArtifacts() {
return this.artifacts.getDataObj();
}
getContract(ver) {
const contract = new this.locklift.provider.Contract(ver.abi, new everscale_inpage_provider_1.Address(ver.address));
return contract;
}
async deployContract(alias, version, args, deployFn) {
const locklift = this.locklift;
const { tvc, abi, codeHash, code } = locklift.factory.getContractArtifacts(args.contract);
const network = locklift.context.network.name;
const contractName = args.contract.toString();
const fn = deployFn || locklift.factory.deployContract;
const { contract, tx } = await fn(args);
this.artifacts.addContract(network, contractName, alias, version, {
address: contract.address.toString(),
codeHash: codeHash,
initParams: args.initParams,
constructorParams: args.constructorParams,
publicKey: args.publicKey,
abi: abi,
tvc: tvc,
code: code,
});
return { contract, tx };
}
reset() {
this.artifacts.reset();
}
}
exports.DeploymentHandler = DeploymentHandler;