UNPKG

@conarti/eslint-plugin-feature-sliced

Version:
66 lines (65 loc) 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const rule_1 = require("../../lib/rule"); const model_1 = require("./model"); const validate_and_report_program_1 = require("./model/validate-and-report-program"); exports.default = (0, rule_1.createRule)({ name: 'public-api', meta: { type: 'problem', docs: { description: 'Check for module imports from public api', }, hasSuggestions: true, messages: { ["should-be-from-public-api"]: 'Absolute imports are only allowed from public api ("{{ fixedPath }}")', ["remove-suggestion"]: 'Remove the "{{ valueToRemove }}"', ["layers-public-api-not-allowed"]: 'The layer public API is not allowed. It harms both architecturally and practically (code splitting)', }, schema: [ { type: 'object', properties: { level: { type: 'string', enum: [ "segments", "slices", ], }, ignoreInFilesPatterns: { type: 'array', items: { type: 'string', }, }, }, }, ], }, defaultOptions: [ { level: "slices", ignoreInFilesPatterns: [], }, ], create(context, optionsWithDefault) { return { ImportDeclaration(node) { (0, model_1.validateAndReport)(node, context, optionsWithDefault); }, ImportExpression(node) { (0, model_1.validateAndReport)(node, context, optionsWithDefault); }, ExportAllDeclaration(node) { (0, model_1.validateAndReport)(node, context, optionsWithDefault); }, ExportNamedDeclaration(node) { (0, model_1.validateAndReport)(node, context, optionsWithDefault); }, Program(node) { (0, validate_and_report_program_1.validateAndReportProgram)(node, context, optionsWithDefault); }, }; }, });