@teambit/dependencies 1.0.1248 → 1.0.1250
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/dependencies-loader/apply-overrides.ts +1 -2
- package/dependencies-loader/auto-detect-deps.ts +1 -2
- package/dist/dependencies-loader/apply-overrides.d.ts +1 -1
- package/dist/dependencies-loader/apply-overrides.js +0 -1
- package/dist/dependencies-loader/apply-overrides.js.map +1 -1
- package/dist/dependencies-loader/auto-detect-deps.d.ts +1 -1
- package/dist/dependencies-loader/auto-detect-deps.js +0 -1
- package/dist/dependencies-loader/auto-detect-deps.js.map +1 -1
- package/dist/files-dependency-builder/dependency-tree/Config.d.ts +19 -1
- package/dist/files-dependency-builder/dependency-tree/Config.js +66 -60
- package/dist/files-dependency-builder/dependency-tree/Config.js.map +1 -1
- package/dist/files-dependency-builder/dependency-tree/index.js +1 -9
- package/dist/files-dependency-builder/dependency-tree/index.js.map +1 -1
- package/dist/files-dependency-builder/dependency-tree/index.spec.js +0 -10
- package/dist/files-dependency-builder/dependency-tree/index.spec.js.map +1 -1
- package/dist/files-dependency-builder/filing-cabinet/index.d.ts +1 -1
- package/dist/files-dependency-builder/filing-cabinet/index.js.map +1 -1
- package/dist/files-dependency-builder/filing-cabinet/index.spec.js +1 -3
- package/dist/files-dependency-builder/filing-cabinet/index.spec.js.map +1 -1
- package/files-dependency-builder/dependency-tree/Config.ts +54 -55
- package/files-dependency-builder/dependency-tree/index.spec.ts +2 -7
- package/files-dependency-builder/dependency-tree/index.ts +7 -13
- package/files-dependency-builder/filing-cabinet/index.spec.ts +1 -2
- package/files-dependency-builder/filing-cabinet/index.ts +1 -1
- package/package.json +26 -26
- /package/dist/{preview-1793027286168.js → preview-1793039364231.js} +0 -0
|
@@ -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 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":[]}
|
|
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: string[] = [];\n const pathMapDependencies: Array<Record<string, any>> = [];\n const pathMapFile: Record<string, any> = { file: config.filename };\n\n dependencies.forEach((dependency) => processDependency(dependency));\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: Parameters<typeof cabinet>[0] = {\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 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: Record<string, any> = { importSource: dependency, resolvedDep: result };\n if (!isDependenciesArray && dependenciesRaw[dependency].importSpecifiers) {\n pathMap.importSpecifiers = dependenciesRaw[dependency].importSpecifiers;\n }\n\n pathMapDependencies.push(pathMap);\n\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 // an array that is used as a map (keyed by file path), the callers rely on it being an array\n const tree = [] as unknown as Record<string, string[]> & unknown[];\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 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 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":[]}
|
|
@@ -770,19 +770,13 @@ describe('dependencyTree', function () {
|
|
|
770
770
|
nonExistent,
|
|
771
771
|
visited: {}
|
|
772
772
|
};
|
|
773
|
-
|
|
774
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
775
773
|
config.filename = fooFile;
|
|
776
774
|
await dependencyTree(config);
|
|
777
775
|
expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);
|
|
778
|
-
|
|
779
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
780
776
|
config.filename = barFile;
|
|
781
777
|
await dependencyTree(config);
|
|
782
778
|
expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);
|
|
783
779
|
expect(nonExistent[barFile]).to.deep.equal(['non-exist-bar-pkg']);
|
|
784
|
-
|
|
785
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
786
780
|
config.filename = bazFile;
|
|
787
781
|
await dependencyTree(config);
|
|
788
782
|
expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);
|
|
@@ -807,12 +801,8 @@ describe('dependencyTree', function () {
|
|
|
807
801
|
const config = {
|
|
808
802
|
directory
|
|
809
803
|
};
|
|
810
|
-
|
|
811
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
812
804
|
config.filename = baseFile;
|
|
813
805
|
await dependencyTree(config);
|
|
814
|
-
|
|
815
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
816
806
|
config.filename = indexFile;
|
|
817
807
|
const dependencies = await dependencyTree(config);
|
|
818
808
|
expect(dependencies).to.be.ok;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_defenderFs","data","require","_assert","_interopRequireDefault","_path","_rewire","_sinon","_fsExtra","_precinct","_Config","e","__esModule","default","UNIT_TEST_DIR","path","join","BIT_TEMP_ROOT","expect","dependencyTreeRewired","rewire","dependencyTree","fixtures","resolve","__dirname","mockfs","obj","Object","entries","forEach","key","value","fs","mkdirSync","recursive","file","content","filePath","writeFileSync","cleanUnitDir","removeSync","describe","timeout","testTreesForFormat","format","ext","it","root","filename","normalize","tree","assert","aSubTree","ok","filesInSubTree","keys","equal","length","mockStylus","mockSass","mockLess","mockcommonjs","mockes6","mockTS","afterEach","imaginary","directory","subTree","bTree","cTree","some","dep","indexOf","spy","sinon","callCount","_getDependencies","restore","node","nodes","process","cwd","precinct","detectiveConfig","amd","skipLazyLoaded","detective","calledWith","nonExistent","beforeEach","_directory","_revert","__set__","rejects","undefined","filter","doesNotReject","_spy","cache","pathMap","dependencies","visited","includes","skip","_root","_webpackConfig","_testResolution","name","results","toList","webpackConfig","moduleFile","has3rdPartyDep","es6","mixedImports","node_modules","nodeModulesConfig","entry","config","Config","clone","deepEqual","fooFile","barFile","bazFile","to","deep","baseFile","indexFile","be","missing"],"sources":["index.spec.ts"],"sourcesContent":["import { BIT_TEMP_ROOT } from '@teambit/defender.fs.global-bit-temp-dir';\nimport assert from 'assert';\nimport path from 'path';\nimport rewire from 'rewire';\nimport sinon from 'sinon';\nimport fs from 'fs-extra';\n\nimport precinct from '../precinct';\nimport Config from './Config';\n\nconst UNIT_TEST_DIR = path.join(BIT_TEMP_ROOT, 'unit-test');\nconst expect = require('chai').expect;\n\nconst dependencyTreeRewired = rewire('./');\nconst dependencyTree = dependencyTreeRewired.default;\nconst fixtures = path.resolve(`${__dirname}/../fixtures/dependency-tree`);\n\nfunction mockfs(obj: any) {\n Object.entries(obj).forEach(([key, value]) => {\n fs.mkdirSync(key, { recursive: true });\n // @ts-ignore\n Object.entries(value).forEach(([file, content]) => {\n const filePath = path.join(key, file);\n fs.writeFileSync(filePath, content as string);\n });\n });\n}\n\nfunction cleanUnitDir() {\n fs.removeSync(UNIT_TEST_DIR);\n}\n\ndescribe('dependencyTree', function () {\n this.timeout(8000);\n function testTreesForFormat(format, ext = '.js') {\n it('returns an object form of the dependency tree for a file', async () => {\n const root = `${UNIT_TEST_DIR}/${format}`;\n const filename = path.normalize(`${root}/a${ext}`);\n\n const tree = await dependencyTree({ filename, root });\n\n assert(tree instanceof Object);\n\n const aSubTree = tree[filename];\n\n assert.ok(aSubTree instanceof Object);\n const filesInSubTree = Object.keys(aSubTree);\n\n assert.equal(filesInSubTree.length, 2);\n });\n }\n\n function mockStylus() {\n mockfs({\n [`${UNIT_TEST_DIR}/stylus`]: {\n 'a.styl': `\n @import \"b\"\n @require \"c.styl\"\n `,\n 'b.styl': '@import \"c\"',\n 'c.styl': '',\n },\n });\n }\n\n function mockSass() {\n mockfs({\n [`${UNIT_TEST_DIR}/sass`]: {\n 'a.scss': `\n @import \"_b\";\n @import \"_c.scss\";\n `,\n '_b.scss': 'body { color: blue; }',\n '_c.scss': 'body { color: pink; }',\n },\n });\n }\n\n function mockLess() {\n mockfs({\n [`${UNIT_TEST_DIR}/less`]: {\n 'a.less': `\n @import \"b.css\";\n @import \"c.less\";\n `,\n 'b.css': 'body { color: blue; }',\n 'c.less': 'body { color: pink; }',\n },\n });\n }\n\n function mockcommonjs() {\n mockfs({\n [`${UNIT_TEST_DIR}/commonjs`]: {\n 'a.js': `\n var b = require('./b');\n var c = require('./c');\n `,\n 'b.js': `\n var path = require('path');\n module.exports = {};\n `,\n 'c.js': `\n var fs = require('fs');\n module.exports = {};\n `,\n },\n });\n }\n\n function mockes6() {\n mockfs({\n [`${UNIT_TEST_DIR}/es6`]: {\n 'a.js': `\n import b from './b';\n import c from './c';\n `,\n 'b.js': 'export default () => {};',\n 'c.js': 'export default () => {};',\n 'jsx.js': \"import c from './c';\\n export default <jsx />;\",\n 'foo.jsx': \"import React from 'react';\\n import b from './b';\\n export default <jsx />;\",\n 'es7.js': \"import c from './c';\\n export default async function foo() {};\",\n },\n });\n }\n\n function mockTS() {\n mockfs({\n [`${UNIT_TEST_DIR}/ts`]: {\n 'a.ts': `\n import b from './b';\n import c from './c';\n `,\n 'b.ts': 'export default () => {};',\n 'c.ts': 'export default () => {};',\n },\n });\n }\n\n afterEach(() => {\n // mockfs.restore();\n cleanUnitDir();\n });\n\n it('returns an empty object for a non-existent filename', async () => {\n mockfs({\n imaginary: {},\n });\n\n const root = `${UNIT_TEST_DIR}/imaginary`;\n const filename = `${root}/notafile.js`;\n const tree = await dependencyTree({ filename, root });\n\n assert(tree instanceof Object);\n assert(!Object.keys(tree).length);\n });\n\n it('handles nested tree structures', async () => {\n const directory = `${UNIT_TEST_DIR}/extended`;\n\n mockfs({\n [directory]: {\n 'a.js': `\n var b = require('./b');\n var c = require('./c');`,\n 'b.js': `\n var d = require('./d');\n var e = require('./e');`,\n 'c.js': `\n var f = require('./f');\n var g = require('./g');`,\n 'd.js': '',\n 'e.js': '',\n 'f.js': '',\n 'g.js': '',\n },\n });\n\n const filename = path.normalize(`${directory}/a.js`);\n const tree = await dependencyTree({ filename, directory });\n assert(tree[filename] instanceof Object);\n\n // b and c\n const subTree = tree[filename];\n assert.equal(subTree.length, 2);\n\n const bTree = tree[path.normalize(`${directory}/b.js`)];\n const cTree = tree[path.normalize(`${directory}/c.js`)];\n // d and e\n assert.equal(bTree.length, 2);\n // f ang g\n assert.equal(cTree.length, 2);\n });\n\n it('does not include files that are not real (#13)', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var notReal = require(\"./notReal\");',\n },\n });\n\n const directory = `${UNIT_TEST_DIR}/onlyRealDeps`;\n const filename = path.normalize(`${directory}/a.js`);\n\n const tree = await dependencyTree({ filename, directory });\n const subTree = tree[filename];\n\n assert.ok(!Object.keys(subTree).some((dep) => dep.indexOf('notReal') !== -1));\n });\n\n it('does not choke on cyclic dependencies', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/cyclic`]: {\n 'a.js': 'var b = require(\"./b\");',\n 'b.js': 'var a = require(\"./a\");',\n },\n });\n\n const directory = `${UNIT_TEST_DIR}/cyclic`;\n const filename = path.normalize(`${directory}/a.js`);\n\n const spy = sinon.spy(dependencyTreeRewired, '_getDependencies');\n\n const tree = await dependencyTreeRewired.default({ filename, directory });\n\n assert(spy.callCount === 2);\n assert(Object.keys(tree[filename]).length);\n\n await dependencyTreeRewired._getDependencies.restore();\n });\n\n it('excludes Nodejs core modules by default', async () => {\n const directory = `${fixtures}/commonjs`;\n const filename = path.normalize(`${directory}/b.js`);\n\n const tree = await dependencyTree({ filename, directory });\n assert(Object.keys(tree[filename]).length === 0);\n assert(Object.keys(tree)[0].indexOf('b.js') !== -1);\n });\n\n it('returns a list of absolutely pathed files', async () => {\n const directory = `${UNIT_TEST_DIR}/commonjs`;\n const filename = `${directory}/b.js`;\n\n const tree = await dependencyTree({ filename, directory });\n // eslint-disable-next-line\n for (const node in tree.nodes) {\n assert(node.indexOf(process.cwd()) !== -1);\n }\n });\n\n describe('when given a detective configuration', () => {\n it('passes it through to precinct', async () => {\n const spy = sinon.spy(precinct, 'paperwork');\n const directory = path.normalize(`${fixtures}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n const detectiveConfig = {\n amd: {\n skipLazyLoaded: true,\n },\n };\n\n await dependencyTree({\n filename,\n directory,\n detective: detectiveConfig,\n });\n\n assert.ok(spy.calledWith(filename, detectiveConfig));\n spy.restore();\n });\n });\n\n describe('when given a list to store non existent partials', () => {\n describe('and the file contains no valid partials', () => {\n it('stores the invalid partials', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var notReal = require(\"./notReal\");',\n },\n });\n\n const directory = path.normalize(`${UNIT_TEST_DIR}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n const nonExistent = [];\n\n await dependencyTree({ filename, directory, nonExistent });\n\n assert.equal(Object.keys(nonExistent).length, 1);\n assert.equal(nonExistent[filename][0], './notReal');\n });\n });\n\n describe('and the file contains all valid partials', () => {\n it('does not store anything', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var b = require(\"./b\");',\n 'b.js': 'export default 1;',\n },\n });\n\n const directory = `${UNIT_TEST_DIR}/onlyRealDeps`;\n const filename = `${directory}/a.js`;\n const nonExistent = [];\n\n await dependencyTree({ filename, directory, nonExistent });\n\n assert.equal(nonExistent.length, 0);\n });\n });\n\n describe('and the file contains a mix of invalid and valid partials', () => {\n it('stores the invalid ones', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var b = require(\"./b\");',\n 'b.js': 'var c = require(\"./c\"); export default 1;',\n 'c.js': 'var crap = require(\"./notRealMan\");',\n },\n });\n\n const directory = path.normalize(`${UNIT_TEST_DIR}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n const nonExistent = [];\n\n await dependencyTree({ filename, directory, nonExistent });\n\n assert.equal(Object.keys(nonExistent).length, 1);\n assert.equal(nonExistent[path.normalize(`${directory}/c.js`)][0], './notRealMan');\n });\n });\n\n describe('and there is more than one reference to the invalid partial', () => {\n it('should include the non-existent partial per file', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var b = require(\"./b\");\\nvar crap = require(\"./notRealMan\");',\n 'b.js': 'var c = require(\"./c\"); export default 1;',\n 'c.js': 'var crap = require(\"./notRealMan\");',\n },\n });\n\n const directory = path.normalize(`${UNIT_TEST_DIR}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n const nonExistent = [];\n\n await dependencyTree({ filename, directory, nonExistent });\n\n assert.equal(Object.keys(nonExistent).length, 2);\n assert.equal(nonExistent[filename][0], './notRealMan');\n assert.equal(nonExistent[path.normalize(`${directory}/c.js`)][0], './notRealMan');\n });\n });\n });\n\n describe('throws', () => {\n beforeEach(() => {\n // @ts-ignore\n this._directory = `${UNIT_TEST_DIR}/commonjs`;\n // @ts-ignore\n this._revert = dependencyTreeRewired.__set__('traverse', () => []);\n });\n\n afterEach(() => {\n // @ts-ignore\n this._revert();\n });\n\n it('throws if the filename is missing', () => {\n assert.rejects(async () => {\n await dependencyTree({\n filename: undefined,\n // @ts-ignore\n directory: this._directory,\n });\n });\n });\n\n it('throws if the root is missing', () => {\n assert.rejects(async () => {\n await dependencyTree({ filename: undefined });\n });\n });\n\n it('throws if a supplied filter is not a function', () => {\n assert.rejects(async () => {\n const directory = `${UNIT_TEST_DIR}/onlyRealDeps`;\n const filename = `${directory}/a.js`;\n\n await dependencyTree({\n filename,\n directory,\n filter: 'foobar',\n });\n });\n });\n\n it('does not throw on the legacy `root` option', () => {\n assert.doesNotReject(async () => {\n const directory = `${UNIT_TEST_DIR}/onlyRealDeps`;\n const filename = `${directory}/a.js`;\n\n await dependencyTree({\n filename,\n root: directory,\n });\n });\n });\n });\n\n describe('on file error', () => {\n beforeEach(() => {\n // @ts-ignore\n this._directory = `${UNIT_TEST_DIR}/commonjs`;\n });\n\n it('does not throw', () => {\n assert.doesNotReject(async () => {\n await dependencyTree({\n filename: 'foo',\n // @ts-ignore\n directory: this._directory,\n });\n });\n });\n\n it('returns no dependencies', async () => {\n // @ts-ignore\n const tree = await dependencyTree({ filename: 'foo', directory: this._directory });\n assert(!tree.length);\n });\n });\n\n describe('memoization (#2)', () => {\n beforeEach(() => {\n // @ts-ignore\n this._spy = sinon.spy(dependencyTreeRewired, '_getDependencies');\n });\n\n afterEach(async () => {\n await dependencyTreeRewired._getDependencies.restore();\n });\n\n it('returns the precomputed list of a cached entry point', async () => {\n const filename = `${UNIT_TEST_DIR}/amd/a.js`;\n const directory = `${UNIT_TEST_DIR}/amd`;\n\n const cache = {\n // Shouldn't process the first file's tree\n [filename]: { pathMap: { dependencies: [] } },\n };\n\n const tree = await dependencyTree({\n filename,\n directory,\n visited: cache,\n });\n\n assert(!tree.length);\n });\n });\n\n describe('module formats', () => {\n describe('commonjs', () => {\n beforeEach(() => {\n // @ts-ignore\n this._directory = path.normalize(`${UNIT_TEST_DIR}/es6`);\n mockcommonjs();\n });\n\n testTreesForFormat('commonjs');\n });\n\n describe('es6', () => {\n beforeEach(() => {\n // @ts-ignore\n this._directory = path.normalize(`${UNIT_TEST_DIR}/es6`);\n mockes6();\n });\n\n testTreesForFormat('es6');\n\n it('resolves files that have jsx', async () => {\n // @ts-ignore\n const filename = path.normalize(`${this._directory}/jsx.js`);\n const tree = await dependencyTree({\n filename,\n // @ts-ignore\n directory: this._directory,\n });\n // @ts-ignore\n assert.ok(tree[filename].includes(path.normalize(`${this._directory}/c.js`)));\n });\n\n it('resolves files with a jsx extension', async () => {\n // @ts-ignore\n const filename = path.normalize(`${this._directory}/foo.jsx`);\n const tree = await dependencyTree({\n filename,\n // @ts-ignore\n directory: this._directory,\n });\n // @ts-ignore\n assert.ok(tree[filename].includes(path.normalize(`${this._directory}/b.js`)));\n });\n\n it('resolves files that have es7', async () => {\n // @ts-ignore\n const filename = path.normalize(`${this._directory}/es7.js`);\n const tree = await dependencyTree({\n filename,\n // @ts-ignore\n directory: this._directory,\n });\n // @ts-ignore\n assert.ok(tree[filename].includes(path.normalize(`${this._directory}/c.js`)));\n });\n });\n\n describe('sass', () => {\n beforeEach(() => {\n mockSass();\n });\n\n testTreesForFormat('sass', '.scss');\n });\n\n describe('stylus', () => {\n beforeEach(() => {\n mockStylus();\n });\n\n testTreesForFormat('stylus', '.styl');\n });\n\n describe('less', () => {\n beforeEach(() => {\n mockLess();\n });\n\n testTreesForFormat('less', '.less');\n });\n\n describe('typescript', () => {\n beforeEach(() => {\n mockTS();\n });\n\n testTreesForFormat('ts', '.ts');\n });\n });\n\n // skipping the webpack unit tests for now as it's not easy to wire up all the files together.\n // originally, in dependency-tree, the webpack.config.js is in the same directory of the index.js.\n // doing the same here will be confusing. instead, we have already e2e-tests in bit legacy of custom\n // module resolution, which takes advantage of the webpack config.\n describe.skip('webpack', () => {\n beforeEach(() => {\n // Note: not mocking because webpack's resolver needs a real project with dependencies;\n // otherwise, we'd have to mock a ton of files.\n // @ts-ignore\n this._root = path.join(UNIT_TEST_DIR, '../');\n // @ts-ignore\n this._webpackConfig = `${this._root}/webpack.config.js`;\n // @ts-ignore\n this._testResolution = (name) => {\n const results = dependencyTree.toList({\n filename: `${UNIT_TEST_DIR}/webpack/${name}.js`,\n // @ts-ignore\n directory: this._root,\n // @ts-ignore\n webpackConfig: this._webpackConfig,\n filter: (filename) => filename.indexOf('filing-cabinet') !== -1,\n });\n assert.ok(results.some((filename) => filename.indexOf('node_modules/filing-cabinet') !== -1));\n };\n });\n\n it('resolves unaliased modules', () => {\n this.timeout(5000);\n // @ts-ignore\n this._testResolution('unaliased');\n });\n });\n\n describe('when a filter function is supplied', () => {\n it('uses the filter to determine if a file should be included in the results', async () => {\n const directory = path.normalize(`${fixtures}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n\n const tree = await dependencyTree({\n filename,\n directory,\n // Skip all 3rd party deps\n filter: (filePath, moduleFile) => {\n assert.ok(require.resolve('debug'));\n assert.ok(moduleFile.includes(path.normalize('onlyRealDeps/a.js')));\n return filePath.indexOf('node_modules') === -1;\n },\n });\n\n const subTree = tree[filename];\n assert.ok(Object.keys(tree).length);\n\n const has3rdPartyDep = Object.keys(subTree).some((dep) => dep === require.resolve('debug'));\n assert.ok(!has3rdPartyDep);\n });\n });\n\n describe('when given a CJS file with lazy requires', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/cjs`]: {\n 'foo.js': 'module.exports = function(bar = require(\"./bar\")) {};',\n 'bar.js': 'module.exports = 1;',\n },\n });\n });\n\n it('includes the lazy dependency', async () => {\n const directory = `${UNIT_TEST_DIR}/cjs`;\n const filename = path.normalize(`${directory}/foo.js`);\n\n const tree = await dependencyTree({ filename, directory });\n assert.ok(tree[filename].includes(path.normalize(`${directory}/bar.js`)));\n });\n });\n\n describe('when given an es6 file using CJS lazy requires', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/es6`]: {\n 'foo.js': 'export default function(bar = require(\"./bar\")) {};',\n 'bar.js': 'export default 1;',\n },\n });\n });\n\n describe('and mixedImport mode is turned on', () => {\n it('includes the lazy dependency', async () => {\n const directory = `${UNIT_TEST_DIR}/es6`;\n const filename = path.normalize(`${directory}/foo.js`);\n\n const tree = await dependencyTree({\n filename,\n directory,\n detective: {\n es6: {\n mixedImports: true,\n },\n },\n });\n\n assert.ok(tree[filename].includes(path.normalize(`${directory}/bar.js`)));\n });\n });\n });\n\n describe('when given an es6 file using dynamic imports', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/es6`]: {\n 'foo.js': 'import(\"./bar\");',\n 'bar.js': 'export default 1;',\n },\n });\n });\n\n it('includes the dynamic import', async () => {\n const directory = path.normalize(`${UNIT_TEST_DIR}/es6`);\n const filename = path.normalize(`${directory}/foo.js`);\n\n const tree = await dependencyTree({\n filename,\n directory,\n });\n\n const subTree = tree[filename];\n\n assert.ok(!(`${directory}/bar.js` in subTree));\n });\n });\n\n describe('when a dependency of the main file is not supported', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/baz`]: {\n 'foo.js': 'require(\"./bar.json\");',\n 'bar.json': '{ \"main\": \"I\\'m a simple JSON object\" }',\n },\n });\n });\n\n it('should include it as a dependency and not throw an error', async () => {\n const directory = path.normalize(`${UNIT_TEST_DIR}/baz`);\n const filename = path.normalize(`${directory}/foo.js`);\n\n const tree = await dependencyTree({\n filename,\n directory,\n });\n\n assert.ok(path.normalize(path.join(directory, 'bar.json')) in tree);\n });\n });\n\n // nodeModulesConfig is a feature added to dependency-tree and filing-cabinet to support\n // \"module\" attribute of package.json, see here what this attribute is good for:\n // https://github.com/rollup/rollup/wiki/pkg.module\n // the commit of supporting it in filing-cabinet is here: https://github.com/dependents/node-filing-cabinet/commit/abef861a5a725b29c2342d01de94c6e2dd881aa0\n describe.skip('when given a CJS file with module property in package.json', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/es6`]: {\n 'module.entry.js': 'import * as module from \"module.entry\"',\n node_modules: {\n 'module.entry': {\n 'index.main.js': 'module.exports = () => {};',\n 'index.module.js': 'module.exports = () => {};',\n 'package.json': '{ \"main\": \"index.main.js\", \"module\": \"index.module.js\" }',\n },\n },\n },\n });\n });\n\n it('it includes the module entry as dependency', async () => {\n const directory = `${UNIT_TEST_DIR}/es6`;\n const filename = `${directory}/module.entry.js`;\n\n const tree = await dependencyTree({\n filename,\n directory,\n nodeModulesConfig: {\n entry: 'module',\n },\n });\n const subTree = tree[filename];\n\n assert.ok(`${directory}/node_modules/module.entry/index.module.js` in subTree);\n });\n });\n\n describe('Config', () => {\n describe('when cloning', () => {\n describe('and a detective config was set', () => {\n it('retains the detective config in the clone', () => {\n const detectiveConfig = {\n es6: {\n mixedImports: true,\n },\n };\n\n const config = new Config({\n detectiveConfig,\n filename: 'foo',\n directory: 'bar',\n });\n\n const clone = config.clone();\n\n assert.deepEqual(clone.detectiveConfig, detectiveConfig);\n });\n });\n });\n });\n\n describe('when a dependency has missing packages and is retrieved from the cache (visited)', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/baz`]: {\n 'foo.js': 'require(\"non-exist-foo-pkg\");',\n 'bar.js': 'require(\"./foo\"); require(\"non-exist-bar-pkg\")',\n 'baz.js': 'require(\"./foo\"); require(\"./bar\"); require(\"non-exist-baz-pkg\")',\n },\n });\n });\n\n it('should not override the cache with wrong packages', async () => {\n const directory = path.normalize(`${UNIT_TEST_DIR}/baz`);\n const fooFile = path.normalize(`${directory}/foo.js`);\n const barFile = path.normalize(`${directory}/bar.js`);\n const bazFile = path.normalize(`${directory}/baz.js`);\n const nonExistent = {};\n const config = {\n directory,\n nonExistent,\n visited: {},\n };\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n config.filename = fooFile;\n await dependencyTree(config);\n expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n config.filename = barFile;\n await dependencyTree(config);\n expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);\n expect(nonExistent[barFile]).to.deep.equal(['non-exist-bar-pkg']);\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n config.filename = bazFile;\n await dependencyTree(config);\n expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);\n expect(nonExistent[barFile]).to.deep.equal(['non-exist-bar-pkg']);\n expect(nonExistent[bazFile]).to.deep.equal(['non-exist-baz-pkg']);\n });\n });\n describe('passing css files and then javascript files', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/baz`]: {\n 'base.scss': 'li {} a {}', // don't change the content. it crash only with this for some reason\n 'index.jsx': \"require('some-module');\",\n },\n });\n });\n it('should not crash with \"RangeError: Maximum call stack size exceeded\" error', async () => {\n const directory = path.normalize(`${UNIT_TEST_DIR}/baz`);\n const baseFile = path.normalize(`${directory}/base.scss`);\n const indexFile = path.normalize(`${directory}/index.jsx`);\n const config = {\n directory,\n };\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n config.filename = baseFile;\n await dependencyTree(config);\n\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n config.filename = indexFile;\n const dependencies = await dependencyTree(config);\n expect(dependencies).to.be.ok;\n });\n });\n describe('files with dynamic import', () => {\n it('should not show missing dependencies', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/dynamic`]: {\n 'foo.js': 'const a = \"./b\"; import(a); require(a);',\n },\n });\n const directory = path.normalize(`${UNIT_TEST_DIR}/dynamic`);\n const filename = path.normalize(`${directory}/foo.js`);\n const visited = {};\n\n await dependencyTree({\n filename,\n directory,\n visited,\n });\n expect(visited[filename].missing).to.be.undefined;\n });\n });\n describe('files with import from cdn (http, https)', () => {\n it('should not show missing dependencies when importing from https', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/cdn`]: {\n 'foo.js': 'import { a } from \"https://unpkg.com\";',\n },\n });\n const directory = path.normalize(`${UNIT_TEST_DIR}/cdn`);\n const filename = path.normalize(`${directory}/foo.js`);\n const visited = {};\n await dependencyTree({\n filename,\n directory,\n visited,\n });\n expect(visited[filename].missing).to.be.undefined;\n });\n it('should not show missing dependencies when importing from http', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/cdn`]: {\n 'bar.js': 'const b = require(\"http://pkg.com\");',\n },\n });\n const directory = path.normalize(`${UNIT_TEST_DIR}/cdn`);\n const filename = path.normalize(`${directory}/bar.js`);\n const visited = {};\n await dependencyTree({\n filename,\n directory,\n visited,\n });\n expect(visited[filename].missing).to.be.undefined;\n });\n });\n});\n"],"mappings":";;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,QAAA;EAAA,MAAAF,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAC,OAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,MAAA;EAAA,MAAAJ,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAG,KAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAI,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,OAAA;EAAA,MAAAN,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAK,MAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,SAAA;EAAA,MAAAP,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAM,QAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAQ,UAAA;EAAA,MAAAR,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAO,SAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAS,QAAA;EAAA,MAAAT,IAAA,GAAAG,sBAAA,CAAAF,OAAA;EAAAQ,OAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8B,SAAAG,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B,MAAMG,aAAa,GAAGC,eAAI,CAACC,IAAI,CAACC,2BAAa,EAAE,WAAW,CAAC;AAC3D,MAAMC,MAAM,GAAGhB,OAAO,CAAC,MAAM,CAAC,CAACgB,MAAM;AAErC,MAAMC,qBAAqB,GAAG,IAAAC,iBAAM,EAAC,IAAI,CAAC;AAC1C,MAAMC,cAAc,GAAGF,qBAAqB,CAACN,OAAO;AACpD,MAAMS,QAAQ,GAAGP,eAAI,CAACQ,OAAO,CAAC,GAAGC,SAAS,8BAA8B,CAAC;AAEzE,SAASC,MAAMA,CAACC,GAAQ,EAAE;EACxBC,MAAM,CAACC,OAAO,CAACF,GAAG,CAAC,CAACG,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;IAC5CC,kBAAE,CAACC,SAAS,CAACH,GAAG,EAAE;MAAEI,SAAS,EAAE;IAAK,CAAC,CAAC;IACtC;IACAP,MAAM,CAACC,OAAO,CAACG,KAAK,CAAC,CAACF,OAAO,CAAC,CAAC,CAACM,IAAI,EAAEC,OAAO,CAAC,KAAK;MACjD,MAAMC,QAAQ,GAAGtB,eAAI,CAACC,IAAI,CAACc,GAAG,EAAEK,IAAI,CAAC;MACrCH,kBAAE,CAACM,aAAa,CAACD,QAAQ,EAAED,OAAiB,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,SAASG,YAAYA,CAAA,EAAG;EACtBP,kBAAE,CAACQ,UAAU,CAAC1B,aAAa,CAAC;AAC9B;AAEA2B,QAAQ,CAAC,gBAAgB,EAAE,YAAY;EACrC,IAAI,CAACC,OAAO,CAAC,IAAI,CAAC;EAClB,SAASC,kBAAkBA,CAACC,MAAM,EAAEC,GAAG,GAAG,KAAK,EAAE;IAC/CC,EAAE,CAAC,0DAA0D,EAAE,YAAY;MACzE,MAAMC,IAAI,GAAG,GAAGjC,aAAa,IAAI8B,MAAM,EAAE;MACzC,MAAMI,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGF,IAAI,KAAKF,GAAG,EAAE,CAAC;MAElD,MAAMK,IAAI,GAAG,MAAM7B,cAAc,CAAC;QAAE2B,QAAQ;QAAED;MAAK,CAAC,CAAC;MAErD,IAAAI,iBAAM,EAACD,IAAI,YAAYvB,MAAM,CAAC;MAE9B,MAAMyB,QAAQ,GAAGF,IAAI,CAACF,QAAQ,CAAC;MAE/BG,iBAAM,CAACE,EAAE,CAACD,QAAQ,YAAYzB,MAAM,CAAC;MACrC,MAAM2B,cAAc,GAAG3B,MAAM,CAAC4B,IAAI,CAACH,QAAQ,CAAC;MAE5CD,iBAAM,CAACK,KAAK,CAACF,cAAc,CAACG,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;EACJ;EAEA,SAASC,UAAUA,CAAA,EAAG;IACpBjC,MAAM,CAAC;MACL,CAAC,GAAGX,aAAa,SAAS,GAAG;QAC3B,QAAQ,EAAE;AAClB;AACA;AACA,SAAS;QACD,QAAQ,EAAE,aAAa;QACvB,QAAQ,EAAE;MACZ;IACF,CAAC,CAAC;EACJ;EAEA,SAAS6C,QAAQA,CAAA,EAAG;IAClBlC,MAAM,CAAC;MACL,CAAC,GAAGX,aAAa,OAAO,GAAG;QACzB,QAAQ,EAAE;AAClB;AACA;AACA,SAAS;QACD,SAAS,EAAE,uBAAuB;QAClC,SAAS,EAAE;MACb;IACF,CAAC,CAAC;EACJ;EAEA,SAAS8C,QAAQA,CAAA,EAAG;IAClBnC,MAAM,CAAC;MACL,CAAC,GAAGX,aAAa,OAAO,GAAG;QACzB,QAAQ,EAAE;AAClB;AACA;AACA,SAAS;QACD,OAAO,EAAE,uBAAuB;QAChC,QAAQ,EAAE;MACZ;IACF,CAAC,CAAC;EACJ;EAEA,SAAS+C,YAAYA,CAAA,EAAG;IACtBpC,MAAM,CAAC;MACL,CAAC,GAAGX,aAAa,WAAW,GAAG;QAC7B,MAAM,EAAE;AAChB;AACA;AACA,SAAS;QACD,MAAM,EAAE;AAChB;AACA;AACA,SAAS;QACD,MAAM,EAAE;AAChB;AACA;AACA;MACM;IACF,CAAC,CAAC;EACJ;EAEA,SAASgD,OAAOA,CAAA,EAAG;IACjBrC,MAAM,CAAC;MACL,CAAC,GAAGX,aAAa,MAAM,GAAG;QACxB,MAAM,EAAE;AAChB;AACA;AACA,SAAS;QACD,MAAM,EAAE,0BAA0B;QAClC,MAAM,EAAE,0BAA0B;QAClC,QAAQ,EAAE,gDAAgD;QAC1D,SAAS,EAAE,6EAA6E;QACxF,QAAQ,EAAE;MACZ;IACF,CAAC,CAAC;EACJ;EAEA,SAASiD,MAAMA,CAAA,EAAG;IAChBtC,MAAM,CAAC;MACL,CAAC,GAAGX,aAAa,KAAK,GAAG;QACvB,MAAM,EAAE;AAChB;AACA;AACA,SAAS;QACD,MAAM,EAAE,0BAA0B;QAClC,MAAM,EAAE;MACV;IACF,CAAC,CAAC;EACJ;EAEAkD,SAAS,CAAC,MAAM;IACd;IACAzB,YAAY,CAAC,CAAC;EAChB,CAAC,CAAC;EAEFO,EAAE,CAAC,qDAAqD,EAAE,YAAY;IACpErB,MAAM,CAAC;MACLwC,SAAS,EAAE,CAAC;IACd,CAAC,CAAC;IAEF,MAAMlB,IAAI,GAAG,GAAGjC,aAAa,YAAY;IACzC,MAAMkC,QAAQ,GAAG,GAAGD,IAAI,cAAc;IACtC,MAAMG,IAAI,GAAG,MAAM7B,cAAc,CAAC;MAAE2B,QAAQ;MAAED;IAAK,CAAC,CAAC;IAErD,IAAAI,iBAAM,EAACD,IAAI,YAAYvB,MAAM,CAAC;IAC9B,IAAAwB,iBAAM,EAAC,CAACxB,MAAM,CAAC4B,IAAI,CAACL,IAAI,CAAC,CAACO,MAAM,CAAC;EACnC,CAAC,CAAC;EAEFX,EAAE,CAAC,gCAAgC,EAAE,YAAY;IAC/C,MAAMoB,SAAS,GAAG,GAAGpD,aAAa,WAAW;IAE7CW,MAAM,CAAC;MACL,CAACyC,SAAS,GAAG;QACX,MAAM,EAAE;AAChB;AACA,kCAAkC;QAC1B,MAAM,EAAE;AAChB;AACA,kCAAkC;QAC1B,MAAM,EAAE;AAChB;AACA,kCAAkC;QAC1B,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,EAAE;QACV,MAAM,EAAE;MACV;IACF,CAAC,CAAC;IAEF,MAAMlB,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;IACpD,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;MAAE2B,QAAQ;MAAEkB;IAAU,CAAC,CAAC;IAC1D,IAAAf,iBAAM,EAACD,IAAI,CAACF,QAAQ,CAAC,YAAYrB,MAAM,CAAC;;IAExC;IACA,MAAMwC,OAAO,GAAGjB,IAAI,CAACF,QAAQ,CAAC;IAC9BG,iBAAM,CAACK,KAAK,CAACW,OAAO,CAACV,MAAM,EAAE,CAAC,CAAC;IAE/B,MAAMW,KAAK,GAAGlB,IAAI,CAACnC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC,CAAC;IACvD,MAAMG,KAAK,GAAGnB,IAAI,CAACnC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC,CAAC;IACvD;IACAf,iBAAM,CAACK,KAAK,CAACY,KAAK,CAACX,MAAM,EAAE,CAAC,CAAC;IAC7B;IACAN,iBAAM,CAACK,KAAK,CAACa,KAAK,CAACZ,MAAM,EAAE,CAAC,CAAC;EAC/B,CAAC,CAAC;EAEFX,EAAE,CAAC,gDAAgD,EAAE,YAAY;IAC/DrB,MAAM,CAAC;MACL,CAAC,GAAGX,aAAa,eAAe,GAAG;QACjC,MAAM,EAAE;MACV;IACF,CAAC,CAAC;IAEF,MAAMoD,SAAS,GAAG,GAAGpD,aAAa,eAAe;IACjD,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;IAEpD,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;MAAE2B,QAAQ;MAAEkB;IAAU,CAAC,CAAC;IAC1D,MAAMC,OAAO,GAAGjB,IAAI,CAACF,QAAQ,CAAC;IAE9BG,iBAAM,CAACE,EAAE,CAAC,CAAC1B,MAAM,CAAC4B,IAAI,CAACY,OAAO,CAAC,CAACG,IAAI,CAAEC,GAAG,IAAKA,GAAG,CAACC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAC/E,CAAC,CAAC;EAEF1B,EAAE,CAAC,uCAAuC,EAAE,YAAY;IACtDrB,MAAM,CAAC;MACL,CAAC,GAAGX,aAAa,SAAS,GAAG;QAC3B,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE;MACV;IACF,CAAC,CAAC;IAEF,MAAMoD,SAAS,GAAG,GAAGpD,aAAa,SAAS;IAC3C,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;IAEpD,MAAMO,GAAG,GAAGC,gBAAK,CAACD,GAAG,CAACtD,qBAAqB,EAAE,kBAAkB,CAAC;IAEhE,MAAM+B,IAAI,GAAG,MAAM/B,qBAAqB,CAACN,OAAO,CAAC;MAAEmC,QAAQ;MAAEkB;IAAU,CAAC,CAAC;IAEzE,IAAAf,iBAAM,EAACsB,GAAG,CAACE,SAAS,KAAK,CAAC,CAAC;IAC3B,IAAAxB,iBAAM,EAACxB,MAAM,CAAC4B,IAAI,CAACL,IAAI,CAACF,QAAQ,CAAC,CAAC,CAACS,MAAM,CAAC;IAE1C,MAAMtC,qBAAqB,CAACyD,gBAAgB,CAACC,OAAO,CAAC,CAAC;EACxD,CAAC,CAAC;EAEF/B,EAAE,CAAC,yCAAyC,EAAE,YAAY;IACxD,MAAMoB,SAAS,GAAG,GAAG5C,QAAQ,WAAW;IACxC,MAAM0B,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;IAEpD,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;MAAE2B,QAAQ;MAAEkB;IAAU,CAAC,CAAC;IAC1D,IAAAf,iBAAM,EAACxB,MAAM,CAAC4B,IAAI,CAACL,IAAI,CAACF,QAAQ,CAAC,CAAC,CAACS,MAAM,KAAK,CAAC,CAAC;IAChD,IAAAN,iBAAM,EAACxB,MAAM,CAAC4B,IAAI,CAACL,IAAI,CAAC,CAAC,CAAC,CAAC,CAACsB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACrD,CAAC,CAAC;EAEF1B,EAAE,CAAC,2CAA2C,EAAE,YAAY;IAC1D,MAAMoB,SAAS,GAAG,GAAGpD,aAAa,WAAW;IAC7C,MAAMkC,QAAQ,GAAG,GAAGkB,SAAS,OAAO;IAEpC,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;MAAE2B,QAAQ;MAAEkB;IAAU,CAAC,CAAC;IAC1D;IACA,KAAK,MAAMY,IAAI,IAAI5B,IAAI,CAAC6B,KAAK,EAAE;MAC7B,IAAA5B,iBAAM,EAAC2B,IAAI,CAACN,OAAO,CAACQ,OAAO,CAACC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C;EACF,CAAC,CAAC;EAEFxC,QAAQ,CAAC,sCAAsC,EAAE,MAAM;IACrDK,EAAE,CAAC,+BAA+B,EAAE,YAAY;MAC9C,MAAM2B,GAAG,GAAGC,gBAAK,CAACD,GAAG,CAACS,mBAAQ,EAAE,WAAW,CAAC;MAC5C,MAAMhB,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAG3B,QAAQ,eAAe,CAAC;MAC5D,MAAM0B,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;MACpD,MAAMiB,eAAe,GAAG;QACtBC,GAAG,EAAE;UACHC,cAAc,EAAE;QAClB;MACF,CAAC;MAED,MAAMhE,cAAc,CAAC;QACnB2B,QAAQ;QACRkB,SAAS;QACToB,SAAS,EAAEH;MACb,CAAC,CAAC;MAEFhC,iBAAM,CAACE,EAAE,CAACoB,GAAG,CAACc,UAAU,CAACvC,QAAQ,EAAEmC,eAAe,CAAC,CAAC;MACpDV,GAAG,CAACI,OAAO,CAAC,CAAC;IACf,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFpC,QAAQ,CAAC,kDAAkD,EAAE,MAAM;IACjEA,QAAQ,CAAC,yCAAyC,EAAE,MAAM;MACxDK,EAAE,CAAC,6BAA6B,EAAE,YAAY;QAC5CrB,MAAM,CAAC;UACL,CAAC,GAAGX,aAAa,eAAe,GAAG;YACjC,MAAM,EAAE;UACV;QACF,CAAC,CAAC;QAEF,MAAMoD,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,eAAe,CAAC;QACjE,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;QACpD,MAAMsB,WAAW,GAAG,EAAE;QAEtB,MAAMnE,cAAc,CAAC;UAAE2B,QAAQ;UAAEkB,SAAS;UAAEsB;QAAY,CAAC,CAAC;QAE1DrC,iBAAM,CAACK,KAAK,CAAC7B,MAAM,CAAC4B,IAAI,CAACiC,WAAW,CAAC,CAAC/B,MAAM,EAAE,CAAC,CAAC;QAChDN,iBAAM,CAACK,KAAK,CAACgC,WAAW,CAACxC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;MACrD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFP,QAAQ,CAAC,0CAA0C,EAAE,MAAM;MACzDK,EAAE,CAAC,yBAAyB,EAAE,YAAY;QACxCrB,MAAM,CAAC;UACL,CAAC,GAAGX,aAAa,eAAe,GAAG;YACjC,MAAM,EAAE,yBAAyB;YACjC,MAAM,EAAE;UACV;QACF,CAAC,CAAC;QAEF,MAAMoD,SAAS,GAAG,GAAGpD,aAAa,eAAe;QACjD,MAAMkC,QAAQ,GAAG,GAAGkB,SAAS,OAAO;QACpC,MAAMsB,WAAW,GAAG,EAAE;QAEtB,MAAMnE,cAAc,CAAC;UAAE2B,QAAQ;UAAEkB,SAAS;UAAEsB;QAAY,CAAC,CAAC;QAE1DrC,iBAAM,CAACK,KAAK,CAACgC,WAAW,CAAC/B,MAAM,EAAE,CAAC,CAAC;MACrC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFhB,QAAQ,CAAC,2DAA2D,EAAE,MAAM;MAC1EK,EAAE,CAAC,yBAAyB,EAAE,YAAY;QACxCrB,MAAM,CAAC;UACL,CAAC,GAAGX,aAAa,eAAe,GAAG;YACjC,MAAM,EAAE,yBAAyB;YACjC,MAAM,EAAE,2CAA2C;YACnD,MAAM,EAAE;UACV;QACF,CAAC,CAAC;QAEF,MAAMoD,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,eAAe,CAAC;QACjE,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;QACpD,MAAMsB,WAAW,GAAG,EAAE;QAEtB,MAAMnE,cAAc,CAAC;UAAE2B,QAAQ;UAAEkB,SAAS;UAAEsB;QAAY,CAAC,CAAC;QAE1DrC,iBAAM,CAACK,KAAK,CAAC7B,MAAM,CAAC4B,IAAI,CAACiC,WAAW,CAAC,CAAC/B,MAAM,EAAE,CAAC,CAAC;QAChDN,iBAAM,CAACK,KAAK,CAACgC,WAAW,CAACzE,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;MACnF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFzB,QAAQ,CAAC,6DAA6D,EAAE,MAAM;MAC5EK,EAAE,CAAC,kDAAkD,EAAE,YAAY;QACjErB,MAAM,CAAC;UACL,CAAC,GAAGX,aAAa,eAAe,GAAG;YACjC,MAAM,EAAE,8DAA8D;YACtE,MAAM,EAAE,2CAA2C;YACnD,MAAM,EAAE;UACV;QACF,CAAC,CAAC;QAEF,MAAMoD,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,eAAe,CAAC;QACjE,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;QACpD,MAAMsB,WAAW,GAAG,EAAE;QAEtB,MAAMnE,cAAc,CAAC;UAAE2B,QAAQ;UAAEkB,SAAS;UAAEsB;QAAY,CAAC,CAAC;QAE1DrC,iBAAM,CAACK,KAAK,CAAC7B,MAAM,CAAC4B,IAAI,CAACiC,WAAW,CAAC,CAAC/B,MAAM,EAAE,CAAC,CAAC;QAChDN,iBAAM,CAACK,KAAK,CAACgC,WAAW,CAACxC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;QACtDG,iBAAM,CAACK,KAAK,CAACgC,WAAW,CAACzE,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;MACnF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACvBgD,UAAU,CAAC,MAAM;MACf;MACA,IAAI,CAACC,UAAU,GAAG,GAAG5E,aAAa,WAAW;MAC7C;MACA,IAAI,CAAC6E,OAAO,GAAGxE,qBAAqB,CAACyE,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IACpE,CAAC,CAAC;IAEF5B,SAAS,CAAC,MAAM;MACd;MACA,IAAI,CAAC2B,OAAO,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF7C,EAAE,CAAC,mCAAmC,EAAE,MAAM;MAC5CK,iBAAM,CAAC0C,OAAO,CAAC,YAAY;QACzB,MAAMxE,cAAc,CAAC;UACnB2B,QAAQ,EAAE8C,SAAS;UACnB;UACA5B,SAAS,EAAE,IAAI,CAACwB;QAClB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF5C,EAAE,CAAC,+BAA+B,EAAE,MAAM;MACxCK,iBAAM,CAAC0C,OAAO,CAAC,YAAY;QACzB,MAAMxE,cAAc,CAAC;UAAE2B,QAAQ,EAAE8C;QAAU,CAAC,CAAC;MAC/C,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFhD,EAAE,CAAC,+CAA+C,EAAE,MAAM;MACxDK,iBAAM,CAAC0C,OAAO,CAAC,YAAY;QACzB,MAAM3B,SAAS,GAAG,GAAGpD,aAAa,eAAe;QACjD,MAAMkC,QAAQ,GAAG,GAAGkB,SAAS,OAAO;QAEpC,MAAM7C,cAAc,CAAC;UACnB2B,QAAQ;UACRkB,SAAS;UACT6B,MAAM,EAAE;QACV,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFjD,EAAE,CAAC,4CAA4C,EAAE,MAAM;MACrDK,iBAAM,CAAC6C,aAAa,CAAC,YAAY;QAC/B,MAAM9B,SAAS,GAAG,GAAGpD,aAAa,eAAe;QACjD,MAAMkC,QAAQ,GAAG,GAAGkB,SAAS,OAAO;QAEpC,MAAM7C,cAAc,CAAC;UACnB2B,QAAQ;UACRD,IAAI,EAAEmB;QACR,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzB,QAAQ,CAAC,eAAe,EAAE,MAAM;IAC9BgD,UAAU,CAAC,MAAM;MACf;MACA,IAAI,CAACC,UAAU,GAAG,GAAG5E,aAAa,WAAW;IAC/C,CAAC,CAAC;IAEFgC,EAAE,CAAC,gBAAgB,EAAE,MAAM;MACzBK,iBAAM,CAAC6C,aAAa,CAAC,YAAY;QAC/B,MAAM3E,cAAc,CAAC;UACnB2B,QAAQ,EAAE,KAAK;UACf;UACAkB,SAAS,EAAE,IAAI,CAACwB;QAClB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF5C,EAAE,CAAC,yBAAyB,EAAE,YAAY;MACxC;MACA,MAAMI,IAAI,GAAG,MAAM7B,cAAc,CAAC;QAAE2B,QAAQ,EAAE,KAAK;QAAEkB,SAAS,EAAE,IAAI,CAACwB;MAAW,CAAC,CAAC;MAClF,IAAAvC,iBAAM,EAAC,CAACD,IAAI,CAACO,MAAM,CAAC;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhB,QAAQ,CAAC,kBAAkB,EAAE,MAAM;IACjCgD,UAAU,CAAC,MAAM;MACf;MACA,IAAI,CAACQ,IAAI,GAAGvB,gBAAK,CAACD,GAAG,CAACtD,qBAAqB,EAAE,kBAAkB,CAAC;IAClE,CAAC,CAAC;IAEF6C,SAAS,CAAC,YAAY;MACpB,MAAM7C,qBAAqB,CAACyD,gBAAgB,CAACC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF/B,EAAE,CAAC,sDAAsD,EAAE,YAAY;MACrE,MAAME,QAAQ,GAAG,GAAGlC,aAAa,WAAW;MAC5C,MAAMoD,SAAS,GAAG,GAAGpD,aAAa,MAAM;MAExC,MAAMoF,KAAK,GAAG;QACZ;QACA,CAAClD,QAAQ,GAAG;UAAEmD,OAAO,EAAE;YAAEC,YAAY,EAAE;UAAG;QAAE;MAC9C,CAAC;MAED,MAAMlD,IAAI,GAAG,MAAM7B,cAAc,CAAC;QAChC2B,QAAQ;QACRkB,SAAS;QACTmC,OAAO,EAAEH;MACX,CAAC,CAAC;MAEF,IAAA/C,iBAAM,EAAC,CAACD,IAAI,CAACO,MAAM,CAAC;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFhB,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAC/BA,QAAQ,CAAC,UAAU,EAAE,MAAM;MACzBgD,UAAU,CAAC,MAAM;QACf;QACA,IAAI,CAACC,UAAU,GAAG3E,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,MAAM,CAAC;QACxD+C,YAAY,CAAC,CAAC;MAChB,CAAC,CAAC;MAEFlB,kBAAkB,CAAC,UAAU,CAAC;IAChC,CAAC,CAAC;IAEFF,QAAQ,CAAC,KAAK,EAAE,MAAM;MACpBgD,UAAU,CAAC,MAAM;QACf;QACA,IAAI,CAACC,UAAU,GAAG3E,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,MAAM,CAAC;QACxDgD,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;MAEFnB,kBAAkB,CAAC,KAAK,CAAC;MAEzBG,EAAE,CAAC,8BAA8B,EAAE,YAAY;QAC7C;QACA,MAAME,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAG,IAAI,CAACyC,UAAU,SAAS,CAAC;QAC5D,MAAMxC,IAAI,GAAG,MAAM7B,cAAc,CAAC;UAChC2B,QAAQ;UACR;UACAkB,SAAS,EAAE,IAAI,CAACwB;QAClB,CAAC,CAAC;QACF;QACAvC,iBAAM,CAACE,EAAE,CAACH,IAAI,CAACF,QAAQ,CAAC,CAACsD,QAAQ,CAACvF,eAAI,CAACkC,SAAS,CAAC,GAAG,IAAI,CAACyC,UAAU,OAAO,CAAC,CAAC,CAAC;MAC/E,CAAC,CAAC;MAEF5C,EAAE,CAAC,qCAAqC,EAAE,YAAY;QACpD;QACA,MAAME,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAG,IAAI,CAACyC,UAAU,UAAU,CAAC;QAC7D,MAAMxC,IAAI,GAAG,MAAM7B,cAAc,CAAC;UAChC2B,QAAQ;UACR;UACAkB,SAAS,EAAE,IAAI,CAACwB;QAClB,CAAC,CAAC;QACF;QACAvC,iBAAM,CAACE,EAAE,CAACH,IAAI,CAACF,QAAQ,CAAC,CAACsD,QAAQ,CAACvF,eAAI,CAACkC,SAAS,CAAC,GAAG,IAAI,CAACyC,UAAU,OAAO,CAAC,CAAC,CAAC;MAC/E,CAAC,CAAC;MAEF5C,EAAE,CAAC,8BAA8B,EAAE,YAAY;QAC7C;QACA,MAAME,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAG,IAAI,CAACyC,UAAU,SAAS,CAAC;QAC5D,MAAMxC,IAAI,GAAG,MAAM7B,cAAc,CAAC;UAChC2B,QAAQ;UACR;UACAkB,SAAS,EAAE,IAAI,CAACwB;QAClB,CAAC,CAAC;QACF;QACAvC,iBAAM,CAACE,EAAE,CAACH,IAAI,CAACF,QAAQ,CAAC,CAACsD,QAAQ,CAACvF,eAAI,CAACkC,SAAS,CAAC,GAAG,IAAI,CAACyC,UAAU,OAAO,CAAC,CAAC,CAAC;MAC/E,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFjD,QAAQ,CAAC,MAAM,EAAE,MAAM;MACrBgD,UAAU,CAAC,MAAM;QACf9B,QAAQ,CAAC,CAAC;MACZ,CAAC,CAAC;MAEFhB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;IACrC,CAAC,CAAC;IAEFF,QAAQ,CAAC,QAAQ,EAAE,MAAM;MACvBgD,UAAU,CAAC,MAAM;QACf/B,UAAU,CAAC,CAAC;MACd,CAAC,CAAC;MAEFf,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC;IACvC,CAAC,CAAC;IAEFF,QAAQ,CAAC,MAAM,EAAE,MAAM;MACrBgD,UAAU,CAAC,MAAM;QACf7B,QAAQ,CAAC,CAAC;MACZ,CAAC,CAAC;MAEFjB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC;IACrC,CAAC,CAAC;IAEFF,QAAQ,CAAC,YAAY,EAAE,MAAM;MAC3BgD,UAAU,CAAC,MAAM;QACf1B,MAAM,CAAC,CAAC;MACV,CAAC,CAAC;MAEFpB,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC;IACjC,CAAC,CAAC;EACJ,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACAF,QAAQ,CAAC8D,IAAI,CAAC,SAAS,EAAE,MAAM;IAC7Bd,UAAU,CAAC,MAAM;MACf;MACA;MACA;MACA,IAAI,CAACe,KAAK,GAAGzF,eAAI,CAACC,IAAI,CAACF,aAAa,EAAE,KAAK,CAAC;MAC5C;MACA,IAAI,CAAC2F,cAAc,GAAG,GAAG,IAAI,CAACD,KAAK,oBAAoB;MACvD;MACA,IAAI,CAACE,eAAe,GAAIC,IAAI,IAAK;QAC/B,MAAMC,OAAO,GAAGvF,cAAc,CAACwF,MAAM,CAAC;UACpC7D,QAAQ,EAAE,GAAGlC,aAAa,YAAY6F,IAAI,KAAK;UAC/C;UACAzC,SAAS,EAAE,IAAI,CAACsC,KAAK;UACrB;UACAM,aAAa,EAAE,IAAI,CAACL,cAAc;UAClCV,MAAM,EAAG/C,QAAQ,IAAKA,QAAQ,CAACwB,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC;QAChE,CAAC,CAAC;QACFrB,iBAAM,CAACE,EAAE,CAACuD,OAAO,CAACtC,IAAI,CAAEtB,QAAQ,IAAKA,QAAQ,CAACwB,OAAO,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/F,CAAC;IACH,CAAC,CAAC;IAEF1B,EAAE,CAAC,4BAA4B,EAAE,MAAM;MACrC,IAAI,CAACJ,OAAO,CAAC,IAAI,CAAC;MAClB;MACA,IAAI,CAACgE,eAAe,CAAC,WAAW,CAAC;IACnC,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFjE,QAAQ,CAAC,oCAAoC,EAAE,MAAM;IACnDK,EAAE,CAAC,0EAA0E,EAAE,YAAY;MACzF,MAAMoB,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAG3B,QAAQ,eAAe,CAAC;MAC5D,MAAM0B,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,OAAO,CAAC;MAEpD,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;QAChC2B,QAAQ;QACRkB,SAAS;QACT;QACA6B,MAAM,EAAEA,CAAC1D,QAAQ,EAAE0E,UAAU,KAAK;UAChC5D,iBAAM,CAACE,EAAE,CAACnD,OAAO,CAACqB,OAAO,CAAC,OAAO,CAAC,CAAC;UACnC4B,iBAAM,CAACE,EAAE,CAAC0D,UAAU,CAACT,QAAQ,CAACvF,eAAI,CAACkC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC;UACnE,OAAOZ,QAAQ,CAACmC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAChD;MACF,CAAC,CAAC;MAEF,MAAML,OAAO,GAAGjB,IAAI,CAACF,QAAQ,CAAC;MAC9BG,iBAAM,CAACE,EAAE,CAAC1B,MAAM,CAAC4B,IAAI,CAACL,IAAI,CAAC,CAACO,MAAM,CAAC;MAEnC,MAAMuD,cAAc,GAAGrF,MAAM,CAAC4B,IAAI,CAACY,OAAO,CAAC,CAACG,IAAI,CAAEC,GAAG,IAAKA,GAAG,KAAKrE,OAAO,CAACqB,OAAO,CAAC,OAAO,CAAC,CAAC;MAC3F4B,iBAAM,CAACE,EAAE,CAAC,CAAC2D,cAAc,CAAC;IAC5B,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFvE,QAAQ,CAAC,0CAA0C,EAAE,MAAM;IACzDgD,UAAU,CAAC,MAAM;MACfhE,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,QAAQ,EAAE,uDAAuD;UACjE,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFgC,EAAE,CAAC,8BAA8B,EAAE,YAAY;MAC7C,MAAMoB,SAAS,GAAG,GAAGpD,aAAa,MAAM;MACxC,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MAEtD,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;QAAE2B,QAAQ;QAAEkB;MAAU,CAAC,CAAC;MAC1Df,iBAAM,CAACE,EAAE,CAACH,IAAI,CAACF,QAAQ,CAAC,CAACsD,QAAQ,CAACvF,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzB,QAAQ,CAAC,gDAAgD,EAAE,MAAM;IAC/DgD,UAAU,CAAC,MAAM;MACfhE,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,QAAQ,EAAE,qDAAqD;UAC/D,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF2B,QAAQ,CAAC,mCAAmC,EAAE,MAAM;MAClDK,EAAE,CAAC,8BAA8B,EAAE,YAAY;QAC7C,MAAMoB,SAAS,GAAG,GAAGpD,aAAa,MAAM;QACxC,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;QAEtD,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;UAChC2B,QAAQ;UACRkB,SAAS;UACToB,SAAS,EAAE;YACT2B,GAAG,EAAE;cACHC,YAAY,EAAE;YAChB;UACF;QACF,CAAC,CAAC;QAEF/D,iBAAM,CAACE,EAAE,CAACH,IAAI,CAACF,QAAQ,CAAC,CAACsD,QAAQ,CAACvF,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC,CAAC,CAAC;MAC3E,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzB,QAAQ,CAAC,8CAA8C,EAAE,MAAM;IAC7DgD,UAAU,CAAC,MAAM;MACfhE,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,QAAQ,EAAE,kBAAkB;UAC5B,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFgC,EAAE,CAAC,6BAA6B,EAAE,YAAY;MAC5C,MAAMoB,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,MAAM,CAAC;MACxD,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MAEtD,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;QAChC2B,QAAQ;QACRkB;MACF,CAAC,CAAC;MAEF,MAAMC,OAAO,GAAGjB,IAAI,CAACF,QAAQ,CAAC;MAE9BG,iBAAM,CAACE,EAAE,CAAC,EAAE,GAAGa,SAAS,SAAS,IAAIC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF1B,QAAQ,CAAC,qDAAqD,EAAE,MAAM;IACpEgD,UAAU,CAAC,MAAM;MACfhE,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,QAAQ,EAAE,wBAAwB;UAClC,UAAU,EAAE;QACd;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFgC,EAAE,CAAC,0DAA0D,EAAE,YAAY;MACzE,MAAMoB,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,MAAM,CAAC;MACxD,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MAEtD,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;QAChC2B,QAAQ;QACRkB;MACF,CAAC,CAAC;MAEFf,iBAAM,CAACE,EAAE,CAACtC,eAAI,CAACkC,SAAS,CAAClC,eAAI,CAACC,IAAI,CAACkD,SAAS,EAAE,UAAU,CAAC,CAAC,IAAIhB,IAAI,CAAC;IACrE,CAAC,CAAC;EACJ,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACAT,QAAQ,CAAC8D,IAAI,CAAC,4DAA4D,EAAE,MAAM;IAChFd,UAAU,CAAC,MAAM;MACfhE,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,iBAAiB,EAAE,wCAAwC;UAC3DqG,YAAY,EAAE;YACZ,cAAc,EAAE;cACd,eAAe,EAAE,4BAA4B;cAC7C,iBAAiB,EAAE,4BAA4B;cAC/C,cAAc,EAAE;YAClB;UACF;QACF;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFrE,EAAE,CAAC,4CAA4C,EAAE,YAAY;MAC3D,MAAMoB,SAAS,GAAG,GAAGpD,aAAa,MAAM;MACxC,MAAMkC,QAAQ,GAAG,GAAGkB,SAAS,kBAAkB;MAE/C,MAAMhB,IAAI,GAAG,MAAM7B,cAAc,CAAC;QAChC2B,QAAQ;QACRkB,SAAS;QACTkD,iBAAiB,EAAE;UACjBC,KAAK,EAAE;QACT;MACF,CAAC,CAAC;MACF,MAAMlD,OAAO,GAAGjB,IAAI,CAACF,QAAQ,CAAC;MAE9BG,iBAAM,CAACE,EAAE,CAAC,GAAGa,SAAS,4CAA4C,IAAIC,OAAO,CAAC;IAChF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF1B,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACvBA,QAAQ,CAAC,cAAc,EAAE,MAAM;MAC7BA,QAAQ,CAAC,gCAAgC,EAAE,MAAM;QAC/CK,EAAE,CAAC,2CAA2C,EAAE,MAAM;UACpD,MAAMqC,eAAe,GAAG;YACtB8B,GAAG,EAAE;cACHC,YAAY,EAAE;YAChB;UACF,CAAC;UAED,MAAMI,MAAM,GAAG,KAAIC,iBAAM,EAAC;YACxBpC,eAAe;YACfnC,QAAQ,EAAE,KAAK;YACfkB,SAAS,EAAE;UACb,CAAC,CAAC;UAEF,MAAMsD,KAAK,GAAGF,MAAM,CAACE,KAAK,CAAC,CAAC;UAE5BrE,iBAAM,CAACsE,SAAS,CAACD,KAAK,CAACrC,eAAe,EAAEA,eAAe,CAAC;QAC1D,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF1C,QAAQ,CAAC,kFAAkF,EAAE,MAAM;IACjGgD,UAAU,CAAC,MAAM;MACfhE,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,QAAQ,EAAE,+BAA+B;UACzC,QAAQ,EAAE,gDAAgD;UAC1D,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFgC,EAAE,CAAC,mDAAmD,EAAE,YAAY;MAClE,MAAMoB,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,MAAM,CAAC;MACxD,MAAM4G,OAAO,GAAG3G,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MACrD,MAAMyD,OAAO,GAAG5G,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MACrD,MAAM0D,OAAO,GAAG7G,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MACrD,MAAMsB,WAAW,GAAG,CAAC,CAAC;MACtB,MAAM8B,MAAM,GAAG;QACbpD,SAAS;QACTsB,WAAW;QACXa,OAAO,EAAE,CAAC;MACZ,CAAC;;MAED;MACAiB,MAAM,CAACtE,QAAQ,GAAG0E,OAAO;MACzB,MAAMrG,cAAc,CAACiG,MAAM,CAAC;MAC5BpG,MAAM,CAACsE,WAAW,CAACkC,OAAO,CAAC,CAAC,CAACG,EAAE,CAACC,IAAI,CAACtE,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;;MAEjE;MACA8D,MAAM,CAACtE,QAAQ,GAAG2E,OAAO;MACzB,MAAMtG,cAAc,CAACiG,MAAM,CAAC;MAC5BpG,MAAM,CAACsE,WAAW,CAACkC,OAAO,CAAC,CAAC,CAACG,EAAE,CAACC,IAAI,CAACtE,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;MACjEtC,MAAM,CAACsE,WAAW,CAACmC,OAAO,CAAC,CAAC,CAACE,EAAE,CAACC,IAAI,CAACtE,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;;MAEjE;MACA8D,MAAM,CAACtE,QAAQ,GAAG4E,OAAO;MACzB,MAAMvG,cAAc,CAACiG,MAAM,CAAC;MAC5BpG,MAAM,CAACsE,WAAW,CAACkC,OAAO,CAAC,CAAC,CAACG,EAAE,CAACC,IAAI,CAACtE,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;MACjEtC,MAAM,CAACsE,WAAW,CAACmC,OAAO,CAAC,CAAC,CAACE,EAAE,CAACC,IAAI,CAACtE,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;MACjEtC,MAAM,CAACsE,WAAW,CAACoC,OAAO,CAAC,CAAC,CAACC,EAAE,CAACC,IAAI,CAACtE,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE,CAAC,CAAC;EACJ,CAAC,CAAC;EACFf,QAAQ,CAAC,6CAA6C,EAAE,MAAM;IAC5DgD,UAAU,CAAC,MAAM;MACfhE,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,WAAW,EAAE,YAAY;UAAE;UAC3B,WAAW,EAAE;QACf;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IACFgC,EAAE,CAAC,4EAA4E,EAAE,YAAY;MAC3F,MAAMoB,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,MAAM,CAAC;MACxD,MAAMiH,QAAQ,GAAGhH,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,YAAY,CAAC;MACzD,MAAM8D,SAAS,GAAGjH,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,YAAY,CAAC;MAC1D,MAAMoD,MAAM,GAAG;QACbpD;MACF,CAAC;;MAED;MACAoD,MAAM,CAACtE,QAAQ,GAAG+E,QAAQ;MAC1B,MAAM1G,cAAc,CAACiG,MAAM,CAAC;;MAE5B;MACAA,MAAM,CAACtE,QAAQ,GAAGgF,SAAS;MAC3B,MAAM5B,YAAY,GAAG,MAAM/E,cAAc,CAACiG,MAAM,CAAC;MACjDpG,MAAM,CAACkF,YAAY,CAAC,CAACyB,EAAE,CAACI,EAAE,CAAC5E,EAAE;IAC/B,CAAC,CAAC;EACJ,CAAC,CAAC;EACFZ,QAAQ,CAAC,2BAA2B,EAAE,MAAM;IAC1CK,EAAE,CAAC,sCAAsC,EAAE,YAAY;MACrDrB,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,UAAU,GAAG;UAC5B,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC;MACF,MAAMoD,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,UAAU,CAAC;MAC5D,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MACtD,MAAMmC,OAAO,GAAG,CAAC,CAAC;MAElB,MAAMhF,cAAc,CAAC;QACnB2B,QAAQ;QACRkB,SAAS;QACTmC;MACF,CAAC,CAAC;MACFnF,MAAM,CAACmF,OAAO,CAACrD,QAAQ,CAAC,CAACkF,OAAO,CAAC,CAACL,EAAE,CAACI,EAAE,CAACnC,SAAS;IACnD,CAAC,CAAC;EACJ,CAAC,CAAC;EACFrD,QAAQ,CAAC,0CAA0C,EAAE,MAAM;IACzDK,EAAE,CAAC,gEAAgE,EAAE,YAAY;MAC/ErB,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC;MACF,MAAMoD,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,MAAM,CAAC;MACxD,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MACtD,MAAMmC,OAAO,GAAG,CAAC,CAAC;MAClB,MAAMhF,cAAc,CAAC;QACnB2B,QAAQ;QACRkB,SAAS;QACTmC;MACF,CAAC,CAAC;MACFnF,MAAM,CAACmF,OAAO,CAACrD,QAAQ,CAAC,CAACkF,OAAO,CAAC,CAACL,EAAE,CAACI,EAAE,CAACnC,SAAS;IACnD,CAAC,CAAC;IACFhD,EAAE,CAAC,+DAA+D,EAAE,YAAY;MAC9ErB,MAAM,CAAC;QACL,CAAC,GAAGX,aAAa,MAAM,GAAG;UACxB,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC;MACF,MAAMoD,SAAS,GAAGnD,eAAI,CAACkC,SAAS,CAAC,GAAGnC,aAAa,MAAM,CAAC;MACxD,MAAMkC,QAAQ,GAAGjC,eAAI,CAACkC,SAAS,CAAC,GAAGiB,SAAS,SAAS,CAAC;MACtD,MAAMmC,OAAO,GAAG,CAAC,CAAC;MAClB,MAAMhF,cAAc,CAAC;QACnB2B,QAAQ;QACRkB,SAAS;QACTmC;MACF,CAAC,CAAC;MACFnF,MAAM,CAACmF,OAAO,CAACrD,QAAQ,CAAC,CAACkF,OAAO,CAAC,CAACL,EAAE,CAACI,EAAE,CAACnC,SAAS;IACnD,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_defenderFs","data","require","_assert","_interopRequireDefault","_path","_rewire","_sinon","_fsExtra","_precinct","_Config","e","__esModule","default","UNIT_TEST_DIR","path","join","BIT_TEMP_ROOT","expect","dependencyTreeRewired","rewire","dependencyTree","fixtures","resolve","__dirname","mockfs","obj","Object","entries","forEach","key","value","fs","mkdirSync","recursive","file","content","filePath","writeFileSync","cleanUnitDir","removeSync","describe","timeout","testTreesForFormat","format","ext","it","root","filename","normalize","tree","assert","aSubTree","ok","filesInSubTree","keys","equal","length","mockStylus","mockSass","mockLess","mockcommonjs","mockes6","mockTS","afterEach","imaginary","directory","subTree","bTree","cTree","some","dep","indexOf","spy","sinon","callCount","_getDependencies","restore","node","nodes","process","cwd","precinct","detectiveConfig","amd","skipLazyLoaded","detective","calledWith","nonExistent","beforeEach","_directory","_revert","__set__","rejects","undefined","filter","doesNotReject","_spy","cache","pathMap","dependencies","visited","includes","skip","_root","_webpackConfig","_testResolution","name","results","toList","webpackConfig","moduleFile","has3rdPartyDep","es6","mixedImports","node_modules","nodeModulesConfig","entry","config","Config","clone","deepEqual","fooFile","barFile","bazFile","to","deep","baseFile","indexFile","be","missing"],"sources":["index.spec.ts"],"sourcesContent":["import { BIT_TEMP_ROOT } from '@teambit/defender.fs.global-bit-temp-dir';\nimport assert from 'assert';\nimport path from 'path';\nimport rewire from 'rewire';\nimport sinon from 'sinon';\nimport fs from 'fs-extra';\n\nimport precinct from '../precinct';\nimport Config from './Config';\n\nconst UNIT_TEST_DIR = path.join(BIT_TEMP_ROOT, 'unit-test');\nconst expect = require('chai').expect;\n\nconst dependencyTreeRewired = rewire('./');\nconst dependencyTree = dependencyTreeRewired.default;\nconst fixtures = path.resolve(`${__dirname}/../fixtures/dependency-tree`);\n\nfunction mockfs(obj: any) {\n Object.entries(obj).forEach(([key, value]) => {\n fs.mkdirSync(key, { recursive: true });\n // @ts-ignore\n Object.entries(value).forEach(([file, content]) => {\n const filePath = path.join(key, file);\n fs.writeFileSync(filePath, content as string);\n });\n });\n}\n\nfunction cleanUnitDir() {\n fs.removeSync(UNIT_TEST_DIR);\n}\n\ndescribe('dependencyTree', function () {\n this.timeout(8000);\n function testTreesForFormat(format, ext = '.js') {\n it('returns an object form of the dependency tree for a file', async () => {\n const root = `${UNIT_TEST_DIR}/${format}`;\n const filename = path.normalize(`${root}/a${ext}`);\n\n const tree = await dependencyTree({ filename, root });\n\n assert(tree instanceof Object);\n\n const aSubTree = tree[filename];\n\n assert.ok(aSubTree instanceof Object);\n const filesInSubTree = Object.keys(aSubTree);\n\n assert.equal(filesInSubTree.length, 2);\n });\n }\n\n function mockStylus() {\n mockfs({\n [`${UNIT_TEST_DIR}/stylus`]: {\n 'a.styl': `\n @import \"b\"\n @require \"c.styl\"\n `,\n 'b.styl': '@import \"c\"',\n 'c.styl': '',\n },\n });\n }\n\n function mockSass() {\n mockfs({\n [`${UNIT_TEST_DIR}/sass`]: {\n 'a.scss': `\n @import \"_b\";\n @import \"_c.scss\";\n `,\n '_b.scss': 'body { color: blue; }',\n '_c.scss': 'body { color: pink; }',\n },\n });\n }\n\n function mockLess() {\n mockfs({\n [`${UNIT_TEST_DIR}/less`]: {\n 'a.less': `\n @import \"b.css\";\n @import \"c.less\";\n `,\n 'b.css': 'body { color: blue; }',\n 'c.less': 'body { color: pink; }',\n },\n });\n }\n\n function mockcommonjs() {\n mockfs({\n [`${UNIT_TEST_DIR}/commonjs`]: {\n 'a.js': `\n var b = require('./b');\n var c = require('./c');\n `,\n 'b.js': `\n var path = require('path');\n module.exports = {};\n `,\n 'c.js': `\n var fs = require('fs');\n module.exports = {};\n `,\n },\n });\n }\n\n function mockes6() {\n mockfs({\n [`${UNIT_TEST_DIR}/es6`]: {\n 'a.js': `\n import b from './b';\n import c from './c';\n `,\n 'b.js': 'export default () => {};',\n 'c.js': 'export default () => {};',\n 'jsx.js': \"import c from './c';\\n export default <jsx />;\",\n 'foo.jsx': \"import React from 'react';\\n import b from './b';\\n export default <jsx />;\",\n 'es7.js': \"import c from './c';\\n export default async function foo() {};\",\n },\n });\n }\n\n function mockTS() {\n mockfs({\n [`${UNIT_TEST_DIR}/ts`]: {\n 'a.ts': `\n import b from './b';\n import c from './c';\n `,\n 'b.ts': 'export default () => {};',\n 'c.ts': 'export default () => {};',\n },\n });\n }\n\n afterEach(() => {\n // mockfs.restore();\n cleanUnitDir();\n });\n\n it('returns an empty object for a non-existent filename', async () => {\n mockfs({\n imaginary: {},\n });\n\n const root = `${UNIT_TEST_DIR}/imaginary`;\n const filename = `${root}/notafile.js`;\n const tree = await dependencyTree({ filename, root });\n\n assert(tree instanceof Object);\n assert(!Object.keys(tree).length);\n });\n\n it('handles nested tree structures', async () => {\n const directory = `${UNIT_TEST_DIR}/extended`;\n\n mockfs({\n [directory]: {\n 'a.js': `\n var b = require('./b');\n var c = require('./c');`,\n 'b.js': `\n var d = require('./d');\n var e = require('./e');`,\n 'c.js': `\n var f = require('./f');\n var g = require('./g');`,\n 'd.js': '',\n 'e.js': '',\n 'f.js': '',\n 'g.js': '',\n },\n });\n\n const filename = path.normalize(`${directory}/a.js`);\n const tree = await dependencyTree({ filename, directory });\n assert(tree[filename] instanceof Object);\n\n // b and c\n const subTree = tree[filename];\n assert.equal(subTree.length, 2);\n\n const bTree = tree[path.normalize(`${directory}/b.js`)];\n const cTree = tree[path.normalize(`${directory}/c.js`)];\n // d and e\n assert.equal(bTree.length, 2);\n // f ang g\n assert.equal(cTree.length, 2);\n });\n\n it('does not include files that are not real (#13)', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var notReal = require(\"./notReal\");',\n },\n });\n\n const directory = `${UNIT_TEST_DIR}/onlyRealDeps`;\n const filename = path.normalize(`${directory}/a.js`);\n\n const tree = await dependencyTree({ filename, directory });\n const subTree = tree[filename];\n\n assert.ok(!Object.keys(subTree).some((dep) => dep.indexOf('notReal') !== -1));\n });\n\n it('does not choke on cyclic dependencies', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/cyclic`]: {\n 'a.js': 'var b = require(\"./b\");',\n 'b.js': 'var a = require(\"./a\");',\n },\n });\n\n const directory = `${UNIT_TEST_DIR}/cyclic`;\n const filename = path.normalize(`${directory}/a.js`);\n\n const spy = sinon.spy(dependencyTreeRewired, '_getDependencies');\n\n const tree = await dependencyTreeRewired.default({ filename, directory });\n\n assert(spy.callCount === 2);\n assert(Object.keys(tree[filename]).length);\n\n await dependencyTreeRewired._getDependencies.restore();\n });\n\n it('excludes Nodejs core modules by default', async () => {\n const directory = `${fixtures}/commonjs`;\n const filename = path.normalize(`${directory}/b.js`);\n\n const tree = await dependencyTree({ filename, directory });\n assert(Object.keys(tree[filename]).length === 0);\n assert(Object.keys(tree)[0].indexOf('b.js') !== -1);\n });\n\n it('returns a list of absolutely pathed files', async () => {\n const directory = `${UNIT_TEST_DIR}/commonjs`;\n const filename = `${directory}/b.js`;\n\n const tree = await dependencyTree({ filename, directory });\n // eslint-disable-next-line\n for (const node in tree.nodes) {\n assert(node.indexOf(process.cwd()) !== -1);\n }\n });\n\n describe('when given a detective configuration', () => {\n it('passes it through to precinct', async () => {\n const spy = sinon.spy(precinct, 'paperwork');\n const directory = path.normalize(`${fixtures}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n const detectiveConfig = {\n amd: {\n skipLazyLoaded: true,\n },\n };\n\n await dependencyTree({\n filename,\n directory,\n detective: detectiveConfig,\n });\n\n assert.ok(spy.calledWith(filename, detectiveConfig));\n spy.restore();\n });\n });\n\n describe('when given a list to store non existent partials', () => {\n describe('and the file contains no valid partials', () => {\n it('stores the invalid partials', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var notReal = require(\"./notReal\");',\n },\n });\n\n const directory = path.normalize(`${UNIT_TEST_DIR}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n const nonExistent = [];\n\n await dependencyTree({ filename, directory, nonExistent });\n\n assert.equal(Object.keys(nonExistent).length, 1);\n assert.equal(nonExistent[filename][0], './notReal');\n });\n });\n\n describe('and the file contains all valid partials', () => {\n it('does not store anything', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var b = require(\"./b\");',\n 'b.js': 'export default 1;',\n },\n });\n\n const directory = `${UNIT_TEST_DIR}/onlyRealDeps`;\n const filename = `${directory}/a.js`;\n const nonExistent = [];\n\n await dependencyTree({ filename, directory, nonExistent });\n\n assert.equal(nonExistent.length, 0);\n });\n });\n\n describe('and the file contains a mix of invalid and valid partials', () => {\n it('stores the invalid ones', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var b = require(\"./b\");',\n 'b.js': 'var c = require(\"./c\"); export default 1;',\n 'c.js': 'var crap = require(\"./notRealMan\");',\n },\n });\n\n const directory = path.normalize(`${UNIT_TEST_DIR}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n const nonExistent = [];\n\n await dependencyTree({ filename, directory, nonExistent });\n\n assert.equal(Object.keys(nonExistent).length, 1);\n assert.equal(nonExistent[path.normalize(`${directory}/c.js`)][0], './notRealMan');\n });\n });\n\n describe('and there is more than one reference to the invalid partial', () => {\n it('should include the non-existent partial per file', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/onlyRealDeps`]: {\n 'a.js': 'var b = require(\"./b\");\\nvar crap = require(\"./notRealMan\");',\n 'b.js': 'var c = require(\"./c\"); export default 1;',\n 'c.js': 'var crap = require(\"./notRealMan\");',\n },\n });\n\n const directory = path.normalize(`${UNIT_TEST_DIR}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n const nonExistent = [];\n\n await dependencyTree({ filename, directory, nonExistent });\n\n assert.equal(Object.keys(nonExistent).length, 2);\n assert.equal(nonExistent[filename][0], './notRealMan');\n assert.equal(nonExistent[path.normalize(`${directory}/c.js`)][0], './notRealMan');\n });\n });\n });\n\n describe('throws', () => {\n beforeEach(() => {\n // @ts-ignore\n this._directory = `${UNIT_TEST_DIR}/commonjs`;\n // @ts-ignore\n this._revert = dependencyTreeRewired.__set__('traverse', () => []);\n });\n\n afterEach(() => {\n // @ts-ignore\n this._revert();\n });\n\n it('throws if the filename is missing', () => {\n assert.rejects(async () => {\n await dependencyTree({\n filename: undefined,\n // @ts-ignore\n directory: this._directory,\n });\n });\n });\n\n it('throws if the root is missing', () => {\n assert.rejects(async () => {\n await dependencyTree({ filename: undefined });\n });\n });\n\n it('throws if a supplied filter is not a function', () => {\n assert.rejects(async () => {\n const directory = `${UNIT_TEST_DIR}/onlyRealDeps`;\n const filename = `${directory}/a.js`;\n\n await dependencyTree({\n filename,\n directory,\n filter: 'foobar',\n });\n });\n });\n\n it('does not throw on the legacy `root` option', () => {\n assert.doesNotReject(async () => {\n const directory = `${UNIT_TEST_DIR}/onlyRealDeps`;\n const filename = `${directory}/a.js`;\n\n await dependencyTree({\n filename,\n root: directory,\n });\n });\n });\n });\n\n describe('on file error', () => {\n beforeEach(() => {\n // @ts-ignore\n this._directory = `${UNIT_TEST_DIR}/commonjs`;\n });\n\n it('does not throw', () => {\n assert.doesNotReject(async () => {\n await dependencyTree({\n filename: 'foo',\n // @ts-ignore\n directory: this._directory,\n });\n });\n });\n\n it('returns no dependencies', async () => {\n // @ts-ignore\n const tree = await dependencyTree({ filename: 'foo', directory: this._directory });\n assert(!tree.length);\n });\n });\n\n describe('memoization (#2)', () => {\n beforeEach(() => {\n // @ts-ignore\n this._spy = sinon.spy(dependencyTreeRewired, '_getDependencies');\n });\n\n afterEach(async () => {\n await dependencyTreeRewired._getDependencies.restore();\n });\n\n it('returns the precomputed list of a cached entry point', async () => {\n const filename = `${UNIT_TEST_DIR}/amd/a.js`;\n const directory = `${UNIT_TEST_DIR}/amd`;\n\n const cache = {\n // Shouldn't process the first file's tree\n [filename]: { pathMap: { dependencies: [] } },\n };\n\n const tree = await dependencyTree({\n filename,\n directory,\n visited: cache,\n });\n\n assert(!tree.length);\n });\n });\n\n describe('module formats', () => {\n describe('commonjs', () => {\n beforeEach(() => {\n // @ts-ignore\n this._directory = path.normalize(`${UNIT_TEST_DIR}/es6`);\n mockcommonjs();\n });\n\n testTreesForFormat('commonjs');\n });\n\n describe('es6', () => {\n beforeEach(() => {\n // @ts-ignore\n this._directory = path.normalize(`${UNIT_TEST_DIR}/es6`);\n mockes6();\n });\n\n testTreesForFormat('es6');\n\n it('resolves files that have jsx', async () => {\n // @ts-ignore\n const filename = path.normalize(`${this._directory}/jsx.js`);\n const tree = await dependencyTree({\n filename,\n // @ts-ignore\n directory: this._directory,\n });\n // @ts-ignore\n assert.ok(tree[filename].includes(path.normalize(`${this._directory}/c.js`)));\n });\n\n it('resolves files with a jsx extension', async () => {\n // @ts-ignore\n const filename = path.normalize(`${this._directory}/foo.jsx`);\n const tree = await dependencyTree({\n filename,\n // @ts-ignore\n directory: this._directory,\n });\n // @ts-ignore\n assert.ok(tree[filename].includes(path.normalize(`${this._directory}/b.js`)));\n });\n\n it('resolves files that have es7', async () => {\n // @ts-ignore\n const filename = path.normalize(`${this._directory}/es7.js`);\n const tree = await dependencyTree({\n filename,\n // @ts-ignore\n directory: this._directory,\n });\n // @ts-ignore\n assert.ok(tree[filename].includes(path.normalize(`${this._directory}/c.js`)));\n });\n });\n\n describe('sass', () => {\n beforeEach(() => {\n mockSass();\n });\n\n testTreesForFormat('sass', '.scss');\n });\n\n describe('stylus', () => {\n beforeEach(() => {\n mockStylus();\n });\n\n testTreesForFormat('stylus', '.styl');\n });\n\n describe('less', () => {\n beforeEach(() => {\n mockLess();\n });\n\n testTreesForFormat('less', '.less');\n });\n\n describe('typescript', () => {\n beforeEach(() => {\n mockTS();\n });\n\n testTreesForFormat('ts', '.ts');\n });\n });\n\n // skipping the webpack unit tests for now as it's not easy to wire up all the files together.\n // originally, in dependency-tree, the webpack.config.js is in the same directory of the index.js.\n // doing the same here will be confusing. instead, we have already e2e-tests in bit legacy of custom\n // module resolution, which takes advantage of the webpack config.\n describe.skip('webpack', () => {\n beforeEach(() => {\n // Note: not mocking because webpack's resolver needs a real project with dependencies;\n // otherwise, we'd have to mock a ton of files.\n // @ts-ignore\n this._root = path.join(UNIT_TEST_DIR, '../');\n // @ts-ignore\n this._webpackConfig = `${this._root}/webpack.config.js`;\n // @ts-ignore\n this._testResolution = (name) => {\n const results = dependencyTree.toList({\n filename: `${UNIT_TEST_DIR}/webpack/${name}.js`,\n // @ts-ignore\n directory: this._root,\n // @ts-ignore\n webpackConfig: this._webpackConfig,\n filter: (filename) => filename.indexOf('filing-cabinet') !== -1,\n });\n assert.ok(results.some((filename) => filename.indexOf('node_modules/filing-cabinet') !== -1));\n };\n });\n\n it('resolves unaliased modules', () => {\n this.timeout(5000);\n // @ts-ignore\n this._testResolution('unaliased');\n });\n });\n\n describe('when a filter function is supplied', () => {\n it('uses the filter to determine if a file should be included in the results', async () => {\n const directory = path.normalize(`${fixtures}/onlyRealDeps`);\n const filename = path.normalize(`${directory}/a.js`);\n\n const tree = await dependencyTree({\n filename,\n directory,\n // Skip all 3rd party deps\n filter: (filePath, moduleFile) => {\n assert.ok(require.resolve('debug'));\n assert.ok(moduleFile.includes(path.normalize('onlyRealDeps/a.js')));\n return filePath.indexOf('node_modules') === -1;\n },\n });\n\n const subTree = tree[filename];\n assert.ok(Object.keys(tree).length);\n\n const has3rdPartyDep = Object.keys(subTree).some((dep) => dep === require.resolve('debug'));\n assert.ok(!has3rdPartyDep);\n });\n });\n\n describe('when given a CJS file with lazy requires', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/cjs`]: {\n 'foo.js': 'module.exports = function(bar = require(\"./bar\")) {};',\n 'bar.js': 'module.exports = 1;',\n },\n });\n });\n\n it('includes the lazy dependency', async () => {\n const directory = `${UNIT_TEST_DIR}/cjs`;\n const filename = path.normalize(`${directory}/foo.js`);\n\n const tree = await dependencyTree({ filename, directory });\n assert.ok(tree[filename].includes(path.normalize(`${directory}/bar.js`)));\n });\n });\n\n describe('when given an es6 file using CJS lazy requires', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/es6`]: {\n 'foo.js': 'export default function(bar = require(\"./bar\")) {};',\n 'bar.js': 'export default 1;',\n },\n });\n });\n\n describe('and mixedImport mode is turned on', () => {\n it('includes the lazy dependency', async () => {\n const directory = `${UNIT_TEST_DIR}/es6`;\n const filename = path.normalize(`${directory}/foo.js`);\n\n const tree = await dependencyTree({\n filename,\n directory,\n detective: {\n es6: {\n mixedImports: true,\n },\n },\n });\n\n assert.ok(tree[filename].includes(path.normalize(`${directory}/bar.js`)));\n });\n });\n });\n\n describe('when given an es6 file using dynamic imports', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/es6`]: {\n 'foo.js': 'import(\"./bar\");',\n 'bar.js': 'export default 1;',\n },\n });\n });\n\n it('includes the dynamic import', async () => {\n const directory = path.normalize(`${UNIT_TEST_DIR}/es6`);\n const filename = path.normalize(`${directory}/foo.js`);\n\n const tree = await dependencyTree({\n filename,\n directory,\n });\n\n const subTree = tree[filename];\n\n assert.ok(!(`${directory}/bar.js` in subTree));\n });\n });\n\n describe('when a dependency of the main file is not supported', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/baz`]: {\n 'foo.js': 'require(\"./bar.json\");',\n 'bar.json': '{ \"main\": \"I\\'m a simple JSON object\" }',\n },\n });\n });\n\n it('should include it as a dependency and not throw an error', async () => {\n const directory = path.normalize(`${UNIT_TEST_DIR}/baz`);\n const filename = path.normalize(`${directory}/foo.js`);\n\n const tree = await dependencyTree({\n filename,\n directory,\n });\n\n assert.ok(path.normalize(path.join(directory, 'bar.json')) in tree);\n });\n });\n\n // nodeModulesConfig is a feature added to dependency-tree and filing-cabinet to support\n // \"module\" attribute of package.json, see here what this attribute is good for:\n // https://github.com/rollup/rollup/wiki/pkg.module\n // the commit of supporting it in filing-cabinet is here: https://github.com/dependents/node-filing-cabinet/commit/abef861a5a725b29c2342d01de94c6e2dd881aa0\n describe.skip('when given a CJS file with module property in package.json', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/es6`]: {\n 'module.entry.js': 'import * as module from \"module.entry\"',\n node_modules: {\n 'module.entry': {\n 'index.main.js': 'module.exports = () => {};',\n 'index.module.js': 'module.exports = () => {};',\n 'package.json': '{ \"main\": \"index.main.js\", \"module\": \"index.module.js\" }',\n },\n },\n },\n });\n });\n\n it('it includes the module entry as dependency', async () => {\n const directory = `${UNIT_TEST_DIR}/es6`;\n const filename = `${directory}/module.entry.js`;\n\n const tree = await dependencyTree({\n filename,\n directory,\n nodeModulesConfig: {\n entry: 'module',\n },\n });\n const subTree = tree[filename];\n\n assert.ok(`${directory}/node_modules/module.entry/index.module.js` in subTree);\n });\n });\n\n describe('Config', () => {\n describe('when cloning', () => {\n describe('and a detective config was set', () => {\n it('retains the detective config in the clone', () => {\n const detectiveConfig = {\n es6: {\n mixedImports: true,\n },\n };\n\n const config = new Config({\n detectiveConfig,\n filename: 'foo',\n directory: 'bar',\n });\n\n const clone = config.clone();\n\n assert.deepEqual(clone.detectiveConfig, detectiveConfig);\n });\n });\n });\n });\n\n describe('when a dependency has missing packages and is retrieved from the cache (visited)', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/baz`]: {\n 'foo.js': 'require(\"non-exist-foo-pkg\");',\n 'bar.js': 'require(\"./foo\"); require(\"non-exist-bar-pkg\")',\n 'baz.js': 'require(\"./foo\"); require(\"./bar\"); require(\"non-exist-baz-pkg\")',\n },\n });\n });\n\n it('should not override the cache with wrong packages', async () => {\n const directory = path.normalize(`${UNIT_TEST_DIR}/baz`);\n const fooFile = path.normalize(`${directory}/foo.js`);\n const barFile = path.normalize(`${directory}/bar.js`);\n const bazFile = path.normalize(`${directory}/baz.js`);\n const nonExistent = {};\n const config: { directory: string; nonExistent: Record<string, string[]>; visited: object; filename?: string } = {\n directory,\n nonExistent,\n visited: {},\n };\n\n config.filename = fooFile;\n await dependencyTree(config);\n expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);\n\n config.filename = barFile;\n await dependencyTree(config);\n expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);\n expect(nonExistent[barFile]).to.deep.equal(['non-exist-bar-pkg']);\n\n config.filename = bazFile;\n await dependencyTree(config);\n expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);\n expect(nonExistent[barFile]).to.deep.equal(['non-exist-bar-pkg']);\n expect(nonExistent[bazFile]).to.deep.equal(['non-exist-baz-pkg']);\n });\n });\n describe('passing css files and then javascript files', () => {\n beforeEach(() => {\n mockfs({\n [`${UNIT_TEST_DIR}/baz`]: {\n 'base.scss': 'li {} a {}', // don't change the content. it crash only with this for some reason\n 'index.jsx': \"require('some-module');\",\n },\n });\n });\n it('should not crash with \"RangeError: Maximum call stack size exceeded\" error', async () => {\n const directory = path.normalize(`${UNIT_TEST_DIR}/baz`);\n const baseFile = path.normalize(`${directory}/base.scss`);\n const indexFile = path.normalize(`${directory}/index.jsx`);\n const config: { directory: string; filename?: string } = {\n directory,\n };\n\n config.filename = baseFile;\n await dependencyTree(config);\n\n config.filename = indexFile;\n const dependencies = await dependencyTree(config);\n expect(dependencies).to.be.ok;\n });\n });\n describe('files with dynamic import', () => {\n it('should not show missing dependencies', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/dynamic`]: {\n 'foo.js': 'const a = \"./b\"; import(a); require(a);',\n },\n });\n const directory = path.normalize(`${UNIT_TEST_DIR}/dynamic`);\n const filename = path.normalize(`${directory}/foo.js`);\n const visited = {};\n\n await dependencyTree({\n filename,\n directory,\n visited,\n });\n expect(visited[filename].missing).to.be.undefined;\n });\n });\n describe('files with import from cdn (http, https)', () => {\n it('should not show missing dependencies when importing from https', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/cdn`]: {\n 'foo.js': 'import { a } from \"https://unpkg.com\";',\n },\n });\n const directory = path.normalize(`${UNIT_TEST_DIR}/cdn`);\n const filename = path.normalize(`${directory}/foo.js`);\n const visited = {};\n await dependencyTree({\n filename,\n directory,\n visited,\n });\n expect(visited[filename].missing).to.be.undefined;\n });\n it('should not show missing dependencies when importing from http', async () => {\n mockfs({\n [`${UNIT_TEST_DIR}/cdn`]: {\n 'bar.js': 'const b = require(\"http://pkg.com\");',\n },\n });\n const directory = path.normalize(`${UNIT_TEST_DIR}/cdn`);\n const filename = path.normalize(`${directory}/bar.js`);\n const visited = {};\n await dependencyTree({\n filename,\n directory,\n visited,\n });\n expect(visited[filename].missing).to.be.undefined;\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_path","data","_interopRequireDefault","require","_resolveDependencyPath","_stylusLookup","_typescriptDepsLookups","_stylingDepsLookups","_dependencyResolver","e","__esModule","default","debug","defaultLookups","lookupJavaScript","lookupTypeScript","lookupStyling","stylusLookup","cabinet","options","detectorHook","DetectorHook","dependency","filename","ext","path","extname","resolver","resolveDependencyPath","startsWith","detector","getDetector","dependencyLookup","envDetectors","envDetector","isSupported","name","result","dependencyExt","err","message","module","exports","supportedFileExtensions","Object","keys","register","extension","lookupStrategy","indexOf","push"],"sources":["index.ts"],"sourcesContent":["// @flow\n\n/**\n * this file had been forked from https://github.com/dependents/node-filing-cabinet\n */\nimport path from 'path';\nimport resolveDependencyPath from 'resolve-dependency-path';\nimport stylusLookup from 'stylus-lookup';\n\nimport { lookupJavaScript, lookupTypeScript } from '@teambit/typescript.deps-lookups.lookup-typescript';\nimport { lookupStyling } from '@teambit/styling.deps-lookups.lookup-styling';\n\nimport type { DependencyDetector } from '@teambit/dependency-resolver';\nimport { DetectorHook } from '@teambit/dependency-resolver';\n\nconst debug = require('debug')('cabinet');\n\nconst defaultLookups = {\n '.js': lookupJavaScript,\n '.cjs': lookupJavaScript,\n '.mjs': lookupJavaScript,\n '.jsx': lookupJavaScript,\n '.ts': lookupTypeScript,\n '.tsx': lookupTypeScript,\n '.cts': lookupTypeScript,\n '.mts': lookupTypeScript,\n '.scss': lookupStyling,\n '.sass': lookupStyling,\n '.styl': stylusLookup,\n '.less': lookupStyling,\n // md/mdx docs import components/packages, resolved the same way ts imports are\n '.md': lookupTypeScript,\n '.mdx': lookupTypeScript,\n};\n\ntype Options = {\n dependency: string; // previous name was \"partial\"\n filename: string;\n directory: string;\n config
|
|
1
|
+
{"version":3,"names":["_path","data","_interopRequireDefault","require","_resolveDependencyPath","_stylusLookup","_typescriptDepsLookups","_stylingDepsLookups","_dependencyResolver","e","__esModule","default","debug","defaultLookups","lookupJavaScript","lookupTypeScript","lookupStyling","stylusLookup","cabinet","options","detectorHook","DetectorHook","dependency","filename","ext","path","extname","resolver","resolveDependencyPath","startsWith","detector","getDetector","dependencyLookup","envDetectors","envDetector","isSupported","name","result","dependencyExt","err","message","module","exports","supportedFileExtensions","Object","keys","register","extension","lookupStrategy","indexOf","push"],"sources":["index.ts"],"sourcesContent":["// @flow\n\n/**\n * this file had been forked from https://github.com/dependents/node-filing-cabinet\n */\nimport path from 'path';\nimport resolveDependencyPath from 'resolve-dependency-path';\nimport stylusLookup from 'stylus-lookup';\n\nimport { lookupJavaScript, lookupTypeScript } from '@teambit/typescript.deps-lookups.lookup-typescript';\nimport { lookupStyling } from '@teambit/styling.deps-lookups.lookup-styling';\n\nimport type { DependencyDetector } from '@teambit/dependency-resolver';\nimport { DetectorHook } from '@teambit/dependency-resolver';\n\nconst debug = require('debug')('cabinet');\n\nconst defaultLookups = {\n '.js': lookupJavaScript,\n '.cjs': lookupJavaScript,\n '.mjs': lookupJavaScript,\n '.jsx': lookupJavaScript,\n '.ts': lookupTypeScript,\n '.tsx': lookupTypeScript,\n '.cts': lookupTypeScript,\n '.mts': lookupTypeScript,\n '.scss': lookupStyling,\n '.sass': lookupStyling,\n '.styl': stylusLookup,\n '.less': lookupStyling,\n // md/mdx docs import components/packages, resolved the same way ts imports are\n '.md': lookupTypeScript,\n '.mdx': lookupTypeScript,\n};\n\ntype Options = {\n dependency: string; // previous name was \"partial\"\n filename: string;\n directory: string;\n config?: Record<string, any>;\n webpackConfig?: Record<string, any>;\n configPath?: string;\n resolveConfig?: Record<string, any>;\n isScript?: boolean; // relevant for Vue files\n ast?: string;\n ext?: string;\n content?: string;\n envDetectors?: DependencyDetector[];\n};\n\nexport default function cabinet(options: Options) {\n const detectorHook = new DetectorHook();\n const { dependency, filename } = options;\n const ext = options.ext || path.extname(filename);\n debug(`working on a dependency \"${dependency}\" of a file \"${filename}\"`);\n\n let resolver = defaultLookups[ext];\n\n if (!resolver) {\n debug('using generic resolver');\n resolver = resolveDependencyPath;\n }\n if (ext === '.css' && dependency.startsWith('~')) resolver = lookupStyling;\n\n const detector = detectorHook.getDetector(ext, filename);\n if (detector) {\n // test if the new detector API has a dependency lookup.\n if (detector.dependencyLookup) {\n resolver = detector.dependencyLookup;\n } else {\n // otherwise use TypeScript as the default resolver.\n resolver = lookupTypeScript;\n }\n }\n\n if (options?.envDetectors) {\n for (const envDetector of options.envDetectors) {\n if (envDetector.isSupported({ ext, filename }) && envDetector.dependencyLookup) {\n resolver = envDetector.dependencyLookup;\n }\n }\n }\n\n debug(`found a resolver ${resolver.name} for ${ext}`);\n\n let result = resolver(options);\n const dependencyExt = path.extname(dependency);\n if (!result && dependencyExt && dependencyExt !== ext) {\n resolver = defaultLookups[dependencyExt];\n if (resolver) {\n // todo: this strategy probably fails often. if, for example, a dependency A.js inside B.ts\n // was not found using the ts resolve, it tries the js resolver, however, parsing the ts file\n // with js parser, won't work most of the time. A better approach would be to fix the\n // original resolver.\n debug(\n `dependency has a different extension (${dependencyExt}) than the original file (${ext}), trying to use its resolver instead`\n );\n try {\n result = resolver(options);\n } catch (err: any) {\n debug(`unable to use the resolver of ${dependencyExt} for ${filename}. got an error ${err.message}`);\n }\n }\n }\n debug(`resolved path for ${dependency}: ${result}`);\n return result;\n}\n\nmodule.exports.supportedFileExtensions = Object.keys(defaultLookups);\n\n/**\n * Register a custom lookup resolver for a file extension\n *\n * @param {String} extension - The file extension that should use the resolver\n * @param {Function} lookupStrategy - A resolver of dependency paths\n */\nmodule.exports.register = function (extension, lookupStrategy) {\n defaultLookups[extension] = lookupStrategy;\n\n if (this.supportedFileExtensions.indexOf(extension) === -1) {\n this.supportedFileExtensions.push(extension);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -222,9 +222,7 @@ describe('filing-cabinet', () => {
|
|
|
222
222
|
filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,
|
|
223
223
|
directory
|
|
224
224
|
});
|
|
225
|
-
_assert().default.ok(
|
|
226
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
227
|
-
require.main.paths.some(function (p) {
|
|
225
|
+
_assert().default.ok(require.main.paths.some(function (p) {
|
|
228
226
|
return p.indexOf(_path().default.normalize(directory)) !== -1;
|
|
229
227
|
}));
|
|
230
228
|
});
|