@luxass/eslint-config 4.4.2 → 4.5.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/index.js CHANGED
@@ -447,8 +447,8 @@ var parserPlain = {
447
447
  }
448
448
  })
449
449
  };
450
- async function combine(...configs) {
451
- const resolved = await Promise.all(configs);
450
+ async function combine(...configs2) {
451
+ const resolved = await Promise.all(configs2);
452
452
  return resolved.flat();
453
453
  }
454
454
  function renameRules(rules, from, to) {
@@ -1638,11 +1638,13 @@ async function test(options = {}) {
1638
1638
  name: "luxass/test/rules",
1639
1639
  files,
1640
1640
  rules: {
1641
+ "node/prefer-global/process": "off",
1641
1642
  "test/consistent-test-it": [
1642
1643
  "error",
1643
1644
  { fn: "it", withinDescribe: "it" }
1644
1645
  ],
1645
1646
  "test/no-identical-title": "error",
1647
+ "test/no-import-node-test": "error",
1646
1648
  "test/no-focused-tests": editor ? "off" : "error",
1647
1649
  "test/prefer-hooks-in-order": "error",
1648
1650
  "test/prefer-lowercase-title": "error",
@@ -1692,88 +1694,6 @@ async function unocss(options = {}) {
1692
1694
  ];
1693
1695
  }
1694
1696
 
1695
- // src/configs/nextjs.ts
1696
- async function nextjs(options = {}) {
1697
- const {
1698
- files = [GLOB_SRC],
1699
- overrides,
1700
- rootDir
1701
- } = options;
1702
- await ensure([
1703
- "@next/eslint-plugin-next"
1704
- ]);
1705
- const pluginNextjs = await interop(import("@next/eslint-plugin-next"));
1706
- return [
1707
- {
1708
- name: "luxass/nextjs/setup",
1709
- plugins: {
1710
- nextjs: pluginNextjs
1711
- }
1712
- },
1713
- {
1714
- name: "luxass/nextjs/rules",
1715
- files,
1716
- rules: {
1717
- ...renameRules(
1718
- pluginNextjs.configs.recommended.rules,
1719
- "@next/next/",
1720
- "nextjs/"
1721
- ),
1722
- ...renameRules(
1723
- pluginNextjs.configs["core-web-vitals"].rules,
1724
- "@next/next/",
1725
- "nextjs/"
1726
- ),
1727
- "nextjs/google-font-display": ["error"],
1728
- "nextjs/google-font-preconnect": ["error"],
1729
- "nextjs/inline-script-id": ["error"],
1730
- "nextjs/next-script-for-ga": ["warn"],
1731
- "nextjs/no-assign-module-variable": ["error"],
1732
- "nextjs/no-css-tags": ["warn"],
1733
- "nextjs/no-document-import-in-page": ["error"],
1734
- "nextjs/no-duplicate-head": ["error"],
1735
- "nextjs/no-head-element": ["warn"],
1736
- "nextjs/no-head-import-in-document": ["error"],
1737
- "nextjs/no-html-link-for-pages": ["off"],
1738
- "nextjs/no-img-element": ["warn"],
1739
- "nextjs/no-page-custom-font": ["warn"],
1740
- "nextjs/no-script-component-in-head": ["error"],
1741
- "nextjs/no-styled-jsx-in-document": ["warn"],
1742
- "nextjs/no-sync-scripts": ["warn"],
1743
- "nextjs/no-title-in-document-head": ["warn"],
1744
- "nextjs/no-typos": ["warn"],
1745
- "nextjs/no-unwanted-polyfillio": ["warn"],
1746
- // This rule creates errors with webpack parsing on edge runtime
1747
- "unicorn/prefer-node-protocol": ["off"],
1748
- ...overrides
1749
- },
1750
- settings: {
1751
- next: {
1752
- rootDir: rootDir ?? true
1753
- },
1754
- react: {
1755
- pragma: "React",
1756
- version: "detect"
1757
- }
1758
- }
1759
- },
1760
- {
1761
- name: "luxass/nextjs/default-export-override",
1762
- files: GLOB_NEXTJS_ROUTES,
1763
- rules: {
1764
- "import/prefer-default-export": "error"
1765
- }
1766
- },
1767
- {
1768
- name: "luxass/nextjs/og-override",
1769
- files: GLOB_NEXTJS_OG,
1770
- rules: {
1771
- "nextjs/no-img-element": "off"
1772
- }
1773
- }
1774
- ];
1775
- }
1776
-
1777
1697
  // src/configs/react.ts
1778
1698
  import { isPackageExists as isPackageExists2 } from "local-pkg";
1779
1699
  var ReactRefreshAllowConstantExportPackages = [
@@ -1787,7 +1707,7 @@ var RemixPackages = [
1787
1707
  ];
1788
1708
  async function react(options = {}) {
1789
1709
  const {
1790
- files = [GLOB_TS, GLOB_TSX],
1710
+ files = [GLOB_JS, GLOB_JSX, GLOB_TS, GLOB_TSX],
1791
1711
  overrides = {}
1792
1712
  } = options;
1793
1713
  await ensure([
@@ -1863,6 +1783,7 @@ async function react(options = {}) {
1863
1783
  allowExportNames: [
1864
1784
  ...isUsingNext ? [
1865
1785
  "config",
1786
+ "runtime",
1866
1787
  "generateStaticParams",
1867
1788
  "metadata",
1868
1789
  "generateMetadata",
@@ -2115,7 +2036,7 @@ async function formatters(options = {}, stylistic2 = {}) {
2115
2036
  options.dprintOptions || {}
2116
2037
  );
2117
2038
  const pluginFormat = await interop(import("eslint-plugin-format"));
2118
- const configs = [
2039
+ const configs2 = [
2119
2040
  {
2120
2041
  name: "luxass/formatter/setup",
2121
2042
  plugins: {
@@ -2124,7 +2045,7 @@ async function formatters(options = {}, stylistic2 = {}) {
2124
2045
  }
2125
2046
  ];
2126
2047
  if (options.css) {
2127
- configs.push(
2048
+ configs2.push(
2128
2049
  {
2129
2050
  name: "luxass/formatter/css",
2130
2051
  files: [GLOB_CSS, GLOB_POSTCSS],
@@ -2176,7 +2097,7 @@ async function formatters(options = {}, stylistic2 = {}) {
2176
2097
  );
2177
2098
  }
2178
2099
  if (options.html) {
2179
- configs.push({
2100
+ configs2.push({
2180
2101
  name: "luxass/formatter/html",
2181
2102
  files: [GLOB_HTML],
2182
2103
  languageOptions: {
@@ -2195,7 +2116,7 @@ async function formatters(options = {}, stylistic2 = {}) {
2195
2116
  }
2196
2117
  if (options.markdown) {
2197
2118
  const formater = options.markdown === true ? "prettier" : options.markdown;
2198
- configs.push({
2119
+ configs2.push({
2199
2120
  name: "luxass/formatter/markdown",
2200
2121
  files: [GLOB_MARKDOWN],
2201
2122
  languageOptions: {
@@ -2218,7 +2139,7 @@ async function formatters(options = {}, stylistic2 = {}) {
2218
2139
  });
2219
2140
  }
2220
2141
  if (options.astro) {
2221
- configs.push({
2142
+ configs2.push({
2222
2143
  name: "luxass/formatter/astro",
2223
2144
  files: [GLOB_ASTRO],
2224
2145
  languageOptions: {
@@ -2239,7 +2160,7 @@ async function formatters(options = {}, stylistic2 = {}) {
2239
2160
  });
2240
2161
  }
2241
2162
  if (options.graphql) {
2242
- configs.push({
2163
+ configs2.push({
2243
2164
  name: "luxass/formatter/graphql",
2244
2165
  files: [GLOB_GRAPHQL],
2245
2166
  languageOptions: {
@@ -2256,7 +2177,7 @@ async function formatters(options = {}, stylistic2 = {}) {
2256
2177
  }
2257
2178
  });
2258
2179
  }
2259
- return configs;
2180
+ return configs2;
2260
2181
  }
2261
2182
 
2262
2183
  // src/configs/toml.ts
@@ -2395,6 +2316,32 @@ async function solid(options = {}) {
2395
2316
  ];
2396
2317
  }
2397
2318
 
2319
+ // src/configs/regexp.ts
2320
+ import { configs } from "eslint-plugin-regexp";
2321
+ async function regexp(options = {}) {
2322
+ const config = configs["flat/recommended"];
2323
+ const rules = {
2324
+ ...config.rules
2325
+ };
2326
+ if (options.level === "warn") {
2327
+ for (const key in rules) {
2328
+ if (rules[key] === "error") {
2329
+ rules[key] = "warn";
2330
+ }
2331
+ }
2332
+ }
2333
+ return [
2334
+ {
2335
+ ...config,
2336
+ name: "luxass/regexp/rules",
2337
+ rules: {
2338
+ ...rules,
2339
+ ...options.overrides
2340
+ }
2341
+ }
2342
+ ];
2343
+ }
2344
+
2398
2345
  // src/factory.ts
2399
2346
  var FLAT_CONFIG_PROPS = [
2400
2347
  "name",
@@ -2423,8 +2370,7 @@ var defaultPluginRenaming = {
2423
2370
  "@eslint-react": "react",
2424
2371
  "@eslint-react/dom": "react-dom",
2425
2372
  "@eslint-react/hooks-extra": "react-hooks-extra",
2426
- "@eslint-react/naming-convention": "react-naming-convention",
2427
- "@next/next": "nextjs"
2373
+ "@eslint-react/naming-convention": "react-naming-convention"
2428
2374
  };
2429
2375
  function luxass(options = {}, ...userConfigs) {
2430
2376
  const {
@@ -2433,30 +2379,30 @@ function luxass(options = {}, ...userConfigs) {
2433
2379
  editor = !!((process3.env.VSCODE_PID || process3.env.JETBRAINS_IDE || process3.env.VIM) && !process3.env.CI),
2434
2380
  exts = [],
2435
2381
  gitignore: enableGitignore = true,
2436
- nextjs: enableNextJS = false,
2437
2382
  react: enableReact = false,
2438
2383
  tailwindcss: enableTailwindCSS = false,
2439
2384
  svelte: enableSvelte = false,
2440
2385
  solid: enableSolid = false,
2441
2386
  typescript: enableTypeScript = isPackageExists4("typescript"),
2442
2387
  unocss: enableUnoCSS = false,
2388
+ regexp: enableRegexp = true,
2443
2389
  vue: enableVue = VuePackages.some((i) => isPackageExists4(i))
2444
2390
  } = options;
2445
2391
  const stylisticOptions = options.stylistic === false ? false : typeof options.stylistic === "object" ? options.stylistic : {};
2446
2392
  if (stylisticOptions && !("jsx" in stylisticOptions)) {
2447
2393
  stylisticOptions.jsx = options.jsx ?? true;
2448
2394
  }
2449
- const configs = [];
2395
+ const configs2 = [];
2450
2396
  if (enableGitignore) {
2451
2397
  if (typeof enableGitignore !== "boolean") {
2452
- configs.push(interop(import("eslint-config-flat-gitignore")).then((plugin) => [plugin(enableGitignore)]));
2398
+ configs2.push(interop(import("eslint-config-flat-gitignore")).then((plugin) => [plugin(enableGitignore)]));
2453
2399
  } else {
2454
2400
  if (existsSync(".gitignore")) {
2455
- configs.push(interop(import("eslint-config-flat-gitignore")).then((plugin) => [plugin()]));
2401
+ configs2.push(interop(import("eslint-config-flat-gitignore")).then((plugin) => [plugin()]));
2456
2402
  }
2457
2403
  }
2458
2404
  }
2459
- configs.push(
2405
+ configs2.push(
2460
2406
  ignores(),
2461
2407
  javascript({
2462
2408
  editor,
@@ -2476,41 +2422,39 @@ function luxass(options = {}, ...userConfigs) {
2476
2422
  exts.push("vue");
2477
2423
  }
2478
2424
  if (enableTypeScript) {
2479
- configs.push(typescript({
2425
+ configs2.push(typescript({
2480
2426
  ...resolveSubOptions(options, "typescript"),
2481
2427
  exts,
2482
2428
  overrides: getOverrides(options, "typescript")
2483
2429
  }));
2484
2430
  }
2485
2431
  if (stylisticOptions) {
2486
- configs.push(stylistic({
2432
+ configs2.push(stylistic({
2487
2433
  ...stylisticOptions,
2488
2434
  overrides: getOverrides(options, "stylistic")
2489
2435
  }));
2490
2436
  }
2437
+ if (enableRegexp) {
2438
+ configs2.push(regexp({
2439
+ ...resolveSubOptions(options, "regexp"),
2440
+ overrides: getOverrides(options, "regexp")
2441
+ }));
2442
+ }
2491
2443
  if (options.test ?? true) {
2492
- configs.push(test({
2444
+ configs2.push(test({
2493
2445
  editor,
2494
2446
  overrides: getOverrides(options, "test")
2495
2447
  }));
2496
2448
  }
2497
- if (enableReact || enableNextJS) {
2498
- configs.push(react({
2449
+ if (enableReact) {
2450
+ configs2.push(react({
2499
2451
  ...resolveSubOptions(options, "react"),
2500
2452
  overrides: getOverrides(options, "react"),
2501
2453
  tsconfigPath: getOverrides(options, "typescript").tsconfigPath
2502
2454
  }));
2503
2455
  }
2504
- if (enableNextJS) {
2505
- configs.push(
2506
- nextjs({
2507
- ...resolveSubOptions(options, "nextjs"),
2508
- overrides: getOverrides(options, "nextjs")
2509
- })
2510
- );
2511
- }
2512
2456
  if (enableSolid) {
2513
- configs.push(
2457
+ configs2.push(
2514
2458
  solid({
2515
2459
  ...resolveSubOptions(options, "solid"),
2516
2460
  overrides: getOverrides(options, "solid"),
@@ -2519,7 +2463,7 @@ function luxass(options = {}, ...userConfigs) {
2519
2463
  );
2520
2464
  }
2521
2465
  if (enableSvelte) {
2522
- configs.push(
2466
+ configs2.push(
2523
2467
  svelte({
2524
2468
  ...resolveSubOptions(options, "svelte"),
2525
2469
  overrides: getOverrides(options, "svelte"),
@@ -2529,7 +2473,7 @@ function luxass(options = {}, ...userConfigs) {
2529
2473
  );
2530
2474
  }
2531
2475
  if (enableVue) {
2532
- configs.push(
2476
+ configs2.push(
2533
2477
  vue({
2534
2478
  ...resolveSubOptions(options, "vue"),
2535
2479
  overrides: getOverrides(options, "vue"),
@@ -2539,7 +2483,7 @@ function luxass(options = {}, ...userConfigs) {
2539
2483
  );
2540
2484
  }
2541
2485
  if (enableAstro) {
2542
- configs.push(
2486
+ configs2.push(
2543
2487
  astro({
2544
2488
  ...resolveSubOptions(options, "astro"),
2545
2489
  overrides: getOverrides(options, "astro"),
@@ -2548,19 +2492,19 @@ function luxass(options = {}, ...userConfigs) {
2548
2492
  );
2549
2493
  }
2550
2494
  if (enableUnoCSS) {
2551
- configs.push(unocss({
2495
+ configs2.push(unocss({
2552
2496
  ...resolveSubOptions(options, "unocss"),
2553
2497
  overrides: getOverrides(options, "unocss")
2554
2498
  }));
2555
2499
  }
2556
2500
  if (enableTailwindCSS) {
2557
- configs.push(tailwindcss({
2501
+ configs2.push(tailwindcss({
2558
2502
  ...resolveSubOptions(options, "tailwindcss"),
2559
2503
  overrides: getOverrides(options, "tailwindcss")
2560
2504
  }));
2561
2505
  }
2562
2506
  if (options.jsonc ?? true) {
2563
- configs.push(
2507
+ configs2.push(
2564
2508
  jsonc({
2565
2509
  overrides: getOverrides(options, "jsonc"),
2566
2510
  stylistic: stylisticOptions
@@ -2570,19 +2514,19 @@ function luxass(options = {}, ...userConfigs) {
2570
2514
  );
2571
2515
  }
2572
2516
  if (options.yaml ?? true) {
2573
- configs.push(yaml({
2517
+ configs2.push(yaml({
2574
2518
  overrides: getOverrides(options, "yaml"),
2575
2519
  stylistic: stylisticOptions
2576
2520
  }));
2577
2521
  }
2578
2522
  if (options.toml ?? true) {
2579
- configs.push(toml({
2523
+ configs2.push(toml({
2580
2524
  overrides: getOverrides(options, "toml"),
2581
2525
  stylistic: stylisticOptions
2582
2526
  }));
2583
2527
  }
2584
2528
  if (options.markdown ?? true) {
2585
- configs.push(
2529
+ configs2.push(
2586
2530
  markdown({
2587
2531
  exts,
2588
2532
  overrides: getOverrides(options, "markdown")
@@ -2590,7 +2534,7 @@ function luxass(options = {}, ...userConfigs) {
2590
2534
  );
2591
2535
  }
2592
2536
  if (options.formatters) {
2593
- configs.push(formatters(
2537
+ configs2.push(formatters(
2594
2538
  options.formatters,
2595
2539
  typeof stylisticOptions === "boolean" ? {} : stylisticOptions
2596
2540
  ));
@@ -2602,11 +2546,11 @@ function luxass(options = {}, ...userConfigs) {
2602
2546
  return acc;
2603
2547
  }, {});
2604
2548
  if (Object.keys(fusedConfig).length) {
2605
- configs.push([fusedConfig]);
2549
+ configs2.push([fusedConfig]);
2606
2550
  }
2607
2551
  let composer = new FlatConfigComposer();
2608
2552
  composer = composer.append(
2609
- ...configs,
2553
+ ...configs2,
2610
2554
  ...userConfigs
2611
2555
  );
2612
2556
  if (autoRenamePlugins) {
@@ -2661,10 +2605,10 @@ export {
2661
2605
  jsonc,
2662
2606
  luxass,
2663
2607
  markdown,
2664
- nextjs,
2665
2608
  node,
2666
2609
  parserPlain,
2667
2610
  react,
2611
+ regexp,
2668
2612
  renameRules,
2669
2613
  resolveSubOptions,
2670
2614
  solid,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luxass/eslint-config",
3
- "version": "4.4.2",
3
+ "version": "4.5.0",
4
4
  "description": "ESLint config for @luxass",
5
5
  "type": "module",
6
6
  "author": {
@@ -8,7 +8,7 @@
8
8
  "email": "lucasnrgaard@gmail.com",
9
9
  "url": "https://luxass.dev"
10
10
  },
11
- "packageManager": "pnpm@9.0.6",
11
+ "packageManager": "pnpm@9.1.3",
12
12
  "license": "MIT",
13
13
  "repository": {
14
14
  "type": "git",
@@ -49,19 +49,18 @@
49
49
  },
50
50
  "peerDependencies": {
51
51
  "@eslint-react/eslint-plugin": "^1.5.8",
52
- "@next/eslint-plugin-next": "^14.0.0",
53
52
  "@unocss/eslint-plugin": ">=0.50.0",
54
- "astro-eslint-parser": "^0.16.3",
53
+ "astro-eslint-parser": "^1.0.2",
55
54
  "eslint": ">=8.40.0",
56
- "eslint-plugin-astro": "^0.31.4",
55
+ "eslint-plugin-astro": "^1.2.0",
57
56
  "eslint-plugin-format": ">=0.1.0",
58
57
  "eslint-plugin-react-hooks": "^4.6.0",
59
58
  "eslint-plugin-react-refresh": "^0.4.4",
60
- "eslint-plugin-solid": "^0.1.0",
59
+ "eslint-plugin-solid": "^0.14.0",
61
60
  "eslint-plugin-svelte": ">=2.37.0",
62
- "eslint-plugin-tailwindcss": "^3.13.0",
63
- "prettier-plugin-astro": "^0.13.0",
64
- "svelte-eslint-parser": "^0.33.1"
61
+ "eslint-plugin-tailwindcss": "^3.17.0",
62
+ "prettier-plugin-astro": "^0.14.0",
63
+ "svelte-eslint-parser": "^0.36.0"
65
64
  },
66
65
  "peerDependenciesMeta": {
67
66
  "@unocss/eslint-plugin": {
@@ -91,9 +90,6 @@
91
90
  "prettier-plugin-astro": {
92
91
  "optional": true
93
92
  },
94
- "@next/eslint-plugin-next": {
95
- "optional": true
96
- },
97
93
  "eslint-plugin-tailwindcss": {
98
94
  "optional": true
99
95
  },
@@ -108,64 +104,63 @@
108
104
  "@antfu/install-pkg": "^0.3.3",
109
105
  "@clack/prompts": "^0.7.0",
110
106
  "@eslint-community/eslint-plugin-eslint-comments": "^4.3.0",
111
- "@stylistic/eslint-plugin": "^1.8.0",
112
- "@typescript-eslint/eslint-plugin": "^7.8.0",
113
- "@typescript-eslint/parser": "^7.8.0",
107
+ "@stylistic/eslint-plugin": "^2.1.0",
108
+ "@typescript-eslint/eslint-plugin": "^7.11.0",
109
+ "@typescript-eslint/parser": "^7.11.0",
114
110
  "eslint-config-flat-gitignore": "^0.1.5",
115
- "eslint-flat-config-utils": "^0.2.4",
111
+ "eslint-flat-config-utils": "^0.2.5",
116
112
  "eslint-merge-processors": "^0.1.0",
117
- "eslint-plugin-antfu": "^2.1.2",
118
- "eslint-plugin-import-x": "^0.5.0",
119
- "eslint-plugin-jsdoc": "^48.2.3",
120
- "eslint-plugin-jsonc": "^2.15.1",
113
+ "eslint-plugin-antfu": "^2.3.3",
114
+ "eslint-plugin-import-x": "^0.5.1",
115
+ "eslint-plugin-jsdoc": "^48.2.7",
116
+ "eslint-plugin-jsonc": "^2.16.0",
121
117
  "eslint-plugin-markdown": "^5.0.0",
122
- "eslint-plugin-n": "^17.4.0",
123
- "eslint-plugin-sort-keys": "^2.3.5",
118
+ "eslint-plugin-n": "^17.7.0",
119
+ "eslint-plugin-regexp": "^2.6.0",
124
120
  "eslint-plugin-toml": "^0.11.0",
125
- "eslint-plugin-unicorn": "^52.0.0",
126
- "eslint-plugin-unused-imports": "^3.2.0",
121
+ "eslint-plugin-unicorn": "^53.0.0",
122
+ "eslint-plugin-unused-imports": "^4.0.0",
127
123
  "eslint-plugin-vitest": "^0.5.4",
128
- "eslint-plugin-vue": "^9.25.0",
124
+ "eslint-plugin-vue": "^9.26.0",
129
125
  "eslint-plugin-yml": "^1.14.0",
130
126
  "eslint-processor-vue-blocks": "^0.1.2",
131
- "globals": "^15.1.0",
127
+ "globals": "^15.3.0",
132
128
  "jsonc-eslint-parser": "^2.4.0",
133
129
  "local-pkg": "^0.5.0",
134
130
  "parse-gitignore": "^2.0.0",
135
131
  "toml-eslint-parser": "^0.9.3",
136
- "vue-eslint-parser": "^9.4.2",
137
- "yaml-eslint-parser": "^1.2.2"
132
+ "vue-eslint-parser": "^9.4.3",
133
+ "yaml-eslint-parser": "^1.2.3"
138
134
  },
139
135
  "devDependencies": {
140
- "@antfu/eslint-plugin-prettier": "^5.0.1-1",
141
- "@eslint-react/eslint-plugin": "^1.5.10",
142
- "@eslint/config-inspector": "^0.4.8",
143
- "@next/eslint-plugin-next": "^14.2.3",
144
- "@stylistic/eslint-plugin-migrate": "^1.8.0",
136
+ "@eslint-react/eslint-plugin": "^1.5.14",
137
+ "@eslint/config-inspector": "^0.4.10",
138
+ "@stylistic/eslint-plugin-migrate": "^2.1.0",
145
139
  "@types/eslint": "^8.56.10",
146
140
  "@types/estree": "^1.0.5",
147
141
  "@types/node": "^20.12.7",
148
- "@typescript-eslint/rule-tester": "^7.8.0",
149
- "@unocss/eslint-plugin": "^0.59.4",
142
+ "@typescript-eslint/rule-tester": "^7.11.0",
143
+ "@unocss/eslint-plugin": "^0.60.0",
150
144
  "astro-eslint-parser": "^1.0.2",
151
- "bundle-require": "^4.1.0",
152
- "eslint": "^9.2.0",
153
- "eslint-plugin-astro": "^1.1.2",
145
+ "eslint": "npm:eslint-ts-patch@9.2.0-6",
146
+ "eslint-plugin-astro": "^1.2.0",
154
147
  "eslint-plugin-format": "^0.1.1",
155
148
  "eslint-plugin-react-hooks": "^4.6.2",
156
- "eslint-plugin-react-refresh": "^0.4.6",
149
+ "eslint-plugin-react-refresh": "^0.4.7",
157
150
  "eslint-plugin-solid": "^0.14.0",
158
- "eslint-plugin-svelte": "2.38.0",
159
- "eslint-plugin-tailwindcss": "^3.15.1",
151
+ "eslint-plugin-svelte": "^2.39.0",
152
+ "eslint-plugin-tailwindcss": "^3.17.0",
160
153
  "eslint-typegen": "^0.2.4",
161
- "lint-staged": "^15.2.2",
162
- "prettier-plugin-astro": "^0.13.0",
154
+ "lint-staged": "^15.2.5",
155
+ "prettier-plugin-astro": "^0.14.0",
163
156
  "simple-git-hooks": "^2.11.1",
164
- "svelte": "^4.2.15",
165
- "svelte-eslint-parser": "^0.35.0",
157
+ "svelte": "^4.2.17",
158
+ "svelte-eslint-parser": "^0.36.0",
166
159
  "tsup": "^8.0.2",
160
+ "tsx": "^4.11.0",
167
161
  "typescript": "^5.4.5",
168
- "vitest": "^1.6.0"
162
+ "vitest": "^1.6.0",
163
+ "vue": "^3.4.27"
169
164
  },
170
165
  "simple-git-hooks": {
171
166
  "pre-commit": "pnpm lint-staged"