From 1359e247b2368f8bb6bc0fefc70fabf6bc49b075 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Fri, 27 Aug 2021 21:37:12 -0700 Subject: [PATCH] [eslint] enable `object-shorthand`, `space-before-function-paren` --- .eslintrc | 10 +++ resolvers/webpack/index.js | 8 +-- resolvers/webpack/test/config.js | 10 +-- src/rules/default.js | 2 +- src/rules/dynamic-import-chunkname.js | 2 +- src/rules/export.js | 2 +- src/rules/exports-last.js | 4 +- src/rules/extensions.js | 2 +- src/rules/first.js | 4 +- src/rules/named.js | 2 +- src/rules/newline-after-import.js | 4 +- src/rules/no-absolute-path.js | 2 +- src/rules/no-amd.js | 2 +- src/rules/no-anonymous-default-export.js | 2 +- src/rules/no-commonjs.js | 2 +- src/rules/no-cycle.js | 2 +- src/rules/no-deprecated.js | 2 +- src/rules/no-duplicates.js | 4 +- src/rules/no-dynamic-require.js | 2 +- src/rules/no-extraneous-dependencies.js | 2 +- src/rules/no-mutable-exports.js | 2 +- src/rules/no-named-as-default-member.js | 2 +- src/rules/no-named-as-default.js | 2 +- src/rules/no-named-default.js | 2 +- src/rules/no-namespace.js | 2 +- src/rules/no-nodejs-modules.js | 2 +- src/rules/no-self-import.js | 2 +- src/rules/no-unresolved.js | 2 +- src/rules/no-unused-modules.js | 4 +- src/rules/no-webpack-loader-syntax.js | 2 +- src/rules/order.js | 30 ++++----- src/rules/prefer-default-export.js | 18 +++--- src/rules/unambiguous.js | 4 +- tests/src/core/eslintParser.js | 2 +- tests/src/core/getExports.js | 2 +- tests/src/core/importType.js | 50 +++++++-------- tests/src/core/parse.js | 4 +- tests/src/core/parseStubParser.js | 2 +- tests/src/core/resolve.js | 64 +++++++++---------- tests/src/rules/default.js | 26 ++++---- tests/src/rules/export.js | 4 +- tests/src/rules/max-dependencies.js | 6 +- tests/src/rules/named.js | 40 ++++++------ tests/src/rules/namespace.js | 8 +-- tests/src/rules/newline-after-import.js | 14 ++-- tests/src/rules/no-deprecated.js | 2 +- tests/src/rules/no-duplicates.js | 2 +- tests/src/rules/no-extraneous-dependencies.js | 2 +- tests/src/rules/no-internal-modules.js | 2 +- tests/src/rules/no-unused-modules.js | 28 ++++---- tests/src/rules/no-webpack-loader-syntax.js | 2 +- tests/src/rules/prefer-default-export.js | 2 +- tests/src/utils.js | 2 +- 53 files changed, 209 insertions(+), 199 deletions(-) diff --git a/.eslintrc b/.eslintrc index 146ac91d7..923b8fd08 100644 --- a/.eslintrc +++ b/.eslintrc @@ -31,6 +31,10 @@ "no-shadow": 1, "no-var": 2, "object-curly-spacing": [2, "always"], + "object-shorthand": ["error", "always", { + "ignoreConstructors": false, + "avoidQuotes": true, + }], "one-var": [2, "never"], "prefer-const": 2, "quotes": [2, "single", { @@ -38,6 +42,12 @@ "avoidEscape": true, }], "semi": [2, "always"], + "space-before-function-paren": ["error", { + "anonymous": "always", + "named": "never", + "asyncArrow": "always", + }], + "eslint-plugin/consistent-output": [ "error", "always", diff --git a/resolvers/webpack/index.js b/resolvers/webpack/index.js index c7a3fbcae..3411eb75e 100644 --- a/resolvers/webpack/index.js +++ b/resolvers/webpack/index.js @@ -163,7 +163,7 @@ exports.resolve = function (source, file, settings) { const MAX_CACHE = 10; const _cache = []; function getResolveSync(configPath, webpackConfig, cwd) { - const cacheKey = { configPath: configPath, webpackConfig: webpackConfig }; + const cacheKey = { configPath, webpackConfig }; let cached = find(_cache, function (entry) { return isEqual(entry.key, cacheKey); }); if (!cached) { cached = { @@ -265,7 +265,7 @@ function createWebpack1ResolveSync(webpackRequire, resolveConfig, plugins) { resolver.apply( resolveConfig.packageAlias ? new DirectoryDescriptionFileFieldAliasPlugin('package.json', resolveConfig.packageAlias) - : function() {}, + : function () {}, new ModuleAliasPlugin(resolveConfig.alias || {}), makeRootPlugin(ModulesInRootPlugin, 'module', resolveConfig.root), new ModulesInDirectoriesPlugin( @@ -302,7 +302,7 @@ function createWebpack1ResolveSync(webpackRequire, resolveConfig, plugins) { resolver.apply.apply(resolver, resolvePlugins); - return function() { + return function () { return resolver.resolveSync.apply(resolver, arguments); }; } @@ -391,7 +391,7 @@ function findExternal(source, externals, context, resolveSync) { } function findConfigPath(configPath, packageDir) { - const extensions = Object.keys(interpret.extensions).sort(function(a, b) { + const extensions = Object.keys(interpret.extensions).sort(function (a, b) { return a === '.js' ? -1 : b === '.js' ? 1 : a.length - b.length; }); let extension; diff --git a/resolvers/webpack/test/config.js b/resolvers/webpack/test/config.js index 069c2e394..35f46e66c 100644 --- a/resolvers/webpack/test/config.js +++ b/resolvers/webpack/test/config.js @@ -101,7 +101,7 @@ describe('config', function () { .and.equal(path.join(__dirname, 'files', 'some', 'goofy', 'path', 'foo.js')); }); - it('finds the config at option env when config is a function', function() { + it('finds the config at option env when config is a function', function () { const settings = { config: require(path.join(__dirname, './files/webpack.function.config.js')), env: { @@ -113,7 +113,7 @@ describe('config', function () { .and.equal(path.join(__dirname, 'files', 'some', 'goofy', 'path', 'bar.js')); }); - it('finds the config at option env when config is an array of functions', function() { + it('finds the config at option env when config is an array of functions', function () { const settings = { config: require(path.join(__dirname, './files/webpack.function.config.multiple.js')), env: { @@ -125,7 +125,7 @@ describe('config', function () { .and.equal(path.join(__dirname, 'files', 'some', 'goofy', 'path', 'bar.js')); }); - it('passes argv to config when it is a function', function() { + it('passes argv to config when it is a function', function () { const settings = { config: require(path.join(__dirname, './files/webpack.function.config.js')), argv: { @@ -137,7 +137,7 @@ describe('config', function () { .and.equal(path.join(__dirname, 'files', 'some', 'bar', 'bar.js')); }); - it('passes a default empty argv object to config when it is a function', function() { + it('passes a default empty argv object to config when it is a function', function () { const settings = { config: require(path.join(__dirname, './files/webpack.function.config.js')), argv: undefined, @@ -146,7 +146,7 @@ describe('config', function () { expect(function () { resolve('baz', file, settings); }).to.not.throw(Error); }); - it('prevents async config using', function() { + it('prevents async config using', function () { const settings = { config: require(path.join(__dirname, './files/webpack.config.async.js')), }; diff --git a/src/rules/default.js b/src/rules/default.js index 797519a64..b8277b452 100644 --- a/src/rules/default.js +++ b/src/rules/default.js @@ -10,7 +10,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { function checkDefault(specifierType, node) { diff --git a/src/rules/dynamic-import-chunkname.js b/src/rules/dynamic-import-chunkname.js index 16cd85a4f..859e9fea4 100644 --- a/src/rules/dynamic-import-chunkname.js +++ b/src/rules/dynamic-import-chunkname.js @@ -24,7 +24,7 @@ module.exports = { }], }, - create: function (context) { + create(context) { const config = context.options[0]; const { importFunctions = [] } = config || {}; const { webpackChunknameFormat = '[0-9a-zA-Z-_/.]+' } = config || {}; diff --git a/src/rules/export.js b/src/rules/export.js index 386211baa..be75fa07f 100644 --- a/src/rules/export.js +++ b/src/rules/export.js @@ -54,7 +54,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { const namespace = new Map([[rootProgram, new Map()]]); function addNamed(name, node, parent, isType) { diff --git a/src/rules/exports-last.js b/src/rules/exports-last.js index ea044f32b..e89aa7eef 100644 --- a/src/rules/exports-last.js +++ b/src/rules/exports-last.js @@ -15,9 +15,9 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { return { - Program: function ({ body }) { + Program({ body }) { const lastNonExportStatementIndex = body.reduce(function findLastIndex(acc, item, index) { if (isNonExportStatement(item)) { return index; diff --git a/src/rules/extensions.js b/src/rules/extensions.js index 921b981e0..e116d2f86 100644 --- a/src/rules/extensions.js +++ b/src/rules/extensions.js @@ -103,7 +103,7 @@ module.exports = { }, }, - create: function (context) { + create(context) { const props = buildProperties(context); diff --git a/src/rules/first.js b/src/rules/first.js index 93e9fc553..eb613d330 100644 --- a/src/rules/first.js +++ b/src/rules/first.js @@ -21,8 +21,8 @@ module.exports = { ], }, - create: function (context) { - function isPossibleDirective (node) { + create(context) { + function isPossibleDirective(node) { return node.type === 'ExpressionStatement' && node.expression.type === 'Literal' && typeof node.expression.value === 'string'; diff --git a/src/rules/named.js b/src/rules/named.js index 2770d51fa..24e6bc0ac 100644 --- a/src/rules/named.js +++ b/src/rules/named.js @@ -21,7 +21,7 @@ module.exports = { ], }, - create: function (context) { + create(context) { const options = context.options[0] || {}; function checkSpecifiers(key, type, node) { diff --git a/src/rules/newline-after-import.js b/src/rules/newline-after-import.js index cf5dce831..1b946b35a 100644 --- a/src/rules/newline-after-import.js +++ b/src/rules/newline-after-import.js @@ -72,7 +72,7 @@ module.exports = { }, ], }, - create: function (context) { + create(context) { let level = 0; const requireCalls = []; @@ -138,7 +138,7 @@ after ${type} statement not followed by another ${type}.`, return { ImportDeclaration: checkImport, TSImportEqualsDeclaration: checkImport, - CallExpression: function(node) { + CallExpression(node) { if (isStaticRequire(node) && level === 0) { requireCalls.push(node); } diff --git a/src/rules/no-absolute-path.js b/src/rules/no-absolute-path.js index cc81c5c4b..4111fd7e6 100644 --- a/src/rules/no-absolute-path.js +++ b/src/rules/no-absolute-path.js @@ -11,7 +11,7 @@ module.exports = { schema: [ makeOptionsSchema() ], }, - create: function (context) { + create(context) { function reportIfAbsolute(source) { if (typeof source.value === 'string' && isAbsolute(source.value)) { context.report(source, 'Do not import modules using an absolute path'); diff --git a/src/rules/no-amd.js b/src/rules/no-amd.js index 7a0771bd5..187273589 100644 --- a/src/rules/no-amd.js +++ b/src/rules/no-amd.js @@ -18,7 +18,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { return { 'CallExpression': function (node) { if (context.getScope().type !== 'module') return; diff --git a/src/rules/no-anonymous-default-export.js b/src/rules/no-anonymous-default-export.js index 8ea336586..f1f495ca3 100644 --- a/src/rules/no-anonymous-default-export.js +++ b/src/rules/no-anonymous-default-export.js @@ -86,7 +86,7 @@ module.exports = { ], }, - create: function (context) { + create(context) { const options = Object.assign({}, defaults, context.options[0]); return { diff --git a/src/rules/no-commonjs.js b/src/rules/no-commonjs.js index 98f759cbc..9e157f46d 100644 --- a/src/rules/no-commonjs.js +++ b/src/rules/no-commonjs.js @@ -88,7 +88,7 @@ module.exports = { }, }, - create: function (context) { + create(context) { const options = normalizeLegacyOptions(context.options); return { diff --git a/src/rules/no-cycle.js b/src/rules/no-cycle.js index ec4cfeae9..dda5a679d 100644 --- a/src/rules/no-cycle.js +++ b/src/rules/no-cycle.js @@ -36,7 +36,7 @@ module.exports = { })], }, - create: function (context) { + create(context) { const myPath = context.getPhysicalFilename ? context.getPhysicalFilename() : context.getFilename(); if (myPath === '') return {}; // can't cycle-check a non-file diff --git a/src/rules/no-deprecated.js b/src/rules/no-deprecated.js index 628759bd4..4913d389b 100644 --- a/src/rules/no-deprecated.js +++ b/src/rules/no-deprecated.js @@ -21,7 +21,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { const deprecated = new Map(); const namespaces = new Map(); diff --git a/src/rules/no-duplicates.js b/src/rules/no-duplicates.js index 6e03fcaef..c887b39e7 100644 --- a/src/rules/no-duplicates.js +++ b/src/rules/no-duplicates.js @@ -261,7 +261,7 @@ module.exports = { ], }, - create: function (context) { + create(context) { // Prepare the resolver from options. const considerQueryStringOption = context.options[0] && context.options[0]['considerQueryString']; @@ -300,7 +300,7 @@ module.exports = { } }, - 'Program:exit'() { + 'Program:exit': function () { checkImports(imported, context); checkImports(nsImported, context); checkImports(defaultTypesImported, context); diff --git a/src/rules/no-dynamic-require.js b/src/rules/no-dynamic-require.js index f8900088d..8267fd26e 100644 --- a/src/rules/no-dynamic-require.js +++ b/src/rules/no-dynamic-require.js @@ -38,7 +38,7 @@ module.exports = { ], }, - create: function (context) { + create(context) { const options = context.options[0] || {}; return { diff --git a/src/rules/no-extraneous-dependencies.js b/src/rules/no-extraneous-dependencies.js index 9403931f5..8d2e294cc 100644 --- a/src/rules/no-extraneous-dependencies.js +++ b/src/rules/no-extraneous-dependencies.js @@ -252,7 +252,7 @@ module.exports = { ], }, - create: function (context) { + create(context) { const options = context.options[0] || {}; const filename = context.getPhysicalFilename ? context.getPhysicalFilename() : context.getFilename(); const deps = getDependencies(context, options.packageDir) || extractDepFields({}); diff --git a/src/rules/no-mutable-exports.js b/src/rules/no-mutable-exports.js index a1635bb7a..c506c997c 100644 --- a/src/rules/no-mutable-exports.js +++ b/src/rules/no-mutable-exports.js @@ -9,7 +9,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { function checkDeclaration(node) { const { kind } = node; if (kind === 'var' || kind === 'let') { diff --git a/src/rules/no-named-as-default-member.js b/src/rules/no-named-as-default-member.js index 09bb5e34a..ef2000e22 100644 --- a/src/rules/no-named-as-default-member.js +++ b/src/rules/no-named-as-default-member.js @@ -21,7 +21,7 @@ module.exports = { schema: [], }, - create: function(context) { + create(context) { const fileImports = new Map(); const allPropertyLookups = new Map(); diff --git a/src/rules/no-named-as-default.js b/src/rules/no-named-as-default.js index 7313e6126..7c1ef0e04 100644 --- a/src/rules/no-named-as-default.js +++ b/src/rules/no-named-as-default.js @@ -11,7 +11,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { function checkDefault(nameKey, defaultSpecifier) { // #566: default is a valid specifier if (defaultSpecifier[nameKey].name === 'default') return; diff --git a/src/rules/no-named-default.js b/src/rules/no-named-default.js index d1c15d62e..116c89cf5 100644 --- a/src/rules/no-named-default.js +++ b/src/rules/no-named-default.js @@ -9,7 +9,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { return { 'ImportDeclaration': function (node) { node.specifiers.forEach(function (im) { diff --git a/src/rules/no-namespace.js b/src/rules/no-namespace.js index 472b93dd0..fb3d76052 100644 --- a/src/rules/no-namespace.js +++ b/src/rules/no-namespace.js @@ -32,7 +32,7 @@ module.exports = { }], }, - create: function (context) { + create(context) { const firstOption = context.options[0] || {}; const ignoreGlobs = firstOption.ignore; diff --git a/src/rules/no-nodejs-modules.js b/src/rules/no-nodejs-modules.js index cbfb384d3..1e3207d20 100644 --- a/src/rules/no-nodejs-modules.js +++ b/src/rules/no-nodejs-modules.js @@ -31,7 +31,7 @@ module.exports = { ], }, - create: function (context) { + create(context) { const options = context.options[0] || {}; const allowed = options.allow || []; diff --git a/src/rules/no-self-import.js b/src/rules/no-self-import.js index 58c393b66..a5f464b24 100644 --- a/src/rules/no-self-import.js +++ b/src/rules/no-self-import.js @@ -30,7 +30,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { return moduleVisitor((source, node) => { isImportingSelf(context, node, source.value); }, { commonjs: true }); diff --git a/src/rules/no-unresolved.js b/src/rules/no-unresolved.js index 719bbded9..236692b6e 100644 --- a/src/rules/no-unresolved.js +++ b/src/rules/no-unresolved.js @@ -22,7 +22,7 @@ module.exports = { ], }, - create: function (context) { + create(context) { function checkSourceValue(source) { const shouldCheckCase = !CASE_SENSITIVE_FS && (!context.options[0] || context.options[0].caseSensitive !== false); diff --git a/src/rules/no-unused-modules.js b/src/rules/no-unused-modules.js index dd258e94e..ae6646f87 100644 --- a/src/rules/no-unused-modules.js +++ b/src/rules/no-unused-modules.js @@ -32,7 +32,7 @@ try { // https://github.com/eslint/eslint/blob/v5.2.0/lib/util/glob-util.js#L174-L269 listFilesToProcess = function (src, extensions) { return originalListFilesToProcess(src, { - extensions: extensions, + extensions, }); }; } catch (e) { @@ -54,7 +54,7 @@ try { if (FileEnumerator) { listFilesToProcess = function (src, extensions) { const e = new FileEnumerator({ - extensions: extensions, + extensions, }); return Array.from(e.iterateFiles(src), ({ filePath, ignored }) => ({ diff --git a/src/rules/no-webpack-loader-syntax.js b/src/rules/no-webpack-loader-syntax.js index b3228e0d2..2f49ad6c6 100644 --- a/src/rules/no-webpack-loader-syntax.js +++ b/src/rules/no-webpack-loader-syntax.js @@ -18,7 +18,7 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { return moduleVisitor((source, node) => { reportIfNonStandard(context, node, source.value); }, { commonjs: true }); diff --git a/src/rules/order.js b/src/rules/order.js index 857a46e3d..2f4ef08b7 100644 --- a/src/rules/order.js +++ b/src/rules/order.js @@ -196,7 +196,7 @@ function fixOutOfOrder(context, firstNode, secondNode, order) { if (order === 'before') { context.report({ node: secondNode.node, - message: message, + message, fix: canFix && (fixer => fixer.replaceTextRange( [firstRootStart, secondRootEnd], @@ -206,7 +206,7 @@ function fixOutOfOrder(context, firstNode, secondNode, order) { } else if (order === 'after') { context.report({ node: secondNode.node, - message: message, + message, fix: canFix && (fixer => fixer.replaceTextRange( [secondRootStart, firstRootEnd], @@ -259,7 +259,7 @@ function getSorter(ascending) { } function mutateRanksToAlphabetize(imported, alphabetizeOptions) { - const groupedByRanks = imported.reduce(function(acc, importedItem) { + const groupedByRanks = imported.reduce(function (acc, importedItem) { if (!Array.isArray(acc[importedItem.rank])) { acc[importedItem.rank] = []; } @@ -275,14 +275,14 @@ function mutateRanksToAlphabetize(imported, alphabetizeOptions) { : (a, b) => sorterFn(a.value, b.value); // sort imports locally within their group - groupRanks.forEach(function(groupRank) { + groupRanks.forEach(function (groupRank) { groupedByRanks[groupRank].sort(comparator); }); // assign globally unique rank to each import let newRank = 0; - const alphabetizedRanks = groupRanks.sort().reduce(function(acc, groupRank) { - groupedByRanks[groupRank].forEach(function(importedItem) { + const alphabetizedRanks = groupRanks.sort().reduce(function (acc, groupRank) { + groupedByRanks[groupRank].forEach(function (importedItem) { acc[`${importedItem.value}|${importedItem.node.importKind}`] = parseInt(groupRank, 10) + newRank; newRank += 1; }); @@ -290,7 +290,7 @@ function mutateRanksToAlphabetize(imported, alphabetizeOptions) { }, {}); // mutate the original group-rank with alphabetized-rank - imported.forEach(function(importedItem) { + imported.forEach(function (importedItem) { importedItem.rank = alphabetizedRanks[`${importedItem.value}|${importedItem.node.importKind}`]; }); } @@ -359,11 +359,11 @@ const types = ['builtin', 'external', 'internal', 'unknown', 'parent', 'sibling' // Example: { index: 0, sibling: 1, parent: 1, external: 1, builtin: 2, internal: 2 } // Will throw an error if it contains a type that does not exist, or has a duplicate function convertGroupsToRanks(groups) { - const rankObject = groups.reduce(function(res, group, index) { + const rankObject = groups.reduce(function (res, group, index) { if (typeof group === 'string') { group = [group]; } - group.forEach(function(groupItem) { + group.forEach(function (groupItem) { if (types.indexOf(groupItem) === -1) { throw new Error('Incorrect configuration of the rule: Unknown type `' + JSON.stringify(groupItem) + '`'); @@ -376,11 +376,11 @@ function convertGroupsToRanks(groups) { return res; }, {}); - const omittedTypes = types.filter(function(type) { + const omittedTypes = types.filter(function (type) { return rankObject[type] === undefined; }); - const ranks = omittedTypes.reduce(function(res, type) { + const ranks = omittedTypes.reduce(function (res, type) { res[type] = groups.length; return res; }, rankObject); @@ -457,7 +457,7 @@ function removeNewLineAfterImport(context, currentImport, previousImport) { return undefined; } -function makeNewlinesBetweenReport (context, imported, newlinesBetweenImports) { +function makeNewlinesBetweenReport(context, imported, newlinesBetweenImports) { const getNumberOfEmptyLinesBetween = (currentImport, previousImport) => { const linesBetweenImports = context.getSourceCode().lines.slice( previousImport.node.loc.end.line, @@ -468,7 +468,7 @@ function makeNewlinesBetweenReport (context, imported, newlinesBetweenImports) { }; let previousImport = imported[0]; - imported.slice(1).forEach(function(currentImport) { + imported.slice(1).forEach(function (currentImport) { const emptyLinesBetween = getNumberOfEmptyLinesBetween(currentImport, previousImport); if (newlinesBetweenImports === 'always' @@ -581,7 +581,7 @@ module.exports = { ], }, - create: function importOrderRule (context) { + create: function importOrderRule(context) { const options = context.options[0] || {}; const newlinesBetweenImports = options['newlines-between'] || 'ignore'; const pathGroupsExcludedImportTypes = new Set(options['pathGroupsExcludedImportTypes'] || ['builtin', 'external', 'object']); @@ -600,7 +600,7 @@ module.exports = { } catch (error) { // Malformed configuration return { - Program: function(node) { + Program(node) { context.report(node, error.message); }, }; diff --git a/src/rules/prefer-default-export.js b/src/rules/prefer-default-export.js index 3cd2224cd..a8c52bb1a 100644 --- a/src/rules/prefer-default-export.js +++ b/src/rules/prefer-default-export.js @@ -11,7 +11,7 @@ module.exports = { schema: [], }, - create: function(context) { + create(context) { let specifierExportCount = 0; let hasDefaultExport = false; let hasStarExport = false; @@ -22,7 +22,7 @@ module.exports = { if (identifierOrPattern && identifierOrPattern.type === 'ObjectPattern') { // recursively capture identifierOrPattern.properties - .forEach(function(property) { + .forEach(function (property) { captureDeclaration(property.value); }); } else if (identifierOrPattern && identifierOrPattern.type === 'ArrayPattern') { @@ -35,11 +35,11 @@ module.exports = { } return { - 'ExportDefaultSpecifier': function() { + 'ExportDefaultSpecifier': function () { hasDefaultExport = true; }, - 'ExportSpecifier': function(node) { + 'ExportSpecifier': function (node) { if (node.exported.name === 'default') { hasDefaultExport = true; } else { @@ -48,7 +48,7 @@ module.exports = { } }, - 'ExportNamedDeclaration': function(node) { + 'ExportNamedDeclaration': function (node) { // if there are specifiers, node.declaration should be null if (!node.declaration) return; @@ -66,7 +66,7 @@ module.exports = { } if (node.declaration.declarations) { - node.declaration.declarations.forEach(function(declaration) { + node.declaration.declarations.forEach(function (declaration) { captureDeclaration(declaration.id); }); } else { @@ -77,15 +77,15 @@ module.exports = { namedExportNode = node; }, - 'ExportDefaultDeclaration': function() { + 'ExportDefaultDeclaration': function () { hasDefaultExport = true; }, - 'ExportAllDeclaration': function() { + 'ExportAllDeclaration': function () { hasStarExport = true; }, - 'Program:exit': function() { + 'Program:exit': function () { if (specifierExportCount === 1 && !hasDefaultExport && !hasStarExport && !hasTypeExport) { context.report(namedExportNode, 'Prefer default export.'); } diff --git a/src/rules/unambiguous.js b/src/rules/unambiguous.js index c0570b066..576b3379e 100644 --- a/src/rules/unambiguous.js +++ b/src/rules/unambiguous.js @@ -15,14 +15,14 @@ module.exports = { schema: [], }, - create: function (context) { + create(context) { // ignore non-modules if (context.parserOptions.sourceType !== 'module') { return {}; } return { - Program: function (ast) { + Program(ast) { if (!isModule(ast)) { context.report({ node: ast, diff --git a/tests/src/core/eslintParser.js b/tests/src/core/eslintParser.js index 492b83ea4..f53a394de 100644 --- a/tests/src/core/eslintParser.js +++ b/tests/src/core/eslintParser.js @@ -1,5 +1,5 @@ module.exports = { - parseForESLint: function() { + parseForESLint() { return { ast: {}, }; diff --git a/tests/src/core/getExports.js b/tests/src/core/getExports.js index 74c8d9ee9..2c9f70d5b 100644 --- a/tests/src/core/getExports.js +++ b/tests/src/core/getExports.js @@ -13,7 +13,7 @@ import * as unambiguous from 'eslint-module-utils/unambiguous'; describe('ExportMap', function () { const fakeContext = Object.assign( semver.satisfies(eslintPkg.version, '>= 7.28') ? { - getFilename: function () { throw new Error('Should call getPhysicalFilename() instead of getFilename()'); }, + getFilename() { throw new Error('Should call getPhysicalFilename() instead of getFilename()'); }, getPhysicalFilename: getFilename, } : { getFilename, diff --git a/tests/src/core/importType.js b/tests/src/core/importType.js index 3a5000212..0dcd5266b 100644 --- a/tests/src/core/importType.js +++ b/tests/src/core/importType.js @@ -9,18 +9,18 @@ describe('importType(name)', function () { const context = testContext(); const pathToTestFiles = path.join(__dirname, '..', '..', 'files'); - it("should return 'absolute' for paths starting with a /", function() { + it("should return 'absolute' for paths starting with a /", function () { expect(importType('/', context)).to.equal('absolute'); expect(importType('/path', context)).to.equal('absolute'); expect(importType('/some/path', context)).to.equal('absolute'); }); - it("should return 'builtin' for node.js modules", function() { + it("should return 'builtin' for node.js modules", function () { expect(importType('fs', context)).to.equal('builtin'); expect(importType('path', context)).to.equal('builtin'); }); - it("should return 'external' for non-builtin modules without a relative path", function() { + it("should return 'external' for non-builtin modules without a relative path", function () { expect(importType('lodash', context)).to.equal('external'); expect(importType('async', context)).to.equal('external'); expect(importType('chalk', context)).to.equal('external'); @@ -29,7 +29,7 @@ describe('importType(name)', function () { expect(importType('lodash/fp', context)).to.equal('external'); }); - it("should return 'external' for scopes packages", function() { + it("should return 'external' for scopes packages", function () { expect(importType('@cycle/', context)).to.equal('external'); expect(importType('@cycle/core', context)).to.equal('external'); expect(importType('@cycle/dom', context)).to.equal('external'); @@ -38,7 +38,7 @@ describe('importType(name)', function () { expect(importType('@some-thing/something/some-directory/someModule.js', context)).to.equal('external'); }); - it("should return 'external' for external modules that redirect to its parent module using package.json", function() { + it("should return 'external' for external modules that redirect to its parent module using package.json", function () { expect(importType('eslint-import-test-order-redirect/module', context)).to.equal('external'); expect(importType('@eslint/import-test-order-redirect-scoped/module', context)).to.equal('external'); }); @@ -75,13 +75,13 @@ describe('importType(name)', function () { expect(importType('constants', pathContext)).to.equal('internal'); }); - it("should return 'parent' for internal modules that go through the parent", function() { + it("should return 'parent' for internal modules that go through the parent", function () { expect(importType('../foo', context)).to.equal('parent'); expect(importType('../../foo', context)).to.equal('parent'); expect(importType('../bar/foo', context)).to.equal('parent'); }); - it("should return 'sibling' for internal modules that are connected to one of the siblings", function() { + it("should return 'sibling' for internal modules that are connected to one of the siblings", function () { expect(importType('./foo', context)).to.equal('sibling'); expect(importType('./foo/bar', context)).to.equal('sibling'); expect(importType('./importType', context)).to.equal('sibling'); @@ -90,19 +90,19 @@ describe('importType(name)', function () { expect(importType('./importType/index.js', context)).to.equal('sibling'); }); - it("should return 'index' for sibling index file", function() { + it("should return 'index' for sibling index file", function () { expect(importType('.', context)).to.equal('index'); expect(importType('./', context)).to.equal('index'); expect(importType('./index', context)).to.equal('index'); expect(importType('./index.js', context)).to.equal('index'); }); - it("should return 'unknown' for any unhandled cases", function() { + it("should return 'unknown' for any unhandled cases", function () { expect(importType(' /malformed', context)).to.equal('unknown'); expect(importType(' foo', context)).to.equal('unknown'); }); - it("should return 'builtin' for additional core modules", function() { + it("should return 'builtin' for additional core modules", function () { // without extra config, should be marked external expect(importType('electron', context)).to.equal('external'); expect(importType('@org/foobar', context)).to.equal('external'); @@ -114,7 +114,7 @@ describe('importType(name)', function () { expect(importType('@org/foobar', scopedContext)).to.equal('builtin'); }); - it("should return 'builtin' for resources inside additional core modules", function() { + it("should return 'builtin' for resources inside additional core modules", function () { const electronContext = testContext({ 'import/core-modules': ['electron'] }); expect(importType('electron/some/path/to/resource.json', electronContext)).to.equal('builtin'); @@ -122,31 +122,31 @@ describe('importType(name)', function () { expect(importType('@org/foobar/some/path/to/resource.json', scopedContext)).to.equal('builtin'); }); - it("should return 'external' for module from 'node_modules' with default config", function() { + it("should return 'external' for module from 'node_modules' with default config", function () { expect(importType('resolve', context)).to.equal('external'); }); - it("should return 'internal' for module from 'node_modules' if 'node_modules' missed in 'external-module-folders'", function() { + it("should return 'internal' for module from 'node_modules' if 'node_modules' missed in 'external-module-folders'", function () { const foldersContext = testContext({ 'import/external-module-folders': [] }); expect(importType('chai', foldersContext)).to.equal('internal'); }); - it("should return 'internal' for module from 'node_modules' if its name matched 'internal-regex'", function() { + it("should return 'internal' for module from 'node_modules' if its name matched 'internal-regex'", function () { const foldersContext = testContext({ 'import/internal-regex': '^@org' }); expect(importType('@org/foobar', foldersContext)).to.equal('internal'); }); - it("should return 'external' for module from 'node_modules' if its name did not match 'internal-regex'", function() { + it("should return 'external' for module from 'node_modules' if its name did not match 'internal-regex'", function () { const foldersContext = testContext({ 'import/internal-regex': '^@bar' }); expect(importType('@org/foobar', foldersContext)).to.equal('external'); }); - it("should return 'external' for module from 'node_modules' if 'node_modules' contained in 'external-module-folders'", function() { + it("should return 'external' for module from 'node_modules' if 'node_modules' contained in 'external-module-folders'", function () { const foldersContext = testContext({ 'import/external-module-folders': ['node_modules'] }); expect(importType('resolve', foldersContext)).to.equal('external'); }); - it('returns "external" for a scoped symlinked module', function() { + it('returns "external" for a scoped symlinked module', function () { const foldersContext = testContext({ 'import/resolver': 'node', 'import/external-module-folders': ['node_modules'], @@ -157,7 +157,7 @@ describe('importType(name)', function () { // We're using Webpack resolver here since it resolves all symlinks, which means that // directory path will not contain node_modules/ but will point to the // actual directory inside 'files' instead - it('returns "external" for a scoped module from a symlinked directory which name is contained in "external-module-folders" (webpack resolver)', function() { + it('returns "external" for a scoped module from a symlinked directory which name is contained in "external-module-folders" (webpack resolver)', function () { const foldersContext = testContext({ 'import/resolver': 'webpack', 'import/external-module-folders': ['symlinked-module'], @@ -165,7 +165,7 @@ describe('importType(name)', function () { expect(importType('@test-scope/some-module', foldersContext)).to.equal('external'); }); - it('returns "internal" for a scoped module from a symlinked directory which incomplete name is contained in "external-module-folders" (webpack resolver)', function() { + it('returns "internal" for a scoped module from a symlinked directory which incomplete name is contained in "external-module-folders" (webpack resolver)', function () { const foldersContext_1 = testContext({ 'import/resolver': 'webpack', 'import/external-module-folders': ['symlinked-mod'], @@ -179,7 +179,7 @@ describe('importType(name)', function () { expect(importType('@test-scope/some-module', foldersContext_2)).to.equal('internal'); }); - it('returns "external" for a scoped module from a symlinked directory which partial path is contained in "external-module-folders" (webpack resolver)', function() { + it('returns "external" for a scoped module from a symlinked directory which partial path is contained in "external-module-folders" (webpack resolver)', function () { const originalFoldersContext = testContext({ 'import/resolver': 'webpack', 'import/external-module-folders': [], @@ -193,7 +193,7 @@ describe('importType(name)', function () { expect(importType('@test-scope/some-module', foldersContext)).to.equal('external'); }); - it('returns "internal" for a scoped module from a symlinked directory which partial path w/ incomplete segment is contained in "external-module-folders" (webpack resolver)', function() { + it('returns "internal" for a scoped module from a symlinked directory which partial path w/ incomplete segment is contained in "external-module-folders" (webpack resolver)', function () { const foldersContext_1 = testContext({ 'import/resolver': 'webpack', 'import/external-module-folders': ['files/symlinked-mod'], @@ -207,7 +207,7 @@ describe('importType(name)', function () { expect(importType('@test-scope/some-module', foldersContext_2)).to.equal('internal'); }); - it('returns "external" for a scoped module from a symlinked directory which partial path ending w/ slash is contained in "external-module-folders" (webpack resolver)', function() { + it('returns "external" for a scoped module from a symlinked directory which partial path ending w/ slash is contained in "external-module-folders" (webpack resolver)', function () { const foldersContext = testContext({ 'import/resolver': 'webpack', 'import/external-module-folders': ['symlinked-module/'], @@ -215,7 +215,7 @@ describe('importType(name)', function () { expect(importType('@test-scope/some-module', foldersContext)).to.equal('external'); }); - it('returns "internal" for a scoped module from a symlinked directory when "external-module-folders" contains an absolute path resembling directory‘s relative path (webpack resolver)', function() { + it('returns "internal" for a scoped module from a symlinked directory when "external-module-folders" contains an absolute path resembling directory‘s relative path (webpack resolver)', function () { const foldersContext = testContext({ 'import/resolver': 'webpack', 'import/external-module-folders': ['/symlinked-module'], @@ -223,7 +223,7 @@ describe('importType(name)', function () { expect(importType('@test-scope/some-module', foldersContext)).to.equal('internal'); }); - it('returns "external" for a scoped module from a symlinked directory which absolute path is contained in "external-module-folders" (webpack resolver)', function() { + it('returns "external" for a scoped module from a symlinked directory which absolute path is contained in "external-module-folders" (webpack resolver)', function () { const foldersContext = testContext({ 'import/resolver': 'webpack', 'import/external-module-folders': [testFilePath('symlinked-module')], @@ -231,7 +231,7 @@ describe('importType(name)', function () { expect(importType('@test-scope/some-module', foldersContext)).to.equal('external'); }); - it('`isExternalModule` works with windows directory separator', function() { + it('`isExternalModule` works with windows directory separator', function () { const context = testContext(); expect(isExternalModule('foo', {}, 'E:\\path\\to\\node_modules\\foo', context)).to.equal(true); expect(isExternalModule('foo', { diff --git a/tests/src/core/parse.js b/tests/src/core/parse.js index a9c9ba584..7344d94f2 100644 --- a/tests/src/core/parse.js +++ b/tests/src/core/parse.js @@ -30,7 +30,7 @@ describe('parse(content, { settings, ecmaFeatures })', function () { const parseSpy = sinon.spy(); const parserOptions = { ecmaFeatures: { jsx: true } }; parseStubParser.parse = parseSpy; - parse(path, content, { settings: {}, parserPath: parseStubParserPath, parserOptions: parserOptions }); + parse(path, content, { settings: {}, parserPath: parseStubParserPath, parserOptions }); expect(parseSpy.callCount, 'custom parser to be called once').to.equal(1); expect(parseSpy.args[0][0], 'custom parser to get content as its first argument').to.equal(content); expect(parseSpy.args[0][1], 'custom parser to get an object as its second argument').to.be.an('object'); @@ -66,7 +66,7 @@ describe('parse(content, { settings, ecmaFeatures })', function () { const parseSpy = sinon.spy(); const parserOptions = { ecmaFeatures: { jsx: true } }; parseStubParser.parse = parseSpy; - expect(parse.bind(null, path, content, { settings: { 'import/parsers': { [parseStubParserPath]: [ '.js' ] } }, parserPath: null, parserOptions: parserOptions })).not.to.throw(Error); + expect(parse.bind(null, path, content, { settings: { 'import/parsers': { [parseStubParserPath]: [ '.js' ] } }, parserPath: null, parserOptions })).not.to.throw(Error); expect(parseSpy.callCount, 'custom parser to be called once').to.equal(1); }); diff --git a/tests/src/core/parseStubParser.js b/tests/src/core/parseStubParser.js index 9d17f0b04..4ed17d9dd 100644 --- a/tests/src/core/parseStubParser.js +++ b/tests/src/core/parseStubParser.js @@ -1,4 +1,4 @@ // this stub must be in a separate file to require from parse via moduleRequire module.exports = { - parse: function () {}, + parse() {}, }; diff --git a/tests/src/core/resolve.js b/tests/src/core/resolve.js index ccfe5f6c2..f9e9a1034 100644 --- a/tests/src/core/resolve.js +++ b/tests/src/core/resolve.js @@ -23,15 +23,15 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': './foo-bar-resolver-v1' }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); expect(resolve( '../files/exception' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('exception.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('exception.js'); } }), )).to.equal(undefined); expect(resolve( '../files/not-found' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('not-found.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('not-found.js'); } }), )).to.equal(undefined); }); @@ -39,15 +39,15 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': './foo-bar-resolver-no-version' }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); expect(resolve( '../files/exception' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('exception.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('exception.js'); } }), )).to.equal(undefined); expect(resolve( '../files/not-found' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('not-found.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('not-found.js'); } }), )).to.equal(undefined); }); @@ -59,12 +59,12 @@ describe('resolve', function () { }; expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); testContextReports.length = 0; expect(resolve( '../files/exception' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('exception.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('exception.js'); } }), )).to.equal(undefined); expect(testContextReports[0]).to.be.an('object'); expect(replaceErrorStackForTest(testContextReports[0].message)).to.equal('Resolve error: foo-bar-resolver-v2 resolve test exception\n'); @@ -72,7 +72,7 @@ describe('resolve', function () { testContextReports.length = 0; expect(resolve( '../files/not-found' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('not-found.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('not-found.js'); } }), )).to.equal(undefined); expect(testContextReports.length).to.equal(0); }); @@ -81,7 +81,7 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': [ './foo-bar-resolver-v2', './foo-bar-resolver-v1' ] }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); }); @@ -89,7 +89,7 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': { './foo-bar-resolver-v2': {} } }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); }); @@ -97,7 +97,7 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': [ { './foo-bar-resolver-v2': {} }, { './foo-bar-resolver-v1': {} } ] }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); }); @@ -105,7 +105,7 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': { 'foo': {} } }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); }); @@ -118,7 +118,7 @@ describe('resolve', function () { testContextReports.length = 0; expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(undefined); expect(testContextReports[0]).to.be.an('object'); expect(testContextReports[0].message).to.equal('Resolve error: invalid resolver config'); @@ -134,7 +134,7 @@ describe('resolve', function () { }; testContextReports.length = 0; expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(undefined); expect(testContextReports[0]).to.be.an('object'); expect(testContextReports[0].message).to.equal(`Resolve error: ${resolverName} with invalid interface loaded as resolver`); @@ -157,7 +157,7 @@ describe('resolve', function () { }; expect(resolve( '../files/exception' - , Object.assign({}, testContext, { getFilename: function () { return utils.getFilename('exception.js'); } }), + , Object.assign({}, testContext, { getFilename() { return utils.getFilename('exception.js'); } }), )).to.equal(undefined); expect(testContextReports[0]).to.be.an('object'); expect(replaceErrorStackForTest(testContextReports[0].message)).to.equal('Resolve error: SyntaxError: TEST SYNTAX ERROR\n'); @@ -174,15 +174,15 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': './foo-bar-resolver-v1' }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); expect(resolve( '../files/exception' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('exception.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('exception.js'); } }), )).to.equal(undefined); expect(resolve( '../files/not-found' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('not-found.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('not-found.js'); } }), )).to.equal(undefined); }); @@ -190,15 +190,15 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': './foo-bar-resolver-no-version' }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); expect(resolve( '../files/exception' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('exception.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('exception.js'); } }), )).to.equal(undefined); expect(resolve( '../files/not-found' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('not-found.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('not-found.js'); } }), )).to.equal(undefined); }); @@ -210,12 +210,12 @@ describe('resolve', function () { }; expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); testContextReports.length = 0; expect(resolve( '../files/exception' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('exception.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('exception.js'); } }), )).to.equal(undefined); expect(testContextReports[0]).to.be.an('object'); expect(replaceErrorStackForTest(testContextReports[0].message)).to.equal('Resolve error: foo-bar-resolver-v2 resolve test exception\n'); @@ -223,7 +223,7 @@ describe('resolve', function () { testContextReports.length = 0; expect(resolve( '../files/not-found' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('not-found.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('not-found.js'); } }), )).to.equal(undefined); expect(testContextReports.length).to.equal(0); }); @@ -232,7 +232,7 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': [ './foo-bar-resolver-v2', './foo-bar-resolver-v1' ] }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); }); @@ -240,7 +240,7 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': { './foo-bar-resolver-v2': {} } }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); }); @@ -248,7 +248,7 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': [ { './foo-bar-resolver-v2': {} }, { './foo-bar-resolver-v1': {} } ] }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); }); @@ -256,7 +256,7 @@ describe('resolve', function () { const testContext = utils.testContext({ 'import/resolver': { 'foo': {} } }); expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(utils.testFilePath('./bar.jsx')); }); @@ -269,7 +269,7 @@ describe('resolve', function () { testContextReports.length = 0; expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(undefined); expect(testContextReports[0]).to.be.an('object'); expect(testContextReports[0].message).to.equal('Resolve error: invalid resolver config'); @@ -285,7 +285,7 @@ describe('resolve', function () { }; testContextReports.length = 0; expect(resolve( '../files/foo' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('foo.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('foo.js'); } }), )).to.equal(undefined); expect(testContextReports[0]).to.be.an('object'); expect(testContextReports[0].message).to.equal(`Resolve error: ${resolverName} with invalid interface loaded as resolver`); @@ -308,7 +308,7 @@ describe('resolve', function () { }; expect(resolve( '../files/exception' - , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename: function () { return utils.getFilename('exception.js'); } }), + , Object.assign({}, testContext, { getFilename: unexpectedCallToGetFilename, getPhysicalFilename() { return utils.getFilename('exception.js'); } }), )).to.equal(undefined); expect(testContextReports[0]).to.be.an('object'); expect(replaceErrorStackForTest(testContextReports[0].message)).to.equal('Resolve error: SyntaxError: TEST SYNTAX ERROR\n'); diff --git a/tests/src/rules/default.js b/tests/src/rules/default.js index a861fff76..15101fc0c 100644 --- a/tests/src/rules/default.js +++ b/tests/src/rules/default.js @@ -160,7 +160,7 @@ context('TypeScript', function () { valid: [ test({ code: `import foobar from "./typescript-default"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -168,7 +168,7 @@ context('TypeScript', function () { }), test({ code: `import foobar from "./typescript-export-assign-default"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -176,7 +176,7 @@ context('TypeScript', function () { }), test({ code: `import foobar from "./typescript-export-assign-function"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -184,7 +184,7 @@ context('TypeScript', function () { }), test({ code: `import foobar from "./typescript-export-assign-mixed"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -192,7 +192,7 @@ context('TypeScript', function () { }), test({ code: `import foobar from "./typescript-export-assign-default-reexport"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -200,7 +200,7 @@ context('TypeScript', function () { }), test({ code: `import React from "./typescript-export-assign-default-namespace"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -211,7 +211,7 @@ context('TypeScript', function () { }), test({ code: `import Foo from "./typescript-export-as-default-namespace"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -222,7 +222,7 @@ context('TypeScript', function () { }), test({ code: `import Foo from "./typescript-export-react-test-renderer"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -233,7 +233,7 @@ context('TypeScript', function () { }), test({ code: `import foobar from "./typescript-export-assign-property"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -244,7 +244,7 @@ context('TypeScript', function () { invalid: [ test({ code: `import foobar from "./typescript"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -253,7 +253,7 @@ context('TypeScript', function () { }), test({ code: `import React from "./typescript-export-assign-default-namespace"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -262,7 +262,7 @@ context('TypeScript', function () { }), test({ code: `import FooBar from "./typescript-export-as-default-namespace"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -271,7 +271,7 @@ context('TypeScript', function () { }), test({ code: `import Foo from "./typescript-export-as-default-namespace"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/tests/src/rules/export.js b/tests/src/rules/export.js index d997b949b..efc6e402f 100644 --- a/tests/src/rules/export.js +++ b/tests/src/rules/export.js @@ -129,7 +129,7 @@ ruleTester.run('export', rule, { context('TypeScript', function () { getTSParsers().forEach((parser) => { const parserConfig = { - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -218,7 +218,7 @@ context('TypeScript', function () { export * as A from './named-export-collision/a'; export * as B from './named-export-collision/b'; `, - parser: parser, + parser, }), ]), diff --git a/tests/src/rules/max-dependencies.js b/tests/src/rules/max-dependencies.js index 1251af97e..fc3b541f5 100644 --- a/tests/src/rules/max-dependencies.js +++ b/tests/src/rules/max-dependencies.js @@ -97,7 +97,7 @@ context('TypeScript', { skip: semver.satisfies(eslintPkg.version, '>5.0.0') }, ( valid: [ test({ code: 'import type { x } from \'./foo\'; import { y } from \'./bar\';', - parser: parser, + parser, options: [{ max: 1, ignoreTypeImports: true, @@ -107,7 +107,7 @@ context('TypeScript', { skip: semver.satisfies(eslintPkg.version, '>5.0.0') }, ( invalid: [ test({ code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'', - parser: parser, + parser, options: [{ max: 1, }], @@ -118,7 +118,7 @@ context('TypeScript', { skip: semver.satisfies(eslintPkg.version, '>5.0.0') }, ( test({ code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'; import type { z } from \'./baz\'', - parser: parser, + parser, options: [{ max: 2, ignoreTypeImports: false, diff --git a/tests/src/rules/named.js b/tests/src/rules/named.js index 56babfa50..992baa0fd 100644 --- a/tests/src/rules/named.js +++ b/tests/src/rules/named.js @@ -362,8 +362,8 @@ context('TypeScript', function () { test({ code: `import {a} from './export-star-3/b';`, filename: testFilePath('./export-star-3/a.js'), - parser: parser, - settings: settings, + parser, + settings, }), ]; @@ -376,52 +376,52 @@ context('TypeScript', function () { valid.push( test({ code: `import { MyType } from "./${source}"`, - parser: parser, - settings: settings, + parser, + settings, }), test({ code: `import { Foo } from "./${source}"`, - parser: parser, - settings: settings, + parser, + settings, }), test({ code: `import { Bar } from "./${source}"`, - parser: parser, - settings: settings, + parser, + settings, }), test({ code: `import { getFoo } from "./${source}"`, - parser: parser, - settings: settings, + parser, + settings, }), test({ code: `import { MyEnum } from "./${source}"`, - parser: parser, - settings: settings, + parser, + settings, }), test({ code: ` import { MyModule } from "./${source}" MyModule.ModuleFunction() `, - parser: parser, - settings: settings, + parser, + settings, }), test({ code: ` import { MyNamespace } from "./${source}" MyNamespace.NSModule.NSModuleFunction() `, - parser: parser, - settings: settings, + parser, + settings, }), ); invalid.push( test({ code: `import { MissingType } from "./${source}"`, - parser: parser, - settings: settings, + parser, + settings, errors: [{ message: `MissingType not found in './${source}'`, type: 'Identifier', @@ -429,8 +429,8 @@ context('TypeScript', function () { }), test({ code: `import { NotExported } from "./${source}"`, - parser: parser, - settings: settings, + parser, + settings, errors: [{ message: `NotExported not found in './${source}'`, type: 'Identifier', diff --git a/tests/src/rules/namespace.js b/tests/src/rules/namespace.js index 802d5b440..826637b97 100644 --- a/tests/src/rules/namespace.js +++ b/tests/src/rules/namespace.js @@ -128,7 +128,7 @@ const valid = [ import * as foo from "./typescript-declare-nested" foo.bar.MyFunction() `, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -137,7 +137,7 @@ const valid = [ test({ code: `import { foobar } from "./typescript-declare-interface"`, - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -146,7 +146,7 @@ const valid = [ test({ code: 'export * from "typescript/lib/typescript.d"', - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, @@ -155,7 +155,7 @@ const valid = [ test({ code: 'export = function name() {}', - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/tests/src/rules/newline-after-import.js b/tests/src/rules/newline-after-import.js index 39f4c4291..a00e86900 100644 --- a/tests/src/rules/newline-after-import.js +++ b/tests/src/rules/newline-after-import.js @@ -184,7 +184,7 @@ ruleTester.run('newline-after-import', require('rules/newline-after-import'), { import { ExecaReturnValue } from 'execa'; import execa = require('execa'); `, - parser: parser, + parser, parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, { @@ -192,7 +192,7 @@ ruleTester.run('newline-after-import', require('rules/newline-after-import'), { import execa = require('execa'); import { ExecaReturnValue } from 'execa'; `, - parser: parser, + parser, parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, { @@ -201,7 +201,7 @@ ruleTester.run('newline-after-import', require('rules/newline-after-import'), { import execa = require('execa'); import { ExecbReturnValue } from 'execb'; `, - parser: parser, + parser, parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, { @@ -210,14 +210,14 @@ ruleTester.run('newline-after-import', require('rules/newline-after-import'), { import { ExecaReturnValue } from 'execa'; import execb = require('execb'); `, - parser: parser, + parser, parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, { code: ` export import a = obj;\nf(a); `, - parser: parser, + parser, parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, { @@ -228,7 +228,7 @@ ruleTester.run('newline-after-import', require('rules/newline-after-import'), { export import a2 = a; f(a); }`, - parser: parser, + parser, parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, { @@ -239,7 +239,7 @@ ruleTester.run('newline-after-import', require('rules/newline-after-import'), { stub } `, - parser: parser, + parser, parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, }, ]), diff --git a/tests/src/rules/no-deprecated.js b/tests/src/rules/no-deprecated.js index aa2aebedc..290946735 100644 --- a/tests/src/rules/no-deprecated.js +++ b/tests/src/rules/no-deprecated.js @@ -201,7 +201,7 @@ ruleTester.run('no-deprecated: hoisting', rule, { describe('TypeScript', function () { getTSParsers().forEach((parser) => { const parserConfig = { - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/tests/src/rules/no-duplicates.js b/tests/src/rules/no-duplicates.js index faf096ace..e550b63ce 100644 --- a/tests/src/rules/no-duplicates.js +++ b/tests/src/rules/no-duplicates.js @@ -415,7 +415,7 @@ import {x,y} from './foo' ], }); -context('TypeScript', function() { +context('TypeScript', function () { getNonDefaultParsers() .filter((parser) => parser !== require.resolve('typescript-eslint-parser')) .forEach((parser) => { diff --git a/tests/src/rules/no-extraneous-dependencies.js b/tests/src/rules/no-extraneous-dependencies.js index 370cce7e3..c6abcd6e4 100644 --- a/tests/src/rules/no-extraneous-dependencies.js +++ b/tests/src/rules/no-extraneous-dependencies.js @@ -384,7 +384,7 @@ ruleTester.run('no-extraneous-dependencies', rule, { describe('TypeScript', { skip: semver.satisfies(eslintPkg.version, '^4') }, function () { getTSParsers().forEach((parser) => { const parserConfig = { - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/tests/src/rules/no-internal-modules.js b/tests/src/rules/no-internal-modules.js index 2bad32c46..2fee9f450 100644 --- a/tests/src/rules/no-internal-modules.js +++ b/tests/src/rules/no-internal-modules.js @@ -139,7 +139,7 @@ ruleTester.run('no-internal-modules', rule, { } } `, - parser: parser, + parser, }), ]), test({ diff --git a/tests/src/rules/no-unused-modules.js b/tests/src/rules/no-unused-modules.js index 17e52b411..837f7e575 100644 --- a/tests/src/rules/no-unused-modules.js +++ b/tests/src/rules/no-unused-modules.js @@ -963,31 +963,31 @@ context('TypeScript', function () { const a2: c = {}; const a3: d = {}; `, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-a.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export const b = 2;`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-b.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export interface c {};`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-c.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export type d = {};`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-d.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export enum e { f };`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-e.ts'), }), test({ @@ -1003,31 +1003,31 @@ context('TypeScript', function () { const a3: d = {}; const a4: typeof e = undefined; `, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-a-import-type.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export const b = 2;`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-b-used-as-type.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export interface c {};`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-c-used-as-type.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export type d = {};`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-d-used-as-type.ts'), }), test({ options: unusedExportsTypescriptOptions, code: `export enum e { f };`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-e-used-as-type.ts'), }), // Should also be valid when the exporting files are linted before the importing ones @@ -1060,7 +1060,7 @@ context('TypeScript', function () { test({ options: unusedExportsTypescriptOptions, code: `export const b = 2;`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-b-unused.ts'), errors: [ error(`exported declaration 'b' not used within other modules`), @@ -1069,7 +1069,7 @@ context('TypeScript', function () { test({ options: unusedExportsTypescriptOptions, code: `export interface c {};`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-c-unused.ts'), errors: [ error(`exported declaration 'c' not used within other modules`), @@ -1078,7 +1078,7 @@ context('TypeScript', function () { test({ options: unusedExportsTypescriptOptions, code: `export type d = {};`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-d-unused.ts'), errors: [ error(`exported declaration 'd' not used within other modules`), @@ -1087,7 +1087,7 @@ context('TypeScript', function () { test({ options: unusedExportsTypescriptOptions, code: `export enum e { f };`, - parser: parser, + parser, filename: testFilePath('./no-unused-modules/typescript/file-ts-e-unused.ts'), errors: [ error(`exported declaration 'e' not used within other modules`), diff --git a/tests/src/rules/no-webpack-loader-syntax.js b/tests/src/rules/no-webpack-loader-syntax.js index 5ec848bc6..a8aa0dd2b 100644 --- a/tests/src/rules/no-webpack-loader-syntax.js +++ b/tests/src/rules/no-webpack-loader-syntax.js @@ -76,7 +76,7 @@ ruleTester.run('no-webpack-loader-syntax', rule, { context('TypeScript', function () { getTSParsers().forEach((parser) => { const parserConfig = { - parser: parser, + parser, settings: { 'import/parsers': { [parser]: ['.ts'] }, 'import/resolver': { 'eslint-import-resolver-typescript': true }, diff --git a/tests/src/rules/prefer-default-export.js b/tests/src/rules/prefer-default-export.js index 34323fe53..36205b193 100644 --- a/tests/src/rules/prefer-default-export.js +++ b/tests/src/rules/prefer-default-export.js @@ -148,7 +148,7 @@ ruleTester.run('prefer-default-export', rule, { ], }); -context('TypeScript', function() { +context('TypeScript', function () { getNonDefaultParsers().forEach((parser) => { const parserConfig = { parser, diff --git a/tests/src/utils.js b/tests/src/utils.js index e805e9545..4d23af755 100644 --- a/tests/src/utils.js +++ b/tests/src/utils.js @@ -46,7 +46,7 @@ export function test(t) { } export function testContext(settings) { - return { getFilename: function () { return FILENAME; }, + return { getFilename() { return FILENAME; }, settings: settings || {} }; }