@chanyuxi/eslint-waltz 0.1.0 → 0.1.1

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,8 +14,8 @@ The following configuration modules are available:
14
14
  - ✅ Json
15
15
  - ✅ Import
16
16
  - ✅ React
17
- - JSONC is enabled by default and can be disabled with `json: false`.
18
- - TypeScript, imports, React, and gitignore support are opt-in.
17
+ - JSONC and imports are enabled by default and can be disabled with `json: false` and `imports: false`.
18
+ - TypeScript, React, and gitignore support are opt-in.
19
19
 
20
20
  # Usage
21
21
 
@@ -24,10 +24,10 @@ The following configuration modules are available:
24
24
  Install the core package and its core ESLint peers:
25
25
 
26
26
  ```bash
27
- pnpm add -D @chanyuxi/eslint-waltz eslint @eslint/js @stylistic/eslint-plugin eslint-plugin-jsonc jsonc-eslint-parser globals
27
+ pnpm add -D @chanyuxi/eslint-waltz eslint @eslint/js @stylistic/eslint-plugin eslint-plugin-jsonc eslint-plugin-import jsonc-eslint-parser globals
28
28
  ```
29
29
 
30
- Install the peer packages for any optional modules you enable, such as `typescript-eslint`, `eslint-plugin-import`, or the React ESLint plugins.
30
+ Install the peer packages for any optional modules you enable, such as `typescript-eslint` or the React ESLint plugins.
31
31
 
32
32
  #### Configuration
33
33
 
@@ -37,10 +37,9 @@ Create a `eslint.config.ts` file in the project root directory and configure it
37
37
  import waltz from '@chanyuxi/eslint-waltz'
38
38
 
39
39
  export default waltz({
40
- // JSONC is enabled by default
40
+ // JSONC and imports are enabled by default
41
41
  json: true,
42
42
  ts: true,
43
- imports: true,
44
43
  react: true,
45
44
  js: { globals: ['browser'] },
46
45
  })
@@ -57,14 +56,14 @@ export default waltz({}, {
57
56
  })
58
57
  ```
59
58
 
60
- Run `pnpm run check` before committing. `pnpm pack` and `npm publish` build the package automatically through the `prepack` lifecycle.
61
-
62
- #### VS Code synchronization
63
-
64
- After installing the package, run this command from your project root:
65
-
66
- ```bash
67
- npx eslint-waltz sync-vscode
68
- ```
69
-
70
- It creates or updates `.vscode/settings.json` with ESLint fix-on-save settings while preserving other settings and JSONC comments.
59
+ Run `pnpm run check` before committing. `pnpm pack` and `npm publish` build the package automatically through the `prepack` lifecycle.
60
+
61
+ #### VS Code synchronization
62
+
63
+ After installing the package, run this command from your project root:
64
+
65
+ ```bash
66
+ npx eslint-waltz sync-vscode
67
+ ```
68
+
69
+ It creates or updates `.vscode/settings.json` with ESLint fix-on-save settings while preserving other settings and JSONC comments.
package/dist/cli.js CHANGED
@@ -1509,10 +1509,10 @@ async function syncVSCodeSettings(cwd = process.cwd()) {
1509
1509
  }
1510
1510
 
1511
1511
  function printHelp() {
1512
- console.log(`Usage: eslint-waltz <command>
1513
-
1514
- Commands:
1515
- sync-vscode Create or update .vscode/settings.json for ESLint fix-on-save
1512
+ console.log(`Usage: eslint-waltz <command>
1513
+
1514
+ Commands:
1515
+ sync-vscode Create or update .vscode/settings.json for ESLint fix-on-save
1516
1516
  `);
1517
1517
  }
