/**
* @module modules/Errors.js
* @name Errors
* @copyright 2023 3Liz
* @author DHONT René-Luc
* @license MPL-2.0
*/
/**
* Representing a request error with message and parameters before fetching
* @class
* @augments Error
* @property {string} name - Error name: RequestError
* @property {string} message - Error message
* @property {object} parameters - The request parameters
*/
export class RequestError extends Error {
/**
* Creating a request error with message and parameters before fetching
* @param {string} message - Error message
* @param {object} params - The request parameters
*/
constructor(message, params) {
super(message);
this.name = "RequestError";
this.parameters = params;
}
}
/**
* Representing a network error with message, resource and options fetched
* @class
* @augments Error
* @property {string} name - Error name: NetworkError
* @property {string} message - Error message
* @property {string} resource - The resource has been fetched
* @property {string} options - The resource options
*/
export class NetworkError extends Error {
/**
* Creating an HTTP error with message, resource and options fetched
* @param {string} message - Error message
* @param {string} resource - The resource has been fetched
* @param {string} options - The resource options
*/
constructor(message, resource, options) {
super(message);
this.name = "NetworkError";
this.resource = resource;
this.options = options;
}
}
/**
* Representing an HTTP error with message, status code, resource and options fetched
* @class
* @augments NetworkError
* @property {string} name - Error name: HttpError
* @property {string} message - Error message
* @property {string} resource - The resource has been fetched
* @property {string} options - The resource options
* @property {number} statusCode - HTTP Error status code
*/
export class HttpError extends NetworkError {
/**
* Creating an HTTP error with message and status code
* @param {string} message - Error message
* @param {number} statusCode - HTTP Error status code
* @param {string} resource - The resource has been fetched
* @param {string} options - The resource options
*/
constructor(message, statusCode, resource, options) {
super(message, resource, options);
this.name = "HttpError";
this.statusCode = statusCode;
}
}
/**
* Representing an response error with message, response, resource and options fetched
* @class
* @augments HttpError
* @property {string} name - Error name: ResponseError
* @property {string} message - Error message
* @property {string} resource - The resource has been fetched
* @property {string} options - The resource options
* @property {number} statusCode - HTTP Error status code
* @property {Response} response - Response object from fetch
*/
export class ResponseError extends HttpError {
/**
* Creating an HTTP error with message and status code
* @param {string} message - Error message
* @param {Response} response - Response object from fetch
* @param {string} resource - The resource has been fetched
* @param {string} options - The resource options
*/
constructor(message, response, resource, options) {
super(message, response.status, resource, options);
this.name = "ResponseError";
this.response = response;
}
}
/**
* Representing a conversion error
* @class
* @augments Error
*/
export class ConversionError extends Error {
/**
* Creating a conversion error
* @param {string} message - Error message
*/
constructor(message) {
super(message);
this.name = "ConversionError";
}
}
/**
* Representing a validation error
* @class
* @augments Error
*/
export class ValidationError extends Error {
/**
* Creating a validation error
* @param {string} message - Error message
*/
constructor(message) {
super(message);
this.name = "ValidationError";
}
}
/**
* Representing a property required error
* @class
* @augments ValidationError
*/
export class PropertyRequiredError extends ValidationError {
/**
* Creating a property required error
* @param {string} property - The object property in error
*/
constructor(property) {
super("No property:" + property);
this.property = property;
}
}