@book000/eslint-config 1.15.44 → 1.16.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/index.mjs +190 -2
- package/package.json +1 -1
- package/test.mjs +12 -0
package/index.mjs
CHANGED
|
@@ -9,8 +9,196 @@ export default tseslint.config(
|
|
|
9
9
|
// Standard JS のルールセット(スタイル系は prettier に委ねるため無効化)
|
|
10
10
|
...neostandard({ noStyle: true }),
|
|
11
11
|
...tseslint.configs.recommended,
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
{
|
|
13
|
+
// eslint-plugin-unicorn のルールを flat/recommended に頼らず明示的に列挙する。
|
|
14
|
+
// 理由: flat/recommended は unicorn のバージョンアップごとに収録ルールが
|
|
15
|
+
// 無断で増減し、本パッケージに依存する多数のプロジェクトへ一斉に
|
|
16
|
+
// 新規エラーが波及するリスクがあるため。新しいルールを取り込む場合は
|
|
17
|
+
// このリストへ明示的に追記すること(unicorn の CHANGELOG を確認して判断する)。
|
|
18
|
+
//
|
|
19
|
+
// 生成方法: eslint-plugin-unicorn の flat/recommended が定義する
|
|
20
|
+
// ルール一覧を元に、以下を除外・調整して作成した。
|
|
21
|
+
// - deprecated ルールは対象外
|
|
22
|
+
// - catch-error-name, filename-case はオプション付きで設定するため、
|
|
23
|
+
// 下記の専用ブロックに記載し、ここでは省略する
|
|
24
|
+
// - 意図的に off とするルール(下記コメント参照)
|
|
25
|
+
plugins: { unicorn },
|
|
26
|
+
rules: {
|
|
27
|
+
// 集約処理のイディオムとして正当な用途が多く、for ループへの
|
|
28
|
+
// 書き換え強制がかえって可読性を落とすため無効化する
|
|
29
|
+
"unicorn/no-array-reduce": "off",
|
|
30
|
+
// クロージャで意図的に外側スコープの変数を捕捉する関数まで
|
|
31
|
+
// 最上位への移動を要求し、誤検知が多いため無効化する
|
|
32
|
+
"unicorn/consistent-function-scoping": "off",
|
|
33
|
+
// トップレベル await を許可する(IIFE 併用の CLI ツール等のため)
|
|
34
|
+
"unicorn/prefer-top-level-await": "off",
|
|
35
|
+
// 省略形を許可する (dev -> development, prod -> production などの変換をさせない)
|
|
36
|
+
"unicorn/prevent-abbreviations": "off",
|
|
37
|
+
// null を許可する
|
|
38
|
+
"unicorn/no-null": "off",
|
|
39
|
+
// 無駄な undefined を許可する
|
|
40
|
+
"unicorn/no-useless-undefined": "off",
|
|
41
|
+
//
|
|
42
|
+
// 以下、上記以外の flat/recommended 収録ルールをすべて明示的に error とする
|
|
43
|
+
"unicorn/better-dom-traversing": "error",
|
|
44
|
+
"unicorn/consistent-assert": "error",
|
|
45
|
+
"unicorn/consistent-compound-words": "error",
|
|
46
|
+
"unicorn/consistent-date-clone": "error",
|
|
47
|
+
"unicorn/consistent-empty-array-spread": "error",
|
|
48
|
+
"unicorn/consistent-existence-index-check": "error",
|
|
49
|
+
"unicorn/consistent-json-file-read": "error",
|
|
50
|
+
"unicorn/consistent-template-literal-escape": "error",
|
|
51
|
+
"unicorn/dom-node-dataset": "error",
|
|
52
|
+
"unicorn/empty-brace-spaces": "error",
|
|
53
|
+
"unicorn/error-message": "error",
|
|
54
|
+
"unicorn/escape-case": "error",
|
|
55
|
+
"unicorn/expiring-todo-comments": "error",
|
|
56
|
+
"unicorn/explicit-length-check": "error",
|
|
57
|
+
"unicorn/import-style": "error",
|
|
58
|
+
"unicorn/isolated-functions": "error",
|
|
59
|
+
"unicorn/new-for-builtins": "error",
|
|
60
|
+
"unicorn/no-abusive-eslint-disable": "error",
|
|
61
|
+
"unicorn/no-accessor-recursion": "error",
|
|
62
|
+
"unicorn/no-anonymous-default-export": "error",
|
|
63
|
+
"unicorn/no-array-callback-reference": "error",
|
|
64
|
+
"unicorn/no-array-fill-with-reference-type": "error",
|
|
65
|
+
"unicorn/no-array-for-each": "error",
|
|
66
|
+
"unicorn/no-array-from-fill": "error",
|
|
67
|
+
"unicorn/no-array-method-this-argument": "error",
|
|
68
|
+
"unicorn/no-array-reverse": "error",
|
|
69
|
+
"unicorn/no-array-sort": "error",
|
|
70
|
+
"unicorn/no-await-expression-member": "error",
|
|
71
|
+
"unicorn/no-await-in-promise-methods": "error",
|
|
72
|
+
"unicorn/no-blob-to-file": "error",
|
|
73
|
+
"unicorn/no-canvas-to-image": "error",
|
|
74
|
+
"unicorn/no-confusing-array-splice": "error",
|
|
75
|
+
"unicorn/no-console-spaces": "error",
|
|
76
|
+
"unicorn/no-document-cookie": "error",
|
|
77
|
+
"unicorn/no-duplicate-set-values": "error",
|
|
78
|
+
"unicorn/no-empty-file": "error",
|
|
79
|
+
"unicorn/no-exports-in-scripts": "error",
|
|
80
|
+
"unicorn/no-for-loop": "error",
|
|
81
|
+
"unicorn/no-hex-escape": "error",
|
|
82
|
+
"unicorn/no-immediate-mutation": "error",
|
|
83
|
+
"unicorn/no-incorrect-query-selector": "error",
|
|
84
|
+
"unicorn/no-instanceof-builtins": "error",
|
|
85
|
+
"unicorn/no-invalid-fetch-options": "error",
|
|
86
|
+
"unicorn/no-invalid-remove-event-listener": "error",
|
|
87
|
+
"unicorn/no-late-current-target-access": "error",
|
|
88
|
+
"unicorn/no-lonely-if": "error",
|
|
89
|
+
"unicorn/no-magic-array-flat-depth": "error",
|
|
90
|
+
"unicorn/no-named-default": "error",
|
|
91
|
+
"unicorn/no-negated-condition": "error",
|
|
92
|
+
"unicorn/no-negation-in-equality-check": "error",
|
|
93
|
+
"unicorn/no-nested-ternary": "error",
|
|
94
|
+
"unicorn/no-new-array": "error",
|
|
95
|
+
"unicorn/no-new-buffer": "error",
|
|
96
|
+
"unicorn/no-object-as-default-parameter": "error",
|
|
97
|
+
"unicorn/no-process-exit": "error",
|
|
98
|
+
"unicorn/no-single-promise-in-promise-methods": "error",
|
|
99
|
+
"unicorn/no-static-only-class": "error",
|
|
100
|
+
"unicorn/no-thenable": "error",
|
|
101
|
+
"unicorn/no-this-assignment": "error",
|
|
102
|
+
"unicorn/no-this-outside-of-class": "error",
|
|
103
|
+
"unicorn/no-typeof-undefined": "error",
|
|
104
|
+
"unicorn/no-unnecessary-array-flat-depth": "error",
|
|
105
|
+
"unicorn/no-unnecessary-array-splice-count": "error",
|
|
106
|
+
"unicorn/no-unnecessary-await": "error",
|
|
107
|
+
"unicorn/no-unnecessary-nested-ternary": "error",
|
|
108
|
+
"unicorn/no-unnecessary-polyfills": "error",
|
|
109
|
+
"unicorn/no-unnecessary-slice-end": "error",
|
|
110
|
+
"unicorn/no-unreadable-array-destructuring": "error",
|
|
111
|
+
"unicorn/no-unreadable-iife": "error",
|
|
112
|
+
"unicorn/no-unused-array-method-return": "error",
|
|
113
|
+
"unicorn/no-useless-collection-argument": "error",
|
|
114
|
+
"unicorn/no-useless-error-capture-stack-trace": "error",
|
|
115
|
+
"unicorn/no-useless-fallback-in-spread": "error",
|
|
116
|
+
"unicorn/no-useless-iterator-to-array": "error",
|
|
117
|
+
"unicorn/no-useless-length-check": "error",
|
|
118
|
+
"unicorn/no-useless-promise-resolve-reject": "error",
|
|
119
|
+
"unicorn/no-useless-spread": "error",
|
|
120
|
+
"unicorn/no-useless-switch-case": "error",
|
|
121
|
+
"unicorn/no-zero-fractions": "error",
|
|
122
|
+
"unicorn/number-literal-case": "error",
|
|
123
|
+
"unicorn/numeric-separators-style": "error",
|
|
124
|
+
"unicorn/prefer-add-event-listener": "error",
|
|
125
|
+
"unicorn/prefer-array-find": "error",
|
|
126
|
+
"unicorn/prefer-array-flat": "error",
|
|
127
|
+
"unicorn/prefer-array-flat-map": "error",
|
|
128
|
+
"unicorn/prefer-array-index-of": "error",
|
|
129
|
+
"unicorn/prefer-array-last-methods": "error",
|
|
130
|
+
"unicorn/prefer-array-some": "error",
|
|
131
|
+
"unicorn/prefer-at": "error",
|
|
132
|
+
"unicorn/prefer-bigint-literals": "error",
|
|
133
|
+
"unicorn/prefer-blob-reading-methods": "error",
|
|
134
|
+
"unicorn/prefer-class-fields": "error",
|
|
135
|
+
"unicorn/prefer-classlist-toggle": "error",
|
|
136
|
+
"unicorn/prefer-code-point": "error",
|
|
137
|
+
"unicorn/prefer-date-now": "error",
|
|
138
|
+
"unicorn/prefer-default-parameters": "error",
|
|
139
|
+
"unicorn/prefer-dom-node-append": "error",
|
|
140
|
+
"unicorn/prefer-dom-node-remove": "error",
|
|
141
|
+
"unicorn/prefer-dom-node-text-content": "error",
|
|
142
|
+
"unicorn/prefer-event-target": "error",
|
|
143
|
+
"unicorn/prefer-export-from": "error",
|
|
144
|
+
"unicorn/prefer-get-or-insert-computed": "error",
|
|
145
|
+
"unicorn/prefer-global-this": "error",
|
|
146
|
+
"unicorn/prefer-https": "error",
|
|
147
|
+
"unicorn/prefer-includes": "error",
|
|
148
|
+
"unicorn/prefer-includes-over-repeated-comparisons": "error",
|
|
149
|
+
"unicorn/prefer-iterator-to-array-at-end": "error",
|
|
150
|
+
"unicorn/prefer-keyboard-event-key": "error",
|
|
151
|
+
"unicorn/prefer-logical-operator-over-ternary": "error",
|
|
152
|
+
"unicorn/prefer-math-abs": "error",
|
|
153
|
+
"unicorn/prefer-math-min-max": "error",
|
|
154
|
+
"unicorn/prefer-math-trunc": "error",
|
|
155
|
+
"unicorn/prefer-modern-dom-apis": "error",
|
|
156
|
+
"unicorn/prefer-modern-math-apis": "error",
|
|
157
|
+
"unicorn/prefer-module": "error",
|
|
158
|
+
"unicorn/prefer-native-coercion-functions": "error",
|
|
159
|
+
"unicorn/prefer-negative-index": "error",
|
|
160
|
+
"unicorn/prefer-node-protocol": "error",
|
|
161
|
+
"unicorn/prefer-number-properties": "error",
|
|
162
|
+
"unicorn/prefer-object-from-entries": "error",
|
|
163
|
+
"unicorn/prefer-optional-catch-binding": "error",
|
|
164
|
+
"unicorn/prefer-prototype-methods": "error",
|
|
165
|
+
"unicorn/prefer-query-selector": "error",
|
|
166
|
+
"unicorn/prefer-queue-microtask": "error",
|
|
167
|
+
"unicorn/prefer-reflect-apply": "error",
|
|
168
|
+
"unicorn/prefer-regexp-test": "error",
|
|
169
|
+
"unicorn/prefer-response-static-json": "error",
|
|
170
|
+
"unicorn/prefer-set-has": "error",
|
|
171
|
+
"unicorn/prefer-set-size": "error",
|
|
172
|
+
"unicorn/prefer-simple-condition-first": "error",
|
|
173
|
+
"unicorn/prefer-single-call": "error",
|
|
174
|
+
"unicorn/prefer-split-limit": "error",
|
|
175
|
+
"unicorn/prefer-spread": "error",
|
|
176
|
+
"unicorn/prefer-string-match-all": "error",
|
|
177
|
+
"unicorn/prefer-string-pad-start-end": "error",
|
|
178
|
+
"unicorn/prefer-string-raw": "error",
|
|
179
|
+
"unicorn/prefer-string-repeat": "error",
|
|
180
|
+
"unicorn/prefer-string-replace-all": "error",
|
|
181
|
+
"unicorn/prefer-string-slice": "error",
|
|
182
|
+
"unicorn/prefer-string-starts-ends-with": "error",
|
|
183
|
+
"unicorn/prefer-string-trim-start-end": "error",
|
|
184
|
+
"unicorn/prefer-structured-clone": "error",
|
|
185
|
+
"unicorn/prefer-switch": "error",
|
|
186
|
+
"unicorn/prefer-ternary": "error",
|
|
187
|
+
"unicorn/prefer-type-error": "error",
|
|
188
|
+
"unicorn/relative-url-style": "error",
|
|
189
|
+
"unicorn/require-array-join-separator": "error",
|
|
190
|
+
"unicorn/require-css-escape": "error",
|
|
191
|
+
"unicorn/require-module-attributes": "error",
|
|
192
|
+
"unicorn/require-module-specifiers": "error",
|
|
193
|
+
"unicorn/require-number-to-fixed-digits-argument": "error",
|
|
194
|
+
"unicorn/require-passive-events": "error",
|
|
195
|
+
"unicorn/switch-case-braces": "error",
|
|
196
|
+
"unicorn/switch-case-break-position": "error",
|
|
197
|
+
"unicorn/template-indent": "error",
|
|
198
|
+
"unicorn/text-encoding-identifier-case": "error",
|
|
199
|
+
"unicorn/throw-new-error": "error",
|
|
200
|
+
},
|
|
201
|
+
},
|
|
14
202
|
{
|
|
15
203
|
files: ["**/*.ts", "**/*.tsx"],
|
|
16
204
|
languageOptions: {
|
package/package.json
CHANGED
package/test.mjs
CHANGED
|
@@ -23,6 +23,18 @@ async function main() {
|
|
|
23
23
|
shouldError: false,
|
|
24
24
|
rules: ["unicorn/no-null"],
|
|
25
25
|
},
|
|
26
|
+
{
|
|
27
|
+
name: "no-array-reduce: reduceの使用はOK",
|
|
28
|
+
code: "const sum = [1, 2, 3].reduce((accumulator, value) => accumulator + value, 0);",
|
|
29
|
+
shouldError: false,
|
|
30
|
+
rules: ["unicorn/no-array-reduce"],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "consistent-function-scoping: 外側スコープを捕捉するネストした関数はOK",
|
|
34
|
+
code: "function outer() { const base = 1; function inner() { return base; } return inner(); }",
|
|
35
|
+
shouldError: false,
|
|
36
|
+
rules: ["unicorn/consistent-function-scoping"],
|
|
37
|
+
},
|
|
26
38
|
{
|
|
27
39
|
name: "no-use-before-define: 定義前の変数使用はエラー",
|
|
28
40
|
code: "console.log(a); const a = 1;",
|