1518
1518
  async function main() {
package/dist/index.d.ts CHANGED
@@ -5031,15 +5031,27 @@ type Arraiable<T> = T | Array<T>;
5031
5031
  type UnresolvedLinterConfig = Arraiable<LinterConfig> | Promise<Arraiable<LinterConfig>>;
5032
5032
  interface SharedOptions {
5033
5033
  /**
5034
- * Each configuration automatically lints all corresponding files, this option is used to override
5034
+ * Restrict this module's configuration to the specified files.
5035
+ *
5036
+ * Each module has its own default file pattern. Providing this option
5037
+ * replaces that pattern; it does not add another pattern to the default.
5035
5038
  */
5036
5039
  files?: Linter.Config['files'];
5037
5040
  /**
5038
- * Rewrite rules
5041
+ * Override rules within this module's file scope.
5042
+ *
5043
+ * Rule names are not restricted to the plugin used by this module, so core
5044
+ * ESLint rules and rules from other configured plugins can also be set here.
5039
5045
  */
5040
5046
  overrides?: LinterConfig['rules'];
5041
5047
  }
5042
5048
  interface JsOptions extends SharedOptions {
5049
+ /**
5050
+ * Add predefined global variables to JavaScript files.
5051
+ *
5052
+ * Values must be names exported by the `globals` package, such as `browser`
5053
+ * or `node`.
5054
+ */
5043
5055
  globals?: (keyof typeof globals)[];
5044
5056
  }
5045
5057
  type TsOptions = SharedOptions;
@@ -5049,46 +5061,86 @@ type ImportsOptions = SharedOptions;
5049
5061
  type ReactOptions = SharedOptions;
5050
5062
  interface WaltzOptions {
5051
5063
  /**
5052
- * Treat the .gitignore file as a global ignore
5064
+ * Treat patterns from `.gitignore` as global ESLint ignores.
5065
+ *
5066
+ * Pass an options object to customize `eslint-config-flat-gitignore`, or
5067
+ * use `true` to enable its strict mode with the default options.
5053
5068
  *
5054
5069
  * @default false
5055
5070
  * @see https://github.com/antfu/eslint-config-flat-gitignore
5056
5071
  */
5057
5072
  gitignore?: boolean | FlatGitignoreOptions;
5058
5073
  /**
5059
- * Set lint configs and default to the recommended configuration of `@eslint/js`
5074
+ * Configure the core ESLint rules for JavaScript files.
5075
+ *
5076
+ * The JavaScript configuration is always included. It targets JavaScript
5077
+ * files, including JSX files, by default. Use `files`, `globals`, and
5078
+ * `overrides` to adjust its scope and rules.
5060
5079
  *
5061
5080
  * @default {}
5062
5081
  * @see https://github.com/eslint/eslint.git
5063
5082
  */
5064
5083
  js?: JsOptions;
5065
5084
  /**
5066
- * Enable TypeScript support and default to the recommended configuration of `typescript-eslint`
5085
+ * Enable TypeScript support for TypeScript files.
5086
+ *
5087
+ * `true` enables the TypeScript parser and the recommended
5088
+ * `typescript-eslint` rules. By default, this applies to `.ts`, `.tsx`,
5089
+ * `.mts`, and `.cts` files, including their JSX variants. Passing an
5090
+ * options object additionally allows the TypeScript file scope and rules to
5091
+ * be customized with `files` and `overrides`.
5092
+ *
5093
+ * When enabled, the default stylistic, import, and React configurations also
5094
+ * include TypeScript files when those configurations are enabled.
5067
5095
  *
5068
5096
  * @default false
5069
5097
  * @see https://typescript-eslint.io/linting/configs/#recommended-config
5070
5098
  */
5071
5099
  ts?: boolean | TsOptions;
5072
5100
  /**
5073
- * Set lint configs
5101
+ * Configure stylistic rules for script files.
5102
+ *
5103
+ * This configuration is always enabled and uses `@stylistic/eslint-plugin`.
5104
+ * It targets JavaScript files by default, and also targets TypeScript files
5105
+ * when `ts` is enabled. The JSX prop-sorting rule is enabled in addition to
5106
+ * the plugin's customized rules.
5074
5107
  *
5075
5108
  * @default {}
5109
+ * @see https://eslint.style/
5076
5110
  */
5077
5111
  stylistic?: StylisticOptions;
5078
5112
  /**
5079
- * Enable JSON/JSONC rules
5113
+ * Enable linting for JSON, JSON5, and JSONC files.
5114
+ *
5115
+ * The default configuration also sorts keys in `package.json` and
5116
+ * TypeScript configuration files. Pass an options object to change the file
5117
+ * scope or override rules.
5080
5118
  *
5081
5119
  * @default true
5120
+ * @see https://github.com/ota-meshi/eslint-plugin-jsonc
5082
5121
  */
5083
5122
  json?: boolean | JsoncOptions;
5084
5123
  /**
5085
- * Enable import rules
5124
+ * Enable rules for validating and ordering imports and exports.
5086
5125
  *
5087
- * @default false
5126
+ * This configuration is enabled by default. JavaScript files are included
5127
+ * by default, and the scope also includes TypeScript files when `ts` is
5128
+ * enabled. Set this option to `false` to disable it, or pass an options
5129
+ * object to change the file scope or override rules.
5130
+ *
5131
+ * @default true
5132
+ * @see https://github.com/import-js/eslint-plugin-import
5088
5133
  */
5089
5134
  imports?: boolean | ImportsOptions;
5090
5135
  /**
5136
+ * Enable React-specific lint rules.
5137
+ *
5138
+ * JavaScript and JSX files are included by default. When `ts` is enabled,
5139
+ * TypeScript and TSX files are included as well. Pass an options object to
5140
+ * change the file scope or override rules.
5141
+ *
5091
5142
  * @default false
5143
+ * @see https://github.com/Rel1cx/eslint-react
5092
5144
  */
5093
5145
  react?: boolean | ReactOptions;
5094
5146
  }
package/dist/index.js CHANGED
@@ -456,6 +456,73 @@ async function stylisticConfig(options = {}, relative) {
456
456
  : [JS_FILES];
457
457
  // Directly use the generated recommendation rules
458
458
  const configs = eslintStylistic.configs.customize();
459
+ // This will enable the following rules.
460
+ // '@stylistic/array-bracket-spacing'
461
+ // '@stylistic/arrow-parens'
462
+ // '@stylistic/arrow-spacing'
463
+ // '@stylistic/block-spacing'
464
+ // '@stylistic/brace-style'
465
+ // '@stylistic/comma-dangle'
466
+ // '@stylistic/comma-spacing'
467
+ // '@stylistic/comma-style'
468
+ // '@stylistic/computed-property-spacing'
469
+ // '@stylistic/dot-location'
470
+ // '@stylistic/eol-last'
471
+ // '@stylistic/generator-star-spacing'
472
+ // '@stylistic/indent'
473
+ // '@stylistic/indent-binary-ops'
474
+ // '@stylistic/key-spacing'
475
+ // '@stylistic/keyword-spacing'
476
+ // '@stylistic/lines-between-class-members'
477
+ // '@stylistic/max-statements-per-line'
478
+ // '@stylistic/member-delimiter-style'
479
+ // '@stylistic/multiline-ternary'
480
+ // '@stylistic/new-parens'
481
+ // '@stylistic/no-extra-parens'
482
+ // '@stylistic/no-floating-decimal'
483
+ // '@stylistic/no-mixed-operators'
484
+ // '@stylistic/no-mixed-spaces-and-tabs'
485
+ // '@stylistic/no-multi-spaces'
486
+ // '@stylistic/no-multiple-empty-lines'
487
+ // '@stylistic/no-tabs'
488
+ // '@stylistic/no-trailing-spaces'
489
+ // '@stylistic/no-whitespace-before-property'
490
+ // '@stylistic/object-curly-spacing'
491
+ // '@stylistic/operator-linebreak'
492
+ // '@stylistic/padded-blocks'
493
+ // '@stylistic/quote-props'
494
+ // '@stylistic/quotes'
495
+ // '@stylistic/rest-spread-spacing'
496
+ // '@stylistic/semi'
497
+ // '@stylistic/semi-spacing'
498
+ // '@stylistic/space-before-blocks'
499
+ // '@stylistic/space-before-function-paren'
500
+ // '@stylistic/space-in-parens'
501
+ // '@stylistic/space-infix-ops'
502
+ // '@stylistic/space-unary-ops'
503
+ // '@stylistic/spaced-comment'
504
+ // '@stylistic/template-curly-spacing'
505
+ // '@stylistic/template-tag-spacing'
506
+ // '@stylistic/type-annotation-spacing'
507
+ // '@stylistic/type-generic-spacing'
508
+ // '@stylistic/type-named-tuple-spacing'
509
+ // '@stylistic/wrap-iife'
510
+ // '@stylistic/yield-star-spacing'
511
+ // '@stylistic/jsx-closing-bracket-location'
512
+ // '@stylistic/jsx-closing-tag-location'
513
+ // '@stylistic/jsx-curly-brace-presence'
514
+ // '@stylistic/jsx-curly-newline'
515
+ // '@stylistic/jsx-curly-spacing'
516
+ // '@stylistic/jsx-equals-spacing'
517
+ // '@stylistic/jsx-first-prop-new-line'
518
+ // '@stylistic/jsx-function-call-newline'
519
+ // '@stylistic/jsx-indent-props'
520
+ // '@stylistic/jsx-max-props-per-line'
521
+ // '@stylistic/jsx-one-expression-per-line'
522
+ // '@stylistic/jsx-quotes'
523
+ // '@stylistic/jsx-sort-props'
524
+ // '@stylistic/jsx-tag-spacing'
525
+ // '@stylistic/jsx-wrap-multilines'
459
526
  return [
460
527
  {
461
528
  name: 'waltz/stylistic/setup',
@@ -469,6 +536,7 @@ async function stylisticConfig(options = {}, relative) {
469
536
  files: options.files ?? scriptFiles,
470
537
  rules: {
471
538
  ...configs.rules,
539
+ '@stylistic/jsx-sort-props': 'error',
472
540
  ...options.overrides,
473
541
  },
474
542
  },
@@ -655,8 +723,10 @@ async function waltz(options = {}, ...orders) {
655
723
  if (isEnableTypeScript) {
656
724
  configs.push(tsConfig(options.ts));
657
725
  }
658
- if (options.imports) {
659
- configs.push(importsConfig(isEnableTypeScript, options.imports === true ? {} : options.imports));
726
+ if (options.imports !== false) {
727
+ configs.push(importsConfig(isEnableTypeScript, options.imports === true || options.imports === undefined
728
+ ? {}
729
+ : options.imports));
660
730
  }
661
731
  if (isEnableReact) {
662
732
  configs.push(reactConfig(options.react, {
package/package.json CHANGED
@@ -1,139 +1,136 @@
1
- {
2
- "name": "@chanyuxi/eslint-waltz",
3
- "type": "module",
4
- "version": "0.1.0",
5
- "packageManager": "pnpm@10.4.1",
6
- "description": "A composable ESLint flat config for JavaScript, TypeScript, JSONC, imports, and React.",
7
- "author": "chanyuxi <2438149743@qq.com> (https://github.com/chanyuxi)",
8
- "license": "ISC",
9
- "homepage": "https://github.com/chanyuxi/eslint-waltz",
10
- "repository": {
11
- "type": "git",
12
- "url": "https://github.com/chanyuxi/eslint-waltz.git"
13
- },
14
- "bugs": {
15
- "url": "https://github.com/chanyuxi/eslint-waltz/issues"
16
- },
17
- "publishConfig": {
18
- "access": "public"
19
- },
20
- "keywords": [
21
- "chanyuxi",
22
- "eslint",
23
- "config",
24
- "integration"
25
- ],
26
- "exports": {
27
- ".": {
28
- "types": "./dist/index.d.ts",
29
- "import": "./dist/index.js",
30
- "default": "./dist/index.js"
31
- }
32
- },
33
- "bin": {
34
- "eslint-waltz": "./dist/cli.js"
35
- },
36
- "files": [
37
- "dist"
38
- ],
39
- "engines": {
40
- "node": ">=18.18.0"
41
- },
42
- "scripts": {
43
- "build": "rimraf ./dist && pnpm gen && rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript",
44
- "gen": "tsx scripts/typegen.ts",
45
- "lint": "eslint .",
46
- "lint:fix": "eslint . --fix",
47
- "typeCheck": "pnpm gen && tsc --noEmit",
48
- "test": "node --import tsx test/index.ts",
49
- "check": "pnpm run typeCheck && pnpm run lint && pnpm run test",
50
- "changeset": "changeset",
51
- "version": "changeset version && pnpm install --lockfile-only",
52
- "release": "pnpm build && changeset publish",
53
- "prepack": "pnpm build",
54
- "prepare": "husky"
55
- },
56
- "peerDependencies": {
57
- "@eslint/js": "^9.32.0",
58
- "@stylistic/eslint-plugin": "^5.2.2",
59
- "eslint": "^9.32.0",
60
- "eslint-config-flat-gitignore": "^2.1.0",
61
- "eslint-plugin-import": "^2.32.0",
62
- "eslint-plugin-jsonc": "^2.20.1",
63
- "eslint-plugin-react-debug": "^1.52.3",
64
- "eslint-plugin-react-dom": "^1.52.3",
65
- "eslint-plugin-react-hooks-extra": "^1.52.3",
66
- "eslint-plugin-react-naming-convention": "^1.52.3",
67
- "eslint-plugin-react-web-api": "^1.52.3",
68
- "eslint-plugin-react-x": "^1.52.3",
69
- "globals": "^16.3.0",
70
- "jsonc-eslint-parser": "^2.4.0",
71
- "typescript-eslint": "^8.38.0"
72
- },
73
- "peerDependenciesMeta": {
74
- "eslint-config-flat-gitignore": {
75
- "optional": true
76
- },
77
- "eslint-plugin-import": {
78
- "optional": true
79
- },
80
- "eslint-plugin-react-debug": {
81
- "optional": true
82
- },
83
- "eslint-plugin-react-dom": {
84
- "optional": true
85
- },
86
- "eslint-plugin-react-hooks-extra": {
87
- "optional": true
88
- },
89
- "eslint-plugin-react-naming-convention": {
90
- "optional": true
91
- },
92
- "eslint-plugin-react-web-api": {
93
- "optional": true
94
- },
95
- "eslint-plugin-react-x": {
96
- "optional": true
97
- },
98
- "typescript-eslint": {
99
- "optional": true
100
- }
101
- },
102
- "dependencies": {
103
- "jsonc-parser": "^3.3.1"
104
- },
105
- "devDependencies": {
106
- "@changesets/cli": "^3.0.2",
107
- "@commitlint/cli": "^19.8.1",
108
- "@commitlint/config-conventional": "^19.8.1",
109
- "@commitlint/types": "^19.8.1",
110
- "@eslint/js": "^9.32.0",
111
- "@rollup/plugin-commonjs": "^28.0.6",
112
- "@rollup/plugin-node-resolve": "^16.0.1",
113
- "@rollup/plugin-typescript": "^12.1.4",
114
- "@stylistic/eslint-plugin": "^5.2.2",
115
- "@types/node": "^24.1.0",
116
- "eslint": "^9.32.0",
117
- "eslint-config-flat-gitignore": "^2.1.0",
118
- "eslint-plugin-import": "^2.32.0",
119
- "eslint-plugin-jsonc": "^2.20.1",
120
- "eslint-plugin-react-debug": "^1.52.3",
121
- "eslint-plugin-react-dom": "^1.52.3",
122
- "eslint-plugin-react-hooks-extra": "^1.52.3",
123
- "eslint-plugin-react-naming-convention": "^1.52.3",
124
- "eslint-plugin-react-web-api": "^1.52.3",
125
- "eslint-plugin-react-x": "^1.52.3",
126
- "eslint-typegen": "^2.3.0",
127
- "globals": "^16.3.0",
128
- "husky": "^9.1.7",
129
- "jiti": "^2.5.1",
130
- "jsonc-eslint-parser": "^2.4.0",
131
- "rimraf": "^6.0.1",
132
- "rollup": "^4.46.2",
133
- "rollup-plugin-dts": "^6.2.1",
134
- "tslib": "^2.8.1",
135
- "tsx": "^4.20.3",
136
- "typescript": "^5.8.3",
137
- "typescript-eslint": "^8.38.0"
138
- }
139
- }
1
+ {
2
+ "name": "@chanyuxi/eslint-waltz",
3
+ "type": "module",
4
+ "version": "0.1.1",
5
+ "packageManager": "pnpm@10.4.1",
6
+ "description": "A composable ESLint flat config for JavaScript, TypeScript, JSONC, imports, and React.",
7
+ "author": "chanyuxi <2438149743@qq.com> (https://github.com/chanyuxi)",
8
+ "license": "ISC",
9
+ "homepage": "https://github.com/chanyuxi/eslint-waltz",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/chanyuxi/eslint-waltz.git"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/chanyuxi/eslint-waltz/issues"
16
+ },
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "keywords": [
21
+ "chanyuxi",
22
+ "eslint",
23
+ "config",
24
+ "integration"
25
+ ],
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/index.d.ts",
29
+ "import": "./dist/index.js",
30
+ "default": "./dist/index.js"
31
+ }
32
+ },
33
+ "bin": {
34
+ "eslint-waltz": "./dist/cli.js"
35
+ },
36
+ "files": [
37
+ "dist"
38
+ ],
39
+ "engines": {
40
+ "node": ">=18.18.0"
41
+ },
42
+ "scripts": {
43
+ "build": "rimraf ./dist && pnpm gen && rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript",
44
+ "gen": "tsx scripts/typegen.ts",
45
+ "lint": "eslint .",
46
+ "lint:fix": "eslint . --fix",
47
+ "typeCheck": "pnpm gen && tsc --noEmit",
48
+ "test": "node --import tsx test/index.ts",
49
+ "check": "pnpm run typeCheck && pnpm run lint && pnpm run test",
50
+ "changeset": "changeset",
51
+ "version": "changeset version && pnpm install --lockfile-only",
52
+ "release": "pnpm build && changeset publish",
53
+ "prepack": "pnpm build",
54
+ "prepare": "husky"
55
+ },
56
+ "peerDependencies": {
57
+ "@eslint/js": "^9.32.0",
58
+ "@stylistic/eslint-plugin": "^5.2.2",
59
+ "eslint": "^9.32.0",
60
+ "eslint-config-flat-gitignore": "^2.1.0",
61
+ "eslint-plugin-import": "^2.32.0",
62
+ "eslint-plugin-jsonc": "^2.20.1",
63
+ "eslint-plugin-react-debug": "^1.52.3",
64
+ "eslint-plugin-react-dom": "^1.52.3",
65
+ "eslint-plugin-react-hooks-extra": "^1.52.3",
66
+ "eslint-plugin-react-naming-convention": "^1.52.3",
67
+ "eslint-plugin-react-web-api": "^1.52.3",
68
+ "eslint-plugin-react-x": "^1.52.3",
69
+ "globals": "^16.3.0",
70
+ "jsonc-eslint-parser": "^2.4.0",
71
+ "typescript-eslint": "^8.38.0"
72
+ },
73
+ "peerDependenciesMeta": {
74
+ "eslint-config-flat-gitignore": {
75
+ "optional": true
76
+ },
77
+ "eslint-plugin-react-debug": {
78
+ "optional": true
79
+ },
80
+ "eslint-plugin-react-dom": {
81
+ "optional": true
82
+ },
83
+ "eslint-plugin-react-hooks-extra": {
84
+ "optional": true
85
+ },
86
+ "eslint-plugin-react-naming-convention": {
87
+ "optional": true
88
+ },
89
+ "eslint-plugin-react-web-api": {
90
+ "optional": true
91
+ },
92
+ "eslint-plugin-react-x": {
93
+ "optional": true
94
+ },
95
+ "typescript-eslint": {
96
+ "optional": true
97
+ }
98
+ },
99
+ "dependencies": {
100
+ "jsonc-parser": "^3.3.1"
101
+ },
102
+ "devDependencies": {
103
+ "@changesets/cli": "^3.0.2",
104
+ "@commitlint/cli": "^19.8.1",
105
+ "@commitlint/config-conventional": "^19.8.1",
106
+ "@commitlint/types": "^19.8.1",
107
+ "@eslint/js": "^9.32.0",
108
+ "@rollup/plugin-commonjs": "^28.0.6",
109
+ "@rollup/plugin-node-resolve": "^16.0.1",
110
+ "@rollup/plugin-typescript": "^12.1.4",
111
+ "@stylistic/eslint-plugin": "^5.2.2",
112
+ "@types/node": "^24.1.0",
113
+ "eslint": "^9.32.0",
114
+ "eslint-config-flat-gitignore": "^2.1.0",
115
+ "eslint-plugin-import": "^2.32.0",
116
+ "eslint-plugin-jsonc": "^2.20.1",
117
+ "eslint-plugin-react-debug": "^1.52.3",
118
+ "eslint-plugin-react-dom": "^1.52.3",
119
+ "eslint-plugin-react-hooks-extra": "^1.52.3",
120
+ "eslint-plugin-react-naming-convention": "^1.52.3",
121
+ "eslint-plugin-react-web-api": "^1.52.3",
122
+ "eslint-plugin-react-x": "^1.52.3",
123
+ "eslint-typegen": "^2.3.0",
124
+ "globals": "^16.3.0",
125
+ "husky": "^9.1.7",
126
+ "jiti": "^2.5.1",
127
+ "jsonc-eslint-parser": "^2.4.0",
128
+ "rimraf": "^6.0.1",
129
+ "rollup": "^4.46.2",
130
+ "rollup-plugin-dts": "^6.2.1",
131
+ "tslib": "^2.8.1",
132
+ "tsx": "^4.20.3",
133
+ "typescript": "^5.8.3",
134
+ "typescript-eslint": "^8.38.0"
135
+ }
136
+ }