Skip to content

Commit b44752f

Browse files
authored
feat: turn off prettier conflicting rules (#55)
1 parent 6a03dcf commit b44752f

File tree

4 files changed

+80
-83
lines changed

4 files changed

+80
-83
lines changed

lib/configs/_override-ts.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ module.exports = {
2525
"@eslint-community/mysticatea/ts/ban-tslint-comment": "error",
2626
"@eslint-community/mysticatea/ts/class-literal-property-style":
2727
"error",
28-
"@eslint-community/mysticatea/ts/comma-dangle": "error",
29-
"@eslint-community/mysticatea/ts/comma-spacing": "error",
3028
"@eslint-community/mysticatea/ts/consistent-generic-constructors":
3129
"error",
3230
"@eslint-community/mysticatea/ts/consistent-indexed-object-style":
@@ -44,7 +42,6 @@ module.exports = {
4442
"@eslint-community/mysticatea/ts/explicit-module-boundary-types":
4543
"error",
4644
"@eslint-community/mysticatea/ts/init-declarations": "error",
47-
"@eslint-community/mysticatea/ts/keyword-spacing": "error",
4845
"@eslint-community/mysticatea/ts/lines-between-class-members":
4946
"error",
5047
"@eslint-community/mysticatea/ts/method-signature-style":
@@ -64,7 +61,6 @@ module.exports = {
6461
"@eslint-community/mysticatea/ts/no-empty-interface": "error",
6562
"@eslint-community/mysticatea/ts/no-extra-non-null-assertion":
6663
"error",
67-
"@eslint-community/mysticatea/ts/no-extra-semi": "error",
6864
"@eslint-community/mysticatea/ts/no-extraneous-class": "error",
6965
"@eslint-community/mysticatea/ts/no-floating-promises": "error",
7066
"@eslint-community/mysticatea/ts/no-for-in-array": "error",
@@ -125,7 +121,6 @@ module.exports = {
125121
"@eslint-community/mysticatea/ts/no-var-requires": "error",
126122
"@eslint-community/mysticatea/ts/non-nullable-type-assertion-style":
127123
"error",
128-
"@eslint-community/mysticatea/ts/object-curly-spacing": "error",
129124
"@eslint-community/mysticatea/ts/padding-line-between-statements":
130125
"error",
131126
"@eslint-community/mysticatea/ts/parameter-properties": "error",
@@ -164,9 +159,6 @@ module.exports = {
164159
"@eslint-community/mysticatea/ts/return-await": "error",
165160
"@eslint-community/mysticatea/ts/sort-type-union-intersection-members":
166161
"error",
167-
"@eslint-community/mysticatea/ts/space-before-function-paren":
168-
"error",
169-
"@eslint-community/mysticatea/ts/space-infix-ops": "error",
170162
"@eslint-community/mysticatea/ts/switch-exhaustiveness-check":
171163
"error",
172164
"@eslint-community/mysticatea/ts/triple-slash-reference":
@@ -214,16 +206,20 @@ module.exports = {
214206
"one-var": "off",
215207
"@eslint-community/mysticatea/ts/ban-types": "off",
216208
"@eslint-community/mysticatea/ts/brace-style": "off", // favor of Prettier.
209+
"@eslint-community/mysticatea/ts/comma-dangle": "off", // favor of Prettier.
210+
"@eslint-community/mysticatea/ts/comma-spacing": "off", // favor of Prettier.
217211
"@eslint-community/mysticatea/ts/consistent-type-definitions":
218212
"off",
219213
"@eslint-community/mysticatea/ts/explicit-function-return-type":
220214
"off", // I want but this is not so...
221215
"@eslint-community/mysticatea/ts/func-call-spacing": "off", // favor of Prettier.
222216
"@eslint-community/mysticatea/ts/indent": "off", // favor of Prettier.
217+
"@eslint-community/mysticatea/ts/keyword-spacing": "off", // favor of Prettier.
223218
"@eslint-community/mysticatea/ts/member-delimiter-style": "off", // favor of Prettier.
224219
"@eslint-community/mysticatea/ts/member-ordering": "off",
225220
"@eslint-community/mysticatea/ts/no-explicit-any": "off",
226221
"@eslint-community/mysticatea/ts/no-extra-parens": "off", // favor of Prettier.
222+
"@eslint-community/mysticatea/ts/no-extra-semi": "off", // favor of Prettier.
227223
"@eslint-community/mysticatea/ts/no-magic-numbers": "off",
228224
"@eslint-community/mysticatea/ts/no-namespace": "off", // I like the namespace for interfaces (type only things).
229225
"@eslint-community/mysticatea/ts/no-non-null-assertion": "off",
@@ -232,11 +228,15 @@ module.exports = {
232228
"off", // This was problematic for test code.
233229
"@eslint-community/mysticatea/ts/no-unused-vars": "off", // tsc verifies it.
234230
"@eslint-community/mysticatea/ts/no-use-before-define": "off", // tsc verifies it.
231+
"@eslint-community/mysticatea/ts/object-curly-spacing": "off", // favor of Prettier.
235232
"@eslint-community/mysticatea/ts/prefer-for-of": "off",
236233
"@eslint-community/mysticatea/ts/promise-function-async": "off",
237234
"@eslint-community/mysticatea/ts/quotes": "off", // favor of Prettier.
238235
"@eslint-community/mysticatea/ts/semi": "off", // favor of Prettier.
239236
"@eslint-community/mysticatea/ts/space-before-blocks": "off", // favor of Prettier.
237+
"@eslint-community/mysticatea/ts/space-before-function-paren":
238+
"off", // favor of Prettier.
239+
"@eslint-community/mysticatea/ts/space-infix-ops": "off", // favor of Prettier.
240240
"@eslint-community/mysticatea/ts/strict-boolean-expressions":
241241
"off",
242242
"@eslint-community/mysticatea/ts/type-annotation-spacing":

lib/configs/_override-vue.js

Lines changed: 49 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,11 @@ module.exports = {
1515
parser: require.resolve("vue-eslint-parser"),
1616
rules: {
1717
// Enabled rules
18-
"@eslint-community/mysticatea/vue/array-bracket-newline":
19-
"error",
20-
"@eslint-community/mysticatea/vue/array-bracket-spacing": [
21-
"error",
22-
"never",
23-
],
24-
"@eslint-community/mysticatea/vue/arrow-spacing": "error",
2518
"@eslint-community/mysticatea/vue/attribute-hyphenation":
2619
"error",
2720
"@eslint-community/mysticatea/vue/attributes-order": "error",
2821
"@eslint-community/mysticatea/vue/block-lang": "error",
29-
"@eslint-community/mysticatea/vue/block-spacing": "error",
30-
"@eslint-community/mysticatea/vue/block-tag-newline": "error",
31-
"@eslint-community/mysticatea/vue/brace-style": "error",
3222
"@eslint-community/mysticatea/vue/camelcase": "error",
33-
"@eslint-community/mysticatea/vue/comma-dangle": [
34-
"error",
35-
{
36-
arrays: "always",
37-
objects: "always",
38-
imports: "always",
39-
exports: "always",
40-
functions: "always",
41-
},
42-
],
43-
"@eslint-community/mysticatea/vue/comma-spacing": "error",
44-
"@eslint-community/mysticatea/vue/comma-style": "error",
4523
"@eslint-community/mysticatea/vue/comment-directive": "error",
4624
"@eslint-community/mysticatea/vue/component-api-style": "error",
4725
"@eslint-community/mysticatea/vue/component-definition-name-casing":
@@ -55,7 +33,6 @@ module.exports = {
5533
"@eslint-community/mysticatea/vue/custom-event-name-casing":
5634
"error",
5735
"@eslint-community/mysticatea/vue/define-macros-order": "error",
58-
"@eslint-community/mysticatea/vue/dot-location": "error",
5936
"@eslint-community/mysticatea/vue/dot-notation": "error",
6037
"@eslint-community/mysticatea/vue/eqeqeq": [
6138
"error",
@@ -64,43 +41,15 @@ module.exports = {
6441
],
6542
"@eslint-community/mysticatea/vue/first-attribute-linebreak":
6643
"error",
67-
"@eslint-community/mysticatea/vue/func-call-spacing": "error",
6844
"@eslint-community/mysticatea/vue/html-button-has-type":
6945
"error",
70-
"@eslint-community/mysticatea/vue/html-closing-bracket-newline":
71-
["error", { multiline: "always", singleline: "never" }],
72-
"@eslint-community/mysticatea/vue/html-closing-bracket-spacing":
73-
"error",
74-
"@eslint-community/mysticatea/vue/html-comment-content-newline":
75-
"error",
76-
"@eslint-community/mysticatea/vue/html-comment-content-spacing":
77-
"error",
78-
"@eslint-community/mysticatea/vue/html-comment-indent": "error",
79-
"@eslint-community/mysticatea/vue/html-end-tags": "error",
80-
"@eslint-community/mysticatea/vue/html-indent": ["error", 4],
81-
"@eslint-community/mysticatea/vue/html-quotes": "error",
82-
"@eslint-community/mysticatea/vue/html-self-closing": "error",
8346
"@eslint-community/mysticatea/vue/jsx-uses-vars": "error",
84-
"@eslint-community/mysticatea/vue/key-spacing": "error",
85-
"@eslint-community/mysticatea/vue/keyword-spacing": "error",
8647
"@eslint-community/mysticatea/vue/match-component-file-name":
8748
"error",
8849
"@eslint-community/mysticatea/vue/match-component-import-name":
8950
"error",
90-
"@eslint-community/mysticatea/vue/max-attributes-per-line": [
91-
"error",
92-
{ multiline: 1, singleline: 3 },
93-
],
94-
"@eslint-community/mysticatea/vue/max-len": [
95-
"error",
96-
{ tabWidth: 4 },
97-
],
98-
"@eslint-community/mysticatea/vue/multiline-html-element-content-newline":
99-
"error",
10051
"@eslint-community/mysticatea/vue/multi-word-component-names":
10152
"error",
102-
"@eslint-community/mysticatea/vue/mustache-interpolation-spacing":
103-
"error",
10453
"@eslint-community/mysticatea/vue/new-line-between-multi-line-property":
10554
"error",
10655
"@eslint-community/mysticatea/vue/next-tick-style": "error",
@@ -168,7 +117,6 @@ module.exports = {
168117
"error",
169118
"@eslint-community/mysticatea/vue/no-expose-after-await":
170119
"error",
171-
"@eslint-community/mysticatea/vue/no-extra-parens": "error",
172120
"@eslint-community/mysticatea/vue/no-invalid-model-keys":
173121
"error",
174122
"@eslint-community/mysticatea/vue/no-irregular-whitespace":
@@ -183,7 +131,6 @@ module.exports = {
183131
"error",
184132
"@eslint-community/mysticatea/vue/no-multiple-template-root":
185133
"error",
186-
"@eslint-community/mysticatea/vue/no-multi-spaces": "error",
187134
"@eslint-community/mysticatea/vue/no-mutating-props": "error",
188135
"@eslint-community/mysticatea/vue/no-parsing-error": "error",
189136
"@eslint-community/mysticatea/vue/no-potential-component-option-typo":
@@ -214,8 +161,6 @@ module.exports = {
214161
"error",
215162
"@eslint-community/mysticatea/vue/no-side-effects-in-computed-properties":
216163
"error",
217-
"@eslint-community/mysticatea/vue/no-spaces-around-equal-signs-in-attribute":
218-
"error",
219164
"@eslint-community/mysticatea/vue/no-sparse-arrays": "error",
220165
"@eslint-community/mysticatea/vue/no-static-inline-styles":
221166
"error",
@@ -258,22 +203,13 @@ module.exports = {
258203
"error",
259204
"@eslint-community/mysticatea/vue/no-watch-after-await":
260205
"error",
261-
"@eslint-community/mysticatea/vue/object-curly-newline":
262-
"error",
263-
"@eslint-community/mysticatea/vue/object-curly-spacing": [
264-
"error",
265-
"always",
266-
],
267-
"@eslint-community/mysticatea/vue/object-property-newline":
268-
"error",
269206
"@eslint-community/mysticatea/vue/object-shorthand": [
270207
"error",
271208
"always",
272209
{ avoidExplicitReturnArrows: true },
273210
],
274211
"@eslint-community/mysticatea/vue/one-component-per-file":
275212
"error",
276-
"@eslint-community/mysticatea/vue/operator-linebreak": "error",
277213
"@eslint-community/mysticatea/vue/order-in-components": "error",
278214
"@eslint-community/mysticatea/vue/padding-line-between-blocks":
279215
"error",
@@ -318,16 +254,9 @@ module.exports = {
318254
"error",
319255
"@eslint-community/mysticatea/vue/script-setup-uses-vars":
320256
"error",
321-
"@eslint-community/mysticatea/vue/singleline-html-element-content-newline":
322-
"error",
323257
"@eslint-community/mysticatea/vue/sort-keys": "error",
324-
"@eslint-community/mysticatea/vue/space-in-parens": "error",
325-
"@eslint-community/mysticatea/vue/space-infix-ops": "error",
326-
"@eslint-community/mysticatea/vue/space-unary-ops": "error",
327258
"@eslint-community/mysticatea/vue/static-class-names-order":
328259
"error",
329-
"@eslint-community/mysticatea/vue/template-curly-spacing":
330-
"error",
331260
"@eslint-community/mysticatea/vue/this-in-template": "error",
332261
"@eslint-community/mysticatea/vue/use-v-on-exact": "error",
333262
"@eslint-community/mysticatea/vue/v-bind-style": "error",
@@ -361,9 +290,58 @@ module.exports = {
361290
"@eslint-community/mysticatea/vue/valid-v-text": "error",
362291

363292
// Disabled rules (prefer prettier)
293+
"@eslint-community/mysticatea/vue/array-bracket-newline": "off",
294+
"@eslint-community/mysticatea/vue/array-bracket-spacing": "off",
295+
"@eslint-community/mysticatea/vue/arrow-spacing": "off",
296+
"@eslint-community/mysticatea/vue/block-spacing": "off",
297+
"@eslint-community/mysticatea/vue/block-tag-newline": "off",
298+
"@eslint-community/mysticatea/vue/brace-style": "off",
299+
"@eslint-community/mysticatea/vue/comma-dangle": "off",
300+
"@eslint-community/mysticatea/vue/comma-spacing": "off",
301+
"@eslint-community/mysticatea/vue/comma-style": "off",
302+
"@eslint-community/mysticatea/vue/dot-location": "off",
303+
"@eslint-community/mysticatea/vue/func-call-spacing": "off",
304+
"@eslint-community/mysticatea/vue/html-closing-bracket-newline":
305+
"off",
306+
"@eslint-community/mysticatea/vue/html-closing-bracket-spacing":
307+
"off",
308+
"@eslint-community/mysticatea/vue/html-comment-content-newline":
309+
"off",
310+
"@eslint-community/mysticatea/vue/html-comment-content-spacing":
311+
"off",
312+
"@eslint-community/mysticatea/vue/html-comment-indent": "off",
313+
"@eslint-community/mysticatea/vue/html-end-tags": "off",
314+
"@eslint-community/mysticatea/vue/html-indent": "off",
315+
"@eslint-community/mysticatea/vue/html-quotes": "off",
316+
"@eslint-community/mysticatea/vue/html-self-closing": "off",
317+
"@eslint-community/mysticatea/vue/key-spacing": "off",
318+
"@eslint-community/mysticatea/vue/keyword-spacing": "off",
319+
"@eslint-community/mysticatea/vue/max-attributes-per-line":
320+
"off",
321+
"@eslint-community/mysticatea/vue/max-len": "off",
322+
"@eslint-community/mysticatea/vue/multiline-html-element-content-newline":
323+
"off",
324+
"@eslint-community/mysticatea/vue/mustache-interpolation-spacing":
325+
"off",
326+
"@eslint-community/mysticatea/vue/no-extra-parens": "off",
327+
"@eslint-community/mysticatea/vue/no-multi-spaces": "off",
364328
"@eslint-community/mysticatea/vue/no-restricted-syntax": "off",
329+
"@eslint-community/mysticatea/vue/no-spaces-around-equal-signs-in-attribute":
330+
"off",
331+
"@eslint-community/mysticatea/vue/object-curly-newline": "off",
332+
"@eslint-community/mysticatea/vue/object-curly-spacing": "off",
333+
"@eslint-community/mysticatea/vue/object-property-newline":
334+
"off",
335+
"@eslint-community/mysticatea/vue/operator-linebreak": "off",
365336
"@eslint-community/mysticatea/vue/quote-props": "off",
366337
"@eslint-community/mysticatea/vue/script-indent": "off",
338+
"@eslint-community/mysticatea/vue/singleline-html-element-content-newline":
339+
"off",
340+
"@eslint-community/mysticatea/vue/space-in-parens": "off",
341+
"@eslint-community/mysticatea/vue/space-infix-ops": "off",
342+
"@eslint-community/mysticatea/vue/space-unary-ops": "off",
343+
"@eslint-community/mysticatea/vue/template-curly-spacing":
344+
"off",
367345
},
368346
},
369347
],

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"@eslint-community/eslint-plugin-mysticatea": "file:.",
5858
"@eslint/eslintrc": "^1.3.3",
5959
"eslint": "~8.27.0",
60+
"eslint-config-prettier": "^8.6.0",
6061
"globals": "^13.17.0",
6162
"mocha": "^9.2.2",
6263
"npm-run-all": "^4.1.5",

tests/lib/configs/_rules.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const {
1212
rules: PluginRulesIndex,
1313
} = require("@eslint-community/eslint-plugin-mysticatea")
1414
const { rules: removedRules } = require("./eslint-replacements.json")
15+
const { rules: prettierConfigRules } = require("eslint-config-prettier")
1516

1617
const coreRules = new Linter().getRules()
1718
const pluginRules = new Map(
@@ -45,10 +46,12 @@ module.exports = {
4546
)
4647

4748
/* istanbul ignore next */
48-
for (const ruleId of [].concat(
49-
Object.keys(config.rules || {}),
50-
...(config.overrides || []).map((c) => Object.keys(c.rules || {}))
51-
)) {
49+
for (const [ruleId, ruleConf] of [
50+
config.rules,
51+
...(config.overrides || []).map((c) => c.rules),
52+
]
53+
.filter(Boolean)
54+
.flatMap((r) => Object.entries(r))) {
5255
const rule = allRules.get(ruleId)
5356
if (rule == null) {
5457
throw new Error(`The '${ruleId}' rule does not exist.`)
@@ -59,6 +62,21 @@ module.exports = {
5962
if (removedRuleNames.has(ruleId)) {
6063
throw new Error(`The '${ruleId}' rule was removed.`)
6164
}
65+
const originalRuleId = ruleId.includes("/")
66+
? `${ruleId
67+
.replace(/^@eslint-community\/mysticatea\//u, "")
68+
.replace(/^ts\//u, "@typescript-eslint/")}`
69+
: ruleId
70+
if (prettierConfigRules[originalRuleId] != null) {
71+
const severity = Array.isArray(ruleConf)
72+
? ruleConf[0]
73+
: ruleConf
74+
if (severity != null && severity !== 0 && severity !== "off") {
75+
throw new Error(
76+
`The '${ruleId}' rule conflicts with prettier and should be turned 'off'.`
77+
)
78+
}
79+
}
6280
}
6381
},
6482

0 commit comments

Comments
 (0)