UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

26 lines (24 loc) 1.19 kB
import { tsUtils } from '@neo-one/ts-utils'; import { utils } from '@neo-one/utils'; import ts from 'typescript'; const getAllSourceFilesWorker = (sourceFiles, typeChecker, seen = new Set()) => sourceFiles.reduce((acc, sourceFile) => { if (seen.has(sourceFile)) { return []; } seen.add(sourceFile); const importSourceFiles = tsUtils.statement .getStatements(sourceFile) .filter(ts.isImportDeclaration) .map((decl) => tsUtils.importExport.getModuleSpecifierSourceFile(typeChecker, decl)) .filter(utils.notNull); const exportSourceFiles = tsUtils.statement .getStatements(sourceFile) .filter(ts.isExportDeclaration) .map((decl) => tsUtils.importExport.getModuleSpecifierSourceFile(typeChecker, decl)) .filter(utils.notNull); const files = [...new Set(importSourceFiles.concat(exportSourceFiles))]; const result = getAllSourceFilesWorker(files, typeChecker, seen); return acc.concat(result).concat([sourceFile]); }, []); export const getAllSourceFiles = (sourceFiles, typeChecker) => new Set(getAllSourceFilesWorker(sourceFiles, typeChecker)); //# sourceMappingURL=getAllSourceFiles.js.map