@gnus.ai/upgrade-safe-transpiler-diamond
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe using Diamond Pattern (EIP-2535).
31 lines • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.newFunctionPosition = void 0;
const ast_utils_1 = require("../../solc/ast-utils");
const match_1 = require("../../utils/match");
function newFunctionPosition(contract, { readOriginal }, atEnd = false) {
if (atEnd) {
const contractText = readOriginal(contract, 'buffer').toString('utf8');
const offset = contractText.lastIndexOf('}');
if (offset < 1) {
throw new Error(`Can't find ending of contract ${contract.name}`);
}
return (0, ast_utils_1.getNodeBounds)(contract).start + offset - 1;
}
else {
const offset = (0, ast_utils_1.getNodeBounds)(contract).start;
let searchStart = 0;
if (contract.baseContracts.length > 0) {
const [lastParent] = contract.baseContracts.slice(-1);
const pb = (0, ast_utils_1.getNodeBounds)(lastParent);
searchStart = pb.start + pb.length - offset;
}
const brace = (0, match_1.matchBufferFrom)(readOriginal(contract, 'buffer'), /\{\n?/, searchStart);
if (!brace) {
throw new Error(`Can't find start of contract ${contract.name}`);
}
return offset + brace.start + brace.length;
}
}
exports.newFunctionPosition = newFunctionPosition;
//# sourceMappingURL=new-function-position.js.map