@rotki/eslint-config 5.0.1 → 6.0.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.
Files changed (3) hide show
  1. package/dist/index.d.mts +803 -564
  2. package/dist/index.mjs +73 -48
  3. package/package.json +37 -37
package/dist/index.mjs CHANGED
@@ -1,6 +1,7 @@
1
1
  import { FlatConfigComposer } from "eslint-flat-config-utils";
2
2
  import { findUp, findUpSync } from "find-up-simple";
3
3
  import { isPackageExists } from "local-pkg";
4
+ import pluginE18e from "@e18e/eslint-plugin";
4
5
  import pluginComments from "@eslint-community/eslint-plugin-eslint-comments";
5
6
  import pluginAntfu from "eslint-plugin-antfu";
6
7
  import pluginImport from "eslint-plugin-import-lite";
@@ -15,7 +16,6 @@ import { mergeProcessors, processorPassThrough } from "eslint-merge-processors";
15
16
  import fs from "node:fs/promises";
16
17
  import { configs } from "eslint-plugin-regexp";
17
18
  import path from "node:path";
18
-
19
19
  //#region src/configs/comments.ts
20
20
  async function comments() {
21
21
  return [{
@@ -30,7 +30,6 @@ async function comments() {
30
30
  }
31
31
  }];
32
32
  }
33
-
34
33
  //#endregion
35
34
  //#region src/globs.ts
36
35
  const GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
@@ -112,7 +111,6 @@ const GLOB_EXCLUDE = [
112
111
  "**/auto-import?(s).d.ts",
113
112
  "**/components.d.ts"
114
113
  ];
115
-
116
114
  //#endregion
117
115
  //#region src/configs/disables.ts
118
116
  async function disables() {
@@ -176,7 +174,26 @@ async function disables() {
176
174
  }
177
175
  ];
178
176
  }
179
-
177
+ //#endregion
178
+ //#region src/configs/e18e.ts
179
+ async function e18e(options = {}) {
180
+ const { isInEditor = false, modernization = true, type = "app", moduleReplacements = type === "lib" && isInEditor, overrides = {}, performanceImprovements = true } = options;
181
+ const configs = pluginE18e.configs;
182
+ return [{
183
+ name: "rotki/e18e/rules",
184
+ plugins: { e18e: pluginE18e },
185
+ rules: {
186
+ ...modernization ? { ...configs.modernization.rules } : {},
187
+ ...moduleReplacements ? { ...configs.moduleReplacements.rules } : {},
188
+ ...performanceImprovements ? { ...configs.performanceImprovements.rules } : {},
189
+ "e18e/prefer-array-to-reversed": "off",
190
+ "e18e/prefer-array-to-sorted": "off",
191
+ "e18e/prefer-array-to-spliced": "off",
192
+ "e18e/prefer-spread-syntax": "off",
193
+ ...overrides
194
+ }
195
+ }];
196
+ }
180
197
  //#endregion
181
198
  //#region src/utils.ts
182
199
  const scopeUrl = fileURLToPath(new URL(".", import.meta.url));
@@ -274,12 +291,11 @@ function renamePluginInConfigs(configs, map) {
274
291
  function isInEditorEnv() {
275
292
  if (process.env.CI) return false;
276
293
  if (isInGitHooksOrLintStaged()) return false;
277
- return !!(process.env.VSCODE_PID || process.env.VSCODE_CWD || process.env.JETBRAINS_IDE || process.env.VIM || process.env.NVIM);
294
+ return !!(process.env.VSCODE_PID || process.env.VSCODE_CWD || process.env.JETBRAINS_IDE || process.env.VIM || process.env.NVIM || process.env.ZED_ENVIRONMENT && !process.env.ZED_TERM);
278
295
  }
279
296
  function isInGitHooksOrLintStaged() {
280
297
  return !!(process.env.GIT_PARAMS || process.env.VSCODE_GIT_COMMAND || process.env.npm_lifecycle_script?.startsWith("lint-staged"));
281
298
  }
282
-
283
299
  //#endregion
284
300
  //#region src/configs/stylistic.ts
285
301
  const StylisticConfigDefaults = {
@@ -359,7 +375,6 @@ async function stylistic(options = {}) {
359
375
  }
360
376
  }];
