@ntnyq/eslint-config 5.9.0 → 6.0.0-beta.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 (4) hide show
  1. package/README.md +47 -37
  2. package/dist/index.d.mts +7621 -6946
  3. package/dist/index.mjs +106 -23
  4. package/package.json +35 -33
package/dist/index.mjs CHANGED
@@ -17,6 +17,7 @@ import pluginAntfu from "eslint-plugin-antfu";
17
17
  import pluginJsdoc from "eslint-plugin-jsdoc";
18
18
  import pluginJsonc from "eslint-plugin-jsonc";
19
19
  import pluginNtnyq from "eslint-plugin-ntnyq";
20
+ import pluginOxfmt from "eslint-plugin-oxfmt";
20
21
  import pluginPinia from "eslint-plugin-pinia";
21
22
  import pluginDepend from "eslint-plugin-depend";
22
23
  import pluginUnoCSS from "@unocss/eslint-plugin";
@@ -28,7 +29,7 @@ import pluginDeMorgan from "eslint-plugin-de-morgan";
28
29
  import pluginNoOnlyTests from "eslint-plugin-no-only-tests";
29
30
  import pluginGitHubAction from "eslint-plugin-github-action";
30
31
  import pluginPerfectionist from "eslint-plugin-perfectionist";
31
- import pluginComments from "@eslint-community/eslint-plugin-eslint-comments";
32
+ import * as pluginESLintComments from "@eslint-community/eslint-plugin-eslint-comments";
32
33
  import processorVueBlocks from "eslint-processor-vue-blocks";
33
34
  import { resolve } from "node:path";
34
35
  import process from "node:process";
