@luxass/eslint-config 4.2.1 → 4.2.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/README.md CHANGED
@@ -29,28 +29,28 @@ With [`"type": "module"`](https://nodejs.org/api/packages.html#type) in `package
29
29
 
30
30
  ```js
31
31
  // eslint.config.js
32
- import luxass from "@luxass/eslint-config";
32
+ import luxass from "@luxass/eslint-config"
33
33
 
34
- export default luxass();
34
+ export default luxass()
35
35
  ```
36
36
 
37
37
  With CJS:
38
38
 
39
39
  ```js
40
40
  // eslint.config.js
41
- const luxass = require("@luxass/eslint-config").default;
41
+ const luxass = require("@luxass/eslint-config").default
42
42
 
43
- module.exports = luxass();
43
+ module.exports = luxass()
44
44
  ```
45
45
 
46
46
  Combined with legacy config:
47
47
 
48
48
  ```js
49
49
  // eslint.config.js
50
- const luxass = require("@luxass/eslint-config").default;
51
- const { FlatCompat } = require("@eslint/eslintrc");
50
+ const luxass = require("@luxass/eslint-config").default
51
+ const { FlatCompat } = require("@eslint/eslintrc")
52
52
 
53
- const compat = new FlatCompat();
53
+ const compat = new FlatCompat()
54
54
 
55
55
  module.exports = luxass(
56
56
  {
@@ -66,7 +66,7 @@ module.exports = luxass(
66
66
  })
67
67
 
68
68
  // Other flat configs...
69
- );
69
+ )
70
70
  ```
71
71
 
72
72
  > Note that `.eslintignore` no longer works in Flat config, see [customization](#customization) for more details.
@@ -129,16 +129,16 @@ Normally you would only need to import the `luxass` preset:
129
129
 
130
130
  ```js
131
131
  // eslint.config.js
132
- import luxass from "@luxass/eslint-config";
132
+ import luxass from "@luxass/eslint-config"
133
133
 
134
- export default luxass();
134
+ export default luxass()
135
135
  ```
136
136
 
137
137
  you can also configure each `config` individually:
138
138
 
139
139
  ```js
140
140
  // eslint.config.js
141
- import luxass from "@luxass/eslint-config";
141
+ import luxass from "@luxass/eslint-config"
142
142
 
143
143
  export default luxass({
144
144
  stylistic: true,
@@ -150,16 +150,16 @@ export default luxass({
150
150
 
151
151
  // `.eslintignore` is no longer supported in Flat config, use `ignores` instead.
152
152
  ignores: [
153
- "./fixtures"
153
+ "**/fixtures"
154
154
  ]
155
- });
155
+ })
156
156
  ```
157
157
 
158
158
  The `luxass` function accepts an arbitrary number of `flat configs` overrides:
159
159
 
160
160
  ```js
161
161
  // eslint.config.js
162
- import luxass from "@luxass/eslint-config";
162
+ import luxass from "@luxass/eslint-config"
163
163
 
164
164
  export default luxass({
165
165
  // configuration points for my config
@@ -167,7 +167,7 @@ export default luxass({
167
167
  rules: {}
168
168
  }, {
169
169
  rules: {}
170
- });
170
+ })
171
171
  ```
172
172
 
173
173
  <details>
@@ -193,9 +193,9 @@ import {
193
193
  unicorn,
194
194
  vue,
195
195
  yaml,
196
- } from "@luxass/eslint-config/configs";
196
+ } from "@luxass/eslint-config/configs"
197
197
 
198
- import { combine } from "@luxass/eslint-config";
198
+ import { combine } from "@luxass/eslint-config"
199
199
 
200
200
  export default combine(
201
201
  ignores(),
@@ -211,7 +211,7 @@ export default combine(
211
211
  jsonc(),
212
212
  yaml(),
213
213
  markdown(),
214
- );
214
+ )
215
215
  ```
216
216
 
217
217
  </details>
@@ -247,7 +247,7 @@ Certain rules would only be enabled in specific files, for example, `ts/*` rules
247
247
 
248
248
  ```js
249
249
  // eslint.config.js
250
- import luxass from "@luxass/eslint-config";
250
+ import luxass from "@luxass/eslint-config"
251
251
 
252
252
  export default luxass(
253
253
  { vue: true, typescript: true },
@@ -264,14 +264,14 @@ export default luxass(
264
264
  "style/semi": ["error", "never"],
265
265
  },
266
266
  }
267
- );
267
+ )
268
268
  ```
269
269
 
270
270
  We also provided a `overrides` options to make it easier:
271
271
 
272
272
  ```js
273
273
  // eslint.config.js
274
- import luxass from "@luxass/eslint-config";
274
+ import luxass from "@luxass/eslint-config"
275
275
 
276
276
  export default luxass({
277
277
  overrides: {
@@ -284,7 +284,7 @@ export default luxass({
284
284
  yaml: {},
285
285
  // ...
286
286
  }
287
- });
287
+ })
288
288
  ```
289
289
 
290
290
  ### Optional Configs
@@ -300,7 +300,7 @@ Use external formatters to format files that ESLint cannot handle yet (`.css`, `
300
300
 
301
301
  ```js
302
302
  // eslint.config.js
303
- import luxass from "@luxass/eslint-config";
303
+ import luxass from "@luxass/eslint-config"
304
304
 
305
305
  export default luxass({
306
306
  formatters: {
@@ -326,7 +326,7 @@ export default luxass({
326
326
  */
327
327
  markdown: "prettier"
328
328
  }