361
377
  }
362
-
363
378
  //#endregion
364
379
  //#region src/configs/formatters.ts
365
380
  function mergePrettierOptions(options, overrides) {
@@ -457,7 +472,6 @@ async function formatters(options = {}, stylistic = {}) {
457
472
  }
458
473
  return configs;
459
474
  }
460
-
461
475
  //#endregion
462
476
  //#region src/configs/ignores.ts
463
477
  async function ignores(userIgnores = []) {
@@ -466,7 +480,6 @@ async function ignores(userIgnores = []) {
466
480
  name: "rotki/ignores"
467
481
  }];
468
482
  }
469
-
470
483
  //#endregion
471
484
  //#region src/configs/imports.ts
472
485
  async function imports(options = {}) {
@@ -501,7 +514,6 @@ async function imports(options = {}) {
501
514
  }
502
515
  }];
503
516
  }
504
-
505
517
  //#endregion
506
518
  //#region src/configs/javascript.ts
507
519
  async function javascript(options = {}) {
@@ -745,7 +757,6 @@ async function javascript(options = {}) {
745
757
  }
746
758
  }];
747
759
  }
748
-
749
760
  //#endregion
750
761
  //#region src/configs/jsonc.ts
751
762
  async function jsonc(options = {}) {
@@ -756,14 +767,14 @@ async function jsonc(options = {}) {
756
767
  ], overrides = {}, stylistic = true } = options;
757
768
  const { indent: rawIndent = 2 } = typeof stylistic === "boolean" ? {} : stylistic;
758
769
  const indent = Array.isArray(rawIndent) ? rawIndent[0] : rawIndent;
759
- const [pluginJsonc, parserJsonc] = await Promise.all([interopDefault(import("eslint-plugin-jsonc")), interopDefault(import("jsonc-eslint-parser"))]);
770
+ const pluginJsonc = await interopDefault(import("eslint-plugin-jsonc"));
760
771
  const customRules = { "max-lines": "off" };
761
772
  return [{
762
773
  name: "rotki/jsonc/setup",
763
774
  plugins: { jsonc: pluginJsonc }
764
775
  }, {
765
776
  files,
766
- languageOptions: { parser: parserJsonc },
777
+ language: "jsonc/json",
767
778
  name: "rotki/jsonc/rules",
768
779
  rules: {
769
780
  "jsonc/no-bigint-literals": "error",
@@ -815,11 +826,10 @@ async function jsonc(options = {}) {
815
826
  }
816
827
  }];
817
828
  }
818
-
819
829
  //#endregion
820
830
  //#region src/configs/markdown.ts