@@ -127,6 +128,7 @@ const GLOB_EXCLUDE = [
127
128
  "**/auto-import?(s).d.ts",
128
129
  "**/components.d.ts",
129
130
  "**/typed-router.d.ts",
131
+ "**/routes.d.ts",
130
132
  "**/uni-pages.d.ts",
131
133
  "**/coverage",
132
134
  "**/fixtures",
@@ -297,6 +299,7 @@ const unCategorizedRules = {
297
299
  "vue/no-duplicate-class-names": "error",
298
300
  "vue/no-empty-component-block": "error",
299
301
  "vue/no-irregular-whitespace": "error",
302
+ "vue/no-literals-in-template": "error",
300
303
  "vue/no-multiple-objects-in-class": "error",
301
304
  "vue/no-negated-v-if-condition": "error",
302
305
  "vue/no-ref-object-reactivity-loss": "error",
@@ -534,6 +537,11 @@ const hasTypeScript = () => isPackageExists("typescript");
534
537
  const hasShadcnVue = () => (isPackageExists("radix-vue") || isPackageExists("reka-ui")) && isPackageExists("class-variance-authority") && isPackageExists("clsx");
535
538
  const hasUnoCSS = () => isPackageExists("unocss") || isPackageExists("@unocss/postcss") || isPackageExists("@unocss/webpack") || isPackageExists("@unocss/nuxt");
536
539
  const hasVue = () => isPackageExists("vue") || isPackageExists("nuxt") || isPackageExists("vitepress") || isPackageExists("vuepress") || isPackageExists("@slidev/cli") || isPackageExists("vue", { paths: [resolve(process.cwd(), "playground"), resolve(process.cwd(), "docs")] });
540
+ /**
541
+ * Formatters
542
+ */
543
+ const hasOxfmt = () => isPackageExists("oxfmt");
544
+ const hasPrettier = () => isPackageExists("prettier");
537
545
 
538
546
  //#endregion
539
547
  //#region src/utils/resolveSubOptions.ts
@@ -1513,6 +1521,30 @@ const configNtnyq = (options = {}) => [{
1513
1521
  }
1514
1522
  }];
1515
1523
 
1524
+ //#endregion
1525
+ //#region src/configs/oxfmt.ts
1526
+ /**
1527
+ * Config for using oxfmt
1528
+ *
1529
+ * @see {@link https://github.com/ntnyq/eslint-plugin-oxfmt}
1530
+ *
1531
+ * @returns ESLint configs
1532
+ */
1533
+ const configOxfmt = (options = {}) => {
1534
+ const { files = [GLOB_SRC], ignores = [] } = options;
1535
+ return [{
1536
+ name: "ntnyq/oxfmt",
1537
+ files,
1538
+ ignores,
1539
+ plugins: { oxfmt: pluginOxfmt },
1540
+ languageOptions: { parser: parserPlain },
1541
+ rules: {
1542
+ "oxfmt/oxfmt": "error",
1543
+ ...options.overrides
1544
+ }
1545
+ }];
1546
+ };
1547
+
1516
1548
  //#endregion
1517
1549
  //#region src/configs/pinia.ts
1518
1550
  /**
@@ -1698,14 +1730,16 @@ const sortIntersectionTypesOrUnionTypesGroups = [
1698
1730
  "operator",
1699
1731
  "tuple",
1700
1732
  "union",
1701
- "nullish"
1733
+ "nullish",
1734
+ "unknown"
1702
1735
  ];
1703
1736
  /**
1704
1737
  * Shared option `groups` for rule `sort-imports`
1705
1738
  *
1706
1739
  * @see {@link https://perfectionist.dev/rules/sort-imports}
1740
+ * TODO: support v5 added selectors and modifiers
1707
1741
  */
1708
- const sortImportsTypes = [
1742
+ const sortImportsGroups = [
1709
1743
  "side-effect-style",
1710
1744
  "value-style",
1711
1745
  "value-builtin",
@@ -1730,6 +1764,7 @@ const sortImportsTypes = [
1730
1764
  * Shared option `groups` for rule `sort-exports`
1731
1765
  *
1732
1766
  * @see {@link https://perfectionist.dev/rules/sort-exports}
1767
+ * TODO: support v5 added selectors and modifiers
1733
1768
  */
1734
1769
  const sortExportsGroups = [
1735
1770
  "value-export",
@@ -1757,22 +1792,58 @@ const sortNamedImportsGroups = [
1757
1792
  "unknown"
1758
1793
  ];
1759
1794
  /**
1760
- * Shared option `groups` for rule `sort-classes`
1795
+ * Shared option `groups` for rule `sort-import-attributes`
1761
1796
  *
1762
- * // TODO: implement this
1797
+ * @see {@link https://perfectionist.dev/rules/sort-import-attributes}
1798
+ */
1799
+ const sortImportAttributesGroups = ["unknown"];
1800
+ /**
1801
+ * Shared option `groups` for rule `sort-export-attributes`
1802
+ *
1803
+ * @see {@link https://perfectionist.dev/rules/sort-export-attributes}
1804
+ */
1805
+ const sortExportAttributesGroups = ["unknown"];
1806
+ /**
1807
+ * Shared option `groups` for rule `sort-classes`
1763
1808
  *
1764
1809
  * @see {@link https://perfectionist.dev/rules/sort-classes}
1765
1810
  */
1766
- const sortClassesGroups = ["unknown"];
1811
+ const sortClassesGroups = [
1812
+ ["static-property", "static-accessor-property"],
1813
+ ["static-get-method", "static-set-method"],
1814
+ ["protected-static-property", "protected-static-accessor-property"],
1815
+ ["protected-static-get-method", "protected-static-set-method"],
1816
+ ["private-static-property", "private-static-accessor-property"],
1817
+ ["private-static-get-method", "private-static-set-method"],
1818
+ "static-block",
1819
+ ["property", "accessor-property"],
1820
+ ["get-method", "set-method"],
1821
+ ["protected-property", "protected-accessor-property"],
1822
+ ["protected-get-method", "protected-set-method"],
1823
+ ["private-property", "private-accessor-property"],
1824
+ ["private-get-method", "private-set-method"],
1825
+ "constructor",
1826
+ ["static-method", "static-function-property"],
1827
+ ["protected-static-method", "protected-static-function-property"],
1828
+ ["private-static-method", "private-static-function-property"],
1829
+ ["method", "function-property"],
1830
+ ["protected-method", "protected-function-property"],
1831
+ ["private-method", "private-function-property"],
1832
+ "unknown",
1833
+ "index-signature"
1834
+ ];
1767
1835
  /**
1768
1836
  * Shared constants about eslint-plugin-perfectionist
1837
+ *
1769
1838
  */
1770
1839
  const PERFECTIONIST = Object.freeze({
1771
1840
  partialRuleOptions,
1772
1841
  pluginSettings,
1773
1842
  sortClassesGroups,
1843
+ sortExportAttributesGroups,
1774
1844
  sortExportsGroups,
1775
- sortImportsTypes,
1845
+ sortImportAttributesGroups,
1846
+ sortImportsGroups,
1776
1847
  sortInterfacesOrObjectTypesGroups,
1777
1848
  sortIntersectionTypesOrUnionTypesGroups,
1778
1849
  sortNamedExportsGroups,
@@ -1998,7 +2069,7 @@ const commands = [regexper];
1998
2069
  //#endregion
1999
2070
  //#region src/configs/command.ts
2000
2071
  /**
2001
- * Config for useing comments as codemod
2072
+ * Config for using comments as codemod
2002
2073
  *
2003
2074
  * @see {@link https://github.com/antfu/eslint-plugin-command}
2004
2075
  *
@@ -2161,7 +2232,7 @@ const configUnicorn = (options = {}) => {
2161
2232
  "unicorn/prefer-type-error": "error",
2162
2233
  "unicorn/throw-new-error": "error",
2163
2234
  "unicorn/no-zero-fractions": "error",
2164
- "unicorn/number-literal-case": "error",
2235
+ "unicorn/number-literal-case": ["error", { hexadecimalValue: "lowercase" }],
2165
2236
  "unicorn/prefer-number-properties": "error",
2166
2237
  "unicorn/prefer-bigint-literals": "error",
2167
2238
  "unicorn/better-regex": "off",
@@ -2948,14 +3019,22 @@ const configPerfectionist = (options = {}) => {
2948
3019
  partitionByComment
2949
3020
  };
2950
3021
  const commonRules = {
3022
+ "perfectionist/sort-export-attributes": ["error", {
3023
+ ...sharedOptionsWithNewlinesBetween,
3024
+ groups: PERFECTIONIST.sortExportAttributesGroups
3025
+ }],
2951
3026
  "perfectionist/sort-exports": ["error", {
2952
3027
  ...sharedOptionsWithNewlinesBetween,
2953
3028
  groups: PERFECTIONIST.sortExportsGroups,
2954
3029
  type: "line-length"
2955
3030
  }],
3031
+ "perfectionist/sort-import-attributes": ["error", {
3032
+ ...sharedOptionsWithNewlinesBetween,
3033
+ groups: PERFECTIONIST.sortImportAttributesGroups
3034
+ }],
2956
3035
  "perfectionist/sort-imports": ["error", {
2957
3036
  ...sharedOptionsWithNewlinesBetween,
2958
- groups: PERFECTIONIST.sortImportsTypes,
3037
+ groups: PERFECTIONIST.sortImportsGroups,
2959
3038
  internalPattern: [
2960
3039
  "^~/.+",
2961
3040
  "^@/.+",
@@ -3020,10 +3099,13 @@ const configPerfectionist = (options = {}) => {
3020
3099
  "perfectionist/sort-switch-case": "error",
3021
3100
  "perfectionist/sort-variable-declarations": ["error", { partitionByComment }]
3022
3101
  };
3102
+ const sharedConfig = {
3103
+ plugins: { perfectionist: pluginPerfectionist },
3104
+ settings: { perfectionist: PERFECTIONIST.pluginSettings }
3105
+ };
3023
3106
  const configs = [{
3024
3107
  name: options.all ? "ntnyq/perfectionist/all" : "ntnyq/perfectionist/common",
3025
- plugins: { perfectionist: pluginPerfectionist },
3026
- settings: { perfectionist: PERFECTIONIST.pluginSettings },
3108
+ ...sharedConfig,
3027
3109
  rules: {
3028
3110
  ...commonRules,
3029
3111
  ...options.all ? {
@@ -3040,8 +3122,7 @@ const configPerfectionist = (options = {}) => {
3040
3122
  if (enableSortEnums) configs.push({
3041
3123
  name: "ntnyq/perfectionist/enums",
3042
3124
  files: filesEnums,
3043
- plugins: { perfectionist: pluginPerfectionist },
3044
- settings: { perfectionist: PERFECTIONIST.pluginSettings },
3125
+ ...sharedConfig,
3045
3126
  rules: {
3046
3127
  ...sharedRules$1,
3047
3128
  ...sortEnumsRules,
@@ -3051,8 +3132,7 @@ const configPerfectionist = (options = {}) => {
3051
3132
  if (enableSortTypes) configs.push({
3052
3133
  name: "ntnyq/perfectionist/types",
3053
3134
  files: filesTypes,
3054
- plugins: { perfectionist: pluginPerfectionist },
3055
- settings: { perfectionist: PERFECTIONIST.pluginSettings },
3135
+ ...sharedConfig,
3056
3136
  rules: {
3057
3137
  ...sharedRules$1,
3058
3138
  ...sortTypesRules,
@@ -3062,8 +3142,7 @@ const configPerfectionist = (options = {}) => {
3062
3142
  if (enableSortConstants) configs.push({
3063
3143
  name: "ntnyq/perfectionist/constants",
3064
3144
  files: filesConstants,
3065
- plugins: { perfectionist: pluginPerfectionist },
3066
- settings: { perfectionist: PERFECTIONIST.pluginSettings },
3145
+ ...sharedConfig,
3067
3146
  rules: {
3068
3147
  ...sharedRules$1,
3069
3148
  ...sortConstantsRules,
@@ -3119,9 +3198,9 @@ const configUnusedImports = async (options = {}) => {
3119
3198
  */
3120
3199
  const configESLintComments = (options = {}) => [{
3121
3200
  name: "ntnyq/eslint-comments",
3122
- plugins: { "@eslint-community/eslint-comments": pluginComments },
3201
+ plugins: { "@eslint-community/eslint-comments": pluginESLintComments },
3123
3202
  rules: {
3124
- ...pluginComments.configs.recommended.rules,
3203
+ ...pluginESLintComments.configs.recommended.rules,
3125
3204
  "@eslint-community/eslint-comments/disable-enable-pair": ["error", { allowWholeFile: true }],
3126
3205
  ...options.overrides
3127
3206
  }
@@ -3136,7 +3215,7 @@ const configESLintComments = (options = {}) => [{
3136
3215
  * Config factory
3137
3216
  */
3138
3217
  function defineESLintConfig(options = {}, ...userConfigs) {
3139
- const { shareable = {}, ignores: userIgnores = [], vue: enableVue = hasVue(), pinia: enablePinia = hasPinia(), test: enableTest = hasVitest(), unocss: enableUnoCSS = hasUnoCSS(), typescript: enableTypeScript = hasTypeScript(), yml: enableYML = true, sort: enableSort = true, toml: enableTOML = true, jsonc: enableJSONC = true, antfu: enableAntfu = true, ntnyq: enableNtnyq = true, depend: enableDepend = true, regexp: enableRegexp = true, unicorn: enableUnicorn = true, deMorgan: enableDeMorgan = true, prettier: enablePrettier = true, markdown: enableMarkdown = true, gitignore: enableGitIgnore = true, jsdoc: enableJsdoc = true, importX: enableImportX = true, specials: enableSpecials = true, githubAction: enableGitHubAction = true, perfectionist: enablePerfectionist = true, pnpm: enablePnpm = false, svgo: enableSVGO = false, html: enableHTML = false, astro: enableAstro = false, svelte: enableSvelte = false, eslintPlugin: enableESLintPlugin = false } = options;
3218
+ const { shareable = {}, ignores: userIgnores = [], vue: enableVue = hasVue(), pinia: enablePinia = hasPinia(), test: enableTest = hasVitest(), unocss: enableUnoCSS = hasUnoCSS(), typescript: enableTypeScript = hasTypeScript(), oxfmt: enableOxfmt = hasOxfmt(), prettier: enablePrettier = hasPrettier(), yml: enableYML = true, sort: enableSort = true, toml: enableTOML = true, jsonc: enableJSONC = true, antfu: enableAntfu = true, ntnyq: enableNtnyq = true, depend: enableDepend = true, regexp: enableRegexp = true, unicorn: enableUnicorn = true, deMorgan: enableDeMorgan = true, markdown: enableMarkdown = true, gitignore: enableGitIgnore = true, jsdoc: enableJsdoc = true, importX: enableImportX = true, specials: enableSpecials = true, githubAction: enableGitHubAction = true, perfectionist: enablePerfectionist = true, pnpm: enablePnpm = false, svgo: enableSVGO = false, html: enableHTML = false, astro: enableAstro = false, svelte: enableSvelte = false, eslintPlugin: enableESLintPlugin = false } = options;
3140
3219
  const configs = [];
3141
3220
  const { ecmaVersion = "latest", extraFileExtensions = [] } = shareable;
3142
3221
  if (enableVue) extraFileExtensions.push(".vue");
@@ -3237,12 +3316,16 @@ function defineESLintConfig(options = {}, ...userConfigs) {
3237
3316
  overrides: getOverrides(options, "html")
3238
3317
  }));
3239
3318
  if (enableSpecials) configs.push(configSpecials(resolveSubOptions(options, "specials")));
3319
+ const oxfmtConfigs = enableOxfmt ? configOxfmt({
3320
+ ...resolveSubOptions(options, "oxfmt"),
3321
+ overrides: getOverrides(options, "oxfmt")
3322
+ }) : [];
3240
3323
  const prettierConfigs = enablePrettier ? configPrettier({
3241
3324
  ...resolveSubOptions(options, "prettier"),
3242
3325
  overrides: getOverrides(options, "prettier")
3243
3326
  }) : [];
3244
- return new FlatConfigComposer(...configs, ...userConfigs, ...prettierConfigs);
3327
+ return new FlatConfigComposer(...configs, ...userConfigs, ...oxfmtConfigs, ...prettierConfigs);
3245
3328
  }
3246
3329
 
3247
3330
  //#endregion
3248
- export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_DIST, GLOB_DTS, GLOB_EXCLUDE, GLOB_GITHUB_ACTION, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSON_SCHEMA, GLOB_JSX, GLOB_JSX_ONLY, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_NESTED, GLOB_NODE_MODULES, GLOB_PACKAGE_JSON, GLOB_PINIA_STORE, GLOB_PNPM_WORKSPACE_YAML, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TEST, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG_JSON, GLOB_TSX, GLOB_TSX_ONLY, GLOB_TYPES, GLOB_TYPE_TEST, GLOB_VUE, GLOB_YAML, PERFECTIONIST, PRETTIER_DEFAULT_OPTIONS, configAntfu, configAstro, configCommand, configDeMorgan, configDepend, configESLintComments, configESLintPlugin, configFormat, configGitHubAction, configGitIgnore, configHtml, configIgnores, configImportX, configJSX, configJavaScript, configJsdoc, configJsonc, configMarkdown, configNode, configNtnyq, configPerfectionist, configPinia, configPnpm, configPrettier, configRegexp, configSVGO, configSort, configSpecials, configSvelte, configTest, configToml, configTypeScript, configUnicorn, configUnoCSS, configUnusedImports, configVue, configYml, configsTypeScript, defineESLintConfig, ensurePackages, getOverrides, hasPinia, hasShadcnVue, hasTypeScript, hasUnoCSS, hasVitest, hasVue, interopDefault, isInGitHooksOrRunBySpecifyPackages, mergePrettierOptions, mergeProcessors, parserJsonc, parserPlain, parserToml, parserTypeScript, parserVue, parserYaml, pluginAntfu, pluginComments, pluginDeMorgan, pluginDepend, pluginGitHubAction, pluginImportX, pluginJsdoc, pluginJsonc, pluginMarkdown, pluginNoOnlyTests, pluginNode, pluginNtnyq, pluginPerfectionist, pluginPinia, pluginPrettier, pluginRegexp, pluginSvgo, pluginToml, pluginTypeScript, pluginUnicorn, pluginUnoCSS, pluginVitest, pluginVue, pluginYml, processorPassThrough, processorVueBlocks, resolveSubOptions };
3331
+ export { GLOB_ALL_SRC, GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_DIST, GLOB_DTS, GLOB_EXCLUDE, GLOB_GITHUB_ACTION, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSON_SCHEMA, GLOB_JSX, GLOB_JSX_ONLY, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_NESTED, GLOB_NODE_MODULES, GLOB_PACKAGE_JSON, GLOB_PINIA_STORE, GLOB_PNPM_WORKSPACE_YAML, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVELTE, GLOB_SVG, GLOB_TEST, GLOB_TOML, GLOB_TS, GLOB_TSCONFIG_JSON, GLOB_TSX, GLOB_TSX_ONLY, GLOB_TYPES, GLOB_TYPE_TEST, GLOB_VUE, GLOB_YAML, PERFECTIONIST, PRETTIER_DEFAULT_OPTIONS, configAntfu, configAstro, configCommand, configDeMorgan, configDepend, configESLintComments, configESLintPlugin, configFormat, configGitHubAction, configGitIgnore, configHtml, configIgnores, configImportX, configJSX, configJavaScript, configJsdoc, configJsonc, configMarkdown, configNode, configNtnyq, configOxfmt, configPerfectionist, configPinia, configPnpm, configPrettier, configRegexp, configSVGO, configSort, configSpecials, configSvelte, configTest, configToml, configTypeScript, configUnicorn, configUnoCSS, configUnusedImports, configVue, configYml, configsTypeScript, defineESLintConfig, ensurePackages, getOverrides, hasOxfmt, hasPinia, hasPrettier, hasShadcnVue, hasTypeScript, hasUnoCSS, hasVitest, hasVue, interopDefault, isInGitHooksOrRunBySpecifyPackages, mergePrettierOptions, mergeProcessors, parserJsonc, parserPlain, parserToml, parserTypeScript, parserVue, parserYaml, pluginAntfu, pluginDeMorgan, pluginDepend, pluginESLintComments, pluginGitHubAction, pluginImportX, pluginJsdoc, pluginJsonc, pluginMarkdown, pluginNoOnlyTests, pluginNode, pluginNtnyq, pluginOxfmt, pluginPerfectionist, pluginPinia, pluginPrettier, pluginRegexp, pluginSvgo, pluginToml, pluginTypeScript, pluginUnicorn, pluginUnoCSS, pluginVitest, pluginVue, pluginYml, processorPassThrough, processorVueBlocks, resolveSubOptions };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ntnyq/eslint-config",
3
3
  "type": "module",
4
- "version": "5.9.0",
4
+ "version": "6.0.0-beta.1",
5
5
  "description": "An opinionated ESLint config preset of ntnyq",
6
6
  "keywords": [
7
7
  "eslint",
@@ -33,20 +33,20 @@
33
33
  ],
34
34
  "publishConfig": {
35
35
  "access": "public",
36
- "tag": "latest"
36
+ "tag": "next"
37
37
  },
38
38
  "peerDependencies": {
39
- "@html-eslint/eslint-plugin": "^0.50.0",
40
- "@html-eslint/parser": "^0.50.0",
39
+ "@html-eslint/eslint-plugin": "^0.52.0",
40
+ "@html-eslint/parser": "^0.52.0",
41
41
  "astro-eslint-parser": "^1.2.2",
42
- "eslint": "^9.20.0",
42
+ "eslint": "^9.38.0",
43
43
  "eslint-plugin-astro": "^1.5.0",
44
- "eslint-plugin-eslint-plugin": "^7.2.0",
45
- "eslint-plugin-format": "^1.1.0",
46
- "eslint-plugin-pnpm": "^1.4.1",
44
+ "eslint-plugin-eslint-plugin": "^7.3.0",
45
+ "eslint-plugin-format": "^1.2.0",
46
+ "eslint-plugin-pnpm": "^1.4.3",
47
47
  "eslint-plugin-svelte": "^3.13.1",
48
48
  "eslint-plugin-unused-imports": "^4.3.0",
49
- "svelte": "^5.45.6",
49
+ "svelte": "^5.46.1",
50
50
  "svelte-eslint-parser": "^1.4.1"
51
51
  },
52
52
  "peerDependenciesMeta": {
@@ -87,52 +87,53 @@
87
87
  "dependencies": {
88
88
  "@antfu/install-pkg": "^1.1.0",
89
89
  "@clack/prompts": "^0.11.0",
90
- "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
90
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.6.0",
91
91
  "@eslint/js": "^9.39.2",
92
92
  "@eslint/markdown": "^7.5.1",
93
- "@unocss/eslint-plugin": "^66.5.12",
94
- "@vitest/eslint-plugin": "^1.6.4",
93
+ "@unocss/eslint-plugin": "^66.6.0",
94
+ "@vitest/eslint-plugin": "^1.6.6",
95
95
  "eslint-config-flat-gitignore": "^2.1.0",
96
96
  "eslint-flat-config-utils": "^2.1.4",
97
97
  "eslint-import-resolver-typescript": "^4.4.4",
98
98
  "eslint-merge-processors": "^2.0.0",
99
99
  "eslint-parser-plain": "^0.1.1",
100
- "eslint-plugin-antfu": "^3.1.1",
100
+ "eslint-plugin-antfu": "^3.1.3",
101
101
  "eslint-plugin-command": "^3.4.0",
102
102
  "eslint-plugin-de-morgan": "^2.0.0",
103
103
  "eslint-plugin-depend": "^1.4.0",
104
104
  "eslint-plugin-github-action": "^0.1.0",
105
105
  "eslint-plugin-import-x": "^4.16.1",
106
- "eslint-plugin-jsdoc": "^61.5.0",
106
+ "eslint-plugin-jsdoc": "^62.2.0",
107
107
  "eslint-plugin-jsonc": "^2.21.0",
108
- "eslint-plugin-n": "^17.23.1",
108
+ "eslint-plugin-n": "^17.23.2",
109
109
  "eslint-plugin-no-only-tests": "^3.3.0",
110
110
  "eslint-plugin-ntnyq": "^0.12.0",
111
- "eslint-plugin-perfectionist": "^4.15.1",
111
+ "eslint-plugin-oxfmt": "^0.0.9",
112
+ "eslint-plugin-perfectionist": "^5.3.1",
112
113
  "eslint-plugin-pinia": "^0.4.2",
113
- "eslint-plugin-prettier": "^5.5.4",
114
+ "eslint-plugin-prettier": "^5.5.5",
114
115
  "eslint-plugin-regexp": "^2.10.0",
115
116
  "eslint-plugin-svgo": "^0.11.3",
116
- "eslint-plugin-toml": "^0.12.0",
117
+ "eslint-plugin-toml": "^1.0.3",
117
118
  "eslint-plugin-unicorn": "^62.0.0",
118
- "eslint-plugin-vue": "^10.6.2",
119
- "eslint-plugin-yml": "^1.19.1",
119
+ "eslint-plugin-vue": "^10.7.0",
120
+ "eslint-plugin-yml": "^3.0.0",
120
121
  "eslint-processor-vue-blocks": "^2.0.0",
121
- "globals": "^16.5.0",
122
+ "globals": "^17.0.0",
122
123
  "jsonc-eslint-parser": "^2.4.2",
123
124
  "local-pkg": "^1.1.2",
124
- "toml-eslint-parser": "^0.10.1",
125
- "typescript-eslint": "^8.51.0",
125
+ "toml-eslint-parser": "^1.0.3",
126
+ "typescript-eslint": "^8.53.1",
126
127
  "vue-eslint-parser": "^10.2.0",
127
- "yaml-eslint-parser": "^1.3.2"
128
+ "yaml-eslint-parser": "^2.0.0"
128
129
  },
129
130
  "devDependencies": {
130
131
  "@ntnyq/prettier-config": "^3.0.1",
131
- "@types/node": "^25.0.3",
132
- "@typescript-eslint/types": "^8.51.0",
133
- "@typescript-eslint/utils": "^8.51.0",
134
- "@typescript/native-preview": "^7.0.0-dev.20251230.1",
135
- "bumpp": "^10.3.2",
132
+ "@types/node": "^25.0.9",
133
+ "@typescript-eslint/types": "^8.53.1",
134
+ "@typescript-eslint/utils": "^8.53.1",
135
+ "@typescript/native-preview": "^7.0.0-dev.20260119.1",
136
+ "bumpp": "^10.4.0",
136
137
  "consola": "^3.4.2",
137
138
  "eslint": "^9.39.2",
138
139
  "eslint-typegen": "^2.3.0",
@@ -140,16 +141,17 @@
140
141
  "jiti": "^2.6.1",
141
142
  "nano-staged": "^0.9.0",
142
143
  "npm-run-all2": "^8.0.4",
143
- "prettier": "^3.7.4",
144
+ "oxfmt": "^0.26.0",
145
+ "prettier": "^3.8.0",
144
146
  "tinyglobby": "^0.2.15",
145
- "tsdown": "^0.18.4",
147
+ "tsdown": "^0.20.0-beta.3",
146
148
  "tsx": "^4.21.0",
147
149
  "typescript": "^5.9.3",
148
150
  "uncase": "^0.2.0",
149
- "vitest": "^4.0.16"
151
+ "vitest": "^4.0.17"
150
152
  },
151
153
  "engines": {
152
- "node": "^20.11.0 || >=21.1.0"
154
+ "node": "^20.19.0 || ^22.13.0 || >=24"
153
155
  },
154
156
  "nano-staged": {
155
157
  "*.{js,ts,mjs,cjs,md,vue,svg,yml,yaml,toml,json}": "eslint --fix",