@hapi/hapi
Version:
HTTP Server framework
114 lines (103 loc) • 5.12 kB
TypeScript
import * as https from 'https';
import * as stream from 'stream';
import { Boom } from '@hapi/boom';
import { ResponseObject as ShotResponseObject } from '@hapi/shot';
import {
ReqRef,
ReqRefDefaults,
MergeRefs,
Request} from './request';
import { ResponseToolkit, Auth } from './response';
/**
* All http parser [supported HTTP methods](https://nodejs.org/api/http.html#httpmethods).
*/
export type HTTP_METHODS = 'ACL' | 'BIND' | 'CHECKOUT' | 'CONNECT' | 'COPY' | 'DELETE' | 'GET' | 'HEAD' | 'LINK' | 'LOCK' |
'M-SEARCH' | 'MERGE' | 'MKACTIVITY' | 'MKCALENDAR' | 'MKCOL' | 'MOVE' | 'NOTIFY' | 'OPTIONS' | 'PATCH' | 'POST' |
'PROPFIND' | 'PROPPATCH' | 'PURGE' | 'PUT' | 'REBIND' | 'REPORT' | 'SEARCH' | 'SOURCE' | 'SUBSCRIBE' | 'TRACE' |
'UNBIND' | 'UNLINK' | 'UNLOCK' | 'UNSUBSCRIBE';
export type PeekListener = (chunk: string, encoding: string) => void;
export namespace Json {
/**
* @see {@link https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter}
*/
type StringifyReplacer = ((key: string, value: any) => any) | (string | number)[] | undefined;
/**
* Any value greater than 10 is truncated.
*/
type StringifySpace = number | string;
/**
* For context [See docs](https://github.com/hapijs/hapi/blob/master/API.md#-routeoptionsjson)
*/
interface StringifyArguments {
/** the replacer function or array. Defaults to no action. */
replacer?: StringifyReplacer | undefined;
/** number of spaces to indent nested object keys. Defaults to no indentation. */
space?: StringifySpace | undefined;
/* string suffix added after conversion to JSON string. Defaults to no suffix. */
suffix?: string | undefined;
/* calls Hoek.jsonEscape() after conversion to JSON string. Defaults to false. */
escape?: boolean | undefined;
}
}
export namespace Lifecycle {
/**
* Lifecycle methods are the interface between the framework and the application. Many of the request lifecycle steps:
* extensions, authentication, handlers, pre-handler methods, and failAction function values are lifecycle methods
* provided by the developer and executed by the framework.
* Each lifecycle method is a function with the signature await function(request, h, [err]) where:
* * request - the request object.
* * h - the response toolkit the handler must call to set a response and return control back to the framework.
* * err - an error object available only when the method is used as a failAction value.
*/
type Method<
Refs extends ReqRef = ReqRefDefaults,
R extends ReturnValue<any> = ReturnValue<Refs>
> = (
this: MergeRefs<Refs>['Bind'],
request: Request<Refs>,
h: ResponseToolkit<Refs>,
err?: Error | undefined
) => R;
/**
* Each lifecycle method must return a value or a promise that resolves into a value. If a lifecycle method returns
* without a value or resolves to an undefined value, an Internal Server Error (500) error response is sent.
* The return value must be one of:
* - Plain value: null, string, number, boolean
* - Buffer object
* - Error object: plain Error OR a Boom object.
* - Stream object
* - any object or array
* - a toolkit signal:
* - a toolkit method response:
* - a promise object that resolve to any of the above values
* For more info please [See docs](https://github.com/hapijs/hapi/blob/master/API.md#lifecycle-methods)
*/
type ReturnValue<Refs extends ReqRef = ReqRefDefaults> = ReturnValueTypes<Refs> | (Promise<ReturnValueTypes<Refs>>);
type ReturnValueTypes<Refs extends ReqRef = ReqRefDefaults> =
(null | string | number | boolean) |
(Buffer) |
(Error | Boom) |
(stream.Stream) |
(object | object[]) |
symbol |
Auth<
MergeRefs<Refs>['AuthUser'],
MergeRefs<Refs>['AuthApp'],
MergeRefs<Refs>['AuthCredentialsExtra'],
MergeRefs<Refs>['AuthArtifactsExtra']
> |
ShotResponseObject;
/**
* Various configuration options allows defining how errors are handled. For example, when invalid payload is received or malformed cookie, instead of returning an error, the framework can be
* configured to perform another action. When supported the failAction option supports the following values:
* * 'error' - return the error object as the response.
* * 'log' - report the error but continue processing the request.
* * 'ignore' - take no action and continue processing the request.
* * a lifecycle method with the signature async function(request, h, err) where:
* * * request - the request object.
* * * h - the response toolkit.
* * * err - the error object.
* [See docs](https://github.com/hapijs/hapi/blob/master/API.md#-failaction-configuration)
*/
type FailAction = 'error' | 'log' | 'ignore' | Method;
}