329
- });
329
+ })
330
330
  ```
331
331
 
332
332
  Running `npx eslint` should prompt you to install the required dependencies, otherwise, you can install them manually:
@@ -341,11 +341,11 @@ To enable React support, need to explicitly turn it on:
341
341
 
342
342
  ```js
343
343
  // eslint.config.js
344
- import luxass from "@luxass/eslint-config";
344
+ import luxass from "@luxass/eslint-config"
345
345
 
346
346
  export default luxass({
347
347
  react: true,
348
- });
348
+ })
349
349
  ```
350
350
 
351
351
  Running `npx eslint` should prompt you to install the required dependencies, otherwise, you can install them manually:
@@ -362,11 +362,11 @@ Next.JS also enables React support.
362
362
 
363
363
  ```js
364
364
  // eslint.config.js
365
- import luxass from "@luxass/eslint-config";
365
+ import luxass from "@luxass/eslint-config"
366
366
 
367
367
  export default luxass({
368
368
  nextjs: true,
369
- });
369
+ })
370
370
  ```
371
371
 
372
372
  Running `npx eslint` should prompt you to install the required dependencies, otherwise, you can install them manually:
@@ -381,11 +381,11 @@ To enable UnoCSS support, need to explicitly turn it on:
381
381
 
382
382
  ```js
383
383
  // eslint.config.js
384
- import luxass from "@luxass/eslint-config";
384
+ import luxass from "@luxass/eslint-config"
385
385
 
386
386
  export default luxass({
387
387
  unocss: true,
388
- });
388
+ })
389
389
  ```
390
390
 
391
391
  Running `npx eslint` should prompt you to install the required dependencies, otherwise, you can install them manually:
@@ -400,11 +400,11 @@ To enable TailwindCSS support, need to explicitly turn it on:
400
400
 
401
401
  ```js
402
402
  // eslint.config.js
403
- import luxass from "@luxass/eslint-config";
403
+ import luxass from "@luxass/eslint-config"
404
404
 
405
405
  export default luxass({
406
406
  tailwindcss: true,
407
- });
407
+ })
408
408
  ```
409
409
 
410
410
  Running `npx eslint` should prompt you to install the required dependencies, otherwise, you can install them manually:
@@ -431,7 +431,7 @@ const objectWantedToSort = {
431
431
  a: 2,
432
432
  b: 1,
433
433
  c: 3,
434
- };
434
+ }
435
435
  /* eslint perfectionist/sort-objects: "off" */
436
436
  ```
437
437
 
