@ntnyq/eslint-config 3.2.0 → 3.2.2

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/dist/index.js CHANGED
@@ -254,6 +254,186 @@ var vue3Rules = {
254
254
  ...default3.configs["vue3-strongly-recommended"].rules,
255
255
  ...default3.configs["vue3-recommended"].rules
256
256
  };
257
+ var disabledRules = {
258
+ "vue/no-v-html": "off",
259
+ "vue/require-prop-types": "off",
260
+ "vue/require-default-prop": "off",
261
+ "vue/multi-word-component-names": "off",
262
+ "vue/no-v-text-v-html-on-component": "off",
263
+ "vue/no-setup-props-reactivity-loss": "off"
264
+ };
265
+ var extensionRules = {
266
+ "vue/prefer-template": "error",
267
+ "vue/no-sparse-arrays": "error",
268
+ "vue/no-empty-pattern": "error",
269
+ "vue/space-infix-ops": "error",
270
+ "vue/no-loss-of-precision": "error",
271
+ "vue/no-constant-condition": "error",
272
+ "vue/template-curly-spacing": "error",
273
+ "vue/eqeqeq": ["error", "smart"],
274
+ "vue/comma-style": ["error", "last"],
275
+ "vue/block-spacing": ["error", "always"],
276
+ "vue/dot-location": ["error", "property"],
277
+ "vue/space-in-parens": ["error", "never"],
278
+ "vue/operator-linebreak": ["error", "before"],
279
+ "vue/no-extra-parens": ["error", "functions"],
280
+ "vue/array-bracket-spacing": ["error", "never"],
281
+ "vue/object-curly-spacing": ["error", "always"],
282
+ "vue/comma-dangle": ["error", "always-multiline"],
283
+ "vue/quote-props": ["error", "consistent-as-needed"],
284
+ "vue/arrow-spacing": ["error", { before: true, after: true }],
285
+ "vue/brace-style": ["error", "stroustrup", { allowSingleLine: true }],
286
+ "vue/comma-spacing": ["error", { before: false, after: true }],
287
+ "vue/dot-notation": ["error", { allowKeywords: true }],
288
+ "vue/key-spacing": ["error", { beforeColon: false, afterColon: true }],
289
+ "vue/keyword-spacing": ["error", { before: true, after: true }],
290
+ "vue/no-restricted-syntax": ["error", "DebuggerStatement", "LabeledStatement", "WithStatement"],
291
+ "vue/space-unary-ops": [
292
+ "error",
293
+ {
294
+ words: true,
295
+ nonwords: false
296
+ }
297
+ ],
298
+ "vue/object-curly-newline": [
299
+ "error",
300
+ {
301
+ multiline: true,
302
+ consistent: true
303
+ }
304
+ ],
305
+ "vue/object-property-newline": [
306
+ "error",
307
+ {
308
+ allowMultiplePropertiesPerLine: true
309
+ }
310
+ ],
311
+ "vue/object-shorthand": [
312
+ "error",
313
+ "always",
314
+ {
315
+ ignoreConstructors: false,
316
+ avoidQuotes: true
317
+ }
318
+ ]
319
+ };
320
+ var unCategorizedRules = {
321
+ "vue/no-v-text": "error",
322
+ "vue/no-useless-v-bind": "error",
323
+ "vue/valid-define-options": "error",
324
+ "vue/prefer-define-options": "error",
325
+ "vue/prefer-use-template-ref": "error",
326
+ "vue/no-irregular-whitespace": "error",
327
+ "vue/no-use-v-else-with-v-for": "error",
328
+ "vue/no-deprecated-delete-set": "error",
329
+ "vue/no-empty-component-block": "error",
330
+ "vue/require-typed-object-prop": "error",
331
+ "vue/no-unused-emit-declarations": "error",
332
+ "vue/padding-line-between-blocks": "error",
333
+ "vue/no-multiple-objects-in-class": "error",
334
+ "vue/prefer-separate-static-class": "error",
335
+ "vue/no-ref-object-reactivity-loss": "error",
336
+ "vue/no-duplicate-attr-inheritance": "error",
337
+ "vue/prefer-prop-type-boolean-first": "error",
338
+ "vue/html-comment-indent": ["error", 2],
339
+ "vue/next-tick-style": ["error", "promise"],
340
+ "vue/v-for-delimiter-style": ["error", "in"],
341
+ "vue/no-restricted-v-bind": ["error", "/^v-/"],
342
+ "vue/custom-event-name-casing": ["error", "camelCase"],
343
+ "vue/define-props-declaration": ["error", "type-based"],
344
+ "vue/define-emits-declaration": ["error", "type-literal"],
345
+ "vue/prefer-true-attribute-shorthand": ["error", "always"],
346
+ "vue/component-options-name-casing": ["error", "PascalCase"],
347
+ "vue/component-api-style": ["error", ["script-setup", "composition"]],
348
+ "vue/html-button-has-type": [
349
+ "error",
350
+ {
351
+ button: true,
352
+ submit: true,
353
+ reset: true
354
+ }
355
+ ],
356
+ "vue/block-order": [
357
+ "error",
358
+ {
359
+ order: ["script", "template", "style"]
360
+ }
361
+ ],
362
+ "vue/enforce-style-attribute": [
363
+ "error",
364
+ {
365
+ allow: ["scoped", "plain"]
366
+ }
367
+ ],
368
+ "vue/block-tag-newline": [
369
+ "error",
370
+ {
371
+ singleline: "always",
372
+ multiline: "always"
373
+ }
374
+ ],
375
+ "vue/no-required-prop-with-default": [
376
+ "error",
377
+ {
378
+ autofix: true
379
+ }
380
+ ],
381
+ "vue/html-comment-content-newline": [
382
+ "error",
383
+ {
384
+ singleline: "ignore",
385
+ multiline: "always"
386
+ },
387
+ {
388
+ exceptions: ["*"]
389
+ }
390
+ ],
391
+ "vue/no-static-inline-styles": [
392
+ "error",
393
+ {
394
+ allowBinding: true
395
+ }
396
+ ],
397
+ "vue/no-deprecated-model-definition": [
398
+ "error",
399
+ {
400
+ allowVue3Compat: true
401
+ }
402
+ ],
403
+ "vue/component-name-in-template-casing": [
404
+ "error",
405
+ "PascalCase",
406
+ {
407
+ // Force auto-import components to be PascalCase
408
+ registeredComponentsOnly: false,
409
+ ignores: ["slot", "component"]
410
+ }
411
+ ],
412
+ "vue/define-macros-order": [
413
+ "error",
414
+ {
415
+ order: ["defineProps", "defineEmits", "defineOptions", "defineSlots", "defineModel"],
416
+ defineExposeLast: true
417
+ }
418
+ ],
419
+ "vue/html-comment-content-spacing": [
420
+ "error",
421
+ "always",
422
+ {
423
+ exceptions: ["-"]
424
+ }
425
+ ],
426
+ "vue/require-macro-variable-name": [
427
+ "error",
428
+ {
429
+ defineProps: "props",
430
+ defineEmits: "emits",
431
+ defineSlots: "slots",
432
+ useSlots: "slots",
433
+ useAttrs: "attrs"
434
+ }
435
+ ]
436
+ };
257
437
  var vue = (options = {}) => {
258
438
  const isVue3 = options.vueVersion !== 2;
259
439
  return [
@@ -283,13 +463,6 @@ var vue = (options = {}) => {
283
463
  processor: default3.processors[".vue"],
284
464
  rules: {
285
465
  ...isVue3 ? vue3Rules : vue2Rules,
286
- // OFF
287
- "vue/no-v-html": "off",
288
- "vue/require-prop-types": "off",
289
- "vue/require-default-prop": "off",
290
- "vue/multi-word-component-names": "off",
291
- "vue/no-v-text-v-html-on-component": "off",
292
- "vue/no-setup-props-reactivity-loss": "off",
293
466
  "vue/html-self-closing": [
294
467
  "error",
295
468
  {
@@ -302,130 +475,8 @@ var vue = (options = {}) => {
302
475
  math: "always"
303
476
  }
304
477
  ],
305
- "vue/block-tag-newline": [
306
- "error",
307
- {
308
- singleline: "always",
309
- multiline: "always"
310
- }
311
- ],
312
- "vue/component-name-in-template-casing": [
313
- "error",
314
- "PascalCase",
315
- {
316
- // Force auto-import components to be PascalCase
317
- registeredComponentsOnly: false,
318
- ignores: ["slot", "component"]
319
- }
320
- ],
321
- "vue/component-options-name-casing": ["error", "PascalCase"],
322
- "vue/custom-event-name-casing": ["error", "camelCase"],
323
- "vue/define-macros-order": [
324
- "error",
325
- {
326
- order: ["defineProps", "defineEmits", "defineOptions", "defineSlots"]
327
- }
328
- ],
329
- "vue/html-comment-content-spacing": [
330
- "error",
331
- "always",
332
- {
333
- exceptions: ["-"]
334
- }
335
- ],
336
- "vue/no-restricted-v-bind": ["error", "/^v-/"],
337
- "vue/no-useless-v-bind": "error",
338
- "vue/padding-line-between-blocks": "error",
339
- "vue/next-tick-style": ["error", "promise"],
340
- "vue/array-bracket-spacing": ["error", "never"],
341
- "vue/prefer-separate-static-class": "error",
342
- "vue/no-constant-condition": "error",
343
- "vue/prefer-true-attribute-shorthand": ["error", "always"],
344
- "vue/prefer-define-options": "error",
345
- "vue/valid-define-options": "error",
346
- // TypeScript enhancements
347
- "vue/define-emits-declaration": ["error", "type-literal"],
348
- "vue/no-unused-emit-declarations": "error",
349
478
  "vue/this-in-template": ["error", "never"],
350
- "vue/arrow-spacing": ["error", { before: true, after: true }],
351
- "vue/block-spacing": ["error", "always"],
352
- "vue/brace-style": ["error", "stroustrup", { allowSingleLine: true }],
353
- "vue/comma-dangle": ["error", "always-multiline"],
354
- "vue/comma-spacing": ["error", { before: false, after: true }],
355
- "vue/comma-style": ["error", "last"],
356
- "vue/dot-location": ["error", "property"],
357
- "vue/dot-notation": ["error", { allowKeywords: true }],
358
- "vue/eqeqeq": ["error", "smart"],
359
- "vue/key-spacing": ["error", { beforeColon: false, afterColon: true }],
360
- "vue/keyword-spacing": ["error", { before: true, after: true }],
361
- "vue/no-empty-pattern": "error",
362
- "vue/no-loss-of-precision": "error",
363
- "vue/no-irregular-whitespace": "error",
364
- "vue/no-use-v-else-with-v-for": "error",
365
- "vue/require-typed-object-prop": "error",
366
- "vue/no-deprecated-delete-set": "error",
367
- "vue/no-extra-parens": ["error", "functions"],
368
- "vue/no-restricted-syntax": [
369
- "error",
370
- "DebuggerStatement",
371
- "LabeledStatement",
372
- "WithStatement"
373
- ],
374
- "vue/no-sparse-arrays": "error",
375
- "vue/no-deprecated-model-definition": [
376
- "error",
377
- {
378
- allowVue3Compat: true
379
- }
380
- ],
381
- "vue/object-curly-newline": [
382
- "error",
383
- {
384
- multiline: true,
385
- consistent: true
386
- }
387
- ],
388
- "vue/no-static-inline-styles": [
389
- "error",
390
- {
391
- allowBinding: true
392
- }
393
- ],
394
- "vue/object-curly-spacing": ["error", "always"],
395
- "vue/object-property-newline": [
396
- "error",
397
- {
398
- allowMultiplePropertiesPerLine: true
399
- }
400
- ],
401
- "vue/object-shorthand": [
402
- "error",
403
- "always",
404
- {
405
- ignoreConstructors: false,
406
- avoidQuotes: true
407
- }
408
- ],
409
- "vue/operator-linebreak": ["error", "before"],
410
- "vue/prefer-template": "error",
411
479
  "vue/prop-name-casing": ["error", "camelCase"],
412
- "vue/quote-props": ["error", "consistent-as-needed"],
413
- "vue/space-in-parens": ["error", "never"],
414
- "vue/space-infix-ops": "error",
415
- "vue/space-unary-ops": [
416
- "error",
417
- {
418
- words: true,
419
- nonwords: false
420
- }
421
- ],
422
- "vue/template-curly-spacing": "error",
423
- "vue/block-order": [
424
- "error",
425
- {
426
- order: ["script", "template", "style"]
427
- }
428
- ],
429
480
  "vue/attributes-order": [
430
481
  "error",
431
482
  {
@@ -510,6 +561,9 @@ var vue = (options = {}) => {
510
561
  multiline: 1
511
562
  }
512
563
  ],
564
+ ...disabledRules,
565
+ ...extensionRules,
566
+ ...unCategorizedRules,
513
567
  // Overrides rules
514
568
  ...options.overrides
515
569
  }
@@ -1130,6 +1184,16 @@ var imports = (options = {}) => [
1130
1184
  ];
1131
1185
 
1132
1186
  // src/configs/unicorn.ts
1187
+ var disabledRules2 = {
1188
+ "unicorn/better-regex": "off",
1189
+ "unicorn/prefer-top-level-await": "off",
1190
+ "unicorn/explicit-length-check": "off",
1191
+ "unicorn/no-array-callback-reference": "off",
1192
+ /**
1193
+ * @see https://caniuse.com/?search=globalThis
1194
+ */
1195
+ "unicorn/prefer-global-this": "off"
1196
+ };
1133
1197
  var unicorn = (options = {}) => [
1134
1198
  {
1135
1199
  name: "ntnyq/unicorn",
@@ -1137,15 +1201,6 @@ var unicorn = (options = {}) => [
1137
1201
  unicorn: default14
1138
1202
  },
1139
1203
  rules: {
1140
- // Disabled for now
1141
- "unicorn/better-regex": "off",
1142
- "unicorn/prefer-top-level-await": "off",
1143
- "unicorn/explicit-length-check": "off",
1144
- "unicorn/no-array-callback-reference": "off",
1145
- /**
1146
- * @see https://caniuse.com/?search=globalThis
1147
- */
1148
- "unicorn/prefer-global-this": "off",
1149
1204
  "unicorn/error-message": "error",
1150
1205
  "unicorn/escape-case": "error",
1151
1206
  "unicorn/no-new-buffer": "error",
@@ -1156,7 +1211,6 @@ var unicorn = (options = {}) => [
1156
1211
  "unicorn/no-unnecessary-await": "error",
1157
1212
  "unicorn/switch-case-braces": ["error", "avoid"],
1158
1213
  "unicorn/no-typeof-undefined": "error",
1159
- "unicorn/prefer-set-size": "error",
1160
1214
  "unicorn/prefer-regexp-test": "error",
1161
1215
  "unicorn/no-static-only-class": "error",
1162
1216
  "unicorn/no-zero-fractions": "error",
@@ -1176,6 +1230,7 @@ var unicorn = (options = {}) => [
1176
1230
  "unicorn/prefer-prototype-methods": "error",
1177
1231
  "unicorn/prefer-reflect-apply": "error",
1178
1232
  "unicorn/prefer-math-min-max": "error",
1233
+ "unicorn/prefer-structured-clone": "error",
1179
1234
  "unicorn/consistent-existence-index-check": "error",
1180
1235
  "unicorn/catch-error-name": [
1181
1236
  "error",
@@ -1186,6 +1241,7 @@ var unicorn = (options = {}) => [
1186
1241
  ],
1187
1242
  "unicorn/prefer-date-now": "error",
1188
1243
  // String
1244
+ "unicorn/prefer-code-point": "error",
1189
1245
  "unicorn/prefer-string-slice": "error",
1190
1246
  "unicorn/prefer-string-trim-start-end": "error",
1191
1247
  "unicorn/prefer-string-starts-ends-with": "error",
@@ -1207,6 +1263,11 @@ var unicorn = (options = {}) => [
1207
1263
  "unicorn/prefer-array-some": "error",
1208
1264
  "unicorn/prefer-array-flat-map": "error",
1209
1265
  "unicorn/prefer-array-index-of": "error",
1266
+ "unicorn/require-array-join-separator": "error",
1267
+ // Set
1268
+ "unicorn/prefer-set-has": "error",
1269
+ "unicorn/prefer-set-size": "error",
1270
+ ...disabledRules2,
1210
1271
  // Overrides rules
1211
1272
  ...options.overrides
1212
1273
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ntnyq/eslint-config",
3
3
  "type": "module",
4
- "version": "3.2.0",
4
+ "version": "3.2.2",
5
5
  "packageManager": "pnpm@9.12.3",
6
6
  "description": "An opinionated ESLint config preset of ntnyq",
7
7
  "keywords": [
@@ -58,17 +58,17 @@
58
58
  "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
59
59
  "@eslint/js": "^9.14.0",
60
60
  "@eslint/markdown": "^6.2.1",
61
- "@unocss/eslint-plugin": "^0.63.6",
62
- "@vitest/eslint-plugin": "^1.1.7",
61
+ "@unocss/eslint-plugin": "^0.64.0",
62
+ "@vitest/eslint-plugin": "^1.1.10",
63
63
  "eslint-config-flat-gitignore": "^0.3.0",
64
64
  "eslint-flat-config-utils": "^0.4.0",
65
65
  "eslint-merge-processors": "^0.1.0",
66
66
  "eslint-plugin-antfu": "^2.7.0",
67
67
  "eslint-plugin-command": "^0.2.6",
68
- "eslint-plugin-import-x": "^4.4.0",
69
- "eslint-plugin-jsdoc": "^50.4.3",
70
- "eslint-plugin-jsonc": "^2.16.0",
71
- "eslint-plugin-n": "^17.12.0",
68
+ "eslint-plugin-import-x": "^4.4.2",
69
+ "eslint-plugin-jsdoc": "^50.5.0",
70
+ "eslint-plugin-jsonc": "^2.18.1",
71
+ "eslint-plugin-n": "^17.13.1",
72
72
  "eslint-plugin-ntnyq": "^0.5.0",
73
73
  "eslint-plugin-perfectionist": "^3.9.1",
74
74
  "eslint-plugin-prettier": "^5.2.1",
@@ -76,21 +76,21 @@
76
76
  "eslint-plugin-toml": "^0.11.1",
77
77
  "eslint-plugin-unicorn": "^56.0.0",
78
78
  "eslint-plugin-unused-imports": "^4.1.4",
79
- "eslint-plugin-vue": "^9.30.0",
79
+ "eslint-plugin-vue": "^9.31.0",
80
80
  "eslint-plugin-yml": "^1.15.0",
81
- "globals": "^15.11.0",
81
+ "globals": "^15.12.0",
82
82
  "jsonc-eslint-parser": "^2.4.0",
83
83
  "local-pkg": "^0.5.0",
84
84
  "prettier": "^3.3.3",
85
85
  "toml-eslint-parser": "^0.10.0",
86
- "typescript-eslint": "^8.12.2",
86
+ "typescript-eslint": "^8.14.0",
87
87
  "vue-eslint-parser": "^9.4.3",
88
88
  "yaml-eslint-parser": "^1.2.3"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@ntnyq/prettier-config": "^1.21.3",
92
- "@types/node": "^22.8.6",
93
- "bumpp": "^9.8.0",
92
+ "@types/node": "^22.9.0",
93
+ "bumpp": "^9.8.1",
94
94
  "eslint": "^9.14.0",
95
95
  "eslint-typegen": "^0.3.2",
96
96
  "husky": "^9.1.6",
@@ -101,11 +101,16 @@
101
101
  "tsup": "^8.3.5",
102
102
  "tsx": "^4.19.2",
103
103
  "typescript": "^5.6.3",
104
- "zx": "^8.2.0"
104
+ "zx": "^8.2.2"
105
105
  },
106
106
  "engines": {
107
107
  "node": ">=18.18.0"
108
108
  },
109
+ "pnpm": {
110
+ "patchedDependencies": {
111
+ "@vitest/eslint-plugin": "patches/@vitest__eslint-plugin.patch"
112
+ }
113
+ },
109
114
  "prettier": "@ntnyq/prettier-config",
110
115
  "nano-staged": {
111
116
  "*.{js,ts,mjs,cjs,json,jsonc,md,yaml,yml}": "eslint --flag unstable_ts_config --fix"