api-handler.js.map 3.43 KB
{"version":3,"sources":["../../../../../build/webpack/loaders/next-serverless-loader/api-handler.ts"],"names":["getApiHandler","ctx","pageModule","encodedPreviewProps","pageIsDynamic","handleRewrites","handleBasePath","dynamicRouteMatcher","normalizeDynamicRouteParams","req","res","trustQuery","headers","vercelHeader","parsedUrl","url","query","nextInternalLocale","params","result","pathname","Object","assign","err","console","error","code","statusCode","end"],"mappings":"yEAAA,wBAEA,kEACA,8BAEO,QAASA,CAAAA,aAAT,CAAuBC,GAAvB,CAAkD,CACvD,KAAM,CAAEC,UAAF,CAAcC,mBAAd,CAAmCC,aAAnC,EAAqDH,GAA3D,CACA,KAAM,CACJI,cADI,CAEJC,cAFI,CAGJC,mBAHI,CAIJC,2BAJI,EAKF,oBAASP,GAAT,CALJ,CAOA,MAAO,OAAOQ,GAAP,CAA6BC,GAA7B,GAAqD,CAC1D,GAAI,CACF;AACA;AACA,KAAMC,CAAAA,UAAU,CAAGF,GAAG,CAACG,OAAJ,CAAYC,mBAAZ,CAAnB,CACA,KAAMC,CAAAA,SAAS,CAAGT,cAAc,CAACI,GAAD,CAAM,eAASA,GAAG,CAACM,GAAb,CAAmB,IAAnB,CAAN,CAAhC,CAEA,GAAID,SAAS,CAACE,KAAV,CAAgBC,kBAApB,CAAwC,CACtC,MAAOH,CAAAA,SAAS,CAACE,KAAV,CAAgBC,kBAAvB,CACD,CACDX,cAAc,CAACG,GAAD,CAAMK,SAAN,CAAd,CAEA,GAAII,CAAAA,MAAM,CAAG,EAAb,CAEA,GAAId,aAAJ,CAAmB,CACjB,KAAMe,CAAAA,MAAM,CAAGX,2BAA2B,CACxCG,UAAU,CACNG,SAAS,CAACE,KADJ,CAELT,mBAAmB,CAAEO,SAAS,CAACM,QAAZ,CAHgB,CAA1C,CASAF,MAAM,CAAGC,MAAM,CAACD,MAAhB,CACD,CAED,KAAM,0BACJT,GADI,CAEJC,GAFI,CAGJW,MAAM,CAACC,MAAP,CAAc,EAAd,CAAkBR,SAAS,CAACE,KAA5B,CAAmCE,MAAnC,CAHI,CAIJ,KAAMhB,CAAAA,UAJF,CAKJC,mBALI,CAMJ,IANI,CAAN,CAQD,CAAC,MAAOoB,GAAP,CAAY,CACZC,OAAO,CAACC,KAAR,CAAcF,GAAd,EAEA;AACA,GAAIA,GAAG,CAACG,IAAJ,GAAa,eAAjB,CAAkC,CAChChB,GAAG,CAACiB,UAAJ,CAAiB,GAAjB,CACAjB,GAAG,CAACkB,GAAJ,CAAQ,aAAR,EACD,CAHD,IAGO,CACL;AACA,KAAML,CAAAA,GAAN,CACD,CACF,CACF,CA/CD,CAgDD","sourcesContent":["import { parse as parseUrl } from 'url'\nimport { IncomingMessage, ServerResponse } from 'http'\nimport { apiResolver } from '../../../../next-server/server/api-utils'\nimport { getUtils, vercelHeader, ServerlessHandlerCtx } from './utils'\n\nexport function getApiHandler(ctx: ServerlessHandlerCtx) {\n  const { pageModule, encodedPreviewProps, pageIsDynamic } = ctx\n  const {\n    handleRewrites,\n    handleBasePath,\n    dynamicRouteMatcher,\n    normalizeDynamicRouteParams,\n  } = getUtils(ctx)\n\n  return async (req: IncomingMessage, res: ServerResponse) => {\n    try {\n      // We need to trust the dynamic route params from the proxy\n      // to ensure we are using the correct values\n      const trustQuery = req.headers[vercelHeader]\n      const parsedUrl = handleRewrites(req, parseUrl(req.url!, true))\n\n      if (parsedUrl.query.nextInternalLocale) {\n        delete parsedUrl.query.nextInternalLocale\n      }\n      handleBasePath(req, parsedUrl)\n\n      let params = {}\n\n      if (pageIsDynamic) {\n        const result = normalizeDynamicRouteParams(\n          trustQuery\n            ? parsedUrl.query\n            : (dynamicRouteMatcher!(parsedUrl.pathname) as Record<\n                string,\n                string | string[]\n              >)\n        )\n\n        params = result.params\n      }\n\n      await apiResolver(\n        req,\n        res,\n        Object.assign({}, parsedUrl.query, params),\n        await pageModule,\n        encodedPreviewProps,\n        true\n      )\n    } catch (err) {\n      console.error(err)\n\n      // TODO: better error for DECODE_FAILED?\n      if (err.code === 'DECODE_FAILED') {\n        res.statusCode = 400\n        res.end('Bad Request')\n      } else {\n        // Throw the error to crash the serverless function\n        throw err\n      }\n    }\n  }\n}\n"]}