validator.ts — ui Source File
Architecture documentation for validator.ts, a typescript file in the ui codebase. 8 imports, 1 dependents.
Entity Profile
Dependency Diagram
graph LR 3c64fff0_e1b3_c39a_cce5_e39b74640768["validator.ts"] 6cb39c88_2e7f_0418_0b3e_763f882f13ff["builder"] 3c64fff0_e1b3_c39a_cce5_e39b74640768 --> 6cb39c88_2e7f_0418_0b3e_763f882f13ff 1f2f79fc_356c_e956_002d_737290df27fd["config"] 3c64fff0_e1b3_c39a_cce5_e39b74640768 --> 1f2f79fc_356c_e956_002d_737290df27fd ff842930_3a95_1c03_7d51_b342f47a7971["context"] 3c64fff0_e1b3_c39a_cce5_e39b74640768 --> ff842930_3a95_1c03_7d51_b342f47a7971 cb7fc1a5_a9db_7ce3_c6b9_af10f42826a9["env"] 3c64fff0_e1b3_c39a_cce5_e39b74640768 --> cb7fc1a5_a9db_7ce3_c6b9_af10f42826a9 0ec72e6a_72c2_0fcf_92e9_0b0612e46d40["errors"] 3c64fff0_e1b3_c39a_cce5_e39b74640768 --> 0ec72e6a_72c2_0fcf_92e9_0b0612e46d40 a3b2545e_3d8c_699d_ef11_6ab18db14666["schema"] 3c64fff0_e1b3_c39a_cce5_e39b74640768 --> a3b2545e_3d8c_699d_ef11_6ab18db14666 b2895591_2a74_d518_deda_2f26be766dcb["get-config"] 3c64fff0_e1b3_c39a_cce5_e39b74640768 --> b2895591_2a74_d518_deda_2f26be766dcb 6802ce19_522d_e5fb_e458_8826d9f6952e["zod"] 3c64fff0_e1b3_c39a_cce5_e39b74640768 --> 6802ce19_522d_e5fb_e458_8826d9f6952e 24f1b389_7a1f_e26c_433e_10dcc3d90045["validator.test.ts"] 24f1b389_7a1f_e26c_433e_10dcc3d90045 --> 3c64fff0_e1b3_c39a_cce5_e39b74640768 style 3c64fff0_e1b3_c39a_cce5_e39b74640768 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { buildUrlAndHeadersForRegistryItem } from "@/src/registry/builder"
import { configWithDefaults } from "@/src/registry/config"
import { clearRegistryContext } from "@/src/registry/context"
import { extractEnvVars } from "@/src/registry/env"
import { RegistryMissingEnvironmentVariablesError } from "@/src/registry/errors"
import { registryConfigItemSchema } from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { z } from "zod"
export function extractEnvVarsFromRegistryConfig(
config: z.infer<typeof registryConfigItemSchema>
): string[] {
const vars = new Set<string>()
if (typeof config === "string") {
extractEnvVars(config).forEach((v) => vars.add(v))
} else {
extractEnvVars(config.url).forEach((v) => vars.add(v))
if (config.params) {
Object.values(config.params).forEach((value) => {
extractEnvVars(value).forEach((v) => vars.add(v))
})
}
if (config.headers) {
Object.values(config.headers).forEach((value) => {
extractEnvVars(value).forEach((v) => vars.add(v))
})
}
}
return Array.from(vars)
}
export function validateRegistryConfig(
registryName: string,
config: z.infer<typeof registryConfigItemSchema>
): void {
const requiredVars = extractEnvVarsFromRegistryConfig(config)
const missing = requiredVars.filter((v) => !process.env[v])
if (missing.length > 0) {
throw new RegistryMissingEnvironmentVariablesError(registryName, missing)
}
}
export function validateRegistryConfigForItems(
items: string[],
config?: Config
): void {
for (const item of items) {
buildUrlAndHeadersForRegistryItem(item, configWithDefaults(config))
}
// Clear the registry context after validation.
clearRegistryContext()
}
Domain
Subdomains
Functions
Dependencies
- builder
- config
- context
- env
- errors
- get-config
- schema
- zod
Imported By
Source
Frequently Asked Questions
What does validator.ts do?
validator.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 validator.ts?
validator.ts defines 3 function(s): extractEnvVarsFromRegistryConfig, validateRegistryConfig, validateRegistryConfigForItems.
What does validator.ts depend on?
validator.ts imports 8 module(s): builder, config, context, env, errors, get-config, schema, zod.
What files import validator.ts?
validator.ts is imported by 1 file(s): validator.test.ts.
Where is validator.ts in the architecture?
validator.ts is located at packages/shadcn/src/registry/validator.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