@sarj/eslint-plugin 11.2.0 → 13.0.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,4 +1,4 @@
1
- import * as _typescript_eslint_utils_ts_eslint from '@typescript-eslint/utils/ts-eslint';
1
+ import { ESLintUtils } from '@typescript-eslint/utils';
2
2
 
3
3
  /** @fileoverview _retired — burned rule names and their migration action. */
4
4
  /** Why a name was withdrawn, and in which release. */
@@ -23,6 +23,87 @@ interface WallOptions {
23
23
  readonly maxNovelWords: number;
24
24
  }
25
25
 
26
+ /**
27
+ * @fileoverview _docs — typed source-owned rule documentation and executable examples.
28
+ *
29
+ */
30
+
31
+ type RuleCategory = "architecture" | "correctness" | "maintainability" | "performance" | "security" | "style" | "testing";
32
+ type AutofixPolicy = "none" | "safe" | "suggestion";
33
+ type ExampleOutcome = "match" | "no-match";
34
+ interface ExampleFile {
35
+ readonly path: string;
36
+ readonly source: string;
37
+ }
38
+ /** A reviewed example. It remains private unless `public: true` is explicit. */
39
+ interface RuleExample {
40
+ readonly id: string;
41
+ readonly title: string;
42
+ readonly outcome: ExampleOutcome;
43
+ readonly files: readonly ExampleFile[];
44
+ readonly focusPath: string;
45
+ readonly expectedCount: number;
46
+ readonly public?: boolean;
47
+ readonly fixedFiles?: readonly ExampleFile[];
48
+ }
49
+ /** Human-authored fields that cannot be derived from the ESLint rule module. */
50
+ interface RuleDocumentation {
51
+ readonly summary: string;
52
+ readonly rationale: string;
53
+ readonly remediation: string;
54
+ readonly category: RuleCategory;
55
+ readonly languages?: readonly "typescript"[];
56
+ readonly autofix?: AutofixPolicy;
57
+ readonly aliases?: readonly string[];
58
+ readonly limitations?: readonly string[];
59
+ readonly filePatterns?: readonly string[];
60
+ readonly references?: readonly string[];
61
+ readonly since?: string;
62
+ readonly examples?: readonly RuleExample[];
63
+ }
64
+ /** Complete native record exposed to catalog generation without changing ESLint metadata. */
65
+ interface NativeRuleSpec extends Required<Omit<RuleDocumentation, "since">> {
66
+ readonly engine: "eslint";
67
+ readonly ruleId: string;
68
+ readonly code: null;
69
+ readonly messageIds: readonly string[];
70
+ readonly optionsSchema: object | null;
71
+ readonly since: string | null;
72
+ readonly key: string;
73
+ readonly publicExamples: readonly RuleExample[];
74
+ }
75
+ /** The explicit allowlist projection consumed by generated public documentation. */
76
+ interface PublicRuleSpec {
77
+ readonly engine: "eslint";
78
+ readonly ruleId: string;
79
+ readonly code: null;
80
+ readonly summary: string;
81
+ readonly rationale: string;
82
+ readonly remediation: string;
83
+ readonly category: RuleCategory;
84
+ readonly languages: readonly "typescript"[];
85
+ readonly autofix: AutofixPolicy;
86
+ readonly aliases: readonly string[];
87
+ readonly limitations: readonly string[];
88
+ readonly filePatterns: readonly string[];
89
+ readonly references: readonly string[];
90
+ readonly since: string | null;
91
+ readonly messageIds: readonly string[];
92
+ readonly optionsSchema: object | null;
93
+ readonly examples: readonly RuleExample[];
94
+ }
95
+ declare const eslintCreateRule: <Options extends readonly unknown[], MessageIds extends string>({ meta, name, ...rule }: Readonly<ESLintUtils.RuleWithMetaAndName<Options, MessageIds, unknown>>) => ESLintUtils.RuleModule<MessageIds, Options, unknown, ESLintUtils.RuleListener> & {
96
+ name: string;
97
+ };
98
+ type DocumentedRule<Options extends readonly unknown[], MessageIds extends string> = ReturnType<typeof eslintCreateRule<Options, MessageIds>> & {
99
+ /** Non-enumerable so the public ESLint rule shape remains unchanged. */
100
+ readonly documentation?: NativeRuleSpec;
101
+ };
102
+ /** Serialize only reviewed fields; test-only examples never cross this boundary. */
103
+ declare function publicDocumentation(rules: Readonly<Record<string, {
104
+ readonly documentation?: NativeRuleSpec;
105
+ }>>): readonly PublicRuleSpec[];
106
+
26
107
  /**
27
108
  * @fileoverview no-storage-in-stateless-modules — private storage inside a module a team declared stateless diverges from the system of record, silently.
28
109
  *
@@ -83,236 +164,102 @@ interface RuleOptions {
83
164
  declare const renamedRules: {
84
165
  readonly "jsdoc-restates-signature": "no-restated-jsdoc";
85
166
  readonly "no-async-callback-in-waitfor": "no-async-callback-in-wait-for";
167
+ readonly "require-interface-for-injected-service": "require-port-for-service";
86
168
  readonly "strict-test-assertions": "prefer-whole-object-assertion";
87
169
  readonly "trailing-value-narration": "no-trailing-value-narration";
88
170
  };
89
171
 
90
172
  declare const rules: {
91
- readonly "duplicate-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
92
- name: string;
93
- };
94
- readonly "enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
95
- name: string;
96
- };
97
- readonly "no-async-callback-in-wait-for": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
98
- name: string;
99
- };
100
- readonly "no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
101
- name: string;
102
- };
103
- readonly "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "placeholderImplementation" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
104
- name: string;
105
- };
106
- readonly "no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
107
- name: string;
108
- };
109
- readonly "no-cors-wildcard-with-credentials": _typescript_eslint_utils_ts_eslint.RuleModule<"corsWildcardWithCredentials", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
110
- name: string;
111
- };
112
- readonly "no-dynamic-sql": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicSql", readonly [RuleOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
113
- name: string;
114
- };
115
- readonly "no-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"noEnum", readonly [{
173
+ readonly "duplicate-test-body": DocumentedRule<readonly [], "duplicateTestBody">;
174
+ readonly "enforce-file-structure": DocumentedRule<readonly [], "importsFirst" | "useServerDirective">;
175
+ readonly "no-async-callback-in-wait-for": DocumentedRule<readonly [], "noAsyncCallbackInWaitFor">;
176
+ readonly "no-client-side-data-fetching": DocumentedRule<readonly [], "noClientFetch">;
177
+ readonly "no-comment-cruft": DocumentedRule<readonly [], "commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "placeholderImplementation" | "untrackedTodo">;
178
+ readonly "no-conditional-in-test": DocumentedRule<readonly [], "noConditionalInTest">;
179
+ readonly "no-cors-wildcard-with-credentials": DocumentedRule<readonly [], "corsWildcardWithCredentials">;
180
+ readonly "no-dynamic-sql": DocumentedRule<readonly [RuleOptions?], "dynamicSql">;
181
+ readonly "no-enum": DocumentedRule<readonly [{
116
182
  ignoreFiles?: readonly string[];
117
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
118
- name: string;
119
- };
120
- readonly "no-fat-try-blocks": _typescript_eslint_utils_ts_eslint.RuleModule<"fatTryBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
121
- name: string;
122
- };
123
- readonly "no-hand-rolled-sleep": _typescript_eslint_utils_ts_eslint.RuleModule<"handRolledSleep" | "handRolledTimeoutRace", readonly [{
183
+ }?], "noEnum">;
184
+ readonly "no-fat-try-blocks": DocumentedRule<readonly [], "fatTryBlock">;
185
+ readonly "no-hand-rolled-sleep": DocumentedRule<readonly [{
124
186
  allowIn?: readonly string[];
125
187
  checkClientModules?: boolean;
126
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
127
- name: string;
128
- };
129
- readonly "no-hand-rolled-spinner": _typescript_eslint_utils_ts_eslint.RuleModule<"handRolledSpinner", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
130
- name: string;
131
- };
132
- readonly "no-insecure-random-id": _typescript_eslint_utils_ts_eslint.RuleModule<"insecureRandomId", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
133
- name: string;
134
- };
135
- readonly "no-json-stringify-error": _typescript_eslint_utils_ts_eslint.RuleModule<"noJsonStringifyError", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
136
- name: string;
137
- };
138
- readonly "no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
139
- name: string;
140
- };
141
- readonly "no-long-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"tooLong", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
142
- name: string;
143
- };
144
- readonly "no-generic-single-export-module": _typescript_eslint_utils_ts_eslint.RuleModule<"genericSingleExport", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
145
- name: string;
146
- };
147
- readonly "no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
148
- name: string;
149
- };
150
- readonly "no-positional-tuple-return": _typescript_eslint_utils_ts_eslint.RuleModule<"noPositionalTupleReturn", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
151
- name: string;
152
- };
153
- readonly "no-raw-env": _typescript_eslint_utils_ts_eslint.RuleModule<"noRawEnv", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
154
- name: string;
155
- };
156
- readonly "no-raw-fetch-outside-clients": _typescript_eslint_utils_ts_eslint.RuleModule<"rawFetch", readonly [RuleOptions$1?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
157
- name: string;
158
- };
159
- readonly "no-restricted-library-load": _typescript_eslint_utils_ts_eslint.RuleModule<"restrictedLibraryLoad", readonly [{
188
+ }?], "handRolledSleep" | "handRolledTimeoutRace">;
189
+ readonly "no-hand-rolled-spinner": DocumentedRule<readonly [], "handRolledSpinner">;
190
+ readonly "no-insecure-random-id": DocumentedRule<readonly [], "insecureRandomId">;
191
+ readonly "no-json-stringify-error": DocumentedRule<readonly [], "noJsonStringifyError">;
192
+ readonly "no-impossible-zod-literal-bounds": DocumentedRule<readonly [], "impossibleBounds">;
193
+ readonly "no-log-only-catch": DocumentedRule<readonly [LoggingOptions?], "noLogOnlyCatch" | "emptyCatch">;
194
+ readonly "no-long-comment": DocumentedRule<readonly [], "tooLong">;
195
+ readonly "no-generic-single-export-module": DocumentedRule<[], "genericSingleExport">;
196
+ readonly "no-offset-pagination": DocumentedRule<readonly [], "noOffsetPagination">;
197
+ readonly "no-positional-tuple-return": DocumentedRule<readonly [], "noPositionalTupleReturn">;
198
+ readonly "no-raw-env": DocumentedRule<readonly [], "noRawEnv">;
199
+ readonly "no-raw-fetch-outside-clients": DocumentedRule<readonly [RuleOptions$1?], "rawFetch">;
200
+ readonly "no-restricted-library-load": DocumentedRule<readonly [{
160
201
  libraries: readonly RestrictedLibrary[];
161
- }], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
162
- name: string;
163
- };
164
- readonly "no-repeated-string-literal": _typescript_eslint_utils_ts_eslint.RuleModule<"noRepeatedStringLiteral", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
165
- name: string;
166
- };
167
- readonly "no-restated-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesLineBelow", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
168
- name: string;
169
- };
170
- readonly "no-restated-jsdoc": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesSignature" | "deleteBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
171
- name: string;
172
- };
173
- readonly "no-secret-in-log": _typescript_eslint_utils_ts_eslint.RuleModule<"noSecretInLog" | "noRawBodyInLog", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
174
- name: string;
175
- };
176
- readonly "no-select-star": _typescript_eslint_utils_ts_eslint.RuleModule<"noSelectStar", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
177
- name: string;
178
- };
179
- readonly "no-sentinel-return-on-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noSentinelReturn", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
180
- name: string;
181
- };
182
- readonly "no-silent-promise-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"silentCatch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
183
- name: string;
184
- };
185
- readonly "no-sleep-in-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"noSleepInTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
186
- name: string;
187
- };
188
- readonly "no-storage-in-stateless-modules": _typescript_eslint_utils_ts_eslint.RuleModule<"storageInStatelessModule", readonly [RuleOptions$2?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
189
- name: string;
190
- };
191
- readonly "no-string-concat-in-loop": _typescript_eslint_utils_ts_eslint.RuleModule<"noStringConcatInLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
192
- name: string;
193
- };
194
- readonly "no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
195
- name: string;
196
- };
197
- readonly "no-typed-doc-sections": _typescript_eslint_utils_ts_eslint.RuleModule<"typedSection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
198
- name: string;
199
- };
200
- readonly "no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
201
- name: string;
202
- };
203
- readonly "no-declaration-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<WallOptions>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
204
- name: string;
205
- };
206
- readonly "no-union-in-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"unionInComment", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
207
- name: string;
208
- };
209
- readonly "no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<WallOptions>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
210
- name: string;
211
- };
212
- readonly "no-unnecessary-use-client": _typescript_eslint_utils_ts_eslint.RuleModule<"unnecessaryUseClient", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
213
- name: string;
214
- };
215
- readonly "no-unsafe-mock-casting": _typescript_eslint_utils_ts_eslint.RuleModule<"unsafeMockCast", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
216
- name: string;
217
- };
218
- readonly "no-zod-native-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"nativeEnum" | "enumOfTsEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
219
- name: string;
220
- };
221
- readonly "test-loops-over-literal-cases": _typescript_eslint_utils_ts_eslint.RuleModule<"literalCaseLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
222
- name: string;
223
- };
224
- readonly "prefer-constant-time-secret-compare": _typescript_eslint_utils_ts_eslint.RuleModule<"preferConstantTimeSecretCompare", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
225
- name: string;
226
- };
227
- readonly "prefer-discriminated-union": _typescript_eslint_utils_ts_eslint.RuleModule<"preferDiscriminatedUnion", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
228
- name: string;
229
- };
230
- readonly "prefer-input-group-search": _typescript_eslint_utils_ts_eslint.RuleModule<"preferInputGroup", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
231
- name: string;
232
- };
233
- readonly "prefer-immutable-module-constant": _typescript_eslint_utils_ts_eslint.RuleModule<"preferAsConst" | "preferReadonlyCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
234
- name: string;
235
- };
236
- readonly "prefer-shadcn-primitives": _typescript_eslint_utils_ts_eslint.RuleModule<"preferShadcnPrimitive", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
237
- name: string;
238
- };
239
- readonly "prefer-module-level-constant": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistCollection" | "hoistRegex", readonly [{
202
+ }], "restrictedLibraryLoad">;
203
+ readonly "no-repeated-string-literal": DocumentedRule<readonly [], "noRepeatedStringLiteral">;
204
+ readonly "no-restated-comment": DocumentedRule<readonly [], "restatesLineBelow">;
205
+ readonly "no-restated-jsdoc": DocumentedRule<readonly [], "restatesSignature" | "deleteBlock">;
206
+ readonly "no-secret-in-log": DocumentedRule<readonly [LoggingOptions?], "noSecretInLog" | "noRawBodyInLog">;
207
+ readonly "no-select-star": DocumentedRule<readonly [], "noSelectStar">;
208
+ readonly "no-sentinel-return-on-catch": DocumentedRule<readonly [LoggingOptions?], "noSentinelReturn">;
209
+ readonly "no-silent-promise-catch": DocumentedRule<readonly [], "silentCatch">;
210
+ readonly "no-sleep-in-test-body": DocumentedRule<readonly [], "noSleepInTestBody">;
211
+ readonly "no-storage-in-stateless-modules": DocumentedRule<readonly [RuleOptions$2?], "storageInStatelessModule">;
212
+ readonly "no-string-concat-in-loop": DocumentedRule<readonly [], "noStringConcatInLoop">;
213
+ readonly "no-tautological-expect": DocumentedRule<readonly [], "tautologicalComparison" | "tautologicalMatcher">;
214
+ readonly "no-typed-doc-sections": DocumentedRule<readonly [], "typedSection">;
215
+ readonly "no-trailing-value-narration": DocumentedRule<readonly [], "narratesValue">;
216
+ readonly "no-declaration-comment-wall": DocumentedRule<readonly [Partial<WallOptions>?], "commentWall">;
217
+ readonly "no-union-in-comment": DocumentedRule<readonly [], "unionInComment">;
218
+ readonly "no-type-member-comment-wall": DocumentedRule<readonly [Partial<WallOptions>?], "commentWall">;
219
+ readonly "no-unnecessary-use-client": DocumentedRule<readonly [], "unnecessaryUseClient">;
220
+ readonly "no-unsafe-mock-casting": DocumentedRule<[], "unsafeMockCast">;
221
+ readonly "no-zod-native-enum": DocumentedRule<readonly [], "nativeEnum" | "enumOfTsEnum">;
222
+ readonly "test-loops-over-literal-cases": DocumentedRule<readonly [], "literalCaseLoop">;
223
+ readonly "prefer-constant-time-secret-compare": DocumentedRule<readonly [], "preferConstantTimeSecretCompare">;
224
+ readonly "prefer-discriminated-union": DocumentedRule<readonly [], "preferDiscriminatedUnion">;
225
+ readonly "prefer-input-group-search": DocumentedRule<readonly [], "preferInputGroup">;
226
+ readonly "prefer-immutable-module-constant": DocumentedRule<readonly [], "preferAsConst" | "preferReadonlyCollection">;
227
+ readonly "prefer-shadcn-primitives": DocumentedRule<readonly [], "preferShadcnPrimitive">;
228
+ readonly "prefer-module-level-constant": DocumentedRule<readonly [{
240
229
  minElements?: number;
241
230
  checkRegex?: boolean;
242
231
  ignoreTestFiles?: boolean;
243
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
244
- name: string;
245
- };
246
- readonly "prefer-module-level-schema": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistSchema", readonly [{
232
+ }?], "hoistCollection" | "hoistRegex">;
233
+ readonly "prefer-module-level-schema": DocumentedRule<readonly [{
247
234
  factories?: readonly string[];
248
235
  ignoreTestFiles?: boolean;
249
236
  memoCallees?: readonly string[];
250
237
  minProperties?: number;
251
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
252
- name: string;
253
- };
254
- readonly "prefer-native-random-uuid": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNative" | "replaceWithNative", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
255
- name: string;
256
- };
257
- readonly "prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
258
- name: string;
259
- };
260
- readonly "prefer-schema-for-api-payload": _typescript_eslint_utils_ts_eslint.RuleModule<"unparsedJsonAccess", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
261
- name: string;
262
- };
263
- readonly "prefer-semantic-colors": _typescript_eslint_utils_ts_eslint.RuleModule<"rawPalette" | "arbitraryColor" | "inlineColor", readonly [{
238
+ }?], "hoistSchema">;
239
+ readonly "prefer-native-random-uuid": DocumentedRule<readonly [], "preferNative" | "replaceWithNative">;
240
+ readonly "prefer-non-nullable-collection": DocumentedRule<readonly [], "preferNonNullableCollection">;
241
+ readonly "prefer-schema-for-api-payload": DocumentedRule<readonly [], "unparsedJsonAccess">;
242
+ readonly "prefer-semantic-colors": DocumentedRule<readonly [{
264
243
  requireSemanticTokens?: boolean;
265
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
266
- name: string;
267
- };
268
- readonly "prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
269
- name: string;
270
- };
271
- readonly "prefer-string-literal-union": _typescript_eslint_utils_ts_eslint.RuleModule<"bareChoiceField" | "comparisonCluster", readonly [{
272
- ignoreFields?: readonly string[];
273
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
274
- name: string;
275
- };
276
- readonly "prefer-whole-object-assertion": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
277
- name: string;
278
- };
279
- readonly "prefer-zod-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"preferEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
280
- name: string;
281
- };
282
- readonly "prefer-zod-infer": _typescript_eslint_utils_ts_eslint.RuleModule<"handWrittenTwin", readonly [{
244
+ }?], "rawPalette" | "arbitraryColor" | "inlineColor">;
245
+ readonly "prefer-server-actions": DocumentedRule<readonly [], "preferServerAction">;
246
+ readonly "prefer-whole-object-assertion": DocumentedRule<readonly [], "combineAssertions" | "assertArrayOnce">;
247
+ readonly "prefer-zod-infer": DocumentedRule<readonly [{
283
248
  ignoreTypeNames?: readonly string[];
284
249
  requireIdenticalShape?: boolean;
285
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
286
- name: string;
287
- };
288
- readonly "require-assert-never": _typescript_eslint_utils_ts_eslint.RuleModule<"missingAssertNever", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
289
- name: string;
290
- };
291
- readonly "require-fetch-timeout": _typescript_eslint_utils_ts_eslint.RuleModule<"missingSignal", readonly [{
250
+ }?], "handWrittenTwin">;
251
+ readonly "require-assert-never": DocumentedRule<readonly [], "missingAssertNever">;
252
+ readonly "require-fetch-timeout": DocumentedRule<readonly [{
292
253
  allowIn?: readonly string[];
293
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
294
- name: string;
295
- };
296
- readonly "require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
297
- name: string;
298
- };
299
- readonly "require-static-next-matcher": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
300
- name: string;
301
- };
302
- readonly "require-zod-form-validation": _typescript_eslint_utils_ts_eslint.RuleModule<"missingZodValidation", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
303
- name: string;
304
- };
305
- readonly "store-insert-requires-on-conflict": _typescript_eslint_utils_ts_eslint.RuleModule<"storeInsertRequiresOnConflict", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
306
- name: string;
307
- };
308
- readonly stepdown: _typescript_eslint_utils_ts_eslint.RuleModule<"helperAboveOnlyCaller", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
309
- name: string;
310
- };
311
- readonly "zod-naming-convention": _typescript_eslint_utils_ts_eslint.RuleModule<"zPrefix" | "schemaSuffix" | "zodSchemaName", readonly [{
254
+ }?], "missingSignal">;
255
+ readonly "require-port-for-service": DocumentedRule<readonly [], "requireInterface">;
256
+ readonly "require-static-next-matcher": DocumentedRule<readonly [], "dynamicMatcher">;
257
+ readonly "require-zod-form-validation": DocumentedRule<readonly [], "missingZodValidation">;
258
+ readonly "store-insert-requires-on-conflict": DocumentedRule<readonly [], "storeInsertRequiresOnConflict">;
259
+ readonly stepdown: DocumentedRule<[], "helperAboveOnlyCaller">;
260
+ readonly "zod-naming-convention": DocumentedRule<readonly [{
312
261
  convention?: "prefix" | "suffix" | "either";
313
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
314
- name: string;
315
- };
262
+ }?], "zPrefix" | "schemaSuffix" | "zodSchemaName">;
316
263
  };
317
264
  /** Rules registered for application-profile configs but intentionally absent from general presets. */
