eslint-plugin-project-structure
Version:
Powerful ESLint plugin with rules to help you achieve a scalable, consistent, and well-structured project. Create your own framework! Define your folder structure, file composition, advanced naming conventions, and create independent modules. Take your pr
267 lines (266 loc) • 7.37 kB
JSON
{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"SelectorType": {
"type": "string",
"default": "",
"enum": [
"class",
"variable",
"variableExpression",
"propertyDefinition",
"arrowFunction",
"function",
"type",
"interface",
"enum"
]
},
"Selector": {
"oneOf": [
{ "$ref": "#/definitions/SelectorType" },
{
"type": "object",
"default": { "type": "variableExpression", "limitTo": "" },
"additionalProperties": false,
"properties": {
"type": {
"type": "string",
"default": "variableExpression",
"enum": ["variableExpression"]
},
"limitTo": {
"oneOf": [
{ "type": "string", "default": "" },
{
"type": "array",
"default": [],
"items": { "type": "string" }
}
]
}
},
"required": ["type", "limitTo"]
}
]
},
"RootSelectorsLimits": {
"type": "array",
"default": [],
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"selector": {
"oneOf": [
{ "$ref": "#/definitions/SelectorType" },
{
"type": "array",
"default": [],
"items": { "$ref": "#/definitions/SelectorType" }
}
]
},
"limit": {
"oneOf": [
{ "type": "number" },
{
"type": "object",
"additionalProperties": false,
"properties": {
"min": {
"type": "number"
},
"max": {
"type": "number"
}
}
}
]
}
},
"required": ["limit", "selector"]
}
},
"FileRule": {
"type": "object",
"default": {},
"additionalProperties": false,
"properties": {
"selector": {
"oneOf": [
{ "$ref": "#/definitions/Selector" },
{
"type": "array",
"default": [],
"items": { "$ref": "#/definitions/Selector" }
}
]
},
"scope": {
"oneOf": [
{
"type": "string",
"default": "file",
"enum": ["file", "fileExport", "fileRoot", "nestedSelectors"]
},
{
"type": "array",
"default": [],
"items": {
"type": "string",
"default": "file",
"enum": ["file", "fileExport", "fileRoot"]
}
}
]
},
"positionIndex": {
"oneOf": [
{ "type": "number", "default": 0 },
{
"type": "object",
"default": { "index": 0, "sorting": "az" },
"properties": {
"index": { "type": "number", "default": 0 },
"sorting": {
"type": "string",
"default": "az",
"enum": ["az", "none"]
}
},
"required": ["index"]
}
]
},
"filenamePartsToRemove": {
"oneOf": [
{ "type": "string", "default": "" },
{
"type": "array",
"default": [],
"items": { "type": "string", "default": "" }
}
]
},
"format": {
"oneOf": [
{ "type": "string", "default": "" },
{ "type": "array", "default": [], "items": { "type": "string" } }
]
}
},
"required": ["selector"]
},
"CustomErrors": {
"type": "object",
"default": {},
"additionalProperties": false,
"properties": {
"class": { "type": "string", "default": "" },
"variable": { "type": "string", "default": "" },
"variableExpression": { "type": "string", "default": "" },
"propertyDefinition": { "type": "string", "default": "" },
"function": { "type": "string", "default": "" },
"arrowFunction": { "type": "string", "default": "" },
"type": { "type": "string", "default": "" },
"interface": { "type": "string", "default": "" },
"enum": { "type": "string", "default": "" }
}
},
"FileRules": {
"type": "object",
"default": {},
"additionalProperties": false,
"properties": {
"filePattern": {
"oneOf": [
{ "type": "string", "default": "" },
{
"type": "array",
"default": [],
"items": {
"oneOf": [
{ "type": "string", "default": "" },
{
"type": "array",
"default": [],
"items": { "type": "string" }
}
]
}
}
]
},
"allowOnlySpecifiedSelectors": {
"oneOf": [
{ "type": "boolean", "default": true },
{
"type": "object",
"additionalProperties": false,
"default": {
"errors": {},
"fileRoot": true,
"fileExport": true,
"file": true
},
"properties": {
"error": { "$ref": "#/definitions/CustomErrors" },
"fileRoot": {
"oneOf": [
{ "type": "boolean", "default": true },
{ "$ref": "#/definitions/CustomErrors" }
]
},
"fileExport": {
"oneOf": [
{ "type": "boolean", "default": true },
{ "$ref": "#/definitions/CustomErrors" }
]
},
"nestedSelectors": {
"oneOf": [
{ "type": "boolean", "default": true },
{ "$ref": "#/definitions/CustomErrors" }
]
}
}
}
]
},
"rootSelectorsLimits": { "$ref": "#/definitions/RootSelectorsLimits" },
"rules": {
"type": "array",
"default": [],
"items": { "$ref": "#/definitions/FileRule" }
}
},
"required": ["filePattern"]
},
"RegexParameters": {
"type": "object",
"default": {},
"additionalProperties": {
"type": "string",
"default": ""
}
}
},
"type": "object",
"additionalProperties": false,
"properties": {
"projectRoot": {
"type": "string",
"default": "."
},
"filesRules": {
"type": "array",
"default": [],
"items": { "$ref": "#/definitions/FileRules" }
},
"regexParameters": {
"$ref": "#/definitions/RegexParameters"
}
},
"required": ["filesRules"]
}