Files
shadcn-ui__ui/apps/v4/scripts/validate-registries.mts
T
shadcn 352f2094bd feat(registry): add health monitoring (#11616)
* feat(registry): add health monitoring

* fix(registry): cache health directory route

* fix(registry): harden health state transitions
2026-08-25 15:49:59 +04:00

54 lines
1.6 KiB
TypeScript

import { promises as fs } from "fs"
import path from "path"
import {
createPublicRegistryDirectory,
publicRegistryDirectorySchema,
registryDirectorySchema,
} from "../lib/registry-directory"
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 = registryDirectorySchema.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 = publicRegistryDirectorySchema.safeParse(
createPublicRegistryDirectory(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)
})