@sarj/eslint-plugin 9.5.0 → 9.7.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.cts CHANGED
@@ -1,10 +1,6 @@
1
1
  import * as _typescript_eslint_utils_ts_eslint from '@typescript-eslint/utils/ts-eslint';
2
2
 
3
- /**
4
- * @fileoverview _retired — a withdrawn rule name is burned, not recycled, because a consumer's `eslint-disable` comment or suppressions entry still names it.
5
- *
6
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_retired.md
7
- */
3
+ /** @fileoverview _retired — burned rule names and their migration action. */
8
4
  /** Why a name was withdrawn, and in which release. */
9
5
  interface RetiredRule {
10
6
  /** The plugin version whose release removed the rule. */
@@ -17,7 +13,6 @@ declare const retiredRules: Readonly<Record<string, RetiredRule>>;
17
13
  /**
18
14
  * @fileoverview _comment-wall — the shared judgement behind the comment-VOLUME rules: a run of member comments that mostly re-spell their members is a wall.
19
15
  *
20
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_comment-wall.md
21
16
  */
22
17
 
23
18
  /** Every threshold the wall rules apply; each is documented at `WALL_DEFAULTS`. */
@@ -32,7 +27,6 @@ interface WallOptions {
32
27
  * @fileoverview no-storage-in-stateless-modules — private storage inside a module a team declared stateless diverges from the system of record, silently.
33
28
  *
34
29
  * Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-storage-in-stateless-modules.test.ts
35
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-storage-in-stateless-modules.md
36
30
  */
37
31
  interface RuleOptions$2 {
38
32
  /** Regex sources matched against the filename. Empty means the rule is off. */
@@ -45,7 +39,6 @@ interface RuleOptions$2 {
45
39
  * @fileoverview no-raw-fetch-outside-clients — a bare `fetch` outside the client layer opts out of retry, timeout and status handling, and cannot be stubbed.
46
40
  *
47
41
  * Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-raw-fetch-outside-clients.test.ts
48
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-raw-fetch-outside-clients.md
49
42
  */
50
43
  interface RuleOptions$1 {
51
44
  /** Regular-expression sources matched against the filename. */
@@ -54,8 +47,6 @@ interface RuleOptions$1 {
54
47
 
55
48
  /**
56
49
  * @fileoverview _logging — shared recognition of logging / error-reporting calls, so the catch rules and the secret rule cannot disagree.
57
- *
58
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_logging.md
59
50
  */
60
51
 
61
52
  /** Shared `loggerNames` / `logFunctions` option shape. */
@@ -68,7 +59,6 @@ interface LoggingOptions {
68
59
  * @fileoverview no-dynamic-sql — a runtime value interpolated into statement text is SQL injection, and it defeats the prepared-statement cache.
69
60
  *
70
61
  * Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-dynamic-sql.test.ts
71
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-dynamic-sql.md
72
62
  */
73
63
  interface RuleOptions {
74
64
  /** Statement-taking method names to inspect. Replaces the defaults. */
@@ -78,9 +68,8 @@ interface RuleOptions {
78
68
  /**
79
69
  * @fileoverview _renames — every rule this plugin has renamed, old name to new; the old names no longer resolve, so this map is what says what to write instead.
80
70
  *
81
- * It feeds `scripts/sync-rule-ledger.py`, which turns each entry into a `renamed` row of the shipped `rule-ledger.json` that `sarj-lint-configs doctor` reads.
71
+ * `sarj-standards repo sync-ledger` turns each entry into the consumer-facing ledger row.
82
72
  *
83
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_renames.md
84
73
  */
85
74
  declare const renamedRules: {
86
75
  readonly "jsdoc-restates-signature": "no-restated-jsdoc";
@@ -99,7 +88,7 @@ declare const rules: {
99
88
  "no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
100
89
  name: string;
101
90
  };
102
- "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
91
+ "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
103
92
  name: string;
104
93
  };
105
94
  "no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
@@ -134,6 +123,9 @@ declare const rules: {
134
123
  "no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
135
124
  name: string;
136
125
  };
126
+ "no-long-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"tooLong", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
127
+ name: string;
128
+ };
137
129
  "no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
138
130
  name: string;
139
131
  };
@@ -179,6 +171,9 @@ declare const rules: {
179
171
  "no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
180
172
  name: string;
181
173
  };
174
+ "no-typed-doc-sections": _typescript_eslint_utils_ts_eslint.RuleModule<"typedSection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
175
+ name: string;
176
+ };
182
177
  "no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
183
178
  name: string;
184
179
  };
@@ -234,6 +229,9 @@ declare const rules: {
234
229
  "prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
235
230
  name: string;
236
231
  };
232
+ "prefer-single-sentence-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"preferOneSentence", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
233
+ name: string;
234
+ };
237
235
  "prefer-string-literal-union": _typescript_eslint_utils_ts_eslint.RuleModule<"bareChoiceField" | "comparisonCluster", readonly [{
238
236
  ignoreFields?: readonly string[];
239
237
  }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
@@ -287,6 +285,7 @@ declare const recommendedRules: {
287
285
  readonly "@sarj/no-insecure-random-id": "warn";
288
286
  readonly "@sarj/no-json-stringify-error": "warn";
289
287
  readonly "@sarj/no-log-only-catch": "warn";
288
+ readonly "@sarj/no-long-comment": "warn";
290
289
  readonly "@sarj/no-offset-pagination": "warn";
291
290
  readonly "@sarj/no-positional-tuple-return": "warn";
292
291
  readonly "@sarj/no-repeated-string-literal": "warn";
@@ -299,6 +298,7 @@ declare const recommendedRules: {
299
298
  readonly "@sarj/no-sleep-in-test-body": "warn";
300
299
  readonly "@sarj/no-string-concat-in-loop": "warn";
301
300
  readonly "@sarj/no-tautological-expect": "warn";
301
+ readonly "@sarj/no-typed-doc-sections": "warn";
302
302
  readonly "@sarj/no-trailing-value-narration": "warn";
303
303
  readonly "@sarj/no-declaration-comment-wall": "warn";
304
304
  readonly "@sarj/no-union-in-comment": "warn";
@@ -316,6 +316,7 @@ declare const recommendedRules: {
316
316
  readonly requireSemanticTokens: true;
317
317
  }];
318
318
  readonly "@sarj/prefer-server-actions": "warn";
319
+ readonly "@sarj/prefer-single-sentence-comment": "warn";
319
320
  readonly "@sarj/prefer-string-literal-union": "warn";
320
321
  readonly "@sarj/prefer-whole-object-assertion": "warn";
321
322
  readonly "@sarj/prefer-zod-enum": "warn";
@@ -341,6 +342,7 @@ declare const strictRules: {
341
342
  readonly "@sarj/no-insecure-random-id": "error";
342
343
  readonly "@sarj/no-json-stringify-error": "error";
343
344
  readonly "@sarj/no-log-only-catch": "error";
345
+ readonly "@sarj/no-long-comment": "error";
344
346
  readonly "@sarj/no-offset-pagination": "error";
345
347
  readonly "@sarj/no-positional-tuple-return": "error";
346
348
  readonly "@sarj/no-raw-env": "error";
@@ -356,6 +358,7 @@ declare const strictRules: {
356
358
  readonly "@sarj/no-storage-in-stateless-modules": "error";
357
359
  readonly "@sarj/no-string-concat-in-loop": "error";
358
360
  readonly "@sarj/no-tautological-expect": "error";
361
+ readonly "@sarj/no-typed-doc-sections": "error";
359
362
  readonly "@sarj/no-trailing-value-narration": "error";
360
363
  readonly "@sarj/no-declaration-comment-wall": "error";
361
364
  readonly "@sarj/no-union-in-comment": "error";
@@ -373,6 +376,7 @@ declare const strictRules: {
373
376
  readonly requireSemanticTokens: true;
374
377
  }];
375
378
  readonly "@sarj/prefer-server-actions": "error";
379
+ readonly "@sarj/prefer-single-sentence-comment": "warn";
376
380
  readonly "@sarj/prefer-string-literal-union": "error";
377
381
  readonly "@sarj/prefer-whole-object-assertion": "error";
378
382
  readonly "@sarj/prefer-zod-enum": "error";
@@ -397,7 +401,7 @@ type FlatPreset = {
397
401
  declare const plugin: {
398
402
  meta: {
399
403
  readonly name: "@sarj/eslint-plugin";
400
- readonly version: "9.5.0";
404
+ readonly version: "9.7.0";
401
405
  };
402
406
  rules: {
403
407
  "enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
@@ -409,7 +413,7 @@ declare const plugin: {
409
413
  "no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
410
414
  name: string;
411
415
  };
412
- "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
416
+ "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
413
417
  name: string;
414
418
  };
415
419
  "no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
@@ -444,6 +448,9 @@ declare const plugin: {
444
448
  "no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
445
449
  name: string;
446
450
  };
451
+ "no-long-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"tooLong", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
452
+ name: string;
453
+ };
447
454
  "no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
448
455
  name: string;
449
456
  };
@@ -489,6 +496,9 @@ declare const plugin: {
489
496
  "no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
490
497
  name: string;
491
498
  };
499
+ "no-typed-doc-sections": _typescript_eslint_utils_ts_eslint.RuleModule<"typedSection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
500
+ name: string;
501
+ };
492
502
  "no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
493
503
  name: string;
494
504
  };
@@ -544,6 +554,9 @@ declare const plugin: {
544
554
  "prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
545
555
  name: string;
546
556
  };
557
+ "prefer-single-sentence-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"preferOneSentence", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
558
+ name: string;
559
+ };
547
560
  "prefer-string-literal-union": _typescript_eslint_utils_ts_eslint.RuleModule<"bareChoiceField" | "comparisonCluster", readonly [{
548
561
  ignoreFields?: readonly string[];
549
562
  }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
package/dist/index.d.ts CHANGED
@@ -1,10 +1,6 @@
1
1
  import * as _typescript_eslint_utils_ts_eslint from '@typescript-eslint/utils/ts-eslint';
2
2
 
3
- /**
4
- * @fileoverview _retired — a withdrawn rule name is burned, not recycled, because a consumer's `eslint-disable` comment or suppressions entry still names it.
5
- *
6
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_retired.md
7
- */
3
+ /** @fileoverview _retired — burned rule names and their migration action. */
8
4
  /** Why a name was withdrawn, and in which release. */
9
5
  interface RetiredRule {
10
6
  /** The plugin version whose release removed the rule. */
@@ -17,7 +13,6 @@ declare const retiredRules: Readonly<Record<string, RetiredRule>>;
17
13
  /**
18
14
  * @fileoverview _comment-wall — the shared judgement behind the comment-VOLUME rules: a run of member comments that mostly re-spell their members is a wall.
19
15
  *
20
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_comment-wall.md
21
16
  */
22
17
 
23
18
  /** Every threshold the wall rules apply; each is documented at `WALL_DEFAULTS`. */
@@ -32,7 +27,6 @@ interface WallOptions {
32
27
  * @fileoverview no-storage-in-stateless-modules — private storage inside a module a team declared stateless diverges from the system of record, silently.
33
28
  *
34
29
  * Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-storage-in-stateless-modules.test.ts
35
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-storage-in-stateless-modules.md
36
30
  */
37
31
  interface RuleOptions$2 {
38
32
  /** Regex sources matched against the filename. Empty means the rule is off. */
@@ -45,7 +39,6 @@ interface RuleOptions$2 {
45
39
  * @fileoverview no-raw-fetch-outside-clients — a bare `fetch` outside the client layer opts out of retry, timeout and status handling, and cannot be stubbed.
46
40
  *
47
41
  * Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-raw-fetch-outside-clients.test.ts
48
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-raw-fetch-outside-clients.md
49
42
  */
50
43
  interface RuleOptions$1 {
51
44
  /** Regular-expression sources matched against the filename. */
@@ -54,8 +47,6 @@ interface RuleOptions$1 {
54
47
 
55
48
  /**
56
49
  * @fileoverview _logging — shared recognition of logging / error-reporting calls, so the catch rules and the secret rule cannot disagree.
57
- *
58
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_logging.md
59
50
  */
60
51
 
61
52
  /** Shared `loggerNames` / `logFunctions` option shape. */
@@ -68,7 +59,6 @@ interface LoggingOptions {
68
59
  * @fileoverview no-dynamic-sql — a runtime value interpolated into statement text is SQL injection, and it defeats the prepared-statement cache.
69
60
  *
70
61
  * Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-dynamic-sql.test.ts
71
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-dynamic-sql.md
72
62
  */
73
63
  interface RuleOptions {
74
64
  /** Statement-taking method names to inspect. Replaces the defaults. */
@@ -78,9 +68,8 @@ interface RuleOptions {
78
68
  /**
79
69
  * @fileoverview _renames — every rule this plugin has renamed, old name to new; the old names no longer resolve, so this map is what says what to write instead.
80
70
  *
81
- * It feeds `scripts/sync-rule-ledger.py`, which turns each entry into a `renamed` row of the shipped `rule-ledger.json` that `sarj-lint-configs doctor` reads.
71
+ * `sarj-standards repo sync-ledger` turns each entry into the consumer-facing ledger row.
82
72
  *
83
- * Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_renames.md
84
73
  */
85
74
  declare const renamedRules: {
86
75
  readonly "jsdoc-restates-signature": "no-restated-jsdoc";
@@ -99,7 +88,7 @@ declare const rules: {
99
88
  "no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
100
89
  name: string;
101
90
  };
102
- "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
91
+ "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
103
92
  name: string;
104
93
  };
105
94
  "no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
@@ -134,6 +123,9 @@ declare const rules: {
134
123
  "no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
135
124
  name: string;
136
125
  };
126
+ "no-long-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"tooLong", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
127
+ name: string;
128
+ };
137
129
  "no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
138
130
  name: string;
139
131
  };
@@ -179,6 +171,9 @@ declare const rules: {
179
171
  "no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
180
172
  name: string;
181
173
  };
174
+ "no-typed-doc-sections": _typescript_eslint_utils_ts_eslint.RuleModule<"typedSection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
175
+ name: string;
176
+ };
182
177
  "no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
183
178
  name: string;
184
179
  };
@@ -234,6 +229,9 @@ declare const rules: {
234
229
  "prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
235
230
  name: string;
236
231
  };
232
+ "prefer-single-sentence-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"preferOneSentence", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
233
+ name: string;
234
+ };
237
235
  "prefer-string-literal-union": _typescript_eslint_utils_ts_eslint.RuleModule<"bareChoiceField" | "comparisonCluster", readonly [{
238
236
  ignoreFields?: readonly string[];
239
237
  }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
@@ -287,6 +285,7 @@ declare const recommendedRules: {
287
285
  readonly "@sarj/no-insecure-random-id": "warn";
288
286
  readonly "@sarj/no-json-stringify-error": "warn";
289
287
  readonly "@sarj/no-log-only-catch": "warn";
288
+ readonly "@sarj/no-long-comment": "warn";
290
289
  readonly "@sarj/no-offset-pagination": "warn";
291
290
  readonly "@sarj/no-positional-tuple-return": "warn";
292
291
  readonly "@sarj/no-repeated-string-literal": "warn";
@@ -299,6 +298,7 @@ declare const recommendedRules: {
299
298
  readonly "@sarj/no-sleep-in-test-body": "warn";
300
299
  readonly "@sarj/no-string-concat-in-loop": "warn";
301
300
  readonly "@sarj/no-tautological-expect": "warn";
301
+ readonly "@sarj/no-typed-doc-sections": "warn";
302
302
  readonly "@sarj/no-trailing-value-narration": "warn";
303
303
  readonly "@sarj/no-declaration-comment-wall": "warn";
304
304
  readonly "@sarj/no-union-in-comment": "warn";
@@ -316,6 +316,7 @@ declare const recommendedRules: {
316
316
  readonly requireSemanticTokens: true;
317
317
  }];
318
318
  readonly "@sarj/prefer-server-actions": "warn";
319
+ readonly "@sarj/prefer-single-sentence-comment": "warn";
319
320
  readonly "@sarj/prefer-string-literal-union": "warn";
320
321
  readonly "@sarj/prefer-whole-object-assertion": "warn";
321
322
  readonly "@sarj/prefer-zod-enum": "warn";
@@ -341,6 +342,7 @@ declare const strictRules: {
341
342
  readonly "@sarj/no-insecure-random-id": "error";
342
343
  readonly "@sarj/no-json-stringify-error": "error";
343
344
  readonly "@sarj/no-log-only-catch": "error";
345
+ readonly "@sarj/no-long-comment": "error";
344
346
  readonly "@sarj/no-offset-pagination": "error";
345
347
  readonly "@sarj/no-positional-tuple-return": "error";
346
348
  readonly "@sarj/no-raw-env": "error";
@@ -356,6 +358,7 @@ declare const strictRules: {
356
358
  readonly "@sarj/no-storage-in-stateless-modules": "error";
357
359
  readonly "@sarj/no-string-concat-in-loop": "error";
358
360
  readonly "@sarj/no-tautological-expect": "error";
361
+ readonly "@sarj/no-typed-doc-sections": "error";
359
362
  readonly "@sarj/no-trailing-value-narration": "error";
360
363
  readonly "@sarj/no-declaration-comment-wall": "error";
361
364
  readonly "@sarj/no-union-in-comment": "error";
@@ -373,6 +376,7 @@ declare const strictRules: {
373
376
  readonly requireSemanticTokens: true;
374
377
  }];
375
378
  readonly "@sarj/prefer-server-actions": "error";
379
+ readonly "@sarj/prefer-single-sentence-comment": "warn";
376
380
  readonly "@sarj/prefer-string-literal-union": "error";
377
381
  readonly "@sarj/prefer-whole-object-assertion": "error";
378
382
  readonly "@sarj/prefer-zod-enum": "error";
@@ -397,7 +401,7 @@ type FlatPreset = {
397
401
  declare const plugin: {
398
402
  meta: {
399
403
  readonly name: "@sarj/eslint-plugin";
400
- readonly version: "9.5.0";
404
+ readonly version: "9.7.0";
401
405
  };
402
406
  rules: {
403
407
  "enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
@@ -409,7 +413,7 @@ declare const plugin: {
409
413
  "no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
410
414
  name: string;
411
415
  };
412
- "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
416
+ "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
413
417
  name: string;
414
418
  };
415
419
  "no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
@@ -444,6 +448,9 @@ declare const plugin: {
444
448
  "no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
445
449
  name: string;
446
450
  };
451
+ "no-long-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"tooLong", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
452
+ name: string;
453
+ };
447
454
  "no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
448
455
  name: string;
449
456
  };
@@ -489,6 +496,9 @@ declare const plugin: {
489
496
  "no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
490
497
  name: string;
491
498
  };
499
+ "no-typed-doc-sections": _typescript_eslint_utils_ts_eslint.RuleModule<"typedSection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
500
+ name: string;
501
+ };
492
502
  "no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
493
503
  name: string;
494
504
  };
@@ -544,6 +554,9 @@ declare const plugin: {
544
554
  "prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
545
555
  name: string;
546
556
  };
557
+ "prefer-single-sentence-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"preferOneSentence", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
558
+ name: string;
559
+ };
547
560
  "prefer-string-literal-union": _typescript_eslint_utils_ts_eslint.RuleModule<"bareChoiceField" | "comparisonCluster", readonly [{
548
561
  ignoreFields?: readonly string[];
549
562
  }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {