import { Context } from './context'; /** * Cookie options of the HttpResponse.setCookie method. * * The value of maxAge is in seconds. * * @export * @interface CookieOptions */ export interface CookieOptions { domain?: string; expires?: Date; httpOnly?: boolean; maxAge?: number; path?: string; secure?: boolean; sameSite?: 'strict' | 'lax' | 'none'; signed?: boolean; } /** * Represent an HTTP response. This class must be extended. * Instances of HttpResponse are returned in hooks and controller * methods. * * @export * @abstract * @class HttpResponse */ export declare abstract class HttpResponse { /** * Property used internally by isHttpResponse. * * @memberof HttpResponse */ readonly isHttpResponse = true; /** * Status code of the response. * * @abstract * @type {number} * @memberof HttpResponse */ abstract readonly statusCode: number; /** * Status message of the response. It must follow the HTTP conventions * and be consistent with the statusCode property. * * @abstract * @type {string} * @memberof HttpResponse */ abstract readonly statusMessage: string; /** * Specify if the body property is a stream. * * @type {boolean} * @memberof HttpResponse */ readonly stream: boolean; body: T; private cookies; private headers; /** * Create an instance of HttpResponse. * @param {*} [body] - Optional body of the response. * @memberof HttpResponse */ constructor(body?: T, options?: { stream?: boolean; }); /** * Add or replace a header in the response. * * @param {string} name - The header name. * @param {string} value - The value name. * @returns {this} * @memberof HttpResponse */ setHeader(name: string, value: string): this; /** * Read the value of a header added with setHeader. * * @param {string} name - The header name. * @returns {(string|undefined)} The header value or undefined if it * does not exist. * @memberof HttpResponse */ getHeader(name: string): string | undefined; /** * Read all the headers added with setHeader. * * @returns {{ [key: string]: string }} - The headers. * @memberof HttpResponse */ getHeaders(): { [key: string]: string; }; /** * Add or replace a cookie in the response. * * @param {string} name - The cookie name. * @param {string} value - The cookie value. * @param {CookieOptions} [options={}] - The cookie directives if any. * @returns {this} * @memberof HttpResponse */ setCookie(name: string, value: string, options?: CookieOptions): this; /** * Read the value and directives of a cookie added with setCookie. * * @param {string} name - The cookie name. * @returns {({ value: string|undefined, options: CookieOptions })} The cookie value and directives * or undefined and an empty object if the cookie does not exist. * @memberof HttpResponse */ getCookie(name: string): { value: string | undefined; options: CookieOptions; }; /** * Read all the cookies added with setCookie. * * @returns {({ [key: string]: { value: string|undefined, options: CookieOptions } })} * The name, value and directives of the cookies. * @memberof HttpResponse */ getCookies(): { [key: string]: { value: string | undefined; options: CookieOptions; }; }; } /** * Check if an object is an instance of HttpResponse. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponse} - True if the error is an instance of HttpResponse. False otherwise. */ export declare function isHttpResponse(obj: any): obj is HttpResponse; /** * Represent an HTTP response with a success status 2xx. * * @export * @abstract * @class HttpResponseSuccess * @extends {HttpResponse} */ export declare abstract class HttpResponseSuccess extends HttpResponse { /** * Property used internally by isHttpResponseSuccess. * * @memberof HttpResponseSuccess */ readonly isHttpResponseSuccess = true; /** * Create an instance of HttpResponseSuccess. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseSuccess */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseSuccess. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseSuccess} - True if the error is an instance of HttpResponseSuccess. False otherwise. */ export declare function isHttpResponseSuccess(obj: any): obj is HttpResponseSuccess; /** * Represent an HTTP response with the status 200 - OK. * * @export * @class HttpResponseOK * @extends {HttpResponseSuccess} */ export declare class HttpResponseOK extends HttpResponseSuccess { /** * Property used internally by isHttpResponseOK. * * @memberof HttpResponseOK */ readonly isHttpResponseOK = true; readonly statusCode = 200; readonly statusMessage = "OK"; /** * Create an instance of HttpResponseOK. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseOK */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseOK. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseOK} - True if the error is an instance of HttpResponseOK. False otherwise. */ export declare function isHttpResponseOK(obj: any): obj is HttpResponseOK; /** * Represent an HTTP response with the status 201 - CREATED. * * @export * @class HttpResponseCreated * @extends {HttpResponseSuccess} */ export declare class HttpResponseCreated extends HttpResponseSuccess { /** * Property used internally by isHttpResponseCreated. * * @memberof HttpResponseCreated */ readonly isHttpResponseCreated = true; readonly statusCode = 201; readonly statusMessage = "CREATED"; /** * Create an instance of HttpResponseCreated. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseCreated */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseCreated. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseCreated} - True if the error is an instance of HttpResponseCreated. False otherwise. */ export declare function isHttpResponseCreated(obj: any): obj is HttpResponseCreated; /** * Represent an HTTP response with the status 204 - NO CONTENT. * * @export * @class HttpResponseNoContent * @extends {HttpResponseSuccess} */ export declare class HttpResponseNoContent extends HttpResponseSuccess { /** * Property used internally by is HttpResponseNoContent. * * @memberof HttpResponseNoContent */ readonly isHttpResponseNoContent = true; readonly statusCode = 204; readonly statusMessage = "NO CONTENT"; /** * Create an instance of HttpResponseNoContent. * @memberof HttpResponseNoContent */ constructor(); } /** * Check if an object is an instance of HttpResponseNoContent. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseNoContent} - True if the error is an instance of HttpResponseNoContent. False otherwise. */ export declare function isHttpResponseNoContent(obj: any): obj is HttpResponseNoContent; /** * Represent an HTTP response with a redirection status 3xx. * * @export * @abstract * @class HttpResponseRedirection * @extends {HttpResponse} */ export declare abstract class HttpResponseRedirection extends HttpResponse { /** * Property used internally by isHttpResponseRedirection. * * @memberof HttpResponseRedirection */ readonly isHttpResponseRedirection = true; /** * Create an instance of HttpResponseRedirection. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseRedirection */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseRedirection. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseRedirection} - True if the error is an instance of HttpResponseRedirection. * False otherwise. */ export declare function isHttpResponseRedirection(obj: any): obj is HttpResponseRedirection; /** * Represent an HTTP response with the status 301 - MOVED PERMANENTLY. * * @export * @class HttpResponseMovedPermanently * @extends {HttpResponseRedirection} */ export declare class HttpResponseMovedPermanently extends HttpResponseRedirection { path: string; /** * Property used internally by isHttpResponseMovedPermanently. * * @memberof isHttpResponseMovedPermanently */ readonly isHttpResponseMovedPermanently = true; readonly statusCode = 301; readonly statusMessage = "MOVED PERMANENTLY"; /** * Create an instance of HttpResponseMovedPermanently. * @param {string} path - The redirection path. * @memberof HttpResponseMovedPermanently */ constructor(path: string); } /** * Check if an object is an instance of HttpResponseMovedPermanently. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseMovedPermanently} - True if the error is an * instance of HttpResponseMovedPermanently. False otherwise. */ export declare function isHttpResponseMovedPermanently(obj: any): obj is HttpResponseMovedPermanently; /** * Represent an HTTP response with the status 302 - FOUND. * * @export * @class HttpResponseRedirect * @extends {HttpResponseRedirection} */ export declare class HttpResponseRedirect extends HttpResponseRedirection { path: string; /** * Property used internally by isHttpResponseRedirect. * * @memberof HttpResponseRedirect */ readonly isHttpResponseRedirect = true; readonly statusCode = 302; readonly statusMessage = "FOUND"; /** * Create an instance of HttpResponseRedirect. * @param {string} path - The redirection path. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseRedirect */ constructor(path: string, body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseRedirect. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseRedirect} - True if the error is an instance of HttpResponseRedirect. False otherwise. */ export declare function isHttpResponseRedirect(obj: any): obj is HttpResponseRedirect; /** * Represent an HTTP response with a client error status 4xx. * * @export * @abstract * @class HttpResponseClientError * @extends {HttpResponse} */ export declare abstract class HttpResponseClientError extends HttpResponse { /** * Property used internally by isHttpResponseClientError. * * @memberof HttpResponseClientError */ readonly isHttpResponseClientError = true; /** * Create an instance of HttpResponseClientError. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseClientError */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseClientError. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseClientError} - True if the error is an instance of HttpResponseClientError. * False otherwise. */ export declare function isHttpResponseClientError(obj: any): obj is HttpResponseClientError; /** * Represent an HTTP response with the status 400 - BAD REQUEST. * * @export * @class HttpResponseBadRequest * @extends {HttpResponseClientError} */ export declare class HttpResponseBadRequest extends HttpResponseClientError { /** * Property used internally by isHttpResponseBadRequest. * * @memberof HttpResponseBadRequest */ readonly isHttpResponseBadRequest = true; readonly statusCode = 400; readonly statusMessage = "BAD REQUEST"; /** * Create an instance of HttpResponseBadRequest. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseBadRequest */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseBadRequest. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseBadRequest} - True if the error is an instance of HttpResponseBadRequest. * False otherwise. */ export declare function isHttpResponseBadRequest(obj: any): obj is HttpResponseBadRequest; /** * Represent an HTTP response with the status 401 - UNAUTHORIZED. * * @export * @class HttpResponseUnauthorized * @extends {HttpResponseClientError} */ export declare class HttpResponseUnauthorized extends HttpResponseClientError { /** * Property used internally by isHttpResponseUnauthorized. * * @memberof HttpResponseUnauthorized */ readonly isHttpResponseUnauthorized = true; readonly statusCode = 401; readonly statusMessage = "UNAUTHORIZED"; /** * Create an instance of HttpResponseUnauthorized. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseUnauthorized */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseUnauthorized. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseUnauthorized} - True if the error is an instance of HttpResponseUnauthorized. * False otherwise. */ export declare function isHttpResponseUnauthorized(obj: any): obj is HttpResponseUnauthorized; /** * Represent an HTTP response with the status 403 - FORBIDDEN. * * @export * @class HttpResponseForbidden * @extends {HttpResponseClientError} */ export declare class HttpResponseForbidden extends HttpResponseClientError { /** * Property used internally by isHttpResponseForbidden. * * @memberof HttpResponseForbidden */ readonly isHttpResponseForbidden = true; readonly statusCode = 403; readonly statusMessage = "FORBIDDEN"; /** * Create an instance of HttpResponseForbidden. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseForbidden */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseForbidden. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseForbidden} - True if the error is an instance of HttpResponseForbidden. False otherwise. */ export declare function isHttpResponseForbidden(obj: any): obj is HttpResponseForbidden; /** * Represent an HTTP response with the status 404 - NOT FOUND. * * @export * @class HttpResponseNotFound * @extends {HttpResponseClientError} */ export declare class HttpResponseNotFound extends HttpResponseClientError { /** * Property used internally by isHttpResponseNotFound. * * @memberof HttpResponseNotFound */ readonly isHttpResponseNotFound = true; readonly statusCode = 404; readonly statusMessage = "NOT FOUND"; /** * Create an instance of HttpResponseNotFound. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseNotFound */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseNotFound. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseNotFound} - True if the error is an instance of HttpResponseNotFound. False otherwise. */ export declare function isHttpResponseNotFound(obj: any): obj is HttpResponseNotFound; /** * Represent an HTTP response with the status 405 - METHOD NOT ALLOWED. * * @export * @class HttpResponseMethodNotAllowed * @extends {HttpResponseClientError} */ export declare class HttpResponseMethodNotAllowed extends HttpResponseClientError { /** * Property used internally by isHttpResponseMethodNotAllowed. * * @memberof HttpResponseMethodNotAllowed */ readonly isHttpResponseMethodNotAllowed = true; readonly statusCode = 405; readonly statusMessage = "METHOD NOT ALLOWED"; /** * Create an instance of HttpResponseMethodNotAllowed. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseMethodNotAllowed */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseMethodNotAllowed. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseMethodNotAllowed} - True if the error is an instance of HttpResponseMethodNotAllowed. * False otherwise. */ export declare function isHttpResponseMethodNotAllowed(obj: any): obj is HttpResponseMethodNotAllowed; /** * Represent an HTTP response with the status 409 - CONFLICT. * * @export * @class HttpResponseConflict * @extends {HttpResponseClientError} */ export declare class HttpResponseConflict extends HttpResponseClientError { /** * Property used internally by isHttpResponseConflict. * * @memberof HttpResponseConflict */ readonly isHttpResponseConflict = true; readonly statusCode = 409; readonly statusMessage = "CONFLICT"; /** * Create an instance of HttpResponseConflict. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseConflict */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseConflict. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseConflict} - True if the error is an instance of HttpResponseConflict. False otherwise. */ export declare function isHttpResponseConflict(obj: any): obj is HttpResponseConflict; /** * Represent an HTTP response with the status 429 - TOO MANY REQUESTS. * * @export * @class HttpResponseTooManyRequests * @extends {HttpResponseClientError} */ export declare class HttpResponseTooManyRequests extends HttpResponseClientError { /** * Property used internally by isHttpResponseTooManyRequests. * * @memberof HttpResponseTooManyRequests */ readonly isHttpResponseTooManyRequests = true; readonly statusCode = 429; readonly statusMessage = "TOO MANY REQUESTS"; /** * Create an instance of HttpResponseTooManyRequests. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseTooManyRequests */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseTooManyRequests. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseTooManyRequests} - True if the error is an instance of HttpResponseTooManyRequests. * False otherwise. */ export declare function isHttpResponseTooManyRequests(obj: any): obj is HttpResponseTooManyRequests; /** * Represent an HTTP response with a server error status 5xx. * * @export * @abstract * @class HttpResponseServerError * @extends {HttpResponse} */ export declare abstract class HttpResponseServerError extends HttpResponse { /** * Property used internally by isHttpResponseServerError. * * @memberof HttpResponseServerError */ readonly isHttpResponseServerError = true; constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseServerError. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseServerError} - True if the error is an instance of HttpResponseServerError. * False otherwise. */ export declare function isHttpResponseServerError(obj: any): obj is HttpResponseServerError; /** * Represent an HTTP response with the status 500 - INTERNAL SERVER ERROR. * * @export * @class HttpResponseInternalServerError * @extends {HttpResponseServerError} */ export declare class HttpResponseInternalServerError extends HttpResponseServerError { /** * Property used internally by isHttpResponseInternalServerError. * * @memberof HttpResponseInternalServerError */ readonly isHttpResponseInternalServerError = true; readonly error?: Error; readonly ctx?: Context; readonly statusCode = 500; readonly statusMessage = "INTERNAL SERVER ERROR"; /** * Create an instance of HttpResponseInternalServerError. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseInternalServerError */ constructor(body?: T, options?: { stream?: boolean; error?: Error; ctx?: Context; }); } /** * Check if an object is an instance of HttpResponseInternalServerError. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseInternalServerError} - True if the error is an instance of * HttpResponseInternalServerError. False otherwise. */ export declare function isHttpResponseInternalServerError(obj: any): obj is HttpResponseInternalServerError; /** * Represent an HTTP response with the status 501 - NOT IMPLEMENTED. * * @export * @class HttpResponseNotImplemented * @extends {HttpResponseServerError} */ export declare class HttpResponseNotImplemented extends HttpResponseServerError { /** * Property used internally by isHttpResponseNotImplemented. * * @memberof HttpResponseNotImplemented */ readonly isHttpResponseNotImplemented = true; readonly statusCode = 501; readonly statusMessage = "NOT IMPLEMENTED"; /** * Create an instance of HttpResponseNotImplemented. * @param {*} [body] - Optional body of the response. * @memberof HttpResponseNotImplemented */ constructor(body?: T, options?: { stream?: boolean; }); } /** * Check if an object is an instance of HttpResponseNotImplemented. * * This function is a help when you have several packages using @foal/core. * Npm can install the package several times, which leads to duplicate class * definitions. If this is the case, the keyword `instanceof` may return false * while the object is an instance of the class. This function fixes this * problem. * * @export * @param {*} obj - The object to check. * @returns {obj is HttpResponseNotImplemented} - True if the error is an instance of HttpResponseNotImplemented. * False otherwise. */ export declare function isHttpResponseNotImplemented(obj: any): obj is HttpResponseNotImplemented;