318
265
  declare const applicationOnlyRules: readonly ["no-restricted-library-load", "prefer-native-random-uuid", "prefer-shadcn-primitives"];
@@ -330,6 +277,7 @@ declare const recommendedRules: {
330
277
  readonly "@sarj/no-hand-rolled-spinner": "error";
331
278
  readonly "@sarj/no-insecure-random-id": "error";
332
279
  readonly "@sarj/no-json-stringify-error": "error";
280
+ readonly "@sarj/no-impossible-zod-literal-bounds": "error";
333
281
  readonly "@sarj/no-log-only-catch": "error";
334
282
  readonly "@sarj/no-long-comment": "error";
335
283
  readonly "@sarj/no-generic-single-export-module": "error";
@@ -366,13 +314,11 @@ declare const recommendedRules: {
366
314
  readonly requireSemanticTokens: true;
367
315
  }];
368
316
  readonly "@sarj/prefer-server-actions": "error";
369
- readonly "@sarj/prefer-string-literal-union": "error";
370
317
  readonly "@sarj/prefer-whole-object-assertion": "error";
371
- readonly "@sarj/prefer-zod-enum": "error";
372
318
  readonly "@sarj/prefer-zod-infer": "error";
373
319
  readonly "@sarj/require-assert-never": "error";
