|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Base error class for all errors in the session module.
|
|
|
|
*
|
|
|
|
* @note if you make a custom error with a custom message, make sure to restore the prototype chain again using the new class prototype.
|
|
|
|
*/
|
|
|
|
class BaseError extends Error {
|
|
|
|
constructor(message: string) {
|
|
|
|
super(message);
|
|
|
|
this.name = this.constructor.name;
|
|
|
|
// NOTE Restores prototype chain. Make sure to reference the new class prototype!
|
|
|
|
Object.setPrototypeOf(this, BaseError.prototype);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export class SigningFailed extends BaseError {}
|
|
|
|
export class InvalidSigningType extends BaseError {}
|
|
|
|
export class GroupV2SigningFailed extends SigningFailed {}
|
|
|
|
export class PreConditionFailed extends BaseError {}
|
|
|
|
export class DecryptionFailed extends BaseError {}
|
|
|
|
export class InvalidMessage extends BaseError {}
|
|
|
|
export class SnodeResponseError extends BaseError {
|
|
|
|
constructor(message = 'sessionRpc could not talk to node') {
|
|
|
|
super(message);
|
|
|
|
Object.setPrototypeOf(this, SnodeResponseError.prototype);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export class RetrieveDisplayNameError extends BaseError {
|
|
|
|
constructor(message = 'failed to retrieve display name after setting it') {
|
|
|
|
super(message);
|
|
|
|
Object.setPrototypeOf(this, RetrieveDisplayNameError.prototype);
|
|
|
|
}
|
|
|
|
}
|