@vanta-inc/eslint-plugin-vanta
Version:
Custom ESLint rules for Vanta
55 lines (54 loc) • 2.1 kB
JavaScript
;
/**
* @fileoverview Generic class that creates rules to enforce imports from {folder} are absolute
*/
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = require("@typescript-eslint/utils");
var absoluteImportRule = function (folder) {
var ruleName = folder + "-absolute-import";
var rule = utils_1.ESLintUtils.RuleCreator(function () {
return "https://github.com/VantaInc/eslint-plugin-vanta/blob/main/docs/rules/" + ruleName + ".md";
})({
name: folder + "-absolute-import",
meta: {
fixable: "code",
docs: {
description: "Import " + folder + " from its absolute path",
recommended: "error",
},
messages: {
default: "Import code in " + folder + " from its absolute path",
},
type: "suggestion",
schema: [],
},
defaultOptions: [],
create: function (context) {
var badCommonImportRegex = new RegExp("(../)*?(" + folder + "/)src/(.*)");
return {
ImportDeclaration: function (node) {
if (typeof node.source.value !== "string") {
return;
}
var matches = node.source.value.match(badCommonImportRegex);
if (!matches) {
return;
}
var replacement = node.source.value.replace(badCommonImportRegex, "$2$3");
context.report({
node: node,
messageId: "default",
fix: function (fixer) {
return [
fixer.replaceTextRange([node.source.range[0] + 1, node.source.range[1] - 1], replacement),
];
},
});
},
};
},
});
return rule;
};
module.exports = absoluteImportRule;
exports.default = absoluteImportRule;