@sarj/eslint-plugin 12.0.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.ts 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,231 +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-impossible-zod-literal-bounds": _typescript_eslint_utils_ts_eslint.RuleModule<"impossibleBounds", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
139
- name: string;
140
- };
141
- readonly "no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
142
- name: string;
143
- };
144
- readonly "no-long-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"tooLong", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
145
- name: string;
146
- };
147
- readonly "no-generic-single-export-module": _typescript_eslint_utils_ts_eslint.RuleModule<"genericSingleExport", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
148
- name: string;
149
- };
150
- readonly "no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
151
- name: string;
152
- };
153
- readonly "no-positional-tuple-return": _typescript_eslint_utils_ts_eslint.RuleModule<"noPositionalTupleReturn", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
154
- name: string;
155
- };
156
- readonly "no-raw-env": _typescript_eslint_utils_ts_eslint.RuleModule<"noRawEnv", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
157
- name: string;
158
- };
159
- readonly "no-raw-fetch-outside-clients": _typescript_eslint_utils_ts_eslint.RuleModule<"rawFetch", readonly [RuleOptions$1?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
160
- name: string;
161
- };
162
- 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 [{
163
201
  libraries: readonly RestrictedLibrary[];
164
- }], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
165
- name: string;
166
- };
167
- readonly "no-repeated-string-literal": _typescript_eslint_utils_ts_eslint.RuleModule<"noRepeatedStringLiteral", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
168
- name: string;
169
- };
170
- readonly "no-restated-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesLineBelow", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
171
- name: string;
172
- };
173
- readonly "no-restated-jsdoc": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesSignature" | "deleteBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
174
- name: string;
175
- };
176
- readonly "no-secret-in-log": _typescript_eslint_utils_ts_eslint.RuleModule<"noSecretInLog" | "noRawBodyInLog", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
177
- name: string;
178
- };
179
- readonly "no-select-star": _typescript_eslint_utils_ts_eslint.RuleModule<"noSelectStar", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
180
- name: string;
181
- };
182
- readonly "no-sentinel-return-on-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noSentinelReturn", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
183
- name: string;
184
- };
185
- readonly "no-silent-promise-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"silentCatch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
186
- name: string;
187
- };
188
- readonly "no-sleep-in-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"noSleepInTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
189
- name: string;
190
- };
191
- readonly "no-storage-in-stateless-modules": _typescript_eslint_utils_ts_eslint.RuleModule<"storageInStatelessModule", readonly [RuleOptions$2?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
192
- name: string;
193
- };
194
- readonly "no-string-concat-in-loop": _typescript_eslint_utils_ts_eslint.RuleModule<"noStringConcatInLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
195
- name: string;
196
- };
197
- readonly "no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
198
- name: string;
199
- };
200
- readonly "no-typed-doc-sections": _typescript_eslint_utils_ts_eslint.RuleModule<"typedSection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
201
- name: string;
202
- };
203
- readonly "no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
204
- name: string;
205
- };
206
- readonly "no-declaration-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<WallOptions>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
207
- name: string;
208
- };
209
- readonly "no-union-in-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"unionInComment", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
210
- name: string;
211
- };
212
- readonly "no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<WallOptions>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
213
- name: string;
214
- };
215
- readonly "no-unnecessary-use-client": _typescript_eslint_utils_ts_eslint.RuleModule<"unnecessaryUseClient", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
216
- name: string;
217
- };
218
- readonly "no-unsafe-mock-casting": _typescript_eslint_utils_ts_eslint.RuleModule<"unsafeMockCast", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
219
- name: string;
220
- };
221
- readonly "no-zod-native-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"nativeEnum" | "enumOfTsEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
222
- name: string;
223
- };
224
- readonly "test-loops-over-literal-cases": _typescript_eslint_utils_ts_eslint.RuleModule<"literalCaseLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
225
- name: string;
226
- };
227
- readonly "prefer-constant-time-secret-compare": _typescript_eslint_utils_ts_eslint.RuleModule<"preferConstantTimeSecretCompare", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
228
- name: string;
229
- };
230
- readonly "prefer-discriminated-union": _typescript_eslint_utils_ts_eslint.RuleModule<"preferDiscriminatedUnion", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
231
- name: string;
232
- };
233
- readonly "prefer-input-group-search": _typescript_eslint_utils_ts_eslint.RuleModule<"preferInputGroup", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
234
- name: string;
235
- };
236
- readonly "prefer-immutable-module-constant": _typescript_eslint_utils_ts_eslint.RuleModule<"preferAsConst" | "preferReadonlyCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
237
- name: string;
238
- };
239
- readonly "prefer-shadcn-primitives": _typescript_eslint_utils_ts_eslint.RuleModule<"preferShadcnPrimitive", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
240
- name: string;
241
- };
242
- 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 [{
243
229
  minElements?: number;
244
230
  checkRegex?: boolean;
245
231
  ignoreTestFiles?: boolean;
246
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
247
- name: string;
248
- };
249
- readonly "prefer-module-level-schema": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistSchema", readonly [{
232
+ }?], "hoistCollection" | "hoistRegex">;
233
+ readonly "prefer-module-level-schema": DocumentedRule<readonly [{
250
234
  factories?: readonly string[];
251
235
  ignoreTestFiles?: boolean;
252
236
  memoCallees?: readonly string[];
253
237
  minProperties?: number;
254
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
255
- name: string;
256
- };
257
- readonly "prefer-native-random-uuid": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNative" | "replaceWithNative", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
258
- name: string;
259
- };
260
- readonly "prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
261
- name: string;
262
- };
263
- readonly "prefer-schema-for-api-payload": _typescript_eslint_utils_ts_eslint.RuleModule<"unparsedJsonAccess", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
264
- name: string;
265
- };
266
- 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 [{
267
243
  requireSemanticTokens?: boolean;
268
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
269
- name: string;
270
- };
271
- readonly "prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
272
- name: string;
273
- };
274
- readonly "prefer-whole-object-assertion": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
275
- name: string;
276
- };
277
- 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 [{
278
248
  ignoreTypeNames?: readonly string[];
279
249
  requireIdenticalShape?: boolean;
280
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
281
- name: string;
282
- };
283
- readonly "require-assert-never": _typescript_eslint_utils_ts_eslint.RuleModule<"missingAssertNever", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
284
- name: string;
285
- };
286
- 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 [{
287
253
  allowIn?: readonly string[];
288
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
289
- name: string;
290
- };
291
- readonly "require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
292
- name: string;
293
- };
294
- readonly "require-static-next-matcher": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
295
- name: string;
296
- };
297
- readonly "require-zod-form-validation": _typescript_eslint_utils_ts_eslint.RuleModule<"missingZodValidation", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
298
- name: string;
299
- };
300
- readonly "store-insert-requires-on-conflict": _typescript_eslint_utils_ts_eslint.RuleModule<"storeInsertRequiresOnConflict", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
301
- name: string;
302
- };
303
- readonly stepdown: _typescript_eslint_utils_ts_eslint.RuleModule<"helperAboveOnlyCaller", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
304
- name: string;
305
- };
306
- 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 [{
307
261
  convention?: "prefix" | "suffix" | "either";
308
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
309
- name: string;
310
- };
262
+ }?], "zPrefix" | "schemaSuffix" | "zodSchemaName">;
311
263
  };