@@ -441,13 +441,13 @@ You can optionally enable the [type aware rules](https://typescript-eslint.io/li
441
441
 
442
442
  ```js
443
443
  // eslint.config.js
444
- import luxass from "@luxass/eslint-config";
444
+ import luxass from "@luxass/eslint-config"
445
445
 
446
446
  export default luxass({
447
447
  typescript: {
448
448
  tsconfigPath: "tsconfig.json",
449
449
  },
450
- });
450
+ })
451
451
  ```
452
452
 
453
453
  ## Versioning Policy
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StylisticConfigDefaults
3
- } from "./chunk-RDZJT36Z.mjs";
3
+ } from "./chunk-QMGT2Z63.mjs";
4
4
  import {
5
5
  ensure,
6
6
  interop
@@ -19,6 +19,13 @@ async function typescript(options = {}) {
19
19
  overrides = {},
20
20
  parserOptions = {}
21
21
  } = options ?? {};
22
+ const files = options.files ?? [
23
+ GLOB_SRC,
24
+ ...exts.map((ext) => `**/*.${ext}`)
25
+ ];
26
+ const filesTypeAware = options.typeAwareFileS ?? [GLOB_TS, GLOB_TSX];
27
+ const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
28
+ const isTypeAware = !!tsconfigPath;
22
29
  const typeAwareRules = {
23
30
  "dot-notation": "off",
24
31
  "no-implied-eval": "off",
@@ -40,12 +47,6 @@ async function typescript(options = {}) {
40
47
  "ts/restrict-template-expressions": "error",
41
48
  "ts/unbound-method": "error"
42
49
  };
43
- const files = options.files ?? [
44
- GLOB_SRC,
45
- ...exts.map((ext) => `**/*.${ext}`)
46
- ];
47
- const filesTypeAware = options.typeAwareFileS ?? [GLOB_TS, GLOB_TSX];
48
- const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
49
50
  const [
50
51
  pluginTs,
51
52
  parserTs
@@ -53,6 +54,25 @@ async function typescript(options = {}) {
53
54
  interop(import("@typescript-eslint/eslint-plugin")),
54
55
  interop(import("@typescript-eslint/parser"))
55
56
  ]);
57
+ function makeParser(typeAware, files2, ignores) {
58
+ return {
59
+ files: files2,
60
+ ...ignores ? { ignores } : {},
61
+ name: `antfu:typescript:${typeAware ? "type-aware-parser" : "parser"}`,
62
+ languageOptions: {
63
+ parser: parserTs,
64
+ parserOptions: {
65
+ extraFileExtensions: exts.map((ext) => `.${ext}`),
66
+ sourceType: "module",
67
+ ...typeAware ? {
68
+ project: tsconfigPath,
69
+ tsconfigRootDir: process.cwd()
70
+ } : {},
71
+ ...parserOptions
72
+ }
73
+ }
74
+ };
75
+ }
56
76
  return [
57
77
  {
58
78
  // Install the plugins without globs, so they can be configured separately.
@@ -62,6 +82,10 @@ async function typescript(options = {}) {
62
82
  ts: pluginTs
63
83
  }
64
84
  },
85
+ ...isTypeAware ? [
86
+ makeParser(true, filesTypeAware),
87
+ makeParser(false, files, filesTypeAware)
88
+ ] : [makeParser(false, files)],
65
89
  {
66
90
  name: "luxass:typescript:rules",
67
91
  files,
@@ -161,7 +185,7 @@ async function typescript(options = {}) {
161
185
  }
162
186
  },
163
187
  {
164
- name: "luxass:typescript:rules-type-aware",
188
+ name: "antfu:typescript:rules-type-aware",
165
189
  files: filesTypeAware,
166
190
  rules: {
167
191
  ...tsconfigPath ? typeAwareRules : {},
@@ -79,6 +79,8 @@ async function vue(options = {}) {
79
79
  ],
80
80
  "vue/component-name-in-template-casing": ["error", "PascalCase"],
81
81
  "vue/component-options-name-casing": ["error", "PascalCase"],
82
+ // this is deprecated
83
+ "vue/component-tags-order": "off",
82
84
  "vue/custom-event-name-casing": ["error", "camelCase"],
83
85
  "vue/define-macros-order": [
84
86
  "error",
@@ -8,7 +8,7 @@ var StylisticConfigDefaults = {
8
8
  indent: 2,
9
9
  jsx: true,
10
10
  quotes: "double",
11
- semi: true
11
+ semi: false
12
12
  };
13
13
  async function stylistic(options = {}) {
14
14
  const {
@@ -102,7 +102,7 @@ var StylisticConfigDefaults = {
102
102
  indent: 2,
103
103
  jsx: true,
104
104
  quotes: "double",
105
- semi: true
105
+ semi: false
106
106
  };
107
107
 
108
108
  // src/configs/formatters.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  formatters
3
- } from "../chunk-CJ3ZUYUJ.mjs";
4
- import "../chunk-RDZJT36Z.mjs";
3
+ } from "../chunk-5TJETBJG.mjs";
4
+ import "../chunk-QMGT2Z63.mjs";
5
5
  import "../chunk-4YBQZLPS.mjs";
6
6
  import "../chunk-ATRL3UZP.mjs";
7
7
  export {
@@ -1035,7 +1035,7 @@ var StylisticConfigDefaults = {
1035
1035
  indent: 2,
1036
1036
  jsx: true,
1037
1037
  quotes: "double",
1038
- semi: true
1038
+ semi: false
1039
1039
  };
1040
1040
  async function stylistic(options = {}) {
1041
1041
  const {
@@ -1087,6 +1087,13 @@ async function typescript(options = {}) {
1087
1087
  overrides = {},
1088
1088
  parserOptions = {}
1089
1089
  } = options ?? {};
1090
+ const files = options.files ?? [
1091
+ GLOB_SRC,
1092
+ ...exts.map((ext) => `**/*.${ext}`)
1093
+ ];
1094
+ const filesTypeAware = options.typeAwareFileS ?? [GLOB_TS, GLOB_TSX];
1095
+ const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
1096
+ const isTypeAware = !!tsconfigPath;
1090
1097
  const typeAwareRules = {
1091
1098
  "dot-notation": "off",
1092
1099
  "no-implied-eval": "off",
@@ -1108,12 +1115,6 @@ async function typescript(options = {}) {
1108
1115
  "ts/restrict-template-expressions": "error",
1109
1116
  "ts/unbound-method": "error"
1110
1117
  };
1111
- const files = options.files ?? [
1112
- GLOB_SRC,
1113
- ...exts.map((ext) => `**/*.${ext}`)
1114
- ];
1115
- const filesTypeAware = options.typeAwareFileS ?? [GLOB_TS, GLOB_TSX];
1116
- const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
1117
1118
  const [
1118
1119
  pluginTs,
1119
1120
  parserTs
@@ -1121,6 +1122,25 @@ async function typescript(options = {}) {
1121
1122
  interop(import("@typescript-eslint/eslint-plugin")),
1122
1123
  interop(import("@typescript-eslint/parser"))
1123
1124
  ]);
1125
+ function makeParser(typeAware, files2, ignores2) {
1126
+ return {
1127
+ files: files2,
1128
+ ...ignores2 ? { ignores: ignores2 } : {},
1129
+ name: `antfu:typescript:${typeAware ? "type-aware-parser" : "parser"}`,
1130
+ languageOptions: {
1131
+ parser: parserTs,
1132
+ parserOptions: {
1133
+ extraFileExtensions: exts.map((ext) => `.${ext}`),
1134
+ sourceType: "module",
1135
+ ...typeAware ? {
1136
+ project: tsconfigPath,
1137
+ tsconfigRootDir: import_node_process2.default.cwd()
1138
+ } : {},
1139
+ ...parserOptions
1140
+ }
1141
+ }
1142
+ };
1143
+ }
1124
1144
  return [
1125
1145
  {
1126
1146
  // Install the plugins without globs, so they can be configured separately.
@@ -1130,6 +1150,10 @@ async function typescript(options = {}) {
1130
1150
  ts: pluginTs
1131
1151
  }
1132
1152
  },
1153
+ ...isTypeAware ? [
1154
+ makeParser(true, filesTypeAware),
1155
+ makeParser(false, files, filesTypeAware)
1156
+ ] : [makeParser(false, files)],
1133
1157
  {
1134
1158
  name: "luxass:typescript:rules",
1135
1159
  files,
@@ -1229,7 +1253,7 @@ async function typescript(options = {}) {
1229
1253
  }
1230
1254
  },
1231
1255
  {
1232
- name: "luxass:typescript:rules-type-aware",
1256
+ name: "antfu:typescript:rules-type-aware",
1233
1257
  files: filesTypeAware,
1234
1258
  rules: {
1235
1259
  ...tsconfigPath ? typeAwareRules : {},
@@ -1344,6 +1368,8 @@ async function vue(options = {}) {
1344
1368
  ],
1345
1369
  "vue/component-name-in-template-casing": ["error", "PascalCase"],
1346
1370
  "vue/component-options-name-casing": ["error", "PascalCase"],
1371
+ // this is deprecated
1372
+ "vue/component-tags-order": "off",
1347
1373
  "vue/custom-event-name-casing": ["error", "camelCase"],
1348
1374
  "vue/define-macros-order": [
1349
1375
  "error",
@@ -4,7 +4,7 @@ import {
4
4
  } from "../chunk-KJ7ZCBK4.mjs";
5
5
  import {
6
6
  vue
7
- } from "../chunk-C67L5T23.mjs";
7
+ } from "../chunk-JUFHDXTH.mjs";
8
8
  import {
9
9
  yaml
10
10
  } from "../chunk-WOYZWHPM.mjs";
@@ -21,7 +21,7 @@ import {
21
21
  import "../chunk-WDSV2EFG.mjs";
22
22
  import {
23
23
  typescript
24
- } from "../chunk-Z7F6QSYQ.mjs";
24
+ } from "../chunk-IASQD7KX.mjs";
25
25
  import {
26
26
  unicorn
27
27
  } from "../chunk-RVSUTDCE.mjs";
@@ -57,10 +57,10 @@ import {
57
57
  } from "../chunk-DAJA5AV3.mjs";
58
58
  import {
59
59
  formatters
60
- } from "../chunk-CJ3ZUYUJ.mjs";
60
+ } from "../chunk-5TJETBJG.mjs";
61
61
  import {
62
62
  stylistic
63
- } from "../chunk-RDZJT36Z.mjs";
63
+ } from "../chunk-QMGT2Z63.mjs";
64
64
  import "../chunk-4YBQZLPS.mjs";
65
65
  import {
66
66
  ignores
@@ -49,7 +49,7 @@ var StylisticConfigDefaults = {
49
49
  indent: 2,
50
50
  jsx: true,
51
51
  quotes: "double",
52
- semi: true
52
+ semi: false
53
53
  };
54
54
  async function stylistic(options = {}) {
55
55
  const {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  StylisticConfigDefaults,
3
3
  stylistic
4
- } from "../chunk-RDZJT36Z.mjs";
4
+ } from "../chunk-QMGT2Z63.mjs";
5
5
  import "../chunk-4YBQZLPS.mjs";
6
6
  export {
7
7
  StylisticConfigDefaults,
@@ -90,6 +90,13 @@ async function typescript(options = {}) {
90
90
  overrides = {},
91
91
  parserOptions = {}
92
92
  } = options ?? {};
93
+ const files = options.files ?? [
94
+ GLOB_SRC,
95
+ ...exts.map((ext) => `**/*.${ext}`)
96
+ ];
97
+ const filesTypeAware = options.typeAwareFileS ?? [GLOB_TS, GLOB_TSX];
98
+ const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
99
+ const isTypeAware = !!tsconfigPath;
93
100
  const typeAwareRules = {
94
101
  "dot-notation": "off",
95
102
  "no-implied-eval": "off",
@@ -111,12 +118,6 @@ async function typescript(options = {}) {
111
118
  "ts/restrict-template-expressions": "error",
112
119
  "ts/unbound-method": "error"
113
120
  };
114
- const files = options.files ?? [
115
- GLOB_SRC,
116
- ...exts.map((ext) => `**/*.${ext}`)
117
- ];
118
- const filesTypeAware = options.typeAwareFileS ?? [GLOB_TS, GLOB_TSX];
119
- const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
120
121
  const [
121
122
  pluginTs,
122
123
  parserTs
@@ -124,6 +125,25 @@ async function typescript(options = {}) {
124
125
  interop(import("@typescript-eslint/eslint-plugin")),
125
126
  interop(import("@typescript-eslint/parser"))
126
127
  ]);
128
+ function makeParser(typeAware, files2, ignores) {
129
+ return {
130
+ files: files2,
131
+ ...ignores ? { ignores } : {},
132
+ name: `antfu:typescript:${typeAware ? "type-aware-parser" : "parser"}`,
133
+ languageOptions: {
134
+ parser: parserTs,
135
+ parserOptions: {
136
+ extraFileExtensions: exts.map((ext) => `.${ext}`),
137
+ sourceType: "module",
138
+ ...typeAware ? {
139
+ project: tsconfigPath,
140
+ tsconfigRootDir: import_node_process2.default.cwd()
141
+ } : {},
142
+ ...parserOptions
143
+ }
144
+ }
145
+ };
146
+ }
127
147
  return [
128
148
  {
129
149
  // Install the plugins without globs, so they can be configured separately.
@@ -133,6 +153,10 @@ async function typescript(options = {}) {
133
153
  ts: pluginTs
134
154
  }
135
155
  },
156
+ ...isTypeAware ? [
157
+ makeParser(true, filesTypeAware),
158
+ makeParser(false, files, filesTypeAware)
159
+ ] : [makeParser(false, files)],
136
160
  {
137
161
  name: "luxass:typescript:rules",
138
162
  files,
@@ -232,7 +256,7 @@ async function typescript(options = {}) {
232
256
  }
233
257
  },
234
258
  {
235
- name: "luxass:typescript:rules-type-aware",
259
+ name: "antfu:typescript:rules-type-aware",
236
260
  files: filesTypeAware,
237
261
  rules: {
238
262
  ...tsconfigPath ? typeAwareRules : {},
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  typescript
3
- } from "../chunk-Z7F6QSYQ.mjs";
3
+ } from "../chunk-IASQD7KX.mjs";
4
4
  import "../chunk-4YBQZLPS.mjs";
5
5
  import "../chunk-ATRL3UZP.mjs";
6
6
  export {
@@ -165,6 +165,8 @@ async function vue(options = {}) {
165
165
  ],
166
166
  "vue/component-name-in-template-casing": ["error", "PascalCase"],
167
167
  "vue/component-options-name-casing": ["error", "PascalCase"],
168
+ // this is deprecated
169
+ "vue/component-tags-order": "off",
168
170
  "vue/custom-event-name-casing": ["error", "camelCase"],
169
171
  "vue/define-macros-order": [
170
172
  "error",
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  vue
3
- } from "../chunk-C67L5T23.mjs";
3
+ } from "../chunk-JUFHDXTH.mjs";
4
4
  import "../chunk-4YBQZLPS.mjs";
5
5
  import "../chunk-ATRL3UZP.mjs";
6
6
  export {
package/dist/index.cjs CHANGED
@@ -30,31 +30,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var src_exports = {};
32
32
  __export(src_exports, {
33
- astro: () => astro,
34
- comments: () => comments,
35
33
  default: () => src_default,
36
- formatters: () => formatters,
37
- ignores: () => ignores,
38
- imports: () => imports,
39
- javascript: () => javascript,
40
- jsdoc: () => jsdoc,
41
- jsonc: () => jsonc,
42
- luxass: () => luxass,
43
- markdown: () => markdown,
44
- nextjs: () => nextjs,
45
- node: () => node,
46
- perfectionist: () => perfectionist,
47
- react: () => react,
48
- sortPackageJson: () => sortPackageJson,
49
- sortTsconfig: () => sortTsconfig,
50
- stylistic: () => stylistic,
51
- tailwindcss: () => tailwindcss,
52
- test: () => test,
53
- typescript: () => typescript,
54
- unicorn: () => unicorn,
55
- unocss: () => unocss,
56
- vue: () => vue,
57
- yaml: () => yaml
34
+ luxass: () => luxass
58
35
  });
59
36
  module.exports = __toCommonJS(src_exports);
60
37
 
@@ -1056,7 +1033,7 @@ var StylisticConfigDefaults = {
1056
1033
  indent: 2,
1057
1034
  jsx: true,
1058
1035
  quotes: "double",
1059
- semi: true
1036
+ semi: false
1060
1037
  };
1061
1038
  async function stylistic(options = {}) {
1062
1039
  const {
@@ -1108,6 +1085,13 @@ async function typescript(options = {}) {
1108
1085
  overrides = {},
1109
1086
  parserOptions = {}
1110
1087
  } = options ?? {};
1088
+ const files = options.files ?? [
1089
+ GLOB_SRC,
1090
+ ...exts.map((ext) => `**/*.${ext}`)
1091
+ ];
1092
+ const filesTypeAware = options.typeAwareFileS ?? [GLOB_TS, GLOB_TSX];
1093
+ const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
1094
+ const isTypeAware = !!tsconfigPath;
1111
1095
  const typeAwareRules = {
1112
1096
  "dot-notation": "off",
1113
1097
  "no-implied-eval": "off",
@@ -1129,12 +1113,6 @@ async function typescript(options = {}) {
1129
1113
  "ts/restrict-template-expressions": "error",
1130
1114
  "ts/unbound-method": "error"
1131
1115
  };
1132
- const files = options.files ?? [
1133
- GLOB_SRC,
1134
- ...exts.map((ext) => `**/*.${ext}`)
1135
- ];
1136
- const filesTypeAware = options.typeAwareFileS ?? [GLOB_TS, GLOB_TSX];
1137
- const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
1138
1116
  const [
1139
1117
  pluginTs,
1140
1118
  parserTs
@@ -1142,6 +1120,25 @@ async function typescript(options = {}) {
1142
1120
  interop(import("@typescript-eslint/eslint-plugin")),
1143
1121
  interop(import("@typescript-eslint/parser"))
1144
1122
  ]);
1123
+ function makeParser(typeAware, files2, ignores2) {
1124
+ return {
1125
+ files: files2,
1126
+ ...ignores2 ? { ignores: ignores2 } : {},
1127
+ name: `antfu:typescript:${typeAware ? "type-aware-parser" : "parser"}`,
1128
+ languageOptions: {
1129
+ parser: parserTs,
1130
+ parserOptions: {
1131
+ extraFileExtensions: exts.map((ext) => `.${ext}`),
1132
+ sourceType: "module",
1133
+ ...typeAware ? {
1134
+ project: tsconfigPath,
1135
+ tsconfigRootDir: import_node_process2.default.cwd()
1136
+ } : {},
1137
+ ...parserOptions
1138
+ }
1139
+ }
1140
+ };
1141
+ }
1145
1142
  return [
1146
1143
  {
1147
1144
  // Install the plugins without globs, so they can be configured separately.
@@ -1151,6 +1148,10 @@ async function typescript(options = {}) {
1151
1148
  ts: pluginTs
1152
1149
  }
1153
1150
  },
1151
+ ...isTypeAware ? [
1152
+ makeParser(true, filesTypeAware),
1153
+ makeParser(false, files, filesTypeAware)
1154
+ ] : [makeParser(false, files)],
1154
1155
  {
1155
1156
  name: "luxass:typescript:rules",
1156
1157
  files,
@@ -1250,7 +1251,7 @@ async function typescript(options = {}) {
1250
1251
  }
1251
1252
  },
1252
1253
  {
1253
- name: "luxass:typescript:rules-type-aware",
1254
+ name: "antfu:typescript:rules-type-aware",
1254
1255
  files: filesTypeAware,
1255
1256
  rules: {
1256
1257
  ...tsconfigPath ? typeAwareRules : {},
@@ -1365,6 +1366,8 @@ async function vue(options = {}) {
1365
1366
  ],
1366
1367
  "vue/component-name-in-template-casing": ["error", "PascalCase"],
1367
1368
  "vue/component-options-name-casing": ["error", "PascalCase"],
1369
+ // this is deprecated
1370
+ "vue/component-tags-order": "off",
1368
1371
  "vue/custom-event-name-casing": ["error", "camelCase"],
1369
1372
  "vue/define-macros-order": [
1370
1373
  "error",
@@ -2890,28 +2893,5 @@ async function luxass(options = {}, ...userConfigs) {
2890
2893
  var src_default = luxass;
2891
2894
  // Annotate the CommonJS export names for ESM import in node:
2892
2895
  0 && (module.exports = {
2893
- astro,
2894
- comments,
2895
- formatters,
2896
- ignores,
2897
- imports,
2898
- javascript,
2899
- jsdoc,
2900
- jsonc,
2901
- luxass,
2902
- markdown,
2903
- nextjs,
2904
- node,
2905
- perfectionist,
2906
- react,
2907
- sortPackageJson,
2908
- sortTsconfig,
2909
- stylistic,
2910
- tailwindcss,
2911
- test,
2912
- typescript,
2913
- unicorn,
2914
- unocss,
2915
- vue,
2916
- yaml
2896
+ luxass
2917
2897
  });
package/dist/index.d.cts CHANGED
@@ -1,14 +1,4 @@
1
1
  import { C as ConfigOptions, k as FlatConfigItem, l as Awaitable, m as UserConfigItem } from './types-A-NO9UF1.cjs';
2
- export { A as AstroOptions, F as FormattersOptions, b as JSONOptions, J as JavaScriptOptions, N as NextJSOptions, R as ReactOptions, S as StylisticConfig, c as StylisticOptions, h as TailwindCSSOptions, e as TestOptions, T as TypeScriptOptions, U as UnoCSSOptions, V as VueOptions, Y as YAMLOptions, f as astro, i as formatters, j as javascript, a as jsonc, n as nextjs, r as react, s as stylistic, g as tailwindcss, d as test, t as typescript, u as unocss, v as vue, y as yaml } from './types-A-NO9UF1.cjs';
3
- export { comments } from './configs/comments.cjs';
4
- export { unicorn } from './configs/unicorn.cjs';
5
- export { ignores } from './configs/ignores.cjs';
6
- export { node } from './configs/node.cjs';
7
- export { sortPackageJson, sortTsconfig } from './configs/sort.cjs';
8
- export { perfectionist } from './configs/perfectionist.cjs';
9
- export { ImportsOptions, imports } from './configs/imports.cjs';
10
- export { JSDOCOptions, jsdoc } from './configs/jsdoc.cjs';
11
- export { MarkdownOptions, markdown } from './configs/markdown.cjs';
12
2
  import 'eslint-config-flat-gitignore';
13
3
  import '@antfu/eslint-define-config';
14
4
  import '@eslint-types/jsdoc/types';
@@ -22,4 +12,4 @@ import 'eslint-processor-vue-blocks';
22
12
 
23
13
  declare function luxass(options?: ConfigOptions & FlatConfigItem, ...userConfigs: Awaitable<UserConfigItem | UserConfigItem[]>[]): Promise<UserConfigItem[]>;
24
14
 
25
- export { ConfigOptions, luxass as default, luxass };
15
+ export { ConfigOptions, UserConfigItem, luxass as default, luxass };
package/dist/index.d.ts CHANGED
@@ -1,14 +1,4 @@
1
1
  import { C as ConfigOptions, k as FlatConfigItem, l as Awaitable, m as UserConfigItem } from './types-A-NO9UF1.js';
2
- export { A as AstroOptions, F as FormattersOptions, b as JSONOptions, J as JavaScriptOptions, N as NextJSOptions, R as ReactOptions, S as StylisticConfig, c as StylisticOptions, h as TailwindCSSOptions, e as TestOptions, T as TypeScriptOptions, U as UnoCSSOptions, V as VueOptions, Y as YAMLOptions, f as astro, i as formatters, j as javascript, a as jsonc, n as nextjs, r as react, s as stylistic, g as tailwindcss, d as test, t as typescript, u as unocss, v as vue, y as yaml } from './types-A-NO9UF1.js';
3
- export { comments } from './configs/comments.js';
4
- export { unicorn } from './configs/unicorn.js';
5
- export { ignores } from './configs/ignores.js';
6
- export { node } from './configs/node.js';
7
- export { sortPackageJson, sortTsconfig } from './configs/sort.js';
8
- export { perfectionist } from './configs/perfectionist.js';
9
- export { ImportsOptions, imports } from './configs/imports.js';
10
- export { JSDOCOptions, jsdoc } from './configs/jsdoc.js';
11
- export { MarkdownOptions, markdown } from './configs/markdown.js';
12
2
  import 'eslint-config-flat-gitignore';
13
3
  import '@antfu/eslint-define-config';
14
4
  import '@eslint-types/jsdoc/types';
@@ -22,4 +12,4 @@ import 'eslint-processor-vue-blocks';
22
12
 
23
13
  declare function luxass(options?: ConfigOptions & FlatConfigItem, ...userConfigs: Awaitable<UserConfigItem | UserConfigItem[]>[]): Promise<UserConfigItem[]>;
24
14
 
25
- export { ConfigOptions, luxass as default, luxass };
15
+ export { ConfigOptions, UserConfigItem, luxass as default, luxass };
package/dist/index.mjs CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-KJ7ZCBK4.mjs";
11
11
  import {
12
12
  vue
13
- } from "./chunk-C67L5T23.mjs";
13
+ } from "./chunk-JUFHDXTH.mjs";
14
14
  import {
15
15
  yaml
16
16
  } from "./chunk-WOYZWHPM.mjs";
@@ -27,7 +27,7 @@ import {
27
27
  import "./chunk-WDSV2EFG.mjs";
28
28
  import {
29
29
  typescript
30
- } from "./chunk-Z7F6QSYQ.mjs";
30
+ } from "./chunk-IASQD7KX.mjs";
31
31
  import {
32
32
  unicorn
33
33
  } from "./chunk-RVSUTDCE.mjs";
@@ -63,10 +63,10 @@ import {
63
63
  } from "./chunk-DAJA5AV3.mjs";
64
64
  import {
65
65
  formatters
66
- } from "./chunk-CJ3ZUYUJ.mjs";
66
+ } from "./chunk-5TJETBJG.mjs";
67
67
  import {
68
68
  stylistic
69
- } from "./chunk-RDZJT36Z.mjs";
69
+ } from "./chunk-QMGT2Z63.mjs";
70
70
  import {
71
71
  combine,
72
72
  getOverrides,
@@ -279,29 +279,6 @@ async function luxass(options = {}, ...userConfigs) {
279
279
  // src/index.ts
280
280
  var src_default = luxass;
281
281
  export {
282
- astro,
283
- comments,
284
282
  src_default as default,
285
- formatters,
286
- ignores,
287
- imports,
288
- javascript,
289
- jsdoc,
290
- jsonc,
291
- luxass,
292
- markdown,
293
- nextjs,
294
- node,
295
- perfectionist,
296
- react,
297
- sortPackageJson,
298
- sortTsconfig,
299
- stylistic,
300
- tailwindcss,
301
- test,
302
- typescript,
303
- unicorn,
304
- unocss,
305
- vue,
306
- yaml
283
+ luxass
307
284
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luxass/eslint-config",
3
- "version": "4.2.1",
3
+ "version": "4.2.3",
4
4
  "description": "ESLint config for @luxass",
5
5
  "type": "module",
6
6
  "author": {
@@ -8,7 +8,7 @@
8
8
  "email": "lucasnrgaard@gmail.com",
9
9
  "url": "https://luxass.dev"
10
10
  },
11
- "packageManager": "pnpm@8.14.0",
11
+ "packageManager": "pnpm@8.14.1",
12
12
  "license": "MIT",
13
13
  "repository": {
14
14
  "type": "git",
@@ -126,31 +126,31 @@
126
126
  "@antfu/eslint-define-config": "^1.23.0-2",
127
127
  "@antfu/install-pkg": "^0.3.1",
128
128
  "@eslint-community/eslint-plugin-eslint-comments": "^4.1.0",
129
- "@eslint-types/jsdoc": "^47.0.2",
130
- "@eslint-types/typescript-eslint": "^6.17.0",
129
+ "@eslint-types/jsdoc": "^48.0.2",
130
+ "@eslint-types/typescript-eslint": "^6.18.1",
131
131
  "@eslint-types/unicorn": "^50.0.1",
132
- "@stylistic/eslint-plugin": "^1.5.3",
133
- "@typescript-eslint/eslint-plugin": "^6.18.1",
134
- "@typescript-eslint/parser": "^6.18.1",
132
+ "@stylistic/eslint-plugin": "^1.5.4",
133
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
134
+ "@typescript-eslint/parser": "^6.19.0",
135
135
  "eslint-config-flat-gitignore": "^0.1.2",
136
136
  "eslint-merge-processors": "^0.1.0",
137
137
  "eslint-parser-plain": "^0.1.0",
138
138
  "eslint-plugin-antfu": "^2.1.1",
139
- "eslint-plugin-astro": "^0.31.0",
139
+ "eslint-plugin-astro": "^0.31.3",
140
140
  "eslint-plugin-i": "^2.29.1",
141
141
  "eslint-plugin-jsdoc": "^48.0.2",
142
- "eslint-plugin-jsonc": "^2.11.2",
142
+ "eslint-plugin-jsonc": "^2.12.2",
143
143
  "eslint-plugin-jsx-a11y": "^6.8.0",
144
144
  "eslint-plugin-markdown": "^3.0.1",
145
145
  "eslint-plugin-n": "^16.6.2",
146
146
  "eslint-plugin-perfectionist": "^2.5.0",
147
147
  "eslint-plugin-sort-keys": "^2.3.5",
148
- "eslint-plugin-toml": "^0.8.0",
148
+ "eslint-plugin-toml": "^0.9.2",
149
149
  "eslint-plugin-unicorn": "^50.0.1",
150
150
  "eslint-plugin-unused-imports": "^3.0.0",
151
151
  "eslint-plugin-vitest": "^0.3.20",
152
- "eslint-plugin-vue": "^9.19.2",
153
- "eslint-plugin-yml": "^1.11.0",
152
+ "eslint-plugin-vue": "^9.20.1",
153
+ "eslint-plugin-yml": "^1.12.2",
154
154
  "eslint-processor-vue-blocks": "^0.1.1",
155
155
  "globals": "^13.24.0",
156
156
  "jsonc-eslint-parser": "^2.4.0",
@@ -163,14 +163,14 @@
163
163
  },
164
164
  "devDependencies": {
165
165
  "@antfu/eslint-plugin-prettier": "^5.0.1-1",
166
- "@next/eslint-plugin-next": "^14.0.4",
167
- "@stylistic/eslint-plugin-migrate": "^1.5.3",
168
- "@types/eslint": "^8.56.1",
166
+ "@next/eslint-plugin-next": "^14.1.0",
167
+ "@stylistic/eslint-plugin-migrate": "^1.5.4",
168
+ "@types/eslint": "^8.56.2",
169
169
  "@types/estree": "^1.0.5",
170
170
  "@types/node": "^18.17.19",
171
171
  "@types/prompts": "^2.4.9",
172
- "@typescript-eslint/rule-tester": "^6.18.1",
173
- "@typescript-eslint/utils": "^6.18.1",
172
+ "@typescript-eslint/rule-tester": "^6.19.0",
173
+ "@typescript-eslint/utils": "^6.19.0",
174
174
  "@unocss/eslint-plugin": "^0.58.3",
175
175
  "eslint": "^8.56.0",
176
176
  "eslint-plugin-format": "^0.1.0",
@@ -178,13 +178,13 @@
178
178
  "eslint-plugin-react-hooks": "^4.6.0",
179
179
  "eslint-plugin-react-refresh": "^0.4.5",
180
180
  "eslint-plugin-solid": "^0.13.1",
181
- "eslint-plugin-tailwindcss": "^3.13.1",
182
- "eslint-plugin-vuejs-accessibility": "^2.2.0",
181
+ "eslint-plugin-tailwindcss": "^3.14.0",
182
+ "eslint-plugin-vuejs-accessibility": "^2.2.1",
183
183
  "lint-staged": "^15.2.0",
184
184
  "simple-git-hooks": "^2.9.0",
185
185
  "tsup": "^8.0.1",
186
186
  "typescript": "^5.3.3",
187
- "vitest": "^1.1.3"
187
+ "vitest": "^1.2.1"
188
188
  },
189
189
  "simple-git-hooks": {
190
190
  "pre-commit": "pnpm lint-staged"