UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

30 lines (28 loc) 1.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAllSourceFiles = void 0; 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=getAllSourceFiles.js.map