@unshared/eslint-config 0.0.2 → 0.0.4
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 +85 -50
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +85 -50
- package/dist/index.js.map +1 -1
- package/package.json +3 -8
package/dist/index.cjs
CHANGED
|
@@ -14,7 +14,7 @@ function typescript(options) {
|
|
|
14
14
|
parserOptions: {
|
|
15
15
|
ecmaVersion: "latest",
|
|
16
16
|
sourceType: "module",
|
|
17
|
-
project: toArray.toArray(options.
|
|
17
|
+
project: toArray.toArray(options.tsConfigPath ?? "./tsconfig.json"),
|
|
18
18
|
tsconfigRootDir: node_process.cwd()
|
|
19
19
|
}
|
|
20
20
|
},
|
|
@@ -87,7 +87,7 @@ function typescript(options) {
|
|
|
87
87
|
"@stylistic/no-multiple-empty-lines": ["error", {
|
|
88
88
|
max: 1,
|
|
89
89
|
maxBOF: 0,
|
|
90
|
-
maxEOF:
|
|
90
|
+
maxEOF: 0
|
|
91
91
|
}],
|
|
92
92
|
/**
|
|
93
93
|
* Enforce a trailing comma after the last element or property in a multiline
|
|
@@ -158,6 +158,7 @@ function typescript(options) {
|
|
|
158
158
|
"function-call-spacing": "off",
|
|
159
159
|
"generator-star-spacing": "off",
|
|
160
160
|
"template-curly-spacing": "off",
|
|
161
|
+
"object-property-newline ": "off",
|
|
161
162
|
"newline-per-chained-call": "off",
|
|
162
163
|
"computed-property-spacing": "off",
|
|
163
164
|
"lines-between-class-members": "off",
|
|
@@ -179,6 +180,7 @@ function typescript(options) {
|
|
|
179
180
|
"@stylistic/array-bracket-newline": ["error", "consistent"],
|
|
180
181
|
"@stylistic/function-call-spacing": ["error", "never"],
|
|
181
182
|
"@stylistic/template-curly-spacing": ["error", "never"],
|
|
183
|
+
"@stylistic/object-property-newline": ["error", { allowAllPropertiesOnSameLine: !0 }],
|
|
182
184
|
"@stylistic/generator-star-spacing": ["error", { before: !0, after: !0 }],
|
|
183
185
|
"@stylistic/computed-property-spacing": ["error", "never"],
|
|
184
186
|
"@stylistic/multiline-ternary": ["error", "always-multiline"],
|
|
@@ -254,6 +256,10 @@ function typescript(options) {
|
|
|
254
256
|
disallowTypeAnnotations: !1,
|
|
255
257
|
prefer: "no-type-imports"
|
|
256
258
|
}],
|
|
259
|
+
"perfectionist/sort-exports": ["error", {
|
|
260
|
+
type: "alphabetical",
|
|
261
|
+
"ignore-case": !1
|
|
262
|
+
}],
|
|
257
263
|
"perfectionist/sort-named-imports": ["error", { type: "natural" }],
|
|
258
264
|
"perfectionist/sort-imports": ["error", {
|
|
259
265
|
"newlines-between": "never",
|
|
@@ -354,10 +360,10 @@ function typescript(options) {
|
|
|
354
360
|
}
|
|
355
361
|
];
|
|
356
362
|
}
|
|
357
|
-
const VUE_RECOMMENDED_RULES = vuePlugin.configs?.["flat/recommended"].rules, VUE_BASE_RULES = vuePlugin.configs?.base.rules;
|
|
358
363
|
function vue(options) {
|
|
359
364
|
const TYPESCRIPT_CONFIG = typescript(options).at(1);
|
|
360
365
|
return [
|
|
366
|
+
...vuePlugin.configs?.["flat/base"],
|
|
361
367
|
{
|
|
362
368
|
plugins: {
|
|
363
369
|
vue: vuePlugin,
|
|
@@ -396,11 +402,21 @@ function vue(options) {
|
|
|
396
402
|
"**/*.vue"
|
|
397
403
|
],
|
|
398
404
|
rules: {
|
|
399
|
-
...VUE_BASE_RULES,
|
|
400
|
-
...VUE_RECOMMENDED_RULES,
|
|
401
405
|
...TYPESCRIPT_CONFIG.rules,
|
|
402
|
-
|
|
406
|
+
// @ts-expect-error: ignore
|
|
407
|
+
...vuePlugin.configs["flat/recommended"].rules,
|
|
408
|
+
// @ts-expect-error: ignore
|
|
409
|
+
...vuePlugin.configs["flat/strongly-recommended"].rules,
|
|
410
|
+
// @ts-expect-error: ignore
|
|
411
|
+
...vuePlugin.configs["flat/essential"].rules,
|
|
412
|
+
/**
|
|
413
|
+
* Disable some TypeScript rules that may conflict with the Vue SFC parser.
|
|
414
|
+
*/
|
|
403
415
|
"@typescript-eslint/no-unsafe-call": "off",
|
|
416
|
+
"@typescript-eslint/no-unsafe-return": "off",
|
|
417
|
+
"@typescript-eslint/no-misused-promises": "off",
|
|
418
|
+
"@typescript-eslint/no-unsafe-assignment": "off",
|
|
419
|
+
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
404
420
|
/**
|
|
405
421
|
* Enforces consistent usage of type imports. This rule will enforce the use
|
|
406
422
|
* of `type` imports to make it easier for the Vue SFC compiler to analyze
|
|
@@ -409,11 +425,11 @@ function vue(options) {
|
|
|
409
425
|
* @see https://typescript-eslint.io/rules/consistent-type-imports
|
|
410
426
|
* @see https://vuejs.github.io/vetur/guide/FAQ.html#why-does-vetur-show-cannot-find-module-xxx
|
|
411
427
|
*/
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
}],
|
|
428
|
+
// '@typescript-eslint/consistent-type-imports': ['error', {
|
|
429
|
+
// disallowTypeAnnotations: false,
|
|
430
|
+
// fixStyle: 'inline-type-imports',
|
|
431
|
+
// prefer: 'type-imports',
|
|
432
|
+
// }],
|
|
417
433
|
/**
|
|
418
434
|
* Enforce the order of the top-level properties in the component. This rule
|
|
419
435
|
* helps to maintain consistency and readability by enforcing a predictable
|
|
@@ -435,7 +451,9 @@ function vue(options) {
|
|
|
435
451
|
* consistency and maintainability.
|
|
436
452
|
*
|
|
437
453
|
* @see https://eslint.vuejs.org/rules/vue/prefer-define-options.html
|
|
454
|
+
* @see https://eslint.vuejs.org/rules/vue/component-api-style.html
|
|
438
455
|
*/
|
|
456
|
+
"vue/prefer-define-options": "error",
|
|
439
457
|
"vue/component-api-style": ["error", ["script-setup"]],
|
|
440
458
|
/**
|
|
441
459
|
* Enforce the component name casing to be PascalCase. This rules helps identify
|
|
@@ -455,6 +473,10 @@ function vue(options) {
|
|
|
455
473
|
* @see https://eslint.vuejs.org/rules/html-comment-content-newline.html
|
|
456
474
|
*/
|
|
457
475
|
"vue/html-comment-content-spacing": ["error", "always"],
|
|
476
|
+
"vue/html-comment-content-newline": ["error", {
|
|
477
|
+
multiline: "always",
|
|
478
|
+
singleline: "never"
|
|
479
|
+
}],
|
|
458
480
|
/**
|
|
459
481
|
* Enforce consistent spacing between HTML / Component tags. This makes it
|
|
460
482
|
* easier to read and understand the structure of the component.
|
|
@@ -462,11 +484,17 @@ function vue(options) {
|
|
|
462
484
|
* @see https://eslint.vuejs.org/rules/padding-line-between-blocks.html
|
|
463
485
|
* @see https://eslint.vuejs.org/rules/padding-line-between-tags.html
|
|
464
486
|
*/
|
|
465
|
-
"vue/
|
|
487
|
+
"vue/padding-line-between-blocks": ["error", "always"],
|
|
466
488
|
"vue/padding-line-between-tags": ["error", [
|
|
467
489
|
{ blankLine: "consistent", next: "*", prev: "*" },
|
|
468
490
|
{ blankLine: "always", next: "*", prev: "comment" }
|
|
469
491
|
]],
|
|
492
|
+
"vue/html-comment-indent": ["error", 2],
|
|
493
|
+
"vue/multiline-html-element-content-newline": ["error", {
|
|
494
|
+
allowEmptyLines: !0,
|
|
495
|
+
ignores: [],
|
|
496
|
+
ignoreWhenEmpty: !0
|
|
497
|
+
}],
|
|
470
498
|
/**
|
|
471
499
|
* Enforce consistent spacing and newlines in the template. This rule helps
|
|
472
500
|
* to maintain consistency and readability by enforcing a predictable
|
|
@@ -496,11 +524,7 @@ function vue(options) {
|
|
|
496
524
|
* @see https://eslint.vuejs.org/rules/multi-word-component-names.html
|
|
497
525
|
*/
|
|
498
526
|
"vue/multi-word-component-names": "off",
|
|
499
|
-
"vue/
|
|
500
|
-
allowEmptyLines: !0,
|
|
501
|
-
ignores: [],
|
|
502
|
-
ignoreWhenEmpty: !0
|
|
503
|
-
}],
|
|
527
|
+
"vue/no-reserved-component-names": "off",
|
|
504
528
|
/**
|
|
505
529
|
* Reports the destructuring or member expression of props passed to setup
|
|
506
530
|
* causing the value to lose reactivity. This rule helps to avoid common
|
|
@@ -533,6 +557,7 @@ function vue(options) {
|
|
|
533
557
|
* @see https://eslint.vuejs.org/rules/v-on-handler-style.html
|
|
534
558
|
*/
|
|
535
559
|
"vue/v-on-style": ["error", "shorthand"],
|
|
560
|
+
"vue/return-in-computed-property": "off",
|
|
536
561
|
"vue/no-sparse-arrays": "error",
|
|
537
562
|
"vue/no-unused-emit-declarations": "error",
|
|
538
563
|
"vue/no-use-v-else-with-v-for": "error",
|
|
@@ -550,8 +575,6 @@ function vue(options) {
|
|
|
550
575
|
}
|
|
551
576
|
],
|
|
552
577
|
"vue/operator-linebreak": ["error", "before"],
|
|
553
|
-
"vue/padding-line-between-blocks": ["error", "always"],
|
|
554
|
-
"vue/prefer-define-options": "error",
|
|
555
578
|
"vue/prefer-import-from-vue": "off",
|
|
556
579
|
"vue/prefer-separate-static-class": "error",
|
|
557
580
|
"vue/prefer-template": "error",
|
|
@@ -591,10 +614,6 @@ function vue(options) {
|
|
|
591
614
|
},
|
|
592
615
|
singleline: "never"
|
|
593
616
|
}],
|
|
594
|
-
"vue/html-comment-content-newline": ["error", {
|
|
595
|
-
multiline: "always",
|
|
596
|
-
singleline: "never"
|
|
597
|
-
}],
|
|
598
617
|
"vue/no-constant-condition": "warn",
|
|
599
618
|
"vue/no-empty-pattern": "error",
|
|
600
619
|
"vue/no-extra-parens": ["error", "functions"],
|
|
@@ -612,12 +631,14 @@ function vue(options) {
|
|
|
612
631
|
"vue/space-infix-ops": "error",
|
|
613
632
|
"vue/space-unary-ops": ["error", { nonwords: !1, words: !0 }],
|
|
614
633
|
"vue/template-curly-spacing": "error",
|
|
615
|
-
"vue/v-on-handler-style": ["error", "inline"]
|
|
634
|
+
"vue/v-on-handler-style": ["error", "inline"],
|
|
635
|
+
/** User-defined rules */
|
|
636
|
+
...options.rules
|
|
616
637
|
}
|
|
617
638
|
}
|
|
618
639
|
];
|
|
619
640
|
}
|
|
620
|
-
function vitest() {
|
|
641
|
+
function vitest(options) {
|
|
621
642
|
return [
|
|
622
643
|
{
|
|
623
644
|
plugins: {
|
|
@@ -701,13 +722,15 @@ function vitest() {
|
|
|
701
722
|
mustMatch: {
|
|
702
723
|
test: ["^should"]
|
|
703
724
|
}
|
|
704
|
-
}]
|
|
725
|
+
}],
|
|
726
|
+
/** User-defined rules */
|
|
727
|
+
...options.rules
|
|
705
728
|
}
|
|
706
729
|
}
|
|
707
730
|
];
|
|
708
731
|
}
|
|
709
732
|
const UNICORN_RECOMMENDED_RULES = unicornPlugin.configs.recommended.rules;
|
|
710
|
-
function unicorn() {
|
|
733
|
+
function unicorn(options) {
|
|
711
734
|
return [
|
|
712
735
|
{
|
|
713
736
|
plugins: {
|
|
@@ -811,11 +834,13 @@ function unicorn() {
|
|
|
811
834
|
}
|
|
812
835
|
}],
|
|
813
836
|
"unicorn/throw-new-error": "error"
|
|
814
|
-
}
|
|
837
|
+
},
|
|
838
|
+
/** User-defined rules */
|
|
839
|
+
...options.rules
|
|
815
840
|
}
|
|
816
841
|
];
|
|
817
842
|
}
|
|
818
|
-
function sonarjs() {
|
|
843
|
+
function sonarjs(options) {
|
|
819
844
|
return new eslintrc.FlatCompat().config({
|
|
820
845
|
extends: [
|
|
821
846
|
"plugin:sonarjs/recommended"
|
|
@@ -852,11 +877,13 @@ function sonarjs() {
|
|
|
852
877
|
"sonarjs/no-one-iteration-loop": "off",
|
|
853
878
|
"sonarjs/no-redundant-jump": "off",
|
|
854
879
|
"sonarjs/no-unused-collection": "off",
|
|
855
|
-
"sonarjs/no-use-of-empty-return-value": "off"
|
|
880
|
+
"sonarjs/no-use-of-empty-return-value": "off",
|
|
881
|
+
/** User-defined rules */
|
|
882
|
+
...options.rules
|
|
856
883
|
}
|
|
857
884
|
});
|
|
858
885
|
}
|
|
859
|
-
function node() {
|
|
886
|
+
function node(options) {
|
|
860
887
|
return [
|
|
861
888
|
{
|
|
862
889
|
plugins: {
|
|
@@ -906,7 +933,9 @@ function node() {
|
|
|
906
933
|
*
|
|
907
934
|
* @see https://github.com/eslint-community/eslint-plugin-n/blob/HEAD/docs/rules/prefer-node-protocol.md
|
|
908
935
|
*/
|
|
909
|
-
"n/prefer-node-protocol": "error"
|
|
936
|
+
"n/prefer-node-protocol": "error",
|
|
937
|
+
/** User-defined rules */
|
|
938
|
+
...options.rules
|
|
910
939
|
},
|
|
911
940
|
settings: {
|
|
912
941
|
node: {
|
|
@@ -1118,7 +1147,7 @@ function jsonPackage() {
|
|
|
1118
1147
|
}
|
|
1119
1148
|
];
|
|
1120
1149
|
}
|
|
1121
|
-
function configJson() {
|
|
1150
|
+
function configJson(options) {
|
|
1122
1151
|
return [
|
|
1123
1152
|
...jsonc.configs["flat/recommended-with-json"],
|
|
1124
1153
|
{
|
|
@@ -1132,12 +1161,14 @@ function configJson() {
|
|
|
1132
1161
|
*
|
|
1133
1162
|
* @see https://ota-meshi.github.io/eslint-plugin-jsonc/rules/auto.html
|
|
1134
1163
|
*/
|
|
1135
|
-
"jsonc/auto": "error"
|
|
1164
|
+
"jsonc/auto": "error",
|
|
1165
|
+
/** User-defined rules */
|
|
1166
|
+
...options.rules
|
|
1136
1167
|
}
|
|
1137
1168
|
}
|
|
1138
1169
|
];
|
|
1139
1170
|
}
|
|
1140
|
-
function jsdoc() {
|
|
1171
|
+
function jsdoc(options) {
|
|
1141
1172
|
return [
|
|
1142
1173
|
pluginJsdoc.configs["flat/recommended-typescript-flavor-error"],
|
|
1143
1174
|
{
|
|
@@ -1199,12 +1230,14 @@ function jsdoc() {
|
|
|
1199
1230
|
*
|
|
1200
1231
|
* @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/tag-lines.md
|
|
1201
1232
|
*/
|
|
1202
|
-
"jsdoc/tag-lines": ["error", "any", { startLines: 1 }]
|
|
1233
|
+
"jsdoc/tag-lines": ["error", "any", { startLines: 1 }],
|
|
1234
|
+
/** User-defined rules */
|
|
1235
|
+
...options.rules
|
|
1203
1236
|
}
|
|
1204
1237
|
}
|
|
1205
1238
|
];
|
|
1206
1239
|
}
|
|
1207
|
-
function eslintComments() {
|
|
1240
|
+
function eslintComments(options) {
|
|
1208
1241
|
return [
|
|
1209
1242
|
{
|
|
1210
1243
|
plugins: {
|
|
@@ -1247,12 +1280,14 @@ function eslintComments() {
|
|
|
1247
1280
|
*
|
|
1248
1281
|
* @see https://mysticatea.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable
|
|
1249
1282
|
*/
|
|
1250
|
-
"eslint-comments/no-unused-disable": "error"
|
|
1283
|
+
"eslint-comments/no-unused-disable": "error",
|
|
1284
|
+
/** User-defined rules */
|
|
1285
|
+
...options.rules
|
|
1251
1286
|
}
|
|
1252
1287
|
}
|
|
1253
1288
|
];
|
|
1254
1289
|
}
|
|
1255
|
-
function antfu() {
|
|
1290
|
+
function antfu(options) {
|
|
1256
1291
|
return [
|
|
1257
1292
|
{
|
|
1258
1293
|
plugins: {
|
|
@@ -1284,27 +1319,27 @@ function antfu() {
|
|
|
1284
1319
|
*
|
|
1285
1320
|
* @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md
|
|
1286
1321
|
*/
|
|
1287
|
-
"object-curly-newline": "off"
|
|
1322
|
+
"object-curly-newline": "off",
|
|
1323
|
+
/** User-defined rules */
|
|
1324
|
+
...options.rules
|
|
1288
1325
|
}
|
|
1289
1326
|
}
|
|
1290
1327
|
];
|
|
1291
1328
|
}
|
|
1292
1329
|
function all(options = {}) {
|
|
1293
1330
|
return [
|
|
1294
|
-
...antfu(),
|
|
1295
|
-
...eslintComments(),
|
|
1296
|
-
...jsdoc(),
|
|
1297
|
-
...configJson(),
|
|
1331
|
+
...antfu(options),
|
|
1332
|
+
...eslintComments(options),
|
|
1333
|
+
...jsdoc(options),
|
|
1334
|
+
...configJson(options),
|
|
1298
1335
|
...jsonPackage(),
|
|
1299
1336
|
...jsonTsconfig(),
|
|
1300
|
-
...node(),
|
|
1301
|
-
...sonarjs(),
|
|
1337
|
+
...node(options),
|
|
1338
|
+
...sonarjs(options),
|
|
1302
1339
|
...typescript(options),
|
|
1303
|
-
...unicorn(),
|
|
1304
|
-
...vitest(),
|
|
1340
|
+
...unicorn(options),
|
|
1341
|
+
...vitest(options),
|
|
1305
1342
|
...vue(options),
|
|
1306
|
-
// ...promise(),
|
|
1307
|
-
// ...markdown(),
|
|
1308
1343
|
{
|
|
1309
1344
|
ignores: [
|
|
1310
1345
|
"**/dist",
|