@shayanthenerd/eslint-config 0.28.2 → 0.28.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.
@@ -45,11 +45,12 @@ function getTailwindRules(options) {
45
45
  }],
46
46
  "better-tailwindcss/enforce-consistent-variant-order": "warn",
47
47
  "better-tailwindcss/enforce-logical-properties": ["warn", { ignore: nonLogicalTailwindUtilityPatterns }],
48
- "better-tailwindcss/no-duplicate-classes": "error",
48
+ "better-tailwindcss/no-concatenated-classes": "error",
49
+ "better-tailwindcss/no-conflicting-classes": "error",
49
50
  "better-tailwindcss/no-deprecated-classes": "error",
50
- "better-tailwindcss/no-unnecessary-whitespace": "warn",
51
+ "better-tailwindcss/no-duplicate-classes": "error",
51
52
  "better-tailwindcss/no-unknown-classes": [isTailwindV4 ? "warn" : "off", { ignore: userIgnoredUnknownClasses }],
52
- "better-tailwindcss/no-conflicting-classes": "error"
53
+ "better-tailwindcss/no-unnecessary-whitespace": "warn"
53
54
  };
54
55
  }
55
56
  //#endregion
@@ -238,11 +238,7 @@ function getVueRules(options) {
238
238
  multiline: true,
239
239
  consistent: true
240
240
  }],
241
- "vue/object-curly-spacing": [
242
- "warn",
243
- "always",
244
- { emptyObjects: "never" }
245
- ],
241
+ "vue/object-curly-spacing": ["warn", "always"],
246
242
  "vue/object-property-newline": ["warn", { allowAllPropertiesOnSameLine: true }],
247
243
  "vue/object-shorthand": "warn",
