UNPKG

@vanta-inc/eslint-plugin-vanta

Version:
55 lines (54 loc) 2.1 kB
"use strict"; /** * @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;