@debbl/eslint-config 3.1.0 → 3.1.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.cjs CHANGED
@@ -66,6 +66,7 @@ __export(src_exports, {
66
66
  jsonc: () => jsonc,
67
67
  markdown: () => markdown,
68
68
  node: () => node,
69
+ parserPlain: () => parserPlain,
69
70
  perfectionist: () => perfectionist,
70
71
  prettier: () => prettier,
71
72
  sortPackageJson: () => sortPackageJson,
@@ -87,7 +88,7 @@ async function comments() {
87
88
  );
88
89
  return [
89
90
  {
90
- name: "eslint:eslint-comments",
91
+ name: "eslint/eslint-comments/rules",
91
92
  plugins: {
92
93
  "eslint-comments": pluginComments
93
94
  },
@@ -201,6 +202,26 @@ var ignores = async (options) => {
201
202
  };
202
203
 
203
204
  // src/utils.ts
205
+ var parserPlain = {
206
+ meta: {
207
+ name: "parser-plain"
208
+ },
209
+ parseForESLint: (code) => ({
210
+ ast: {
211
+ body: [],
212
+ comments: [],
213
+ loc: { end: code.length, start: 0 },
214
+ range: [0, code.length],
215
+ tokens: [],
216
+ type: "Program"
217
+ },
218
+ scopeManager: null,
219
+ services: { isPlain: true },
220
+ visitorKeys: {
221
+ Program: []
222
+ }
223
+ })
224
+ };
204
225
  async function combine(...configs) {
205
226
  const resolved = await Promise.all(configs);
206
227
  return resolved.flat();
@@ -215,7 +236,7 @@ async function imports() {
215
236
  const pluginImport = await interopDefault(import("eslint-plugin-import-x"));
216
237
  return [
217
238
  {
218
- name: "eslint:imports",
239
+ name: "eslint/imports/rules",
219
240
  plugins: {
220
241
  import: pluginImport
221
242
  },
@@ -246,7 +267,7 @@ var javascript = async (options) => {
246
267
  );
247
268
  return [
248
269
  {
249
- name: "eslint:javascript",
270
+ name: "eslint/javascript/rules",
250
271
  languageOptions: {
251
272
  ecmaVersion: 2022,
252
273
  globals: {
@@ -482,7 +503,7 @@ var javascript = async (options) => {
482
503
  }
483
504
  },
484
505
  {
485
- name: "eslint:scripts-overrides",
506
+ name: "eslint/scripts-overrides/disables/cli",
486
507
  files: [`scripts/${GLOB_SRC}`, `cli.${GLOB_SRC_EXT}`],
487
508
  rules: {
488
509
  "no-console": "off"
@@ -495,7 +516,7 @@ var javascript = async (options) => {
495
516
  async function jsdoc() {
496
517
  return [
497
518
  {
498
- name: "eslint:jsdoc",
519
+ name: "eslint/jsdoc/rules",
499
520
  plugins: {
500
521
  jsdoc: await interopDefault(import("eslint-plugin-jsdoc"))
501
522
  },
@@ -531,13 +552,13 @@ var jsonc = async (options) => {
531
552
  ]);
532
553
  return [
533
554
  {
534
- name: "eslint:jsonc:setup",
555
+ name: "eslint/jsonc/setup",
535
556
  plugins: {
536
557
  jsonc: pluginJsonc
537
558
  }
538
559
  },
539
560
  {
540
- name: "eslint:jsonc:rules",
561
+ name: "eslint/jsonc/rules",
541
562
  files: [GLOB_JSON, GLOB_JSON5, GLOB_JSONC],
542
563
  languageOptions: {
543
564
  parser: parserJsonc
@@ -601,13 +622,13 @@ var markdown = async (options) => {
601
622
  ]);
602
623
  return [
603
624
  {
604
- name: "eslint:markdown:setup",
625
+ name: "eslint/markdown/setup",
605
626
  plugins: {
606
627
  mdx: pluginMdx
607
628
  }
608
629
  },
609
630
  {
610
- name: "eslint:markdown:processor",
631
+ name: "eslint/markdown/processor",
611
632
  files: [GLOB_MARKDOWN, GLOB_MDX],
612
633
  languageOptions: {
613
634
  ecmaVersion: "latest",
@@ -620,7 +641,7 @@ var markdown = async (options) => {
620
641
  }
621
642
  },
622
643
  {
623
- name: "eslint:markdown:rules",
644
+ name: "eslint/markdown/rules",
624
645
  files: [
625
646
  GLOB_MARKDOWN_CODE,
626
647
  ...componentExts.map((ext) => `${GLOB_MARKDOWN}/**/*.${ext}`)
@@ -679,7 +700,7 @@ async function node() {
679
700
  const pluginNode = await interopDefault(import("eslint-plugin-n"));
680
701
  return [
681
702
  {
682
- name: "eslint:node",
703
+ name: "eslint/node/rules",
683
704
  plugins: {
684
705
  n: pluginNode
685
706
  },
@@ -701,7 +722,7 @@ async function node() {
701
722
  async function sortPackageJson() {
702
723
  return [
703
724
  {
704
- name: "eslint:sort-package-json",
725
+ name: "eslint/sort/package-json",
705
726
  files: ["**/package.json"],
706
727
  rules: {
707
728
  "jsonc/sort-array-values": [
@@ -781,7 +802,7 @@ async function sortPackageJson() {
781
802
  async function sortTsconfig() {
782
803
  return [
783
804
  {
784
- name: "eslint:sort-tsconfig",
805
+ name: "eslint/sort/tsconfig-json",
785
806
  files: ["**/tsconfig.json", "**/tsconfig.*.json"],
786
807
  rules: {
787
808
  "jsonc/sort-keys": [
@@ -941,13 +962,13 @@ var typescript = async (options) => {
941
962
  return [
942
963
  {
943
964
  // Install the plugins without globs, so they can be configured separately.
944
- name: "eslint:typescript:setup",
965
+ name: "eslint/typescript/setup",
945
966
  plugins: {
946
967
  "@typescript-eslint": pluginTs
947
968
  }
948
969
  },
949
970
  {
950
- name: "eslint:typescript:rules",
971
+ name: "eslint/typescript/rules",
951
972
  files: [GLOB_SRC, ...componentExts.map((ext) => `**/*.${ext}`)],
952
973
  languageOptions: {
953
974
  parser: parserTs,
@@ -1013,7 +1034,7 @@ var typescript = async (options) => {
1013
1034
  }
1014
1035
  },
1015
1036
  {
1016
- name: "eslint:typescript:dts-overrides",
1037
+ name: "eslint/typescript/dts-overrides",
1017
1038
  files: ["**/*.d.ts"],
1018
1039
  rules: {
1019
1040
  "eslint-comments/no-unlimited-disable": "off",
@@ -1023,15 +1044,15 @@ var typescript = async (options) => {
1023
1044
  }
1024
1045
  },
1025
1046
  {
1026
- name: "eslint:typescript:tests-overrides",
1047
+ name: "eslint/typescript/disables/test",
1027
1048
  files: ["**/*.{test,spec}.ts?(x)"],
1028
1049
  rules: {
1029
1050
  "no-unused-expressions": "off"
1030
1051
  }
1031
1052
  },
1032
1053
  {
1054
+ name: "eslint/typescript/disables/cjs",
1033
1055
  files: ["**/*.js", "**/*.cjs"],
1034
- name: "eslint:typescript:javascript-overrides",
1035
1056
  rules: {
1036
1057
  "@typescript-eslint/no-require-imports": "off",
1037
1058
  "@typescript-eslint/no-var-requires": "off"
@@ -1045,7 +1066,7 @@ async function unicorn() {
1045
1066
  const pluginUnicorn = await interopDefault(import("eslint-plugin-unicorn"));
1046
1067
  return [
1047
1068
  {
1048
- name: "eslint:unicorn",
1069
+ name: "eslint/unicorn/rules",
1049
1070
  plugins: {
1050
1071
  unicorn: pluginUnicorn
1051
1072
  },
@@ -1091,13 +1112,13 @@ var vue = async (options = {}) => {
1091
1112
  ]);
1092
1113
  return [
1093
1114
  {
1094
- name: "eslint:vue:setup",
1115
+ name: "eslint/vue/setup",
1095
1116
  plugins: {
1096
1117
  vue: pluginVue
1097
1118
  }
1098
1119
  },
1099
1120
  {
1100
- name: "eslint:vue:rules",
1121
+ name: "eslint/vue/rules",
1101
1122
  files: [GLOB_VUE],
1102
1123
  languageOptions: {
1103
1124
  parser: parserVue,
@@ -1231,13 +1252,13 @@ var yml = async (options) => {
1231
1252
  ]);
1232
1253
  return [
1233
1254
  {
1234
- name: "eslint:yaml:setup",
1255
+ name: "eslint/yaml/setup",
1235
1256
  plugins: {
1236
1257
  yml: pluginYml
1237
1258
  }
1238
1259
  },
1239
1260
  {
1240
- name: "eslint:yaml:rules",
1261
+ name: "eslint/yaml/rules",
1241
1262
  files: [GLOB_YAML],
1242
1263
  languageOptions: {
1243
1264
  parser: parserYml
@@ -1268,13 +1289,13 @@ var toml = async (options) => {
1268
1289
  ]);
1269
1290
  return [
1270
1291
  {
1271
- name: "eslint:toml:setup",
1292
+ name: "eslint/toml/setup",
1272
1293
  plugins: {
1273
1294
  toml: pluginToml
1274
1295
  }
1275
1296
  },
1276
1297
  {
1277
- name: "eslint:toml:rules",
1298
+ name: "eslint/toml/rules",
1278
1299
  files: [GLOB_TOML],
1279
1300
  languageOptions: {
1280
1301
  parser: parserToml
@@ -1315,7 +1336,7 @@ var test = async (options) => {
1315
1336
  ]);
1316
1337
  return [
1317
1338
  {
1318
- name: "eslint:test:setup",
1339
+ name: "eslint/test/setup",
1319
1340
  plugins: {
1320
1341
  test: {
1321
1342
  ...pluginVitest,
@@ -1328,7 +1349,7 @@ var test = async (options) => {
1328
1349
  }
1329
1350
  },
1330
1351
  {
1331
- name: "eslint:test:rules",
1352
+ name: "eslint/test/rules",
1332
1353
  files: GLOB_TESTS,
1333
1354
  rules: {
1334
1355
  "test/consistent-test-it": [
@@ -1353,7 +1374,7 @@ async function perfectionist() {
1353
1374
  );
1354
1375
  return [
1355
1376
  {
1356
- name: "eslint:perfectionist",
1377
+ name: "eslint/perfectionist/setup",
1357
1378
  plugins: {
1358
1379
  perfectionist: pluginPerfectionist
1359
1380
  }
@@ -1363,50 +1384,49 @@ async function perfectionist() {
1363
1384
 
1364
1385
  // src/configs/prettier.ts
1365
1386
  var prettier = async (options) => {
1366
- const [pluginPrettier, configPrettier, parserPlain] = await Promise.all([
1387
+ const [pluginPrettier, configPrettier] = await Promise.all([
1367
1388
  interopDefault(import("eslint-plugin-prettier")),
1368
1389
  // @ts-expect-error missing types
1369
- interopDefault(import("eslint-config-prettier")),
1370
- interopDefault(import("eslint-parser-plain"))
1390
+ interopDefault(import("eslint-config-prettier"))
1371
1391
  ]);
1372
1392
  const PlainFileRules = [
1373
1393
  {
1374
- name: "eslint:prettier:markdown",
1394
+ name: "eslint/prettier/markdown",
1375
1395
  files: [GLOB_MARKDOWN],
1376
1396
  parser: "markdown"
1377
1397
  },
1378
1398
  {
1379
- name: "eslint:prettier:mdx",
1399
+ name: "eslint/prettier/mdx",
1380
1400
  files: [GLOB_MDX],
1381
1401
  parser: "mdx"
1382
1402
  },
1383
1403
  {
1384
- name: "eslint:prettier:html",
1404
+ name: "eslint/prettier/html",
1385
1405
  files: ["**/*.html"],
1386
1406
  parser: "html"
1387
1407
  },
1388
1408
  {
1389
- name: "eslint:prettier:css",
1409
+ name: "eslint/prettier/css",
1390
1410
  files: [GLOB_CSS, GLOB_POSTCSS],
1391
1411
  parser: "css"
1392
1412
  },
1393
1413
  {
1394
- name: "eslint:prettier:scss",
1414
+ name: "eslint/prettier/scss",
1395
1415
  files: [GLOB_SCSS],
1396
1416
  parser: "scss"
1397
1417
  },
1398
1418
  {
1399
- name: "eslint:prettier:less",
1419
+ name: "eslint/prettier/less",
1400
1420
  files: [GLOB_LESS],
1401
1421
  parser: "less"
1402
1422
  },
1403
1423
  {
1404
- name: "eslint:prettier:yaml",
1424
+ name: "eslint/prettier/yaml",
1405
1425
  files: [GLOB_YAML],
1406
1426
  parser: "yaml"
1407
1427
  },
1408
1428
  {
1409
- name: "eslint:prettier:graphql",
1429
+ name: "eslint/prettier/graphql",
1410
1430
  files: ["**/*.graphql"],
1411
1431
  parser: "graphql"
1412
1432
  }
@@ -1429,13 +1449,13 @@ var prettier = async (options) => {
1429
1449
  }));
1430
1450
  return [
1431
1451
  {
1432
- name: "eslint:prettier:setup",
1452
+ name: "eslint/prettier/setup",
1433
1453
  plugins: {
1434
1454
  prettier: pluginPrettier
1435
1455
  }
1436
1456
  },
1437
1457
  {
1438
- name: "eslint:prettier:rules",
1458
+ name: "eslint/prettier/rules",
1439
1459
  ignores: [GLOB_TOML],
1440
1460
  rules: {
1441
1461
  ...configPrettier.rules,
@@ -1458,13 +1478,13 @@ async function next() {
1458
1478
  const pluginNext = await interopDefault(import("@next/eslint-plugin-next"));
1459
1479
  return [
1460
1480
  {
1461
- name: "eslint:next:setup",
1481
+ name: "eslint/next/setup",
1462
1482
  plugins: {
1463
1483
  "@next/next": pluginNext
1464
1484
  }
1465
1485
  },
1466
1486
  {
1467
- name: "eslint:next:rules",
1487
+ name: "eslint/next/rules",
1468
1488
  files: [GLOB_TSX, GLOB_JSX],
1469
1489
  languageOptions: {
1470
1490
  parserOptions: {
@@ -1481,7 +1501,13 @@ async function next() {
1481
1501
  },
1482
1502
  rules: {
1483
1503
  ...pluginNext.configs.recommended.rules,
1484
- ...pluginNext.configs["core-web-vitals"].rules
1504
+ ...pluginNext.configs["core-web-vitals"].rules,
1505
+ "react-refresh/only-export-components": [
1506
+ "warn",
1507
+ {
1508
+ allowExportNames: ["metadata"]
1509
+ }
1510
+ ]
1485
1511
  }
1486
1512
  }
1487
1513
  ];
@@ -1500,7 +1526,7 @@ var react = async (options) => {
1500
1526
  );
1501
1527
  const _react = [
1502
1528
  {
1503
- name: "eslint:react:setup",
1529
+ name: "eslint/react/setup",
1504
1530
  plugins: {
1505
1531
  "react": pluginReact,
1506
1532
  "react-hooks": pluginReactHooks,
@@ -1508,7 +1534,7 @@ var react = async (options) => {
1508
1534
  }
1509
1535
  },
1510
1536
  {
1511
- name: "eslint:react:rules",
1537
+ name: "eslint/react/rules",
1512
1538
  files: [GLOB_TSX, GLOB_JSX],
1513
1539
  languageOptions: {
1514
1540
  parserOptions: {
@@ -1551,7 +1577,7 @@ async function tailwindcss() {
1551
1577
  );
1552
1578
  return [
1553
1579
  {
1554
- name: "eslint:tailwindcss",
1580
+ name: "eslint/tailwindcss/rules",
1555
1581
  plugins: {
1556
1582
  tailwindcss: pluginTailwindcss
1557
1583
  },
@@ -1680,6 +1706,7 @@ var src_default = config;
1680
1706
  jsonc,
1681
1707
  markdown,
1682
1708
  node,
1709
+ parserPlain,
1683
1710
  perfectionist,
1684
1711
  prettier,
1685
1712
  sortPackageJson,
package/dist/index.d.cts CHANGED
@@ -201,6 +201,31 @@ interface OptionsConfig extends OptionsComponentExts {
201
201
  */
202
202
  declare function config(options?: OptionsConfig): Promise<ConfigItem[]>;
203
203
 
204
+ declare const parserPlain: {
205
+ meta: {
206
+ name: string;
207
+ };
208
+ parseForESLint: (code: string) => {
209
+ ast: {
210
+ body: never[];
211
+ comments: never[];
212
+ loc: {
213
+ end: number;
214
+ start: number;
215
+ };
216
+ range: number[];
217
+ tokens: never[];
218
+ type: string;
219
+ };
220
+ scopeManager: null;
221
+ services: {
222
+ isPlain: boolean;
223
+ };
224
+ visitorKeys: {
225
+ Program: never[];
226
+ };
227
+ };
228
+ };
204
229
  /**
205
230
  * Combine array and non-array configs into a single array.
206
231
  */
@@ -234,4 +259,4 @@ declare const GLOB_TESTS: string[];
234
259
  declare const GLOB_ALL_SRC: string[];
235
260
  declare const GLOB_EXCLUDE: string[];
236
261
 
237
- export { type Awaitable, type ConfigFn, type ConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MDX, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type GetConfigOption, type IgnoresConfig, type JavascriptConfig, type JsoncConfig, type MarkdownConfig, type OptionsComponentExts, type OptionsConfig, type OptionsHasTypeScript, type OptionsOverrides, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type PrettierConfig, type PrettierRequiredOptions, type TestConfig, type TomlConfig, type TypeScriptConfig, type VueConfig, type YmlConfig, combine, comments, config, config as default, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, perfectionist, prettier, sortPackageJson, sortTsconfig, test, toml, typescript, unicorn, vue, yml };
262
+ export { type Awaitable, type ConfigFn, type ConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MDX, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type GetConfigOption, type IgnoresConfig, type JavascriptConfig, type JsoncConfig, type MarkdownConfig, type OptionsComponentExts, type OptionsConfig, type OptionsHasTypeScript, type OptionsOverrides, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type PrettierConfig, type PrettierRequiredOptions, type TestConfig, type TomlConfig, type TypeScriptConfig, type VueConfig, type YmlConfig, combine, comments, config, config as default, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, parserPlain, perfectionist, prettier, sortPackageJson, sortTsconfig, test, toml, typescript, unicorn, vue, yml };
package/dist/index.d.ts CHANGED
@@ -201,6 +201,31 @@ interface OptionsConfig extends OptionsComponentExts {
201
201
  */
202
202
  declare function config(options?: OptionsConfig): Promise<ConfigItem[]>;
203
203
 
204
+ declare const parserPlain: {
205
+ meta: {
206
+ name: string;
207
+ };
208
+ parseForESLint: (code: string) => {
209
+ ast: {
210
+ body: never[];
211
+ comments: never[];
212
+ loc: {
213
+ end: number;
214
+ start: number;
215
+ };
216
+ range: number[];
217
+ tokens: never[];
218
+ type: string;
219
+ };
220
+ scopeManager: null;
221
+ services: {
222
+ isPlain: boolean;
223
+ };
224
+ visitorKeys: {
225
+ Program: never[];
226
+ };
227
+ };
228
+ };
204
229
  /**
205
230
  * Combine array and non-array configs into a single array.
206
231
  */
@@ -234,4 +259,4 @@ declare const GLOB_TESTS: string[];
234
259
  declare const GLOB_ALL_SRC: string[];
235
260
  declare const GLOB_EXCLUDE: string[];
236
261
 
237
- export { type Awaitable, type ConfigFn, type ConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MDX, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type GetConfigOption, type IgnoresConfig, type JavascriptConfig, type JsoncConfig, type MarkdownConfig, type OptionsComponentExts, type OptionsConfig, type OptionsHasTypeScript, type OptionsOverrides, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type PrettierConfig, type PrettierRequiredOptions, type TestConfig, type TomlConfig, type TypeScriptConfig, type VueConfig, type YmlConfig, combine, comments, config, config as default, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, perfectionist, prettier, sortPackageJson, sortTsconfig, test, toml, typescript, unicorn, vue, yml };
262
+ export { type Awaitable, type ConfigFn, type ConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MDX, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type GetConfigOption, type IgnoresConfig, type JavascriptConfig, type JsoncConfig, type MarkdownConfig, type OptionsComponentExts, type OptionsConfig, type OptionsHasTypeScript, type OptionsOverrides, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type PrettierConfig, type PrettierRequiredOptions, type TestConfig, type TomlConfig, type TypeScriptConfig, type VueConfig, type YmlConfig, combine, comments, config, config as default, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, parserPlain, perfectionist, prettier, sortPackageJson, sortTsconfig, test, toml, typescript, unicorn, vue, yml };
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ async function comments() {
6
6
  );
7
7
  return [
8
8
  {
9
- name: "eslint:eslint-comments",
9
+ name: "eslint/eslint-comments/rules",
10
10
  plugins: {
11
11
  "eslint-comments": pluginComments
12
12
  },
@@ -120,6 +120,26 @@ var ignores = async (options) => {
120
120
  };
121
121
 
122
122
  // src/utils.ts
123
+ var parserPlain = {
124
+ meta: {
125
+ name: "parser-plain"
126
+ },
127
+ parseForESLint: (code) => ({
128
+ ast: {
129
+ body: [],
130
+ comments: [],
131
+ loc: { end: code.length, start: 0 },
132
+ range: [0, code.length],
133
+ tokens: [],
134
+ type: "Program"
135
+ },
136
+ scopeManager: null,
137
+ services: { isPlain: true },
138
+ visitorKeys: {
139
+ Program: []
140
+ }
141
+ })
142
+ };
123
143
  async function combine(...configs) {
124
144
  const resolved = await Promise.all(configs);
125
145
  return resolved.flat();
@@ -134,7 +154,7 @@ async function imports() {
134
154
  const pluginImport = await interopDefault(import("eslint-plugin-import-x"));
135
155
  return [
136
156
  {
137
- name: "eslint:imports",
157
+ name: "eslint/imports/rules",
138
158
  plugins: {
139
159
  import: pluginImport
140
160
  },
@@ -165,7 +185,7 @@ var javascript = async (options) => {
165
185
  );
166
186
  return [
167
187
  {
168
- name: "eslint:javascript",
188
+ name: "eslint/javascript/rules",
169
189
  languageOptions: {
170
190
  ecmaVersion: 2022,
171
191
  globals: {
@@ -401,7 +421,7 @@ var javascript = async (options) => {
401
421
  }
402
422
  },
403
423
  {
404
- name: "eslint:scripts-overrides",
424
+ name: "eslint/scripts-overrides/disables/cli",
405
425
  files: [`scripts/${GLOB_SRC}`, `cli.${GLOB_SRC_EXT}`],
406
426
  rules: {
407
427
  "no-console": "off"
@@ -414,7 +434,7 @@ var javascript = async (options) => {
414
434
  async function jsdoc() {
415
435
  return [
416
436
  {
417
- name: "eslint:jsdoc",
437
+ name: "eslint/jsdoc/rules",
418
438
  plugins: {
419
439
  jsdoc: await interopDefault(import("eslint-plugin-jsdoc"))
420
440
  },
@@ -450,13 +470,13 @@ var jsonc = async (options) => {
450
470
  ]);
451
471
  return [
452
472
  {
453
- name: "eslint:jsonc:setup",
473
+ name: "eslint/jsonc/setup",
454
474
  plugins: {
455
475
  jsonc: pluginJsonc
456
476
  }
457
477
  },
458
478
  {
459
- name: "eslint:jsonc:rules",
479
+ name: "eslint/jsonc/rules",
460
480
  files: [GLOB_JSON, GLOB_JSON5, GLOB_JSONC],
461
481
  languageOptions: {
462
482
  parser: parserJsonc
@@ -520,13 +540,13 @@ var markdown = async (options) => {
520
540
  ]);
521
541
  return [
522
542
  {
523
- name: "eslint:markdown:setup",
543
+ name: "eslint/markdown/setup",
524
544
  plugins: {
525
545
  mdx: pluginMdx
526
546
  }
527
547
  },
528
548
  {
529
- name: "eslint:markdown:processor",
549
+ name: "eslint/markdown/processor",
530
550
  files: [GLOB_MARKDOWN, GLOB_MDX],
531
551
  languageOptions: {
532
552
  ecmaVersion: "latest",
@@ -539,7 +559,7 @@ var markdown = async (options) => {
539
559
  }
540
560
  },
541
561
  {
542
- name: "eslint:markdown:rules",
562
+ name: "eslint/markdown/rules",
543
563
  files: [
544
564
  GLOB_MARKDOWN_CODE,
545
565
  ...componentExts.map((ext) => `${GLOB_MARKDOWN}/**/*.${ext}`)
@@ -598,7 +618,7 @@ async function node() {
598
618
  const pluginNode = await interopDefault(import("eslint-plugin-n"));
599
619
  return [
600
620
  {
601
- name: "eslint:node",
621
+ name: "eslint/node/rules",
602
622
  plugins: {
603
623
  n: pluginNode
604
624
  },
@@ -620,7 +640,7 @@ async function node() {
620
640
  async function sortPackageJson() {
621
641
  return [
622
642
  {
623
- name: "eslint:sort-package-json",
643
+ name: "eslint/sort/package-json",
624
644
  files: ["**/package.json"],
625
645
  rules: {
626
646
  "jsonc/sort-array-values": [
@@ -700,7 +720,7 @@ async function sortPackageJson() {
700
720
  async function sortTsconfig() {
701
721
  return [
702
722
  {
703
- name: "eslint:sort-tsconfig",
723
+ name: "eslint/sort/tsconfig-json",
704
724
  files: ["**/tsconfig.json", "**/tsconfig.*.json"],
705
725
  rules: {
706
726
  "jsonc/sort-keys": [
@@ -860,13 +880,13 @@ var typescript = async (options) => {
860
880
  return [
861
881
  {
862
882
  // Install the plugins without globs, so they can be configured separately.
863
- name: "eslint:typescript:setup",
883
+ name: "eslint/typescript/setup",
864
884
  plugins: {
865
885
  "@typescript-eslint": pluginTs
866
886
  }
867
887
  },
868
888
  {
869
- name: "eslint:typescript:rules",
889
+ name: "eslint/typescript/rules",
870
890
  files: [GLOB_SRC, ...componentExts.map((ext) => `**/*.${ext}`)],
871
891
  languageOptions: {
872
892
  parser: parserTs,
@@ -932,7 +952,7 @@ var typescript = async (options) => {
932
952
  }
933
953
  },
934
954
  {
935
- name: "eslint:typescript:dts-overrides",
955
+ name: "eslint/typescript/dts-overrides",
936
956
  files: ["**/*.d.ts"],
937
957
  rules: {
938
958
  "eslint-comments/no-unlimited-disable": "off",
@@ -942,15 +962,15 @@ var typescript = async (options) => {
942
962
  }
943
963
  },
944
964
  {
945
- name: "eslint:typescript:tests-overrides",
965
+ name: "eslint/typescript/disables/test",
946
966
  files: ["**/*.{test,spec}.ts?(x)"],
947
967
  rules: {
948
968
  "no-unused-expressions": "off"
949
969
  }
950
970
  },
951
971
  {
972
+ name: "eslint/typescript/disables/cjs",
952
973
  files: ["**/*.js", "**/*.cjs"],
953
- name: "eslint:typescript:javascript-overrides",
954
974
  rules: {
955
975
  "@typescript-eslint/no-require-imports": "off",
956
976
  "@typescript-eslint/no-var-requires": "off"
@@ -964,7 +984,7 @@ async function unicorn() {
964
984
  const pluginUnicorn = await interopDefault(import("eslint-plugin-unicorn"));
965
985
  return [
966
986
  {
967
- name: "eslint:unicorn",
987
+ name: "eslint/unicorn/rules",
968
988
  plugins: {
969
989
  unicorn: pluginUnicorn
970
990
  },
@@ -1010,13 +1030,13 @@ var vue = async (options = {}) => {
1010
1030
  ]);
1011
1031
  return [
1012
1032
  {
1013
- name: "eslint:vue:setup",
1033
+ name: "eslint/vue/setup",
1014
1034
  plugins: {
1015
1035
  vue: pluginVue
1016
1036
  }
1017
1037
  },
1018
1038
  {
1019
- name: "eslint:vue:rules",
1039
+ name: "eslint/vue/rules",
1020
1040
  files: [GLOB_VUE],
1021
1041
  languageOptions: {
1022
1042
  parser: parserVue,
@@ -1150,13 +1170,13 @@ var yml = async (options) => {
1150
1170
  ]);
1151
1171
  return [
1152
1172
  {
1153
- name: "eslint:yaml:setup",
1173
+ name: "eslint/yaml/setup",
1154
1174
  plugins: {
1155
1175
  yml: pluginYml
1156
1176
  }
1157
1177
  },
1158
1178
  {
1159
- name: "eslint:yaml:rules",
1179
+ name: "eslint/yaml/rules",
1160
1180
  files: [GLOB_YAML],
1161
1181
  languageOptions: {
1162
1182
  parser: parserYml
@@ -1187,13 +1207,13 @@ var toml = async (options) => {
1187
1207
  ]);
1188
1208
  return [
1189
1209
  {
1190
- name: "eslint:toml:setup",
1210
+ name: "eslint/toml/setup",
1191
1211
  plugins: {
1192
1212
  toml: pluginToml
1193
1213
  }
1194
1214
  },
1195
1215
  {
1196
- name: "eslint:toml:rules",
1216
+ name: "eslint/toml/rules",
1197
1217
  files: [GLOB_TOML],
1198
1218
  languageOptions: {
1199
1219
  parser: parserToml
@@ -1234,7 +1254,7 @@ var test = async (options) => {
1234
1254
  ]);
1235
1255
  return [
1236
1256
  {
1237
- name: "eslint:test:setup",
1257
+ name: "eslint/test/setup",
1238
1258
  plugins: {
1239
1259
  test: {
1240
1260
  ...pluginVitest,
@@ -1247,7 +1267,7 @@ var test = async (options) => {
1247
1267
  }
1248
1268
  },
1249
1269
  {
1250
- name: "eslint:test:rules",
1270
+ name: "eslint/test/rules",
1251
1271
  files: GLOB_TESTS,
1252
1272
  rules: {
1253
1273
  "test/consistent-test-it": [
@@ -1272,7 +1292,7 @@ async function perfectionist() {
1272
1292
  );
1273
1293
  return [
1274
1294
  {
1275
- name: "eslint:perfectionist",
1295
+ name: "eslint/perfectionist/setup",
1276
1296
  plugins: {
1277
1297
  perfectionist: pluginPerfectionist
1278
1298
  }
@@ -1282,50 +1302,49 @@ async function perfectionist() {
1282
1302
 
1283
1303
  // src/configs/prettier.ts
1284
1304
  var prettier = async (options) => {
1285
- const [pluginPrettier, configPrettier, parserPlain] = await Promise.all([
1305
+ const [pluginPrettier, configPrettier] = await Promise.all([
1286
1306
  interopDefault(import("eslint-plugin-prettier")),
1287
1307
  // @ts-expect-error missing types
1288
- interopDefault(import("eslint-config-prettier")),
1289
- interopDefault(import("eslint-parser-plain"))
1308
+ interopDefault(import("eslint-config-prettier"))
1290
1309
  ]);
1291
1310
  const PlainFileRules = [
1292
1311
  {
1293
- name: "eslint:prettier:markdown",
1312
+ name: "eslint/prettier/markdown",
1294
1313
  files: [GLOB_MARKDOWN],
1295
1314
  parser: "markdown"
1296
1315
  },
1297
1316
  {
1298
- name: "eslint:prettier:mdx",
1317
+ name: "eslint/prettier/mdx",
1299
1318
  files: [GLOB_MDX],
1300
1319
  parser: "mdx"
1301
1320
  },
1302
1321
  {
1303
- name: "eslint:prettier:html",
1322
+ name: "eslint/prettier/html",
1304
1323
  files: ["**/*.html"],
1305
1324
  parser: "html"
1306
1325
  },
1307
1326
  {
1308
- name: "eslint:prettier:css",
1327
+ name: "eslint/prettier/css",
1309
1328
  files: [GLOB_CSS, GLOB_POSTCSS],
1310
1329
  parser: "css"
1311
1330
  },
1312
1331
  {
1313
- name: "eslint:prettier:scss",
1332
+ name: "eslint/prettier/scss",
1314
1333
  files: [GLOB_SCSS],
1315
1334
  parser: "scss"
1316
1335
  },
1317
1336
  {
1318
- name: "eslint:prettier:less",
1337
+ name: "eslint/prettier/less",
1319
1338
  files: [GLOB_LESS],
1320
1339
  parser: "less"
1321
1340
  },
1322
1341
  {
1323
- name: "eslint:prettier:yaml",
1342
+ name: "eslint/prettier/yaml",
1324
1343
  files: [GLOB_YAML],
1325
1344
  parser: "yaml"
1326
1345
  },
1327
1346
  {
1328
- name: "eslint:prettier:graphql",
1347
+ name: "eslint/prettier/graphql",
1329
1348
  files: ["**/*.graphql"],
1330
1349
  parser: "graphql"
1331
1350
  }
@@ -1348,13 +1367,13 @@ var prettier = async (options) => {
1348
1367
  }));
1349
1368
  return [
1350
1369
  {
1351
- name: "eslint:prettier:setup",
1370
+ name: "eslint/prettier/setup",
1352
1371
  plugins: {
1353
1372
  prettier: pluginPrettier
1354
1373
  }
1355
1374
  },
1356
1375
  {
1357
- name: "eslint:prettier:rules",
1376
+ name: "eslint/prettier/rules",
1358
1377
  ignores: [GLOB_TOML],
1359
1378
  rules: {
1360
1379
  ...configPrettier.rules,
@@ -1377,13 +1396,13 @@ async function next() {
1377
1396
  const pluginNext = await interopDefault(import("@next/eslint-plugin-next"));
1378
1397
  return [
1379
1398
  {
1380
- name: "eslint:next:setup",
1399
+ name: "eslint/next/setup",
1381
1400
  plugins: {
1382
1401
  "@next/next": pluginNext
1383
1402
  }
1384
1403
  },
1385
1404
  {
1386
- name: "eslint:next:rules",
1405
+ name: "eslint/next/rules",
1387
1406
  files: [GLOB_TSX, GLOB_JSX],
1388
1407
  languageOptions: {
1389
1408
  parserOptions: {
@@ -1400,7 +1419,13 @@ async function next() {
1400
1419
  },
1401
1420
  rules: {
1402
1421
  ...pluginNext.configs.recommended.rules,
1403
- ...pluginNext.configs["core-web-vitals"].rules
1422
+ ...pluginNext.configs["core-web-vitals"].rules,
1423
+ "react-refresh/only-export-components": [
1424
+ "warn",
1425
+ {
1426
+ allowExportNames: ["metadata"]
1427
+ }
1428
+ ]
1404
1429
  }
1405
1430
  }
1406
1431
  ];
@@ -1419,7 +1444,7 @@ var react = async (options) => {
1419
1444
  );
1420
1445
  const _react = [
1421
1446
  {
1422
- name: "eslint:react:setup",
1447
+ name: "eslint/react/setup",
1423
1448
  plugins: {
1424
1449
  "react": pluginReact,
1425
1450
  "react-hooks": pluginReactHooks,
@@ -1427,7 +1452,7 @@ var react = async (options) => {
1427
1452
  }
1428
1453
  },
1429
1454
  {
1430
- name: "eslint:react:rules",
1455
+ name: "eslint/react/rules",
1431
1456
  files: [GLOB_TSX, GLOB_JSX],
1432
1457
  languageOptions: {
1433
1458
  parserOptions: {
@@ -1470,7 +1495,7 @@ async function tailwindcss() {
1470
1495
  );
1471
1496
  return [
1472
1497
  {
1473
- name: "eslint:tailwindcss",
1498
+ name: "eslint/tailwindcss/rules",
1474
1499
  plugins: {
1475
1500
  tailwindcss: pluginTailwindcss
1476
1501
  },
@@ -1599,6 +1624,7 @@ export {
1599
1624
  jsonc,
1600
1625
  markdown,
1601
1626
  node,
1627
+ parserPlain,
1602
1628
  perfectionist,
1603
1629
  prettier,
1604
1630
  sortPackageJson,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@debbl/eslint-config",
3
3
  "type": "module",
4
- "version": "3.1.0",
4
+ "version": "3.1.2",
5
5
  "packageManager": "pnpm@8.15.6",
6
6
  "description": "Brendan Dash's ESLint config",
7
7
  "author": "Debbl <me@aiwan.run> (https://github.com/Debbl/)",
@@ -39,7 +39,6 @@
39
39
  "eslint-config-prettier": "^9.1.0",
40
40
  "eslint-define-config": "^2.1.0",
41
41
  "eslint-mdx": "^3.1.5",
42
- "eslint-parser-plain": "^0.1.0",
43
42
  "eslint-plugin-eslint-comments": "^3.2.0",
44
43
  "eslint-plugin-import-x": "^0.5.0",
45
44
  "eslint-plugin-jsdoc": "^48.2.2",