@jimmy.codes/eslint-config 6.3.0 → 6.5.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.
package/README.md CHANGED
@@ -10,14 +10,14 @@
10
10
 
11
11
  A strict but practical ESLint config that works out of the box, adapts to your stack, and enforces good patterns without getting in the way. It catches real bugs, reduces ambiguity, and keeps your codebase consistent.
12
12
 
13
- - Auto-detects your stack: React, TypeScript, Astro, Next.js, Vitest, Jest, Playwright, Storybook, and TanStack Query.
14
- - Prevents real issues: Prioritizes rules that catch bugs and unsafe patterns.
15
- - Prevents confusion: Flags ambiguous code, confusing promise usage, shadowed variables, and unused exports.
16
- - Enforces consistency: Standardizes imports, naming, coding style, and testing conventions.
17
- - Fast and lightweight: Loads only what your project needs.
18
- - Zero-config start: Install it, extend it, done.
19
- - Customizable: Turn off or override rules per project or file.
20
- - Test-ready: Works with Vitest, Jest, Playwright, and Testing Library.
13
+ - **Auto-detects your stack**: React, TypeScript, Astro, Next.js, Vitest, Jest, Playwright, Storybook, and TanStack Query.
14
+ - **Prevents real issues**: Prioritizes rules that catch bugs and unsafe patterns.
15
+ - **Prevents confusion**: Flags ambiguous code, confusing promise usage, shadowed variables, and unused exports.
16
+ - **Enforces consistency**: Standardizes imports, naming, coding style, and testing conventions.
17
+ - **Fast and lightweight**: Loads only what your project needs.
18
+ - **Zero-config start**: Install it, extend it, done.
19
+ - **Customizable**: Turn off or override rules per project or file.
20
+ - **Test-ready**: Works with Vitest, Jest, Playwright, and Testing Library.
21
21
 
22
22
  ---
23
23
 
@@ -36,7 +36,7 @@ pnpm add -D @jimmy.codes/eslint-config
36
36
 
37
37
  Add this to `eslint.config.ts`:
38
38
 
39
- ```mjs
39
+ ```ts
40
40
  import { defineConfig } from "@jimmy.codes/eslint-config";
41
41
 
42
42
  export default defineConfig();
@@ -98,6 +98,43 @@ export default defineConfig({
98
98
  });
