@conarti/eslint-plugin-feature-sliced
Version:
Feature-sliced design methodology plugin
66 lines (65 loc) • 2.33 kB
JavaScript
;
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);
},
};
},
});