821
831
  async function markdown(options = {}) {
822
- const { componentExts = [], files = [GLOB_MARKDOWN], overrides = {} } = options;
832
+ const { componentExts = [], files = [GLOB_MARKDOWN], gfm = true, overrides = {}, overridesMarkdown = {} } = options;
823
833
  const markdown = await interopDefault(import("@eslint/markdown"));
824
834
  return [
825
835
  {
@@ -834,14 +844,41 @@ async function markdown(options = {}) {
834
844
  },
835
845
  {
836
846
  files,
837
- languageOptions: { parser: parserPlain },
847
+ language: gfm ? "markdown/gfm" : "markdown/commonmark",
838
848
  name: "rotki/markdown/parser"
839
849
  },
850
+ {
851
+ files,
852
+ name: "rotki/markdown/rules",
853
+ rules: {
854
+ ...markdown.configs.recommended.at(0)?.rules,
855
+ "markdown/fenced-code-language": "off",
856
+ "markdown/no-missing-label-refs": "off",
857
+ ...overridesMarkdown
858
+ }
859
+ },
860
+ {
861
+ files,
862
+ name: "rotki/markdown/disables/markdown",
863
+ rules: {
864
+ "@stylistic/indent": "off",
865
+ "no-irregular-whitespace": "off",
866
+ "perfectionist/sort-exports": "off",
867
+ "perfectionist/sort-imports": "off",
868
+ "regexp/no-legacy-features": "off",
869
+ "regexp/no-missing-g-flag": "off",
870
+ "regexp/no-useless-dollar-replacements": "off",
871
+ "regexp/no-useless-flag": "off"
872
+ }
873
+ },
840
874
  {
841
875
  files: [GLOB_MARKDOWN_CODE, ...componentExts.map((ext) => `${GLOB_MARKDOWN}/**/*.${ext}`)],
842
876
  languageOptions: { parserOptions: { ecmaFeatures: { impliedStrict: true } } },
843
- name: "rotki/markdown/disables",
877
+ name: "rotki/markdown/disables/code",
844
878
  rules: {
879
+ "@stylistic/comma-dangle": "off",
880
+ "@stylistic/eol-last": "off",
881
+ "@stylistic/padding-line-between-statements": "off",
845
882
  "@typescript-eslint/consistent-type-imports": "off",
846
883
  "@typescript-eslint/explicit-function-return-type": "off",
847
884
  "@typescript-eslint/no-namespace": "off",
@@ -850,6 +887,7 @@ async function markdown(options = {}) {
850
887
  "@typescript-eslint/no-unused-expressions": "off",
851
888
  "@typescript-eslint/no-unused-vars": "off",
852
889
  "@typescript-eslint/no-use-before-define": "off",
890
+ "e18e/prefer-static-regex": "off",
853
891
  "import/newline-after-import": "off",
854
892
  "no-alert": "off",
855
893
  "no-console": "off",
@@ -861,8 +899,6 @@ async function markdown(options = {}) {
861
899
  "no-unused-labels": "off",
862
900
  "no-unused-vars": "off",
863
901
  "node/prefer-global/process": "off",
864
- "style/comma-dangle": "off",
865
- "style/eol-last": "off",
866
902
  "unicode-bom": "off",
867
903
  "unused-imports/no-unused-imports": "off",
868
904
  "unused-imports/no-unused-vars": "off",
@@ -876,7 +912,6 @@ async function markdown(options = {}) {
876
912
  }
877
913
  ];
878
914
  }
879
-
880
915
  //#endregion
881
916
  //#region src/configs/node.ts
882
917
  async function node() {
@@ -896,7 +931,6 @@ async function node() {
896
931
  }
897
932
  }];
898
933
  }
899
-
900
934
  //#endregion
901
935
  //#region src/configs/perfectionist.ts
902
936
  /**
@@ -948,7 +982,6 @@ async function perfectionist() {
948
982
  }
949
983
  }];
950
984
  }
951
-
952
985
  //#endregion
953
986
  //#region src/configs/pnpm.ts
954
987
  async function detectCatalogUsage() {
@@ -958,17 +991,16 @@ async function detectCatalogUsage() {
958
991
  return yaml.includes("catalog:") || yaml.includes("catalogs:");
959
992
  }
960
993
  async function pnpm(options) {
961
- const [pluginPnpm, pluginYaml, yamlParser, jsoncParser] = await Promise.all([
994
+ const [pluginPnpm, pluginYaml, yamlParser] = await Promise.all([
962
995
  interopDefault(import("eslint-plugin-pnpm")),
963
996
  interopDefault(import("eslint-plugin-yml")),
964
- interopDefault(import("yaml-eslint-parser")),
965
- interopDefault(import("jsonc-eslint-parser"))
997
+ interopDefault(import("yaml-eslint-parser"))
966
998
  ]);
967
999
  const { catalogs = await detectCatalogUsage(), isInEditor = false, json = true, sort = true, yaml = true } = options;
968
1000
  const configs = [];
969
1001
  if (json) configs.push({
970
1002
  files: ["package.json", "**/package.json"],
971
- languageOptions: { parser: jsoncParser },
1003
+ language: "jsonc/json",
972
1004
  name: "rotki/pnpm/package-json",
973
1005
  plugins: { pnpm: pluginPnpm },
974
1006
  rules: {
@@ -1073,7 +1105,6 @@ async function pnpm(options) {
1073
1105
  }
1074
1106
  return configs;
1075
1107
  }
1076
-
1077
1108
  //#endregion
1078
1109
  //#region src/configs/regexp.ts
1079
1110
  async function regexp(options = {}) {
@@ -1091,7 +1122,6 @@ async function regexp(options = {}) {
1091
1122
  }
1092
1123
  }];
1093
1124
  }
1094
-
1095
1125
  //#endregion
1096
1126
  //#region src/configs/rotki-plugin.ts
1097
1127
  async function rotkiPlugin(options = {}) {
@@ -1142,7 +1172,6 @@ async function rotkiPlugin(options = {}) {
1142
1172
  }
1143
1173
  }];
