Home / Function/ resolveRegistryNamespaces() — ui Function Reference

resolveRegistryNamespaces() — ui Function Reference

Architecture documentation for the resolveRegistryNamespaces() function in namespaces.ts from the ui codebase.

Entity Profile

Dependency Diagram

graph TD
  42e6b9b5_85dc_9b2b_3b20_d2a846886ce1["resolveRegistryNamespaces()"]
  297db2a9_924f_f0dd_ef7f_dae1d3314091["namespaces.ts"]
  42e6b9b5_85dc_9b2b_3b20_d2a846886ce1 -->|defined in| 297db2a9_924f_f0dd_ef7f_dae1d3314091
  style 42e6b9b5_85dc_9b2b_3b20_d2a846886ce1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/shadcn/src/registry/namespaces.ts lines 8–63

export async function resolveRegistryNamespaces(
  components: string[],
  config: Config
) {
  const discoveredNamespaces = new Set<string>()
  const visitedItems = new Set<string>()
  const itemsToProcess = [...components]

  while (itemsToProcess.length > 0) {
    const currentItem = itemsToProcess.shift()!

    if (visitedItems.has(currentItem)) {
      continue
    }
    visitedItems.add(currentItem)

    const { registry } = parseRegistryAndItemFromString(currentItem)
    if (registry && !BUILTIN_REGISTRIES[registry]) {
      discoveredNamespaces.add(registry)
    }

    try {
      const [item] = await fetchRegistryItems([currentItem], config, {
        useCache: true,
      })

      if (item?.registryDependencies) {
        for (const dep of item.registryDependencies) {
          const { registry: depRegistry } = parseRegistryAndItemFromString(dep)
          if (depRegistry && !BUILTIN_REGISTRIES[depRegistry]) {
            discoveredNamespaces.add(depRegistry)
          }

          if (!visitedItems.has(dep)) {
            itemsToProcess.push(dep)
          }
        }
      }
    } catch (error) {
      // If a registry is not configured, we still track it.
      if (error instanceof RegistryNotConfiguredError) {
        const { registry } = parseRegistryAndItemFromString(currentItem)
        if (registry && !BUILTIN_REGISTRIES[registry]) {
          discoveredNamespaces.add(registry)
        }
        continue
      }

      // For other errors (network, parsing, etc.), we skip this item
      // but continue processing others to discover as many namespaces as possible.
      continue
    }
  }

  return Array.from(discoveredNamespaces)
}

Subdomains

Frequently Asked Questions

What does resolveRegistryNamespaces() do?
resolveRegistryNamespaces() is a function in the ui codebase, defined in packages/shadcn/src/registry/namespaces.ts.
Where is resolveRegistryNamespaces() defined?
resolveRegistryNamespaces() is defined in packages/shadcn/src/registry/namespaces.ts at line 8.

Analyze Your Own Codebase

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

Try Supermodel Free