@solvprotocol/upgrade-safe-transpiler
Version:
Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.
36 lines • 1.57 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.appendInitializableImport = void 0;
const utils_1 = require("solidity-ast/utils");
const path_1 = __importDefault(require("path"));
const relative_path_1 = require("../utils/relative-path");
const ast_utils_1 = require("../solc/ast-utils");
function appendInitializableImport(initializablePath) {
return function* (sourceUnit) {
const contracts = [...(0, utils_1.findAll)('ContractDefinition', sourceUnit)];
if (!contracts.some(c => c.contractKind === 'contract')) {
return;
}
let last;
for (const node of (0, utils_1.findAll)('PragmaDirective', sourceUnit)) {
last = node;
}
for (const node of (0, utils_1.findAll)('ImportDirective', sourceUnit)) {
last = node;
}
const relativeImportPath = (0, relative_path_1.relativePath)(path_1.default.dirname(sourceUnit.absolutePath), initializablePath);
const after = last ? (0, ast_utils_1.getNodeBounds)(last) : { start: 0, length: 0 };
const start = after.start + after.length;
yield {
start,
length: 0,
kind: 'append-initializable-import',
text: `\nimport "${relativeImportPath}";`,
};
};
}
exports.appendInitializableImport = appendInitializableImport;
//# sourceMappingURL=append-initializable-import.js.map