Home / File/ namespaces.ts — ui Source File

namespaces.ts — ui Source File

Architecture documentation for namespaces.ts, a typescript file in the ui codebase. 5 imports, 1 dependents.

File typescript FrameworkTooling SchemaValidation 5 imports 1 dependents 1 functions

Entity Profile

Dependency Diagram

graph LR
  297db2a9_924f_f0dd_ef7f_dae1d3314091["namespaces.ts"]
  2ae56314_aa15_5495_52a2_137787e7b210["constants"]
  297db2a9_924f_f0dd_ef7f_dae1d3314091 --> 2ae56314_aa15_5495_52a2_137787e7b210
  0ec72e6a_72c2_0fcf_92e9_0b0612e46d40["errors"]
  297db2a9_924f_f0dd_ef7f_dae1d3314091 --> 0ec72e6a_72c2_0fcf_92e9_0b0612e46d40
  0ce0166b_94b8_3d75_f122_e290dcdf3f26["parser"]
  297db2a9_924f_f0dd_ef7f_dae1d3314091 --> 0ce0166b_94b8_3d75_f122_e290dcdf3f26
  d51fcbb7_2296_ff31_c04b_1cb928fc5bc9["resolver"]
  297db2a9_924f_f0dd_ef7f_dae1d3314091 --> d51fcbb7_2296_ff31_c04b_1cb928fc5bc9
  b2895591_2a74_d518_deda_2f26be766dcb["get-config"]
  297db2a9_924f_f0dd_ef7f_dae1d3314091 --> b2895591_2a74_d518_deda_2f26be766dcb
  9ef55c05_4ae8_de0d_13ee_4570ec1b1c55["namespaces.test.ts"]
  9ef55c05_4ae8_de0d_13ee_4570ec1b1c55 --> 297db2a9_924f_f0dd_ef7f_dae1d3314091
  style 297db2a9_924f_f0dd_ef7f_dae1d3314091 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { BUILTIN_REGISTRIES } from "@/src/registry/constants"
import { RegistryNotConfiguredError } from "@/src/registry/errors"
import { parseRegistryAndItemFromString } from "@/src/registry/parser"
import { fetchRegistryItems } from "@/src/registry/resolver"
import { Config } from "@/src/utils/get-config"

// Recursively discovers all registry namespaces including nested ones.
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

Dependencies

  • constants
  • errors
  • get-config
  • parser
  • resolver

Frequently Asked Questions

What does namespaces.ts do?
namespaces.ts is a source file in the ui codebase, written in typescript. It belongs to the FrameworkTooling domain, SchemaValidation subdomain.
What functions are defined in namespaces.ts?
namespaces.ts defines 1 function(s): resolveRegistryNamespaces.
What does namespaces.ts depend on?
namespaces.ts imports 5 module(s): constants, errors, get-config, parser, resolver.
What files import namespaces.ts?
namespaces.ts is imported by 1 file(s): namespaces.test.ts.
Where is namespaces.ts in the architecture?
namespaces.ts is located at packages/shadcn/src/registry/namespaces.ts (domain: FrameworkTooling, subdomain: SchemaValidation, directory: packages/shadcn/src/registry).

Analyze Your Own Codebase

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

Try Supermodel Free