1144
1174
  }
1145
-
1146
1175
  //#endregion
1147
1176
  //#region src/configs/sort.ts
1148
1177
  async function sortPackageJson() {
@@ -1361,7 +1390,6 @@ function sortTsconfig() {
1361
1390
  ] }
1362
1391
  }];
1363
1392
  }
1364
-
1365
1393
  //#endregion
1366
1394
  //#region src/configs/storybook.ts
1367
1395
  async function storybook(options = {}) {
@@ -1397,7 +1425,6 @@ async function storybook(options = {}) {
1397
1425
  }
1398
1426
  ];
1399
1427
  }
1400
-
1401
1428
  //#endregion
1402
1429
  //#region src/configs/test.ts
1403
1430
  let _pluginTest;
@@ -1419,6 +1446,7 @@ async function test(options = {}) {
1419
1446
  name: "rotki/test/rules",
1420
1447
  rules: {
1421
1448
  "@typescript-eslint/explicit-function-return-type": "off",
1449
+ "e18e/prefer-static-regex": "off",
1422
1450
  "node/prefer-global/process": "off",
1423
1451
  "test/consistent-test-it": ["error", {
1424
1452
  fn: "it",
@@ -1442,18 +1470,17 @@ async function test(options = {}) {
1442
1470
  }
1443
1471
  }];
1444
1472
  }
1445
-
1446
1473
  //#endregion
1447
1474
  //#region src/configs/typescript.ts
1448
1475
  async function typescript(options = {}) {
1449
1476
  const { componentExts = [], isInEditor = false, overrides = {}, overridesTypeAware = {}, parserOptions = {}, type = "app" } = options;
1450
1477
  const files = options.files ?? [
1451
- GLOB_TS,
1452
- GLOB_TSX,
1478
+ "**/*.?([cm])ts",
1479
+ "**/*.?([cm])tsx",
1453
1480
  ...componentExts.map((ext) => `**/*.${ext}`)
1454
1481
  ];
1455
- const filesTypeAware = options.filesTypeAware ?? [GLOB_TS, GLOB_TSX];
1456
- const ignoresTypeAware = options.ignoresTypeAware ?? [`${GLOB_MARKDOWN}/**`];
1482
+ const filesTypeAware = options.filesTypeAware ?? ["**/*.?([cm])ts", "**/*.?([cm])tsx"];
1483
+ const ignoresTypeAware = options.ignoresTypeAware ?? [`**/*.md/**`];
1457
1484
  const tsconfigPath = options?.tsconfigPath ? options.tsconfigPath : void 0;
1458
1485
  const isTypeAware = !!tsconfigPath;
1459
1486
  const typeAwareCustom = {
@@ -1616,9 +1643,9 @@ async function typescript(options = {}) {
1616
1643
  }] : []
1617
1644
  ];
1618
1645
  }
1619
-
1620
1646
  //#endregion
