@sarj/eslint-plugin 6.0.0 → 7.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/README.md +34 -6
- package/dist/index.cjs +6729 -6626
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +257 -446
- package/dist/index.d.ts +257 -446
- package/dist/index.js +6709 -6638
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,27 +1,11 @@
|
|
|
1
1
|
import * as _typescript_eslint_utils_ts_eslint from '@typescript-eslint/utils/ts-eslint';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* @fileoverview
|
|
5
|
-
* members' own names and types — the VOLUME arm of the comment family, judged
|
|
6
|
-
* once per TYPE rather than once per comment.
|
|
7
|
-
*
|
|
8
|
-
* interface SapCredentials {
|
|
9
|
-
* // Database host.
|
|
10
|
-
* host?: string;
|
|
11
|
-
* // Database host port.
|
|
12
|
-
* port?: number;
|
|
13
|
-
* // Database username.
|
|
14
|
-
* username?: string;
|
|
15
|
-
* }
|
|
16
|
-
*
|
|
17
|
-
* `jsdoc-restates-signature` needs every content word covered, so it deletes
|
|
18
|
-
* the first row and cannot touch the second. That is the right verdict for one
|
|
19
|
-
* line and the wrong one for ten, so the unit of judgement here is the type.
|
|
4
|
+
* @fileoverview no-type-member-comment-wall — an object type whose member comments mostly re-spell the members is a wall the reader pays for by the block.
|
|
20
5
|
*
|
|
21
6
|
* Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-type-member-comment-wall.test.ts
|
|
22
7
|
* Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-type-member-comment-wall.md
|
|
23
8
|
*/
|
|
24
|
-
|
|
25
9
|
/** Every threshold this rule applies; each is documented at `DEFAULTS`. */
|
|
26
10
|
interface RuleOptions$3 {
|
|
27
11
|
readonly minCommentedMembers: number;
|
|
@@ -31,47 +15,11 @@ interface RuleOptions$3 {
|
|
|
31
15
|
}
|
|
32
16
|
|
|
33
17
|
/**
|
|
34
|
-
* @fileoverview
|
|
35
|
-
* storage.
|
|
36
|
-
*
|
|
37
|
-
* Some features are stateless deliberately: they derive everything they need
|
|
38
|
-
* from reads against the systems of record (Slack, Linear, GitHub, a CRM) plus
|
|
39
|
-
* markers in the artefacts they themselves produced. The reason is operational
|
|
40
|
-
* — such a feature can be re-run and back-filled freely, whereas a private
|
|
41
|
-
* table or key/value namespace immediately diverges from what a human can
|
|
42
|
-
* actually see and audit in the system of record. Adding a store to one of
|
|
43
|
-
* these modules silently deletes that property, and nothing else in the
|
|
44
|
-
* toolchain notices.
|
|
45
|
-
*
|
|
46
|
-
* WHAT IT CATCHES, inside the configured modules only
|
|
47
|
-
* db.prepare(sql) // a SQL statement
|
|
48
|
-
* kv.put(key, value) // a key/value write
|
|
49
|
-
* kv.getWithMetadata(key) // a key/value read
|
|
50
|
-
*
|
|
51
|
-
* OPT-IN BY DESIGN
|
|
52
|
-
* `modules` defaults to an EMPTY list, which makes the rule a no-op. That is
|
|
53
|
-
* deliberate: the method names alone (`put`, `prepare`) carry no type
|
|
54
|
-
* information, so the rule is only meaningful — and only quiet enough to live
|
|
55
|
-
* in a shared preset — when it is pointed at the specific directories a team
|
|
56
|
-
* has declared stateless.
|
|
57
|
-
*
|
|
58
|
-
* "@sarj/no-storage-in-stateless-modules": ["error", {
|
|
59
|
-
* "modules": ["[\\\\/]engineer-digest[\\\\/]", "[\\\\/]digest[\\\\/]"]
|
|
60
|
-
* }]
|
|
18
|
+
* @fileoverview no-storage-in-stateless-modules — private storage inside a module a team declared stateless diverges from the system of record, silently.
|
|
61
19
|
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* things differently.
|
|
65
|
-
*
|
|
66
|
-
* NOT FLAGGED
|
|
67
|
-
* - Anything outside the configured modules.
|
|
68
|
-
* - `.put()` with fewer than two arguments — a one-argument `put` is more
|
|
69
|
-
* often a builder or queue helper than a key/value write.
|
|
70
|
-
*
|
|
71
|
-
* If a feature genuinely cannot be expressed statelessly, that is a design
|
|
72
|
-
* conversation, not a disable comment.
|
|
20
|
+
* Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-storage-in-stateless-modules.test.ts
|
|
21
|
+
* Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-storage-in-stateless-modules.md
|
|
73
22
|
*/
|
|
74
|
-
|
|
75
23
|
interface RuleOptions$2 {
|
|
76
24
|
/** Regex sources matched against the filename. Empty means the rule is off. */
|
|
77
25
|
readonly modules?: readonly string[];
|
|
@@ -80,467 +28,336 @@ interface RuleOptions$2 {
|
|
|
80
28
|
}
|
|
81
29
|
|
|
82
30
|
/**
|
|
83
|
-
* @fileoverview
|
|
84
|
-
*
|
|
85
|
-
* A bare `fetch()` in a route handler, server action or component opts out of
|
|
86
|
-
* whatever the codebase's client layer provides — retry/backoff, timeouts,
|
|
87
|
-
* status handling, auth headers, structured log breadcrumbs. It is also the
|
|
88
|
-
* shape that cannot be stubbed in a test without monkey-patching global
|
|
89
|
-
* `fetch`, so the call site quietly becomes untestable.
|
|
90
|
-
*
|
|
91
|
-
* WHAT IT CATCHES
|
|
92
|
-
* fetch(url) // bare global
|
|
93
|
-
* globalThis.fetch(url) // explicit global receiver
|
|
94
|
-
* window.fetch(url)
|
|
95
|
-
*
|
|
96
|
-
* NOT FLAGGED
|
|
97
|
-
* - Files whose path matches one of the `allow` patterns. The defaults cover
|
|
98
|
-
* the conventions we have seen in practice — a `clients/` directory, a
|
|
99
|
-
* `*-client.ts` module, an `http-client.*` wrapper, an `api/` directory or
|
|
100
|
-
* `api.ts` / `*-api.ts` module — plus test files and codemod fixtures.
|
|
101
|
-
* - A method named `fetch` on some other receiver (`cache.fetch(k)`,
|
|
102
|
-
* `queryClient.fetch()`): only the global is HTTP.
|
|
103
|
-
* - A pre-signed upload/download URL transfer (`fetch(uploadUrl, ...)`,
|
|
104
|
-
* `fetch(file.downloadUrl)`). Those URLs are one-off storage handoffs,
|
|
105
|
-
* not calls to a first-party service API that belongs behind a client
|
|
106
|
-
* wrapper.
|
|
107
|
-
* - `new Request(...)` / `axios(...)` and friends. This rule is about the
|
|
108
|
-
* global `fetch`, not about every HTTP library.
|
|
109
|
-
*
|
|
110
|
-
* CONFIGURATION
|
|
111
|
-
* `allow` is a list of regular-expression sources matched against the absolute
|
|
112
|
-
* filename, so a repo that keeps its client layer somewhere else can say so
|
|
113
|
-
* rather than sprinkling disable comments:
|
|
31
|
+
* @fileoverview no-raw-fetch-outside-clients — a bare `fetch` outside the client layer opts out of retry, timeout and status handling, and cannot be stubbed.
|
|
114
32
|
*
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* }]
|
|
118
|
-
*
|
|
119
|
-
* Supplying `allow` REPLACES the default CLIENT-LAYER patterns. Test files are
|
|
120
|
-
* no longer part of that list — they are recognised unconditionally by the
|
|
121
|
-
* shared `isTestFile` predicate — so a repo that overrides `allow` keeps its
|
|
122
|
-
* test tree exempt without having to remember the test patterns.
|
|
123
|
-
*
|
|
124
|
-
* CORPUS SWEEP (2220 files, zod / TanStack Query / react-router / swr /
|
|
125
|
-
* zustand, 2026-07): 96 raw hits. The defaults missed three path conventions
|
|
126
|
-
* that ARE the client layer, so the reports landed on the very modules the rule
|
|
127
|
-
* wants the `fetch` to live in:
|
|
128
|
-
* - `api.ts` / `api/` / `*-api.ts` — 15 hits, e.g.
|
|
129
|
-
* `query/examples/react/star-wars/src/api.ts:7`, a module that exists solely
|
|
130
|
-
* to own `getFilm`/`getPerson` HTTP calls. `api` is the same convention
|
|
131
|
-
* family as `clients/`, just the other common spelling.
|
|
132
|
-
* - Hyphenated test basenames (`*-test.ts` / `*-spec.ts`) — the default list
|
|
133
|
-
* only knew the dotted `*.test.ts` form, so react-router's entire suite
|
|
134
|
-
* (which names files `single-fetch-test.ts`) was unprotected.
|
|
135
|
-
* - `__testfixtures__/` — 8 hits from jscodeshift fixtures such as
|
|
136
|
-
* `query/packages/query-codemods/src/v5/remove-overloads/__testfixtures__/bug-reports.input.tsx`,
|
|
137
|
-
* which are input/output text for a codemod, not code that runs.
|
|
138
|
-
*
|
|
139
|
-
* SECOND SWEEP (25,508 deduped TS/TSX files across zod / trpc / dub /
|
|
140
|
-
* openstatus / formbricks / documenso / unkey / midday / papermark / cal.com /
|
|
141
|
-
* hono plus six first-party repos, 2026-07): 1,019 hits, 50 read in a seeded
|
|
142
|
-
* random sample — 24 true positives, 21 false positives, 5 arguable. At a 42%
|
|
143
|
-
* false-positive rate this was the loudest rule of the five audited, and the
|
|
144
|
-
* cause was the same one the first sweep found, just further along: the reports
|
|
145
|
-
* were landing ON the client layer, under names the `allow` list did not know.
|
|
146
|
-
*
|
|
147
|
-
* - **Vendor wrapper modules** — 147 findings. `*Service.ts`, `services/`,
|
|
148
|
-
* `connectors/` (16), `providers/` (12), `integrations/` (16),
|
|
149
|
-
* `notifications/<vendor>/` (29), `adapters/`, `*-fetcher.ts`. Every fetch
|
|
150
|
-
* in them is an absolute-URL call to ONE third-party origin — they ARE the
|
|
151
|
-
* module the rule wants the fetch to live in. Citable:
|
|
152
|
-
* `cal.com/packages/app-store/office365calendar/lib/CalendarService.ts:265`,
|
|
153
|
-
* `openstatus/packages/notifications/telegram/src/index.ts:81`,
|
|
154
|
-
* `formbricks/apps/web/lib/googleSheet/service.ts:164`.
|
|
155
|
-
* Recall cost: 0 of the 50 sampled true positives lived in such a path —
|
|
156
|
-
* every one was a `.tsx` component/page/modal or a React hook.
|
|
157
|
-
* - **Test-path drift** — 36 findings. The rule hand-rolled its own test-path
|
|
158
|
-
* list instead of using the shared `isTestFile`, so it missed `playwright/`
|
|
159
|
-
* (19) and the `.e2e.ts` basename. The single loudest file corpus-wide was
|
|
160
|
-
* `cal.com/apps/web/playwright/oauth-provider.e2e.ts` (16 findings). The
|
|
161
|
-
* sibling rule `require-fetch-timeout` had always used `isTestFile`; this
|
|
162
|
-
* was pure drift between two rules that see the same call sites.
|
|
163
|
-
* - **Asset / passthrough handoff** — see `isConstructedArgumentHandoff`.
|
|
164
|
-
*
|
|
165
|
-
* DELIBERATELY NOT GUARDED: restricting the rule to component/hook files. It
|
|
166
|
-
* would cut the residual false-positive rate from ~25% to ~4%, but costs ~80
|
|
167
|
-
* real positives in `.ts` background jobs (e.g.
|
|
168
|
-
* `papermark/lib/trigger/convert-pdf-direct.ts:332`).
|
|
169
|
-
*
|
|
170
|
-
* DELIBERATELY NOT ALLOWED: a `-provider.*` BASENAME, even though the
|
|
171
|
-
* `providers/` DIRECTORY is. In the corpus that basename is usually a React
|
|
172
|
-
* context or modal provider calling the app's own API —
|
|
173
|
-
* `dub/apps/web/ui/modals/modal-provider.tsx:134` is exactly the true-positive
|
|
174
|
-
* shape — and the two vendor files that carry it are already covered by
|
|
175
|
-
* `integrations/`.
|
|
33
|
+
* Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-raw-fetch-outside-clients.test.ts
|
|
34
|
+
* Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-raw-fetch-outside-clients.md
|
|
176
35
|
*/
|
|
177
|
-
|
|
178
36
|
interface RuleOptions$1 {
|
|
179
37
|
/** Regular-expression sources matched against the filename. */
|
|
180
38
|
readonly allow?: readonly string[];
|
|
181
39
|
}
|
|
182
40
|
|
|
183
41
|
/**
|
|
184
|
-
* @fileoverview
|
|
42
|
+
* @fileoverview _logging — shared recognition of logging / error-reporting calls, so the catch rules and the secret rule cannot disagree.
|
|
185
43
|
*
|
|
186
|
-
*
|
|
187
|
-
* through `.bind(...)`. Interpolating a value into the statement text bypasses
|
|
188
|
-
* the binding layer completely: that is SQL injection, and it also defeats the
|
|
189
|
-
* driver's prepared-statement cache, because every distinct value produces a
|
|
190
|
-
* distinct statement to compile. The shape is identical across Cloudflare D1,
|
|
191
|
-
* better-sqlite3 and node-postgres, so the rule is driver-agnostic.
|
|
192
|
-
*
|
|
193
|
-
* WHAT IT CATCHES
|
|
194
|
-
* db.prepare(`select * from users where id = '${userId}'`)
|
|
195
|
-
* db.prepare("select * from users where id = '" + userId + "'")
|
|
196
|
-
* db.exec(`delete from sessions where token = '${token}'`)
|
|
197
|
-
*
|
|
198
|
-
* NOT FLAGGED
|
|
199
|
-
* - `${CONSTANT_CASE}` fragments. A module-level constant — the column-list
|
|
200
|
-
* constants several repos keep (`${CANDIDATE_COLS}`, `${TABLES.USERS}`) —
|
|
201
|
-
* is a compile-time value, not user input. Anything starting lowercase is
|
|
202
|
-
* treated as runtime data.
|
|
203
|
-
* - A template literal with no interpolations at all.
|
|
204
|
-
* - Tagged templates (`` sql`select ... ${id}` ``). A tag function receives the
|
|
205
|
-
* static strings and the values separately and is the parameterising
|
|
206
|
-
* mechanism, not a bypass of it.
|
|
207
|
-
* - `.prepare()` on something that is not a database. Requiring an
|
|
208
|
-
* interpolated runtime value keeps this rare in practice.
|
|
209
|
-
* - A statement text that contains no SQL data-statement keyword. `exec` and
|
|
210
|
-
* `query` are not SQL-specific names: a 5-repo sweep of real TypeScript
|
|
211
|
-
* (zod / TanStack Query / react-router / swr / zustand, 2,186 files) found
|
|
212
|
-
* 4/4 hits were `child_process.exec` building a SHELL command line —
|
|
213
|
-
* an `open <url>` at
|
|
214
|
-
* react-router/integration/helpers/playwright-fixture.ts:230 and an
|
|
215
|
-
* `npm view <pkg>@<version> version` at
|
|
216
|
-
* react-router/scripts/changes/publish.ts:111. Requiring the statement to
|
|
217
|
-
* actually read as SQL (`SELECT` / `INSERT INTO` / `UPDATE` / `DELETE FROM`
|
|
218
|
-
* / DDL / `PRAGMA` / a CTE head) takes that class to zero without touching
|
|
219
|
-
* any real injection: an interpolated statement with no SQL verb in it was
|
|
220
|
-
* never a SQL statement.
|
|
221
|
-
*
|
|
222
|
-
* CONFIGURATION
|
|
223
|
-
* `methods` is the list of statement-taking method names to inspect. Extend it
|
|
224
|
-
* for a driver that names things differently:
|
|
225
|
-
*
|
|
226
|
-
* "@sarj/no-dynamic-sql": ["error", { "methods": ["prepare", "exec", "raw"] }]
|
|
227
|
-
*
|
|
228
|
-
* Supplying `methods` REPLACES the defaults.
|
|
44
|
+
* Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_logging.md
|
|
229
45
|
*/
|
|
230
46
|
|
|
47
|
+
/** Shared `loggerNames` / `logFunctions` option shape. */
|
|
48
|
+
interface LoggingOptions {
|
|
49
|
+
readonly loggerNames?: readonly string[];
|
|
50
|
+
readonly logFunctions?: readonly string[];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @fileoverview no-dynamic-sql — a runtime value interpolated into statement text is SQL injection, and it defeats the prepared-statement cache.
|
|
55
|
+
*
|
|
56
|
+
* Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-dynamic-sql.test.ts
|
|
57
|
+
* Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-dynamic-sql.md
|
|
58
|
+
*/
|
|
231
59
|
interface RuleOptions {
|
|
232
60
|
/** Statement-taking method names to inspect. Replaces the defaults. */
|
|
233
61
|
readonly methods?: readonly string[];
|
|
234
62
|
}
|
|
235
63
|
|
|
236
64
|
/**
|
|
237
|
-
* @fileoverview
|
|
238
|
-
* Used by `no-log-only-catch`, `no-sentinel-return-on-catch` and
|
|
239
|
-
* `no-secret-in-log` so all three rules agree on what counts as "this call
|
|
240
|
-
* writes to a log sink" before deciding a catch silently swallows an error or a
|
|
241
|
-
* secret leaks.
|
|
242
|
-
*
|
|
243
|
-
* Two shapes are recognised:
|
|
65
|
+
* @fileoverview _renames — a renamed rule keeps its old name registered as a deprecated alias, because a name that simply vanishes reads as growth to a shrink-only baseline.
|
|
244
66
|
*
|
|
245
|
-
*
|
|
246
|
-
* logger RECEIVER: `console.error(...)`, `logger.warn(...)`,
|
|
247
|
-
* `this.logger.info(...)`, and builder/factory chains
|
|
248
|
-
* (`logger.bind({...}).info(...)`, `logging.getLogger(n).info(...)`).
|
|
249
|
-
* - **Free-function-shaped** — a project-declared logging function, e.g.
|
|
250
|
-
* `logEvent("pr_scan.failed", { repo, error })`. Structured loggers that are
|
|
251
|
-
* plain functions taking a meta object are the dominant real-world shape and
|
|
252
|
-
* have no logger receiver at all, so they are invisible to the receiver
|
|
253
|
-
* heuristic. Projects declare theirs via the shared `logFunctions` rule
|
|
254
|
-
* option; `loggerNames` extends the receiver set the same way.
|
|
255
|
-
*
|
|
256
|
-
* Both options are OFF by default (empty), so default behaviour is unchanged.
|
|
257
|
-
* Declaring them makes the catch rules stop reporting a correctly-logged
|
|
258
|
-
* degraded return AND makes `no-secret-in-log` start inspecting those calls —
|
|
259
|
-
* the second effect closes a real hole, since `logEvent("auth", { botToken })`
|
|
260
|
-
* was previously never examined.
|
|
67
|
+
* Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/_renames.md
|
|
261
68
|
*/
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
readonly
|
|
266
|
-
readonly
|
|
267
|
-
}
|
|
69
|
+
declare const renamedRules: {
|
|
70
|
+
readonly "jsdoc-restates-signature": "no-restated-jsdoc";
|
|
71
|
+
readonly "no-async-callback-in-waitfor": "no-async-callback-in-wait-for";
|
|
72
|
+
readonly "strict-test-assertions": "prefer-whole-object-assertion";
|
|
73
|
+
readonly "trailing-value-narration": "no-trailing-value-narration";
|
|
74
|
+
};
|
|
268
75
|
|
|
269
76
|
declare const rules: {
|
|
270
77
|
"enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
271
78
|
name: string;
|
|
272
79
|
};
|
|
80
|
+
"no-async-callback-in-wait-for": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
81
|
+
name: string;
|
|
82
|
+
};
|
|
273
83
|
"no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
274
84
|
name: string;
|
|
275
85
|
};
|
|
276
86
|
"no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
277
87
|
name: string;
|
|
278
88
|
};
|
|
279
|
-
"no-
|
|
280
|
-
ignoreFiles?: readonly string[];
|
|
281
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
89
|
+
"no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
282
90
|
name: string;
|
|
283
91
|
};
|
|
284
|
-
"no-
|
|
92
|
+
"no-cors-wildcard-with-credentials": _typescript_eslint_utils_ts_eslint.RuleModule<"corsWildcardWithCredentials", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
285
93
|
name: string;
|
|
286
94
|
};
|
|
287
|
-
"no-
|
|
95
|
+
"no-dynamic-sql": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicSql", readonly [RuleOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
288
96
|
name: string;
|
|
289
97
|
};
|
|
290
|
-
"no-
|
|
98
|
+
"no-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"noEnum", readonly [{
|
|
99
|
+
ignoreFiles?: readonly string[];
|
|
100
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
291
101
|
name: string;
|
|
292
102
|
};
|
|
293
|
-
"no-
|
|
103
|
+
"no-fat-try-blocks": _typescript_eslint_utils_ts_eslint.RuleModule<"fatTryBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
294
104
|
name: string;
|
|
295
105
|
};
|
|
296
|
-
"no-
|
|
106
|
+
"no-hand-rolled-sleep": _typescript_eslint_utils_ts_eslint.RuleModule<"handRolledSleep" | "handRolledTimeoutRace", readonly [{
|
|
107
|
+
allowIn?: readonly string[];
|
|
108
|
+
checkClientModules?: boolean;
|
|
109
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
297
110
|
name: string;
|
|
298
111
|
};
|
|
299
|
-
"no-
|
|
112
|
+
"no-insecure-random-id": _typescript_eslint_utils_ts_eslint.RuleModule<"insecureRandomId", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
300
113
|
name: string;
|
|
301
114
|
};
|
|
302
|
-
"no-
|
|
115
|
+
"no-json-stringify-error": _typescript_eslint_utils_ts_eslint.RuleModule<"noJsonStringifyError", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
303
116
|
name: string;
|
|
304
117
|
};
|
|
305
|
-
"
|
|
118
|
+
"no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
306
119
|
name: string;
|
|
307
120
|
};
|
|
308
|
-
"
|
|
121
|
+
"no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
309
122
|
name: string;
|
|
310
123
|
};
|
|
311
|
-
"
|
|
312
|
-
requireSemanticTokens?: boolean;
|
|
313
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
124
|
+
"no-positional-tuple-return": _typescript_eslint_utils_ts_eslint.RuleModule<"noPositionalTupleReturn", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
314
125
|
name: string;
|
|
315
126
|
};
|
|
316
|
-
"
|
|
127
|
+
"no-raw-env": _typescript_eslint_utils_ts_eslint.RuleModule<"noRawEnv", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
317
128
|
name: string;
|
|
318
129
|
};
|
|
319
|
-
"
|
|
130
|
+
"no-raw-fetch-outside-clients": _typescript_eslint_utils_ts_eslint.RuleModule<"rawFetch", readonly [RuleOptions$1?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
320
131
|
name: string;
|
|
321
132
|
};
|
|
322
|
-
"
|
|
133
|
+
"no-repeated-string-literal": _typescript_eslint_utils_ts_eslint.RuleModule<"noRepeatedStringLiteral", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
323
134
|
name: string;
|
|
324
135
|
};
|
|
325
|
-
"
|
|
326
|
-
convention?: "prefix" | "suffix" | "either";
|
|
327
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
136
|
+
"no-restated-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesLineBelow", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
328
137
|
name: string;
|
|
329
138
|
};
|
|
330
|
-
"no-
|
|
139
|
+
"no-restated-jsdoc": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesSignature" | "deleteBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
331
140
|
name: string;
|
|
332
141
|
};
|
|
333
|
-
"no-
|
|
142
|
+
"no-secret-in-log": _typescript_eslint_utils_ts_eslint.RuleModule<"noSecretInLog" | "noRawBodyInLog", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
334
143
|
name: string;
|
|
335
144
|
};
|
|
336
|
-
"no-
|
|
145
|
+
"no-select-star": _typescript_eslint_utils_ts_eslint.RuleModule<"noSelectStar", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
337
146
|
name: string;
|
|
338
147
|
};
|
|
339
|
-
"no-
|
|
148
|
+
"no-sentinel-return-on-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noSentinelReturn", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
340
149
|
name: string;
|
|
341
150
|
};
|
|
342
|
-
"
|
|
343
|
-
ignoreFields?: readonly string[];
|
|
344
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
151
|
+
"no-silent-promise-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"silentCatch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
345
152
|
name: string;
|
|
346
153
|
};
|
|
347
|
-
"
|
|
154
|
+
"no-sleep-in-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"noSleepInTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
348
155
|
name: string;
|
|
349
156
|
};
|
|
350
|
-
"
|
|
351
|
-
ignoreTypeNames?: readonly string[];
|
|
352
|
-
requireIdenticalShape?: boolean;
|
|
353
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
157
|
+
"no-storage-in-stateless-modules": _typescript_eslint_utils_ts_eslint.RuleModule<"storageInStatelessModule", readonly [RuleOptions$2?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
354
158
|
name: string;
|
|
355
159
|
};
|
|
356
|
-
"no-
|
|
160
|
+
"no-string-concat-in-loop": _typescript_eslint_utils_ts_eslint.RuleModule<"noStringConcatInLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
357
161
|
name: string;
|
|
358
162
|
};
|
|
359
|
-
"
|
|
360
|
-
allowIn?: readonly string[];
|
|
361
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
163
|
+
"no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
362
164
|
name: string;
|
|
363
165
|
};
|
|
364
|
-
"no-
|
|
166
|
+
"no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
365
167
|
name: string;
|
|
366
168
|
};
|
|
367
|
-
"no-
|
|
169
|
+
"no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<RuleOptions$3>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
368
170
|
name: string;
|
|
369
171
|
};
|
|
370
|
-
"no-
|
|
172
|
+
"no-unnecessary-use-client": _typescript_eslint_utils_ts_eslint.RuleModule<"unnecessaryUseClient", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
371
173
|
name: string;
|
|
372
174
|
};
|
|
373
|
-
"no-
|
|
175
|
+
"no-unsafe-mock-casting": _typescript_eslint_utils_ts_eslint.RuleModule<"unsafeMockCast", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
374
176
|
name: string;
|
|
375
177
|
};
|
|
376
|
-
"no-
|
|
178
|
+
"no-zod-native-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"nativeEnum" | "enumOfTsEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
377
179
|
name: string;
|
|
378
180
|
};
|
|
379
|
-
"
|
|
380
|
-
allowIn?: readonly string[];
|
|
381
|
-
checkClientModules?: boolean;
|
|
382
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
181
|
+
"prefer-constant-time-secret-compare": _typescript_eslint_utils_ts_eslint.RuleModule<"preferConstantTimeSecretCompare", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
383
182
|
name: string;
|
|
384
183
|
};
|
|
385
|
-
"
|
|
184
|
+
"prefer-discriminated-union": _typescript_eslint_utils_ts_eslint.RuleModule<"preferDiscriminatedUnion", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
386
185
|
name: string;
|
|
387
186
|
};
|
|
388
|
-
"prefer-
|
|
187
|
+
"prefer-module-level-constant": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistCollection" | "hoistRegex", readonly [{
|
|
188
|
+
minElements?: number;
|
|
189
|
+
checkRegex?: boolean;
|
|
190
|
+
ignoreTestFiles?: boolean;
|
|
191
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
389
192
|
name: string;
|
|
390
193
|
};
|
|
391
|
-
"
|
|
194
|
+
"prefer-module-level-schema": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistSchema", readonly [{
|
|
195
|
+
factories?: readonly string[];
|
|
196
|
+
ignoreTestFiles?: boolean;
|
|
197
|
+
minProperties?: number;
|
|
198
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
392
199
|
name: string;
|
|
393
200
|
};
|
|
394
|
-
"
|
|
201
|
+
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
395
202
|
name: string;
|
|
396
203
|
};
|
|
397
|
-
"
|
|
204
|
+
"prefer-schema-for-api-payload": _typescript_eslint_utils_ts_eslint.RuleModule<"unparsedJsonAccess", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
398
205
|
name: string;
|
|
399
206
|
};
|
|
400
|
-
"
|
|
207
|
+
"prefer-semantic-colors": _typescript_eslint_utils_ts_eslint.RuleModule<"rawPalette" | "arbitraryColor" | "inlineColor", readonly [{
|
|
208
|
+
requireSemanticTokens?: boolean;
|
|
209
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
401
210
|
name: string;
|
|
402
211
|
};
|
|
403
|
-
"
|
|
212
|
+
"prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
404
213
|
name: string;
|
|
405
214
|
};
|
|
406
|
-
"prefer-
|
|
407
|
-
|
|
408
|
-
checkRegex?: boolean;
|
|
409
|
-
ignoreTestFiles?: boolean;
|
|
215
|
+
"prefer-string-literal-union": _typescript_eslint_utils_ts_eslint.RuleModule<"bareChoiceField" | "comparisonCluster", readonly [{
|
|
216
|
+
ignoreFields?: readonly string[];
|
|
410
217
|
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
411
218
|
name: string;
|
|
412
219
|
};
|
|
413
|
-
"
|
|
220
|
+
"prefer-whole-object-assertion": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
414
221
|
name: string;
|
|
415
222
|
};
|
|
416
|
-
"
|
|
223
|
+
"prefer-zod-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"preferEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
417
224
|
name: string;
|
|
418
225
|
};
|
|
419
|
-
"
|
|
226
|
+
"prefer-zod-infer": _typescript_eslint_utils_ts_eslint.RuleModule<"handWrittenTwin", readonly [{
|
|
227
|
+
ignoreTypeNames?: readonly string[];
|
|
228
|
+
requireIdenticalShape?: boolean;
|
|
229
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
420
230
|
name: string;
|
|
421
231
|
};
|
|
422
|
-
"
|
|
232
|
+
"require-assert-never": _typescript_eslint_utils_ts_eslint.RuleModule<"missingAssertNever", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
423
233
|
name: string;
|
|
424
234
|
};
|
|
425
|
-
"
|
|
235
|
+
"require-fetch-timeout": _typescript_eslint_utils_ts_eslint.RuleModule<"missingSignal", readonly [{
|
|
236
|
+
allowIn?: readonly string[];
|
|
237
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
426
238
|
name: string;
|
|
427
239
|
};
|
|
428
240
|
"require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
429
241
|
name: string;
|
|
430
242
|
};
|
|
431
|
-
"
|
|
243
|
+
"require-zod-form-validation": _typescript_eslint_utils_ts_eslint.RuleModule<"missingZodValidation", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
432
244
|
name: string;
|
|
433
245
|
};
|
|
434
|
-
"
|
|
246
|
+
"store-insert-requires-on-conflict": _typescript_eslint_utils_ts_eslint.RuleModule<"storeInsertRequiresOnConflict", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
435
247
|
name: string;
|
|
436
248
|
};
|
|
437
|
-
"
|
|
249
|
+
"zod-naming-convention": _typescript_eslint_utils_ts_eslint.RuleModule<"zPrefix" | "schemaSuffix" | "zodSchemaName", readonly [{
|
|
250
|
+
convention?: "prefix" | "suffix" | "either";
|
|
251
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
438
252
|
name: string;
|
|
439
253
|
};
|
|
440
254
|
};
|
|
255
|
+
type RuleModule = (typeof rules)[keyof typeof rules];
|
|
441
256
|
declare const recommendedRules: {
|
|
442
|
-
readonly "@sarj/zod-naming-convention": "warn";
|
|
443
|
-
readonly "@sarj/require-assert-never": "error";
|
|
444
|
-
readonly "@sarj/require-zod-form-validation": "error";
|
|
445
257
|
readonly "@sarj/enforce-file-structure": "warn";
|
|
258
|
+
readonly "@sarj/no-async-callback-in-wait-for": "warn";
|
|
446
259
|
readonly "@sarj/no-client-side-data-fetching": "warn";
|
|
447
|
-
readonly "@sarj/
|
|
448
|
-
readonly "@sarj/no-
|
|
449
|
-
readonly "@sarj/
|
|
450
|
-
readonly "@sarj/no-
|
|
451
|
-
readonly "@sarj/no-
|
|
260
|
+
readonly "@sarj/no-comment-cruft": "warn";
|
|
261
|
+
readonly "@sarj/no-conditional-in-test": "warn";
|
|
262
|
+
readonly "@sarj/no-cors-wildcard-with-credentials": "warn";
|
|
263
|
+
readonly "@sarj/no-dynamic-sql": "warn";
|
|
264
|
+
readonly "@sarj/no-fat-try-blocks": "warn";
|
|
265
|
+
readonly "@sarj/no-hand-rolled-sleep": "warn";
|
|
452
266
|
readonly "@sarj/no-insecure-random-id": "warn";
|
|
453
267
|
readonly "@sarj/no-json-stringify-error": "warn";
|
|
268
|
+
readonly "@sarj/no-log-only-catch": "warn";
|
|
269
|
+
readonly "@sarj/no-offset-pagination": "warn";
|
|
270
|
+
readonly "@sarj/no-positional-tuple-return": "warn";
|
|
271
|
+
readonly "@sarj/no-repeated-string-literal": "warn";
|
|
272
|
+
readonly "@sarj/no-restated-comment": "warn";
|
|
273
|
+
readonly "@sarj/no-restated-jsdoc": "warn";
|
|
274
|
+
readonly "@sarj/no-secret-in-log": "warn";
|
|
275
|
+
readonly "@sarj/no-select-star": "warn";
|
|
276
|
+
readonly "@sarj/no-sentinel-return-on-catch": "warn";
|
|
277
|
+
readonly "@sarj/no-silent-promise-catch": "warn";
|
|
278
|
+
readonly "@sarj/no-sleep-in-test-body": "warn";
|
|
454
279
|
readonly "@sarj/no-string-concat-in-loop": "warn";
|
|
280
|
+
readonly "@sarj/no-tautological-expect": "warn";
|
|
281
|
+
readonly "@sarj/no-trailing-value-narration": "warn";
|
|
282
|
+
readonly "@sarj/no-type-member-comment-wall": "warn";
|
|
283
|
+
readonly "@sarj/no-unnecessary-use-client": "warn";
|
|
284
|
+
readonly "@sarj/no-unsafe-mock-casting": "warn";
|
|
285
|
+
readonly "@sarj/no-zod-native-enum": "warn";
|
|
286
|
+
readonly "@sarj/prefer-constant-time-secret-compare": "error";
|
|
455
287
|
readonly "@sarj/prefer-discriminated-union": "warn";
|
|
456
|
-
readonly "@sarj/
|
|
288
|
+
readonly "@sarj/prefer-module-level-constant": "warn";
|
|
289
|
+
readonly "@sarj/prefer-module-level-schema": "warn";
|
|
290
|
+
readonly "@sarj/prefer-non-nullable-collection": "warn";
|
|
291
|
+
readonly "@sarj/prefer-schema-for-api-payload": "warn";
|
|
457
292
|
readonly "@sarj/prefer-semantic-colors": readonly ["warn", {
|
|
458
293
|
readonly requireSemanticTokens: true;
|
|
459
294
|
}];
|
|
460
|
-
readonly "@sarj/
|
|
461
|
-
readonly "@sarj/no-cors-wildcard-with-credentials": "warn";
|
|
462
|
-
readonly "@sarj/no-secret-in-log": "warn";
|
|
463
|
-
readonly "@sarj/no-unsafe-mock-casting": "warn";
|
|
295
|
+
readonly "@sarj/prefer-server-actions": "warn";
|
|
464
296
|
readonly "@sarj/prefer-string-literal-union": "warn";
|
|
297
|
+
readonly "@sarj/prefer-whole-object-assertion": "warn";
|
|
465
298
|
readonly "@sarj/prefer-zod-enum": "warn";
|
|
466
299
|
readonly "@sarj/prefer-zod-infer": "warn";
|
|
300
|
+
readonly "@sarj/require-assert-never": "error";
|
|
467
301
|
readonly "@sarj/require-fetch-timeout": "warn";
|
|
468
|
-
readonly "@sarj/no-silent-promise-catch": "warn";
|
|
469
|
-
readonly "@sarj/prefer-constant-time-secret-compare": "error";
|
|
470
|
-
readonly "@sarj/store-insert-requires-on-conflict": "warn";
|
|
471
|
-
readonly "@sarj/no-offset-pagination": "warn";
|
|
472
|
-
readonly "@sarj/no-select-star": "warn";
|
|
473
|
-
readonly "@sarj/no-hand-rolled-sleep": "warn";
|
|
474
|
-
readonly "@sarj/no-sleep-in-test-body": "warn";
|
|
475
|
-
readonly "@sarj/no-conditional-in-test": "warn";
|
|
476
|
-
readonly "@sarj/no-repeated-string-literal": "warn";
|
|
477
|
-
readonly "@sarj/no-positional-tuple-return": "warn";
|
|
478
|
-
readonly "@sarj/no-dynamic-sql": "warn";
|
|
479
|
-
readonly "@sarj/no-zod-native-enum": "warn";
|
|
480
|
-
readonly "@sarj/prefer-module-level-constant": "warn";
|
|
481
|
-
readonly "@sarj/no-restated-comment": "warn";
|
|
482
|
-
readonly "@sarj/jsdoc-restates-signature": "warn";
|
|
483
|
-
readonly "@sarj/trailing-value-narration": "warn";
|
|
484
|
-
readonly "@sarj/no-type-member-comment-wall": "warn";
|
|
485
|
-
readonly "@sarj/no-tautological-expect": "warn";
|
|
486
302
|
readonly "@sarj/require-interface-for-injected-service": "warn";
|
|
487
|
-
readonly "@sarj/
|
|
488
|
-
readonly "@sarj/
|
|
489
|
-
readonly "@sarj/
|
|
303
|
+
readonly "@sarj/require-zod-form-validation": "error";
|
|
304
|
+
readonly "@sarj/store-insert-requires-on-conflict": "warn";
|
|
305
|
+
readonly "@sarj/zod-naming-convention": "warn";
|
|
490
306
|
};
|
|
491
307
|
declare const strictRules: {
|
|
492
|
-
readonly "@sarj/zod-naming-convention": "error";
|
|
493
|
-
readonly "@sarj/require-assert-never": "error";
|
|
494
|
-
readonly "@sarj/require-zod-form-validation": "error";
|
|
495
308
|
readonly "@sarj/enforce-file-structure": "error";
|
|
496
|
-
readonly "@sarj/no-
|
|
497
|
-
readonly "@sarj/no-enum": "error";
|
|
309
|
+
readonly "@sarj/no-async-callback-in-wait-for": "error";
|
|
498
310
|
readonly "@sarj/no-client-side-data-fetching": "error";
|
|
499
|
-
readonly "@sarj/
|
|
500
|
-
readonly "@sarj/no-
|
|
501
|
-
readonly "@sarj/
|
|
502
|
-
readonly "@sarj/no-
|
|
503
|
-
readonly "@sarj/no-
|
|
311
|
+
readonly "@sarj/no-comment-cruft": "error";
|
|
312
|
+
readonly "@sarj/no-conditional-in-test": "error";
|
|
313
|
+
readonly "@sarj/no-cors-wildcard-with-credentials": "error";
|
|
314
|
+
readonly "@sarj/no-dynamic-sql": "error";
|
|
315
|
+
readonly "@sarj/no-enum": "error";
|
|
316
|
+
readonly "@sarj/no-fat-try-blocks": "error";
|
|
317
|
+
readonly "@sarj/no-hand-rolled-sleep": "error";
|
|
504
318
|
readonly "@sarj/no-insecure-random-id": "error";
|
|
505
319
|
readonly "@sarj/no-json-stringify-error": "error";
|
|
320
|
+
readonly "@sarj/no-log-only-catch": "error";
|
|
321
|
+
readonly "@sarj/no-offset-pagination": "error";
|
|
322
|
+
readonly "@sarj/no-positional-tuple-return": "error";
|
|
323
|
+
readonly "@sarj/no-raw-env": "error";
|
|
324
|
+
readonly "@sarj/no-raw-fetch-outside-clients": "error";
|
|
325
|
+
readonly "@sarj/no-repeated-string-literal": "error";
|
|
326
|
+
readonly "@sarj/no-restated-comment": "error";
|
|
327
|
+
readonly "@sarj/no-restated-jsdoc": "error";
|
|
328
|
+
readonly "@sarj/no-secret-in-log": "error";
|
|
329
|
+
readonly "@sarj/no-select-star": "error";
|
|
330
|
+
readonly "@sarj/no-sentinel-return-on-catch": "error";
|
|
331
|
+
readonly "@sarj/no-silent-promise-catch": "error";
|
|
332
|
+
readonly "@sarj/no-sleep-in-test-body": "error";
|
|
333
|
+
readonly "@sarj/no-storage-in-stateless-modules": "error";
|
|
506
334
|
readonly "@sarj/no-string-concat-in-loop": "error";
|
|
335
|
+
readonly "@sarj/no-tautological-expect": "error";
|
|
336
|
+
readonly "@sarj/no-trailing-value-narration": "error";
|
|
337
|
+
readonly "@sarj/no-type-member-comment-wall": "error";
|
|
338
|
+
readonly "@sarj/no-unnecessary-use-client": "error";
|
|
339
|
+
readonly "@sarj/no-unsafe-mock-casting": "error";
|
|
340
|
+
readonly "@sarj/no-zod-native-enum": "error";
|
|
341
|
+
readonly "@sarj/prefer-constant-time-secret-compare": "error";
|
|
507
342
|
readonly "@sarj/prefer-discriminated-union": "error";
|
|
508
|
-
readonly "@sarj/
|
|
343
|
+
readonly "@sarj/prefer-module-level-constant": "error";
|
|
344
|
+
readonly "@sarj/prefer-module-level-schema": "error";
|
|
345
|
+
readonly "@sarj/prefer-non-nullable-collection": "error";
|
|
346
|
+
readonly "@sarj/prefer-schema-for-api-payload": "error";
|
|
509
347
|
readonly "@sarj/prefer-semantic-colors": readonly ["error", {
|
|
510
348
|
readonly requireSemanticTokens: true;
|
|
511
349
|
}];
|
|
512
|
-
readonly "@sarj/
|
|
513
|
-
readonly "@sarj/no-cors-wildcard-with-credentials": "error";
|
|
514
|
-
readonly "@sarj/no-secret-in-log": "error";
|
|
515
|
-
readonly "@sarj/no-unsafe-mock-casting": "error";
|
|
350
|
+
readonly "@sarj/prefer-server-actions": "error";
|
|
516
351
|
readonly "@sarj/prefer-string-literal-union": "error";
|
|
352
|
+
readonly "@sarj/prefer-whole-object-assertion": "error";
|
|
517
353
|
readonly "@sarj/prefer-zod-enum": "error";
|
|
518
354
|
readonly "@sarj/prefer-zod-infer": "error";
|
|
355
|
+
readonly "@sarj/require-assert-never": "error";
|
|
519
356
|
readonly "@sarj/require-fetch-timeout": "error";
|
|
520
|
-
readonly "@sarj/no-silent-promise-catch": "error";
|
|
521
|
-
readonly "@sarj/prefer-constant-time-secret-compare": "error";
|
|
522
|
-
readonly "@sarj/store-insert-requires-on-conflict": "error";
|
|
523
|
-
readonly "@sarj/no-offset-pagination": "error";
|
|
524
|
-
readonly "@sarj/no-select-star": "error";
|
|
525
|
-
readonly "@sarj/no-hand-rolled-sleep": "error";
|
|
526
|
-
readonly "@sarj/no-sleep-in-test-body": "error";
|
|
527
|
-
readonly "@sarj/no-conditional-in-test": "error";
|
|
528
|
-
readonly "@sarj/no-repeated-string-literal": "error";
|
|
529
|
-
readonly "@sarj/no-positional-tuple-return": "error";
|
|
530
|
-
readonly "@sarj/no-dynamic-sql": "error";
|
|
531
|
-
readonly "@sarj/no-raw-fetch-outside-clients": "error";
|
|
532
|
-
readonly "@sarj/no-storage-in-stateless-modules": "error";
|
|
533
|
-
readonly "@sarj/no-zod-native-enum": "error";
|
|
534
|
-
readonly "@sarj/prefer-module-level-constant": "error";
|
|
535
|
-
readonly "@sarj/no-restated-comment": "error";
|
|
536
|
-
readonly "@sarj/jsdoc-restates-signature": "error";
|
|
537
|
-
readonly "@sarj/trailing-value-narration": "error";
|
|
538
|
-
readonly "@sarj/no-type-member-comment-wall": "error";
|
|
539
|
-
readonly "@sarj/no-tautological-expect": "error";
|
|
540
357
|
readonly "@sarj/require-interface-for-injected-service": "error";
|
|
541
|
-
readonly "@sarj/
|
|
542
|
-
readonly "@sarj/
|
|
543
|
-
readonly "@sarj/
|
|
358
|
+
readonly "@sarj/require-zod-form-validation": "error";
|
|
359
|
+
readonly "@sarj/store-insert-requires-on-conflict": "error";
|
|
360
|
+
readonly "@sarj/zod-naming-convention": "error";
|
|
544
361
|
};
|
|
545
362
|
type FlatPreset = {
|
|
546
363
|
readonly name: string;
|
|
@@ -548,201 +365,195 @@ type FlatPreset = {
|
|
|
548
365
|
readonly rules: Record<string, unknown>;
|
|
549
366
|
};
|
|
550
367
|
/**
|
|
551
|
-
* The presets, as FLAT config objects
|
|
552
|
-
*
|
|
553
|
-
*
|
|
554
|
-
* rejects that outright:
|
|
555
|
-
*
|
|
556
|
-
* Config (unnamed): Key "plugins": This appears to be in eslintrc format
|
|
557
|
-
* (array of strings) rather than flat config format (object).
|
|
558
|
-
*
|
|
559
|
-
* So `sarj.configs.strict`, the "just extend the plugin, do not copy the file"
|
|
560
|
-
* path, threw for anyone who tried it, and copying `eslint.strict.mjs` and
|
|
561
|
-
* editing the copy was the only thing that worked -- exactly the vendoring
|
|
562
|
-
* these presets exist to prevent. `plugins` is now the object form flat config
|
|
563
|
-
* wants, so both presets go straight into an `eslint.config.mjs` array (no
|
|
564
|
-
* spread):
|
|
565
|
-
*
|
|
566
|
-
* import sarj from "@sarj/eslint-plugin";
|
|
567
|
-
* export default [sarj.configs.strict];
|
|
568
|
-
*
|
|
569
|
-
* Neither preset sets `files` or a parser. They carry rules and nothing else,
|
|
570
|
-
* so they compose with whatever a repo already has rather than narrowing it.
|
|
368
|
+
* The presets, as FLAT config objects — `plugins` is the object form, so both go
|
|
369
|
+
* straight into an `eslint.config.mjs` array with no spread. Neither sets
|
|
370
|
+
* `files` or a parser, so they compose with whatever a repo already has.
|
|
571
371
|
*/
|
|
572
372
|
declare const plugin: {
|
|
573
373
|
meta: {
|
|
574
374
|
readonly name: "@sarj/eslint-plugin";
|
|
575
|
-
readonly version: "
|
|
375
|
+
readonly version: "7.0.0";
|
|
576
376
|
};
|
|
577
377
|
rules: {
|
|
378
|
+
"jsdoc-restates-signature": RuleModule;
|
|
379
|
+
"no-async-callback-in-waitfor": RuleModule;
|
|
380
|
+
"strict-test-assertions": RuleModule;
|
|
381
|
+
"trailing-value-narration": RuleModule;
|
|
578
382
|
"enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
579
383
|
name: string;
|
|
580
384
|
};
|
|
385
|
+
"no-async-callback-in-wait-for": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
386
|
+
name: string;
|
|
387
|
+
};
|
|
581
388
|
"no-client-side-data-fetching": _typescript_eslint_utils_ts_eslint.RuleModule<"noClientFetch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
582
389
|
name: string;
|
|
583
390
|
};
|
|
584
391
|
"no-comment-cruft": _typescript_eslint_utils_ts_eslint.RuleModule<"commentedOutCode" | "sectionBanner" | "fileHeaderPreamble" | "redundantNarration" | "untrackedTodo", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
585
392
|
name: string;
|
|
586
393
|
};
|
|
587
|
-
"no-
|
|
588
|
-
ignoreFiles?: readonly string[];
|
|
589
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
394
|
+
"no-conditional-in-test": _typescript_eslint_utils_ts_eslint.RuleModule<"noConditionalInTest", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
590
395
|
name: string;
|
|
591
396
|
};
|
|
592
|
-
"no-
|
|
397
|
+
"no-cors-wildcard-with-credentials": _typescript_eslint_utils_ts_eslint.RuleModule<"corsWildcardWithCredentials", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
593
398
|
name: string;
|
|
594
399
|
};
|
|
595
|
-
"no-
|
|
400
|
+
"no-dynamic-sql": _typescript_eslint_utils_ts_eslint.RuleModule<"dynamicSql", readonly [RuleOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
596
401
|
name: string;
|
|
597
402
|
};
|
|
598
|
-
"no-
|
|
403
|
+
"no-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"noEnum", readonly [{
|
|
404
|
+
ignoreFiles?: readonly string[];
|
|
405
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
599
406
|
name: string;
|
|
600
407
|
};
|
|
601
|
-
"no-
|
|
408
|
+
"no-fat-try-blocks": _typescript_eslint_utils_ts_eslint.RuleModule<"fatTryBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
602
409
|
name: string;
|
|
603
410
|
};
|
|
604
|
-
"no-
|
|
411
|
+
"no-hand-rolled-sleep": _typescript_eslint_utils_ts_eslint.RuleModule<"handRolledSleep" | "handRolledTimeoutRace", readonly [{
|
|
412
|
+
allowIn?: readonly string[];
|
|
413
|
+
checkClientModules?: boolean;
|
|
414
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
605
415
|
name: string;
|
|
606
416
|
};
|
|
607
|
-
"no-
|
|
417
|
+
"no-insecure-random-id": _typescript_eslint_utils_ts_eslint.RuleModule<"insecureRandomId", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
608
418
|
name: string;
|
|
609
419
|
};
|
|
610
|
-
"no-
|
|
420
|
+
"no-json-stringify-error": _typescript_eslint_utils_ts_eslint.RuleModule<"noJsonStringifyError", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
611
421
|
name: string;
|
|
612
422
|
};
|
|
613
|
-
"
|
|
423
|
+
"no-log-only-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noLogOnlyCatch" | "emptyCatch", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
614
424
|
name: string;
|
|
615
425
|
};
|
|
616
|
-
"
|
|
426
|
+
"no-offset-pagination": _typescript_eslint_utils_ts_eslint.RuleModule<"noOffsetPagination", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
617
427
|
name: string;
|
|
618
428
|
};
|
|
619
|
-
"
|
|
620
|
-
requireSemanticTokens?: boolean;
|
|
621
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
429
|
+
"no-positional-tuple-return": _typescript_eslint_utils_ts_eslint.RuleModule<"noPositionalTupleReturn", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
622
430
|
name: string;
|
|
623
431
|
};
|
|
624
|
-
"
|
|
432
|
+
"no-raw-env": _typescript_eslint_utils_ts_eslint.RuleModule<"noRawEnv", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
625
433
|
name: string;
|
|
626
434
|
};
|
|
627
|
-
"
|
|
435
|
+
"no-raw-fetch-outside-clients": _typescript_eslint_utils_ts_eslint.RuleModule<"rawFetch", readonly [RuleOptions$1?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
628
436
|
name: string;
|
|
629
437
|
};
|
|
630
|
-
"
|
|
438
|
+
"no-repeated-string-literal": _typescript_eslint_utils_ts_eslint.RuleModule<"noRepeatedStringLiteral", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
631
439
|
name: string;
|
|
632
440
|
};
|
|
633
|
-
"
|
|
634
|
-
convention?: "prefix" | "suffix" | "either";
|
|
635
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
441
|
+
"no-restated-comment": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesLineBelow", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
636
442
|
name: string;
|
|
637
443
|
};
|
|
638
|
-
"no-
|
|
444
|
+
"no-restated-jsdoc": _typescript_eslint_utils_ts_eslint.RuleModule<"restatesSignature" | "deleteBlock", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
639
445
|
name: string;
|
|
640
446
|
};
|
|
641
|
-
"no-
|
|
447
|
+
"no-secret-in-log": _typescript_eslint_utils_ts_eslint.RuleModule<"noSecretInLog" | "noRawBodyInLog", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
642
448
|
name: string;
|
|
643
449
|
};
|
|
644
|
-
"no-
|
|
450
|
+
"no-select-star": _typescript_eslint_utils_ts_eslint.RuleModule<"noSelectStar", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
645
451
|
name: string;
|
|
646
452
|
};
|
|
647
|
-
"no-
|
|
453
|
+
"no-sentinel-return-on-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"noSentinelReturn", readonly [LoggingOptions?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
648
454
|
name: string;
|
|
649
455
|
};
|
|
650
|
-
"
|
|
651
|
-
ignoreFields?: readonly string[];
|
|
652
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
456
|
+
"no-silent-promise-catch": _typescript_eslint_utils_ts_eslint.RuleModule<"silentCatch", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
653
457
|
name: string;
|
|
654
458
|
};
|
|
655
|
-
"
|
|
459
|
+
"no-sleep-in-test-body": _typescript_eslint_utils_ts_eslint.RuleModule<"noSleepInTestBody", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
656
460
|
name: string;
|
|
657
461
|
};
|
|
658
|
-
"
|
|
659
|
-
ignoreTypeNames?: readonly string[];
|
|
660
|
-
requireIdenticalShape?: boolean;
|
|
661
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
462
|
+
"no-storage-in-stateless-modules": _typescript_eslint_utils_ts_eslint.RuleModule<"storageInStatelessModule", readonly [RuleOptions$2?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
662
463
|
name: string;
|
|
663
464
|
};
|
|
664
|
-
"no-
|
|
465
|
+
"no-string-concat-in-loop": _typescript_eslint_utils_ts_eslint.RuleModule<"noStringConcatInLoop", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
665
466
|
name: string;
|
|
666
467
|
};
|
|
667
|
-
"
|
|
668
|
-
allowIn?: readonly string[];
|
|
669
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
468
|
+
"no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
670
469
|
name: string;
|
|
671
470
|
};
|
|
672
|
-
"no-
|
|
471
|
+
"no-trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
673
472
|
name: string;
|
|
674
473
|
};
|
|
675
|
-
"no-
|
|
474
|
+
"no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<RuleOptions$3>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
676
475
|
name: string;
|
|
677
476
|
};
|
|
678
|
-
"no-
|
|
477
|
+
"no-unnecessary-use-client": _typescript_eslint_utils_ts_eslint.RuleModule<"unnecessaryUseClient", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
679
478
|
name: string;
|
|
680
479
|
};
|
|
681
|
-
"no-
|
|
480
|
+
"no-unsafe-mock-casting": _typescript_eslint_utils_ts_eslint.RuleModule<"unsafeMockCast", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
682
481
|
name: string;
|
|
683
482
|
};
|
|
684
|
-
"no-
|
|
483
|
+
"no-zod-native-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"nativeEnum" | "enumOfTsEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
685
484
|
name: string;
|
|
686
485
|
};
|
|
687
|
-
"
|
|
688
|
-
allowIn?: readonly string[];
|
|
689
|
-
checkClientModules?: boolean;
|
|
690
|
-
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
486
|
+
"prefer-constant-time-secret-compare": _typescript_eslint_utils_ts_eslint.RuleModule<"preferConstantTimeSecretCompare", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
691
487
|
name: string;
|
|
692
488
|
};
|
|
693
|
-
"
|
|
489
|
+
"prefer-discriminated-union": _typescript_eslint_utils_ts_eslint.RuleModule<"preferDiscriminatedUnion", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
694
490
|
name: string;
|
|
695
491
|
};
|
|
696
|
-
"prefer-
|
|
492
|
+
"prefer-module-level-constant": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistCollection" | "hoistRegex", readonly [{
|
|
493
|
+
minElements?: number;
|
|
494
|
+
checkRegex?: boolean;
|
|
495
|
+
ignoreTestFiles?: boolean;
|
|
496
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
697
497
|
name: string;
|
|
698
498
|
};
|
|
699
|
-
"
|
|
499
|
+
"prefer-module-level-schema": _typescript_eslint_utils_ts_eslint.RuleModule<"hoistSchema", readonly [{
|
|
500
|
+
factories?: readonly string[];
|
|
501
|
+
ignoreTestFiles?: boolean;
|
|
502
|
+
minProperties?: number;
|
|
503
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
700
504
|
name: string;
|
|
701
505
|
};
|
|
702
|
-
"
|
|
506
|
+
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
703
507
|
name: string;
|
|
704
508
|
};
|
|
705
|
-
"
|
|
509
|
+
"prefer-schema-for-api-payload": _typescript_eslint_utils_ts_eslint.RuleModule<"unparsedJsonAccess", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
706
510
|
name: string;
|
|
707
511
|
};
|
|
708
|
-
"
|
|
512
|
+
"prefer-semantic-colors": _typescript_eslint_utils_ts_eslint.RuleModule<"rawPalette" | "arbitraryColor" | "inlineColor", readonly [{
|
|
513
|
+
requireSemanticTokens?: boolean;
|
|
514
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
709
515
|
name: string;
|
|
710
516
|
};
|
|
711
|
-
"
|
|
517
|
+
"prefer-server-actions": _typescript_eslint_utils_ts_eslint.RuleModule<"preferServerAction", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
712
518
|
name: string;
|
|
713
519
|
};
|
|
714
|
-
"prefer-
|
|
715
|
-
|
|
716
|
-
checkRegex?: boolean;
|
|
717
|
-
ignoreTestFiles?: boolean;
|
|
520
|
+
"prefer-string-literal-union": _typescript_eslint_utils_ts_eslint.RuleModule<"bareChoiceField" | "comparisonCluster", readonly [{
|
|
521
|
+
ignoreFields?: readonly string[];
|
|
718
522
|
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
719
523
|
name: string;
|
|
720
524
|
};
|
|
721
|
-
"
|
|
525
|
+
"prefer-whole-object-assertion": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
722
526
|
name: string;
|
|
723
527
|
};
|
|
724
|
-
"
|
|
528
|
+
"prefer-zod-enum": _typescript_eslint_utils_ts_eslint.RuleModule<"preferEnum", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
725
529
|
name: string;
|
|
726
530
|
};
|
|
727
|
-
"
|
|
531
|
+
"prefer-zod-infer": _typescript_eslint_utils_ts_eslint.RuleModule<"handWrittenTwin", readonly [{
|
|
532
|
+
ignoreTypeNames?: readonly string[];
|
|
533
|
+
requireIdenticalShape?: boolean;
|
|
534
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
728
535
|
name: string;
|
|
729
536
|
};
|
|
730
|
-
"
|
|
537
|
+
"require-assert-never": _typescript_eslint_utils_ts_eslint.RuleModule<"missingAssertNever", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
731
538
|
name: string;
|
|
732
539
|
};
|
|
733
|
-
"
|
|
540
|
+
"require-fetch-timeout": _typescript_eslint_utils_ts_eslint.RuleModule<"missingSignal", readonly [{
|
|
541
|
+
allowIn?: readonly string[];
|
|
542
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
734
543
|
name: string;
|
|
735
544
|
};
|
|
736
545
|
"require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
737
546
|
name: string;
|
|
738
547
|
};
|
|
739
|
-
"
|
|
548
|
+
"require-zod-form-validation": _typescript_eslint_utils_ts_eslint.RuleModule<"missingZodValidation", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
740
549
|
name: string;
|
|
741
550
|
};
|
|
742
|
-
"
|
|
551
|
+
"store-insert-requires-on-conflict": _typescript_eslint_utils_ts_eslint.RuleModule<"storeInsertRequiresOnConflict", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
743
552
|
name: string;
|
|
744
553
|
};
|
|
745
|
-
"
|
|
554
|
+
"zod-naming-convention": _typescript_eslint_utils_ts_eslint.RuleModule<"zPrefix" | "schemaSuffix" | "zodSchemaName", readonly [{
|
|
555
|
+
convention?: "prefix" | "suffix" | "either";
|
|
556
|
+
}?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
746
557
|
name: string;
|
|
747
558
|
};
|
|
748
559
|
};
|
|
@@ -752,4 +563,4 @@ declare const plugin: {
|
|
|
752
563
|
};
|
|
753
564
|
};
|
|
754
565
|
|
|
755
|
-
export { plugin as default, recommendedRules, rules, strictRules };
|
|
566
|
+
export { plugin as default, recommendedRules, renamedRules, rules, strictRules };
|