@fabdeh/eslint-config 0.9.0 → 0.9.1

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 +1246 -262
  2. package/dist/index.mjs +121 -48
  3. package/package.json +51 -58
package/dist/index.mjs CHANGED
@@ -5,7 +5,6 @@ import process from "node:process";
5
5
  import { isPackageExists } from "local-pkg";
6
6
  import eslintComments from "@eslint-community/eslint-plugin-eslint-comments";
7
7
  import * as importX from "eslint-plugin-import-x";
8
- import eslint from "@eslint/js";
9
8
  import preferArrowFunctions from "eslint-plugin-prefer-arrow-functions";
10
9
  import unusedImports from "eslint-plugin-unused-imports";
11
10
  import globals from "globals";
@@ -15,16 +14,10 @@ import nodePlugin from "eslint-plugin-n";
15
14
  import perfectionistPlugin from "eslint-plugin-perfectionist";
16
15
  import { configs } from "eslint-plugin-regexp";
17
16
  import unicornPlugin from "eslint-plugin-unicorn";
18
-
19
- //#region src/shared/globs.ts
20
- /**
21
- * A glob pattern that matches the extension of JavaScript and TypeScript source files.
22
- */
23
- const GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
24
17
  /**
25
18
  * A glob pattern that matches JavaScript and TypeScript source files (including JSX/TSX).
26
19
  */
27
- const GLOB_SRC = `**/*.${GLOB_SRC_EXT}`;
20
+ const GLOB_SRC = `**/*.?([cm])[jt]s?(x)`;
28
21
  /**
29
22
  * A glob pattern that matches JavaScript source files (including JSX).
30
23
  */
@@ -147,7 +140,6 @@ const GLOB_EXCLUDE = [
147
140
  "**/components.d.ts",
148
141
  "**/prettier-types.ts"
149
142
  ];
150
-
151
143
  //#endregion
152
144
  //#region src/shared/utils.ts
153
145
  const SCOPE_URL = import.meta.dirname;
@@ -253,7 +245,6 @@ function resolveSubOptions(options, key) {
253
245
  if (typeof option === "boolean") return {};
254
246
  return option ?? {};
255
247
  }
256
-
257
248
  //#endregion
258
249
  //#region src/configs/angular.ts
259
250
  /**
@@ -359,7 +350,6 @@ async function angular(options = {}) {
359
350
  }
360
351
  });
361
352
  }
362
-
363
353
  //#endregion
364
354
  //#region src/configs/comments.ts
365
355
  /**
@@ -386,7 +376,6 @@ function comments() {
386
376
  }
387
377
  });
388
378
  }
389
-
390
379
  //#endregion
391
380
  //#region src/configs/stylistic.ts
392
381
  const STYLISTIC_CONFIG_DEFAULT = {
@@ -432,17 +421,16 @@ async function stylistic(options = {}) {
432
421
  }
433
422
  });
434
423
  }
435
-
436
424
  //#endregion
437
425
  //#region src/configs/formatters.ts
438
426
  /**
439
427
  * Merges the provided Prettier options with any overrides.
440
428
  *
441
429
  * @param options - The base Prettier options to merge.
442
- * @param overrides - Optional overrides for the Prettier options.
430
+ * @param overrides - Required overrides for the Prettier options. Must include a `parser` property.
443
431
  * @returns The merged Prettier options.
444
432
  */
