@zennomi/mangadex-full-api
Version:
A MangaDex api based around the official API.
29 lines (24 loc) • 1.1 kB
text/typescript
import { ErrorResponseSchema, ErrorSchema } from '../types/schema';
export default class APIResponseError extends Error {
constructor(info: ErrorResponseSchema | ErrorSchema[] | string) {
if (typeof info !== 'string') {
let errors: ErrorSchema[];
if ('result' in info) errors = info.errors;
else errors = info;
const parsedErrors = errors.map((err, i, arr) => {
let str = '';
if (arr.length > 1) str += `[${i} of ${arr.length}] `;
str += `${err.title} (${err.status}, ${err.id}): ${err.detail}. `;
return str;
});
info = parsedErrors.join('\n');
}
if (info.includes('36 characters')) {
info +=
'\n\nIt looks like MangaDex expected a UUID, but you provided a non-UUID string. If you are using Tags, please use Tag.getByName() instead of the literal name.';
}
super(info);
Object.setPrototypeOf(this, APIResponseError.prototype);
this.name = 'APIResponseError';
}
}