@infernodesign/eslint-config 1.23.0 → 1.24.0

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/cli.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as PACKAGE_NAME } from "./constants-DjBrEP6N.js";
1
+ import { t as PACKAGE_NAME } from "./constants-BBBpjSg4.js";
2
2
  import fs from "node:fs/promises";
3
3
  import fs$1 from "node:fs";
4
4
  import path from "node:path";
@@ -7,10 +7,8 @@ import c, { green } from "ansis";
7
7
  import { cac } from "cac";
8
8
  import parse from "parse-gitignore";
9
9
  import { execSync } from "node:child_process";
10
-
11
10
  //#region package.json
12
- var version = "1.23.0";
13
-
11
+ var version = "1.24.0";
14
12
  //#endregion
15
13
  //#region src/cli/constants.ts
16
14
  const vscodeSettingsString = `
@@ -137,7 +135,6 @@ const dependenciesMap = {
137
135
  unocss: ["@unocss/eslint-plugin"],
138
136
  vue: []
139
137
  };
140
-
141
138
  //#endregion
142
139
  //#region src/cli/utils.ts
143
140
  function getEslintConfigContent(mainConfig, additionalConfigs) {
@@ -157,9 +154,10 @@ function isGitClean() {
157
154
  return false;
158
155
  }
159
156
  }
160
-
161
157
  //#endregion
162
158
  //#region src/cli/stages/update-eslint-files.ts
159
+ const ESLINT_OR_PRETTIER = /eslint|prettier/;
160
+ const ESLINT_CONFIG = /eslint\.config\./;
163
161
  async function updateEslintFiles(result) {
164
162
  const cwd = process.cwd();
165
163
  const pathESLintIgnore = path.join(cwd, ".eslintignore");
@@ -185,32 +183,30 @@ async function updateEslintFiles(result) {
185
183
  const files = fs$1.readdirSync(cwd);
186
184
  const legacyConfig = [];
187
185
  files.forEach((file) => {
188
- if (/eslint|prettier/.test(file) && !/eslint\.config\./.test(file)) legacyConfig.push(file);
186
+ if (ESLINT_OR_PRETTIER.test(file) && !ESLINT_CONFIG.test(file)) legacyConfig.push(file);
189
187
  });
190
188
  if (legacyConfig.length) p.note(c.dim(legacyConfig.join(", ")), "You can now remove those files manually");
191
189
  }
192
-
193
190
  //#endregion
194
191
  //#region src/cli/constants-generated.ts
195
192
  const versionsMap = {
196
193
  "@eslint-react/eslint-plugin": "^2.13.0",
197
194
  "@next/eslint-plugin-next": "^16.1.6",
198
- "@unocss/eslint-plugin": "^66.6.0",
195
+ "@unocss/eslint-plugin": "^66.6.6",
199
196
  "astro-eslint-parser": "^1.3.0",
200
- "eslint": "^10.0.1",
197
+ "eslint": "^10.0.3",
201
198
  "eslint-plugin-astro": "^1.6.0",
202
- "eslint-plugin-better-tailwindcss": "^4.3.0",
203
- "eslint-plugin-format": "^1.4.0",
199
+ "eslint-plugin-better-tailwindcss": "^4.3.2",
200
+ "eslint-plugin-format": "^2.0.1",
204
201
  "eslint-plugin-react-hooks": "^7.0.1",
205
- "eslint-plugin-react-refresh": "^0.5.0",
202
+ "eslint-plugin-react-refresh": "^0.5.2",
206
203
  "eslint-plugin-solid": "^0.14.5",
207
- "eslint-plugin-storybook": "^10.2.10",
204
+ "eslint-plugin-storybook": "^10.2.16",
208
205
  "eslint-plugin-svelte": "^3.15.0",
209
206
  "prettier-plugin-astro": "^0.14.1",
210
207
  "prettier-plugin-slidev": "^1.0.5",
211
- "svelte-eslint-parser": "^1.4.1"
208
+ "svelte-eslint-parser": "^1.6.0"
212
209
  };
213
-
214
210
  //#endregion
215
211
  //#region src/cli/stages/update-package-json.ts
216
212
  async function updatePackageJson(result) {
@@ -251,9 +247,9 @@ async function updatePackageJson(result) {
251
247
  await fs.writeFile(pathPackageJSON, JSON.stringify(pkg, null, 2));
252
248
  p.log.success(c.green`Changes wrote to package.json`);
253
249
  }
254
-
255
250
  //#endregion
256
251
  //#region src/cli/stages/update-vscode-settings.ts
252
+ const LAST_LINE_PATTERN = /\s*\}$/;
257
253
  async function updateVscodeSettings(result) {
258
254
  const cwd = process.cwd();
259
255
  if (!result.updateVscodeSettings) return;
@@ -265,14 +261,13 @@ async function updateVscodeSettings(result) {
265
261
  p.log.success(green`Created .vscode/settings.json`);
266
262
  } else {
267
263
  let settingsContent = await fs.readFile(settingsPath, "utf8");
268
- settingsContent = settingsContent.trim().replace(/\s*\}$/, "");
264
+ settingsContent = settingsContent.trim().replace(LAST_LINE_PATTERN, "");
269
265
  settingsContent += settingsContent.endsWith(",") || settingsContent.endsWith("{") ? "" : ",";
270
266
  settingsContent += `${vscodeSettingsString}}\n`;
271
267
  await fs.writeFile(settingsPath, settingsContent, "utf-8");
272
268
  p.log.success(green`Updated .vscode/settings.json`);
273
269
  }
274
270
  }
275
-
276
271
  //#endregion
277
272
  //#region src/cli/run.ts
278
273
  async function run(options = {}) {
@@ -337,7 +332,6 @@ async function run(options = {}) {
337
332
  p.log.success(c.green`Setup completed`);
338
333
  p.outro(`Now you can update the dependencies by running ${c.blue("npm install")} and run ${c.blue("eslint --fix")}\n`);
339
334
  }
340
-
341
335
  //#endregion
342
336
  //#region src/cli/index.ts
343
337
  function header() {
@@ -358,6 +352,5 @@ cli.command("", "Run the initialization or migration").option("--yes, -y", "Skip
358
352
  cli.help();
359
353
  cli.version(version);
360
354
  cli.parse();
361
-
362
355
  //#endregion
363
- export { };
356
+ export {};
@@ -1,5 +1,4 @@
1
1
  //#region src/constants.ts
2
2
  const PACKAGE_NAME = "@infernodesign/eslint-config";
3
-
4
3
  //#endregion
5
- export { PACKAGE_NAME as t };
4
+ export { PACKAGE_NAME as t };
package/dist/index.d.ts CHANGED
@@ -495,6 +495,87 @@ interface RuleOptions {
495
495
  * @see https://eslint.org/docs/latest/rules/dot-notation
496
496
  */
497
497
  'dot-notation'?: Linter.RuleEntry<DotNotation>;
498
+ /**
499
+ * Bans a list of dependencies from being used
500
+ * @see https://github.com/es-tooling/eslint-plugin-depend/blob/main/docs/rules/ban-dependencies.md
501
+ */
502
+ 'e18e/ban-dependencies'?: Linter.RuleEntry<E18EBanDependencies>;
503
+ /**
504
+ * Prefer optimized alternatives to `indexOf()` equality checks
505
+ */
506
+ 'e18e/no-indexof-equality'?: Linter.RuleEntry<[]>;
507
+ /**
508
+ * Prefer Array.prototype.at() over length-based indexing
509
+ */
510
+ 'e18e/prefer-array-at'?: Linter.RuleEntry<[]>;
511
+ /**
512
+ * Prefer Array.prototype.fill() over Array.from or map with constant values
513
+ */
514
+ 'e18e/prefer-array-fill'?: Linter.RuleEntry<[]>;
515
+ /**
516
+ * Prefer Array.from(iterable, mapper) over [...iterable].map(mapper) to avoid intermediate array allocation
517
+ */
518
+ 'e18e/prefer-array-from-map'?: Linter.RuleEntry<[]>;
519
+ /**
520
+ * Prefer Array.some() over Array.find() when checking for element existence
521
+ */
522
+ 'e18e/prefer-array-some'?: Linter.RuleEntry<[]>;
523
+ /**
524
+ * Prefer Array.prototype.toReversed() over copying and reversing arrays
525
+ */
526
+ 'e18e/prefer-array-to-reversed'?: Linter.RuleEntry<[]>;
527
+ /**
528
+ * Prefer Array.prototype.toSorted() over copying and sorting arrays
529
+ */
530
+ 'e18e/prefer-array-to-sorted'?: Linter.RuleEntry<[]>;
531
+ /**
532
+ * Prefer Array.prototype.toSpliced() over copying and splicing arrays
533
+ */
534
+ 'e18e/prefer-array-to-spliced'?: Linter.RuleEntry<[]>;
535
+ /**
536
+ * Prefer Date.now() over new Date().getTime() and +new Date()
537
+ */
538
+ 'e18e/prefer-date-now'?: Linter.RuleEntry<[]>;
539
+ /**
540
+ * Prefer the exponentiation operator ** over Math.pow()
541
+ */
542
+ 'e18e/prefer-exponentiation-operator'?: Linter.RuleEntry<[]>;
543
+ /**
544
+ * Prefer .includes() over indexOf() comparisons for arrays and strings
545
+ */
546
+ 'e18e/prefer-includes'?: Linter.RuleEntry<[]>;
547
+ /**
548
+ * Prefer inline equality checks over temporary object creation for simple comparisons
549
+ */
550
+ 'e18e/prefer-inline-equality'?: Linter.RuleEntry<[]>;
551
+ /**
552
+ * Prefer nullish coalescing operator (?? and ??=) over verbose null checks
553
+ */
554
+ 'e18e/prefer-nullish-coalescing'?: Linter.RuleEntry<[]>;
555
+ /**
556
+ * Prefer Object.hasOwn() over Object.prototype.hasOwnProperty.call() and obj.hasOwnProperty()
557
+ */
558
+ 'e18e/prefer-object-has-own'?: Linter.RuleEntry<[]>;
559
+ /**
560
+ * prefer `RegExp.test()` over `String.match()` and `RegExp.exec()` when only checking for match existence
561
+ */
562
+ 'e18e/prefer-regex-test'?: Linter.RuleEntry<[]>;
563
+ /**
564
+ * Prefer spread syntax over Array.concat(), Array.from(), Object.assign({}, ...), and Function.apply()
565
+ */
566
+ 'e18e/prefer-spread-syntax'?: Linter.RuleEntry<[]>;
567
+ /**
568
+ * Prefer defining regular expressions at module scope to avoid re-compilation on every function call
569
+ */
570
+ 'e18e/prefer-static-regex'?: Linter.RuleEntry<[]>;
571
+ /**
572
+ * Prefer passing function and arguments directly to setTimeout/setInterval instead of wrapping in an arrow function or using bind
573
+ */
574
+ 'e18e/prefer-timer-args'?: Linter.RuleEntry<[]>;
575
+ /**
576
+ * Prefer URL.canParse() over try-catch blocks for URL validation
577
+ */
578
+ 'e18e/prefer-url-canparse'?: Linter.RuleEntry<[]>;
498
579
  /**
499
580
  * Require or disallow newline at the end of files
500
581
  * @see https://eslint.org/docs/latest/rules/eol-last
@@ -554,6 +635,7 @@ interface RuleOptions {
554
635
  /**
555
636
  * disallow unused `eslint-disable` comments
556
637
  * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/no-unused-disable.html
638
+ * @deprecated
557
639
  */
558
640
  'eslint-comments/no-unused-disable'?: Linter.RuleEntry<[]>;
559
641
  /**
@@ -580,6 +662,10 @@ interface RuleOptions {
580
662
  * Use dprint to format code
581
663
  */
582
664
  'format/dprint'?: Linter.RuleEntry<FormatDprint>;
665
+ /**
666
+ * Use oxfmt to format code
667
+ */
668
+ 'format/oxfmt'?: Linter.RuleEntry<FormatOxfmt>;
583
669
  /**
584
670
  * Use Prettier to format code
585
671
  */
@@ -5833,11 +5919,21 @@ interface RuleOptions {
5833
5919
  * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/indent.html
5834
5920
  */
5835
5921
  'toml/indent'?: Linter.RuleEntry<TomlIndent>;
5922
+ /**
5923
+ * enforce linebreaks after opening and before closing braces
5924
+ * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/inline-table-curly-newline.html
5925
+ */
5926
+ 'toml/inline-table-curly-newline'?: Linter.RuleEntry<TomlInlineTableCurlyNewline>;
5836
5927
  /**
5837
5928
  * enforce consistent spacing inside braces
5838
5929
  * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/inline-table-curly-spacing.html
5839
5930
  */
5840
5931
  'toml/inline-table-curly-spacing'?: Linter.RuleEntry<TomlInlineTableCurlySpacing>;
5932
+ /**
5933
+ * enforce placing inline table key-value pairs on separate lines
5934
+ * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/inline-table-key-value-newline.html
5935
+ */
5936
+ 'toml/inline-table-key-value-newline'?: Linter.RuleEntry<TomlInlineTableKeyValueNewline>;
5841
5937
  /**
5842
5938
  * enforce consistent spacing between keys and values in key/value pairs
5843
5939
  * @see https://ota-meshi.github.io/eslint-plugin-toml/rules/key-spacing.html
@@ -9193,6 +9289,11 @@ type DotLocation = [] | [("object" | "property")]; // ----- dot-notation -----
9193
9289
  type DotNotation = [] | [{
9194
9290
  allowKeywords?: boolean;
9195
9291
  allowPattern?: string;
9292
+ }]; // ----- e18e/ban-dependencies -----
9293
+ type E18EBanDependencies = [] | [{
9294
+ presets?: string[];
9295
+ modules?: string[];
9296
+ allowed?: string[];
9196
9297
  }]; // ----- eol-last -----
9197
9298
  type EolLast = [] | [("always" | "never" | "unix" | "windows")]; // ----- eqeqeq -----
9198
9299
  type Eqeqeq = ([] | ["always"] | ["always", {
@@ -9215,6 +9316,9 @@ type FormatDprint = [] | [{
9215
9316
  };
9216
9317
  plugins?: unknown[];
9217
9318
  [k: string]: unknown | undefined;
9319
+ }]; // ----- format/oxfmt -----
9320
+ type FormatOxfmt = [] | [{
9321
+ [k: string]: unknown | undefined;
9218
9322
  }]; // ----- format/prettier -----
9219
9323
  type FormatPrettier = [] | [{
9220
9324
  parser: string;
@@ -10007,6 +10111,7 @@ type JsoncObjectCurlyNewline = [] | [((("always" | "never") | {
10007
10111
  type JsoncObjectCurlySpacing = [] | [("always" | "never")] | [("always" | "never"), {
10008
10112
  arraysInObjects?: boolean;
10009
10113
  objectsInObjects?: boolean;
10114
+ emptyObjects?: ("ignore" | "always" | "never");
10010
10115
  }]; // ----- jsonc/object-property-newline -----
10011
10116
  type JsoncObjectPropertyNewline = [] | [{
10012
10117
  allowAllPropertiesOnSameLine?: boolean;
@@ -14458,33 +14563,33 @@ type StyleExpListStyle = [] | [{
14458
14563
  singleLine?: _StyleExpListStyle_SingleLineConfig;
14459
14564
  multiLine?: _StyleExpListStyle_MultiLineConfig;
14460
14565
  overrides?: {
14461
- "()"?: _StyleExpListStyle_BaseConfig;
14462
- "[]"?: _StyleExpListStyle_BaseConfig;
14463
- "{}"?: _StyleExpListStyle_BaseConfig;
14464
- "<>"?: _StyleExpListStyle_BaseConfig;
14465
- ArrayExpression?: _StyleExpListStyle_BaseConfig;
14466
- ArrayPattern?: _StyleExpListStyle_BaseConfig;
14467
- ArrowFunctionExpression?: _StyleExpListStyle_BaseConfig;
14468
- CallExpression?: _StyleExpListStyle_BaseConfig;
14469
- ExportNamedDeclaration?: _StyleExpListStyle_BaseConfig;
14470
- FunctionDeclaration?: _StyleExpListStyle_BaseConfig;
14471
- FunctionExpression?: _StyleExpListStyle_BaseConfig;
14472
- IfStatement?: _StyleExpListStyle_BaseConfig;
14473
- ImportAttributes?: _StyleExpListStyle_BaseConfig;
14474
- ImportDeclaration?: _StyleExpListStyle_BaseConfig;
14475
- JSONArrayExpression?: _StyleExpListStyle_BaseConfig;
14476
- JSONObjectExpression?: _StyleExpListStyle_BaseConfig;
14477
- NewExpression?: _StyleExpListStyle_BaseConfig;
14478
- ObjectExpression?: _StyleExpListStyle_BaseConfig;
14479
- ObjectPattern?: _StyleExpListStyle_BaseConfig;
14480
- TSDeclareFunction?: _StyleExpListStyle_BaseConfig;
14481
- TSEnumBody?: _StyleExpListStyle_BaseConfig;
14482
- TSFunctionType?: _StyleExpListStyle_BaseConfig;
14483
- TSInterfaceBody?: _StyleExpListStyle_BaseConfig;
14484
- TSTupleType?: _StyleExpListStyle_BaseConfig;
14485
- TSTypeLiteral?: _StyleExpListStyle_BaseConfig;
14486
- TSTypeParameterDeclaration?: _StyleExpListStyle_BaseConfig;
14487
- TSTypeParameterInstantiation?: _StyleExpListStyle_BaseConfig;
14566
+ "()"?: (_StyleExpListStyle_BaseConfig | "off");
14567
+ "[]"?: (_StyleExpListStyle_BaseConfig | "off");
14568
+ "{}"?: (_StyleExpListStyle_BaseConfig | "off");
14569
+ "<>"?: (_StyleExpListStyle_BaseConfig | "off");
14570
+ ArrayExpression?: (_StyleExpListStyle_BaseConfig | "off");
14571
+ ArrayPattern?: (_StyleExpListStyle_BaseConfig | "off");
14572
+ ArrowFunctionExpression?: (_StyleExpListStyle_BaseConfig | "off");
14573
+ CallExpression?: (_StyleExpListStyle_BaseConfig | "off");
14574
+ ExportNamedDeclaration?: (_StyleExpListStyle_BaseConfig | "off");
14575
+ FunctionDeclaration?: (_StyleExpListStyle_BaseConfig | "off");
14576
+ FunctionExpression?: (_StyleExpListStyle_BaseConfig | "off");
14577
+ IfStatement?: (_StyleExpListStyle_BaseConfig | "off");
14578
+ ImportAttributes?: (_StyleExpListStyle_BaseConfig | "off");
14579
+ ImportDeclaration?: (_StyleExpListStyle_BaseConfig | "off");
14580
+ JSONArrayExpression?: (_StyleExpListStyle_BaseConfig | "off");
14581
+ JSONObjectExpression?: (_StyleExpListStyle_BaseConfig | "off");
14582
+ NewExpression?: (_StyleExpListStyle_BaseConfig | "off");
14583
+ ObjectExpression?: (_StyleExpListStyle_BaseConfig | "off");
14584
+ ObjectPattern?: (_StyleExpListStyle_BaseConfig | "off");
14585
+ TSDeclareFunction?: (_StyleExpListStyle_BaseConfig | "off");
14586
+ TSEnumBody?: (_StyleExpListStyle_BaseConfig | "off");
14587
+ TSFunctionType?: (_StyleExpListStyle_BaseConfig | "off");
14588
+ TSInterfaceBody?: (_StyleExpListStyle_BaseConfig | "off");
14589
+ TSTupleType?: (_StyleExpListStyle_BaseConfig | "off");
14590
+ TSTypeLiteral?: (_StyleExpListStyle_BaseConfig | "off");
14591
+ TSTypeParameterDeclaration?: (_StyleExpListStyle_BaseConfig | "off");
14592
+ TSTypeParameterInstantiation?: (_StyleExpListStyle_BaseConfig | "off");
14488
14593
  };
14489
14594
  }];
14490
14595
  interface _StyleExpListStyle_SingleLineConfig {
@@ -15355,6 +15460,7 @@ type StylePaddingLineBetweenStatements = {
15355
15460
  }[];
15356
15461
  interface _StylePaddingLineBetweenStatements_SelectorOption {
15357
15462
  selector: string;
15463
+ lineMode?: ("any" | "singleline" | "multiline");
15358
15464
  } // ----- style/quote-props -----
15359
15465
  type StyleQuoteProps = ([] | [("always" | "as-needed" | "consistent" | "consistent-as-needed")] | [] | [("always" | "as-needed" | "consistent" | "consistent-as-needed")] | [("always" | "as-needed" | "consistent" | "consistent-as-needed"), {
15360
15466
  keywords?: boolean;
@@ -15738,10 +15844,19 @@ type TomlCommaStyle = [] | [("first" | "last")] | [("first" | "last"), {
15738
15844
  type TomlIndent = [] | [("tab" | number)] | [("tab" | number), {
15739
15845
  subTables?: number;
15740
15846
  keyValuePairs?: number;
15741
- }]; // ----- toml/inline-table-curly-spacing -----
15847
+ }]; // ----- toml/inline-table-curly-newline -----
15848
+ type TomlInlineTableCurlyNewline = [] | [(("always" | "never") | {
15849
+ multiline?: boolean;
15850
+ minProperties?: number;
15851
+ consistent?: boolean;
15852
+ })]; // ----- toml/inline-table-curly-spacing -----
15742
15853
  type TomlInlineTableCurlySpacing = [] | [("always" | "never")] | [("always" | "never"), {
15743
15854
  arraysInObjects?: boolean;
15744
15855
  objectsInObjects?: boolean;
15856
+ emptyObjects?: ("ignore" | "always" | "never");
15857
+ }]; // ----- toml/inline-table-key-value-newline -----
15858
+ type TomlInlineTableKeyValueNewline = [] | [{
15859
+ allowAllPropertiesOnSameLine?: boolean;
15745
15860
  }]; // ----- toml/key-spacing -----
15746
15861
  type TomlKeySpacing = [] | [({
15747
15862
  align?: (("equal" | "value") | {
@@ -18160,6 +18275,7 @@ type YamlFlowMappingCurlyNewline = [] | [(("always" | "never") | {
18160
18275
  type YamlFlowMappingCurlySpacing = [] | [("always" | "never")] | [("always" | "never"), {
18161
18276
  arraysInObjects?: boolean;
18162
18277
  objectsInObjects?: boolean;
18278
+ emptyObjects?: ("ignore" | "always" | "never");
18163
18279
  }]; // ----- yaml/flow-sequence-bracket-newline -----
18164
18280
  type YamlFlowSequenceBracketNewline = [] | [(("always" | "never" | "consistent") | {
18165
18281
  multiline?: boolean;
@@ -18330,7 +18446,7 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
18330
18446
  exceptRange?: boolean;
18331
18447
  onlyEquality?: boolean;
18332
18448
  }]; // Names of all the configs
18333
- type ConfigNames = 'config/gitignore' | 'config/ignores' | 'config/javascript/setup' | 'config/javascript/rules' | 'config/eslint-comments/rules' | 'config/node/rules' | 'config/imports/rules' | 'config/command/rules' | 'config/perfectionist/setup' | 'config/imports/rules' | 'config/unicorn/rules' | 'config/jsdoc/rules' | 'config/jsx/setup' | 'config/typescript/setup' | 'config/typescript/parser' | 'config/typescript/type-aware-parser' | 'config/typescript/rules' | 'config/typescript/rules-type-aware' | 'config/typescript/erasable-syntax-only' | 'config/stylistic/rules' | 'config/regexp/rules' | 'config/test/setup' | 'config/test/rules' | 'config/storybook/setup' | 'config/vue/setup' | 'config/vue/rules' | 'config/react/setup' | 'config/react/rules' | 'config/react/typescript' | 'config/react/type-aware-rules' | 'config/nextjs/setup' | 'config/nextjs/rules' | 'config/solid/setup' | 'config/solid/rules' | 'config/svelte/setup' | 'config/svelte/rules' | 'config/unocss' | 'config/astro/setup' | 'config/astro/rules' | 'config/jsonc/setup' | 'config/jsonc/rules' | 'config/sort/package-json' | 'config/sort/tsconfig-json' | 'config/pnpm/package-json' | 'config/pnpm/pnpm-workspace-yaml' | 'config/pnpm/pnpm-workspace-yaml-sort' | 'config/yaml/setup' | 'config/yaml/rules' | 'config/yaml/pnpm-workspace' | 'config/toml/setup' | 'config/toml/rules' | 'config/markdown/setup' | 'config/markdown/processor' | 'config/markdown/parser' | 'config/markdown/rules' | 'config/markdown/disables' | 'config/formatter/setup' | 'config/formatter/css' | 'config/formatter/scss' | 'config/formatter/less' | 'config/formatter/html' | 'config/formatter/xml' | 'config/formatter/svg' | 'config/formatter/markdown' | 'config/formatter/astro' | 'config/formatter/astro/disables' | 'config/formatter/graphql' | 'config/disables/scripts' | 'config/disables/cli' | 'config/disables/bin' | 'config/disables/dts' | 'config/disables/cjs' | 'config/disables/config-files';
18449
+ type ConfigNames = 'config/gitignore' | 'config/ignores' | 'config/javascript/setup' | 'config/javascript/rules' | 'config/eslint-comments/rules' | 'config/node/setup' | 'config/node/rules' | 'config/imports/rules' | 'config/command/rules' | 'config/perfectionist/setup' | 'config/imports/rules' | 'config/e18e/rules' | 'config/unicorn/rules' | 'config/jsdoc/rules' | 'config/jsx/setup' | 'config/typescript/setup' | 'config/typescript/parser' | 'config/typescript/type-aware-parser' | 'config/typescript/rules' | 'config/typescript/rules-type-aware' | 'config/typescript/erasable-syntax-only' | 'config/stylistic/rules' | 'config/regexp/rules' | 'config/test/setup' | 'config/test/rules' | 'config/storybook/setup' | 'config/vue/setup' | 'config/vue/rules' | 'config/react/setup' | 'config/react/rules' | 'config/react/typescript' | 'config/react/type-aware-rules' | 'config/nextjs/setup' | 'config/nextjs/rules' | 'config/solid/setup' | 'config/solid/rules' | 'config/svelte/setup' | 'config/svelte/rules' | 'config/unocss' | 'config/astro/setup' | 'config/astro/rules' | 'config/jsonc/setup' | 'config/jsonc/rules' | 'config/sort/package-json' | 'config/sort/tsconfig-json' | 'config/pnpm/package-json' | 'config/pnpm/pnpm-workspace-yaml' | 'config/pnpm/pnpm-workspace-yaml-sort' | 'config/yaml/setup' | 'config/yaml/rules' | 'config/yaml/pnpm-workspace' | 'config/toml/setup' | 'config/toml/rules' | 'config/markdown/setup' | 'config/markdown/processor' | 'config/markdown/parser' | 'config/markdown/rules' | 'config/markdown/disables' | 'config/formatter/setup' | 'config/formatter/css' | 'config/formatter/scss' | 'config/formatter/less' | 'config/formatter/html' | 'config/formatter/xml' | 'config/formatter/svg' | 'config/formatter/markdown' | 'config/formatter/astro' | 'config/formatter/astro/disables' | 'config/formatter/graphql' | 'config/disables/scripts' | 'config/disables/cli' | 'config/disables/bin' | 'config/disables/dts' | 'config/disables/cjs' | 'config/disables/config-files';
18334
18450
  //#endregion
18335
18451
  //#region src/vendor/prettier-types.d.ts
18336
18452
  type VendoredPrettierOptions = Partial<VendoredPrettierOptionsRequired>;
@@ -18379,6 +18495,7 @@ interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
18379
18495
  jsonc?: boolean | OptionsOverrides;
18380
18496
  jsdoc?: boolean | OptionsOverrides | OptionsProjectType | OptionsStylistic;
18381
18497
  jsx?: boolean | OptionsJSX;
18498
+ e18e?: boolean | OptionsE18e;
18382
18499
  markdown?: boolean | OptionsOverrides;
18383
18500
  nextjs?: boolean | OptionsNextjs | OptionsOverrides;
18384
18501
  overrides?: {
@@ -18414,6 +18531,11 @@ interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
18414
18531
  vue?: boolean | OptionsVue;
18415
18532
  yaml?: boolean | OptionsOverrides;
18416
18533
  }
18534
+ interface OptionsE18e extends OptionsOverrides {
18535
+ modernization?: boolean;
18536
+ moduleReplacements?: boolean;
18537
+ performanceImprovements?: boolean;
18538
+ }
18417
18539
  interface OptionsFiles {
18418
18540
  files?: string[];
18419
18541
  }
@@ -18543,6 +18665,9 @@ declare function comments(): Promise<TypedFlatConfigItem[]>;
18543
18665
  //#region src/configs/disables.d.ts
18544
18666
  declare function disables(): Promise<TypedFlatConfigItem[]>;
18545
18667
  //#endregion
18668
+ //#region src/configs/e18e.d.ts
18669
+ declare function e18e(options?: OptionsIsInEditor & OptionsE18e): Promise<TypedFlatConfigItem[]>;
18670
+ //#endregion
18546
18671
  //#region src/configs/formatters.d.ts
18547
18672
  declare function formatters(options?: true | OptionsFormatters, stylistic?: StylisticConfig): Promise<TypedFlatConfigItem[]>;
18548
18673
  //#endregion
@@ -18709,4 +18834,4 @@ declare function renamePluginInConfigs(configs: TypedFlatConfigItem[], map: Reco
18709
18834
  declare function renameRules(rules: Record<string, any>, map: Record<string, string>): Record<string, any>;
18710
18835
  declare function toArray<T>(value: T | T[]): T[];
18711
18836
  //#endregion
18712
- export { Awaitable, CONFIG_PRESET_FULL_OFF, CONFIG_PRESET_FULL_ON, type ConfigNames, GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SEARCH_EXCLUDE, GLOB_SRC, GLOB_SRC_EXT, GLOB_STORYBOOK, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, OptionsComponentExts, OptionsConfig, OptionsFiles, OptionsFormatters, OptionsHasTypeScript, OptionsIsInEditor, OptionsJSX, OptionsJSXA11y, OptionsNextjs, OptionsOverrides, OptionsPnpm, OptionsProjectType, OptionsReact, OptionsRegExp, OptionsStylistic, OptionsTailwindcss, OptionsTypeScriptErasableOnly, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, OptionsUnoCSS, OptionsVue, PACKAGE_NAME, ResolvedOptions, Rules, StylisticConfig, StylisticConfigDefaults, StylisticOptions, TypedFlatConfigItem, astro, combine, command, comments, config, config as inferno, defaultPluginRenaming, disables, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInCursorAgent, isInEditorEnv, isInGitHooksOrLintStaged, isInVSCodeESLintExtension, isPackageInScope, javascript, jsdoc, jsonc, jsx, markdown, nextjs, node, normalizeRules, packageExportsSortOrder, packageSortOrder, parserPlain, perfectionist, pnpm, react, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, solid, sortPackageJson, sortTsconfig, storybook, stylistic, svelte, tailwindcss, test, toArray, toml, typescript, unicorn, unocss, vue, yaml };
18837
+ export { Awaitable, CONFIG_PRESET_FULL_OFF, CONFIG_PRESET_FULL_ON, type ConfigNames, GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SEARCH_EXCLUDE, GLOB_SRC, GLOB_SRC_EXT, GLOB_STORYBOOK, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, OptionsComponentExts, OptionsConfig, OptionsE18e, OptionsFiles, OptionsFormatters, OptionsHasTypeScript, OptionsIsInEditor, OptionsJSX, OptionsJSXA11y, OptionsNextjs, OptionsOverrides, OptionsPnpm, OptionsProjectType, OptionsReact, OptionsRegExp, OptionsStylistic, OptionsTailwindcss, OptionsTypeScriptErasableOnly, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, OptionsUnoCSS, OptionsVue, PACKAGE_NAME, ResolvedOptions, Rules, StylisticConfig, StylisticConfigDefaults, StylisticOptions, TypedFlatConfigItem, astro, combine, command, comments, config, config as inferno, defaultPluginRenaming, disables, e18e, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInCursorAgent, isInEditorEnv, isInGitHooksOrLintStaged, isInVSCodeESLintExtension, isPackageInScope, javascript, jsdoc, jsonc, jsx, markdown, nextjs, node, normalizeRules, packageExportsSortOrder, packageSortOrder, parserPlain, perfectionist, pnpm, react, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, solid, sortPackageJson, sortTsconfig, storybook, stylistic, svelte, tailwindcss, test, toArray, toml, typescript, unicorn, unocss, vue, yaml };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as PACKAGE_NAME } from "./constants-DjBrEP6N.js";
1
+ import { t as PACKAGE_NAME } from "./constants-BBBpjSg4.js";
2
2
  import { FlatConfigComposer } from "eslint-flat-config-utils";
3
3
  import process$1 from "node:process";
4
4
  import fs from "node:fs/promises";
@@ -7,6 +7,7 @@ import fs$1, { existsSync, readdirSync, statSync } from "node:fs";
7
7
  import path from "node:path";
8
8
  import { isPackageExists } from "local-pkg";
9
9
  import createCommand from "eslint-plugin-command/config";
10
+ import pluginE18e from "@e18e/eslint-plugin";
10
11
  import pluginComments from "@eslint-community/eslint-plugin-eslint-comments";
11
12
  import pluginAntfu from "eslint-plugin-antfu";
12
13
  import pluginImportLite from "eslint-plugin-import-lite";
@@ -17,7 +18,6 @@ import pluginUnusedImports from "eslint-plugin-unused-imports";
17
18
  import globals from "globals";
18
19
  import { mergeProcessors, processorPassThrough } from "eslint-merge-processors";
19
20
  import { configs } from "eslint-plugin-regexp";
20
-
21
21
  //#region ../../node_modules/.bun/find-up-simple@1.0.1/node_modules/find-up-simple/index.js
22
22
  const toPath = (urlOrPath) => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;
23
23
  async function findUp(name, { cwd = process$1.cwd(), type = "file", stopAt } = {}) {
@@ -50,7 +50,6 @@ function findUpSync(name, { cwd = process$1.cwd(), type = "file", stopAt } = {})
50
50
  directory = path.dirname(directory);
51
51
  }
52
52
  }
53
-
54
53
  //#endregion
55
54
  //#region src/globs.ts
56
55
  const GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
@@ -183,7 +182,6 @@ const GLOB_SEARCH_EXCLUDE = new Set([
183
182
  "tmp",
184
183
  "vendor"
185
184
  ]);
186
-
187
185
  //#endregion
188
186
  //#region src/utils.ts
189
187
  const scopeUrl = fileURLToPath(new URL(".", import.meta.url));
@@ -339,7 +337,6 @@ function renameRules(rules, map) {
339
337
  function toArray(value) {
340
338
  return Array.isArray(value) ? value : [value];
341
339
  }
342
-
343
340
  //#endregion
344
341
  //#region src/configs/astro.ts
345
342
  async function astro(options = {}) {
@@ -387,7 +384,6 @@ async function astro(options = {}) {
387
384
  }
388
385
  }];
389
386
  }
390
-
391
387
  //#endregion
392
388
  //#region src/configs/command.ts
393
389
  async function command() {
@@ -396,7 +392,6 @@ async function command() {
396
392
  name: "config/command/rules"
397
393
  }];
398
394
  }
399
-
400
395
  //#endregion
401
396
  //#region src/configs/comments.ts
402
397
  async function comments() {
@@ -411,7 +406,6 @@ async function comments() {
411
406
  }
412
407
  }];
413
408
  }
414
-
415
409
  //#endregion
416
410
  //#region src/configs/disables.ts
417
411
  async function disables() {
@@ -472,7 +466,22 @@ async function disables() {
472
466
  }
473
467
  ];
474
468
  }
475
-
469
+ //#endregion
470
+ //#region src/configs/e18e.ts
471
+ async function e18e(options = {}) {
472
+ const { isInEditor = false, modernization = true, moduleReplacements = isInEditor, overrides = {}, performanceImprovements = true } = options;
473
+ const configs = pluginE18e.configs;
474
+ return [{
475
+ name: "config/e18e/rules",
476
+ plugins: { e18e: pluginE18e },
477
+ rules: {
478
+ ...modernization ? { ...configs.modernization.rules } : {},
479
+ ...moduleReplacements ? { ...configs.moduleReplacements.rules } : {},
480
+ ...performanceImprovements ? { ...configs.performanceImprovements.rules } : {},
481
+ ...overrides
482
+ }
483
+ }];
484
+ }
476
485
  //#endregion
477
486
  //#region src/configs/stylistic.ts
478
487
  const StylisticConfigDefaults = {
@@ -596,7 +605,6 @@ async function stylistic(options = {}) {
596
605
  }
597
606
  }];
598
607
  }
599
-
600
608
  //#endregion
601
609
  //#region src/configs/formatters.ts
602
610
  async function formatters(options = {}, stylistic = {}) {
@@ -644,11 +652,12 @@ async function formatters(options = {}, stylistic = {}) {
644
652
  xmlSortAttributesByKey: false,
645
653
  xmlWhitespaceSensitivity: "ignore"
646
654
  };
647
- const dprintOptions = Object.assign({
655
+ const dprintOptions = {
648
656
  indentWidth: typeof indent === "number" ? indent : 2,
649
657
  quoteStyle: quotes === "single" ? "preferSingle" : "preferDouble",
650
- useTabs: indent === "tab"
651
- }, options.dprintOptions || {});
658
+ useTabs: indent === "tab",
659
+ ...options.dprintOptions || {}
660
+ };
652
661
  const configs = [{
653
662
  name: "config/formatter/setup",
654
663
  plugins: { format: await interopDefault(import("eslint-plugin-format")) }
@@ -765,7 +774,6 @@ function mergePrettierOptions(options, overrides) {
765
774
  plugins: [...overrides.plugins || [], ...options.plugins || []]
766
775
  };
767
776
  }
768
-
769
777
  //#endregion
770
778
  //#region src/configs/ignores.ts
771
779
  async function ignores(userIgnores = [], ignoreTypeScript = false) {
@@ -778,7 +786,6 @@ async function ignores(userIgnores = [], ignoreTypeScript = false) {
778
786
  name: "config/ignores"
779
787
  }];
780
788
  }
781
-
782
789
  //#endregion
783
790
  //#region src/configs/imports.ts
784
791
  async function imports(options = {}) {
@@ -803,7 +810,6 @@ async function imports(options = {}) {
803
810
  }
804
811
  }];
805
812
  }
806
-
807
813
  //#endregion
808
814
  //#region src/configs/javascript.ts
809
815
  async function javascript(options = {}) {
@@ -1034,7 +1040,6 @@ async function javascript(options = {}) {
1034
1040
  }
1035
1041
  }];
1036
1042
  }
1037
-
1038
1043
  //#endregion
1039
1044
  //#region src/configs/jsdoc.ts
1040
1045
  /**
@@ -1237,7 +1242,6 @@ async function jsdoc(options = {}) {
1237
1242
  }
1238
1243
  }];
1239
1244
  }
1240
-
1241
1245
  //#endregion
1242
1246
  //#region src/configs/jsonc.ts
1243
1247
  async function jsonc(options = {}) {
@@ -1304,7 +1308,6 @@ async function jsonc(options = {}) {
1304
1308
  }
1305
1309
  }];
1306
1310
  }
1307
-
1308
1311
  //#endregion
1309
1312
  //#region src/configs/jsx.ts
1310
1313
  async function jsx(options = {}) {
@@ -1343,7 +1346,6 @@ async function jsx(options = {}) {
1343
1346
  }
1344
1347
  }];
1345
1348
  }
1346
-
1347
1349
  //#endregion
1348
1350
  //#region src/configs/markdown.ts
1349
1351
  async function markdown(options = {}) {
@@ -1405,7 +1407,6 @@ async function markdown(options = {}) {
1405
1407
  }
1406
1408
  ];
1407
1409
  }
1408
-
1409
1410
  //#endregion
1410
1411
  //#region src/configs/nextjs.ts
1411
1412
  async function nextjs(options = {}) {
@@ -1441,13 +1442,15 @@ async function nextjs(options = {}) {
1441
1442
  function normalizeRules$1(rules) {
1442
1443
  return Object.fromEntries(Object.entries(rules).map(([key, value]) => [key, typeof value === "string" ? [value] : value]));
1443
1444
  }
1444
-
1445
1445
  //#endregion
1446
1446
  //#region src/configs/node.ts
1447
1447
  async function node() {
1448
1448
  return [{
1449
+ name: "config/node/setup",
1450
+ plugins: { node: pluginNode }
1451
+ }, {
1452
+ files: [GLOB_SRC],
1449
1453
  name: "config/node/rules",
1450
- plugins: { node: pluginNode },
1451
1454
  rules: {
1452
1455
  "node/handle-callback-err": ["error", "^(err|error)$"],
1453
1456
  "node/no-deprecated-api": "error",
@@ -1465,7 +1468,6 @@ async function node() {
1465
1468
  }
1466
1469
  }];
1467
1470
  }
1468
-
1469
1471
  //#endregion
1470
1472
  //#region src/configs/perfectionist.ts
1471
1473
  /**
@@ -1597,7 +1599,6 @@ async function perfectionist() {
1597
1599
  }
1598
1600
  }];
1599
1601
  }
1600
-
1601
1602
  //#endregion
1602
1603
  //#region src/configs/pnpm.ts
1603
1604
  async function pnpm(options) {
@@ -1725,7 +1726,6 @@ async function detectCatalogUsage() {
1725
1726
  const yaml = await fs.readFile(workspaceFile, "utf-8");
1726
1727
  return yaml.includes("catalog:") || yaml.includes("catalogs:");
1727
1728
  }
1728
-
1729
1729
  //#endregion
1730
1730
  //#region src/configs/react.ts
1731
1731
  const ReactRefreshAllowConstantExportPackages = ["vite"];
@@ -1918,7 +1918,6 @@ async function react(options = {}) {
1918
1918
  }] : []
1919
1919
  ];
1920
1920
  }
1921
-
1922
1921
  //#endregion
1923
1922
  //#region src/configs/regexp.ts
1924
1923
  async function regexp(options = {}) {
@@ -1936,7 +1935,6 @@ async function regexp(options = {}) {
1936
1935
  }
1937
1936
  }];
1938
1937
  }
1939
-
1940
1938
  //#endregion
1941
1939
  //#region src/configs/solid.ts
1942
1940
  async function solid(options = {}) {
@@ -1987,7 +1985,6 @@ async function solid(options = {}) {
1987
1985
  }
1988
1986
  }];
1989
1987
  }
1990
-
1991
1988
  //#endregion
1992
1989
  //#region src/configs/sort.ts
1993
1990
  /**
@@ -2256,7 +2253,6 @@ function sortTsconfig() {
2256
2253
  ] }
2257
2254
  }];
2258
2255
  }
2259
-
2260
2256
  //#endregion
2261
2257
  //#region src/configs/storybook.ts
2262
2258
  /**
@@ -2290,7 +2286,6 @@ async function storybook(options = {}) {
2290
2286
  }
2291
2287
  }];
2292
2288
  }
2293
-
2294
2289
  //#endregion
2295
2290
  //#region src/configs/svelte.ts
2296
2291
  async function svelte(options = {}) {
@@ -2365,7 +2360,6 @@ async function svelte(options = {}) {
2365
2360
  }
2366
2361
  }];
2367
2362
  }
2368
-
2369
2363
  //#endregion
2370
2364
  //#region src/configs/tailwindcss.ts
2371
2365
  const defaultEntryPointCandidates = [
@@ -2535,7 +2529,6 @@ function resolveTailwindEntryPoint(entryPoint) {
2535
2529
  }
2536
2530
  return findGlobalCssEntryPoint();
2537
2531
  }
2538
-
2539
2532
  //#endregion
2540
2533
  //#region src/configs/test.ts
2541
2534
  let _pluginTest;
@@ -2573,7 +2566,6 @@ async function test(options = {}) {
2573
2566
  }
2574
2567
  }];
2575
2568
  }
2576
-
2577
2569
  //#endregion
2578
2570
  //#region src/configs/toml.ts
2579
2571
  async function toml(options = {}) {
@@ -2614,18 +2606,17 @@ async function toml(options = {}) {
2614
2606
  }
2615
2607
  }];
2616
2608
  }
2617
-
2618
2609
  //#endregion
2619
2610
  //#region src/configs/typescript.ts
2620
2611
  async function typescript(options = {}) {
2621
2612
  const { componentExts = [], erasableOnly = false, overrides = {}, overridesTypeAware = {}, parserOptions = {}, strict = false, type = "app" } = options;
2622
2613
  const files = options.files ?? [
2623
- GLOB_TS,
2624
- GLOB_TSX,
2614
+ "**/*.?([cm])ts",
2615
+ "**/*.?([cm])tsx",
2625
2616
  ...componentExts.map((ext) => `**/*.${ext}`)
2626
2617
  ];
2627
- const filesTypeAware = options.filesTypeAware ?? [GLOB_TS, GLOB_TSX];
2628
- const ignoresTypeAware = options.ignoresTypeAware ?? [`${GLOB_MARKDOWN}/**`, GLOB_ASTRO_TS];
2618
+ const filesTypeAware = options.filesTypeAware ?? ["**/*.?([cm])ts", "**/*.?([cm])tsx"];
2619
+ const ignoresTypeAware = options.ignoresTypeAware ?? [`**/*.md/**`, "**/*.astro/*.ts"];
2629
2620
  const tsconfigPath = options?.tsconfigPath ? options.tsconfigPath : void 0;
2630
2621
  const isTypeAware = !!tsconfigPath;
2631
2622
  const isStrict = strict ?? false;
@@ -2761,7 +2752,6 @@ async function typescript(options = {}) {
2761
2752
  }] : []
2762
2753
  ];
2763
2754
  }
2764
-
2765
2755
  //#endregion
2766
2756
  //#region src/configs/unicorn.ts
2767
2757
  async function unicorn(options = {}) {
@@ -2791,7 +2781,6 @@ async function unicorn(options = {}) {
2791
2781
  }
2792
2782
  }];
2793
2783
  }
2794
-
2795
2784
  //#endregion
2796
2785
  //#region src/configs/unocss.ts
2797
2786
  async function unocss(options = {}) {
@@ -2808,7 +2797,6 @@ async function unocss(options = {}) {
2808
2797
  }
2809
2798
  }];
2810
2799
  }
2811
-
2812
2800
  //#endregion
2813
2801
  //#region src/configs/vue.ts
2814
2802
  async function vue(options = {}) {
@@ -3014,7 +3002,6 @@ async function vue(options = {}) {
3014
3002
  }
3015
3003
  }];
3016
3004
  }
3017
-
3018
3005
  //#endregion
3019
3006
  //#region src/configs/yaml.ts
3020
3007
  async function yaml(options = {}) {
@@ -3093,7 +3080,6 @@ async function yaml(options = {}) {
3093
3080
  }
3094
3081
  ];
3095
3082
  }
3096
-
3097
3083
  //#endregion
3098
3084
  //#region src/factory.ts
3099
3085
  const flatConfigProps = [
@@ -3136,7 +3122,7 @@ const defaultPluginRenaming = {
3136
3122
  * The merged ESLint configurations.
3137
3123
  */
