oxlint-plugin-react-doctor 0.9.4 → 0.9.5-dev.4b03b15
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/core-NYcNjo1f.d.ts +1371 -0
- package/dist/core.d.ts +2 -1045
- package/dist/core.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +14 -14
- package/package.json +1 -1
- package/dist/react-native-dependency-names-DrsRME-d.d.ts +0 -330
|
@@ -0,0 +1,1371 @@
|
|
|
1
|
+
import { StaticImport } from "oxc-parser";
|
|
2
|
+
import { TSESTree } from "@typescript-eslint/types";
|
|
3
|
+
|
|
4
|
+
//#region src/plugin/utils/capability.d.ts
|
|
5
|
+
declare const FRAMEWORK_TOKENS: readonly ["nextjs", "astro", "vite", "cra", "remix", "gatsby", "expo", "react-native", "tanstack-start", "preact", "unknown"];
|
|
6
|
+
type FrameworkToken = (typeof FRAMEWORK_TOKENS)[number];
|
|
7
|
+
type Capability = FrameworkToken | "react" | "remotion" | "pure-preact" | "react-native" | "server-actions" | "ssr" | "client-only" | "expo:54" | "nextjs:static-export" | "nextjs:15" | "nextjs:16" | "tailwind" | "tailwind:3.4" | "tailwind:4" | "zod" | "zod:4" | "mobx" | "mobx-react" | "mobx-react-lite" | "mobx-react-binding" | "mobx-react-binding-observer-memo-guard" | "mobx-react-observer-memo-guard" | "mobx-react-lite-observer-memo-guard" | "mobx-state-tree" | "mobx-react-observer" | "zustand" | "typescript" | "react-compiler" | "reanimated" | "reanimated:4" | "tanstack-query" | "valtio" | "i18n" | "styled-components" | "styled-components:6" | "three" | "r3f" | "react-router" | "react-router-framework" | "react-router:6.4" | "react-router:6.7" | "react-router:6.9" | "react-router:6.19" | "react-router:7" | "react-router:7.8" | "react-router:7.9" | "react-router:7.10" | "react-router:7.15" | "react-router:8" | "pre-es2023" | "target-blank-needs-explicit-protection" | "target-blank-needs-noreferrer" | `react:${number}` | `preact:${number}` | `remotion:${number}` | `valtio:${number}` | `mobx:${number}` | `zustand:${number}` | `three:${number}` | `r3f:${number}`;
|
|
8
|
+
type CapabilityQuery = (capability: Capability) => boolean;
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region src/plugin/utils/file-scan.d.ts
|
|
11
|
+
interface ScannedFile {
|
|
12
|
+
readonly absolutePath: string;
|
|
13
|
+
readonly relativePath: string;
|
|
14
|
+
readonly content: string;
|
|
15
|
+
readonly isGeneratedBundle: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface ScanFinding {
|
|
18
|
+
readonly message: string;
|
|
19
|
+
readonly line: number;
|
|
20
|
+
readonly column: number;
|
|
21
|
+
readonly severity?: "error" | "warn";
|
|
22
|
+
readonly title?: string;
|
|
23
|
+
readonly help?: string;
|
|
24
|
+
}
|
|
25
|
+
interface FileScan {
|
|
26
|
+
(file: ScannedFile): ScanFinding[];
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/plugin/utils/es-tree-node.d.ts
|
|
30
|
+
type WithLooseParent<NodeType> = NodeType extends NodeType ? Omit<NodeType, "parent"> & {
|
|
31
|
+
parent?: EsTreeNode | null;
|
|
32
|
+
} : never;
|
|
33
|
+
type EsTreeNode = WithLooseParent<TSESTree.Node>;
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region src/plugin/utils/report-descriptor.d.ts
|
|
36
|
+
interface ReportDescriptor {
|
|
37
|
+
node: EsTreeNode;
|
|
38
|
+
message: string;
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region src/plugin/semantic/control-flow-graph.d.ts
|
|
42
|
+
type CfgEdgeKind = "uncond" | "cond" | "throw";
|
|
43
|
+
interface CfgEdge {
|
|
44
|
+
readonly from: BasicBlock;
|
|
45
|
+
readonly to: BasicBlock;
|
|
46
|
+
readonly kind: CfgEdgeKind;
|
|
47
|
+
}
|
|
48
|
+
interface BasicBlock {
|
|
49
|
+
readonly id: number;
|
|
50
|
+
readonly nodes: EsTreeNode[];
|
|
51
|
+
readonly successors: CfgEdge[];
|
|
52
|
+
readonly predecessors: CfgEdge[];
|
|
53
|
+
}
|
|
54
|
+
interface FunctionCfg {
|
|
55
|
+
readonly owner: EsTreeNode;
|
|
56
|
+
readonly entry: BasicBlock;
|
|
57
|
+
readonly exit: BasicBlock;
|
|
58
|
+
readonly blocks: BasicBlock[];
|
|
59
|
+
readonly blockOf: (node: EsTreeNode) => BasicBlock | null;
|
|
60
|
+
}
|
|
61
|
+
interface ControlFlowAnalysis {
|
|
62
|
+
readonly cfgFor: (functionLike: EsTreeNode) => FunctionCfg | null;
|
|
63
|
+
readonly enclosingFunction: (node: EsTreeNode) => EsTreeNode | null;
|
|
64
|
+
readonly isUnconditionalFromEntry: (node: EsTreeNode) => boolean;
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region src/plugin/semantic/scope-analysis.d.ts
|
|
68
|
+
type SymbolKind = "var" | "let" | "const" | "using" | "function" | "class" | "parameter" | "import" | "ts-import-equals" | "ts-enum" | "ts-type-alias" | "ts-interface" | "ts-module" | "catch-clause-parameter";
|
|
69
|
+
type ScopeKind = "module" | "function" | "arrow-function" | "method" | "block" | "class" | "catch" | "for" | "switch" | "with" | "ts-module" | "ts-enum";
|
|
70
|
+
interface SymbolDescriptor {
|
|
71
|
+
readonly id: number;
|
|
72
|
+
readonly name: string;
|
|
73
|
+
readonly kind: SymbolKind;
|
|
74
|
+
readonly bindingIdentifier: EsTreeNode;
|
|
75
|
+
readonly declarationNode: EsTreeNode;
|
|
76
|
+
readonly scope: ScopeDescriptor;
|
|
77
|
+
readonly initializer: EsTreeNode | null;
|
|
78
|
+
readonly references: ReferenceDescriptor[];
|
|
79
|
+
}
|
|
80
|
+
type ReferenceFlag = "read" | "write" | "read-write";
|
|
81
|
+
interface ReferenceDescriptor {
|
|
82
|
+
readonly id: number;
|
|
83
|
+
readonly identifier: EsTreeNode;
|
|
84
|
+
resolvedSymbol: SymbolDescriptor | null;
|
|
85
|
+
readonly flag: ReferenceFlag;
|
|
86
|
+
readonly scope: ScopeDescriptor;
|
|
87
|
+
}
|
|
88
|
+
interface ScopeDescriptor {
|
|
89
|
+
readonly id: number;
|
|
90
|
+
readonly kind: ScopeKind;
|
|
91
|
+
readonly node: EsTreeNode;
|
|
92
|
+
readonly parent: ScopeDescriptor | null;
|
|
93
|
+
readonly children: ScopeDescriptor[];
|
|
94
|
+
readonly symbols: SymbolDescriptor[];
|
|
95
|
+
readonly references: ReferenceDescriptor[];
|
|
96
|
+
readonly symbolsByName: Map<string, SymbolDescriptor>;
|
|
97
|
+
}
|
|
98
|
+
interface ScopeAnalysis {
|
|
99
|
+
readonly rootScope: ScopeDescriptor;
|
|
100
|
+
readonly scopeFor: (node: EsTreeNode) => ScopeDescriptor;
|
|
101
|
+
readonly ownScopeFor: (node: EsTreeNode) => ScopeDescriptor | null;
|
|
102
|
+
readonly symbolFor: (identifier: EsTreeNode) => SymbolDescriptor | null;
|
|
103
|
+
readonly referenceFor: (identifier: EsTreeNode) => ReferenceDescriptor | null;
|
|
104
|
+
readonly isGlobalReference: (identifier: EsTreeNode) => boolean;
|
|
105
|
+
}
|
|
106
|
+
//#endregion
|
|
107
|
+
//#region src/plugin/utils/rule-context.d.ts
|
|
108
|
+
interface BaseRuleSourceCode {
|
|
109
|
+
readonly ast?: EsTreeNode;
|
|
110
|
+
}
|
|
111
|
+
interface BaseRuleContext {
|
|
112
|
+
report: (descriptor: ReportDescriptor) => void;
|
|
113
|
+
readonly filename?: string;
|
|
114
|
+
/**
|
|
115
|
+
* @deprecated Rules use `context.filename`. Read only as a fallback by
|
|
116
|
+
* `wrapWithSemanticContext`; ESLint implements it as a `this`-bound class
|
|
117
|
+
* method, so it must be called on the host context, never a detached
|
|
118
|
+
* reference.
|
|
119
|
+
*/
|
|
120
|
+
getFilename?: () => string | undefined;
|
|
121
|
+
readonly settings?: Readonly<Record<string, unknown>>;
|
|
122
|
+
readonly sourceCode?: BaseRuleSourceCode;
|
|
123
|
+
}
|
|
124
|
+
interface RuleContext extends Omit<BaseRuleContext, "getFilename"> {
|
|
125
|
+
readonly scopes: ScopeAnalysis;
|
|
126
|
+
readonly cfg: ControlFlowAnalysis;
|
|
127
|
+
}
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region src/plugin/utils/rule-visitors.d.ts
|
|
130
|
+
interface RuleVisitors {
|
|
131
|
+
[selector: string]: ((node: any) => void) | (() => void);
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
//#region src/plugin/utils/rule.d.ts
|
|
135
|
+
type RuleSeverity = "error" | "warn";
|
|
136
|
+
type RuleFramework = "global" | "nextjs" | "react-native" | "tanstack-start" | "tanstack-query" | "preact";
|
|
137
|
+
interface Rule {
|
|
138
|
+
id: string;
|
|
139
|
+
title?: string;
|
|
140
|
+
severity: RuleSeverity;
|
|
141
|
+
category?: string;
|
|
142
|
+
framework?: RuleFramework;
|
|
143
|
+
requires?: ReadonlyArray<Capability>;
|
|
144
|
+
minimumInkVersion?: string;
|
|
145
|
+
disabledWhen?: ReadonlyArray<Capability>;
|
|
146
|
+
tags?: ReadonlyArray<string>;
|
|
147
|
+
matchByOccurrence?: boolean;
|
|
148
|
+
defaultEnabled?: boolean;
|
|
149
|
+
lifecycle?: "retired";
|
|
150
|
+
scan?: FileScan;
|
|
151
|
+
committedFilesOnly?: boolean;
|
|
152
|
+
recommendation?: string;
|
|
153
|
+
recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
154
|
+
create: (context: RuleContext) => RuleVisitors;
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
157
|
+
//#region src/plugin/utils/core-rule-metadata.d.ts
|
|
158
|
+
interface CoreRuleMetadata {
|
|
159
|
+
readonly id: string;
|
|
160
|
+
readonly title?: string;
|
|
161
|
+
readonly severity: RuleSeverity;
|
|
162
|
+
readonly recommendation?: string;
|
|
163
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
164
|
+
readonly category: string;
|
|
165
|
+
readonly framework: RuleFramework;
|
|
166
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
167
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
168
|
+
readonly tags?: ReadonlyArray<string>;
|
|
169
|
+
readonly defaultEnabled?: boolean;
|
|
170
|
+
readonly matchByOccurrence?: boolean;
|
|
171
|
+
readonly isScanRule: boolean;
|
|
172
|
+
}
|
|
173
|
+
interface CoreRuleRegistryEntry {
|
|
174
|
+
readonly key: string;
|
|
175
|
+
readonly id: string;
|
|
176
|
+
readonly source: "react-doctor";
|
|
177
|
+
readonly originallyExternal: boolean;
|
|
178
|
+
readonly rule: CoreRuleMetadata;
|
|
179
|
+
}
|
|
180
|
+
//#endregion
|
|
181
|
+
//#region src/types.d.ts
|
|
182
|
+
type OxlintRuleSeverity = RuleSeverity | "off";
|
|
183
|
+
//#endregion
|
|
184
|
+
//#region src/external-rules.d.ts
|
|
185
|
+
declare const EXTERNAL_RULES: readonly [{
|
|
186
|
+
readonly key: "react-hooks-js/set-state-in-render";
|
|
187
|
+
readonly source: "react-compiler";
|
|
188
|
+
readonly severity: "error";
|
|
189
|
+
}, {
|
|
190
|
+
readonly key: "react-hooks-js/immutability";
|
|
191
|
+
readonly source: "react-compiler";
|
|
192
|
+
readonly severity: "error";
|
|
193
|
+
}, {
|
|
194
|
+
readonly key: "react-hooks-js/refs";
|
|
195
|
+
readonly source: "react-compiler";
|
|
196
|
+
readonly severity: "error";
|
|
197
|
+
}, {
|
|
198
|
+
readonly key: "react-hooks-js/purity";
|
|
199
|
+
readonly source: "react-compiler";
|
|
200
|
+
readonly severity: "error";
|
|
201
|
+
}, {
|
|
202
|
+
readonly key: "react-hooks-js/hooks";
|
|
203
|
+
readonly source: "react-compiler";
|
|
204
|
+
readonly severity: "error";
|
|
205
|
+
}, {
|
|
206
|
+
readonly key: "react-hooks-js/set-state-in-effect";
|
|
207
|
+
readonly source: "react-compiler";
|
|
208
|
+
readonly severity: "warn";
|
|
209
|
+
}, {
|
|
210
|
+
readonly key: "react-hooks-js/globals";
|
|
211
|
+
readonly source: "react-compiler";
|
|
212
|
+
readonly severity: "error";
|
|
213
|
+
}, {
|
|
214
|
+
readonly key: "react-hooks-js/error-boundaries";
|
|
215
|
+
readonly source: "react-compiler";
|
|
216
|
+
readonly severity: "error";
|
|
217
|
+
}, {
|
|
218
|
+
readonly key: "react-hooks-js/preserve-manual-memoization";
|
|
219
|
+
readonly source: "react-compiler";
|
|
220
|
+
readonly severity: "error";
|
|
221
|
+
}, {
|
|
222
|
+
readonly key: "react-hooks-js/unsupported-syntax";
|
|
223
|
+
readonly source: "react-compiler";
|
|
224
|
+
readonly severity: "error";
|
|
225
|
+
}, {
|
|
226
|
+
readonly key: "react-hooks-js/component-hook-factories";
|
|
227
|
+
readonly source: "react-compiler";
|
|
228
|
+
readonly severity: "error";
|
|
229
|
+
}, {
|
|
230
|
+
readonly key: "react-hooks-js/static-components";
|
|
231
|
+
readonly source: "react-compiler";
|
|
232
|
+
readonly severity: "error";
|
|
233
|
+
}, {
|
|
234
|
+
readonly key: "react-hooks-js/use-memo";
|
|
235
|
+
readonly source: "react-compiler";
|
|
236
|
+
readonly severity: "error";
|
|
237
|
+
}, {
|
|
238
|
+
readonly key: "react-hooks-js/void-use-memo";
|
|
239
|
+
readonly source: "react-compiler";
|
|
240
|
+
readonly severity: "error";
|
|
241
|
+
}, {
|
|
242
|
+
readonly key: "react-hooks-js/incompatible-library";
|
|
243
|
+
readonly source: "react-compiler";
|
|
244
|
+
readonly severity: "error";
|
|
245
|
+
}, {
|
|
246
|
+
readonly key: "react-hooks-js/todo";
|
|
247
|
+
readonly source: "react-compiler";
|
|
248
|
+
readonly severity: "error";
|
|
249
|
+
}];
|
|
250
|
+
declare const REACT_COMPILER_RULES: Record<string, OxlintRuleSeverity>;
|
|
251
|
+
//#endregion
|
|
252
|
+
//#region src/plugin/constants/style.d.ts
|
|
253
|
+
declare const MOTION_LIBRARY_PACKAGES: Set<string>;
|
|
254
|
+
//#endregion
|
|
255
|
+
//#region src/plugin/constants/cross-file-rule-ids.d.ts
|
|
256
|
+
declare const CROSS_FILE_RULE_IDS: ReadonlySet<string>;
|
|
257
|
+
//#endregion
|
|
258
|
+
//#region src/plugin/utils/cross-file-probe-recorder.d.ts
|
|
259
|
+
interface CrossFileProbeTrace {
|
|
260
|
+
/** Paths whose existence classification (file / dir / none) was consulted. */
|
|
261
|
+
readonly existencePaths: Set<string>;
|
|
262
|
+
/** Paths whose content (bytes, exports, parse) was consulted. */
|
|
263
|
+
readonly contentPaths: Set<string>;
|
|
264
|
+
}
|
|
265
|
+
//#endregion
|
|
266
|
+
//#region src/plugin/cross-file-dependencies.d.ts
|
|
267
|
+
/**
|
|
268
|
+
* Per-rule cross-file dependency collectors — the foundation of the sidecar
|
|
269
|
+
* lint cache's dependency fingerprints (`@react-doctor/core`,
|
|
270
|
+
* `runners/oxlint/sidecar-lint-cache.ts`).
|
|
271
|
+
*
|
|
272
|
+
* A collector re-runs the SAME resolver helpers its rule calls at lint time
|
|
273
|
+
* (import resolution, barrel following, ancestor-layout walks, package.json
|
|
274
|
+
* classification) under the probe recorder
|
|
275
|
+
* (`utils/cross-file-probe-recorder.ts`), so the recorded probe set is the
|
|
276
|
+
* exact set of filesystem facts the rule's execution consulted — including
|
|
277
|
+
* the negative probes (extension candidates that did NOT exist) that make
|
|
278
|
+
* resolution shadowing detectable when a new file appears.
|
|
279
|
+
*
|
|
280
|
+
* SOUNDNESS INVARIANT — each collector's probe set must be a SUPERSET of
|
|
281
|
+
* every filesystem read its rule can make while linting the file, for any
|
|
282
|
+
* file content and any filesystem state:
|
|
283
|
+
*
|
|
284
|
+
* - Over-approximation is always safe (extra probes only cause a spurious
|
|
285
|
+
* re-lint); under-approximation is forbidden (a missed probe could
|
|
286
|
+
* replay a stale verdict).
|
|
287
|
+
* - Where a rule gates its cross-file reads on in-file conditions, a
|
|
288
|
+
* collector may skip the gate (probe more) or must mirror it EXACTLY
|
|
289
|
+
* (probe the same). Each collector documents which it does per gate.
|
|
290
|
+
* - The replay argument: the stored probe set is the complete read set of
|
|
291
|
+
* the collector's execution at store time. If every stored probe has
|
|
292
|
+
* the same answer on a later scan, re-executing the collector — and
|
|
293
|
+
* therefore the rule, whose reads are a subset — reproduces the same
|
|
294
|
+
* execution step by step (the file's own content is pinned separately
|
|
295
|
+
* by the cache key's content hash), so the stored diagnostics are
|
|
296
|
+
* exactly what a fresh sidecar lint would produce.
|
|
297
|
+
*
|
|
298
|
+
* A cross-file rule WITHOUT a collector here must be listed in
|
|
299
|
+
* `UNBOUNDED_CROSS_FILE_RULE_IDS` — it then re-lints every file on every
|
|
300
|
+
* scan (the sound fallback). `cross-file-rule-ids.test.ts` in
|
|
301
|
+
* `@react-doctor/core` forces every `CROSS_FILE_RULE_IDS` entry into
|
|
302
|
+
* exactly one of the two classifications.
|
|
303
|
+
*/
|
|
304
|
+
interface CrossFileDependencyCollectorInput {
|
|
305
|
+
/** Absolute, forward-slash-normalized path of the file being fingerprinted. */
|
|
306
|
+
readonly absoluteFilePath: string;
|
|
307
|
+
readonly sourceText: string;
|
|
308
|
+
/** oxc module record — the file's static import declarations. */
|
|
309
|
+
readonly staticImports: ReadonlyArray<StaticImport>;
|
|
310
|
+
/** Lazily materialized program (no parent references attached). */
|
|
311
|
+
readonly getProgram: () => EsTreeNode;
|
|
312
|
+
}
|
|
313
|
+
type CrossFileDependencyCollector = (input: CrossFileDependencyCollectorInput) => void;
|
|
314
|
+
declare const CROSS_FILE_DEPENDENCY_COLLECTORS: ReadonlyMap<string, CrossFileDependencyCollector>;
|
|
315
|
+
/**
|
|
316
|
+
* Cross-file rules whose dependency set CANNOT be soundly bounded — they are
|
|
317
|
+
* excluded from fingerprinting and re-lint every file on every scan. A new
|
|
318
|
+
* cross-file rule must be added either here or to
|
|
319
|
+
* `CROSS_FILE_DEPENDENCY_COLLECTORS` (the core guard test enforces the
|
|
320
|
+
* partition), forcing a conscious classification.
|
|
321
|
+
*/
|
|
322
|
+
declare const UNBOUNDED_CROSS_FILE_RULE_IDS: ReadonlySet<string>;
|
|
323
|
+
/**
|
|
324
|
+
* Runs the collectors for `ruleIds` over one file and returns every
|
|
325
|
+
* filesystem probe they made — the file's cross-file dependency set.
|
|
326
|
+
*
|
|
327
|
+
* Returns `null` (caller must treat the file as unfingerprintable and always
|
|
328
|
+
* re-lint it) when the file has a fatal parse error — an execution the
|
|
329
|
+
* collectors cannot mirror — or when a requested rule has no collector.
|
|
330
|
+
*/
|
|
331
|
+
declare const collectCrossFileDependencyProbes: (input: {
|
|
332
|
+
absoluteFilePath: string;
|
|
333
|
+
sourceText: string;
|
|
334
|
+
ruleIds: ReadonlyArray<string>;
|
|
335
|
+
}) => CrossFileProbeTrace | null;
|
|
336
|
+
//#endregion
|
|
337
|
+
//#region src/plugin/security-scan-rule-registry.d.ts
|
|
338
|
+
declare const reactDoctorScanRules: readonly [{
|
|
339
|
+
readonly key: "react-doctor/active-static-asset";
|
|
340
|
+
readonly id: "active-static-asset";
|
|
341
|
+
readonly source: "react-doctor";
|
|
342
|
+
readonly originallyExternal: false;
|
|
343
|
+
readonly rule: {
|
|
344
|
+
readonly framework: "global";
|
|
345
|
+
readonly category: "Security";
|
|
346
|
+
readonly tags: readonly string[];
|
|
347
|
+
readonly id: string;
|
|
348
|
+
readonly title?: string;
|
|
349
|
+
readonly severity: RuleSeverity;
|
|
350
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
351
|
+
readonly minimumInkVersion?: string;
|
|
352
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
353
|
+
readonly matchByOccurrence?: boolean;
|
|
354
|
+
readonly defaultEnabled?: boolean;
|
|
355
|
+
readonly lifecycle?: "retired";
|
|
356
|
+
readonly scan?: FileScan;
|
|
357
|
+
readonly committedFilesOnly?: boolean;
|
|
358
|
+
readonly recommendation?: string;
|
|
359
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
360
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
361
|
+
};
|
|
362
|
+
}, {
|
|
363
|
+
readonly key: "react-doctor/agent-tool-capability-risk";
|
|
364
|
+
readonly id: "agent-tool-capability-risk";
|
|
365
|
+
readonly source: "react-doctor";
|
|
366
|
+
readonly originallyExternal: false;
|
|
367
|
+
readonly rule: {
|
|
368
|
+
readonly framework: "global";
|
|
369
|
+
readonly category: "Security";
|
|
370
|
+
readonly tags: readonly string[];
|
|
371
|
+
readonly id: string;
|
|
372
|
+
readonly title?: string;
|
|
373
|
+
readonly severity: RuleSeverity;
|
|
374
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
375
|
+
readonly minimumInkVersion?: string;
|
|
376
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
377
|
+
readonly matchByOccurrence?: boolean;
|
|
378
|
+
readonly defaultEnabled?: boolean;
|
|
379
|
+
readonly lifecycle?: "retired";
|
|
380
|
+
readonly scan?: FileScan;
|
|
381
|
+
readonly committedFilesOnly?: boolean;
|
|
382
|
+
readonly recommendation?: string;
|
|
383
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
384
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
385
|
+
};
|
|
386
|
+
}, {
|
|
387
|
+
readonly key: "react-doctor/artifact-baas-authority-surface";
|
|
388
|
+
readonly id: "artifact-baas-authority-surface";
|
|
389
|
+
readonly source: "react-doctor";
|
|
390
|
+
readonly originallyExternal: false;
|
|
391
|
+
readonly rule: {
|
|
392
|
+
readonly framework: "global";
|
|
393
|
+
readonly category: "Security";
|
|
394
|
+
readonly tags: readonly string[];
|
|
395
|
+
readonly id: string;
|
|
396
|
+
readonly title?: string;
|
|
397
|
+
readonly severity: RuleSeverity;
|
|
398
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
399
|
+
readonly minimumInkVersion?: string;
|
|
400
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
401
|
+
readonly matchByOccurrence?: boolean;
|
|
402
|
+
readonly defaultEnabled?: boolean;
|
|
403
|
+
readonly lifecycle?: "retired";
|
|
404
|
+
readonly scan?: FileScan;
|
|
405
|
+
readonly committedFilesOnly?: boolean;
|
|
406
|
+
readonly recommendation?: string;
|
|
407
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
408
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
409
|
+
};
|
|
410
|
+
}, {
|
|
411
|
+
readonly key: "react-doctor/artifact-env-leak";
|
|
412
|
+
readonly id: "artifact-env-leak";
|
|
413
|
+
readonly source: "react-doctor";
|
|
414
|
+
readonly originallyExternal: false;
|
|
415
|
+
readonly rule: {
|
|
416
|
+
readonly framework: "global";
|
|
417
|
+
readonly category: "Security";
|
|
418
|
+
readonly tags: readonly string[];
|
|
419
|
+
readonly id: string;
|
|
420
|
+
readonly title?: string;
|
|
421
|
+
readonly severity: RuleSeverity;
|
|
422
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
423
|
+
readonly minimumInkVersion?: string;
|
|
424
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
425
|
+
readonly matchByOccurrence?: boolean;
|
|
426
|
+
readonly defaultEnabled?: boolean;
|
|
427
|
+
readonly lifecycle?: "retired";
|
|
428
|
+
readonly scan?: FileScan;
|
|
429
|
+
readonly committedFilesOnly?: boolean;
|
|
430
|
+
readonly recommendation?: string;
|
|
431
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
432
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
433
|
+
};
|
|
434
|
+
}, {
|
|
435
|
+
readonly key: "react-doctor/artifact-secret-leak";
|
|
436
|
+
readonly id: "artifact-secret-leak";
|
|
437
|
+
readonly source: "react-doctor";
|
|
438
|
+
readonly originallyExternal: false;
|
|
439
|
+
readonly rule: {
|
|
440
|
+
readonly framework: "global";
|
|
441
|
+
readonly category: "Security";
|
|
442
|
+
readonly tags: readonly string[];
|
|
443
|
+
readonly id: string;
|
|
444
|
+
readonly title?: string;
|
|
445
|
+
readonly severity: RuleSeverity;
|
|
446
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
447
|
+
readonly minimumInkVersion?: string;
|
|
448
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
449
|
+
readonly matchByOccurrence?: boolean;
|
|
450
|
+
readonly defaultEnabled?: boolean;
|
|
451
|
+
readonly lifecycle?: "retired";
|
|
452
|
+
readonly scan?: FileScan;
|
|
453
|
+
readonly committedFilesOnly?: boolean;
|
|
454
|
+
readonly recommendation?: string;
|
|
455
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
456
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
457
|
+
};
|
|
458
|
+
}, {
|
|
459
|
+
readonly key: "react-doctor/build-pipeline-secret-boundary";
|
|
460
|
+
readonly id: "build-pipeline-secret-boundary";
|
|
461
|
+
readonly source: "react-doctor";
|
|
462
|
+
readonly originallyExternal: false;
|
|
463
|
+
readonly rule: {
|
|
464
|
+
readonly framework: "global";
|
|
465
|
+
readonly category: "Security";
|
|
466
|
+
readonly tags: readonly string[];
|
|
467
|
+
readonly id: string;
|
|
468
|
+
readonly title?: string;
|
|
469
|
+
readonly severity: RuleSeverity;
|
|
470
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
471
|
+
readonly minimumInkVersion?: string;
|
|
472
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
473
|
+
readonly matchByOccurrence?: boolean;
|
|
474
|
+
readonly defaultEnabled?: boolean;
|
|
475
|
+
readonly lifecycle?: "retired";
|
|
476
|
+
readonly scan?: FileScan;
|
|
477
|
+
readonly committedFilesOnly?: boolean;
|
|
478
|
+
readonly recommendation?: string;
|
|
479
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
480
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
481
|
+
};
|
|
482
|
+
}, {
|
|
483
|
+
readonly key: "react-doctor/clickjacking-redirect-risk";
|
|
484
|
+
readonly id: "clickjacking-redirect-risk";
|
|
485
|
+
readonly source: "react-doctor";
|
|
486
|
+
readonly originallyExternal: false;
|
|
487
|
+
readonly rule: {
|
|
488
|
+
readonly framework: "global";
|
|
489
|
+
readonly category: "Security";
|
|
490
|
+
readonly tags: readonly string[];
|
|
491
|
+
readonly id: string;
|
|
492
|
+
readonly title?: string;
|
|
493
|
+
readonly severity: RuleSeverity;
|
|
494
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
495
|
+
readonly minimumInkVersion?: string;
|
|
496
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
497
|
+
readonly matchByOccurrence?: boolean;
|
|
498
|
+
readonly defaultEnabled?: boolean;
|
|
499
|
+
readonly lifecycle?: "retired";
|
|
500
|
+
readonly scan?: FileScan;
|
|
501
|
+
readonly committedFilesOnly?: boolean;
|
|
502
|
+
readonly recommendation?: string;
|
|
503
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
504
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
505
|
+
};
|
|
506
|
+
}, {
|
|
507
|
+
readonly key: "react-doctor/command-execution-input-risk";
|
|
508
|
+
readonly id: "command-execution-input-risk";
|
|
509
|
+
readonly source: "react-doctor";
|
|
510
|
+
readonly originallyExternal: false;
|
|
511
|
+
readonly rule: {
|
|
512
|
+
readonly framework: "global";
|
|
513
|
+
readonly category: "Security";
|
|
514
|
+
readonly tags: readonly string[];
|
|
515
|
+
readonly id: string;
|
|
516
|
+
readonly title?: string;
|
|
517
|
+
readonly severity: RuleSeverity;
|
|
518
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
519
|
+
readonly minimumInkVersion?: string;
|
|
520
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
521
|
+
readonly matchByOccurrence?: boolean;
|
|
522
|
+
readonly defaultEnabled?: boolean;
|
|
523
|
+
readonly lifecycle?: "retired";
|
|
524
|
+
readonly scan?: FileScan;
|
|
525
|
+
readonly committedFilesOnly?: boolean;
|
|
526
|
+
readonly recommendation?: string;
|
|
527
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
528
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
529
|
+
};
|
|
530
|
+
}, {
|
|
531
|
+
readonly key: "react-doctor/cors-cookie-trust-risk";
|
|
532
|
+
readonly id: "cors-cookie-trust-risk";
|
|
533
|
+
readonly source: "react-doctor";
|
|
534
|
+
readonly originallyExternal: false;
|
|
535
|
+
readonly rule: {
|
|
536
|
+
readonly framework: "global";
|
|
537
|
+
readonly category: "Security";
|
|
538
|
+
readonly tags: readonly string[];
|
|
539
|
+
readonly id: string;
|
|
540
|
+
readonly title?: string;
|
|
541
|
+
readonly severity: RuleSeverity;
|
|
542
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
543
|
+
readonly minimumInkVersion?: string;
|
|
544
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
545
|
+
readonly matchByOccurrence?: boolean;
|
|
546
|
+
readonly defaultEnabled?: boolean;
|
|
547
|
+
readonly lifecycle?: "retired";
|
|
548
|
+
readonly scan?: FileScan;
|
|
549
|
+
readonly committedFilesOnly?: boolean;
|
|
550
|
+
readonly recommendation?: string;
|
|
551
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
552
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
553
|
+
};
|
|
554
|
+
}, {
|
|
555
|
+
readonly key: "react-doctor/dangerous-html-sink";
|
|
556
|
+
readonly id: "dangerous-html-sink";
|
|
557
|
+
readonly source: "react-doctor";
|
|
558
|
+
readonly originallyExternal: false;
|
|
559
|
+
readonly rule: {
|
|
560
|
+
readonly framework: "global";
|
|
561
|
+
readonly category: "Security";
|
|
562
|
+
readonly tags: readonly string[];
|
|
563
|
+
readonly id: string;
|
|
564
|
+
readonly title?: string;
|
|
565
|
+
readonly severity: RuleSeverity;
|
|
566
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
567
|
+
readonly minimumInkVersion?: string;
|
|
568
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
569
|
+
readonly matchByOccurrence?: boolean;
|
|
570
|
+
readonly defaultEnabled?: boolean;
|
|
571
|
+
readonly lifecycle?: "retired";
|
|
572
|
+
readonly scan?: FileScan;
|
|
573
|
+
readonly committedFilesOnly?: boolean;
|
|
574
|
+
readonly recommendation?: string;
|
|
575
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
576
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
577
|
+
};
|
|
578
|
+
}, {
|
|
579
|
+
readonly key: "react-doctor/firebase-client-owned-authz-field";
|
|
580
|
+
readonly id: "firebase-client-owned-authz-field";
|
|
581
|
+
readonly source: "react-doctor";
|
|
582
|
+
readonly originallyExternal: false;
|
|
583
|
+
readonly rule: {
|
|
584
|
+
readonly framework: "global";
|
|
585
|
+
readonly category: "Security";
|
|
586
|
+
readonly tags: readonly string[];
|
|
587
|
+
readonly id: string;
|
|
588
|
+
readonly title?: string;
|
|
589
|
+
readonly severity: RuleSeverity;
|
|
590
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
591
|
+
readonly minimumInkVersion?: string;
|
|
592
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
593
|
+
readonly matchByOccurrence?: boolean;
|
|
594
|
+
readonly defaultEnabled?: boolean;
|
|
595
|
+
readonly lifecycle?: "retired";
|
|
596
|
+
readonly scan?: FileScan;
|
|
597
|
+
readonly committedFilesOnly?: boolean;
|
|
598
|
+
readonly recommendation?: string;
|
|
599
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
600
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
601
|
+
};
|
|
602
|
+
}, {
|
|
603
|
+
readonly key: "react-doctor/firebase-permissive-rules";
|
|
604
|
+
readonly id: "firebase-permissive-rules";
|
|
605
|
+
readonly source: "react-doctor";
|
|
606
|
+
readonly originallyExternal: false;
|
|
607
|
+
readonly rule: {
|
|
608
|
+
readonly framework: "global";
|
|
609
|
+
readonly category: "Security";
|
|
610
|
+
readonly tags: readonly string[];
|
|
611
|
+
readonly id: string;
|
|
612
|
+
readonly title?: string;
|
|
613
|
+
readonly severity: RuleSeverity;
|
|
614
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
615
|
+
readonly minimumInkVersion?: string;
|
|
616
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
617
|
+
readonly matchByOccurrence?: boolean;
|
|
618
|
+
readonly defaultEnabled?: boolean;
|
|
619
|
+
readonly lifecycle?: "retired";
|
|
620
|
+
readonly scan?: FileScan;
|
|
621
|
+
readonly committedFilesOnly?: boolean;
|
|
622
|
+
readonly recommendation?: string;
|
|
623
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
624
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
625
|
+
};
|
|
626
|
+
}, {
|
|
627
|
+
readonly key: "react-doctor/firebase-query-filter-as-auth";
|
|
628
|
+
readonly id: "firebase-query-filter-as-auth";
|
|
629
|
+
readonly source: "react-doctor";
|
|
630
|
+
readonly originallyExternal: false;
|
|
631
|
+
readonly rule: {
|
|
632
|
+
readonly framework: "global";
|
|
633
|
+
readonly category: "Security";
|
|
634
|
+
readonly tags: readonly string[];
|
|
635
|
+
readonly id: string;
|
|
636
|
+
readonly title?: string;
|
|
637
|
+
readonly severity: RuleSeverity;
|
|
638
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
639
|
+
readonly minimumInkVersion?: string;
|
|
640
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
641
|
+
readonly matchByOccurrence?: boolean;
|
|
642
|
+
readonly defaultEnabled?: boolean;
|
|
643
|
+
readonly lifecycle?: "retired";
|
|
644
|
+
readonly scan?: FileScan;
|
|
645
|
+
readonly committedFilesOnly?: boolean;
|
|
646
|
+
readonly recommendation?: string;
|
|
647
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
648
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
649
|
+
};
|
|
650
|
+
}, {
|
|
651
|
+
readonly key: "react-doctor/git-provider-url-injection-risk";
|
|
652
|
+
readonly id: "git-provider-url-injection-risk";
|
|
653
|
+
readonly source: "react-doctor";
|
|
654
|
+
readonly originallyExternal: false;
|
|
655
|
+
readonly rule: {
|
|
656
|
+
readonly framework: "global";
|
|
657
|
+
readonly category: "Security";
|
|
658
|
+
readonly tags: readonly string[];
|
|
659
|
+
readonly id: string;
|
|
660
|
+
readonly title?: string;
|
|
661
|
+
readonly severity: RuleSeverity;
|
|
662
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
663
|
+
readonly minimumInkVersion?: string;
|
|
664
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
665
|
+
readonly matchByOccurrence?: boolean;
|
|
666
|
+
readonly defaultEnabled?: boolean;
|
|
667
|
+
readonly lifecycle?: "retired";
|
|
668
|
+
readonly scan?: FileScan;
|
|
669
|
+
readonly committedFilesOnly?: boolean;
|
|
670
|
+
readonly recommendation?: string;
|
|
671
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
672
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
673
|
+
};
|
|
674
|
+
}, {
|
|
675
|
+
readonly key: "react-doctor/import-metadata-execution-risk";
|
|
676
|
+
readonly id: "import-metadata-execution-risk";
|
|
677
|
+
readonly source: "react-doctor";
|
|
678
|
+
readonly originallyExternal: false;
|
|
679
|
+
readonly rule: {
|
|
680
|
+
readonly framework: "global";
|
|
681
|
+
readonly category: "Security";
|
|
682
|
+
readonly tags: readonly string[];
|
|
683
|
+
readonly id: string;
|
|
684
|
+
readonly title?: string;
|
|
685
|
+
readonly severity: RuleSeverity;
|
|
686
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
687
|
+
readonly minimumInkVersion?: string;
|
|
688
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
689
|
+
readonly matchByOccurrence?: boolean;
|
|
690
|
+
readonly defaultEnabled?: boolean;
|
|
691
|
+
readonly lifecycle?: "retired";
|
|
692
|
+
readonly scan?: FileScan;
|
|
693
|
+
readonly committedFilesOnly?: boolean;
|
|
694
|
+
readonly recommendation?: string;
|
|
695
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
696
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
697
|
+
};
|
|
698
|
+
}, {
|
|
699
|
+
readonly key: "react-doctor/insecure-crypto-risk";
|
|
700
|
+
readonly id: "insecure-crypto-risk";
|
|
701
|
+
readonly source: "react-doctor";
|
|
702
|
+
readonly originallyExternal: false;
|
|
703
|
+
readonly rule: {
|
|
704
|
+
readonly framework: "global";
|
|
705
|
+
readonly category: "Security";
|
|
706
|
+
readonly tags: readonly string[];
|
|
707
|
+
readonly id: string;
|
|
708
|
+
readonly title?: string;
|
|
709
|
+
readonly severity: RuleSeverity;
|
|
710
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
711
|
+
readonly minimumInkVersion?: string;
|
|
712
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
713
|
+
readonly matchByOccurrence?: boolean;
|
|
714
|
+
readonly defaultEnabled?: boolean;
|
|
715
|
+
readonly lifecycle?: "retired";
|
|
716
|
+
readonly scan?: FileScan;
|
|
717
|
+
readonly committedFilesOnly?: boolean;
|
|
718
|
+
readonly recommendation?: string;
|
|
719
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
720
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
721
|
+
};
|
|
722
|
+
}, {
|
|
723
|
+
readonly key: "react-doctor/insecure-session-cookie";
|
|
724
|
+
readonly id: "insecure-session-cookie";
|
|
725
|
+
readonly source: "react-doctor";
|
|
726
|
+
readonly originallyExternal: false;
|
|
727
|
+
readonly rule: {
|
|
728
|
+
readonly framework: "global";
|
|
729
|
+
readonly category: "Security";
|
|
730
|
+
readonly tags: readonly string[];
|
|
731
|
+
readonly id: string;
|
|
732
|
+
readonly title?: string;
|
|
733
|
+
readonly severity: RuleSeverity;
|
|
734
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
735
|
+
readonly minimumInkVersion?: string;
|
|
736
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
737
|
+
readonly matchByOccurrence?: boolean;
|
|
738
|
+
readonly defaultEnabled?: boolean;
|
|
739
|
+
readonly lifecycle?: "retired";
|
|
740
|
+
readonly scan?: FileScan;
|
|
741
|
+
readonly committedFilesOnly?: boolean;
|
|
742
|
+
readonly recommendation?: string;
|
|
743
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
744
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
745
|
+
};
|
|
746
|
+
}, {
|
|
747
|
+
readonly key: "react-doctor/jwt-insecure-verification";
|
|
748
|
+
readonly id: "jwt-insecure-verification";
|
|
749
|
+
readonly source: "react-doctor";
|
|
750
|
+
readonly originallyExternal: false;
|
|
751
|
+
readonly rule: {
|
|
752
|
+
readonly framework: "global";
|
|
753
|
+
readonly category: "Security";
|
|
754
|
+
readonly tags: readonly string[];
|
|
755
|
+
readonly id: string;
|
|
756
|
+
readonly title?: string;
|
|
757
|
+
readonly severity: RuleSeverity;
|
|
758
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
759
|
+
readonly minimumInkVersion?: string;
|
|
760
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
761
|
+
readonly matchByOccurrence?: boolean;
|
|
762
|
+
readonly defaultEnabled?: boolean;
|
|
763
|
+
readonly lifecycle?: "retired";
|
|
764
|
+
readonly scan?: FileScan;
|
|
765
|
+
readonly committedFilesOnly?: boolean;
|
|
766
|
+
readonly recommendation?: string;
|
|
767
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
768
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
769
|
+
};
|
|
770
|
+
}, {
|
|
771
|
+
readonly key: "react-doctor/key-lifecycle-risk";
|
|
772
|
+
readonly id: "key-lifecycle-risk";
|
|
773
|
+
readonly source: "react-doctor";
|
|
774
|
+
readonly originallyExternal: false;
|
|
775
|
+
readonly rule: {
|
|
776
|
+
readonly framework: "global";
|
|
777
|
+
readonly category: "Security";
|
|
778
|
+
readonly tags: readonly string[];
|
|
779
|
+
readonly id: string;
|
|
780
|
+
readonly title?: string;
|
|
781
|
+
readonly severity: RuleSeverity;
|
|
782
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
783
|
+
readonly minimumInkVersion?: string;
|
|
784
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
785
|
+
readonly matchByOccurrence?: boolean;
|
|
786
|
+
readonly defaultEnabled?: boolean;
|
|
787
|
+
readonly lifecycle?: "retired";
|
|
788
|
+
readonly scan?: FileScan;
|
|
789
|
+
readonly committedFilesOnly?: boolean;
|
|
790
|
+
readonly recommendation?: string;
|
|
791
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
792
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
793
|
+
};
|
|
794
|
+
}, {
|
|
795
|
+
readonly key: "react-doctor/local-rpc-native-bridge-risk";
|
|
796
|
+
readonly id: "local-rpc-native-bridge-risk";
|
|
797
|
+
readonly source: "react-doctor";
|
|
798
|
+
readonly originallyExternal: false;
|
|
799
|
+
readonly rule: {
|
|
800
|
+
readonly framework: "global";
|
|
801
|
+
readonly category: "Security";
|
|
802
|
+
readonly tags: readonly string[];
|
|
803
|
+
readonly id: string;
|
|
804
|
+
readonly title?: string;
|
|
805
|
+
readonly severity: RuleSeverity;
|
|
806
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
807
|
+
readonly minimumInkVersion?: string;
|
|
808
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
809
|
+
readonly matchByOccurrence?: boolean;
|
|
810
|
+
readonly defaultEnabled?: boolean;
|
|
811
|
+
readonly lifecycle?: "retired";
|
|
812
|
+
readonly scan?: FileScan;
|
|
813
|
+
readonly committedFilesOnly?: boolean;
|
|
814
|
+
readonly recommendation?: string;
|
|
815
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
816
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
817
|
+
};
|
|
818
|
+
}, {
|
|
819
|
+
readonly key: "react-doctor/mcp-tool-capability-risk";
|
|
820
|
+
readonly id: "mcp-tool-capability-risk";
|
|
821
|
+
readonly source: "react-doctor";
|
|
822
|
+
readonly originallyExternal: false;
|
|
823
|
+
readonly rule: {
|
|
824
|
+
readonly framework: "global";
|
|
825
|
+
readonly category: "Security";
|
|
826
|
+
readonly tags: readonly string[];
|
|
827
|
+
readonly id: string;
|
|
828
|
+
readonly title?: string;
|
|
829
|
+
readonly severity: RuleSeverity;
|
|
830
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
831
|
+
readonly minimumInkVersion?: string;
|
|
832
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
833
|
+
readonly matchByOccurrence?: boolean;
|
|
834
|
+
readonly defaultEnabled?: boolean;
|
|
835
|
+
readonly lifecycle?: "retired";
|
|
836
|
+
readonly scan?: FileScan;
|
|
837
|
+
readonly committedFilesOnly?: boolean;
|
|
838
|
+
readonly recommendation?: string;
|
|
839
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
840
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
841
|
+
};
|
|
842
|
+
}, {
|
|
843
|
+
readonly key: "react-doctor/mdx-ssr-execution-risk";
|
|
844
|
+
readonly id: "mdx-ssr-execution-risk";
|
|
845
|
+
readonly source: "react-doctor";
|
|
846
|
+
readonly originallyExternal: false;
|
|
847
|
+
readonly rule: {
|
|
848
|
+
readonly framework: "global";
|
|
849
|
+
readonly category: "Security";
|
|
850
|
+
readonly tags: readonly string[];
|
|
851
|
+
readonly id: string;
|
|
852
|
+
readonly title?: string;
|
|
853
|
+
readonly severity: RuleSeverity;
|
|
854
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
855
|
+
readonly minimumInkVersion?: string;
|
|
856
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
857
|
+
readonly matchByOccurrence?: boolean;
|
|
858
|
+
readonly defaultEnabled?: boolean;
|
|
859
|
+
readonly lifecycle?: "retired";
|
|
860
|
+
readonly scan?: FileScan;
|
|
861
|
+
readonly committedFilesOnly?: boolean;
|
|
862
|
+
readonly recommendation?: string;
|
|
863
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
864
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
865
|
+
};
|
|
866
|
+
}, {
|
|
867
|
+
readonly key: "react-doctor/nosql-injection-risk";
|
|
868
|
+
readonly id: "nosql-injection-risk";
|
|
869
|
+
readonly source: "react-doctor";
|
|
870
|
+
readonly originallyExternal: false;
|
|
871
|
+
readonly rule: {
|
|
872
|
+
readonly framework: "global";
|
|
873
|
+
readonly category: "Security";
|
|
874
|
+
readonly tags: readonly string[];
|
|
875
|
+
readonly id: string;
|
|
876
|
+
readonly title?: string;
|
|
877
|
+
readonly severity: RuleSeverity;
|
|
878
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
879
|
+
readonly minimumInkVersion?: string;
|
|
880
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
881
|
+
readonly matchByOccurrence?: boolean;
|
|
882
|
+
readonly defaultEnabled?: boolean;
|
|
883
|
+
readonly lifecycle?: "retired";
|
|
884
|
+
readonly scan?: FileScan;
|
|
885
|
+
readonly committedFilesOnly?: boolean;
|
|
886
|
+
readonly recommendation?: string;
|
|
887
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
888
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
889
|
+
};
|
|
890
|
+
}, {
|
|
891
|
+
readonly key: "react-doctor/package-metadata-secret";
|
|
892
|
+
readonly id: "package-metadata-secret";
|
|
893
|
+
readonly source: "react-doctor";
|
|
894
|
+
readonly originallyExternal: false;
|
|
895
|
+
readonly rule: {
|
|
896
|
+
readonly framework: "global";
|
|
897
|
+
readonly category: "Security";
|
|
898
|
+
readonly tags: readonly string[];
|
|
899
|
+
readonly id: string;
|
|
900
|
+
readonly title?: string;
|
|
901
|
+
readonly severity: RuleSeverity;
|
|
902
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
903
|
+
readonly minimumInkVersion?: string;
|
|
904
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
905
|
+
readonly matchByOccurrence?: boolean;
|
|
906
|
+
readonly defaultEnabled?: boolean;
|
|
907
|
+
readonly lifecycle?: "retired";
|
|
908
|
+
readonly scan?: FileScan;
|
|
909
|
+
readonly committedFilesOnly?: boolean;
|
|
910
|
+
readonly recommendation?: string;
|
|
911
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
912
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
913
|
+
};
|
|
914
|
+
}, {
|
|
915
|
+
readonly key: "react-doctor/path-traversal-risk";
|
|
916
|
+
readonly id: "path-traversal-risk";
|
|
917
|
+
readonly source: "react-doctor";
|
|
918
|
+
readonly originallyExternal: false;
|
|
919
|
+
readonly rule: {
|
|
920
|
+
readonly framework: "global";
|
|
921
|
+
readonly category: "Security";
|
|
922
|
+
readonly tags: readonly string[];
|
|
923
|
+
readonly id: string;
|
|
924
|
+
readonly title?: string;
|
|
925
|
+
readonly severity: RuleSeverity;
|
|
926
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
927
|
+
readonly minimumInkVersion?: string;
|
|
928
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
929
|
+
readonly matchByOccurrence?: boolean;
|
|
930
|
+
readonly defaultEnabled?: boolean;
|
|
931
|
+
readonly lifecycle?: "retired";
|
|
932
|
+
readonly scan?: FileScan;
|
|
933
|
+
readonly committedFilesOnly?: boolean;
|
|
934
|
+
readonly recommendation?: string;
|
|
935
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
936
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
937
|
+
};
|
|
938
|
+
}, {
|
|
939
|
+
readonly key: "react-doctor/plugin-update-trust-risk";
|
|
940
|
+
readonly id: "plugin-update-trust-risk";
|
|
941
|
+
readonly source: "react-doctor";
|
|
942
|
+
readonly originallyExternal: false;
|
|
943
|
+
readonly rule: {
|
|
944
|
+
readonly framework: "global";
|
|
945
|
+
readonly category: "Security";
|
|
946
|
+
readonly tags: readonly string[];
|
|
947
|
+
readonly id: string;
|
|
948
|
+
readonly title?: string;
|
|
949
|
+
readonly severity: RuleSeverity;
|
|
950
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
951
|
+
readonly minimumInkVersion?: string;
|
|
952
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
953
|
+
readonly matchByOccurrence?: boolean;
|
|
954
|
+
readonly defaultEnabled?: boolean;
|
|
955
|
+
readonly lifecycle?: "retired";
|
|
956
|
+
readonly scan?: FileScan;
|
|
957
|
+
readonly committedFilesOnly?: boolean;
|
|
958
|
+
readonly recommendation?: string;
|
|
959
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
960
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
961
|
+
};
|
|
962
|
+
}, {
|
|
963
|
+
readonly key: "react-doctor/postmessage-origin-risk";
|
|
964
|
+
readonly id: "postmessage-origin-risk";
|
|
965
|
+
readonly source: "react-doctor";
|
|
966
|
+
readonly originallyExternal: false;
|
|
967
|
+
readonly rule: {
|
|
968
|
+
readonly framework: "global";
|
|
969
|
+
readonly category: "Security";
|
|
970
|
+
readonly tags: readonly string[];
|
|
971
|
+
readonly id: string;
|
|
972
|
+
readonly title?: string;
|
|
973
|
+
readonly severity: RuleSeverity;
|
|
974
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
975
|
+
readonly minimumInkVersion?: string;
|
|
976
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
977
|
+
readonly matchByOccurrence?: boolean;
|
|
978
|
+
readonly defaultEnabled?: boolean;
|
|
979
|
+
readonly lifecycle?: "retired";
|
|
980
|
+
readonly scan?: FileScan;
|
|
981
|
+
readonly committedFilesOnly?: boolean;
|
|
982
|
+
readonly recommendation?: string;
|
|
983
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
984
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
985
|
+
};
|
|
986
|
+
}, {
|
|
987
|
+
readonly key: "react-doctor/public-debug-artifact";
|
|
988
|
+
readonly id: "public-debug-artifact";
|
|
989
|
+
readonly source: "react-doctor";
|
|
990
|
+
readonly originallyExternal: false;
|
|
991
|
+
readonly rule: {
|
|
992
|
+
readonly framework: "global";
|
|
993
|
+
readonly category: "Security";
|
|
994
|
+
readonly tags: readonly string[];
|
|
995
|
+
readonly id: string;
|
|
996
|
+
readonly title?: string;
|
|
997
|
+
readonly severity: RuleSeverity;
|
|
998
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
999
|
+
readonly minimumInkVersion?: string;
|
|
1000
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1001
|
+
readonly matchByOccurrence?: boolean;
|
|
1002
|
+
readonly defaultEnabled?: boolean;
|
|
1003
|
+
readonly lifecycle?: "retired";
|
|
1004
|
+
readonly scan?: FileScan;
|
|
1005
|
+
readonly committedFilesOnly?: boolean;
|
|
1006
|
+
readonly recommendation?: string;
|
|
1007
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1008
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1009
|
+
};
|
|
1010
|
+
}, {
|
|
1011
|
+
readonly key: "react-doctor/public-env-secret-name";
|
|
1012
|
+
readonly id: "public-env-secret-name";
|
|
1013
|
+
readonly source: "react-doctor";
|
|
1014
|
+
readonly originallyExternal: false;
|
|
1015
|
+
readonly rule: {
|
|
1016
|
+
readonly framework: "global";
|
|
1017
|
+
readonly category: "Security";
|
|
1018
|
+
readonly tags: readonly string[];
|
|
1019
|
+
readonly id: string;
|
|
1020
|
+
readonly title?: string;
|
|
1021
|
+
readonly severity: RuleSeverity;
|
|
1022
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1023
|
+
readonly minimumInkVersion?: string;
|
|
1024
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1025
|
+
readonly matchByOccurrence?: boolean;
|
|
1026
|
+
readonly defaultEnabled?: boolean;
|
|
1027
|
+
readonly lifecycle?: "retired";
|
|
1028
|
+
readonly scan?: FileScan;
|
|
1029
|
+
readonly committedFilesOnly?: boolean;
|
|
1030
|
+
readonly recommendation?: string;
|
|
1031
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1032
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1033
|
+
};
|
|
1034
|
+
}, {
|
|
1035
|
+
readonly key: "react-doctor/raw-sql-injection-risk";
|
|
1036
|
+
readonly id: "raw-sql-injection-risk";
|
|
1037
|
+
readonly source: "react-doctor";
|
|
1038
|
+
readonly originallyExternal: false;
|
|
1039
|
+
readonly rule: {
|
|
1040
|
+
readonly framework: "global";
|
|
1041
|
+
readonly category: "Security";
|
|
1042
|
+
readonly tags: readonly string[];
|
|
1043
|
+
readonly id: string;
|
|
1044
|
+
readonly title?: string;
|
|
1045
|
+
readonly severity: RuleSeverity;
|
|
1046
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1047
|
+
readonly minimumInkVersion?: string;
|
|
1048
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1049
|
+
readonly matchByOccurrence?: boolean;
|
|
1050
|
+
readonly defaultEnabled?: boolean;
|
|
1051
|
+
readonly lifecycle?: "retired";
|
|
1052
|
+
readonly scan?: FileScan;
|
|
1053
|
+
readonly committedFilesOnly?: boolean;
|
|
1054
|
+
readonly recommendation?: string;
|
|
1055
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1056
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1057
|
+
};
|
|
1058
|
+
}, {
|
|
1059
|
+
readonly key: "react-doctor/repository-secret-file";
|
|
1060
|
+
readonly id: "repository-secret-file";
|
|
1061
|
+
readonly source: "react-doctor";
|
|
1062
|
+
readonly originallyExternal: false;
|
|
1063
|
+
readonly rule: {
|
|
1064
|
+
readonly framework: "global";
|
|
1065
|
+
readonly category: "Security";
|
|
1066
|
+
readonly tags: readonly string[];
|
|
1067
|
+
readonly id: string;
|
|
1068
|
+
readonly title?: string;
|
|
1069
|
+
readonly severity: RuleSeverity;
|
|
1070
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1071
|
+
readonly minimumInkVersion?: string;
|
|
1072
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1073
|
+
readonly matchByOccurrence?: boolean;
|
|
1074
|
+
readonly defaultEnabled?: boolean;
|
|
1075
|
+
readonly lifecycle?: "retired";
|
|
1076
|
+
readonly scan?: FileScan;
|
|
1077
|
+
readonly committedFilesOnly?: boolean;
|
|
1078
|
+
readonly recommendation?: string;
|
|
1079
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1080
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1081
|
+
};
|
|
1082
|
+
}, {
|
|
1083
|
+
readonly key: "react-doctor/request-body-mass-assignment";
|
|
1084
|
+
readonly id: "request-body-mass-assignment";
|
|
1085
|
+
readonly source: "react-doctor";
|
|
1086
|
+
readonly originallyExternal: false;
|
|
1087
|
+
readonly rule: {
|
|
1088
|
+
readonly framework: "global";
|
|
1089
|
+
readonly category: "Security";
|
|
1090
|
+
readonly tags: readonly string[];
|
|
1091
|
+
readonly id: string;
|
|
1092
|
+
readonly title?: string;
|
|
1093
|
+
readonly severity: RuleSeverity;
|
|
1094
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1095
|
+
readonly minimumInkVersion?: string;
|
|
1096
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1097
|
+
readonly matchByOccurrence?: boolean;
|
|
1098
|
+
readonly defaultEnabled?: boolean;
|
|
1099
|
+
readonly lifecycle?: "retired";
|
|
1100
|
+
readonly scan?: FileScan;
|
|
1101
|
+
readonly committedFilesOnly?: boolean;
|
|
1102
|
+
readonly recommendation?: string;
|
|
1103
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1104
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1105
|
+
};
|
|
1106
|
+
}, {
|
|
1107
|
+
readonly key: "react-doctor/secret-in-fallback";
|
|
1108
|
+
readonly id: "secret-in-fallback";
|
|
1109
|
+
readonly source: "react-doctor";
|
|
1110
|
+
readonly originallyExternal: false;
|
|
1111
|
+
readonly rule: {
|
|
1112
|
+
readonly framework: "global";
|
|
1113
|
+
readonly category: "Security";
|
|
1114
|
+
readonly tags: readonly string[];
|
|
1115
|
+
readonly id: string;
|
|
1116
|
+
readonly title?: string;
|
|
1117
|
+
readonly severity: RuleSeverity;
|
|
1118
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1119
|
+
readonly minimumInkVersion?: string;
|
|
1120
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1121
|
+
readonly matchByOccurrence?: boolean;
|
|
1122
|
+
readonly defaultEnabled?: boolean;
|
|
1123
|
+
readonly lifecycle?: "retired";
|
|
1124
|
+
readonly scan?: FileScan;
|
|
1125
|
+
readonly committedFilesOnly?: boolean;
|
|
1126
|
+
readonly recommendation?: string;
|
|
1127
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1128
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1129
|
+
};
|
|
1130
|
+
}, {
|
|
1131
|
+
readonly key: "react-doctor/supabase-client-owned-authz-field";
|
|
1132
|
+
readonly id: "supabase-client-owned-authz-field";
|
|
1133
|
+
readonly source: "react-doctor";
|
|
1134
|
+
readonly originallyExternal: false;
|
|
1135
|
+
readonly rule: {
|
|
1136
|
+
readonly framework: "global";
|
|
1137
|
+
readonly category: "Security";
|
|
1138
|
+
readonly tags: readonly string[];
|
|
1139
|
+
readonly id: string;
|
|
1140
|
+
readonly title?: string;
|
|
1141
|
+
readonly severity: RuleSeverity;
|
|
1142
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1143
|
+
readonly minimumInkVersion?: string;
|
|
1144
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1145
|
+
readonly matchByOccurrence?: boolean;
|
|
1146
|
+
readonly defaultEnabled?: boolean;
|
|
1147
|
+
readonly lifecycle?: "retired";
|
|
1148
|
+
readonly scan?: FileScan;
|
|
1149
|
+
readonly committedFilesOnly?: boolean;
|
|
1150
|
+
readonly recommendation?: string;
|
|
1151
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1152
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1153
|
+
};
|
|
1154
|
+
}, {
|
|
1155
|
+
readonly key: "react-doctor/supabase-rls-policy-risk";
|
|
1156
|
+
readonly id: "supabase-rls-policy-risk";
|
|
1157
|
+
readonly source: "react-doctor";
|
|
1158
|
+
readonly originallyExternal: false;
|
|
1159
|
+
readonly rule: {
|
|
1160
|
+
readonly framework: "global";
|
|
1161
|
+
readonly category: "Security";
|
|
1162
|
+
readonly tags: readonly string[];
|
|
1163
|
+
readonly id: string;
|
|
1164
|
+
readonly title?: string;
|
|
1165
|
+
readonly severity: RuleSeverity;
|
|
1166
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1167
|
+
readonly minimumInkVersion?: string;
|
|
1168
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1169
|
+
readonly matchByOccurrence?: boolean;
|
|
1170
|
+
readonly defaultEnabled?: boolean;
|
|
1171
|
+
readonly lifecycle?: "retired";
|
|
1172
|
+
readonly scan?: FileScan;
|
|
1173
|
+
readonly committedFilesOnly?: boolean;
|
|
1174
|
+
readonly recommendation?: string;
|
|
1175
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1176
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1177
|
+
};
|
|
1178
|
+
}, {
|
|
1179
|
+
readonly key: "react-doctor/supabase-table-missing-rls";
|
|
1180
|
+
readonly id: "supabase-table-missing-rls";
|
|
1181
|
+
readonly source: "react-doctor";
|
|
1182
|
+
readonly originallyExternal: false;
|
|
1183
|
+
readonly rule: {
|
|
1184
|
+
readonly framework: "global";
|
|
1185
|
+
readonly category: "Security";
|
|
1186
|
+
readonly tags: readonly string[];
|
|
1187
|
+
readonly id: string;
|
|
1188
|
+
readonly title?: string;
|
|
1189
|
+
readonly severity: RuleSeverity;
|
|
1190
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1191
|
+
readonly minimumInkVersion?: string;
|
|
1192
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1193
|
+
readonly matchByOccurrence?: boolean;
|
|
1194
|
+
readonly defaultEnabled?: boolean;
|
|
1195
|
+
readonly lifecycle?: "retired";
|
|
1196
|
+
readonly scan?: FileScan;
|
|
1197
|
+
readonly committedFilesOnly?: boolean;
|
|
1198
|
+
readonly recommendation?: string;
|
|
1199
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1200
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1201
|
+
};
|
|
1202
|
+
}, {
|
|
1203
|
+
readonly key: "react-doctor/svg-filter-clickjacking-risk";
|
|
1204
|
+
readonly id: "svg-filter-clickjacking-risk";
|
|
1205
|
+
readonly source: "react-doctor";
|
|
1206
|
+
readonly originallyExternal: false;
|
|
1207
|
+
readonly rule: {
|
|
1208
|
+
readonly framework: "global";
|
|
1209
|
+
readonly category: "Security";
|
|
1210
|
+
readonly tags: readonly string[];
|
|
1211
|
+
readonly id: string;
|
|
1212
|
+
readonly title?: string;
|
|
1213
|
+
readonly severity: RuleSeverity;
|
|
1214
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1215
|
+
readonly minimumInkVersion?: string;
|
|
1216
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1217
|
+
readonly matchByOccurrence?: boolean;
|
|
1218
|
+
readonly defaultEnabled?: boolean;
|
|
1219
|
+
readonly lifecycle?: "retired";
|
|
1220
|
+
readonly scan?: FileScan;
|
|
1221
|
+
readonly committedFilesOnly?: boolean;
|
|
1222
|
+
readonly recommendation?: string;
|
|
1223
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1224
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1225
|
+
};
|
|
1226
|
+
}, {
|
|
1227
|
+
readonly key: "react-doctor/tenant-static-proxy-risk";
|
|
1228
|
+
readonly id: "tenant-static-proxy-risk";
|
|
1229
|
+
readonly source: "react-doctor";
|
|
1230
|
+
readonly originallyExternal: false;
|
|
1231
|
+
readonly rule: {
|
|
1232
|
+
readonly framework: "global";
|
|
1233
|
+
readonly category: "Security";
|
|
1234
|
+
readonly tags: readonly string[];
|
|
1235
|
+
readonly id: string;
|
|
1236
|
+
readonly title?: string;
|
|
1237
|
+
readonly severity: RuleSeverity;
|
|
1238
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1239
|
+
readonly minimumInkVersion?: string;
|
|
1240
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1241
|
+
readonly matchByOccurrence?: boolean;
|
|
1242
|
+
readonly defaultEnabled?: boolean;
|
|
1243
|
+
readonly lifecycle?: "retired";
|
|
1244
|
+
readonly scan?: FileScan;
|
|
1245
|
+
readonly committedFilesOnly?: boolean;
|
|
1246
|
+
readonly recommendation?: string;
|
|
1247
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1248
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1249
|
+
};
|
|
1250
|
+
}, {
|
|
1251
|
+
readonly key: "react-doctor/unsafe-json-in-html";
|
|
1252
|
+
readonly id: "unsafe-json-in-html";
|
|
1253
|
+
readonly source: "react-doctor";
|
|
1254
|
+
readonly originallyExternal: false;
|
|
1255
|
+
readonly rule: {
|
|
1256
|
+
readonly framework: "global";
|
|
1257
|
+
readonly category: "Security";
|
|
1258
|
+
readonly tags: readonly string[];
|
|
1259
|
+
readonly id: string;
|
|
1260
|
+
readonly title?: string;
|
|
1261
|
+
readonly severity: RuleSeverity;
|
|
1262
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1263
|
+
readonly minimumInkVersion?: string;
|
|
1264
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1265
|
+
readonly matchByOccurrence?: boolean;
|
|
1266
|
+
readonly defaultEnabled?: boolean;
|
|
1267
|
+
readonly lifecycle?: "retired";
|
|
1268
|
+
readonly scan?: FileScan;
|
|
1269
|
+
readonly committedFilesOnly?: boolean;
|
|
1270
|
+
readonly recommendation?: string;
|
|
1271
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1272
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1273
|
+
};
|
|
1274
|
+
}, {
|
|
1275
|
+
readonly key: "react-doctor/untrusted-redirect-following";
|
|
1276
|
+
readonly id: "untrusted-redirect-following";
|
|
1277
|
+
readonly source: "react-doctor";
|
|
1278
|
+
readonly originallyExternal: false;
|
|
1279
|
+
readonly rule: {
|
|
1280
|
+
readonly framework: "global";
|
|
1281
|
+
readonly category: "Security";
|
|
1282
|
+
readonly tags: readonly string[];
|
|
1283
|
+
readonly id: string;
|
|
1284
|
+
readonly title?: string;
|
|
1285
|
+
readonly severity: RuleSeverity;
|
|
1286
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1287
|
+
readonly minimumInkVersion?: string;
|
|
1288
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1289
|
+
readonly matchByOccurrence?: boolean;
|
|
1290
|
+
readonly defaultEnabled?: boolean;
|
|
1291
|
+
readonly lifecycle?: "retired";
|
|
1292
|
+
readonly scan?: FileScan;
|
|
1293
|
+
readonly committedFilesOnly?: boolean;
|
|
1294
|
+
readonly recommendation?: string;
|
|
1295
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1296
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1297
|
+
};
|
|
1298
|
+
}, {
|
|
1299
|
+
readonly key: "react-doctor/url-prefilled-privileged-action";
|
|
1300
|
+
readonly id: "url-prefilled-privileged-action";
|
|
1301
|
+
readonly source: "react-doctor";
|
|
1302
|
+
readonly originallyExternal: false;
|
|
1303
|
+
readonly rule: {
|
|
1304
|
+
readonly framework: "global";
|
|
1305
|
+
readonly category: "Security";
|
|
1306
|
+
readonly tags: readonly string[];
|
|
1307
|
+
readonly id: string;
|
|
1308
|
+
readonly title?: string;
|
|
1309
|
+
readonly severity: RuleSeverity;
|
|
1310
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1311
|
+
readonly minimumInkVersion?: string;
|
|
1312
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1313
|
+
readonly matchByOccurrence?: boolean;
|
|
1314
|
+
readonly defaultEnabled?: boolean;
|
|
1315
|
+
readonly lifecycle?: "retired";
|
|
1316
|
+
readonly scan?: FileScan;
|
|
1317
|
+
readonly committedFilesOnly?: boolean;
|
|
1318
|
+
readonly recommendation?: string;
|
|
1319
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1320
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1321
|
+
};
|
|
1322
|
+
}, {
|
|
1323
|
+
readonly key: "react-doctor/webhook-signature-risk";
|
|
1324
|
+
readonly id: "webhook-signature-risk";
|
|
1325
|
+
readonly source: "react-doctor";
|
|
1326
|
+
readonly originallyExternal: false;
|
|
1327
|
+
readonly rule: {
|
|
1328
|
+
readonly framework: "global";
|
|
1329
|
+
readonly category: "Security";
|
|
1330
|
+
readonly tags: readonly string[];
|
|
1331
|
+
readonly id: string;
|
|
1332
|
+
readonly title?: string;
|
|
1333
|
+
readonly severity: RuleSeverity;
|
|
1334
|
+
readonly requires?: ReadonlyArray<Capability>;
|
|
1335
|
+
readonly minimumInkVersion?: string;
|
|
1336
|
+
readonly disabledWhen?: ReadonlyArray<Capability>;
|
|
1337
|
+
readonly matchByOccurrence?: boolean;
|
|
1338
|
+
readonly defaultEnabled?: boolean;
|
|
1339
|
+
readonly lifecycle?: "retired";
|
|
1340
|
+
readonly scan?: FileScan;
|
|
1341
|
+
readonly committedFilesOnly?: boolean;
|
|
1342
|
+
readonly recommendation?: string;
|
|
1343
|
+
readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
|
|
1344
|
+
readonly create: (context: RuleContext) => RuleVisitors;
|
|
1345
|
+
};
|
|
1346
|
+
}];
|
|
1347
|
+
//#endregion
|
|
1348
|
+
//#region src/plugin/utils/reset-filesystem-caches.d.ts
|
|
1349
|
+
declare const resetFilesystemCaches: () => void;
|
|
1350
|
+
//#endregion
|
|
1351
|
+
//#region src/plugin/rules/security-scan/utils/classify-security-scan-file.d.ts
|
|
1352
|
+
interface SecurityScanFileClassification {
|
|
1353
|
+
readonly bucket: "priority" | "artifact" | "other";
|
|
1354
|
+
readonly isGeneratedBundleByName: boolean;
|
|
1355
|
+
}
|
|
1356
|
+
declare const classifySecurityScanFile: (relativePath: string) => SecurityScanFileClassification | null;
|
|
1357
|
+
declare const shouldReadSecurityScanContent: (relativePath: string, isGeneratedBundle: boolean) => boolean;
|
|
1358
|
+
//#endregion
|
|
1359
|
+
//#region src/react-native-dependency-names.d.ts
|
|
1360
|
+
declare const REACT_NATIVE_DEPENDENCY_NAMES: ReadonlySet<string>;
|
|
1361
|
+
declare const REACT_NATIVE_DEPENDENCY_PREFIXES: ReadonlyArray<string>;
|
|
1362
|
+
declare const isReactNativeDependencyName: (dependencyName: string) => boolean;
|
|
1363
|
+
//#endregion
|
|
1364
|
+
//#region src/core.d.ts
|
|
1365
|
+
declare const REACT_DOCTOR_RULES: readonly CoreRuleRegistryEntry[];
|
|
1366
|
+
declare const REACT_DOCTOR_RULE_REGISTRY: Readonly<Record<string, CoreRuleMetadata>>;
|
|
1367
|
+
declare const ALL_REACT_DOCTOR_RULE_KEYS: ReadonlySet<string>;
|
|
1368
|
+
declare const FRAMEWORK_SPECIFIC_RULE_KEYS: ReadonlySet<string>;
|
|
1369
|
+
//#endregion
|
|
1370
|
+
export { ScanFinding as A, RuleFramework as C, RuleContext as D, BaseRuleContext as E, FrameworkToken as F, Capability as M, CapabilityQuery as N, EsTreeNode as O, FRAMEWORK_TOKENS as P, Rule as S, RuleVisitors as T, MOTION_LIBRARY_PACKAGES as _, REACT_NATIVE_DEPENDENCY_NAMES as a, OxlintRuleSeverity as b, classifySecurityScanFile as c, reactDoctorScanRules as d, CROSS_FILE_DEPENDENCY_COLLECTORS as f, CROSS_FILE_RULE_IDS as g, CrossFileProbeTrace as h, REACT_DOCTOR_RULE_REGISTRY as i, ScannedFile as j, FileScan as k, shouldReadSecurityScanContent as l, collectCrossFileDependencyProbes as m, FRAMEWORK_SPECIFIC_RULE_KEYS as n, REACT_NATIVE_DEPENDENCY_PREFIXES as o, UNBOUNDED_CROSS_FILE_RULE_IDS as p, REACT_DOCTOR_RULES as r, isReactNativeDependencyName as s, ALL_REACT_DOCTOR_RULE_KEYS as t, resetFilesystemCaches as u, EXTERNAL_RULES as v, RuleSeverity as w, CoreRuleMetadata as x, REACT_COMPILER_RULES as y };
|
|
1371
|
+
//# sourceMappingURL=core-NYcNjo1f.d.ts.map
|