@component-hook/eslint-plugin 1.4.4 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts 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
  }];
@@ -1728,6 +1751,7 @@ interface VueRules {
1728
1751
  /**
1729
1752
  * Disallow function declarations that contain unsafe references inside loop statements
1730
1753
  * @see https://typescript-eslint.io/rules/no-loop-func
1754
+ * @deprecated
1731
1755
  */
1732
1756
  '@typescript-eslint/no-loop-func'?: Linter.RuleEntry<[]>;
1733
1757
  /**
@@ -1804,6 +1828,7 @@ interface VueRules {
1804
1828
  /**
1805
1829
  * Disallow specified modules when loaded by `import`
1806
1830
  * @see https://typescript-eslint.io/rules/no-restricted-imports
1831
+ * @deprecated
1807
1832
  */
1808
1833
  '@typescript-eslint/no-restricted-imports'?: Linter.RuleEntry<TypescriptEslintNoRestrictedImports>;
1809
1834
  /**
@@ -2675,7 +2700,7 @@ interface VueRules {
2675
2700
  * disallow object, array, and function literals in template
2676
2701
  * @see https://eslint.vuejs.org/rules/no-literals-in-template.html
2677
2702
  */
2678
- 'vue/no-literals-in-template'?: Linter.RuleEntry<[]>;
2703
+ 'vue/no-literals-in-template'?: Linter.RuleEntry<VueNoLiteralsInTemplate>;
2679
2704
  /**
2680
2705
  * disallow unnecessary `<template>`
2681
2706
  * @see https://eslint.vuejs.org/rules/no-lone-template.html
@@ -3068,6 +3093,11 @@ interface VueRules {
3068
3093
  * @see https://eslint.vuejs.org/rules/prefer-separate-static-class.html
3069
3094
  */
3070
3095
  'vue/prefer-separate-static-class'?: Linter.RuleEntry<[]>;
3096
+ /**
3097
+ * enforce passing a single argument to custom event emissions
3098
+ * @see https://eslint.vuejs.org/rules/prefer-single-event-payload.html
3099
+ */
3100
+ 'vue/prefer-single-event-payload'?: Linter.RuleEntry<[]>;
3071
3101
  /**
3072
3102
  * Require template literals instead of string concatenation in `<template>`
3073
3103
  * @see https://eslint.vuejs.org/rules/prefer-template.html
@@ -3083,6 +3113,11 @@ interface VueRules {
3083
3113
  * @see https://eslint.vuejs.org/rules/prefer-use-template-ref.html
3084
3114
  */
3085
3115
  'vue/prefer-use-template-ref'?: Linter.RuleEntry<[]>;
3116
+ /**
3117
+ * enforce using `v-model` instead of `:prop`/`@update:prop` pair
3118
+ * @see https://eslint.vuejs.org/rules/prefer-v-model.html
3119
+ */
3120
+ 'vue/prefer-v-model'?: Linter.RuleEntry<[]>;
3086
3121
  /**
3087
3122
  * enforce specific casing for the Prop name in Vue components
3088
3123
  * @see https://eslint.vuejs.org/rules/prop-name-casing.html
@@ -3364,7 +3399,7 @@ interface VueRules {
3364
3399
  * enforce valid `v-for` directives
3365
3400
  * @see https://eslint.vuejs.org/rules/valid-v-for.html
3366
3401
  */
3367
- 'vue/valid-v-for'?: Linter.RuleEntry<[]>;
3402
+ 'vue/valid-v-for'?: Linter.RuleEntry<VueValidVFor>;
3368
3403
  /**
3369
3404
  * enforce valid `v-html` directives
3370
3405
  * @see https://eslint.vuejs.org/rules/valid-v-html.html
@@ -4188,6 +4223,18 @@ type TypescriptEslintPreferOptionalChain = [] | [{
4188
4223
  requireNullish?: boolean;
4189
4224
  }];
4190
4225
  type TypescriptEslintPreferPromiseRejectErrors = [] | [{
4226
+ allow?: (string | {
4227
+ from: "file";
4228
+ name: (string | [string, ...(string)[]]);
4229
+ path?: string;
4230
+ } | {
4231
+ from: "lib";
4232
+ name: (string | [string, ...(string)[]]);
4233
+ } | {
4234
+ from: "package";
4235
+ name: (string | [string, ...(string)[]]);
4236
+ package: string;
4237
+ })[];
4191
4238
  allowEmptyReject?: boolean;
4192
4239
  allowThrowingAny?: boolean;
4193
4240
  allowThrowingUnknown?: boolean;
@@ -4337,6 +4384,7 @@ type VueAttributesOrder = [] | [{
4337
4384
  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
4385
  alphabetical?: boolean;
4339
4386
  sortLineLength?: boolean;
4387
+ ignoreVBindObject?: boolean;
4340
4388
  }];
4341
4389
  type VueBlockLang = [] | [{
4342
4390
  [k: string]: {
@@ -4409,7 +4457,7 @@ type VueDefineMacrosOrder = [] | [{
4409
4457
  }];
4410
4458
  type VueDefinePropsDeclaration = [] | [("type-based" | "runtime")];
4411
4459
  type VueDefinePropsDestructuring = [] | [{
4412
- destructure?: ("always" | "never");
4460
+ destructure?: ("only-when-assigned" | "always" | "never");
4413
4461
  }];
4414
4462
  type VueDotLocation = [] | [("object" | "property")];
4415
4463
  type VueDotNotation = [] | [{
@@ -5005,6 +5053,9 @@ type VueNoIrregularWhitespace = [] | [{
5005
5053
  skipHTMLAttributeValues?: boolean;
5006
5054
  skipHTMLTextContents?: boolean;
5007
5055
  }];
5056
+ type VueNoLiteralsInTemplate = [] | [{
5057
+ ignores?: string[];
5058
+ }];
5008
5059
  type VueNoLoneTemplate = [] | [{
5009
5060
  ignoreAccessible?: boolean;
5010
5061
  }];
@@ -5158,7 +5209,7 @@ type VueNoUnusedComponents = [] | [{
5158
5209
  ignoreWhenBindingPresent?: boolean;
5159
5210
  }];
5160
5211
  type VueNoUnusedProperties = [] | [{
5161
- groups?: ("props" | "data" | "asyncData" | "computed" | "methods" | "setup")[];
5212
+ groups?: ("props" | "data" | "asyncData" | "computed" | "methods" | "setup" | "inject")[];
5162
5213
  deepData?: boolean;
5163
5214
  ignorePublicMembers?: boolean;
5164
5215
  unreferencedOptions?: ("unknownMemberAsUnreferenced" | "returnAsUnreferenced")[];
@@ -5308,6 +5359,7 @@ type VueSortKeys = [] | [("asc" | "desc")] | [("asc" | "desc"), {
5308
5359
  ignoreGrandchildrenOf?: unknown[];
5309
5360
  minKeys?: number;
5310
5361
  natural?: boolean;
5362
+ allowLineSeparatedGroups?: boolean;
5311
5363
  }];
5312
5364
  type VueSpaceInParens = [] | [("always" | "never")] | [("always" | "never"), {
5313
5365
  exceptions?: ("{}" | "[]" | "()" | "empty")[];
@@ -5346,6 +5398,9 @@ type VueVSlotStyle = [] | [(("shorthand" | "longform") | {
5346
5398
  default?: ("shorthand" | "longform" | "v-slot");
5347
5399
  named?: ("shorthand" | "longform");
5348
5400
  })];
5401
+ type VueValidVFor = [] | [{
5402
+ allowEmptyAlias?: boolean;
5403
+ }];
5349
5404
  type VueValidVOn = [] | [{
5350
5405
  modifiers?: unknown[];
5351
5406
  }];
@@ -5360,6 +5415,11 @@ interface MarkdownRules {
5360
5415
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/fenced-code-language.md
5361
5416
  */
5362
5417
  'markdown/fenced-code-language'?: Linter.RuleEntry<MarkdownFencedCodeLanguage>;
5418
+ /**
5419
+ * Require or disallow metadata for fenced code blocks
5420
+ * @see https://github.com/eslint/markdown/blob/main/docs/rules/fenced-code-meta.md
5421
+ */
5422
+ 'markdown/fenced-code-meta'?: Linter.RuleEntry<MarkdownFencedCodeMeta>;
5363
5423
  /**
5364
5424
  * Enforce heading levels increment by one
5365
5425
  * @see https://github.com/eslint/markdown/blob/main/docs/rules/heading-increment.md
@@ -5459,12 +5519,14 @@ interface MarkdownRules {
5459
5519
  type MarkdownFencedCodeLanguage = [] | [{
5460
5520
  required?: string[];
5461
5521
  }];
5522
+ type MarkdownFencedCodeMeta = [] | [("always" | "never")];
5462
5523
  type MarkdownHeadingIncrement = [] | [{
5463
5524
  frontmatterTitle?: string;
5464
5525
  }];
5465
5526
  type MarkdownNoDuplicateDefinitions = [] | [{
5466
5527
  allowDefinitions?: string[];
5467
5528
  allowFootnoteDefinitions?: string[];
5529
+ checkFootnoteDefinitions?: boolean;
5468
5530
  }];
5469
5531
  type MarkdownNoDuplicateHeadings = [] | [{
5470
5532
  checkSiblingsOnly?: boolean;
@@ -5497,6 +5559,7 @@ type MarkdownNoSpaceInEmphasis = [] | [{
5497
5559
  type MarkdownNoUnusedDefinitions = [] | [{
5498
5560
  allowDefinitions?: string[];
5499
5561
  allowFootnoteDefinitions?: string[];
5562
+ checkFootnoteDefinitions?: boolean;
5500
5563
  }];
5501
5564
  type MarkdownTableColumnCount = [] | [{
5502
5565
  checkMissingCells?: boolean;
@@ -5557,38 +5620,48 @@ interface SonarjsRules {
5557
5620
  * @see https://sonarsource.github.io/rspec/#/rspec/S3524/javascript
5558
5621
  */
5559
5622
  'sonarjs/arrow-function-convention'?: Linter.RuleEntry<SonarjsArrowFunctionConvention>;
5623
+ /**
5624
+ * Assertions should be placed inside test cases or hooks
5625
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8784/javascript
5626
+ */
5627
+ 'sonarjs/assertions-in-test-cases'?: Linter.RuleEntry<[]>;
5560
5628
  /**
5561
5629
  * Tests should include assertions
5562
5630
  * @see https://sonarsource.github.io/rspec/#/rspec/S2699/javascript
5563
5631
  */
5564
5632
  'sonarjs/assertions-in-tests'?: Linter.RuleEntry<[]>;
5565
5633
  /**
5566
- * Creating public APIs is security-sensitive
5634
+ * Async test assertions should be awaited or returned
5635
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8780/javascript
5636
+ */
5637
+ 'sonarjs/async-test-assertions'?: Linter.RuleEntry<[]>;
5638
+ /**
5639
+ * AWS API Gateway should require authentication
5567
5640
  * @see https://sonarsource.github.io/rspec/#/rspec/S6333/javascript
5568
5641
  */
5569
5642
  'sonarjs/aws-apigateway-public-api'?: Linter.RuleEntry<[]>;
5570
5643
  /**
5571
- * Allowing public network access to cloud resources is security-sensitive
5644
+ * Public network access to cloud resources should be disabled
5572
5645
  * @see https://sonarsource.github.io/rspec/#/rspec/S6329/javascript
5573
5646
  */
5574
5647
  'sonarjs/aws-ec2-rds-dms-public'?: Linter.RuleEntry<[]>;
5575
5648
  /**
5576
- * Using unencrypted EBS volumes is security-sensitive
5649
+ * EBS volumes should be encrypted
5577
5650
  * @see https://sonarsource.github.io/rspec/#/rspec/S6275/javascript
5578
5651
  */
5579
5652
  'sonarjs/aws-ec2-unencrypted-ebs-volume'?: Linter.RuleEntry<[]>;
5580
5653
  /**
5581
- * Using unencrypted EFS file systems is security-sensitive
5654
+ * Amazon EFS file systems should be encrypted
5582
5655
  * @see https://sonarsource.github.io/rspec/#/rspec/S6332/javascript
5583
5656
  */
5584
5657
  'sonarjs/aws-efs-unencrypted'?: Linter.RuleEntry<[]>;
5585
5658
  /**
5586
- * Policies granting all privileges are security-sensitive
5659
+ * Policies should not grant all privileges
5587
5660
  * @see https://sonarsource.github.io/rspec/#/rspec/S6302/javascript
5588
5661
  */
5589
5662
  'sonarjs/aws-iam-all-privileges'?: Linter.RuleEntry<[]>;
5590
5663
  /**
5591
- * Policies granting access to all resources of an account are security-sensitive
5664
+ * IAM policies should not grant access to all account resources
5592
5665
  * @see https://sonarsource.github.io/rspec/#/rspec/S6304/javascript
5593
5666
  */
5594
5667
  'sonarjs/aws-iam-all-resources-accessible'?: Linter.RuleEntry<[]>;
@@ -5598,17 +5671,17 @@ interface SonarjsRules {
5598
5671
  */
5599
5672
  'sonarjs/aws-iam-privilege-escalation'?: Linter.RuleEntry<[]>;
5600
5673
  /**
5601
- * Policies authorizing public access to resources are security-sensitive
5674
+ * AWS resource-based policies should not grant public access
5602
5675
  * @see https://sonarsource.github.io/rspec/#/rspec/S6270/javascript
5603
5676
  */
5604
5677
  'sonarjs/aws-iam-public-access'?: Linter.RuleEntry<[]>;
5605
5678
  /**
5606
- * Using unencrypted Opensearch domains is security-sensitive
5679
+ * OpenSearch domains should have encryption at rest enabled
5607
5680
  * @see https://sonarsource.github.io/rspec/#/rspec/S6308/javascript
5608
5681
  */
5609
5682
  'sonarjs/aws-opensearchservice-domain'?: Linter.RuleEntry<[]>;
5610
5683
  /**
5611
- * Using unencrypted RDS DB resources is security-sensitive
5684
+ * Amazon RDS resources should be encrypted at rest
5612
5685
  * @see https://sonarsource.github.io/rspec/#/rspec/S6303/javascript
5613
5686
  */
5614
5687
  'sonarjs/aws-rds-unencrypted-databases'?: Linter.RuleEntry<[]>;
@@ -5618,43 +5691,37 @@ interface SonarjsRules {
5618
5691
  */
5619
5692
  'sonarjs/aws-restricted-ip-admin-access'?: Linter.RuleEntry<[]>;
5620
5693
  /**
5621
- * Granting access to S3 buckets to all or authenticated users is security-sensitive
5694
+ * S3 buckets should not grant access to all users or authenticated users
5622
5695
  * @see https://sonarsource.github.io/rspec/#/rspec/S6265/javascript
5623
5696
  */
5624
5697
  'sonarjs/aws-s3-bucket-granted-access'?: Linter.RuleEntry<[]>;
5625
5698
  /**
5626
- * Authorizing HTTP communications with S3 buckets is security-sensitive
5699
+ * S3 buckets should enforce HTTPS-only access
5627
5700
  * @see https://sonarsource.github.io/rspec/#/rspec/S6249/javascript
5628
5701
  */
5629
5702
  'sonarjs/aws-s3-bucket-insecure-http'?: Linter.RuleEntry<[]>;
5630
5703
  /**
5631
- * Allowing public ACLs or policies on a S3 bucket is security-sensitive
5704
+ * Amazon S3 bucket public access should be fully blocked
5632
5705
  * @see https://sonarsource.github.io/rspec/#/rspec/S6281/javascript
5633
5706
  */
5634
5707
  'sonarjs/aws-s3-bucket-public-access'?: Linter.RuleEntry<[]>;
5635
5708
  /**
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
5709
+ * Amazon S3 buckets should have versioning enabled
5643
5710
  * @see https://sonarsource.github.io/rspec/#/rspec/S6252/javascript
5644
5711
  */
5645
5712
  'sonarjs/aws-s3-bucket-versioning'?: Linter.RuleEntry<[]>;
5646
5713
  /**
5647
- * Using unencrypted SageMaker notebook instances is security-sensitive
5714
+ * SageMaker notebook instances should be encrypted at rest
5648
5715
  * @see https://sonarsource.github.io/rspec/#/rspec/S6319/javascript
5649
5716
  */
5650
5717
  'sonarjs/aws-sagemaker-unencrypted-notebook'?: Linter.RuleEntry<[]>;
5651
5718
  /**
5652
- * Using unencrypted SNS topics is security-sensitive
5719
+ * Amazon SNS topics should be encrypted at rest
5653
5720
  * @see https://sonarsource.github.io/rspec/#/rspec/S6327/javascript
5654
5721
  */
5655
5722
  'sonarjs/aws-sns-unencrypted-topics'?: Linter.RuleEntry<[]>;
5656
5723
  /**
5657
- * Using unencrypted SQS queues is security-sensitive
5724
+ * SQS queues should be encrypted
5658
5725
  * @see https://sonarsource.github.io/rspec/#/rspec/S6330/javascript
5659
5726
  */
5660
5727
  'sonarjs/aws-sqs-unencrypted-queue'?: Linter.RuleEntry<[]>;
@@ -5678,12 +5745,6 @@ interface SonarjsRules {
5678
5745
  * @see https://sonarsource.github.io/rspec/#/rspec/S1472/javascript
5679
5746
  */
5680
5747
  '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
5748
  /**
5688
5749
  * Chai assertions should have only one reason to succeed
5689
5750
  * @see https://sonarsource.github.io/rspec/#/rspec/S6092/javascript
@@ -5700,7 +5761,7 @@ interface SonarjsRules {
5700
5761
  */
5701
5762
  'sonarjs/class-prototype'?: Linter.RuleEntry<[]>;
5702
5763
  /**
5703
- * Dynamically executing code is security-sensitive
5764
+ * Dynamic code execution should not use user-controlled data
5704
5765
  * @see https://sonarsource.github.io/rspec/#/rspec/S1523/javascript
5705
5766
  */
5706
5767
  'sonarjs/code-eval'?: Linter.RuleEntry<[]>;
@@ -5731,8 +5792,9 @@ interface SonarjsRules {
5731
5792
  */
5732
5793
  'sonarjs/conditional-indentation'?: Linter.RuleEntry<[]>;
5733
5794
  /**
5734
- * Allowing confidential information to be logged is security-sensitive
5795
+ * Confidential information should not be logged
5735
5796
  * @see https://sonarsource.github.io/rspec/#/rspec/S5757/javascript
5797
+ * @deprecated
5736
5798
  */
5737
5799
  'sonarjs/confidential-information-logging'?: Linter.RuleEntry<[]>;
5738
5800
  /**
@@ -5741,33 +5803,27 @@ interface SonarjsRules {
5741
5803
  */
5742
5804
  'sonarjs/constructor-for-side-effects'?: Linter.RuleEntry<[]>;
5743
5805
  /**
5744
- * Allowing requests with excessive content length is security-sensitive
5806
+ * HTTP request content length should be limited
5745
5807
  * @see https://sonarsource.github.io/rspec/#/rspec/S5693/javascript
5746
5808
  */
5747
5809
  'sonarjs/content-length'?: Linter.RuleEntry<SonarjsContentLength>;
5748
5810
  /**
5749
- * Disabling content security policy fetch directives is security-sensitive
5811
+ * Content security policy fetch directives should not be disabled
5750
5812
  * @see https://sonarsource.github.io/rspec/#/rspec/S5728/javascript
5751
5813
  */
5752
5814
  'sonarjs/content-security-policy'?: Linter.RuleEntry<[]>;
5753
5815
  /**
5754
- * Creating cookies without the "HttpOnly" flag is security-sensitive
5816
+ * Cookies should have the "HttpOnly" flag
5755
5817
  * @see https://sonarsource.github.io/rspec/#/rspec/S3330/javascript
5756
5818
  */
5757
5819
  'sonarjs/cookie-no-httponly'?: Linter.RuleEntry<[]>;
5758
5820
  /**
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
5821
+ * Cross-Origin Resource Sharing (CORS) policy should be restricted to trusted origins
5766
5822
  * @see https://sonarsource.github.io/rspec/#/rspec/S5122/javascript
5767
5823
  */
5768
5824
  'sonarjs/cors'?: Linter.RuleEntry<[]>;
5769
5825
  /**
5770
- * Disabling CSRF protections is security-sensitive
5826
+ * CSRF protections should not be disabled
5771
5827
  * @see https://sonarsource.github.io/rspec/#/rspec/S4502/javascript
5772
5828
  */
5773
5829
  'sonarjs/csrf'?: Linter.RuleEntry<[]>;
@@ -5797,12 +5853,12 @@ interface SonarjsRules {
5797
5853
  */
5798
5854
  'sonarjs/different-types-comparison'?: Linter.RuleEntry<[]>;
5799
5855
  /**
5800
- * Disabling auto-escaping in template engines is security-sensitive
5856
+ * Auto-escaping in HTML template engines should not be disabled
5801
5857
  * @see https://sonarsource.github.io/rspec/#/rspec/S5247/javascript
5802
5858
  */
5803
5859
  'sonarjs/disabled-auto-escaping'?: Linter.RuleEntry<[]>;
5804
5860
  /**
5805
- * Using remote artifacts without integrity checks is security-sensitive
5861
+ * Remote artifacts should not be used without integrity checks
5806
5862
  * @see https://sonarsource.github.io/rspec/#/rspec/S5725/javascript
5807
5863
  */
5808
5864
  'sonarjs/disabled-resource-integrity'?: Linter.RuleEntry<[]>;
@@ -5812,11 +5868,10 @@ interface SonarjsRules {
5812
5868
  */
5813
5869
  'sonarjs/disabled-timeout'?: Linter.RuleEntry<[]>;
5814
5870
  /**
5815
- * Allowing browsers to perform DNS prefetching is security-sensitive
5816
- * @see https://sonarsource.github.io/rspec/#/rspec/S5743/javascript
5817
- * @deprecated
5871
+ * DOMPurify configuration should not be bypassable
5872
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8479/javascript
5818
5873
  */
5819
- 'sonarjs/dns-prefetching'?: Linter.RuleEntry<[]>;
5874
+ 'sonarjs/dompurify-unsafe-config'?: Linter.RuleEntry<[]>;
5820
5875
  /**
5821
5876
  * Character classes in regular expressions should not contain the same character twice
5822
5877
  * @see https://sonarsource.github.io/rspec/#/rspec/S5869/javascript
@@ -5837,28 +5892,21 @@ interface SonarjsRules {
5837
5892
  * @see https://sonarsource.github.io/rspec/#/rspec/S5842/javascript
5838
5893
  */
5839
5894
  '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
5895
  /**
5847
5896
  * Encryption algorithms should be used with secure mode and padding scheme
5848
5897
  * @see https://sonarsource.github.io/rspec/#/rspec/S5542/javascript
5849
5898
  */
5850
5899
  '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
5900
  /**
5858
5901
  * Replacement strings should reference existing regular expression groups
5859
5902
  * @see https://sonarsource.github.io/rspec/#/rspec/S6328/javascript
5860
5903
  */
5861
5904
  'sonarjs/existing-groups'?: Linter.RuleEntry<[]>;
5905
+ /**
5906
+ * Tests should be skipped explicitly
5907
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8968/javascript
5908
+ */
5909
+ 'sonarjs/explicit-test-skip'?: Linter.RuleEntry<[]>;
5862
5910
  /**
5863
5911
  * Expressions should not be too complex
5864
5912
  * @see https://sonarsource.github.io/rspec/#/rspec/S1067/javascript
@@ -5875,7 +5923,7 @@ interface SonarjsRules {
5875
5923
  */
5876
5924
  'sonarjs/file-name-differ-from-class'?: Linter.RuleEntry<[]>;
5877
5925
  /**
5878
- * Setting loose POSIX file permissions is security-sensitive
5926
+ * File permissions should not be set to world-accessible values
5879
5927
  * @see https://sonarsource.github.io/rspec/#/rspec/S2612/javascript
5880
5928
  */
5881
5929
  'sonarjs/file-permissions'?: Linter.RuleEntry<[]>;
@@ -5900,8 +5948,9 @@ interface SonarjsRules {
5900
5948
  */
5901
5949
  'sonarjs/for-loop-increment-sign'?: Linter.RuleEntry<[]>;
5902
5950
  /**
5903
- * Disabling content security policy frame-ancestors directive is security-sensitive
5951
+ * Content Security Policy frame-ancestors directive should not be disabled
5904
5952
  * @see https://sonarsource.github.io/rspec/#/rspec/S5732/javascript
5953
+ * @deprecated
5905
5954
  */
5906
5955
  'sonarjs/frame-ancestors'?: Linter.RuleEntry<[]>;
5907
5956
  /**
@@ -5935,15 +5984,21 @@ interface SonarjsRules {
5935
5984
  */
5936
5985
  'sonarjs/hardcoded-secret-signatures'?: Linter.RuleEntry<[]>;
5937
5986
  /**
5938
- * Using weak hashing algorithms is security-sensitive
5987
+ * Weak hashing algorithms should not be used
5939
5988
  * @see https://sonarsource.github.io/rspec/#/rspec/S4790/javascript
5940
5989
  */
5941
5990
  'sonarjs/hashing'?: Linter.RuleEntry<[]>;
5942
5991
  /**
5943
- * Statically serving hidden files is security-sensitive
5992
+ * Hidden files should not be served statically
5944
5993
  * @see https://sonarsource.github.io/rspec/#/rspec/S5691/javascript
5994
+ * @deprecated
5945
5995
  */
5946
5996
  'sonarjs/hidden-files'?: Linter.RuleEntry<[]>;
5997
+ /**
5998
+ * Lifecycle hooks should not be interleaved with test cases or nested suites
5999
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8782/javascript
6000
+ */
6001
+ 'sonarjs/hooks-before-test-cases'?: Linter.RuleEntry<[]>;
5947
6002
  /**
5948
6003
  * "in" should not be used with primitive types
5949
6004
  * @see https://sonarsource.github.io/rspec/#/rspec/S3785/javascript
@@ -5960,7 +6015,7 @@ interface SonarjsRules {
5960
6015
  */
5961
6016
  'sonarjs/index-of-compare-to-positive-number'?: Linter.RuleEntry<[]>;
5962
6017
  /**
5963
- * Creating cookies without the "secure" flag is security-sensitive
6018
+ * Cookies should have the "secure" flag
5964
6019
  * @see https://sonarsource.github.io/rspec/#/rspec/S2092/javascript
5965
6020
  */
5966
6021
  'sonarjs/insecure-cookie'?: Linter.RuleEntry<[]>;
@@ -5985,7 +6040,7 @@ interface SonarjsRules {
5985
6040
  */
5986
6041
  'sonarjs/label-position'?: Linter.RuleEntry<[]>;
5987
6042
  /**
5988
- * Authorizing an opened window to access back to the originating window is security-sensitive
6043
+ * Opened windows should not have access to the originating page
5989
6044
  * @see https://sonarsource.github.io/rspec/#/rspec/S5148/javascript
5990
6045
  */
5991
6046
  'sonarjs/link-with-target-blank'?: Linter.RuleEntry<[]>;
@@ -6009,6 +6064,11 @@ interface SonarjsRules {
6009
6064
  * @see https://sonarsource.github.io/rspec/#/rspec/S4622/javascript
6010
6065
  */
6011
6066
  'sonarjs/max-union-size'?: Linter.RuleEntry<SonarjsMaxUnionSize>;
6067
+ /**
6068
+ * Lodash and Underscore.js `memoize` calls on functions with multiple parameters should use an explicit cache key function
6069
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8932/javascript
6070
+ */
6071
+ 'sonarjs/memoize-cache-key'?: Linter.RuleEntry<[]>;
6012
6072
  /**
6013
6073
  * "for" loop increment clauses should modify the loops' counters
6014
6074
  * @see https://sonarsource.github.io/rspec/#/rspec/S1994/javascript
@@ -6035,7 +6095,7 @@ interface SonarjsRules {
6035
6095
  */
6036
6096
  'sonarjs/no-alphabetical-sort'?: Linter.RuleEntry<[]>;
6037
6097
  /**
6038
- * Disabling Angular built-in sanitization is security-sensitive
6098
+ * Angular built-in sanitization should not be disabled
6039
6099
  * @see https://sonarsource.github.io/rspec/#/rspec/S6268/javascript
6040
6100
  */
6041
6101
  'sonarjs/no-angular-bypass-sanitization'?: Linter.RuleEntry<[]>;
@@ -6065,7 +6125,7 @@ interface SonarjsRules {
6065
6125
  */
6066
6126
  'sonarjs/no-case-label-in-switch'?: Linter.RuleEntry<[]>;
6067
6127
  /**
6068
- * Using clear-text protocols is security-sensitive
6128
+ * Clear-text protocols should not be used
6069
6129
  * @see https://sonarsource.github.io/rspec/#/rspec/S5332/javascript
6070
6130
  */
6071
6131
  'sonarjs/no-clear-text-protocols'?: Linter.RuleEntry<[]>;
@@ -6099,6 +6159,16 @@ interface SonarjsRules {
6099
6159
  * @see https://sonarsource.github.io/rspec/#/rspec/S1854/javascript
6100
6160
  */
6101
6161
  'sonarjs/no-dead-store'?: Linter.RuleEntry<[]>;
6162
+ /**
6163
+ * UI test debug commands should not be committed to version control
6164
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8959/javascript
6165
+ */
6166
+ 'sonarjs/no-debug-commands-in-ui-tests'?: Linter.RuleEntry<[]>;
6167
+ /**
6168
+ * Default imports from modular utility libraries should not be used
6169
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8927/javascript
6170
+ */
6171
+ 'sonarjs/no-default-utility-imports'?: Linter.RuleEntry<[]>;
6102
6172
  /**
6103
6173
  * "delete" should be used only with object properties
6104
6174
  * @see https://sonarsource.github.io/rspec/#/rspec/S3001/javascript
@@ -6114,6 +6184,11 @@ interface SonarjsRules {
6114
6184
  * @see https://sonarsource.github.io/rspec/#/rspec/S1192/javascript
6115
6185
  */
6116
6186
  'sonarjs/no-duplicate-string'?: Linter.RuleEntry<SonarjsNoDuplicateString>;
6187
+ /**
6188
+ * Test titles should be unique within the same suite
6189
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8754/javascript
6190
+ */
6191
+ 'sonarjs/no-duplicate-test-title'?: Linter.RuleEntry<[]>;
6117
6192
  /**
6118
6193
  * Two branches in a conditional structure should not have exactly the same implementation
6119
6194
  * @see https://sonarsource.github.io/rspec/#/rspec/S1871/javascript
@@ -6154,6 +6229,11 @@ interface SonarjsRules {
6154
6229
  * @see https://sonarsource.github.io/rspec/#/rspec/S2187/javascript
6155
6230
  */
6156
6231
  'sonarjs/no-empty-test-file'?: Linter.RuleEntry<[]>;
6232
+ /**
6233
+ * Test and suite titles should not be empty or whitespace-only
6234
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8781/javascript
6235
+ */
6236
+ 'sonarjs/no-empty-test-title'?: Linter.RuleEntry<[]>;
6157
6237
  /**
6158
6238
  * Equality operators should not be used in "for" loop termination conditions
6159
6239
  * @see https://sonarsource.github.io/rspec/#/rspec/S888/javascript
@@ -6174,11 +6254,26 @@ interface SonarjsRules {
6174
6254
  * @see https://sonarsource.github.io/rspec/#/rspec/S128/javascript
6175
6255
  */
6176
6256
  'sonarjs/no-fallthrough'?: Linter.RuleEntry<[]>;
6257
+ /**
6258
+ * Fixed waits should not be used in tests
6259
+ * @see https://sonarsource.github.io/rspec/#/rspec/S2925/javascript
6260
+ */
6261
+ 'sonarjs/no-fixed-wait-in-tests'?: Linter.RuleEntry<[]>;
6262
+ /**
6263
+ * Floating point numbers should not be tested for equality
6264
+ * @see https://sonarsource.github.io/rspec/#/rspec/S1244/javascript
6265
+ */
6266
+ 'sonarjs/no-floating-point-equality'?: Linter.RuleEntry<[]>;
6177
6267
  /**
6178
6268
  * "for in" should not be used with iterables
6179
6269
  * @see https://sonarsource.github.io/rspec/#/rspec/S4139/javascript
6180
6270
  */
6181
6271
  'sonarjs/no-for-in-iterable'?: Linter.RuleEntry<[]>;
6272
+ /**
6273
+ * Forced browser interactions should not bypass actionability checks
6274
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8783/javascript
6275
+ */
6276
+ 'sonarjs/no-forced-browser-interaction'?: Linter.RuleEntry<[]>;
6182
6277
  /**
6183
6278
  * Function declarations should not be made within blocks
6184
6279
  * @see https://sonarsource.github.io/rspec/#/rspec/S1530/javascript
@@ -6200,7 +6295,7 @@ interface SonarjsRules {
6200
6295
  */
6201
6296
  'sonarjs/no-gratuitous-expressions'?: Linter.RuleEntry<[]>;
6202
6297
  /**
6203
- * Using hardcoded IP addresses is security-sensitive
6298
+ * IP addresses should not be hardcoded
6204
6299
  * @see https://sonarsource.github.io/rspec/#/rspec/S1313/javascript
6205
6300
  */
6206
6301
  'sonarjs/no-hardcoded-ip'?: Linter.RuleEntry<[]>;
@@ -6259,6 +6354,11 @@ interface SonarjsRules {
6259
6354
  * @see https://sonarsource.github.io/rspec/#/rspec/S4619/javascript
6260
6355
  */
6261
6356
  'sonarjs/no-in-misuse'?: Linter.RuleEntry<[]>;
6357
+ /**
6358
+ * Assertions comparing incompatible types should not be made
6359
+ * @see https://sonarsource.github.io/rspec/#/rspec/S5845/javascript
6360
+ */
6361
+ 'sonarjs/no-incompatible-assertion-types'?: Linter.RuleEntry<[]>;
6262
6362
  /**
6263
6363
  * Assertions should be complete
6264
6364
  * @see https://sonarsource.github.io/rspec/#/rspec/S2970/javascript
@@ -6280,8 +6380,14 @@ interface SonarjsRules {
6280
6380
  */
6281
6381
  'sonarjs/no-internal-api-use'?: Linter.RuleEntry<[]>;
6282
6382
  /**
6283
- * Using intrusive permissions is security-sensitive
6383
+ * Inline snapshots should not contain interpolations
6384
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8967/javascript
6385
+ */
6386
+ 'sonarjs/no-interpolation-in-inline-snapshots'?: Linter.RuleEntry<[]>;
6387
+ /**
6388
+ * Sensitive permissions should not be requested unnecessarily
6284
6389
  * @see https://sonarsource.github.io/rspec/#/rspec/S5604/javascript
6390
+ * @deprecated
6285
6391
  */
6286
6392
  'sonarjs/no-intrusive-permissions'?: Linter.RuleEntry<SonarjsNoIntrusivePermissions>;
6287
6393
  /**
@@ -6300,8 +6406,9 @@ interface SonarjsRules {
6300
6406
  */
6301
6407
  'sonarjs/no-inverted-boolean-check'?: Linter.RuleEntry<[]>;
6302
6408
  /**
6303
- * Forwarding client IP address is security-sensitive
6409
+ * Client IP address should not be forwarded to proxies
6304
6410
  * @see https://sonarsource.github.io/rspec/#/rspec/S5759/javascript
6411
+ * @deprecated
6305
6412
  */
6306
6413
  'sonarjs/no-ip-forward'?: Linter.RuleEntry<[]>;
6307
6414
  /**
@@ -6315,7 +6422,7 @@ interface SonarjsRules {
6315
6422
  */
6316
6423
  'sonarjs/no-literal-call'?: Linter.RuleEntry<[]>;
6317
6424
  /**
6318
- * Allowing browsers to sniff MIME types is security-sensitive
6425
+ * Browsers should not be allowed to perform MIME type sniffing
6319
6426
  * @see https://sonarsource.github.io/rspec/#/rspec/S5734/javascript
6320
6427
  */
6321
6428
  'sonarjs/no-mime-sniff'?: Linter.RuleEntry<[]>;
@@ -6330,8 +6437,14 @@ interface SonarjsRules {
6330
6437
  */
6331
6438
  'sonarjs/no-misleading-character-class'?: Linter.RuleEntry<[]>;
6332
6439
  /**
6333
- * Allowing mixed-content is security-sensitive
6440
+ * Test and hook callbacks should use a single completion style
6441
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8960/javascript
6442
+ */
6443
+ 'sonarjs/no-mixed-completion-style'?: Linter.RuleEntry<[]>;
6444
+ /**
6445
+ * Content Security Policy should block mixed-content
6334
6446
  * @see https://sonarsource.github.io/rspec/#/rspec/S5730/javascript
6447
+ * @deprecated
6335
6448
  */
6336
6449
  'sonarjs/no-mixed-content'?: Linter.RuleEntry<[]>;
6337
6450
  /**
@@ -6365,7 +6478,7 @@ interface SonarjsRules {
6365
6478
  */
6366
6479
  'sonarjs/no-nested-template-literals'?: Linter.RuleEntry<[]>;
6367
6480
  /**
6368
- * Searching OS commands in PATH is security-sensitive
6481
+ * OS commands should not rely on PATH resolution
6369
6482
  * @see https://sonarsource.github.io/rspec/#/rspec/S4036/javascript
6370
6483
  */
6371
6484
  'sonarjs/no-os-command-from-path'?: Linter.RuleEntry<[]>;
@@ -6400,7 +6513,7 @@ interface SonarjsRules {
6400
6513
  */
6401
6514
  'sonarjs/no-redundant-optional'?: Linter.RuleEntry<[]>;
6402
6515
  /**
6403
- * Redundant pairs of parentheses should be removed
6516
+ * Unnecessary parentheses should be removed
6404
6517
  * @see https://sonarsource.github.io/rspec/#/rspec/S1110/javascript
6405
6518
  * @deprecated
6406
6519
  */
@@ -6411,7 +6524,7 @@ interface SonarjsRules {
6411
6524
  */
6412
6525
  'sonarjs/no-reference-error'?: Linter.RuleEntry<[]>;
6413
6526
  /**
6414
- * Disabling strict HTTP no-referrer policy is security-sensitive
6527
+ * HTTP Referrer-Policy should not be set to an unsafe value
6415
6528
  * @see https://sonarsource.github.io/rspec/#/rspec/S5736/javascript
6416
6529
  */
6417
6530
  'sonarjs/no-referrer-policy'?: Linter.RuleEntry<[]>;
@@ -6445,6 +6558,11 @@ interface SonarjsRules {
6445
6558
  * @see https://sonarsource.github.io/rspec/#/rspec/S2301/javascript
6446
6559
  */
6447
6560
  'sonarjs/no-selector-parameter'?: Linter.RuleEntry<[]>;
6561
+ /**
6562
+ * Static Assets should not serve session cookies
6563
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8441/javascript
6564
+ */
6565
+ 'sonarjs/no-session-cookies-on-static-assets'?: Linter.RuleEntry<[]>;
6448
6566
  /**
6449
6567
  * Tests should not be skipped without providing a reason
6450
6568
  * @see https://sonarsource.github.io/rspec/#/rspec/S1607/javascript
@@ -6471,6 +6589,11 @@ interface SonarjsRules {
6471
6589
  * @see https://sonarsource.github.io/rspec/#/rspec/S5257/javascript
6472
6590
  */
6473
6591
  'sonarjs/no-table-as-layout'?: Linter.RuleEntry<[]>;
6592
+ /**
6593
+ * Assertions should not be trivially true
6594
+ * @see https://sonarsource.github.io/rspec/#/rspec/S5914/javascript
6595
+ */
6596
+ 'sonarjs/no-trivial-assertions'?: Linter.RuleEntry<[]>;
6474
6597
  /**
6475
6598
  * Promise rejections should not be caught by "try" blocks
6476
6599
  * @see https://sonarsource.github.io/rspec/#/rspec/S4822/javascript
@@ -6497,8 +6620,9 @@ interface SonarjsRules {
6497
6620
  */
6498
6621
  'sonarjs/no-uniq-key'?: Linter.RuleEntry<[]>;
6499
6622
  /**
6500
- * Expanding archive files without controlling resource consumption is security-sensitive
6623
+ * Expanding archive files should not be done without controlling resource consumption
6501
6624
  * @see https://sonarsource.github.io/rspec/#/rspec/S5042/javascript
6625
+ * @deprecated
6502
6626
  */
6503
6627
  'sonarjs/no-unsafe-unzip'?: Linter.RuleEntry<[]>;
6504
6628
  /**
@@ -6551,12 +6675,6 @@ interface SonarjsRules {
6551
6675
  * @see https://sonarsource.github.io/rspec/#/rspec/S1526/javascript
6552
6676
  */
6553
6677
  '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
6678
  /**
6561
6679
  * Cipher algorithms should be robust
6562
6680
  * @see https://sonarsource.github.io/rspec/#/rspec/S5547/javascript
@@ -6598,10 +6716,16 @@ interface SonarjsRules {
6598
6716
  */
6599
6717
  'sonarjs/operation-returning-nan'?: Linter.RuleEntry<[]>;
6600
6718
  /**
6601
- * Using shell interpreter when executing OS commands is security-sensitive
6719
+ * OS commands should not be executed using a shell interpreter
6602
6720
  * @see https://sonarsource.github.io/rspec/#/rspec/S4721/javascript
6721
+ * @deprecated
6603
6722
  */
6604
6723
  'sonarjs/os-command'?: Linter.RuleEntry<[]>;
6724
+ /**
6725
+ * Similar tests should be grouped in a single Parameterized test
6726
+ * @see https://sonarsource.github.io/rspec/#/rspec/S5976/javascript
6727
+ */
6728
+ 'sonarjs/parameterized-tests'?: Linter.RuleEntry<[]>;
6605
6729
  /**
6606
6730
  * Origins should be verified during cross-origin communications
6607
6731
  * @see https://sonarsource.github.io/rspec/#/rspec/S2819/javascript
@@ -6617,6 +6741,11 @@ interface SonarjsRules {
6617
6741
  * @see https://sonarsource.github.io/rspec/#/rspec/S1488/javascript
6618
6742
  */
6619
6743
  'sonarjs/prefer-immediate-return'?: Linter.RuleEntry<[]>;
6744
+ /**
6745
+ * Native APIs should be preferred over Lodash and Underscore.js methods
6746
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8907/javascript
6747
+ */
6748
+ 'sonarjs/prefer-native-lodash-alternative'?: Linter.RuleEntry<[]>;
6620
6749
  /**
6621
6750
  * Object literal syntax should be used
6622
6751
  * @see https://sonarsource.github.io/rspec/#/rspec/S2428/javascript
@@ -6642,6 +6771,11 @@ interface SonarjsRules {
6642
6771
  * @see https://sonarsource.github.io/rspec/#/rspec/S1126/javascript
6643
6772
  */
6644
6773
  'sonarjs/prefer-single-boolean-return'?: Linter.RuleEntry<[]>;
6774
+ /**
6775
+ * The most specific assertion should be used
6776
+ * @see https://sonarsource.github.io/rspec/#/rspec/S5906/javascript
6777
+ */
6778
+ 'sonarjs/prefer-specific-assertions'?: Linter.RuleEntry<[]>;
6645
6779
  /**
6646
6780
  * Type predicates should be used
6647
6781
  * @see https://sonarsource.github.io/rspec/#/rspec/S4322/javascript
@@ -6653,18 +6787,12 @@ interface SonarjsRules {
6653
6787
  */
6654
6788
  'sonarjs/prefer-while'?: Linter.RuleEntry<[]>;
6655
6789
  /**
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
6790
+ * Debugging features should not be enabled in production
6663
6791
  * @see https://sonarsource.github.io/rspec/#/rspec/S4507/javascript
6664
6792
  */
6665
6793
  'sonarjs/production-debug'?: Linter.RuleEntry<[]>;
6666
6794
  /**
6667
- * Using pseudorandom number generators (PRNGs) is security-sensitive
6795
+ * Pseudorandom number generators (PRNGs) should not be used in security contexts
6668
6796
  * @see https://sonarsource.github.io/rspec/#/rspec/S2245/javascript
6669
6797
  */
6670
6798
  'sonarjs/pseudo-random'?: Linter.RuleEntry<[]>;
@@ -6674,7 +6802,7 @@ interface SonarjsRules {
6674
6802
  */
6675
6803
  'sonarjs/public-static-readonly'?: Linter.RuleEntry<[]>;
6676
6804
  /**
6677
- * Using publicly writable directories is security-sensitive
6805
+ * Temporary files should not be created in publicly writable directories
6678
6806
  * @see https://sonarsource.github.io/rspec/#/rspec/S5443/javascript
6679
6807
  */
6680
6808
  'sonarjs/publicly-writable-directories'?: Linter.RuleEntry<[]>;
@@ -6693,12 +6821,6 @@ interface SonarjsRules {
6693
6821
  * @see https://sonarsource.github.io/rspec/#/rspec/S5843/javascript
6694
6822
  */
6695
6823
  '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
6824
  /**
6703
6825
  * Wallet phrases should not be hard-coded
6704
6826
  * @see https://sonarsource.github.io/rspec/#/rspec/S7639/javascript
@@ -6725,18 +6847,12 @@ interface SonarjsRules {
6725
6847
  */
6726
6848
  'sonarjs/single-character-alternation'?: Linter.RuleEntry<[]>;
6727
6849
  /**
6728
- * Using slow regular expressions is security-sensitive
6850
+ * Regular expressions should not cause catastrophic backtracking
6729
6851
  * @see https://sonarsource.github.io/rspec/#/rspec/S5852/javascript
6730
6852
  */
6731
6853
  'sonarjs/slow-regex'?: Linter.RuleEntry<[]>;
6732
6854
  /**
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
6855
+ * SQL queries should not be dynamically formatted
6740
6856
  * @see https://sonarsource.github.io/rspec/#/rspec/S2077/javascript
6741
6857
  */
6742
6858
  'sonarjs/sql-queries'?: Linter.RuleEntry<[]>;
@@ -6745,19 +6861,13 @@ interface SonarjsRules {
6745
6861
  * @see https://sonarsource.github.io/rspec/#/rspec/S5973/javascript
6746
6862
  */
6747
6863
  '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
6864
  /**
6755
6865
  * Regular expressions with the global flag should be used with caution
6756
6866
  * @see https://sonarsource.github.io/rspec/#/rspec/S6351/javascript
6757
6867
  */
6758
6868
  'sonarjs/stateful-regex'?: Linter.RuleEntry<[]>;
6759
6869
  /**
6760
- * Disabling Strict-Transport-Security policy is security-sensitive
6870
+ * HTTP Strict-Transport-Security policy should not be disabled
6761
6871
  * @see https://sonarsource.github.io/rspec/#/rspec/S5739/javascript
6762
6872
  */
6763
6873
  'sonarjs/strict-transport-security'?: Linter.RuleEntry<[]>;
@@ -6767,10 +6877,15 @@ interface SonarjsRules {
6767
6877
  */
6768
6878
  'sonarjs/strings-comparison'?: Linter.RuleEntry<[]>;
6769
6879
  /**
6770
- * "super()" should be invoked appropriately
6771
- * @see https://sonarsource.github.io/rspec/#/rspec/S3854/javascript
6880
+ * Regular expressions should not cause non-linear backtracking
6881
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8786/javascript
6882
+ */
6883
+ 'sonarjs/super-linear-regex'?: Linter.RuleEntry<[]>;
6884
+ /**
6885
+ * Tests should not be registered asynchronously in suite callbacks
6886
+ * @see https://sonarsource.github.io/rspec/#/rspec/S8785/javascript
6772
6887
  */
6773
- 'sonarjs/super-invocation'?: Linter.RuleEntry<[]>;
6888
+ 'sonarjs/synchronous-suite-callback'?: Linter.RuleEntry<[]>;
6774
6889
  /**
6775
6890
  * Tables should have headers
6776
6891
  * @see https://sonarsource.github.io/rspec/#/rspec/S5256/javascript
@@ -6869,7 +6984,7 @@ interface SonarjsRules {
6869
6984
  */
6870
6985
  'sonarjs/web-sql-database'?: Linter.RuleEntry<[]>;
6871
6986
  /**
6872
- * Disclosing fingerprints from web application technologies is security-sensitive
6987
+ * Web application technologies should not disclose version information
6873
6988
  * @see https://sonarsource.github.io/rspec/#/rspec/S5689/javascript
6874
6989
  */
6875
6990
  'sonarjs/x-powered-by'?: Linter.RuleEntry<[]>;
@@ -6878,12 +6993,6 @@ interface SonarjsRules {
6878
6993
  * @see https://sonarsource.github.io/rspec/#/rspec/S2755/javascript
6879
6994
  */
6880
6995
  '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
6996
  }
6888
6997
  type SonarjsArrowFunctionConvention = [] | [{
6889
6998
  requireParameterParentheses?: boolean;
@@ -6892,7 +7001,7 @@ type SonarjsArrowFunctionConvention = [] | [{
6892
7001
  type SonarjsClassName = [] | [{
6893
7002
  format?: string;
6894
7003
  }];
6895
- type SonarjsCognitiveComplexity = [] | [(number | string)] | [(number | string), string];
7004
+ type SonarjsCognitiveComplexity = [] | [(number | "silence-issues")] | [(number | "silence-issues"), "silence-issues"];
6896
7005
  type SonarjsCommentRegex = [] | [{
6897
7006
  regularExpression?: string;
6898
7007
  message?: string;
@@ -6905,15 +7014,6 @@ type SonarjsContentLength = [] | [{
6905
7014
  type SonarjsCyclomaticComplexity = [] | [{
6906
7015
  threshold?: number;
6907
7016
  }];
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
7017
  type SonarjsExpressionComplexity = [] | [{
6918
7018
  max?: number;
6919
7019
  }];
@@ -7089,6 +7189,11 @@ interface PlaywrightRules {
7089
7189
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-duplicate-hooks.md
7090
7190
  */
7091
7191
  'playwright/no-duplicate-hooks'?: Linter.RuleEntry<[]>;
7192
+ /**
7193
+ * Disallow multiple `test.slow()` calls in the same test
7194
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-duplicate-slow.md
7195
+ */
7196
+ 'playwright/no-duplicate-slow'?: Linter.RuleEntry<[]>;
7092
7197
  /**
7093
7198
  * The use of ElementHandle is discouraged, use Locator instead
7094
7199
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-element-handle.md
@@ -7154,6 +7259,11 @@ interface PlaywrightRules {
7154
7259
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-matchers.md
7155
7260
  */
7156
7261
  'playwright/no-restricted-matchers'?: Linter.RuleEntry<PlaywrightNoRestrictedMatchers>;
7262
+ /**
7263
+ * Disallows the usage of specific roles in getByRole()
7264
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-restricted-roles.md
7265
+ */
7266
+ 'playwright/no-restricted-roles'?: Linter.RuleEntry<PlaywrightNoRestrictedRoles>;
7157
7267
  /**
7158
7268
  * Prevent usage of the `.skip()` skip test annotation.
7159
7269
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-skipped-test.md
@@ -7169,6 +7279,11 @@ interface PlaywrightRules {
7169
7279
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-standalone-expect.md
7170
7280
  */
7171
7281
  'playwright/no-standalone-expect'?: Linter.RuleEntry<[]>;
7282
+ /**
7283
+ * Disallow assertions on a Locator that can never fail
7284
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-unnecessary-assertions.md
7285
+ */
7286
+ 'playwright/no-unnecessary-assertions'?: Linter.RuleEntry<[]>;
7172
7287
  /**
7173
7288
  * Prevent unsafe variable references in page.evaluate() and page.addInitScript()
7174
7289
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/no-unsafe-references.md
@@ -7279,6 +7394,16 @@ interface PlaywrightRules {
7279
7394
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-soft-assertions.md
7280
7395
  */
7281
7396
  'playwright/require-soft-assertions'?: Linter.RuleEntry<[]>;
7397
+ /**
7398
+ * Require test blocks to have tags
7399
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-tags.md
7400
+ */
7401
+ 'playwright/require-tags'?: Linter.RuleEntry<[]>;
7402
+ /**
7403
+ * Require a timeout option for `toPass()`
7404
+ * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-to-pass-timeout.md
7405
+ */
7406
+ 'playwright/require-to-pass-timeout'?: Linter.RuleEntry<[]>;
7282
7407
  /**
7283
7408
  * Require a message for `toThrow()`
7284
7409
  * @see https://github.com/mskelton/eslint-plugin-playwright/tree/main/docs/rules/require-to-throw-message.md
@@ -7327,6 +7452,7 @@ type PlaywrightMaxNestedDescribe = [] | [{
7327
7452
  }];
7328
7453
  type PlaywrightMissingPlaywrightAwait = [] | [{
7329
7454
  customMatchers?: string[];
7455
+ includePageLocatorMethods?: boolean;
7330
7456
  }];
7331
7457
  type PlaywrightNoHooks = [] | [{
7332
7458
  allow?: unknown[];
@@ -7341,8 +7467,13 @@ type PlaywrightNoRestrictedLocators = [] | [(string | {
7341
7467
  type PlaywrightNoRestrictedMatchers = [] | [{
7342
7468
  [k: string]: (string | null) | undefined;
7343
7469
  }];
7470
+ type PlaywrightNoRestrictedRoles = [] | [(string | {
7471
+ message?: string;
7472
+ role: string;
7473
+ })[]];
7344
7474
  type PlaywrightNoSkippedTest = [] | [{
7345
7475
  allowConditional?: boolean;
7476
+ disallowFixme?: boolean;
7346
7477
  }];
7347
7478
  type PlaywrightNoSlowedTest = [] | [{
7348
7479
  allowConditional?: boolean;