1621
1647
  //#region src/configs/unicorn.ts
1648
+ const FILENAME_CASE_IGNORE = /^[A-Z]+\..*$/;
1622
1649
  async function unicorn(options = {}) {
1623
1650
  return [{
1624
1651
  name: "rotki/unicorn/rules",
@@ -1636,7 +1663,7 @@ async function unicorn(options = {}) {
1636
1663
  kebabCase: true,
1637
1664
  pascalCase: true
1638
1665
  },
1639
- ignore: [/^[A-Z]+\..*$/]
1666
+ ignore: [FILENAME_CASE_IGNORE]
1640
1667
  }],
1641
1668
  "unicorn/new-for-builtins": "error",
1642
1669
  "unicorn/no-array-method-this-argument": "error",
@@ -1683,7 +1710,6 @@ async function unicorn(options = {}) {
1683
1710
  rules: { "unicorn/filename-case": "off" }
1684
1711
  }];
1685
1712
  }
1686
-
1687
1713
  //#endregion
1688
1714
  //#region src/configs/vue.ts
1689
1715
  async function vue(options = {}) {
@@ -1952,7 +1978,6 @@ async function vue(options = {}) {
1952
1978
  }
1953
1979
  }];
1954
1980
  }
1955
-
1956
1981
  //#endregion
1957
1982
  //#region src/configs/vue-i18n.ts
1958
1983
  async function vueI18n(options = {}) {
@@ -2018,7 +2043,6 @@ async function vueI18n(options = {}) {
2018
2043
  } }
2019
2044
  }];
2020
2045
  }
2021
-
2022
2046
  //#endregion
2023
2047
  //#region src/configs/yaml.ts
2024
2048
  async function yaml(options = {}) {
@@ -2034,7 +2058,7 @@ async function yaml(options = {}) {
2034
2058
  languageOptions: { parser: parserYaml },
2035
2059
  name: "rotki/yaml/rules",
2036
2060
  rules: {
2037
- "style/spaced-comment": "off",
2061
+ "@stylistic/spaced-comment": "off",
2038
2062
  "yaml/block-mapping": "error",
2039
2063
  "yaml/block-sequence": "error",
2040
2064
  "yaml/no-empty-key": "error",
@@ -2063,7 +2087,6 @@ async function yaml(options = {}) {
2063
2087
  }
2064
2088
  }];
2065
2089
  }
2066
-
2067
2090
  //#endregion
2068
2091
  //#region src/factory.ts
