@fabdeh/eslint-config 0.9.0-beta.4 → 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 +1247 -263
  2. package/dist/index.mjs +134 -56
  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
  /**
@@ -1740,7 +1824,7 @@ function sortTsConfig() {
1740
1824
  async function tailwindcss(options = {}) {
1741
1825
  await ensurePackages(["eslint-plugin-better-tailwindcss"]);
1742
1826
  const betterTailwindcssPlugin = await interopDefault(import("eslint-plugin-better-tailwindcss"));
1743
- const { files: filesGlob, overrides, enableAllRules, parsers, ...settings } = options;
1827
+ const { files: filesGlob, overrides, enableAllRules, parsers, stylistic = true, ...settings } = options;
1744
1828
  let files;
1745
1829
  let parserConfigs;
1746
1830
  if (parsers) {
@@ -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, {
@@ -1760,7 +1844,8 @@ async function tailwindcss(options = {}) {
1760
1844
  plugins: { "better-tailwindcss": betterTailwindcssPlugin },
1761
1845
  settings: { "better-tailwindcss": settings },
1762
1846
  rules: {
1763
- ...betterTailwindcssPlugin.configs.recommended.rules,
1847
+ ...betterTailwindcssPlugin.configs.correctness.rules,
1848
+ ...stylistic || enableAllRules ? betterTailwindcssPlugin.configs.stylistic.rules : {},
1764
1849
  ...enableAllRules ? {
1765
1850
  "better-tailwindcss/enforce-consistent-variable-syntax": "warn",
1766
1851
  "better-tailwindcss/no-conflicting-classes": "error",
@@ -1769,7 +1854,6 @@ async function tailwindcss(options = {}) {
1769
1854
  }
1770
1855
  });
1771
1856
  }
1772
-
1773
1857
  //#endregion
1774
1858
  //#region src/configs/toml.ts
1775
1859
  /**
@@ -1820,7 +1904,6 @@ async function toml(options = {}) {
1820
1904
  }
1821
1905
  });
1822
1906
  }
1823
-
1824
1907
  //#endregion
1825
1908
  //#region src/configs/rules-configs/member-ordering.ts
1826
1909
  const MEMBER_ORDERING_OPTIONS = { default: [
@@ -1857,7 +1940,6 @@ const MEMBER_ORDERING_OPTIONS = { default: [
1857
1940
  "private-method",
1858
1941
  "#private-method"
1859
1942
  ] };
1860
-
1861
1943
  //#endregion
1862
1944
  //#region src/configs/typescript.ts
1863
1945
  /**
@@ -1986,7 +2068,6 @@ async function typescript(options = {}, isWorkspaceProject = false) {
1986
2068
  }
1987
2069
  });
1988
2070
  }
1989
-
1990
2071
  //#endregion
1991
2072
  //#region src/configs/unicorn.ts
1992
2073
  /**
@@ -2099,7 +2180,6 @@ function unicorn(options = {}) {
2099
2180
  } }
2100
2181
  });
2101
2182
  }
2102
-
2103
2183
  //#endregion
2104
2184
  //#region src/configs/vitest.ts
2105
2185
  /**
@@ -2175,7 +2255,6 @@ async function vitest(options = {}) {
2175
2255
  }
2176
2256
  });
2177
2257
  }
2178
-
2179
2258
  //#endregion
2180
2259
  //#region src/configs/yaml.ts
2181
2260
  /**
@@ -2229,7 +2308,6 @@ async function yaml(options = {}) {
2229
2308
  }
2230
2309
  });
2231
2310
  }
2232
-
2233
2311
  //#endregion
2234
2312
  //#region src/shared/constants.ts
2235
2313
  const NGRX_PACKAGES = [
@@ -2239,7 +2317,6 @@ const NGRX_PACKAGES = [
2239
2317
  "@ngrx/operators"
2240
2318
  ];
2241
2319
  const OPTIONS_SYMBOL = Symbol("options");
2242
-
2243
2320
  //#endregion
2244
2321
  //#region src/factories/project-config.ts
2245
2322
  /**
@@ -2264,11 +2341,9 @@ async function defineProjectConfig(baseConfig, options = {}, ...userConfigs) {
2264
2341
  const { angular: enableAngular = isPackageExists("@angular/core"), jsdoc: enableJsdoc = options.type === "lib", ngrx: enableNgrx = NGRX_PACKAGES.some((p) => isPackageExists(p)), tailwindcss: enableTailwind = false, typescript: typescriptOptions, vitest: enableVitest = isPackageExists("vitest") } = options;
2265
2342
  if (enableNgrx && !enableAngular) throw new Error("NgRx rules can only be enabled if Angular rules are also enabled.");
2266
2343
  const configs = [];
2344
+ const stylisticOptions = workspaceOptions.stylistic === false ? false : typeof workspaceOptions.stylistic === "object" ? workspaceOptions.stylistic : {};
2267
2345
  if (options.ignores && options.ignores.length > 0) configs.push(ignores(options.ignores, "project"));
2268
- if (enableJsdoc) {
2269
- const stylisticOptions = workspaceOptions.stylistic === false ? false : typeof workspaceOptions.stylistic === "object" ? workspaceOptions.stylistic : {};
2270
- configs.push(jsdoc({ stylistic: stylisticOptions }));
2271
- }
2346
+ if (enableJsdoc) configs.push(jsdoc({ stylistic: stylisticOptions }));
2272
2347
  if (typescriptOptions) {
2273
2348
  if (!workspaceOptions.typescript) throw new Error("Project-specific TypeScript configuration requires a base configuration with TypeScript support.");
2274
2349
  configs.push(typescript({
@@ -2298,11 +2373,13 @@ async function defineProjectConfig(baseConfig, options = {}, ...userConfigs) {
2298
2373
  }
2299
2374
  if (enableTailwind) {
2300
2375
  const tailwindcssOptions = resolveSubOptions(options, "tailwindcss");
2301
- configs.push(tailwindcss(tailwindcssOptions));
2376
+ configs.push(tailwindcss({
2377
+ ...tailwindcssOptions,
2378
+ stylistic: stylisticOptions
2379
+ }));
2302
2380
  }
2303
2381
  return tseslint.config(...resolvedBaseConfig, ...await Promise.all(configs), ...await Promise.all(userConfigs));
2304
2382
  }
2305
-
2306
2383
  //#endregion
2307
2384
  //#region src/factories/standard-config.ts
2308
2385
  /**
@@ -2367,7 +2444,10 @@ async function defineConfig(options = {}, ...userConfigs) {
2367
2444
  }
2368
2445
  if (enableTailwind) {
2369
2446
  const tailwindcssOptions = resolveSubOptions(options, "tailwindcss");
2370
- configs.push(tailwindcss(tailwindcssOptions));
2447
+ configs.push(tailwindcss({
2448
+ ...tailwindcssOptions,
2449
+ stylistic: stylisticOptions
2450
+ }));
2371
2451
  }
2372
2452
  if (options.jsonc ?? true) {
2373
2453
  const jsoncOptions = resolveSubOptions(options, "jsonc");
@@ -2398,7 +2478,6 @@ async function defineConfig(options = {}, ...userConfigs) {
2398
2478
  if (options.formatters) configs.push(formatters(options.formatters, typeof stylisticOptions === "boolean" ? {} : stylisticOptions, Boolean(enableAngular)));
2399
2479
  return tseslint.config(...await Promise.all(configs), ...await Promise.all(userConfigs));
2400
2480
  }
2401
-
2402
2481
  //#endregion
2403
2482
  //#region src/factories/workspace-config.ts
2404
2483
  /**
@@ -2475,6 +2554,5 @@ async function defineWorkspaceConfig(options = {}, ...userConfigs) {
2475
2554
  eslintConfigWithOptions[OPTIONS_SYMBOL] = options;
2476
2555
  return eslintConfigWithOptions;
2477
2556
  }
2478
-
2479
2557
  //#endregion
2480
- 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 };