@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
29 lines (27 loc) • 5.08 kB
JavaScript
;
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==