99
99
  ```
100
100
 
101
+ Or you can import [globs](src/globs.ts) for overrides instead of writing your own:
102
+
103
+ ```ts
104
+ import { GLOB_JS, GLOB_TS } from "@jimmy.codes/eslint-config/globs";
105
+
106
+ export default defineConfig({
107
+ overrides: [
108
+ {
109
+ files: [GLOB_JS],
110
+ rules: {
111
+ "prefer-spread": "error",
112
+ },
113
+ },
114
+ {
115
+ files: [GLOB_TS],
116
+ rules: {
117
+ "prefer-const": "error",
118
+ },
119
+ },
120
+ ],
121
+ });
122
+ ```
123
+
124
+ ---
125
+
126
+ ## Enable Git Ignore Support
127
+
128
+ Allows you to respect `.gitignore` files as ignore patterns.
129
+
130
+ ```ts
131
+ import { defineConfig } from "@jimmy.codes/eslint-config";
132
+
133
+ export default defineConfig({
134
+ gitignore: true,
135
+ });
136
+ ```
137
+
101
138
  ---
102
139
 
103
140
  ## Plugins Used
@@ -1,11 +1,11 @@
1
- import { GLOB_ASTRO } from "./constants-dep165g5.js";
1
+ import { GLOB_ASTRO } from "./globs-CRO5v7xy.js";
2
2
  import { interopDefault } from "./interop-default-D4l3hsYQ.js";
3
3
  import globals from "globals";
4
4
 
5
5
  //#region src/configs/astro.ts
6
6
  async function astroConfig() {
7
7
  const files = [GLOB_ASTRO];
8
- const { configs, parser: parserTs } = await import("typescript-eslint");
8
+ const { configs: tsConfigs, parser: tsParser } = await import("typescript-eslint");
9
9
  const [astroPlugin, astroParser, jsxA11yPlugin] = await Promise.all([
10
10
  import("eslint-plugin-astro"),
11
11
  import("astro-eslint-parser"),
@@ -23,7 +23,7 @@ async function astroConfig() {
23
23
  parser: astroParser,
24
24
  parserOptions: {
25
25
  extraFileExtensions: [".astro"],
26
- parser: parserTs
26
+ parser: tsParser
27
27
  },
28
28
  sourceType: "module"
29
29
  },
@@ -48,9 +48,13 @@ async function astroConfig() {
48
48
  },
49
49
  {
50
50
  files,
51
- languageOptions: { parserOptions: configs.disableTypeChecked.languageOptions?.parserOptions },
51
+ languageOptions: { parserOptions: {
52
+ program: null,
53
+ project: false,
54
+ projectService: false
55
+ } },
52
56
  name: "jimmy.codes/astro/disable-type-checked",
53
- rules: configs.disableTypeChecked.rules
57
+ rules: tsConfigs.disableTypeChecked.rules
54
58
  },
55
59
  {
56
60
  name: "jimmy.codes/astro/imports",
@@ -1,5 +1,30 @@
1
- //#region src/constants.ts
1
+ //#region src/globs.ts
2
2
  const GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
3
+ const GLOB_JS = "**/*.?([cm])js";
4
+ const GLOB_JSX = "**/*.?([cm])jsx";
5
+ const GLOB_CJS = "**/*.cjs";
6
+ const GLOB_TS = "**/*.?([cm])ts";
7
+ const GLOB_TSX = "**/*.?([cm])tsx";
8
+ const GLOB_ASTRO = "**/*.astro";
9
+ const GLOB_TESTS = [
10
+ `**/__tests__/**/*.${GLOB_SRC_EXT}`,
11
+ `**/*.spec.${GLOB_SRC_EXT}`,
12
+ `**/*.test.${GLOB_SRC_EXT}`,
13
+ `**/*.bench.${GLOB_SRC_EXT}`,
14
+ `**/*.benchmark.${GLOB_SRC_EXT}`
15
+ ];
16
+ const GLOB_PLAYWRIGHT = [`**/e2e/**/*.spec.${GLOB_SRC_EXT}`, `**/e2e/**/*.test.${GLOB_SRC_EXT}`];
17
+ const GLOB_E2E = [
18
+ ...GLOB_PLAYWRIGHT,
19
+ `**/cypress/**/*.spec.${GLOB_SRC_EXT}`,
20
+ `**/cypress/**/*.test.${GLOB_SRC_EXT}`
21
+ ];
22
+ const GLOB_NEXTJS = [
23
+ GLOB_JS,
24
+ GLOB_JSX,
25
+ GLOB_TS,
26
+ GLOB_TSX
27
+ ];
3
28
  const GLOB_IGNORES = [
4
29
  "**/node_modules",
5
30
  "**/dist",
@@ -42,32 +67,6 @@ const GLOB_IGNORES = [
42
67
  "**/*.gen.*",
43
68
  "!.storybook"
44
69
  ];
45
- const GLOB_JS = "**/*.?([cm])js";
46
- const GLOB_JSX = "**/*.?([cm])jsx";
47
- const GLOB_TS = "**/*.?([cm])ts";
48
- const GLOB_TSX = "**/*.?([cm])tsx";
49
- const GLOB_TESTS = [
50
- `**/__tests__/**/*.${GLOB_SRC_EXT}`,
51
- `**/*.spec.${GLOB_SRC_EXT}`,
52
- `**/*.test.${GLOB_SRC_EXT}`,
53
- `**/*.bench.${GLOB_SRC_EXT}`,
54
- `**/*.benchmark.${GLOB_SRC_EXT}`
55
- ];
56
- const GLOB_PLAYWRIGHT = [`**/e2e/**/*.spec.${GLOB_SRC_EXT}`, `**/e2e/**/*.test.${GLOB_SRC_EXT}`];
57
- const GLOB_E2E = [
58
- ...GLOB_PLAYWRIGHT,
59
- `**/cypress/**/*.spec.${GLOB_SRC_EXT}`,
60
- `**/cypress/**/*.test.${GLOB_SRC_EXT}`
61
- ];
62
- const GLOB_NEXTJS = [
63
- GLOB_JS,
64
- GLOB_JSX,
65
- GLOB_TS,
66
- GLOB_TSX
67
- ];
68
- const GLOB_CJS = "**/*.cjs";
69
- const GLOB_ASTRO = "**/*.astro";
70
- const TESTING_LIBRARY_FAMILY = ["@testing-library/react"];
71
70
 
72
71
  //#endregion
73
- export { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TSX, TESTING_LIBRARY_FAMILY };
72
+ export { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TS, GLOB_TSX };
@@ -0,0 +1,14 @@
1
+ //#region src/globs.d.ts
2
+ declare const GLOB_JS = "**/*.?([cm])js";
3
+ declare const GLOB_JSX = "**/*.?([cm])jsx";
4
+ declare const GLOB_CJS = "**/*.cjs";
5
+ declare const GLOB_TS = "**/*.?([cm])ts";
6
+ declare const GLOB_TSX = "**/*.?([cm])tsx";
7
+ declare const GLOB_ASTRO = "**/*.astro";
8
+ declare const GLOB_TESTS: readonly ["**/__tests__/**/*.?([cm])[jt]s?(x)", "**/*.spec.?([cm])[jt]s?(x)", "**/*.test.?([cm])[jt]s?(x)", "**/*.bench.?([cm])[jt]s?(x)", "**/*.benchmark.?([cm])[jt]s?(x)"];
9
+ declare const GLOB_PLAYWRIGHT: readonly ["**/e2e/**/*.spec.?([cm])[jt]s?(x)", "**/e2e/**/*.test.?([cm])[jt]s?(x)"];
10
+ declare const GLOB_E2E: readonly ["**/e2e/**/*.spec.?([cm])[jt]s?(x)", "**/e2e/**/*.test.?([cm])[jt]s?(x)", "**/cypress/**/*.spec.?([cm])[jt]s?(x)", "**/cypress/**/*.test.?([cm])[jt]s?(x)"];
11
+ declare const GLOB_NEXTJS: readonly ["**/*.?([cm])js", "**/*.?([cm])jsx", "**/*.?([cm])ts", "**/*.?([cm])tsx"];
12
+ declare const GLOB_IGNORES: readonly ["**/node_modules", "**/dist", "**/package-lock.json", "**/yarn.lock", "**/pnpm-lock.yaml", "**/bun.lockb", "**/output", "**/coverage", "**/temp", "**/.temp", "**/tmp", "**/.tmp", "**/.history", "**/.vitepress/cache", "**/.nuxt", "**/.next", "**/.vercel", "**/.changeset", "**/.idea", "**/.cache", "**/.output", "**/.vite-inspect", "**/.yarn", "**/storybook-static", "**/.eslint-config-inspector", "**/playwright-report", "**/.astro", "**/.vinxi", "**/app.config.timestamp_*.js", "**/.tanstack", "**/.nitro", "**/CHANGELOG*.md", "**/*.min.*", "**/LICENSE*", "**/__snapshots__", "**/auto-import?(s).d.ts", "**/components.d.ts", "**/vite.config.ts.*.mjs", "**/*.gen.*", "!.storybook"];
13
+ //#endregion
14
+ export { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TS, GLOB_TSX };
package/dist/globs.js ADDED
@@ -0,0 +1,3 @@
1
+ import { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TS, GLOB_TSX } from "./globs-CRO5v7xy.js";
2
+
3
+ export { GLOB_ASTRO, GLOB_CJS, GLOB_E2E, GLOB_IGNORES, GLOB_JS, GLOB_JSX, GLOB_NEXTJS, GLOB_PLAYWRIGHT, GLOB_TESTS, GLOB_TS, GLOB_TSX };
@@ -1,4 +1,3 @@
1
- import { TESTING_LIBRARY_FAMILY } from "./constants-dep165g5.js";
2
1
  import { isPackageExists } from "local-pkg";
3
2
 
4
3
  //#region src/utils/has-dependency.ts
@@ -15,7 +14,7 @@ const hasJest = () => {
15
14
  return isPackageExists("jest");
16
15
  };
17
16
  const hasTestingLibrary = () => {
18
- return TESTING_LIBRARY_FAMILY.some((pkg) => {
17
+ return ["@testing-library/react"].some((pkg) => {
19
18
  return isPackageExists(pkg);
20
19
  });
21
20
  };
package/dist/index.d.ts CHANGED
@@ -398,7 +398,7 @@ interface RuleOptions {
398
398
  '@eslint-react/no-nested-component-definitions'?: Linter.RuleEntry<[]>;
399
399
  /**
400
400
  * Disallow nesting lazy component declarations inside other components.
401
- * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions
401
+ * @see https://eslint-react.xyz/docs/rules/no-nested-lazy-component-declarations
402
402
  */
403
403
  '@eslint-react/no-nested-lazy-component-declarations'?: Linter.RuleEntry<[]>;
404
404
  /**
@@ -431,6 +431,11 @@ interface RuleOptions {
431
431
  * @see https://eslint-react.xyz/docs/rules/no-string-refs
432
432
  */
433
433
  '@eslint-react/no-string-refs'?: Linter.RuleEntry<[]>;
434
+ /**
435
+ * Prevents the use of unnecessary `key` props on JSX elements when rendering lists.
436
+ * @see https://eslint-react.xyz/docs/rules/no-unnecessary-key
437
+ */
438
+ '@eslint-react/no-unnecessary-key'?: Linter.RuleEntry<[]>;
434
439
  /**
435
440
  * Disallow unnecessary usage of `useCallback`.
436
441
  * @see https://eslint-react.xyz/docs/rules/no-unnecessary-use-callback
@@ -14413,14 +14418,16 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
14413
14418
  //#endregion
14414
14419
  //#region src/types.d.ts
14415
14420
  type Rules = RuleOptions;
14416
- type TypedConfigItem = Omit<Linter.Config<Linter.RulesRecord & Rules>, "plugins"> & {
14417
- /**
14418
- * An object containing a name-value mapping of plugin names to plugin objects. When `files` is specified, these plugins are only available to the matching files.
14419
- *
14420
- * @see [Using plugins in your configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new#using-plugins-in-your-configuration)
14421
- */
14421
+ type Base = Linter.Config<Linter.RulesRecord & Rules>;
14422
+ type MaybeReadonly<T> = Readonly<T> | T;
14423
+ type Override<T, R> = Omit<T, keyof R> & R;
14424
+ type Prettify<T> = { [K in keyof T]: T[K] } & {};
14425
+ interface LinterConfigOverrides {
14426
+ files?: MaybeReadonly<Base["files"]>;
14427
+ ignores?: MaybeReadonly<Base["ignores"]>;
14422
14428
  plugins?: Record<string, unknown>;
14423
- };
14429
+ }
14430
+ type TypedConfigItem = Prettify<Override<Base, LinterConfigOverrides>>;
14424
14431
  interface Options {
14425
14432
  /**
14426
14433
  * Are astro rules enabled?
@@ -14435,6 +14442,12 @@ interface Options {
14435
14442
  * @default true
14436
14443
  */
14437
14444
  autoDetect?: boolean;
14445
+ /**
14446
+ * Respect `.gitignore` files as ignore patterns.
14447
+ *
14448
+ * @default false
14449
+ */
14450
+ gitignore?: boolean;
14438
14451
  /**
14439
14452
  * Glob patterns for files that should be ignored.
14440
14453
  * Matches ESLint's ignore patterns.
@@ -14519,6 +14532,7 @@ interface Options {
14519
14532
  declare const defineConfig: ({
14520
14533
  astro,
14521
14534
  autoDetect,
14535
+ gitignore,
14522
14536
  ignores,
14523
14537
  jest,
14524
14538
  nextjs,
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
- import { GLOB_CJS, GLOB_IGNORES, GLOB_TESTS } from "./constants-dep165g5.js";
2
- import { hasAstro, hasJest, hasNext, hasPlaywright, hasReact, hasReactQuery, hasStorybook, hasTestingLibrary, hasTypescript, hasVitest } from "./has-dependency-B3Fi8OzA.js";
1
+ import { GLOB_CJS, GLOB_IGNORES, GLOB_TESTS } from "./globs-CRO5v7xy.js";
2
+ import { hasAstro, hasJest, hasNext, hasPlaywright, hasReact, hasReactQuery, hasStorybook, hasTestingLibrary, hasTypescript, hasVitest } from "./has-dependency-7vimNBSE.js";
3
+ import gitignoreConfig from "eslint-config-flat-gitignore";
3
4
  import globals from "globals";
4
5
  import comments from "@eslint-community/eslint-plugin-eslint-comments/configs";
5
6
  import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript";
@@ -450,7 +451,7 @@ const unwrap = async (module) => {
450
451
  *
451
452
  * export default defineConfig();
452
453
  */
453
- const defineConfig = async ({ astro = false, autoDetect = true, ignores = [], jest = false, nextjs = false, overrides = [], playwright = false, react = false, storybook = false, tanstackQuery = false, testingLibrary = false, typescript = false, vitest = false } = {}, ...moreOverrides) => {
454
+ const defineConfig = async ({ astro = false, autoDetect = true, gitignore = false, ignores = [], jest = false, nextjs = false, overrides = [], playwright = false, react = false, storybook = false, tanstackQuery = false, testingLibrary = false, typescript = false, vitest = false } = {}, ...moreOverrides) => {
454
455
  const getFlag = (explicit, detector) => {
455
456
  return explicit || autoDetect && detector();
456
457
  };
@@ -476,22 +477,23 @@ const defineConfig = async ({ astro = false, autoDetect = true, ignores = [], je
476
477
  stylisticConfig()
477
478
  ];
478
479
  const featureConfigs = await Promise.all([
479
- isTypescriptEnabled && unwrap(import("./typescript-DhqJ_65V.js")),
480
- isReactEnabled && unwrap(import("./react-CzWH0eX9.js")),
481
- isTanstackQueryEnabled && unwrap(import("./tanstack-query-DF8OWtLq.js")),
482
- isAstroEnabled && unwrap(import("./astro-CqgWkoKy.js")),
483
- isJestEnabled && unwrap(import("./jest-CzZHXxA7.js")),
484
- isVitestEnabled && unwrap(import("./vitest-J--7DiIk.js")),
485
- isTestingLibraryEnabled && unwrap(import("./testing-library-XmNQWB2F.js")),
486
- isPlaywrightEnabled && unwrap(import("./playwright-CHYoYi52.js")),
480
+ isTypescriptEnabled && unwrap(import("./typescript-B4UNt8qM.js")),
481
+ isReactEnabled && unwrap(import("./react-DD9VDtyi.js")),
482
+ isTanstackQueryEnabled && unwrap(import("./tanstack-query-DqqVfxJs.js")),
483
+ isAstroEnabled && unwrap(import("./astro-Cc3Rxusf.js")),
484
+ isJestEnabled && unwrap(import("./jest-BhHoh4EB.js")),
485
+ isVitestEnabled && unwrap(import("./vitest-DpQEe80J.js")),
486
+ isTestingLibraryEnabled && unwrap(import("./testing-library-lJsmjyFo.js")),
487
+ isPlaywrightEnabled && unwrap(import("./playwright-Cyd4gThA.js")),
487
488
  isStorybookEnabled && unwrap(import("./storybook-BO4plVPp.js")),
488
- isNextjsEnabled && unwrap(import("./nextjs-Bh8fqE_o.js"))
489
+ isNextjsEnabled && unwrap(import("./nextjs-X6g9xH_I.js"))
489
490
  ]);
490
491
  return [
492
+ ...gitignore ? [gitignoreConfig({ strict: false })] : [],
493
+ ignoresConfig(ignores),
491
494
  ...baseConfigs,
492
495
  ...featureConfigs.filter(Boolean),
493
496
  commonjsConfig(),
494
- ignoresConfig(ignores),
495
497
  prettierConfig(),
496
498
  overrides,
497
499
  moreOverrides
@@ -1,4 +1,4 @@
1
- import { GLOB_E2E, GLOB_TESTS } from "./constants-dep165g5.js";
1
+ import { GLOB_E2E, GLOB_TESTS } from "./globs-CRO5v7xy.js";
2
2
  import { interopDefault } from "./interop-default-D4l3hsYQ.js";
3
3
 
4
4
  //#region src/rules/jest.ts
@@ -1,4 +1,4 @@
1
- import { GLOB_NEXTJS } from "./constants-dep165g5.js";
1
+ import { GLOB_NEXTJS } from "./globs-CRO5v7xy.js";
2
2
  import { interopDefault } from "./interop-default-D4l3hsYQ.js";
3
3
  import { upwarn } from "./upwarn-C7t3ub-R.js";
4
4
 
@@ -1,4 +1,4 @@
1
- import { GLOB_PLAYWRIGHT } from "./constants-dep165g5.js";
1
+ import { GLOB_PLAYWRIGHT } from "./globs-CRO5v7xy.js";
2
2
  import { interopDefault } from "./interop-default-D4l3hsYQ.js";
3
3
 
4
4
  //#region src/rules/playwright.ts
@@ -1,5 +1,5 @@
1
- import { GLOB_JSX, GLOB_TSX } from "./constants-dep165g5.js";
2
- import { hasNext, hasTypescript, hasVite } from "./has-dependency-B3Fi8OzA.js";
1
+ import { GLOB_JSX, GLOB_TSX } from "./globs-CRO5v7xy.js";
2
+ import { hasNext, hasTypescript, hasVite } from "./has-dependency-7vimNBSE.js";
3
3
  import { interopDefault } from "./interop-default-D4l3hsYQ.js";
4
4
  import { upwarn } from "./upwarn-C7t3ub-R.js";
5
5
  import globals from "globals";
@@ -27,7 +27,7 @@ const reactRules = async () => {
27
27
  const isUsingTypesScript = hasTypescript();
28
28
  const reactPluginRules = isUsingTypesScript ? reactConfigs["recommended-type-checked"].rules : reactConfigs.recommended.rules;
29
29
  return {
30
- ...jsxA11yPlugin.configs.recommended.rules,
30
+ ...jsxA11yPlugin.flatConfigs.recommended.rules,
31
31
  ...upwarn(reactPluginRules),
32
32
  "@eslint-react/dom/no-string-style-prop": "error",
33
33
  "@eslint-react/hooks-extra/no-direct-set-state-in-use-effect": "error",
@@ -40,6 +40,7 @@ const reactRules = async () => {
40
40
  "@eslint-react/no-children-prop": "error",
41
41
  "@eslint-react/no-class-component": "error",
42
42
  "@eslint-react/no-missing-context-display-name": "error",
43
+ "@eslint-react/no-unnecessary-key": "error",
43
44
  "@eslint-react/no-unnecessary-use-callback": "error",
44
45
  "@eslint-react/no-unnecessary-use-memo": "error",
45
46
  "@eslint-react/no-useless-fragment": "error",
@@ -1,4 +1,4 @@
1
- import { GLOB_JSX, GLOB_TSX } from "./constants-dep165g5.js";
1
+ import { GLOB_JSX, GLOB_TSX } from "./globs-CRO5v7xy.js";
2
2
  import { interopDefault } from "./interop-default-D4l3hsYQ.js";
3
3
 
4
4
  //#region src/configs/tanstack-query.ts
@@ -1,4 +1,4 @@
1
- import { GLOB_E2E, GLOB_TESTS } from "./constants-dep165g5.js";
1
+ import { GLOB_E2E, GLOB_TESTS } from "./globs-CRO5v7xy.js";
2
2
  import { interopDefault } from "./interop-default-D4l3hsYQ.js";
3
3
 
4
4
  //#region src/rules/testing-library.ts
@@ -1,4 +1,4 @@
1
- import { GLOB_JS, GLOB_JSX, GLOB_TESTS } from "./constants-dep165g5.js";
1
+ import { GLOB_JS, GLOB_JSX, GLOB_TESTS } from "./globs-CRO5v7xy.js";
2
2
 
3
3
  //#region src/rules/typescript.ts
4
4
  const disabledEslintRules = { "no-use-before-define": "off" };
@@ -47,7 +47,12 @@ async function typescriptConfig() {
47
47
  },
48
48
  {
49
49
  files: [GLOB_JS, GLOB_JSX],
50
- ...configs.disableTypeChecked
50
+ ...configs.disableTypeChecked,
51
+ languageOptions: { parserOptions: {
52
+ program: null,
53
+ project: false,
54
+ projectService: false
55
+ } }
51
56
  },
52
57
  {
53
58
  files: GLOB_TESTS,
@@ -1,4 +1,4 @@
1
- import { GLOB_E2E, GLOB_TESTS } from "./constants-dep165g5.js";
1
+ import { GLOB_E2E, GLOB_TESTS } from "./globs-CRO5v7xy.js";
2
2
  import { interopDefault } from "./interop-default-D4l3hsYQ.js";
3
3
 
4
4
  //#region src/rules/vitest.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jimmy.codes/eslint-config",
3
- "version": "6.3.0",
3
+ "version": "6.5.0",
4
4
  "description": "A simple, modern ESLint config that covers most use cases.",
5
5
  "keywords": [
6
6
  "eslint",
@@ -24,7 +24,14 @@
24
24
  "sideEffects": false,
25
25
  "type": "module",
26
26
  "exports": {
27
- ".": "./dist/index.js"
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "default": "./dist/index.js"
30
+ },
31
+ "./globs": {
32
+ "types": "./dist/globs.d.ts",
33
+ "default": "./dist/globs.js"
34
+ }
28
35
  },
29
36
  "main": "./dist/index.js",
30
37
  "types": "./dist/index.d.ts",
@@ -33,23 +40,24 @@
33
40
  ],
34
41
  "dependencies": {
35
42
  "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
36
- "@eslint-react/eslint-plugin": "2.0.0-beta.32",
37
- "@eslint/js": "^9.33.0",
38
- "@next/eslint-plugin-next": "^15.4.6",
43
+ "@eslint-react/eslint-plugin": "2.0.0-beta.49",
44
+ "@eslint/js": "^9.34.0",
45
+ "@next/eslint-plugin-next": "^15.5.2",
39
46
  "@stylistic/eslint-plugin": "^5.2.3",
40
47
  "@tanstack/eslint-plugin-query": "^5.83.1",
41
48
  "@types/eslint": "9.6.1",
42
- "@typescript-eslint/parser": "^8.39.1",
43
- "@typescript-eslint/utils": "^8.39.1",
49
+ "@typescript-eslint/parser": "^8.41.0",
50
+ "@typescript-eslint/utils": "^8.41.0",
44
51
  "@vitest/eslint-plugin": "^1.3.4",
45
52
  "astro-eslint-parser": "^1.2.2",
53
+ "eslint-config-flat-gitignore": "^2.1.0",
46
54
  "eslint-config-prettier": "^10.1.8",
47
55
  "eslint-import-resolver-typescript": "^4.4.4",
48
56
  "eslint-plugin-astro": "^1.3.1",
49
57
  "eslint-plugin-import-x": "^4.16.1",
50
58
  "eslint-plugin-jest": "^29.0.1",
51
59
  "eslint-plugin-jest-dom": "^5.5.0",
52
- "eslint-plugin-jsdoc": "^54.1.0",
60
+ "eslint-plugin-jsdoc": "^54.1.1",
53
61
  "eslint-plugin-jsx-a11y": "^6.10.2",
54
62
  "eslint-plugin-n": "^17.21.3",
55
63
  "eslint-plugin-perfectionist": "^4.15.0",
@@ -62,8 +70,8 @@
62
70
  "eslint-plugin-testing-library": "^7.6.6",
63
71
  "eslint-plugin-unicorn": "^60.0.0",
64
72
  "globals": "^16.3.0",
65
- "local-pkg": "^1.1.1",
66
- "typescript-eslint": "^8.39.1"
73
+ "local-pkg": "^1.1.2",
74
+ "typescript-eslint": "^8.41.0"
67
75
  },
68
76
  "peerDependencies": {
69
77
  "eslint": "^9.10.0"