UNPKG

@h4ad/serverless-adapter

Version:

Run REST APIs and other web applications using your existing Node.js application framework (NestJS, Express, Koa, Hapi, Fastify and many others), on top of AWS, Azure, Digital Ocean and many other clouds.

1 lines 10.1 kB
{"version":3,"sources":["../../../src/frameworks/body-parser/base-body-parser.framework.ts","../../../src/frameworks/body-parser/json-body-parser.framework.ts","../../../src/frameworks/body-parser/raw-body-parser.framework.ts","../../../src/frameworks/body-parser/text-body-parser.framework.ts","../../../src/frameworks/body-parser/urlencoded-body-parser.framework.ts"],"sourcesContent":["//#region Imports\n\nimport type { IncomingMessage, ServerResponse } from 'http';\nimport type { NextHandleFunction } from 'connect';\nimport type { HttpError } from 'http-errors';\nimport type { FrameworkContract } from '../../contracts';\nimport { getDefaultIfUndefined } from '../../core';\n\n//#endregion\n\n/**\n * The options for {@link BaseBodyParserFramework}\n *\n * @breadcrumb Frameworks / BodyParserFramework\n * @public\n */\nexport type BodyParserOptions = {\n /**\n * Implements a custom way of handling error.\n *\n * @defaultValue {@link BaseBodyParserFramework.defaultHandleOnError}\n *\n * @example\n * ```typescript\n * customErrorHandler: (req: IncomingMessage, response: ServerResponse, error: HttpError<any>) => {\n * response.setHeader('content-type', 'text/plain');\n * response.statusCode = error.statusCode;\n * // always call end to return the error\n * response.end(error.message);\n * }\n * ```\n *\n * @param request - The referecene for request\n * @param response - The reference for response\n * @param error - The error throwed by body-parser\n */\n customErrorHandler?: (\n request: IncomingMessage,\n response: ServerResponse,\n error: HttpError<any>,\n ) => void;\n};\n\n/**\n * The base class used by other body-parser functions to parse a specific content-type\n *\n * @breadcrumb Frameworks / BodyParserFramework\n * @public\n */\nexport class BaseBodyParserFramework<TApp> implements FrameworkContract<TApp> {\n //#region Constructor\n\n /**\n * Default Constructor\n */\n protected constructor(\n protected readonly framework: FrameworkContract<TApp>,\n protected readonly middleware: NextHandleFunction,\n protected readonly options?: BodyParserOptions,\n ) {\n this.errorHandler = getDefaultIfUndefined(\n this.options?.customErrorHandler,\n this.defaultHandleOnError.bind(this),\n );\n }\n\n //#endregion\n\n //#region Protected Properties\n\n /**\n * The selected error handler\n */\n protected readonly errorHandler: NonNullable<\n BodyParserOptions['customErrorHandler']\n >;\n\n //#endregion\n\n //#region Public Methods\n\n /**\n * {@inheritDoc}\n */\n public sendRequest(\n app: TApp,\n request: IncomingMessage,\n response: ServerResponse,\n ): void {\n this.middleware(\n request,\n response,\n this.onBodyParserFinished(app, request, response),\n );\n }\n\n //#endregion\n\n //#region Protected Methods\n\n /**\n * Handle next execution called by the cors package\n */\n protected onBodyParserFinished(\n app: TApp,\n request: IncomingMessage,\n response: ServerResponse,\n ): () => void {\n return (err?: any) => {\n if (err) return this.errorHandler(request, response, err);\n\n this.framework.sendRequest(app, request, response);\n };\n }\n\n /**\n * The default function to handle errors\n *\n * @param _request - The referecene for request\n * @param response - The reference for response\n * @param error - The error throwed by body-parser\n */\n protected defaultHandleOnError(\n _request: IncomingMessage,\n response: ServerResponse,\n error: HttpError<any>,\n ): void {\n response.setHeader('content-type', 'text/plain');\n response.statusCode = error.statusCode;\n response.end(error.message);\n }\n\n //#endregion\n}\n","//#region Imports\n\nimport { type OptionsJson, json } from 'body-parser';\nimport { type FrameworkContract } from '../../contracts';\nimport {\n BaseBodyParserFramework,\n type BodyParserOptions,\n} from './base-body-parser.framework';\n\n//#endregion\n\n/**\n * The body-parser options for application/json\n *\n * @remarks {@link https://github.com/expressjs/body-parser#bodyparserjsonoptions}\n *\n * @breadcrumb Frameworks / BodyParserFramework / JsonBodyParserFramework\n * @public\n */\nexport type JsonBodyParserFrameworkOptions = OptionsJson & BodyParserOptions;\n\n/**\n * The body-parser class used to parse application/json.\n *\n * @breadcrumb Frameworks / BodyParserFramework / JsonBodyParserFramework\n * @public\n */\nexport class JsonBodyParserFramework<TApp>\n extends BaseBodyParserFramework<TApp>\n implements FrameworkContract<TApp>\n{\n //#region Constructor\n\n /**\n * Default Constructor\n */\n constructor(\n framework: FrameworkContract<TApp>,\n options?: JsonBodyParserFrameworkOptions,\n ) {\n super(framework, json(options), options);\n }\n\n //#endregion\n}\n","//#region Imports\n\nimport { type Options, raw } from 'body-parser';\nimport type { FrameworkContract } from '../../contracts';\nimport {\n BaseBodyParserFramework,\n type BodyParserOptions,\n} from './base-body-parser.framework';\n\n//#endregion\n\n/**\n * The body-parser options for application/octet-stream\n *\n * @remarks {@link https://github.com/expressjs/body-parser#bodyparserrawoptions}\n *\n * @breadcrumb Frameworks / BodyParserFramework / RawBodyParserFramework\n * @public\n */\nexport type RawBodyParserFrameworkOptions = Options & BodyParserOptions;\n\n/**\n * The body-parser class used to parse application/octet-stream.\n *\n * @breadcrumb Frameworks / BodyParserFramework / RawBodyParserFramework\n * @public\n */\nexport class RawBodyParserFramework<TApp>\n extends BaseBodyParserFramework<TApp>\n implements FrameworkContract<TApp>\n{\n //#region Constructor\n\n /**\n * Default Constructor\n */\n constructor(\n framework: FrameworkContract<TApp>,\n options?: RawBodyParserFrameworkOptions,\n ) {\n super(framework, raw(options), options);\n }\n\n //#endregion\n}\n","//#region Imports\n\nimport { type OptionsText, text } from 'body-parser';\nimport type { FrameworkContract } from '../../contracts';\nimport {\n BaseBodyParserFramework,\n type BodyParserOptions,\n} from './base-body-parser.framework';\n\n//#endregion\n\n/**\n * The body-parser options for text/plain\n *\n * @remarks {@link https://github.com/expressjs/body-parser#bodyparsertextoptions}\n *\n * @breadcrumb Frameworks / BodyParserFramework / TextBodyParserFramework\n * @public\n */\nexport type TextBodyParserFrameworkOptions = OptionsText & BodyParserOptions;\n\n/**\n * The body-parser class used to parse text/plain.\n *\n * @breadcrumb Frameworks / BodyParserFramework / TextBodyParserFramework\n * @public\n */\nexport class TextBodyParserFramework<TApp>\n extends BaseBodyParserFramework<TApp>\n implements FrameworkContract<TApp>\n{\n //#region Constructor\n\n /**\n * Default Constructor\n */\n constructor(\n framework: FrameworkContract<TApp>,\n options?: TextBodyParserFrameworkOptions,\n ) {\n super(framework, text(options), options);\n }\n\n //#endregion\n}\n","//#region Imports\n\nimport { type OptionsUrlencoded, urlencoded } from 'body-parser';\nimport { type FrameworkContract } from '../../contracts';\nimport {\n BaseBodyParserFramework,\n type BodyParserOptions,\n} from './base-body-parser.framework';\n\n//#endregion\n\n/**\n * The body parser options for application/x-www-form-urlencoded\n *\n * @remarks {@link https://github.com/expressjs/body-parser#bodyparserurlencodedoptions}\n *\n * @breadcrumb Frameworks / BodyParserFramework / UrlencodedBodyParserFramework\n * @public\n */\nexport type UrlencodedBodyParserFrameworkOptions = OptionsUrlencoded &\n BodyParserOptions;\n\n/**\n * The body-parser class used to parse application/x-www-form-urlencoded.\n *\n * @breadcrumb Frameworks / BodyParserFramework / UrlencodedBodyParserFramework\n * @public\n */\nexport class UrlencodedBodyParserFramework<TApp>\n extends BaseBodyParserFramework<TApp>\n implements FrameworkContract<TApp>\n{\n //#region Constructor\n\n /**\n * Default Constructor\n */\n constructor(\n framework: FrameworkContract<TApp>,\n options?: UrlencodedBodyParserFrameworkOptions,\n ) {\n super(framework, urlencoded(options), options);\n }\n\n //#endregion\n}\n"],"mappings":"2HAiDO,IAAMA,EAAN,KAAuE,CAMlE,YACWC,EACAC,EACAC,EACnB,CAHmB,eAAAF,EACA,gBAAAC,EACA,aAAAC,EAEnB,KAAK,aAAeC,EAClB,KAAK,SAAS,mBACd,KAAK,qBAAqB,KAAK,IAAI,CACrC,CACF,CAhEF,MAiD8E,CAAAC,EAAA,gCAwBzD,aAWZ,YACLC,EACAC,EACAC,EACM,CACN,KAAK,WACHD,EACAC,EACA,KAAK,qBAAqBF,EAAKC,EAASC,CAAQ,CAClD,CACF,CASU,qBACRF,EACAC,EACAC,EACY,CACZ,OAAQC,GAAc,CACpB,GAAIA,EAAK,OAAO,KAAK,aAAaF,EAASC,EAAUC,CAAG,EAExD,KAAK,UAAU,YAAYH,EAAKC,EAASC,CAAQ,CACnD,CACF,CASU,qBACRE,EACAF,EACAG,EACM,CACNH,EAAS,UAAU,eAAgB,YAAY,EAC/CA,EAAS,WAAaG,EAAM,WAC5BH,EAAS,IAAIG,EAAM,OAAO,CAC5B,CAGF,ECnIA,OAA2B,QAAAC,MAAY,cAyBhC,IAAMC,EAAN,cACGC,CAEV,CA9BA,MA8BA,CAAAC,EAAA,gCAME,YACEC,EACAC,EACA,CACA,MAAMD,EAAWE,EAAKD,CAAO,EAAGA,CAAO,CACzC,CAGF,EC1CA,OAAuB,OAAAE,MAAW,cAyB3B,IAAMC,EAAN,cACGC,CAEV,CA9BA,MA8BA,CAAAC,EAAA,+BAME,YACEC,EACAC,EACA,CACA,MAAMD,EAAWE,EAAID,CAAO,EAAGA,CAAO,CACxC,CAGF,EC1CA,OAA2B,QAAAE,MAAY,cAyBhC,IAAMC,EAAN,cACGC,CAEV,CA9BA,MA8BA,CAAAC,EAAA,gCAME,YACEC,EACAC,EACA,CACA,MAAMD,EAAWE,EAAKD,CAAO,EAAGA,CAAO,CACzC,CAGF,EC1CA,OAAiC,cAAAE,MAAkB,cA0B5C,IAAMC,EAAN,cACGC,CAEV,CA/BA,MA+BA,CAAAC,EAAA,sCAME,YACEC,EACAC,EACA,CACA,MAAMD,EAAWE,EAAWD,CAAO,EAAGA,CAAO,CAC/C,CAGF","names":["BaseBodyParserFramework","framework","middleware","options","getDefaultIfUndefined","__name","app","request","response","err","_request","error","json","JsonBodyParserFramework","BaseBodyParserFramework","__name","framework","options","json","raw","RawBodyParserFramework","BaseBodyParserFramework","__name","framework","options","raw","text","TextBodyParserFramework","BaseBodyParserFramework","__name","framework","options","text","urlencoded","UrlencodedBodyParserFramework","BaseBodyParserFramework","__name","framework","options","urlencoded"]}