import { Response } from 'node-fetch'; export class EmptySwarmError extends Error { public error: any; public pubkey: string; constructor(pubkey: string, message: string) { // 'Error' breaks prototype chain here super(message); this.pubkey = pubkey.split('.')[0]; this.name = 'EmptySwarmError'; // restore prototype chain const actualProto = new.target.prototype; if (Object.setPrototypeOf) { Object.setPrototypeOf(this, actualProto); } // Maintains proper stack trace, where our error was thrown (only available on V8) // via https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error if (Error.captureStackTrace) { Error.captureStackTrace(this); } } } export class NotFoundError extends Error { public error: any; constructor(message: string, error?: any) { // 'Error' breaks prototype chain here super(message); this.error = error; this.name = 'NotFoundError'; // restore prototype chain const actualProto = new.target.prototype; if (Object.setPrototypeOf) { Object.setPrototypeOf(this, actualProto); } // Maintains proper stack trace, where our error was thrown (only available on V8) // via https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error if (Error.captureStackTrace) { Error.captureStackTrace(this); } } } export class HTTPError extends Error { public response: Response; constructor(message: string, response: Response) { // 'Error' breaks prototype chain here super(`${response.status} Error: ${message}`); this.response = response; this.name = 'HTTPError'; // restore prototype chain const actualProto = new.target.prototype; if (Object.setPrototypeOf) { Object.setPrototypeOf(this, actualProto); } // Maintains proper stack trace, where our error was thrown (only available on V8) // via https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error if (Error.captureStackTrace) { Error.captureStackTrace(this); } } } export class SnodeResponseError extends Error { constructor(message = 'sessionRpc could not talk to node') { super(message); // restore prototype chain Object.setPrototypeOf(this, SnodeResponseError.prototype); } }