fob_graph/memory/
types.rs

1//! Type definitions for the in-memory ModuleGraph implementation.
2
3use super::super::{ImportSpecifier, ModuleId, SourceSpan};
4
5/// Information about a class member symbol
6#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7pub struct ClassMemberInfo {
8    pub module_id: ModuleId,
9    pub symbol: super::super::symbol::Symbol,
10    pub metadata: super::super::symbol::ClassMemberMetadata,
11}
12
13/// Information about an enum member
14#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
15pub struct EnumMemberInfo {
16    pub module_id: ModuleId,
17    pub symbol: super::super::symbol::Symbol,
18    pub value: Option<super::super::symbol::EnumMemberValue>,
19}
20
21/// A side-effect-only import (no bindings, just execution)
22#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
23pub struct SideEffectImport {
24    pub importer: ModuleId,
25    pub source: String,
26    pub resolved_to: Option<ModuleId>,
27    pub span: SourceSpan,
28}
29
30/// Information about a namespace import
31#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
32pub struct NamespaceImportInfo {
33    pub importer: ModuleId,
34    pub namespace_name: String,
35    pub source: String,
36    pub resolved_to: Option<ModuleId>,
37}
38
39/// A type-only import (TypeScript)
40#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
41pub struct TypeOnlyImport {
42    pub importer: ModuleId,
43    pub source: String,
44    pub specifiers: Vec<ImportSpecifier>,
45    pub span: SourceSpan,
46}