Home / Function/ resolveComponentImports() — astro Function Reference

resolveComponentImports() — astro Function Reference

Architecture documentation for the resolveComponentImports() function in runtime.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  911f75ce_1225_3f21_357b_d9e684166543["resolveComponentImports()"]
  df14bb08_8e2c_26c3_53bb_884062fbbac0["runtime.ts"]
  911f75ce_1225_3f21_357b_d9e684166543 -->|defined in| df14bb08_8e2c_26c3_53bb_884062fbbac0
  27a526d2_9eb5_700e_cf7c_1003e4c65079["createContentComponent()"]
  27a526d2_9eb5_700e_cf7c_1003e4c65079 -->|calls| 911f75ce_1225_3f21_357b_d9e684166543
  d1e88f74_9bf9_af1f_5131_304ce05b84fb["transformRespectsRender()"]
  911f75ce_1225_3f21_357b_d9e684166543 -->|calls| d1e88f74_9bf9_af1f_5131_304ce05b84fb
  style 911f75ce_1225_3f21_357b_d9e684166543 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/integrations/markdoc/src/runtime.ts lines 115–149

export function resolveComponentImports(
	markdocConfig: Required<Pick<AstroMarkdocConfig, 'tags' | 'nodes'>>,
	tagComponentMap: Record<string, AstroInstance['default']>,
	nodeComponentMap: Record<NodeType, AstroInstance['default']>,
) {
	for (const [tag, render] of Object.entries(tagComponentMap)) {
		const config = markdocConfig.tags[tag];
		if (config) {
			config.render = render;
			// When a custom `render` component is specified and the transform doesn't
			// respect the render property, remove the transform so `render` wins.
			// This allows users to spread built-in Markdoc node/tag configs
			// (e.g., `...Markdoc.nodes.fence`) and override rendering with a custom component.
			// See https://github.com/withastro/astro/issues/9708
			if (config.transform && !transformRespectsRender(config.transform, tag)) {
				delete config.transform;
			}
		}
	}
	for (const [node, render] of Object.entries(nodeComponentMap)) {
		const config = markdocConfig.nodes[node as NodeType];
		if (config) {
			config.render = render;
			// When a custom `render` component is specified and the transform doesn't
			// respect the render property, remove the transform so `render` wins.
			// This allows users to spread built-in Markdoc node/tag configs
			// (e.g., `...Markdoc.nodes.fence`) and override rendering with a custom component.
			// See https://github.com/withastro/astro/issues/9708
			if (config.transform && !transformRespectsRender(config.transform, node)) {
				delete config.transform;
			}
		}
	}
	return markdocConfig;
}

Domain

Subdomains

Frequently Asked Questions

What does resolveComponentImports() do?
resolveComponentImports() is a function in the astro codebase, defined in packages/integrations/markdoc/src/runtime.ts.
Where is resolveComponentImports() defined?
resolveComponentImports() is defined in packages/integrations/markdoc/src/runtime.ts at line 115.
What does resolveComponentImports() call?
resolveComponentImports() calls 1 function(s): transformRespectsRender.
What calls resolveComponentImports()?
resolveComponentImports() is called by 1 function(s): createContentComponent.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free