Home / File/ validator.ts — ui Source File

validator.ts — ui Source File

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

File typescript FrameworkTooling SchemaValidation 8 imports 1 dependents 3 functions

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()
}

Subdomains

Dependencies

  • builder
  • config
  • context
  • env
  • errors
  • get-config
  • schema
  • zod

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