pub struct ModuleInfo {Show 59 fields
pub file_id: FileId,
pub exports: Vec<ExportInfo>,
pub imports: Vec<ImportInfo>,
pub re_exports: Vec<ReExportInfo>,
pub dynamic_imports: Vec<DynamicImportInfo>,
pub dynamic_import_patterns: Vec<DynamicImportPattern>,
pub require_calls: Vec<RequireCallInfo>,
pub package_path_references: Vec<String>,
pub member_accesses: Vec<MemberAccess>,
pub whole_object_uses: Vec<String>,
pub has_cjs_exports: bool,
pub has_angular_component_template_url: bool,
pub content_hash: u64,
pub suppressions: Vec<Suppression>,
pub unknown_suppression_kinds: Vec<UnknownSuppressionKind>,
pub unused_import_bindings: Vec<String>,
pub type_referenced_import_bindings: Vec<String>,
pub value_referenced_import_bindings: Vec<String>,
pub line_offsets: Vec<u32>,
pub complexity: Vec<FunctionComplexity>,
pub flag_uses: Vec<FlagUse>,
pub class_heritage: Vec<ClassHeritageInfo>,
pub injection_tokens: Vec<(String, String)>,
pub local_type_declarations: Vec<LocalTypeDeclaration>,
pub public_signature_type_references: Vec<PublicSignatureTypeReference>,
pub namespace_object_aliases: Vec<NamespaceObjectAlias>,
pub iconify_prefixes: Vec<String>,
pub iconify_icon_names: Vec<String>,
pub auto_import_candidates: Vec<String>,
pub directives: Vec<String>,
pub client_only_dynamic_import_spans: Vec<u32>,
pub security_sinks: Vec<SinkSite>,
pub security_sinks_skipped: u32,
pub security_unresolved_callee_sites: Vec<SkippedSecurityCalleeSite>,
pub tainted_bindings: Vec<TaintedBinding>,
pub sanitized_sink_args: Vec<SanitizedSinkArg>,
pub security_control_sites: Vec<SecurityControlSite>,
pub callee_uses: Vec<CalleeUse>,
pub misplaced_directives: Vec<MisplacedDirectiveSite>,
pub di_key_sites: Vec<DiKeySite>,
pub has_dynamic_provide: bool,
pub referenced_import_bindings: Vec<String>,
pub component_props: Vec<ComponentProp>,
pub has_props_attrs_fallthrough: bool,
pub has_define_expose: bool,
pub has_define_model: bool,
pub has_unharvestable_props: bool,
pub component_emits: Vec<ComponentEmit>,
pub has_unharvestable_emits: bool,
pub has_dynamic_emit: bool,
pub has_emit_whole_object_use: bool,
pub load_return_keys: Vec<LoadReturnKey>,
pub has_unharvestable_load: bool,
pub has_load_data_whole_use: bool,
pub has_page_data_store_whole_use: bool,
pub component_functions: Vec<ComponentFunction>,
pub react_props: Vec<ComponentProp>,
pub hook_uses: Vec<HookUse>,
pub render_edges: Vec<RenderEdge>,
}Expand description
Extracted module information from a single file.
Fields§
§file_id: FileIdUnique identifier for this file.
exports: Vec<ExportInfo>All export declarations in this module.
imports: Vec<ImportInfo>All import declarations in this module.
re_exports: Vec<ReExportInfo>All re-export declarations (e.g., export { foo } from './bar').
dynamic_imports: Vec<DynamicImportInfo>All dynamic import() calls with string literal sources.
dynamic_import_patterns: Vec<DynamicImportPattern>Dynamic import patterns.
require_calls: Vec<RequireCallInfo>All require() calls.
package_path_references: Vec<String>Package names statically referenced through package path resolution.
member_accesses: Vec<MemberAccess>Static member access expressions (e.g., Status.Active).
whole_object_uses: Vec<String>Identifiers used in whole-object access patterns.
has_cjs_exports: boolWhether this module uses CommonJS exports.
has_angular_component_template_url: boolWhether this module declares an Angular component templateUrl.
content_hash: u64xxh3 hash of the file content for incremental caching.
suppressions: Vec<Suppression>Inline suppression directives parsed from comments.
unknown_suppression_kinds: Vec<UnknownSuppressionKind>Suppression tokens that did not parse to any known IssueKind.
Surfaced as StaleSuppression findings via find_stale so users see
typos or obsolete kind names instead of having the entire marker
silently discarded. See issue #449.
unused_import_bindings: Vec<String>Local names of import bindings that are never referenced in this file.
Populated via oxc_semantic scope analysis. Used at graph-build time
to skip adding references for imports whose binding is never read,
improving unused-export detection precision.
type_referenced_import_bindings: Vec<String>Local import bindings that are referenced from TypeScript type positions.
Used to distinguish value-namespace and type-namespace references when a
module exports both const X and type X.
value_referenced_import_bindings: Vec<String>Local import bindings referenced from runtime/value positions.
line_offsets: Vec<u32>Pre-computed byte offsets where each line starts.
complexity: Vec<FunctionComplexity>Per-function complexity metrics.
flag_uses: Vec<FlagUse>Feature flag use sites.
class_heritage: Vec<ClassHeritageInfo>Heritage metadata for exported classes that declare implements.
injection_tokens: Vec<(String, String)>Angular InjectionToken<Interface> declarations, as
(token_export_name, interface_name) pairs. Recorded only for
new InjectionToken<I>(...) initializers whose InjectionToken is
imported from @angular/core. The analyze layer follows the token’s
interface type argument to the classes that implement it so a template
member call through inject(TOKEN) credits the concrete implementation.
See issue #920 (follow-up to #911 / #913).
local_type_declarations: Vec<LocalTypeDeclaration>Local type-capable declarations.
public_signature_type_references: Vec<PublicSignatureTypeReference>Type references in exported public signatures.
namespace_object_aliases: Vec<NamespaceObjectAlias>Aliases of namespace imports re-exported through an object literal.
iconify_prefixes: Vec<String>Deduped Iconify collection prefixes found in static icon props.
iconify_icon_names: Vec<String>Deduped Nuxt UI i-<collection>-<icon> icon class suffixes found in
static script-side icon properties.
auto_import_candidates: Vec<String>Bare identifiers that may be resolved by framework auto-imports.
directives: Vec<String>File-level string directives in source order (e.g. "use client",
"use server", "use strict"). Captured from Program::directives.
Consumed by the security client-server-leak detector to identify
React Server Component client boundaries.
client_only_dynamic_import_spans: Vec<u32>Byte-offset starts of dynamic import() expressions wrapped in
next/dynamic(() => import('./X'), { ssr: false }). The ssr:false option
is Next.js’s sanctioned way to pull a client-only module, so a server-only
module reached ONLY through such an import is NOT a client-server leak. The
security client-server-leak BFS resolves each dynamic import to a graph
edge; these span starts let the BFS exclude exactly those edges (matched
against the edge’s import_span). Empty for files with no ssr:false
dynamic import. Captured only by JS/TS extraction.
security_sinks: Vec<SinkSite>Captured security sink sites (category-blind). Consumed by the
catalogue-driven tainted_sink detector. Captured only by JS/TS
extraction; empty for CSS/MDX/etc. See security_matchers.toml.
security_sinks_skipped: u32Count of sink-shaped nodes whose callee could not be flattened to a static path (dynamic dispatch, computed members, aliased bindings). Surfaced in-band so an empty catalogue result with a non-zero count is not a clean bill.
security_unresolved_callee_sites: Vec<SkippedSecurityCalleeSite>Compact span-level diagnostics for skipped security sink callees. Kept
next to security_sinks_skipped so warm-cache and cold-cache security
output can explain where the blind spots are concentrated without source
snippets.
tainted_bindings: Vec<TaintedBinding>Local bindings whose initializer (or destructured object) is a flattened
member-access path. Used by the security tainted_sink detector to
back-trace a sink argument to a known untrusted source: the analyze layer
matches each binding’s source_path against the data-driven source
catalogue (security_matchers.toml [[source]] rows) and treats the
matching local names as source-tainted. Intra-module and name-based
(no scope analysis); a conservative association, never a taint proof.
sanitized_sink_args: Vec<SanitizedSinkArg>Sink arguments that were recognized as sanitizer calls at extraction
time. Used for direct sink calls such as
el.innerHTML = DOMPurify.sanitize(input).
security_control_sites: Vec<SecurityControlSite>Known defensive control call sites found in this module. Consumed only by
the fallow security --surface agent JSON path.
callee_uses: Vec<CalleeUse>Statically flattenable callee paths invoked in this module, deduped per
unique path (first occurrence wins). Consumed by the
boundaries.calls.forbidden detector. Captured unconditionally because
extraction is config-blind; the per-module cost is bounded by the
unique-callee count.
misplaced_directives: Vec<MisplacedDirectiveSite>"use client" / "use server" directive strings written as expression
statements in program.body (misplaced, NOT in the leading
prologue), so the RSC bundler silently ignores them. One entry per
occurrence. Consumed by the misplaced-directive detector. Captured
only by JS/TS extraction.
di_key_sites: Vec<DiKeySite>Vue provide/inject and Svelte setContext/getContext call sites
keyed by an identifier symbol. Consumed by the unprovided-inject
detector to find an inject/getContext whose key is provided nowhere
project-wide. Only identifier-keyed sites are recorded (string-literal
and computed keys abstain). Captured by JS/TS and SFC extraction.
has_dynamic_provide: booltrue when this module contains a provide(...) / *.provide(...) /
setContext(...) call whose key argument is NOT a plain identifier
(spread, computed, member, loop variable). Such a call can provide an
unknowable key, so the unprovided-inject detector abstains on ALL
inject findings project-wide when any reachable module sets this flag.
Mirrors the spread-return whole-object abstain used for Pinia stores.
referenced_import_bindings: Vec<String>Local names of import bindings that ARE referenced somewhere in this file
(script value/type position OR template/markup). The complement of
unused_import_bindings among imports. Derived in
release_resolution_payload (where both imports and
unused_import_bindings are still present) so it survives the release and
is readable by the analyze layer; it is never cached (recomputed on every
cache load). Consumed by the unrendered-component detector to credit a
Vue/Svelte SFC that some file actually imports-and-uses, distinguishing it
from a component reachable only through a barrel re-export.
component_props: Vec<ComponentProp>Vue <script setup> defineProps declared props. Consumed by the
unused-component-prop detector to flag a prop referenced nowhere in its
own SFC. Each entry carries used_in_script / used_in_template.
has_props_attrs_fallthrough: booltrue when the template spreads the whole props/attrs object
(v-bind="$attrs" / v-bind="$props" / v-bind="props") or the
defineProps return is destructured with a rest element. Either form can
consume a prop indirectly, so the detector abstains on the whole file.
has_define_expose: booltrue when the SFC calls defineExpose(...). A prop may be re-exposed,
so the detector conservatively abstains on the whole file.
has_define_model: booltrue when the SFC calls defineModel(...). Two-way model props are out
of scope for v1, so the detector abstains on the whole file.
has_unharvestable_props: booltrue when defineProps was called with an unharvestable argument (a
type-reference type argument such as defineProps<Props>() whose names
require cross-file type resolution). The detector abstains on the whole
file so a prop is never falsely flagged.
component_emits: Vec<ComponentEmit>Vue <script setup> defineEmits declared events. Consumed by the
unused-component-emit detector to flag an event emitted nowhere in its
own SFC. Each entry carries used.
has_unharvestable_emits: booltrue when defineEmits was called with an unharvestable argument (a
type-reference type argument such as defineEmits<MyEmits>(), a
non-literal runtime form, or an unbound defineEmits([...])). The
detector abstains on the whole file so an emit is never falsely flagged.
has_dynamic_emit: booltrue when an emit(<nonLiteral>) call was seen (the emitted event name
cannot be known statically). The detector abstains on the whole file.
has_emit_whole_object_use: booltrue when the defineEmits return binding was used as a WHOLE value
(passed to a function, returned, or spread), which can emit any event
opaquely. The detector abstains on the whole file.
load_return_keys: Vec<LoadReturnKey>SvelteKit load() return-object keys harvested from a
+page.{ts,server.ts,js,server.js} file’s terminal return literal.
Consumed by the unused-load-data-key detector. Empty for every file
that is not a page-load producer (gated by basename at harvest time).
has_unharvestable_load: booltrue when this file’s load() body could not be harvested safely (a
spread return, a non-object/non-literal return, more than one top-level
return, a computed key, or a wrapped/re-exported load). The detector
abstains on the whole file so a key is never falsely flagged.
has_load_data_whole_use: booltrue when this file passes the whole data object opaquely (script
const X = data, fn(data) / fn(...data), or template data={data} /
{...data} in a route component), so a child can read arbitrary keys the
detector cannot see. Name-gated on the data binding. Read ONLY by the
unused-load-data-key detector, so capturing it for all files is
byte-identity-safe. See FP-1 in the plan.
has_page_data_store_whole_use: booltrue when this file uses the whole page.data / $page.data store
object opaquely (e.g. Object.values(page.data), {...$page.data}), so a
reflective read could consume any route’s key. Drives the
unused-load-data-key detector’s project-wide abstain. Derived in
release_resolution_payload from whole_object_uses BEFORE that vector is
released (mirroring referenced_import_bindings), so it survives the
release the detector runs after; it is never cached (recomputed each run
from the cached whole_object_uses). Reassignment forms
(const all = $page.data) are not whole-object-tracked and stay out of
scope, matching the syntactic analyzer’s conservative posture.
component_functions: Vec<ComponentFunction>React/JSX component definitions: functions/arrows whose body returns JSX.
Captured only for .jsx/.tsx files when a React/Preact dependency is
plausible. Consumed by the React unused-component-prop arm and the
complexity-fold phase. Empty for non-React files.
react_props: Vec<ComponentProp>React component props (reuses the shared ComponentProp struct). For
React, used_in_template is always false and used_in_script means
used-in-body. Empty for non-React files.
hook_uses: Vec<HookUse>React hook call sites (useState / useEffect / useMemo /
useCallback / custom use*). Drives hook-density complexity context.
Empty for non-React files.
render_edges: Vec<RenderEdge>React render edges: one component rendering another. Captured with the
child’s written name; child-to-FileId resolution is deferred to graph
build. Empty for non-React files.
Implementations§
Source§impl ModuleInfo
impl ModuleInfo
Sourcepub fn release_resolution_payload(&mut self)
pub fn release_resolution_payload(&mut self)
Release extraction payload that resolution has already copied into the graph.
This keeps fields needed by analysis, health, security, LSP, coverage,
and hash drift checks, while dropping vectors that otherwise duplicate
data owned by ResolvedModule or already credited into the module graph.
Trait Implementations§
Source§impl Clone for ModuleInfo
impl Clone for ModuleInfo
Source§fn clone(&self) -> ModuleInfo
fn clone(&self) -> ModuleInfo
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ModuleInfo
impl RefUnwindSafe for ModuleInfo
impl Send for ModuleInfo
impl Sync for ModuleInfo
impl Unpin for ModuleInfo
impl UnsafeUnpin for ModuleInfo
impl UnwindSafe for ModuleInfo
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more