knip
Version:
Find and fix unused dependencies, exports and files in your TypeScript and JavaScript projects
27 lines (26 loc) • 1.2 kB
JavaScript
import { core } from 'zod/mini';
const isZodErrorLike = (error) => error instanceof core.$ZodError;
export class ConfigurationError extends Error {
}
export class LoaderError extends Error {
}
export const isKnownError = (error) => error instanceof ConfigurationError || error instanceof LoaderError || isZodErrorLike(error);
export const hasErrorCause = (error) => !isZodErrorLike(error) && error.cause instanceof Error;
export const isConfigurationError = (error) => error instanceof ConfigurationError;
export const getKnownErrors = (error) => {
if (isZodErrorLike(error))
return [...error.issues].map(error => {
let message = error.message;
const details = [];
if (error.path.length > 0)
details.push(`location: ${error.path.join('.')}`);
if (typeof error.expected === 'string')
details.push(`expected: ${error.expected}`);
if (Array.isArray(error.keys))
details.push(`${error.code}: ${error.keys.join(', ')}`);
if (details.length > 0)
message += ` (${details.join(', ')})`;
return new Error(message);
});
return [error];
};