| 294 | } |
| 295 | |
| 296 | function findAllFiles(files: string[], npmDeps = {}) { |
| 297 | files = files.map(file => (path.isAbsolute(file) ? file : path.resolve('../../../', file))); |
| 298 | |
| 299 | let queue: string[] = [...files]; |
| 300 | let allFiles = new Set<string>(); |
| 301 | for (let i = 0; i < queue.length; i++) { |
| 302 | let file = queue[i]; |
| 303 | let contents = readFile(file); |
| 304 | allFiles.add(file); |
| 305 | |
| 306 | let deps = parseFile(file, contents, npmDeps); |
| 307 | for (let dep of deps) { |
| 308 | if (!allFiles.has(dep)) { |
| 309 | queue.push(dep); |
| 310 | } |
| 311 | } |
| 312 | } |
| 313 | |
| 314 | let addedFiles = [...allFiles.values()].filter(f => !files.includes(f)).sort(); |
| 315 | return [...files, ...addedFiles]; |
| 316 | } |
| 317 | |
| 318 | function parseFile(file: string, contents: string, npmDeps = {}, urls = {}) { |
| 319 | let deps = new Set<string>(); |