UNPKG

@dotglitch/ngx-common

Version:

Angular components and utilities that are commonly used.

91 lines 12.5 kB
import * as path from 'path-browserify'; export class DependencyParser { constructor() { this.REGEX_NODE_MODULE = /^node:([\w\W\/]+)$/; } // https://github.com/lukasbach/monaco-editor-auto-typings/commit/fc046e7d9a2abbb5121ad8ab25195d8c1c277416 parseDependencies(source, parent) { const importRegex = /import *.+ *from *['"](?<importPath>.+?)['"]/g; const dynamicImportRegex = /await import ?\(['"](?<importPath>.+?)['"]\)/g; const cjsRequireRegex = /require *\(['"](?<importPath>.+?)['"]\)/g; const matches = [ ...source.matchAll(importRegex), ...source.matchAll(dynamicImportRegex), ...source.matchAll(cjsRequireRegex) ]; const importPaths = matches.map(match => match.groups?.['importPath']); const result = importPaths.map(imp => this.resolvePath(imp, parent)); return result; } resolvePath(importPath, parent) { const nodeImport = importPath.match(this.REGEX_NODE_MODULE); if (nodeImport) { return { kind: 'relative-in-package', packageName: '@types/node', importPath: `${nodeImport[1]}.d.ts`, sourcePath: '', }; } if (typeof parent === 'string') { if (importPath.startsWith('.')) { return { kind: 'relative', importPath, sourcePath: parent, }; } else if (importPath.startsWith('@')) { const segments = importPath.split('/'); return { kind: 'package', packageName: `${segments[0]}/${segments[1]}`, importPath: segments.slice(2).join('/'), }; } else { const segments = importPath.split('/'); return { kind: 'package', packageName: segments[0], importPath: segments.slice(1).join('/'), }; } } else { switch (parent.kind) { case 'package': throw Error('TODO?'); case 'relative': throw Error('TODO2?'); case 'relative-in-package': if (importPath.startsWith('.')) { return { kind: 'relative-in-package', packageName: parent.packageName, sourcePath: path.join(parent.sourcePath, parent.importPath), importPath: importPath, }; } else if (importPath.startsWith('@')) { const segments = importPath.split('/'); return { kind: 'package', packageName: `${segments[0]}/${segments[1]}`, importPath: segments.slice(2).join('/'), }; } else { const segments = importPath.split('/'); return { kind: 'package', packageName: segments[0], importPath: segments.slice(1).join('/'), }; } } } return null; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS1wYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vc3JjL2NvbXBvbmVudHMvdnNjb2RlL3RzLXR5cGUtcmVzb2x2ZXIvZGVwZW5kZW5jeS1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxpQkFBaUIsQ0FBQztBQUd4QyxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBQ1ksc0JBQWlCLEdBQUcsb0JBQW9CLENBQUM7SUEwRnJELENBQUM7SUF4RkcsMEdBQTBHO0lBQ25HLGlCQUFpQixDQUFDLE1BQWMsRUFBRSxNQUFtQztRQUN4RSxNQUFNLFdBQVcsR0FBRywrQ0FBK0MsQ0FBQztRQUNwRSxNQUFNLGtCQUFrQixHQUFHLCtDQUErQyxDQUFDO1FBQzNFLE1BQU0sZUFBZSxHQUFHLDBDQUEwQyxDQUFDO1FBRW5FLE1BQU0sT0FBTyxHQUFHO1lBQ1osR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUMvQixHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7WUFDdEMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQztTQUN0QyxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXJFLE9BQU8sTUFBTSxDQUFBO0lBQ2pCLENBQUM7SUFFTyxXQUFXLENBQUMsVUFBa0IsRUFBRSxNQUFtQztRQUN2RSxNQUFNLFVBQVUsR0FB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QkFDeEIsVUFBVSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQzt5QkFDMUMsQ0FBQztvQkFDTixDQUFDO1lBQ1QsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgtYnJvd3NlcmlmeSc7XG5pbXBvcnQgeyBJbXBvcnRSZXNvdXJjZVBhdGggfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIERlcGVuZGVuY3lQYXJzZXIge1xuICAgIHByaXZhdGUgUkVHRVhfTk9ERV9NT0RVTEUgPSAvXm5vZGU6KFtcXHdcXFdcXC9dKykkLztcblxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWthc2JhY2gvbW9uYWNvLWVkaXRvci1hdXRvLXR5cGluZ3MvY29tbWl0L2ZjMDQ2ZTdkOWEyYWJiYjUxMjFhZDhhYjI1MTk1ZDhjMWMyNzc0MTZcbiAgICBwdWJsaWMgcGFyc2VEZXBlbmRlbmNpZXMoc291cmNlOiBzdHJpbmcsIHBhcmVudDogSW1wb3J0UmVzb3VyY2VQYXRoIHwgc3RyaW5nKTogSW1wb3J0UmVzb3VyY2VQYXRoW10ge1xuICAgICAgICBjb25zdCBpbXBvcnRSZWdleCA9IC9pbXBvcnQgKi4rICpmcm9tICpbJ1wiXSg/PGltcG9ydFBhdGg+Lis/KVsnXCJdL2c7XG4gICAgICAgIGNvbnN0IGR5bmFtaWNJbXBvcnRSZWdleCA9IC9hd2FpdCBpbXBvcnQgP1xcKFsnXCJdKD88aW1wb3J0UGF0aD4uKz8pWydcIl1cXCkvZztcbiAgICAgICAgY29uc3QgY2pzUmVxdWlyZVJlZ2V4ID0gL3JlcXVpcmUgKlxcKFsnXCJdKD88aW1wb3J0UGF0aD4uKz8pWydcIl1cXCkvZztcblxuICAgICAgICBjb25zdCBtYXRjaGVzID0gW1xuICAgICAgICAgICAgLi4uc291cmNlLm1hdGNoQWxsKGltcG9ydFJlZ2V4KSxcbiAgICAgICAgICAgIC4uLnNvdXJjZS5tYXRjaEFsbChkeW5hbWljSW1wb3J0UmVnZXgpLFxuICAgICAgICAgICAgLi4uc291cmNlLm1hdGNoQWxsKGNqc1JlcXVpcmVSZWdleClcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaW1wb3J0UGF0aHMgPSBtYXRjaGVzLm1hcChtYXRjaCA9PiBtYXRjaC5ncm91cHM/LlsnaW1wb3J0UGF0aCddKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gaW1wb3J0UGF0aHMubWFwKGltcCA9PiB0aGlzLnJlc29sdmVQYXRoKGltcCwgcGFyZW50KSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZVBhdGgoaW1wb3J0UGF0aDogc3RyaW5nLCBwYXJlbnQ6IEltcG9ydFJlc291cmNlUGF0aCB8IHN0cmluZyk6IEltcG9ydFJlc291cmNlUGF0aCB7XG4gICAgICAgIGNvbnN0IG5vZGVJbXBvcnQgPSBpbXBvcnRQYXRoLm1hdGNoKHRoaXMuUkVHRVhfTk9ERV9NT0RVTEUpO1xuICAgICAgICBpZiAobm9kZUltcG9ydCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBraW5kOiAncmVsYXRpdmUtaW4tcGFja2FnZScsXG4gICAgICAgICAgICAgICAgcGFja2FnZU5hbWU6ICdAdHlwZXMvbm9kZScsXG4gICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogYCR7bm9kZUltcG9ydFsxXX0uZC50c2AsXG4gICAgICAgICAgICAgICAgc291cmNlUGF0aDogJycsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXJlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAoaW1wb3J0UGF0aC5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICBpbXBvcnRQYXRoLFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VQYXRoOiBwYXJlbnQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGltcG9ydFBhdGguc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VnbWVudHMgPSBpbXBvcnRQYXRoLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogJ3BhY2thZ2UnLFxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZTogYCR7c2VnbWVudHNbMF19LyR7c2VnbWVudHNbMV19YCxcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogc2VnbWVudHMuc2xpY2UoMikuam9pbignLycpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWdtZW50cyA9IGltcG9ydFBhdGguc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBraW5kOiAncGFja2FnZScsXG4gICAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBzZWdtZW50c1swXSxcbiAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogc2VnbWVudHMuc2xpY2UoMSkuam9pbignLycpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHBhcmVudC5raW5kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAncGFja2FnZSc6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdUT0RPPycpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1RPRE8yPycpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3JlbGF0aXZlLWluLXBhY2thZ2UnOlxuICAgICAgICAgICAgICAgICAgICBpZiAoaW1wb3J0UGF0aC5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ3JlbGF0aXZlLWluLXBhY2thZ2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VOYW1lOiBwYXJlbnQucGFja2FnZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUGF0aDogcGF0aC5qb2luKHBhcmVudC5zb3VyY2VQYXRoLCBwYXJlbnQuaW1wb3J0UGF0aCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogaW1wb3J0UGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW1wb3J0UGF0aC5zdGFydHNXaXRoKCdAJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gaW1wb3J0UGF0aC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAncGFja2FnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWU6IGAke3NlZ21lbnRzWzBdfS8ke3NlZ21lbnRzWzFdfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0UGF0aDogc2VnbWVudHMuc2xpY2UoMikuam9pbignLycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlZ21lbnRzID0gaW1wb3J0UGF0aC5zcGxpdCgnLycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAncGFja2FnZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWU6IHNlZ21lbnRzWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydFBhdGg6IHNlZ21lbnRzLnNsaWNlKDEpLmpvaW4oJy8nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59XG4iXX0=