@jakubmazanec/eslint-config 4.1.2 → 4.1.3-next.1ccffc71

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 CHANGED
@@ -14,10 +14,13 @@ ESLint config for TypeScript projects.
14
14
  npm install @jakubmazanec/eslint-config
15
15
  ```
16
16
 
17
+ <!-- prerequisites -->
18
+
17
19
  #### Prerequisites
18
20
 
19
- - Node.js 20 or later
21
+ - Node.js 22 or later
20
22
  - TypeScript 5 or later
23
+ <!-- prerequisites -->
21
24
 
22
25
  ## Usage
23
26
 
@@ -121,8 +121,6 @@ export const main = [
121
121
  parser: typescriptEslintParser,
122
122
  globals: {
123
123
  ...globals.node,
124
- // TODO: fix somehow
125
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- plugin has bad types
126
124
  ...vitestEslintPlugin.environments.env.globals,
127
125
  jsdom: "readonly"
128
126
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../source/configs/main.ts"],
4
- "sourcesContent": ["import commentsEslintPlugin from '@eslint-community/eslint-plugin-eslint-comments';\nimport stylisticEslintPlugin from '@stylistic/eslint-plugin';\nimport typescriptEslintPlugin from '@typescript-eslint/eslint-plugin';\nimport typescriptEslintParser from '@typescript-eslint/parser';\nimport vitestEslintPlugin from '@vitest/eslint-plugin';\nimport {type default as eslint, type ESLint} from 'eslint';\nimport importEslintPlugin from 'eslint-plugin-import';\nimport a11yEslintPlugin from 'eslint-plugin-jsx-a11y';\nimport perfectionistEslintPlugin from 'eslint-plugin-perfectionist';\nimport promiseEslintPlugin from 'eslint-plugin-promise';\nimport reactEslintPlugin from 'eslint-plugin-react';\nimport reactCompilerEslintPlugin from 'eslint-plugin-react-compiler';\nimport reactHooksEslintPlugin from 'eslint-plugin-react-hooks';\nimport securityEslintPlugin from 'eslint-plugin-security';\nimport testingLibraryEslintPlugin from 'eslint-plugin-testing-library';\nimport unicornEslintPlugin from 'eslint-plugin-unicorn';\nimport globals from 'globals';\n\nimport {\n ASSET_EXTENSIONS_REGEXP,\n CSS_EXTENSIONS_REGEXP,\n GRAPHQL_EXTENSIONS_REGEXP,\n JS_AND_TS_EXTENSIONS,\n JS_AND_TS_EXTENSIONS_GLOB_PART,\n TS_EXTENSIONS,\n TS_EXTENSIONS_GLOB_PART,\n} from '../constants.js';\nimport {\n a11yRules,\n commentsRules,\n eslintRules,\n importRules,\n perfectionistRules,\n promiseRules,\n reactCompilerRules,\n reactHooksRules,\n reactRules,\n securityRules,\n stylisticRules,\n testingLibraryRules,\n typescriptRules,\n unicornRules,\n vitestRules,\n} from '../rules.js';\n\nexport const main: eslint.Linter.Config[] = [\n {\n linterOptions: {\n reportUnusedDisableDirectives: 'error',\n },\n },\n {\n files: [`**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`],\n\n languageOptions: {\n ecmaVersion: 2024,\n parserOptions: {\n ecmaFeatures: {jsx: true},\n },\n globals: {\n ...globals.builtin,\n ...globals.browser,\n ...globals.es2024,\n ...globals.serviceworker,\n ...globals.worker,\n },\n },\n // TODO: fix the type essertions\n plugins: {\n '@stylistic/js': stylisticEslintPlugin as ESLint.Plugin,\n 'eslint-comments': commentsEslintPlugin as ESLint.Plugin,\n import: importEslintPlugin as ESLint.Plugin,\n 'jsx-a11y': a11yEslintPlugin as ESLint.Plugin, // type assertions needed because of `exactOptionalPropertyTypes: true`\n promise: promiseEslintPlugin as ESLint.Plugin,\n react: reactEslintPlugin as unknown as ESLint.Plugin,\n 'react-hooks': reactHooksEslintPlugin as ESLint.Plugin,\n unicorn: unicornEslintPlugin as ESLint.Plugin, // type assertions needed because of `exactOptionalPropertyTypes: true`\n security: securityEslintPlugin as ESLint.Plugin,\n 'react-compiler': reactCompilerEslintPlugin as ESLint.Plugin,\n perfectionist: perfectionistEslintPlugin as unknown as ESLint.Plugin,\n },\n\n settings: {\n 'import/ignore': [\n 'node_modules',\n String.raw`\\.json$`,\n ASSET_EXTENSIONS_REGEXP.source,\n CSS_EXTENSIONS_REGEXP.source,\n GRAPHQL_EXTENSIONS_REGEXP.source,\n ],\n react: {\n version: 'detect',\n },\n propWrapperFunctions: ['forbidExtraProps', 'exact', 'Object.freeze'],\n 'jsx-a11y': {\n polymorphicPropName: 'as',\n components: {\n Button: 'button',\n },\n },\n perfectionist: {\n locales: ['en'],\n },\n },\n\n rules: {\n ...a11yRules,\n ...commentsRules,\n ...eslintRules,\n ...importRules,\n ...perfectionistRules,\n ...promiseRules,\n ...reactCompilerRules,\n ...reactHooksRules,\n ...reactRules,\n ...securityRules,\n ...stylisticRules,\n ...unicornRules,\n },\n },\n {\n files: [`**/*.test.${JS_AND_TS_EXTENSIONS_GLOB_PART}`],\n\n languageOptions: {\n parser: typescriptEslintParser,\n globals: {\n ...globals.node,\n // TODO: fix somehow\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- plugin has bad types\n ...(vitestEslintPlugin.environments!.env.globals as object),\n jsdom: 'readonly',\n },\n },\n // TODO: fix the type essertions\n plugins: {\n vitest: vitestEslintPlugin as unknown as ESLint.Plugin,\n 'testing-library': testingLibraryEslintPlugin as ESLint.Plugin,\n },\n settings: {\n vitest: {\n typecheck: true,\n },\n 'testing-library/custom-queries': 'off',\n 'testing-library/custom-renders': 'off',\n 'testing-library/utils-module': 'off',\n },\n rules: {\n ...vitestRules,\n ...testingLibraryRules,\n\n // override ESLint rules\n 'max-classes-per-file': 'off', // enforce a maximum number of classes per file\n\n // override eslint-plugin-node rules\n 'node/no-sync': 'off', // disallow synchronous methods\n },\n },\n {\n files: [`**/*.${TS_EXTENSIONS_GLOB_PART}`],\n\n languageOptions: {\n parser: typescriptEslintParser,\n parserOptions: {\n project: 'tsconfig.typecheck.json',\n },\n },\n // TODO: fix the type essertion\n plugins: {\n '@typescript-eslint': typescriptEslintPlugin as unknown as ESLint.Plugin,\n },\n settings: {\n node: {\n tryExtensions: JS_AND_TS_EXTENSIONS,\n },\n 'import/resolver': {\n typescript: {},\n },\n 'import/parsers': {\n '@typescript-eslint/parser': TS_EXTENSIONS,\n },\n },\n rules: {\n ...typescriptRules,\n\n // override eslint-plugin-import rules\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n devDependencies: [\n `**/*.test.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `**/*.tests.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `**/*.stories.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `./.storybook/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `dbschema/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `stories/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `tests/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `tools/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `./*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n ],\n optionalDependencies: false,\n },\n ],\n },\n },\n {\n files: [`**/*.test.${TS_EXTENSIONS_GLOB_PART}`],\n\n rules: {\n // override @typescript-eslint/eslint-plugin rules\n '@typescript-eslint/ban-ts-comment': 'off', // bans // @ts-<directive> comments from being used\n '@typescript-eslint/no-floating-promises': 'off', // requires Promise-like values to be handled appropriately\n },\n },\n];\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import commentsEslintPlugin from '@eslint-community/eslint-plugin-eslint-comments';\nimport stylisticEslintPlugin from '@stylistic/eslint-plugin';\nimport typescriptEslintPlugin from '@typescript-eslint/eslint-plugin';\nimport typescriptEslintParser from '@typescript-eslint/parser';\nimport vitestEslintPlugin from '@vitest/eslint-plugin';\nimport {type default as eslint, type ESLint} from 'eslint';\nimport importEslintPlugin from 'eslint-plugin-import';\nimport a11yEslintPlugin from 'eslint-plugin-jsx-a11y';\nimport perfectionistEslintPlugin from 'eslint-plugin-perfectionist';\nimport promiseEslintPlugin from 'eslint-plugin-promise';\nimport reactEslintPlugin from 'eslint-plugin-react';\nimport reactCompilerEslintPlugin from 'eslint-plugin-react-compiler';\nimport reactHooksEslintPlugin from 'eslint-plugin-react-hooks';\nimport securityEslintPlugin from 'eslint-plugin-security';\nimport testingLibraryEslintPlugin from 'eslint-plugin-testing-library';\nimport unicornEslintPlugin from 'eslint-plugin-unicorn';\nimport globals from 'globals';\n\nimport {\n ASSET_EXTENSIONS_REGEXP,\n CSS_EXTENSIONS_REGEXP,\n GRAPHQL_EXTENSIONS_REGEXP,\n JS_AND_TS_EXTENSIONS,\n JS_AND_TS_EXTENSIONS_GLOB_PART,\n TS_EXTENSIONS,\n TS_EXTENSIONS_GLOB_PART,\n} from '../constants.js';\nimport {\n a11yRules,\n commentsRules,\n eslintRules,\n importRules,\n perfectionistRules,\n promiseRules,\n reactCompilerRules,\n reactHooksRules,\n reactRules,\n securityRules,\n stylisticRules,\n testingLibraryRules,\n typescriptRules,\n unicornRules,\n vitestRules,\n} from '../rules.js';\n\nexport const main: eslint.Linter.Config[] = [\n {\n linterOptions: {\n reportUnusedDisableDirectives: 'error',\n },\n },\n {\n files: [`**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`],\n\n languageOptions: {\n ecmaVersion: 2024,\n parserOptions: {\n ecmaFeatures: {jsx: true},\n },\n globals: {\n ...globals.builtin,\n ...globals.browser,\n ...globals.es2024,\n ...globals.serviceworker,\n ...globals.worker,\n },\n },\n // TODO: fix the type essertions\n plugins: {\n '@stylistic/js': stylisticEslintPlugin as ESLint.Plugin,\n 'eslint-comments': commentsEslintPlugin as ESLint.Plugin,\n import: importEslintPlugin as ESLint.Plugin,\n 'jsx-a11y': a11yEslintPlugin as ESLint.Plugin, // type assertions needed because of `exactOptionalPropertyTypes: true`\n promise: promiseEslintPlugin as ESLint.Plugin,\n react: reactEslintPlugin as unknown as ESLint.Plugin,\n 'react-hooks': reactHooksEslintPlugin as ESLint.Plugin,\n unicorn: unicornEslintPlugin as ESLint.Plugin, // type assertions needed because of `exactOptionalPropertyTypes: true`\n security: securityEslintPlugin as ESLint.Plugin,\n 'react-compiler': reactCompilerEslintPlugin as ESLint.Plugin,\n perfectionist: perfectionistEslintPlugin as unknown as ESLint.Plugin,\n },\n\n settings: {\n 'import/ignore': [\n 'node_modules',\n String.raw`\\.json$`,\n ASSET_EXTENSIONS_REGEXP.source,\n CSS_EXTENSIONS_REGEXP.source,\n GRAPHQL_EXTENSIONS_REGEXP.source,\n ],\n react: {\n version: 'detect',\n },\n propWrapperFunctions: ['forbidExtraProps', 'exact', 'Object.freeze'],\n 'jsx-a11y': {\n polymorphicPropName: 'as',\n components: {\n Button: 'button',\n },\n },\n perfectionist: {\n locales: ['en'],\n },\n },\n\n rules: {\n ...a11yRules,\n ...commentsRules,\n ...eslintRules,\n ...importRules,\n ...perfectionistRules,\n ...promiseRules,\n ...reactCompilerRules,\n ...reactHooksRules,\n ...reactRules,\n ...securityRules,\n ...stylisticRules,\n ...unicornRules,\n },\n },\n {\n files: [`**/*.test.${JS_AND_TS_EXTENSIONS_GLOB_PART}`],\n\n languageOptions: {\n parser: typescriptEslintParser,\n globals: {\n ...globals.node,\n ...vitestEslintPlugin.environments.env.globals,\n jsdom: 'readonly',\n },\n },\n // TODO: fix the type essertions\n plugins: {\n vitest: vitestEslintPlugin as unknown as ESLint.Plugin,\n 'testing-library': testingLibraryEslintPlugin as ESLint.Plugin,\n },\n settings: {\n vitest: {\n typecheck: true,\n },\n 'testing-library/custom-queries': 'off',\n 'testing-library/custom-renders': 'off',\n 'testing-library/utils-module': 'off',\n },\n rules: {\n ...vitestRules,\n ...testingLibraryRules,\n\n // override ESLint rules\n 'max-classes-per-file': 'off', // enforce a maximum number of classes per file\n\n // override eslint-plugin-node rules\n 'node/no-sync': 'off', // disallow synchronous methods\n },\n },\n {\n files: [`**/*.${TS_EXTENSIONS_GLOB_PART}`],\n\n languageOptions: {\n parser: typescriptEslintParser,\n parserOptions: {\n project: 'tsconfig.typecheck.json',\n },\n },\n // TODO: fix the type essertion\n plugins: {\n '@typescript-eslint': typescriptEslintPlugin as unknown as ESLint.Plugin,\n },\n settings: {\n node: {\n tryExtensions: JS_AND_TS_EXTENSIONS,\n },\n 'import/resolver': {\n typescript: {},\n },\n 'import/parsers': {\n '@typescript-eslint/parser': TS_EXTENSIONS,\n },\n },\n rules: {\n ...typescriptRules,\n\n // override eslint-plugin-import rules\n 'import/no-extraneous-dependencies': [\n 'error',\n {\n devDependencies: [\n `**/*.test.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `**/*.tests.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `**/*.stories.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `./.storybook/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `dbschema/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `stories/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `tests/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `tools/**/*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n `./*.${JS_AND_TS_EXTENSIONS_GLOB_PART}`,\n ],\n optionalDependencies: false,\n },\n ],\n },\n },\n {\n files: [`**/*.test.${TS_EXTENSIONS_GLOB_PART}`],\n\n rules: {\n // override @typescript-eslint/eslint-plugin rules\n '@typescript-eslint/ban-ts-comment': 'off', // bans // @ts-<directive> comments from being used\n '@typescript-eslint/no-floating-promises': 'off', // requires Promise-like values to be handled appropriately\n },\n },\n];\n"],
5
+ "mappings": ";AAAA,OAAO,0BAA0B;AACjC,OAAO,2BAA2B;AAClC,OAAO,4BAA4B;AACnC,OAAO,4BAA4B;AACnC,OAAO,wBAAwB;AAE/B,OAAO,wBAAwB;AAC/B,OAAO,sBAAsB;AAC7B,OAAO,+BAA+B;AACtC,OAAO,yBAAyB;AAChC,OAAO,uBAAuB;AAC9B,OAAO,+BAA+B;AACtC,OAAO,4BAA4B;AACnC,OAAO,0BAA0B;AACjC,OAAO,gCAAgC;AACvC,OAAO,yBAAyB;AAChC,OAAO,aAAa;AAEpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,aAAM,OAA+B;AAAA,EAC1C;AAAA,IACE,eAAe;AAAA,MACb,+BAA+B;AAAA,IACjC;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO,CAAC,QAAQ,8BAA8B,EAAE;AAAA,IAEhD,iBAAiB;AAAA,MACf,aAAa;AAAA,MACb,eAAe;AAAA,QACb,cAAc,EAAC,KAAK,KAAI;AAAA,MAC1B;AAAA,MACA,SAAS;AAAA,QACP,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,MACb;AAAA,IACF;AAAA;AAAA,IAEA,SAAS;AAAA,MACP,iBAAiB;AAAA,MACjB,mBAAmB;AAAA,MACnB,QAAQ;AAAA,MACR,YAAY;AAAA;AAAA,MACZ,SAAS;AAAA,MACT,OAAO;AAAA,MACP,eAAe;AAAA,MACf,SAAS;AAAA;AAAA,MACT,UAAU;AAAA,MACV,kBAAkB;AAAA,MAClB,eAAe;AAAA,IACjB;AAAA,IAEA,UAAU;AAAA,MACR,iBAAiB;AAAA,QACf;AAAA,QACA,OAAO;AAAA,QACP,wBAAwB;AAAA,QACxB,sBAAsB;AAAA,QACtB,0BAA0B;AAAA,MAC5B;AAAA,MACA,OAAO;AAAA,QACL,SAAS;AAAA,MACX;AAAA,MACA,sBAAsB,CAAC,oBAAoB,SAAS,eAAe;AAAA,MACnE,YAAY;AAAA,QACV,qBAAqB;AAAA,QACrB,YAAY;AAAA,UACV,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,eAAe;AAAA,QACb,SAAS,CAAC,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,IAEA,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO,CAAC,aAAa,8BAA8B,EAAE;AAAA,IAErD,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,GAAG,QAAQ;AAAA,QACX,GAAG,mBAAmB,aAAa,IAAI;AAAA,QACvC,OAAO;AAAA,MACT;AAAA,IACF;AAAA;AAAA,IAEA,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,mBAAmB;AAAA,IACrB;AAAA,IACA,UAAU;AAAA,MACR,QAAQ;AAAA,QACN,WAAW;AAAA,MACb;AAAA,MACA,kCAAkC;AAAA,MAClC,kCAAkC;AAAA,MAClC,gCAAgC;AAAA,IAClC;AAAA,IACA,OAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG;AAAA;AAAA,MAGH,wBAAwB;AAAA;AAAA;AAAA,MAGxB,gBAAgB;AAAA;AAAA,IAClB;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO,CAAC,QAAQ,uBAAuB,EAAE;AAAA,IAEzC,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,eAAe;AAAA,QACb,SAAS;AAAA,MACX;AAAA,IACF;AAAA;AAAA,IAEA,SAAS;AAAA,MACP,sBAAsB;AAAA,IACxB;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,eAAe;AAAA,MACjB;AAAA,MACA,mBAAmB;AAAA,QACjB,YAAY,CAAC;AAAA,MACf;AAAA,MACA,kBAAkB;AAAA,QAChB,6BAA6B;AAAA,MAC/B;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,GAAG;AAAA;AAAA,MAGH,qCAAqC;AAAA,QACnC;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,YACf,aAAa,8BAA8B;AAAA,YAC3C,cAAc,8BAA8B;AAAA,YAC5C,gBAAgB,8BAA8B;AAAA,YAC9C,qBAAqB,8BAA8B;AAAA,YACnD,iBAAiB,8BAA8B;AAAA,YAC/C,gBAAgB,8BAA8B;AAAA,YAC9C,cAAc,8BAA8B;AAAA,YAC5C,cAAc,8BAA8B;AAAA,YAC5C,OAAO,8BAA8B;AAAA,UACvC;AAAA,UACA,sBAAsB;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO,CAAC,aAAa,uBAAuB,EAAE;AAAA,IAE9C,OAAO;AAAA;AAAA,MAEL,qCAAqC;AAAA;AAAA,MACrC,2CAA2C;AAAA;AAAA,IAC7C;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jakubmazanec/eslint-config",
3
- "version": "4.1.2",
3
+ "version": "4.1.3-next.1ccffc71",
4
4
  "description": "ESLint config for TypeScript projects.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,7 +17,7 @@
17
17
  "source"
18
18
  ],
19
19
  "scripts": {
20
- "build": "del-cli build tsconfig.tsbuildinfo && esbuild \"source/**/*\" --platform=node --target=node22.12 --outdir=build --sourcemap && tsc",
20
+ "build": "del-cli build tsconfig.tsbuildinfo && esbuild \"source/**/*\" --platform=node --target=node22.13 --outdir=build --sourcemap && tsc",
21
21
  "check-rules": "tsx tools/check-rules/main.ts",
22
22
  "clean": "del-cli coverage build *.tsbuildinfo",
23
23
  "format": "prettier . --write --ignore-unknown",
@@ -27,16 +27,16 @@
27
27
  "dependencies": {
28
28
  "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1 ",
29
29
  "@stylistic/eslint-plugin": "^2.12.1",
30
- "@typescript-eslint/eslint-plugin": "^8.19.0",
31
- "@typescript-eslint/parser": "^8.19.0",
32
- "@vitest/eslint-plugin": "^1.1.22",
30
+ "@typescript-eslint/eslint-plugin": "^8.19.1",
31
+ "@typescript-eslint/parser": "^8.19.1",
32
+ "@vitest/eslint-plugin": "^1.1.25",
33
33
  "confusing-browser-globals": "^1.0.11",
34
34
  "eslint-config-prettier": "^9.1.0",
35
35
  "eslint-import-resolver-typescript": "^3.7.0",
36
36
  "eslint-plugin-import": "^2.31.0",
37
37
  "eslint-plugin-jsx-a11y": "^6.10.2",
38
38
  "eslint-plugin-n": "^17.15.1",
39
- "eslint-plugin-perfectionist": "^4.4.0",
39
+ "eslint-plugin-perfectionist": "^4.6.0",
40
40
  "eslint-plugin-prettier": "^5.2.1",
41
41
  "eslint-plugin-promise": "^7.2.1",
42
42
  "eslint-plugin-react": "^7.37.3",
@@ -51,14 +51,14 @@
51
51
  "@types/confusing-browser-globals": "^1.0.3",
52
52
  "@types/eslint-config-prettier": "^6.11.3",
53
53
  "@types/eslint-plugin-jsx-a11y": "^6.10.0",
54
- "@types/node": "^22.10.2",
54
+ "@types/node": "^22.10.5",
55
55
  "del-cli": "^6.0.0",
56
56
  "esbuild": "^0.24.2",
57
- "eslint": "^9.17.0",
57
+ "eslint": "^9.18.0",
58
58
  "prettier": "^3.4.2",
59
59
  "prettier-plugin-packagejson": "^2.5.6",
60
60
  "tsx": "^4.19.2",
61
- "typescript": "^5.7.2"
61
+ "typescript": "^5.7.3"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "eslint": "^9.0.0",
@@ -72,6 +72,6 @@
72
72
  },
73
73
  "packageManager": "npm@10.9.0",
74
74
  "engines": {
75
- "node": "^22.12.0"
75
+ "node": "^22.13.0"
76
76
  }
77
77
  }
@@ -125,9 +125,7 @@ export const main: eslint.Linter.Config[] = [
125
125
  parser: typescriptEslintParser,
126
126
  globals: {
127
127
  ...globals.node,
128
- // TODO: fix somehow
129
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- plugin has bad types
130
- ...(vitestEslintPlugin.environments!.env.globals as object),
128
+ ...vitestEslintPlugin.environments.env.globals,
131
129
  jsdom: 'readonly',
132
130
  },
133
131
  },