312
264
  /** Rules registered for application-profile configs but intentionally absent from general presets. */
313
265
  declare const applicationOnlyRules: readonly ["no-restricted-library-load", "prefer-native-random-uuid", "prefer-shadcn-primitives"];
@@ -366,7 +318,7 @@ declare const recommendedRules: {
366
318
  readonly "@sarj/prefer-zod-infer": "error";
367
319
  readonly "@sarj/require-assert-never": "error";
368
320
  readonly "@sarj/require-fetch-timeout": "error";
369
- readonly "@sarj/require-interface-for-injected-service": "error";
321
+ readonly "@sarj/require-port-for-service": "error";
370
322
  readonly "@sarj/require-static-next-matcher": "error";
371
323
  readonly "@sarj/require-zod-form-validation": "error";
372
324
  readonly "@sarj/store-insert-requires-on-conflict": "error";
@@ -432,7 +384,7 @@ declare const strictRules: {
432
384
  readonly "@sarj/prefer-zod-infer": "error";
433
385
  readonly "@sarj/require-assert-never": "error";
434
386
  readonly "@sarj/require-fetch-timeout": "error";
435
- readonly "@sarj/require-interface-for-injected-service": "error";
387
+ readonly "@sarj/require-port-for-service": "error";
436
388
  readonly "@sarj/require-static-next-matcher": "error";
437
389
  readonly "@sarj/require-zod-form-validation": "error";
438
390
  readonly "@sarj/store-insert-requires-on-conflict": "error";
@@ -447,229 +399,99 @@ type FlatPreset = {
447
399
  declare const plugin: {
448
400
  readonly meta: {
449
401
  readonly name: "@sarj/eslint-plugin";
450
- readonly version: "12.0.0";
402
+ readonly version: "13.0.0";
451
403
  };
452
404
  readonly rules: {
453
- readonly "duplicate-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"duplicateTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
454
- name: string;
455
- };
456
- readonly "enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
457
- name: string;
458
- };
459
- readonly "no-async-callback-in-wait-for": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
460
- name: string;
461
- };
462
- readonly "no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
463
- name: string;
464
- };
465
- 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> & {
466
- name: string;
467
- };
468
- readonly "no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
469
- name: string;
470
- };
471
- readonly "no-cors-wildcard-with-credentials": _typescript_eslint_utils_ts_eslint.RuleModule<"corsWildcardWithCredentials", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
472
- name: string;
473
- };
474
- readonly "no-dynamic-sql": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicSql", readonly [RuleOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
475
- name: string;
476
- };
477
- 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 [{
478
414
  ignoreFiles?: readonly string[];
479
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
480
- name: string;
481
- };
482
- readonly "no-fat-try-blocks": _typescript_eslint_utils_ts_eslint.RuleModule<"fatTryBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
483
- name: string;
484
- };
485
- 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 [{
486
418
  allowIn?: readonly string[];
487
419
  checkClientModules?: boolean;
488
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
489
- name: string;
490
- };
491
- readonly "no-hand-rolled-spinner": _typescript_eslint_utils_ts_eslint.RuleModule<"handRolledSpinner", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
492
- name: string;
493
- };
494
- readonly "no-insecure-random-id": _typescript_eslint_utils_ts_eslint.RuleModule<"insecureRandomId", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
495
- name: string;
496
- };
497
- readonly "no-json-stringify-error": _typescript_eslint_utils_ts_eslint.RuleModule<"noJsonStringifyError", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
498
- name: string;
499
- };
500
- readonly "no-impossible-zod-literal-bounds": _typescript_eslint_utils_ts_eslint.RuleModule<"impossibleBounds", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
501
- name: string;
502
- };
503
- readonly "no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
504
- name: string;
505
- };
506
- readonly "no-long-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"tooLong", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
507
- name: string;
508
- };
509
- readonly "no-generic-single-export-module": _typescript_eslint_utils_ts_eslint.RuleModule<"genericSingleExport", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
510
- name: string;
511
- };
512
- readonly "no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
513
- name: string;
514
- };
515
- readonly "no-positional-tuple-return": _typescript_eslint_utils_ts_eslint.RuleModule<"noPositionalTupleReturn", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
516
- name: string;
517
- };
518
- readonly "no-raw-env": _typescript_eslint_utils_ts_eslint.RuleModule<"noRawEnv", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
519
- name: string;
520
- };
521
- readonly "no-raw-fetch-outside-clients": _typescript_eslint_utils_ts_eslint.RuleModule<"rawFetch", readonly [RuleOptions$1?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
522
- name: string;
523
- };
524
- 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 [{
525
433
  libraries: readonly RestrictedLibrary[];
526
- }], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
527
- name: string;
528
- };
529
- readonly "no-repeated-string-literal": _typescript_eslint_utils_ts_eslint.RuleModule<"noRepeatedStringLiteral", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
530
- name: string;
531
- };
532
- readonly "no-restated-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesLineBelow", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
533
- name: string;
534
- };
535
- readonly "no-restated-jsdoc": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesSignature" | "deleteBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
536
- name: string;
537
- };
538
- readonly "no-secret-in-log": _typescript_eslint_utils_ts_eslint.RuleModule<"noSecretInLog" | "noRawBodyInLog", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
539
- name: string;
540
- };
541
- readonly "no-select-star": _typescript_eslint_utils_ts_eslint.RuleModule<"noSelectStar", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
542
- name: string;
543
- };
544
- readonly "no-sentinel-return-on-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noSentinelReturn", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
545
- name: string;
546
- };
547
- readonly "no-silent-promise-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"silentCatch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
548
- name: string;
549
- };
550
- readonly "no-sleep-in-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"noSleepInTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
551
- name: string;
552
- };
553
- readonly "no-storage-in-stateless-modules": _typescript_eslint_utils_ts_eslint.RuleModule<"storageInStatelessModule", readonly [RuleOptions$2?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
554
- name: string;
555
- };
556
- readonly "no-string-concat-in-loop": _typescript_eslint_utils_ts_eslint.RuleModule<"noStringConcatInLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
557
- name: string;
558
- };
559
- readonly "no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
560
- name: string;
561
- };
562
- readonly "no-typed-doc-sections": _typescript_eslint_utils_ts_eslint.RuleModule<"typedSection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
563
- name: string;
564
- };
565
- readonly "no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
566
- name: string;
567
- };
568
- readonly "no-declaration-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<WallOptions>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
569
- name: string;
570
- };
571
- readonly "no-union-in-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"unionInComment", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
572
- name: string;
573
- };
574
- readonly "no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<WallOptions>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
575
- name: string;
576
- };
577
- readonly "no-unnecessary-use-client": _typescript_eslint_utils_ts_eslint.RuleModule<"unnecessaryUseClient", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
578
- name: string;
579
- };
580
- readonly "no-unsafe-mock-casting": _typescript_eslint_utils_ts_eslint.RuleModule<"unsafeMockCast", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
581
- name: string;
582
- };
583
- readonly "no-zod-native-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"nativeEnum" | "enumOfTsEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
584
- name: string;
585
- };
586
- readonly "test-loops-over-literal-cases": _typescript_eslint_utils_ts_eslint.RuleModule<"literalCaseLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
587
- name: string;
588
- };
589
- readonly "prefer-constant-time-secret-compare": _typescript_eslint_utils_ts_eslint.RuleModule<"preferConstantTimeSecretCompare", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
590
- name: string;
591
- };
592
- readonly "prefer-discriminated-union": _typescript_eslint_utils_ts_eslint.RuleModule<"preferDiscriminatedUnion", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
593
- name: string;
594
- };
595
- readonly "prefer-input-group-search": _typescript_eslint_utils_ts_eslint.RuleModule<"preferInputGroup", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
596
- name: string;
597
- };
598
- readonly "prefer-immutable-module-constant": _typescript_eslint_utils_ts_eslint.RuleModule<"preferAsConst" | "preferReadonlyCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
599
- name: string;
600
- };
601
- readonly "prefer-shadcn-primitives": _typescript_eslint_utils_ts_eslint.RuleModule<"preferShadcnPrimitive", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
602
- name: string;
603
- };
604
- 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 [{
605
461
  minElements?: number;
606
462
  checkRegex?: boolean;
607
463
  ignoreTestFiles?: boolean;
608
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
609
- name: string;
610
- };
611
- readonly "prefer-module-level-schema": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistSchema", readonly [{
464
+ }?], "hoistCollection" | "hoistRegex">;
465
+ readonly "prefer-module-level-schema": DocumentedRule<readonly [{
612
466
  factories?: readonly string[];
613
467
  ignoreTestFiles?: boolean;
614
468
  memoCallees?: readonly string[];
615
469
  minProperties?: number;
616
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
617
- name: string;
618
- };
619
- readonly "prefer-native-random-uuid": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNative" | "replaceWithNative", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
620
- name: string;
621
- };
622
- readonly "prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
623
- name: string;
624
- };
625
- readonly "prefer-schema-for-api-payload": _typescript_eslint_utils_ts_eslint.RuleModule<"unparsedJsonAccess", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
626
- name: string;
627
- };
628
- 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 [{
629
475
  requireSemanticTokens?: boolean;
630
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
631
- name: string;
632
- };
633
- readonly "prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
634
- name: string;
635
- };
636
- readonly "prefer-whole-object-assertion": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
637
- name: string;
638
- };
639
- 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 [{
640
480
  ignoreTypeNames?: readonly string[];
641
481
  requireIdenticalShape?: boolean;
642
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
643
- name: string;
644
- };
645
- readonly "require-assert-never": _typescript_eslint_utils_ts_eslint.RuleModule<"missingAssertNever", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
646
- name: string;
647
- };
648
- 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 [{
649
485
  allowIn?: readonly string[];
650
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
651
- name: string;
652
- };
653
- readonly "require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
654
- name: string;
655
- };
656
- readonly "require-static-next-matcher": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
657
- name: string;
658
- };
659
- readonly "require-zod-form-validation": _typescript_eslint_utils_ts_eslint.RuleModule<"missingZodValidation", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
660
- name: string;
661
- };
662
- readonly "store-insert-requires-on-conflict": _typescript_eslint_utils_ts_eslint.RuleModule<"storeInsertRequiresOnConflict", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
663
- name: string;
664
- };
665
- readonly stepdown: _typescript_eslint_utils_ts_eslint.RuleModule<"helperAboveOnlyCaller", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
666
- name: string;
667
- };
668
- 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 [{
669
493
  convention?: "prefix" | "suffix" | "either";
670
- }?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
671
- name: string;
672
- };
494
+ }?], "zPrefix" | "schemaSuffix" | "zodSchemaName">;
673
495
  };
674
496
  readonly retiredRules: Readonly<Record<string, RetiredRule>>;
675
497
  readonly configs: {
@@ -678,4 +500,4 @@ declare const plugin: {
678
500
  };
679
501
  };
680
502
 
681
- 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 };