445
- function mergePrettierOptions(options, overrides = {}) {
433
+ function mergePrettierOptions(options, overrides) {
446
434
  return {
447
435
  ...options,
448
436
  ...overrides,
@@ -577,7 +565,6 @@ async function formatters(options = {}, stylistic = {}, hasAngularTemplateParser
577
565
  });
578
566
  return tseslint.config(configs);
579
567
  }
580
-
581
568
  //#endregion
582
569
  //#region src/configs/ignore.ts
583
570
  /**
@@ -593,7 +580,6 @@ function ignores(userIgnores = [], fromFactory) {
593
580
  ignores: [...!fromFactory || fromFactory === "workspace" ? GLOB_EXCLUDE : [], ...userIgnores]
594
581
  });
595
582
  }
596
-
597
583
  //#endregion
598
584
  //#region src/configs/imports.ts
599
585
  /**
@@ -641,7 +627,6 @@ function imports(options = {}) {
641
627
  }
642
628
  });
643
629
  }
644
-
645
630
  //#endregion
646
631
  //#region src/configs/javascript.ts
647
632
  /**
@@ -664,7 +649,7 @@ function javascript(options = {}) {
664
649
  return tseslint.config({
665
650
  name: "fabdeh/javascript/setup",
666
651
  languageOptions: {
667
- ecmaVersion: 2022,
652
+ ecmaVersion: "latest",
668
653
  globals: {
669
654
  ...globals.browser,
670
655
  ...globals.es2021,
@@ -675,7 +660,7 @@ function javascript(options = {}) {
675
660
  },
676
661
  parserOptions: {
677
662
  ecmaFeatures: { jsx: true },
678
- ecmaVersion: 2022,
663
+ ecmaVersion: "latest",
679
664
  sourceType: "module"
680
665
  },
681
666
  sourceType: "module"
@@ -690,13 +675,15 @@ function javascript(options = {}) {
690
675
  "unused-imports": unusedImports
691
676
  },
692
677
  rules: {
693
- ...eslint.configs.recommended.rules,
694
678
  "accessor-pairs": "error",
695
679
  "array-callback-return": "error",
696
680
  "block-scoped-var": "error",
681
+ "constructor-super": "error",
697
682
  "default-case-last": "error",
698
683
  "dot-notation": "error",
699
684
  eqeqeq: "error",
685
+ "for-direction": "error",
686
+ "getter-return": "error",
700
687
  "id-denylist": [
701
688
  "error",
702
689
  "any",
@@ -711,48 +698,156 @@ function javascript(options = {}) {
711
698
  ],
712
699
  "new-cap": "error",
713
700
  "no-alert": "error",
701
+ "no-async-promise-executor": "error",
714
702
  "no-caller": "error",
703
+ "no-case-declarations": "error",
704
+ "no-class-assign": "error",
715
705
  "no-cond-assign": ["error", "always"],
706
+ "no-compare-neg-zero": "error",
716
707
  "no-console": ["error", { allow: ["warn", "error"] }],
708
+ "no-const-assign": "error",
709
+ "no-constant-binary-expression": "error",
710
+ "no-constant-condition": "error",
711
+ "no-control-regex": "error",
712
+ "no-debugger": "error",
713
+ "no-delete-var": "error",
714
+ "no-dupe-args": "error",
715
+ "no-dupe-class-members": "error",
716
+ "no-dupe-else-if": "error",
717
+ "no-dupe-keys": "error",
718
+ "no-duplicate-case": "error",
717
719
  "no-empty": ["error", { allowEmptyCatch: true }],
720
+ "no-empty-character-class": "error",
721
+ "no-empty-pattern": "error",
722
+ "no-empty-static-block": "error",
718
723
  "no-eval": "error",
724
+ "no-ex-assign": "error",
719
725
  "no-extend-native": "error",
720
726
  "no-extra-bind": "error",
727
+ "no-extra-boolean-cast": "error",
728
+ "no-fallthrough": "error",
729
+ "no-func-assign": "error",
730
+ "no-global-assign": "error",
731
+ "no-import-assign": "error",
721
732
  "no-implied-eval": "error",
733
+ "no-invalid-regexp": "error",
734
+ "no-irregular-whitespace": "error",
722
735
  "no-iterator": "error",
723
736
  "no-labels": "error",
724
737
  "no-lone-blocks": "error",
725
738
  "no-lonely-if": "error",
739
+ "no-loss-of-precision": "error",
740
+ "no-misleading-character-class": "error",
726
741
  "no-multi-str": "error",
727
742
  "no-new": "error",
728
743
  "no-new-func": "error",
744
+ "no-new-native-nonconstructor": "error",
729
745
  "no-new-wrappers": "error",
746
+ "no-nonoctal-decimal-escape": "error",
747
+ "no-obj-calls": "error",
748
+ "no-octal": "error",
730
749
  "no-octal-escape": "error",
731
750
  "no-plusplus": ["error", { allowForLoopAfterthoughts: true }],
751
+ "no-prototype-builtins": "error",
732
752
  "no-proto": "error",
753
+ "no-redeclare": "error",
754
+ "no-regex-spaces": "error",
755
+ "no-restricted-globals": [
756
+ "error",
757
+ {
758
+ message: "Use `globalThis` instead.",
759
+ name: "global"
760
+ },
761
+ {
762
+ message: "Use `globalThis` instead.",
763
+ name: "self"
764
+ }
765
+ ],
766
+ "no-restricted-properties": [
767
+ "error",
768
+ {
769
+ message: "Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.",
770
+ property: "__proto__"
771
+ },
772
+ {
773
+ message: "Use `Object.defineProperty` instead.",
774
+ property: "__defineGetter__"
775
+ },
776
+ {
777
+ message: "Use `Object.defineProperty` instead.",
778
+ property: "__defineSetter__"
779
+ },
780
+ {
781
+ message: "Use `Object.getOwnPropertyDescriptor` instead.",
782
+ property: "__lookupGetter__"
783
+ },
784
+ {
785
+ message: "Use `Object.getOwnPropertyDescriptor` instead.",
786
+ property: "__lookupSetter__"
787
+ }
788
+ ],
789
+ "no-restricted-syntax": [
790
+ "error",
791
+ {
792
+ selector: "TSEnumDeclaration",
793
+ message: "Use `as const` objects instead of enums."
794
+ },
795
+ {
796
+ selector: "TSExportAssignment",
797
+ message: "Avoid `export =`. Use ESM-style exports instead (for example, `export default` or named exports)."
798
+ },
799
+ {
800
+ selector: "ForInStatement",
801
+ message: "Avoid using `for...in` statements. Use `Object.keys()`, `Object.values()`, or `Object.entries()` instead."
802
+ },
803
+ {
804
+ selector: ":matches(PropertyDefinition, MethodDefinition)[accessibility=\"private\"]",
805
+ message: "Use `#private` members instead."
806
+ }
807
+ ],
808
+ "no-self-assign": "error",
733
809
  "no-self-compare": "error",
734
810
  "no-sequences": "error",
811
+ "no-setter-return": "error",
812
+ "no-shadow-restricted-names": "error",
813
+ "no-sparse-arrays": "error",
735
814
  "no-template-curly-in-string": "error",
815
+ "no-this-before-super": "error",
736
816
  "no-throw-literal": "error",
817
+ "no-undef": "error",
737
818
  "no-undef-init": "error",
819
+ "no-unassigned-vars": "error",
820
+ "no-unexpected-multiline": "error",
738
821
  "no-unmodified-loop-condition": "error",
739
822
  "no-unneeded-ternary": ["error", { defaultAssignment: false }],
823
+ "no-unreachable": "error",
740
824
  "no-unreachable-loop": "error",
825
+ "no-unsafe-finally": "error",
826
+ "no-unsafe-negation": "error",
827
+ "no-unsafe-optional-chaining": "error",
741
828
  "no-unused-expressions": ["error", {
742
829
  allowShortCircuit: true,
743
830
  allowTaggedTemplates: true,
744
831
  allowTernary: true
745
832
  }],
833
+ "no-unused-labels": "error",
834
+ "no-unused-private-class-members": "error",
835
+ "no-unused-vars": "off",
746
836
  "no-use-before-define": ["error", {
747
837
  classes: false,
748
838
  functions: false
749
839
  }],
840
+ "no-useless-assignment": "error",
841
+ "no-useless-backreference": "error",
750
842
  "no-useless-call": "error",
843
+ "no-useless-catch": "error",
751
844
  "no-useless-computed-key": "error",
752
845
  "no-useless-constructor": "error",
846
+ "no-useless-escape": "error",
753
847
  "no-useless-rename": "error",
754
848
  "no-useless-return": "error",
755
849
  "no-var": "error",
850
+ "no-with": "error",
756
851
  "object-shorthand": [
757
852
  "error",
758
853
  "always",
@@ -774,10 +869,12 @@ function javascript(options = {}) {
774
869
  "prefer-rest-params": "error",
775
870
  "prefer-spread": "error",
776
871
  "prefer-template": "error",
872
+ "preserve-caught-error": "error",
873
+ "require-yield": "error",
777
874
  "symbol-description": "error",
778
875
  "unicode-bom": ["error", "never"],
876
+ "use-isnan": ["error", { enforceForIndexOf: true }],
779
877
  "unused-imports/no-unused-imports": "error",
780
- "no-unused-vars": "off",
781
878
  "unused-imports/no-unused-vars": ["error", {
782
879
  args: "after-used",
783
880
  argsIgnorePattern: "^_",
@@ -785,7 +882,6 @@ function javascript(options = {}) {
785
882
  vars: "all",
786
883
  varsIgnorePattern: "^_"
787
884
  }],
788
- "use-isnan": ["error", { enforceForIndexOf: true }],
789
885
  "valid-typeof": ["error", { requireStringLiterals: true }],
790
886
  "vars-on-top": "error",
791
887
  yoda: [
@@ -803,7 +899,6 @@ function javascript(options = {}) {
803
899
  }
804
900
  });
805
901
  }
806
-
807
902
  //#endregion
808
903
  //#region src/configs/jsdoc.ts
809
904
  /**
@@ -889,7 +984,6 @@ function jsdoc(options = {}) {
889
984
  rules: getJsDocRules("warn", !!stylistic, "tsOnly")
890
985
  });
891
986
  }
892
-
893
987
  //#endregion
894
988
  //#region src/configs/jsonc.ts
895
989
  /**
@@ -974,7 +1068,6 @@ async function jsonc(options = {}) {
974
1068
  }
975
1069
  });
976
1070
  }
977
-
978
1071
  //#endregion
979
1072
  //#region src/configs/markdown.ts
980
1073
  /**
@@ -1070,7 +1163,6 @@ async function markdown(options = {}) {
1070
1163
  }
1071
1164
  });
1072
1165
  }
1073
-
1074
1166
  //#endregion
1075
1167
  //#region src/configs/rules-configs/naming-convention.ts
1076
1168
  /**
@@ -1144,7 +1236,6 @@ function namingConvention(strict, allowJsx = false) {
1144
1236
  }
1145
1237
  ];
1146
1238
  }
1147
-
1148
1239
  //#endregion
1149
1240
  //#region src/configs/ngrx.ts
1150
1241
  const DEFAULT_STORE_GLOB = [
@@ -1292,7 +1383,6 @@ async function ngrx(options = {}) {
1292
1383
  });
1293
1384
  return tseslint.config(configs);
1294
1385
  }
1295
-
1296
1386
  //#endregion
1297
1387
  //#region src/configs/node.ts
1298
1388
  /**
@@ -1320,7 +1410,6 @@ function node() {
1320
1410
  }
1321
1411
  });
1322
1412
  }
1323
-
1324
1413
  //#endregion
1325
1414
  //#region src/configs/rules-configs/perfectionist-groups.ts
1326
1415
  const SORT_IMPORT_GROUPS = [
@@ -1366,7 +1455,6 @@ const SORT_UNION_OR_INTERSECTION_GROUPS = [
1366
1455
  "nullish",
1367
1456
  "unknown"
1368
1457
  ];
1369
-
1370
1458
  //#endregion
1371
1459
  //#region src/configs/perfectionist.ts
1372
1460
  /**
@@ -1426,7 +1514,6 @@ function perfectionist() {
1426
1514
  }
1427
1515
  });
1428
1516
  }
1429
-
1430
1517
  //#endregion
1431
1518
  //#region src/configs/pnpm.ts
1432
1519
  /**
@@ -1461,7 +1548,6 @@ async function pnpm() {
1461
1548
  }
1462
1549
  });
1463
1550
  }
1464
-
1465
1551
  //#endregion
1466
1552
  //#region src/configs/regexp.ts
1467
1553
  /**
@@ -1484,7 +1570,6 @@ function regexp(options = {}) {
1484
1570
  }
1485
1571
  });
1486
1572
  }
1487
-
1488
1573
  //#endregion
1489
1574
  //#region src/configs/sort.ts
1490
1575
  /**
@@ -1721,7 +1806,6 @@ function sortTsConfig() {
1721
1806
  ] }
1722
1807
  });
1723
1808
  }
1724
-
1725
1809
  //#endregion
1726
1810
  //#region src/configs/tailwindcss.ts
1727
1811
  /**
@@ -1751,7 +1835,7 @@ async function tailwindcss(options = {}) {
1751
1835
  languageOptions: { parser }
1752
1836
  }));
1753
1837
  } else {
1754
- files = { files: filesGlob ?? [GLOB_SRC, GLOB_HTML] };
1838
+ files = { files: filesGlob ?? [GLOB_SRC, "**/*.htm?(l)"] };
1755
1839
  parserConfigs = [];
1756
1840
  }
