@pengzhanbo/eslint-config 2.4.1 → 2.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.d.mts CHANGED
@@ -462,12 +462,12 @@ interface RuleOptions {
462
462
  */
463
463
  'angular/use-pipe-transform-interface'?: Linter.RuleEntry<[]>;
464
464
  /**
465
- * Having line breaks styles to object, array and named imports
465
+ * Enforce consistent line breaks for chaining member access
466
466
  * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-chaining.md
467
467
  */
468
468
  'antfu/consistent-chaining'?: Linter.RuleEntry<AntfuConsistentChaining>;
469
469
  /**
470
- * Having line breaks styles to object, array and named imports
470
+ * Enforce consistent line breaks inside braces and parentheses
471
471
  * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/consistent-list-newline.md
472
472
  */
473
473
  'antfu/consistent-list-newline'?: Linter.RuleEntry<AntfuConsistentListNewline>;
@@ -493,22 +493,22 @@ interface RuleOptions {
493
493
  'antfu/indent-unindent'?: Linter.RuleEntry<AntfuIndentUnindent>;
494
494
  /**
495
495
  * Prevent importing modules in `dist` folder
496
- * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-dist.test.ts
496
+ * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-dist.md
497
497
  */
498
498
  'antfu/no-import-dist'?: Linter.RuleEntry<[]>;
499
499
  /**
500
500
  * Prevent importing modules in `node_modules` folder by relative or absolute path
501
- * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-node-modules-by-path.test.ts
501
+ * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-import-node-modules-by-path.md
502
502
  */
503
503
  'antfu/no-import-node-modules-by-path'?: Linter.RuleEntry<[]>;
504
504
  /**
505
505
  * Prevent using top-level await
506
- * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-top-level-await.test.ts
506
+ * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-top-level-await.md
507
507
  */
508
508
  'antfu/no-top-level-await'?: Linter.RuleEntry<[]>;
509
509
  /**
510
510
  * Do not use `exports =`
511
- * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-ts-export-equal.test.ts
511
+ * @see https://github.com/antfu/eslint-plugin-antfu/blob/main/src/rules/no-ts-export-equal.md
512
512
  */
513
513
  'antfu/no-ts-export-equal'?: Linter.RuleEntry<[]>;
514
514
  /**
@@ -3728,46 +3728,46 @@ interface RuleOptions {
3728
3728
  'react/immutability'?: Linter.RuleEntry<[]>;
3729
3729
  /**
3730
3730
  * Disallows passing 'children' as a prop.
3731
- * @see https://eslint-react.xyz/docs/rules/no-children-prop
3731
+ * @see https://eslint-react.xyz/docs/rules/jsx-no-children-prop
3732
3732
  */
3733
3733
  'react/jsx-no-children-prop'?: Linter.RuleEntry<[]>;
3734
3734
  /**
3735
3735
  * Disallows passing 'children' as a prop when children are also passed as nested content.
3736
- * @see https://eslint-react.xyz/docs/rules/no-children-prop-with-children
3736
+ * @see https://eslint-react.xyz/docs/rules/jsx-no-children-prop-with-children
3737
3737
  */
3738
3738
  'react/jsx-no-children-prop-with-children'?: Linter.RuleEntry<[]>;
3739
3739
  /**
3740
3740
  * Prevents comment strings from being accidentally inserted into a JSX element's text nodes.
3741
- * @see https://eslint-react.xyz/docs/rules/no-comment-textnodes
3741
+ * @see https://eslint-react.xyz/docs/rules/jsx-no-comment-textnodes
3742
3742
  */
3743
3743
  'react/jsx-no-comment-textnodes'?: Linter.RuleEntry<[]>;
3744
3744
  /**
3745
3745
  * Prevent patterns that cause deoptimization when using the automatic JSX runtime.
3746
- * @see https://eslint-react.xyz/docs/rules/no-key-after-spread
3746
+ * @see https://eslint-react.xyz/docs/rules/jsx-no-key-after-spread
3747
3747
  */
3748
3748
  'react/jsx-no-key-after-spread'?: Linter.RuleEntry<[]>;
3749
3749
  /**
3750
3750
  * Catches `$` before `{expr}` in JSX — typically from template literal `${expr}` being copy-pasted into JSX without removing the `$`. The `$` "leaks" into the rendered output.
3751
- * @see https://eslint-react.xyz/docs/rules/no-leaked-dollar
3751
+ * @see https://eslint-react.xyz/docs/rules/jsx-no-leaked-dollar
3752
3752
  */
3753
3753
  'react/jsx-no-leaked-dollar'?: Linter.RuleEntry<[]>;
3754
3754
  /**
3755
3755
  * Catches `;` at the start of JSX text nodes — typically from accidentally placing a statement-ending `;` inside JSX. The `;` "leaks" into the rendered output.
3756
- * @see https://eslint-react.xyz/docs/rules/no-leaked-semicolon
3756
+ * @see https://eslint-react.xyz/docs/rules/jsx-no-leaked-semicolon
3757
3757
  */
3758
3758
  'react/jsx-no-leaked-semicolon'?: Linter.RuleEntry<[]>;
3759
3759
  /**
3760
3760
  * Disallow JSX namespace syntax, as React does not support them.
3761
- * @see https://eslint-react.xyz/docs/rules/no-namespace
3761
+ * @see https://eslint-react.xyz/docs/rules/jsx-no-namespace
3762
3762
  */
3763
3763
  'react/jsx-no-namespace'?: Linter.RuleEntry<[]>;
3764
3764
  /**
3765
3765
  * Disallows useless fragment elements.
3766
- * @see https://eslint-react.xyz/docs/rules/no-useless-fragment
3766
+ * @see https://eslint-react.xyz/docs/rules/jsx-no-useless-fragment
3767
3767
  */
3768
3768
  'react/jsx-no-useless-fragment'?: Linter.RuleEntry<ReactJsxNoUselessFragment>;
3769
3769
  /**
3770
- * Enforces the context name to be a valid component name with the suffix 'Context'.
3770
+ * Enforces identifier names assigned from `createContext` calls to be a valid component name with the suffix `Context`.
3771
3771
  * @see https://eslint-react.xyz/docs/rules/naming-convention-context-name
3772
3772
  */
3773
3773
  'react/naming-convention-context-name'?: Linter.RuleEntry<[]>;
@@ -3847,7 +3847,7 @@ interface RuleOptions {
3847
3847
  */
3848
3848
  'react/no-context-provider'?: Linter.RuleEntry<[]>;
3849
3849
  /**
3850
- * Disallows 'createRef' in function components.
3850
+ * Disallows 'createRef' in function components and Hooks.
3851
3851
  * @see https://eslint-react.xyz/docs/rules/no-create-ref
3852
3852
  */
3853
3853
  'react/no-create-ref'?: Linter.RuleEntry<[]>;
@@ -3972,7 +3972,7 @@ interface RuleOptions {
3972
3972
  */
3973
3973
  'react/no-unused-props'?: Linter.RuleEntry<[]>;
3974
3974
  /**
3975
- * Warns about state variables that are defined but never used, or only used in effects.
3975
+ * Warns about state variables that are defined but never used.
3976
3976
  * @see https://eslint-react.xyz/docs/rules/no-unused-state
3977
3977
  */
3978
3978
  'react/no-unused-state'?: Linter.RuleEntry<[]>;
@@ -3993,7 +3993,7 @@ interface RuleOptions {
3993
3993
  'react/refs'?: Linter.RuleEntry<[]>;
3994
3994
  /**
3995
3995
  * Validates and transforms React Client/Server Function definitions.
3996
- * @see https://eslint-react.xyz/docs/rules/function-definition
3996
+ * @see https://eslint-react.xyz/docs/rules/rsc-function-definition
3997
3997
  */
3998
3998
  'react/rsc-function-definition'?: Linter.RuleEntry<[]>;
3999
3999
  /**
@@ -4142,7 +4142,7 @@ interface RuleOptions {
4142
4142
  */
4143
4143
  'react/x-no-context-provider'?: Linter.RuleEntry<[]>;
4144
4144
  /**
4145
- * Disallows 'createRef' in function components.
4145
+ * Disallows 'createRef' in function components and Hooks.
4146
4146
  * @see https://eslint-react.xyz/docs/rules/no-create-ref
4147
4147
  */
4148
4148
  'react/x-no-create-ref'?: Linter.RuleEntry<[]>;
@@ -4267,7 +4267,7 @@ interface RuleOptions {
4267
4267
  */
4268
4268
  'react/x-no-unused-props'?: Linter.RuleEntry<[]>;
4269
4269
  /**
4270
- * Warns about state variables that are defined but never used, or only used in effects.
4270
+ * Warns about state variables that are defined but never used.
4271
4271
  * @see https://eslint-react.xyz/docs/rules/no-unused-state
4272
4272
  */
4273
4273
  'react/x-no-unused-state'?: Linter.RuleEntry<[]>;
@@ -5609,6 +5609,11 @@ interface RuleOptions {
5609
5609
  * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-navigation-without-resolve/
5610
5610
  */
5611
5611
  'svelte/no-navigation-without-resolve'?: Linter.RuleEntry<SvelteNoNavigationWithoutResolve>;
5612
+ /**
5613
+ * disallow `<style>` elements nested inside other elements or blocks
5614
+ * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-nested-style-tag/
5615
+ */
5616
+ 'svelte/no-nested-style-tag'?: Linter.RuleEntry<[]>;
5612
5617
  /**
5613
5618
  * disallow use of not function in event handler
5614
5619
  * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-not-function-handler/
@@ -5724,6 +5729,11 @@ interface RuleOptions {
5724
5729
  * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/prefer-const/
5725
5730
  */
5726
5731
  'svelte/prefer-const'?: Linter.RuleEntry<SveltePreferConst>;
5732
+ /**
5733
+ * disallow unnecessary `$derived.by()` when `$derived()` is sufficient
5734
+ * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/prefer-derived-over-derived-by/
5735
+ */
5736
+ 'svelte/prefer-derived-over-derived-by'?: Linter.RuleEntry<[]>;
5727
5737
  /**
5728
5738
  * destructure values from object stores for better change tracking & fewer redraws
5729
5739
  * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/prefer-destructured-store-props/
@@ -8163,7 +8173,7 @@ interface RuleOptions {
8163
8173
  */
8164
8174
  'vue/jsx-uses-vars'?: Linter.RuleEntry<[]>;
8165
8175
  /**
8166
- * Enforce consistent spacing between keys and values in object literal properties in `<template>`
8176
+ * Enforce consistent spacing between property names and type annotations in types and interfaces in `<template>`
8167
8177
  * @see https://eslint.vuejs.org/rules/key-spacing.html
8168
8178
  */
8169
8179
  'vue/key-spacing'?: Linter.RuleEntry<VueKeySpacing>;
@@ -8885,7 +8895,7 @@ interface RuleOptions {
8885
8895
  */
8886
8896
  'vue/prop-name-casing'?: Linter.RuleEntry<VuePropNameCasing>;
8887
8897
  /**
8888
- * Require quotes around object literal property names in `<template>`
8898
+ * Require quotes around object literal, type literal, interfaces and enums property names in `<template>`
8889
8899
  * @see https://eslint.vuejs.org/rules/quote-props.html
8890
8900
  */
8891
8901
  'vue/quote-props'?: Linter.RuleEntry<VueQuoteProps>;
@@ -9403,6 +9413,7 @@ type AngularTemplateConditionalComplexity = [] | [{
9403
9413
  }]; // ----- angular-template/cyclomatic-complexity -----
9404
9414
  type AngularTemplateCyclomaticComplexity = [] | [{
9405
9415
  maxComplexity?: number;
9416
+ variant?: ("classic" | "modified");
9406
9417
  }]; // ----- angular-template/elements-content -----
9407
9418
  type AngularTemplateElementsContent = [] | [{
9408
9419
  allowList?: string[];
@@ -17822,6 +17833,7 @@ type VueArrayElementNewline = [] | [(_VueArrayElementNewlineBasicConfig | {
17822
17833
  ArrayPattern?: _VueArrayElementNewlineBasicConfig;
17823
17834
  })];
17824
17835
  type _VueArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | {
17836
+ consistent?: boolean;
17825
17837
  multiline?: boolean;
17826
17838
  minItems?: (number | null);
17827
17839
  }); // ----- vue/arrow-spacing -----
@@ -17881,9 +17893,14 @@ type VueCommaDangle = [] | [(_VueCommaDangleValue | {
17881
17893
  imports?: _VueCommaDangleValueWithIgnore;
17882
17894
  exports?: _VueCommaDangleValueWithIgnore;
17883
17895
  functions?: _VueCommaDangleValueWithIgnore;
17896
+ importAttributes?: _VueCommaDangleValueWithIgnore;
17897
+ dynamicImports?: _VueCommaDangleValueWithIgnore;
17898
+ enums?: _VueCommaDangleValueWithIgnore;
17899
+ generics?: _VueCommaDangleValueWithIgnore;
17900
+ tuples?: _VueCommaDangleValueWithIgnore;
17884
17901
  })];
17885
17902
  type _VueCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline");
17886
- type _VueCommaDangleValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline"); // ----- vue/comma-spacing -----
17903
+ type _VueCommaDangleValueWithIgnore = ("always-multiline" | "always" | "never" | "only-multiline" | "ignore"); // ----- vue/comma-spacing -----
17887
17904
  type VueCommaSpacing = [] | [{
17888
17905
  before?: boolean;
17889
17906
  after?: boolean;
@@ -17933,6 +17950,10 @@ type VueFirstAttributeLinebreak = [] | [{
17933
17950
  }]; // ----- vue/func-call-spacing -----
17934
17951
  type VueFuncCallSpacing = ([] | ["never"] | [] | ["always"] | ["always", {
17935
17952
  allowNewlines?: boolean;
17953
+ optionalChain?: {
17954
+ before?: boolean;
17955
+ after?: boolean;
17956
+ };
17936
17957
  }]); // ----- vue/html-button-has-type -----
17937
17958
  type VueHtmlButtonHasType = [] | [{
17938
17959
  button?: boolean;
@@ -18004,6 +18025,7 @@ type VueKeySpacing = [] | [({
18004
18025
  mode?: ("strict" | "minimum");
18005
18026
  beforeColon?: boolean;
18006
18027
  afterColon?: boolean;
18028
+ ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[];
18007
18029
  } | {
18008
18030
  singleLine?: {
18009
18031
  mode?: ("strict" | "minimum");
@@ -18047,18 +18069,6 @@ type VueKeywordSpacing = [] | [{
18047
18069
  before?: boolean;
18048
18070
  after?: boolean;
18049
18071
  };
18050
- as?: {
18051
- before?: boolean;
18052
- after?: boolean;
18053
- };
18054
- async?: {
18055
- before?: boolean;
18056
- after?: boolean;
18057
- };
18058
- await?: {
18059
- before?: boolean;
18060
- after?: boolean;
18061
- };
18062
18072
  boolean?: {
18063
18073
  before?: boolean;
18064
18074
  after?: boolean;
@@ -18151,18 +18161,10 @@ type VueKeywordSpacing = [] | [{
18151
18161
  before?: boolean;
18152
18162
  after?: boolean;
18153
18163
  };
18154
- from?: {
18155
- before?: boolean;
18156
- after?: boolean;
18157
- };
18158
18164
  function?: {
18159
18165
  before?: boolean;
18160
18166
  after?: boolean;
18161
18167
  };
18162
- get?: {
18163
- before?: boolean;
18164
- after?: boolean;
18165
- };
18166
18168
  goto?: {
18167
18169
  before?: boolean;
18168
18170
  after?: boolean;
@@ -18195,10 +18197,6 @@ type VueKeywordSpacing = [] | [{
18195
18197
  before?: boolean;
18196
18198
  after?: boolean;
18197
18199
  };
18198
- let?: {
18199
- before?: boolean;
18200
- after?: boolean;
18201
- };
18202
18200
  long?: {
18203
18201
  before?: boolean;
18204
18202
  after?: boolean;
@@ -18215,10 +18213,6 @@ type VueKeywordSpacing = [] | [{
18215
18213
  before?: boolean;
18216
18214
  after?: boolean;
18217
18215
  };
18218
- of?: {
18219
- before?: boolean;
18220
- after?: boolean;
18221
- };
18222
18216
  package?: {
18223
18217
  before?: boolean;
18224
18218
  after?: boolean;
@@ -18239,10 +18233,6 @@ type VueKeywordSpacing = [] | [{
18239
18233
  before?: boolean;
18240
18234
  after?: boolean;
18241
18235
  };
18242
- set?: {
18243
- before?: boolean;
18244
- after?: boolean;
18245
- };
18246
18236
  short?: {
18247
18237
  before?: boolean;
18248
18238
  after?: boolean;
@@ -18311,10 +18301,66 @@ type VueKeywordSpacing = [] | [{
18311
18301
  before?: boolean;
18312
18302
  after?: boolean;
18313
18303
  };
18304
+ arguments?: {
18305
+ before?: boolean;
18306
+ after?: boolean;
18307
+ };
18308
+ as?: {
18309
+ before?: boolean;
18310
+ after?: boolean;
18311
+ };
18312
+ async?: {
18313
+ before?: boolean;
18314
+ after?: boolean;
18315
+ };
18316
+ await?: {
18317
+ before?: boolean;
18318
+ after?: boolean;
18319
+ };
18320
+ eval?: {
18321
+ before?: boolean;
18322
+ after?: boolean;
18323
+ };
18324
+ from?: {
18325
+ before?: boolean;
18326
+ after?: boolean;
18327
+ };
18328
+ get?: {
18329
+ before?: boolean;
18330
+ after?: boolean;
18331
+ };
18332
+ let?: {
18333
+ before?: boolean;
18334
+ after?: boolean;
18335
+ };
18336
+ of?: {
18337
+ before?: boolean;
18338
+ after?: boolean;
18339
+ };
18340
+ set?: {
18341
+ before?: boolean;
18342
+ after?: boolean;
18343
+ };
18344
+ type?: {
18345
+ before?: boolean;
18346
+ after?: boolean;
18347
+ };
18348
+ using?: {
18349
+ before?: boolean;
18350
+ after?: boolean;
18351
+ };
18314
18352
  yield?: {
18315
18353
  before?: boolean;
18316
18354
  after?: boolean;
18317
18355
  };
18356
+ accessor?: {
18357
+ before?: boolean;
18358
+ after?: boolean;
18359
+ };
18360
+ satisfies?: {
18361
+ before?: boolean;
18362
+ after?: boolean;
18363
+ };
18318
18364
  };
18319
18365
  }]; // ----- vue/match-component-file-name -----
18320
18366
  type VueMatchComponentFileName = [] | [{
@@ -18434,7 +18480,9 @@ type VueMultilineHtmlElementContentNewline = [] | [{
18434
18480
  ignores?: string[];
18435
18481
  allowEmptyLines?: boolean;
18436
18482
  }]; // ----- vue/multiline-ternary -----
18437
- type VueMultilineTernary = [] | [("always" | "always-multiline" | "never")]; // ----- vue/mustache-interpolation-spacing -----
18483
+ type VueMultilineTernary = [] | [("always" | "always-multiline" | "never")] | [("always" | "always-multiline" | "never"), {
18484
+ ignoreJSX?: boolean;
18485
+ }]; // ----- vue/mustache-interpolation-spacing -----
18438
18486
  type VueMustacheInterpolationSpacing = [] | [("always" | "never")]; // ----- vue/new-line-between-multi-line-property -----
18439
18487
  type VueNewLineBetweenMultiLineProperty = [] | [{
18440
18488
  minLineOfMultilineProperty?: number;
@@ -18494,6 +18542,13 @@ type VueNoExtraParens = ([] | ["functions"] | [] | ["all"] | ["all", {
18494
18542
  enforceForNewInMemberExpressions?: boolean;
18495
18543
  enforceForFunctionPrototypeMethods?: boolean;
18496
18544
  allowParensAfterCommentPattern?: string;
18545
+ nestedConditionalExpressions?: boolean;
18546
+ allowNodesInSpreadElement?: {
18547
+ ConditionalExpression?: boolean;
18548
+ LogicalExpression?: boolean;
18549
+ AwaitExpression?: boolean;
18550
+ };
18551
+ ignoredNodes?: string[];
18497
18552
  }]); // ----- vue/no-implicit-coercion -----
18498
18553
  type VueNoImplicitCoercion = [] | [{
18499
18554
  boolean?: boolean;
@@ -18717,14 +18772,41 @@ type VueObjectCurlyNewline = [] | [((("always" | "never") | {
18717
18772
  minProperties?: number;
18718
18773
  consistent?: boolean;
18719
18774
  });
18775
+ TSTypeLiteral?: (("always" | "never") | {
18776
+ multiline?: boolean;
18777
+ minProperties?: number;
18778
+ consistent?: boolean;
18779
+ });
18780
+ TSInterfaceBody?: (("always" | "never") | {
18781
+ multiline?: boolean;
18782
+ minProperties?: number;
18783
+ consistent?: boolean;
18784
+ });
18785
+ TSEnumBody?: (("always" | "never") | {
18786
+ multiline?: boolean;
18787
+ minProperties?: number;
18788
+ consistent?: boolean;
18789
+ });
18720
18790
  })]; // ----- vue/object-curly-spacing -----
18721
18791
  type VueObjectCurlySpacing = [] | [("always" | "never")] | [("always" | "never"), {
18722
18792
  arraysInObjects?: boolean;
18723
18793
  objectsInObjects?: boolean;
18794
+ overrides?: {
18795
+ ObjectPattern?: ("always" | "never");
18796
+ ObjectExpression?: ("always" | "never");
18797
+ ImportDeclaration?: ("always" | "never");
18798
+ ImportAttributes?: ("always" | "never");
18799
+ ExportNamedDeclaration?: ("always" | "never");
18800
+ ExportAllDeclaration?: ("always" | "never");
18801
+ TSMappedType?: ("always" | "never");
18802
+ TSTypeLiteral?: ("always" | "never");
18803
+ TSInterfaceBody?: ("always" | "never");
18804
+ TSEnumBody?: ("always" | "never");
18805
+ };
18806
+ emptyObjects?: ("ignore" | "always" | "never");
18724
18807
  }]; // ----- vue/object-property-newline -----
18725
18808
  type VueObjectPropertyNewline = [] | [{
18726
18809
  allowAllPropertiesOnSameLine?: boolean;
18727
- allowMultiplePropertiesPerLine?: boolean;
18728
18810
  }]; // ----- vue/object-shorthand -----
18729
18811
  type VueObjectShorthand = ([] | [("always" | "methods" | "properties" | "never" | "consistent" | "consistent-as-needed")] | [] | [("always" | "methods" | "properties")] | [("always" | "methods" | "properties"), {
18730
18812
  avoidQuotes?: boolean;
@@ -18734,7 +18816,7 @@ type VueObjectShorthand = ([] | [("always" | "methods" | "properties" | "never"
18734
18816
  avoidQuotes?: boolean;
18735
18817
  avoidExplicitReturnArrows?: boolean;
18736
18818
  }]); // ----- vue/operator-linebreak -----
18737
- type VueOperatorLinebreak = [] | [("after" | "before" | "none" | null)] | [("after" | "before" | "none" | null), {
18819
+ type VueOperatorLinebreak = [] | [(("after" | "before" | "none") | null)] | [(("after" | "before" | "none") | null), {
18738
18820
  overrides?: {
18739
18821
  [k: string]: ("after" | "before" | "none" | "ignore") | undefined;
18740
18822
  };
@@ -18822,6 +18904,7 @@ type VueSpaceInParens = [] | [("always" | "never")] | [("always" | "never"), {
18822
18904
  }]; // ----- vue/space-infix-ops -----
18823
18905
  type VueSpaceInfixOps = [] | [{
18824
18906
  int32Hint?: boolean;
18907
+ ignoreTypes?: boolean;
18825
18908
  }]; // ----- vue/space-unary-ops -----
18826
18909
  type VueSpaceUnaryOps = [] | [{
18827
18910
  words?: boolean;
@@ -19063,7 +19146,7 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
19063
19146
  exceptRange?: boolean;
19064
19147
  onlyEquality?: boolean;
19065
19148
  }]; // Names of all the configs
19066
- type ConfigNames = 'config/gitignore' | 'config/ignores' | 'config/javascript/setup' | 'config/javascript/rules' | 'config/eslint-comments/rules' | 'config/node/setup' | 'config/node/rules' | 'config/jsdoc/setup' | 'config/jsdoc/rules' | 'config/imports/rules' | 'config/command/rules' | 'config/perfectionist/setup' | 'config/node/setup' | 'config/node/rules' | 'config/jsdoc/setup' | 'config/jsdoc/rules' | 'config/imports/rules' | 'config/unicorn' | 'config/jsx/setup' | 'config/typescript/setup' | 'config/typescript/parser' | 'config/typescript/type-aware-parser' | 'config/typescript/rules' | 'config/typescript/rules-type-aware' | 'config/typescript/erasable-syntax-only' | 'config/stylistic/rules' | 'config/regexp/rules' | 'config/test/setup' | 'config/test/rules' | 'config/vue/setup' | 'config/vue/rules' | 'config/react/setup' | 'config/react/rules' | 'antfu/react/typescript' | 'config/react/type-aware-rules' | 'config/nextjs/setup' | 'config/nextjs/rules' | 'config/solid/setup' | 'config/solid/rules' | 'config/svelte/setup' | 'config/svelte/rules' | 'config/unocss/rules' | 'config/astro/setup' | 'config/astro/rules' | 'antfu/angular/setup' | 'antfu/angular/rules/ts' | 'antfu/angular/rules/template' | 'config/jsonc/setup' | 'config/jsonc/rules' | 'config/sort/package-json' | 'config/sort/tsconfig-json' | 'config/pnpm/package-json' | 'config/pnpm/pnpm-workspace-yaml' | 'config/pnpm/pnpm-workspace-yaml-sort' | 'config/yaml/setup' | 'config/yaml/rules' | 'config/toml/setup' | 'config/toml/rules' | 'config/markdown/setup' | 'config/markdown/processor' | 'config/markdown/parser' | 'config/markdown/rules' | 'config/markdown/disables/markdown' | 'config/markdown/disables/code' | 'config/formatters/setup' | 'config/formatter/css' | 'config/formatter/scss' | 'config/formatter/less' | 'config/formatter/html' | 'config/formatter/xml' | 'config/formatter/svg' | 'config/formatter/markdown' | 'config/formatter/astro' | 'config/formatter/astro/disables' | 'config/formatter/graphql' | 'config/disables/scripts' | 'config/disables/cli' | 'config/disables/bin' | 'config/disables/dts' | 'config/disables/cjs' | 'config/disables/config-files';
19149
+ type ConfigNames = 'config/gitignore' | 'config/ignores' | 'config/javascript/setup' | 'config/javascript/rules' | 'config/eslint-comments/rules' | 'config/node/setup' | 'config/node/rules' | 'config/jsdoc/setup' | 'config/jsdoc/rules' | 'config/imports/rules' | 'config/command/rules' | 'config/perfectionist/setup' | 'config/node/setup' | 'config/node/rules' | 'config/jsdoc/setup' | 'config/jsdoc/rules' | 'config/imports/rules' | 'config/unicorn' | 'config/jsx/setup' | 'config/typescript/setup' | 'config/typescript/parser' | 'config/typescript/type-aware-parser' | 'config/typescript/rules' | 'config/typescript/rules-type-aware' | 'config/typescript/erasable-syntax-only' | 'config/stylistic/rules' | 'config/regexp/rules' | 'config/test/setup' | 'config/test/rules' | 'config/vue/setup' | 'config/vue/rules' | 'config/react/setup' | 'config/react/rules' | 'config/react/typescript' | 'config/react/type-aware-rules' | 'config/nextjs/setup' | 'config/nextjs/rules' | 'config/solid/setup' | 'config/solid/rules' | 'config/svelte/setup' | 'config/svelte/rules' | 'config/unocss/rules' | 'config/astro/setup' | 'config/astro/rules' | 'antfu/angular/setup' | 'antfu/angular/rules/ts' | 'antfu/angular/rules/template' | 'config/jsonc/setup' | 'config/jsonc/rules' | 'config/sort/package-json' | 'config/sort/tsconfig-json' | 'config/pnpm/package-json' | 'config/pnpm/pnpm-workspace-yaml' | 'config/pnpm/pnpm-workspace-yaml-sort' | 'config/yaml/setup' | 'config/yaml/rules' | 'config/toml/setup' | 'config/toml/rules' | 'config/markdown/setup' | 'config/markdown/processor' | 'config/markdown/parser' | 'config/markdown/rules' | 'config/markdown/disables/code' | 'config/formatters/setup' | 'config/formatter/css' | 'config/formatter/scss' | 'config/formatter/less' | 'config/formatter/html' | 'config/formatter/xml' | 'config/formatter/svg' | 'config/formatter/markdown' | 'config/formatter/astro' | 'config/formatter/astro/disables' | 'config/formatter/graphql' | 'config/disables/scripts' | 'config/disables/cli' | 'config/disables/bin' | 'config/disables/dts' | 'config/disables/cjs' | 'config/disables/config-files';
19067
19150
  //#endregion
19068
19151
  //#region src/vender/prettier-types.d.ts
19069
19152
  /**
@@ -19393,7 +19476,7 @@ interface OptionsStylistic {
19393
19476
  interface OptionsStylistic {
19394
19477
  stylistic?: boolean | StylisticConfig;
19395
19478
  }
19396
- interface StylisticConfig extends Pick<StylisticCustomizeOptions, "indent" | "quotes" | "jsx" | "semi" | "experimental"> {}
19479
+ interface StylisticConfig extends Pick<StylisticCustomizeOptions, "indent" | "quotes" | "jsx" | "semi" | "braceStyle" | "experimental"> {}
19397
19480
  interface OptionsOverrides {
19398
19481
  overrides?: TypedFlatConfigItem["rules"];
19399
19482
  }
@@ -19556,6 +19639,12 @@ interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
19556
19639
  */
19557
19640
  unicorn?: boolean | OptionsUnicorn;
19558
19641
  /**
19642
+ * Options for eslint-plugin-perfectionist.
19643
+ *
19644
+ * @default true
19645
+ */
19646
+ perfectionist?: boolean | OptionsOverrides;
19647
+ /**
19559
19648
  * Options for eslint-plugin-import-lite.
19560
19649
  *
19561
19650
  * @default true
@@ -19725,10 +19814,6 @@ interface OptionsConfig extends OptionsComponentExts, OptionsProjectType {
19725
19814
  //#region src/factory.d.ts
19726
19815
  declare const defaultPluginRenaming: {
19727
19816
  "@eslint-react": string;
19728
- "@eslint-react/dom": string;
19729
- "@eslint-react/naming-convention": string;
19730
- "@eslint-react/rsc": string;
19731
- "@eslint-react/web-api": string;
19732
19817
  "@next/next": string;
19733
19818
  "@stylistic": string;
19734
19819
  "@typescript-eslint": string;
@@ -19812,7 +19897,7 @@ declare function node(): Promise<TypedFlatConfigItem[]>;
19812
19897
  *
19813
19898
  * @see https://github.com/azat-io/eslint-plugin-perfectionist
19814
19899
  */
19815
- declare function perfectionist(): Promise<TypedFlatConfigItem[]>;
19900
+ declare function perfectionist(options: OptionsOverrides): Promise<TypedFlatConfigItem[]>;
19816
19901
  //#endregion
19817
19902
  //#region src/configs/pnpm.d.ts
19818
19903
  declare function pnpm(options: OptionsPnpm): Promise<TypedFlatConfigItem[]>;
package/dist/index.mjs CHANGED
@@ -454,6 +454,7 @@ async function e18e(options = {}) {
454
454
  //#endregion
455
455
  //#region src/configs/stylistic.ts
456
456
  const StylisticConfigDefaults = {
457
+ braceStyle: "stroustrup",
457
458
  experimental: false,
458
459
  indent: 2,
459
460
  jsx: true,
@@ -461,12 +462,13 @@ const StylisticConfigDefaults = {
461
462
  semi: false
462
463
  };
463
464
  async function stylistic(options = {}) {
464
- const { experimental, indent, jsx, overrides = {}, lessOpinionated = false, quotes, semi } = {
465
+ const { braceStyle, experimental, indent, jsx, overrides = {}, lessOpinionated = false, quotes, semi } = {
465
466
  ...StylisticConfigDefaults,
466
467
  ...options
467
468
  };
468
469
  const pluginStylistic = await interopDefault(import("@stylistic/eslint-plugin"));
469
470
  const config = pluginStylistic.configs.customize({
471
+ braceStyle,
470
472
  experimental,
471
473
  indent,
472
474
  jsx,
@@ -1063,21 +1065,6 @@ async function markdown(options = {}) {
1063
1065
  ...overridesMarkdown
1064
1066
  }
1065
1067
  },
1066
- {
1067
- files,
1068
- name: "config/markdown/disables/markdown",
1069
- rules: {
1070
- "command/command": "off",
1071
- "no-irregular-whitespace": "off",
1072
- "perfectionist/sort-exports": "off",
1073
- "perfectionist/sort-imports": "off",
1074
- "regexp/no-legacy-features": "off",
1075
- "regexp/no-missing-g-flag": "off",
1076
- "regexp/no-useless-dollar-replacements": "off",
1077
- "regexp/no-useless-flag": "off",
1078
- "style/indent": "off"
1079
- }
1080
- },
1081
1068
  {
1082
1069
  files: [GLOB_MARKDOWN_CODE, ...componentExts.map((ext) => `${GLOB_MARKDOWN}/**/*.${ext}`)],
1083
1070
  languageOptions: { parserOptions: { ecmaFeatures: { impliedStrict: true } } },
@@ -1173,7 +1160,8 @@ async function node() {
1173
1160
  *
1174
1161
  * @see https://github.com/azat-io/eslint-plugin-perfectionist
1175
1162
  */
1176
- async function perfectionist() {
1163
+ async function perfectionist(options) {
1164
+ const { overrides = {} } = options;
1177
1165
  return [{
1178
1166
  name: "config/perfectionist/setup",
1179
1167
  plugins: { perfectionist: pluginPerfectionist },
@@ -1222,7 +1210,8 @@ async function perfectionist() {
1222
1210
  order: "asc",
1223
1211
  type: "natural"
1224
1212
  }]
1225
- }
1213
+ },
1214
+ ...overrides
1226
1215
  }];
1227
1216
  }
1228
1217
  //#endregion
@@ -1426,11 +1415,10 @@ async function react(options = {}) {
1426
1415
  },
1427
1416
  {
1428
1417
  files: filesTypeAware,
1429
- name: "antfu/react/typescript",
1418
+ name: "config/react/typescript",
1430
1419
  rules: {
1431
- "react-dom/no-string-style-prop": "off",
1432
- "react-dom/no-unknown-property": "off",
1433
- "react/jsx-no-duplicate-props": "off"
1420
+ "react/dom-no-string-style-prop": "off",
1421
+ "react/dom-no-unknown-property": "off"
1434
1422
  }
1435
1423
  },
1436
1424
  ...isTypeAware ? [{
@@ -1775,26 +1763,10 @@ async function svelte(options = {}) {
1775
1763
  vars: "all",
1776
1764
  varsIgnorePattern: "^(\\$\\$Props$|\\$\\$Events$|\\$\\$Slots$)"
1777
1765
  }],
1778
- "svelte/comment-directive": "error",
1779
- "svelte/no-at-debug-tags": "warn",
1780
- "svelte/no-at-html-tags": "error",
1781
- "svelte/no-dupe-else-if-blocks": "error",
1782
- "svelte/no-dupe-style-properties": "error",
1783
- "svelte/no-dupe-use-directives": "error",
1784
- "svelte/no-export-load-in-svelte-module-in-kit-pages": "error",
1785
- "svelte/no-inner-declarations": "error",
1786
- "svelte/no-not-function-handler": "error",
1787
- "svelte/no-object-in-text-mustaches": "error",
1788
- "svelte/no-reactive-functions": "error",
1789
- "svelte/no-reactive-literals": "error",
1790
- "svelte/no-shorthand-style-property-overrides": "error",
1791
- "svelte/no-unknown-style-directive-property": "error",
1792
- "svelte/no-unused-svelte-ignore": "error",
1793
- "svelte/no-useless-mustaches": "error",
1794
- "svelte/require-store-callbacks-use-set-param": "error",
1795
- "svelte/system": "error",
1796
- "svelte/valid-compile": "error",
1797
- "svelte/valid-each-key": "error",
1766
+ ...pluginSvelte.configs.recommended.map((config) => config.rules).reduce((acc, rules) => ({
1767
+ ...acc,
1768
+ ...rules
1769
+ }), {}),
1798
1770
  "unused-imports/no-unused-vars": ["error", {
1799
1771
  args: "after-used",
1800
1772
  argsIgnorePattern: "^_",
@@ -2131,7 +2103,7 @@ async function vue(options = {}) {
2131
2103
  ...a11y ? ["eslint-plugin-vuejs-accessibility"] : []
2132
2104
  ]);
2133
2105
  const sfcBlocks = options.sfcBlocks === true ? {} : options.sfcBlocks ?? {};
2134
- const { indent = 2 } = typeof stylistic === "boolean" ? {} : stylistic;
2106
+ const { braceStyle = "stroustrup", indent = 2 } = typeof stylistic === "boolean" ? {} : stylistic;
2135
2107
  const [pluginVue, parserVue, processorVueBlocks, pluginVueA11y] = await Promise.all([
2136
2108
  interopDefault(import("eslint-plugin-vue")),
2137
2109
  interopDefault(import("vue-eslint-parser")),
@@ -2269,7 +2241,7 @@ async function vue(options = {}) {
2269
2241
  }],
2270
2242
  "vue/brace-style": [
2271
2243
  "error",
2272
- "stroustrup",
2244
+ braceStyle,
2273
2245
  { allowSingleLine: true }
2274
2246
  ],
2275
2247
  "vue/comma-dangle": ["error", "always-multiline"],
@@ -2389,10 +2361,6 @@ const VuePackages = [
2389
2361
  ];
2390
2362
  const defaultPluginRenaming = {
2391
2363
  "@eslint-react": "react",
2392
- "@eslint-react/dom": "react-dom",
2393
- "@eslint-react/naming-convention": "react-naming-convention",
2394
- "@eslint-react/rsc": "react-rsc",
2395
- "@eslint-react/web-api": "react-web-api",
2396
2364
  "@next/next": "next",
2397
2365
  "@stylistic": "style",
2398
2366
  "@typescript-eslint": "ts",
@@ -2411,7 +2379,7 @@ const defaultPluginRenaming = {
2411
2379
  * The merged ESLint configurations.
2412
2380
  */
2413
2381
  function eslintFlatConfig(options = {}, ...userConfigs) {
2414
- const { angular: enableAngular = false, astro: enableAstro = false, autoRenamePlugins = true, componentExts = [], e18e: enableE18e = false, gitignore: enableGitignore = true, ignores: userIgnores = [], imports: enableImports = true, jsdoc: enableJsdoc = true, jsx: enableJsx = true, nextjs: enableNextjs = false, node: enableNode = true, pnpm: enableCatalogs = !!findUpSync("pnpm-workspace.yaml"), react: enableReact = false, regexp: enableRegexp = true, svelte: enableSvelte = false, solid: enableSolid = false, type: appType = "app", typescript: enableTypeScript = isPackageExists("typescript") || isPackageExists("@typescript/native-preview"), unicorn: enableUnicorn = true, unocss: enableUnoCSS = false, tailwindcss: enableTailwindcss = false, vue: enableVue = VuePackages.some((i) => isPackageExists(i)) } = options;
2382
+ const { angular: enableAngular = false, astro: enableAstro = false, autoRenamePlugins = true, componentExts = [], e18e: enableE18e = false, gitignore: enableGitignore = true, ignores: userIgnores = [], imports: enableImports = true, jsdoc: enableJsdoc = true, jsx: enableJsx = true, nextjs: enableNextjs = false, node: enableNode = true, perfectionist: enablePerfectionist = true, pnpm: enableCatalogs = !!findUpSync("pnpm-workspace.yaml"), react: enableReact = false, regexp: enableRegexp = true, svelte: enableSvelte = false, solid: enableSolid = false, type: appType = "app", typescript: enableTypeScript = isPackageExists("typescript") || isPackageExists("@typescript/native-preview"), unicorn: enableUnicorn = true, unocss: enableUnoCSS = false, tailwindcss: enableTailwindcss = false, vue: enableVue = VuePackages.some((i) => isPackageExists(i)) } = options;
2415
2383
  let isInEditor = options.isInEditor;
2416
2384
  if (isInEditor == null) {
2417
2385
  isInEditor = isInEditorEnv();
@@ -2433,7 +2401,8 @@ function eslintFlatConfig(options = {}, ...userConfigs) {
2433
2401
  configs.push(ignores(userIgnores, !enableTypeScript), javascript({
2434
2402
  isInEditor,
2435
2403
  overrides: getOverrides(options, "javascript")
2436
- }), comments(), node(), jsdoc({ stylistic: stylisticOptions }), imports({ stylistic: stylisticOptions }), command(), perfectionist());
2404
+ }), comments(), node(), jsdoc({ stylistic: stylisticOptions }), imports({ stylistic: stylisticOptions }), command());
2405
+ if (enablePerfectionist) configs.push(perfectionist({ overrides: getOverrides(options, "perfectionist") }));
2437
2406
  if (enableNode) configs.push(node());
2438
2407
  if (enableJsdoc) configs.push(jsdoc({ stylistic: stylisticOptions }));
2439
2408
  if (enableImports) configs.push(imports({
@@ -2563,6 +2532,7 @@ const CONFIG_PRESET_FULL_ON = {
2563
2532
  markdown: true,
2564
2533
  nextjs: true,
2565
2534
  node: true,
2535
+ perfectionist: true,
2566
2536
  pnpm: true,
2567
2537
  react: true,
2568
2538
  regexp: true,
@@ -2592,6 +2562,7 @@ const CONFIG_PRESET_FULL_OFF = {
2592
2562
  markdown: false,
2593
2563
  nextjs: false,
2594
2564
  node: false,
2565
+ perfectionist: false,
2595
2566
  pnpm: false,
2596
2567
  react: false,
2597
2568
  regexp: false,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pengzhanbo/eslint-config",
3
3
  "type": "module",
4
- "version": "2.4.1",
4
+ "version": "2.5.0",
5
5
  "author": "pengzhanbo <q942450674@outlook.com> (https://github/pengzhanbo/)",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/pengzhanbo/configs#readme",
@@ -22,28 +22,28 @@
22
22
  "dist"
23
23
  ],
24
24
  "peerDependencies": {
25
- "@angular-eslint/eslint-plugin": "^21.3.1",
26
- "@angular-eslint/eslint-plugin-template": "^21.3.1",
27
- "@angular-eslint/template-parser": "^21.3.1",
28
- "@eslint-react/eslint-plugin": "^5.7.4",
29
- "@next/eslint-plugin-next": "^16.2.6",
25
+ "@angular-eslint/eslint-plugin": "^21.4.0",
26
+ "@angular-eslint/eslint-plugin-template": "^21.4.0",
27
+ "@angular-eslint/template-parser": "^21.4.0",
28
+ "@eslint-react/eslint-plugin": "^5.8.10",
29
+ "@next/eslint-plugin-next": "^16.2.7",
30
30
  "@prettier/plugin-xml": "^3.4.2",
31
- "@unocss/eslint-plugin": "^66.6.8",
31
+ "@unocss/eslint-plugin": "^66.7.0",
32
32
  "astro-eslint-parser": "^1.4.0",
33
- "eslint": "^10.3.0",
33
+ "eslint": "^10.4.1",
34
34
  "eslint-plugin-astro": "^1.7.0",
35
35
  "eslint-plugin-format": "^2.0.1",
36
36
  "eslint-plugin-react-refresh": "^0.5.2",
37
37
  "eslint-plugin-solid": "^0.14.5",
38
- "eslint-plugin-svelte": "^3.17.1",
38
+ "eslint-plugin-svelte": "^3.19.0",
39
39
  "eslint-plugin-tailwindcss": "^3.18.3",
40
40
  "eslint-plugin-vue": "^10.9.1",
41
41
  "eslint-plugin-vuejs-accessibility": "^2.4.1",
42
42
  "eslint-processor-vue-blocks": "^2.0.0",
43
43
  "prettier-plugin-astro": "^0.14.1",
44
44
  "prettier-plugin-slidev": "^1.0.5",
45
- "svelte-eslint-parser": "^1.6.1",
46
- "vue-eslint-parser": "^10.4.0"
45
+ "svelte-eslint-parser": "^1.7.1",
46
+ "vue-eslint-parser": "^10.4.1"
47
47
  },
48
48
  "peerDependenciesMeta": {
49
49
  "@angular-eslint/eslint-plugin": {
@@ -109,55 +109,55 @@
109
109
  },
110
110
  "dependencies": {
111
111
  "@antfu/install-pkg": "^1.1.0",
112
- "@e18e/eslint-plugin": "^0.4.1",
113
- "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
114
- "@eslint/markdown": "^8.0.1",
112
+ "@e18e/eslint-plugin": "^0.5.0",
113
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.7.2",
114
+ "@eslint/markdown": "^8.0.2",
115
115
  "@stylistic/eslint-plugin": "^5.10.0",
116
- "@typescript-eslint/eslint-plugin": "^8.59.2",
117
- "@typescript-eslint/parser": "^8.59.2",
118
- "@vitest/eslint-plugin": "^1.6.17",
116
+ "@typescript-eslint/eslint-plugin": "^8.60.1",
117
+ "@typescript-eslint/parser": "^8.60.1",
118
+ "@vitest/eslint-plugin": "^1.6.19",
119
119
  "eslint-config-flat-gitignore": "^2.3.0",
120
120
  "eslint-flat-config-utils": "^3.2.0",
121
121
  "eslint-merge-processors": "^2.0.0",
122
- "eslint-plugin-antfu": "^3.2.2",
122
+ "eslint-plugin-antfu": "^3.2.3",
123
123
  "eslint-plugin-command": "^3.5.2",
124
124
  "eslint-plugin-erasable-syntax-only": "^0.4.1",
125
125
  "eslint-plugin-import-lite": "^0.6.0",
126
- "eslint-plugin-jsdoc": "^62.9.0",
127
- "eslint-plugin-jsonc": "^3.1.2",
126
+ "eslint-plugin-jsdoc": "^63.0.1",
127
+ "eslint-plugin-jsonc": "^3.2.0",
128
128
  "eslint-plugin-jsx-a11y": "^6.10.2",
129
129
  "eslint-plugin-n": "^18.0.1",
130
130
  "eslint-plugin-no-only-tests": "^3.4.0",
131
131
  "eslint-plugin-perfectionist": "^5.9.0",
132
- "eslint-plugin-pnpm": "^1.6.0",
132
+ "eslint-plugin-pnpm": "^1.6.1",
133
133
  "eslint-plugin-regexp": "^3.1.0",
134
- "eslint-plugin-toml": "^1.3.1",
134
+ "eslint-plugin-toml": "^1.4.0",
135
135
  "eslint-plugin-unicorn": "^64.0.0",
136
136
  "eslint-plugin-unused-imports": "^4.4.1",
137
- "eslint-plugin-yml": "^3.3.2",
137
+ "eslint-plugin-yml": "^3.4.0",
138
138
  "globals": "^17.6.0",
139
- "local-pkg": "^1.1.2",
139
+ "local-pkg": "^1.2.1",
140
140
  "parse-gitignore": "^2.0.0",
141
141
  "toml-eslint-parser": "^1.0.3",
142
142
  "yaml-eslint-parser": "^2.0.0"
143
143
  },
144
144
  "devDependencies": {
145
- "@angular-eslint/eslint-plugin": "^21.3.1",
146
- "@angular-eslint/eslint-plugin-template": "^21.3.1",
147
- "@angular-eslint/template-parser": "^21.3.1",
148
- "@angular/core": "^21.2.12",
149
- "@eslint-react/eslint-plugin": "^5.7.4",
150
- "@eslint/config-inspector": "^2.0.1",
151
- "@next/eslint-plugin-next": "^16.2.6",
145
+ "@angular-eslint/eslint-plugin": "^21.4.0",
146
+ "@angular-eslint/eslint-plugin-template": "^21.4.0",
147
+ "@angular-eslint/template-parser": "^21.4.0",
148
+ "@angular/core": "^21.2.15",
149
+ "@eslint-react/eslint-plugin": "^5.8.10",
150
+ "@eslint/config-inspector": "^3.0.4",
151
+ "@next/eslint-plugin-next": "^16.2.7",
152
152
  "@prettier/plugin-xml": "^3.4.2",
153
- "@unocss/eslint-plugin": "^66.6.8",
153
+ "@unocss/eslint-plugin": "^66.7.0",
154
154
  "astro-eslint-parser": "^1.4.0",
155
- "eslint": "^10.3.0",
155
+ "eslint": "^10.4.1",
156
156
  "eslint-plugin-astro": "^1.7.0",
157
157
  "eslint-plugin-format": "^2.0.1",
158
158
  "eslint-plugin-react-refresh": "^0.5.2",
159
159
  "eslint-plugin-solid": "^0.14.5",
160
- "eslint-plugin-svelte": "^3.17.1",
160
+ "eslint-plugin-svelte": "^3.19.0",
161
161
  "eslint-plugin-tailwindcss": "^3.18.3",
162
162
  "eslint-plugin-vue": "^10.9.1",
163
163
  "eslint-plugin-vuejs-accessibility": "^2.5.0",
@@ -166,9 +166,9 @@
166
166
  "find-up-simple": "^1.0.1",
167
167
  "prettier-plugin-astro": "^0.14.1",
168
168
  "prettier-plugin-slidev": "^1.0.5",
169
- "svelte": "^5.55.5",
170
- "svelte-eslint-parser": "^1.6.1",
171
- "vue-eslint-parser": "^10.4.0"
169
+ "svelte": "^5.56.1",
170
+ "svelte-eslint-parser": "^1.7.1",
171
+ "vue-eslint-parser": "^10.4.1"
172
172
  },
173
173
  "inlinedDependencies": {
174
174
  "find-up-simple": "1.0.1"