Home / File/ search.ts — ui Source File

search.ts — ui Source File

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

File typescript FrameworkTooling SchemaValidation 6 imports 1 dependents 4 functions

Entity Profile

Dependency Diagram

graph LR
  97050a69_2c4b_4c20_ca72_89be3ec705bd["search.ts"]
  c41eed12_c415_48c8_bcf4_9d09d3424a18["api.ts"]
  97050a69_2c4b_4c20_ca72_89be3ec705bd --> c41eed12_c415_48c8_bcf4_9d09d3424a18
  95834bbc_689d_8b36_7d45_d37bbccd3517["getRegistry"]
  97050a69_2c4b_4c20_ca72_89be3ec705bd --> 95834bbc_689d_8b36_7d45_d37bbccd3517
  a3b2545e_3d8c_699d_ef11_6ab18db14666["schema"]
  97050a69_2c4b_4c20_ca72_89be3ec705bd --> a3b2545e_3d8c_699d_ef11_6ab18db14666
  b2895591_2a74_d518_deda_2f26be766dcb["get-config"]
  97050a69_2c4b_4c20_ca72_89be3ec705bd --> b2895591_2a74_d518_deda_2f26be766dcb
  efb28b80_2677_0692_ff1f_c57fedcf6952["fuzzysort"]
  97050a69_2c4b_4c20_ca72_89be3ec705bd --> efb28b80_2677_0692_ff1f_c57fedcf6952
  6802ce19_522d_e5fb_e458_8826d9f6952e["zod"]
  97050a69_2c4b_4c20_ca72_89be3ec705bd --> 6802ce19_522d_e5fb_e458_8826d9f6952e
  e11ff698_0507_c6bc_62af_f84a56089cf7["search.test.ts"]
  e11ff698_0507_c6bc_62af_f84a56089cf7 --> 97050a69_2c4b_4c20_ca72_89be3ec705bd
  style 97050a69_2c4b_4c20_ca72_89be3ec705bd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { searchResultItemSchema, searchResultsSchema } from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import fuzzysort from "fuzzysort"
import { z } from "zod"

import { getRegistry } from "./api"

export async function searchRegistries(
  registries: string[],
  options?: {
    query?: string
    limit?: number
    offset?: number
    config?: Partial<Config>
    useCache?: boolean
  }
) {
  const { query, limit, offset, config, useCache } = options || {}

  let allItems: z.infer<typeof searchResultItemSchema>[] = []

  for (const registry of registries) {
    const registryData = await getRegistry(registry, { config, useCache })

    const itemsWithRegistry = (registryData.items || []).map((item) => ({
      name: item.name,
      type: item.type,
      description: item.description,
      registry: registry,
      addCommandArgument: buildRegistryItemNameFromRegistry(
        item.name,
        registry
      ),
    }))

    allItems = allItems.concat(itemsWithRegistry)
  }

  if (query) {
    allItems = searchItems(allItems, {
      query,
      limit: allItems.length,
      keys: ["name", "description"],
    }) as z.infer<typeof searchResultItemSchema>[]
  }

  const paginationOffset = offset || 0
  const paginationLimit = limit || allItems.length
  const totalItems = allItems.length

  const result: z.infer<typeof searchResultsSchema> = {
    pagination: {
      total: totalItems,
      offset: paginationOffset,
      limit: paginationLimit,
      hasMore: paginationOffset + paginationLimit < totalItems,
    },
    items: allItems.slice(paginationOffset, paginationOffset + paginationLimit),
  }

// ... (115 more lines)

Subdomains

Dependencies

Frequently Asked Questions

What does search.ts do?
search.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 search.ts?
search.ts defines 4 function(s): buildRegistryItemNameFromRegistry, isUrl, searchItems, searchRegistries.
What does search.ts depend on?
search.ts imports 6 module(s): api.ts, fuzzysort, get-config, getRegistry, schema, zod.
What files import search.ts?
search.ts is imported by 1 file(s): search.test.ts.
Where is search.ts in the architecture?
search.ts is located at packages/shadcn/src/registry/search.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