@sarj/eslint-plugin 4.2.0 → 5.1.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 +7 -3
- package/dist/index.cjs +1493 -849
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +84 -26
- package/dist/index.d.ts +84 -26
- package/dist/index.js +1507 -863
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
import * as _typescript_eslint_utils_ts_eslint from '@typescript-eslint/utils/ts-eslint';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview An object type whose member comments mostly re-spell the
|
|
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.
|
|
20
|
+
*
|
|
21
|
+
* Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-type-member-comment-wall.test.ts
|
|
22
|
+
* Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-type-member-comment-wall.md
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/** Every threshold this rule applies; each is documented at `DEFAULTS`. */
|
|
26
|
+
interface RuleOptions$3 {
|
|
27
|
+
readonly minCommentedMembers: number;
|
|
28
|
+
readonly minCommentedRatio: number;
|
|
29
|
+
readonly minRestatedRatio: number;
|
|
30
|
+
readonly maxNovelWords: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
3
33
|
/**
|
|
4
34
|
* @fileoverview Keep modules that are stateless by design free of private
|
|
5
35
|
* storage.
|
|
@@ -86,8 +116,10 @@ interface RuleOptions$2 {
|
|
|
86
116
|
* "allow": ["[\\\\/]lib[\\\\/]api[\\\\/]", "-gateway\\\\.ts$"]
|
|
87
117
|
* }]
|
|
88
118
|
*
|
|
89
|
-
* Supplying `allow` REPLACES the
|
|
90
|
-
*
|
|
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.
|
|
91
123
|
*
|
|
92
124
|
* CORPUS SWEEP (2220 files, zod / TanStack Query / react-router / swr /
|
|
93
125
|
* zustand, 2026-07): 96 raw hits. The defaults missed three path conventions
|
|
@@ -103,6 +135,44 @@ interface RuleOptions$2 {
|
|
|
103
135
|
* - `__testfixtures__/` — 8 hits from jscodeshift fixtures such as
|
|
104
136
|
* `query/packages/query-codemods/src/v5/remove-overloads/__testfixtures__/bug-reports.input.tsx`,
|
|
105
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/`.
|
|
106
176
|
*/
|
|
107
177
|
|
|
108
178
|
interface RuleOptions$1 {
|
|
@@ -197,9 +267,6 @@ interface LoggingOptions {
|
|
|
197
267
|
}
|
|
198
268
|
|
|
199
269
|
declare const rules: {
|
|
200
|
-
"ban-loose-type-guards-in-tests": _typescript_eslint_utils_ts_eslint.RuleModule<"banLooseTypeGuardsInTests", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
201
|
-
name: string;
|
|
202
|
-
};
|
|
203
270
|
"enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
204
271
|
name: string;
|
|
205
272
|
};
|
|
@@ -352,25 +419,24 @@ declare const rules: {
|
|
|
352
419
|
"trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
353
420
|
name: string;
|
|
354
421
|
};
|
|
422
|
+
"no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<RuleOptions$3>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
423
|
+
name: string;
|
|
424
|
+
};
|
|
355
425
|
"no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
356
426
|
name: string;
|
|
357
427
|
};
|
|
358
428
|
"require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
359
429
|
name: string;
|
|
360
430
|
};
|
|
361
|
-
"strict-test-assertions": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener
|
|
362
|
-
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
431
|
+
"strict-test-assertions": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
363
432
|
name: string;
|
|
364
433
|
};
|
|
365
|
-
"
|
|
434
|
+
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
366
435
|
name: string;
|
|
367
436
|
};
|
|
368
437
|
"no-async-callback-in-waitfor": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
369
438
|
name: string;
|
|
370
439
|
};
|
|
371
|
-
"prefer-setup-file-mocks": _typescript_eslint_utils_ts_eslint.RuleModule<"preferSetupFileMocks", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
372
|
-
name: string;
|
|
373
|
-
};
|
|
374
440
|
};
|
|
375
441
|
declare const plugin: {
|
|
376
442
|
meta: {
|
|
@@ -378,9 +444,6 @@ declare const plugin: {
|
|
|
378
444
|
version: string;
|
|
379
445
|
};
|
|
380
446
|
rules: {
|
|
381
|
-
"ban-loose-type-guards-in-tests": _typescript_eslint_utils_ts_eslint.RuleModule<"banLooseTypeGuardsInTests", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
382
|
-
name: string;
|
|
383
|
-
};
|
|
384
447
|
"enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
385
448
|
name: string;
|
|
386
449
|
};
|
|
@@ -533,25 +596,24 @@ declare const plugin: {
|
|
|
533
596
|
"trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
534
597
|
name: string;
|
|
535
598
|
};
|
|
599
|
+
"no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<RuleOptions$3>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
600
|
+
name: string;
|
|
601
|
+
};
|
|
536
602
|
"no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
537
603
|
name: string;
|
|
538
604
|
};
|
|
539
605
|
"require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
540
606
|
name: string;
|
|
541
607
|
};
|
|
542
|
-
"strict-test-assertions": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener
|
|
543
|
-
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
608
|
+
"strict-test-assertions": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
544
609
|
name: string;
|
|
545
610
|
};
|
|
546
|
-
"
|
|
611
|
+
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
547
612
|
name: string;
|
|
548
613
|
};
|
|
549
614
|
"no-async-callback-in-waitfor": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
550
615
|
name: string;
|
|
551
616
|
};
|
|
552
|
-
"prefer-setup-file-mocks": _typescript_eslint_utils_ts_eslint.RuleModule<"preferSetupFileMocks", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
553
|
-
name: string;
|
|
554
|
-
};
|
|
555
617
|
};
|
|
556
618
|
configs: {
|
|
557
619
|
recommended: {
|
|
@@ -560,7 +622,6 @@ declare const plugin: {
|
|
|
560
622
|
"@sarj/zod-naming-convention": string;
|
|
561
623
|
"@sarj/require-assert-never": string;
|
|
562
624
|
"@sarj/require-zod-form-validation": string;
|
|
563
|
-
"@sarj/ban-loose-type-guards-in-tests": string;
|
|
564
625
|
"@sarj/enforce-file-structure": string;
|
|
565
626
|
"@sarj/no-client-side-data-fetching": string;
|
|
566
627
|
"@sarj/prefer-server-actions": string;
|
|
@@ -600,12 +661,11 @@ declare const plugin: {
|
|
|
600
661
|
"@sarj/no-restated-comment": string;
|
|
601
662
|
"@sarj/jsdoc-restates-signature": string;
|
|
602
663
|
"@sarj/trailing-value-narration": string;
|
|
664
|
+
"@sarj/no-type-member-comment-wall": string;
|
|
603
665
|
"@sarj/no-tautological-expect": string;
|
|
604
666
|
"@sarj/require-interface-for-injected-service": string;
|
|
605
667
|
"@sarj/prefer-non-nullable-collection": string;
|
|
606
|
-
"@sarj/no-implicit-attribute-access": string;
|
|
607
668
|
"@sarj/no-async-callback-in-waitfor": string;
|
|
608
|
-
"@sarj/prefer-setup-file-mocks": string;
|
|
609
669
|
};
|
|
610
670
|
};
|
|
611
671
|
strict: {
|
|
@@ -614,7 +674,6 @@ declare const plugin: {
|
|
|
614
674
|
"@sarj/zod-naming-convention": string;
|
|
615
675
|
"@sarj/require-assert-never": string;
|
|
616
676
|
"@sarj/require-zod-form-validation": string;
|
|
617
|
-
"@sarj/ban-loose-type-guards-in-tests": string;
|
|
618
677
|
"@sarj/enforce-file-structure": string;
|
|
619
678
|
"@sarj/no-raw-env": string;
|
|
620
679
|
"@sarj/no-enum": string;
|
|
@@ -658,12 +717,11 @@ declare const plugin: {
|
|
|
658
717
|
"@sarj/no-restated-comment": string;
|
|
659
718
|
"@sarj/jsdoc-restates-signature": string;
|
|
660
719
|
"@sarj/trailing-value-narration": string;
|
|
720
|
+
"@sarj/no-type-member-comment-wall": string;
|
|
661
721
|
"@sarj/no-tautological-expect": string;
|
|
662
722
|
"@sarj/require-interface-for-injected-service": string;
|
|
663
723
|
"@sarj/prefer-non-nullable-collection": string;
|
|
664
|
-
"@sarj/no-implicit-attribute-access": string;
|
|
665
724
|
"@sarj/no-async-callback-in-waitfor": string;
|
|
666
|
-
"@sarj/prefer-setup-file-mocks": string;
|
|
667
725
|
};
|
|
668
726
|
};
|
|
669
727
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
import * as _typescript_eslint_utils_ts_eslint from '@typescript-eslint/utils/ts-eslint';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* @fileoverview An object type whose member comments mostly re-spell the
|
|
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.
|
|
20
|
+
*
|
|
21
|
+
* Examples: https://github.com/sarj-ai/standards/blob/main/packages/typescript/tests/rules/no-type-member-comment-wall.test.ts
|
|
22
|
+
* Evidence: https://github.com/sarj-ai/standards/blob/main/docs/rules/no-type-member-comment-wall.md
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/** Every threshold this rule applies; each is documented at `DEFAULTS`. */
|
|
26
|
+
interface RuleOptions$3 {
|
|
27
|
+
readonly minCommentedMembers: number;
|
|
28
|
+
readonly minCommentedRatio: number;
|
|
29
|
+
readonly minRestatedRatio: number;
|
|
30
|
+
readonly maxNovelWords: number;
|
|
31
|
+
}
|
|
32
|
+
|
|
3
33
|
/**
|
|
4
34
|
* @fileoverview Keep modules that are stateless by design free of private
|
|
5
35
|
* storage.
|
|
@@ -86,8 +116,10 @@ interface RuleOptions$2 {
|
|
|
86
116
|
* "allow": ["[\\\\/]lib[\\\\/]api[\\\\/]", "-gateway\\\\.ts$"]
|
|
87
117
|
* }]
|
|
88
118
|
*
|
|
89
|
-
* Supplying `allow` REPLACES the
|
|
90
|
-
*
|
|
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.
|
|
91
123
|
*
|
|
92
124
|
* CORPUS SWEEP (2220 files, zod / TanStack Query / react-router / swr /
|
|
93
125
|
* zustand, 2026-07): 96 raw hits. The defaults missed three path conventions
|
|
@@ -103,6 +135,44 @@ interface RuleOptions$2 {
|
|
|
103
135
|
* - `__testfixtures__/` — 8 hits from jscodeshift fixtures such as
|
|
104
136
|
* `query/packages/query-codemods/src/v5/remove-overloads/__testfixtures__/bug-reports.input.tsx`,
|
|
105
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/`.
|
|
106
176
|
*/
|
|
107
177
|
|
|
108
178
|
interface RuleOptions$1 {
|
|
@@ -197,9 +267,6 @@ interface LoggingOptions {
|
|
|
197
267
|
}
|
|
198
268
|
|
|
199
269
|
declare const rules: {
|
|
200
|
-
"ban-loose-type-guards-in-tests": _typescript_eslint_utils_ts_eslint.RuleModule<"banLooseTypeGuardsInTests", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
201
|
-
name: string;
|
|
202
|
-
};
|
|
203
270
|
"enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
204
271
|
name: string;
|
|
205
272
|
};
|
|
@@ -352,25 +419,24 @@ declare const rules: {
|
|
|
352
419
|
"trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
353
420
|
name: string;
|
|
354
421
|
};
|
|
422
|
+
"no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<RuleOptions$3>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
423
|
+
name: string;
|
|
424
|
+
};
|
|
355
425
|
"no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
356
426
|
name: string;
|
|
357
427
|
};
|
|
358
428
|
"require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
359
429
|
name: string;
|
|
360
430
|
};
|
|
361
|
-
"strict-test-assertions": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener
|
|
362
|
-
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
431
|
+
"strict-test-assertions": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
363
432
|
name: string;
|
|
364
433
|
};
|
|
365
|
-
"
|
|
434
|
+
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
366
435
|
name: string;
|
|
367
436
|
};
|
|
368
437
|
"no-async-callback-in-waitfor": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
369
438
|
name: string;
|
|
370
439
|
};
|
|
371
|
-
"prefer-setup-file-mocks": _typescript_eslint_utils_ts_eslint.RuleModule<"preferSetupFileMocks", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
372
|
-
name: string;
|
|
373
|
-
};
|
|
374
440
|
};
|
|
375
441
|
declare const plugin: {
|
|
376
442
|
meta: {
|
|
@@ -378,9 +444,6 @@ declare const plugin: {
|
|
|
378
444
|
version: string;
|
|
379
445
|
};
|
|
380
446
|
rules: {
|
|
381
|
-
"ban-loose-type-guards-in-tests": _typescript_eslint_utils_ts_eslint.RuleModule<"banLooseTypeGuardsInTests", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
382
|
-
name: string;
|
|
383
|
-
};
|
|
384
447
|
"enforce-file-structure": _typescript_eslint_utils_ts_eslint.RuleModule<"importsFirst" | "useServerDirective", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
385
448
|
name: string;
|
|
386
449
|
};
|
|
@@ -533,25 +596,24 @@ declare const plugin: {
|
|
|
533
596
|
"trailing-value-narration": _typescript_eslint_utils_ts_eslint.RuleModule<"narratesValue", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
534
597
|
name: string;
|
|
535
598
|
};
|
|
599
|
+
"no-type-member-comment-wall": _typescript_eslint_utils_ts_eslint.RuleModule<"commentWall", readonly [Partial<RuleOptions$3>?], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
600
|
+
name: string;
|
|
601
|
+
};
|
|
536
602
|
"no-tautological-expect": _typescript_eslint_utils_ts_eslint.RuleModule<"tautologicalComparison" | "tautologicalMatcher", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
537
603
|
name: string;
|
|
538
604
|
};
|
|
539
605
|
"require-interface-for-injected-service": _typescript_eslint_utils_ts_eslint.RuleModule<"requireInterface", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
540
606
|
name: string;
|
|
541
607
|
};
|
|
542
|
-
"strict-test-assertions": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener
|
|
543
|
-
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
608
|
+
"strict-test-assertions": _typescript_eslint_utils_ts_eslint.RuleModule<"combineAssertions" | "assertArrayOnce", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
544
609
|
name: string;
|
|
545
610
|
};
|
|
546
|
-
"
|
|
611
|
+
"prefer-non-nullable-collection": _typescript_eslint_utils_ts_eslint.RuleModule<"preferNonNullableCollection", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
547
612
|
name: string;
|
|
548
613
|
};
|
|
549
614
|
"no-async-callback-in-waitfor": _typescript_eslint_utils_ts_eslint.RuleModule<"noAsyncCallbackInWaitFor", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
550
615
|
name: string;
|
|
551
616
|
};
|
|
552
|
-
"prefer-setup-file-mocks": _typescript_eslint_utils_ts_eslint.RuleModule<"preferSetupFileMocks", readonly [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener> & {
|
|
553
|
-
name: string;
|
|
554
|
-
};
|
|
555
617
|
};
|
|
556
618
|
configs: {
|
|
557
619
|
recommended: {
|
|
@@ -560,7 +622,6 @@ declare const plugin: {
|
|
|
560
622
|
"@sarj/zod-naming-convention": string;
|
|
561
623
|
"@sarj/require-assert-never": string;
|
|
562
624
|
"@sarj/require-zod-form-validation": string;
|
|
563
|
-
"@sarj/ban-loose-type-guards-in-tests": string;
|
|
564
625
|
"@sarj/enforce-file-structure": string;
|
|
565
626
|
"@sarj/no-client-side-data-fetching": string;
|
|
566
627
|
"@sarj/prefer-server-actions": string;
|
|
@@ -600,12 +661,11 @@ declare const plugin: {
|
|
|
600
661
|
"@sarj/no-restated-comment": string;
|
|
601
662
|
"@sarj/jsdoc-restates-signature": string;
|
|
602
663
|
"@sarj/trailing-value-narration": string;
|
|
664
|
+
"@sarj/no-type-member-comment-wall": string;
|
|
603
665
|
"@sarj/no-tautological-expect": string;
|
|
604
666
|
"@sarj/require-interface-for-injected-service": string;
|
|
605
667
|
"@sarj/prefer-non-nullable-collection": string;
|
|
606
|
-
"@sarj/no-implicit-attribute-access": string;
|
|
607
668
|
"@sarj/no-async-callback-in-waitfor": string;
|
|
608
|
-
"@sarj/prefer-setup-file-mocks": string;
|
|
609
669
|
};
|
|
610
670
|
};
|
|
611
671
|
strict: {
|
|
@@ -614,7 +674,6 @@ declare const plugin: {
|
|
|
614
674
|
"@sarj/zod-naming-convention": string;
|
|
615
675
|
"@sarj/require-assert-never": string;
|
|
616
676
|
"@sarj/require-zod-form-validation": string;
|
|
617
|
-
"@sarj/ban-loose-type-guards-in-tests": string;
|
|
618
677
|
"@sarj/enforce-file-structure": string;
|
|
619
678
|
"@sarj/no-raw-env": string;
|
|
620
679
|
"@sarj/no-enum": string;
|
|
@@ -658,12 +717,11 @@ declare const plugin: {
|
|
|
658
717
|
"@sarj/no-restated-comment": string;
|
|
659
718
|
"@sarj/jsdoc-restates-signature": string;
|
|
660
719
|
"@sarj/trailing-value-narration": string;
|
|
720
|
+
"@sarj/no-type-member-comment-wall": string;
|
|
661
721
|
"@sarj/no-tautological-expect": string;
|
|
662
722
|
"@sarj/require-interface-for-injected-service": string;
|
|
663
723
|
"@sarj/prefer-non-nullable-collection": string;
|
|
664
|
-
"@sarj/no-implicit-attribute-access": string;
|
|
665
724
|
"@sarj/no-async-callback-in-waitfor": string;
|
|
666
|
-
"@sarj/prefer-setup-file-mocks": string;
|
|
667
725
|
};
|
|
668
726
|
};
|
|
669
727
|
};
|