@solvprotocol/upgrade-safe-transpiler
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.
39 lines • 1.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.prependInitializableBase = void 0;
const utils_1 = require("solidity-ast/utils");
const ast_utils_1 = require("../solc/ast-utils");
const match_1 = require("../utils/match");
function* prependInitializableBase(sourceUnit, { originalSourceBuf }) {
for (const contract of (0, utils_1.findAll)('ContractDefinition', sourceUnit)) {
if (contract.contractKind !== 'contract') {
continue;
}
if (contract.baseContracts.length > 0) {
const { start } = (0, ast_utils_1.getNodeBounds)(contract.baseContracts[0]);
yield {
kind: 'prepend-initializable-base',
start,
length: 0,
text: `Initializable, `,
};
}
else {
const bounds = (0, ast_utils_1.getNodeBounds)(contract);
const re = /(?:abstract\s+)?contract\s+([a-zA-Z0-9$_]+)/;
const match = (0, match_1.matchBufferAt)(originalSourceBuf, re, bounds.start);
if (!match) {
throw new Error(`Can't find ${contract.name} in ${sourceUnit.absolutePath}`);
}
const start = match.start + match.length;
yield {
start,
length: 0,
kind: 'prepend-initializable-base',
text: ' is Initializable',
};
}
}
}
exports.prependInitializableBase = prependInitializableBase;
//# sourceMappingURL=prepend-initializable-base.js.map