374
320
  readonly "@sarj/require-fetch-timeout": "error";
375
- readonly "@sarj/require-interface-for-injected-service": "error";
321
+ readonly "@sarj/require-port-for-service": "error";
376
322
  readonly "@sarj/require-static-next-matcher": "error";
377
323
  readonly "@sarj/require-zod-form-validation": "error";
378
324
  readonly "@sarj/store-insert-requires-on-conflict": "error";
@@ -394,6 +340,7 @@ declare const strictRules: {
394
340
  readonly "@sarj/no-hand-rolled-spinner": "error";
395
341
  readonly "@sarj/no-insecure-random-id": "error";
396
342
  readonly "@sarj/no-json-stringify-error": "error";
343
+ readonly "@sarj/no-impossible-zod-literal-bounds": "error";
397
344
  readonly "@sarj/no-log-only-catch": "error";
398
345
  readonly "@sarj/no-long-comment": "error";
399
346
  readonly "@sarj/no-generic-single-export-module": "error";
@@ -433,13 +380,11 @@ declare const strictRules: {
433
380
  readonly requireSemanticTokens: true;
434
381
  }];
435
382
  readonly "@sarj/prefer-server-actions": "error";
436
- readonly "@sarj/prefer-string-literal-union": "error";
437
383
  readonly "@sarj/prefer-whole-object-assertion": "error";
