@hapiness/core
Version:
Project to have a HapiJS (https://hapijs.com/) based framework to create easier NodeJS back-end with some awesome features
155 lines (154 loc) • 3.99 kB
TypeScript
import { CoreModule, CoreProvide } from '../../core/interfaces';
import { Type } from '../../core/decorators';
import { Observable } from 'rxjs';
import { Request, ReplyWithContinue, ReplyNoContinue, ServerOptions, RouteAdditionalConfigurationOptions, ServerConnectionOptions } from 'hapi';
export interface BaseHapiConfig {
host?: string;
port: number;
options?: ServerOptions;
}
export interface ExtendedHapiConfig {
connections: ConnectionOptions[];
options?: ServerOptions;
}
export declare type HapiConfig = BaseHapiConfig | ExtendedHapiConfig;
export interface ConnectionOptions extends ServerConnectionOptions {
}
export interface RouteConfig extends RouteAdditionalConfigurationOptions {
}
/**
* CoreRoute Type
* Represents an Http Route
*/
export interface CoreRoute {
token: Type<any> | any;
path: string;
method: string | string[];
module: CoreModule;
providers?: CoreProvide[];
config?: RouteConfig;
labels?: string | string[];
}
export interface HTTPHandlerResponse {
response: any;
statusCode?: number;
headers?: {
[key: string]: string;
};
}
/**
* Route Handler
* called on Http Get request
*
* @returns void | Observable
*/
export interface OnGet {
onGet(request: Request, reply?: ReplyNoContinue): void | Observable<any | HTTPHandlerResponse>;
}
/**
* Route Handler
* called on Http Post request
*
* @returns void | Observable
*/
export interface OnPost {
onPost(request: Request, reply?: ReplyNoContinue): void | Observable<any | HTTPHandlerResponse>;
}
/**
* Route Handler
* called on Http Put request
*
* @param {Error} error
* @returns void | Observable
*/
export interface OnPut {
onPut(request: Request, reply?: ReplyNoContinue): void | Observable<any | HTTPHandlerResponse>;
}
/**
* Route Handler
* called on Http Patch request
*
* @param {string} module
* @returns void | Observable
*/
export interface OnPatch {
onPatch(request: Request, reply?: ReplyNoContinue): void | Observable<any | HTTPHandlerResponse>;
}
/**
* Route Handler
* called on Http Options request
*
* @param {string} module
* @returns void | Observable
*/
export interface OnOptions {
onOptions(request: Request, reply?: ReplyNoContinue): void | Observable<any | HTTPHandlerResponse>;
}
/**
* Route Handler
* called on Http Delete request
*
* @param {string} module
* @returns void | Observable
*/
export interface OnDelete {
onDelete(request: Request, reply?: ReplyNoContinue): void | Observable<any | HTTPHandlerResponse>;
}
/**
* OnPreAuth Lifecycle hook
*
* @param {Request} request
* @param {Reply} reply
* @returns void | Observable
*/
export interface OnPreAuth {
onPreAuth(request: Request, reply?: ReplyWithContinue): void | Observable<void>;
}
/**
* OnPostAuth Lifecycle hook
*
* @param {Request} request
* @param {Reply} reply
* @returns void | Observable
*/
export interface OnPostAuth {
onPostAuth(request: Request, reply?: ReplyWithContinue): void | Observable<void>;
}
/**
* OnPreHandler Lifecycle hook
*
* @param {Request} request
* @param {Reply} reply
* @returns void | Observable
*/
export interface OnPreHandler {
onPreHandler(request: Request, reply?: ReplyWithContinue): void | Observable<void>;
}
/**
* OnPostHandler Lifecycle hook
*
* @param {Request} request
* @param {Reply} reply
* @returns void | Observable
*/
export interface OnPostHandler {
onPostHandler(request: Request, reply?: ReplyWithContinue): void | Observable<void>;
}
/**
* OnPreResponse Lifecycle hook
*
* @param {Request} request
* @param {Reply} reply
* @returns void | Observable
*/
export interface OnPreResponse {
onPreResponse(request: Request, reply?: ReplyWithContinue): void | Observable<void>;
}
/**
* Request lifecycle component Hook
*
* @returns void | Observable
*/
export interface OnEvent {
onEvent(request: Request, reply: ReplyWithContinue): void | Observable<void>;
}