248
244
  "vue/operator-linebreak": [
@@ -1873,6 +1873,7 @@ interface ESLintSchema {
1873
1873
  /**
1874
1874
  * Disallow specified modules when loaded by `import`
1875
1875
  * @see https://typescript-eslint.io/rules/no-restricted-imports
1876
+ * @deprecated
1876
1877
  */
1877
1878
  '@typescript-eslint/no-restricted-imports'?: Linter.RuleEntry<TypescriptEslintNoRestrictedImports>;
1878
1879
  /**
@@ -2626,6 +2627,11 @@ interface ESLintSchema {
2626
2627
  * @see https://github.com/schoero/eslint-plugin-better-tailwindcss/blob/main/docs/rules/enforce-shorthand-classes.md
2627
2628
  */
2628
2629
  'better-tailwindcss/enforce-shorthand-classes'?: Linter.RuleEntry<BetterTailwindcssEnforceShorthandClasses>;
2630
+ /**
2631
+ * Disallow concatenated classes in Tailwind CSS class strings.
2632
+ * @see https://github.com/schoero/eslint-plugin-better-tailwindcss/blob/main/docs/rules/no-concatenated-classes.md
2633
+ */
2634
+ 'better-tailwindcss/no-concatenated-classes'?: Linter.RuleEntry<BetterTailwindcssNoConcatenatedClasses>;
2629
2635
  /**
2630
2636
  * Disallow classes that produce conflicting styles.
2631
2637
  * @see https://github.com/schoero/eslint-plugin-better-tailwindcss/blob/main/docs/rules/no-conflicting-classes.md
@@ -13502,6 +13508,7 @@ type BetterTailwindcssEnforceConsistentLineWrapping = [] | [{
13502
13508
  printWidth?: number;
13503
13509
  strictness?: ("strict" | "loose");
13504
13510
  tabWidth?: number;
13511
+ vueConvertToBinding?: boolean;
13505
13512
  }];
13506
13513
  // ----- better-tailwindcss/enforce-consistent-variable-syntax -----
13507
13514
  type BetterTailwindcssEnforceConsistentVariableSyntax = [] | [{
@@ -14285,6 +14292,201 @@ type BetterTailwindcssEnforceShorthandClasses = [] | [{
14285
14292
  rootFontSize?: number;
14286
14293
  cwd?: string;
14287
14294
  }];
14295
+ // ----- better-tailwindcss/no-concatenated-classes -----
14296
+ type BetterTailwindcssNoConcatenatedClasses = [] | [{
14297
+ selectors?: ({
14298
+ kind: "attribute";
14299
+ match?: ({
14300
+ type: "strings";
14301
+ } | {
14302
+ path?: string;
14303
+ type: "objectKeys";
14304
+ } | {
14305
+ path?: string;
14306
+ type: "objectValues";
14307
+ } | {
14308
+ match: ({
14309
+ type: "strings";
14310
+ } | {
14311
+ path?: string;
14312
+ type: "objectKeys";
14313
+ } | {
14314
+ path?: string;
14315
+ type: "objectValues";
14316
+ })[];
14317
+ type: "anonymousFunctionReturn";
14318
+ })[];
14319
+ name: string;
14320
+ } | ({
14321
+ callTarget?: ("all" | "first" | "last" | number);
14322
+ kind: "callee";
14323
+ match?: ({
14324
+ type: "strings";
14325
+ } | {
14326
+ path?: string;
14327
+ type: "objectKeys";
14328
+ } | {
14329
+ path?: string;
14330
+ type: "objectValues";
14331
+ } | {
14332
+ match: ({
14333
+ type: "strings";
14334
+ } | {
14335
+ path?: string;
14336
+ type: "objectKeys";
14337
+ } | {
14338
+ path?: string;
14339
+ type: "objectValues";
14340
+ })[];
14341
+ type: "anonymousFunctionReturn";
14342
+ })[];
14343
+ name: string;
14344
+ path?: string;
14345
+ targetArgument?: ("all" | "first" | "last" | number);
14346
+ targetCall?: ("all" | "first" | "last" | number);
14347
+ } | {
14348
+ callTarget?: ("all" | "first" | "last" | number);
14349
+ kind: "callee";
14350
+ match?: ({
14351
+ type: "strings";
14352
+ } | {
14353
+ path?: string;
14354
+ type: "objectKeys";
14355
+ } | {
14356
+ path?: string;
14357
+ type: "objectValues";
14358
+ } | {
14359
+ match: ({
14360
+ type: "strings";
14361
+ } | {
14362
+ path?: string;
14363
+ type: "objectKeys";
14364
+ } | {
14365
+ path?: string;
14366
+ type: "objectValues";
14367
+ })[];
14368
+ type: "anonymousFunctionReturn";
14369
+ })[];
14370
+ name?: string;
14371
+ path: string;
14372
+ targetArgument?: ("all" | "first" | "last" | number);
14373
+ targetCall?: ("all" | "first" | "last" | number);
14374
+ }) | ({
14375
+ kind: "tag";
14376
+ match?: ({
14377
+ type: "strings";
14378
+ } | {
14379
+ path?: string;
14380
+ type: "objectKeys";
14381
+ } | {
14382
+ path?: string;
14383
+ type: "objectValues";
14384
+ } | {
14385
+ match: ({
14386
+ type: "strings";
14387
+ } | {
14388
+ path?: string;
14389
+ type: "objectKeys";
14390
+ } | {
14391
+ path?: string;
14392
+ type: "objectValues";
14393
+ })[];
14394
+ type: "anonymousFunctionReturn";
14395
+ })[];
14396
+ name: string;
14397
+ path?: string;
14398
+ } | {
14399
+ kind: "tag";
14400
+ match?: ({
14401
+ type: "strings";
14402
+ } | {
14403
+ path?: string;
14404
+ type: "objectKeys";
14405
+ } | {
14406
+ path?: string;
14407
+ type: "objectValues";
14408
+ } | {
14409
+ match: ({
14410
+ type: "strings";
14411
+ } | {
14412
+ path?: string;
14413
+ type: "objectKeys";
14414
+ } | {
14415
+ path?: string;
14416
+ type: "objectValues";
14417
+ })[];
14418
+ type: "anonymousFunctionReturn";
14419
+ })[];
14420
+ name?: string;
14421
+ path: string;
14422
+ }) | {
14423
+ kind: "variable";
14424
+ match?: ({
14425
+ type: "strings";
14426
+ } | {
14427
+ path?: string;
14428
+ type: "objectKeys";
14429
+ } | {
14430
+ path?: string;
14431
+ type: "objectValues";
14432
+ } | {
14433
+ match: ({
14434
+ type: "strings";
14435
+ } | {
14436
+ path?: string;
14437
+ type: "objectKeys";
14438
+ } | {
14439
+ path?: string;
14440
+ type: "objectValues";
14441
+ })[];
14442
+ type: "anonymousFunctionReturn";
14443
+ })[];
14444
+ name: string;
14445
+ })[];
14446
+ callees?: ([string, ({
14447
+ match: "strings";
14448
+ } | {
14449
+ match: "objectKeys";
14450
+ pathPattern?: string;
14451
+ } | {
14452
+ match: "objectValues";
14453
+ pathPattern?: string;
14454
+ })[]] | string)[];
14455
+ attributes?: (string | [string, ({
14456
+ match: "strings";
14457
+ } | {
14458
+ match: "objectKeys";
14459
+ pathPattern?: string;
14460
+ } | {
14461
+ match: "objectValues";
14462
+ pathPattern?: string;
14463
+ })[]])[];
14464
+ variables?: ([string, ({
14465
+ match: "strings";
14466
+ } | {
14467
+ match: "objectKeys";
14468
+ pathPattern?: string;
14469
+ } | {
14470
+ match: "objectValues";
14471
+ pathPattern?: string;
14472
+ })[]] | string)[];
14473
+ tags?: ([string, ({
14474
+ match: "strings";
14475
+ } | {
14476
+ match: "objectKeys";
14477
+ pathPattern?: string;
14478
+ } | {
14479
+ match: "objectValues";
14480
+ pathPattern?: string;
14481
+ })[]] | string)[];
14482
+ entryPoint?: string;
14483
+ messageStyle?: ("visual" | "compact" | "raw");
14484
+ tailwindConfig?: string;
14485
+ tsconfig?: string;
14486
+ detectComponentClasses?: boolean;
14487
+ rootFontSize?: number;
14488
+ cwd?: string;
14489
+ }];
14288
14490
  // ----- better-tailwindcss/no-conflicting-classes -----
14289
14491
  type BetterTailwindcssNoConflictingClasses = [] | [{
14290
14492
  selectors?: ({
@@ -22970,6 +23172,7 @@ type VueSortKeys = [] | [("asc" | "desc")] | [("asc" | "desc"), {
22970
23172
  ignoreGrandchildrenOf?: unknown[];
22971
23173
  minKeys?: number;
22972
23174
  natural?: boolean;
23175
+ allowLineSeparatedGroups?: boolean;
22973
23176
  }];
22974
23177
  // ----- vue/space-in-parens -----
22975
23178
  type VueSpaceInParens = [] | [("always" | "never")] | [("always" | "never"), {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shayanthenerd/eslint-config",
3
- "version": "0.28.2",
3
+ "version": "0.28.3",
4
4
  "description": "A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style",
5
5
  "keywords": [
6
6
  "eslint",
@@ -49,7 +49,7 @@
49
49
  "{**/*.ts,package.json}": "pnpm lint"
50
50
  },
