Volt.HMR.ImportGraph (Volt v0.13.0)

Copy Markdown View Source

ETS-backed raw import graph for HMR boundary fallback.

The dev server records resolved module relationships in Volt.HMR.ModuleGraph. This graph keeps parser-extracted import specifiers as a fallback for files that have not been served through the dev module graph yet.

Summary

Functions

Clear the entire graph.

Create the import graph ETS table. Called once from Application.start/2.

Find all files that import the given specifier.

Find all files that import a specifier matching the given predicate.

Get the imports for a file path.

Remove a file from the graph.

Update the imports for a file path.

Update imports from compiled code.

Functions

clear()

@spec clear() :: :ok

Clear the entire graph.

create_table()

@spec create_table() :: :ok

Create the import graph ETS table. Called once from Application.start/2.

dependents(specifier)

@spec dependents(String.t()) :: [String.t()]

Find all files that import the given specifier.

Used by fallback HMR boundary lookup to propagate changes upward through raw imports.

dependents_matching(predicate)

@spec dependents_matching((String.t() -> boolean())) :: [String.t()]

Find all files that import a specifier matching the given predicate.

The predicate receives each import specifier and should return true if it matches the file being searched for.

imports_of(path)

@spec imports_of(String.t()) :: [String.t()]

Get the imports for a file path.

remove(path)

@spec remove(String.t()) :: :ok

Remove a file from the graph.

update(path, imports)

@spec update(String.t(), [String.t()]) :: :ok

Update the imports for a file path.

update_from_compiled(path, compiled_code)

@spec update_from_compiled(String.t(), String.t()) :: :ok

Update imports from compiled code.