api-handler.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.getApiHandler = getApiHandler;
  6. var _url = require("url");
  7. var _http = require("http");
  8. var _node = require("../../../../server/api-utils/node");
  9. var _utils = require("./utils");
  10. var _utils1 = require("../../../../shared/lib/utils");
  11. var _node1 = require("../../../../server/base-http/node");
  12. function getApiHandler(ctx) {
  13. const { pageModule , encodedPreviewProps , pageIsDynamic } = ctx;
  14. const { handleRewrites , handleBasePath , dynamicRouteMatcher , normalizeDynamicRouteParams , } = (0, _utils).getUtils(ctx);
  15. return async (rawReq, rawRes)=>{
  16. const req = rawReq instanceof _http.IncomingMessage ? new _node1.NodeNextRequest(rawReq) : rawReq;
  17. const res = rawRes instanceof _http.ServerResponse ? new _node1.NodeNextResponse(rawRes) : rawRes;
  18. try {
  19. // We need to trust the dynamic route params from the proxy
  20. // to ensure we are using the correct values
  21. const trustQuery = req.headers[_utils.vercelHeader];
  22. const parsedUrl = (0, _url).parse(req.url, true);
  23. handleRewrites(req, parsedUrl);
  24. if (parsedUrl.query.nextInternalLocale) {
  25. delete parsedUrl.query.nextInternalLocale;
  26. }
  27. handleBasePath(req, parsedUrl);
  28. let params = {};
  29. if (pageIsDynamic) {
  30. const result = normalizeDynamicRouteParams(trustQuery ? parsedUrl.query : dynamicRouteMatcher(parsedUrl.pathname));
  31. params = result.params;
  32. }
  33. await (0, _node).apiResolver(req.originalRequest, res.originalResponse, Object.assign({}, parsedUrl.query, params), await pageModule, encodedPreviewProps, true);
  34. } catch (err) {
  35. console.error(err);
  36. if (err instanceof _utils1.DecodeError) {
  37. res.statusCode = 400;
  38. res.body("Bad Request").send();
  39. } else {
  40. // Throw the error to crash the serverless function
  41. throw err;
  42. }
  43. }
  44. };
  45. }
  46. //# sourceMappingURL=api-handler.js.map