51
51
  "dependencies": {
52
- "@eslint-react/eslint-plugin": "5.17.1",
52
+ "@eslint-react/eslint-plugin": "5.17.3",
53
53
  "@eslint/css": "1.4.0",
54
54
  "@eslint/markdown": "8.0.3",
55
55
  "@html-eslint/eslint-plugin": "0.64.0",
@@ -63,7 +63,7 @@
63
63
  "eslint-import-resolver-typescript": "4.4.5",
64
64
  "eslint-plugin-astro": "3.0.1",
65
65
  "eslint-plugin-baseline-js": "0.7.0",
66
- "eslint-plugin-better-tailwindcss": "4.6.1",
66
+ "eslint-plugin-better-tailwindcss": "4.7.0",
67
67
  "eslint-plugin-cypress": "6.4.3",
68
68
  "eslint-plugin-import-x": "4.17.1",
69
69
  "eslint-plugin-jsx-a11y": "6.10.2",
@@ -72,16 +72,16 @@
72
72
  "eslint-plugin-perfectionist": "5.10.0",
73
73
  "eslint-plugin-playwright": "2.10.5",
74
74
  "eslint-plugin-promise": "7.3.0",
75
- "eslint-plugin-storybook": "10.5.2",
75
+ "eslint-plugin-storybook": "10.5.3",
76
76
  "eslint-plugin-unicorn": "72.0.0",
77
- "eslint-plugin-vue": "10.9.2",
77
+ "eslint-plugin-vue": "10.10.0",
78
78
  "eslint-plugin-vuejs-accessibility": "2.5.0",
79
79
  "eslint-plugin-zod": "4.8.0",
80
80
  "eslint-plugin-zod-mini": "1.5.0",
81
81
  "globals": "17.7.0",
82
82
  "local-pkg": "1.2.1",
83
83
  "tailwind-csstree": "0.3.3",
84
- "typescript-eslint": "8.64.0"
84
+ "typescript-eslint": "8.65.0"
85
85
  },
86
86
  "devDependencies": {
87
87
  "@arethetypeswrong/cli": "0.18.5",
@@ -92,12 +92,12 @@
92
92
  "eslint": "10.7.0",
93
93
  "eslint-typegen": "2.3.1",
94
94
  "nano-staged": "1.0.2",
95
- "prettier": "3.9.5",
95
+ "prettier": "3.9.6",
96
96
  "publint": "0.3.21",
97
97
  "serve": "14.2.6",
98
98
  "simple-git-hooks": "2.13.1",
99
99
  "ts-morph": "28.0.0",
100
- "tsdown": "0.22.9",
100
+ "tsdown": "0.22.12",
101
101
  "typescript": "6.0.3",
102
102
  "unplugin-unused": "0.5.7"
103
103
  },
@@ -110,7 +110,7 @@
110
110
  "devEngines": {
111
111
  "packageManager": {
112
112
  "name": "pnpm",
113
- "version": "11.13.1",
113
+ "version": "11.15.1",
114
114
  "onFail": "warn"
115
115
  },
116
116
  "runtime": {