eslint-plugin-canonical
Version:
Canonical linting rules for ESLint.
52 lines (51 loc) • 1.68 kB
JavaScript
;
/**
* @file Rule to ensure that there exist no index files
* @author Stefan Lau
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const node_path_1 = __importDefault(require("node:path"));
const utilities_1 = require("../utilities");
const isIgnoredFilename_1 = require("../utilities/isIgnoredFilename");
const isIndexFile_1 = require("../utilities/isIndexFile");
const parseFilename_1 = require("../utilities/parseFilename");
const create = (context) => {
var _a;
const filename = (_a = context.filename) !== null && _a !== void 0 ? _a : context.getFilename();
return {
Program(node) {
const absoluteFilename = node_path_1.default.resolve(filename);
const parsed = (0, parseFilename_1.parseFilename)(absoluteFilename);
const shouldIgnore = (0, isIgnoredFilename_1.isIgnoredFilename)(filename);
const isIndex = (0, isIndexFile_1.isIndexFile)(parsed);
if (shouldIgnore) {
return;
}
if (isIndex) {
context.report({
messageId: 'noIndex',
node,
});
}
},
};
};
const messages = {
noIndex: "'index.js' files are not allowed.",
};
exports.default = (0, utilities_1.createRule)({
create,
defaultOptions: [],
meta: {
docs: {
description: '',
},
messages,
schema: [],
type: 'suggestion',
},
name: 'filename-no-index',
});