Skip to content

Commit 76ea01f

Browse files
feat: new rules (#91)
1 parent 1b4f221 commit 76ea01f

8 files changed

Lines changed: 858 additions & 876 deletions

File tree

configs/browser.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ const recommendedBrowserConfig = {
4545
import: importPlugin,
4646
},
4747
rules: {
48+
"unicorn/prefer-classlist-toggle": "error",
49+
4850
"unicorn/prefer-dom-node-append": "error",
4951

5052
"unicorn/prefer-dom-node-dataset": "error",

configs/javascript.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,8 @@ const suggestions = {
626626

627627
"prefer-template": "error",
628628

629+
"preserve-caught-error": "error",
630+
629631
radix: ["error", "always"],
630632

631633
// `require-await` doesn't work when the function returns Promise<any>
@@ -750,6 +752,8 @@ const unicornRules = {
750752
// No need
751753
// "unicorn/no-array-reverse": "off",
752754

755+
"unicorn/no-array-sort": "error",
756+
753757
// No need
754758
// "unicorn/no-await-expression-member": "off",
755759

@@ -768,6 +772,9 @@ const unicornRules = {
768772

769773
"unicorn/no-hex-escape": "error",
770774

775+
// No need
776+
// "unicorn/no-immediate-mutation": "error",
777+
771778
"unicorn/no-instanceof-builtins": "error",
772779

773780
"unicorn/no-invalid-fetch-options": "error",
@@ -841,6 +848,8 @@ const unicornRules = {
841848
// No need
842849
// "unicorn/no-unused-properties": "off",
843850

851+
"unicorn/no-useless-collection-argument": "error",
852+
844853
"unicorn/no-useless-error-capture-stack-trace": "error",
845854

846855
"unicorn/no-useless-fallback-in-spread": "error",
@@ -882,10 +891,15 @@ const unicornRules = {
882891
// No need
883892
// "unicorn/prefer-at": "off",
884893

894+
"unicorn/prefer-bigint-literals": "error",
895+
885896
"unicorn/prefer-blob-reading-methods": "error",
886897

887898
"unicorn/prefer-class-fields": "error",
888899

900+
// Not here, define only for `browsers`
901+
// "unicorn/prefer-classlist-toggle": "error",
902+
889903
// No need
890904
// "unicorn/prefer-code-point": "error",
891905

@@ -963,6 +977,8 @@ const unicornRules = {
963977

964978
"unicorn/prefer-regexp-test": "error",
965979

980+
"unicorn/prefer-response-static-json": "error",
981+
966982
// No need
967983
// "unicorn/prefer-set-has": "off",
968984

@@ -1005,6 +1021,8 @@ const unicornRules = {
10051021
// No need
10061022
// "unicorn/require-array-join-separator": "error",
10071023

1024+
"unicorn/require-module-attributes": "error",
1025+
10081026
"unicorn/require-module-specifiers": "error",
10091027

10101028
// No need
@@ -1249,8 +1267,6 @@ function getConfig(esVersion) {
12491267
config.rules["prefer-object-spread"] = "off";
12501268
}
12511269

1252-
// unicorn/prefer-class-fields
1253-
12541270
if (esVersion < 2019) {
12551271
config.rules["unicorn/prefer-object-from-entries"] = "off";
12561272
config.rules["unicorn/prefer-array-flat"] = "off";
@@ -1260,6 +1276,7 @@ function getConfig(esVersion) {
12601276
}
12611277

12621278
if (esVersion < 2020) {
1279+
config.rules["unicorn/prefer-bigint-literals"] = "off";
12631280
config.rules["unicorn/prefer-global-this"] = "off";
12641281
config.rules["unicorn/prefer-logical-operator-over-ternary"] = "off";
12651282
}

configs/jest.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ async function getJestRecommendedConfig() {
102102
// No need
103103
// "jest/no-test-return-statement": "error",
104104

105+
"jest/no-unneeded-async-expect-function": "error",
106+
105107
// No need
106108
// "jest/no-untyped-mock-factory": "error",
107109

@@ -164,6 +166,10 @@ async function getJestRecommendedConfig() {
164166

165167
"jest/prefer-to-contain": "error",
166168

169+
"jest/prefer-to-have-been-called": "error",
170+
171+
"jest/prefer-to-have-been-called-times": "error",
172+
167173
"jest/prefer-to-have-length": "error",
168174

169175
// No need
@@ -186,6 +192,9 @@ async function getJestRecommendedConfig() {
186192
// From recommended
187193
// "jest/valid-expect-in-promise": "error",
188194

195+
// No need
196+
// "valid-mock-module-path": "off",
197+
189198
// From recommended
190199
"jest/valid-title": [
191200
"error",

configs/typescript.js

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ async function getTypescriptJSDocRecommendedConfig() {
105105
// From recommended
106106
// "jsdoc/empty-tags": "error",
107107

108+
// From recommended
109+
// "jsdoc/escape-inline-tags": "error",
110+
108111
// "jsdoc/implements-on-classes": "error",
109112

110113
// No need
@@ -154,28 +157,11 @@ async function getTypescriptJSDocRecommendedConfig() {
154157
message:
155158
"Please use `@property {string=} property`/`@param {string=} arg` instead `[arg]` for optional properties and parameters",
156159
},
157-
// No `*` type
158-
{
159-
comment: "JsdocBlock:has(JsdocTypeAny)",
160-
message: "Please use `any` or `EXPECTED_ANY` type.",
161-
},
162160
// No `?` type
163161
{
164162
comment: "JsdocBlock:has(JsdocTypeUnknown)",
165163
message: "Please use `unknown` or `any` (or `EXPECTED_ANY`) type",
166164
},
167-
// No `any` type
168-
{
169-
comment: "JsdocBlock:has(JsdocTypeName[value=/^any$/])",
170-
message: "Please use provide types instead `any`",
171-
},
172-
// No `Function` type
173-
{
174-
comment:
175-
"JsdocBlock:has(JsdocTypeName[value=/^(function|Function)$/])",
176-
message:
177-
"Please use provide types for function - `(a: number, b: number) -> number` instead `Function`/`function` or use `EXPECTED_FUNCTION` type",
178-
},
179165
// No `Object`
180166
{
181167
comment:
@@ -199,6 +185,13 @@ async function getTypescriptJSDocRecommendedConfig() {
199185
// No need
200186
// "jsdoc/no-undefined-types": "error",
201187

188+
// TODO enable me in future
189+
// "jsdoc/prefer-import-tag": "error",
190+
191+
"jsdoc/reject-any-type": "error",
192+
193+
"jsdoc/reject-function-type": "error",
194+
202195
"jsdoc/require-asterisk-prefix": "error",
203196

204197
// No need
@@ -219,6 +212,12 @@ async function getTypescriptJSDocRecommendedConfig() {
219212
// From recommended
220213
// "jsdoc/require-jsdoc": "error",
221214

215+
// No need
216+
// "jsdoc/require-next-description":"error",
217+
218+
// No need
219+
// "jsdoc/require-next-type": "error",
220+
222221
// From recommended
223222
// "jsdoc/require-param": "error",
224223

@@ -252,14 +251,32 @@ async function getTypescriptJSDocRecommendedConfig() {
252251
// From recommended
253252
// "jsdoc/require-returns-type": "error",
254253

254+
// No need
255+
// "jsdoc/require-tags": "error",
256+
255257
"jsdoc/require-template": "error",
256258

259+
// No need
260+
// "jsdoc/require-template-description": "error",
261+
257262
// No need
258263
// "jsdoc/require-throws": "error",
259264

265+
// No need
266+
// "jsdoc/require-throws-description": "error",
267+
268+
// No need
269+
// "jsdoc/require-throws-type": "error",
270+
260271
// From recommended
261272
// "jsdoc/require-yields": "error",
262273

274+
// No need
275+
// "jsdoc/require-yields-description": "error",
276+
277+
// No need
278+
// "jsdoc/require-yields-type": "error",
279+
263280
// From recommended
264281
// "jsdoc/require-yields-check": "error",
265282

@@ -272,6 +289,9 @@ async function getTypescriptJSDocRecommendedConfig() {
272289
// No need
273290
// "jsdoc/text-escaping": "error",
274291

292+
// TODO enable after https://github.com/gajus/eslint-plugin-jsdoc/issues/1615
293+
// "jsdoc/type-formatting": "error",
294+
275295
// Doesn't support function overloading/tuples/`readonly`/module keyword/etc
276296
// Also `typescript` reports this itself
277297
"jsdoc/valid-types": "off",
@@ -598,6 +618,9 @@ async function getTypescriptRecommendedConfig() {
598618
// From recommended
599619
// "@typescript-eslint/no-unused-expressions": "error",
600620

621+
"no-unused-private-class-members": "off",
622+
"@typescript-eslint/no-unused-private-class-members": "error",
623+
601624
// Provide better options
602625
"no-unused-vars": "off",
603626
"@typescript-eslint/no-unused-vars": [
@@ -633,6 +656,9 @@ async function getTypescriptRecommendedConfig() {
633656
// No need
634657
// "@typescript-eslint/no-useless-constructor": "error",
635658

659+
// No need
660+
// "@typescript-eslint/no-useless-default-assignment": "error",
661+
636662
"@typescript-eslint/no-useless-empty-export": "error",
637663

638664
// From recommended

configs/utils/is-typescript-installed.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function isTypescriptInstalled() {
1515

1616
return Boolean(
1717
typeof dependencies.typescript !== "undefined" ||
18-
typeof devDependencies.typescript !== "undefined",
18+
typeof devDependencies.typescript !== "undefined",
1919
);
2020
}
2121

0 commit comments

Comments
 (0)