@component-hook/eslint-plugin 1.4.3 → 1.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
@@ -1,5 +1,4 @@
1
1
  import { Linter } from "eslint";
2
-
3
2
  //#region types.d.ts
4
3
  interface Plugins {
5
4
  plugins?: Record<string, any>;
@@ -206,24 +205,24 @@ interface ReactRules {
206
205
  * @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/tree/HEAD/docs/rules/tabindex-no-positive.md
207
206
  */
208
207
  'jsx-a11y/tabindex-no-positive'?: Linter.RuleEntry<JsxA11YTabindexNoPositive>;
209
- /**
210
- * Verifies that automatic effect dependencies are compiled if opted-in
211
- */
212
- 'react-hooks/automatic-effect-dependencies'?: Linter.RuleEntry<ReactHooksAutomaticEffectDependencies>;
213
208
  /**
214
209
  * Validates against calling capitalized functions/methods instead of using JSX
210
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/capitalized-calls
215
211
  */
216
212
  'react-hooks/capitalized-calls'?: Linter.RuleEntry<ReactHooksCapitalizedCalls>;
217
213
  /**
218
- * Validates against higher order functions defining nested components or hooks. Components and hooks should be defined at the module level
214
+ * Deprecated: this rule has been removed in 7.1.0.
215
+ * @deprecated
219
216
  */
220
- 'react-hooks/component-hook-factories'?: Linter.RuleEntry<ReactHooksComponentHookFactories>;
217
+ 'react-hooks/component-hook-factories'?: Linter.RuleEntry<[]>;
221
218
  /**
222
219
  * Validates the compiler configuration options
220
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/config
223
221
  */
224
222
  'react-hooks/config'?: Linter.RuleEntry<ReactHooksConfig>;
225
223
  /**
226
224
  * Validates usage of error boundaries instead of try/catch for errors in child components
225
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/error-boundaries
227
226
  */
228
227
  'react-hooks/error-boundaries'?: Linter.RuleEntry<ReactHooksErrorBoundaries>;
229
228
  /**
@@ -232,59 +231,78 @@ interface ReactRules {
232
231
  */
233
232
  'react-hooks/exhaustive-deps'?: Linter.RuleEntry<ReactHooksExhaustiveDeps>;
234
233
  /**
235
- * Validates usage of fbt
234
+ * Validates that effect dependencies are exhaustive and without extraneous values
235
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-effect-dependencies
236
236
  */
237
- 'react-hooks/fbt'?: Linter.RuleEntry<ReactHooksFbt>;
237
+ 'react-hooks/exhaustive-effect-dependencies'?: Linter.RuleEntry<ReactHooksExhaustiveEffectDependencies>;
238
238
  /**
239
- * Validates usage of `fire`
239
+ * Validates usage of fbt
240
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/fbt
240
241
  */
241
- 'react-hooks/fire'?: Linter.RuleEntry<ReactHooksFire>;
242
+ 'react-hooks/fbt'?: Linter.RuleEntry<ReactHooksFbt>;
242
243
  /**
243
244
  * Validates configuration of [gating mode](https://react.dev/reference/react-compiler/gating)
245
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/gating
244
246
  */
245
247
  'react-hooks/gating'?: Linter.RuleEntry<ReactHooksGating>;
246
248
  /**
247
249
  * Validates against assignment/mutation of globals during render, part of ensuring that [side effects must render outside of render](https://react.dev/reference/rules/components-and-hooks-must-be-pure#side-effects-must-run-outside-of-render)
250
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/globals
248
251
  */
249
252
  'react-hooks/globals'?: Linter.RuleEntry<ReactHooksGlobals>;
250
253
  /**
251
254
  * Validates the rules of hooks
255
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/hooks
252
256
  */
253
257
  'react-hooks/hooks'?: Linter.RuleEntry<ReactHooksHooks>;
254
258
  /**
255
259
  * Validates against mutating props, state, and other values that [are immutable](https://react.dev/reference/rules/components-and-hooks-must-be-pure#props-and-state-are-immutable)
260
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
256
261
  */
257
262
  'react-hooks/immutability'?: Linter.RuleEntry<ReactHooksImmutability>;
258
263
  /**
259
264
  * Validates against usage of libraries which are incompatible with memoization (manual or automatic)
265
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/incompatible-library
260
266
  */
261
267
  'react-hooks/incompatible-library'?: Linter.RuleEntry<ReactHooksIncompatibleLibrary>;
262
268
  /**
263
269
  * Internal invariants
270
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/invariant
264
271
  */
265
272
  'react-hooks/invariant'?: Linter.RuleEntry<ReactHooksInvariant>;
273
+ /**
274
+ * Validates that useMemo() and useCallback() specify comprehensive dependencies without extraneous values. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
275
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/memo-dependencies
276
+ */
277
+ 'react-hooks/memo-dependencies'?: Linter.RuleEntry<ReactHooksMemoDependencies>;
266
278
  /**
267
279
  * Validates that effect dependencies are memoized
280
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/memoized-effect-dependencies
268
281
  */
269
282
  'react-hooks/memoized-effect-dependencies'?: Linter.RuleEntry<ReactHooksMemoizedEffectDependencies>;
270
283
  /**
271
284
  * Validates against deriving values from state in an effect
285
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/no-deriving-state-in-effects
272
286
  */
273
287
  'react-hooks/no-deriving-state-in-effects'?: Linter.RuleEntry<ReactHooksNoDerivingStateInEffects>;
274
288
  /**
275
289
  * Validates that existing manual memoized is preserved by the compiler. React Compiler will only compile components and hooks if its inference [matches or exceeds the existing manual memoization](https://react.dev/learn/react-compiler/introduction#what-should-i-do-about-usememo-usecallback-and-reactmemo)
290
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/preserve-manual-memoization
276
291
  */
277
292
  'react-hooks/preserve-manual-memoization'?: Linter.RuleEntry<ReactHooksPreserveManualMemoization>;
278
293
  /**
279
294
  * Validates that [components/hooks are pure](https://react.dev/reference/rules/components-and-hooks-must-be-pure) by checking that they do not call known-impure functions
295
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
280
296
  */
281
297
  'react-hooks/purity'?: Linter.RuleEntry<ReactHooksPurity>;
282
298
  /**
283
299
  * Validates correct usage of refs, not reading/writing during render. See the "pitfalls" section in [`useRef()` usage](https://react.dev/reference/react/useRef#usage)
300
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
284
301
  */
285
302
  'react-hooks/refs'?: Linter.RuleEntry<ReactHooksRefs>;
286
303
  /**
287
304
  * Validates against suppression of other rules
305
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/rule-suppression
288
306
  */
289
307
  'react-hooks/rule-suppression'?: Linter.RuleEntry<ReactHooksRuleSuppression>;
290
308
  /**
@@ -293,35 +311,43 @@ interface ReactRules {
293
311
  */
294
312
  'react-hooks/rules-of-hooks'?: Linter.RuleEntry<ReactHooksRulesOfHooks>;
295
313
  /**
296
- * Validates against calling setState synchronously in an effect, which can lead to re-renders that degrade performance
314
+ * Validates against calling setState synchronously in an effect. This can indicate non-local derived data, a derived event pattern, or improper external data synchronization.
315
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
297
316
  */
298
317
  'react-hooks/set-state-in-effect'?: Linter.RuleEntry<ReactHooksSetStateInEffect>;
299
318
  /**
300
319
  * Validates against setting state during render, which can trigger additional renders and potential infinite render loops
320
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-render
301
321
  */
302
322
  'react-hooks/set-state-in-render'?: Linter.RuleEntry<ReactHooksSetStateInRender>;
303
323
  /**
304
324
  * Validates that components are static, not recreated every render. Components that are recreated dynamically can reset state and trigger excessive re-rendering
325
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
305
326
  */
306
327
  'react-hooks/static-components'?: Linter.RuleEntry<ReactHooksStaticComponents>;
307
328
  /**
308
329
  * Validates against invalid syntax
330
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/syntax
309
331
  */
310
332
  'react-hooks/syntax'?: Linter.RuleEntry<ReactHooksSyntax>;
311
333
  /**
312
334
  * Unimplemented features
335
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/todo
313
336
  */
314
337
  'react-hooks/todo'?: Linter.RuleEntry<ReactHooksTodo>;
315
338
  /**
316
339
  * Validates against syntax that we do not plan to support in React Compiler
340
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/unsupported-syntax
317
341
  */
318
342
  'react-hooks/unsupported-syntax'?: Linter.RuleEntry<ReactHooksUnsupportedSyntax>;
319
343
  /**
320
344
  * Validates usage of the useMemo() hook against common mistakes. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
345
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/use-memo
321
346
  */
322
347
  'react-hooks/use-memo'?: Linter.RuleEntry<ReactHooksUseMemo>;
323
348
  /**
324
349
  * Validates that useMemos always return a value and that the result of the useMemo is used by the component/hook. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.
350
+ * @see https://react.dev/reference/eslint-plugin-react-hooks/lints/void-use-memo
325
351
  */
326
352
  'react-hooks/void-use-memo'?: Linter.RuleEntry<ReactHooksVoidUseMemo>;
327
353
  /**
@@ -1006,15 +1032,9 @@ type JsxA11YScope = [] | [{
1006
1032
  type JsxA11YTabindexNoPositive = [] | [{
1007
1033
  [k: string]: unknown | undefined;
1008
1034
  }];
1009
- type ReactHooksAutomaticEffectDependencies = [] | [{
1010
- [k: string]: unknown | undefined;
1011
- }];
1012
1035
  type ReactHooksCapitalizedCalls = [] | [{
1013
1036
  [k: string]: unknown | undefined;
1014
1037
  }];
1015
- type ReactHooksComponentHookFactories = [] | [{
1016
- [k: string]: unknown | undefined;
1017
- }];
1018
1038
  type ReactHooksConfig = [] | [{
1019
1039
  [k: string]: unknown | undefined;
1020
1040
  }];
@@ -1027,10 +1047,10 @@ type ReactHooksExhaustiveDeps = [] | [{
1027
1047
  experimental_autoDependenciesHooks?: string[];
1028
1048
  requireExplicitEffectDeps?: boolean;
1029
1049
  }];
1030
- type ReactHooksFbt = [] | [{
1050
+ type ReactHooksExhaustiveEffectDependencies = [] | [{
1031
1051
  [k: string]: unknown | undefined;
1032
1052
  }];
1033
- type ReactHooksFire = [] | [{
1053
+ type ReactHooksFbt = [] | [{
1034
1054
  [k: string]: unknown | undefined;
1035
1055
  }];
1036
1056
  type ReactHooksGating = [] | [{
@@ -1051,6 +1071,9 @@ type ReactHooksIncompatibleLibrary = [] | [{
1051
1071
  type ReactHooksInvariant = [] | [{
1052
1072
  [k: string]: unknown | undefined;
1053
1073
  }];
1074
+ type ReactHooksMemoDependencies = [] | [{
1075
+ [k: string]: unknown | undefined;
1076
+ }];
1054
1077
  type ReactHooksMemoizedEffectDependencies = [] | [{
1055
1078
  [k: string]: unknown | undefined;
1056
1079
  }];
@@ -2675,7 +2698,7 @@ interface VueRules {
2675
2698
  * disallow object, array, and function literals in template
2676
2699
  * @see https://eslint.vuejs.org/rules/no-literals-in-template.html
2677
2700
  */
2678
- 'vue/no-literals-in-template'?: Linter.RuleEntry<[]>;
2701
+ 'vue/no-literals-in-template'?: Linter.RuleEntry<VueNoLiteralsInTemplate>;
2679
2702
  /**
2680
2703
  * disallow unnecessary `<template>`
2681
2704
  * @see https://eslint.vuejs.org/rules/no-lone-template.html
@@ -3068,6 +3091,11 @@ interface VueRules {
3068
3091
  * @see https://eslint.vuejs.org/rules/prefer-separate-static-class.html
3069
3092
  */
3070
3093
  'vue/prefer-separate-static-class'?: Linter.RuleEntry<[]>;
3094
+ /**
3095
+ * enforce passing a single argument to custom event emissions
3096
+ * @see https://eslint.vuejs.org/rules/prefer-single-event-payload.html
3097
+ */
3098
+ 'vue/prefer-single-event-payload'?: Linter.RuleEntry<[]>;
3071
3099
  /**
3072
3100
  * Require template literals instead of string concatenation in `<template>`
3073
3101
  * @see https://eslint.vuejs.org/rules/prefer-template.html
@@ -3083,6 +3111,11 @@ interface VueRules {
3083
3111
  * @see https://eslint.vuejs.org/rules/prefer-use-template-ref.html
3084
3112
  */
3085
3113
  'vue/prefer-use-template-ref'?: Linter.RuleEntry<[]>;
3114
+ /**
3115
+ * enforce using `v-model` instead of `:prop`/`@update:prop` pair
3116
+ * @see https://eslint.vuejs.org/rules/prefer-v-model.html
3117
+ */
3118
+ 'vue/prefer-v-model'?: Linter.RuleEntry<[]>;
3086
3119
  /**
3087
3120
  * enforce specific casing for the Prop name in Vue components
3088
3121
  * @see https://eslint.vuejs.org/rules/prop-name-casing.html
@@ -3364,7 +3397,7 @@ interface VueRules {
3364
3397
  * enforce valid `v-for` directives
3365
3398
  * @see https://eslint.vuejs.org/rules/valid-v-for.html
3366
3399
  */
3367
- 'vue/valid-v-for'?: Linter.RuleEntry<[]>;
3400
+ 'vue/valid-v-for'?: Linter.RuleEntry<VueValidVFor>;
3368
3401
  /**
3369
3402
  * enforce valid `v-html` directives
3370
3403
  * @see https://eslint.vuejs.org/rules/valid-v-html.html
@@ -4188,6 +4221,18 @@ type TypescriptEslintPreferOptionalChain = [] | [{
4188
4221
  requireNullish?: boolean;
4189
4222
  }];
4190
4223
  type TypescriptEslintPreferPromiseRejectErrors = [] | [{
4224
+ allow?: (string | {
4225
+ from: "file";
4226
+ name: (string | [string, ...(string)[]]);
4227
+ path?: string;
4228
+ } | {
4229
+ from: "lib";
4230
+ name: (string | [string, ...(string)[]]);
4231
+ } | {
4232
+ from: "package";
4233
+ name: (string | [string, ...(string)[]]);
4234
+ package: string;
4235
+ })[];
4191
4236
  allowEmptyReject?: boolean;
4192
4237
  allowThrowingAny?: boolean;
4193
4238
  allowThrowingUnknown?: boolean;
@@ -4337,6 +4382,7 @@ type VueAttributesOrder = [] | [{
4337
4382
  order?: (("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "OTHER_ATTR" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT") | ("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "OTHER_ATTR" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT")[])[];
4338
4383
  alphabetical?: boolean;
4339
4384
  sortLineLength?: boolean;
4385
+ ignoreVBindObject?: boolean;
4340
4386
  }];
4341
4387
  type VueBlockLang = [] | [{
4342
4388
  [k: string]: {
@@ -4409,7 +4455,7 @@ type VueDefineMacrosOrder = [] | [{
4409
4455
  }];
4410
4456
  type VueDefinePropsDeclaration = [] | [("type-based" | "runtime")];
4411
4457
  type VueDefinePropsDestructuring = [] | [{
4412
- destructure?: ("always" | "never");
4458
+ destructure?: ("only-when-assigned" | "always" | "never");
4413
4459
  }];
4414
4460
  type VueDotLocation = [] | [("object" | "property")];
4415
4461
  type VueDotNotation = [] | [{
@@ -5005,6 +5051,9 @@ type VueNoIrregularWhitespace = [] | [{
5005
5051
  skipHTMLAttributeValues?: boolean;
5006
5052
  skipHTMLTextContents?: boolean;
5007
5053
  }];
5054
+ type VueNoLiteralsInTemplate = [] | [{
5055
+ ignores?: string[];
5056
+ }];
5008
5057
  type VueNoLoneTemplate = [] | [{
5009
5058
  ignoreAccessible?: boolean;
5010
5059
  }];
@@ -5158,7 +5207,7 @@ type VueNoUnusedComponents = [] | [{
5158
5207
  ignoreWhenBindingPresent?: boolean;
5159
5208
  }];
5160
5209
  type VueNoUnusedProperties = [] | [{
5161
- groups?: ("props" | "data" | "asyncData" | "computed" | "methods" | "setup")[];
5210
+ groups?: ("props" | "data" | "asyncData" | "computed" | "methods" | "setup" | "inject")[];
5162
5211
  deepData?: boolean;
5163
5212
  ignorePublicMembers?: boolean;
5164
5213
  unreferencedOptions?: ("unknownMemberAsUnreferenced" | "returnAsUnreferenced")[];
@@ -5346,6 +5395,9 @@ type VueVSlotStyle = [] | [(("shorthand" | "longform") | {
5346
5395
  default?: ("shorthand" | "longform" | "v-slot");
5347
5396
  named?: ("shorthand" | "longform");
5348
5397
  })];
5398
+ type VueValidVFor = [] | [{
5399
+ allowEmptyAlias?: boolean;
5400
+ }];
5349
5401
  type VueValidVOn = [] | [{
5350
5402
  modifiers?: unknown[];
5351
5403
  }];
@@ -5360,6 +5412,11 @@ interface MarkdownRules {
5360
5412
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/fenced-code-language.md
5361
5413
  */
5362
5414
  'markdown/fenced-code-language'?: Linter.RuleEntry<MarkdownFencedCodeLanguage>;
5415
+ /**
5416
+ * Require or disallow metadata for fenced code blocks
5417
+ * @see https://github.com/eslint/markdown/blob/main/docs/rules/fenced-code-meta.md
5418
+ */
5419
+ 'markdown/fenced-code-meta'?: Linter.RuleEntry<MarkdownFencedCodeMeta>;
5363
5420
  /**
5364
5421
  * Enforce heading levels increment by one
5365
5422
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/heading-increment.md
@@ -5459,12 +5516,14 @@ interface MarkdownRules {
5459
5516
  type MarkdownFencedCodeLanguage = [] | [{
5460
5517
  required?: string[];
5461
5518
  }];
5519
+ type MarkdownFencedCodeMeta = [] | [("always" | "never")];
5462
5520
  type MarkdownHeadingIncrement = [] | [{
5463
5521
  frontmatterTitle?: string;
5464
5522
  }];
5465
5523
  type MarkdownNoDuplicateDefinitions = [] | [{
5466
5524
  allowDefinitions?: string[];
5467
5525
  allowFootnoteDefinitions?: string[];
5526
+ checkFootnoteDefinitions?: boolean;
5468
5527
  }];
5469
5528
  type MarkdownNoDuplicateHeadings = [] | [{
5470
5529
  checkSiblingsOnly?: boolean;
@@ -5497,6 +5556,7 @@ type MarkdownNoSpaceInEmphasis = [] | [{
5497
5556
  type MarkdownNoUnusedDefinitions = [] | [{
5498
5557
  allowDefinitions?: string[];
5499
5558
  allowFootnoteDefinitions?: string[];
5559
+ checkFootnoteDefinitions?: boolean;
5500
5560
  }];
5501
5561
  type MarkdownTableColumnCount = [] | [{
5502
5562
  checkMissingCells?: boolean;
@@ -5563,32 +5623,37 @@ interface SonarjsRules {
5563
5623
  */
5564
5624
  'sonarjs/assertions-in-tests'?: Linter.RuleEntry<[]>;
5565
5625
  /**
5566
- * Creating public APIs is security-sensitive
5626
+ * Async test assertions should be awaited or returned
5627
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8780/javascript
5628
+ */
5629
+ 'sonarjs/async-test-assertions'?: Linter.RuleEntry<[]>;
5630
+ /**
5631
+ * AWS API Gateway should require authentication
5567
5632
  * @see https://sonarsource.github.io/rspec/#/rspec/S6333/javascript
5568
5633
  */
5569
5634
  'sonarjs/aws-apigateway-public-api'?: Linter.RuleEntry<[]>;
5570
5635
  /**
5571
- * Allowing public network access to cloud resources is security-sensitive
5636
+ * Public network access to cloud resources should be disabled
5572
5637
  * @see https://sonarsource.github.io/rspec/#/rspec/S6329/javascript
5573
5638
  */
5574
5639
  'sonarjs/aws-ec2-rds-dms-public'?: Linter.RuleEntry<[]>;
5575
5640
  /**
5576
- * Using unencrypted EBS volumes is security-sensitive
5641
+ * EBS volumes should be encrypted
5577
5642
  * @see https://sonarsource.github.io/rspec/#/rspec/S6275/javascript
5578
5643
  */
5579
5644
  'sonarjs/aws-ec2-unencrypted-ebs-volume'?: Linter.RuleEntry<[]>;
5580
5645
  /**
5581
- * Using unencrypted EFS file systems is security-sensitive
5646
+ * Amazon EFS file systems should be encrypted
5582
5647
  * @see https://sonarsource.github.io/rspec/#/rspec/S6332/javascript
5583
5648
  */
5584
5649
  'sonarjs/aws-efs-unencrypted'?: Linter.RuleEntry<[]>;
5585
5650
  /**
5586
- * Policies granting all privileges are security-sensitive
5651
+ * Policies should not grant all privileges
5587
5652
  * @see https://sonarsource.github.io/rspec/#/rspec/S6302/javascript
5588
5653
  */
5589
5654
  'sonarjs/aws-iam-all-privileges'?: Linter.RuleEntry<[]>;
5590
5655
  /**
5591
- * Policies granting access to all resources of an account are security-sensitive
5656
+ * IAM policies should not grant access to all account resources
5592
5657
  * @see https://sonarsource.github.io/rspec/#/rspec/S6304/javascript
5593
5658
  */
5594
5659
  'sonarjs/aws-iam-all-resources-accessible'?: Linter.RuleEntry<[]>;
@@ -5598,17 +5663,17 @@ interface SonarjsRules {
5598
5663
  */
5599
5664
  'sonarjs/aws-iam-privilege-escalation'?: Linter.RuleEntry<[]>;
5600
5665
  /**
5601
- * Policies authorizing public access to resources are security-sensitive
5666
+ * AWS resource-based policies should not grant public access
5602
5667
  * @see https://sonarsource.github.io/rspec/#/rspec/S6270/javascript
5603
5668
  */
5604
5669
  'sonarjs/aws-iam-public-access'?: Linter.RuleEntry<[]>;
5605
5670
  /**
5606
- * Using unencrypted Opensearch domains is security-sensitive
5671
+ * OpenSearch domains should have encryption at rest enabled
5607
5672
  * @see https://sonarsource.github.io/rspec/#/rspec/S6308/javascript
5608
5673
  */
5609
5674
  'sonarjs/aws-opensearchservice-domain'?: Linter.RuleEntry<[]>;
5610
5675
  /**
5611
- * Using unencrypted RDS DB resources is security-sensitive
5676
+ * Amazon RDS resources should be encrypted at rest
5612
5677
  * @see https://sonarsource.github.io/rspec/#/rspec/S6303/javascript
5613
5678
  */
5614
5679
  'sonarjs/aws-rds-unencrypted-databases'?: Linter.RuleEntry<[]>;
@@ -5618,43 +5683,37 @@ interface SonarjsRules {
5618
5683
  */
5619
5684
  'sonarjs/aws-restricted-ip-admin-access'?: Linter.RuleEntry<[]>;
5620
5685
  /**
5621
- * Granting access to S3 buckets to all or authenticated users is security-sensitive
5686
+ * S3 buckets should not grant access to all users or authenticated users
5622
5687
  * @see https://sonarsource.github.io/rspec/#/rspec/S6265/javascript
5623
5688
  */
5624
5689
  'sonarjs/aws-s3-bucket-granted-access'?: Linter.RuleEntry<[]>;
5625
5690
  /**
5626
- * Authorizing HTTP communications with S3 buckets is security-sensitive
5691
+ * S3 buckets should enforce HTTPS-only access
5627
5692
  * @see https://sonarsource.github.io/rspec/#/rspec/S6249/javascript
5628
5693
  */
5629
5694
  'sonarjs/aws-s3-bucket-insecure-http'?: Linter.RuleEntry<[]>;
5630
5695
  /**
5631
- * Allowing public ACLs or policies on a S3 bucket is security-sensitive
5696
+ * Amazon S3 bucket public access should be fully blocked
5632
5697
  * @see https://sonarsource.github.io/rspec/#/rspec/S6281/javascript
5633
5698
  */
5634
5699
  'sonarjs/aws-s3-bucket-public-access'?: Linter.RuleEntry<[]>;
5635
5700
  /**
5636
- * Disabling server-side encryption of S3 buckets is security-sensitive
5637
- * @see https://sonarsource.github.io/rspec/#/rspec/S6245/javascript
5638
- * @deprecated
5639
- */
5640
- 'sonarjs/aws-s3-bucket-server-encryption'?: Linter.RuleEntry<[]>;
5641
- /**
5642
- * Disabling versioning of S3 buckets is security-sensitive
5701
+ * Amazon S3 buckets should have versioning enabled
5643
5702
  * @see https://sonarsource.github.io/rspec/#/rspec/S6252/javascript
5644
5703
  */
5645
5704
  'sonarjs/aws-s3-bucket-versioning'?: Linter.RuleEntry<[]>;
5646
5705
  /**
5647
- * Using unencrypted SageMaker notebook instances is security-sensitive
5706
+ * SageMaker notebook instances should be encrypted at rest
5648
5707
  * @see https://sonarsource.github.io/rspec/#/rspec/S6319/javascript
5649
5708
  */
5650
5709
  'sonarjs/aws-sagemaker-unencrypted-notebook'?: Linter.RuleEntry<[]>;
5651
5710
  /**
5652
- * Using unencrypted SNS topics is security-sensitive
5711
+ * Amazon SNS topics should be encrypted at rest
5653
5712
  * @see https://sonarsource.github.io/rspec/#/rspec/S6327/javascript
5654
5713
  */
5655
5714
  'sonarjs/aws-sns-unencrypted-topics'?: Linter.RuleEntry<[]>;
5656
5715
  /**
5657
- * Using unencrypted SQS queues is security-sensitive
5716
+ * SQS queues should be encrypted
5658
5717
  * @see https://sonarsource.github.io/rspec/#/rspec/S6330/javascript
5659
5718
  */
5660
5719
  'sonarjs/aws-sqs-unencrypted-queue'?: Linter.RuleEntry<[]>;
@@ -5678,12 +5737,6 @@ interface SonarjsRules {
5678
5737
  * @see https://sonarsource.github.io/rspec/#/rspec/S1472/javascript
5679
5738
  */
5680
5739
  'sonarjs/call-argument-line'?: Linter.RuleEntry<[]>;
5681
- /**
5682
- * Disabling Certificate Transparency monitoring is security-sensitive
5683
- * @see https://sonarsource.github.io/rspec/#/rspec/S5742/javascript
5684
- * @deprecated
5685
- */
5686
- 'sonarjs/certificate-transparency'?: Linter.RuleEntry<[]>;
5687
5740
  /**
5688
5741
  * Chai assertions should have only one reason to succeed
5689
5742
  * @see https://sonarsource.github.io/rspec/#/rspec/S6092/javascript
@@ -5700,7 +5753,7 @@ interface SonarjsRules {
5700
5753
  */
5701
5754
  'sonarjs/class-prototype'?: Linter.RuleEntry<[]>;
5702
5755
  /**
5703
- * Dynamically executing code is security-sensitive
5756
+ * Dynamic code execution should not use user-controlled data
5704
5757
  * @see https://sonarsource.github.io/rspec/#/rspec/S1523/javascript
5705
5758
  */
5706
5759
  'sonarjs/code-eval'?: Linter.RuleEntry<[]>;
@@ -5731,8 +5784,9 @@ interface SonarjsRules {
5731
5784
  */
5732
5785
  'sonarjs/conditional-indentation'?: Linter.RuleEntry<[]>;
5733
5786
  /**
5734
- * Allowing confidential information to be logged is security-sensitive
5787
+ * Confidential information should not be logged
5735
5788
  * @see https://sonarsource.github.io/rspec/#/rspec/S5757/javascript
5789
+ * @deprecated
5736
5790
  */
5737
5791
  'sonarjs/confidential-information-logging'?: Linter.RuleEntry<[]>;
5738
5792
  /**
@@ -5741,33 +5795,27 @@ interface SonarjsRules {
5741
5795
  */
5742
5796
  'sonarjs/constructor-for-side-effects'?: Linter.RuleEntry<[]>;
5743
5797
  /**
5744
- * Allowing requests with excessive content length is security-sensitive
5798
+ * HTTP request content length should be limited
5745
5799
  * @see https://sonarsource.github.io/rspec/#/rspec/S5693/javascript
5746
5800
  */
5747
5801
  'sonarjs/content-length'?: Linter.RuleEntry<SonarjsContentLength>;
5748
5802
  /**
5749
- * Disabling content security policy fetch directives is security-sensitive
5803
+ * Content security policy fetch directives should not be disabled
5750
5804
  * @see https://sonarsource.github.io/rspec/#/rspec/S5728/javascript
5751
5805
  */
5752
5806
  'sonarjs/content-security-policy'?: Linter.RuleEntry<[]>;
5753
5807
  /**
5754
- * Creating cookies without the "HttpOnly" flag is security-sensitive
5808
+ * Cookies should have the "HttpOnly" flag
5755
5809
  * @see https://sonarsource.github.io/rspec/#/rspec/S3330/javascript
5756
5810
  */
5757
5811
  'sonarjs/cookie-no-httponly'?: Linter.RuleEntry<[]>;
5758
5812
  /**
5759
- * Writing cookies is security-sensitive
5760
- * @see https://sonarsource.github.io/rspec/#/rspec/S2255/javascript
5761
- * @deprecated
5762
- */
5763
- 'sonarjs/cookies'?: Linter.RuleEntry<[]>;
5764
- /**
5765
- * Having a permissive Cross-Origin Resource Sharing policy is security-sensitive
5813
+ * Cross-Origin Resource Sharing (CORS) policy should be restricted to trusted origins
5766
5814
  * @see https://sonarsource.github.io/rspec/#/rspec/S5122/javascript
5767
5815
  */
5768
5816
  'sonarjs/cors'?: Linter.RuleEntry<[]>;
5769
5817
  /**
5770
- * Disabling CSRF protections is security-sensitive
5818
+ * CSRF protections should not be disabled
5771
5819
  * @see https://sonarsource.github.io/rspec/#/rspec/S4502/javascript
5772
5820
  */
5773
5821
  'sonarjs/csrf'?: Linter.RuleEntry<[]>;
@@ -5797,12 +5845,12 @@ interface SonarjsRules {
5797
5845
  */
5798
5846
  'sonarjs/different-types-comparison'?: Linter.RuleEntry<[]>;
5799
5847
  /**
5800
- * Disabling auto-escaping in template engines is security-sensitive
5848
+ * Auto-escaping in HTML template engines should not be disabled
5801
5849
  * @see https://sonarsource.github.io/rspec/#/rspec/S5247/javascript
5802
5850
  */
5803
5851
  'sonarjs/disabled-auto-escaping'?: Linter.RuleEntry<[]>;
5804
5852
  /**
5805
- * Using remote artifacts without integrity checks is security-sensitive
5853
+ * Remote artifacts should not be used without integrity checks
5806
5854
  * @see https://sonarsource.github.io/rspec/#/rspec/S5725/javascript
5807
5855
  */
5808
5856
  'sonarjs/disabled-resource-integrity'?: Linter.RuleEntry<[]>;
@@ -5812,11 +5860,10 @@ interface SonarjsRules {
5812
5860
  */
5813
5861
  'sonarjs/disabled-timeout'?: Linter.RuleEntry<[]>;
5814
5862
  /**
5815
- * Allowing browsers to perform DNS prefetching is security-sensitive
5816
- * @see https://sonarsource.github.io/rspec/#/rspec/S5743/javascript
5817
- * @deprecated
5863
+ * DOMPurify configuration should not be bypassable
5864
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8479/javascript
5818
5865
  */
5819
- 'sonarjs/dns-prefetching'?: Linter.RuleEntry<[]>;
5866
+ 'sonarjs/dompurify-unsafe-config'?: Linter.RuleEntry<[]>;
5820
5867
  /**
5821
5868
  * Character classes in regular expressions should not contain the same character twice
5822
5869
  * @see https://sonarsource.github.io/rspec/#/rspec/S5869/javascript
@@ -5837,23 +5884,11 @@ interface SonarjsRules {
5837
5884
  * @see https://sonarsource.github.io/rspec/#/rspec/S5842/javascript
5838
5885
  */
5839
5886
  'sonarjs/empty-string-repetition'?: Linter.RuleEntry<[]>;
5840
- /**
5841
- * Encrypting data is security-sensitive
5842
- * @see https://sonarsource.github.io/rspec/#/rspec/S4787/javascript
5843
- * @deprecated
5844
- */
5845
- 'sonarjs/encryption'?: Linter.RuleEntry<[]>;
5846
5887
  /**
5847
5888
  * Encryption algorithms should be used with secure mode and padding scheme
5848
5889
  * @see https://sonarsource.github.io/rspec/#/rspec/S5542/javascript
5849
5890
  */
5850
5891
  'sonarjs/encryption-secure-mode'?: Linter.RuleEntry<[]>;
5851
- /**
5852
- * Trailing commas should be used
5853
- * @see https://sonarsource.github.io/rspec/#/rspec/S3723/javascript
5854
- * @deprecated
5855
- */
5856
- 'sonarjs/enforce-trailing-comma'?: Linter.RuleEntry<SonarjsEnforceTrailingComma>;
5857
5892
  /**
5858
5893
  * Replacement strings should reference existing regular expression groups
5859
5894
  * @see https://sonarsource.github.io/rspec/#/rspec/S6328/javascript
@@ -5875,7 +5910,7 @@ interface SonarjsRules {
5875
5910
  */
5876
5911
  'sonarjs/file-name-differ-from-class'?: Linter.RuleEntry<[]>;
5877
5912
  /**
5878
- * Setting loose POSIX file permissions is security-sensitive
5913
+ * File permissions should not be set to world-accessible values
5879
5914
  * @see https://sonarsource.github.io/rspec/#/rspec/S2612/javascript
5880
5915
  */
5881
5916
  'sonarjs/file-permissions'?: Linter.RuleEntry<[]>;
@@ -5900,8 +5935,9 @@ interface SonarjsRules {
5900
5935
  */
5901
5936
  'sonarjs/for-loop-increment-sign'?: Linter.RuleEntry<[]>;
5902
5937
  /**
5903
- * Disabling content security policy frame-ancestors directive is security-sensitive
5938
+ * Content Security Policy frame-ancestors directive should not be disabled
5904
5939
  * @see https://sonarsource.github.io/rspec/#/rspec/S5732/javascript
5940
+ * @deprecated
5905
5941
  */
5906
5942
  'sonarjs/frame-ancestors'?: Linter.RuleEntry<[]>;
5907
5943
  /**
@@ -5935,15 +5971,21 @@ interface SonarjsRules {
5935
5971
  */
5936
5972
  'sonarjs/hardcoded-secret-signatures'?: Linter.RuleEntry<[]>;
5937
5973
  /**
5938
- * Using weak hashing algorithms is security-sensitive
5974
+ * Weak hashing algorithms should not be used
5939
5975
  * @see https://sonarsource.github.io/rspec/#/rspec/S4790/javascript
5940
5976
  */
5941
5977
  'sonarjs/hashing'?: Linter.RuleEntry<[]>;
5942
5978
  /**
5943
- * Statically serving hidden files is security-sensitive
5979
+ * Hidden files should not be served statically
5944
5980
  * @see https://sonarsource.github.io/rspec/#/rspec/S5691/javascript
5981
+ * @deprecated
5945
5982
  */
5946
5983
  'sonarjs/hidden-files'?: Linter.RuleEntry<[]>;
5984
+ /**
5985
+ * Lifecycle hooks should not be interleaved with test cases or nested suites
5986
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8782/javascript
5987
+ */
5988
+ 'sonarjs/hooks-before-test-cases'?: Linter.RuleEntry<[]>;
5947
5989
  /**
5948
5990
  * "in" should not be used with primitive types
5949
5991
  * @see https://sonarsource.github.io/rspec/#/rspec/S3785/javascript
@@ -5960,7 +6002,7 @@ interface SonarjsRules {
5960
6002
  */
5961
6003
  'sonarjs/index-of-compare-to-positive-number'?: Linter.RuleEntry<[]>;
5962
6004
  /**
5963
- * Creating cookies without the "secure" flag is security-sensitive
6005
+ * Cookies should have the "secure" flag
5964
6006
  * @see https://sonarsource.github.io/rspec/#/rspec/S2092/javascript
5965
6007
  */
5966
6008
  'sonarjs/insecure-cookie'?: Linter.RuleEntry<[]>;
@@ -5985,7 +6027,7 @@ interface SonarjsRules {
5985
6027
  */
5986
6028
  'sonarjs/label-position'?: Linter.RuleEntry<[]>;
5987
6029
  /**
5988
- * Authorizing an opened window to access back to the originating window is security-sensitive
6030
+ * Opened windows should not have access to the originating page
5989
6031
  * @see https://sonarsource.github.io/rspec/#/rspec/S5148/javascript
5990
6032
  */
5991
6033
  'sonarjs/link-with-target-blank'?: Linter.RuleEntry<[]>;
@@ -6035,7 +6077,7 @@ interface SonarjsRules {
6035
6077
  */
6036
6078
  'sonarjs/no-alphabetical-sort'?: Linter.RuleEntry<[]>;
6037
6079
  /**
6038
- * Disabling Angular built-in sanitization is security-sensitive
6080
+ * Angular built-in sanitization should not be disabled
6039
6081
  * @see https://sonarsource.github.io/rspec/#/rspec/S6268/javascript
6040
6082
  */
6041
6083
  'sonarjs/no-angular-bypass-sanitization'?: Linter.RuleEntry<[]>;
@@ -6065,7 +6107,7 @@ interface SonarjsRules {
6065
6107
  */
6066
6108
  'sonarjs/no-case-label-in-switch'?: Linter.RuleEntry<[]>;
6067
6109
  /**
6068
- * Using clear-text protocols is security-sensitive
6110
+ * Clear-text protocols should not be used
6069
6111
  * @see https://sonarsource.github.io/rspec/#/rspec/S5332/javascript
6070
6112
  */
6071
6113
  'sonarjs/no-clear-text-protocols'?: Linter.RuleEntry<[]>;
@@ -6114,6 +6156,11 @@ interface SonarjsRules {
6114
6156
  * @see https://sonarsource.github.io/rspec/#/rspec/S1192/javascript
6115
6157
  */
6116
6158
  'sonarjs/no-duplicate-string'?: Linter.RuleEntry<SonarjsNoDuplicateString>;
6159
+ /**
6160
+ * Test titles should be unique within the same suite
6161
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8754/javascript
6162
+ */
6163
+ 'sonarjs/no-duplicate-test-title'?: Linter.RuleEntry<[]>;
6117
6164
  /**
6118
6165
  * Two branches in a conditional structure should not have exactly the same implementation
6119
6166
  * @see https://sonarsource.github.io/rspec/#/rspec/S1871/javascript
@@ -6154,6 +6201,11 @@ interface SonarjsRules {
6154
6201
  * @see https://sonarsource.github.io/rspec/#/rspec/S2187/javascript
6155
6202
  */
6156
6203
  'sonarjs/no-empty-test-file'?: Linter.RuleEntry<[]>;
6204
+ /**
6205
+ * Test and suite titles should not be empty or whitespace-only
6206
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8781/javascript
6207
+ */
6208
+ 'sonarjs/no-empty-test-title'?: Linter.RuleEntry<[]>;
6157
6209
  /**
6158
6210
  * Equality operators should not be used in "for" loop termination conditions
6159
6211
  * @see https://sonarsource.github.io/rspec/#/rspec/S888/javascript
@@ -6174,11 +6226,21 @@ interface SonarjsRules {
6174
6226
  * @see https://sonarsource.github.io/rspec/#/rspec/S128/javascript
6175
6227
  */
6176
6228
  'sonarjs/no-fallthrough'?: Linter.RuleEntry<[]>;
6229
+ /**
6230
+ * Floating point numbers should not be tested for equality
6231
+ * @see https://sonarsource.github.io/rspec/#/rspec/S1244/javascript
6232
+ */
6233
+ 'sonarjs/no-floating-point-equality'?: Linter.RuleEntry<[]>;
6177
6234
  /**
6178
6235
  * "for in" should not be used with iterables
6179
6236
  * @see https://sonarsource.github.io/rspec/#/rspec/S4139/javascript
6180
6237
  */
6181
6238
  'sonarjs/no-for-in-iterable'?: Linter.RuleEntry<[]>;
6239
+ /**
6240
+ * Forced browser interactions should not bypass actionability checks
6241
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8783/javascript
6242
+ */
6243
+ 'sonarjs/no-forced-browser-interaction'?: Linter.RuleEntry<[]>;
6182
6244
  /**
6183
6245
  * Function declarations should not be made within blocks
6184
6246
  * @see https://sonarsource.github.io/rspec/#/rspec/S1530/javascript
@@ -6200,7 +6262,7 @@ interface SonarjsRules {
6200
6262
  */
6201
6263
  'sonarjs/no-gratuitous-expressions'?: Linter.RuleEntry<[]>;
6202
6264
  /**
6203
- * Using hardcoded IP addresses is security-sensitive
6265
+ * IP addresses should not be hardcoded
6204
6266
  * @see https://sonarsource.github.io/rspec/#/rspec/S1313/javascript
6205
6267
  */
6206
6268
  'sonarjs/no-hardcoded-ip'?: Linter.RuleEntry<[]>;
@@ -6259,6 +6321,11 @@ interface SonarjsRules {
6259
6321
  * @see https://sonarsource.github.io/rspec/#/rspec/S4619/javascript
6260
6322
  */
6261
6323
  'sonarjs/no-in-misuse'?: Linter.RuleEntry<[]>;
6324
+ /**
6325
+ * Assertions comparing incompatible types should not be made
6326
+ * @see https://sonarsource.github.io/rspec/#/rspec/S5845/javascript
6327
+ */
6328
+ 'sonarjs/no-incompatible-assertion-types'?: Linter.RuleEntry<[]>;
6262
6329
  /**
6263
6330
  * Assertions should be complete
6264
6331
  * @see https://sonarsource.github.io/rspec/#/rspec/S2970/javascript
@@ -6280,8 +6347,9 @@ interface SonarjsRules {
6280
6347
  */
6281
6348
  'sonarjs/no-internal-api-use'?: Linter.RuleEntry<[]>;
6282
6349
  /**
6283
- * Using intrusive permissions is security-sensitive
6350
+ * Sensitive permissions should not be requested unnecessarily
6284
6351
  * @see https://sonarsource.github.io/rspec/#/rspec/S5604/javascript
6352
+ * @deprecated
6285
6353
  */
6286
6354
  'sonarjs/no-intrusive-permissions'?: Linter.RuleEntry<SonarjsNoIntrusivePermissions>;
6287
6355
  /**
@@ -6300,8 +6368,9 @@ interface SonarjsRules {
6300
6368
  */
6301
6369
  'sonarjs/no-inverted-boolean-check'?: Linter.RuleEntry<[]>;
6302
6370
  /**
6303
- * Forwarding client IP address is security-sensitive
6371
+ * Client IP address should not be forwarded to proxies
6304
6372
  * @see https://sonarsource.github.io/rspec/#/rspec/S5759/javascript
6373
+ * @deprecated
6305
6374
  */
6306
6375
  'sonarjs/no-ip-forward'?: Linter.RuleEntry<[]>;
6307
6376
  /**
@@ -6315,7 +6384,7 @@ interface SonarjsRules {
6315
6384
  */
6316
6385
  'sonarjs/no-literal-call'?: Linter.RuleEntry<[]>;
6317
6386
  /**
6318
- * Allowing browsers to sniff MIME types is security-sensitive
6387
+ * Browsers should not be allowed to perform MIME type sniffing
6319
6388
  * @see https://sonarsource.github.io/rspec/#/rspec/S5734/javascript
6320
6389
  */
6321
6390
  'sonarjs/no-mime-sniff'?: Linter.RuleEntry<[]>;
@@ -6330,8 +6399,9 @@ interface SonarjsRules {
6330
6399
  */
6331
6400
  'sonarjs/no-misleading-character-class'?: Linter.RuleEntry<[]>;
6332
6401
  /**
6333
- * Allowing mixed-content is security-sensitive
6402
+ * Content Security Policy should block mixed-content
6334
6403
  * @see https://sonarsource.github.io/rspec/#/rspec/S5730/javascript
6404
+ * @deprecated
6335
6405
  */
6336
6406
  'sonarjs/no-mixed-content'?: Linter.RuleEntry<[]>;
6337
6407
  /**
@@ -6365,7 +6435,7 @@ interface SonarjsRules {
6365
6435
  */
6366
6436
  'sonarjs/no-nested-template-literals'?: Linter.RuleEntry<[]>;
6367
6437
  /**
6368
- * Searching OS commands in PATH is security-sensitive
6438
+ * OS commands should not rely on PATH resolution
6369
6439
  * @see https://sonarsource.github.io/rspec/#/rspec/S4036/javascript
6370
6440
  */
6371
6441
  'sonarjs/no-os-command-from-path'?: Linter.RuleEntry<[]>;
@@ -6411,7 +6481,7 @@ interface SonarjsRules {
6411
6481
  */
6412
6482
  'sonarjs/no-reference-error'?: Linter.RuleEntry<[]>;
6413
6483
  /**
6414
- * Disabling strict HTTP no-referrer policy is security-sensitive
6484
+ * HTTP Referrer-Policy should not be set to an unsafe value
6415
6485
  * @see https://sonarsource.github.io/rspec/#/rspec/S5736/javascript
6416
6486
  */
6417
6487
  'sonarjs/no-referrer-policy'?: Linter.RuleEntry<[]>;
@@ -6445,6 +6515,11 @@ interface SonarjsRules {
6445
6515
  * @see https://sonarsource.github.io/rspec/#/rspec/S2301/javascript
6446
6516
  */
6447
6517
  'sonarjs/no-selector-parameter'?: Linter.RuleEntry<[]>;
6518
+ /**
6519
+ * Static Assets should not serve session cookies
6520
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8441/javascript
6521
+ */
6522
+ 'sonarjs/no-session-cookies-on-static-assets'?: Linter.RuleEntry<[]>;
6448
6523
  /**
6449
6524
  * Tests should not be skipped without providing a reason
6450
6525
  * @see https://sonarsource.github.io/rspec/#/rspec/S1607/javascript
@@ -6471,6 +6546,11 @@ interface SonarjsRules {
6471
6546
  * @see https://sonarsource.github.io/rspec/#/rspec/S5257/javascript
6472
6547
  */
6473
6548
  'sonarjs/no-table-as-layout'?: Linter.RuleEntry<[]>;
6549
+ /**
6550
+ * Assertions should not fail or succeed unconditionally
6551
+ * @see https://sonarsource.github.io/rspec/#/rspec/S5914/javascript
6552
+ */
6553
+ 'sonarjs/no-trivial-assertions'?: Linter.RuleEntry<[]>;
6474
6554
  /**
6475
6555
  * Promise rejections should not be caught by "try" blocks
6476
6556
  * @see https://sonarsource.github.io/rspec/#/rspec/S4822/javascript
@@ -6497,8 +6577,9 @@ interface SonarjsRules {
6497
6577
  */
6498
6578
  'sonarjs/no-uniq-key'?: Linter.RuleEntry<[]>;
6499
6579
  /**
6500
- * Expanding archive files without controlling resource consumption is security-sensitive
6580
+ * Expanding archive files should not be done without controlling resource consumption
6501
6581
  * @see https://sonarsource.github.io/rspec/#/rspec/S5042/javascript
6582
+ * @deprecated
6502
6583
  */
6503
6584
  'sonarjs/no-unsafe-unzip'?: Linter.RuleEntry<[]>;
6504
6585
  /**
@@ -6551,12 +6632,6 @@ interface SonarjsRules {
6551
6632
  * @see https://sonarsource.github.io/rspec/#/rspec/S1526/javascript
6552
6633
  */
6553
6634
  'sonarjs/no-variable-usage-before-declaration'?: Linter.RuleEntry<[]>;
6554
- /**
6555
- * Disabling Vue.js built-in escaping is security-sensitive
6556
- * @see https://sonarsource.github.io/rspec/#/rspec/S6299/javascript
6557
- * @deprecated
6558
- */
6559
- 'sonarjs/no-vue-bypass-sanitization'?: Linter.RuleEntry<[]>;
6560
6635
  /**
6561
6636
  * Cipher algorithms should be robust
6562
6637
  * @see https://sonarsource.github.io/rspec/#/rspec/S5547/javascript
@@ -6598,8 +6673,9 @@ interface SonarjsRules {
6598
6673
  */
6599
6674
  'sonarjs/operation-returning-nan'?: Linter.RuleEntry<[]>;
6600
6675
  /**
6601
- * Using shell interpreter when executing OS commands is security-sensitive
6676
+ * OS commands should not be executed using a shell interpreter
6602
6677
  * @see https://sonarsource.github.io/rspec/#/rspec/S4721/javascript
6678
+ * @deprecated
6603
6679
  */
6604
6680
  'sonarjs/os-command'?: Linter.RuleEntry<[]>;
6605
6681
  /**
@@ -6642,6 +6718,11 @@ interface SonarjsRules {
6642
6718
  * @see https://sonarsource.github.io/rspec/#/rspec/S1126/javascript
6643
6719
  */
6644
6720
  'sonarjs/prefer-single-boolean-return'?: Linter.RuleEntry<[]>;
6721
+ /**
6722
+ * The most specific assertion should be used
6723
+ * @see https://sonarsource.github.io/rspec/#/rspec/S5906/javascript
6724
+ */
6725
+ 'sonarjs/prefer-specific-assertions'?: Linter.RuleEntry<[]>;
6645
6726
  /**
6646
6727
  * Type predicates should be used
6647
6728
  * @see https://sonarsource.github.io/rspec/#/rspec/S4322/javascript
@@ -6653,18 +6734,12 @@ interface SonarjsRules {
6653
6734
  */
6654
6735
  'sonarjs/prefer-while'?: Linter.RuleEntry<[]>;
6655
6736
  /**
6656
- * Using command line arguments is security-sensitive
6657
- * @see https://sonarsource.github.io/rspec/#/rspec/S4823/javascript
6658
- * @deprecated
6659
- */
6660
- 'sonarjs/process-argv'?: Linter.RuleEntry<[]>;
6661
- /**
6662
- * Delivering code in production with debug features activated is security-sensitive
6737
+ * Debugging features should not be enabled in production
6663
6738
  * @see https://sonarsource.github.io/rspec/#/rspec/S4507/javascript
6664
6739
  */
6665
6740
  'sonarjs/production-debug'?: Linter.RuleEntry<[]>;
6666
6741
  /**
6667
- * Using pseudorandom number generators (PRNGs) is security-sensitive
6742
+ * Pseudorandom number generators (PRNGs) should not be used in security contexts
6668
6743
  * @see https://sonarsource.github.io/rspec/#/rspec/S2245/javascript
6669
6744
  */
6670
6745
  'sonarjs/pseudo-random'?: Linter.RuleEntry<[]>;
@@ -6674,7 +6749,7 @@ interface SonarjsRules {
6674
6749
  */
6675
6750
  'sonarjs/public-static-readonly'?: Linter.RuleEntry<[]>;
6676
6751
  /**
6677
- * Using publicly writable directories is security-sensitive
6752
+ * Temporary files should not be created in publicly writable directories
6678
6753
  * @see https://sonarsource.github.io/rspec/#/rspec/S5443/javascript
6679
6754
  */
6680
6755
  'sonarjs/publicly-writable-directories'?: Linter.RuleEntry<[]>;
@@ -6693,12 +6768,6 @@ interface SonarjsRules {
6693
6768
  * @see https://sonarsource.github.io/rspec/#/rspec/S5843/javascript
6694
6769
  */
6695
6770
  'sonarjs/regex-complexity'?: Linter.RuleEntry<SonarjsRegexComplexity>;
6696
- /**
6697
- * Using regular expressions is security-sensitive
6698
- * @see https://sonarsource.github.io/rspec/#/rspec/S4784/javascript
6699
- * @deprecated
6700
- */
6701
- 'sonarjs/regular-expr'?: Linter.RuleEntry<[]>;
6702
6771
  /**
6703
6772
  * Wallet phrases should not be hard-coded
6704
6773
  * @see https://sonarsource.github.io/rspec/#/rspec/S7639/javascript
@@ -6725,18 +6794,12 @@ interface SonarjsRules {
6725
6794
  */
6726
6795
  'sonarjs/single-character-alternation'?: Linter.RuleEntry<[]>;
6727
6796
  /**
6728
- * Using slow regular expressions is security-sensitive
6797
+ * Regular expressions should not cause catastrophic backtracking
6729
6798
  * @see https://sonarsource.github.io/rspec/#/rspec/S5852/javascript
6730
6799
  */
6731
6800
  'sonarjs/slow-regex'?: Linter.RuleEntry<[]>;
6732
6801
  /**
6733
- * Using Sockets is security-sensitive
6734
- * @see https://sonarsource.github.io/rspec/#/rspec/S4818/javascript
6735
- * @deprecated
6736
- */
6737
- 'sonarjs/sockets'?: Linter.RuleEntry<[]>;
6738
- /**
6739
- * Formatting SQL queries is security-sensitive
6802
+ * SQL queries should not be dynamically formatted
6740
6803
  * @see https://sonarsource.github.io/rspec/#/rspec/S2077/javascript
6741
6804
  */
6742
6805
  'sonarjs/sql-queries'?: Linter.RuleEntry<[]>;
@@ -6745,19 +6808,13 @@ interface SonarjsRules {
6745
6808
  * @see https://sonarsource.github.io/rspec/#/rspec/S5973/javascript
6746
6809
  */
6747
6810
  'sonarjs/stable-tests'?: Linter.RuleEntry<[]>;
6748
- /**
6749
- * Reading the Standard Input is security-sensitive
6750
- * @see https://sonarsource.github.io/rspec/#/rspec/S4829/javascript
6751
- * @deprecated
6752
- */
6753
- 'sonarjs/standard-input'?: Linter.RuleEntry<[]>;
6754
6811
  /**
6755
6812
  * Regular expressions with the global flag should be used with caution
6756
6813
  * @see https://sonarsource.github.io/rspec/#/rspec/S6351/javascript
6757
6814
  */
6758
6815
  'sonarjs/stateful-regex'?: Linter.RuleEntry<[]>;
6759
6816
  /**
6760
- * Disabling Strict-Transport-Security policy is security-sensitive
6817
+ * HTTP Strict-Transport-Security policy should not be disabled
6761
6818
  * @see https://sonarsource.github.io/rspec/#/rspec/S5739/javascript
6762
6819
  */
6763
6820
  'sonarjs/strict-transport-security'?: Linter.RuleEntry<[]>;
@@ -6767,10 +6824,10 @@ interface SonarjsRules {
6767
6824
  */
6768
6825
  'sonarjs/strings-comparison'?: Linter.RuleEntry<[]>;
6769
6826
  /**
6770
- * "super()" should be invoked appropriately
6771
- * @see https://sonarsource.github.io/rspec/#/rspec/S3854/javascript
6827
+ * Regular expressions should not cause non-linear backtracking
6828
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8786/javascript
6772
6829
  */
6773
- 'sonarjs/super-invocation'?: Linter.RuleEntry<[]>;
6830
+ 'sonarjs/super-linear-regex'?: Linter.RuleEntry<[]>;
6774
6831
  /**
6775
6832
  * Tables should have headers
6776
6833
  * @see https://sonarsource.github.io/rspec/#/rspec/S5256/javascript
@@ -6869,7 +6926,7 @@ interface SonarjsRules {
6869
6926
  */
6870
6927
  'sonarjs/web-sql-database'?: Linter.RuleEntry<[]>;
6871
6928
  /**
6872
- * Disclosing fingerprints from web application technologies is security-sensitive
6929
+ * Web application technologies should not disclose version information
6873
6930
  * @see https://sonarsource.github.io/rspec/#/rspec/S5689/javascript
6874
6931
  */
6875
6932
  'sonarjs/x-powered-by'?: Linter.RuleEntry<[]>;
@@ -6878,12 +6935,6 @@ interface SonarjsRules {
6878
6935
  * @see https://sonarsource.github.io/rspec/#/rspec/S2755/javascript
6879
6936
  */
6880
6937
  'sonarjs/xml-parser-xxe'?: Linter.RuleEntry<[]>;
6881
- /**
6882
- * Executing XPath expressions is security-sensitive
6883
- * @see https://sonarsource.github.io/rspec/#/rspec/S4817/javascript
6884
- * @deprecated
6885
- */
6886
- 'sonarjs/xpath'?: Linter.RuleEntry<[]>;
6887
6938
  }
6888
6939
  type SonarjsArrowFunctionConvention = [] | [{
6889
6940
  requireParameterParentheses?: boolean;
@@ -6892,7 +6943,7 @@ type SonarjsArrowFunctionConvention = [] | [{
6892
6943
  type SonarjsClassName = [] | [{
6893
6944
  format?: string;
6894
6945
  }];
6895
- type SonarjsCognitiveComplexity = [] | [(number | string)] | [(number | string), string];
6946
+ type SonarjsCognitiveComplexity = [] | [(number | "silence-issues")] | [(number | "silence-issues"), "silence-issues"];
6896
6947
  type SonarjsCommentRegex = [] | [{
6897
6948
  regularExpression?: string;
6898
6949
  message?: string;
@@ -6905,15 +6956,6 @@ type SonarjsContentLength = [] | [{
6905
6956
  type SonarjsCyclomaticComplexity = [] | [{
6906
6957
  threshold?: number;
6907
6958
  }];
6908
- type SonarjsEnforceTrailingComma = [] | [(_SonarjsEnforceTrailingCommaValue | {
6909
- arrays?: _SonarjsEnforceTrailingCommaValueWithIgnore;
6910
- objects?: _SonarjsEnforceTrailingCommaValueWithIgnore;
6911
- imports?: _SonarjsEnforceTrailingCommaValueWithIgnore;
6912
- exports?: _SonarjsEnforceTrailingCommaValueWithIgnore;
6913
- functions?: _SonarjsEnforceTrailingCommaValueWithIgnore;
6914
- })];
6915
- type _SonarjsEnforceTrailingCommaValue = ("always-multiline" | "always" | "never" | "only-multiline");
6916
- type _SonarjsEnforceTrailingCommaValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline");
6917
6959
  type SonarjsExpressionComplexity = [] | [{
6918
6960
  max?: number;
6919
6961
  }];
@@ -7089,6 +7131,11 @@ interface PlaywrightRules {
7089
7131
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-duplicate-hooks.md
7090
7132
  */
7091
7133
  'playwright/no-duplicate-hooks'?: Linter.RuleEntry<[]>;
7134
+ /**
7135
+ * Disallow multiple `test.slow()` calls in the same test
7136
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-duplicate-slow.md
7137
+ */
7138
+ 'playwright/no-duplicate-slow'?: Linter.RuleEntry<[]>;
7092
7139
  /**
7093
7140
  * The use of ElementHandle is discouraged, use Locator instead
7094
7141
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-element-handle.md
@@ -7154,6 +7201,11 @@ interface PlaywrightRules {
7154
7201
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md
7155
7202
  */
7156
7203
  'playwright/no-restricted-matchers'?: Linter.RuleEntry<PlaywrightNoRestrictedMatchers>;
7204
+ /**
7205
+ * Disallows the usage of specific roles in getByRole()
7206
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-roles.md
7207
+ */
7208
+ 'playwright/no-restricted-roles'?: Linter.RuleEntry<PlaywrightNoRestrictedRoles>;
7157
7209
  /**
7158
7210
  * Prevent usage of the `.skip()` skip test annotation.
7159
7211
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-skipped-test.md
@@ -7279,6 +7331,16 @@ interface PlaywrightRules {
7279
7331
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-soft-assertions.md
7280
7332
  */
7281
7333
  'playwright/require-soft-assertions'?: Linter.RuleEntry<[]>;
7334
+ /**
7335
+ * Require test blocks to have tags
7336
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-tags.md
7337
+ */
7338
+ 'playwright/require-tags'?: Linter.RuleEntry<[]>;
7339
+ /**
7340
+ * Require a timeout option for `toPass()`
7341
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-to-pass-timeout.md
7342
+ */
7343
+ 'playwright/require-to-pass-timeout'?: Linter.RuleEntry<[]>;
7282
7344
  /**
7283
7345
  * Require a message for `toThrow()`
7284
7346
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-to-throw-message.md
@@ -7327,6 +7389,7 @@ type PlaywrightMaxNestedDescribe = [] | [{
7327
7389
  }];
7328
7390
  type PlaywrightMissingPlaywrightAwait = [] | [{
7329
7391
  customMatchers?: string[];
7392
+ includePageLocatorMethods?: boolean;
7330
7393
  }];
7331
7394
  type PlaywrightNoHooks = [] | [{
7332
7395
  allow?: unknown[];
@@ -7341,8 +7404,13 @@ type PlaywrightNoRestrictedLocators = [] | [(string | {
7341
7404
  type PlaywrightNoRestrictedMatchers = [] | [{
7342
7405
  [k: string]: (string | null) | undefined;
7343
7406
  }];
7407
+ type PlaywrightNoRestrictedRoles = [] | [(string | {
7408
+ message?: string;
7409
+ role: string;
7410
+ })[]];
7344
7411
  type PlaywrightNoSkippedTest = [] | [{
7345
7412
  allowConditional?: boolean;
7413
+ disallowFixme?: boolean;
7346
7414
  }];
7347
7415
  type PlaywrightNoSlowedTest = [] | [{
7348
7416
  allowConditional?: boolean;