@gnus.ai/upgrade-safe-transpiler-diamond
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe using Diamond Pattern (EIP-2535).
49 lines • 2.06 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getContractsImportPath = exports.renameRelativePath = exports.renamePath = exports.renameContract = exports.isRenamed = void 0;
const path_1 = __importDefault(require("path"));
const suffix = 'Upgradeable';
const initName = 'Initializable';
function isRenamed(name) {
return path_1.default.basename(name, '.sol').endsWith(suffix);
}
exports.isRenamed = isRenamed;
function renameContract(name, _suffix = suffix) {
if ((name === initName) || name.endsWith(_suffix)) {
return name;
}
else {
return name + _suffix;
}
}
exports.renameContract = renameContract;
function renamePath(filePath, _suffix = suffix) {
const { dir, name, ext } = path_1.default.parse(filePath);
return path_1.default.format({ dir, ext, name: renameContract(name, _suffix) });
}
exports.renamePath = renamePath;
function renameRelativePath(filePath, _suffix = suffix, basePath) {
let { dir, name, ext } = path_1.default.parse(filePath);
if (dir[0] !== '.') {
dir = path_1.default.relative(basePath, dir);
if (dir === '') {
dir = '.';
}
}
return path_1.default.format({ dir, ext, name: renameContract(name, _suffix) });
}
exports.renameRelativePath = renameRelativePath;
function getContractsImportPath(contractPaths, basePath, suffix = 'Upgradeable') {
let importsText = '';
contractPaths.forEach((contractNames, filePath) => {
const renamedContractNames = [...contractNames].map(c => renameContract(c, suffix));
const cNames = ((renamedContractNames.length > 0) ? `{ ${renamedContractNames.join(', ')} } from ` : '');
importsText += `\nimport ${cNames}"${renameRelativePath(filePath, suffix, basePath)}";`;
});
return importsText;
}
exports.getContractsImportPath = getContractsImportPath;
//# sourceMappingURL=rename.js.map