2069
2092
  const flatConfigProps = [
@@ -2091,7 +2114,7 @@ const defaultPluginRenaming = {
2091
2114
  * Construct an array of ESLint flat config items.
2092
2115
  */
2093
2116
  function rotki(options = {}, ...userConfigs) {
2094
- const { autoRenamePlugins = true, componentExts = [], gitignore: enableGitignore = true, jsx = true, pnpm: enablePnpm = !!findUpSync("pnpm-workspace.yaml"), regexp: enableRegexp = false, rotki: enableRotki, storybook: enableStorybook, typescript: enableTypeScript = isPackageExists("typescript"), unicorn: enableUnicorn = true, vue: enableVue = VuePackages.some((i) => isPackageExists(i)), vueI18n: enableVueI18n } = options;
2117
+ const { autoRenamePlugins = true, componentExts = [], e18e: enableE18e = true, gitignore: enableGitignore = true, jsx = true, pnpm: enablePnpm = !!findUpSync("pnpm-workspace.yaml"), regexp: enableRegexp = false, rotki: enableRotki, storybook: enableStorybook, typescript: enableTypeScript = isPackageExists("typescript") || isPackageExists("@typescript/native-preview"), unicorn: enableUnicorn = true, vue: enableVue = VuePackages.some((i) => isPackageExists(i)), vueI18n: enableVueI18n } = options;
2095
2118
  let isInEditor = options.isInEditor;
2096
2119
  if (isInEditor === null) {
2097
2120
  isInEditor = isInEditorEnv();
@@ -2121,6 +2144,11 @@ function rotki(options = {}, ...userConfigs) {
2121
2144
  stylistic: stylisticOptions
2122
2145
  }), perfectionist());
2123
2146
  if (enableUnicorn) configs.push(unicorn(enableUnicorn === true ? {} : enableUnicorn));
2147
+ if (enableE18e) configs.push(e18e({
2148
+ ...typeof enableE18e === "boolean" ? {} : enableE18e,
2149
+ isInEditor,
2150
+ type: options.type
2151
+ }));
2124
2152
  if (enableVue) componentExts.push("vue");
2125
2153
  if (enableTypeScript) configs.push(typescript({
2126
2154
  ...typescriptOptions,
@@ -2202,7 +2230,6 @@ function getOverrides(options, key) {
2202
2230
  const sub = resolveSubOptions(options, key);
2203
2231
  return { ..."overrides" in sub ? sub.overrides : {} };
2204
2232
  }
2205
-
2206
2233
  //#endregion
2207
2234
  //#region src/config-presets.ts
2208
2235
  const CONFIG_PRESET_FULL_ON = {
@@ -2236,10 +2263,8 @@ const CONFIG_PRESET_FULL_OFF = {
2236
2263
  vue: false,
2237
2264
  yaml: false
2238
2265
  };
2239
-
2240
2266
  //#endregion
2241
2267
  //#region src/index.ts
2242
2268
  var src_default = rotki;
2243
-
2244
2269
  //#endregion
2245
- export { CONFIG_PRESET_FULL_OFF, CONFIG_PRESET_FULL_ON, 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_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, StylisticConfigDefaults, combine, comments, src_default as default, defaultPluginRenaming, disables, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, markdown, node, parserPlain, perfectionist, pnpm, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, rotki, rotkiPlugin, sortPackageJson, sortTsconfig, storybook, stylistic, test, toArray, typescript, unicorn, vue, vueI18n, yaml };
2270
+ export { CONFIG_PRESET_FULL_OFF, CONFIG_PRESET_FULL_ON, 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_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, StylisticConfigDefaults, combine, comments, src_default as default, defaultPluginRenaming, disables, e18e, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, markdown, node, parserPlain, perfectionist, pnpm, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, rotki, rotkiPlugin, sortPackageJson, sortTsconfig, storybook, stylistic, test, toArray, typescript, unicorn, vue, vueI18n, yaml };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rotki/eslint-config",
3
- "version": "5.0.1",
3
+ "version": "6.0.0",
4
4
  "type": "module",
5
5
  "license": "AGPL-3.0",
6
6
  "bugs": {
@@ -42,61 +42,61 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@antfu/install-pkg": "1.1.0",
45
- "@clack/prompts": "1.0.1",
46
- "@eslint-community/eslint-plugin-eslint-comments": "4.6.0",
47
- "@eslint/markdown": "7.5.1",
48
- "@stylistic/eslint-plugin": "5.8.0",
49
- "@typescript-eslint/eslint-plugin": "8.55.0",
50
- "@typescript-eslint/parser": "8.55.0",
51
- "@vitest/eslint-plugin": "1.6.7",
52
- "eslint-config-flat-gitignore": "2.1.0",
45
+ "@clack/prompts": "1.1.0",
46
+ "@e18e/eslint-plugin": "0.3.0",
47
+ "@eslint-community/eslint-plugin-eslint-comments": "4.7.1",
48
+ "@eslint/markdown": "8.0.1",
49
+ "@stylistic/eslint-plugin": "5.10.0",
50
+ "@typescript-eslint/eslint-plugin": "8.58.0",
51
+ "@typescript-eslint/parser": "8.58.0",
52
+ "@vitest/eslint-plugin": "1.6.14",
53
+ "eslint-config-flat-gitignore": "2.3.0",
53
54
  "eslint-config-prettier": "10.1.8",
54
- "eslint-flat-config-utils": "3.0.1",
55
+ "eslint-flat-config-utils": "3.0.2",
55
56
  "eslint-merge-processors": "2.0.0",
56
57
  "eslint-plugin-antfu": "3.2.2",
57
- "eslint-plugin-format": "1.4.0",
58
+ "eslint-plugin-format": "2.0.1",
58
59
  "eslint-plugin-html": "8.1.4",
59
- "eslint-plugin-import-lite": "0.5.1",
60
- "eslint-plugin-jsonc": "2.21.1",
61
- "eslint-plugin-n": "17.23.2",
60
+ "eslint-plugin-import-lite": "0.6.0",
61
+ "eslint-plugin-jsonc": "3.1.2",
62
+ "eslint-plugin-n": "17.24.0",
62
63
  "eslint-plugin-no-only-tests": "3.3.0",
63
- "eslint-plugin-perfectionist": "5.5.0",
64
- "eslint-plugin-pnpm": "1.5.0",
64
+ "eslint-plugin-perfectionist": "5.7.0",
65
+ "eslint-plugin-pnpm": "1.6.0",
65
66
  "eslint-plugin-prettier": "5.5.5",
66
- "eslint-plugin-regexp": "3.0.0",
67
- "eslint-plugin-unicorn": "63.0.0",
67
+ "eslint-plugin-regexp": "3.1.0",
68
+ "eslint-plugin-unicorn": "64.0.0",
68
69
  "eslint-plugin-unused-imports": "4.4.1",
69
70
  "eslint-plugin-vue": "10.8.0",
70
- "eslint-plugin-yml": "3.1.2",
71
+ "eslint-plugin-yml": "3.3.1",
71
72
  "eslint-processor-vue-blocks": "2.0.0",
72
- "find-up-simple": "1.0.0",
73
- "globals": "17.3.0",
74
- "jsonc-eslint-parser": "2.4.2",
73
+ "find-up-simple": "1.0.1",
74
+ "globals": "17.4.0",
75
75
  "local-pkg": "1.1.2",
76
76
  "prettier": "3.8.1",
77
77
  "vue-eslint-parser": "10.4.0",
78
78
  "yaml-eslint-parser": "2.0.0"
79
79
  },
80
80
  "devDependencies": {
81
- "@commitlint/cli": "20.4.1",
82
- "@commitlint/config-conventional": "20.4.1",
83
- "@eslint/config-inspector": "1.4.2",
84
- "@rotki/eslint-plugin": "1.3.0",
85
- "@types/node": "24.10.13",
81
+ "@commitlint/cli": "20.5.0",
82
+ "@commitlint/config-conventional": "20.5.0",
83
+ "@eslint/config-inspector": "1.5.0",
84
+ "@rotki/eslint-plugin": "1.3.2",
85
+ "@types/node": "24.12.0",
86
86
  "@types/prompts": "2.4.9",
87
- "bumpp": "10.4.1",
88
- "eslint": "9.39.2",
89
- "eslint-typegen": "2.3.0",
90
- "execa": "^9.6.1",
87
+ "bumpp": "11.0.1",
88
+ "eslint": "9.39.4",
89
+ "eslint-typegen": "2.3.1",
90
+ "execa": "9.6.1",
91
91
  "husky": "9.1.7",
92
- "lint-staged": "16.2.7",
93
- "rimraf": "6.1.2",
94
- "tinyglobby": "^0.2.15",
95
- "tsdown": "0.20.3",
92
+ "lint-staged": "16.4.0",
93
+ "rimraf": "6.1.3",
94
+ "tinyglobby": "0.2.15",
95
+ "tsdown": "0.21.7",
96
96
  "tsx": "4.21.0",
97
97
  "typescript": "5.9.3",
98
- "vitest": "3.2.4",
99
- "@rotki/eslint-config": "5.0.1"
98
+ "vitest": "4.1.2",
99
+ "@rotki/eslint-config": "6.0.0"
100
100
  },
101
101
  "engines": {
102
102
  "node": ">=24 <25",