eslint-plugin-esm
Version:
ESLint plugin for linting ESM (import/export syntax)
22 lines • 2.83 kB
JavaScript
import { createRule, DEFAULT_MESSAGE_ID, getRuleName } from "../common.js";
export const requiredExports = createRule({
name: getRuleName(import.meta.url),
message: "It's required at least one `export` statement in a file.",
create: (context) => {
let existExport = false;
const hasExport = () => {
existExport = true;
};
return {
ExportAllDeclaration: () => hasExport(),
ExportDefaultDeclaration: () => hasExport(),
ExportNamedDeclaration: () => hasExport(),
"Program:exit": (node) => {
if (!existExport) {
context.report({ node, messageId: DEFAULT_MESSAGE_ID });
}
},
};
},
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtZXhwb3J0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9yZXF1aXJlZC1leHBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUM7SUFDeEMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQyxPQUFPLEVBQUUsMERBQTBEO0lBQ25FLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2xCLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixNQUFNLFNBQVMsR0FBRyxHQUFHLEVBQUU7WUFDckIsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDLENBQUM7UUFDRixPQUFPO1lBQ0wsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFO1lBQ3ZDLHdCQUF3QixFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFBRTtZQUMzQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDekMsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDakIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUnVsZSwgREVGQVVMVF9NRVNTQUdFX0lELCBnZXRSdWxlTmFtZSB9IGZyb20gXCIuLi9jb21tb24udHNcIjtcblxuZXhwb3J0IGNvbnN0IHJlcXVpcmVkRXhwb3J0cyA9IGNyZWF0ZVJ1bGUoe1xuICBuYW1lOiBnZXRSdWxlTmFtZShpbXBvcnQubWV0YS51cmwpLFxuICBtZXNzYWdlOiBcIkl0J3MgcmVxdWlyZWQgYXQgbGVhc3Qgb25lIGBleHBvcnRgIHN0YXRlbWVudCBpbiBhIGZpbGUuXCIsXG4gIGNyZWF0ZTogKGNvbnRleHQpID0+IHtcbiAgICBsZXQgZXhpc3RFeHBvcnQgPSBmYWxzZTtcbiAgICBjb25zdCBoYXNFeHBvcnQgPSAoKSA9PiB7XG4gICAgICBleGlzdEV4cG9ydCA9IHRydWU7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgRXhwb3J0QWxsRGVjbGFyYXRpb246ICgpID0+IGhhc0V4cG9ydCgpLFxuICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uOiAoKSA9PiBoYXNFeHBvcnQoKSxcbiAgICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb246ICgpID0+IGhhc0V4cG9ydCgpLFxuICAgICAgXCJQcm9ncmFtOmV4aXRcIjogKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKCFleGlzdEV4cG9ydCkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHsgbm9kZSwgbWVzc2FnZUlkOiBERUZBVUxUX01FU1NBR0VfSUQgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbn0pO1xuIl19