Files
shadcn-ui/packages/shadcn/src/utils/handle-error.ts
shadcn a426fea941 refactor(shadcn): add getRegistryItems and resolveRegistryItems (#7983)
* feat(shadcn): refactor fetchFromRegistry

* refactor(shadcn): better api

* chore: changeset

* fix

* fix

* refactor

* refactor(shadcn): update getRegistryItems

* refactor(shadcn): error handling

* fix: getRegistryItems header context

* fix: tests

* feat(shadcn): export errors

* refactor(shadcn): getRegistryItems getRegistry

* fix

* fix

* fix

* fix

* chore: changeset

* chore: remove minor changeset
2025-08-10 15:20:38 +04:00

56 lines
1.3 KiB
TypeScript

import { RegistryError } from "@/src/registry/errors"
import { highlighter } from "@/src/utils/highlighter"
import { logger } from "@/src/utils/logger"
import { z } from "zod"
export function handleError(error: unknown) {
logger.break()
logger.error(
`Something went wrong. Please check the error below for more details.`
)
logger.error(`If the problem persists, please open an issue on GitHub.`)
logger.error("")
if (typeof error === "string") {
logger.error(error)
logger.break()
process.exit(1)
}
if (error instanceof RegistryError) {
if (error.message) {
logger.error(error.cause ? "Error:" : "Message:")
logger.error(error.message)
}
if (error.cause) {
logger.error("\nMessage:")
logger.error(error.cause)
}
if (error.suggestion) {
logger.error("\nSuggestion:")
logger.error(error.suggestion)
}
logger.break()
process.exit(1)
}
if (error instanceof z.ZodError) {
logger.error("Validation failed:")
for (const [key, value] of Object.entries(error.flatten().fieldErrors)) {
logger.error(`- ${highlighter.info(key)}: ${value}`)
}
logger.break()
process.exit(1)
}
if (error instanceof Error) {
logger.error(error.message)
logger.break()
process.exit(1)
}
logger.break()
process.exit(1)
}