3138
3124
  function config(options = {}, ...userConfigs) {
3139
- const { astro: enableAstro = false, autoRenamePlugins = true, componentExts = [], gitignore: enableGitignore = true, ignores: userIgnores = [], imports: enableImports = true, jsdoc: enableJSDoc = false, jsx: enableJsx = true, nextjs: enableNextjs = false, pnpm: enableCatalogs = !!findUpSync("pnpm-workspace.yaml"), react: enableReact = false, regexp: enableRegexp = true, solid: enableSolid = false, storybook: enableStorybook = false, svelte: enableSvelte = false, tailwindcss: enableTailwindcss = false, typescript: enableTypeScript = isPackageExists("typescript"), unicorn: enableUnicorn = true, unocss: enableUnoCSS = false, vue: enableVue = VuePackages.some((i) => isPackageExists(i)) } = options;
3125
+ const { astro: enableAstro = false, autoRenamePlugins = true, componentExts = [], e18e: enableE18e = true, gitignore: enableGitignore = true, ignores: userIgnores = [], imports: enableImports = true, jsdoc: enableJSDoc = false, jsx: enableJsx = true, nextjs: enableNextjs = false, pnpm: enableCatalogs = !!findUpSync("pnpm-workspace.yaml"), react: enableReact = false, regexp: enableRegexp = true, solid: enableSolid = false, storybook: enableStorybook = false, svelte: enableSvelte = false, tailwindcss: enableTailwindcss = false, typescript: enableTypeScript = isPackageExists("typescript"), unicorn: enableUnicorn = true, unocss: enableUnoCSS = false, vue: enableVue = VuePackages.some((i) => isPackageExists(i)) } = options;
3140
3126
  let isInEditor = options.isInEditor;
3141
3127
  if (isInEditor == null) {
3142
3128
  isInEditor = isInEditorEnv();
@@ -3163,6 +3149,10 @@ function config(options = {}, ...userConfigs) {
3163
3149
  stylistic: stylisticOptions,
3164
3150
  ...resolveSubOptions(options, "imports")
3165
3151
  }));
