type ErrorName = Error['name'] type ErrorMessage = Error['message'] class BuildError extends Error { public name: ErrorName constructor(message: ErrorMessage, originalError?: unknown) { const originalErrorMessage = getOriginalErrorMessage(originalError) const errorMessage = `${message}${originalErrorMessage}` super(errorMessage) this.name = 'BuildError' // Keep stack of original error if (originalError instanceof Error) { this.stack = originalError.stack } } } function getOriginalErrorMessage(err: unknown) { if (err instanceof Error) { return `\n-> ${err.message}` } if (typeof err === 'string') { return `\n-> ${err}` } return '' } export { BuildError }