@newsteam/eslint-config 1.2.8 → 1.2.10

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/dist/index.js CHANGED
@@ -12,8 +12,8 @@
12
12
  */
13
13
  import babelParser from "@babel/eslint-parser";
14
14
  import eslintParser from "@typescript-eslint/parser";
15
- import eslintImportResolverNode from "eslint-import-resolver-node";
16
- import { resolve as eslintImportResolverTypescript } from "eslint-import-resolver-typescript";
15
+ import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript";
16
+ import { createNodeResolver } from "eslint-plugin-import-x";
17
17
  import global from "globals";
18
18
  import { arrayFuncPlugin } from "./plugins/array-function.js";
19
19
  import { constCasePlugin } from "./plugins/const-case.js";
@@ -50,8 +50,8 @@ const globals = {
50
50
  };
51
51
  const settings = {
52
52
  "import-x/resolver-next": [
53
- eslintImportResolverNode,
54
- eslintImportResolverTypescript,
53
+ createTypeScriptImportResolver(),
54
+ createNodeResolver(),
55
55
  ],
56
56
  react: {
57
57
  version: REACT_VERSION,
@@ -1 +1 @@
1
- {"version":3,"file":"import-x.d.ts","sourceRoot":"","sources":["../../src/plugins/import-x.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAER,MAAM,EACT,MAAM,QAAQ,CAAC;AAGhB,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EA2exC,CAAC"}
1
+ {"version":3,"file":"import-x.d.ts","sourceRoot":"","sources":["../../src/plugins/import-x.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAER,MAAM,EACT,MAAM,QAAQ,CAAC;AAGhB,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EA2fxC,CAAC"}
@@ -175,7 +175,7 @@ export const importXPlugin = [
175
175
  *
176
176
  * https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-duplicates.md
177
177
  */
178
- "import-x/no-duplicates": "off",
178
+ "import-x/no-duplicates": "error",
179
179
  /*
180
180
  * Forbid require() calls with expressions
181
181
  *
@@ -393,6 +393,20 @@ export const importXPlugin = [
393
393
  * https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/prefer-default-export.md
394
394
  */
395
395
  "import-x/prefer-default-export": "off",
396
+ /*
397
+ * Enforce using namespace imports for specific modules, like react/react-dom, etc.
398
+ *
399
+ * https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/prefer-namespace-import.md
400
+ */
401
+ "import-x/prefer-namespace-import": [
402
+ "error",
403
+ {
404
+ patterns: [
405
+ "react",
406
+ "react-dom",
407
+ ],
408
+ },
409
+ ],
396
410
  /*
397
411
  * Report potentially ambiguous parse goal (script vs. module)
398
412
  *
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/plugins/react.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQrC,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EA+zBtC,CAAC"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/plugins/react.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQrC,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAi0BtC,CAAC"}
@@ -457,9 +457,11 @@ export const reactPlugin = [
457
457
  /*
458
458
  * Prevent usage of dangerous JSX properties
459
459
  *
460
+ * Off for now because the name of the attribute communicates the danger by itself, this seems
461
+ *
460
462
  * https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-danger.md
461
463
  */
462
- "react/no-danger": "error",
464
+ "react/no-danger": "off",
463
465
  /*
464
466
  * Prevent problem with children and props.dangerouslySetInnerHTML
465
467
  *
@@ -1 +1 @@
1
- {"version":3,"file":"stylistic.d.ts","sourceRoot":"","sources":["../../src/plugins/stylistic.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAER,MAAM,EACT,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EA87B1C,CAAC"}
1
+ {"version":3,"file":"stylistic.d.ts","sourceRoot":"","sources":["../../src/plugins/stylistic.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAER,MAAM,EACT,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAy7B1C,CAAC"}
@@ -134,8 +134,6 @@ export const stylisticPlugin = [
134
134
  minElements: 1,
135
135
  multiline: true,
136
136
  },
137
- TSEnumBody: "always",
138
- TSInterfaceBody: "always",
139
137
  TSModuleBlock: "always",
140
138
  WhileStatement: "always",
141
139
  WithStatement: "always",
@@ -156,13 +154,6 @@ export const stylisticPlugin = [
156
154
  * https://eslint.style/rules/default/eol-last
157
155
  */
158
156
  "@stylistic/eol-last": "error",
159
- /*
160
- * Require or disallow spacing between function identifiers and their
161
- * invocations
162
- *
163
- * https://eslint.style/rules/default/func-call-spacing
164
- */
165
- "@stylistic/func-call-spacing": "error",
166
157
  /*
167
158
  * Enforce line breaks between arguments of a function call
168
159
  *
@@ -673,7 +664,13 @@ export const stylisticPlugin = [
673
664
  *
674
665
  * https://eslint.style/rules/default/operator-linebreak
675
666
  */
676
- "@stylistic/operator-linebreak": "error",
667
+ "@stylistic/operator-linebreak": [
668
+ "error",
669
+ "before",
670
+ {
671
+ overrides: { "=": "after" },
672
+ },
673
+ ],
677
674
  /*
678
675
  * Require or disallow padding within blocks
679
676
  *
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/plugins/typescript.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAER,MAAM,EACT,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAoxC3C,CAAC"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/plugins/typescript.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAER,MAAM,EACT,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EA6wC3C,CAAC"}
@@ -747,6 +747,12 @@ export const typescriptPlugin = [
747
747
  * https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-unnecessary-type-constraint.mdx
748
748
  */
749
749
  "@typescript-eslint/no-unnecessary-type-constraint": "error",
750
+ /*
751
+ * Disallow conversion idioms when they do not change the type or value of the expression.
752
+ *
753
+ * https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/no-unnecessary-type-conversion.mdx
754
+ */
755
+ "@typescript-eslint/no-unnecessary-type-conversion": "error",
750
756
  /*
751
757
  * Disallow type parameters that aren't used multiple times.
752
758
  *
@@ -1094,19 +1100,6 @@ export const typescriptPlugin = [
1094
1100
  types: "never",
1095
1101
  },
1096
1102
  ],
1097
- /*
1098
- * Require type annotations to exist
1099
- *
1100
- * Off for now because requiring type annotations unnecessarily can be cumbersome
1101
- * to maintain and generally reduces code readability. TypeScript is often
1102
- * better at inferring types than easily written type annotations would allow.
1103
- * Instead of enabling typedef, it is generally recommended to use the --noImplicitAny
1104
- * and/or --strictPropertyInitialization compiler options to enforce type
1105
- * annotations only when useful. (we do this)
1106
- *
1107
- * https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/typedef.mdx
1108
- */
1109
- "@typescript-eslint/typedef": "off",
1110
1103
  /*
1111
1104
  * Enforces unbound methods are called with their expected scope.
1112
1105
  *
@@ -1 +1 @@
1
- {"version":3,"file":"unicorn.d.ts","sourceRoot":"","sources":["../../src/plugins/unicorn.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAER,MAAM,EACT,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EA+/BxC,CAAC"}
1
+ {"version":3,"file":"unicorn.d.ts","sourceRoot":"","sources":["../../src/plugins/unicorn.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAER,MAAM,EACT,MAAM,QAAQ,CAAC;AAQhB,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAgjCxC,CAAC"}
@@ -174,18 +174,18 @@ export const unicornPlugin = [
174
174
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-method-this-argument.md
175
175
  */
176
176
  "unicorn/no-array-method-this-argument": "error",
177
- /*
178
- * Enforce combining multiple Array#push() into one call
179
- *
180
- * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-push-push.md
181
- */
182
- "unicorn/no-array-push-push": "error",
183
177
  /*
184
178
  * Disallow Array#reduce() and Array#reduceRight()
185
179
  *
186
180
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-reduce.md
187
181
  */
188
182
  "unicorn/no-array-reduce": "error",
183
+ /*
184
+ * Prefer Array#toReversed() over Array#reverse()
185
+ *
186
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-array-reverse.md
187
+ */
188
+ "unicorn/no-array-reverse": "error",
189
189
  /*
190
190
  * Forbid member access from await expression
191
191
  *
@@ -257,12 +257,6 @@ export const unicornPlugin = [
257
257
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-keyword-prefix.md
258
258
  */
259
259
  "unicorn/no-keyword-prefix": "off",
260
- /*
261
- * Disallow using .length as the end argument of {Array,String,TypedArray}#slice()
262
- *
263
- * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-length-as-slice-end.md
264
- */
265
- "unicorn/no-length-as-slice-end": "error",
266
260
  /*
267
261
  * Disallow if statements as the only statement in if blocks without else
268
262
  *
@@ -365,6 +359,18 @@ export const unicornPlugin = [
365
359
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-typeof-undefined.md
366
360
  */
367
361
  "unicorn/no-typeof-undefined": "error",
362
+ /*
363
+ * Disallow using 1 as the depth argument of Array#flat()
364
+ *
365
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-array-flat-depth.md
366
+ */
367
+ "unicorn/no-unnecessary-array-flat-depth": "error",
368
+ /*
369
+ * Disallow using .length or Infinity as the deleteCount or skipCount argument of Array#{splice,toSpliced}()
370
+ *
371
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-array-splice-count.md
372
+ */
373
+ "unicorn/no-unnecessary-array-splice-count": "error",
368
374
  /*
369
375
  * Disallow awaiting non-promise values
370
376
  *
@@ -377,6 +383,12 @@ export const unicornPlugin = [
377
383
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-polyfills.md
378
384
  */
379
385
  "unicorn/no-unnecessary-polyfills": "error",
386
+ /*
387
+ * Disallow using .length or Infinity as the end argument of {Array,String,TypedArray}#slice()
388
+ *
389
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-slice-end.md
390
+ */
391
+ "unicorn/no-unnecessary-slice-end": "error",
380
392
  /*
381
393
  * Disallow unreadable array destructuring.
382
394
  *
@@ -395,6 +407,12 @@ export const unicornPlugin = [
395
407
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unused-properties.md
396
408
  */
397
409
  "unicorn/no-unused-properties": "error",
410
+ /*
411
+ * Disallow unnecessary Error.captureStackTrace(…)
412
+ *
413
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-useless-error-capture-stack-trace.md
414
+ */
415
+ "unicorn/no-useless-error-capture-stack-trace": "error",
398
416
  /*
399
417
  * Forbid useless fallback when spreading in object literals
400
418
  *
@@ -501,6 +519,12 @@ export const unicornPlugin = [
501
519
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-blob-reading-methods.md
502
520
  */
503
521
  "unicorn/prefer-blob-reading-methods": "error",
522
+ /*
523
+ *
524
+ *
525
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-class-fields.md
526
+ */
527
+ "unicorn/prefer-class-fields": "error",
504
528
  /*
505
529
  * Prefer String#codePointAt(...) over String#charCodeAt(...) and String.fromCodePoint(...) over String.fromCharCode(...)
506
530
  *
@@ -563,6 +587,12 @@ export const unicornPlugin = [
563
587
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-global-this.md
564
588
  */
565
589
  "unicorn/prefer-global-this": "error",
590
+ /*
591
+ * Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths
592
+ *
593
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-import-meta-properties.md
594
+ */
595
+ "unicorn/prefer-import-meta-properties": "error",
566
596
  /*
567
597
  * Prefer .includes() over .indexOf() when checking for existence or non-existence
568
598
  *
@@ -695,6 +725,12 @@ export const unicornPlugin = [
695
725
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-set-size.md
696
726
  */
697
727
  "unicorn/prefer-set-size": "error",
728
+ /*
729
+ * Prefer using Set#size instead of Array#length
730
+ *
731
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-single-call.md
732
+ */
733
+ "unicorn/prefer-single-call": "error",
698
734
  /*
699
735
  * Prefer the spread operator over Array.from(). (fixable)
700
736
  *
@@ -854,6 +890,12 @@ export const unicornPlugin = [
854
890
  * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/require-array-join-separator.md
855
891
  */
856
892
  "unicorn/require-array-join-separator": "error",
893
+ /*
894
+ * Require non-empty specifier list in import and export statements
895
+ *
896
+ * https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/require-module-specifiers.md
897
+ */
898
+ "unicorn/require-module-specifiers": "error",
857
899
  /*
858
900
  * Enforce using the digits argument with Number#toFixed()
859
901
  *
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EA4kDhC,CAAC"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../src/rules.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGrC,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAmlDhC,CAAC"}
package/dist/rules.js CHANGED
@@ -993,6 +993,12 @@ export const rules = [
993
993
  * https://eslint.org/docs/latest/rules/no-throw-literal
994
994
  */
995
995
  "no-throw-literal": "error",
996
+ /*
997
+ * Disallow let or var variables that are read but never assigned
998
+ *
999
+ * https://eslint.org/docs/latest/rules/no-unassigned-vars
1000
+ */
1001
+ "no-unassigned-vars": "error",
996
1002
  /*
997
1003
  * Disallow the use of undeclared variables unless mentioned in
998
1004
  * \/* global *\/ comments.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@newsteam/eslint-config",
3
- "version": "1.2.8",
3
+ "version": "1.2.10",
4
4
  "description": "Shared config for eslint",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -52,47 +52,47 @@
52
52
  "dist"
53
53
  ],
54
54
  "dependencies": {
55
- "@babel/eslint-parser": "^7.26.8",
56
- "@babel/preset-env": "^7.26.9",
57
- "@eslint/compat": "^1.2.7",
58
- "@next/eslint-plugin-next": "^15.2.1",
59
- "@stylistic/eslint-plugin": "^4.2.0",
60
- "@typescript-eslint/eslint-plugin": "^8.26.0",
61
- "@typescript-eslint/parser": "^8.26.0",
55
+ "@babel/eslint-parser": "^7.28.0",
56
+ "@babel/preset-env": "^7.28.0",
57
+ "@eslint/compat": "^1.3.1",
58
+ "@next/eslint-plugin-next": "^15.4.4",
59
+ "@stylistic/eslint-plugin": "^5.2.2",
60
+ "@typescript-eslint/eslint-plugin": "^8.38.0",
61
+ "@typescript-eslint/parser": "^8.38.0",
62
62
  "confusing-browser-globals": "^1.0.11",
63
63
  "eslint-import-resolver-node": "^0.3.9",
64
- "eslint-import-resolver-typescript": "^3.8.3",
64
+ "eslint-import-resolver-typescript": "^4.4.4",
65
65
  "eslint-plugin-array-func": "^5.0.2",
66
66
  "eslint-plugin-const-case": "^1.2.2",
67
67
  "eslint-plugin-css-modules": "^2.12.0",
68
68
  "eslint-plugin-destructuring": "^2.2.1",
69
69
  "eslint-plugin-eslint-comments": "^3.2.0",
70
70
  "eslint-plugin-import-newlines": "^1.4.0",
71
- "eslint-plugin-import-x": "^4.6.1",
71
+ "eslint-plugin-import-x": "^4.16.1",
72
72
  "eslint-plugin-more": "^1.0.5",
73
73
  "eslint-plugin-newline-destructuring": "^1.2.2",
74
74
  "eslint-plugin-no-unsanitized": "^4.1.2",
75
75
  "eslint-plugin-no-useless-assign": "^1.0.3",
76
76
  "eslint-plugin-node": "^11.1.0",
77
77
  "eslint-plugin-only-warn": "^1.1.0",
78
- "eslint-plugin-perfectionist": "^4.10.1",
78
+ "eslint-plugin-perfectionist": "^4.15.0",
79
79
  "eslint-plugin-promise": "^7.2.1",
80
- "eslint-plugin-react": "^7.37.4",
81
- "eslint-plugin-react-19-upgrade": "^1.6.0",
82
- "eslint-plugin-react-compiler": "19.0.0-beta-e552027-20250112",
80
+ "eslint-plugin-react": "^7.37.5",
81
+ "eslint-plugin-react-19-upgrade": "^1.7.0",
82
+ "eslint-plugin-react-compiler": "19.1.0-rc.2",
83
83
  "eslint-plugin-react-hooks": "^5.2.0",
84
84
  "eslint-plugin-react-perf": "^3.3.3",
85
- "eslint-plugin-react-refresh": "^0.4.19",
85
+ "eslint-plugin-react-refresh": "^0.4.20",
86
86
  "eslint-plugin-security": "^3.0.1",
87
- "eslint-plugin-unicorn": "^57.0.0",
88
- "globals": "^16.0.0",
89
- "typescript-eslint": "^8.26.0"
87
+ "eslint-plugin-unicorn": "^60.0.0",
88
+ "globals": "^16.3.0",
89
+ "typescript-eslint": "^8.38.0"
90
90
  },
91
91
  "peerDependencies": {
92
92
  "eslint": ">= 9"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@types/eslint-plugin-security": "^3.0.0",
96
- "@types/node": "^22.13.10"
96
+ "@types/node": "^24.1.0"
97
97
  }
98
98
  }