namespaces.ts — ui Source File
Architecture documentation for namespaces.ts, a typescript file in the ui codebase. 5 imports, 1 dependents.
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)
}
Domain
Subdomains
Functions
Dependencies
- constants
- errors
- get-config
- parser
- resolver
Imported By
Source
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