@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 • 3.07 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/resolvers/callback/index.ts","../../../src/resolvers/callback/callback.resolver.ts"],"sourcesContent":["export * from './callback.resolver';\n","//#region Imports\n\nimport type {\n DelegatedResolver,\n Resolver,\n ResolverContract,\n ResolverProps,\n} from '../../contracts';\n\n//#endregion\n\n/**\n * The default signature of the callback sent by serverless\n *\n * @breadcrumb Resolvers / CallbackResolver\n * @public\n */\nexport type ServerlessCallback<TResponse> = (\n error: Error | null,\n success: TResponse | null,\n) => void;\n\n/**\n * The class that implements the resolver using the callback function sent by serverless\n *\n * @remarks To use this resolver on AWS, you MUST leave `{@link https://docs.aws.amazon.com/lambda/latest/dg/nodejs-context.html | callbackWaitsForEmptyEventLoop}` as true, otherwise, AWS will not wait for this resolver to resolve.\n *\n * @breadcrumb Resolvers / CallbackResolver\n * @public\n */\nexport class CallbackResolver<TEvent, TContext, TResponse>\n implements\n ResolverContract<TEvent, TContext, ServerlessCallback<any>, TResponse, void>\n{\n /**\n * {@inheritDoc}\n */\n public createResolver({\n callback,\n event,\n log,\n respondWithErrors,\n adapter,\n }: ResolverProps<\n TEvent,\n TContext,\n ServerlessCallback<any>,\n TResponse\n >): Resolver<any, void> {\n if (!callback) {\n throw new Error(\n 'Could not figure out how to create the resolver because the \"callback\" argument was not sent.',\n );\n }\n\n const delegatedResolver: DelegatedResolver<any> = {\n succeed: response => callback(null, response),\n fail: error => callback(error, null),\n };\n\n return {\n run: task => {\n task()\n .then(response => delegatedResolver.succeed(response))\n .catch(error => {\n log.error(\n 'SERVERLESS_ADAPTER:RESPOND_TO_EVENT_SOURCE_WITH_ERROR',\n error,\n );\n\n adapter.onErrorWhileForwarding({\n delegatedResolver,\n error,\n log,\n event,\n respondWithErrors,\n });\n });\n },\n };\n }\n}\n"],"mappings":"4dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GC8BO,IAAMI,EAAN,KAGP,CAjCA,MAiCA,CAAAC,EAAA,yBAIS,eAAe,CACpB,SAAAC,EACA,MAAAC,EACA,IAAAC,EACA,kBAAAC,EACA,QAAAC,CACF,EAKwB,CACtB,GAAI,CAACJ,EACH,MAAM,IAAI,MACR,+FACF,EAGF,IAAMK,EAA4C,CAChD,QAASN,EAAAO,GAAYN,EAAS,KAAMM,CAAQ,EAAnC,WACT,KAAMP,EAAAQ,GAASP,EAASO,EAAO,IAAI,EAA7B,OACR,EAEA,MAAO,CACL,IAAKR,EAAAS,GAAQ,CACXA,EAAK,EACF,KAAKF,GAAYD,EAAkB,QAAQC,CAAQ,CAAC,EACpD,MAAMC,GAAS,CACdL,EAAI,MACF,wDACAK,CACF,EAEAH,EAAQ,uBAAuB,CAC7B,kBAAAC,EACA,MAAAE,EACA,IAAAL,EACA,MAAAD,EACA,kBAAAE,CACF,CAAC,CACH,CAAC,CACL,EAjBK,MAkBP,CACF,CACF","names":["callback_exports","__export","CallbackResolver","__toCommonJS","CallbackResolver","__name","callback","event","log","respondWithErrors","adapter","delegatedResolver","response","error","task"]}