438
- readonly "@sarj/prefer-zod-enum": "error";
439
384
  readonly "@sarj/prefer-zod-infer": "error";
440
385
  readonly "@sarj/require-assert-never": "error";
441
386
  readonly "@sarj/require-fetch-timeout": "error";
442
- readonly "@sarj/require-interface-for-injected-service": "error";
387
+ readonly "@sarj/require-port-for-service": "error";
443
388
  readonly "@sarj/require-static-next-matcher": "error";
444
389
  readonly "@sarj/require-zod-form-validation": "error";
445
390
  readonly "@sarj/store-insert-requires-on-conflict": "error";
@@ -454,234 +399,99 @@ type FlatPreset = {
454
399
  declare const plugin: {
455
400
  readonly meta: {
456
401
  readonly name: "@sarj/eslint-plugin";
457
- readonly version: "11.2.0";
402
+ readonly version: "13.0.0";
458
403
  };
459
404
  readonly rules: {
460
- readonly "duplicate-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
461
- name: string;
462
- };
463
- readonly "enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
464
- name: string;
465
- };
466
- readonly "no-async-callback-in-wait-for": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
467
- name: string;
468
- };
469
- readonly "no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
470
- name: string;
471
- };
472
- readonly "no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "placeholderImplementation" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
473
- name: string;
474
- };
475
- readonly "no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
476
- name: string;
477
- };
478
- readonly "no-cors-wildcard-with-credentials": _typescript_eslint_utils_ts_eslint.RuleModule<"corsWildcardWithCredentials", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
479
- name: string;
480
- };
481
- readonly "no-dynamic-sql": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicSql", readonly [RuleOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
482
- name: string;
483
- };
484
- readonly "no-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"noEnum", readonly [{
405
+ readonly "duplicate-test-body": DocumentedRule<readonly [], "duplicateTestBody">;
406
+ readonly "enforce-file-structure": DocumentedRule<readonly [], "importsFirst" | "useServerDirective">;
407
+ readonly "no-async-callback-in-wait-for": DocumentedRule<readonly [], "noAsyncCallbackInWaitFor">;
408
+ readonly "no-client-side-data-fetching": DocumentedRule<readonly [], "noClientFetch">;
409
+ readonly "no-comment-cruft": DocumentedRule<readonly [], "commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "commentWall" | "redundantNarration" | "placeholderImplementation" | "untrackedTodo">;
410
+ readonly "no-conditional-in-test": DocumentedRule<readonly [], "noConditionalInTest">;
411
+ readonly "no-cors-wildcard-with-credentials": DocumentedRule<readonly [], "corsWildcardWithCredentials">;
412
+ readonly "no-dynamic-sql": DocumentedRule<readonly [RuleOptions?], "dynamicSql">;
413
+ readonly "no-enum": DocumentedRule<readonly [{
485
414
  ignoreFiles?: readonly string[];
486
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
487
- name: string;
488
- };
489
- readonly "no-fat-try-blocks": _typescript_eslint_utils_ts_eslint.RuleModule<"fatTryBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
490
- name: string;
491
- };
492
- readonly "no-hand-rolled-sleep": _typescript_eslint_utils_ts_eslint.RuleModule<"handRolledSleep" | "handRolledTimeoutRace", readonly [{
415
+ }?], "noEnum">;
416
+ readonly "no-fat-try-blocks": DocumentedRule<readonly [], "fatTryBlock">;
417
+ readonly "no-hand-rolled-sleep": DocumentedRule<readonly [{
493
418
  allowIn?: readonly string[];
494
419
  checkClientModules?: boolean;
495
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
496
- name: string;
497
- };
498
- readonly "no-hand-rolled-spinner": _typescript_eslint_utils_ts_eslint.RuleModule<"handRolledSpinner", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
499
- name: string;
500
- };
501
- readonly "no-insecure-random-id": _typescript_eslint_utils_ts_eslint.RuleModule<"insecureRandomId", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
502
- name: string;
503
- };
504
- readonly "no-json-stringify-error": _typescript_eslint_utils_ts_eslint.RuleModule<"noJsonStringifyError", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
505
- name: string;
506
- };
507
- readonly "no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
508
- name: string;
509
- };
510
- readonly "no-long-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"tooLong", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
511
- name: string;
512
- };
513
- readonly "no-generic-single-export-module": _typescript_eslint_utils_ts_eslint.RuleModule<"genericSingleExport", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
514
- name: string;
515
- };
516
- readonly "no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
517
- name: string;
518
- };
519
- readonly "no-positional-tuple-return": _typescript_eslint_utils_ts_eslint.RuleModule<"noPositionalTupleReturn", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
520
- name: string;
521
- };
522
- readonly "no-raw-env": _typescript_eslint_utils_ts_eslint.RuleModule<"noRawEnv", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
523
- name: string;
524
- };
525
- readonly "no-raw-fetch-outside-clients": _typescript_eslint_utils_ts_eslint.RuleModule<"rawFetch", readonly [RuleOptions$1?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
526
- name: string;
527
- };
528
- readonly "no-restricted-library-load": _typescript_eslint_utils_ts_eslint.RuleModule<"restrictedLibraryLoad", readonly [{
420
+ }?], "handRolledSleep" | "handRolledTimeoutRace">;
421
+ readonly "no-hand-rolled-spinner": DocumentedRule<readonly [], "handRolledSpinner">;
422
+ readonly "no-insecure-random-id": DocumentedRule<readonly [], "insecureRandomId">;
423
+ readonly "no-json-stringify-error": DocumentedRule<readonly [], "noJsonStringifyError">;
424
+ readonly "no-impossible-zod-literal-bounds": DocumentedRule<readonly [], "impossibleBounds">;
425
+ readonly "no-log-only-catch": DocumentedRule<readonly [LoggingOptions?], "noLogOnlyCatch" | "emptyCatch">;
426
+ readonly "no-long-comment": DocumentedRule<readonly [], "tooLong">;
427
+ readonly "no-generic-single-export-module": DocumentedRule<[], "genericSingleExport">;
428
+ readonly "no-offset-pagination": DocumentedRule<readonly [], "noOffsetPagination">;
429
+ readonly "no-positional-tuple-return": DocumentedRule<readonly [], "noPositionalTupleReturn">;
430
+ readonly "no-raw-env": DocumentedRule<readonly [], "noRawEnv">;
431
+ readonly "no-raw-fetch-outside-clients": DocumentedRule<readonly [RuleOptions$1?], "rawFetch">;
432
+ readonly "no-restricted-library-load": DocumentedRule<readonly [{
529
433
  libraries: readonly RestrictedLibrary[];
530
- }], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
531
- name: string;
532
- };
533
- readonly "no-repeated-string-literal": _typescript_eslint_utils_ts_eslint.RuleModule<"noRepeatedStringLiteral", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
534
- name: string;
535
- };
536
- readonly "no-restated-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesLineBelow", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
537
- name: string;
538
- };
539
- readonly "no-restated-jsdoc": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesSignature" | "deleteBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
540
- name: string;
541
- };
542
- readonly "no-secret-in-log": _typescript_eslint_utils_ts_eslint.RuleModule<"noSecretInLog" | "noRawBodyInLog", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
543
- name: string;
544
- };
545
- readonly "no-select-star": _typescript_eslint_utils_ts_eslint.RuleModule<"noSelectStar", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
546
- name: string;
547
- };
548
- readonly "no-sentinel-return-on-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noSentinelReturn", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
549
- name: string;
550
- };
551
- readonly "no-silent-promise-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"silentCatch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
552
- name: string;
553
- };
554
- readonly "no-sleep-in-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"noSleepInTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
555
- name: string;
556
- };
557
- readonly "no-storage-in-stateless-modules": _typescript_eslint_utils_ts_eslint.RuleModule<"storageInStatelessModule", readonly [RuleOptions$2?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
558
- name: string;
559
- };
560
- readonly "no-string-concat-in-loop": _typescript_eslint_utils_ts_eslint.RuleModule<"noStringConcatInLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
561
- name: string;
562
- };
563
- readonly "no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
564
- name: string;
565
- };
566
- readonly "no-typed-doc-sections": _typescript_eslint_utils_ts_eslint.RuleModule<"typedSection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
567
- name: string;
568
- };
569
- readonly "no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
570
- name: string;
571
- };
572
- readonly "no-declaration-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<WallOptions>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
573
- name: string;
574
- };
575
- readonly "no-union-in-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"unionInComment", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
576
- name: string;
577
- };
578
- readonly "no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<WallOptions>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
579
- name: string;
580
- };
581
- readonly "no-unnecessary-use-client": _typescript_eslint_utils_ts_eslint.RuleModule<"unnecessaryUseClient", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
582
- name: string;
583
- };
584
- readonly "no-unsafe-mock-casting": _typescript_eslint_utils_ts_eslint.RuleModule<"unsafeMockCast", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
585
- name: string;
586
- };
587
- readonly "no-zod-native-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"nativeEnum" | "enumOfTsEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
588
- name: string;
589
- };
590
- readonly "test-loops-over-literal-cases": _typescript_eslint_utils_ts_eslint.RuleModule<"literalCaseLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
591
- name: string;
592
- };
593
- readonly "prefer-constant-time-secret-compare": _typescript_eslint_utils_ts_eslint.RuleModule<"preferConstantTimeSecretCompare", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
594
- name: string;
595
- };
596
- readonly "prefer-discriminated-union": _typescript_eslint_utils_ts_eslint.RuleModule<"preferDiscriminatedUnion", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
597
- name: string;
598
- };
599
- readonly "prefer-input-group-search": _typescript_eslint_utils_ts_eslint.RuleModule<"preferInputGroup", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
600
- name: string;
601
- };
602
- readonly "prefer-immutable-module-constant": _typescript_eslint_utils_ts_eslint.RuleModule<"preferAsConst" | "preferReadonlyCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
603
- name: string;
604
- };
605
- readonly "prefer-shadcn-primitives": _typescript_eslint_utils_ts_eslint.RuleModule<"preferShadcnPrimitive", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
606
- name: string;
607
- };
608
- readonly "prefer-module-level-constant": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistCollection" | "hoistRegex", readonly [{
434
+ }], "restrictedLibraryLoad">;
435
+ readonly "no-repeated-string-literal": DocumentedRule<readonly [], "noRepeatedStringLiteral">;
436
+ readonly "no-restated-comment": DocumentedRule<readonly [], "restatesLineBelow">;
437
+ readonly "no-restated-jsdoc": DocumentedRule<readonly [], "restatesSignature" | "deleteBlock">;
438
+ readonly "no-secret-in-log": DocumentedRule<readonly [LoggingOptions?], "noSecretInLog" | "noRawBodyInLog">;
439
+ readonly "no-select-star": DocumentedRule<readonly [], "noSelectStar">;
440
+ readonly "no-sentinel-return-on-catch": DocumentedRule<readonly [LoggingOptions?], "noSentinelReturn">;
441
+ readonly "no-silent-promise-catch": DocumentedRule<readonly [], "silentCatch">;
442
+ readonly "no-sleep-in-test-body": DocumentedRule<readonly [], "noSleepInTestBody">;
443
+ readonly "no-storage-in-stateless-modules": DocumentedRule<readonly [RuleOptions$2?], "storageInStatelessModule">;
444
+ readonly "no-string-concat-in-loop": DocumentedRule<readonly [], "noStringConcatInLoop">;
445
+ readonly "no-tautological-expect": DocumentedRule<readonly [], "tautologicalComparison" | "tautologicalMatcher">;
446
+ readonly "no-typed-doc-sections": DocumentedRule<readonly [], "typedSection">;
447
+ readonly "no-trailing-value-narration": DocumentedRule<readonly [], "narratesValue">;
448
+ readonly "no-declaration-comment-wall": DocumentedRule<readonly [Partial<WallOptions>?], "commentWall">;
449
+ readonly "no-union-in-comment": DocumentedRule<readonly [], "unionInComment">;
450
+ readonly "no-type-member-comment-wall": DocumentedRule<readonly [Partial<WallOptions>?], "commentWall">;
451
+ readonly "no-unnecessary-use-client": DocumentedRule<readonly [], "unnecessaryUseClient">;
452
+ readonly "no-unsafe-mock-casting": DocumentedRule<[], "unsafeMockCast">;
453
+ readonly "no-zod-native-enum": DocumentedRule<readonly [], "nativeEnum" | "enumOfTsEnum">;
454
+ readonly "test-loops-over-literal-cases": DocumentedRule<readonly [], "literalCaseLoop">;
455
+ readonly "prefer-constant-time-secret-compare": DocumentedRule<readonly [], "preferConstantTimeSecretCompare">;
456
+ readonly "prefer-discriminated-union": DocumentedRule<readonly [], "preferDiscriminatedUnion">;
457
+ readonly "prefer-input-group-search": DocumentedRule<readonly [], "preferInputGroup">;
458
+ readonly "prefer-immutable-module-constant": DocumentedRule<readonly [], "preferAsConst" | "preferReadonlyCollection">;
459
+ readonly "prefer-shadcn-primitives": DocumentedRule<readonly [], "preferShadcnPrimitive">;
460
+ readonly "prefer-module-level-constant": DocumentedRule<readonly [{
609
461
  minElements?: number;
610
462
  checkRegex?: boolean;
611
463
  ignoreTestFiles?: boolean;
612
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
613
- name: string;
614
- };
615
- readonly "prefer-module-level-schema": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistSchema", readonly [{
464
+ }?], "hoistCollection" | "hoistRegex">;
465
+ readonly "prefer-module-level-schema": DocumentedRule<readonly [{
616
466
  factories?: readonly string[];
617
467
  ignoreTestFiles?: boolean;
618
468
  memoCallees?: readonly string[];
619
469
  minProperties?: number;
620
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
621
- name: string;
622
- };
623
- readonly "prefer-native-random-uuid": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNative" | "replaceWithNative", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
624
- name: string;
625
- };
626
- readonly "prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
627
- name: string;
628
- };
629
- readonly "prefer-schema-for-api-payload": _typescript_eslint_utils_ts_eslint.RuleModule<"unparsedJsonAccess", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
630
- name: string;
631
- };
632
- readonly "prefer-semantic-colors": _typescript_eslint_utils_ts_eslint.RuleModule<"rawPalette" | "arbitraryColor" | "inlineColor", readonly [{
470
+ }?], "hoistSchema">;
471
+ readonly "prefer-native-random-uuid": DocumentedRule<readonly [], "preferNative" | "replaceWithNative">;
472
+ readonly "prefer-non-nullable-collection": DocumentedRule<readonly [], "preferNonNullableCollection">;
473
+ readonly "prefer-schema-for-api-payload": DocumentedRule<readonly [], "unparsedJsonAccess">;
474
+ readonly "prefer-semantic-colors": DocumentedRule<readonly [{
633
475
  requireSemanticTokens?: boolean;
634
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
635
- name: string;
636
- };
637
- readonly "prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
638
- name: string;
639
- };
640
- readonly "prefer-string-literal-union": _typescript_eslint_utils_ts_eslint.RuleModule<"bareChoiceField" | "comparisonCluster", readonly [{
641
- ignoreFields?: readonly string[];
642
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
643
- name: string;
644
- };
645
- readonly "prefer-whole-object-assertion": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
646
- name: string;
647
- };
648
- readonly "prefer-zod-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"preferEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
649
- name: string;
650
- };
651
- readonly "prefer-zod-infer": _typescript_eslint_utils_ts_eslint.RuleModule<"handWrittenTwin", readonly [{
476
+ }?], "rawPalette" | "arbitraryColor" | "inlineColor">;
477
+ readonly "prefer-server-actions": DocumentedRule<readonly [], "preferServerAction">;
478
+ readonly "prefer-whole-object-assertion": DocumentedRule<readonly [], "combineAssertions" | "assertArrayOnce">;
479
+ readonly "prefer-zod-infer": DocumentedRule<readonly [{
652
480
  ignoreTypeNames?: readonly string[];
653
481
  requireIdenticalShape?: boolean;
654
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
655
- name: string;
656
- };
657
- readonly "require-assert-never": _typescript_eslint_utils_ts_eslint.RuleModule<"missingAssertNever", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
658
- name: string;
659
- };
660
- readonly "require-fetch-timeout": _typescript_eslint_utils_ts_eslint.RuleModule<"missingSignal", readonly [{
482
+ }?], "handWrittenTwin">;
483
+ readonly "require-assert-never": DocumentedRule<readonly [], "missingAssertNever">;
484
+ readonly "require-fetch-timeout": DocumentedRule<readonly [{
661
485
  allowIn?: readonly string[];
662
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
663
- name: string;
664
- };
665
- readonly "require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
666
- name: string;
667
- };
668
- readonly "require-static-next-matcher": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
669
- name: string;
670
- };
671
- readonly "require-zod-form-validation": _typescript_eslint_utils_ts_eslint.RuleModule<"missingZodValidation", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
672
- name: string;
673
- };
674
- readonly "store-insert-requires-on-conflict": _typescript_eslint_utils_ts_eslint.RuleModule<"storeInsertRequiresOnConflict", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
675
- name: string;
676
- };
677
- readonly stepdown: _typescript_eslint_utils_ts_eslint.RuleModule<"helperAboveOnlyCaller", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
678
- name: string;
679
- };
680
- readonly "zod-naming-convention": _typescript_eslint_utils_ts_eslint.RuleModule<"zPrefix" | "schemaSuffix" | "zodSchemaName", readonly [{
486
+ }?], "missingSignal">;
487
+ readonly "require-port-for-service": DocumentedRule<readonly [], "requireInterface">;
488
+ readonly "require-static-next-matcher": DocumentedRule<readonly [], "dynamicMatcher">;
489
+ readonly "require-zod-form-validation": DocumentedRule<readonly [], "missingZodValidation">;
490
+ readonly "store-insert-requires-on-conflict": DocumentedRule<readonly [], "storeInsertRequiresOnConflict">;
491
+ readonly stepdown: DocumentedRule<[], "helperAboveOnlyCaller">;
492
+ readonly "zod-naming-convention": DocumentedRule<readonly [{
681
493
  convention?: "prefix" | "suffix" | "either";
682
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
683
- name: string;
684
- };
494
+ }?], "zPrefix" | "schemaSuffix" | "zodSchemaName">;
685
495
  };
686
496
  readonly retiredRules: Readonly<Record<string, RetiredRule>>;
687
497
  readonly configs: {
@@ -690,4 +500,4 @@ declare const plugin: {
690
500
  };
691
501
  };
692
502
 
693
- export { type RetiredRule, applicationOnlyRules, plugin as default, recommendedRules, renamedRules, retiredRules, rules, strictRules };
503
+ export { type RetiredRule, applicationOnlyRules, plugin as default, publicDocumentation, recommendedRules, renamedRules, retiredRules, rules, strictRules };