1757
1841
  return tseslint.config(...parserConfigs, {
@@ -1770,7 +1854,6 @@ async function tailwindcss(options = {}) {
1770
1854
  }
1771
1855
  });
1772
1856
  }
1773
-
1774
1857
  //#endregion
1775
1858
  //#region src/configs/toml.ts
1776
1859
  /**
@@ -1821,7 +1904,6 @@ async function toml(options = {}) {
1821
1904
  }
1822
1905
  });
1823
1906
  }
1824
-
1825
1907
  //#endregion
1826
1908
  //#region src/configs/rules-configs/member-ordering.ts
1827
1909
  const MEMBER_ORDERING_OPTIONS = { default: [
@@ -1858,7 +1940,6 @@ const MEMBER_ORDERING_OPTIONS = { default: [
1858
1940
  "private-method",
1859
1941
  "#private-method"
1860
1942
  ] };
1861
-
1862
1943
  //#endregion
1863
1944
  //#region src/configs/typescript.ts
1864
1945
  /**
@@ -1987,7 +2068,6 @@ async function typescript(options = {}, isWorkspaceProject = false) {
1987
2068
  }
1988
2069
  });
1989
2070
  }
1990
-
1991
2071
  //#endregion
1992
2072
  //#region src/configs/unicorn.ts
1993
2073
  /**
@@ -2100,7 +2180,6 @@ function unicorn(options = {}) {
2100
2180
  } }
2101
2181
  });
2102
2182
  }
2103
-
2104
2183
  //#endregion
2105
2184
  //#region src/configs/vitest.ts
2106
2185
  /**
@@ -2176,7 +2255,6 @@ async function vitest(options = {}) {
2176
2255
  }
2177
2256
  });
2178
2257
  }
2179
-
2180
2258
  //#endregion
2181
2259
  //#region src/configs/yaml.ts
2182
2260
  /**
@@ -2230,7 +2308,6 @@ async function yaml(options = {}) {
2230
2308
  }
2231
2309
  });
2232
2310
  }
2233
-
2234
2311
  //#endregion
2235
2312
  //#region src/shared/constants.ts
2236
2313
  const NGRX_PACKAGES = [
@@ -2240,7 +2317,6 @@ const NGRX_PACKAGES = [
2240
2317
  "@ngrx/operators"
2241
2318
  ];
2242
2319
  const OPTIONS_SYMBOL = Symbol("options");
2243
-
2244
2320
  //#endregion
2245
2321
  //#region src/factories/project-config.ts
2246
2322
  /**
@@ -2304,7 +2380,6 @@ async function defineProjectConfig(baseConfig, options = {}, ...userConfigs) {
2304
2380
  }
2305
2381
  return tseslint.config(...resolvedBaseConfig, ...await Promise.all(configs), ...await Promise.all(userConfigs));
2306
2382
  }
2307
-
2308
2383
  //#endregion
2309
2384
  //#region src/factories/standard-config.ts
2310
2385
  /**
@@ -2403,7 +2478,6 @@ async function defineConfig(options = {}, ...userConfigs) {
2403
2478
  if (options.formatters) configs.push(formatters(options.formatters, typeof stylisticOptions === "boolean" ? {} : stylisticOptions, Boolean(enableAngular)));
2404
2479
  return tseslint.config(...await Promise.all(configs), ...await Promise.all(userConfigs));
2405
2480
  }
2406
-
2407
2481
  //#endregion
2408
2482
  //#region src/factories/workspace-config.ts
2409
2483
  /**
@@ -2480,6 +2554,5 @@ async function defineWorkspaceConfig(options = {}, ...userConfigs) {
2480
2554
  eslintConfigWithOptions[OPTIONS_SYMBOL] = options;
2481
2555
  return eslintConfigWithOptions;
2482
2556
  }
2483
-
2484
2557
  //#endregion
2485
- export { GLOB_HTML, GLOB_JS, GLOB_SRC, GLOB_TESTS, GLOB_TS, STYLISTIC_CONFIG_DEFAULT, angular, comments, defineConfig, defineProjectConfig, defineWorkspaceConfig, ensurePackages, formatters, getTsConfigFileName, getWorkspaceRoot, ignores, imports, interopDefault, isPackageInScope, javascript, jsdoc, jsonc, markdown, ngrx, node, perfectionist, pnpm, regexp, resolveSubOptions, sortPackageJson, sortTsConfig, stylistic, tailwindcss, toml, typescript, unicorn, vitest, yaml };
2558
+ export { GLOB_HTML, GLOB_JS, GLOB_SRC, GLOB_TESTS, GLOB_TS, STYLISTIC_CONFIG_DEFAULT, angular, comments, defineConfig, defineProjectConfig, defineWorkspaceConfig, ensurePackages, formatters, getTsConfigFileName, getWorkspaceRoot, ignores, imports, interopDefault, isPackageInScope, javascript, jsdoc, jsonc, markdown, ngrx, node, perfectionist, pnpm, regexp, resolveSubOptions, sortPackageJson, sortTsConfig, stylistic, tailwindcss, toml, typescript, unicorn, vitest, yaml };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fabdeh/eslint-config",
3
3
  "type": "module",
4
- "version": "0.9.0",
4
+ "version": "0.9.1",
5
5
  "description": "My personal eslint config preset",
6
6
  "author": {
7
7
  "name": "Fabien Dehopré",
@@ -35,15 +35,12 @@
35
35
  "files": [
36
36
  "dist"
37
37
  ],
38
- "engines": {
39
- "node": "^20.19.0 || ^22.12.0 || ^24.0.0"
40
- },
41
38
  "peerDependencies": {
42
39
  "@prettier/plugin-xml": "^3.4.2",
43
- "eslint": "^9.39.1",
44
- "eslint-plugin-better-tailwindcss": "^4.1.1",
40
+ "eslint": "^9.38.0 || ^10.0.0",
41
+ "eslint-plugin-better-tailwindcss": "^4.3.2",
45
42
  "eslint-plugin-erasable-syntax-only": "^0.4.0",
46
- "eslint-plugin-format": "^1.0.2",
43
+ "eslint-plugin-format": "^2.0.0",
47
44
  "prettier-plugin-slidev": "^1.0.5"
48
45
  },
49
46
  "peerDependenciesMeta": {
@@ -65,84 +62,80 @@
65
62
  },
66
63
  "dependencies": {
67
64
  "@antfu/install-pkg": "^1.1.0",
68
- "@clack/prompts": "^1.0.0",
69
- "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
70
- "@eslint/js": "^9.39.1",
65
+ "@clack/prompts": "^1.1.0",
66
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
71
67
  "@eslint/markdown": "^7.5.1",
72
68
  "@ngrx/eslint-plugin": "^21.0.1",
73
- "@stylistic/eslint-plugin": "^5.6.1",
74
- "@typescript-eslint/eslint-plugin": "^8.48.0",
75
- "@typescript-eslint/parser": "^8.48.0",
76
- "@typescript-eslint/utils": "^8.48.0",
77
- "@vitest/eslint-plugin": "^1.5.0",
78
- "angular-eslint": "^21.0.1",
79
- "eslint-config-flat-gitignore": "^2.1.0",
80
- "eslint-flat-config-utils": "^3.0.0",
69
+ "@stylistic/eslint-plugin": "^5.10.0",
70
+ "@typescript-eslint/eslint-plugin": "^8.57.2",
71
+ "@typescript-eslint/parser": "^8.57.2",
72
+ "@typescript-eslint/utils": "^8.57.2",
73
+ "@vitest/eslint-plugin": "^1.6.13",
74
+ "angular-eslint": "^21.3.1",
75
+ "eslint-config-flat-gitignore": "^2.3.0",
76
+ "eslint-flat-config-utils": "^3.0.2",
81
77
  "eslint-merge-processors": "^2.0.0",
82
- "eslint-plugin-import-x": "^4.16.1",
78
+ "eslint-plugin-import-x": "^4.16.2",
83
79
  "eslint-plugin-jest-dom": "^5.5.0",
84
- "eslint-plugin-jsdoc": "^62.5.0",
85
- "eslint-plugin-jsonc": "^2.21.0",
86
- "eslint-plugin-n": "^17.23.1",
87
- "eslint-plugin-perfectionist": "^5.4.0",
88
- "eslint-plugin-pnpm": "^1.3.0",
80
+ "eslint-plugin-jsdoc": "^62.8.0",
81
+ "eslint-plugin-jsonc": "^3.0.0",
82
+ "eslint-plugin-n": "^17.24.0",
83
+ "eslint-plugin-perfectionist": "^5.7.0",
84
+ "eslint-plugin-pnpm": "^1.6.0",
89
85
  "eslint-plugin-prefer-arrow-functions": "^3.9.1",
90
- "eslint-plugin-regexp": "^3.0.0",
91
- "eslint-plugin-testing-library": "^7.13.5",
92
- "eslint-plugin-toml": "^1.0.3",
93
- "eslint-plugin-unicorn": "^62.0.0",
94
- "eslint-plugin-unused-imports": "^4.3.0",
95
- "eslint-plugin-yml": "^3.0.0",
96
- "globals": "^17.3.0",
97
- "jsonc-eslint-parser": "^2.4.1",
86
+ "eslint-plugin-regexp": "^3.1.0",
87
+ "eslint-plugin-testing-library": "^7.16.2",
88
+ "eslint-plugin-toml": "^1.3.1",
89
+ "eslint-plugin-unicorn": "^63.0.0",
90
+ "eslint-plugin-unused-imports": "^4.4.1",
91
+ "eslint-plugin-yml": "^3.3.1",
92
+ "globals": "^17.4.0",
93
+ "jsonc-eslint-parser": "^3.0.0",
98
94
  "local-pkg": "^1.1.2",
99
- "typescript-eslint": "^8.48.0",
95
+ "typescript-eslint": "^8.57.2",
100
96
  "yaml-eslint-parser": "^2.0.0"
101
97
  },
102
98
  "devDependencies": {
103
- "@angular/core": "^21.0.1",
99
+ "@angular/core": "^21.2.5",
104
100
  "@arethetypeswrong/cli": "^0.18.2",
105
- "@commitlint/cli": "^20.1.0",
106
- "@commitlint/config-conventional": "^20.0.0",
107
- "@commitlint/cz-commitlint": "^20.1.0",
108
- "@commitlint/lint": "^20.0.0",
109
- "@commitlint/load": "^20.1.0",
101
+ "@commitlint/cli": "^20.5.0",
102
+ "@commitlint/config-conventional": "^20.5.0",
103
+ "@commitlint/cz-commitlint": "^20.5.0",
104
+ "@commitlint/lint": "^20.5.0",
105
+ "@commitlint/load": "^20.5.0",
110
106
  "@ngrx/effects": "^21.0.1",
111
107
  "@ngrx/operators": "^21.0.1",
112
108
  "@ngrx/signals": "^21.0.1",
113
109
  "@ngrx/store": "^21.0.1",
114
110
  "@prettier/plugin-xml": "^3.4.2",
115
- "@testing-library/angular": "^19.0.0",
111
+ "@testing-library/angular": "^19.2.1",
116
112
  "@testing-library/jest-dom": "^6.9.1",
117
113
  "@types/fs-extra": "^11.0.4",
118
- "@types/node": "^22.19.1",
119
- "@vitest/coverage-v8": "^4.0.14",
120
- "bumpp": "^10.3.2",
114
+ "@types/node": "^24.12.0",
115
+ "@vitest/coverage-v8": "^4.1.1",
116
+ "bumpp": "^11.0.1",
121
117
  "changelogithub": "^14.0.0",
122
118
  "commitizen": "^4.3.1",
123
- "eslint": "^9.39.1",
124
- "eslint-plugin-better-tailwindcss": "^4.1.1",
119
+ "eslint": "^10.0.0",
120
+ "eslint-plugin-better-tailwindcss": "^4.3.2",
125
121
  "eslint-plugin-erasable-syntax-only": "^0.4.0",
126
- "eslint-plugin-format": "^1.0.2",
127
- "eslint-typegen": "^2.3.0",
128
- "execa": "^9.6.0",
122
+ "eslint-plugin-format": "^2.0.0",
123
+ "eslint-typegen": "^2.3.1",
124
+ "execa": "^9.6.1",
129
125
  "fast-glob": "^3.3.3",
130
- "fs-extra": "^11.3.2",
126
+ "fs-extra": "^11.3.4",
131
127
  "is-ci": "^4.1.0",
132
128
  "jiti": "^2.6.1",
133
129
  "nano-staged": "^0.9.0",
134
130
  "prettier-plugin-slidev": "^1.0.5",
135
- "semver": "^7.7.3",
131
+ "semver": "^7.7.4",
136
132
  "simple-git-hooks": "^2.13.1",
137
- "tailwindcss": "^4.1.17",
138
- "tsdown": "^0.20.1",
139
- "tsx": "^4.20.6",
133
+ "tailwindcss": "^4.2.2",
134
+ "tsdown": "^0.21.4",
135
+ "tsx": "^4.21.0",
140
136
  "typescript": "^5.9.3",
141
- "vitest": "^4.0.14",
142
- "@fabdeh/eslint-config": "0.9.0"
143
- },
144
- "resolutions": {
145
- "eslint": "catalog:peer"
137
+ "vitest": "^4.1.1",
138
+ "@fabdeh/eslint-config": "0.9.1"
146
139
  },
147
140
  "simple-git-hooks": {
148
141
  "pre-commit": "pnpm nano-staged",