eslint-config-arklint 1.11.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -27
- package/cjs/extensions/import.cjs +30 -0
- package/cjs/extensions/index.cjs +8 -0
- package/cjs/extensions/jsdoc.cjs +82 -0
- package/cjs/extensions/react.cjs +84 -0
- package/cjs/index.cjs +202 -0
- package/extensions/import.mjs +30 -0
- package/extensions/index.mjs +6 -0
- package/extensions/jsdoc.mjs +91 -0
- package/extensions/react.mjs +83 -0
- package/index.mjs +260 -0
- package/package.json +39 -15
- package/.editorconfig +0 -10
- package/.yarn/releases/yarn-4.1.0.cjs +0 -893
- package/.yarnrc.yml +0 -3
- package/extensions/import.js +0 -30
- package/extensions/jsdoc.js +0 -88
- package/extensions/react.js +0 -73
- package/index.js +0 -186
package/README.md
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
# eslint-config-arklint
|
|
2
|
-
My personal ESLint configuration.
|
|
2
|
+
My personal ESLint configuration.
|
|
3
3
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Installation
|
|
7
7
|
|
|
8
8
|
```shell
|
|
9
|
-
yarn add eslint-config-arklint -D
|
|
9
|
+
yarn add eslint eslint-config-arklint -D
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Usage
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
```
|
|
14
|
+
> [!WARNING]
|
|
15
|
+
> Only **flat config** is supported, either CJS or ESM.
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
### Default config
|
|
19
18
|
|
|
20
|
-
|
|
19
|
+
The default configuration includes standards and stylistic rules for JS.
|
|
21
20
|
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
21
|
+
```js
|
|
22
|
+
import arklintConfig from "eslint-config-arklint";
|
|
23
|
+
|
|
24
|
+
export default [
|
|
25
|
+
...arklintConfig
|
|
26
|
+
];
|
|
29
27
|
```
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
29
|
+
### Extensions
|
|
30
|
+
|
|
31
|
+
Optional extensions can be added to add rules for `import`, `react` and `jsdoc`:
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
import arklintConfig from "eslint-config-arklint";
|
|
35
|
+
import { importConfig, reactConfig, jsdocConfig } from"eslint-config-arklint/extensions";
|
|
36
|
+
|
|
37
|
+
export default [
|
|
38
|
+
...arklintConfig,
|
|
39
|
+
...reactConfig,
|
|
40
|
+
...importConfig,
|
|
41
|
+
...jsdocConfig
|
|
42
|
+
];
|
|
43
43
|
```
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var importPlugin = require("eslint-plugin-import");
|
|
2
|
+
var sortImportsES6Autofix = require("eslint-plugin-sort-imports-es6-autofix");
|
|
3
|
+
module.exports = [importPlugin.flatConfigs.recommended, {
|
|
4
|
+
plugins: {
|
|
5
|
+
"sort-imports-es6-autofix": sortImportsES6Autofix
|
|
6
|
+
},
|
|
7
|
+
rules: {
|
|
8
|
+
"sort-imports-es6-autofix/sort-imports-es6": ["warn", {
|
|
9
|
+
ignoreCase: true,
|
|
10
|
+
memberSyntaxSortOrder: ["all", "multiple", "single", "none"]
|
|
11
|
+
}],
|
|
12
|
+
"import/no-named-as-default-member": "off",
|
|
13
|
+
"import/no-anonymous-default-export": "off",
|
|
14
|
+
"import/newline-after-import": ["warn", {
|
|
15
|
+
count: 2,
|
|
16
|
+
considerComments: true
|
|
17
|
+
}],
|
|
18
|
+
"import/order": ["warn", {
|
|
19
|
+
"newlines-between": "always",
|
|
20
|
+
"groups": [["type", "unknown", "builtin"], "external", ["internal", "parent", "index", "sibling"]],
|
|
21
|
+
"warnOnUnassignedImports": true
|
|
22
|
+
}],
|
|
23
|
+
"import/first": "error",
|
|
24
|
+
"import/no-amd": "error",
|
|
25
|
+
"import/no-webpack-loader-syntax": "error",
|
|
26
|
+
"import/no-unresolved": ["error", {
|
|
27
|
+
commonjs: true
|
|
28
|
+
}]
|
|
29
|
+
}
|
|
30
|
+
}];
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
var jsdocPlugin = require("eslint-plugin-jsdoc");
|
|
2
|
+
module.exports = [jsdocPlugin.configs["flat/recommended"], {
|
|
3
|
+
plugins: {
|
|
4
|
+
jsdoc: jsdocPlugin
|
|
5
|
+
},
|
|
6
|
+
settings: {
|
|
7
|
+
jsdoc: {
|
|
8
|
+
maxLines: 2,
|
|
9
|
+
mode: "typescript",
|
|
10
|
+
preferredTypes: {
|
|
11
|
+
"object<>": false,
|
|
12
|
+
"Object<>": "Record<>",
|
|
13
|
+
"Object": "object",
|
|
14
|
+
".<>": "<>",
|
|
15
|
+
"*": "any"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
rules: {
|
|
20
|
+
"jsdoc/check-param-names": "warn",
|
|
21
|
+
"jsdoc/check-template-names": "warn",
|
|
22
|
+
"jsdoc/lines-before-block": "warn",
|
|
23
|
+
"jsdoc/require-jsdoc": "off",
|
|
24
|
+
"jsdoc/require-returns": "off",
|
|
25
|
+
"jsdoc/require-template": "warn",
|
|
26
|
+
"jsdoc/check-indentation": ["warn", {
|
|
27
|
+
excludeTags: ["import", "example"]
|
|
28
|
+
}],
|
|
29
|
+
"jsdoc/no-bad-blocks": "warn",
|
|
30
|
+
"jsdoc/tag-lines": ["warn", "never"],
|
|
31
|
+
"jsdoc/no-defaults": "off",
|
|
32
|
+
"jsdoc/require-hyphen-before-param-description": ["warn", "always", {
|
|
33
|
+
tags: {
|
|
34
|
+
property: "always",
|
|
35
|
+
template: "always",
|
|
36
|
+
return: "never"
|
|
37
|
+
}
|
|
38
|
+
}],
|
|
39
|
+
"jsdoc/check-line-alignment": ["warn", "never"],
|
|
40
|
+
"jsdoc/match-name": ["warn", {
|
|
41
|
+
match: [{
|
|
42
|
+
allowName: "/^_?([A-Z][a-z]+)+$/",
|
|
43
|
+
message: "The name should be written in PascalCase.",
|
|
44
|
+
tags: ["typedef"]
|
|
45
|
+
}, {
|
|
46
|
+
allowName: "/^([A-Z][a-z]+)+$/",
|
|
47
|
+
message: "The name should be written in PascalCase.",
|
|
48
|
+
tags: ["callback"]
|
|
49
|
+
}, {
|
|
50
|
+
allowName: "/^[A-Z]{1}$/",
|
|
51
|
+
message: "The name should be a single capital letter.",
|
|
52
|
+
tags: ["template"]
|
|
53
|
+
}]
|
|
54
|
+
}],
|
|
55
|
+
"jsdoc/match-description": ["warn", {
|
|
56
|
+
contexts: ["any"],
|
|
57
|
+
mainDescription: {
|
|
58
|
+
message: "The main description should be written in the third person, begin with a capital letter and end with a period.",
|
|
59
|
+
match: "/^[A-Z][.^\\w]*s\\b.*\\.$/us"
|
|
60
|
+
},
|
|
61
|
+
matchDescription: "^[A-Z].*[^\\.]$",
|
|
62
|
+
tags: {
|
|
63
|
+
param: {
|
|
64
|
+
message: "@param description should begin with a capital letter and not end with a period.",
|
|
65
|
+
match: true
|
|
66
|
+
},
|
|
67
|
+
property: {
|
|
68
|
+
message: "@property description should begin with a capital letter and not end with a period.",
|
|
69
|
+
match: true
|
|
70
|
+
},
|
|
71
|
+
returns: {
|
|
72
|
+
message: "@returns description should begin with a capital letter and not end with a period.",
|
|
73
|
+
match: true
|
|
74
|
+
},
|
|
75
|
+
template: {
|
|
76
|
+
message: "@template description should begin with a capital letter and not end with a period.",
|
|
77
|
+
match: true
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}]
|
|
81
|
+
}
|
|
82
|
+
}];
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
var jsxA11yPlugin = require("eslint-plugin-jsx-a11y");
|
|
2
|
+
var reactHooksPlugin = require("eslint-plugin-react-hooks");
|
|
3
|
+
var reactPlugin = require("eslint-plugin-react");
|
|
4
|
+
module.exports = [reactPlugin.configs.flat.recommended, reactPlugin.configs.flat["jsx-runtime"], {
|
|
5
|
+
plugins: {
|
|
6
|
+
"react": reactPlugin,
|
|
7
|
+
"react-hooks": reactHooksPlugin,
|
|
8
|
+
"jsx-a11y": jsxA11yPlugin
|
|
9
|
+
},
|
|
10
|
+
languageOptions: {
|
|
11
|
+
parserOptions: {
|
|
12
|
+
ecmaFeatures: {
|
|
13
|
+
jsx: true
|
|
14
|
+
},
|
|
15
|
+
babelOptions: {
|
|
16
|
+
presets: ["@babel/preset-react"]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
settings: {
|
|
21
|
+
react: {
|
|
22
|
+
version: "detect"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
rules: {
|
|
26
|
+
"jsx-a11y/alt-text": "warn",
|
|
27
|
+
"jsx-a11y/anchor-has-content": "warn",
|
|
28
|
+
"jsx-a11y/anchor-is-valid": ["warn", {
|
|
29
|
+
aspects: ["noHref", "invalidHref"]
|
|
30
|
+
}],
|
|
31
|
+
"jsx-a11y/aria-activedescendant-has-tabindex": "warn",
|
|
32
|
+
"jsx-a11y/aria-props": "warn",
|
|
33
|
+
"jsx-a11y/aria-proptypes": "warn",
|
|
34
|
+
"jsx-a11y/aria-role": ["warn", {
|
|
35
|
+
ignoreNonDOM: true
|
|
36
|
+
}],
|
|
37
|
+
"jsx-a11y/aria-unsupported-elements": "warn",
|
|
38
|
+
"jsx-a11y/heading-has-content": "warn",
|
|
39
|
+
"jsx-a11y/iframe-has-title": "warn",
|
|
40
|
+
"jsx-a11y/img-redundant-alt": "warn",
|
|
41
|
+
"jsx-a11y/no-access-key": "warn",
|
|
42
|
+
"jsx-a11y/no-distracting-elements": "warn",
|
|
43
|
+
"jsx-a11y/no-redundant-roles": "warn",
|
|
44
|
+
"jsx-a11y/role-has-required-aria-props": "warn",
|
|
45
|
+
"jsx-a11y/role-supports-aria-props": "warn",
|
|
46
|
+
"jsx-a11y/scope": "warn",
|
|
47
|
+
"react/display-name": "warn",
|
|
48
|
+
"react-hooks/exhaustive-deps": "warn",
|
|
49
|
+
"react-hooks/rules-of-hooks": "error",
|
|
50
|
+
"react/jsx-curly-brace-presence": "warn",
|
|
51
|
+
"react/jsx-first-prop-new-line": ["warn", "multiline"],
|
|
52
|
+
"react/jsx-fragments": ["warn", "element"],
|
|
53
|
+
"react/jsx-key": "warn",
|
|
54
|
+
"react/jsx-max-props-per-line": ["warn", {
|
|
55
|
+
maximum: {
|
|
56
|
+
single: 3,
|
|
57
|
+
multi: 1
|
|
58
|
+
}
|
|
59
|
+
}],
|
|
60
|
+
"react/jsx-no-comment-textnodes": "warn",
|
|
61
|
+
"react/jsx-no-duplicate-props": "warn",
|
|
62
|
+
"react/jsx-no-target-blank": "warn",
|
|
63
|
+
"react/jsx-no-undef": "error",
|
|
64
|
+
"react/jsx-pascal-case": "warn",
|
|
65
|
+
"react/jsx-tag-spacing": ["warn", {
|
|
66
|
+
closingSlash: "never",
|
|
67
|
+
beforeSelfClosing: "always",
|
|
68
|
+
afterOpening: "never",
|
|
69
|
+
beforeClosing: "never"
|
|
70
|
+
}],
|
|
71
|
+
"react/jsx-uses-react": "warn",
|
|
72
|
+
"react/jsx-uses-vars": "warn",
|
|
73
|
+
"react/jsx-boolean-value": ["warn", "never"],
|
|
74
|
+
"react/jsx-closing-bracket-location": "warn",
|
|
75
|
+
"react/jsx-wrap-multilines": "warn",
|
|
76
|
+
"react/jsx-props-no-spread-multi": "warn",
|
|
77
|
+
"react/no-danger-with-children": "warn",
|
|
78
|
+
"react/no-direct-mutation-state": "warn",
|
|
79
|
+
"react/no-is-mounted": "warn",
|
|
80
|
+
"react/prop-types": "off",
|
|
81
|
+
"react/require-render-return": "error",
|
|
82
|
+
"react/style-prop-object": "warn"
|
|
83
|
+
}
|
|
84
|
+
}];
|
package/cjs/index.cjs
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
var babelParser = require("@babel/eslint-parser");
|
|
2
|
+
var globals = require("globals");
|
|
3
|
+
var js = require("@eslint/js");
|
|
4
|
+
var stylisticJsPlugin = require("@stylistic/eslint-plugin-js");
|
|
5
|
+
module.exports = [{
|
|
6
|
+
files: ["**/*.{js,mjs,cjs,jsx}"]
|
|
7
|
+
}, {
|
|
8
|
+
languageOptions: {
|
|
9
|
+
globals: {
|
|
10
|
+
...globals.browser,
|
|
11
|
+
...globals.commonjs,
|
|
12
|
+
...globals.node,
|
|
13
|
+
...globals.es2025
|
|
14
|
+
},
|
|
15
|
+
parser: babelParser,
|
|
16
|
+
parserOptions: {
|
|
17
|
+
requireConfigFile: false,
|
|
18
|
+
ecmaVersion: "latest",
|
|
19
|
+
babelOptions: {
|
|
20
|
+
babelrc: false,
|
|
21
|
+
configFile: false,
|
|
22
|
+
presets: ["@babel/preset-env"]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}, js.configs.recommended, {
|
|
27
|
+
plugins: {
|
|
28
|
+
"@stylistic/js": stylisticJsPlugin
|
|
29
|
+
},
|
|
30
|
+
rules: {
|
|
31
|
+
"array-callback-return": "warn",
|
|
32
|
+
"arrow-body-style": "warn",
|
|
33
|
+
"camelcase": "warn",
|
|
34
|
+
"default-case": ["warn", {
|
|
35
|
+
commentPattern: "^no default$"
|
|
36
|
+
}],
|
|
37
|
+
"dot-notation": "warn",
|
|
38
|
+
"eqeqeq": ["warn", "smart"],
|
|
39
|
+
"getter-return": "warn",
|
|
40
|
+
"no-array-constructor": "warn",
|
|
41
|
+
"no-async-promise-executor": "off",
|
|
42
|
+
"no-caller": "warn",
|
|
43
|
+
"no-case-declarations": "off",
|
|
44
|
+
"no-cond-assign": ["warn", "except-parens"],
|
|
45
|
+
"no-const-assign": "warn",
|
|
46
|
+
"no-control-regex": "warn",
|
|
47
|
+
"no-delete-var": "warn",
|
|
48
|
+
"no-dupe-args": "warn",
|
|
49
|
+
"no-dupe-class-members": "warn",
|
|
50
|
+
"no-dupe-keys": "warn",
|
|
51
|
+
"no-duplicate-case": "warn",
|
|
52
|
+
"no-duplicate-imports": "warn",
|
|
53
|
+
"no-empty-character-class": "warn",
|
|
54
|
+
"no-empty-pattern": "warn",
|
|
55
|
+
"no-eval": "warn",
|
|
56
|
+
"no-ex-assign": "warn",
|
|
57
|
+
"no-extend-native": "warn",
|
|
58
|
+
"no-extra-bind": "warn",
|
|
59
|
+
"no-extra-label": "warn",
|
|
60
|
+
"no-extra-semi": "off",
|
|
61
|
+
"no-fallthrough": "warn",
|
|
62
|
+
"no-func-assign": "warn",
|
|
63
|
+
"no-global-assign": "warn",
|
|
64
|
+
"no-implied-eval": "warn",
|
|
65
|
+
"no-invalid-regexp": "warn",
|
|
66
|
+
"no-iterator": "warn",
|
|
67
|
+
"no-label-var": "warn",
|
|
68
|
+
"no-labels": ["warn", {
|
|
69
|
+
allowLoop: true,
|
|
70
|
+
allowSwitch: false
|
|
71
|
+
}],
|
|
72
|
+
"no-lone-blocks": "warn",
|
|
73
|
+
"no-loop-func": "warn",
|
|
74
|
+
"no-multi-str": "warn",
|
|
75
|
+
"no-new-func": "warn",
|
|
76
|
+
"no-new-object": "warn",
|
|
77
|
+
"no-new-symbol": "warn",
|
|
78
|
+
"no-new-wrappers": "warn",
|
|
79
|
+
"no-obj-calls": "warn",
|
|
80
|
+
"no-octal-escape": "warn",
|
|
81
|
+
"no-octal": "warn",
|
|
82
|
+
"no-redeclare": "warn",
|
|
83
|
+
"no-regex-spaces": "warn",
|
|
84
|
+
"no-restricted-globals": ["error", "addEventListener", "blur", "close", "closed", "confirm", "event", "external", "focus", "frameElement", "frames", "history", "innerHeight", "innerWidth", "length", "location", "locationbar", "menubar", "moveBy", "moveTo", "name", "onblur", "onerror", "onfocus", "onload", "onresize", "onunload", "open", "opener", "outerHeight", "outerWidth", "pageXOffset", "pageYOffset", "parent", "print", "removeEventListener", "resizeBy", "resizeTo", "screen", "screenLeft", "screenTop", "screenX", "screenY", "scroll", "scrollbars", "scrollBy", "scrollTo", "scrollX", "scrollY", "self", "status", "statusbar", "stop", "toolbar", "top"],
|
|
85
|
+
"no-restricted-syntax": ["warn", "WithStatement"],
|
|
86
|
+
"no-script-url": "warn",
|
|
87
|
+
"no-self-assign": "warn",
|
|
88
|
+
"no-self-compare": "warn",
|
|
89
|
+
"no-sequences": "warn",
|
|
90
|
+
"no-shadow-restricted-names": "warn",
|
|
91
|
+
"no-sparse-arrays": "warn",
|
|
92
|
+
"no-template-curly-in-string": "warn",
|
|
93
|
+
"no-this-before-super": "warn",
|
|
94
|
+
"no-undef": "error",
|
|
95
|
+
"no-unreachable": "warn",
|
|
96
|
+
"no-unsafe-negation": "warn",
|
|
97
|
+
"no-unused-expressions": ["error", {
|
|
98
|
+
allowShortCircuit: true,
|
|
99
|
+
allowTernary: true,
|
|
100
|
+
allowTaggedTemplates: true
|
|
101
|
+
}],
|
|
102
|
+
"no-unused-labels": "warn",
|
|
103
|
+
"no-unused-vars": "warn",
|
|
104
|
+
"no-use-before-define": ["warn", {
|
|
105
|
+
functions: false,
|
|
106
|
+
classes: false,
|
|
107
|
+
variables: false
|
|
108
|
+
}],
|
|
109
|
+
"no-useless-escape": "warn",
|
|
110
|
+
"no-useless-computed-key": "warn",
|
|
111
|
+
"no-useless-concat": "warn",
|
|
112
|
+
"no-useless-constructor": "warn",
|
|
113
|
+
"no-useless-rename": "warn",
|
|
114
|
+
"no-var": "warn",
|
|
115
|
+
"no-with": "warn",
|
|
116
|
+
"object-shorthand": ["warn", "always"],
|
|
117
|
+
"prefer-arrow-callback": "warn",
|
|
118
|
+
"require-await": "warn",
|
|
119
|
+
"require-yield": "warn",
|
|
120
|
+
"strict": ["warn", "never"],
|
|
121
|
+
"unicode-bom": ["warn", "never"],
|
|
122
|
+
"use-isnan": "warn",
|
|
123
|
+
"valid-typeof": "warn",
|
|
124
|
+
"@stylistic/js/array-bracket-newline": ["warn", "consistent"],
|
|
125
|
+
"@stylistic/js/array-bracket-spacing": "warn",
|
|
126
|
+
"@stylistic/js/array-element-newline": ["warn", "consistent"],
|
|
127
|
+
"@stylistic/js/arrow-parens": "warn",
|
|
128
|
+
"@stylistic/js/arrow-spacing": "warn",
|
|
129
|
+
"@stylistic/js/block-spacing": "warn",
|
|
130
|
+
"@stylistic/js/brace-style": ["warn", "1tbs", {
|
|
131
|
+
allowSingleLine: true
|
|
132
|
+
}],
|
|
133
|
+
"@stylistic/js/comma-dangle": ["warn", "never"],
|
|
134
|
+
"@stylistic/js/comma-spacing": "warn",
|
|
135
|
+
"@stylistic/js/comma-style": "warn",
|
|
136
|
+
"@stylistic/js/computed-property-spacing": "warn",
|
|
137
|
+
"@stylistic/js/dot-location": ["warn", "property"],
|
|
138
|
+
"@stylistic/js/eol-last": ["warn", "never"],
|
|
139
|
+
"@stylistic/js/function-call-spacing": "warn",
|
|
140
|
+
"@stylistic/js/function-call-argument-newline": ["warn", "consistent"],
|
|
141
|
+
"@stylistic/js/function-paren-newline": ["warn", "consistent"],
|
|
142
|
+
"@stylistic/js/implicit-arrow-linebreak": "warn",
|
|
143
|
+
"@stylistic/js/indent": ["warn", "tab", {
|
|
144
|
+
SwitchCase: 1,
|
|
145
|
+
ignoreComments: true
|
|
146
|
+
}],
|
|
147
|
+
"@stylistic/js/key-spacing": "warn",
|
|
148
|
+
"@stylistic/js/keyword-spacing": "warn",
|
|
149
|
+
"@stylistic/js/new-parens": "warn",
|
|
150
|
+
"@stylistic/js/no-confusing-arrow": "warn",
|
|
151
|
+
"@stylistic/js/no-extra-semi": "warn",
|
|
152
|
+
"@stylistic/js/no-floating-decimal": "warn",
|
|
153
|
+
"@stylistic/js/no-mixed-operators": "warn",
|
|
154
|
+
"@stylistic/js/no-multi-spaces": "warn",
|
|
155
|
+
"@stylistic/js/no-multiple-empty-lines": ["warn", {
|
|
156
|
+
max: 2,
|
|
157
|
+
maxBOF: 0,
|
|
158
|
+
maxEOF: 0
|
|
159
|
+
}],
|
|
160
|
+
"@stylistic/js/no-trailing-spaces": "warn",
|
|
161
|
+
"@stylistic/js/no-whitespace-before-property": "warn",
|
|
162
|
+
"@stylistic/js/nonblock-statement-body-position": "warn",
|
|
163
|
+
"@stylistic/js/object-curly-newline": "warn",
|
|
164
|
+
"@stylistic/js/object-curly-spacing": ["warn", "always"],
|
|
165
|
+
"@stylistic/js/operator-linebreak": ["warn", "after", {
|
|
166
|
+
overrides: {
|
|
167
|
+
"?": "ignore",
|
|
168
|
+
":": "ignore",
|
|
169
|
+
"||": "ignore",
|
|
170
|
+
"&&": "ignore"
|
|
171
|
+
}
|
|
172
|
+
}],
|
|
173
|
+
"@stylistic/js/padding-line-between-statements": ["warn", {
|
|
174
|
+
blankLine: "always",
|
|
175
|
+
prev: "default",
|
|
176
|
+
next: "*"
|
|
177
|
+
}, {
|
|
178
|
+
blankLine: "always",
|
|
179
|
+
prev: "*",
|
|
180
|
+
next: "switch"
|
|
181
|
+
}],
|
|
182
|
+
"@stylistic/js/quote-props": ["warn", "consistent-as-needed"],
|
|
183
|
+
"@stylistic/js/quotes": ["warn", "double"],
|
|
184
|
+
"@stylistic/js/rest-spread-spacing": "warn",
|
|
185
|
+
"@stylistic/js/semi": "warn",
|
|
186
|
+
"@stylistic/js/semi-spacing": "warn",
|
|
187
|
+
"@stylistic/js/semi-style": "warn",
|
|
188
|
+
"@stylistic/js/space-before-blocks": "warn",
|
|
189
|
+
"@stylistic/js/space-before-function-paren": ["warn", {
|
|
190
|
+
anonymous: "always",
|
|
191
|
+
named: "never",
|
|
192
|
+
asyncArrow: "always"
|
|
193
|
+
}],
|
|
194
|
+
"@stylistic/js/space-in-parens": "warn",
|
|
195
|
+
"@stylistic/js/space-infix-ops": "warn",
|
|
196
|
+
"@stylistic/js/space-unary-ops": "warn",
|
|
197
|
+
"@stylistic/js/spaced-comment": "warn",
|
|
198
|
+
"@stylistic/js/template-curly-spacing": "warn"
|
|
199
|
+
}
|
|
200
|
+
}, {
|
|
201
|
+
ignores: [".yarn/"]
|
|
202
|
+
}];
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import importPlugin from "eslint-plugin-import";
|
|
2
|
+
import sortImportsES6Autofix from "eslint-plugin-sort-imports-es6-autofix";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export default [
|
|
6
|
+
importPlugin.flatConfigs.recommended,
|
|
7
|
+
{
|
|
8
|
+
plugins: {
|
|
9
|
+
"sort-imports-es6-autofix": sortImportsES6Autofix
|
|
10
|
+
},
|
|
11
|
+
rules: {
|
|
12
|
+
"sort-imports-es6-autofix/sort-imports-es6": ["warn", {
|
|
13
|
+
ignoreCase: true,
|
|
14
|
+
memberSyntaxSortOrder: ["all", "multiple", "single", "none"]
|
|
15
|
+
}],
|
|
16
|
+
"import/no-named-as-default-member": "off",
|
|
17
|
+
"import/no-anonymous-default-export": "off",
|
|
18
|
+
"import/newline-after-import": ["warn", { count: 2, considerComments: true }],
|
|
19
|
+
"import/order": ["warn", {
|
|
20
|
+
"newlines-between": "always",
|
|
21
|
+
"groups": [["type", "unknown", "builtin"], "external", ["internal", "parent", "index", "sibling"]],
|
|
22
|
+
"warnOnUnassignedImports": true
|
|
23
|
+
}],
|
|
24
|
+
"import/first": "error",
|
|
25
|
+
"import/no-amd": "error",
|
|
26
|
+
"import/no-webpack-loader-syntax": "error",
|
|
27
|
+
"import/no-unresolved": ["error", { commonjs: true }]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
];
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import jsdocPlugin from "eslint-plugin-jsdoc";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export default [
|
|
5
|
+
jsdocPlugin.configs["flat/recommended"],
|
|
6
|
+
{
|
|
7
|
+
plugins: {
|
|
8
|
+
jsdoc: jsdocPlugin
|
|
9
|
+
},
|
|
10
|
+
settings: {
|
|
11
|
+
jsdoc: {
|
|
12
|
+
maxLines: 2,
|
|
13
|
+
mode: "typescript",
|
|
14
|
+
preferredTypes: {
|
|
15
|
+
"object<>": false,
|
|
16
|
+
"Object<>": "Record<>",
|
|
17
|
+
"Object": "object",
|
|
18
|
+
".<>": "<>",
|
|
19
|
+
"*": "any"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
rules: {
|
|
24
|
+
"jsdoc/check-param-names": "warn",
|
|
25
|
+
"jsdoc/check-template-names": "warn",
|
|
26
|
+
"jsdoc/lines-before-block": "warn",
|
|
27
|
+
"jsdoc/require-jsdoc": "off",
|
|
28
|
+
"jsdoc/require-returns": "off",
|
|
29
|
+
"jsdoc/require-template": "warn",
|
|
30
|
+
"jsdoc/check-indentation": ["warn", {
|
|
31
|
+
excludeTags: ["import", "example"]
|
|
32
|
+
}],
|
|
33
|
+
"jsdoc/no-bad-blocks": "warn",
|
|
34
|
+
"jsdoc/tag-lines": ["warn", "never"],
|
|
35
|
+
"jsdoc/no-defaults": "off",
|
|
36
|
+
"jsdoc/require-hyphen-before-param-description": ["warn", "always", {
|
|
37
|
+
tags: {
|
|
38
|
+
property: "always",
|
|
39
|
+
template: "always",
|
|
40
|
+
return: "never"
|
|
41
|
+
}
|
|
42
|
+
}],
|
|
43
|
+
"jsdoc/check-line-alignment": ["warn", "never"],
|
|
44
|
+
"jsdoc/match-name": ["warn", {
|
|
45
|
+
match: [
|
|
46
|
+
{
|
|
47
|
+
allowName: "/^_?([A-Z][a-z]+)+$/",
|
|
48
|
+
message: "The name should be written in PascalCase.",
|
|
49
|
+
tags: ["typedef"]
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
allowName: "/^([A-Z][a-z]+)+$/",
|
|
53
|
+
message: "The name should be written in PascalCase.",
|
|
54
|
+
tags: ["callback"]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
allowName: "/^[A-Z]{1}$/",
|
|
58
|
+
message: "The name should be a single capital letter.",
|
|
59
|
+
tags: ["template"]
|
|
60
|
+
}
|
|
61
|
+
]
|
|
62
|
+
}],
|
|
63
|
+
"jsdoc/match-description": ["warn", {
|
|
64
|
+
contexts: ["any"],
|
|
65
|
+
mainDescription: {
|
|
66
|
+
message: "The main description should be written in the third person, begin with a capital letter and end with a period.",
|
|
67
|
+
match: "/^[A-Z][.^\\w]*s\\b.*\\.$/us"
|
|
68
|
+
},
|
|
69
|
+
matchDescription: "^[A-Z].*[^\\.]$",
|
|
70
|
+
tags: {
|
|
71
|
+
param: {
|
|
72
|
+
message: "@param description should begin with a capital letter and not end with a period.",
|
|
73
|
+
match: true
|
|
74
|
+
},
|
|
75
|
+
property: {
|
|
76
|
+
message: "@property description should begin with a capital letter and not end with a period.",
|
|
77
|
+
match: true
|
|
78
|
+
},
|
|
79
|
+
returns: {
|
|
80
|
+
message: "@returns description should begin with a capital letter and not end with a period.",
|
|
81
|
+
match: true
|
|
82
|
+
},
|
|
83
|
+
template: {
|
|
84
|
+
message: "@template description should begin with a capital letter and not end with a period.",
|
|
85
|
+
match: true
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
];
|