@component-hook/eslint-plugin 1.0.1 → 1.0.3

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
@@ -1,6 +1,6 @@
1
1
  # @component-hook/eslint-plugin
2
2
 
3
- A opinionated ESLint config preset for JavaScript, TypeScript, Vue, and Prettier.
3
+ A opinionated ESLint config preset for `JavaScript`, `TypeScript`, `Vue3`, `React` and `Prettier`.
4
4
 
5
5
  <p>
6
6
  <a href="https://npm-stat.com/charts.html?package=@component-hook/eslint-plugin">
@@ -13,21 +13,26 @@ A opinionated ESLint config preset for JavaScript, TypeScript, Vue, and Prettier
13
13
 
14
14
  ## Features
15
15
 
16
- - Support `TypeScript`, `Vue` and `React` out-of-box.
17
- - Built-in `Markdown`, `Prettier`, `Sonarjs`, `Security`, `Playwright` and `Testing-library` configs can be referenced for respective needs.
18
- - Format with Prettier.
16
+ - Support `TypeScript`, `Vue3` and `React` out-of-box.
17
+ - Format with `Prettier`.
19
18
  - Ignores common files like `dist`, `node_modules`, `coverage`, and files in `.gitignore`.
19
+ - Various built-in configurations can be referenced according to respective needs.
20
20
  - Reasonable defaults, best practices, and just a few lines of configuration.
21
21
 
