UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

29 lines (27 loc) 5.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const ts_utils_1 = require("@neo-one/ts-utils"); const utils_1 = require("@neo-one/utils"); const typescript_1 = tslib_1.__importDefault(require("typescript")); const getAllSourceFilesWorker = (sourceFiles, typeChecker, seen = new Set()) => sourceFiles.reduce((acc, sourceFile) => { if (seen.has(sourceFile)) { return []; } seen.add(sourceFile); const importSourceFiles = ts_utils_1.tsUtils.statement .getStatements(sourceFile) .filter(typescript_1.default.isImportDeclaration) .map((decl) => ts_utils_1.tsUtils.importExport.getModuleSpecifierSourceFile(typeChecker, decl)) .filter(utils_1.utils.notNull); const exportSourceFiles = ts_utils_1.tsUtils.statement .getStatements(sourceFile) .filter(typescript_1.default.isExportDeclaration) .map((decl) => ts_utils_1.tsUtils.importExport.getModuleSpecifierSourceFile(typeChecker, decl)) .filter(utils_1.utils.notNull); const files = [...new Set(importSourceFiles.concat(exportSourceFiles))]; const result = getAllSourceFilesWorker(files, typeChecker, seen); return acc.concat(result).concat([sourceFile]); }, []); exports.getAllSourceFiles = (sourceFiles, typeChecker) => new Set(getAllSourceFilesWorker(sourceFiles, typeChecker)); //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdldEFsbFNvdXJjZUZpbGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUE0QztBQUM1QywwQ0FBdUM7QUFDdkMsb0VBQTRCO0FBRTVCLE1BQU0sdUJBQXVCLEdBQUcsQ0FDOUIsV0FBeUMsRUFDekMsV0FBMkIsRUFDM0IsT0FBTyxJQUFJLEdBQUcsRUFBaUIsRUFDRCxFQUFFLENBQ2hDLFdBQVcsQ0FBQyxNQUFNLENBQStCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQ25FLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUN4QixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVyQixNQUFNLGlCQUFpQixHQUFHLGtCQUFPLENBQUMsU0FBUztTQUN4QyxhQUFhLENBQUMsVUFBVSxDQUFDO1NBQ3pCLE1BQU0sQ0FBQyxvQkFBRSxDQUFDLG1CQUFtQixDQUFDO1NBQzlCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsa0JBQU8sQ0FBQyxZQUFZLENBQUMsNEJBQTRCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ25GLE1BQU0sQ0FBQyxhQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsTUFBTSxpQkFBaUIsR0FBRyxrQkFBTyxDQUFDLFNBQVM7U0FDeEMsYUFBYSxDQUFDLFVBQVUsQ0FBQztTQUN6QixNQUFNLENBQUMsb0JBQUUsQ0FBQyxtQkFBbUIsQ0FBQztTQUM5QixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLGtCQUFPLENBQUMsWUFBWSxDQUFDLDRCQUE0QixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUNuRixNQUFNLENBQUMsYUFBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFeEUsTUFBTSxNQUFNLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUVqRSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNqRCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFSSxRQUFBLGlCQUFpQixHQUFHLENBQy9CLFdBQXlDLEVBQ3pDLFdBQTJCLEVBQ1AsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL3V0aWxzL2dldEFsbFNvdXJjZUZpbGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHNVdGlscyB9IGZyb20gJ0BuZW8tb25lL3RzLXV0aWxzJztcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnQG5lby1vbmUvdXRpbHMnO1xuaW1wb3J0IHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5jb25zdCBnZXRBbGxTb3VyY2VGaWxlc1dvcmtlciA9IChcbiAgc291cmNlRmlsZXM6IFJlYWRvbmx5QXJyYXk8dHMuU291cmNlRmlsZT4sXG4gIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgc2VlbiA9IG5ldyBTZXQ8dHMuU291cmNlRmlsZT4oKSxcbik6IFJlYWRvbmx5QXJyYXk8dHMuU291cmNlRmlsZT4gPT5cbiAgc291cmNlRmlsZXMucmVkdWNlPFJlYWRvbmx5QXJyYXk8dHMuU291cmNlRmlsZT4+KChhY2MsIHNvdXJjZUZpbGUpID0+IHtcbiAgICBpZiAoc2Vlbi5oYXMoc291cmNlRmlsZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgc2Vlbi5hZGQoc291cmNlRmlsZSk7XG5cbiAgICBjb25zdCBpbXBvcnRTb3VyY2VGaWxlcyA9IHRzVXRpbHMuc3RhdGVtZW50XG4gICAgICAuZ2V0U3RhdGVtZW50cyhzb3VyY2VGaWxlKVxuICAgICAgLmZpbHRlcih0cy5pc0ltcG9ydERlY2xhcmF0aW9uKVxuICAgICAgLm1hcCgoZGVjbCkgPT4gdHNVdGlscy5pbXBvcnRFeHBvcnQuZ2V0TW9kdWxlU3BlY2lmaWVyU291cmNlRmlsZSh0eXBlQ2hlY2tlciwgZGVjbCkpXG4gICAgICAuZmlsdGVyKHV0aWxzLm5vdE51bGwpO1xuICAgIGNvbnN0IGV4cG9ydFNvdXJjZUZpbGVzID0gdHNVdGlscy5zdGF0ZW1lbnRcbiAgICAgIC5nZXRTdGF0ZW1lbnRzKHNvdXJjZUZpbGUpXG4gICAgICAuZmlsdGVyKHRzLmlzRXhwb3J0RGVjbGFyYXRpb24pXG4gICAgICAubWFwKChkZWNsKSA9PiB0c1V0aWxzLmltcG9ydEV4cG9ydC5nZXRNb2R1bGVTcGVjaWZpZXJTb3VyY2VGaWxlKHR5cGVDaGVja2VyLCBkZWNsKSlcbiAgICAgIC5maWx0ZXIodXRpbHMubm90TnVsbCk7XG4gICAgY29uc3QgZmlsZXMgPSBbLi4ubmV3IFNldChpbXBvcnRTb3VyY2VGaWxlcy5jb25jYXQoZXhwb3J0U291cmNlRmlsZXMpKV07XG5cbiAgICBjb25zdCByZXN1bHQgPSBnZXRBbGxTb3VyY2VGaWxlc1dvcmtlcihmaWxlcywgdHlwZUNoZWNrZXIsIHNlZW4pO1xuXG4gICAgcmV0dXJuIGFjYy5jb25jYXQocmVzdWx0KS5jb25jYXQoW3NvdXJjZUZpbGVdKTtcbiAgfSwgW10pO1xuXG5leHBvcnQgY29uc3QgZ2V0QWxsU291cmNlRmlsZXMgPSAoXG4gIHNvdXJjZUZpbGVzOiBSZWFkb25seUFycmF5PHRzLlNvdXJjZUZpbGU+LFxuICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4pOiBTZXQ8dHMuU291cmNlRmlsZT4gPT4gbmV3IFNldChnZXRBbGxTb3VyY2VGaWxlc1dvcmtlcihzb3VyY2VGaWxlcywgdHlwZUNoZWNrZXIpKTtcbiJdfQ==