UNPKG

@solvprotocol/upgrade-safe-transpiler

Version:

Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.

48 lines 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasConstructorOverride = exports.getOverrides = exports.hasOverride = void 0; const ast_utils_1 = require("../solc/ast-utils"); const execall_1 = require("../utils/execall"); const errorKinds = [ 'state-variable-assignment', 'state-variable-immutable', 'external-library-linking', 'struct-definition', 'enum-definition', 'constructor', 'delegatecall', 'selfdestruct', 'missing-public-upgradeto', ]; function hasOverride(node, override) { return getOverrides(node).includes(override); } exports.hasOverride = hasOverride; function getOverrides(node) { var _a, _b; if ('documentation' in node) { const doc = typeof node.documentation === 'string' ? node.documentation : (_b = (_a = node.documentation) === null || _a === void 0 ? void 0 : _a.text) !== null && _b !== void 0 ? _b : ''; const result = []; for (const { groups } of (0, execall_1.execall)(/^\s*(?:@(?<title>\w+)(?::(?<tag>[a-z][a-z-]*))? )?(?<args>(?:(?!^\s@\w+)[^])*)/m, doc)) { if (groups && groups.title === 'custom' && groups.tag === 'oz-upgrades-unsafe-allow') { result.push(...groups.args.split(/\s+/)); } } result.forEach(arg => { if (!errorKinds.includes(arg)) { throw new Error(`NatSpec: oz-upgrades-unsafe-allow argument not recognized: ${arg}`); } }); return result; } else { return []; } } exports.getOverrides = getOverrides; function hasConstructorOverride(contract) { const ctor = (0, ast_utils_1.getConstructor)(contract); return ctor ? hasOverride(ctor, 'constructor') : false; } exports.hasConstructorOverride = hasConstructorOverride; //# sourceMappingURL=upgrades-overrides.js.map