@unshared/eslint-config 0.0.2 → 0.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/dist/index.cjs +81 -50
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +81 -50
- package/dist/index.js.map +1 -1
- package/package.json +3 -8
package/dist/index.js
CHANGED
@@ -30,7 +30,7 @@ function typescript(options) {
|
|
30
30
|
parserOptions: {
|
31
31
|
ecmaVersion: "latest",
|
32
32
|
sourceType: "module",
|
33
|
-
project: toArray(options.
|
33
|
+
project: toArray(options.tsConfigPath ?? "./tsconfig.json"),
|
34
34
|
tsconfigRootDir: cwd()
|
35
35
|
}
|
36
36
|
},
|
@@ -103,7 +103,7 @@ function typescript(options) {
|
|
103
103
|
"@stylistic/no-multiple-empty-lines": ["error", {
|
104
104
|
max: 1,
|
105
105
|
maxBOF: 0,
|
106
|
-
maxEOF:
|
106
|
+
maxEOF: 0
|
107
107
|
}],
|
108
108
|
/**
|
109
109
|
* Enforce a trailing comma after the last element or property in a multiline
|
@@ -174,6 +174,7 @@ function typescript(options) {
|
|
174
174
|
"function-call-spacing": "off",
|
175
175
|
"generator-star-spacing": "off",
|
176
176
|
"template-curly-spacing": "off",
|
177
|
+
"object-property-newline ": "off",
|
177
178
|
"newline-per-chained-call": "off",
|
178
179
|
"computed-property-spacing": "off",
|
179
180
|
"lines-between-class-members": "off",
|
@@ -195,6 +196,7 @@ function typescript(options) {
|
|
195
196
|
"@stylistic/array-bracket-newline": ["error", "consistent"],
|
196
197
|
"@stylistic/function-call-spacing": ["error", "never"],
|
197
198
|
"@stylistic/template-curly-spacing": ["error", "never"],
|
199
|
+
"@stylistic/object-property-newline": ["error", { allowAllPropertiesOnSameLine: !0 }],
|
198
200
|
"@stylistic/generator-star-spacing": ["error", { before: !0, after: !0 }],
|
199
201
|
"@stylistic/computed-property-spacing": ["error", "never"],
|
200
202
|
"@stylistic/multiline-ternary": ["error", "always-multiline"],
|
@@ -370,10 +372,10 @@ function typescript(options) {
|
|
370
372
|
}
|
371
373
|
];
|
372
374
|
}
|
373
|
-
const VUE_RECOMMENDED_RULES = vuePlugin.configs?.["flat/recommended"].rules, VUE_BASE_RULES = vuePlugin.configs?.base.rules;
|
374
375
|
function vue(options) {
|
375
376
|
const TYPESCRIPT_CONFIG = typescript(options).at(1);
|
376
377
|
return [
|
378
|
+
...vuePlugin.configs?.["flat/base"],
|
377
379
|
{
|
378
380
|
plugins: {
|
379
381
|
vue: vuePlugin,
|
@@ -412,11 +414,21 @@ function vue(options) {
|
|
412
414
|
"**/*.vue"
|
413
415
|
],
|
414
416
|
rules: {
|
415
|
-
...VUE_BASE_RULES,
|
416
|
-
...VUE_RECOMMENDED_RULES,
|
417
417
|
...TYPESCRIPT_CONFIG.rules,
|
418
|
-
|
418
|
+
// @ts-expect-error: ignore
|
419
|
+
...vuePlugin.configs["flat/recommended"].rules,
|
420
|
+
// @ts-expect-error: ignore
|
421
|
+
...vuePlugin.configs["flat/strongly-recommended"].rules,
|
422
|
+
// @ts-expect-error: ignore
|
423
|
+
...vuePlugin.configs["flat/essential"].rules,
|
424
|
+
/**
|
425
|
+
* Disable some TypeScript rules that may conflict with the Vue SFC parser.
|
426
|
+
*/
|
419
427
|
"@typescript-eslint/no-unsafe-call": "off",
|
428
|
+
"@typescript-eslint/no-unsafe-return": "off",
|
429
|
+
"@typescript-eslint/no-misused-promises": "off",
|
430
|
+
"@typescript-eslint/no-unsafe-assignment": "off",
|
431
|
+
"@typescript-eslint/no-unsafe-member-access": "off",
|
420
432
|
/**
|
421
433
|
* Enforces consistent usage of type imports. This rule will enforce the use
|
422
434
|
* of `type` imports to make it easier for the Vue SFC compiler to analyze
|
@@ -425,11 +437,11 @@ function vue(options) {
|
|
425
437
|
* @see https://typescript-eslint.io/rules/consistent-type-imports
|
426
438
|
* @see https://vuejs.github.io/vetur/guide/FAQ.html#why-does-vetur-show-cannot-find-module-xxx
|
427
439
|
*/
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
}],
|
440
|
+
// '@typescript-eslint/consistent-type-imports': ['error', {
|
441
|
+
// disallowTypeAnnotations: false,
|
442
|
+
// fixStyle: 'inline-type-imports',
|
443
|
+
// prefer: 'type-imports',
|
444
|
+
// }],
|
433
445
|
/**
|
434
446
|
* Enforce the order of the top-level properties in the component. This rule
|
435
447
|
* helps to maintain consistency and readability by enforcing a predictable
|
@@ -451,7 +463,9 @@ function vue(options) {
|
|
451
463
|
* consistency and maintainability.
|
452
464
|
*
|
453
465
|
* @see https://eslint.vuejs.org/rules/vue/prefer-define-options.html
|
466
|
+
* @see https://eslint.vuejs.org/rules/vue/component-api-style.html
|
454
467
|
*/
|
468
|
+
"vue/prefer-define-options": "error",
|
455
469
|
"vue/component-api-style": ["error", ["script-setup"]],
|
456
470
|
/**
|
457
471
|
* Enforce the component name casing to be PascalCase. This rules helps identify
|
@@ -471,6 +485,10 @@ function vue(options) {
|
|
471
485
|
* @see https://eslint.vuejs.org/rules/html-comment-content-newline.html
|
472
486
|
*/
|
473
487
|
"vue/html-comment-content-spacing": ["error", "always"],
|
488
|
+
"vue/html-comment-content-newline": ["error", {
|
489
|
+
multiline: "always",
|
490
|
+
singleline: "never"
|
491
|
+
}],
|
474
492
|
/**
|
475
493
|
* Enforce consistent spacing between HTML / Component tags. This makes it
|
476
494
|
* easier to read and understand the structure of the component.
|
@@ -478,11 +496,17 @@ function vue(options) {
|
|
478
496
|
* @see https://eslint.vuejs.org/rules/padding-line-between-blocks.html
|
479
497
|
* @see https://eslint.vuejs.org/rules/padding-line-between-tags.html
|
480
498
|
*/
|
481
|
-
"vue/
|
499
|
+
"vue/padding-line-between-blocks": ["error", "always"],
|
482
500
|
"vue/padding-line-between-tags": ["error", [
|
483
501
|
{ blankLine: "consistent", next: "*", prev: "*" },
|
484
502
|
{ blankLine: "always", next: "*", prev: "comment" }
|
485
503
|
]],
|
504
|
+
"vue/html-comment-indent": ["error", 2],
|
505
|
+
"vue/multiline-html-element-content-newline": ["error", {
|
506
|
+
allowEmptyLines: !0,
|
507
|
+
ignores: [],
|
508
|
+
ignoreWhenEmpty: !0
|
509
|
+
}],
|
486
510
|
/**
|
487
511
|
* Enforce consistent spacing and newlines in the template. This rule helps
|
488
512
|
* to maintain consistency and readability by enforcing a predictable
|
@@ -512,11 +536,7 @@ function vue(options) {
|
|
512
536
|
* @see https://eslint.vuejs.org/rules/multi-word-component-names.html
|
513
537
|
*/
|
514
538
|
"vue/multi-word-component-names": "off",
|
515
|
-
"vue/
|
516
|
-
allowEmptyLines: !0,
|
517
|
-
ignores: [],
|
518
|
-
ignoreWhenEmpty: !0
|
519
|
-
}],
|
539
|
+
"vue/no-reserved-component-names": "off",
|
520
540
|
/**
|
521
541
|
* Reports the destructuring or member expression of props passed to setup
|
522
542
|
* causing the value to lose reactivity. This rule helps to avoid common
|
@@ -549,6 +569,7 @@ function vue(options) {
|
|
549
569
|
* @see https://eslint.vuejs.org/rules/v-on-handler-style.html
|
550
570
|
*/
|
551
571
|
"vue/v-on-style": ["error", "shorthand"],
|
572
|
+
"vue/return-in-computed-property": "off",
|
552
573
|
"vue/no-sparse-arrays": "error",
|
553
574
|
"vue/no-unused-emit-declarations": "error",
|
554
575
|
"vue/no-use-v-else-with-v-for": "error",
|
@@ -566,8 +587,6 @@ function vue(options) {
|
|
566
587
|
}
|
567
588
|
],
|
568
589
|
"vue/operator-linebreak": ["error", "before"],
|
569
|
-
"vue/padding-line-between-blocks": ["error", "always"],
|
570
|
-
"vue/prefer-define-options": "error",
|
571
590
|
"vue/prefer-import-from-vue": "off",
|
572
591
|
"vue/prefer-separate-static-class": "error",
|
573
592
|
"vue/prefer-template": "error",
|
@@ -607,10 +626,6 @@ function vue(options) {
|
|
607
626
|
},
|
608
627
|
singleline: "never"
|
609
628
|
}],
|
610
|
-
"vue/html-comment-content-newline": ["error", {
|
611
|
-
multiline: "always",
|
612
|
-
singleline: "never"
|
613
|
-
}],
|
614
629
|
"vue/no-constant-condition": "warn",
|
615
630
|
"vue/no-empty-pattern": "error",
|
616
631
|
"vue/no-extra-parens": ["error", "functions"],
|
@@ -628,12 +643,14 @@ function vue(options) {
|
|
628
643
|
"vue/space-infix-ops": "error",
|
629
644
|
"vue/space-unary-ops": ["error", { nonwords: !1, words: !0 }],
|
630
645
|
"vue/template-curly-spacing": "error",
|
631
|
-
"vue/v-on-handler-style": ["error", "inline"]
|
646
|
+
"vue/v-on-handler-style": ["error", "inline"],
|
647
|
+
/** User-defined rules */
|
648
|
+
...options.rules
|
632
649
|
}
|
633
650
|
}
|
634
651
|
];
|
635
652
|
}
|
636
|
-
function vitest() {
|
653
|
+
function vitest(options) {
|
637
654
|
return [
|
638
655
|
{
|
639
656
|
plugins: {
|
@@ -717,13 +734,15 @@ function vitest() {
|
|
717
734
|
mustMatch: {
|
718
735
|
test: ["^should"]
|
719
736
|
}
|
720
|
-
}]
|
737
|
+
}],
|
738
|
+
/** User-defined rules */
|
739
|
+
...options.rules
|
721
740
|
}
|
722
741
|
}
|
723
742
|
];
|
724
743
|
}
|
725
744
|
const UNICORN_RECOMMENDED_RULES = unicornPlugin.configs.recommended.rules;
|
726
|
-
function unicorn() {
|
745
|
+
function unicorn(options) {
|
727
746
|
return [
|
728
747
|
{
|
729
748
|
plugins: {
|
@@ -827,11 +846,13 @@ function unicorn() {
|
|
827
846
|
}
|
828
847
|
}],
|
829
848
|
"unicorn/throw-new-error": "error"
|
830
|
-
}
|
849
|
+
},
|
850
|
+
/** User-defined rules */
|
851
|
+
...options.rules
|
831
852
|
}
|
832
853
|
];
|
833
854
|
}
|
834
|
-
function sonarjs() {
|
855
|
+
function sonarjs(options) {
|
835
856
|
return new FlatCompat().config({
|
836
857
|
extends: [
|
837
858
|
"plugin:sonarjs/recommended"
|
@@ -868,11 +889,13 @@ function sonarjs() {
|
|
868
889
|
"sonarjs/no-one-iteration-loop": "off",
|
869
890
|
"sonarjs/no-redundant-jump": "off",
|
870
891
|
"sonarjs/no-unused-collection": "off",
|
871
|
-
"sonarjs/no-use-of-empty-return-value": "off"
|
892
|
+
"sonarjs/no-use-of-empty-return-value": "off",
|
893
|
+
/** User-defined rules */
|
894
|
+
...options.rules
|
872
895
|
}
|
873
896
|
});
|
874
897
|
}
|
875
|
-
function node() {
|
898
|
+
function node(options) {
|
876
899
|
return [
|
877
900
|
{
|
878
901
|
plugins: {
|
@@ -922,7 +945,9 @@ function node() {
|
|
922
945
|
*
|
923
946
|
* @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md
|
924
947
|
*/
|
925
|
-
"n/prefer-node-protocol": "error"
|
948
|
+
"n/prefer-node-protocol": "error",
|
949
|
+
/** User-defined rules */
|
950
|
+
...options.rules
|
926
951
|
},
|
927
952
|
settings: {
|
928
953
|
node: {
|
@@ -1134,7 +1159,7 @@ function jsonPackage() {
|
|
1134
1159
|
}
|
1135
1160
|
];
|
1136
1161
|
}
|
1137
|
-
function configJson() {
|
1162
|
+
function configJson(options) {
|
1138
1163
|
return [
|
1139
1164
|
...jsonc.configs["flat/recommended-with-json"],
|
1140
1165
|
{
|
@@ -1148,12 +1173,14 @@ function configJson() {
|
|
1148
1173
|
*
|
1149
1174
|
* @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html
|
1150
1175
|
*/
|
1151
|
-
"jsonc/auto": "error"
|
1176
|
+
"jsonc/auto": "error",
|
1177
|
+
/** User-defined rules */
|
1178
|
+
...options.rules
|
1152
1179
|
}
|
1153
1180
|
}
|
1154
1181
|
];
|
1155
1182
|
}
|
1156
|
-
function jsdoc() {
|
1183
|
+
function jsdoc(options) {
|
1157
1184
|
return [
|
1158
1185
|
pluginJsdoc.configs["flat/recommended-typescript-flavor-error"],
|
1159
1186
|
{
|
@@ -1215,12 +1242,14 @@ function jsdoc() {
|
|
1215
1242
|
*
|
1216
1243
|
* @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md
|
1217
1244
|
*/
|
1218
|
-
"jsdoc/tag-lines": ["error", "any", { startLines: 1 }]
|
1245
|
+
"jsdoc/tag-lines": ["error", "any", { startLines: 1 }],
|
1246
|
+
/** User-defined rules */
|
1247
|
+
...options.rules
|
1219
1248
|
}
|
1220
1249
|
}
|
1221
1250
|
];
|
1222
1251
|
}
|
1223
|
-
function eslintComments() {
|
1252
|
+
function eslintComments(options) {
|
1224
1253
|
return [
|
1225
1254
|
{
|
1226
1255
|
plugins: {
|
@@ -1263,12 +1292,14 @@ function eslintComments() {
|
|
1263
1292
|
*
|
1264
1293
|
* @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable
|
1265
1294
|
*/
|
1266
|
-
"eslint-comments/no-unused-disable": "error"
|
1295
|
+
"eslint-comments/no-unused-disable": "error",
|
1296
|
+
/** User-defined rules */
|
1297
|
+
...options.rules
|
1267
1298
|
}
|
1268
1299
|
}
|
1269
1300
|
];
|
1270
1301
|
}
|
1271
|
-
function antfu() {
|
1302
|
+
function antfu(options) {
|
1272
1303
|
return [
|
1273
1304
|
{
|
1274
1305
|
plugins: {
|
@@ -1300,27 +1331,27 @@ function antfu() {
|
|
1300
1331
|
*
|
1301
1332
|
* @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md
|
1302
1333
|
*/
|
1303
|
-
"object-curly-newline": "off"
|
1334
|
+
"object-curly-newline": "off",
|
1335
|
+
/** User-defined rules */
|
1336
|
+
...options.rules
|
1304
1337
|
}
|
1305
1338
|
}
|
1306
1339
|
];
|
1307
1340
|
}
|
1308
1341
|
function all(options = {}) {
|
1309
1342
|
return [
|
1310
|
-
...antfu(),
|
1311
|
-
...eslintComments(),
|
1312
|
-
...jsdoc(),
|
1313
|
-
...configJson(),
|
1343
|
+
...antfu(options),
|
1344
|
+
...eslintComments(options),
|
1345
|
+
...jsdoc(options),
|
1346
|
+
...configJson(options),
|
1314
1347
|
...jsonPackage(),
|
1315
1348
|
...jsonTsconfig(),
|
1316
|
-
...node(),
|
1317
|
-
...sonarjs(),
|
1349
|
+
...node(options),
|
1350
|
+
...sonarjs(options),
|
1318
1351
|
...typescript(options),
|
1319
|
-
...unicorn(),
|
1320
|
-
...vitest(),
|
1352
|
+
...unicorn(options),
|
1353
|
+
...vitest(options),
|
1321
1354
|
...vue(options),
|
1322
|
-
// ...promise(),
|
1323
|
-
// ...markdown(),
|
1324
1355
|
{
|
1325
1356
|
ignores: [
|
1326
1357
|
"**/dist",
|