@perfective/eslint-config 0.29.2 → 0.30.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.
Files changed (77) hide show
  1. package/LICENSE +1 -1
  2. package/README.adoc +24 -18
  3. package/README.md +20 -16
  4. package/config/node.d.ts +7 -0
  5. package/config/node.js +7 -11
  6. package/config/plugin.d.ts +9 -0
  7. package/config/plugin.js +22 -26
  8. package/config.js +1 -6
  9. package/cypress.d.ts +5 -0
  10. package/cypress.js +31 -56
  11. package/index.d.ts +46 -12
  12. package/index.js +100 -144
  13. package/jest-dom.js +8 -11
  14. package/jest.d.ts +6 -0
  15. package/jest.js +29 -24
  16. package/package.json +18 -17
  17. package/rules/array-func/index.d.ts +1 -2
  18. package/rules/array-func/index.js +14 -50
  19. package/rules/cypress/index.d.ts +11 -3
  20. package/rules/cypress/index.js +23 -57
  21. package/rules/eslint/index.js +6 -9
  22. package/rules/eslint/layout-formatting.js +64 -67
  23. package/rules/eslint/possible-problems.js +96 -99
  24. package/rules/eslint/suggestions.js +181 -182
  25. package/rules/eslint-comments/best-practices.js +8 -11
  26. package/rules/eslint-comments/index.d.ts +1 -2
  27. package/rules/eslint-comments/index.js +9 -45
  28. package/rules/eslint-comments/stylistic-issues.js +9 -18
  29. package/rules/import/helpful-warnings.js +11 -14
  30. package/rules/import/index.js +11 -14
  31. package/rules/import/module-systems.js +10 -13
  32. package/rules/import/rules/no-extraneous-dependencies.d.ts +3 -0
  33. package/rules/import/rules/no-extraneous-dependencies.js +20 -21
  34. package/rules/import/static-analysis.js +26 -29
  35. package/rules/import/style-guide.js +33 -36
  36. package/rules/jest/index.js +98 -72
  37. package/rules/jest/typescript-eslint.js +5 -8
  38. package/rules/jest-dom/index.js +19 -55
  39. package/rules/jsdoc/index.d.ts +1 -1
  40. package/rules/jsdoc/index.js +158 -344
  41. package/rules/n/index.d.ts +1 -1
  42. package/rules/n/index.js +64 -98
  43. package/rules/prefer-arrow/index.d.ts +1 -2
  44. package/rules/prefer-arrow/index.js +14 -50
  45. package/rules/promise/index.d.ts +1 -2
  46. package/rules/promise/index.js +35 -73
  47. package/rules/rxjs/index.d.ts +1 -1
  48. package/rules/rxjs/index.js +60 -96
  49. package/rules/security/index.d.ts +1 -2
  50. package/rules/security/index.js +22 -58
  51. package/rules/simple-import-sort/index.js +12 -48
  52. package/rules/simple-import-sort/rules/imports.d.ts +11 -0
  53. package/rules/simple-import-sort/rules/imports.js +18 -32
  54. package/rules/stylistic/js/index.d.ts +9 -2
  55. package/rules/stylistic/js/index.js +198 -236
  56. package/rules/stylistic/jsx/index.d.ts +8 -2
  57. package/rules/stylistic/jsx/index.js +81 -117
  58. package/rules/stylistic/plus/index.d.ts +6 -2
  59. package/rules/stylistic/plus/index.js +14 -50
  60. package/rules/stylistic/ts/index.d.ts +8 -2
  61. package/rules/stylistic/ts/index.js +135 -169
  62. package/rules/testing-library/index.js +41 -77
  63. package/rules/typescript-eslint/extension-rules.js +113 -116
  64. package/rules/typescript-eslint/index.d.ts +2 -0
  65. package/rules/typescript-eslint/index.js +9 -45
  66. package/rules/typescript-eslint/rules/typescript-eslint-naming-convention.d.ts +5 -0
  67. package/rules/typescript-eslint/rules/typescript-eslint-naming-convention.js +24 -30
  68. package/rules/typescript-eslint/supported-rules.d.ts +2 -0
  69. package/rules/typescript-eslint/supported-rules.js +256 -319
  70. package/rules/unicorn/index.d.ts +7 -2
  71. package/rules/unicorn/index.js +178 -209
  72. package/rules/unicorn/rules/prevent-abbreviations.d.ts +8 -0
  73. package/rules/unicorn/rules/prevent-abbreviations.js +30 -8
  74. package/rules.js +4 -14
  75. package/rxjs.d.ts +5 -0
  76. package/rxjs.js +21 -57
  77. package/testing-library.js +8 -11
