serve-static.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.serveStatic = serveStatic;
  6. exports.getContentType = getContentType;
  7. exports.getExtension = getExtension;
  8. var _send = _interopRequireDefault(require("next/dist/compiled/send"));
  9. function _interopRequireDefault(obj) {
  10. return obj && obj.__esModule ? obj : {
  11. default: obj
  12. };
  13. }
  14. // TODO: Remove this once "send" has updated the "mime", or next.js use custom version of "mime"
  15. // Although "mime" has already add avif in version 2.4.7, "send" is still using mime@1.6.0
  16. _send.default.mime.define({
  17. "image/avif": [
  18. "avif"
  19. ]
  20. });
  21. function serveStatic(req, res, path) {
  22. return new Promise((resolve, reject)=>{
  23. (0, _send).default(req, path).on("directory", ()=>{
  24. // We don't allow directories to be read.
  25. const err = new Error("No directory access");
  26. err.code = "ENOENT";
  27. reject(err);
  28. }).on("error", reject).pipe(res).on("finish", resolve);
  29. });
  30. }
  31. function getContentType(extWithoutDot) {
  32. const { mime } = _send.default;
  33. if ("getType" in mime) {
  34. // 2.0
  35. return mime.getType(extWithoutDot);
  36. }
  37. // 1.0
  38. return mime.lookup(extWithoutDot);
  39. }
  40. function getExtension(contentType) {
  41. const { mime } = _send.default;
  42. if ("getExtension" in mime) {
  43. // 2.0
  44. return mime.getExtension(contentType);
  45. }
  46. // 1.0
  47. return mime.extension(contentType);
  48. }
  49. //# sourceMappingURL=serve-static.js.map