@teambit/dependencies 1.0.785 → 1.0.787
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/files-dependency-builder/build-tree.js +1 -1
- package/dist/files-dependency-builder/build-tree.js.map +1 -1
- package/dist/files-dependency-builder/dependency-tree/index.d.ts +1 -1
- package/dist/files-dependency-builder/dependency-tree/index.js +7 -7
- package/dist/files-dependency-builder/dependency-tree/index.js.map +1 -1
- package/dist/files-dependency-builder/dependency-tree/index.spec.js +73 -73
- package/dist/files-dependency-builder/dependency-tree/index.spec.js.map +1 -1
- package/dist/files-dependency-builder/filing-cabinet/index.spec.js +1 -1
- package/dist/files-dependency-builder/filing-cabinet/index.spec.js.map +1 -1
- package/dist/files-dependency-builder/generate-tree-madge.d.ts +1 -1
- package/dist/files-dependency-builder/generate-tree-madge.js +5 -5
- package/dist/files-dependency-builder/generate-tree-madge.js.map +1 -1
- package/dist/files-dependency-builder/precinct/index.d.ts +1 -1
- package/dist/files-dependency-builder/precinct/index.js +2 -2
- package/dist/files-dependency-builder/precinct/index.js.map +1 -1
- package/dist/files-dependency-builder/precinct/index.spec.js +19 -19
- package/dist/files-dependency-builder/precinct/index.spec.js.map +1 -1
- package/files-dependency-builder/build-tree.ts +1 -1
- package/files-dependency-builder/dependency-tree/index.spec.ts +73 -73
- package/files-dependency-builder/dependency-tree/index.ts +7 -7
- package/files-dependency-builder/filing-cabinet/index.spec.ts +1 -1
- package/files-dependency-builder/generate-tree-madge.ts +5 -5
- package/files-dependency-builder/precinct/index.spec.ts +19 -19
- package/files-dependency-builder/precinct/index.ts +2 -2
- package/package.json +8 -8
- /package/dist/{preview-1760566720786.js → preview-1760636469189.js} +0 -0
|
@@ -215,7 +215,7 @@ async function getDependencyTree({
|
|
|
215
215
|
skipped,
|
|
216
216
|
pathMap,
|
|
217
217
|
errors
|
|
218
|
-
} = (0, _generateTreeMadge().default)(fullPaths, config);
|
|
218
|
+
} = await (0, _generateTreeMadge().default)(fullPaths, config);
|
|
219
219
|
const tree = MadgeTreeToDependenciesTree(madgeTree, componentDir);
|
|
220
220
|
const {
|
|
221
221
|
missingGroups,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","data","require","_path","_interopRequireDefault","_resolvePkgData","_generateTreeMadge","_missingHandler","_pathMap","_dependencyTreeType","e","__esModule","default","groupDependencyList","dependenciesPaths","componentDir","resultGroups","DependenciesTreeItem","isPackage","str","includes","forEach","dependencyPath","files","push","file","resolvedPackage","resolvePackageData","path","join","unidentifiedPackages","componentId","components","version","versionUsedByDependent","concreteVersion","packageWithVersion","name","Object","assign","packages","MadgeTreeToDependenciesTree","tree","result","keys","filePath","isEmpty","updateTreeWithPathMap","pathMapAbsolute","baseDir","length","pathMap","convertPathMapToRelativePaths","treeFiles","mainFilePathMap","find","Error","filter","dependency","fileObject","dependencyPathMap","dependencies","resolvedDep","importSource","importSpecifiers","depImportSpecifiers","map","importSpecifier","mainFile","mergeManuallyFoundPackagesToTree","foundPackages","missingGroups","pkg","fileDep","packageName","set","originFile","component","mergeMissingToTree","missing","missingCloned","clone","mergeErrorsToTree","errors","error","getDependencyTree","workspacePath","filePaths","visited","cacheProjectAst","envDetectors","config","includeNpm","requireConfig","webpackConfig","nonExistent","fullPaths","startsWith","resolve","madgeTree","skipped","generateTree","MissingHandler","groupAndFindMissing"],"sources":["build-tree.ts"],"sourcesContent":["import { clone, isEmpty, set } from 'lodash';\nimport path from 'path';\nimport { resolvePackageData } from '../resolve-pkg-data';\nimport type { MadgeTree } from './generate-tree-madge';\nimport generateTree from './generate-tree-madge';\nimport type { FoundPackages, MissingGroupItem } from './missing-handler';\nimport { MissingHandler } from './missing-handler';\nimport type { PathMapItem } from './path-map';\nimport { convertPathMapToRelativePaths } from './path-map';\nimport type { DependencyTreeParams, FileObject, DependenciesTree } from './types/dependency-tree-type';\nimport { DependenciesTreeItem } from './types/dependency-tree-type';\n\n/**\n * Gets a list of dependencies and group them by types (files, components, packages)\n * It's also transform the node package dependencies from array of paths to object in this format:\n * {dependencyName: version} (like in package.json)\n *\n * componentDir is the root of working directory (used for node packages version calculation)\n */\nfunction groupDependencyList(dependenciesPaths: string[], componentDir: string): DependenciesTreeItem {\n const resultGroups = new DependenciesTreeItem();\n const isPackage = (str: string) => str.includes('node_modules/');\n dependenciesPaths.forEach((dependencyPath) => {\n if (!isPackage(dependencyPath)) {\n resultGroups.files.push({ file: dependencyPath });\n return;\n }\n const resolvedPackage = resolvePackageData(componentDir, path.join(componentDir, dependencyPath));\n if (!resolvedPackage) {\n // package doesn't have package.json, probably it's a custom-resolve-module dep file\n resultGroups.unidentifiedPackages.push(dependencyPath);\n return;\n }\n\n // If the package is a component add it to the components list\n if (resolvedPackage.componentId) {\n resultGroups.components.push(resolvedPackage);\n return;\n }\n const version = resolvedPackage.versionUsedByDependent || resolvedPackage.concreteVersion;\n const packageWithVersion = {\n [resolvedPackage.name]: version,\n };\n Object.assign(resultGroups.packages, packageWithVersion);\n });\n\n return resultGroups;\n}\n\n/**\n * Run over each entry in the tree and transform the dependencies from list of paths\n * to object with dependencies types\n *\n * @returns new tree with grouped dependencies\n */\nfunction MadgeTreeToDependenciesTree(tree: MadgeTree, componentDir: string): DependenciesTree {\n const result: DependenciesTree = {};\n Object.keys(tree).forEach((filePath) => {\n if (tree[filePath] && !isEmpty(tree[filePath])) {\n result[filePath] = groupDependencyList(tree[filePath], componentDir);\n } else {\n result[filePath] = new DependenciesTreeItem();\n }\n });\n\n return result;\n}\n\n/**\n * add extra data such as custom-resolve and link-files from pathMap\n */\nfunction updateTreeWithPathMap(tree: DependenciesTree, pathMapAbsolute: PathMapItem[], baseDir: string): void {\n if (!pathMapAbsolute.length) return;\n const pathMap = convertPathMapToRelativePaths(pathMapAbsolute, baseDir);\n Object.keys(tree).forEach((filePath: string) => {\n const treeFiles = tree[filePath].files;\n if (!treeFiles.length) return; // file has no dependency\n const mainFilePathMap = pathMap.find((file) => file.file === filePath);\n if (!mainFilePathMap) throw new Error(`updateTreeWithPathMap: PathMap is missing for ${filePath}`);\n // a file might have a cycle dependency with itself, remove it from the dependencies.\n tree[filePath].files = treeFiles.filter((dependency) => dependency.file !== filePath);\n tree[filePath].files.forEach((fileObject: FileObject) => {\n const dependencyPathMap = mainFilePathMap.dependencies.find((file) => file.resolvedDep === fileObject.file);\n if (!dependencyPathMap) {\n throw new Error(`updateTreeWithPathMap: dependencyPathMap is missing for ${fileObject.file}`);\n }\n fileObject.importSource = dependencyPathMap.importSource;\n if (dependencyPathMap.importSpecifiers && dependencyPathMap.importSpecifiers.length) {\n const depImportSpecifiers = dependencyPathMap.importSpecifiers.map((importSpecifier) => {\n return {\n mainFile: importSpecifier,\n };\n });\n fileObject.importSpecifiers = depImportSpecifiers;\n }\n return fileObject;\n });\n });\n}\n\nfunction mergeManuallyFoundPackagesToTree(\n foundPackages: FoundPackages,\n missingGroups: MissingGroupItem[],\n tree: DependenciesTree\n) {\n if (isEmpty(foundPackages.components) && isEmpty(foundPackages.packages)) return;\n // Merge manually found packages (by groupMissing()) with the packages found by Madge (generate-tree-madge)\n Object.keys(foundPackages.packages).forEach((pkg) => {\n // locate package in groups(contains missing)\n missingGroups.forEach((fileDep: MissingGroupItem) => {\n if (fileDep.packages && fileDep.packages.includes(pkg)) {\n fileDep.packages = fileDep.packages.filter((packageName) => packageName !== pkg);\n set(tree[fileDep.originFile], ['packages', pkg], foundPackages.packages[pkg]);\n }\n });\n });\n foundPackages.components.forEach((component) => {\n missingGroups.forEach((fileDep: MissingGroupItem) => {\n if (fileDep.packages && fileDep.packages.includes(component.name)) {\n fileDep.packages = fileDep.packages.filter((packageName) => packageName !== component.name);\n (tree[fileDep.originFile] ||= new DependenciesTreeItem()).components.push(component);\n }\n });\n });\n}\n\nfunction mergeMissingToTree(missingGroups, tree: DependenciesTree) {\n if (isEmpty(missingGroups)) return;\n missingGroups.forEach((missing) => {\n const missingCloned = clone(missing);\n delete missingCloned.originFile;\n (tree[missing.originFile] ||= new DependenciesTreeItem()).missing = missingCloned;\n });\n}\n\nfunction mergeErrorsToTree(errors, tree: DependenciesTree) {\n if (isEmpty(errors)) return;\n Object.keys(errors).forEach((file) => {\n (tree[file] ||= new DependenciesTreeItem()).error = errors[file];\n });\n}\n\n/**\n * Function for fetching dependency tree of file or dir\n * @param baseDir working directory\n * @param workspacePath\n * @param filePaths path of the file to calculate the dependencies\n */\nexport async function getDependencyTree({\n componentDir, // component rootDir\n workspacePath,\n filePaths,\n visited = {},\n cacheProjectAst,\n envDetectors,\n}: DependencyTreeParams): Promise<{ tree: DependenciesTree }> {\n const config = {\n baseDir: componentDir,\n includeNpm: true,\n requireConfig: null,\n webpackConfig: null,\n visited,\n nonExistent: [],\n cacheProjectAst,\n envDetectors,\n };\n // This is important because without this, madge won't know to resolve files if we run the\n // CMD not from the root dir\n const fullPaths = filePaths.map((filePath) => {\n if (filePath.startsWith(componentDir)) {\n return filePath;\n }\n return path.resolve(componentDir, filePath);\n });\n const { madgeTree, skipped, pathMap, errors } = generateTree(fullPaths, config);\n const tree: DependenciesTree = MadgeTreeToDependenciesTree(madgeTree, componentDir);\n const { missingGroups, foundPackages } = new MissingHandler(\n skipped,\n componentDir,\n workspacePath\n ).groupAndFindMissing();\n\n if (foundPackages) mergeManuallyFoundPackagesToTree(foundPackages, missingGroups, tree);\n if (errors) mergeErrorsToTree(errors, tree);\n if (missingGroups) mergeMissingToTree(missingGroups, tree);\n if (pathMap) updateTreeWithPathMap(tree, pathMap, componentDir);\n\n return { tree };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_lodash","data","require","_path","_interopRequireDefault","_resolvePkgData","_generateTreeMadge","_missingHandler","_pathMap","_dependencyTreeType","e","__esModule","default","groupDependencyList","dependenciesPaths","componentDir","resultGroups","DependenciesTreeItem","isPackage","str","includes","forEach","dependencyPath","files","push","file","resolvedPackage","resolvePackageData","path","join","unidentifiedPackages","componentId","components","version","versionUsedByDependent","concreteVersion","packageWithVersion","name","Object","assign","packages","MadgeTreeToDependenciesTree","tree","result","keys","filePath","isEmpty","updateTreeWithPathMap","pathMapAbsolute","baseDir","length","pathMap","convertPathMapToRelativePaths","treeFiles","mainFilePathMap","find","Error","filter","dependency","fileObject","dependencyPathMap","dependencies","resolvedDep","importSource","importSpecifiers","depImportSpecifiers","map","importSpecifier","mainFile","mergeManuallyFoundPackagesToTree","foundPackages","missingGroups","pkg","fileDep","packageName","set","originFile","component","mergeMissingToTree","missing","missingCloned","clone","mergeErrorsToTree","errors","error","getDependencyTree","workspacePath","filePaths","visited","cacheProjectAst","envDetectors","config","includeNpm","requireConfig","webpackConfig","nonExistent","fullPaths","startsWith","resolve","madgeTree","skipped","generateTree","MissingHandler","groupAndFindMissing"],"sources":["build-tree.ts"],"sourcesContent":["import { clone, isEmpty, set } from 'lodash';\nimport path from 'path';\nimport { resolvePackageData } from '../resolve-pkg-data';\nimport type { MadgeTree } from './generate-tree-madge';\nimport generateTree from './generate-tree-madge';\nimport type { FoundPackages, MissingGroupItem } from './missing-handler';\nimport { MissingHandler } from './missing-handler';\nimport type { PathMapItem } from './path-map';\nimport { convertPathMapToRelativePaths } from './path-map';\nimport type { DependencyTreeParams, FileObject, DependenciesTree } from './types/dependency-tree-type';\nimport { DependenciesTreeItem } from './types/dependency-tree-type';\n\n/**\n * Gets a list of dependencies and group them by types (files, components, packages)\n * It's also transform the node package dependencies from array of paths to object in this format:\n * {dependencyName: version} (like in package.json)\n *\n * componentDir is the root of working directory (used for node packages version calculation)\n */\nfunction groupDependencyList(dependenciesPaths: string[], componentDir: string): DependenciesTreeItem {\n const resultGroups = new DependenciesTreeItem();\n const isPackage = (str: string) => str.includes('node_modules/');\n dependenciesPaths.forEach((dependencyPath) => {\n if (!isPackage(dependencyPath)) {\n resultGroups.files.push({ file: dependencyPath });\n return;\n }\n const resolvedPackage = resolvePackageData(componentDir, path.join(componentDir, dependencyPath));\n if (!resolvedPackage) {\n // package doesn't have package.json, probably it's a custom-resolve-module dep file\n resultGroups.unidentifiedPackages.push(dependencyPath);\n return;\n }\n\n // If the package is a component add it to the components list\n if (resolvedPackage.componentId) {\n resultGroups.components.push(resolvedPackage);\n return;\n }\n const version = resolvedPackage.versionUsedByDependent || resolvedPackage.concreteVersion;\n const packageWithVersion = {\n [resolvedPackage.name]: version,\n };\n Object.assign(resultGroups.packages, packageWithVersion);\n });\n\n return resultGroups;\n}\n\n/**\n * Run over each entry in the tree and transform the dependencies from list of paths\n * to object with dependencies types\n *\n * @returns new tree with grouped dependencies\n */\nfunction MadgeTreeToDependenciesTree(tree: MadgeTree, componentDir: string): DependenciesTree {\n const result: DependenciesTree = {};\n Object.keys(tree).forEach((filePath) => {\n if (tree[filePath] && !isEmpty(tree[filePath])) {\n result[filePath] = groupDependencyList(tree[filePath], componentDir);\n } else {\n result[filePath] = new DependenciesTreeItem();\n }\n });\n\n return result;\n}\n\n/**\n * add extra data such as custom-resolve and link-files from pathMap\n */\nfunction updateTreeWithPathMap(tree: DependenciesTree, pathMapAbsolute: PathMapItem[], baseDir: string): void {\n if (!pathMapAbsolute.length) return;\n const pathMap = convertPathMapToRelativePaths(pathMapAbsolute, baseDir);\n Object.keys(tree).forEach((filePath: string) => {\n const treeFiles = tree[filePath].files;\n if (!treeFiles.length) return; // file has no dependency\n const mainFilePathMap = pathMap.find((file) => file.file === filePath);\n if (!mainFilePathMap) throw new Error(`updateTreeWithPathMap: PathMap is missing for ${filePath}`);\n // a file might have a cycle dependency with itself, remove it from the dependencies.\n tree[filePath].files = treeFiles.filter((dependency) => dependency.file !== filePath);\n tree[filePath].files.forEach((fileObject: FileObject) => {\n const dependencyPathMap = mainFilePathMap.dependencies.find((file) => file.resolvedDep === fileObject.file);\n if (!dependencyPathMap) {\n throw new Error(`updateTreeWithPathMap: dependencyPathMap is missing for ${fileObject.file}`);\n }\n fileObject.importSource = dependencyPathMap.importSource;\n if (dependencyPathMap.importSpecifiers && dependencyPathMap.importSpecifiers.length) {\n const depImportSpecifiers = dependencyPathMap.importSpecifiers.map((importSpecifier) => {\n return {\n mainFile: importSpecifier,\n };\n });\n fileObject.importSpecifiers = depImportSpecifiers;\n }\n return fileObject;\n });\n });\n}\n\nfunction mergeManuallyFoundPackagesToTree(\n foundPackages: FoundPackages,\n missingGroups: MissingGroupItem[],\n tree: DependenciesTree\n) {\n if (isEmpty(foundPackages.components) && isEmpty(foundPackages.packages)) return;\n // Merge manually found packages (by groupMissing()) with the packages found by Madge (generate-tree-madge)\n Object.keys(foundPackages.packages).forEach((pkg) => {\n // locate package in groups(contains missing)\n missingGroups.forEach((fileDep: MissingGroupItem) => {\n if (fileDep.packages && fileDep.packages.includes(pkg)) {\n fileDep.packages = fileDep.packages.filter((packageName) => packageName !== pkg);\n set(tree[fileDep.originFile], ['packages', pkg], foundPackages.packages[pkg]);\n }\n });\n });\n foundPackages.components.forEach((component) => {\n missingGroups.forEach((fileDep: MissingGroupItem) => {\n if (fileDep.packages && fileDep.packages.includes(component.name)) {\n fileDep.packages = fileDep.packages.filter((packageName) => packageName !== component.name);\n (tree[fileDep.originFile] ||= new DependenciesTreeItem()).components.push(component);\n }\n });\n });\n}\n\nfunction mergeMissingToTree(missingGroups, tree: DependenciesTree) {\n if (isEmpty(missingGroups)) return;\n missingGroups.forEach((missing) => {\n const missingCloned = clone(missing);\n delete missingCloned.originFile;\n (tree[missing.originFile] ||= new DependenciesTreeItem()).missing = missingCloned;\n });\n}\n\nfunction mergeErrorsToTree(errors, tree: DependenciesTree) {\n if (isEmpty(errors)) return;\n Object.keys(errors).forEach((file) => {\n (tree[file] ||= new DependenciesTreeItem()).error = errors[file];\n });\n}\n\n/**\n * Function for fetching dependency tree of file or dir\n * @param baseDir working directory\n * @param workspacePath\n * @param filePaths path of the file to calculate the dependencies\n */\nexport async function getDependencyTree({\n componentDir, // component rootDir\n workspacePath,\n filePaths,\n visited = {},\n cacheProjectAst,\n envDetectors,\n}: DependencyTreeParams): Promise<{ tree: DependenciesTree }> {\n const config = {\n baseDir: componentDir,\n includeNpm: true,\n requireConfig: null,\n webpackConfig: null,\n visited,\n nonExistent: [],\n cacheProjectAst,\n envDetectors,\n };\n // This is important because without this, madge won't know to resolve files if we run the\n // CMD not from the root dir\n const fullPaths = filePaths.map((filePath) => {\n if (filePath.startsWith(componentDir)) {\n return filePath;\n }\n return path.resolve(componentDir, filePath);\n });\n const { madgeTree, skipped, pathMap, errors } = await generateTree(fullPaths, config);\n const tree: DependenciesTree = MadgeTreeToDependenciesTree(madgeTree, componentDir);\n const { missingGroups, foundPackages } = new MissingHandler(\n skipped,\n componentDir,\n workspacePath\n ).groupAndFindMissing();\n\n if (foundPackages) mergeManuallyFoundPackagesToTree(foundPackages, missingGroups, tree);\n if (errors) mergeErrorsToTree(errors, tree);\n if (missingGroups) mergeMissingToTree(missingGroups, tree);\n if (pathMap) updateTreeWithPathMap(tree, pathMap, componentDir);\n\n return { tree };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -60,7 +60,7 @@ const debug = (0, _debug().default)('tree');
|
|
|
60
60
|
* @param {Array} [options.nonExistent] - List of partials that do not exist
|
|
61
61
|
* @return {Object}
|
|
62
62
|
*/
|
|
63
|
-
function _default(options) {
|
|
63
|
+
async function _default(options) {
|
|
64
64
|
const config = new (_Config().default)(options);
|
|
65
65
|
if (!_fs().default.existsSync(config.filename)) {
|
|
66
66
|
debug(`file ${config.filename} does not exist`);
|
|
@@ -94,7 +94,7 @@ module.exports.toList = function (options) {
|
|
|
94
94
|
* @param {Config} config
|
|
95
95
|
* @return {Array}
|
|
96
96
|
*/
|
|
97
|
-
module.exports._getDependencies = function (config) {
|
|
97
|
+
module.exports._getDependencies = async function (config) {
|
|
98
98
|
let dependenciesRaw; // from some detectives it comes as an array, from some it is an object
|
|
99
99
|
const precinctOptions = config.detectiveConfig;
|
|
100
100
|
precinctOptions.includeCore = false;
|
|
@@ -102,7 +102,7 @@ module.exports._getDependencies = function (config) {
|
|
|
102
102
|
// @ts-ignore
|
|
103
103
|
delete _precinct().default.ast;
|
|
104
104
|
try {
|
|
105
|
-
dependenciesRaw = _precinct().default.paperwork(config.filename, precinctOptions);
|
|
105
|
+
dependenciesRaw = await _precinct().default.paperwork(config.filename, precinctOptions);
|
|
106
106
|
} catch (e) {
|
|
107
107
|
debug(`error getting dependencies: ${e.message}`);
|
|
108
108
|
debug(e.stack);
|
|
@@ -195,7 +195,7 @@ module.exports._getDependencies = function (config) {
|
|
|
195
195
|
* `pathMap` has the dependencies and some more info, such as importSpecifiers. we should use only
|
|
196
196
|
* pathMap and get rid of tree.
|
|
197
197
|
*/
|
|
198
|
-
function traverse(config) {
|
|
198
|
+
async function traverse(config) {
|
|
199
199
|
const tree = [];
|
|
200
200
|
const stack = [config.filename];
|
|
201
201
|
while (stack.length) {
|
|
@@ -204,14 +204,14 @@ function traverse(config) {
|
|
|
204
204
|
if (config.visited[dependency]) {
|
|
205
205
|
populateFromCache(dependency);
|
|
206
206
|
} else {
|
|
207
|
-
traverseDependency(dependency);
|
|
207
|
+
await traverseDependency(dependency);
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
return tree;
|
|
211
|
-
function traverseDependency(dependency) {
|
|
211
|
+
async function traverseDependency(dependency) {
|
|
212
212
|
const localConfig = config.clone();
|
|
213
213
|
localConfig.filename = dependency;
|
|
214
|
-
let dependencies = module.exports._getDependencies(localConfig);
|
|
214
|
+
let dependencies = await module.exports._getDependencies(localConfig);
|
|
215
215
|
if (config.filter) {
|
|
216
216
|
debug('using filter function to filter out dependencies');
|
|
217
217
|
debug(`number of dependencies before filtering: ${dependencies.length}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fs","data","_interopRequireDefault","require","_debug","_filingCabinet","_precinct","_Config","e","__esModule","default","debug","debugFactory","_default","options","config","Config","fs","existsSync","filename","traverse","module","exports","toList","isListForm","_getDependencies","dependenciesRaw","precinctOptions","detectiveConfig","includeCore","envDetectors","precinct","ast","paperwork","message","stack","code","errors","dependencies","Array","isArray","Object","keys","isDependenciesArray","length","resolvedDependencies","pathMapDependencies","pathMapFile","file","forEach","dependency","processDependency","pathMap","push","isHttp","cabinetParams","directory","requireConfig","webpackConfig","resolveConfig","isScript","undefined","result","cabinet","err","addToNonExistent","exists","importSource","resolvedDep","importSpecifiers","nonExistent","tree","pop","visited","populateFromCache","traverseDependency","localConfig","clone","filter","filePath","filePathMap","find","pathMapEntry","Error","missing","error","dependenciesStack","findAllDependenciesInCache","map","d","Boolean","startsWith"],"sources":["index.ts"],"sourcesContent":["/**\n * this file had been forked from https://github.com/dependents/node-dependency-tree\n */\nimport fs from 'fs';\nimport debugFactory from 'debug';\nimport cabinet from '../filing-cabinet';\nimport precinct from '../precinct';\nimport Config from './Config';\n\nconst debug = debugFactory('tree');\n\n/**\n * Recursively find all dependencies (avoiding circular) traversing the entire dependency tree\n * and returns a flat list of all unique, visited nodes\n *\n * @param {Object} options\n * @param {String} options.filename - The path of the module whose tree to traverse\n * @param {String} options.directory - The directory containing all JS files\n * @param {String} [options.requireConfig] - The path to a requirejs config\n * @param {String} [options.webpackConfig] - The path to a webpack config\n * @param {Object} [options.visited] - Cache of visited, absolutely pathed files that should not be reprocessed.\n * Format is a filename -> tree as list lookup table\n * @param {Array} [options.nonExistent] - List of partials that do not exist\n * @return {Object}\n */\nexport default function (options) {\n const config = new Config(options);\n\n if (!fs.existsSync(config.filename)) {\n debug(`file ${config.filename} does not exist`);\n return {};\n }\n return traverse(config);\n}\n\n/**\n * Executes a post-order depth first search on the dependency tree and returns a\n * list of absolute file paths. The order of files in the list will be the\n * proper concatenation order for bundling.\n *\n * In other words, for any file in the list, all of that file's dependencies (direct or indirect) will appear at\n * lower indices in the list. The root (entry point) file will therefore appear last.\n *\n * The list will not contain duplicates.\n *\n * Params are those of module.exports\n */\nmodule.exports.toList = function (options) {\n options.isListForm = true;\n\n return module.exports(options);\n};\n\n/**\n * Returns the list of dependencies for the given filename\n *\n * Protected for testing\n *\n * @param {Config} config\n * @return {Array}\n */\nmodule.exports._getDependencies = function (config) {\n let dependenciesRaw; // from some detectives it comes as an array, from some it is an object\n const precinctOptions = config.detectiveConfig;\n precinctOptions.includeCore = false;\n precinctOptions.envDetectors = config.envDetectors;\n // @ts-ignore\n delete precinct.ast;\n\n try {\n dependenciesRaw = precinct.paperwork(config.filename, precinctOptions);\n } catch (e: any) {\n debug(`error getting dependencies: ${e.message}`);\n debug(e.stack);\n e.code = 'PARSING_ERROR';\n config.errors[config.filename] = e;\n dependenciesRaw = [];\n }\n const dependencies =\n typeof dependenciesRaw === 'object' && !Array.isArray(dependenciesRaw)\n ? Object.keys(dependenciesRaw)\n : dependenciesRaw;\n const isDependenciesArray = Array.isArray(dependenciesRaw);\n debug(`extracted ${dependencies.length} dependencies: `, dependencies);\n\n const resolvedDependencies = [];\n const pathMapDependencies = [];\n const pathMapFile = { file: config.filename };\n\n dependencies.forEach((dependency) => processDependency(dependency));\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n pathMapFile.dependencies = pathMapDependencies;\n config.pathMap.push(pathMapFile);\n return resolvedDependencies;\n\n function processDependency(dependency) {\n if (isHttp(dependency)) {\n debug(`skipping an http dependency: ${dependency}`);\n return;\n }\n const cabinetParams = {\n dependency,\n filename: config.filename,\n directory: config.directory,\n // @ts-ignore\n ast: precinct.ast,\n config: config.requireConfig,\n webpackConfig: config.webpackConfig,\n resolveConfig: config.resolveConfig,\n envDetectors: config.envDetectors,\n };\n if (!isDependenciesArray && dependenciesRaw[dependency].isScript !== undefined) {\n // used for vue\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n cabinetParams.isScript = dependenciesRaw[dependency].isScript;\n }\n let result;\n try {\n result = cabinet(cabinetParams);\n } catch (err: any) {\n debug(`error resolving dependencies: ${err.message}`);\n debug(err.stack);\n err.code = 'RESOLVE_ERROR';\n throw err;\n }\n\n if (!result) {\n debug(`skipping an empty filepath resolution for dependency: ${dependency}`);\n addToNonExistent(dependency);\n return;\n }\n\n const exists = fs.existsSync(result);\n\n if (!exists) {\n addToNonExistent(dependency);\n debug(`skipping non-empty but non-existent resolution: ${result} for dependency: ${dependency}`);\n return;\n }\n const pathMap = { importSource: dependency, resolvedDep: result };\n if (!isDependenciesArray && dependenciesRaw[dependency].importSpecifiers) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n pathMap.importSpecifiers = dependenciesRaw[dependency].importSpecifiers;\n }\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n pathMapDependencies.push(pathMap);\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n resolvedDependencies.push(result);\n }\n function addToNonExistent(dependency) {\n if (config.nonExistent[config.filename]) {\n config.nonExistent[config.filename].push(dependency);\n } else {\n config.nonExistent[config.filename] = [dependency];\n }\n }\n};\n\n/**\n * the traverse is not a recursive function anymore, it has been changed to be iterative to fix\n * some performance issues.\n * @todo: we have some redundancy here with the `tree` and pathMap`. the `tree` has only the dependencies,\n * `pathMap` has the dependencies and some more info, such as importSpecifiers. we should use only\n * pathMap and get rid of tree.\n */\nfunction traverse(config) {\n const tree = [];\n const stack = [config.filename];\n while (stack.length) {\n const dependency = stack.pop();\n debug(`traversing ${dependency}`);\n if (config.visited[dependency]) {\n populateFromCache(dependency);\n } else {\n traverseDependency(dependency);\n }\n }\n\n return tree;\n\n function traverseDependency(dependency) {\n const localConfig = config.clone();\n localConfig.filename = dependency;\n let dependencies = module.exports._getDependencies(localConfig);\n if (config.filter) {\n debug('using filter function to filter out dependencies');\n debug(`number of dependencies before filtering: ${dependencies.length}`);\n dependencies = dependencies.filter(function (filePath) {\n return localConfig.filter(filePath, localConfig.filename);\n });\n debug(`number of dependencies after filtering: ${dependencies.length}`);\n }\n debug('cabinet-resolved all dependencies: ', dependencies);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n tree[dependency] = dependencies;\n const filePathMap = config.pathMap.find((pathMapEntry) => pathMapEntry.file === dependency);\n if (!filePathMap) throw new Error(`file ${dependency} is missing from PathMap`);\n config.visited[dependency] = {\n pathMap: filePathMap,\n missing: config.nonExistent[dependency],\n error: config.errors[dependency],\n };\n stack.push(...dependencies);\n }\n\n function populateFromCache(dependency) {\n debug(`already visited ${dependency}. Will try to find it and its dependencies in the cache`);\n const dependenciesStack = [dependency];\n while (dependenciesStack.length) {\n findAllDependenciesInCache(dependenciesStack);\n }\n }\n\n function findAllDependenciesInCache(dependenciesStack) {\n const dependency = dependenciesStack.pop();\n if (!config.visited[dependency]) {\n debug(`unable to find ${dependency} in the cache, it was probably filtered before`);\n return;\n }\n debug(`found ${dependency} in the cache`);\n const dependencies = config.visited[dependency].pathMap.dependencies.map((d) => d.resolvedDep);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n tree[dependency] = dependencies;\n config.pathMap.push(config.visited[dependency].pathMap);\n if (config.visited[dependency].missing) {\n config.nonExistent[dependency] = config.visited[dependency].missing;\n }\n if (config.visited[dependency].error) {\n config.errors[dependency] = config.visited[dependency].error;\n }\n dependencies.forEach((d) => {\n if (!tree[d]) dependenciesStack.push(d);\n });\n }\n}\n\n/**\n * whether the dependency is from CDN. (http/https)\n */\nfunction isHttp(dependency) {\n return Boolean(dependency.startsWith('http://') || dependency.startsWith('https://'));\n}\n"],"mappings":";;;;;;AAGA,SAAAA,IAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,GAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,OAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,MAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,eAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,cAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,UAAA;EAAA,MAAAL,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAG,SAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,QAAA;EAAA,MAAAN,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAI,OAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8B,SAAAC,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAP9B;AACA;AACA;;AAOA,MAAMG,KAAK,GAAG,IAAAC,gBAAY,EAAC,MAAM,CAAC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAAC,SAAUC,OAAO,EAAE;EAChC,MAAMC,MAAM,GAAG,KAAIC,iBAAM,EAACF,OAAO,CAAC;EAElC,IAAI,CAACG,aAAE,CAACC,UAAU,CAACH,MAAM,CAACI,QAAQ,CAAC,EAAE;IACnCR,KAAK,CAAC,QAAQI,MAAM,CAACI,QAAQ,iBAAiB,CAAC;IAC/C,OAAO,CAAC,CAAC;EACX;EACA,OAAOC,QAAQ,CAACL,MAAM,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAM,MAAM,CAACC,OAAO,CAACC,MAAM,GAAG,UAAUT,OAAO,EAAE;EACzCA,OAAO,CAACU,UAAU,GAAG,IAAI;EAEzB,OAAOH,MAAM,CAACC,OAAO,CAACR,OAAO,CAAC;AAChC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAO,MAAM,CAACC,OAAO,CAACG,gBAAgB,GAAG,UAAUV,MAAM,EAAE;EAClD,IAAIW,eAAe,CAAC,CAAC;EACrB,MAAMC,eAAe,GAAGZ,MAAM,CAACa,eAAe;EAC9CD,eAAe,CAACE,WAAW,GAAG,KAAK;EACnCF,eAAe,CAACG,YAAY,GAAGf,MAAM,CAACe,YAAY;EAClD;EACA,OAAOC,mBAAQ,CAACC,GAAG;EAEnB,IAAI;IACFN,eAAe,GAAGK,mBAAQ,CAACE,SAAS,CAAClB,MAAM,CAACI,QAAQ,EAAEQ,eAAe,CAAC;EACxE,CAAC,CAAC,OAAOnB,CAAM,EAAE;IACfG,KAAK,CAAC,+BAA+BH,CAAC,CAAC0B,OAAO,EAAE,CAAC;IACjDvB,KAAK,CAACH,CAAC,CAAC2B,KAAK,CAAC;IACd3B,CAAC,CAAC4B,IAAI,GAAG,eAAe;IACxBrB,MAAM,CAACsB,MAAM,CAACtB,MAAM,CAACI,QAAQ,CAAC,GAAGX,CAAC;IAClCkB,eAAe,GAAG,EAAE;EACtB;EACA,MAAMY,YAAY,GAChB,OAAOZ,eAAe,KAAK,QAAQ,IAAI,CAACa,KAAK,CAACC,OAAO,CAACd,eAAe,CAAC,GAClEe,MAAM,CAACC,IAAI,CAAChB,eAAe,CAAC,GAC5BA,eAAe;EACrB,MAAMiB,mBAAmB,GAAGJ,KAAK,CAACC,OAAO,CAACd,eAAe,CAAC;EAC1Df,KAAK,CAAC,aAAa2B,YAAY,CAACM,MAAM,iBAAiB,EAAEN,YAAY,CAAC;EAEtE,MAAMO,oBAAoB,GAAG,EAAE;EAC/B,MAAMC,mBAAmB,GAAG,EAAE;EAC9B,MAAMC,WAAW,GAAG;IAAEC,IAAI,EAAEjC,MAAM,CAACI;EAAS,CAAC;EAE7CmB,YAAY,CAACW,OAAO,CAAEC,UAAU,IAAKC,iBAAiB,CAACD,UAAU,CAAC,CAAC;EACnE;EACAH,WAAW,CAACT,YAAY,GAAGQ,mBAAmB;EAC9C/B,MAAM,CAACqC,OAAO,CAACC,IAAI,CAACN,WAAW,CAAC;EAChC,OAAOF,oBAAoB;EAE3B,SAASM,iBAAiBA,CAACD,UAAU,EAAE;IACrC,IAAII,MAAM,CAACJ,UAAU,CAAC,EAAE;MACtBvC,KAAK,CAAC,gCAAgCuC,UAAU,EAAE,CAAC;MACnD;IACF;IACA,MAAMK,aAAa,GAAG;MACpBL,UAAU;MACV/B,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;MACzBqC,SAAS,EAAEzC,MAAM,CAACyC,SAAS;MAC3B;MACAxB,GAAG,EAAED,mBAAQ,CAACC,GAAG;MACjBjB,MAAM,EAAEA,MAAM,CAAC0C,aAAa;MAC5BC,aAAa,EAAE3C,MAAM,CAAC2C,aAAa;MACnCC,aAAa,EAAE5C,MAAM,CAAC4C,aAAa;MACnC7B,YAAY,EAAEf,MAAM,CAACe;IACvB,CAAC;IACD,IAAI,CAACa,mBAAmB,IAAIjB,eAAe,CAACwB,UAAU,CAAC,CAACU,QAAQ,KAAKC,SAAS,EAAE;MAC9E;MACA;MACAN,aAAa,CAACK,QAAQ,GAAGlC,eAAe,CAACwB,UAAU,CAAC,CAACU,QAAQ;IAC/D;IACA,IAAIE,MAAM;IACV,IAAI;MACFA,MAAM,GAAG,IAAAC,wBAAO,EAACR,aAAa,CAAC;IACjC,CAAC,CAAC,OAAOS,GAAQ,EAAE;MACjBrD,KAAK,CAAC,iCAAiCqD,GAAG,CAAC9B,OAAO,EAAE,CAAC;MACrDvB,KAAK,CAACqD,GAAG,CAAC7B,KAAK,CAAC;MAChB6B,GAAG,CAAC5B,IAAI,GAAG,eAAe;MAC1B,MAAM4B,GAAG;IACX;IAEA,IAAI,CAACF,MAAM,EAAE;MACXnD,KAAK,CAAC,yDAAyDuC,UAAU,EAAE,CAAC;MAC5Ee,gBAAgB,CAACf,UAAU,CAAC;MAC5B;IACF;IAEA,MAAMgB,MAAM,GAAGjD,aAAE,CAACC,UAAU,CAAC4C,MAAM,CAAC;IAEpC,IAAI,CAACI,MAAM,EAAE;MACXD,gBAAgB,CAACf,UAAU,CAAC;MAC5BvC,KAAK,CAAC,mDAAmDmD,MAAM,oBAAoBZ,UAAU,EAAE,CAAC;MAChG;IACF;IACA,MAAME,OAAO,GAAG;MAAEe,YAAY,EAAEjB,UAAU;MAAEkB,WAAW,EAAEN;IAAO,CAAC;IACjE,IAAI,CAACnB,mBAAmB,IAAIjB,eAAe,CAACwB,UAAU,CAAC,CAACmB,gBAAgB,EAAE;MACxE;MACAjB,OAAO,CAACiB,gBAAgB,GAAG3C,eAAe,CAACwB,UAAU,CAAC,CAACmB,gBAAgB;IACzE;;IAEA;IACAvB,mBAAmB,CAACO,IAAI,CAACD,OAAO,CAAC;;IAEjC;IACAP,oBAAoB,CAACQ,IAAI,CAACS,MAAM,CAAC;EACnC;EACA,SAASG,gBAAgBA,CAACf,UAAU,EAAE;IACpC,IAAInC,MAAM,CAACuD,WAAW,CAACvD,MAAM,CAACI,QAAQ,CAAC,EAAE;MACvCJ,MAAM,CAACuD,WAAW,CAACvD,MAAM,CAACI,QAAQ,CAAC,CAACkC,IAAI,CAACH,UAAU,CAAC;IACtD,CAAC,MAAM;MACLnC,MAAM,CAACuD,WAAW,CAACvD,MAAM,CAACI,QAAQ,CAAC,GAAG,CAAC+B,UAAU,CAAC;IACpD;EACF;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS9B,QAAQA,CAACL,MAAM,EAAE;EACxB,MAAMwD,IAAI,GAAG,EAAE;EACf,MAAMpC,KAAK,GAAG,CAACpB,MAAM,CAACI,QAAQ,CAAC;EAC/B,OAAOgB,KAAK,CAACS,MAAM,EAAE;IACnB,MAAMM,UAAU,GAAGf,KAAK,CAACqC,GAAG,CAAC,CAAC;IAC9B7D,KAAK,CAAC,cAAcuC,UAAU,EAAE,CAAC;IACjC,IAAInC,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,EAAE;MAC9BwB,iBAAiB,CAACxB,UAAU,CAAC;IAC/B,CAAC,MAAM;MACLyB,kBAAkB,CAACzB,UAAU,CAAC;IAChC;EACF;EAEA,OAAOqB,IAAI;EAEX,SAASI,kBAAkBA,CAACzB,UAAU,EAAE;IACtC,MAAM0B,WAAW,GAAG7D,MAAM,CAAC8D,KAAK,CAAC,CAAC;IAClCD,WAAW,CAACzD,QAAQ,GAAG+B,UAAU;IACjC,IAAIZ,YAAY,GAAGjB,MAAM,CAACC,OAAO,CAACG,gBAAgB,CAACmD,WAAW,CAAC;IAC/D,IAAI7D,MAAM,CAAC+D,MAAM,EAAE;MACjBnE,KAAK,CAAC,kDAAkD,CAAC;MACzDA,KAAK,CAAC,4CAA4C2B,YAAY,CAACM,MAAM,EAAE,CAAC;MACxEN,YAAY,GAAGA,YAAY,CAACwC,MAAM,CAAC,UAAUC,QAAQ,EAAE;QACrD,OAAOH,WAAW,CAACE,MAAM,CAACC,QAAQ,EAAEH,WAAW,CAACzD,QAAQ,CAAC;MAC3D,CAAC,CAAC;MACFR,KAAK,CAAC,2CAA2C2B,YAAY,CAACM,MAAM,EAAE,CAAC;IACzE;IACAjC,KAAK,CAAC,qCAAqC,EAAE2B,YAAY,CAAC;IAC1D;IACAiC,IAAI,CAACrB,UAAU,CAAC,GAAGZ,YAAY;IAC/B,MAAM0C,WAAW,GAAGjE,MAAM,CAACqC,OAAO,CAAC6B,IAAI,CAAEC,YAAY,IAAKA,YAAY,CAAClC,IAAI,KAAKE,UAAU,CAAC;IAC3F,IAAI,CAAC8B,WAAW,EAAE,MAAM,IAAIG,KAAK,CAAC,QAAQjC,UAAU,0BAA0B,CAAC;IAC/EnC,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,GAAG;MAC3BE,OAAO,EAAE4B,WAAW;MACpBI,OAAO,EAAErE,MAAM,CAACuD,WAAW,CAACpB,UAAU,CAAC;MACvCmC,KAAK,EAAEtE,MAAM,CAACsB,MAAM,CAACa,UAAU;IACjC,CAAC;IACDf,KAAK,CAACkB,IAAI,CAAC,GAAGf,YAAY,CAAC;EAC7B;EAEA,SAASoC,iBAAiBA,CAACxB,UAAU,EAAE;IACrCvC,KAAK,CAAC,mBAAmBuC,UAAU,yDAAyD,CAAC;IAC7F,MAAMoC,iBAAiB,GAAG,CAACpC,UAAU,CAAC;IACtC,OAAOoC,iBAAiB,CAAC1C,MAAM,EAAE;MAC/B2C,0BAA0B,CAACD,iBAAiB,CAAC;IAC/C;EACF;EAEA,SAASC,0BAA0BA,CAACD,iBAAiB,EAAE;IACrD,MAAMpC,UAAU,GAAGoC,iBAAiB,CAACd,GAAG,CAAC,CAAC;IAC1C,IAAI,CAACzD,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,EAAE;MAC/BvC,KAAK,CAAC,kBAAkBuC,UAAU,gDAAgD,CAAC;MACnF;IACF;IACAvC,KAAK,CAAC,SAASuC,UAAU,eAAe,CAAC;IACzC,MAAMZ,YAAY,GAAGvB,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,CAACE,OAAO,CAACd,YAAY,CAACkD,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACrB,WAAW,CAAC;IAC9F;IACAG,IAAI,CAACrB,UAAU,CAAC,GAAGZ,YAAY;IAC/BvB,MAAM,CAACqC,OAAO,CAACC,IAAI,CAACtC,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,CAACE,OAAO,CAAC;IACvD,IAAIrC,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,CAACkC,OAAO,EAAE;MACtCrE,MAAM,CAACuD,WAAW,CAACpB,UAAU,CAAC,GAAGnC,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,CAACkC,OAAO;IACrE;IACA,IAAIrE,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,CAACmC,KAAK,EAAE;MACpCtE,MAAM,CAACsB,MAAM,CAACa,UAAU,CAAC,GAAGnC,MAAM,CAAC0D,OAAO,CAACvB,UAAU,CAAC,CAACmC,KAAK;IAC9D;IACA/C,YAAY,CAACW,OAAO,CAAEwC,CAAC,IAAK;MAC1B,IAAI,CAAClB,IAAI,CAACkB,CAAC,CAAC,EAAEH,iBAAiB,CAACjC,IAAI,CAACoC,CAAC,CAAC;IACzC,CAAC,CAAC;EACJ;AACF;;AAEA;AACA;AACA;AACA,SAASnC,MAAMA,CAACJ,UAAU,EAAE;EAC1B,OAAOwC,OAAO,CAACxC,UAAU,CAACyC,UAAU,CAAC,SAAS,CAAC,IAAIzC,UAAU,CAACyC,UAAU,CAAC,UAAU,CAAC,CAAC;AACvF","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_fs","data","_interopRequireDefault","require","_debug","_filingCabinet","_precinct","_Config","e","__esModule","default","debug","debugFactory","_default","options","config","Config","fs","existsSync","filename","traverse","module","exports","toList","isListForm","_getDependencies","dependenciesRaw","precinctOptions","detectiveConfig","includeCore","envDetectors","precinct","ast","paperwork","message","stack","code","errors","dependencies","Array","isArray","Object","keys","isDependenciesArray","length","resolvedDependencies","pathMapDependencies","pathMapFile","file","forEach","dependency","processDependency","pathMap","push","isHttp","cabinetParams","directory","requireConfig","webpackConfig","resolveConfig","isScript","undefined","result","cabinet","err","addToNonExistent","exists","importSource","resolvedDep","importSpecifiers","nonExistent","tree","pop","visited","populateFromCache","traverseDependency","localConfig","clone","filter","filePath","filePathMap","find","pathMapEntry","Error","missing","error","dependenciesStack","findAllDependenciesInCache","map","d","Boolean","startsWith"],"sources":["index.ts"],"sourcesContent":["/**\n * this file had been forked from https://github.com/dependents/node-dependency-tree\n */\nimport fs from 'fs';\nimport debugFactory from 'debug';\nimport cabinet from '../filing-cabinet';\nimport precinct from '../precinct';\nimport Config from './Config';\n\nconst debug = debugFactory('tree');\n\n/**\n * Recursively find all dependencies (avoiding circular) traversing the entire dependency tree\n * and returns a flat list of all unique, visited nodes\n *\n * @param {Object} options\n * @param {String} options.filename - The path of the module whose tree to traverse\n * @param {String} options.directory - The directory containing all JS files\n * @param {String} [options.requireConfig] - The path to a requirejs config\n * @param {String} [options.webpackConfig] - The path to a webpack config\n * @param {Object} [options.visited] - Cache of visited, absolutely pathed files that should not be reprocessed.\n * Format is a filename -> tree as list lookup table\n * @param {Array} [options.nonExistent] - List of partials that do not exist\n * @return {Object}\n */\nexport default async function (options) {\n const config = new Config(options);\n\n if (!fs.existsSync(config.filename)) {\n debug(`file ${config.filename} does not exist`);\n return {};\n }\n return traverse(config);\n}\n\n/**\n * Executes a post-order depth first search on the dependency tree and returns a\n * list of absolute file paths. The order of files in the list will be the\n * proper concatenation order for bundling.\n *\n * In other words, for any file in the list, all of that file's dependencies (direct or indirect) will appear at\n * lower indices in the list. The root (entry point) file will therefore appear last.\n *\n * The list will not contain duplicates.\n *\n * Params are those of module.exports\n */\nmodule.exports.toList = function (options) {\n options.isListForm = true;\n\n return module.exports(options);\n};\n\n/**\n * Returns the list of dependencies for the given filename\n *\n * Protected for testing\n *\n * @param {Config} config\n * @return {Array}\n */\nmodule.exports._getDependencies = async function (config) {\n let dependenciesRaw; // from some detectives it comes as an array, from some it is an object\n const precinctOptions = config.detectiveConfig;\n precinctOptions.includeCore = false;\n precinctOptions.envDetectors = config.envDetectors;\n // @ts-ignore\n delete precinct.ast;\n\n try {\n dependenciesRaw = await precinct.paperwork(config.filename, precinctOptions);\n } catch (e: any) {\n debug(`error getting dependencies: ${e.message}`);\n debug(e.stack);\n e.code = 'PARSING_ERROR';\n config.errors[config.filename] = e;\n dependenciesRaw = [];\n }\n const dependencies =\n typeof dependenciesRaw === 'object' && !Array.isArray(dependenciesRaw)\n ? Object.keys(dependenciesRaw)\n : dependenciesRaw;\n const isDependenciesArray = Array.isArray(dependenciesRaw);\n debug(`extracted ${dependencies.length} dependencies: `, dependencies);\n\n const resolvedDependencies = [];\n const pathMapDependencies = [];\n const pathMapFile = { file: config.filename };\n\n dependencies.forEach((dependency) => processDependency(dependency));\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n pathMapFile.dependencies = pathMapDependencies;\n config.pathMap.push(pathMapFile);\n return resolvedDependencies;\n\n function processDependency(dependency) {\n if (isHttp(dependency)) {\n debug(`skipping an http dependency: ${dependency}`);\n return;\n }\n const cabinetParams = {\n dependency,\n filename: config.filename,\n directory: config.directory,\n // @ts-ignore\n ast: precinct.ast,\n config: config.requireConfig,\n webpackConfig: config.webpackConfig,\n resolveConfig: config.resolveConfig,\n envDetectors: config.envDetectors,\n };\n if (!isDependenciesArray && dependenciesRaw[dependency].isScript !== undefined) {\n // used for vue\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n cabinetParams.isScript = dependenciesRaw[dependency].isScript;\n }\n let result;\n try {\n result = cabinet(cabinetParams);\n } catch (err: any) {\n debug(`error resolving dependencies: ${err.message}`);\n debug(err.stack);\n err.code = 'RESOLVE_ERROR';\n throw err;\n }\n\n if (!result) {\n debug(`skipping an empty filepath resolution for dependency: ${dependency}`);\n addToNonExistent(dependency);\n return;\n }\n\n const exists = fs.existsSync(result);\n\n if (!exists) {\n addToNonExistent(dependency);\n debug(`skipping non-empty but non-existent resolution: ${result} for dependency: ${dependency}`);\n return;\n }\n const pathMap = { importSource: dependency, resolvedDep: result };\n if (!isDependenciesArray && dependenciesRaw[dependency].importSpecifiers) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n pathMap.importSpecifiers = dependenciesRaw[dependency].importSpecifiers;\n }\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n pathMapDependencies.push(pathMap);\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n resolvedDependencies.push(result);\n }\n function addToNonExistent(dependency) {\n if (config.nonExistent[config.filename]) {\n config.nonExistent[config.filename].push(dependency);\n } else {\n config.nonExistent[config.filename] = [dependency];\n }\n }\n};\n\n/**\n * the traverse is not a recursive function anymore, it has been changed to be iterative to fix\n * some performance issues.\n * @todo: we have some redundancy here with the `tree` and pathMap`. the `tree` has only the dependencies,\n * `pathMap` has the dependencies and some more info, such as importSpecifiers. we should use only\n * pathMap and get rid of tree.\n */\nasync function traverse(config) {\n const tree = [];\n const stack = [config.filename];\n while (stack.length) {\n const dependency = stack.pop();\n debug(`traversing ${dependency}`);\n if (config.visited[dependency]) {\n populateFromCache(dependency);\n } else {\n await traverseDependency(dependency);\n }\n }\n\n return tree;\n\n async function traverseDependency(dependency) {\n const localConfig = config.clone();\n localConfig.filename = dependency;\n let dependencies = await module.exports._getDependencies(localConfig);\n if (config.filter) {\n debug('using filter function to filter out dependencies');\n debug(`number of dependencies before filtering: ${dependencies.length}`);\n dependencies = dependencies.filter(function (filePath) {\n return localConfig.filter(filePath, localConfig.filename);\n });\n debug(`number of dependencies after filtering: ${dependencies.length}`);\n }\n debug('cabinet-resolved all dependencies: ', dependencies);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n tree[dependency] = dependencies;\n const filePathMap = config.pathMap.find((pathMapEntry) => pathMapEntry.file === dependency);\n if (!filePathMap) throw new Error(`file ${dependency} is missing from PathMap`);\n config.visited[dependency] = {\n pathMap: filePathMap,\n missing: config.nonExistent[dependency],\n error: config.errors[dependency],\n };\n stack.push(...dependencies);\n }\n\n function populateFromCache(dependency) {\n debug(`already visited ${dependency}. Will try to find it and its dependencies in the cache`);\n const dependenciesStack = [dependency];\n while (dependenciesStack.length) {\n findAllDependenciesInCache(dependenciesStack);\n }\n }\n\n function findAllDependenciesInCache(dependenciesStack) {\n const dependency = dependenciesStack.pop();\n if (!config.visited[dependency]) {\n debug(`unable to find ${dependency} in the cache, it was probably filtered before`);\n return;\n }\n debug(`found ${dependency} in the cache`);\n const dependencies = config.visited[dependency].pathMap.dependencies.map((d) => d.resolvedDep);\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n tree[dependency] = dependencies;\n config.pathMap.push(config.visited[dependency].pathMap);\n if (config.visited[dependency].missing) {\n config.nonExistent[dependency] = config.visited[dependency].missing;\n }\n if (config.visited[dependency].error) {\n config.errors[dependency] = config.visited[dependency].error;\n }\n dependencies.forEach((d) => {\n if (!tree[d]) dependenciesStack.push(d);\n });\n }\n}\n\n/**\n * whether the dependency is from CDN. (http/https)\n */\nfunction isHttp(dependency) {\n return Boolean(dependency.startsWith('http://') || dependency.startsWith('https://'));\n}\n"],"mappings":"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","ignoreList":[]}
|