UNPKG

@conarti/eslint-plugin-feature-sliced

Version:
47 lines (46 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateAndReport = void 0; const utils_1 = require("@typescript-eslint/utils"); const feature_sliced_1 = require("../../../lib/feature-sliced"); const rule_1 = require("../../../lib/rule"); const errors_1 = require("./errors"); const is_not_suitable_for_validation_1 = require("./is-not-suitable-for-validation"); const specifiers_1 = require("./specifiers"); const extract_import_specifiers_1 = require("./specifiers/extract-import-specifiers"); const validate_node_1 = require("./validate-node"); function validate(node, pathsInfo, allowTypeImports) { if ((0, validate_node_1.validateNode)(node, pathsInfo, allowTypeImports)) { return []; } const isImportExpression = utils_1.ASTUtils.isNodeOfType(utils_1.AST_NODE_TYPES.ImportExpression)(node); if (isImportExpression) { return [node]; } const specifiers = (0, extract_import_specifiers_1.extractImportSpecifiers)(node); const invalidSpecifiers = (0, specifiers_1.validateSpecifiers)(specifiers, allowTypeImports); if ((0, specifiers_1.hasErrorsAtAllSpecifiers)(specifiers, invalidSpecifiers)) { return [node]; } return invalidSpecifiers; } function reportValidationErrors(nodes, context, pathsInfo) { nodes.forEach((node) => (0, errors_1.reportCanNotImportLayer)(context, node, pathsInfo)); } function validateAndReport(node, context, optionsWithDefault) { if (!(0, rule_1.hasPath)(node)) { return; } const isIgnoredForValidation = (0, rule_1.isIgnoredTarget)(node, optionsWithDefault) || (0, rule_1.isIgnoredCurrentFile)(context, optionsWithDefault); if (isIgnoredForValidation) { return; } const pathsInfo = (0, feature_sliced_1.extractPathsInfo)(node, context); if ((0, is_not_suitable_for_validation_1.isNotSuitableForValidation)(pathsInfo)) { return; } const { allowTypeImports } = (0, rule_1.extractRuleOptions)(optionsWithDefault); const nodesToReport = validate(node, pathsInfo, allowTypeImports); reportValidationErrors(nodesToReport, context, pathsInfo); } exports.validateAndReport = validateAndReport;