diff --git a/src/rules/default.js b/src/rules/default.js index 22b6534df..cbaa49f1f 100644 --- a/src/rules/default.js +++ b/src/rules/default.js @@ -1,4 +1,4 @@ -import Exports from '../exportMapBuilder'; +import ExportMapBuilder from '../exportMapBuilder'; import docsUrl from '../docsUrl'; module.exports = { @@ -19,7 +19,7 @@ module.exports = { ); if (!defaultSpecifier) { return; } - const imports = Exports.get(node.source.value, context); + const imports = ExportMapBuilder.get(node.source.value, context); if (imports == null) { return; } if (imports.errors.length) { diff --git a/src/rules/export.js b/src/rules/export.js index 622e92365..b1dc5ca9e 100644 --- a/src/rules/export.js +++ b/src/rules/export.js @@ -1,4 +1,4 @@ -import ExportMap, { recursivePatternCapture } from '../exportMapBuilder'; +import ExportMapBuilder, { recursivePatternCapture } from '../exportMapBuilder'; import docsUrl from '../docsUrl'; import includes from 'array-includes'; import flatMap from 'array.prototype.flatmap'; @@ -197,7 +197,7 @@ module.exports = { // `export * as X from 'path'` does not conflict if (node.exported && node.exported.name) { return; } - const remoteExports = ExportMap.get(node.source.value, context); + const remoteExports = ExportMapBuilder.get(node.source.value, context); if (remoteExports == null) { return; } if (remoteExports.errors.length) { diff --git a/src/rules/named.js b/src/rules/named.js index 4d9819341..043d72eab 100644 --- a/src/rules/named.js +++ b/src/rules/named.js @@ -1,5 +1,5 @@ import * as path from 'path'; -import Exports from '../exportMapBuilder'; +import ExportMapBuilder from '../exportMapBuilder'; import docsUrl from '../docsUrl'; module.exports = { @@ -41,7 +41,7 @@ module.exports = { return; // no named imports/exports } - const imports = Exports.get(node.source.value, context); + const imports = ExportMapBuilder.get(node.source.value, context); if (imports == null || imports.parseGoal === 'ambiguous') { return; } @@ -93,7 +93,7 @@ module.exports = { const call = node.init; const [source] = call.arguments; const variableImports = node.id.properties; - const variableExports = Exports.get(source.value, context); + const variableExports = ExportMapBuilder.get(source.value, context); if ( // return if it's not a commonjs require statement diff --git a/src/rules/namespace.js b/src/rules/namespace.js index 40690c51d..e1ca2870b 100644 --- a/src/rules/namespace.js +++ b/src/rules/namespace.js @@ -1,5 +1,5 @@ import declaredScope from 'eslint-module-utils/declaredScope'; -import Exports from '../exportMapBuilder'; +import ExportMapBuilder from '../exportMapBuilder'; import ExportMap from '../exportMap'; import importDeclaration from '../importDeclaration'; import docsUrl from '../docsUrl'; @@ -9,7 +9,7 @@ function processBodyStatement(context, namespaces, declaration) { if (declaration.specifiers.length === 0) { return; } - const imports = Exports.get(declaration.source.value, context); + const imports = ExportMapBuilder.get(declaration.source.value, context); if (imports == null) { return null; } if (imports.errors.length > 0) { @@ -89,7 +89,7 @@ module.exports = { ExportNamespaceSpecifier(namespace) { const declaration = importDeclaration(context); - const imports = Exports.get(declaration.source.value, context); + const imports = ExportMapBuilder.get(declaration.source.value, context); if (imports == null) { return null; } if (imports.errors.length) { diff --git a/src/rules/no-cycle.js b/src/rules/no-cycle.js index de304b791..b7b907b06 100644 --- a/src/rules/no-cycle.js +++ b/src/rules/no-cycle.js @@ -4,7 +4,7 @@ */ import resolve from 'eslint-module-utils/resolve'; -import Exports from '../exportMapBuilder'; +import ExportMapBuilder from '../exportMapBuilder'; import { isExternalModule } from '../core/importType'; import moduleVisitor, { makeOptionsSchema } from 'eslint-module-utils/moduleVisitor'; import docsUrl from '../docsUrl'; @@ -88,7 +88,7 @@ module.exports = { return; // ignore type imports } - const imported = Exports.get(sourceNode.value, context); + const imported = ExportMapBuilder.get(sourceNode.value, context); if (imported == null) { return; // no-unresolved territory diff --git a/src/rules/no-deprecated.js b/src/rules/no-deprecated.js index 3f1862bac..50072f3f8 100644 --- a/src/rules/no-deprecated.js +++ b/src/rules/no-deprecated.js @@ -1,5 +1,5 @@ import declaredScope from 'eslint-module-utils/declaredScope'; -import Exports from '../exportMapBuilder'; +import ExportMapBuilder from '../exportMapBuilder'; import ExportMap from '../exportMap'; import docsUrl from '../docsUrl'; @@ -32,7 +32,7 @@ module.exports = { if (node.type !== 'ImportDeclaration') { return; } if (node.source == null) { return; } // local export, ignore - const imports = Exports.get(node.source.value, context); + const imports = ExportMapBuilder.get(node.source.value, context); if (imports == null) { return; } const moduleDeprecation = imports.doc && imports.doc.tags.find((t) => t.title === 'deprecated'); diff --git a/src/rules/no-named-as-default-member.js b/src/rules/no-named-as-default-member.js index bb5eb8bfc..d594c5843 100644 --- a/src/rules/no-named-as-default-member.js +++ b/src/rules/no-named-as-default-member.js @@ -4,7 +4,7 @@ * @copyright 2016 Desmond Brand. All rights reserved. * See LICENSE in root directory for full license. */ -import Exports from '../exportMapBuilder'; +import ExportMapBuilder from '../exportMapBuilder'; import importDeclaration from '../importDeclaration'; import docsUrl from '../docsUrl'; @@ -36,7 +36,7 @@ module.exports = { return { ImportDefaultSpecifier(node) { const declaration = importDeclaration(context); - const exportMap = Exports.get(declaration.source.value, context); + const exportMap = ExportMapBuilder.get(declaration.source.value, context); if (exportMap == null) { return; } if (exportMap.errors.length) { diff --git a/src/rules/no-named-as-default.js b/src/rules/no-named-as-default.js index 576bb3753..3e73ff2f4 100644 --- a/src/rules/no-named-as-default.js +++ b/src/rules/no-named-as-default.js @@ -1,4 +1,4 @@ -import Exports from '../exportMapBuilder'; +import ExportMapBuilder from '../exportMapBuilder'; import importDeclaration from '../importDeclaration'; import docsUrl from '../docsUrl'; @@ -20,7 +20,7 @@ module.exports = { const declaration = importDeclaration(context); - const imports = Exports.get(declaration.source.value, context); + const imports = ExportMapBuilder.get(declaration.source.value, context); if (imports == null) { return; } if (imports.errors.length) { diff --git a/src/rules/no-unused-modules.js b/src/rules/no-unused-modules.js index f8097b2f7..812efffbc 100644 --- a/src/rules/no-unused-modules.js +++ b/src/rules/no-unused-modules.js @@ -13,7 +13,7 @@ import values from 'object.values'; import includes from 'array-includes'; import flatMap from 'array.prototype.flatmap'; -import Exports, { recursivePatternCapture } from '../exportMapBuilder'; +import ExportMapBuilder, { recursivePatternCapture } from '../exportMapBuilder'; import docsUrl from '../docsUrl'; let FileEnumerator; @@ -194,7 +194,7 @@ const prepareImportsAndExports = (srcFiles, context) => { srcFiles.forEach((file) => { const exports = new Map(); const imports = new Map(); - const currentExports = Exports.get(file, context); + const currentExports = ExportMapBuilder.get(file, context); if (currentExports) { const { dependencies, diff --git a/tests/src/core/getExports.js b/tests/src/core/getExports.js index dc9e1361b..611a13055 100644 --- a/tests/src/core/getExports.js +++ b/tests/src/core/getExports.js @@ -4,7 +4,7 @@ import sinon from 'sinon'; import eslintPkg from 'eslint/package.json'; import typescriptPkg from 'typescript/package.json'; import * as tsConfigLoader from 'tsconfig-paths/lib/tsconfig-loader'; -import ExportMap from '../../../src/exportMapBuilder'; +import ExportMapBuilder from '../../../src/exportMapBuilder'; import * as fs from 'fs'; @@ -28,7 +28,7 @@ describe('ExportMap', function () { it('handles ExportAllDeclaration', function () { let imports; expect(function () { - imports = ExportMap.get('./export-all', fakeContext); + imports = ExportMapBuilder.get('./export-all', fakeContext); }).not.to.throw(Error); expect(imports).to.exist; @@ -37,25 +37,25 @@ describe('ExportMap', function () { }); it('returns a cached copy on subsequent requests', function () { - expect(ExportMap.get('./named-exports', fakeContext)) - .to.exist.and.equal(ExportMap.get('./named-exports', fakeContext)); + expect(ExportMapBuilder.get('./named-exports', fakeContext)) + .to.exist.and.equal(ExportMapBuilder.get('./named-exports', fakeContext)); }); it('does not return a cached copy after modification', (done) => { - const firstAccess = ExportMap.get('./mutator', fakeContext); + const firstAccess = ExportMapBuilder.get('./mutator', fakeContext); expect(firstAccess).to.exist; // mutate (update modified time) const newDate = new Date(); fs.utimes(getFilename('mutator.js'), newDate, newDate, (error) => { expect(error).not.to.exist; - expect(ExportMap.get('./mutator', fakeContext)).not.to.equal(firstAccess); + expect(ExportMapBuilder.get('./mutator', fakeContext)).not.to.equal(firstAccess); done(); }); }); it('does not return a cached copy with different settings', () => { - const firstAccess = ExportMap.get('./named-exports', fakeContext); + const firstAccess = ExportMapBuilder.get('./named-exports', fakeContext); expect(firstAccess).to.exist; const differentSettings = { @@ -63,7 +63,7 @@ describe('ExportMap', function () { parserPath: 'espree', }; - expect(ExportMap.get('./named-exports', differentSettings)) + expect(ExportMapBuilder.get('./named-exports', differentSettings)) .to.exist.and .not.to.equal(firstAccess); }); @@ -71,7 +71,7 @@ describe('ExportMap', function () { it('does not throw for a missing file', function () { let imports; expect(function () { - imports = ExportMap.get('./does-not-exist', fakeContext); + imports = ExportMapBuilder.get('./does-not-exist', fakeContext); }).not.to.throw(Error); expect(imports).not.to.exist; @@ -81,7 +81,7 @@ describe('ExportMap', function () { it('exports explicit names for a missing file in exports', function () { let imports; expect(function () { - imports = ExportMap.get('./exports-missing', fakeContext); + imports = ExportMapBuilder.get('./exports-missing', fakeContext); }).not.to.throw(Error); expect(imports).to.exist; @@ -92,7 +92,7 @@ describe('ExportMap', function () { it('finds exports for an ES7 module with babel-eslint', function () { const path = getFilename('jsx/FooES7.js'); const contents = fs.readFileSync(path, { encoding: 'utf8' }); - const imports = ExportMap.parse( + const imports = ExportMapBuilder.parse( path, contents, { parserPath: 'babel-eslint', settings: {} }, @@ -112,7 +112,7 @@ describe('ExportMap', function () { before('parse file', function () { const path = getFilename('deprecated.js'); const contents = fs.readFileSync(path, { encoding: 'utf8' }).replace(/[\r]\n/g, lineEnding); - imports = ExportMap.parse(path, contents, parseContext); + imports = ExportMapBuilder.parse(path, contents, parseContext); // sanity checks expect(imports.errors).to.be.empty; @@ -181,7 +181,7 @@ describe('ExportMap', function () { before('parse file', function () { const path = getFilename('deprecated-file.js'); const contents = fs.readFileSync(path, { encoding: 'utf8' }); - imports = ExportMap.parse(path, contents, parseContext); + imports = ExportMapBuilder.parse(path, contents, parseContext); // sanity checks expect(imports.errors).to.be.empty; @@ -243,7 +243,7 @@ describe('ExportMap', function () { it('works with espree & traditional namespace exports', function () { const path = getFilename('deep/a.js'); const contents = fs.readFileSync(path, { encoding: 'utf8' }); - const a = ExportMap.parse(path, contents, espreeContext); + const a = ExportMapBuilder.parse(path, contents, espreeContext); expect(a.errors).to.be.empty; expect(a.get('b').namespace).to.exist; expect(a.get('b').namespace.has('c')).to.be.true; @@ -252,7 +252,7 @@ describe('ExportMap', function () { it('captures namespace exported as default', function () { const path = getFilename('deep/default.js'); const contents = fs.readFileSync(path, { encoding: 'utf8' }); - const def = ExportMap.parse(path, contents, espreeContext); + const def = ExportMapBuilder.parse(path, contents, espreeContext); expect(def.errors).to.be.empty; expect(def.get('default').namespace).to.exist; expect(def.get('default').namespace.has('c')).to.be.true; @@ -261,7 +261,7 @@ describe('ExportMap', function () { it('works with babel-eslint & ES7 namespace exports', function () { const path = getFilename('deep-es7/a.js'); const contents = fs.readFileSync(path, { encoding: 'utf8' }); - const a = ExportMap.parse(path, contents, babelContext); + const a = ExportMapBuilder.parse(path, contents, babelContext); expect(a.errors).to.be.empty; expect(a.get('b').namespace).to.exist; expect(a.get('b').namespace.has('c')).to.be.true; @@ -278,7 +278,7 @@ describe('ExportMap', function () { const path = getFilename('deep/cache-1.js'); const contents = fs.readFileSync(path, { encoding: 'utf8' }); - a = ExportMap.parse(path, contents, espreeContext); + a = ExportMapBuilder.parse(path, contents, espreeContext); expect(a.errors).to.be.empty; expect(a.get('b').namespace).to.exist; @@ -304,10 +304,10 @@ describe('ExportMap', function () { context('Map API', function () { context('#size', function () { - it('counts the names', () => expect(ExportMap.get('./named-exports', fakeContext)) + it('counts the names', () => expect(ExportMapBuilder.get('./named-exports', fakeContext)) .to.have.property('size', 12)); - it('includes exported namespace size', () => expect(ExportMap.get('./export-all', fakeContext)) + it('includes exported namespace size', () => expect(ExportMapBuilder.get('./export-all', fakeContext)) .to.have.property('size', 1)); }); @@ -315,14 +315,14 @@ describe('ExportMap', function () { context('issue #210: self-reference', function () { it(`doesn't crash`, function () { - expect(() => ExportMap.get('./narcissist', fakeContext)).not.to.throw(Error); + expect(() => ExportMapBuilder.get('./narcissist', fakeContext)).not.to.throw(Error); }); it(`'has' circular reference`, function () { - expect(ExportMap.get('./narcissist', fakeContext)) + expect(ExportMapBuilder.get('./narcissist', fakeContext)) .to.exist.and.satisfy((m) => m.has('soGreat')); }); it(`can 'get' circular reference`, function () { - expect(ExportMap.get('./narcissist', fakeContext)) + expect(ExportMapBuilder.get('./narcissist', fakeContext)) .to.exist.and.satisfy((m) => m.get('soGreat') != null); }); }); @@ -335,7 +335,7 @@ describe('ExportMap', function () { let imports; before('load imports', function () { - imports = ExportMap.get('./typescript.ts', context); + imports = ExportMapBuilder.get('./typescript.ts', context); }); it('returns nothing for a TypeScript file', function () { @@ -372,7 +372,7 @@ describe('ExportMap', function () { before('load imports', function () { this.timeout(20e3); // takes a long time :shrug: sinon.spy(tsConfigLoader, 'tsConfigLoader'); - imports = ExportMap.get('./typescript.ts', context); + imports = ExportMapBuilder.get('./typescript.ts', context); }); after('clear spies', function () { tsConfigLoader.tsConfigLoader.restore(); @@ -414,9 +414,9 @@ describe('ExportMap', function () { }, }; expect(tsConfigLoader.tsConfigLoader.callCount).to.equal(0); - ExportMap.parse('./baz.ts', 'export const baz = 5', customContext); + ExportMapBuilder.parse('./baz.ts', 'export const baz = 5', customContext); expect(tsConfigLoader.tsConfigLoader.callCount).to.equal(1); - ExportMap.parse('./baz.ts', 'export const baz = 5', customContext); + ExportMapBuilder.parse('./baz.ts', 'export const baz = 5', customContext); expect(tsConfigLoader.tsConfigLoader.callCount).to.equal(1); const differentContext = { @@ -426,17 +426,17 @@ describe('ExportMap', function () { }, }; - ExportMap.parse('./baz.ts', 'export const baz = 5', differentContext); + ExportMapBuilder.parse('./baz.ts', 'export const baz = 5', differentContext); expect(tsConfigLoader.tsConfigLoader.callCount).to.equal(2); }); it('should cache after parsing for an ambiguous module', function () { const source = './typescript-declare-module.ts'; - const parseSpy = sinon.spy(ExportMap, 'parse'); + const parseSpy = sinon.spy(ExportMapBuilder, 'parse'); - expect(ExportMap.get(source, context)).to.be.null; + expect(ExportMapBuilder.get(source, context)).to.be.null; - ExportMap.get(source, context); + ExportMapBuilder.get(source, context); expect(parseSpy.callCount).to.equal(1);