UNPKG

@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
"use strict"; 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