feature: improved embeds

This commit is contained in:
Andy Burke 2025-07-25 20:07:29 -07:00
parent 609699e4b0
commit f2066310d4
5 changed files with 757 additions and 45 deletions

652
public/js/external/mimetypes.js vendored Normal file
View file

@ -0,0 +1,652 @@
"use strict";
const MIME_TYPES = [
[".3dm", "x-world/x-3dmf"],
[".3dmf", "x-world/x-3dmf"],
[".a", "application/octet-stream"],
[".aab", "application/x-authorware-bin"],
[".aam", "application/x-authorware-map"],
[".aas", "application/x-authorware-seg"],
[".abc", "text/vnd.abc"],
[".acgi", "text/html"],
[".afl", "video/animaflex"],
[".ai", "application/postscript"],
[".aif", "audio/aiff"],
[".aif", "audio/x-aiff"],
[".aifc", "audio/aiff"],
[".aifc", "audio/x-aiff"],
[".aiff", "audio/aiff"],
[".aiff", "audio/x-aiff"],
[".aim", "application/x-aim"],
[".aip", "text/x-audiosoft-intra"],
[".ani", "application/x-navi-animation"],
[".aos", "application/x-nokia-9000-communicator-add-on-software"],
[".aps", "application/mime"],
[".arc", "application/octet-stream"],
[".arj", "application/arj"],
[".arj", "application/octet-stream"],
[".art", "image/x-jg"],
[".asf", "video/x-ms-asf"],
[".asm", "text/x-asm"],
[".asp", "text/asp"],
[".asx", "application/x-mplayer2"],
[".asx", "video/x-ms-asf"],
[".asx", "video/x-ms-asf-plugin"],
[".au", "audio/basic"],
[".au", "audio/x-au"],
[".avi", "application/x-troff-msvideo"],
[".avi", "video/avi"],
[".avi", "video/msvideo"],
[".avi", "video/x-msvideo"],
[".avs", "video/avs-video"],
[".bcpio", "application/x-bcpio"],
[".bin", "application/mac-binary"],
[".bin", "application/macbinary"],
[".bin", "application/octet-stream"],
[".bin", "application/x-binary"],
[".bin", "application/x-macbinary"],
[".bm", "image/bmp"],
[".bmp", "image/bmp"],
[".bmp", "image/x-windows-bmp"],
[".boo", "application/book"],
[".book", "application/book"],
[".boz", "application/x-bzip2"],
[".bsh", "application/x-bsh"],
[".bz", "application/x-bzip"],
[".bz2", "application/x-bzip2"],
[".c", "text/plain"],
[".c", "text/x-c"],
[".c++", "text/plain"],
[".cat", "application/vnd.ms-pki.seccat"],
[".cc", "text/plain"],
[".cc", "text/x-c"],
[".ccad", "application/clariscad"],
[".cco", "application/x-cocoa"],
[".cdf", "application/cdf"],
[".cdf", "application/x-cdf"],
[".cdf", "application/x-netcdf"],
[".cer", "application/pkix-cert"],
[".cer", "application/x-x509-ca-cert"],
[".cha", "application/x-chat"],
[".chat", "application/x-chat"],
[".class", "application/java"],
[".class", "application/java-byte-code"],
[".class", "application/x-java-class"],
[".com", "application/octet-stream"],
[".com", "text/plain"],
[".conf", "text/plain"],
[".cpio", "application/x-cpio"],
[".cpp", "text/x-c"],
[".cpt", "application/mac-compactpro"],
[".cpt", "application/x-compactpro"],
[".cpt", "application/x-cpt"],
[".crl", "application/pkcs-crl"],
[".crl", "application/pkix-crl"],
[".crt", "application/pkix-cert"],
[".crt", "application/x-x509-ca-cert"],
[".crt", "application/x-x509-user-cert"],
[".csh", "application/x-csh"],
[".csh", "text/x-script.csh"],
[".css", "application/x-pointplus"],
[".css", "text/css"],
[".cxx", "text/plain"],
[".dcr", "application/x-director"],
[".deepv", "application/x-deepv"],
[".def", "text/plain"],
[".der", "application/x-x509-ca-cert"],
[".dif", "video/x-dv"],
[".dir", "application/x-director"],
[".dl", "video/dl"],
[".dl", "video/x-dl"],
[".doc", "application/msword"],
[".dot", "application/msword"],
[".dp", "application/commonground"],
[".drw", "application/drafting"],
[".dump", "application/octet-stream"],
[".dv", "video/x-dv"],
[".dvi", "application/x-dvi"],
[".dwf", "drawing/x-dwf"],
[".dwf", "model/vnd.dwf"],
[".dwg", "application/acad"],
[".dwg", "image/vnd.dwg"],
[".dwg", "image/x-dwg"],
[".dxf", "application/dxf"],
[".dxf", "image/vnd.dwg"],
[".dxf", "image/x-dwg"],
[".dxr", "application/x-director"],
[".el", "text/x-script.elisp"],
[".elc", "application/x-bytecode.elisp"],
[".elc", "application/x-elc"],
[".env", "application/x-envoy"],
[".eps", "application/postscript"],
[".es", "application/x-esrehber"],
[".etx", "text/x-setext"],
[".evy", "application/envoy"],
[".evy", "application/x-envoy"],
[".exe", "application/octet-stream"],
[".f", "text/plain"],
[".f", "text/x-fortran"],
[".f77", "text/x-fortran"],
[".f90", "text/plain"],
[".f90", "text/x-fortran"],
[".fdf", "application/vnd.fdf"],
[".fif", "application/fractals"],
[".fif", "image/fif"],
[".fli", "video/fli"],
[".fli", "video/x-fli"],
[".flo", "image/florian"],
[".flx", "text/vnd.fmi.flexstor"],
[".fmf", "video/x-atomic3d-feature"],
[".for", "text/plain"],
[".for", "text/x-fortran"],
[".fpx", "image/vnd.fpx"],
[".fpx", "image/vnd.net-fpx"],
[".frl", "application/freeloader"],
[".funk", "audio/make"],
[".g", "text/plain"],
[".g3", "image/g3fax"],
[".gif", "image/gif"],
[".gl", "video/gl"],
[".gl", "video/x-gl"],
[".gsd", "audio/x-gsm"],
[".gsm", "audio/x-gsm"],
[".gsp", "application/x-gsp"],
[".gss", "application/x-gss"],
[".gtar", "application/x-gtar"],
[".gz", "application/x-compressed"],
[".gz", "application/x-gzip"],
[".gzip", "application/x-gzip"],
[".gzip", "multipart/x-gzip"],
[".h", "text/plain"],
[".h", "text/x-h"],
[".hdf", "application/x-hdf"],
[".help", "application/x-helpfile"],
[".hgl", "application/vnd.hp-hpgl"],
[".hh", "text/plain"],
[".hh", "text/x-h"],
[".hlb", "text/x-script"],
[".hlp", "application/hlp"],
[".hlp", "application/x-helpfile"],
[".hlp", "application/x-winhelp"],
[".hpg", "application/vnd.hp-hpgl"],
[".hpgl", "application/vnd.hp-hpgl"],
[".hqx", "application/binhex"],
[".hqx", "application/binhex4"],
[".hqx", "application/mac-binhex"],
[".hqx", "application/mac-binhex40"],
[".hqx", "application/x-binhex40"],
[".hqx", "application/x-mac-binhex40"],
[".hta", "application/hta"],
[".htc", "text/x-component"],
[".htm", "text/html"],
[".html", "text/html"],
[".htmls", "text/html"],
[".htt", "text/webviewhtml"],
[".htx", "text/html"],
[".ice", "x-conference/x-cooltalk"],
[".ico", "image/x-icon"],
[".idc", "text/plain"],
[".ief", "image/ief"],
[".iefs", "image/ief"],
[".iges", "application/iges"],
[".iges", "model/iges"],
[".igs", "application/iges"],
[".igs", "model/iges"],
[".ima", "application/x-ima"],
[".imap", "application/x-httpd-imap"],
[".inf", "application/inf"],
[".ins", "application/x-internett-signup"],
[".ip", "application/x-ip2"],
[".isu", "video/x-isvideo"],
[".it", "audio/it"],
[".iv", "application/x-inventor"],
[".ivr", "i-world/i-vrml"],
[".ivy", "application/x-livescreen"],
[".jam", "audio/x-jam"],
[".jav", "text/plain"],
[".jav", "text/x-java-source"],
[".java", "text/plain"],
[".java", "text/x-java-source"],
[".jcm", "application/x-java-commerce"],
[".jfif", "image/jpeg"],
[".jfif-tbnl", "image/jpeg"],
[".jpe", "image/jpeg"],
[".jpeg", "image/jpeg"],
[".jpg", "image/jpeg"],
[".jps", "image/x-jps"],
[".js", "application/x-javascript"],
[".jut", "image/jutvision"],
[".kar", "audio/midi"],
[".kar", "music/x-karaoke"],
[".ksh", "application/x-ksh"],
[".ksh", "text/x-script.ksh"],
[".la", "audio/nspaudio"],
[".la", "audio/x-nspaudio"],
[".lam", "audio/x-liveaudio"],
[".latex", "application/x-latex"],
[".lha", "application/lha"],
[".lha", "application/octet-stream"],
[".lha", "application/x-lha"],
[".lhx", "application/octet-stream"],
[".list", "text/plain"],
[".lma", "audio/nspaudio"],
[".lma", "audio/x-nspaudio"],
[".log", "text/plain"],
[".lsp", "application/x-lisp"],
[".lsp", "text/x-script.lisp"],
[".lst", "text/plain"],
[".lsx", "text/x-la-asf"],
[".ltx", "application/x-latex"],
[".lzh", "application/octet-stream"],
[".lzh", "application/x-lzh"],
[".lzx", "application/lzx"],
[".lzx", "application/octet-stream"],
[".lzx", "application/x-lzx"],
[".m", "text/plain"],
[".m", "text/x-m"],
[".m1v", "video/mpeg"],
[".m2a", "audio/mpeg"],
[".m2v", "video/mpeg"],
[".m3u", "audio/x-mpequrl"],
[".m4a", "audio/mp4"],
[".m4v", "video/mp4"],
[".man", "application/x-troff-man"],
[".map", "application/x-navimap"],
[".mar", "text/plain"],
[".mbd", "application/mbedlet"],
[".mc$", "application/x-magic-cap-package-1.0"],
[".mcd", "application/mcad"],
[".mcd", "application/x-mathcad"],
[".mcf", "image/vasa"],
[".mcf", "text/mcf"],
[".mcp", "application/netmc"],
[".me", "application/x-troff-me"],
[".mht", "message/rfc822"],
[".mhtml", "message/rfc822"],
[".mid", "application/x-midi"],
[".mid", "audio/midi"],
[".mid", "audio/x-mid"],
[".mid", "audio/x-midi"],
[".mid", "music/crescendo"],
[".mid", "x-music/x-midi"],
[".midi", "application/x-midi"],
[".midi", "audio/midi"],
[".midi", "audio/x-mid"],
[".midi", "audio/x-midi"],
[".midi", "music/crescendo"],
[".midi", "x-music/x-midi"],
[".mif", "application/x-frame"],
[".mif", "application/x-mif"],
[".mime", "message/rfc822"],
[".mime", "www/mime"],
[".mjf", "audio/x-vnd.audioexplosion.mjuicemediafile"],
[".mjpg", "video/x-motion-jpeg"],
[".mm", "application/base64"],
[".mm", "application/x-meme"],
[".mme", "application/base64"],
[".mod", "audio/mod"],
[".mod", "audio/x-mod"],
[".moov", "video/quicktime"],
[".mov", "video/quicktime"],
[".movie", "video/x-sgi-movie"],
[".mp2", "audio/mpeg"],
[".mp2", "audio/x-mpeg"],
[".mp2", "video/mpeg"],
[".mp2", "video/x-mpeg"],
[".mp2", "video/x-mpeq2a"],
[".mp3", "audio/mpeg3"],
[".mp3", "audio/x-mpeg-3"],
[".mp3", "video/mpeg"],
[".mp3", "video/x-mpeg"],
[".mp4", "video/mp4"],
[".mpa", "audio/mpeg"],
[".mpa", "video/mpeg"],
[".mpc", "application/x-project"],
[".mpe", "video/mpeg"],
[".mpeg", "video/mpeg"],
[".mpg", "audio/mpeg"],
[".mpg", "video/mpeg"],
[".mpga", "audio/mpeg"],
[".mpp", "application/vnd.ms-project"],
[".mpt", "application/x-project"],
[".mpv", "application/x-project"],
[".mpx", "application/x-project"],
[".mrc", "application/marc"],
[".ms", "application/x-troff-ms"],
[".mv", "video/x-sgi-movie"],
[".my", "audio/make"],
[".mzz", "application/x-vnd.audioexplosion.mzz"],
[".nap", "image/naplps"],
[".naplps", "image/naplps"],
[".nc", "application/x-netcdf"],
[".ncm", "application/vnd.nokia.configuration-message"],
[".nif", "image/x-niff"],
[".niff", "image/x-niff"],
[".nix", "application/x-mix-transfer"],
[".nsc", "application/x-conference"],
[".nvd", "application/x-navidoc"],
[".o", "application/octet-stream"],
[".oda", "application/oda"],
[".omc", "application/x-omc"],
[".omcd", "application/x-omcdatamaker"],
[".omcr", "application/x-omcregerator"],
[".p", "text/x-pascal"],
[".p10", "application/pkcs10"],
[".p10", "application/x-pkcs10"],
[".p12", "application/pkcs-12"],
[".p12", "application/x-pkcs12"],
[".p7a", "application/x-pkcs7-signature"],
[".p7c", "application/pkcs7-mime"],
[".p7c", "application/x-pkcs7-mime"],
[".p7m", "application/pkcs7-mime"],
[".p7m", "application/x-pkcs7-mime"],
[".p7r", "application/x-pkcs7-certreqresp"],
[".p7s", "application/pkcs7-signature"],
[".part", "application/pro_eng"],
[".pas", "text/pascal"],
[".pbm", "image/x-portable-bitmap"],
[".pcl", "application/vnd.hp-pcl"],
[".pcl", "application/x-pcl"],
[".pct", "image/x-pict"],
[".pcx", "image/x-pcx"],
[".pdb", "chemical/x-pdb"],
[".pdf", "application/pdf"],
[".pfunk", "audio/make"],
[".pfunk", "audio/make.my.funk"],
[".pgm", "image/x-portable-graymap"],
[".pgm", "image/x-portable-greymap"],
[".pic", "image/pict"],
[".pict", "image/pict"],
[".pkg", "application/x-newton-compatible-pkg"],
[".pko", "application/vnd.ms-pki.pko"],
[".pl", "text/plain"],
[".pl", "text/x-script.perl"],
[".plx", "application/x-pixclscript"],
[".pm", "image/x-xpixmap"],
[".pm", "text/x-script.perl-module"],
[".pm4", "application/x-pagemaker"],
[".pm5", "application/x-pagemaker"],
[".png", "image/png"],
[".pnm", "application/x-portable-anymap"],
[".pnm", "image/x-portable-anymap"],
[".pot", "application/mspowerpoint"],
[".pot", "application/vnd.ms-powerpoint"],
[".pov", "model/x-pov"],
[".ppa", "application/vnd.ms-powerpoint"],
[".ppm", "image/x-portable-pixmap"],
[".pps", "application/mspowerpoint"],
[".pps", "application/vnd.ms-powerpoint"],
[".ppt", "application/mspowerpoint"],
[".ppt", "application/powerpoint"],
[".ppt", "application/vnd.ms-powerpoint"],
[".ppt", "application/x-mspowerpoint"],
[".ppz", "application/mspowerpoint"],
[".pre", "application/x-freelance"],
[".prt", "application/pro_eng"],
[".ps", "application/postscript"],
[".psd", "application/octet-stream"],
[".pvu", "paleovu/x-pv"],
[".pwz", "application/vnd.ms-powerpoint"],
[".py", "text/x-script.phyton"],
[".pyc", "applicaiton/x-bytecode.python"],
[".qcp", "audio/vnd.qcelp"],
[".qd3", "x-world/x-3dmf"],
[".qd3d", "x-world/x-3dmf"],
[".qif", "image/x-quicktime"],
[".qt", "video/quicktime"],
[".qtc", "video/x-qtc"],
[".qti", "image/x-quicktime"],
[".qtif", "image/x-quicktime"],
[".ra", "audio/x-pn-realaudio"],
[".ra", "audio/x-pn-realaudio-plugin"],
[".ra", "audio/x-realaudio"],
[".ram", "audio/x-pn-realaudio"],
[".ras", "application/x-cmu-raster"],
[".ras", "image/cmu-raster"],
[".ras", "image/x-cmu-raster"],
[".rast", "image/cmu-raster"],
[".rexx", "text/x-script.rexx"],
[".rf", "image/vnd.rn-realflash"],
[".rgb", "image/x-rgb"],
[".rm", "application/vnd.rn-realmedia"],
[".rm", "audio/x-pn-realaudio"],
[".rmi", "audio/mid"],
[".rmm", "audio/x-pn-realaudio"],
[".rmp", "audio/x-pn-realaudio"],
[".rmp", "audio/x-pn-realaudio-plugin"],
[".rng", "application/ringing-tones"],
[".rng", "application/vnd.nokia.ringing-tone"],
[".rnx", "application/vnd.rn-realplayer"],
[".roff", "application/x-troff"],
[".rp", "image/vnd.rn-realpix"],
[".rpm", "audio/x-pn-realaudio-plugin"],
[".rt", "text/richtext"],
[".rt", "text/vnd.rn-realtext"],
[".rtf", "application/rtf"],
[".rtf", "application/x-rtf"],
[".rtf", "text/richtext"],
[".rtx", "application/rtf"],
[".rtx", "text/richtext"],
[".rv", "video/vnd.rn-realvideo"],
[".s", "text/x-asm"],
[".s3m", "audio/s3m"],
[".saveme", "application/octet-stream"],
[".sbk", "application/x-tbook"],
[".scm", "application/x-lotusscreencam"],
[".scm", "text/x-script.guile"],
[".scm", "text/x-script.scheme"],
[".scm", "video/x-scm"],
[".sdml", "text/plain"],
[".sdp", "application/sdp"],
[".sdp", "application/x-sdp"],
[".sdr", "application/sounder"],
[".sea", "application/sea"],
[".sea", "application/x-sea"],
[".set", "application/set"],
[".sgm", "text/sgml"],
[".sgm", "text/x-sgml"],
[".sgml", "text/sgml"],
[".sgml", "text/x-sgml"],
[".sh", "application/x-bsh"],
[".sh", "application/x-sh"],
[".sh", "application/x-shar"],
[".sh", "text/x-script.sh"],
[".shar", "application/x-bsh"],
[".shar", "application/x-shar"],
[".shtml", "text/html"],
[".shtml", "text/x-server-parsed-html"],
[".sid", "audio/x-psid"],
[".sit", "application/x-sit"],
[".sit", "application/x-stuffit"],
[".skd", "application/x-koan"],
[".skm", "application/x-koan"],
[".skp", "application/x-koan"],
[".skt", "application/x-koan"],
[".sl", "application/x-seelogo"],
[".smi", "application/smil"],
[".smil", "application/smil"],
[".snd", "audio/basic"],
[".snd", "audio/x-adpcm"],
[".sol", "application/solids"],
[".spc", "application/x-pkcs7-certificates"],
[".spc", "text/x-speech"],
[".spl", "application/futuresplash"],
[".spr", "application/x-sprite"],
[".sprite", "application/x-sprite"],
[".src", "application/x-wais-source"],
[".ssi", "text/x-server-parsed-html"],
[".ssm", "application/streamingmedia"],
[".sst", "application/vnd.ms-pki.certstore"],
[".step", "application/step"],
[".stl", "application/sla"],
[".stl", "application/vnd.ms-pki.stl"],
[".stl", "application/x-navistyle"],
[".stp", "application/step"],
[".sv4cpio", "application/x-sv4cpio"],
[".sv4crc", "application/x-sv4crc"],
[".svf", "image/vnd.dwg"],
[".svf", "image/x-dwg"],
[".svr", "application/x-world"],
[".svr", "x-world/x-svr"],
[".swf", "application/x-shockwave-flash"],
[".t", "application/x-troff"],
[".talk", "text/x-speech"],
[".tar", "application/x-tar"],
[".tbk", "application/toolbook"],
[".tbk", "application/x-tbook"],
[".tcl", "application/x-tcl"],
[".tcl", "text/x-script.tcl"],
[".tcsh", "text/x-script.tcsh"],
[".tex", "application/x-tex"],
[".texi", "application/x-texinfo"],
[".texinfo", "application/x-texinfo"],
[".text", "application/plain"],
[".text", "text/plain"],
[".tgz", "application/gnutar"],
[".tgz", "application/x-compressed"],
[".tif", "image/tiff"],
[".tif", "image/x-tiff"],
[".tiff", "image/tiff"],
[".tiff", "image/x-tiff"],
[".tr", "application/x-troff"],
[".tsi", "audio/tsp-audio"],
[".tsp", "application/dsptype"],
[".tsp", "audio/tsplayer"],
[".tsv", "text/tab-separated-values"],
[".turbot", "image/florian"],
[".txt", "text/plain"],
[".uil", "text/x-uil"],
[".uni", "text/uri-list"],
[".unis", "text/uri-list"],
[".unv", "application/i-deas"],
[".uri", "text/uri-list"],
[".uris", "text/uri-list"],
[".ustar", "application/x-ustar"],
[".ustar", "multipart/x-ustar"],
[".uu", "application/octet-stream"],
[".uu", "text/x-uuencode"],
[".uue", "text/x-uuencode"],
[".vcd", "application/x-cdlink"],
[".vcs", "text/x-vcalendar"],
[".vda", "application/vda"],
[".vdo", "video/vdo"],
[".vew", "application/groupwise"],
[".viv", "video/vivo"],
[".viv", "video/vnd.vivov"],
[".vivo", "video/vivo"],
[".vivo", "video/vnd.vivo"],
[".vmd", "application/vocaltec-media-desc"],
[".vmf", "application/vocaltec-media-file"],
[".voc", "audio/voc"],
[".voc", "audio/x-voc"],
[".vos", "video/vosaic"],
[".vox", "audio/voxware"],
[".vqe", "audio/x-twinvq-plugin"],
[".vqf", "audio/x-twinvq"],
[".vql", "audio/x-twinvq-plugin"],
[".vrml", "application/x-vrml"],
[".vrml", "model/vrml"],
[".vrml", "x-world/x-vrml"],
[".vrt", "x-world/x-vrt"],
[".vsd", "application/x-visio"],
[".vst", "application/x-visio"],
[".vsw", "application/x-visio"],
[".w60", "application/wordperfect6.0"],
[".w61", "application/wordperfect6.1"],
[".w6w", "application/msword"],
[".wav", "audio/wav"],
[".wav", "audio/x-wav"],
[".wb1", "application/x-qpro"],
[".wbmp", "image/vnd.wap.wbmp"],
[".web", "application/vnd.xara"],
[".wiz", "application/msword"],
[".wk1", "application/x-123"],
[".wmf", "windows/metafile"],
[".wml", "text/vnd.wap.wml"],
[".wmlc", "application/vnd.wap.wmlc"],
[".wmls", "text/vnd.wap.wmlscript"],
[".wmlsc", "application/vnd.wap.wmlscriptc"],
[".word", "application/msword"],
[".wp", "application/wordperfect"],
[".wp5", "application/wordperfect"],
[".wp5", "application/wordperfect6.0"],
[".wp6", "application/wordperfect"],
[".wpd", "application/wordperfect"],
[".wpd", "application/x-wpwin"],
[".wq1", "application/x-lotus"],
[".wri", "application/mswrite"],
[".wri", "application/x-wri"],
[".wrl", "application/x-world"],
[".wrl", "model/vrml"],
[".wrl", "x-world/x-vrml"],
[".wrz", "model/vrml"],
[".wrz", "x-world/x-vrml"],
[".wsc", "text/scriplet"],
[".wsrc", "application/x-wais-source"],
[".wtk", "application/x-wintalk"],
[".xbm", "image/x-xbitmap"],
[".xbm", "image/x-xbm"],
[".xbm", "image/xbm"],
[".xdr", "video/x-amt-demorun"],
[".xgz", "xgl/drawing"],
[".xif", "image/vnd.xiff"],
[".xl", "application/excel"],
[".xla", "application/excel"],
[".xla", "application/x-excel"],
[".xla", "application/x-msexcel"],
[".xlb", "application/excel"],
[".xlb", "application/vnd.ms-excel"],
[".xlb", "application/x-excel"],
[".xlc", "application/excel"],
[".xlc", "application/vnd.ms-excel"],
[".xlc", "application/x-excel"],
[".xld", "application/excel"],
[".xld", "application/x-excel"],
[".xlk", "application/excel"],
[".xlk", "application/x-excel"],
[".xll", "application/excel"],
[".xll", "application/vnd.ms-excel"],
[".xll", "application/x-excel"],
[".xlm", "application/excel"],
[".xlm", "application/vnd.ms-excel"],
[".xlm", "application/x-excel"],
[".xls", "application/excel"],
[".xls", "application/vnd.ms-excel"],
[".xls", "application/x-excel"],
[".xls", "application/x-msexcel"],
[".xlt", "application/excel"],
[".xlt", "application/x-excel"],
[".xlv", "application/excel"],
[".xlv", "application/x-excel"],
[".xlw", "application/excel"],
[".xlw", "application/vnd.ms-excel"],
[".xlw", "application/x-excel"],
[".xlw", "application/x-msexcel"],
[".xm", "audio/xm"],
[".xml", "application/xml"],
[".xml", "text/xml"],
[".xmz", "xgl/movie"],
[".xpix", "application/x-vnd.ls-xpix"],
[".xpm", "image/x-xpixmap"],
[".xpm", "image/xpm"],
[".x-png", "image/png"],
[".xsr", "video/x-amt-showrun"],
[".xwd", "image/x-xwd"],
[".xwd", "image/x-xwindowdump"],
[".xyz", "chemical/x-pdb"],
[".z", "application/x-compress"],
[".z", "application/x-compressed"],
[".zip", "application/x-compressed"],
[".zip", "application/x-zip-compressed"],
[".zip", "application/zip"],
[".zip", "multipart/x-zip"],
[".zoo", "application/octet-stream"],
[".zsh", "text/x-script.zsh"],
];
function get_mime_types(extension) {
return MIME_TYPES.filter((type) => type[0] === extension).reduce((result, type) => {
result.push(type[1]);
return result;
}, []);
}