3152
+ if (enableE18e) configs.push(e18e({
3153
+ isInEditor,
3154
+ ...enableE18e === true ? {} : enableE18e
3155
+ }));
3166
3156
  if (enableUnicorn) configs.push(unicorn(enableUnicorn === true ? {} : enableUnicorn));
3167
3157
  if (enableVue) componentExts.push("vue");
3168
3158
  if (enableJSDoc) configs.push(jsdoc({
@@ -3278,7 +3268,6 @@ function getOverrides(options, key) {
3278
3268
  function resolveSubOptions(options, key) {
3279
3269
  return typeof options[key] === "boolean" ? {} : options[key] || {};
3280
3270
  }
3281
-
3282
3271
  //#endregion
3283
3272
  //#region src/config-presets.ts
3284
3273
  const CONFIG_PRESET_FULL_ON = {
@@ -3338,6 +3327,5 @@ const CONFIG_PRESET_FULL_OFF = {
3338
3327
  vue: false,
3339
3328
  yaml: false
3340
3329
  };
3341
-
3342
3330
  //#endregion
3343
- export { CONFIG_PRESET_FULL_OFF, CONFIG_PRESET_FULL_ON, GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SEARCH_EXCLUDE, GLOB_SRC, GLOB_SRC_EXT, GLOB_STORYBOOK, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, PACKAGE_NAME, StylisticConfigDefaults, astro, combine, command, comments, config, config as inferno, defaultPluginRenaming, disables, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInCursorAgent, isInEditorEnv, isInGitHooksOrLintStaged, isInVSCodeESLintExtension, isPackageInScope, javascript, jsdoc, jsonc, jsx, markdown, nextjs, node, normalizeRules, packageExportsSortOrder, packageSortOrder, parserPlain, perfectionist, pnpm, react, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, solid, sortPackageJson, sortTsconfig, storybook, stylistic, svelte, tailwindcss, test, toArray, toml, typescript, unicorn, unocss, vue, yaml };
3331
+ export { CONFIG_PRESET_FULL_OFF, CONFIG_PRESET_FULL_ON, GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_EXCLUDE, GLOB_GRAPHQL, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SEARCH_EXCLUDE, GLOB_SRC, GLOB_SRC_EXT, GLOB_STORYBOOK, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, PACKAGE_NAME, StylisticConfigDefaults, astro, combine, command, comments, config, config as inferno, defaultPluginRenaming, disables, e18e, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInCursorAgent, isInEditorEnv, isInGitHooksOrLintStaged, isInVSCodeESLintExtension, isPackageInScope, javascript, jsdoc, jsonc, jsx, markdown, nextjs, node, normalizeRules, packageExportsSortOrder, packageSortOrder, parserPlain, perfectionist, pnpm, react, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, solid, sortPackageJson, sortTsconfig, storybook, stylistic, svelte, tailwindcss, test, toArray, toml, typescript, unicorn, unocss, vue, yaml };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@infernodesign/eslint-config",
3
3
  "description": "ESLint config for Inferno Design.",
4
- "version": "1.23.0",
4
+ "version": "1.24.0",
5
5
  "type": "module",
6
6
  "author": "Inferno Design <support@infernodesign.com>",
7
7
  "license": "MIT",
@@ -47,39 +47,40 @@
47
47
  },
48
48
  "dependencies": {
49
49
  "@antfu/install-pkg": "1.1.0",
50
- "@clack/prompts": "1.0.1",
51
- "@eslint-community/eslint-plugin-eslint-comments": "4.6.0",
52
- "@eslint/compat": "2.0.2",
53
- "@eslint/config-array": "0.23.2",
54
- "@eslint/config-helpers": "0.5.2",
50
+ "@clack/prompts": "1.1.0",
51
+ "@e18e/eslint-plugin": "0.2.0",
52
+ "@eslint-community/eslint-plugin-eslint-comments": "4.7.1",
53
+ "@eslint/compat": "2.0.3",
54
+ "@eslint/config-array": "0.23.3",
55
+ "@eslint/config-helpers": "0.5.3",
55
56
  "@eslint/markdown": "7.5.1",
56
- "@stylistic/eslint-plugin": "5.9.0",
57
- "@typescript-eslint/eslint-plugin": "8.56.0",
58
- "@typescript-eslint/parser": "8.56.0",
59
- "@typescript-eslint/utils": "8.56.0",
57
+ "@stylistic/eslint-plugin": "5.10.0",
58
+ "@typescript-eslint/eslint-plugin": "8.56.1",
59
+ "@typescript-eslint/parser": "8.56.1",
60
+ "@typescript-eslint/utils": "8.56.1",
60
61
  "@vitest/eslint-plugin": "1.6.9",
61
62
  "ansis": "4.2.0",
62
- "cac": "6.7.14",
63
+ "cac": "7.0.0",
63
64
  "eslint-config-flat-gitignore": "2.2.1",
64
65
  "eslint-flat-config-utils": "3.0.1",
65
66
  "eslint-merge-processors": "2.0.0",
66
67
  "eslint-plugin-antfu": "3.2.2",
67
- "eslint-plugin-command": "3.4.0",
68
- "eslint-plugin-import-lite": "0.5.1",
69
- "eslint-plugin-jsdoc": "62.7.0",
70
- "eslint-plugin-jsonc": "3.0.0",
68
+ "eslint-plugin-command": "3.5.2",
69
+ "eslint-plugin-import-lite": "0.5.2",
70
+ "eslint-plugin-jsdoc": "62.7.1",
71
+ "eslint-plugin-jsonc": "3.1.1",
71
72
  "eslint-plugin-n": "17.24.0",
72
73
  "eslint-plugin-no-only-tests": "3.3.0",
73
74
  "eslint-plugin-perfectionist": "5.6.0",
74
- "eslint-plugin-pnpm": "1.5.0",
75
+ "eslint-plugin-pnpm": "1.6.0",
75
76
  "eslint-plugin-regexp": "3.0.0",
76
- "eslint-plugin-toml": "1.1.1",
77
+ "eslint-plugin-toml": "1.3.1",
77
78
  "eslint-plugin-unicorn": "63.0.0",
78
79
  "eslint-plugin-unused-imports": "4.4.1",
79
80
  "eslint-plugin-vue": "10.8.0",
80
- "eslint-plugin-yml": "3.2.1",
81
+ "eslint-plugin-yml": "3.3.1",
81
82
  "eslint-processor-vue-blocks": "2.0.0",
82
- "globals": "17.3.0",
83
+ "globals": "17.4.0",
83
84
  "jsonc-eslint-parser": "3.1.0",
84
85
  "local-pkg": "1.1.2",
85
86
  "parse-gitignore": "2.0.0",
@@ -89,62 +90,62 @@
89
90
  },
90
91
  "devDependencies": {
91
92
  "@eslint-react/eslint-plugin": "2.13.0",
92
- "@eslint/config-inspector": "1.4.2",
93
+ "@eslint/config-inspector": "1.5.0",
93
94
  "@infernodesign/typescript-config": "workspace:*",
94
95
  "@next/eslint-plugin-next": "16.1.6",
95
96
  "@prettier/plugin-xml": "3.4.2",
96
97
  "@types/eslint-plugin-jsx-a11y": "6.10.1",
97
- "@types/node": "25.3.0",
98
- "@unocss/eslint-plugin": "66.6.0",
98
+ "@types/node": "25.3.5",
99
+ "@unocss/eslint-plugin": "66.6.6",
99
100
  "astro-eslint-parser": "1.3.0",
100
- "eslint": "10.0.1",
101
+ "eslint": "10.0.3",
101
102
  "eslint-plugin-astro": "1.6.0",
102
- "eslint-plugin-better-tailwindcss": "4.3.0",
103
+ "eslint-plugin-better-tailwindcss": "4.3.2",
103
104
  "eslint-plugin-erasable-syntax-only": "0.4.0",
104
- "eslint-plugin-format": "1.4.0",
105
+ "eslint-plugin-format": "2.0.1",
105
106
  "eslint-plugin-jsx-a11y": "6.10.2",
106
107
  "eslint-plugin-react-hooks": "7.0.1",
107
- "eslint-plugin-react-refresh": "0.5.0",
108
+ "eslint-plugin-react-refresh": "0.5.2",
108
109
  "eslint-plugin-solid": "0.14.5",
109
- "eslint-plugin-storybook": "10.2.10",
110
+ "eslint-plugin-storybook": "10.2.16",
110
111
  "eslint-plugin-svelte": "3.15.0",
111
112
  "eslint-plugin-vuejs-accessibility": "2.5.0",
112
113
  "eslint-typegen": "2.3.1",
113
114
  "execa": "9.6.1",
114
115
  "find-up-simple": "1.0.1",
115
116
  "jiti": "2.6.1",
116
- "pnpm-workspace-yaml": "1.5.0",
117
+ "pnpm-workspace-yaml": "1.6.0",
117
118
  "prettier-plugin-astro": "0.14.1",
118
119
  "prettier-plugin-slidev": "1.0.5",
119
- "svelte": "5.53.0",
120
- "svelte-eslint-parser": "1.4.1",
120
+ "svelte": "5.53.7",
121
+ "svelte-eslint-parser": "1.6.0",
121
122
  "tinyglobby": "0.2.15",
122
- "tsdown": "0.20.3",
123
+ "tsdown": "0.21.0",
123
124
  "typescript": "5.9.3",
124
125
  "vitest": "4.0.18",
125
- "vue": "3.5.28"
126
+ "vue": "3.5.29"
126
127
  },
127
128
  "peerDependencies": {
128
129
  "@eslint-react/eslint-plugin": "^2.13.0",
129
130
  "@next/eslint-plugin-next": "^16.1.6",
130
131
  "@prettier/plugin-xml": "^3.4.2",
131
- "@unocss/eslint-plugin": "^66.6.0",
132
+ "@unocss/eslint-plugin": "^66.6.6",
132
133
  "astro-eslint-parser": "^1.3.0",
133
- "eslint": "^10.0.1",
134
+ "eslint": "^10.0.3",
134
135
  "eslint-plugin-astro": "^1.6.0",
135
- "eslint-plugin-better-tailwindcss": "^4.3.0",
136
+ "eslint-plugin-better-tailwindcss": "^4.3.2",
136
137
  "eslint-plugin-erasable-syntax-only": "^0.4.0",
137
- "eslint-plugin-format": "^1.4.0",
138
+ "eslint-plugin-format": "^2.0.1",
138
139
  "eslint-plugin-jsx-a11y": "^6.10.2",
139
140
  "eslint-plugin-react-hooks": "^7.0.1",
140
- "eslint-plugin-react-refresh": "^0.5.0",
141
+ "eslint-plugin-react-refresh": "^0.5.2",
141
142
  "eslint-plugin-solid": "^0.14.5",
142
- "eslint-plugin-storybook": "^10.2.10",
143
+ "eslint-plugin-storybook": "^10.2.16",
143
144
  "eslint-plugin-svelte": "^3.15.0",
144
145
  "eslint-plugin-vuejs-accessibility": "^2.5.0",
145
146
  "prettier-plugin-astro": "^0.14.1",
146
147
  "prettier-plugin-slidev": "^1.0.5",
147
- "svelte-eslint-parser": "^1.4.1"
148
+ "svelte-eslint-parser": "^1.6.0"
148
149
  },
149
150
  "peerDependenciesMeta": {
150
151
  "@eslint-react/eslint-plugin": {
@@ -204,5 +205,8 @@
204
205
  "svelte-eslint-parser": {
205
206
  "optional": true
206
207
  }
208
+ },
209
+ "inlinedDependencies": {
210
+ "find-up-simple": "1.0.1"
207
211
  }
208
212
  }