UNPKG

eslint-plugin-esm

Version:
28 lines 4.35 kB
import { createRule, DEFAULT_MESSAGE_ID, getRuleName } from "../common.js"; export const noRenameExports = createRule({ name: getRuleName(import.meta.url), message: "Disallow renaming the named-exports.", create: (context) => ({ ExportSpecifier: (node) => { const parent = node.parent; if (parent.type !== "ExportNamedDeclaration") return; const hasLocalAndExported = node.local.type === "Identifier" && node.exported.type === "Identifier"; if (!hasLocalAndExported) return; // `export { foo }` has the same source position as local and exported if (node.local.range?.[0] === node.exported.range?.[0]) return; // Exception: `export { default as X } from '...'` where X is not "default" const isReexportAsNamed = parent.source && node.local.type === "Identifier" && node.local.name === "default" && node.exported.type === "Identifier" && node.exported.name !== "default"; if (isReexportAsNamed) return; context.report({ node, messageId: DEFAULT_MESSAGE_ID }); }, }), }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tcmVuYW1lLWV4cG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvbm8tcmVuYW1lLWV4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFM0UsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQztJQUN4QyxJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xDLE9BQU8sRUFBRSxzQ0FBc0M7SUFDL0MsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BCLGVBQWUsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDM0IsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLHdCQUF3QjtnQkFBRSxPQUFPO1lBRXJELE1BQU0sbUJBQW1CLEdBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUM7WUFDMUUsSUFBSSxDQUFDLG1CQUFtQjtnQkFBRSxPQUFPO1lBRWpDLHNFQUFzRTtZQUN0RSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTztZQUUvRCwyRUFBMkU7WUFDM0UsTUFBTSxpQkFBaUIsR0FDckIsTUFBTSxDQUFDLE1BQU07Z0JBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssWUFBWTtnQkFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssWUFBWTtnQkFDbkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO1lBQ25DLElBQUksaUJBQWlCO2dCQUFFLE9BQU87WUFFOUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7S0FDRixDQUFDO0NBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUnVsZSwgREVGQVVMVF9NRVNTQUdFX0lELCBnZXRSdWxlTmFtZSB9IGZyb20gXCIuLi9jb21tb24udHNcIjtcblxuZXhwb3J0IGNvbnN0IG5vUmVuYW1lRXhwb3J0cyA9IGNyZWF0ZVJ1bGUoe1xuICBuYW1lOiBnZXRSdWxlTmFtZShpbXBvcnQubWV0YS51cmwpLFxuICBtZXNzYWdlOiBcIkRpc2FsbG93IHJlbmFtaW5nIHRoZSBuYW1lZC1leHBvcnRzLlwiLFxuICBjcmVhdGU6IChjb250ZXh0KSA9PiAoe1xuICAgIEV4cG9ydFNwZWNpZmllcjogKG5vZGUpID0+IHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgICAgaWYgKHBhcmVudC50eXBlICE9PSBcIkV4cG9ydE5hbWVkRGVjbGFyYXRpb25cIikgcmV0dXJuO1xuXG4gICAgICBjb25zdCBoYXNMb2NhbEFuZEV4cG9ydGVkID1cbiAgICAgICAgbm9kZS5sb2NhbC50eXBlID09PSBcIklkZW50aWZpZXJcIiAmJiBub2RlLmV4cG9ydGVkLnR5cGUgPT09IFwiSWRlbnRpZmllclwiO1xuICAgICAgaWYgKCFoYXNMb2NhbEFuZEV4cG9ydGVkKSByZXR1cm47XG5cbiAgICAgIC8vIGBleHBvcnQgeyBmb28gfWAgaGFzIHRoZSBzYW1lIHNvdXJjZSBwb3NpdGlvbiBhcyBsb2NhbCBhbmQgZXhwb3J0ZWRcbiAgICAgIGlmIChub2RlLmxvY2FsLnJhbmdlPy5bMF0gPT09IG5vZGUuZXhwb3J0ZWQucmFuZ2U/LlswXSkgcmV0dXJuO1xuXG4gICAgICAvLyBFeGNlcHRpb246IGBleHBvcnQgeyBkZWZhdWx0IGFzIFggfSBmcm9tICcuLi4nYCB3aGVyZSBYIGlzIG5vdCBcImRlZmF1bHRcIlxuICAgICAgY29uc3QgaXNSZWV4cG9ydEFzTmFtZWQgPVxuICAgICAgICBwYXJlbnQuc291cmNlICYmXG4gICAgICAgIG5vZGUubG9jYWwudHlwZSA9PT0gXCJJZGVudGlmaWVyXCIgJiZcbiAgICAgICAgbm9kZS5sb2NhbC5uYW1lID09PSBcImRlZmF1bHRcIiAmJlxuICAgICAgICBub2RlLmV4cG9ydGVkLnR5cGUgPT09IFwiSWRlbnRpZmllclwiICYmXG4gICAgICAgIG5vZGUuZXhwb3J0ZWQubmFtZSAhPT0gXCJkZWZhdWx0XCI7XG4gICAgICBpZiAoaXNSZWV4cG9ydEFzTmFtZWQpIHJldHVybjtcblxuICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlLCBtZXNzYWdlSWQ6IERFRkFVTFRfTUVTU0FHRV9JRCB9KTtcbiAgICB9LFxuICB9KSxcbn0pO1xuIl19