22
+ ## Documentation
23
+
24
+ For detailed documentation and usage examples, please visit: [Official Docs](https://tzuyi0817.github.io/component-hook/#/eslint/plugin).
25
+
22
26
  ## Installation
23
27
 
24
28
  ```bash
29
+ # Using npm
25
30
  $ npm install @component-hook/eslint-plugin --save-dev
26
31
 
27
- # or use yarn
32
+ # Using yarn
28
33
  $ yarn add @component-hook/eslint-plugin --dev
29
34
 
30
- # or use pnpm
35
+ # Using pnpm
31
36
  $ pnpm install @component-hook/eslint-plugin --save-dev
32
37
  ```
33
38
 
@@ -81,21 +86,21 @@ export default vuePreset;
81
86
 
82
87
  ## Configs
83
88
 
84
- | Name | Type | Reference |
85
- | ----------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
86
- | basic | `Linter.Config[]` | `eslint-recommended`, `typescript-eslint`, `eslint-plugin-eslint-comments`, `eslint-plugin-import`, `eslint-plugin-unicorn`, `eslint-plugin-regexp` |
87
- | vue | `Linter.Config[]` | `eslint-plugin-vue`, `typescript-eslint` |
88
- | react | `Linter.Config[]` | `eslint-plugin-react/recommended`, `eslint-plugin-react-hooks/recommended`, `eslint-plugin-jsx-a11y/recommended` |
89
- | markdown | `Linter.Config[]` | `eslint-plugin-markdown/recommended` |
90
- | prettier | `Linter.Config` | `eslint-plugin-prettier/recommended`, `eslint-config-prettier` |
91
- | sonarjs | `Linter.Config[]` | `eslint-plugin-sonarjs/recommended` |
92
- | security | `Linter.Config` | `eslint-plugin-security/recommended` |
93
- | playwright | `Linter.Config` | `eslint-plugin-playwright/flat/recommended` |
94
- | testing-library/dom | `Linter.Config` | `eslint-plugin-testing-library/dom` |
95
- | testing-library/vue | `Linter.Config` | `eslint-plugin-testing-library/vue` |
96
- | testing-library/react | `Linter.Config` | `eslint-plugin-testing-library/react` |
97
- | testing-library/angular | `Linter.Config` | `eslint-plugin-testing-library/angular` |
98
- | testing-library/marko | `Linter.Config` | `eslint-plugin-testing-library/marko` |
89
+ | Name | Type | Reference |
90
+ | ----------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
91
+ | basic | `Linter.Config[]` | `eslint-recommended`, `typescript-eslint`, `eslint-plugin-eslint-comments`, `eslint-plugin-import`, `eslint-plugin-unicorn`, `eslint-plugin-regexp`, `eslint-plugin-de-morgan` |
92
+ | vue | `Linter.Config[]` | `eslint-plugin-vue`, `typescript-eslint` |
93
+ | react | `Linter.Config[]` | `eslint-plugin-react/recommended`, `eslint-plugin-react-hooks/recommended`, `eslint-plugin-jsx-a11y/recommended` |
94
+ | markdown | `Linter.Config[]` | `eslint-plugin-markdown/recommended` |
95
+ | prettier | `Linter.Config` | `eslint-plugin-prettier/recommended` |
96
+ | sonarjs | `Linter.Config[]` | `eslint-plugin-sonarjs/recommended` |
97
+ | security | `Linter.Config` | `eslint-plugin-security/recommended` |
98
+ | playwright | `Linter.Config` | `eslint-plugin-playwright/flat/recommended` |
99
+ | testing-library/dom | `Linter.Config` | `eslint-plugin-testing-library/dom` |
100
+ | testing-library/vue | `Linter.Config` | `eslint-plugin-testing-library/vue` |
101
+ | testing-library/react | `Linter.Config` | `eslint-plugin-testing-library/react` |
102
+ | testing-library/angular | `Linter.Config` | `eslint-plugin-testing-library/angular` |
103
+ | testing-library/marko | `Linter.Config` | `eslint-plugin-testing-library/marko` |
99
104
 
100
105
  ## Reference eslint plugin
101
106
 
@@ -105,8 +110,8 @@ export default vuePreset;
105
110
  - [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import)
106
111
  - [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn)
107
112
  - [eslint-plugin-regexp/flat/recommended](https://github.com/ota-meshi/eslint-plugin-regexp/blob/master/lib/configs/flat/recommended.ts)
113
+ - [eslint-plugin-de-morgan](https://github.com/azat-io/eslint-plugin-de-morgan/blob/main/index.ts)
108
114
  - [eslint-plugin-prettier/recommended](https://github.com/prettier/eslint-plugin-prettier/blob/master/recommended.js)
109
- - [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier/blob/main/index.js)
110
115
  - [eslint-plugin-react/recommended](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/configs/recommended.js)
111
116
  - [eslint-plugin-react-hooks/recommended](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/src/index.js)
112
117
  - [eslint-plugin-jsx-a11y/recommended](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/src/index.js)
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import * as eslint_plugin_security from 'eslint-plugin-security';
1
2
  import * as eslint from 'eslint';
2
3
 
3
4
  declare const _default: {
@@ -22,8 +23,8 @@ declare const _default: {
22
23
  plugins: {
23
24
  unicorn: eslint.ESLint.Plugin & {
24
25
  configs: {
25
- recommended: eslint.Linter.Config;
26
- all: eslint.Linter.Config;
26
+ recommended: eslint.Linter.FlatConfig;
27
+ all: eslint.Linter.FlatConfig;
27
28
  "flat/all": eslint.Linter.FlatConfig;
28
29
  "flat/recommended": eslint.Linter.FlatConfig;
29
30
  };
@@ -36,6 +37,7 @@ declare const _default: {
36
37
  'unicorn/consistent-function-scoping': (string | {
37
38
  checkArrowFunctions: boolean;
38
39
  })[];
40
+ 'unicorn/consistent-date-clone': string;
39
41
  'unicorn/custom-error-definition': string;
40
42
  'unicorn/error-message': string;
41
43
  'unicorn/escape-case': string;
@@ -53,7 +55,7 @@ declare const _default: {
53
55
  'unicorn/no-console-spaces': string;
54
56
  'unicorn/no-for-loop': string;
55
57
  'unicorn/no-hex-escape': string;
56
- 'unicorn/no-instanceof-array': string;
58
+ 'unicorn/no-instanceof-builtins': string;
57
59
  'unicorn/no-invalid-remove-event-listener': string;
58
60
  'unicorn/no-lonely-if': string;
59
61
  'unicorn/no-negation-in-equality-check': string;
@@ -1251,7 +1253,15 @@ declare const _default: {
1251
1253
  markdown: eslint.Linter.Config<eslint.Linter.RulesRecord>[];
1252
1254
  prettier: eslint.Linter.Config<eslint.Linter.RulesRecord>;
1253
1255
  sonarjs: eslint.Linter.Config<eslint.Linter.RulesRecord>[];
1254
- security: eslint.Linter.Config<eslint.Linter.RulesRecord>;
1256
+ security: {
1257
+ name: string;
1258
+ plugins: {
1259
+ security: typeof eslint_plugin_security;
1260
+ };
1261
+ rules: {
1262
+ 'security/detect-object-injection': string;
1263
+ };
1264
+ };
1255
1265
  playwright: {
1256
1266
  name: string;
1257
1267
  files?: Array<string | string[]>;
@@ -1292,8 +1302,8 @@ declare const reactPreset: ({
1292
1302
  plugins: {
1293
1303
  unicorn: eslint.ESLint.Plugin & {
1294
1304
  configs: {
1295
- recommended: eslint.Linter.Config;
1296
- all: eslint.Linter.Config;
1305
+ recommended: eslint.Linter.FlatConfig;
1306
+ all: eslint.Linter.FlatConfig;
1297
1307
  "flat/all": eslint.Linter.FlatConfig;
1298
1308
  "flat/recommended": eslint.Linter.FlatConfig;
1299
1309
  };
@@ -1306,6 +1316,7 @@ declare const reactPreset: ({
1306
1316
  'unicorn/consistent-function-scoping': (string | {
1307
1317
  checkArrowFunctions: boolean;
1308
1318
  })[];
1319
+ 'unicorn/consistent-date-clone': string;
1309
1320
  'unicorn/custom-error-definition': string;
1310
1321
  'unicorn/error-message': string;
1311
1322
  'unicorn/escape-case': string;
@@ -1323,7 +1334,7 @@ declare const reactPreset: ({
1323
1334
  'unicorn/no-console-spaces': string;
1324
1335
  'unicorn/no-for-loop': string;
1325
1336
  'unicorn/no-hex-escape': string;
1326
- 'unicorn/no-instanceof-array': string;
1337
+ 'unicorn/no-instanceof-builtins': string;
1327
1338
  'unicorn/no-invalid-remove-event-listener': string;
1328
1339
  'unicorn/no-lonely-if': string;
1329
1340
  'unicorn/no-negation-in-equality-check': string;
@@ -2515,6 +2526,14 @@ declare const reactPreset: ({
2515
2526
  setImmediate: false;
2516
2527
  };
2517
2528
  };
2529
+ } | {
2530
+ name: string;
2531
+ plugins: {
2532
+ security: typeof eslint_plugin_security;
2533
+ };
2534
+ rules: {
2535
+ 'security/detect-object-injection': string;
2536
+ };
2518
2537
  })[];
2519
2538
  declare const vuePreset: ({
2520
2539
  name: string;
@@ -2536,8 +2555,8 @@ declare const vuePreset: ({
2536
2555
  plugins: {
2537
2556
  unicorn: eslint.ESLint.Plugin & {
2538
2557
  configs: {
2539
- recommended: eslint.Linter.Config;
2540
- all: eslint.Linter.Config;
2558
+ recommended: eslint.Linter.FlatConfig;
2559
+ all: eslint.Linter.FlatConfig;
2541
2560
  "flat/all": eslint.Linter.FlatConfig;
2542
2561
  "flat/recommended": eslint.Linter.FlatConfig;
2543
2562
  };
@@ -2550,6 +2569,7 @@ declare const vuePreset: ({
2550
2569
  'unicorn/consistent-function-scoping': (string | {
2551
2570
  checkArrowFunctions: boolean;
2552
2571
  })[];
2572
+ 'unicorn/consistent-date-clone': string;
2553
2573
  'unicorn/custom-error-definition': string;
2554
2574
  'unicorn/error-message': string;
2555
2575
  'unicorn/escape-case': string;
@@ -2567,7 +2587,7 @@ declare const vuePreset: ({
2567
2587
  'unicorn/no-console-spaces': string;
2568
2588
  'unicorn/no-for-loop': string;
2569
2589
  'unicorn/no-hex-escape': string;
2570
- 'unicorn/no-instanceof-array': string;
2590
+ 'unicorn/no-instanceof-builtins': string;
2571
2591
  'unicorn/no-invalid-remove-event-listener': string;
2572
2592
  'unicorn/no-lonely-if': string;
2573
2593
  'unicorn/no-negation-in-equality-check': string;
@@ -3759,6 +3779,14 @@ declare const vuePreset: ({
3759
3779
  setImmediate: false;
3760
3780
  };
3761
3781
  };
3782
+ } | {
3783
+ name: string;
3784
+ plugins: {
3785
+ security: typeof eslint_plugin_security;
3786
+ };
3787
+ rules: {
3788
+ 'security/detect-object-injection': string;
3789
+ };
3762
3790
  })[];
3763
3791
  declare const vueSkyline: ({
3764
3792
  name: string;
@@ -3780,8 +3808,8 @@ declare const vueSkyline: ({
3780
3808
  plugins: {
3781
3809
  unicorn: eslint.ESLint.Plugin & {
3782
3810
  configs: {
3783
- recommended: eslint.Linter.Config;
3784
- all: eslint.Linter.Config;
3811
+ recommended: eslint.Linter.FlatConfig;
3812
+ all: eslint.Linter.FlatConfig;
3785
3813
  "flat/all": eslint.Linter.FlatConfig;
3786
3814
  "flat/recommended": eslint.Linter.FlatConfig;
3787
3815
  };
@@ -3794,6 +3822,7 @@ declare const vueSkyline: ({
3794
3822
  'unicorn/consistent-function-scoping': (string | {
3795
3823
  checkArrowFunctions: boolean;
3796
3824
  })[];
3825
+ 'unicorn/consistent-date-clone': string;
3797
3826
  'unicorn/custom-error-definition': string;
3798
3827
  'unicorn/error-message': string;
3799
3828
  'unicorn/escape-case': string;
@@ -3811,7 +3840,7 @@ declare const vueSkyline: ({
3811
3840
  'unicorn/no-console-spaces': string;
3812
3841
  'unicorn/no-for-loop': string;
3813
3842
  'unicorn/no-hex-escape': string;
3814
- 'unicorn/no-instanceof-array': string;
3843
+ 'unicorn/no-instanceof-builtins': string;
3815
3844
  'unicorn/no-invalid-remove-event-listener': string;
3816
3845
  'unicorn/no-lonely-if': string;
3817
3846
  'unicorn/no-negation-in-equality-check': string;
@@ -5003,6 +5032,14 @@ declare const vueSkyline: ({
5003
5032
  setImmediate: false;
5004
5033
  };
5005
5034
  };
5035
+ } | {
5036
+ name: string;
5037
+ plugins: {
5038
+ security: typeof eslint_plugin_security;
5039
+ };
5040
+ rules: {
5041
+ 'security/detect-object-injection': string;
5042
+ };
5006
5043
  } | {
5007
5044
  files: string[];
5008
5045
  rules: {
package/dist/index.js CHANGED
@@ -1,371 +1,6 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __commonJS = (cb, mod) => function __require() {
8
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
19
- // If the importer is in node compatibility mode or this is not an ESM
20
- // file that has been converted to a CommonJS file using a Babel-
21
- // compatible transform (i.e. "__esModule" has not been set), then set
22
- // "default" to the CommonJS "module.exports" for node compatibility.
23
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
24
- mod
25
- ));
26
-
27
- // ../../node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/package.json
28
- var require_package = __commonJS({
29
- "../../node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/package.json"(exports, module) {
30
- module.exports = {
31
- name: "@eslint/js",
32
- version: "9.18.0",
33
- description: "ESLint JavaScript language implementation",
34
- main: "./src/index.js",
35
- types: "./types/index.d.ts",
36
- scripts: {
37
- "test:types": "tsc -p tests/types/tsconfig.json"
38
- },
39
- files: [
40
- "LICENSE",
41
- "README.md",
42
- "src",
43
- "types"
44
- ],
45
- publishConfig: {
46
- access: "public"
47
- },
48
- repository: {
49
- type: "git",
50
- url: "https://github.com/eslint/eslint.git",
51
- directory: "packages/js"
52
- },
53
- homepage: "https://eslint.org",
54
- bugs: "https://github.com/eslint/eslint/issues/",
55
- keywords: [
56
- "javascript",
57
- "eslint-plugin",
58
- "eslint"
59
- ],
60
- license: "MIT",
61
- engines: {
62
- node: "^18.18.0 || ^20.9.0 || >=21.1.0"
63
- }
64
- };
65
- }
66
- });
67
-
68
- // ../../node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/configs/eslint-all.js
69
- var require_eslint_all = __commonJS({
70
- "../../node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/configs/eslint-all.js"(exports, module) {
71
- "use strict";
72
- module.exports = Object.freeze({
73
- "rules": {
74
- "accessor-pairs": "error",
75
- "array-callback-return": "error",
76
- "arrow-body-style": "error",
77
- "block-scoped-var": "error",
78
- "camelcase": "error",
79
- "capitalized-comments": "error",
80
- "class-methods-use-this": "error",
81
- "complexity": "error",
82
- "consistent-return": "error",
83
- "consistent-this": "error",
84
- "constructor-super": "error",
85
- "curly": "error",
86
- "default-case": "error",
87
- "default-case-last": "error",
88
- "default-param-last": "error",
89
- "dot-notation": "error",
90
- "eqeqeq": "error",
91
- "for-direction": "error",
92
- "func-name-matching": "error",
93
- "func-names": "error",
94
- "func-style": "error",
95
- "getter-return": "error",
96
- "grouped-accessor-pairs": "error",
97
- "guard-for-in": "error",
98
- "id-denylist": "error",
99
- "id-length": "error",
100
- "id-match": "error",
101
- "init-declarations": "error",
102
- "logical-assignment-operators": "error",
103
- "max-classes-per-file": "error",
104
- "max-depth": "error",
105
- "max-lines": "error",
106
- "max-lines-per-function": "error",
107
- "max-nested-callbacks": "error",
108
- "max-params": "error",
109
- "max-statements": "error",
110
- "new-cap": "error",
111
- "no-alert": "error",
112
- "no-array-constructor": "error",
113
- "no-async-promise-executor": "error",
114
- "no-await-in-loop": "error",
115
- "no-bitwise": "error",
116
- "no-caller": "error",
117
- "no-case-declarations": "error",
118
- "no-class-assign": "error",
119
- "no-compare-neg-zero": "error",
120
- "no-cond-assign": "error",
121
- "no-console": "error",
122
- "no-const-assign": "error",
123
- "no-constant-binary-expression": "error",
124
- "no-constant-condition": "error",
125
- "no-constructor-return": "error",
126
- "no-continue": "error",
127
- "no-control-regex": "error",
128
- "no-debugger": "error",
129
- "no-delete-var": "error",
130
- "no-div-regex": "error",
131
- "no-dupe-args": "error",
132
- "no-dupe-class-members": "error",
133
- "no-dupe-else-if": "error",
134
- "no-dupe-keys": "error",
135
- "no-duplicate-case": "error",
136
- "no-duplicate-imports": "error",
137
- "no-else-return": "error",
138
- "no-empty": "error",
139
- "no-empty-character-class": "error",
140
- "no-empty-function": "error",
141
- "no-empty-pattern": "error",
142
- "no-empty-static-block": "error",
143
- "no-eq-null": "error",
144
- "no-eval": "error",
145
- "no-ex-assign": "error",
146
- "no-extend-native": "error",
147
- "no-extra-bind": "error",
148
- "no-extra-boolean-cast": "error",
149
- "no-extra-label": "error",
150
- "no-fallthrough": "error",
151
- "no-func-assign": "error",
152
- "no-global-assign": "error",
153
- "no-implicit-coercion": "error",
154
- "no-implicit-globals": "error",
155
- "no-implied-eval": "error",
156
- "no-import-assign": "error",
157
- "no-inline-comments": "error",
158
- "no-inner-declarations": "error",
159
- "no-invalid-regexp": "error",
160
- "no-invalid-this": "error",
161
- "no-irregular-whitespace": "error",
162
- "no-iterator": "error",
163
- "no-label-var": "error",
164
- "no-labels": "error",
165
- "no-lone-blocks": "error",
166
- "no-lonely-if": "error",
167
- "no-loop-func": "error",
168
- "no-loss-of-precision": "error",
169
- "no-magic-numbers": "error",
170
- "no-misleading-character-class": "error",
171
- "no-multi-assign": "error",
172
- "no-multi-str": "error",
173
- "no-negated-condition": "error",
174
- "no-nested-ternary": "error",
175
- "no-new": "error",
176
- "no-new-func": "error",
177
- "no-new-native-nonconstructor": "error",
178
- "no-new-wrappers": "error",
179
- "no-nonoctal-decimal-escape": "error",
180
- "no-obj-calls": "error",
181
- "no-object-constructor": "error",
182
- "no-octal": "error",
183
- "no-octal-escape": "error",
184
- "no-param-reassign": "error",
185
- "no-plusplus": "error",
186
- "no-promise-executor-return": "error",
187
- "no-proto": "error",
188
- "no-prototype-builtins": "error",
189
- "no-redeclare": "error",
190
- "no-regex-spaces": "error",
191
- "no-restricted-exports": "error",
192
- "no-restricted-globals": "error",
193
- "no-restricted-imports": "error",
194
- "no-restricted-properties": "error",
195
- "no-restricted-syntax": "error",
196
- "no-return-assign": "error",
197
- "no-script-url": "error",
198
- "no-self-assign": "error",
199
- "no-self-compare": "error",
200
- "no-sequences": "error",
201
- "no-setter-return": "error",
202
- "no-shadow": "error",
203
- "no-shadow-restricted-names": "error",
204
- "no-sparse-arrays": "error",
205
- "no-template-curly-in-string": "error",
206
- "no-ternary": "error",
207
- "no-this-before-super": "error",
208
- "no-throw-literal": "error",
209
- "no-undef": "error",
210
- "no-undef-init": "error",
211
- "no-undefined": "error",
212
- "no-underscore-dangle": "error",
213
- "no-unexpected-multiline": "error",
214
- "no-unmodified-loop-condition": "error",
215
- "no-unneeded-ternary": "error",
216
- "no-unreachable": "error",
217
- "no-unreachable-loop": "error",
218
- "no-unsafe-finally": "error",
219
- "no-unsafe-negation": "error",
220
- "no-unsafe-optional-chaining": "error",
221
- "no-unused-expressions": "error",
222
- "no-unused-labels": "error",
223
- "no-unused-private-class-members": "error",
224
- "no-unused-vars": "error",
225
- "no-use-before-define": "error",
226
- "no-useless-assignment": "error",
227
- "no-useless-backreference": "error",
228
- "no-useless-call": "error",
229
- "no-useless-catch": "error",
230
- "no-useless-computed-key": "error",
231
- "no-useless-concat": "error",
232
- "no-useless-constructor": "error",
233
- "no-useless-escape": "error",
234
- "no-useless-rename": "error",
235
- "no-useless-return": "error",
236
- "no-var": "error",
237
- "no-void": "error",
238
- "no-warning-comments": "error",
239
- "no-with": "error",
240
- "object-shorthand": "error",
241
- "one-var": "error",
242
- "operator-assignment": "error",
243
- "prefer-arrow-callback": "error",
244
- "prefer-const": "error",
245
- "prefer-destructuring": "error",
246
- "prefer-exponentiation-operator": "error",
247
- "prefer-named-capture-group": "error",
248
- "prefer-numeric-literals": "error",
249
- "prefer-object-has-own": "error",
250
- "prefer-object-spread": "error",
251
- "prefer-promise-reject-errors": "error",
252
- "prefer-regex-literals": "error",
253
- "prefer-rest-params": "error",
254
- "prefer-spread": "error",
255
- "prefer-template": "error",
256
- "radix": "error",
257
- "require-atomic-updates": "error",
258
- "require-await": "error",
259
- "require-unicode-regexp": "error",
260
- "require-yield": "error",
261
- "sort-imports": "error",
262
- "sort-keys": "error",
263
- "sort-vars": "error",
264
- "strict": "error",
265
- "symbol-description": "error",
266
- "unicode-bom": "error",
267
- "use-isnan": "error",
268
- "valid-typeof": "error",
269
- "vars-on-top": "error",
270
- "yoda": "error"
271
- }
272
- });
273
- }
274
- });
275
-
276
- // ../../node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/configs/eslint-recommended.js
277
- var require_eslint_recommended = __commonJS({
278
- "../../node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/configs/eslint-recommended.js"(exports, module) {
279
- "use strict";
280
- module.exports = Object.freeze({
281
- rules: Object.freeze({
282
- "constructor-super": "error",
283
- "for-direction": "error",
284
- "getter-return": "error",
285
- "no-async-promise-executor": "error",
286
- "no-case-declarations": "error",
287
- "no-class-assign": "error",
288
- "no-compare-neg-zero": "error",
289
- "no-cond-assign": "error",
290
- "no-const-assign": "error",
291
- "no-constant-binary-expression": "error",
292
- "no-constant-condition": "error",
293
- "no-control-regex": "error",
294
- "no-debugger": "error",
295
- "no-delete-var": "error",
296
- "no-dupe-args": "error",
297
- "no-dupe-class-members": "error",
298
- "no-dupe-else-if": "error",
299
- "no-dupe-keys": "error",
300
- "no-duplicate-case": "error",
301
- "no-empty": "error",
302
- "no-empty-character-class": "error",
303
- "no-empty-pattern": "error",
304
- "no-empty-static-block": "error",
305
- "no-ex-assign": "error",
306
- "no-extra-boolean-cast": "error",
307
- "no-fallthrough": "error",
308
- "no-func-assign": "error",
309
- "no-global-assign": "error",
310
- "no-import-assign": "error",
311
- "no-invalid-regexp": "error",
312
- "no-irregular-whitespace": "error",
313
- "no-loss-of-precision": "error",
314
- "no-misleading-character-class": "error",
315
- "no-new-native-nonconstructor": "error",
316
- "no-nonoctal-decimal-escape": "error",
317
- "no-obj-calls": "error",
318
- "no-octal": "error",
319
- "no-prototype-builtins": "error",
320
- "no-redeclare": "error",
321
- "no-regex-spaces": "error",
322
- "no-self-assign": "error",
323
- "no-setter-return": "error",
324
- "no-shadow-restricted-names": "error",
325
- "no-sparse-arrays": "error",
326
- "no-this-before-super": "error",
327
- "no-undef": "error",
328
- "no-unexpected-multiline": "error",
329
- "no-unreachable": "error",
330
- "no-unsafe-finally": "error",
331
- "no-unsafe-negation": "error",
332
- "no-unsafe-optional-chaining": "error",
333
- "no-unused-labels": "error",
334
- "no-unused-private-class-members": "error",
335
- "no-unused-vars": "error",
336
- "no-useless-backreference": "error",
337
- "no-useless-catch": "error",
338
- "no-useless-escape": "error",
339
- "no-with": "error",
340
- "require-yield": "error",
341
- "use-isnan": "error",
342
- "valid-typeof": "error"
343
- })
344
- });
345
- }
346
- });
347
-
348
- // ../../node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/index.js
349
- var require_src = __commonJS({
350
- "../../node_modules/.pnpm/@eslint+js@9.18.0/node_modules/@eslint/js/src/index.js"(exports, module) {
351
- "use strict";
352
- var { name, version } = require_package();
353
- module.exports = {
354
- meta: {
355
- name,
356
- version
357
- },
358
- configs: {
359
- all: require_eslint_all(),
360
- recommended: require_eslint_recommended()
361
- }
362
- };
363
- }
364
- });
365
-
366
1
  // plugins.ts
367
- var import_js = __toESM(require_src(), 1);
368
2
  import { default as default2 } from "globals";
3
+ import { default as default3 } from "@eslint/js";
369
4
  import { fixupPluginRules } from "@eslint/compat";
370
5
  import { default as default4 } from "typescript-eslint";
371
6
  import { default as default5 } from "eslint-plugin-react";
@@ -374,7 +9,7 @@ import { default as default7 } from "eslint-plugin-jsx-a11y";
374
9
  import { default as default8 } from "eslint-plugin-vue";
375
10
  import { default as default9 } from "vue-eslint-parser";
376
11
  import { default as default10 } from "eslint-plugin-prettier";
377
- import { default as default11 } from "eslint-config-prettier";
12
+ import { default as default11 } from "eslint-plugin-prettier/recommended";
378
13
  import { default as default12 } from "eslint-plugin-sonarjs";
379
14
  import { default as default13 } from "eslint-plugin-security";
380
15
  import { default as default14 } from "eslint-plugin-playwright";
@@ -384,6 +19,7 @@ import { default as default17 } from "eslint-plugin-import";
384
19
  import { default as default18 } from "eslint-plugin-markdown";
385
20
  import { default as default19 } from "@eslint-community/eslint-plugin-eslint-comments/configs";
386
21
  import { default as default20 } from "eslint-plugin-unicorn";
22
+ import { default as default21 } from "eslint-plugin-de-morgan";
387
23
 
388
24
  // configs/javascript.ts
389
25
  var isProduction = process.env.NODE_ENV === "production";
@@ -404,7 +40,7 @@ var jsConfigs = [
404
40
  {
405
41
  name: "component-hook/javascript",
406
42
  rules: {
407
- ...import_js.default.configs.recommended.rules,
43
+ ...default3.configs.recommended.rules,
408
44
  ...rules
409
45
  }
410
46
  }
@@ -495,6 +131,7 @@ var unicornConfig = {
495
131
  "unicorn/consistent-empty-array-spread": "error",
496
132
  "unicorn/consistent-existence-index-check": "error",
497
133
  "unicorn/consistent-function-scoping": ["error", { checkArrowFunctions: false }],
134
+ "unicorn/consistent-date-clone": "error",
498
135
  "unicorn/custom-error-definition": "error",
499
136
  "unicorn/error-message": "error",
500
137
  "unicorn/escape-case": "error",
@@ -512,7 +149,7 @@ var unicornConfig = {
512
149
  "unicorn/no-console-spaces": "error",
513
150
  "unicorn/no-for-loop": "error",
514
151
  "unicorn/no-hex-escape": "error",
515
- "unicorn/no-instanceof-array": "error",
152
+ "unicorn/no-instanceof-builtins": "error",
516
153
  "unicorn/no-invalid-remove-event-listener": "error",
517
154
  "unicorn/no-lonely-if": "error",
518
155
  "unicorn/no-negation-in-equality-check": "error",
@@ -560,21 +197,20 @@ var unicornConfig = {
560
197
 
561
198
  // configs/markdown.ts
562
199
  var markdownConfigs = default18.configs.recommended.map((config) => {
563
- const { name, rules: rules4 } = config;
200
+ const { name, rules: rules5 } = config;
564
201
  const baseConfig = {
565
202
  ...config,
566
203
  name: `component-hook/${name}`
567
204
  };
568
- if (rules4) {
205
+ if (rules5) {
569
206
  baseConfig.rules = {
570
- ...rules4,
207
+ ...rules5,
571
208
  "no-alert": "off",
572
209
  "no-console": "off",
573
210
  "no-restricted-imports": "off",
574
211
  "no-undef": "off",
575
212
  "no-unused-expressions": "off",
576
213
  "no-unused-vars": "off",
577
- "@typescript-eslint/comma-dangle": "off",
578
214
  "@typescript-eslint/consistent-type-imports": "off",
579
215
  "@typescript-eslint/no-extraneous-class": "off",
580
216
  "@typescript-eslint/no-namespace": "off",
@@ -585,7 +221,8 @@ var markdownConfigs = default18.configs.recommended.map((config) => {
585
221
  "@typescript-eslint/no-use-before-define": "off",
586
222
  "import/no-default-export": "off",
587
223
  "sonarjs/no-dead-store": "off",
588
- "sonarjs/sonar-no-unused-vars": "off"
224
+ "sonarjs/unused-import": "off",
225
+ "sonarjs/no-unused-vars": "off"
589
226
  };
590
227
  }
591
228
  return baseConfig;
@@ -597,16 +234,22 @@ var regexpConfig = {
597
234
  name: "component-hook/regexp"
598
235
  };
599
236
 
237
+ // configs/de-morgan.ts
238
+ var deMorganConfig = {
239
+ ...default21.configs.recommended,
240
+ name: "component-hook/de-morgan"
241
+ };
242
+
600
243
  // configs/prettier.ts
601
- var recommended = default10.configs?.recommended;
244
+ var rules3 = { ...default11.rules };
245
+ delete rules3["vue/html-self-closing"];
602
246
  var prettierConfig = {
603
247
  name: "component-hook/prettier",
604
248
  plugins: {
605
249
  prettier: default10
606
250
  },
607
251
  rules: {
608
- ...default11.rules,
609
- ...recommended.rules,
252
+ ...rules3,
610
253
  "prettier/prettier": "warn"
611
254
  }
612
255
  };
@@ -636,8 +279,7 @@ var sonarjsConfigs = [
636
279
  plugins: plugins2,
637
280
  rules: {
638
281
  ...default12.configs.recommended.rules,
639
- "sonarjs/no-commented-code": "warn",
640
- "sonarjs/no-vue-bypass-sanitization": "warn"
282
+ "sonarjs/no-commented-code": "warn"
641
283
  },
642
284
  settings
643
285
  },
@@ -697,7 +339,8 @@ var reactConfigs = [
697
339
  ];
698
340
 
699
341
  // configs/vue.ts
700
- var rules3 = {
342
+ var recommendedRules = default8.configs["flat/recommended"].map((config) => config.rules).reduce((acc, rules5) => ({ ...acc, ...rules5 }), {});
343
+ var rules4 = {
701
344
  "vue/block-order": ["error", { order: ["script", "template", "style"] }],
702
345
  "vue/custom-event-name-casing": ["error", "camelCase"],
703
346
  "vue/eqeqeq": ["error", "smart"],
@@ -747,6 +390,7 @@ var vueConfigs = [
747
390
  ...eslintConfigTypescript,
748
391
  {
749
392
  name: "component-hook/vue/globals",
393
+ files: ["**/*.vue"],
750
394
  languageOptions: {
751
395
  globals: {
752
396
  defineProps: "readonly",
@@ -784,11 +428,8 @@ var vueConfigs = [
784
428
  },
785
429
  processor: default8.processors[".vue"],
786
430
  rules: {
787
- ...default8.configs.base.rules,
788
- ...default8.configs["vue3-essential"].rules,
789
- ...default8.configs["vue3-strongly-recommended"].rules,
790
- ...default8.configs["vue3-recommended"].rules,
791
- ...rules3
431
+ ...recommendedRules,
432
+ ...rules4
792
433
  }
793
434
  }
794
435
  ];
@@ -850,7 +491,7 @@ var ignores = {
850
491
  "**/yarn.lock",
851
492
  "**/package-lock.json",
852
493
  "**/bun.lockb",
853
- "**/output",
494
+ "output",
854
495
  "**/coverage",
855
496
  "**/playwright-report",
856
497
  "**/temp",
@@ -884,6 +525,7 @@ var basicConfigs = [
884
525
  ...importConfigs,
885
526
  unicornConfig,
886
527
  regexpConfig,
528
+ deMorganConfig,
887
529
  {
888
530
  name: "component-hook/globals",
889
531
  languageOptions: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@component-hook/eslint-plugin",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "ESLint config for component hook",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -34,30 +34,32 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
37
- "@eslint/compat": "^1.2.5",
38
- "eslint-config-prettier": "^9.1.0",
37
+ "@eslint/compat": "^1.2.7",
38
+ "@eslint/js": "^9.23.0",
39
+ "eslint-config-prettier": "^10.1.1",
40
+ "eslint-plugin-de-morgan": "^1.2.1",
39
41
  "eslint-plugin-import": "^2.31.0",
40
42
  "eslint-plugin-jsx-a11y": "^6.10.2",
41
43
  "eslint-plugin-markdown": "^5.1.0",
42
- "eslint-plugin-playwright": "^2.1.0",
44
+ "eslint-plugin-playwright": "^2.2.0",
43
45
  "eslint-plugin-prettier": "^5.2.3",
44
46
  "eslint-plugin-react": "^7.37.4",
45
- "eslint-plugin-react-hooks": "^5.1.0",
47
+ "eslint-plugin-react-hooks": "^5.2.0",
46
48
  "eslint-plugin-regexp": "^2.7.0",
47
49
  "eslint-plugin-security": "^3.0.1",
48
- "eslint-plugin-sonarjs": "^3.0.1",
50
+ "eslint-plugin-sonarjs": "^3.0.2",
49
51
  "eslint-plugin-testing-library": "^7.1.1",
50
- "eslint-plugin-unicorn": "^56.0.1",
51
- "eslint-plugin-vue": "^9.32.0",
52
- "globals": "^15.14.0",
53
- "typescript-eslint": "^8.21.0",
52
+ "eslint-plugin-unicorn": "^57.0.0",
53
+ "eslint-plugin-vue": "^10.0.0",
54
+ "globals": "^16.0.0",
55
+ "typescript-eslint": "^8.26.1",
54
56
  "vue-eslint-parser": "^9.4.3"
55
57
  },
56
58
  "devDependencies": {
57
- "@eslint/config-inspector": "^1.0.0",
59
+ "@eslint/config-inspector": "^1.0.2",
58
60
  "@types/eslint": "^9.6.1",
59
61
  "@types/eslint-plugin-security": "^3.0.0",
60
- "@types/eslint__js": "^8.42.3"
62
+ "@types/eslint__js": "^9.14.0"
61
63
  },
62
64
  "scripts": {
63
65
  "dev": "eslint-config-inspector --config ../../eslint.config.js",