@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.
Files changed (26) hide show
  1. package/dependencies-loader/apply-overrides.ts +1 -2
  2. package/dependencies-loader/auto-detect-deps.ts +1 -2
  3. package/dist/dependencies-loader/apply-overrides.d.ts +1 -1
  4. package/dist/dependencies-loader/apply-overrides.js +0 -1
  5. package/dist/dependencies-loader/apply-overrides.js.map +1 -1
  6. package/dist/dependencies-loader/auto-detect-deps.d.ts +1 -1
  7. package/dist/dependencies-loader/auto-detect-deps.js +0 -1
  8. package/dist/dependencies-loader/auto-detect-deps.js.map +1 -1
  9. package/dist/files-dependency-builder/dependency-tree/Config.d.ts +19 -1
  10. package/dist/files-dependency-builder/dependency-tree/Config.js +66 -60
  11. package/dist/files-dependency-builder/dependency-tree/Config.js.map +1 -1
  12. package/dist/files-dependency-builder/dependency-tree/index.js +1 -9
  13. package/dist/files-dependency-builder/dependency-tree/index.js.map +1 -1
  14. package/dist/files-dependency-builder/dependency-tree/index.spec.js +0 -10
  15. package/dist/files-dependency-builder/dependency-tree/index.spec.js.map +1 -1
  16. package/dist/files-dependency-builder/filing-cabinet/index.d.ts +1 -1
  17. package/dist/files-dependency-builder/filing-cabinet/index.js.map +1 -1
  18. package/dist/files-dependency-builder/filing-cabinet/index.spec.js +1 -3
  19. package/dist/files-dependency-builder/filing-cabinet/index.spec.js.map +1 -1
  20. package/files-dependency-builder/dependency-tree/Config.ts +54 -55
  21. package/files-dependency-builder/dependency-tree/index.spec.ts +2 -7
  22. package/files-dependency-builder/dependency-tree/index.ts +7 -13
  23. package/files-dependency-builder/filing-cabinet/index.spec.ts +1 -2
  24. package/files-dependency-builder/filing-cabinet/index.ts +1 -1
  25. package/package.json +25 -25
  26. /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
- const path = require('path');
6
- const debug = require('debug')('tree');
5
+ import path from 'path';
6
+ import debugFactory from 'debug';
7
+ import type { DependencyDetector } from '@teambit/dependency-resolver';
7
8
 
8
- export default function Config(options) {
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
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
37
- this.filter = options.filter;
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
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
40
- if (!this.filename) {
41
- throw new Error('filename not given');
42
- }
43
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
44
- if (!this.directory) {
45
- throw new Error('directory not given');
46
- }
47
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
48
- if (this.filter && typeof this.filter !== 'function') {
49
- throw new Error('filter must be a function');
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
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
53
- debug(`given filename: ${this.filename}`);
42
+ this.filter = options.filter;
54
43
 
55
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
56
- this.filename = path.resolve(process.cwd(), this.filename);
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
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
59
- debug(`resolved filename: ${this.filename}`);
60
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
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
- Config.prototype.clone = function () {
65
- return new Config(this);
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
- const tree = [];
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
- // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
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: Record<string, any>;
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.1249",
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.1249"
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/cli": "0.0.1423",
55
- "@teambit/graph": "1.0.1247",
56
- "@teambit/workspace": "1.0.1248",
57
- "@teambit/aspect-loader": "1.0.1233",
58
- "@teambit/component": "1.0.1233",
59
- "@teambit/dependency-resolver": "1.0.1233",
60
- "@teambit/dev-files": "1.0.1248",
61
- "@teambit/issues": "1.0.1233",
62
- "@teambit/legacy.consumer-component": "0.0.192",
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"