@ghettoddos/eslint-config 1.8.3 → 2.0.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.
package/README.md CHANGED
@@ -293,13 +293,14 @@ Check out the [configs](https://github.com/ghettoDdOS/eslint-config/blob/master/
293
293
 
294
294
  Since flat config requires us to explicitly provide the plugin names (instead of the mandatory convention from npm package name), we renamed some plugins to make the overall scope more consistent and easier to write.
295
295
 
296
- | New Prefix | Original Prefix | Source Plugin |
297
- | ---------- | ---------------------- | ------------------------------------------------------------------------------------------ |
298
- | `import/*` | `import-lite/*` | [eslint-plugin-import-lite](https://github.com/9romise/eslint-plugin-import-lite) |
299
- | `node/*` | `n/*` | [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) |
300
- | `yaml/*` | `yml/*` | [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) |
301
- | `ts/*` | `@typescript-eslint/*` | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) |
302
- | `style/*` | `@stylistic/*` | [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic) |
296
+ | New Prefix | Original Prefix | Source Plugin |
297
+ | ---------- | ---------------------- | ----------------------------------------------------------------------------------------------------- |
298
+ | `import/*` | `import-lite/*` | [eslint-plugin-import-lite](https://github.com/9romise/eslint-plugin-import-lite) |
299
+ | `node/*` | `n/*` | [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) |
300
+ | `yaml/*` | `yml/*` | [eslint-plugin-yml](https://github.com/ota-meshi/eslint-plugin-yml) |
301
+ | `ts/*` | `@typescript-eslint/*` | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) |
302
+ | `style/*` | `@stylistic/*` | [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic) |
303
+ | `next/*` | `@next/next` | [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/canary/packages/eslint-plugin-next) |
303
304
 
304
305
  When you want to override rules, or disable them inline, you need to update to the new prefix:
305
306
 
package/dist/index.d.ts CHANGED
@@ -375,6 +375,16 @@ interface RuleOptions {
375
375
  * @see https://eslint-community.github.io/eslint-plugin-eslint-comments/rules/require-description.html
376
376
  */
377
377
  'eslint-comments/require-description'?: Linter.RuleEntry<EslintCommentsRequireDescription>;
378
+ /**
379
+ * Prevents process.env from being accessed dynamically
380
+ * @see https://github.com/expo/expo/blob/main/packages/eslint-plugin-expo/docs/rules/no-dynamic-env-var.md
381
+ */
382
+ 'expo/no-dynamic-env-var'?: Linter.RuleEntry<[]>;
383
+ /**
384
+ * Disallow desctructuring of environment variables
385
+ * @see https://github.com/expo/expo/blob/main/packages/eslint-plugin-expo/docs/rules/no-env-var-destructuring.md
386
+ */
387
+ 'expo/no-env-var-destructuring'?: Linter.RuleEntry<[]>;
378
388
  /**
379
389
  * Enforce `for` loop update clause moving the counter in the right direction
380
390
  * @see https://eslint.org/docs/latest/rules/for-direction
@@ -1013,7 +1023,7 @@ interface RuleOptions {
1013
1023
  * Enforce heading levels increment by one
1014
1024
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/heading-increment.md
1015
1025
  */
1016
- 'markdown/heading-increment'?: Linter.RuleEntry<[]>;
1026
+ 'markdown/heading-increment'?: Linter.RuleEntry<MarkdownHeadingIncrement>;
1017
1027
  /**
1018
1028
  * Disallow bare URLs
1019
1029
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-bare-urls.md
@@ -1058,7 +1068,7 @@ interface RuleOptions {
1058
1068
  * Disallow headings without a space after the hash characters
1059
1069
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-missing-atx-heading-space.md
1060
1070
  */
1061
- 'markdown/no-missing-atx-heading-space'?: Linter.RuleEntry<[]>;
1071
+ 'markdown/no-missing-atx-heading-space'?: Linter.RuleEntry<MarkdownNoMissingAtxHeadingSpace>;
1062
1072
  /**
1063
1073
  * Disallow missing label references
1064
1074
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-missing-label-refs.md
@@ -1079,6 +1089,11 @@ interface RuleOptions {
1079
1089
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-reversed-media-syntax.md
1080
1090
  */
1081
1091
  'markdown/no-reversed-media-syntax'?: Linter.RuleEntry<[]>;
1092
+ /**
1093
+ * Disallow spaces around emphasis markers
1094
+ * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-space-in-emphasis.md
1095
+ */
1096
+ 'markdown/no-space-in-emphasis'?: Linter.RuleEntry<MarkdownNoSpaceInEmphasis>;
1082
1097
  /**
1083
1098
  * Disallow unused definitions
1084
1099
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/no-unused-definitions.md
@@ -2468,7 +2483,7 @@ interface RuleOptions {
2468
2483
  */
2469
2484
  'pnpm/json-enforce-catalog'?: Linter.RuleEntry<PnpmJsonEnforceCatalog>;
2470
2485
  /**
2471
- * Prefer having pnpm settings in `pnpm-workspace.yaml` instead of `package.json`. This would requires pnpm v10.6+, see https://github.com/orgs/pnpm/discussions/9037.
2486
+ * Prefer having pnpm settings in `pnpm-workspace.yaml` instead of `package.json`. This requires pnpm v10.6+, see https://github.com/orgs/pnpm/discussions/9037.
2472
2487
  * @see https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm/src/rules/json/json-prefer-workspace-settings.test.ts
2473
2488
  */
2474
2489
  'pnpm/json-prefer-workspace-settings'?: Linter.RuleEntry<PnpmJsonPreferWorkspaceSettings>;
@@ -2478,7 +2493,7 @@ interface RuleOptions {
2478
2493
  */
2479
2494
  'pnpm/json-valid-catalog'?: Linter.RuleEntry<PnpmJsonValidCatalog>;
2480
2495
  /**
2481
- * Disallow unused catalogs in `pnpm-workspace.yaml`
2496
+ * Disallow duplicate catalog items in `pnpm-workspace.yaml`
2482
2497
  * @see https://github.com/antfu/pnpm-workspace-utils/tree/main/packages/eslint-plugin-pnpm/src/rules/yaml/yaml-no-duplicate-catalog-item.test.ts
2483
2498
  */
2484
2499
  'pnpm/yaml-no-duplicate-catalog-item'?: Linter.RuleEntry<PnpmYamlNoDuplicateCatalogItem>;
@@ -2991,7 +3006,7 @@ interface RuleOptions {
2991
3006
  'react/no-nested-components'?: Linter.RuleEntry<[]>;
2992
3007
  /**
2993
3008
  * Disallow nesting lazy component declarations inside other components.
2994
- * @see https://eslint-react.xyz/docs/rules/no-nested-component-definitions
3009
+ * @see https://eslint-react.xyz/docs/rules/no-nested-lazy-component-declarations
2995
3010
  */
2996
3011
  'react/no-nested-lazy-component-declarations'?: Linter.RuleEntry<[]>;
2997
3012
  /**
@@ -3796,8 +3811,9 @@ interface RuleOptions {
3796
3811
  */
3797
3812
  'style/jsx-pascal-case'?: Linter.RuleEntry<StyleJsxPascalCase>;
3798
3813
  /**
3799
- * Disallow multiple spaces between inline JSX props
3814
+ * Disallow multiple spaces between inline JSX props. Deprecated, use `no-multi-spaces` rule instead.
3800
3815
  * @see https://eslint.style/rules/jsx-props-no-multi-spaces
3816
+ * @deprecated
3801
3817
  */
3802
3818
  'style/jsx-props-no-multi-spaces'?: Linter.RuleEntry<[]>;
3803
3819
  /**
@@ -5593,7 +5609,7 @@ interface RuleOptions {
5593
5609
  * Order of UnoCSS utilities in class attribute
5594
5610
  * @see https://unocss.dev/integrations/eslint#rules
5595
5611
  */
5596
- 'unocss/order'?: Linter.RuleEntry<[]>;
5612
+ 'unocss/order'?: Linter.RuleEntry<UnocssOrder>;
5597
5613
  /**
5598
5614
  * Order of UnoCSS attributes
5599
5615
  * @see https://unocss.dev/integrations/eslint#rules
@@ -6159,6 +6175,16 @@ interface RuleOptions {
6159
6175
  * @see https://eslint.vuejs.org/rules/no-mutating-props.html
6160
6176
  */
6161
6177
  'vue/no-mutating-props'?: Linter.RuleEntry<VueNoMutatingProps>;
6178
+ /**
6179
+ * Disallow negated conditions in `<template>`
6180
+ * @see https://eslint.vuejs.org/rules/no-negated-condition.html
6181
+ */
6182
+ 'vue/no-negated-condition'?: Linter.RuleEntry<[]>;
6183
+ /**
6184
+ * disallow negated conditions in v-if/v-else
6185
+ * @see https://eslint.vuejs.org/rules/no-negated-v-if-condition.html
6186
+ */
6187
+ 'vue/no-negated-v-if-condition'?: Linter.RuleEntry<[]>;
6162
6188
  /**
6163
6189
  * disallow parsing errors in `<template>`
6164
6190
  * @see https://eslint.vuejs.org/rules/no-parsing-error.html
@@ -7024,6 +7050,7 @@ type AccessorPairs = [] | [{
7024
7050
  getWithoutSet?: boolean;
7025
7051
  setWithoutGet?: boolean;
7026
7052
  enforceForClassMembers?: boolean;
7053
+ enforceForTSTypes?: boolean;
7027
7054
  }];
7028
7055
  // ----- antfu/consistent-chaining -----
7029
7056
  type AntfuConsistentChaining = [] | [{
@@ -7272,7 +7299,9 @@ type GetterReturn = [] | [{
7272
7299
  allowImplicit?: boolean;
7273
7300
  }];
7274
7301
  // ----- grouped-accessor-pairs -----
7275
- type GroupedAccessorPairs = [] | [("anyOrder" | "getBeforeSet" | "setBeforeGet")];
7302
+ type GroupedAccessorPairs = [] | [("anyOrder" | "getBeforeSet" | "setBeforeGet")] | [("anyOrder" | "getBeforeSet" | "setBeforeGet"), {
7303
+ enforceForTSTypes?: boolean;
7304
+ }];
7276
7305
  // ----- handle-callback-err -----
7277
7306
  type HandleCallbackErr = [] | [string];
7278
7307
  // ----- id-blacklist -----
@@ -8233,6 +8262,10 @@ type LogicalAssignmentOperators = (([] | ["always"] | ["always", {
8233
8262
  type MarkdownFencedCodeLanguage = [] | [{
8234
8263
  required?: string[];
8235
8264
  }];
8265
+ // ----- markdown/heading-increment -----
8266
+ type MarkdownHeadingIncrement = [] | [{
8267
+ frontmatterTitle?: string;
8268
+ }];
8236
8269
  // ----- markdown/no-duplicate-definitions -----
8237
8270
  type MarkdownNoDuplicateDefinitions = [] | [{
8238
8271
  allowDefinitions?: string[];
@@ -8251,6 +8284,11 @@ type MarkdownNoEmptyDefinitions = [] | [{
8251
8284
  // ----- markdown/no-html -----
8252
8285
  type MarkdownNoHtml = [] | [{
8253
8286
  allowed?: string[];
8287
+ allowedIgnoreCase?: boolean;
8288
+ }];
8289
+ // ----- markdown/no-missing-atx-heading-space -----
8290
+ type MarkdownNoMissingAtxHeadingSpace = [] | [{
8291
+ checkClosedHeadings?: boolean;
8254
8292
  }];
8255
8293
  // ----- markdown/no-missing-link-fragments -----
8256
8294
  type MarkdownNoMissingLinkFragments = [] | [{
@@ -8261,6 +8299,10 @@ type MarkdownNoMissingLinkFragments = [] | [{
8261
8299
  type MarkdownNoMultipleH1 = [] | [{
8262
8300
  frontmatterTitle?: string;
8263
8301
  }];
8302
+ // ----- markdown/no-space-in-emphasis -----
8303
+ type MarkdownNoSpaceInEmphasis = [] | [{
8304
+ checkStrikethrough?: boolean;
8305
+ }];
8264
8306
  // ----- markdown/no-unused-definitions -----
8265
8307
  type MarkdownNoUnusedDefinitions = [] | [{
8266
8308
  allowDefinitions?: string[];
@@ -8617,10 +8659,17 @@ type NoRestrictedExports = [] | [({
8617
8659
  };
8618
8660
  })];
8619
8661
  // ----- no-restricted-globals -----
8620
- type NoRestrictedGlobals = (string | {
8662
+ type NoRestrictedGlobals = ((string | {
8621
8663
  name: string;
8622
8664
  message?: string;
8623
- })[];
8665
+ })[] | [] | [{
8666
+ globals: (string | {
8667
+ name: string;
8668
+ message?: string;
8669
+ })[];
8670
+ checkGlobalObject?: boolean;
8671
+ globalObjects?: string[];
8672
+ }]);
8624
8673
  // ----- no-restricted-imports -----
8625
8674
  type NoRestrictedImports = ((string | {
8626
8675
  name: string;
@@ -8749,6 +8798,7 @@ type NoUnusedVars = [] | [(("all" | "local") | {
8749
8798
  caughtErrorsIgnorePattern?: string;
8750
8799
  destructuredArrayIgnorePattern?: string;
8751
8800
  ignoreClassWithStaticInitBlock?: boolean;
8801
+ ignoreUsingDeclarations?: boolean;
8752
8802
  reportUsedIgnorePattern?: boolean;
8753
8803
  })];
8754
8804
  // ----- no-use-before-define -----
@@ -9114,6 +9164,8 @@ type OneVar = [] | [(("always" | "never" | "consecutive") | {
9114
9164
  var?: ("always" | "never" | "consecutive");
9115
9165
  let?: ("always" | "never" | "consecutive");
9116
9166
  const?: ("always" | "never" | "consecutive");
9167
+ using?: ("always" | "never" | "consecutive");
9168
+ awaitUsing?: ("always" | "never" | "consecutive");
9117
9169
  } | {
9118
9170
  initialized?: ("always" | "never" | "consecutive");
9119
9171
  uninitialized?: ("always" | "never" | "consecutive");
@@ -11436,6 +11488,7 @@ type StyleIndent = [] | [("tab" | number)] | [("tab" | number), {
11436
11488
  const?: (number | ("first" | "off"));
11437
11489
  using?: (number | ("first" | "off"));
11438
11490
  });
11491
+ assignmentOperator?: (number | "off");
11439
11492
  outerIIFEBody?: (number | "off");
11440
11493
  MemberExpression?: (number | "off");
11441
11494
  FunctionDeclaration?: {
@@ -11668,6 +11721,22 @@ type StyleKeywordSpacing = [] | [{
11668
11721
  before?: boolean;
11669
11722
  after?: boolean;
11670
11723
  };
11724
+ arguments?: {
11725
+ before?: boolean;
11726
+ after?: boolean;
11727
+ };
11728
+ as?: {
11729
+ before?: boolean;
11730
+ after?: boolean;
11731
+ };
11732
+ async?: {
11733
+ before?: boolean;
11734
+ after?: boolean;
11735
+ };
11736
+ await?: {
11737
+ before?: boolean;
11738
+ after?: boolean;
11739
+ };
11671
11740
  boolean?: {
11672
11741
  before?: boolean;
11673
11742
  after?: boolean;
@@ -11732,6 +11801,10 @@ type StyleKeywordSpacing = [] | [{
11732
11801
  before?: boolean;
11733
11802
  after?: boolean;
11734
11803
  };
11804
+ eval?: {
11805
+ before?: boolean;
11806
+ after?: boolean;
11807
+ };
11735
11808
  export?: {
11736
11809
  before?: boolean;
11737
11810
  after?: boolean;
@@ -11760,10 +11833,18 @@ type StyleKeywordSpacing = [] | [{
11760
11833
  before?: boolean;
11761
11834
  after?: boolean;
11762
11835
  };
11836
+ from?: {
11837
+ before?: boolean;
11838
+ after?: boolean;
11839
+ };
11763
11840
  function?: {
11764
11841
  before?: boolean;
11765
11842
  after?: boolean;
11766
11843
  };
11844
+ get?: {
11845
+ before?: boolean;
11846
+ after?: boolean;
11847
+ };
11767
11848
  goto?: {
11768
11849
  before?: boolean;
11769
11850
  after?: boolean;
@@ -11796,6 +11877,10 @@ type StyleKeywordSpacing = [] | [{
11796
11877
  before?: boolean;
11797
11878
  after?: boolean;
11798
11879
  };
11880
+ let?: {
11881
+ before?: boolean;
11882
+ after?: boolean;
11883
+ };
11799
11884
  long?: {
11800
11885
  before?: boolean;
11801
11886
  after?: boolean;
@@ -11812,6 +11897,10 @@ type StyleKeywordSpacing = [] | [{
11812
11897
  before?: boolean;
11813
11898
  after?: boolean;
11814
11899
  };
11900
+ of?: {
11901
+ before?: boolean;
11902
+ after?: boolean;
11903
+ };
11815
11904
  package?: {
11816
11905
  before?: boolean;
11817
11906
  after?: boolean;
@@ -11832,6 +11921,10 @@ type StyleKeywordSpacing = [] | [{
11832
11921
  before?: boolean;
11833
11922
  after?: boolean;
11834
11923
  };
11924
+ set?: {
11925
+ before?: boolean;
11926
+ after?: boolean;
11927
+ };
11835
11928
  short?: {
11836
11929
  before?: boolean;
11837
11930
  after?: boolean;
@@ -11876,59 +11969,43 @@ type StyleKeywordSpacing = [] | [{
11876
11969
  before?: boolean;
11877
11970
  after?: boolean;
11878
11971
  };
11879
- typeof?: {
11880
- before?: boolean;
11881
- after?: boolean;
11882
- };
11883
- var?: {
11884
- before?: boolean;
11885
- after?: boolean;
11886
- };
11887
- void?: {
11888
- before?: boolean;
11889
- after?: boolean;
11890
- };
11891
- volatile?: {
11892
- before?: boolean;
11893
- after?: boolean;
11894
- };
11895
- while?: {
11972
+ type?: {
11896
11973
  before?: boolean;
11897
11974
  after?: boolean;
11898
11975
  };
11899
- with?: {
11976
+ typeof?: {
11900
11977
  before?: boolean;
11901
11978
  after?: boolean;
11902
11979
  };
11903
- accessor?: {
11980
+ using?: {
11904
11981
  before?: boolean;
11905
11982
  after?: boolean;
11906
11983
  };
11907
- as?: {
11984
+ var?: {
11908
11985
  before?: boolean;
11909
11986
  after?: boolean;
11910
11987
  };
11911
- async?: {
11988
+ void?: {
11912
11989
  before?: boolean;
11913
11990
  after?: boolean;
11914
11991
  };
11915
- await?: {
11992
+ volatile?: {
11916
11993
  before?: boolean;
11917
11994
  after?: boolean;
11918
11995
  };
11919
- from?: {
11996
+ while?: {
11920
11997
  before?: boolean;
11921
11998
  after?: boolean;
11922
11999
  };
11923
- get?: {
12000
+ with?: {
11924
12001
  before?: boolean;
11925
12002
  after?: boolean;
11926
12003
  };
11927
- let?: {
12004
+ yield?: {
11928
12005
  before?: boolean;
11929
12006
  after?: boolean;
11930
12007
  };
11931
- of?: {
12008
+ accessor?: {
11932
12009
  before?: boolean;
11933
12010
  after?: boolean;
11934
12011
  };
@@ -11936,22 +12013,6 @@ type StyleKeywordSpacing = [] | [{
11936
12013
  before?: boolean;
11937
12014
  after?: boolean;
11938
12015
  };
11939
- set?: {
11940
- before?: boolean;
11941
- after?: boolean;
11942
- };
11943
- using?: {
11944
- before?: boolean;
11945
- after?: boolean;
11946
- };
11947
- yield?: {
11948
- before?: boolean;
11949
- after?: boolean;
11950
- };
11951
- type?: {
11952
- before?: boolean;
11953
- after?: boolean;
11954
- };
11955
12016
  };
11956
12017
  }];
11957
12018
  // ----- style/line-comment-position -----
@@ -12151,6 +12212,7 @@ type StyleNoExtraParens = ([] | ["functions"] | [] | ["all"] | ["all", {
12151
12212
  LogicalExpression?: boolean;
12152
12213
  AwaitExpression?: boolean;
12153
12214
  };
12215
+ ignoredNodes?: string[];
12154
12216
  }]);
12155
12217
  // ----- style/no-mixed-operators -----
12156
12218
  type StyleNoMixedOperators = [] | [{
@@ -12266,7 +12328,7 @@ type StylePaddedBlocks = [] | [(("always" | "never" | "start" | "end") | {
12266
12328
  // ----- style/padding-line-between-statements -----
12267
12329
  type _StylePaddingLineBetweenStatementsPaddingType = ("any" | "never" | "always");
12268
12330
  type _StylePaddingLineBetweenStatementsStatementOption = (_StylePaddingLineBetweenStatementsStatementType | [_StylePaddingLineBetweenStatementsStatementType, ...(_StylePaddingLineBetweenStatementsStatementType)[]]);
12269
- type _StylePaddingLineBetweenStatementsStatementType = ("*" | "exports" | "require" | "directive" | "iife" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "continue" | "debugger" | "default" | "do" | "for" | "if" | "import" | "return" | "switch" | "throw" | "try" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "type" | "function-overload" | "block-like" | "singleline-block-like" | "multiline-block-like" | "expression" | "singleline-expression" | "multiline-expression" | "export" | "singleline-export" | "multiline-export" | "var" | "singleline-var" | "multiline-var" | "let" | "singleline-let" | "multiline-let" | "const" | "singleline-const" | "multiline-const" | "using" | "singleline-using" | "multiline-using");
12331
+ type _StylePaddingLineBetweenStatementsStatementType = ("*" | "exports" | "require" | "directive" | "iife" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "continue" | "debugger" | "default" | "do" | "for" | "if" | "import" | "switch" | "throw" | "try" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "function-overload" | "block-like" | "singleline-block-like" | "multiline-block-like" | "expression" | "singleline-expression" | "multiline-expression" | "return" | "singleline-return" | "multiline-return" | "export" | "singleline-export" | "multiline-export" | "var" | "singleline-var" | "multiline-var" | "let" | "singleline-let" | "multiline-let" | "const" | "singleline-const" | "multiline-const" | "using" | "singleline-using" | "multiline-using" | "type" | "singleline-type" | "multiline-type");
12270
12332
  type StylePaddingLineBetweenStatements = {
12271
12333
  blankLine: _StylePaddingLineBetweenStatementsPaddingType;
12272
12334
  prev: _StylePaddingLineBetweenStatementsStatementOption;
@@ -13678,6 +13740,11 @@ type UnocssEnforceClassCompile = [] | [{
13678
13740
  prefix?: string;
13679
13741
  enableFix?: boolean;
13680
13742
  }];
13743
+ // ----- unocss/order -----
13744
+ type UnocssOrder = [] | [{
13745
+ unoFunctions?: string[];
13746
+ unoVariables?: string[];
13747
+ }];
13681
13748
  // ----- unused-imports/no-unused-imports -----
13682
13749
  type UnusedImportsNoUnusedImports = [] | [(("all" | "local") | {
13683
13750
  args?: ("all" | "after-used" | "none");
@@ -14430,6 +14497,7 @@ type VueNoDeprecatedRouterLinkTagProp = [] | [{
14430
14497
  // ----- vue/no-deprecated-slot-attribute -----
14431
14498
  type VueNoDeprecatedSlotAttribute = [] | [{
14432
14499
  ignore?: string[];
14500
+ ignoreParents?: string[];
14433
14501
  }];
14434
14502
  // ----- vue/no-dupe-keys -----
14435
14503
  type VueNoDupeKeys = [] | [{
@@ -15112,7 +15180,7 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
15112
15180
  onlyEquality?: boolean;
15113
15181
  }];
15114
15182
  // Names of all the configs
15115
- type ConfigNames = 'eslint-comments/rules' | 'formatter/setup' | 'imports/rules' | 'javascript/setup' | 'javascript/rules' | 'jsx/setup' | 'jsonc/setup' | 'jsonc/rules' | 'markdown/setup' | 'markdown/processor' | 'markdown/parser' | 'markdown/disables' | 'node/rules' | 'perfectionist/setup' | 'pnpm/package-json' | 'pnpm/pnpm-workspace-yaml' | 'react/setup' | 'react/rules' | 'react-native/setup' | 'react-native/rules' | 'sort/package-json' | 'stylistic/rules' | 'toml/setup' | 'toml/rules' | 'regexp/rules' | 'typescript/setup' | 'typescript/parser' | 'typescript/rules' | 'unicorn/rules' | 'unocss' | 'vue/setup' | 'vue/rules' | 'yaml/setup' | 'yaml/rules' | 'yaml/pnpm-workspace' | 'next/setup' | 'next/rules' | 'jsx-a11y/rules' | 'effector/setup' | 'effector/rules';
15183
+ type ConfigNames = 'eslint-comments/rules' | 'formatter/setup' | 'imports/rules' | 'javascript/setup' | 'javascript/rules' | 'jsx/setup' | 'jsonc/setup' | 'jsonc/rules' | 'markdown/setup' | 'markdown/processor' | 'markdown/parser' | 'markdown/disables' | 'node/rules' | 'perfectionist/setup' | 'pnpm/package-json' | 'pnpm/pnpm-workspace-yaml' | 'react/setup' | 'react/rules' | 'react-native/setup' | 'react-native/rules' | 'sort/package-json' | 'stylistic/rules' | 'toml/setup' | 'toml/rules' | 'regexp/rules' | 'typescript/setup' | 'typescript/parser' | 'typescript/rules' | 'unicorn/rules' | 'unocss' | 'vue/setup' | 'vue/rules' | 'yaml/setup' | 'yaml/rules' | 'yaml/pnpm-workspace' | 'next/setup' | 'next/rules' | 'effector/setup' | 'effector/rules';
15116
15184
  //#endregion
15117
15185
  //#region src/vendor/prettier-types.d.ts
15118
15186
  /**
@@ -15236,18 +15304,25 @@ interface VendoredPrettierOptionsRequired {
15236
15304
  //#endregion
15237
15305
  //#region src/types.d.ts
15238
15306
  type Awaitable<T> = T | Promise<T>;
15239
- interface Rules extends RuleOptions {}
15240
- type TypedFlatConfigItem = Omit<Linter.Config<Linter.RulesRecord & Rules>, 'plugins' | 'rules'> & {
15307
+ type Rules = Record<string, Linter.RuleEntry<any> | undefined> & RuleOptions;
15308
+ /**
15309
+ * An updated version of ESLint's `Linter.Config`, which provides autocompletion
15310
+ * for `rules` and relaxes type limitations for `plugins` and `rules`, because
15311
+ * many plugins still lack proper type definitions.
15312
+ */
15313
+ type TypedFlatConfigItem = Omit<Linter.Config, 'plugins' | 'rules'> & {
15241
15314
  /**
15242
- * An object containing a name-value mapping of plugin names to plugin objects. When `files` is specified, these plugins are only available to the matching files.
15315
+ * An object containing a name-value mapping of plugin names to plugin objects.
15316
+ * When `files` is specified, these plugins are only available to the matching files.
15243
15317
  *
15244
15318
  * @see [Using plugins in your configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new#using-plugins-in-your-configuration)
15245
15319
  */
15246
15320
  plugins?: Record<string, any>;
15247
15321
  /**
15248
- * Rules configuration. More flexible to allow plugin rules that may not be perfectly typed.
15322
+ * An object containing the configured rules. When `files` or `ignores` are
15323
+ * specified, these rule configurations are only available to the matching files.
15249
15324
  */
15250
- rules?: Record<string, Linter.RuleEntry<any> | undefined>;
15325
+ rules?: Rules;
15251
15326
  };
15252
15327
  interface OptionsFiles {
15253
15328
  /**
@@ -15255,6 +15330,19 @@ interface OptionsFiles {
15255
15330
  */
15256
15331
  files?: string[];
15257
15332
  }
15333
+ interface OptionsJSXA11y extends OptionsOverrides {}
15334
+ interface OptionsJSX {
15335
+ /**
15336
+ * Enable JSX accessibility rules.
15337
+ *
15338
+ * Requires installing:
15339
+ * - `eslint-plugin-jsx-a11y`
15340
+ *
15341
+ * Can be a boolean or an object for custom options and overrides.
15342
+ * @default false
15343
+ */
15344
+ a11y?: boolean | OptionsJSXA11y;
15345
+ }
15258
15346
  interface OptionsVue extends OptionsOverrides {
15259
15347
  /**
15260
15348
  * Create virtual files for Vue SFC blocks to enable linting.
@@ -15461,11 +15549,11 @@ interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
15461
15549
  /**
15462
15550
  * Enable JSX related rules.
15463
15551
  *
15464
- * Currently only stylistic rules are included.
15552
+ * Passing an object to enable JSX accessibility rules.
15465
15553
  *
15466
15554
  * @default true
15467
15555
  */
15468
- jsx?: boolean;
15556
+ jsx?: boolean | OptionsJSX;
15469
15557
  /**
15470
15558
  * Options for eslint-plugin-unicorn.
15471
15559
  *
@@ -15530,12 +15618,6 @@ interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
15530
15618
  * @default auto-detect based on the dependencies
15531
15619
  */
15532
15620
  react?: boolean | OptionsOverrides;
15533
- /**
15534
- * Enable jsxA11y rules.
15535
- *
15536
- * @default auto-detect based on the react dependencies
15537
- */
15538
- jsxA11y?: boolean | OptionsOverrides;
15539
15621
  /**
15540
15622
  * Enable next rules.
15541
15623
  *
@@ -15627,6 +15709,7 @@ declare const defaultPluginRenaming: {
15627
15709
  '@eslint-react/dom': string;
15628
15710
  '@eslint-react/hooks-extra': string;
15629
15711
  '@eslint-react/naming-convention': string;
15712
+ '@next/next': string;
15630
15713
  '@stylistic': string;
15631
15714
  '@typescript-eslint': string;
15632
15715
  'import-lite': string;
@@ -15670,10 +15753,7 @@ declare function javascript(options?: OptionsIsInEditor & OptionsOverrides): Pro
15670
15753
  declare function jsonc(options?: OptionsFiles & OptionsStylistic & OptionsOverrides): Promise<TypedFlatConfigItem[]>;
15671
15754
  //#endregion
15672
15755
  //#region src/configs/jsx.d.ts
15673
- declare function jsx(): Promise<TypedFlatConfigItem[]>;
15674
- //#endregion
15675
- //#region src/configs/jsx-a11y.d.ts
15676
- declare function jsxA11y(options?: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
15756
+ declare function jsx(options?: OptionsJSX): Promise<TypedFlatConfigItem[]>;
15677
15757
  //#endregion
15678
15758
  //#region src/configs/markdown.d.ts
15679
15759
  declare function markdown(options?: OptionsFiles & OptionsComponentExts & OptionsOverrides): Promise<TypedFlatConfigItem[]>;
@@ -15827,4 +15907,4 @@ type ResolvedOptions<T> = T extends boolean ? never : NonNullable<T>;
15827
15907
  declare function resolveSubOptions<C extends Record<string, any>, K extends keyof C>(options: C, key: K): ResolvedOptions<C[K]>;
15828
15908
  declare function getOverrides<C extends Record<string, any>, K extends keyof C>(options: C, key: K): Partial<Linter.RulesRecord & RuleOptions>;
15829
15909
  //#endregion
15830
- export { Awaitable, type ConfigNames, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVG, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, OptionsComponentExts, OptionsConfig, OptionsEffector, OptionsFiles, OptionsFormatters, OptionsHasTypeScript, OptionsIsInEditor, OptionsOverrides, OptionsProjectType, OptionsReactNative, OptionsRegExp, OptionsStylistic, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, OptionsUnoCSS, OptionsVue, ResolvedOptions, Rules, StylisticConfig, StylisticConfigDefaults, StylisticOptions, TypedFlatConfigItem, combine, comments, config, config as default, defaultPluginRenaming, disables, effector, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, jsx, jsxA11y, markdown, next, node, parserPlain, perfectionist, pnpm, react, reactNative, regexp, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, toml, typescript, unicorn, unocss, vue, yaml };
15910
+ export { Awaitable, type ConfigNames, GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVG, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, OptionsComponentExts, OptionsConfig, OptionsEffector, OptionsFiles, OptionsFormatters, OptionsHasTypeScript, OptionsIsInEditor, OptionsJSX, OptionsJSXA11y, OptionsOverrides, OptionsProjectType, OptionsReactNative, OptionsRegExp, OptionsStylistic, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, OptionsUnoCSS, OptionsVue, ResolvedOptions, Rules, StylisticConfig, StylisticConfigDefaults, StylisticOptions, TypedFlatConfigItem, combine, comments, config, config as default, defaultPluginRenaming, disables, effector, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, jsx, markdown, next, node, parserPlain, perfectionist, pnpm, react, reactNative, regexp, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, toml, typescript, unicorn, unocss, vue, yaml };
package/dist/index.js CHANGED
@@ -749,35 +749,44 @@ async function jsonc(options = {}) {
749
749
 
750
750
  //#endregion
751
751
  //#region src/configs/jsx.ts
752
- async function jsx() {
753
- return [{
752
+ async function jsx(options = {}) {
753
+ const { a11y } = options;
754
+ const baseConfig = {
754
755
  files: [GLOB_JSX, GLOB_TSX],
755
756
  languageOptions: { parserOptions: { ecmaFeatures: { jsx: true } } },
756
- name: "jsx/setup"
757
- }];
758
- }
759
-
760
- //#endregion
761
- //#region src/configs/jsx-a11y.ts
762
- async function jsxA11y(options = {}) {
763
- const { overrides = {} } = options;
757
+ name: "jsx/setup",
758
+ plugins: {},
759
+ rules: {}
760
+ };
761
+ if (!a11y) return [baseConfig];
764
762
  await ensurePackages(["eslint-plugin-jsx-a11y"]);
765
- const [pluginJsxA11y] = await Promise.all([interopDefault(import("eslint-plugin-jsx-a11y"))]);
763
+ const jsxA11yPlugin = await interopDefault(import("eslint-plugin-jsx-a11y"));
764
+ const a11yConfig = jsxA11yPlugin.flatConfigs.recommended;
766
765
  const isUsingNext = NextJsPackages.some((i) => isPackageExists(i));
766
+ const a11yRules = {
767
+ ...a11yConfig.rules || {},
768
+ "jsx-a11y/alt-text": ["error", {
769
+ elements: ["img"],
770
+ img: [...isUsingNext ? ["Image"] : []]
771
+ }],
772
+ ...typeof a11y === "object" && a11y.overrides ? a11y.overrides : {}
773
+ };
767
774
  return [{
768
- name: "jsx-a11y/rules",
769
- plugins: { "jsx-a11y": pluginJsxA11y },
775
+ ...baseConfig,
776
+ ...a11yConfig,
777
+ files: baseConfig.files,
778
+ languageOptions: {
779
+ ...baseConfig.languageOptions,
780
+ ...a11yConfig.languageOptions
781
+ },
782
+ name: baseConfig.name,
783
+ plugins: {
784
+ ...baseConfig.plugins,
785
+ "jsx-a11y": jsxA11yPlugin
786
+ },
770
787
  rules: {
771
- "jsx-a11y/alt-text": ["warn", {
772
- elements: ["img"],
773
- img: [...isUsingNext ? ["Image"] : []]
774
- }],
775
- "jsx-a11y/aria-props": "warn",
776
- "jsx-a11y/aria-proptypes": "warn",
777
- "jsx-a11y/aria-unsupported-elements": "warn",
778
- "jsx-a11y/role-has-required-aria-props": "warn",
779
- "jsx-a11y/role-supports-aria-props": "warn",
780
- ...overrides
788
+ ...baseConfig.rules,
789
+ ...a11yRules
781
790
  }
782
791
  }];
783
792
  }
@@ -1963,6 +1972,7 @@ const defaultPluginRenaming = {
1963
1972
  "@eslint-react/dom": "react-dom",
1964
1973
  "@eslint-react/hooks-extra": "react-hooks-extra",
1965
1974
  "@eslint-react/naming-convention": "react-naming-convention",
1975
+ "@next/next": "next",
1966
1976
  "@stylistic": "style",
1967
1977
  "@typescript-eslint": "ts",
1968
1978
  "import-lite": "import",
@@ -1981,14 +1991,14 @@ const defaultPluginRenaming = {
1981
1991
  */
1982
1992
  function config(options = {}, ...userConfigs) {
1983
1993
  const isUsingReact = ReactPackages.some((i) => isPackageExists(i));
1984
- const { autoRenamePlugins = true, componentExts = [], effector: enableEffector = isPackageExists("effector"), gitignore: enableGitignore = true, imports: enableImports = true, jsx: enableJsx = true, jsxA11y: enableJsxA11y = isUsingReact, next: enableNext = NextJsPackages.some((i) => isPackageExists(i)), pnpm: enableCatalogs = false, react: enableReact = isUsingReact, reactNative: enableReactNative = ReactNativePackages.some((i) => isPackageExists(i)), regexp: enableRegexp = true, typescript: enableTypeScript = isPackageExists("typescript"), unicorn: enableUnicorn = true, unocss: enableUnoCSS = false, vue: enableVue = VuePackages.some((i) => isPackageExists(i)) } = options;
1994
+ const { autoRenamePlugins = true, componentExts = [], effector: enableEffector = isPackageExists("effector"), gitignore: enableGitignore = true, imports: enableImports = true, jsx: enableJsx = true, next: enableNext = NextJsPackages.some((i) => isPackageExists(i)), pnpm: enableCatalogs = false, react: enableReact = isUsingReact, reactNative: enableReactNative = ReactNativePackages.some((i) => isPackageExists(i)), regexp: enableRegexp = true, typescript: enableTypeScript = isPackageExists("typescript"), unicorn: enableUnicorn = true, unocss: enableUnoCSS = false, vue: enableVue = VuePackages.some((i) => isPackageExists(i)) } = options;
1985
1995
  let isInEditor = options.isInEditor;
1986
1996
  if (isInEditor == null) {
1987
1997
  isInEditor = isInEditorEnv();
1988
1998
  if (isInEditor) console.log("[@ghettoddos/eslint-config] Detected running in editor, some rules are disabled.");
1989
1999
  }
1990
2000
  const stylisticOptions = options.stylistic === false ? false : typeof options.stylistic === "object" ? options.stylistic : {};
1991
- if (stylisticOptions && !("jsx" in stylisticOptions)) stylisticOptions.jsx = enableJsx;
2001
+ if (stylisticOptions && !("jsx" in stylisticOptions)) stylisticOptions.jsx = typeof enableJsx === "object" ? true : enableJsx;
1992
2002
  const configs$1 = [];
1993
2003
  if (enableGitignore) if (typeof enableGitignore !== "boolean") configs$1.push(interopDefault(import("eslint-config-flat-gitignore")).then((r) => [r({
1994
2004
  name: "gitignore",
@@ -2010,7 +2020,7 @@ function config(options = {}, ...userConfigs) {
2010
2020
  }));
2011
2021
  if (enableUnicorn) configs$1.push(unicorn(enableUnicorn === true ? {} : enableUnicorn));
2012
2022
  if (enableVue) componentExts.push("vue");
2013
- if (enableJsx) configs$1.push(jsx());
2023
+ if (enableJsx) configs$1.push(jsx(enableJsx === true ? {} : enableJsx));
2014
2024
  if (enableTypeScript) configs$1.push(typescript({
2015
2025
  ...typescriptOptions,
2016
2026
  componentExts,
@@ -2037,7 +2047,6 @@ function config(options = {}, ...userConfigs) {
2037
2047
  ...resolveSubOptions(options, "reactNative"),
2038
2048
  overrides: getOverrides(options, "reactNative")
2039
2049
  }));
2040
- if (enableJsxA11y) configs$1.push(jsxA11y({ overrides: getOverrides(options, "jsxA11y") }));
2041
2050
  if (enableNext) configs$1.push(next({ overrides: getOverrides(options, "next") }));
2042
2051
  if (enableEffector) configs$1.push(effector({
2043
2052
  ...resolveSubOptions(options, "effector"),
@@ -2084,4 +2093,4 @@ function config(options = {}, ...userConfigs) {
2084
2093
  var src_default = config;
2085
2094
 
2086
2095
  //#endregion
2087
- export { GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVG, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, StylisticConfigDefaults, combine, comments, config, src_default as default, defaultPluginRenaming, disables, effector, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, jsx, jsxA11y, markdown, next, node, parserPlain, perfectionist, pnpm, react, reactNative, regexp, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, toml, typescript, unicorn, unocss, vue, yaml };
2096
+ export { GLOB_ALL_SRC, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVG, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_XML, GLOB_YAML, StylisticConfigDefaults, combine, comments, config, src_default as default, defaultPluginRenaming, disables, effector, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, isInEditorEnv, isInGitHooksOrLintStaged, isPackageInScope, javascript, jsonc, jsx, markdown, next, node, parserPlain, perfectionist, pnpm, react, reactNative, regexp, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, toml, typescript, unicorn, unocss, vue, yaml };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ghettoddos/eslint-config",
3
3
  "type": "module",
4
- "version": "1.8.3",
4
+ "version": "2.0.1",
5
5
  "description": "ghettoDdOS ESLint config",
6
6
  "author": "ghettoDdOS <pen.egor2002@gamil.com> (https://github.com/ghettoDdOS/)",
7
7
  "license": "MIT",
@@ -25,16 +25,16 @@
25
25
  "dist"
26
26
  ],
27
27
  "peerDependencies": {
28
- "@next/eslint-plugin-next": "^15.4.3",
29
- "@prettier/plugin-xml": "^3.4.2",
30
- "@react-native/eslint-plugin": "^0.80.1",
28
+ "@next/eslint-plugin-next": "^15.4.0",
29
+ "@prettier/plugin-xml": "^3.4.1",
30
+ "@react-native/eslint-plugin": ">=0.80.0",
31
31
  "@unocss/eslint-plugin": ">=0.50.0",
32
32
  "eslint": "^9.10.0",
33
- "eslint-plugin-effector": "^0.15.0",
33
+ "eslint-plugin-effector": ">=0.15.0",
34
34
  "eslint-plugin-expo": "^0.1.4",
35
35
  "eslint-plugin-format": ">=0.1.0",
36
- "eslint-plugin-jsx-a11y": "^6.10.2",
37
- "eslint-plugin-react-native": "^5.0.0",
36
+ "eslint-plugin-jsx-a11y": ">=6.10.2",
37
+ "eslint-plugin-react-native": ">=5.0.0",
38
38
  "eslint-plugin-vuejs-accessibility": "^2.4.1"
39
39
  },
40
40
  "peerDependenciesMeta": {
@@ -73,60 +73,61 @@
73
73
  "@antfu/install-pkg": "^1.1.0",
74
74
  "@clack/prompts": "^0.11.0",
75
75
  "@eslint-community/eslint-plugin-eslint-comments": "^4.5.0",
76
- "@eslint-react/eslint-plugin": "^1.52.3",
77
- "@eslint/compat": "^1.3.1",
78
- "@eslint/markdown": "^7.1.0",
79
- "@stylistic/eslint-plugin": "^5.2.2",
80
- "@typescript-eslint/eslint-plugin": "^8.38.0",
81
- "@typescript-eslint/parser": "^8.38.0",
76
+ "@eslint-react/eslint-plugin": "^1.52.9",
77
+ "@eslint/compat": "^1.3.2",
78
+ "@eslint/markdown": "^7.2.0",
79
+ "@stylistic/eslint-plugin": "^5.3.1",
80
+ "@typescript-eslint/eslint-plugin": "^8.42.0",
81
+ "@typescript-eslint/parser": "^8.42.0",
82
82
  "eslint-config-flat-gitignore": "^2.1.0",
83
- "eslint-flat-config-utils": "^2.1.0",
83
+ "eslint-flat-config-utils": "^2.1.1",
84
84
  "eslint-merge-processors": "^2.0.0",
85
85
  "eslint-plugin-antfu": "^3.1.1",
86
86
  "eslint-plugin-import-lite": "^0.3.0",
87
87
  "eslint-plugin-import-x": "^4.16.1",
88
88
  "eslint-plugin-jsonc": "^2.20.1",
89
- "eslint-plugin-n": "^17.21.0",
89
+ "eslint-plugin-n": "^17.21.3",
90
90
  "eslint-plugin-perfectionist": "^4.15.0",
91
- "eslint-plugin-pnpm": "^1.1.0",
91
+ "eslint-plugin-pnpm": "^1.1.1",
92
92
  "eslint-plugin-react-hooks": "^5.2.0",
93
93
  "eslint-plugin-react-refresh": "^0.4.20",
94
- "eslint-plugin-regexp": "^2.9.0",
94
+ "eslint-plugin-regexp": "^2.10.0",
95
95
  "eslint-plugin-toml": "^0.12.0",
96
96
  "eslint-plugin-unicorn": "^60.0.0",
97
- "eslint-plugin-unused-imports": "^4.1.4",
98
- "eslint-plugin-vue": "^10.3.0",
97
+ "eslint-plugin-unused-imports": "^4.2.0",
98
+ "eslint-plugin-vue": "^10.4.0",
99
99
  "eslint-plugin-yml": "^1.18.0",
100
100
  "eslint-processor-vue-blocks": "^2.0.0",
101
101
  "globals": "^16.3.0",
102
102
  "jsonc-eslint-parser": "^2.4.0",
103
- "local-pkg": "^1.1.1",
103
+ "local-pkg": "^1.1.2",
104
104
  "parse-gitignore": "^2.0.0",
105
105
  "toml-eslint-parser": "^0.10.0",
106
106
  "vue-eslint-parser": "^10.2.0",
107
107
  "yaml-eslint-parser": "^1.3.0"
108
108
  },
109
109
  "devDependencies": {
110
- "@eslint/config-inspector": "^1.1.0",
111
- "@next/eslint-plugin-next": "^15.4.3",
110
+ "@eslint/config-inspector": "^1.2.0",
111
+ "@next/eslint-plugin-next": "^15.5.2",
112
112
  "@prettier/plugin-xml": "^3.4.2",
113
- "@react-native/eslint-plugin": "^0.80.1",
114
- "@types/node": "^24.1.0",
115
- "@unocss/eslint-plugin": "^66.3.3",
116
- "bumpp": "^10.2.0",
117
- "eslint": "^9.31.0",
118
- "eslint-plugin-effector": "^0.15.0",
113
+ "@react-native/eslint-plugin": "^0.81.1",
114
+ "@types/eslint-plugin-jsx-a11y": "^6.10.0",
115
+ "@types/node": "^24.3.0",
116
+ "@unocss/eslint-plugin": "^66.5.0",
117
+ "bumpp": "^10.2.3",
118
+ "eslint": "^9.34.0",
119
+ "eslint-plugin-effector": "^0.16.0",
119
120
  "eslint-plugin-expo": "^0.1.4",
120
121
  "eslint-plugin-format": "^1.0.1",
121
122
  "eslint-plugin-jsx-a11y": "^6.10.2",
122
123
  "eslint-plugin-react-native": "^5.0.0",
123
124
  "eslint-plugin-vuejs-accessibility": "^2.4.1",
124
- "eslint-typegen": "^2.2.1",
125
- "lint-staged": "^16.1.2",
126
- "simple-git-hooks": "^2.13.0",
127
- "tsdown": "^0.13.0",
128
- "tsx": "^4.20.3",
129
- "typescript": "^5.8.3"
125
+ "eslint-typegen": "^2.3.0",
126
+ "lint-staged": "^16.1.6",
127
+ "simple-git-hooks": "^2.13.1",
128
+ "tsdown": "^0.14.2",
129
+ "tsx": "^4.20.5",
130
+ "typescript": "^5.9.2"
130
131
  },
131
132
  "simple-git-hooks": {
132
133
  "pre-commit": "npx lint-staged"