UNPKG

@openzeppelin/upgrade-safe-transpiler

Version:

Solidity preprocessor used to generate OpenZeppelin Contracts Upgrade Safe.

58 lines 2.83 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.preparePeerProject = preparePeerProject; const path_1 = __importDefault(require("path")); const natspec_1 = require("./utils/natspec"); const is_storage_variable_1 = require("./transformations/utils/is-storage-variable"); function preparePeerProject(transform, peerProject) { for (const ast of transform.asts()) { let shouldExclude = true; for (const node of ast.nodes) { switch (node.nodeType) { case 'ContractDefinition': { if (node.contractKind === 'contract') { if (!(0, natspec_1.extractContractStateless)(node)) { shouldExclude = false; break; } if ((0, natspec_1.extractContractStorageSize)(node) !== undefined) { throw transform.error(node, 'Contract marked as stateless should not have an associated storage size'); } for (const decl of node.nodes) { if (decl.nodeType == 'VariableDeclaration' && (0, is_storage_variable_1.isStorageVariable)(decl, transform.resolver)) { throw transform.error(node, 'Contract marked as stateless should not contain storage variable declarations'); } if (decl.nodeType == 'FunctionDefinition' && decl.kind == 'constructor') { throw transform.error(node, 'Contract marked as stateless should not have a constructor'); } } } transform.getData(node).importFromPeer = path_1.default.join(peerProject, ast.absolutePath); break; } case 'EnumDefinition': case 'ErrorDefinition': case 'FunctionDefinition': case 'StructDefinition': case 'UserDefinedValueTypeDefinition': case 'VariableDeclaration': { transform.getData(node).importFromPeer = path_1.default.join(peerProject, ast.absolutePath); break; } case 'ImportDirective': case 'PragmaDirective': case 'UsingForDirective': { break; } } } if (shouldExclude) { transform.exclude(ast.absolutePath); } } } //# sourceMappingURL=prepare-peer-project.js.map