locklift
Version:
Node JS framework for working with Ever contracts. Inspired by Truffle and Hardhat. Helps you to build, test, run and maintain your smart contracts.
150 lines (149 loc) • 7.08 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSupportedVersions = exports.executableFileName = exports.fileNames = exports.downloadLinks = exports.replaceDots = exports.getGzFileName = exports.platformToSoldTychoPlatform = void 0;
const constants_1 = require("./constants");
const httpService_1 = require("../httpService");
const preload_1 = __importDefault(require("semver/preload"));
const process = __importStar(require("process"));
const platforms = {
isWin32: process.platform === "win32",
isLinux: process.platform === "linux",
isDarwin: process.platform === "darwin",
};
exports.platformToSoldTychoPlatform = {
win32: "Windows",
linux: "Linux",
darwin: "macOS",
};
const getGzFileName = (fileName) => `${fileName}.gz`;
exports.getGzFileName = getGzFileName;
const getLinkerUrl = ({ version }) => `https://binaries.tonlabs.io/${(0, exports.getGzFileName)(getLinkerFileName({ version }))}`;
const getCompilerUrl = ({ version }) => `https://binaries.tonlabs.io/${(0, exports.getGzFileName)(getCompilerFileName({ version }))}`;
const getSoldUrl = ({ version }) => `https://github.com/everx-labs/TVM-Solidity-Compiler/releases/download/${version}/sold_${(0, exports.replaceDots)(version)}_${process.platform}.gz`;
const getTychoSoldUrl = ({ version }) => {
return `https://github.com/broxus/TVM-Solidity-Compiler/releases/download/v${version}/sold-v${version}-${exports.platformToSoldTychoPlatform[process.platform]}.gz`;
};
const getLibUrl = ({ version }) => `http://sdkbinaries.tonlabs.io/${(0, exports.getGzFileName)(getLibFileName({ version }))}`;
const replaceDots = (arg) => arg.replace(/\./g, "_");
exports.replaceDots = replaceDots;
const getLinkerFileName = ({ version }) => `tvm_linker_${(0, exports.replaceDots)(version)}_${process.platform}`;
const getCompilerFileName = ({ version }) => `solc_${(0, exports.replaceDots)(version)}_${process.platform}`;
const getLibFileName = ({ version }) => `stdlib_sol_${(0, exports.replaceDots)(version)}.tvm`;
const getSoldFileName = ({ version }) => {
return `sold_${(0, exports.replaceDots)(version)}_${process.platform}`;
};
const getTychoSoldFileName = ({ version }) => {
return `sold-v${version}-${exports.platformToSoldTychoPlatform[process.platform]}`;
};
exports.downloadLinks = {
[constants_1.ComponentType.COMPILER]: getCompilerUrl,
[constants_1.ComponentType.LINKER]: getLinkerUrl,
[constants_1.ComponentType.LIB]: getLibUrl,
[constants_1.ComponentType.SOLD_COMPILER]: getSoldUrl,
[constants_1.ComponentType.SOLD_COMPILER_TYCHO]: getTychoSoldUrl,
};
exports.fileNames = {
[constants_1.ComponentType.COMPILER]: getCompilerFileName,
[constants_1.ComponentType.LINKER]: getLinkerFileName,
[constants_1.ComponentType.LIB]: getLibFileName,
[constants_1.ComponentType.SOLD_COMPILER]: getSoldFileName,
[constants_1.ComponentType.SOLD_COMPILER_TYCHO]: getTychoSoldFileName,
};
const getExecutableCompilerName = ({ version }) => {
const fileName = exports.fileNames[constants_1.ComponentType.COMPILER]({ version });
if (platforms.isWin32) {
return fileName + ".exe";
}
return fileName;
};
const getExecutableLinkerName = ({ version }) => {
const fileName = exports.fileNames[constants_1.ComponentType.LINKER]({ version });
if (platforms.isWin32) {
return fileName + ".exe";
}
return fileName;
};
const getExecutableLibName = ({ version }) => {
return exports.fileNames[constants_1.ComponentType.LIB]({ version });
};
const getExecutableSoldName = ({ version }) => {
const fileName = exports.fileNames[constants_1.ComponentType.SOLD_COMPILER]({ version });
if (platforms.isWin32) {
return fileName + ".exe";
}
return fileName;
};
const getExecutableTychoSoldName = ({ version }) => {
const fileName = exports.fileNames[constants_1.ComponentType.SOLD_COMPILER_TYCHO]({ version });
if (platforms.isWin32) {
return fileName + ".exe";
}
return fileName;
};
exports.executableFileName = {
[constants_1.ComponentType.COMPILER]: getExecutableCompilerName,
[constants_1.ComponentType.LINKER]: getExecutableLinkerName,
[constants_1.ComponentType.LIB]: getExecutableLibName,
[constants_1.ComponentType.SOLD_COMPILER]: getExecutableSoldName,
[constants_1.ComponentType.SOLD_COMPILER_TYCHO]: getExecutableTychoSoldName,
};
const getSupportedVersions = ({ component }) => {
switch (component) {
case constants_1.ComponentType.COMPILER:
return httpService_1.httpService
.get("https://binaries.tonlabs.io/solc.json")
.then(res => res.data.solc);
case constants_1.ComponentType.LINKER:
return httpService_1.httpService
.get("https://binaries.tonlabs.io/tvm_linker.json")
.then(res => res.data.tvm_linker);
case constants_1.ComponentType.LIB:
return httpService_1.httpService
.get("https://binaries.tonlabs.io/solc.json")
.then(res => res.data.solc);
case constants_1.ComponentType.SOLD_COMPILER:
return httpService_1.httpService
.get("https://api.github.com/repos/tonlabs/TVM-Solidity-Compiler/releases")
.then(res => res.data
.filter(el => {
try {
return preload_1.default.gte(el.tag_name, "0.72.0");
}
catch (e) {
return false;
}
})
.map(el => el.tag_name));
case constants_1.ComponentType.SOLD_COMPILER_TYCHO:
return httpService_1.httpService
.get("https://api.github.com/repos/broxus/TVM-Solidity-Compiler/releases")
.then(res => res.data.map(el => el.tag_name));
}
};
exports.getSupportedVersions = getSupportedVersions;