@lntvow/eslint-config 9.20.2 → 9.20.5

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 ADDED
@@ -0,0 +1,41 @@
1
+ # @lntvow/eslint-config
2
+
3
+ ## Usage
4
+
5
+ install @lntvow/eslint-config
6
+
7
+ ```bash
8
+ pnpm install -D @lntvow/eslint-config
9
+ ```
10
+
11
+ create `eslint.config.js` in your project root
12
+
13
+ ```js
14
+ // eslint.config.js
15
+ import { lntvow } from '@lntvow/eslint-config'
16
+
17
+ export default lntvow()
18
+ ```
19
+
20
+ ## Plugins
21
+
22
+ 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.
23
+
24
+ | New Prefix | Original Prefix | Source Plugin |
25
+ | ---------- | ---------------------- | ------------------------------------------------------------------------------------------ |
26
+ | `ts/*` | `@typescript-eslint/*` | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) |
27
+ | `vue/*` | `@vue/*` | [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) |
28
+ | `import/*` | `import-x/*` | [eslint-plugin-import-x](https://github.com/un-es/eslint-plugin-import-x) |
29
+ | `style/*` | `@stylistic/*` | [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic) |
30
+
31
+ ## Tips
32
+
33
+ - If the project is installed via `npm` or `yarn`, you can skip this tip.
34
+ - If you do not want to manually install `eslint` and other dependencies, and choose to use `pnpm` for installation, please note the following points:
35
+ - Due to the symbolic link feature of `pnpm` conflicting with the functionality of `eslint`, some packages must be hoisted to the root of `node_modules`.
36
+ - Create a `.npmrc` file in the root directory of the project and write `shamefully-hoist=true`. This command is used to hoist dependencies to the root of `node_modules`, then you can reinstall the dependencies.
37
+ - Alternatively, you can also choose to manually install `eslint` and other dependencies to the root of `node_modules`.
38
+
39
+ ## Todo
40
+
41
+ - `.gitignore` 功能异常
package/dist/index.d.cts CHANGED
@@ -3049,7 +3049,7 @@ interface RuleOptions {
3049
3049
  * Disallow using code marked as `@deprecated`
3050
3050
  * @see https://typescript-eslint.io/rules/no-deprecated
3051
3051
  */
3052
- 'ts/no-deprecated'?: Linter.RuleEntry<[]>
3052
+ 'ts/no-deprecated'?: Linter.RuleEntry<TsNoDeprecated>
3053
3053
  /**
3054
3054
  * Disallow duplicate class members
3055
3055
  * @see https://typescript-eslint.io/rules/no-dupe-class-members
@@ -3167,6 +3167,11 @@ interface RuleOptions {
3167
3167
  * @see https://typescript-eslint.io/rules/no-misused-promises
3168
3168
  */
3169
3169
  'ts/no-misused-promises'?: Linter.RuleEntry<TsNoMisusedPromises>
3170
+ /**
3171
+ * Disallow using the spread operator when it might cause unexpected behavior
3172
+ * @see https://typescript-eslint.io/rules/no-misused-spread
3173
+ */
3174
+ 'ts/no-misused-spread'?: Linter.RuleEntry<TsNoMisusedSpread>
3170
3175
  /**
3171
3176
  * Disallow enums from having both number and string members
3172
3177
  * @see https://typescript-eslint.io/rules/no-mixed-enums
@@ -3318,6 +3323,11 @@ interface RuleOptions {
3318
3323
  * @see https://typescript-eslint.io/rules/no-unsafe-return
3319
3324
  */
3320
3325
  'ts/no-unsafe-return'?: Linter.RuleEntry<[]>
3326
+ /**
3327
+ * Disallow type assertions that narrow a type
3328
+ * @see https://typescript-eslint.io/rules/no-unsafe-type-assertion
3329
+ */
3330
+ 'ts/no-unsafe-type-assertion'?: Linter.RuleEntry<[]>
3321
3331
  /**
3322
3332
  * Require unary negation to take a number
3323
3333
  * @see https://typescript-eslint.io/rules/no-unsafe-unary-minus
@@ -3360,7 +3370,7 @@ interface RuleOptions {
3360
3370
  */
3361
3371
  'ts/no-wrapper-object-types'?: Linter.RuleEntry<[]>
3362
3372
  /**
3363
- * Enforce non-null assertions over explicit type casts
3373
+ * Enforce non-null assertions over explicit type assertions
3364
3374
  * @see https://typescript-eslint.io/rules/non-nullable-type-assertion-style
3365
3375
  */
3366
3376
  'ts/non-nullable-type-assertion-style'?: Linter.RuleEntry<[]>
@@ -3445,7 +3455,7 @@ interface RuleOptions {
3445
3455
  */
3446
3456
  'ts/prefer-readonly-parameter-types'?: Linter.RuleEntry<TsPreferReadonlyParameterTypes>
3447
3457
  /**
3448
- * Enforce using type parameter when calling `Array#reduce` instead of casting
3458
+ * Enforce using type parameter when calling `Array#reduce` instead of using a type assertion
3449
3459
  * @see https://typescript-eslint.io/rules/prefer-reduce-type-parameter
3450
3460
  */
3451
3461
  'ts/prefer-reduce-type-parameter'?: Linter.RuleEntry<[]>
@@ -3475,6 +3485,11 @@ interface RuleOptions {
3475
3485
  * @see https://typescript-eslint.io/rules/promise-function-async
3476
3486
  */
3477
3487
  'ts/promise-function-async'?: Linter.RuleEntry<TsPromiseFunctionAsync>
3488
+ /**
3489
+ * Enforce that `get()` types should be assignable to their equivalent `set()` type
3490
+ * @see https://typescript-eslint.io/rules/related-getter-setter-pairs
3491
+ */
3492
+ 'ts/related-getter-setter-pairs'?: Linter.RuleEntry<[]>
3478
3493
  /**
3479
3494
  * Require `Array#sort` and `Array#toSorted` calls to always provide a `compareFunction`
3480
3495
  * @see https://typescript-eslint.io/rules/require-array-sort-compare
@@ -4011,7 +4026,7 @@ interface RuleOptions {
4011
4026
  * enforce `inheritAttrs` to be set to `false` when using `v-bind="$attrs"`
4012
4027
  * @see https://eslint.vuejs.org/rules/no-duplicate-attr-inheritance.html
4013
4028
  */
4014
- 'vue/no-duplicate-attr-inheritance'?: Linter.RuleEntry<[]>
4029
+ 'vue/no-duplicate-attr-inheritance'?: Linter.RuleEntry<VueNoDuplicateAttrInheritance>
4015
4030
  /**
4016
4031
  * disallow duplication of attributes
4017
4032
  * @see https://eslint.vuejs.org/rules/no-duplicate-attributes.html
@@ -4456,7 +4471,7 @@ interface RuleOptions {
4456
4471
  */
4457
4472
  'vue/prefer-true-attribute-shorthand'?: Linter.RuleEntry<VuePreferTrueAttributeShorthand>
4458
4473
  /**
4459
- * require using `useTemplateRef` instead of `ref` for template refs
4474
+ * require using `useTemplateRef` instead of `ref`/`shallowRef` for template refs
4460
4475
  * @see https://eslint.vuejs.org/rules/prefer-use-template-ref.html
4461
4476
  */
4462
4477
  'vue/prefer-use-template-ref'?: Linter.RuleEntry<[]>
@@ -4570,6 +4585,11 @@ interface RuleOptions {
4570
4585
  * @see https://eslint.vuejs.org/rules/require-valid-default-prop.html
4571
4586
  */
4572
4587
  'vue/require-valid-default-prop'?: Linter.RuleEntry<[]>
4588
+ /**
4589
+ * enforce using only specific component names
4590
+ * @see https://eslint.vuejs.org/rules/restricted-component-names.html
4591
+ */
4592
+ 'vue/restricted-component-names'?: Linter.RuleEntry<VueRestrictedComponentNames>
4573
4593
  /**
4574
4594
  * enforce that a return statement is present in computed property
4575
4595
  * @see https://eslint.vuejs.org/rules/return-in-computed-property.html
@@ -4596,6 +4616,11 @@ interface RuleOptions {
4596
4616
  * @see https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html
4597
4617
  */
4598
4618
  'vue/singleline-html-element-content-newline'?: Linter.RuleEntry<VueSinglelineHtmlElementContentNewline>
4619
+ /**
4620
+ * enforce specific casing for slot names
4621
+ * @see https://eslint.vuejs.org/rules/slot-name-casing.html
4622
+ */
4623
+ 'vue/slot-name-casing'?: Linter.RuleEntry<VueSlotNameCasing>
4599
4624
  /**
4600
4625
  * enforce sort-keys in a manner that is compatible with order-in-components
4601
4626
  * @see https://eslint.vuejs.org/rules/sort-keys.html
@@ -6644,6 +6669,8 @@ type StyleCommaDangle = []|[(_StyleCommaDangleValue | {
6644
6669
  imports?: _StyleCommaDangleValueWithIgnore
6645
6670
  exports?: _StyleCommaDangleValueWithIgnore
6646
6671
  functions?: _StyleCommaDangleValueWithIgnore
6672
+ importAttributes?: _StyleCommaDangleValueWithIgnore
6673
+ dynamicImports?: _StyleCommaDangleValueWithIgnore
6647
6674
  enums?: _StyleCommaDangleValueWithIgnore
6648
6675
  generics?: _StyleCommaDangleValueWithIgnore
6649
6676
  tuples?: _StyleCommaDangleValueWithIgnore
@@ -6793,12 +6820,20 @@ type StyleEolLast = []|[("always" | "never" | "unix" | "windows")]
6793
6820
  // ----- style/func-call-spacing -----
6794
6821
  type StyleFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
6795
6822
  allowNewlines?: boolean
6823
+ optionalChain?: {
6824
+ before?: boolean
6825
+ after?: boolean
6826
+ }
6796
6827
  }])
6797
6828
  // ----- style/function-call-argument-newline -----
6798
6829
  type StyleFunctionCallArgumentNewline = []|[("always" | "never" | "consistent")]
6799
6830
  // ----- style/function-call-spacing -----
6800
6831
  type StyleFunctionCallSpacing = ([]|["never"] | []|["always"]|["always", {
6801
6832
  allowNewlines?: boolean
6833
+ optionalChain?: {
6834
+ before?: boolean
6835
+ after?: boolean
6836
+ }
6802
6837
  }])
6803
6838
  // ----- style/function-paren-newline -----
6804
6839
  type StyleFunctionParenNewline = []|[(("always" | "never" | "consistent" | "multiline" | "multiline-arguments") | {
@@ -6852,6 +6887,7 @@ type StyleIndent = []|[("tab" | number)]|[("tab" | number), {
6852
6887
  ImportDeclaration?: (number | ("first" | "off"))
6853
6888
  flatTernaryExpressions?: boolean
6854
6889
  offsetTernaryExpressions?: boolean
6890
+ offsetTernaryExpressionsOffsetCallExpressions?: boolean
6855
6891
  ignoredNodes?: string[]
6856
6892
  ignoreComments?: boolean
6857
6893
  tabLength?: number
@@ -6995,6 +7031,7 @@ type StyleKeySpacing = []|[({
6995
7031
  mode?: ("strict" | "minimum")
6996
7032
  beforeColon?: boolean
6997
7033
  afterColon?: boolean
7034
+ ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[]
6998
7035
  } | {
6999
7036
  singleLine?: {
7000
7037
  mode?: ("strict" | "minimum")
@@ -7510,6 +7547,7 @@ type StyleNoExtraParens = ([]|["functions"] | []|["all"]|["all", {
7510
7547
  enforceForNewInMemberExpressions?: boolean
7511
7548
  enforceForFunctionPrototypeMethods?: boolean
7512
7549
  allowParensAfterCommentPattern?: string
7550
+ nestedConditionalExpressions?: boolean
7513
7551
  }])
7514
7552
  // ----- style/no-mixed-operators -----
7515
7553
  type StyleNoMixedOperators = []|[{
@@ -7607,14 +7645,14 @@ type StyleOperatorLinebreak = []|[(("after" | "before" | "none") | null)]|[(("af
7607
7645
  }
7608
7646
  }]
7609
7647
  // ----- style/padded-blocks -----
7610
- type StylePaddedBlocks = []|[(("always" | "never") | {
7611
- blocks?: ("always" | "never")
7612
- switches?: ("always" | "never")
7613
- classes?: ("always" | "never")
7614
- })]|[(("always" | "never") | {
7615
- blocks?: ("always" | "never")
7616
- switches?: ("always" | "never")
7617
- classes?: ("always" | "never")
7648
+ type StylePaddedBlocks = []|[(("always" | "never" | "start" | "end") | {
7649
+ blocks?: ("always" | "never" | "start" | "end")
7650
+ switches?: ("always" | "never" | "start" | "end")
7651
+ classes?: ("always" | "never" | "start" | "end")
7652
+ })]|[(("always" | "never" | "start" | "end") | {
7653
+ blocks?: ("always" | "never" | "start" | "end")
7654
+ switches?: ("always" | "never" | "start" | "end")
7655
+ classes?: ("always" | "never" | "start" | "end")
7618
7656
  }), {
7619
7657
  allowSingleLineBlocks?: boolean
7620
7658
  }]
@@ -7881,7 +7919,9 @@ type TsConsistentTypeAssertions = []|[({
7881
7919
  assertionStyle: "never"
7882
7920
  } | {
7883
7921
 
7884
- assertionStyle: ("as" | "angle-bracket")
7922
+ arrayLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never")
7923
+
7924
+ assertionStyle?: ("as" | "angle-bracket")
7885
7925
 
7886
7926
  objectLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never")
7887
7927
  })]
@@ -8337,6 +8377,22 @@ type TsNoConfusingVoidExpression = []|[{
8337
8377
 
8338
8378
  ignoreVoidReturningFunctions?: boolean
8339
8379
  }]
8380
+ // ----- ts/no-deprecated -----
8381
+ type TsNoDeprecated = []|[{
8382
+
8383
+ allow?: (string | {
8384
+ from: "file"
8385
+ name: (string | [string, ...(string)[]])
8386
+ path?: string
8387
+ } | {
8388
+ from: "lib"
8389
+ name: (string | [string, ...(string)[]])
8390
+ } | {
8391
+ from: "package"
8392
+ name: (string | [string, ...(string)[]])
8393
+ package: string
8394
+ })[]
8395
+ }]
8340
8396
  // ----- ts/no-duplicate-type-constituents -----
8341
8397
  type TsNoDuplicateTypeConstituents = []|[{
8342
8398
 
@@ -8478,6 +8534,22 @@ type TsNoMisusedPromises = []|[{
8478
8534
  variables?: boolean
8479
8535
  })
8480
8536
  }]
8537
+ // ----- ts/no-misused-spread -----
8538
+ type TsNoMisusedSpread = []|[{
8539
+
8540
+ allow?: (string | {
8541
+ from: "file"
8542
+ name: (string | [string, ...(string)[]])
8543
+ path?: string
8544
+ } | {
8545
+ from: "lib"
8546
+ name: (string | [string, ...(string)[]])
8547
+ } | {
8548
+ from: "package"
8549
+ name: (string | [string, ...(string)[]])
8550
+ package: string
8551
+ })[]
8552
+ }]
8481
8553
  // ----- ts/no-namespace -----
8482
8554
  type TsNoNamespace = []|[{
8483
8555
 
@@ -8553,7 +8625,7 @@ type TsNoShadow = []|[{
8553
8625
 
8554
8626
  builtinGlobals?: boolean
8555
8627
 
8556
- hoist?: ("all" | "functions" | "never")
8628
+ hoist?: ("all" | "functions" | "functions-and-types" | "never" | "types")
8557
8629
 
8558
8630
  ignoreFunctionTypeParameterNameValueShadow?: boolean
8559
8631
 
@@ -8593,6 +8665,8 @@ type TsNoUnnecessaryBooleanLiteralCompare = []|[{
8593
8665
  allowComparingNullableBooleansToFalse?: boolean
8594
8666
 
8595
8667
  allowComparingNullableBooleansToTrue?: boolean
8668
+
8669
+ allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean
8596
8670
  }]
8597
8671
  // ----- ts/no-unnecessary-condition -----
8598
8672
  type TsNoUnnecessaryCondition = []|[{
@@ -8772,6 +8846,10 @@ type TsPreferOptionalChain = []|[{
8772
8846
  type TsPreferPromiseRejectErrors = []|[{
8773
8847
 
8774
8848
  allowEmptyReject?: boolean
8849
+
8850
+ allowThrowingAny?: boolean
8851
+
8852
+ allowThrowingUnknown?: boolean
8775
8853
  }]
8776
8854
  // ----- ts/prefer-readonly -----
8777
8855
  type TsPreferReadonly = []|[{
@@ -8911,6 +8989,8 @@ type TsSwitchExhaustivenessCheck = []|[{
8911
8989
 
8912
8990
  considerDefaultExhaustiveForUnions?: boolean
8913
8991
 
8992
+ defaultCaseCommentPattern?: string
8993
+
8914
8994
  requireDefaultForNonUnion?: boolean
8915
8995
  }]
8916
8996
  // ----- ts/triple-slash-reference -----
@@ -8995,6 +9075,7 @@ type VueAttributeHyphenation = []|[("always" | "never")]|[("always" | "never"),
8995
9075
  } & {
8996
9076
  [k: string]: unknown | undefined
8997
9077
  })[]
9078
+ ignoreTags?: string[]
8998
9079
  }]
8999
9080
  // ----- vue/attributes-order -----
9000
9081
  type VueAttributesOrder = []|[{
@@ -9047,6 +9128,8 @@ type VueCommaDangle = []|[(_VueCommaDangleValue | {
9047
9128
  imports?: _VueCommaDangleValueWithIgnore
9048
9129
  exports?: _VueCommaDangleValueWithIgnore
9049
9130
  functions?: _VueCommaDangleValueWithIgnore
9131
+ importAttributes?: _VueCommaDangleValueWithIgnore
9132
+ dynamicImports?: _VueCommaDangleValueWithIgnore
9050
9133
  enums?: _VueCommaDangleValueWithIgnore
9051
9134
  generics?: _VueCommaDangleValueWithIgnore
9052
9135
  tuples?: _VueCommaDangleValueWithIgnore
@@ -9123,6 +9206,10 @@ type VueFirstAttributeLinebreak = []|[{
9123
9206
  // ----- vue/func-call-spacing -----
9124
9207
  type VueFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
9125
9208
  allowNewlines?: boolean
9209
+ optionalChain?: {
9210
+ before?: boolean
9211
+ after?: boolean
9212
+ }
9126
9213
  }])
9127
9214
  // ----- vue/html-button-has-type -----
9128
9215
  type VueHtmlButtonHasType = []|[{
@@ -9204,6 +9291,7 @@ type VueKeySpacing = []|[({
9204
9291
  mode?: ("strict" | "minimum")
9205
9292
  beforeColon?: boolean
9206
9293
  afterColon?: boolean
9294
+ ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[]
9207
9295
  } | {
9208
9296
  singleLine?: {
9209
9297
  mode?: ("strict" | "minimum")
@@ -9705,6 +9793,10 @@ type VueNoDeprecatedSlotAttribute = []|[{
9705
9793
  type VueNoDupeKeys = []|[{
9706
9794
  groups?: unknown[]
9707
9795
  }]
9796
+ // ----- vue/no-duplicate-attr-inheritance -----
9797
+ type VueNoDuplicateAttrInheritance = []|[{
9798
+ checkMultiRootNodes?: boolean
9799
+ }]
9708
9800
  // ----- vue/no-duplicate-attributes -----
9709
9801
  type VueNoDuplicateAttributes = []|[{
9710
9802
  allowCoexistClass?: boolean
@@ -9726,6 +9818,7 @@ type VueNoExtraParens = ([]|["functions"] | []|["all"]|["all", {
9726
9818
  enforceForNewInMemberExpressions?: boolean
9727
9819
  enforceForFunctionPrototypeMethods?: boolean
9728
9820
  allowParensAfterCommentPattern?: string
9821
+ nestedConditionalExpressions?: boolean
9729
9822
  }])
9730
9823
  // ----- vue/no-irregular-whitespace -----
9731
9824
  type VueNoIrregularWhitespace = []|[{
@@ -9940,6 +10033,7 @@ type VueNoUselessVBind = []|[{
9940
10033
  // ----- vue/no-v-text-v-html-on-component -----
9941
10034
  type VueNoVTextVHtmlOnComponent = []|[{
9942
10035
  allow?: string[]
10036
+ ignoreElementNamespaces?: boolean
9943
10037
  }]
9944
10038
  // ----- vue/object-curly-newline -----
9945
10039
  type VueObjectCurlyNewline = []|[((("always" | "never") | {
@@ -10060,6 +10154,10 @@ type VueRequirePropComment = []|[{
10060
10154
  type VueRequireToggleInsideTransition = []|[{
10061
10155
  additionalDirectives?: string[]
10062
10156
  }]
10157
+ // ----- vue/restricted-component-names -----
10158
+ type VueRestrictedComponentNames = []|[{
10159
+ allow?: string[]
10160
+ }]
10063
10161
  // ----- vue/return-in-computed-property -----
10064
10162
  type VueReturnInComputedProperty = []|[{
10065
10163
  treatUndefinedAsUnspecified?: boolean
@@ -10081,6 +10179,8 @@ type VueSinglelineHtmlElementContentNewline = []|[{
10081
10179
  ignores?: string[]
10082
10180
  externalIgnores?: string[]
10083
10181
  }]
10182
+ // ----- vue/slot-name-casing -----
10183
+ type VueSlotNameCasing = []|[("camelCase" | "kebab-case" | "singleword")]
10084
10184
  // ----- vue/sort-keys -----
10085
10185
  type VueSortKeys = []|[("asc" | "desc")]|[("asc" | "desc"), {
10086
10186
  caseSensitive?: boolean
@@ -10124,6 +10224,7 @@ type VueVOnEventHyphenation = []|[("always" | "never")]|[("always" | "never"), {
10124
10224
  } & {
10125
10225
  [k: string]: unknown | undefined
10126
10226
  })[]
10227
+ ignoreTags?: string[]
10127
10228
  }]
10128
10229
  // ----- vue/v-on-function-call -----
10129
10230
  type VueVOnFunctionCall = []|[("always" | "never")]|[("always" | "never"), {
package/dist/index.d.mts CHANGED
@@ -3049,7 +3049,7 @@ interface RuleOptions {
3049
3049
  * Disallow using code marked as `@deprecated`
3050
3050
  * @see https://typescript-eslint.io/rules/no-deprecated
3051
3051
  */
3052
- 'ts/no-deprecated'?: Linter.RuleEntry<[]>
3052
+ 'ts/no-deprecated'?: Linter.RuleEntry<TsNoDeprecated>
3053
3053
  /**
3054
3054
  * Disallow duplicate class members
3055
3055
  * @see https://typescript-eslint.io/rules/no-dupe-class-members
@@ -3167,6 +3167,11 @@ interface RuleOptions {
3167
3167
  * @see https://typescript-eslint.io/rules/no-misused-promises
3168
3168
  */
3169
3169
  'ts/no-misused-promises'?: Linter.RuleEntry<TsNoMisusedPromises>
3170
+ /**
3171
+ * Disallow using the spread operator when it might cause unexpected behavior
3172
+ * @see https://typescript-eslint.io/rules/no-misused-spread
3173
+ */
3174
+ 'ts/no-misused-spread'?: Linter.RuleEntry<TsNoMisusedSpread>
3170
3175
  /**
3171
3176
  * Disallow enums from having both number and string members
3172
3177
  * @see https://typescript-eslint.io/rules/no-mixed-enums
@@ -3318,6 +3323,11 @@ interface RuleOptions {
3318
3323
  * @see https://typescript-eslint.io/rules/no-unsafe-return
3319
3324
  */
3320
3325
  'ts/no-unsafe-return'?: Linter.RuleEntry<[]>
3326
+ /**
3327
+ * Disallow type assertions that narrow a type
3328
+ * @see https://typescript-eslint.io/rules/no-unsafe-type-assertion
3329
+ */
3330
+ 'ts/no-unsafe-type-assertion'?: Linter.RuleEntry<[]>
3321
3331
  /**
3322
3332
  * Require unary negation to take a number
3323
3333
  * @see https://typescript-eslint.io/rules/no-unsafe-unary-minus
@@ -3360,7 +3370,7 @@ interface RuleOptions {
3360
3370
  */
3361
3371
  'ts/no-wrapper-object-types'?: Linter.RuleEntry<[]>
3362
3372
  /**
3363
- * Enforce non-null assertions over explicit type casts
3373
+ * Enforce non-null assertions over explicit type assertions
3364
3374
  * @see https://typescript-eslint.io/rules/non-nullable-type-assertion-style
3365
3375
  */
3366
3376
  'ts/non-nullable-type-assertion-style'?: Linter.RuleEntry<[]>
@@ -3445,7 +3455,7 @@ interface RuleOptions {
3445
3455
  */
3446
3456
  'ts/prefer-readonly-parameter-types'?: Linter.RuleEntry<TsPreferReadonlyParameterTypes>
3447
3457
  /**
3448
- * Enforce using type parameter when calling `Array#reduce` instead of casting
3458
+ * Enforce using type parameter when calling `Array#reduce` instead of using a type assertion
3449
3459
  * @see https://typescript-eslint.io/rules/prefer-reduce-type-parameter
3450
3460
  */
3451
3461
  'ts/prefer-reduce-type-parameter'?: Linter.RuleEntry<[]>
@@ -3475,6 +3485,11 @@ interface RuleOptions {
3475
3485
  * @see https://typescript-eslint.io/rules/promise-function-async
3476
3486
  */
3477
3487
  'ts/promise-function-async'?: Linter.RuleEntry<TsPromiseFunctionAsync>
3488
+ /**
3489
+ * Enforce that `get()` types should be assignable to their equivalent `set()` type
3490
+ * @see https://typescript-eslint.io/rules/related-getter-setter-pairs
3491
+ */
3492
+ 'ts/related-getter-setter-pairs'?: Linter.RuleEntry<[]>
3478
3493
  /**
3479
3494
  * Require `Array#sort` and `Array#toSorted` calls to always provide a `compareFunction`
3480
3495
  * @see https://typescript-eslint.io/rules/require-array-sort-compare
@@ -4011,7 +4026,7 @@ interface RuleOptions {
4011
4026
  * enforce `inheritAttrs` to be set to `false` when using `v-bind="$attrs"`
4012
4027
  * @see https://eslint.vuejs.org/rules/no-duplicate-attr-inheritance.html
4013
4028
  */
4014
- 'vue/no-duplicate-attr-inheritance'?: Linter.RuleEntry<[]>
4029
+ 'vue/no-duplicate-attr-inheritance'?: Linter.RuleEntry<VueNoDuplicateAttrInheritance>
4015
4030
  /**
4016
4031
  * disallow duplication of attributes
4017
4032
  * @see https://eslint.vuejs.org/rules/no-duplicate-attributes.html
@@ -4456,7 +4471,7 @@ interface RuleOptions {
4456
4471
  */
4457
4472
  'vue/prefer-true-attribute-shorthand'?: Linter.RuleEntry<VuePreferTrueAttributeShorthand>
4458
4473
  /**
4459
- * require using `useTemplateRef` instead of `ref` for template refs
4474
+ * require using `useTemplateRef` instead of `ref`/`shallowRef` for template refs
4460
4475
  * @see https://eslint.vuejs.org/rules/prefer-use-template-ref.html
4461
4476
  */
4462
4477
  'vue/prefer-use-template-ref'?: Linter.RuleEntry<[]>
@@ -4570,6 +4585,11 @@ interface RuleOptions {
4570
4585
  * @see https://eslint.vuejs.org/rules/require-valid-default-prop.html
4571
4586
  */
4572
4587
  'vue/require-valid-default-prop'?: Linter.RuleEntry<[]>
4588
+ /**
4589
+ * enforce using only specific component names
4590
+ * @see https://eslint.vuejs.org/rules/restricted-component-names.html
4591
+ */
4592
+ 'vue/restricted-component-names'?: Linter.RuleEntry<VueRestrictedComponentNames>
4573
4593
  /**
4574
4594
  * enforce that a return statement is present in computed property
4575
4595
  * @see https://eslint.vuejs.org/rules/return-in-computed-property.html
@@ -4596,6 +4616,11 @@ interface RuleOptions {
4596
4616
  * @see https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html
4597
4617
  */
4598
4618
  'vue/singleline-html-element-content-newline'?: Linter.RuleEntry<VueSinglelineHtmlElementContentNewline>
4619
+ /**
4620
+ * enforce specific casing for slot names
4621
+ * @see https://eslint.vuejs.org/rules/slot-name-casing.html
4622
+ */
4623
+ 'vue/slot-name-casing'?: Linter.RuleEntry<VueSlotNameCasing>
4599
4624
  /**
4600
4625
  * enforce sort-keys in a manner that is compatible with order-in-components
4601
4626
  * @see https://eslint.vuejs.org/rules/sort-keys.html
@@ -6644,6 +6669,8 @@ type StyleCommaDangle = []|[(_StyleCommaDangleValue | {
6644
6669
  imports?: _StyleCommaDangleValueWithIgnore
6645
6670
  exports?: _StyleCommaDangleValueWithIgnore
6646
6671
  functions?: _StyleCommaDangleValueWithIgnore
6672
+ importAttributes?: _StyleCommaDangleValueWithIgnore
6673
+ dynamicImports?: _StyleCommaDangleValueWithIgnore
6647
6674
  enums?: _StyleCommaDangleValueWithIgnore
6648
6675
  generics?: _StyleCommaDangleValueWithIgnore
6649
6676
  tuples?: _StyleCommaDangleValueWithIgnore
@@ -6793,12 +6820,20 @@ type StyleEolLast = []|[("always" | "never" | "unix" | "windows")]
6793
6820
  // ----- style/func-call-spacing -----
6794
6821
  type StyleFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
6795
6822
  allowNewlines?: boolean
6823
+ optionalChain?: {
6824
+ before?: boolean
6825
+ after?: boolean
6826
+ }
6796
6827
  }])
6797
6828
  // ----- style/function-call-argument-newline -----
6798
6829
  type StyleFunctionCallArgumentNewline = []|[("always" | "never" | "consistent")]
6799
6830
  // ----- style/function-call-spacing -----
6800
6831
  type StyleFunctionCallSpacing = ([]|["never"] | []|["always"]|["always", {
6801
6832
  allowNewlines?: boolean
6833
+ optionalChain?: {
6834
+ before?: boolean
6835
+ after?: boolean
6836
+ }
6802
6837
  }])
6803
6838
  // ----- style/function-paren-newline -----
6804
6839
  type StyleFunctionParenNewline = []|[(("always" | "never" | "consistent" | "multiline" | "multiline-arguments") | {
@@ -6852,6 +6887,7 @@ type StyleIndent = []|[("tab" | number)]|[("tab" | number), {
6852
6887
  ImportDeclaration?: (number | ("first" | "off"))
6853
6888
  flatTernaryExpressions?: boolean
6854
6889
  offsetTernaryExpressions?: boolean
6890
+ offsetTernaryExpressionsOffsetCallExpressions?: boolean
6855
6891
  ignoredNodes?: string[]
6856
6892
  ignoreComments?: boolean
6857
6893
  tabLength?: number
@@ -6995,6 +7031,7 @@ type StyleKeySpacing = []|[({
6995
7031
  mode?: ("strict" | "minimum")
6996
7032
  beforeColon?: boolean
6997
7033
  afterColon?: boolean
7034
+ ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[]
6998
7035
  } | {
6999
7036
  singleLine?: {
7000
7037
  mode?: ("strict" | "minimum")
@@ -7510,6 +7547,7 @@ type StyleNoExtraParens = ([]|["functions"] | []|["all"]|["all", {
7510
7547
  enforceForNewInMemberExpressions?: boolean
7511
7548
  enforceForFunctionPrototypeMethods?: boolean
7512
7549
  allowParensAfterCommentPattern?: string
7550
+ nestedConditionalExpressions?: boolean
7513
7551
  }])
7514
7552
  // ----- style/no-mixed-operators -----
7515
7553
  type StyleNoMixedOperators = []|[{
@@ -7607,14 +7645,14 @@ type StyleOperatorLinebreak = []|[(("after" | "before" | "none") | null)]|[(("af
7607
7645
  }
7608
7646
  }]
7609
7647
  // ----- style/padded-blocks -----
7610
- type StylePaddedBlocks = []|[(("always" | "never") | {
7611
- blocks?: ("always" | "never")
7612
- switches?: ("always" | "never")
7613
- classes?: ("always" | "never")
7614
- })]|[(("always" | "never") | {
7615
- blocks?: ("always" | "never")
7616
- switches?: ("always" | "never")
7617
- classes?: ("always" | "never")
7648
+ type StylePaddedBlocks = []|[(("always" | "never" | "start" | "end") | {
7649
+ blocks?: ("always" | "never" | "start" | "end")
7650
+ switches?: ("always" | "never" | "start" | "end")
7651
+ classes?: ("always" | "never" | "start" | "end")
7652
+ })]|[(("always" | "never" | "start" | "end") | {
7653
+ blocks?: ("always" | "never" | "start" | "end")
7654
+ switches?: ("always" | "never" | "start" | "end")
7655
+ classes?: ("always" | "never" | "start" | "end")
7618
7656
  }), {
7619
7657
  allowSingleLineBlocks?: boolean
7620
7658
  }]
@@ -7881,7 +7919,9 @@ type TsConsistentTypeAssertions = []|[({
7881
7919
  assertionStyle: "never"
7882
7920
  } | {
7883
7921
 
7884
- assertionStyle: ("as" | "angle-bracket")
7922
+ arrayLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never")
7923
+
7924
+ assertionStyle?: ("as" | "angle-bracket")
7885
7925
 
7886
7926
  objectLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never")
7887
7927
  })]
@@ -8337,6 +8377,22 @@ type TsNoConfusingVoidExpression = []|[{
8337
8377
 
8338
8378
  ignoreVoidReturningFunctions?: boolean
8339
8379
  }]
8380
+ // ----- ts/no-deprecated -----
8381
+ type TsNoDeprecated = []|[{
8382
+
8383
+ allow?: (string | {
8384
+ from: "file"
8385
+ name: (string | [string, ...(string)[]])
8386
+ path?: string
8387
+ } | {
8388
+ from: "lib"
8389
+ name: (string | [string, ...(string)[]])
8390
+ } | {
8391
+ from: "package"
8392
+ name: (string | [string, ...(string)[]])
8393
+ package: string
8394
+ })[]
8395
+ }]
8340
8396
  // ----- ts/no-duplicate-type-constituents -----
8341
8397
  type TsNoDuplicateTypeConstituents = []|[{
8342
8398
 
@@ -8478,6 +8534,22 @@ type TsNoMisusedPromises = []|[{
8478
8534
  variables?: boolean
8479
8535
  })
8480
8536
  }]
8537
+ // ----- ts/no-misused-spread -----
8538
+ type TsNoMisusedSpread = []|[{
8539
+
8540
+ allow?: (string | {
8541
+ from: "file"
8542
+ name: (string | [string, ...(string)[]])
8543
+ path?: string
8544
+ } | {
8545
+ from: "lib"
8546
+ name: (string | [string, ...(string)[]])
8547
+ } | {
8548
+ from: "package"
8549
+ name: (string | [string, ...(string)[]])
8550
+ package: string
8551
+ })[]
8552
+ }]
8481
8553
  // ----- ts/no-namespace -----
8482
8554
  type TsNoNamespace = []|[{
8483
8555
 
@@ -8553,7 +8625,7 @@ type TsNoShadow = []|[{
8553
8625
 
8554
8626
  builtinGlobals?: boolean
8555
8627
 
8556
- hoist?: ("all" | "functions" | "never")
8628
+ hoist?: ("all" | "functions" | "functions-and-types" | "never" | "types")
8557
8629
 
8558
8630
  ignoreFunctionTypeParameterNameValueShadow?: boolean
8559
8631
 
@@ -8593,6 +8665,8 @@ type TsNoUnnecessaryBooleanLiteralCompare = []|[{
8593
8665
  allowComparingNullableBooleansToFalse?: boolean
8594
8666
 
8595
8667
  allowComparingNullableBooleansToTrue?: boolean
8668
+
8669
+ allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean
8596
8670
  }]
8597
8671
  // ----- ts/no-unnecessary-condition -----
8598
8672
  type TsNoUnnecessaryCondition = []|[{
@@ -8772,6 +8846,10 @@ type TsPreferOptionalChain = []|[{
8772
8846
  type TsPreferPromiseRejectErrors = []|[{
8773
8847
 
8774
8848
  allowEmptyReject?: boolean
8849
+
8850
+ allowThrowingAny?: boolean
8851
+
8852
+ allowThrowingUnknown?: boolean
8775
8853
  }]
8776
8854
  // ----- ts/prefer-readonly -----
8777
8855
  type TsPreferReadonly = []|[{
@@ -8911,6 +8989,8 @@ type TsSwitchExhaustivenessCheck = []|[{
8911
8989
 
8912
8990
  considerDefaultExhaustiveForUnions?: boolean
8913
8991
 
8992
+ defaultCaseCommentPattern?: string
8993
+
8914
8994
  requireDefaultForNonUnion?: boolean
8915
8995
  }]
8916
8996
  // ----- ts/triple-slash-reference -----
@@ -8995,6 +9075,7 @@ type VueAttributeHyphenation = []|[("always" | "never")]|[("always" | "never"),
8995
9075
  } & {
8996
9076
  [k: string]: unknown | undefined
8997
9077
  })[]
9078
+ ignoreTags?: string[]
8998
9079
  }]
8999
9080
  // ----- vue/attributes-order -----
9000
9081
  type VueAttributesOrder = []|[{
@@ -9047,6 +9128,8 @@ type VueCommaDangle = []|[(_VueCommaDangleValue | {
9047
9128
  imports?: _VueCommaDangleValueWithIgnore
9048
9129
  exports?: _VueCommaDangleValueWithIgnore
9049
9130
  functions?: _VueCommaDangleValueWithIgnore
9131
+ importAttributes?: _VueCommaDangleValueWithIgnore
9132
+ dynamicImports?: _VueCommaDangleValueWithIgnore
9050
9133
  enums?: _VueCommaDangleValueWithIgnore
9051
9134
  generics?: _VueCommaDangleValueWithIgnore
9052
9135
  tuples?: _VueCommaDangleValueWithIgnore
@@ -9123,6 +9206,10 @@ type VueFirstAttributeLinebreak = []|[{
9123
9206
  // ----- vue/func-call-spacing -----
9124
9207
  type VueFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
9125
9208
  allowNewlines?: boolean
9209
+ optionalChain?: {
9210
+ before?: boolean
9211
+ after?: boolean
9212
+ }
9126
9213
  }])
9127
9214
  // ----- vue/html-button-has-type -----
9128
9215
  type VueHtmlButtonHasType = []|[{
@@ -9204,6 +9291,7 @@ type VueKeySpacing = []|[({
9204
9291
  mode?: ("strict" | "minimum")
9205
9292
  beforeColon?: boolean
9206
9293
  afterColon?: boolean
9294
+ ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[]
9207
9295
  } | {
9208
9296
  singleLine?: {
9209
9297
  mode?: ("strict" | "minimum")
@@ -9705,6 +9793,10 @@ type VueNoDeprecatedSlotAttribute = []|[{
9705
9793
  type VueNoDupeKeys = []|[{
9706
9794
  groups?: unknown[]
9707
9795
  }]
9796
+ // ----- vue/no-duplicate-attr-inheritance -----
9797
+ type VueNoDuplicateAttrInheritance = []|[{
9798
+ checkMultiRootNodes?: boolean
9799
+ }]
9708
9800
  // ----- vue/no-duplicate-attributes -----
9709
9801
  type VueNoDuplicateAttributes = []|[{
9710
9802
  allowCoexistClass?: boolean
@@ -9726,6 +9818,7 @@ type VueNoExtraParens = ([]|["functions"] | []|["all"]|["all", {
9726
9818
  enforceForNewInMemberExpressions?: boolean
9727
9819
  enforceForFunctionPrototypeMethods?: boolean
9728
9820
  allowParensAfterCommentPattern?: string
9821
+ nestedConditionalExpressions?: boolean
9729
9822
  }])
9730
9823
  // ----- vue/no-irregular-whitespace -----
9731
9824
  type VueNoIrregularWhitespace = []|[{
@@ -9940,6 +10033,7 @@ type VueNoUselessVBind = []|[{
9940
10033
  // ----- vue/no-v-text-v-html-on-component -----
9941
10034
  type VueNoVTextVHtmlOnComponent = []|[{
9942
10035
  allow?: string[]
10036
+ ignoreElementNamespaces?: boolean
9943
10037
  }]
9944
10038
  // ----- vue/object-curly-newline -----
9945
10039
  type VueObjectCurlyNewline = []|[((("always" | "never") | {
@@ -10060,6 +10154,10 @@ type VueRequirePropComment = []|[{
10060
10154
  type VueRequireToggleInsideTransition = []|[{
10061
10155
  additionalDirectives?: string[]
10062
10156
  }]
10157
+ // ----- vue/restricted-component-names -----
10158
+ type VueRestrictedComponentNames = []|[{
10159
+ allow?: string[]
10160
+ }]
10063
10161
  // ----- vue/return-in-computed-property -----
10064
10162
  type VueReturnInComputedProperty = []|[{
10065
10163
  treatUndefinedAsUnspecified?: boolean
@@ -10081,6 +10179,8 @@ type VueSinglelineHtmlElementContentNewline = []|[{
10081
10179
  ignores?: string[]
10082
10180
  externalIgnores?: string[]
10083
10181
  }]
10182
+ // ----- vue/slot-name-casing -----
10183
+ type VueSlotNameCasing = []|[("camelCase" | "kebab-case" | "singleword")]
10084
10184
  // ----- vue/sort-keys -----
10085
10185
  type VueSortKeys = []|[("asc" | "desc")]|[("asc" | "desc"), {
10086
10186
  caseSensitive?: boolean
@@ -10124,6 +10224,7 @@ type VueVOnEventHyphenation = []|[("always" | "never")]|[("always" | "never"), {
10124
10224
  } & {
10125
10225
  [k: string]: unknown | undefined
10126
10226
  })[]
10227
+ ignoreTags?: string[]
10127
10228
  }]
10128
10229
  // ----- vue/v-on-function-call -----
10129
10230
  type VueVOnFunctionCall = []|[("always" | "never")]|[("always" | "never"), {
package/dist/index.d.ts CHANGED
@@ -3049,7 +3049,7 @@ interface RuleOptions {
3049
3049
  * Disallow using code marked as `@deprecated`
3050
3050
  * @see https://typescript-eslint.io/rules/no-deprecated
3051
3051
  */
3052
- 'ts/no-deprecated'?: Linter.RuleEntry<[]>
3052
+ 'ts/no-deprecated'?: Linter.RuleEntry<TsNoDeprecated>
3053
3053
  /**
3054
3054
  * Disallow duplicate class members
3055
3055
  * @see https://typescript-eslint.io/rules/no-dupe-class-members
@@ -3167,6 +3167,11 @@ interface RuleOptions {
3167
3167
  * @see https://typescript-eslint.io/rules/no-misused-promises
3168
3168
  */
3169
3169
  'ts/no-misused-promises'?: Linter.RuleEntry<TsNoMisusedPromises>
3170
+ /**
3171
+ * Disallow using the spread operator when it might cause unexpected behavior
3172
+ * @see https://typescript-eslint.io/rules/no-misused-spread
3173
+ */
3174
+ 'ts/no-misused-spread'?: Linter.RuleEntry<TsNoMisusedSpread>
3170
3175
  /**
3171
3176
  * Disallow enums from having both number and string members
3172
3177
  * @see https://typescript-eslint.io/rules/no-mixed-enums
@@ -3318,6 +3323,11 @@ interface RuleOptions {
3318
3323
  * @see https://typescript-eslint.io/rules/no-unsafe-return
3319
3324
  */
3320
3325
  'ts/no-unsafe-return'?: Linter.RuleEntry<[]>
3326
+ /**
3327
+ * Disallow type assertions that narrow a type
3328
+ * @see https://typescript-eslint.io/rules/no-unsafe-type-assertion
3329
+ */
3330
+ 'ts/no-unsafe-type-assertion'?: Linter.RuleEntry<[]>
3321
3331
  /**
3322
3332
  * Require unary negation to take a number
3323
3333
  * @see https://typescript-eslint.io/rules/no-unsafe-unary-minus
@@ -3360,7 +3370,7 @@ interface RuleOptions {
3360
3370
  */
3361
3371
  'ts/no-wrapper-object-types'?: Linter.RuleEntry<[]>
3362
3372
  /**
3363
- * Enforce non-null assertions over explicit type casts
3373
+ * Enforce non-null assertions over explicit type assertions
3364
3374
  * @see https://typescript-eslint.io/rules/non-nullable-type-assertion-style
3365
3375
  */
3366
3376
  'ts/non-nullable-type-assertion-style'?: Linter.RuleEntry<[]>
@@ -3445,7 +3455,7 @@ interface RuleOptions {
3445
3455
  */
3446
3456
  'ts/prefer-readonly-parameter-types'?: Linter.RuleEntry<TsPreferReadonlyParameterTypes>
3447
3457
  /**
3448
- * Enforce using type parameter when calling `Array#reduce` instead of casting
3458
+ * Enforce using type parameter when calling `Array#reduce` instead of using a type assertion
3449
3459
  * @see https://typescript-eslint.io/rules/prefer-reduce-type-parameter
3450
3460
  */
3451
3461
  'ts/prefer-reduce-type-parameter'?: Linter.RuleEntry<[]>
@@ -3475,6 +3485,11 @@ interface RuleOptions {
3475
3485
  * @see https://typescript-eslint.io/rules/promise-function-async
3476
3486
  */
3477
3487
  'ts/promise-function-async'?: Linter.RuleEntry<TsPromiseFunctionAsync>
3488
+ /**
3489
+ * Enforce that `get()` types should be assignable to their equivalent `set()` type
3490
+ * @see https://typescript-eslint.io/rules/related-getter-setter-pairs
3491
+ */
3492
+ 'ts/related-getter-setter-pairs'?: Linter.RuleEntry<[]>
3478
3493
  /**
3479
3494
  * Require `Array#sort` and `Array#toSorted` calls to always provide a `compareFunction`
3480
3495
  * @see https://typescript-eslint.io/rules/require-array-sort-compare
@@ -4011,7 +4026,7 @@ interface RuleOptions {
4011
4026
  * enforce `inheritAttrs` to be set to `false` when using `v-bind="$attrs"`
4012
4027
  * @see https://eslint.vuejs.org/rules/no-duplicate-attr-inheritance.html
4013
4028
  */
4014
- 'vue/no-duplicate-attr-inheritance'?: Linter.RuleEntry<[]>
4029
+ 'vue/no-duplicate-attr-inheritance'?: Linter.RuleEntry<VueNoDuplicateAttrInheritance>
4015
4030
  /**
4016
4031
  * disallow duplication of attributes
4017
4032
  * @see https://eslint.vuejs.org/rules/no-duplicate-attributes.html
@@ -4456,7 +4471,7 @@ interface RuleOptions {
4456
4471
  */
4457
4472
  'vue/prefer-true-attribute-shorthand'?: Linter.RuleEntry<VuePreferTrueAttributeShorthand>
4458
4473
  /**
4459
- * require using `useTemplateRef` instead of `ref` for template refs
4474
+ * require using `useTemplateRef` instead of `ref`/`shallowRef` for template refs
4460
4475
  * @see https://eslint.vuejs.org/rules/prefer-use-template-ref.html
4461
4476
  */
4462
4477
  'vue/prefer-use-template-ref'?: Linter.RuleEntry<[]>
@@ -4570,6 +4585,11 @@ interface RuleOptions {
4570
4585
  * @see https://eslint.vuejs.org/rules/require-valid-default-prop.html
4571
4586
  */
4572
4587
  'vue/require-valid-default-prop'?: Linter.RuleEntry<[]>
4588
+ /**
4589
+ * enforce using only specific component names
4590
+ * @see https://eslint.vuejs.org/rules/restricted-component-names.html
4591
+ */
4592
+ 'vue/restricted-component-names'?: Linter.RuleEntry<VueRestrictedComponentNames>
4573
4593
  /**
4574
4594
  * enforce that a return statement is present in computed property
4575
4595
  * @see https://eslint.vuejs.org/rules/return-in-computed-property.html
@@ -4596,6 +4616,11 @@ interface RuleOptions {
4596
4616
  * @see https://eslint.vuejs.org/rules/singleline-html-element-content-newline.html
4597
4617
  */
4598
4618
  'vue/singleline-html-element-content-newline'?: Linter.RuleEntry<VueSinglelineHtmlElementContentNewline>
4619
+ /**
4620
+ * enforce specific casing for slot names
4621
+ * @see https://eslint.vuejs.org/rules/slot-name-casing.html
4622
+ */
4623
+ 'vue/slot-name-casing'?: Linter.RuleEntry<VueSlotNameCasing>
4599
4624
  /**
4600
4625
  * enforce sort-keys in a manner that is compatible with order-in-components
4601
4626
  * @see https://eslint.vuejs.org/rules/sort-keys.html
@@ -6644,6 +6669,8 @@ type StyleCommaDangle = []|[(_StyleCommaDangleValue | {
6644
6669
  imports?: _StyleCommaDangleValueWithIgnore
6645
6670
  exports?: _StyleCommaDangleValueWithIgnore
6646
6671
  functions?: _StyleCommaDangleValueWithIgnore
6672
+ importAttributes?: _StyleCommaDangleValueWithIgnore
6673
+ dynamicImports?: _StyleCommaDangleValueWithIgnore
6647
6674
  enums?: _StyleCommaDangleValueWithIgnore
6648
6675
  generics?: _StyleCommaDangleValueWithIgnore
6649
6676
  tuples?: _StyleCommaDangleValueWithIgnore
@@ -6793,12 +6820,20 @@ type StyleEolLast = []|[("always" | "never" | "unix" | "windows")]
6793
6820
  // ----- style/func-call-spacing -----
6794
6821
  type StyleFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
6795
6822
  allowNewlines?: boolean
6823
+ optionalChain?: {
6824
+ before?: boolean
6825
+ after?: boolean
6826
+ }
6796
6827
  }])
6797
6828
  // ----- style/function-call-argument-newline -----
6798
6829
  type StyleFunctionCallArgumentNewline = []|[("always" | "never" | "consistent")]
6799
6830
  // ----- style/function-call-spacing -----
6800
6831
  type StyleFunctionCallSpacing = ([]|["never"] | []|["always"]|["always", {
6801
6832
  allowNewlines?: boolean
6833
+ optionalChain?: {
6834
+ before?: boolean
6835
+ after?: boolean
6836
+ }
6802
6837
  }])
6803
6838
  // ----- style/function-paren-newline -----
6804
6839
  type StyleFunctionParenNewline = []|[(("always" | "never" | "consistent" | "multiline" | "multiline-arguments") | {
@@ -6852,6 +6887,7 @@ type StyleIndent = []|[("tab" | number)]|[("tab" | number), {
6852
6887
  ImportDeclaration?: (number | ("first" | "off"))
6853
6888
  flatTernaryExpressions?: boolean
6854
6889
  offsetTernaryExpressions?: boolean
6890
+ offsetTernaryExpressionsOffsetCallExpressions?: boolean
6855
6891
  ignoredNodes?: string[]
6856
6892
  ignoreComments?: boolean
6857
6893
  tabLength?: number
@@ -6995,6 +7031,7 @@ type StyleKeySpacing = []|[({
6995
7031
  mode?: ("strict" | "minimum")
6996
7032
  beforeColon?: boolean
6997
7033
  afterColon?: boolean
7034
+ ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[]
6998
7035
  } | {
6999
7036
  singleLine?: {
7000
7037
  mode?: ("strict" | "minimum")
@@ -7510,6 +7547,7 @@ type StyleNoExtraParens = ([]|["functions"] | []|["all"]|["all", {
7510
7547
  enforceForNewInMemberExpressions?: boolean
7511
7548
  enforceForFunctionPrototypeMethods?: boolean
7512
7549
  allowParensAfterCommentPattern?: string
7550
+ nestedConditionalExpressions?: boolean
7513
7551
  }])
7514
7552
  // ----- style/no-mixed-operators -----
7515
7553
  type StyleNoMixedOperators = []|[{
@@ -7607,14 +7645,14 @@ type StyleOperatorLinebreak = []|[(("after" | "before" | "none") | null)]|[(("af
7607
7645
  }
7608
7646
  }]
7609
7647
  // ----- style/padded-blocks -----
7610
- type StylePaddedBlocks = []|[(("always" | "never") | {
7611
- blocks?: ("always" | "never")
7612
- switches?: ("always" | "never")
7613
- classes?: ("always" | "never")
7614
- })]|[(("always" | "never") | {
7615
- blocks?: ("always" | "never")
7616
- switches?: ("always" | "never")
7617
- classes?: ("always" | "never")
7648
+ type StylePaddedBlocks = []|[(("always" | "never" | "start" | "end") | {
7649
+ blocks?: ("always" | "never" | "start" | "end")
7650
+ switches?: ("always" | "never" | "start" | "end")
7651
+ classes?: ("always" | "never" | "start" | "end")
7652
+ })]|[(("always" | "never" | "start" | "end") | {
7653
+ blocks?: ("always" | "never" | "start" | "end")
7654
+ switches?: ("always" | "never" | "start" | "end")
7655
+ classes?: ("always" | "never" | "start" | "end")
7618
7656
  }), {
7619
7657
  allowSingleLineBlocks?: boolean
7620
7658
  }]
@@ -7881,7 +7919,9 @@ type TsConsistentTypeAssertions = []|[({
7881
7919
  assertionStyle: "never"
7882
7920
  } | {
7883
7921
 
7884
- assertionStyle: ("as" | "angle-bracket")
7922
+ arrayLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never")
7923
+
7924
+ assertionStyle?: ("as" | "angle-bracket")
7885
7925
 
7886
7926
  objectLiteralTypeAssertions?: ("allow" | "allow-as-parameter" | "never")
7887
7927
  })]
@@ -8337,6 +8377,22 @@ type TsNoConfusingVoidExpression = []|[{
8337
8377
 
8338
8378
  ignoreVoidReturningFunctions?: boolean
8339
8379
  }]
8380
+ // ----- ts/no-deprecated -----
8381
+ type TsNoDeprecated = []|[{
8382
+
8383
+ allow?: (string | {
8384
+ from: "file"
8385
+ name: (string | [string, ...(string)[]])
8386
+ path?: string
8387
+ } | {
8388
+ from: "lib"
8389
+ name: (string | [string, ...(string)[]])
8390
+ } | {
8391
+ from: "package"
8392
+ name: (string | [string, ...(string)[]])
8393
+ package: string
8394
+ })[]
8395
+ }]
8340
8396
  // ----- ts/no-duplicate-type-constituents -----
8341
8397
  type TsNoDuplicateTypeConstituents = []|[{
8342
8398
 
@@ -8478,6 +8534,22 @@ type TsNoMisusedPromises = []|[{
8478
8534
  variables?: boolean
8479
8535
  })
8480
8536
  }]
8537
+ // ----- ts/no-misused-spread -----
8538
+ type TsNoMisusedSpread = []|[{
8539
+
8540
+ allow?: (string | {
8541
+ from: "file"
8542
+ name: (string | [string, ...(string)[]])
8543
+ path?: string
8544
+ } | {
8545
+ from: "lib"
8546
+ name: (string | [string, ...(string)[]])
8547
+ } | {
8548
+ from: "package"
8549
+ name: (string | [string, ...(string)[]])
8550
+ package: string
8551
+ })[]
8552
+ }]
8481
8553
  // ----- ts/no-namespace -----
8482
8554
  type TsNoNamespace = []|[{
8483
8555
 
@@ -8553,7 +8625,7 @@ type TsNoShadow = []|[{
8553
8625
 
8554
8626
  builtinGlobals?: boolean
8555
8627
 
8556
- hoist?: ("all" | "functions" | "never")
8628
+ hoist?: ("all" | "functions" | "functions-and-types" | "never" | "types")
8557
8629
 
8558
8630
  ignoreFunctionTypeParameterNameValueShadow?: boolean
8559
8631
 
@@ -8593,6 +8665,8 @@ type TsNoUnnecessaryBooleanLiteralCompare = []|[{
8593
8665
  allowComparingNullableBooleansToFalse?: boolean
8594
8666
 
8595
8667
  allowComparingNullableBooleansToTrue?: boolean
8668
+
8669
+ allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean
8596
8670
  }]
8597
8671
  // ----- ts/no-unnecessary-condition -----
8598
8672
  type TsNoUnnecessaryCondition = []|[{
@@ -8772,6 +8846,10 @@ type TsPreferOptionalChain = []|[{
8772
8846
  type TsPreferPromiseRejectErrors = []|[{
8773
8847
 
8774
8848
  allowEmptyReject?: boolean
8849
+
8850
+ allowThrowingAny?: boolean
8851
+
8852
+ allowThrowingUnknown?: boolean
8775
8853
  }]
8776
8854
  // ----- ts/prefer-readonly -----
8777
8855
  type TsPreferReadonly = []|[{
@@ -8911,6 +8989,8 @@ type TsSwitchExhaustivenessCheck = []|[{
8911
8989
 
8912
8990
  considerDefaultExhaustiveForUnions?: boolean
8913
8991
 
8992
+ defaultCaseCommentPattern?: string
8993
+
8914
8994
  requireDefaultForNonUnion?: boolean
8915
8995
  }]
8916
8996
  // ----- ts/triple-slash-reference -----
@@ -8995,6 +9075,7 @@ type VueAttributeHyphenation = []|[("always" | "never")]|[("always" | "never"),
8995
9075
  } & {
8996
9076
  [k: string]: unknown | undefined
8997
9077
  })[]
9078
+ ignoreTags?: string[]
8998
9079
  }]
8999
9080
  // ----- vue/attributes-order -----
9000
9081
  type VueAttributesOrder = []|[{
@@ -9047,6 +9128,8 @@ type VueCommaDangle = []|[(_VueCommaDangleValue | {
9047
9128
  imports?: _VueCommaDangleValueWithIgnore
9048
9129
  exports?: _VueCommaDangleValueWithIgnore
9049
9130
  functions?: _VueCommaDangleValueWithIgnore
9131
+ importAttributes?: _VueCommaDangleValueWithIgnore
9132
+ dynamicImports?: _VueCommaDangleValueWithIgnore
9050
9133
  enums?: _VueCommaDangleValueWithIgnore
9051
9134
  generics?: _VueCommaDangleValueWithIgnore
9052
9135
  tuples?: _VueCommaDangleValueWithIgnore
@@ -9123,6 +9206,10 @@ type VueFirstAttributeLinebreak = []|[{
9123
9206
  // ----- vue/func-call-spacing -----
9124
9207
  type VueFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
9125
9208
  allowNewlines?: boolean
9209
+ optionalChain?: {
9210
+ before?: boolean
9211
+ after?: boolean
9212
+ }
9126
9213
  }])
9127
9214
  // ----- vue/html-button-has-type -----
9128
9215
  type VueHtmlButtonHasType = []|[{
@@ -9204,6 +9291,7 @@ type VueKeySpacing = []|[({
9204
9291
  mode?: ("strict" | "minimum")
9205
9292
  beforeColon?: boolean
9206
9293
  afterColon?: boolean
9294
+ ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[]
9207
9295
  } | {
9208
9296
  singleLine?: {
9209
9297
  mode?: ("strict" | "minimum")
@@ -9705,6 +9793,10 @@ type VueNoDeprecatedSlotAttribute = []|[{
9705
9793
  type VueNoDupeKeys = []|[{
9706
9794
  groups?: unknown[]
9707
9795
  }]
9796
+ // ----- vue/no-duplicate-attr-inheritance -----
9797
+ type VueNoDuplicateAttrInheritance = []|[{
9798
+ checkMultiRootNodes?: boolean
9799
+ }]
9708
9800
  // ----- vue/no-duplicate-attributes -----
9709
9801
  type VueNoDuplicateAttributes = []|[{
9710
9802
  allowCoexistClass?: boolean
@@ -9726,6 +9818,7 @@ type VueNoExtraParens = ([]|["functions"] | []|["all"]|["all", {
9726
9818
  enforceForNewInMemberExpressions?: boolean
9727
9819
  enforceForFunctionPrototypeMethods?: boolean
9728
9820
  allowParensAfterCommentPattern?: string
9821
+ nestedConditionalExpressions?: boolean
9729
9822
  }])
9730
9823
  // ----- vue/no-irregular-whitespace -----
9731
9824
  type VueNoIrregularWhitespace = []|[{
@@ -9940,6 +10033,7 @@ type VueNoUselessVBind = []|[{
9940
10033
  // ----- vue/no-v-text-v-html-on-component -----
9941
10034
  type VueNoVTextVHtmlOnComponent = []|[{
9942
10035
  allow?: string[]
10036
+ ignoreElementNamespaces?: boolean
9943
10037
  }]
9944
10038
  // ----- vue/object-curly-newline -----
9945
10039
  type VueObjectCurlyNewline = []|[((("always" | "never") | {
@@ -10060,6 +10154,10 @@ type VueRequirePropComment = []|[{
10060
10154
  type VueRequireToggleInsideTransition = []|[{
10061
10155
  additionalDirectives?: string[]
10062
10156
  }]
10157
+ // ----- vue/restricted-component-names -----
10158
+ type VueRestrictedComponentNames = []|[{
10159
+ allow?: string[]
10160
+ }]
10063
10161
  // ----- vue/return-in-computed-property -----
10064
10162
  type VueReturnInComputedProperty = []|[{
10065
10163
  treatUndefinedAsUnspecified?: boolean
@@ -10081,6 +10179,8 @@ type VueSinglelineHtmlElementContentNewline = []|[{
10081
10179
  ignores?: string[]
10082
10180
  externalIgnores?: string[]
10083
10181
  }]
10182
+ // ----- vue/slot-name-casing -----
10183
+ type VueSlotNameCasing = []|[("camelCase" | "kebab-case" | "singleword")]
10084
10184
  // ----- vue/sort-keys -----
10085
10185
  type VueSortKeys = []|[("asc" | "desc")]|[("asc" | "desc"), {
10086
10186
  caseSensitive?: boolean
@@ -10124,6 +10224,7 @@ type VueVOnEventHyphenation = []|[("always" | "never")]|[("always" | "never"), {
10124
10224
  } & {
10125
10225
  [k: string]: unknown | undefined
10126
10226
  })[]
10227
+ ignoreTags?: string[]
10127
10228
  }]
10128
10229
  // ----- vue/v-on-function-call -----
10129
10230
  type VueVOnFunctionCall = []|[("always" | "never")]|[("always" | "never"), {
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@lntvow/eslint-config",
3
- "version": "9.20.2",
3
+ "version": "9.20.5",
4
4
  "description": "eslint-config",
5
- "type": "module",
6
5
  "keywords": [
7
6
  "eslint",
8
7
  "eslint-config"
@@ -15,6 +14,7 @@
15
14
  "files": [
16
15
  "dist"
17
16
  ],
17
+ "type": "module",
18
18
  "main": "./dist/index.cjs",
19
19
  "module": "./dist/index.mjs",
20
20
  "types": "./dist/index.d.ts",
@@ -25,6 +25,16 @@
25
25
  "require": "./dist/index.cjs"
26
26
  }
27
27
  },
28
+ "devDependencies": {
29
+ "@lntvow/dev": "^4.0.1",
30
+ "@types/node": "^22.9.0",
31
+ "axios": "^1.7.7",
32
+ "cheerio": "1.0.0",
33
+ "eslint-typegen": "^0.3.2",
34
+ "jiti": "^2.4.2",
35
+ "tsup": "^8.3.5",
36
+ "unbuild": "^2.0.0"
37
+ },
28
38
  "peerDependencies": {
29
39
  "eslint": ">=9.0.0",
30
40
  "prettier": ">=3.0.0"
@@ -38,8 +48,6 @@
38
48
  "eslint": "^9.20.0",
39
49
  "eslint-config-prettier": "^9.1.0",
40
50
  "eslint-flat-config-utils": "^0.4.0",
41
- "eslint-import-resolver-alias": "^1.1.2",
42
- "eslint-import-resolver-typescript": "^3.8.3",
43
51
  "eslint-plugin-import-x": "^4.6.1",
44
52
  "eslint-plugin-prettier": "^5.2.1",
45
53
  "eslint-plugin-regexp": "^2.6.0",
@@ -49,14 +57,20 @@
49
57
  "globals": "^15.12.0",
50
58
  "local-pkg": "^0.5.0",
51
59
  "parse-gitignore": "^2.0.0",
60
+ "tsx": "^4.19.3",
52
61
  "typescript": "^5.6.3",
53
62
  "vue-eslint-parser": "^9.4.3",
54
- "@lntvow/eslint-plugin": "^9.20.2"
63
+ "@lntvow/eslint-plugin": "^9.20.5"
55
64
  },
56
65
  "scripts": {
57
- "dev": "unbuild --stub",
66
+ "typegen": "pnpm -r build && tsx scripts/typegen.ts",
58
67
  "build": "pnpm typegen && unbuild",
59
- "typegen": "esno scripts/typegen.ts",
60
- "rimraf": "rimraf ./node_modules/"
68
+ "inspect": "pnpm eslint --inspect-config",
69
+ "postinstall": "simple-git-hooks && pnpm typegen",
70
+ "check": "tsc --noEmit",
71
+ "lint": "eslint \"src/**/*.{js,jsx,ts,tsx,vue}\"",
72
+ "rimraf": "rimraf ./node_modules/ && pnpm -r rimraf",
73
+ "commit": "git add . && git-cz",
74
+ "release": "git add . && bumpp package.json packages/*/package.json --all --commit --no-tag --push"
61
75
  }
62
76
  }