mime.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // src/utils/mime.ts
  2. var getMimeType = (filename, mimes = baseMimes) => {
  3. const regexp = /\.([a-zA-Z0-9]+?)$/;
  4. const match = filename.match(regexp);
  5. if (!match) {
  6. return;
  7. }
  8. let mimeType = mimes[match[1].toLowerCase()];
  9. if (mimeType && mimeType.startsWith("text")) {
  10. mimeType += "; charset=utf-8";
  11. }
  12. return mimeType;
  13. };
  14. var getExtension = (mimeType) => {
  15. for (const ext in baseMimes) {
  16. if (baseMimes[ext] === mimeType) {
  17. return ext;
  18. }
  19. }
  20. };
  21. var _baseMimes = {
  22. aac: "audio/aac",
  23. avi: "video/x-msvideo",
  24. avif: "image/avif",
  25. av1: "video/av1",
  26. bin: "application/octet-stream",
  27. bmp: "image/bmp",
  28. css: "text/css",
  29. csv: "text/csv",
  30. eot: "application/vnd.ms-fontobject",
  31. epub: "application/epub+zip",
  32. gif: "image/gif",
  33. gz: "application/gzip",
  34. htm: "text/html",
  35. html: "text/html",
  36. ico: "image/x-icon",
  37. ics: "text/calendar",
  38. jpeg: "image/jpeg",
  39. jpg: "image/jpeg",
  40. js: "text/javascript",
  41. json: "application/json",
  42. jsonld: "application/ld+json",
  43. map: "application/json",
  44. mid: "audio/x-midi",
  45. midi: "audio/x-midi",
  46. mjs: "text/javascript",
  47. mp3: "audio/mpeg",
  48. mp4: "video/mp4",
  49. mpeg: "video/mpeg",
  50. oga: "audio/ogg",
  51. ogv: "video/ogg",
  52. ogx: "application/ogg",
  53. opus: "audio/opus",
  54. otf: "font/otf",
  55. pdf: "application/pdf",
  56. png: "image/png",
  57. rtf: "application/rtf",
  58. svg: "image/svg+xml",
  59. tif: "image/tiff",
  60. tiff: "image/tiff",
  61. ts: "video/mp2t",
  62. ttf: "font/ttf",
  63. txt: "text/plain",
  64. wasm: "application/wasm",
  65. webm: "video/webm",
  66. weba: "audio/webm",
  67. webmanifest: "application/manifest+json",
  68. webp: "image/webp",
  69. woff: "font/woff",
  70. woff2: "font/woff2",
  71. xhtml: "application/xhtml+xml",
  72. xml: "application/xml",
  73. zip: "application/zip",
  74. "3gp": "video/3gpp",
  75. "3g2": "video/3gpp2",
  76. gltf: "model/gltf+json",
  77. glb: "model/gltf-binary"
  78. };
  79. var baseMimes = _baseMimes;
  80. export {
  81. getExtension,
  82. getMimeType,
  83. baseMimes as mimes
  84. };