/
githubmirror
/
ui
Обзор
Документация
Войти
/
githubmirror
/
ui
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
apps/v4/scripts/validate-registries.mts
74 строки
2 KB
shadcn
fix(v4): serve registries from directory (#10781)
27 май 2026, 08:16
Не верифицирован
27 май 2026, 08:16
c873713
Код
Авторство
О чём код?
import { promises as fs } from "fs" import path from "path" import { z } from "zod" const registryEntrySchema = z.object({ name: z.string().regex(/^@[a-zA-Z0-9][a-zA-Z0-9-_]*$/), homepage: z.string().url(), url: z.string().refine((url) => url.includes("{name}"), { message: "URL must include {name} placeholder", }), description: z.string(), }) const registriesSchema = z.array(registryEntrySchema) const directoryEntrySchema = registryEntrySchema.extend({ logo: z.string(), }) const directorySchema = z.array(directoryEntrySchema) function getRegistries(directory: z.infer<typeof directorySchema>) { return directory.map(({ name, homepage, url, description }) => ({ name, homepage, url, description, })) } async function main() { let hasErrors = false // 1. Validate directory.json. const directoryFile = path.join(process.cwd(), "registry/directory.json") const directoryContent = await fs.readFile(directoryFile, "utf-8") const directoryData = JSON.parse(directoryContent) const directoryResult = directorySchema.safeParse(directoryData) if (!directoryResult.success) { console.error("❌ directory.json validation failed:") console.error(directoryResult.error.format()) hasErrors = true } else { console.log("✅ directory.json is valid") } // 2. Validate the public registries payload served by /r/registries.json. if (directoryResult.success) { const registriesResult = registriesSchema.safeParse( getRegistries(directoryResult.data) ) if (!registriesResult.success) { console.error("❌ /r/registries.json validation failed:") console.error(registriesResult.error.format()) hasErrors = true } else { console.log("✅ /r/registries.json payload is valid") console.log("✅ /r/registries.json includes all directory entries") } } if (hasErrors) { process.exit(1) } console.log("\n✅ All registries passed validation.") } main().catch((error) => { console.error("❌ Error:", error instanceof Error ? error.message : error) process.exit(1) })