@@ -1,347 +1,161 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
1
+ import eslintPluginJsdoc from 'eslint-plugin-jsdoc';
2
+ export const jsdocConfig = {
3
+ plugins: {
4
+ jsdoc: {
5
+ rules: eslintPluginJsdoc.configs['flat/recommended'].plugins['jsdoc'].rules
7
6
  }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.jsdocConfig = void 0;
37
- const eslintPluginJsdoc = __importStar(require("eslint-plugin-jsdoc"));
38
- exports.jsdocConfig = {
39
- plugins: {
40
- jsdoc: {
41
- rules: eslintPluginJsdoc.default.configs['flat/recommended'].plugins['jsdoc'].rules,
7
+ },
8
+ settings: {
9
+ jsdoc: {
10
+ tagNamePreference: {
11
+ augments: {
12
+ message: '@extends is to be used over @augments as it is more evocative of classes than @augments',
13
+ replacement: 'extends'
42
14
  },
43
- },
44
- settings: {
45
- jsdoc: {
46
- tagNamePreference: {
47
- augments: {
48
- message: '@extends is to be used over @augments as it is more evocative of classes than @augments',
49
- replacement: 'extends',
50
- },
51
- todo: {
52
- message: 'Use TODO for comments',
53
- },
54
- fires: {
55
- replacement: 'emits',
56
- },
57
- },
58
- ignoreReplacesDocs: true,
59
- overrideReplacesDocs: true,
60
- augmentsExtendsReplacesDocs: false,
61
- implementsReplacesDoc: false,
15
+ todo: {
16
+ message: 'Use TODO for comments'
62
17
  },
63
- },
64
- rules: {
65
- 'jsdoc/check-access': 'off',
66
- 'jsdoc/check-alignment': 'error',
67
- 'jsdoc/check-examples': 'off',
68
- 'jsdoc/check-indentation': 'off',
69
- 'jsdoc/check-line-alignment': ['off', 'never'],
70
- 'jsdoc/check-param-names': ['error', {
71
- allowExtraTrailingParamDocs: false,
72
- checkDestructured: true,
73
- checkRestProperty: false,
74
- disableExtraPropertyReporting: false,
75
- disableMissingParamChecks: false,
76
- enableFixer: true,
77
- useDefaultObjectProperties: false,
78
- }],
79
- 'jsdoc/check-property-names': ['error', {
80
- enableFixer: true,
81
- }],
82
- 'jsdoc/check-syntax': 'error',
83
- 'jsdoc/check-tag-names': ['error', {
84
- definedTags: ['final', 'flags', 'sealed', 'workaround'],
85
- jsxTags: true,
86
- }],
87
- 'jsdoc/check-template-names': 'error',
88
- 'jsdoc/check-types': ['error', {
89
- noDefaults: false,
90
- }],
91
- 'jsdoc/check-values': 'error',
92
- 'jsdoc/convert-to-jsdoc-comments': 'off',
93
- 'jsdoc/empty-tags': ['error', {
94
- tags: ['final', 'flags', 'sealed'],
95
- }],
96
- 'jsdoc/implements-on-classes': 'error',
97
- 'jsdoc/imports-as-dependencies': 'error',
98
- 'jsdoc/lines-before-block': 'off',
99
- 'jsdoc/match-description': 'error',
100
- 'jsdoc/match-name': 'off',
101
- 'jsdoc/multiline-blocks': ['error', {
102
- noZeroLineText: true,
103
- noFinalLineText: true,
104
- noSingleLineBlocks: true,
105
- singleLineTags: ['lends', 'type', 'deprecated'],
106
- noMultilineBlocks: false,
107
- multilineTags: ['*'],
108
- allowMultipleTags: true,
109
- }],
110
- 'jsdoc/no-bad-blocks': ['error', {
111
- ignore: ['ts-check', 'ts-expect-error', 'ts-ignore', 'ts-nocheck', 'typescript-eslint'],
112
- preventAllMultiAsteriskBlocks: false,
113
- }],
114
- 'jsdoc/no-blank-blocks': 'warn',
115
- 'jsdoc/no-blank-block-descriptions': 'off',
116
- 'jsdoc/no-defaults': 'error',
117
- 'jsdoc/no-missing-syntax': 'off',
118
- 'jsdoc/no-multi-asterisks': ['error', {
119
- allowWhitespace: false,
120
- preventAtMiddleLines: true,
121
- preventAtEnd: true,
122
- }],
123
- 'jsdoc/no-restricted-syntax': 'off',
124
- 'jsdoc/no-types': 'error',
125
- 'jsdoc/no-undefined-types': 'error',
126
- 'jsdoc/require-asterisk-prefix': ['error', 'always'],
127
- 'jsdoc/require-description': ['error', {
128
- exemptedBy: ['inheritdoc', 'package', 'private', 'see', 'deprecated'],
129
- }],
130
- 'jsdoc/require-description-complete-sentence': 'error',
131
- 'jsdoc/require-example': 'off',
132
- 'jsdoc/require-file-overview': 'off',
133
- 'jsdoc/require-hyphen-before-param-description': ['warn', 'always'],
134
- 'jsdoc/require-jsdoc': 'off',
135
- 'jsdoc/require-param': 'off',
136
- 'jsdoc/require-param-description': 'error',
137
- 'jsdoc/require-param-name': 'error',
138
- 'jsdoc/require-param-type': 'off',
139
- 'jsdoc/require-property': 'error',
140
- 'jsdoc/require-property-description': 'error',
141
- 'jsdoc/require-property-name': 'error',
142
- 'jsdoc/require-property-type': 'error',
143
- 'jsdoc/require-returns': 'off',
144
- 'jsdoc/require-returns-check': 'error',
145
- 'jsdoc/require-returns-description': 'error',
146
- 'jsdoc/require-returns-type': 'off',
147
- 'jsdoc/require-template': ['off', {
148
- requireSeparateTemplates: false,
149
- }],
150
- 'jsdoc/require-throws': 'error',
151
- 'jsdoc/require-yields': 'error',
152
- 'jsdoc/require-yields-check': 'error',
153
- 'jsdoc/sort-tags': ['warn', {
154
- tagSequence: [
155
- {
156
- tags: [
157
- 'summary',
158
- 'typeSummary',
159
- ],
160
- },
161
- {
162
- tags: [
163
- 'module',
164
- 'exports',
165
- 'file',
166
- 'fileoverview',
167
- 'overview',
168
- ],
169
- },
170
- {
171
- tags: [
172
- 'typedef',
173
- 'interface',
174
- 'record',
175
- 'template',
176
- 'name',
177
- 'kind',
178
- 'type',
179
- 'alias',
180
- 'external',
181
- 'host',
182
- 'callback',
183
- 'func',
184
- 'function',
185
- 'method',
186
- 'class',
187
- 'constructor',
188
- ],
189
- },
190
- {
191
- tags: [
192
- 'modifies',
193
- 'mixes',
194
- 'mixin',
195
- 'mixinClass',
196
- 'mixinFunction',
197
- 'namespace',
198
- 'borrows',
199
- 'constructs',
200
- 'lends',
201
- 'implements',
202
- 'requires',
203
- ],
204
- },
205
- {
206
- tags: [
207
- 'desc',
208
- 'description',
209
- 'classdesc',
210
- 'tutorial',
211
- 'copyright',
212
- 'license',
213
- ],
214
- },
215
- {
216
- tags: [
217
- 'const',
218
- 'constant',
219
- 'final',
220
- 'global',
221
- 'readonly',
222
- 'abstract',
223
- 'virtual',
224
- 'var',
225
- 'member',
226
- 'memberof',
227
- 'memberof!',
228
- 'inner',
229
- 'instance',
230
- 'inheritdoc',
231
- 'inheritDoc',
232
- 'override',
233
- 'hideconstructor',
234
- ],
235
- },
236
- {
237
- tags: [
238
- 'param',
239
- 'arg',
240
- 'argument',
241
- 'prop',
242
- 'property',
243
- ],
244
- },
245
- {
246
- tags: [
247
- 'async',
248
- 'generator',
249
- 'default',
250
- 'defaultvalue',
251
- 'enum',
252
- 'augments',
253
- 'extends',
254
- 'return',
255
- 'returns',
256
- 'throws',
257
- 'exception',
258
- 'yield',
259
- 'yields',
260
- 'event',
261
- 'fires',
262
- 'emits',
263
- 'listens',
264
- 'this',
265
- ],
266
- },
267
- {
268
- tags: [
269
- 'static',
270
- 'private',
271
- 'protected',
272
- 'public',
273
- 'access',
274
- 'package',
275
- ],
276
- },
277
- {
278
- tags: [
279
- 'see',
280
- 'example',
281
- ],
282
- },
283
- {
284
- tags: [
285
- 'closurePrimitive',
286
- 'customElement',
287
- 'expose',
288
- 'hidden',
289
- 'idGenerator',
290
- 'meaning',
291
- 'ngInject',
292
- 'owner',
293
- 'wizaction',
294
- ],
295
- },
296
- {
297
- tags: [
298
- 'define',
299
- 'dict',
300
- 'export',
301
- 'externs',
302
- 'implicitCast',
303
- 'noalias',
304
- 'nocollapse',
305
- 'nocompile',
306
- 'noinline',
307
- 'nosideeffects',
308
- 'polymer',
309
- 'polymerBehavior',
310
- 'preserve',
311
- 'struct',
312
- 'suppress',
313
- 'unrestricted',
314
- ],
315
- },
316
- {
317
- tags: [
318
- 'category',
319
- ],
320
- },
321
- {
322
- tags: [
323
- 'ignore',
324
- 'author',
325
- 'version',
326
- 'variation',
327
- 'since',
328
- 'deprecated',
329
- 'todo',
330
- ],
331
- },
332
- ],
333
- alphabetizeExtras: false,
334
- linesBetween: 1,
335
- reportTagGroupSpacing: true,
336
- reportIntraTagGroupSpacing: true,
337
- }],
338
- 'jsdoc/tag-lines': ['warn', 'always', {
339
- count: 0,
340
- startLines: 1,
341
- endLines: 0,
342
- applyToEndTag: false,
343
- tags: {},
344
- }],
345
- 'jsdoc/valid-types': 'error',
346
- },
347
- };
18
+ fires: {
19
+ replacement: 'emits'
20
+ }
21
+ },
22
+ ignoreReplacesDocs: true,
23
+ overrideReplacesDocs: true,
24
+ augmentsExtendsReplacesDocs: false,
25
+ implementsReplacesDoc: false
26
+ }
27
+ },
28
+ rules: {
29
+ 'jsdoc/check-access': 'off',
30
+ 'jsdoc/check-alignment': 'error',
31
+ 'jsdoc/check-examples': 'off',
32
+ 'jsdoc/check-indentation': 'off',
33
+ 'jsdoc/check-line-alignment': ['off', 'never'],
34
+ 'jsdoc/check-param-names': ['error', {
35
+ allowExtraTrailingParamDocs: false,
36
+ checkDestructured: true,
37
+ checkRestProperty: false,
38
+ disableExtraPropertyReporting: false,
39
+ disableMissingParamChecks: false,
40
+ enableFixer: true,
41
+ useDefaultObjectProperties: false
42
+ }],
43
+ 'jsdoc/check-property-names': ['error', {
44
+ enableFixer: true
45
+ }],
46
+ 'jsdoc/check-syntax': 'error',
47
+ 'jsdoc/check-tag-names': ['error', {
48
+ definedTags: ['final', 'flags', 'sealed', 'workaround'],
49
+ jsxTags: true
50
+ }],
51
+ 'jsdoc/check-template-names': 'error',
52
+ 'jsdoc/check-types': ['error', {
53
+ noDefaults: false
54
+ }],
55
+ 'jsdoc/check-values': 'error',
56
+ 'jsdoc/convert-to-jsdoc-comments': 'off',
57
+ 'jsdoc/empty-tags': ['error', {
58
+ tags: ['final', 'flags', 'sealed']
59
+ }],
60
+ 'jsdoc/implements-on-classes': 'error',
61
+ 'jsdoc/imports-as-dependencies': 'error',
62
+ 'jsdoc/lines-before-block': 'off',
63
+ 'jsdoc/match-description': 'error',
64
+ 'jsdoc/match-name': 'off',
65
+ 'jsdoc/multiline-blocks': ['warn', {
66
+ noZeroLineText: true,
67
+ noFinalLineText: true,
68
+ noSingleLineBlocks: true,
69
+ singleLineTags: ['lends', 'type', 'deprecated'],
70
+ noMultilineBlocks: false,
71
+ multilineTags: ['*'],
72
+ allowMultipleTags: true
73
+ }],
74
+ 'jsdoc/no-bad-blocks': ['error', {
75
+ ignore: ['ts-check', 'ts-expect-error', 'ts-ignore', 'ts-nocheck', 'typescript-eslint'],
76
+ preventAllMultiAsteriskBlocks: false
77
+ }],
78
+ 'jsdoc/no-blank-blocks': 'warn',
79
+ 'jsdoc/no-blank-block-descriptions': 'off',
80
+ 'jsdoc/no-defaults': 'error',
81
+ 'jsdoc/no-missing-syntax': 'off',
82
+ 'jsdoc/no-multi-asterisks': ['error', {
83
+ allowWhitespace: false,
84
+ preventAtMiddleLines: true,
85
+ preventAtEnd: true
86
+ }],
87
+ 'jsdoc/no-restricted-syntax': 'off',
88
+ 'jsdoc/no-types': 'error',
89
+ 'jsdoc/no-undefined-types': 'error',
90
+ 'jsdoc/require-asterisk-prefix': ['error', 'always'],
91
+ 'jsdoc/require-description': ['error', {
92
+ exemptedBy: ['inheritdoc', 'package', 'private', 'see', 'deprecated']
93
+ }],
94
+ 'jsdoc/require-description-complete-sentence': 'warn',
95
+ 'jsdoc/require-example': 'off',
96
+ 'jsdoc/require-file-overview': 'off',
97
+ 'jsdoc/require-hyphen-before-param-description': ['warn', 'always'],
98
+ 'jsdoc/require-jsdoc': 'off',
99
+ 'jsdoc/require-param': 'off',
100
+ 'jsdoc/require-param-description': 'error',
101
+ 'jsdoc/require-param-name': 'error',
102
+ 'jsdoc/require-param-type': 'off',
103
+ 'jsdoc/require-property': 'error',
104
+ 'jsdoc/require-property-description': 'error',
105
+ 'jsdoc/require-property-name': 'error',
106
+ 'jsdoc/require-property-type': 'error',
107
+ 'jsdoc/require-returns': 'off',
108
+ 'jsdoc/require-returns-check': 'error',
109
+ 'jsdoc/require-returns-description': 'error',
110
+ 'jsdoc/require-returns-type': 'off',
111
+ 'jsdoc/require-template': ['off', {
112
+ requireSeparateTemplates: false
113
+ }],
114
+ 'jsdoc/require-throws': 'error',
115
+ 'jsdoc/require-yields': 'error',
116
+ 'jsdoc/require-yields-check': 'error',
117
+ 'jsdoc/sort-tags': ['warn', {
118
+ tagSequence: [{
119
+ tags: ['summary', 'typeSummary']
120
+ }, {
121
+ tags: ['module', 'exports', 'file', 'fileoverview', 'overview']
122
+ }, {
123
+ tags: ['typedef', 'interface', 'record', 'template', 'name', 'kind', 'type', 'alias', 'external', 'host', 'callback', 'func', 'function', 'method', 'class', 'constructor']
124
+ }, {
125
+ tags: ['modifies', 'mixes', 'mixin', 'mixinClass', 'mixinFunction', 'namespace', 'borrows', 'constructs', 'lends', 'implements', 'requires']
126
+ }, {
127
+ tags: ['desc', 'description', 'classdesc', 'tutorial', 'copyright', 'license']
128
+ }, {
129
+ tags: ['const', 'constant', 'final', 'global', 'readonly', 'abstract', 'virtual', 'var', 'member', 'memberof', 'memberof!', 'inner', 'instance', 'inheritdoc', 'inheritDoc', 'override', 'hideconstructor']
130
+ }, {
131
+ tags: ['param', 'arg', 'argument', 'prop', 'property']
132
+ }, {
133
+ tags: ['async', 'generator', 'default', 'defaultvalue', 'enum', 'augments', 'extends', 'return', 'returns', 'throws', 'exception', 'yield', 'yields', 'event', 'fires', 'emits', 'listens', 'this']
134
+ }, {
135
+ tags: ['static', 'private', 'protected', 'public', 'access', 'package']
136
+ }, {
137
+ tags: ['see', 'example']
138
+ }, {
139
+ tags: ['closurePrimitive', 'customElement', 'expose', 'hidden', 'idGenerator', 'meaning', 'ngInject', 'owner', 'wizaction']
140
+ }, {
141
+ tags: ['define', 'dict', 'export', 'externs', 'implicitCast', 'noalias', 'nocollapse', 'nocompile', 'noinline', 'nosideeffects', 'polymer', 'polymerBehavior', 'preserve', 'struct', 'suppress', 'unrestricted']
142
+ }, {
143
+ tags: ['category']
144
+ }, {
145
+ tags: ['ignore', 'author', 'version', 'variation', 'since', 'deprecated', 'todo']
146
+ }],
147
+ alphabetizeExtras: false,
148
+ linesBetween: 1,
149
+ reportTagGroupSpacing: true,
150
+ reportIntraTagGroupSpacing: true
151
+ }],
152
+ 'jsdoc/tag-lines': ['warn', 'always', {
153
+ count: 0,
154
+ startLines: 1,
155
+ endLines: 0,
156
+ applyToEndTag: false,
157
+ tags: {}
158
+ }],
159
+ 'jsdoc/valid-types': 'error'
160
+ }
161
+ };
@@ -1,4 +1,4 @@
1
- import * as eslintPluginN from 'eslint-plugin-n';
1
+ import eslintPluginN from 'eslint-plugin-n';
2
2
  export declare const nConfig: {
3
3
  plugins: {
4
4
  n: import("eslint").ESLint.Plugin & {