Skip to content

Commit

Permalink
[New] no-named-export: support arbitrary module namespace names
Browse files Browse the repository at this point in the history
  • Loading branch information
sosukesuzuki authored and ljharb committed Jan 15, 2022
1 parent 16c5add commit 8ee2497
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ This change log adheres to standards from [Keep a CHANGELOG](https://keepachange
## [Unreleased]

### Added
- [`no-named-default`, `no-default-export`, `prefer-default-export`]: support arbitrary module namespace names ([#2358], thanks [@sosukesuzuki])
- [`no-named-default`, `no-default-export`, `prefer-default-export`, `no-named-export`]: support arbitrary module namespace names ([#2358], thanks [@sosukesuzuki])

### Changed
- [Tests] `no-nodejs-modules`: add tests for node protocol URL ([#2367], thanks [@sosukesuzuki])
Expand Down
2 changes: 1 addition & 1 deletion src/rules/no-named-export.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ module.exports = {
return context.report({ node, message });
}

const someNamed = node.specifiers.some(specifier => specifier.exported.name !== 'default');
const someNamed = node.specifiers.some(specifier => (specifier.exported.name || specifier.exported.value) !== 'default');
if (someNamed) {
context.report({ node, message });
}
Expand Down
12 changes: 9 additions & 3 deletions tests/src/rules/no-named-export.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { RuleTester } from 'eslint';
import { test } from '../utils';
import { test, testVersion } from '../utils';

const ruleTester = new RuleTester();
const rule = require('rules/no-named-export');

ruleTester.run('no-named-export', rule, {
valid: [
valid: [].concat(
test({
code: 'export default function bar() {};',
}),
Expand All @@ -27,7 +27,13 @@ ruleTester.run('no-named-export', rule, {
test({
code: `import {default as foo} from './foo';`,
}),
],

// es2022: Arbitrary module namespae identifier names
testVersion('>= 8.7', () => ({
code: 'let foo; export { foo as "default" }',
parserOptions: { ecmaVersion: 2022 },
})),
),
invalid: [
test({
code: `
Expand Down

0 comments on commit 8ee2497

Please sign in to comment.