@teambit/dependencies 1.0.1249 → 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 +25 -25
- /package/dist/{preview-1793031377870.js → preview-1793039364231.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_defenderFs","data","require","_fsExtra","_interopRequireDefault","_assert","_path","_rewire","_sinon","e","__esModule","default","UNIT_TEST_DIR","path","join","BIT_TEMP_ROOT","cabinetNonDefault","rewire","cabinet","fixtures","resolve","__dirname","mockedFiles","mockAST","mockfs","obj","acc","Object","entries","forEach","key","value","filePath","fullFilePath","content","fs","outputFileSync","undefined","cleanUnitDir","removeSync","describe","beforeEach","afterEach","it","resolvedFile","dependency","filename","directory","assert","ok","endsWith","ast","result","normalize","equal","options","skip","stub","sinon","revert","__set__","called","main","paths","some","p","indexOf","nodeModulesConfig","entry","stylus","sass","less","detector","detect","fileContent","isSupported","ext","dependencyLookup","type","envDetectors","returns","register","pathResult","stub2","newExt","supportedFileExtensions","lastIndexOf","testResolution","expected","resolved","webpackConfig"],"sources":["index.spec.ts"],"sourcesContent":["import { BIT_TEMP_ROOT } from '@teambit/defender.fs.global-bit-temp-dir';\nimport fs from 'fs-extra';\nimport assert from 'assert';\nimport path from 'path';\nimport rewire from 'rewire';\nimport sinon from 'sinon';\n\nimport type { DependencyDetector } from '@teambit/dependency-resolver';\n\nconst UNIT_TEST_DIR = path.join(BIT_TEMP_ROOT, 'unit-test');\n\nconst cabinetNonDefault = rewire('./');\nconst cabinet = cabinetNonDefault.default;\n\nconst fixtures = path.resolve(`${__dirname}/../fixtures/filing-cabinet`);\n\n// eslint-disable-next-line import/no-dynamic-require, global-require\nconst mockedFiles = require(`${fixtures}/mockedJSFiles`);\n// eslint-disable-next-line import/no-dynamic-require, global-require\nconst mockAST = require(`${fixtures}/ast`);\n\nfunction mockfs(obj: any, acc?: string) {\n Object.entries(obj).forEach(([key, value]) => {\n if (typeof value === 'string') {\n const filePath = acc ? path.join(acc, key) : key;\n const fullFilePath = path.join(UNIT_TEST_DIR, filePath);\n const content = value;\n return fs.outputFileSync(fullFilePath, content);\n }\n mockfs(value, acc ? path.join(acc, key) : key);\n return undefined;\n });\n}\n\nfunction cleanUnitDir() {\n fs.removeSync(UNIT_TEST_DIR);\n}\n\n// try {\n// // eslint-disable-next-line global-require\n// require('module-lookup-amd');\n// } catch (err: any) {\n// // eslint-disable-next-line no-console\n// console.log(`mocha suppresses the error, so console.error is needed to show the error on the screen.\n// the problem is with module-lookup-amd that calls requirejs package and uses rewire package.\n// see https://github.com/jhnns/rewire/issues/178 for more details.\n// the error occurs since node v12.16.0. for the time being, to run the tests, use an earlier version.\n// `);\n// // eslint-disable-next-line no-console\n// console.error(err);\n// throw err;\n// }\n\ndescribe('filing-cabinet', () => {\n describe('JavaScript', () => {\n beforeEach(() => {\n mockfs(mockedFiles);\n });\n\n afterEach(() => {\n cleanUnitDir();\n });\n\n it('uses a generic resolve for unsupported file extensions', () => {\n const resolvedFile = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/commonjs/foo.baz`,\n directory: `${UNIT_TEST_DIR}/js/commonjs/`,\n });\n assert.ok(resolvedFile.endsWith('bar.baz'));\n });\n\n describe('when given an ast for a JS file', () => {\n it('reuses the ast when trying to determine the module type', () => {\n const ast = {};\n\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n ast,\n });\n assert.ok(result.endsWith(path.normalize('es6/bar.js')));\n });\n\n it('resolves the dependency successfully', () => {\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n ast: mockAST,\n });\n assert.equal(result, path.join(UNIT_TEST_DIR, 'js/es6/bar.js'));\n });\n });\n\n describe('when not given an ast', () => {\n it('uses the filename to look for the module type', () => {\n const options = {\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n };\n\n const result = cabinet(options);\n assert.equal(result, path.join(UNIT_TEST_DIR, 'js/es6/bar.js'));\n });\n });\n\n describe('es6', () => {\n // TODO: commonJSLookup is not able to be stubbed after the revamp, but keep the test case temporarily for reference\n it.skip('assumes commonjs for es6 modules with no requirejs/webpack config', () => {\n const stub = sinon.stub();\n const revert = cabinetNonDefault.__set__('commonJSLookup', stub);\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n });\n\n assert.ok(stub.called);\n\n revert();\n });\n });\n\n describe('jsx', () => {\n it('resolves files with the .jsx extension', () => {\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.jsx`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n });\n\n assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/es6/bar.js')}`);\n });\n });\n\n // describe('amd', () => {\n // it('uses the amd resolver', () => {\n // const resolvedFile = cabinet({\n // dependency: './bar',\n // filename: `${UNIT_TEST_DIR}/js/amd/foo.js`,\n // directory: `${UNIT_TEST_DIR}/js/amd/`,\n // });\n // assert.ok(resolvedFile.endsWith('amd/bar.js'));\n // });\n\n // // skipped as part of lazy loading fix. not seems to be super helpful test\n // it.skip('passes along arguments', () => {\n // const stub = sinon.stub();\n // const revert = cabinet.__set__('amdLookup', stub);\n // const config = { baseUrl: 'js' };\n\n // cabinet({\n // dependency: 'bar',\n // config,\n // configPath: 'config.js',\n // filename: `${UNIT_TEST_DIR}/js/amd/foo.js`,\n // directory: `${UNIT_TEST_DIR}/js/amd/`,\n // });\n\n // const args = stub.getCall(0).args[0];\n\n // assert.equal(args.dependency, 'bar');\n // assert.equal(args.config, config);\n // assert.equal(args.configPath, 'config.js');\n // assert.equal(args.filename, 'js/amd/foo.js');\n // assert.equal(args.directory, 'js/amd/');\n\n // assert.ok(stub.called);\n\n // revert();\n // });\n // });\n\n describe('commonjs', () => {\n // TODO: commonJSLookup is not able to be stubbed after the revamp, but keep the test case temporarily for reference\n it.skip(\"uses require's resolver\", () => {\n const stub = sinon.stub();\n const revert = cabinetNonDefault.__set__('commonJSLookup', stub);\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/commonjs/`,\n });\n\n assert.ok(stub.called);\n\n revert();\n });\n\n it('returns an empty string for an unresolved module', () => {\n const result = cabinet({\n dependency: 'foobar',\n filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/commonjs/`,\n });\n\n assert.equal(result, '');\n });\n\n it('adds the directory to the require resolution paths', () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n cabinet({\n dependency: 'foobar',\n filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,\n directory,\n });\n\n assert.ok(\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n require.main.paths.some(function (p) {\n return p.indexOf(path.normalize(directory)) !== -1;\n })\n );\n });\n\n it('resolves a relative dependency about the filename', () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n const filename = `${directory}foo.js`;\n\n const result = cabinet({\n dependency: './bar',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'bar.js'));\n });\n\n it(\"resolves a .. dependency to its parent directory's index.js file\", () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n const filename = `${directory}subdir/module.js`;\n\n const result = cabinet({\n dependency: '../',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'index.js'));\n });\n\n // @todo: fix\n it.skip('resolves a dependency within a directory outside of the given file', () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n const filename = `${directory}test/index.spec.js`;\n\n const result = cabinet({\n dependency: 'subdir',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'subdir/index.js'));\n });\n\n // @todo: fix\n it.skip('resolves a node module with module entry in package.json', () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n const filename = `${directory}module.entry.js`;\n\n const result = cabinet({\n dependency: 'module.entry',\n filename,\n directory,\n nodeModulesConfig: {\n entry: 'module',\n },\n });\n\n assert.equal(\n result,\n path.join(path.resolve(directory), '..', 'node_modules', 'module.entry', 'index.module.js')\n );\n });\n\n it('resolves a nested module', () => {\n const directory = `${UNIT_TEST_DIR}/js/node_modules/nested/`;\n const filename = `${directory}index.js`;\n\n const result = cabinet({\n dependency: 'lodash.assign',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'node_modules', 'lodash.assign', 'index.js'));\n });\n\n it('resolves to the index.js file of a directory', () => {\n const directory = `${UNIT_TEST_DIR}/js/withIndex`;\n const filename = `${directory}/index.js`;\n\n const result = cabinet({\n dependency: './subdir',\n filename,\n directory,\n });\n\n assert.equal(result, path.normalize(`${path.resolve(directory)}/subdir/index.js`));\n });\n\n it('resolves implicit .jsx requires', () => {\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/cjs/`,\n });\n\n assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/bar.jsx')}`);\n });\n\n it('resolves implicit .scss requires', () => {\n const result = cabinet({\n dependency: './baz',\n filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/cjs/`,\n });\n\n assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/baz.scss')}`);\n });\n\n it('resolves implicit .json requires', () => {\n const result = cabinet({\n dependency: './pkg',\n filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/cjs/`,\n });\n\n assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/pkg.json')}`);\n });\n });\n\n describe('typescript', () => {\n it('resolves an import', () => {\n const directory = `${UNIT_TEST_DIR}/js/ts`;\n const filename = `${directory}/index.ts`;\n\n const result = cabinet({\n dependency: './foo',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'foo.ts'));\n });\n\n describe('when a dependency does not exist', () => {\n it('returns an empty result', () => {\n const directory = `${UNIT_TEST_DIR}/js/ts`;\n const filename = `${directory}/index.ts`;\n\n const result = cabinet({\n dependency: './barbar',\n filename,\n directory,\n });\n\n assert.equal(result, '');\n });\n });\n });\n });\n\n describe('CSS', () => {\n beforeEach(() => {\n mockfs({\n stylus: {\n 'foo.styl': '',\n 'bar.styl': '',\n },\n sass: {\n 'foo.scss': '',\n 'bar.scss': '',\n 'foo.sass': '',\n 'bar.sass': '',\n },\n less: {\n 'foo.less': '',\n 'bar.less': '',\n 'bar.css': '',\n },\n });\n\n // mockJSDir = path.resolve(__dirname, '../');\n });\n\n afterEach(() => {\n cleanUnitDir();\n });\n\n describe('sass', () => {\n it('uses the sass resolver for .scss files', () => {\n const result = cabinet({\n dependency: 'bar',\n filename: `${UNIT_TEST_DIR}/sass/foo.scss`,\n directory: `${UNIT_TEST_DIR}/sass/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/sass/bar.scss`));\n });\n\n it('uses the sass resolver for .sass files', () => {\n const result = cabinet({\n dependency: 'bar',\n filename: `${UNIT_TEST_DIR}/sass/foo.sass`,\n directory: `${UNIT_TEST_DIR}/sass/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/sass/bar.sass`));\n });\n });\n\n describe('stylus', () => {\n it('uses the stylus resolver', () => {\n const result = cabinet({\n dependency: 'bar',\n filename: `${UNIT_TEST_DIR}/stylus/foo.styl`,\n directory: `${UNIT_TEST_DIR}/stylus/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/stylus/bar.styl`));\n });\n });\n\n describe('less', () => {\n it('resolves extensionless dependencies', () => {\n const result = cabinet({\n dependency: 'bar',\n filename: `${UNIT_TEST_DIR}/less/foo.less`,\n directory: `${UNIT_TEST_DIR}/less/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.less`));\n });\n\n it('resolves dependencies with a less extension', () => {\n const result = cabinet({\n dependency: 'bar.less',\n filename: `${UNIT_TEST_DIR}/less/foo.less`,\n directory: `${UNIT_TEST_DIR}/less/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.less`));\n });\n\n it('resolves dependencies with a css extension', () => {\n const result = cabinet({\n dependency: 'bar.css',\n filename: `${UNIT_TEST_DIR}/less/foo.less`,\n directory: `${UNIT_TEST_DIR}/less/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.css`));\n });\n });\n });\n\n describe('unrecognized extension', () => {\n it('uses a generic resolve for unsupported file extensions', () => {\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/barbazim/foo.baz`,\n directory: `${UNIT_TEST_DIR}/barbazim/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/barbazim/bar.baz`));\n });\n });\n\n describe('custom env lookups', () => {\n it('supports passing env detectors', () => {\n const detector: DependencyDetector = {\n detect: (fileContent: string) => {\n return fileContent.indexOf('foo') === -1 ? [] : ['foo'];\n },\n isSupported: ({ ext }) => {\n return ext === '.foo';\n },\n dependencyLookup: ({ dependency }) => {\n return `/xyz/${dependency}.baz`;\n },\n type: 'foo',\n };\n const result = cabinet({\n directory: `${UNIT_TEST_DIR}/barbazim/`,\n filename: `${UNIT_TEST_DIR}/barbazim/xxx.foo`,\n ext: '.foo',\n dependency: 'bar',\n envDetectors: [detector],\n });\n\n assert.equal(result, '/xyz/bar.baz');\n });\n });\n\n describe('.register', () => {\n it('registers a custom resolver for a given extension', () => {\n const stub = sinon.stub().returns('foo.foobar');\n cabinetNonDefault.register('.foobar', stub);\n\n const pathResult = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,\n directory: `${UNIT_TEST_DIR}/js/amd/`,\n });\n\n assert.ok(stub.called);\n assert.equal(pathResult, 'foo.foobar');\n });\n\n it('allows does not break default resolvers', () => {\n mockfs({\n stylus: {\n 'foo.styl': '',\n 'bar.styl': '',\n },\n });\n\n const stub = sinon.stub().returns('foo');\n\n cabinetNonDefault.register('.foobar', stub);\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,\n directory: `${UNIT_TEST_DIR}/js/amd/`,\n });\n\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/stylus/foo.styl`,\n directory: `${UNIT_TEST_DIR}/stylus/`,\n });\n\n assert.ok(stub.called);\n assert.ok(result);\n\n cleanUnitDir();\n });\n\n it('can be called multiple times', () => {\n const stub = sinon.stub().returns('foo');\n const stub2 = sinon.stub().returns('foo');\n\n cabinetNonDefault.register('.foobar', stub);\n cabinetNonDefault.register('.barbar', stub2);\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,\n directory: `${UNIT_TEST_DIR}/js/amd/`,\n });\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/amd/foo.barbar`,\n directory: `${UNIT_TEST_DIR}/js/amd/`,\n });\n\n assert.ok(stub.called);\n assert.ok(stub2.called);\n });\n\n it('does not add redundant extensions to supportedFileExtensions', () => {\n const stub = sinon.stub;\n const newExt = '.foobar';\n\n cabinetNonDefault.register(newExt, stub);\n cabinetNonDefault.register(newExt, stub);\n\n const { supportedFileExtensions } = cabinetNonDefault;\n\n assert.equal(supportedFileExtensions.indexOf(newExt), supportedFileExtensions.lastIndexOf(newExt));\n });\n });\n\n // @todo: fix.\n describe.skip('webpack', () => {\n let directory;\n\n beforeEach(() => {\n directory = path.resolve(__dirname, '../../../');\n });\n\n function testResolution(dependency, expected) {\n const resolved = cabinet({\n dependency,\n filename: `${__dirname}/index.js`,\n directory,\n webpackConfig: `${fixtures}/webpack.config.js`,\n });\n\n assert.equal(resolved, path.normalize(expected));\n }\n\n it('resolves an aliased path', () => {\n testResolution('R', `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves a non-aliased path', () => {\n testResolution('resolve', `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves a relative path', () => {\n testResolution('./test/ast', `${fixtures}/test/ast.js`);\n });\n\n it('resolves an absolute path from a file within a subdirectory', () => {\n const resolved = cabinet({\n dependency: 'R',\n filename: `${fixtures}/test/ast.js`,\n directory,\n webpackConfig: `${fixtures}/webpack.config.js`,\n });\n\n assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves a path using resolve.root', () => {\n const resolved = cabinet({\n dependency: 'mod1',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-root.config.js`,\n });\n\n assert.equal(resolved, `${directory}/test/root1/mod1.js`);\n });\n\n it('resolves NPM module when using resolve.root', () => {\n const resolved = cabinet({\n dependency: 'resolve',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-root.config.js`,\n });\n\n assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves NPM module when using resolve.modulesDirectories', () => {\n const resolved = cabinet({\n dependency: 'resolve',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-root.config.js`,\n });\n\n assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves a path using resolve.modulesDirectories', () => {\n const resolved = cabinet({\n dependency: 'mod2',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-root.config.js`,\n });\n\n assert.equal(resolved, `${directory}/test/root2/mod2.js`);\n });\n\n it('resolves a path using webpack config that exports a function', () => {\n const resolved = cabinet({\n dependency: 'R',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-env.config.js`,\n });\n\n assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves files with a .jsx extension', () => {\n testResolution('./test/foo.jsx', `${directory}/test/foo.jsx`);\n });\n\n describe('when the dependency contains a loader', () => {\n it('still works', () => {\n testResolution('hgn!resolve', `${directory}/node_modules/resolve/index.js`);\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_defenderFs","data","require","_fsExtra","_interopRequireDefault","_assert","_path","_rewire","_sinon","e","__esModule","default","UNIT_TEST_DIR","path","join","BIT_TEMP_ROOT","cabinetNonDefault","rewire","cabinet","fixtures","resolve","__dirname","mockedFiles","mockAST","mockfs","obj","acc","Object","entries","forEach","key","value","filePath","fullFilePath","content","fs","outputFileSync","undefined","cleanUnitDir","removeSync","describe","beforeEach","afterEach","it","resolvedFile","dependency","filename","directory","assert","ok","endsWith","ast","result","normalize","equal","options","skip","stub","sinon","revert","__set__","called","main","paths","some","p","indexOf","nodeModulesConfig","entry","stylus","sass","less","detector","detect","fileContent","isSupported","ext","dependencyLookup","type","envDetectors","returns","register","pathResult","stub2","newExt","supportedFileExtensions","lastIndexOf","testResolution","expected","resolved","webpackConfig"],"sources":["index.spec.ts"],"sourcesContent":["import { BIT_TEMP_ROOT } from '@teambit/defender.fs.global-bit-temp-dir';\nimport fs from 'fs-extra';\nimport assert from 'assert';\nimport path from 'path';\nimport rewire from 'rewire';\nimport sinon from 'sinon';\n\nimport type { DependencyDetector } from '@teambit/dependency-resolver';\n\nconst UNIT_TEST_DIR = path.join(BIT_TEMP_ROOT, 'unit-test');\n\nconst cabinetNonDefault = rewire('./');\nconst cabinet = cabinetNonDefault.default;\n\nconst fixtures = path.resolve(`${__dirname}/../fixtures/filing-cabinet`);\n\n// eslint-disable-next-line import/no-dynamic-require, global-require\nconst mockedFiles = require(`${fixtures}/mockedJSFiles`);\n// eslint-disable-next-line import/no-dynamic-require, global-require\nconst mockAST = require(`${fixtures}/ast`);\n\nfunction mockfs(obj: any, acc?: string) {\n Object.entries(obj).forEach(([key, value]) => {\n if (typeof value === 'string') {\n const filePath = acc ? path.join(acc, key) : key;\n const fullFilePath = path.join(UNIT_TEST_DIR, filePath);\n const content = value;\n return fs.outputFileSync(fullFilePath, content);\n }\n mockfs(value, acc ? path.join(acc, key) : key);\n return undefined;\n });\n}\n\nfunction cleanUnitDir() {\n fs.removeSync(UNIT_TEST_DIR);\n}\n\n// try {\n// // eslint-disable-next-line global-require\n// require('module-lookup-amd');\n// } catch (err: any) {\n// // eslint-disable-next-line no-console\n// console.log(`mocha suppresses the error, so console.error is needed to show the error on the screen.\n// the problem is with module-lookup-amd that calls requirejs package and uses rewire package.\n// see https://github.com/jhnns/rewire/issues/178 for more details.\n// the error occurs since node v12.16.0. for the time being, to run the tests, use an earlier version.\n// `);\n// // eslint-disable-next-line no-console\n// console.error(err);\n// throw err;\n// }\n\ndescribe('filing-cabinet', () => {\n describe('JavaScript', () => {\n beforeEach(() => {\n mockfs(mockedFiles);\n });\n\n afterEach(() => {\n cleanUnitDir();\n });\n\n it('uses a generic resolve for unsupported file extensions', () => {\n const resolvedFile = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/commonjs/foo.baz`,\n directory: `${UNIT_TEST_DIR}/js/commonjs/`,\n });\n assert.ok(resolvedFile.endsWith('bar.baz'));\n });\n\n describe('when given an ast for a JS file', () => {\n it('reuses the ast when trying to determine the module type', () => {\n const ast = {};\n\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n ast,\n });\n assert.ok(result.endsWith(path.normalize('es6/bar.js')));\n });\n\n it('resolves the dependency successfully', () => {\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n ast: mockAST,\n });\n assert.equal(result, path.join(UNIT_TEST_DIR, 'js/es6/bar.js'));\n });\n });\n\n describe('when not given an ast', () => {\n it('uses the filename to look for the module type', () => {\n const options = {\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n };\n\n const result = cabinet(options);\n assert.equal(result, path.join(UNIT_TEST_DIR, 'js/es6/bar.js'));\n });\n });\n\n describe('es6', () => {\n // TODO: commonJSLookup is not able to be stubbed after the revamp, but keep the test case temporarily for reference\n it.skip('assumes commonjs for es6 modules with no requirejs/webpack config', () => {\n const stub = sinon.stub();\n const revert = cabinetNonDefault.__set__('commonJSLookup', stub);\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n });\n\n assert.ok(stub.called);\n\n revert();\n });\n });\n\n describe('jsx', () => {\n it('resolves files with the .jsx extension', () => {\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/es6/foo.jsx`,\n directory: `${UNIT_TEST_DIR}/js/es6/`,\n });\n\n assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/es6/bar.js')}`);\n });\n });\n\n // describe('amd', () => {\n // it('uses the amd resolver', () => {\n // const resolvedFile = cabinet({\n // dependency: './bar',\n // filename: `${UNIT_TEST_DIR}/js/amd/foo.js`,\n // directory: `${UNIT_TEST_DIR}/js/amd/`,\n // });\n // assert.ok(resolvedFile.endsWith('amd/bar.js'));\n // });\n\n // // skipped as part of lazy loading fix. not seems to be super helpful test\n // it.skip('passes along arguments', () => {\n // const stub = sinon.stub();\n // const revert = cabinet.__set__('amdLookup', stub);\n // const config = { baseUrl: 'js' };\n\n // cabinet({\n // dependency: 'bar',\n // config,\n // configPath: 'config.js',\n // filename: `${UNIT_TEST_DIR}/js/amd/foo.js`,\n // directory: `${UNIT_TEST_DIR}/js/amd/`,\n // });\n\n // const args = stub.getCall(0).args[0];\n\n // assert.equal(args.dependency, 'bar');\n // assert.equal(args.config, config);\n // assert.equal(args.configPath, 'config.js');\n // assert.equal(args.filename, 'js/amd/foo.js');\n // assert.equal(args.directory, 'js/amd/');\n\n // assert.ok(stub.called);\n\n // revert();\n // });\n // });\n\n describe('commonjs', () => {\n // TODO: commonJSLookup is not able to be stubbed after the revamp, but keep the test case temporarily for reference\n it.skip(\"uses require's resolver\", () => {\n const stub = sinon.stub();\n const revert = cabinetNonDefault.__set__('commonJSLookup', stub);\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/commonjs/`,\n });\n\n assert.ok(stub.called);\n\n revert();\n });\n\n it('returns an empty string for an unresolved module', () => {\n const result = cabinet({\n dependency: 'foobar',\n filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/commonjs/`,\n });\n\n assert.equal(result, '');\n });\n\n it('adds the directory to the require resolution paths', () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n cabinet({\n dependency: 'foobar',\n filename: `${UNIT_TEST_DIR}/js/commonjs/foo.js`,\n directory,\n });\n\n assert.ok(\n require.main!.paths.some(function (p) {\n return p.indexOf(path.normalize(directory)) !== -1;\n })\n );\n });\n\n it('resolves a relative dependency about the filename', () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n const filename = `${directory}foo.js`;\n\n const result = cabinet({\n dependency: './bar',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'bar.js'));\n });\n\n it(\"resolves a .. dependency to its parent directory's index.js file\", () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n const filename = `${directory}subdir/module.js`;\n\n const result = cabinet({\n dependency: '../',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'index.js'));\n });\n\n // @todo: fix\n it.skip('resolves a dependency within a directory outside of the given file', () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n const filename = `${directory}test/index.spec.js`;\n\n const result = cabinet({\n dependency: 'subdir',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'subdir/index.js'));\n });\n\n // @todo: fix\n it.skip('resolves a node module with module entry in package.json', () => {\n const directory = `${UNIT_TEST_DIR}/js/commonjs/`;\n const filename = `${directory}module.entry.js`;\n\n const result = cabinet({\n dependency: 'module.entry',\n filename,\n directory,\n nodeModulesConfig: {\n entry: 'module',\n },\n });\n\n assert.equal(\n result,\n path.join(path.resolve(directory), '..', 'node_modules', 'module.entry', 'index.module.js')\n );\n });\n\n it('resolves a nested module', () => {\n const directory = `${UNIT_TEST_DIR}/js/node_modules/nested/`;\n const filename = `${directory}index.js`;\n\n const result = cabinet({\n dependency: 'lodash.assign',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'node_modules', 'lodash.assign', 'index.js'));\n });\n\n it('resolves to the index.js file of a directory', () => {\n const directory = `${UNIT_TEST_DIR}/js/withIndex`;\n const filename = `${directory}/index.js`;\n\n const result = cabinet({\n dependency: './subdir',\n filename,\n directory,\n });\n\n assert.equal(result, path.normalize(`${path.resolve(directory)}/subdir/index.js`));\n });\n\n it('resolves implicit .jsx requires', () => {\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/cjs/`,\n });\n\n assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/bar.jsx')}`);\n });\n\n it('resolves implicit .scss requires', () => {\n const result = cabinet({\n dependency: './baz',\n filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/cjs/`,\n });\n\n assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/baz.scss')}`);\n });\n\n it('resolves implicit .json requires', () => {\n const result = cabinet({\n dependency: './pkg',\n filename: `${UNIT_TEST_DIR}/js/cjs/foo.js`,\n directory: `${UNIT_TEST_DIR}/js/cjs/`,\n });\n\n assert.equal(result, `${path.join(UNIT_TEST_DIR, 'js/cjs/pkg.json')}`);\n });\n });\n\n describe('typescript', () => {\n it('resolves an import', () => {\n const directory = `${UNIT_TEST_DIR}/js/ts`;\n const filename = `${directory}/index.ts`;\n\n const result = cabinet({\n dependency: './foo',\n filename,\n directory,\n });\n\n assert.equal(result, path.join(path.resolve(directory), 'foo.ts'));\n });\n\n describe('when a dependency does not exist', () => {\n it('returns an empty result', () => {\n const directory = `${UNIT_TEST_DIR}/js/ts`;\n const filename = `${directory}/index.ts`;\n\n const result = cabinet({\n dependency: './barbar',\n filename,\n directory,\n });\n\n assert.equal(result, '');\n });\n });\n });\n });\n\n describe('CSS', () => {\n beforeEach(() => {\n mockfs({\n stylus: {\n 'foo.styl': '',\n 'bar.styl': '',\n },\n sass: {\n 'foo.scss': '',\n 'bar.scss': '',\n 'foo.sass': '',\n 'bar.sass': '',\n },\n less: {\n 'foo.less': '',\n 'bar.less': '',\n 'bar.css': '',\n },\n });\n\n // mockJSDir = path.resolve(__dirname, '../');\n });\n\n afterEach(() => {\n cleanUnitDir();\n });\n\n describe('sass', () => {\n it('uses the sass resolver for .scss files', () => {\n const result = cabinet({\n dependency: 'bar',\n filename: `${UNIT_TEST_DIR}/sass/foo.scss`,\n directory: `${UNIT_TEST_DIR}/sass/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/sass/bar.scss`));\n });\n\n it('uses the sass resolver for .sass files', () => {\n const result = cabinet({\n dependency: 'bar',\n filename: `${UNIT_TEST_DIR}/sass/foo.sass`,\n directory: `${UNIT_TEST_DIR}/sass/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/sass/bar.sass`));\n });\n });\n\n describe('stylus', () => {\n it('uses the stylus resolver', () => {\n const result = cabinet({\n dependency: 'bar',\n filename: `${UNIT_TEST_DIR}/stylus/foo.styl`,\n directory: `${UNIT_TEST_DIR}/stylus/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/stylus/bar.styl`));\n });\n });\n\n describe('less', () => {\n it('resolves extensionless dependencies', () => {\n const result = cabinet({\n dependency: 'bar',\n filename: `${UNIT_TEST_DIR}/less/foo.less`,\n directory: `${UNIT_TEST_DIR}/less/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.less`));\n });\n\n it('resolves dependencies with a less extension', () => {\n const result = cabinet({\n dependency: 'bar.less',\n filename: `${UNIT_TEST_DIR}/less/foo.less`,\n directory: `${UNIT_TEST_DIR}/less/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.less`));\n });\n\n it('resolves dependencies with a css extension', () => {\n const result = cabinet({\n dependency: 'bar.css',\n filename: `${UNIT_TEST_DIR}/less/foo.less`,\n directory: `${UNIT_TEST_DIR}/less/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/less/bar.css`));\n });\n });\n });\n\n describe('unrecognized extension', () => {\n it('uses a generic resolve for unsupported file extensions', () => {\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/barbazim/foo.baz`,\n directory: `${UNIT_TEST_DIR}/barbazim/`,\n });\n\n assert.equal(result, path.normalize(`${UNIT_TEST_DIR}/barbazim/bar.baz`));\n });\n });\n\n describe('custom env lookups', () => {\n it('supports passing env detectors', () => {\n const detector: DependencyDetector = {\n detect: (fileContent: string) => {\n return fileContent.indexOf('foo') === -1 ? [] : ['foo'];\n },\n isSupported: ({ ext }) => {\n return ext === '.foo';\n },\n dependencyLookup: ({ dependency }) => {\n return `/xyz/${dependency}.baz`;\n },\n type: 'foo',\n };\n const result = cabinet({\n directory: `${UNIT_TEST_DIR}/barbazim/`,\n filename: `${UNIT_TEST_DIR}/barbazim/xxx.foo`,\n ext: '.foo',\n dependency: 'bar',\n envDetectors: [detector],\n });\n\n assert.equal(result, '/xyz/bar.baz');\n });\n });\n\n describe('.register', () => {\n it('registers a custom resolver for a given extension', () => {\n const stub = sinon.stub().returns('foo.foobar');\n cabinetNonDefault.register('.foobar', stub);\n\n const pathResult = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,\n directory: `${UNIT_TEST_DIR}/js/amd/`,\n });\n\n assert.ok(stub.called);\n assert.equal(pathResult, 'foo.foobar');\n });\n\n it('allows does not break default resolvers', () => {\n mockfs({\n stylus: {\n 'foo.styl': '',\n 'bar.styl': '',\n },\n });\n\n const stub = sinon.stub().returns('foo');\n\n cabinetNonDefault.register('.foobar', stub);\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,\n directory: `${UNIT_TEST_DIR}/js/amd/`,\n });\n\n const result = cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/stylus/foo.styl`,\n directory: `${UNIT_TEST_DIR}/stylus/`,\n });\n\n assert.ok(stub.called);\n assert.ok(result);\n\n cleanUnitDir();\n });\n\n it('can be called multiple times', () => {\n const stub = sinon.stub().returns('foo');\n const stub2 = sinon.stub().returns('foo');\n\n cabinetNonDefault.register('.foobar', stub);\n cabinetNonDefault.register('.barbar', stub2);\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/amd/foo.foobar`,\n directory: `${UNIT_TEST_DIR}/js/amd/`,\n });\n\n cabinet({\n dependency: './bar',\n filename: `${UNIT_TEST_DIR}/js/amd/foo.barbar`,\n directory: `${UNIT_TEST_DIR}/js/amd/`,\n });\n\n assert.ok(stub.called);\n assert.ok(stub2.called);\n });\n\n it('does not add redundant extensions to supportedFileExtensions', () => {\n const stub = sinon.stub;\n const newExt = '.foobar';\n\n cabinetNonDefault.register(newExt, stub);\n cabinetNonDefault.register(newExt, stub);\n\n const { supportedFileExtensions } = cabinetNonDefault;\n\n assert.equal(supportedFileExtensions.indexOf(newExt), supportedFileExtensions.lastIndexOf(newExt));\n });\n });\n\n // @todo: fix.\n describe.skip('webpack', () => {\n let directory;\n\n beforeEach(() => {\n directory = path.resolve(__dirname, '../../../');\n });\n\n function testResolution(dependency, expected) {\n const resolved = cabinet({\n dependency,\n filename: `${__dirname}/index.js`,\n directory,\n webpackConfig: `${fixtures}/webpack.config.js`,\n });\n\n assert.equal(resolved, path.normalize(expected));\n }\n\n it('resolves an aliased path', () => {\n testResolution('R', `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves a non-aliased path', () => {\n testResolution('resolve', `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves a relative path', () => {\n testResolution('./test/ast', `${fixtures}/test/ast.js`);\n });\n\n it('resolves an absolute path from a file within a subdirectory', () => {\n const resolved = cabinet({\n dependency: 'R',\n filename: `${fixtures}/test/ast.js`,\n directory,\n webpackConfig: `${fixtures}/webpack.config.js`,\n });\n\n assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves a path using resolve.root', () => {\n const resolved = cabinet({\n dependency: 'mod1',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-root.config.js`,\n });\n\n assert.equal(resolved, `${directory}/test/root1/mod1.js`);\n });\n\n it('resolves NPM module when using resolve.root', () => {\n const resolved = cabinet({\n dependency: 'resolve',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-root.config.js`,\n });\n\n assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves NPM module when using resolve.modulesDirectories', () => {\n const resolved = cabinet({\n dependency: 'resolve',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-root.config.js`,\n });\n\n assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves a path using resolve.modulesDirectories', () => {\n const resolved = cabinet({\n dependency: 'mod2',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-root.config.js`,\n });\n\n assert.equal(resolved, `${directory}/test/root2/mod2.js`);\n });\n\n it('resolves a path using webpack config that exports a function', () => {\n const resolved = cabinet({\n dependency: 'R',\n filename: `${directory}/index.js`,\n directory,\n webpackConfig: `${directory}/webpack-env.config.js`,\n });\n\n assert.equal(resolved, `${directory}/node_modules/resolve/index.js`);\n });\n\n it('resolves files with a .jsx extension', () => {\n testResolution('./test/foo.jsx', `${directory}/test/foo.jsx`);\n });\n\n describe('when the dependency contains a loader', () => {\n it('still works', () => {\n testResolution('hgn!resolve', `${directory}/node_modules/resolve/index.js`);\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,65 +2,64 @@
|
|
|
2
2
|
* this file had been forked from https://github.com/dependents/node-dependency-tree
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import debugFactory from 'debug';
|
|
7
|
+
import type { DependencyDetector } from '@teambit/dependency-resolver';
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
10
|
-
this.filename = options.filename;
|
|
11
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
12
|
-
this.directory = options.directory || options.root;
|
|
13
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
14
|
-
this.visited = options.visited || {};
|
|
15
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
16
|
-
this.errors = options.errors || {};
|
|
17
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
18
|
-
this.nonExistent = options.nonExistent || [];
|
|
19
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
20
|
-
this.isListForm = options.isListForm;
|
|
21
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
22
|
-
this.requireConfig = options.config || options.requireConfig;
|
|
23
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
24
|
-
this.webpackConfig = options.webpackConfig;
|
|
25
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
26
|
-
this.detectiveConfig = options.detective || options.detectiveConfig || {};
|
|
27
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
28
|
-
this.pathMap = options.pathMap || [];
|
|
29
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
30
|
-
this.resolveConfig = options.resolveConfig;
|
|
31
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
32
|
-
this.cacheProjectAst = options.cacheProjectAst;
|
|
33
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
34
|
-
this.envDetectors = options.envDetectors;
|
|
9
|
+
const debug = debugFactory('tree');
|
|
35
10
|
|
|
36
|
-
|
|
37
|
-
|
|
11
|
+
export default class Config {
|
|
12
|
+
filename: string;
|
|
13
|
+
directory: string;
|
|
14
|
+
visited: Record<string, any>;
|
|
15
|
+
errors: Record<string, any>;
|
|
16
|
+
nonExistent: Record<string, string[]>;
|
|
17
|
+
isListForm?: boolean;
|
|
18
|
+
requireConfig?: Record<string, any>;
|
|
19
|
+
webpackConfig?: Record<string, any>;
|
|
20
|
+
detectiveConfig: Record<string, any>;
|
|
21
|
+
pathMap: Array<Record<string, any>>;
|
|
22
|
+
resolveConfig?: Record<string, any>;
|
|
23
|
+
cacheProjectAst?: boolean;
|
|
24
|
+
envDetectors?: DependencyDetector[];
|
|
25
|
+
filter?: (filePath: string, filename: string) => boolean;
|
|
38
26
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
27
|
+
constructor(options) {
|
|
28
|
+
this.filename = options.filename;
|
|
29
|
+
this.directory = options.directory || options.root;
|
|
30
|
+
this.visited = options.visited || {};
|
|
31
|
+
this.errors = options.errors || {};
|
|
32
|
+
this.nonExistent = options.nonExistent || [];
|
|
33
|
+
this.isListForm = options.isListForm;
|
|
34
|
+
this.requireConfig = options.config || options.requireConfig;
|
|
35
|
+
this.webpackConfig = options.webpackConfig;
|
|
36
|
+
this.detectiveConfig = options.detective || options.detectiveConfig || {};
|
|
37
|
+
this.pathMap = options.pathMap || [];
|
|
38
|
+
this.resolveConfig = options.resolveConfig;
|
|
39
|
+
this.cacheProjectAst = options.cacheProjectAst;
|
|
40
|
+
this.envDetectors = options.envDetectors;
|
|
51
41
|
|
|
52
|
-
|
|
53
|
-
debug(`given filename: ${this.filename}`);
|
|
42
|
+
this.filter = options.filter;
|
|
54
43
|
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
if (!this.filename) {
|
|
45
|
+
throw new Error('filename not given');
|
|
46
|
+
}
|
|
47
|
+
if (!this.directory) {
|
|
48
|
+
throw new Error('directory not given');
|
|
49
|
+
}
|
|
50
|
+
if (this.filter && typeof this.filter !== 'function') {
|
|
51
|
+
throw new Error('filter must be a function');
|
|
52
|
+
}
|
|
57
53
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
debug('visited: ', this.visited);
|
|
62
|
-
}
|
|
54
|
+
debug(`given filename: ${this.filename}`);
|
|
55
|
+
|
|
56
|
+
this.filename = path.resolve(process.cwd(), this.filename);
|
|
63
57
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
58
|
+
debug(`resolved filename: ${this.filename}`);
|
|
59
|
+
debug('visited: ', this.visited);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
clone() {
|
|
63
|
+
return new Config(this);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -783,24 +783,21 @@ describe('dependencyTree', function () {
|
|
|
783
783
|
const barFile = path.normalize(`${directory}/bar.js`);
|
|
784
784
|
const bazFile = path.normalize(`${directory}/baz.js`);
|
|
785
785
|
const nonExistent = {};
|
|
786
|
-
const config = {
|
|
786
|
+
const config: { directory: string; nonExistent: Record<string, string[]>; visited: object; filename?: string } = {
|
|
787
787
|
directory,
|
|
788
788
|
nonExistent,
|
|
789
789
|
visited: {},
|
|
790
790
|
};
|
|
791
791
|
|
|
792
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
793
792
|
config.filename = fooFile;
|
|
794
793
|
await dependencyTree(config);
|
|
795
794
|
expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);
|
|
796
795
|
|
|
797
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
798
796
|
config.filename = barFile;
|
|
799
797
|
await dependencyTree(config);
|
|
800
798
|
expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);
|
|
801
799
|
expect(nonExistent[barFile]).to.deep.equal(['non-exist-bar-pkg']);
|
|
802
800
|
|
|
803
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
804
801
|
config.filename = bazFile;
|
|
805
802
|
await dependencyTree(config);
|
|
806
803
|
expect(nonExistent[fooFile]).to.deep.equal(['non-exist-foo-pkg']);
|
|
@@ -821,15 +818,13 @@ describe('dependencyTree', function () {
|
|
|
821
818
|
const directory = path.normalize(`${UNIT_TEST_DIR}/baz`);
|
|
822
819
|
const baseFile = path.normalize(`${directory}/base.scss`);
|
|
823
820
|
const indexFile = path.normalize(`${directory}/index.jsx`);
|
|
824
|
-
const config = {
|
|
821
|
+
const config: { directory: string; filename?: string } = {
|
|
825
822
|
directory,
|
|
826
823
|
};
|
|
827
824
|
|
|
828
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
829
825
|
config.filename = baseFile;
|
|
830
826
|
await dependencyTree(config);
|
|
831
827
|
|
|
832
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
833
828
|
config.filename = indexFile;
|
|
834
829
|
const dependencies = await dependencyTree(config);
|
|
835
830
|
expect(dependencies).to.be.ok;
|
|
@@ -83,12 +83,11 @@ module.exports._getDependencies = async function (config) {
|
|
|
83
83
|
const isDependenciesArray = Array.isArray(dependenciesRaw);
|
|
84
84
|
debug(`extracted ${dependencies.length} dependencies: `, dependencies);
|
|
85
85
|
|
|
86
|
-
const resolvedDependencies = [];
|
|
87
|
-
const pathMapDependencies = [];
|
|
88
|
-
const pathMapFile = { file: config.filename };
|
|
86
|
+
const resolvedDependencies: string[] = [];
|
|
87
|
+
const pathMapDependencies: Array<Record<string, any>> = [];
|
|
88
|
+
const pathMapFile: Record<string, any> = { file: config.filename };
|
|
89
89
|
|
|
90
90
|
dependencies.forEach((dependency) => processDependency(dependency));
|
|
91
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
92
91
|
pathMapFile.dependencies = pathMapDependencies;
|
|
93
92
|
config.pathMap.push(pathMapFile);
|
|
94
93
|
return resolvedDependencies;
|
|
@@ -98,7 +97,7 @@ module.exports._getDependencies = async function (config) {
|
|
|
98
97
|
debug(`skipping an http dependency: ${dependency}`);
|
|
99
98
|
return;
|
|
100
99
|
}
|
|
101
|
-
const cabinetParams = {
|
|
100
|
+
const cabinetParams: Parameters<typeof cabinet>[0] = {
|
|
102
101
|
dependency,
|
|
103
102
|
filename: config.filename,
|
|
104
103
|
directory: config.directory,
|
|
@@ -111,7 +110,6 @@ module.exports._getDependencies = async function (config) {
|
|
|
111
110
|
};
|
|
112
111
|
if (!isDependenciesArray && dependenciesRaw[dependency].isScript !== undefined) {
|
|
113
112
|
// used for vue
|
|
114
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
115
113
|
cabinetParams.isScript = dependenciesRaw[dependency].isScript;
|
|
116
114
|
}
|
|
117
115
|
let result;
|
|
@@ -137,16 +135,13 @@ module.exports._getDependencies = async function (config) {
|
|
|
137
135
|
debug(`skipping non-empty but non-existent resolution: ${result} for dependency: ${dependency}`);
|
|
138
136
|
return;
|
|
139
137
|
}
|
|
140
|
-
const pathMap = { importSource: dependency, resolvedDep: result };
|
|
138
|
+
const pathMap: Record<string, any> = { importSource: dependency, resolvedDep: result };
|
|
141
139
|
if (!isDependenciesArray && dependenciesRaw[dependency].importSpecifiers) {
|
|
142
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
143
140
|
pathMap.importSpecifiers = dependenciesRaw[dependency].importSpecifiers;
|
|
144
141
|
}
|
|
145
142
|
|
|
146
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
147
143
|
pathMapDependencies.push(pathMap);
|
|
148
144
|
|
|
149
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
150
145
|
resolvedDependencies.push(result);
|
|
151
146
|
}
|
|
152
147
|
function addToNonExistent(dependency) {
|
|
@@ -166,7 +161,8 @@ module.exports._getDependencies = async function (config) {
|
|
|
166
161
|
* pathMap and get rid of tree.
|
|
167
162
|
*/
|
|
168
163
|
async function traverse(config) {
|
|
169
|
-
|
|
164
|
+
// an array that is used as a map (keyed by file path), the callers rely on it being an array
|
|
165
|
+
const tree = [] as unknown as Record<string, string[]> & unknown[];
|
|
170
166
|
const stack = [config.filename];
|
|
171
167
|
while (stack.length) {
|
|
172
168
|
const dependency = stack.pop();
|
|
@@ -193,7 +189,6 @@ async function traverse(config) {
|
|
|
193
189
|
debug(`number of dependencies after filtering: ${dependencies.length}`);
|
|
194
190
|
}
|
|
195
191
|
debug('cabinet-resolved all dependencies: ', dependencies);
|
|
196
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
197
192
|
tree[dependency] = dependencies;
|
|
198
193
|
const filePathMap = config.pathMap.find((pathMapEntry) => pathMapEntry.file === dependency);
|
|
199
194
|
if (!filePathMap) throw new Error(`file ${dependency} is missing from PathMap`);
|
|
@@ -221,7 +216,6 @@ async function traverse(config) {
|
|
|
221
216
|
}
|
|
222
217
|
debug(`found ${dependency} in the cache`);
|
|
223
218
|
const dependencies = config.visited[dependency].pathMap.dependencies.map((d) => d.resolvedDep);
|
|
224
|
-
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
225
219
|
tree[dependency] = dependencies;
|
|
226
220
|
config.pathMap.push(config.visited[dependency].pathMap);
|
|
227
221
|
if (config.visited[dependency].missing) {
|
|
@@ -211,8 +211,7 @@ describe('filing-cabinet', () => {
|
|
|
211
211
|
});
|
|
212
212
|
|
|
213
213
|
assert.ok(
|
|
214
|
-
|
|
215
|
-
require.main.paths.some(function (p) {
|
|
214
|
+
require.main!.paths.some(function (p) {
|
|
216
215
|
return p.indexOf(path.normalize(directory)) !== -1;
|
|
217
216
|
})
|
|
218
217
|
);
|
|
@@ -37,7 +37,7 @@ type Options = {
|
|
|
37
37
|
dependency: string; // previous name was "partial"
|
|
38
38
|
filename: string;
|
|
39
39
|
directory: string;
|
|
40
|
-
config
|
|
40
|
+
config?: Record<string, any>;
|
|
41
41
|
webpackConfig?: Record<string, any>;
|
|
42
42
|
configPath?: string;
|
|
43
43
|
resolveConfig?: Record<string, any>;
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/dependencies",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1250",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/dependencies/dependencies",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.dependencies",
|
|
8
8
|
"name": "dependencies",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.1250"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"archy": "1.0.0",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"detective-stylus": "1.0.0",
|
|
29
29
|
"module-definition": "3.3.1",
|
|
30
30
|
"node-source-walk": "4.2.0",
|
|
31
|
+
"@teambit/cli": "0.0.1423",
|
|
31
32
|
"@teambit/component-issues": "0.0.192",
|
|
32
33
|
"@teambit/legacy.constants": "0.0.50",
|
|
33
34
|
"@teambit/harmony": "0.4.12",
|
|
@@ -35,11 +36,21 @@
|
|
|
35
36
|
"@teambit/component-package-version": "0.0.466",
|
|
36
37
|
"@teambit/dependencies.pnpm.dep-path": "1.0.1",
|
|
37
38
|
"@teambit/harmony.modules.runtimes": "0.0.4",
|
|
39
|
+
"@teambit/legacy.consumer-component": "0.0.192",
|
|
40
|
+
"@teambit/legacy.consumer-config": "0.0.191",
|
|
41
|
+
"@teambit/legacy.consumer": "0.0.192",
|
|
42
|
+
"@teambit/logger": "0.0.1501",
|
|
38
43
|
"@teambit/bit-error": "0.0.404",
|
|
44
|
+
"@teambit/legacy.component-list": "0.0.246",
|
|
45
|
+
"@teambit/legacy.dependency-graph": "0.0.194",
|
|
46
|
+
"@teambit/component.sources": "0.0.243",
|
|
39
47
|
"@teambit/legacy.utils": "0.0.56",
|
|
40
48
|
"@teambit/toolbox.path.path": "0.0.26",
|
|
49
|
+
"@teambit/legacy.bit-map": "0.0.248",
|
|
41
50
|
"@teambit/component-version": "1.0.4",
|
|
51
|
+
"@teambit/legacy.logger": "0.0.70",
|
|
42
52
|
"@teambit/toolbox.fs.extension-getter": "0.0.22",
|
|
53
|
+
"@teambit/legacy.extension-data": "0.0.193",
|
|
43
54
|
"@teambit/toolbox.fs.last-modified": "0.0.24",
|
|
44
55
|
"@teambit/toolbox.crypto.sha1": "0.0.24",
|
|
45
56
|
"@teambit/styling.deps-lookups.lookup-styling": "0.0.4",
|
|
@@ -51,26 +62,15 @@
|
|
|
51
62
|
"@teambit/styling.deps-detectors.detective-sass": "0.0.9",
|
|
52
63
|
"@teambit/styling.deps-detectors.detective-scss": "0.0.9",
|
|
53
64
|
"@teambit/typescript.deps-detectors.detective-typescript": "0.0.10",
|
|
54
|
-
"@teambit/
|
|
55
|
-
"@teambit/
|
|
56
|
-
"@teambit/
|
|
57
|
-
"@teambit/
|
|
58
|
-
"@teambit/
|
|
59
|
-
"@teambit/
|
|
60
|
-
"@teambit/
|
|
61
|
-
"@teambit/
|
|
62
|
-
"@teambit/
|
|
63
|
-
"@teambit/legacy.consumer-config": "0.0.191",
|
|
64
|
-
"@teambit/legacy.consumer": "0.0.192",
|
|
65
|
-
"@teambit/logger": "0.0.1501",
|
|
66
|
-
"@teambit/scope": "1.0.1248",
|
|
67
|
-
"@teambit/legacy.component-list": "0.0.246",
|
|
68
|
-
"@teambit/legacy.dependency-graph": "0.0.194",
|
|
69
|
-
"@teambit/objects": "0.0.726",
|
|
70
|
-
"@teambit/component.sources": "0.0.243",
|
|
71
|
-
"@teambit/legacy.bit-map": "0.0.248",
|
|
72
|
-
"@teambit/legacy.logger": "0.0.70",
|
|
73
|
-
"@teambit/legacy.extension-data": "0.0.193"
|
|
65
|
+
"@teambit/graph": "1.0.1248",
|
|
66
|
+
"@teambit/workspace": "1.0.1249",
|
|
67
|
+
"@teambit/aspect-loader": "1.0.1234",
|
|
68
|
+
"@teambit/component": "1.0.1234",
|
|
69
|
+
"@teambit/dependency-resolver": "1.0.1234",
|
|
70
|
+
"@teambit/dev-files": "1.0.1249",
|
|
71
|
+
"@teambit/issues": "1.0.1234",
|
|
72
|
+
"@teambit/scope": "1.0.1249",
|
|
73
|
+
"@teambit/objects": "0.0.727"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@types/cli-table": "^0.3.0",
|
|
@@ -81,11 +81,11 @@
|
|
|
81
81
|
"rewire": "7.0.0",
|
|
82
82
|
"sinon": "17.0.1",
|
|
83
83
|
"@types/mocha": "9.1.0",
|
|
84
|
-
"@teambit/defender.fs.global-bit-temp-dir": "0.0.1",
|
|
85
|
-
"@teambit/harmony.envs.core-aspect-env": "2.1.2",
|
|
86
84
|
"@teambit/component.testing.mock-components": "0.0.468",
|
|
87
85
|
"@teambit/harmony.testing.load-aspect": "0.0.462",
|
|
88
|
-
"@teambit/workspace.testing.mock-workspace": "0.0.276"
|
|
86
|
+
"@teambit/workspace.testing.mock-workspace": "0.0.276",
|
|
87
|
+
"@teambit/defender.fs.global-bit-temp-dir": "0.0.1",
|
|
88
|
+
"@teambit/harmony.envs.core-aspect-env": "2.1.2"
|
|
89
89
|
},
|
|
90
90
|
"peerDependencies": {
|
|
91
91
|
"chai": "5.2.1"
|
|
File without changes
|