@cto.af/eslint-config 3.1.0 → 4.0.1

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/jsdoc.js CHANGED
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- // Use when you're going to generate docs with JSDoc.
4
-
5
- // module.exports = {
6
- // extends: '@cto.af/eslint-config/jsdoc'
7
- // }
8
- //
9
-
10
- module.exports = {
11
- plugins: [
12
- 'jsdoc',
3
+ const {rules} = require('./rules/jsdoc.js');
4
+ module.exports = [{
5
+ files: [
6
+ '**/*.js',
7
+ '**/*.cjs',
8
+ '**/*.mjs',
9
+ '**/*.ts',
13
10
  ],
11
+ plugins: {
12
+ jsdoc: require('eslint-plugin-jsdoc'),
13
+ },
14
14
  settings: {
15
15
  jsdoc: {
16
16
  tagNamePreference: {
@@ -18,78 +18,5 @@ module.exports = {
18
18
  },
19
19
  },
20
20
  },
21
- rules: {
22
- // [Stylistic Issues](https://eslint.org/docs/rules/#stylistic-issues)
23
- 'jsdoc/require-jsdoc': ['error', {
24
- publicOnly: {ancestorsOnly: true},
25
- }],
26
-
27
- 'jsdoc/check-access': 'error',
28
- 'jsdoc/check-alignment': 'error',
29
- // https://github.com/eslint/eslint/issues/14745
30
- 'jsdoc/check-examples': 'off',
31
- 'jsdoc/check-indentation': 'off',
32
- 'jsdoc/check-line-alignment': ['error', 'never', {
33
- wrapIndent: ' ',
34
- }],
35
- 'jsdoc/check-param-names': 'error',
36
- 'jsdoc/check-property-names': 'error',
37
- 'jsdoc/check-syntax': 'error',
38
- 'jsdoc/check-tag-names': 'error',
39
- 'jsdoc/check-types': 'error',
40
- 'jsdoc/check-values': 'error',
41
- 'jsdoc/empty-tags': 'error',
42
- 'jsdoc/implements-on-classes': 'error',
43
- 'jsdoc/imports-as-dependencies': 'error',
44
- 'jsdoc/informative-docs': 'off', // This sounds annoying
45
- 'jsdoc/match-description': 'error',
46
- 'jsdoc/match-name': 'off',
47
- 'jsdoc/multiline-blocks': 'error',
48
- 'jsdoc/no-bad-blocks': 'error',
49
- 'jsdoc/no-blank-blocks': 'error',
50
- 'jsdoc/no-blank-block-descriptions': 'off', // I use blank lines intentionally
51
- 'jsdoc/no-defaults': 'off',
52
- 'jsdoc/no-missing-syntax': 'off',
53
- 'jsdoc/no-multi-asterisks': 'error',
54
- 'jsdoc/no-restricted-syntax': 'off',
55
- 'jsdoc/no-types': 'off',
56
- 'jsdoc/no-undefined-types': 'off', // Use typedoc
57
- 'jsdoc/require-asterisk-prefix': 'error',
58
- 'jsdoc/require-description': ['error', {exemptedBy: ['inheritdoc', 'private', 'ignore']}],
59
- 'jsdoc/require-description-complete-sentence': 'error',
60
- 'jsdoc/require-example': 'off',
61
- 'jsdoc/require-file-overview': 'off',
62
- 'jsdoc/require-hyphen-before-param-description': ['error', 'never'],
63
- 'jsdoc/require-param': ['error', {exemptedBy: ['inheritdoc', 'private', 'ignore']}],
64
- 'jsdoc/require-param-description': 'error',
65
- 'jsdoc/require-param-name': 'error',
66
- 'jsdoc/require-param-type': 'error',
67
- 'jsdoc/require-property': 'error',
68
- 'jsdoc/require-property-description': 'error',
69
- 'jsdoc/require-property-name': 'error',
70
- 'jsdoc/require-property-type': 'error',
71
- 'jsdoc/require-returns': ['error', {
72
- exemptedBy: ['ignore'],
73
- }],
74
- 'jsdoc/require-returns-check': 'error',
75
- 'jsdoc/require-returns-description': 'error',
76
- 'jsdoc/require-returns-type': 'error',
77
- 'jsdoc/require-throws': 'error',
78
- 'jsdoc/require-yields': 'error',
79
- 'jsdoc/require-yields-check': 'error',
80
- 'jsdoc/sort-tags': 'error',
81
- 'jsdoc/tag-lines': 'off',
82
- 'jsdoc/text-escaping': 'off', // Painful
83
- 'jsdoc/valid-types': 'error',
84
- },
85
- overrides: [
86
- {
87
- files: ['*.ts'],
88
- rules: {
89
- 'jsdoc/no-undefined-types': 'off', // Switch to typedoc
90
- 'jsdoc/require-param-type': 'off', // Not needed in TS
91
- 'jsdoc/require-returns-type': 'off', // Not needed in TS
92
- },
93
- },
94
- ],
95
- };
21
+ rules,
22
+ }];
package/jsdoc_ts.js ADDED
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ module.exports = [{
4
+ files: [
5
+ '**/*.ts',
6
+ ],
7
+ rules: {
8
+ 'jsdoc/no-undefined-types': 'off', // Switch to typedoc
9
+ 'jsdoc/require-param-type': 'off', // Not needed in TS
10
+ 'jsdoc/require-returns-type': 'off', // Not needed in TS
11
+ },
12
+ }];
package/markdown.js ADDED
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+ const markdown = require('eslint-plugin-markdown');
3
+
4
+ module.exports = [
5
+ {
6
+ files: [
7
+ '**/*.md',
8
+ ],
9
+ plugins: {
10
+ markdown,
11
+ },
12
+ processor: 'markdown/markdown',
13
+ },
14
+ {
15
+ files: [
16
+ '**/*.md/**',
17
+ ],
18
+ languageOptions: {
19
+ parserOptions: {
20
+ ecmaFeatures: {impliedStrict: true},
21
+ },
22
+ },
23
+ rules: {
24
+ 'eol-last': 'off',
25
+ 'no-undef': 'off',
26
+ 'no-unused-expressions': 'off',
27
+ 'no-unused-vars': 'off',
28
+ 'padded-blocks': 'off',
29
+ 'strict': 'off',
30
+ 'unicode-bom': 'off',
31
+ 'no-console': 'off',
32
+ 'n/no-missing-import': 'off',
33
+ },
34
+ },
35
+ ];
package/mjs.js ADDED
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ module.exports = [{
4
+ files: [
5
+ '**/*.mjs',
6
+ '**/*.ts',
7
+ ],
8
+ languageOptions: {
9
+ sourceType: 'module',
10
+ },
11
+ }];
package/module.js ADDED
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ module.exports = [{
4
+ files: ['**/*.js'],
5
+ languageOptions: {
6
+ sourceType: 'module',
7
+ },
8
+ }];
package/package.json CHANGED
@@ -1,14 +1,12 @@
1
1
  {
2
2
  "name": "@cto.af/eslint-config",
3
- "version": "3.1.0",
3
+ "version": "4.0.1",
4
4
  "description": "hildjj's lint rules",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
- "test": "cd test; npm run test",
8
- "lint": "eslint . --ext js,cjs,mjs,ts",
9
- "unused": "eslint-find-rules index.js -u && eslint-find-rules ava.js -u --no-core && eslint-find-rules jsdoc.js -u --no-core && eslint-find-rules ts.js -u --no-core",
10
- "update": "ncu -u --deep && ncu --dep peer -u && npm run unused && pnpm i -r && npm test",
11
- "ci": "npm run lint && npm run test && npm run unused"
7
+ "test": "cd test; npm run test; npm run lint",
8
+ "lint": "eslint .",
9
+ "ci": "npm run lint && npm run test"
12
10
  },
13
11
  "keywords": [
14
12
  "lint"
@@ -17,45 +15,22 @@
17
15
  "license": "MIT",
18
16
  "repository": "cto-af/eslint-config",
19
17
  "dependencies": {
20
- "@stylistic/eslint-plugin": "1.5.4",
21
- "eslint-plugin-n": "16.6.2"
22
- },
23
- "peerDependencies": {
24
- "@typescript-eslint/eslint-plugin": "~6",
25
- "@typescript-eslint/parser": "~6",
26
- "eslint": "~8",
27
- "eslint-plugin-ava": "~14",
28
- "eslint-plugin-jsdoc": "~48",
29
- "typescript": "~5"
30
- },
31
- "peerDependenciesMeta": {
32
- "@typescript-eslint/eslint-plugin": {
33
- "optional": true
34
- },
35
- "@typescript-eslint/parser": {
36
- "optional": true
37
- },
38
- "typescript": {
39
- "optional": true
40
- },
41
- "eslint-plugin-ava": {
42
- "optional": true
43
- },
44
- "eslint-plugin-jsdoc": {
45
- "optional": true
46
- }
18
+ "@stylistic/eslint-plugin": "1.6.3",
19
+ "eslint-plugin-n": "16.6.2",
20
+ "globals": "14.0.0"
47
21
  },
48
22
  "devDependencies": {
49
- "@typescript-eslint/eslint-plugin": "6.19.1",
50
- "@typescript-eslint/parser": "6.19.1",
51
- "eslint": "^8.56.0",
52
- "eslint-find-rules": "4.1.0",
23
+ "@hildjj/sort-rules": "link:sort-rules",
24
+ "eslint": "^8.57.0",
25
+ "eslint-find-rules": "^4.1.0",
53
26
  "eslint-plugin-ava": "^14.0.0",
54
- "eslint-plugin-hildjj": "link:rules",
55
- "eslint-plugin-jsdoc": "^48.0.2",
56
- "npm-check-updates": "16.14.12",
57
- "typescript": "5.3.3"
27
+ "eslint-plugin-jsdoc": "^48.2.1",
28
+ "eslint-plugin-markdown": "^4.0.1",
29
+ "npm-check-updates": "^16.14.15",
30
+ "typescript": "^5.4.2",
31
+ "typescript-eslint": "^7.2.0"
58
32
  },
33
+ "packageManager": "pnpm@8.15.4",
59
34
  "engines": {
60
35
  "node": ">=18"
61
36
  }
package/rules/ava.js ADDED
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ module.exports = {
4
+ rules: {
5
+ // Check: ava
6
+
7
+ // [ava](https://github.com/avajs/eslint-plugin-ava?tab=readme-ov-file#rules)
8
+ 'ava/assertion-arguments': 'error',
9
+ 'ava/hooks-order': 'error',
10
+ 'ava/max-asserts': 'off',
11
+ 'ava/no-async-fn-without-await': 'error',
12
+ 'ava/no-duplicate-modifiers': 'error',
13
+ 'ava/no-identical-title': 'error',
14
+ 'ava/no-ignored-test-files': 'off', // Buggy
15
+ 'ava/no-import-test-files': 'error',
16
+ 'ava/no-incorrect-deep-equal': 'error',
17
+ 'ava/no-inline-assertions': 'error',
18
+ 'ava/no-nested-tests': 'error',
19
+ 'ava/no-only-test': 'error',
20
+ 'ava/no-skip-assert': 'error',
21
+ 'ava/no-skip-test': 'error',
22
+ 'ava/no-todo-implementation': 'error',
23
+ 'ava/no-todo-test': 'error',
24
+ 'ava/no-unknown-modifiers': 'error',
25
+ 'ava/prefer-async-await': 'error',
26
+ 'ava/prefer-power-assert': 'off',
27
+ 'ava/prefer-t-regex': 'error',
28
+ 'ava/test-title': 'error',
29
+ 'ava/test-title-format': 'error',
30
+ 'ava/use-t': 'error',
31
+ 'ava/use-t-throws-async-well': 'error',
32
+ 'ava/use-t-well': 'error',
33
+ 'ava/use-test': 'error',
34
+ 'ava/use-true-false': 'off',
35
+
36
+ // [Possible Errors](https://github.com/eslint-community/eslint-plugin-n#possible-errors)
37
+ 'n/no-extraneous-import': ['error', {
38
+ // This is an extraneous error because of the way ava is built and the
39
+ // way that esplugin-n finds depedencies.
40
+ allowModules: ['ava'],
41
+ }],
42
+ 'n/no-extraneous-require': ['error', {allowModules: ['ava']}],
43
+ },
44
+ };