eslint-plugin-canonical
Version:
Canonical linting rules for ESLint.
49 lines (48 loc) • 1.69 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const utilities_1 = require("../utilities");
const ExportMap_1 = __importDefault(require("./ExportMap"));
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const ExportMap = ExportMap_1.default;
exports.default = (0, utilities_1.createRule)({
create: (context) => {
return {
ExportAllDeclaration(node) {
if (node.exported) {
return;
}
const exportMap = ExportMap.get(node.source.value, context);
if (exportMap === null) {
return;
}
const exportNames = [
...Array.from(exportMap.namespace.keys()).filter((key) => key !== 'default'),
...Array.from(exportMap.reexports.keys()),
];
context.report({
fix(fixer) {
return fixer.replaceTextRange(node.range, `export { ${exportNames.join(', ')} } from '${node.source.value}';`);
},
messageId: 'noExportAll',
node,
});
},
};
},
defaultOptions: [],
meta: {
docs: {
description: 'Requite that re-exports are named',
},
fixable: 'code',
messages: {
noExportAll: 'Must not use export *',
},
schema: [],
type: 'layout',
},
name: 'no-export-all',
});