universal-common
Version:
Library that provides useful missing base class library functionality.
657 lines (647 loc) • 37.6 kB
JavaScript
import ArgumentError from "./ArgumentError.js";
let extensionMediaTypeMapping = {};
extensionMediaTypeMapping[".323"] = "text/h323";
extensionMediaTypeMapping[".3g2"] = "video/3gpp2";
extensionMediaTypeMapping[".3gp"] = "video/3gpp";
extensionMediaTypeMapping[".3gp2"] = "video/3gpp2";
extensionMediaTypeMapping[".3gpp"] = "video/3gpp";
extensionMediaTypeMapping[".7z"] = "application/x-7z-compressed";
extensionMediaTypeMapping[".aa"] = "audio/audible";
extensionMediaTypeMapping[".AAC"] = "audio/aac";
extensionMediaTypeMapping[".aaf"] = "application/octet-stream";
extensionMediaTypeMapping[".aax"] = "audio/vnd.audible.aax";
extensionMediaTypeMapping[".ac3"] = "audio/ac3";
extensionMediaTypeMapping[".aca"] = "application/octet-stream";
extensionMediaTypeMapping[".accda"] = "application/msaccess.addin";
extensionMediaTypeMapping[".accdb"] = "application/msaccess";
extensionMediaTypeMapping[".accdc"] = "application/msaccess.cab";
extensionMediaTypeMapping[".accde"] = "application/msaccess";
extensionMediaTypeMapping[".accdr"] = "application/msaccess.runtime";
extensionMediaTypeMapping[".accdt"] = "application/msaccess";
extensionMediaTypeMapping[".accdw"] = "application/msaccess.webapplication";
extensionMediaTypeMapping[".accft"] = "application/msaccess.ftemplate";
extensionMediaTypeMapping[".acx"] = "application/internet-property-stream";
extensionMediaTypeMapping[".AddIn"] = "text/xml";
extensionMediaTypeMapping[".ade"] = "application/msaccess";
extensionMediaTypeMapping[".adobebridge"] = "application/x-bridge-url";
extensionMediaTypeMapping[".adp"] = "application/msaccess";
extensionMediaTypeMapping[".ADT"] = "audio/vnd.dlna.adts";
extensionMediaTypeMapping[".ADTS"] = "audio/aac";
extensionMediaTypeMapping[".afm"] = "application/octet-stream";
extensionMediaTypeMapping[".ai"] = "application/postscript";
extensionMediaTypeMapping[".aif"] = "audio/x-aiff";
extensionMediaTypeMapping[".aifc"] = "audio/aiff";
extensionMediaTypeMapping[".aiff"] = "audio/aiff";
extensionMediaTypeMapping[".air"] = "application/vnd.adobe.air-application-installer-package+zip";
extensionMediaTypeMapping[".amc"] = "application/x-mpeg";
extensionMediaTypeMapping[".application"] = "application/x-ms-application";
extensionMediaTypeMapping[".art"] = "image/x-jg";
extensionMediaTypeMapping[".asa"] = "application/xml";
extensionMediaTypeMapping[".asax"] = "application/xml";
extensionMediaTypeMapping[".ascx"] = "application/xml";
extensionMediaTypeMapping[".asd"] = "application/octet-stream";
extensionMediaTypeMapping[".asf"] = "video/x-ms-asf";
extensionMediaTypeMapping[".ashx"] = "application/xml";
extensionMediaTypeMapping[".asi"] = "application/octet-stream";
extensionMediaTypeMapping[".asm"] = "text/plain";
extensionMediaTypeMapping[".asmx"] = "application/xml";
extensionMediaTypeMapping[".aspx"] = "application/xml";
extensionMediaTypeMapping[".asr"] = "video/x-ms-asf";
extensionMediaTypeMapping[".asx"] = "video/x-ms-asf";
extensionMediaTypeMapping[".atom"] = "application/atom+xml";
extensionMediaTypeMapping[".au"] = "audio/basic";
extensionMediaTypeMapping[".avi"] = "video/x-msvideo";
extensionMediaTypeMapping[".axs"] = "application/olescript";
extensionMediaTypeMapping[".bas"] = "text/plain";
extensionMediaTypeMapping[".bcpio"] = "application/x-bcpio";
extensionMediaTypeMapping[".bin"] = "application/octet-stream";
extensionMediaTypeMapping[".bmp"] = "image/bmp";
extensionMediaTypeMapping[".c"] = "text/plain";
extensionMediaTypeMapping[".cab"] = "application/octet-stream";
extensionMediaTypeMapping[".caf"] = "audio/x-caf";
extensionMediaTypeMapping[".calx"] = "application/vnd.ms-office.calx";
extensionMediaTypeMapping[".cat"] = "application/vnd.ms-pki.seccat";
extensionMediaTypeMapping[".cc"] = "text/plain";
extensionMediaTypeMapping[".cd"] = "text/plain";
extensionMediaTypeMapping[".cdda"] = "audio/aiff";
extensionMediaTypeMapping[".cdf"] = "application/x-cdf";
extensionMediaTypeMapping[".cer"] = "application/x-x509-ca-cert";
extensionMediaTypeMapping[".chm"] = "application/octet-stream";
extensionMediaTypeMapping[".class"] = "application/x-java-applet";
extensionMediaTypeMapping[".clp"] = "application/x-msclip";
extensionMediaTypeMapping[".cmx"] = "image/x-cmx";
extensionMediaTypeMapping[".cnf"] = "text/plain";
extensionMediaTypeMapping[".cod"] = "image/cis-cod";
extensionMediaTypeMapping[".config"] = "application/xml";
extensionMediaTypeMapping[".contact"] = "text/x-ms-contact";
extensionMediaTypeMapping[".coverage"] = "application/xml";
extensionMediaTypeMapping[".cpio"] = "application/x-cpio";
extensionMediaTypeMapping[".cpp"] = "text/plain";
extensionMediaTypeMapping[".crd"] = "application/x-mscardfile";
extensionMediaTypeMapping[".crl"] = "application/pkix-crl";
extensionMediaTypeMapping[".crt"] = "application/x-x509-ca-cert";
extensionMediaTypeMapping[".cs"] = "text/plain";
extensionMediaTypeMapping[".csdproj"] = "text/plain";
extensionMediaTypeMapping[".csh"] = "application/x-csh";
extensionMediaTypeMapping[".csproj"] = "text/plain";
extensionMediaTypeMapping[".css"] = "text/css";
extensionMediaTypeMapping[".csv"] = "text/csv";
extensionMediaTypeMapping[".cur"] = "application/octet-stream";
extensionMediaTypeMapping[".cxx"] = "text/plain";
extensionMediaTypeMapping[".dat"] = "application/octet-stream";
extensionMediaTypeMapping[".datasource"] = "application/xml";
extensionMediaTypeMapping[".dbproj"] = "text/plain";
extensionMediaTypeMapping[".dcr"] = "application/x-director";
extensionMediaTypeMapping[".def"] = "text/plain";
extensionMediaTypeMapping[".deploy"] = "application/octet-stream";
extensionMediaTypeMapping[".der"] = "application/x-x509-ca-cert";
extensionMediaTypeMapping[".dgml"] = "application/xml";
extensionMediaTypeMapping[".dib"] = "image/bmp";
extensionMediaTypeMapping[".dif"] = "video/x-dv";
extensionMediaTypeMapping[".dir"] = "application/x-director";
extensionMediaTypeMapping[".disco"] = "text/xml";
extensionMediaTypeMapping[".dll"] = "application/x-msdownload";
extensionMediaTypeMapping[".dll.config"] = "text/xml";
extensionMediaTypeMapping[".dlm"] = "text/dlm";
extensionMediaTypeMapping[".doc"] = "application/msword";
extensionMediaTypeMapping[".docm"] = "application/vnd.ms-word.document.macroEnabled.12";
extensionMediaTypeMapping[".docx"] = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
extensionMediaTypeMapping[".dot"] = "application/msword";
extensionMediaTypeMapping[".dotm"] = "application/vnd.ms-word.template.macroEnabled.12";
extensionMediaTypeMapping[".dotx"] = "application/vnd.openxmlformats-officedocument.wordprocessingml.template";
extensionMediaTypeMapping[".dsp"] = "application/octet-stream";
extensionMediaTypeMapping[".dsw"] = "text/plain";
extensionMediaTypeMapping[".dtd"] = "text/xml";
extensionMediaTypeMapping[".dtsConfig"] = "text/xml";
extensionMediaTypeMapping[".dv"] = "video/x-dv";
extensionMediaTypeMapping[".dvi"] = "application/x-dvi";
extensionMediaTypeMapping[".dwf"] = "drawing/x-dwf";
extensionMediaTypeMapping[".dwp"] = "application/octet-stream";
extensionMediaTypeMapping[".dxr"] = "application/x-director";
extensionMediaTypeMapping[".eml"] = "message/rfc822";
extensionMediaTypeMapping[".emz"] = "application/octet-stream";
extensionMediaTypeMapping[".eot"] = "application/octet-stream";
extensionMediaTypeMapping[".eps"] = "application/postscript";
extensionMediaTypeMapping[".etl"] = "application/etl";
extensionMediaTypeMapping[".etx"] = "text/x-setext";
extensionMediaTypeMapping[".evy"] = "application/envoy";
extensionMediaTypeMapping[".exe"] = "application/octet-stream";
extensionMediaTypeMapping[".exe.config"] = "text/xml";
extensionMediaTypeMapping[".fdf"] = "application/vnd.fdf";
extensionMediaTypeMapping[".fif"] = "application/fractals";
extensionMediaTypeMapping[".filters"] = "Application/xml";
extensionMediaTypeMapping[".fla"] = "application/octet-stream";
extensionMediaTypeMapping[".flr"] = "x-world/x-vrml";
extensionMediaTypeMapping[".flv"] = "video/x-flv";
extensionMediaTypeMapping[".fsscript"] = "application/fsharp-script";
extensionMediaTypeMapping[".fsx"] = "application/fsharp-script";
extensionMediaTypeMapping[".generictest"] = "application/xml";
extensionMediaTypeMapping[".gif"] = "image/gif";
extensionMediaTypeMapping[".group"] = "text/x-ms-group";
extensionMediaTypeMapping[".gsm"] = "audio/x-gsm";
extensionMediaTypeMapping[".gtar"] = "application/x-gtar";
extensionMediaTypeMapping[".gz"] = "application/x-gzip";
extensionMediaTypeMapping[".h"] = "text/plain";
extensionMediaTypeMapping[".hdf"] = "application/x-hdf";
extensionMediaTypeMapping[".hdml"] = "text/x-hdml";
extensionMediaTypeMapping[".hhc"] = "application/x-oleobject";
extensionMediaTypeMapping[".hhk"] = "application/octet-stream";
extensionMediaTypeMapping[".hhp"] = "application/octet-stream";
extensionMediaTypeMapping[".hlp"] = "application/winhlp";
extensionMediaTypeMapping[".hpp"] = "text/plain";
extensionMediaTypeMapping[".hqx"] = "application/mac-binhex40";
extensionMediaTypeMapping[".hta"] = "application/hta";
extensionMediaTypeMapping[".htc"] = "text/x-component";
extensionMediaTypeMapping[".htm"] = "text/html";
extensionMediaTypeMapping[".html"] = "text/html";
extensionMediaTypeMapping[".htt"] = "text/webviewhtml";
extensionMediaTypeMapping[".hxa"] = "application/xml";
extensionMediaTypeMapping[".hxc"] = "application/xml";
extensionMediaTypeMapping[".hxd"] = "application/octet-stream";
extensionMediaTypeMapping[".hxe"] = "application/xml";
extensionMediaTypeMapping[".hxf"] = "application/xml";
extensionMediaTypeMapping[".hxh"] = "application/octet-stream";
extensionMediaTypeMapping[".hxi"] = "application/octet-stream";
extensionMediaTypeMapping[".hxk"] = "application/xml";
extensionMediaTypeMapping[".hxq"] = "application/octet-stream";
extensionMediaTypeMapping[".hxr"] = "application/octet-stream";
extensionMediaTypeMapping[".hxs"] = "application/octet-stream";
extensionMediaTypeMapping[".hxt"] = "text/html";
extensionMediaTypeMapping[".hxv"] = "application/xml";
extensionMediaTypeMapping[".hxw"] = "application/octet-stream";
extensionMediaTypeMapping[".hxx"] = "text/plain";
extensionMediaTypeMapping[".i"] = "text/plain";
extensionMediaTypeMapping[".ico"] = "image/x-icon";
extensionMediaTypeMapping[".ics"] = "application/octet-stream";
extensionMediaTypeMapping[".idl"] = "text/plain";
extensionMediaTypeMapping[".ief"] = "image/ief";
extensionMediaTypeMapping[".iii"] = "application/x-iphone";
extensionMediaTypeMapping[".inc"] = "text/plain";
extensionMediaTypeMapping[".inf"] = "application/octet-stream";
extensionMediaTypeMapping[".inl"] = "text/plain";
extensionMediaTypeMapping[".ins"] = "application/x-internet-signup";
extensionMediaTypeMapping[".ipa"] = "application/x-itunes-ipa";
extensionMediaTypeMapping[".ipg"] = "application/x-itunes-ipg";
extensionMediaTypeMapping[".ipproj"] = "text/plain";
extensionMediaTypeMapping[".ipsw"] = "application/x-itunes-ipsw";
extensionMediaTypeMapping[".iqy"] = "text/x-ms-iqy";
extensionMediaTypeMapping[".isp"] = "application/x-internet-signup";
extensionMediaTypeMapping[".ite"] = "application/x-itunes-ite";
extensionMediaTypeMapping[".itlp"] = "application/x-itunes-itlp";
extensionMediaTypeMapping[".itms"] = "application/x-itunes-itms";
extensionMediaTypeMapping[".itpc"] = "application/x-itunes-itpc";
extensionMediaTypeMapping[".IVF"] = "video/x-ivf";
extensionMediaTypeMapping[".jar"] = "application/java-archive";
extensionMediaTypeMapping[".java"] = "application/octet-stream";
extensionMediaTypeMapping[".jck"] = "application/liquidmotion";
extensionMediaTypeMapping[".jcz"] = "application/liquidmotion";
extensionMediaTypeMapping[".jfif"] = "image/pjpeg";
extensionMediaTypeMapping[".jnlp"] = "application/x-java-jnlp-file";
extensionMediaTypeMapping[".jpb"] = "application/octet-stream";
extensionMediaTypeMapping[".jpe"] = "image/jpeg";
extensionMediaTypeMapping[".jpeg"] = "image/jpeg";
extensionMediaTypeMapping[".jpg"] = "image/jpeg";
extensionMediaTypeMapping[".js"] = "application/x-javascript";
extensionMediaTypeMapping[".json"] = "application/json";
extensionMediaTypeMapping[".jsx"] = "text/jscript";
extensionMediaTypeMapping[".jsxbin"] = "text/plain";
extensionMediaTypeMapping[".latex"] = "application/x-latex";
extensionMediaTypeMapping[".library-ms"] = "application/windows-library+xml";
extensionMediaTypeMapping[".lit"] = "application/x-ms-reader";
extensionMediaTypeMapping[".loadtest"] = "application/xml";
extensionMediaTypeMapping[".lpk"] = "application/octet-stream";
extensionMediaTypeMapping[".lsf"] = "video/x-la-asf";
extensionMediaTypeMapping[".lst"] = "text/plain";
extensionMediaTypeMapping[".lsx"] = "video/x-la-asf";
extensionMediaTypeMapping[".lzh"] = "application/octet-stream";
extensionMediaTypeMapping[".m13"] = "application/x-msmediaview";
extensionMediaTypeMapping[".m14"] = "application/x-msmediaview";
extensionMediaTypeMapping[".m1v"] = "video/mpeg";
extensionMediaTypeMapping[".m2t"] = "video/vnd.dlna.mpeg-tts";
extensionMediaTypeMapping[".m2ts"] = "video/vnd.dlna.mpeg-tts";
extensionMediaTypeMapping[".m2v"] = "video/mpeg";
extensionMediaTypeMapping[".m3u"] = "audio/x-mpegurl";
extensionMediaTypeMapping[".m3u8"] = "audio/x-mpegurl";
extensionMediaTypeMapping[".m4a"] = "audio/m4a";
extensionMediaTypeMapping[".m4b"] = "audio/m4b";
extensionMediaTypeMapping[".m4p"] = "audio/m4p";
extensionMediaTypeMapping[".m4r"] = "audio/x-m4r";
extensionMediaTypeMapping[".m4v"] = "video/x-m4v";
extensionMediaTypeMapping[".mac"] = "image/x-macpaint";
extensionMediaTypeMapping[".mak"] = "text/plain";
extensionMediaTypeMapping[".man"] = "application/x-troff-man";
extensionMediaTypeMapping[".manifest"] = "application/x-ms-manifest";
extensionMediaTypeMapping[".map"] = "text/plain";
extensionMediaTypeMapping[".master"] = "application/xml";
extensionMediaTypeMapping[".mda"] = "application/msaccess";
extensionMediaTypeMapping[".mdb"] = "application/x-msaccess";
extensionMediaTypeMapping[".mde"] = "application/msaccess";
extensionMediaTypeMapping[".mdp"] = "application/octet-stream";
extensionMediaTypeMapping[".me"] = "application/x-troff-me";
extensionMediaTypeMapping[".mfp"] = "application/x-shockwave-flash";
extensionMediaTypeMapping[".mht"] = "message/rfc822";
extensionMediaTypeMapping[".mhtml"] = "message/rfc822";
extensionMediaTypeMapping[".mid"] = "audio/mid";
extensionMediaTypeMapping[".midi"] = "audio/mid";
extensionMediaTypeMapping[".mix"] = "application/octet-stream";
extensionMediaTypeMapping[".mk"] = "text/plain";
extensionMediaTypeMapping[".mmf"] = "application/x-smaf";
extensionMediaTypeMapping[".mno"] = "text/xml";
extensionMediaTypeMapping[".mny"] = "application/x-msmoney";
extensionMediaTypeMapping[".mod"] = "video/mpeg";
extensionMediaTypeMapping[".mov"] = "video/quicktime";
extensionMediaTypeMapping[".movie"] = "video/x-sgi-movie";
extensionMediaTypeMapping[".mp2"] = "video/mpeg";
extensionMediaTypeMapping[".mp2v"] = "video/mpeg";
extensionMediaTypeMapping[".mp3"] = "audio/mpeg";
extensionMediaTypeMapping[".mp4"] = "video/mp4";
extensionMediaTypeMapping[".mp4v"] = "video/mp4";
extensionMediaTypeMapping[".mpa"] = "video/mpeg";
extensionMediaTypeMapping[".mpe"] = "video/mpeg";
extensionMediaTypeMapping[".mpeg"] = "video/mpeg";
extensionMediaTypeMapping[".mpf"] = "application/vnd.ms-mediapackage";
extensionMediaTypeMapping[".mpg"] = "video/mpeg";
extensionMediaTypeMapping[".mpp"] = "application/vnd.ms-project";
extensionMediaTypeMapping[".mpv2"] = "video/mpeg";
extensionMediaTypeMapping[".mqv"] = "video/quicktime";
extensionMediaTypeMapping[".ms"] = "application/x-troff-ms";
extensionMediaTypeMapping[".msi"] = "application/octet-stream";
extensionMediaTypeMapping[".mso"] = "application/octet-stream";
extensionMediaTypeMapping[".mts"] = "video/vnd.dlna.mpeg-tts";
extensionMediaTypeMapping[".mtx"] = "application/xml";
extensionMediaTypeMapping[".mvb"] = "application/x-msmediaview";
extensionMediaTypeMapping[".mvc"] = "application/x-miva-compiled";
extensionMediaTypeMapping[".mxp"] = "application/x-mmxp";
extensionMediaTypeMapping[".nc"] = "application/x-netcdf";
extensionMediaTypeMapping[".nsc"] = "video/x-ms-asf";
extensionMediaTypeMapping[".nws"] = "message/rfc822";
extensionMediaTypeMapping[".ocx"] = "application/octet-stream";
extensionMediaTypeMapping[".oda"] = "application/oda";
extensionMediaTypeMapping[".odc"] = "text/x-ms-odc";
extensionMediaTypeMapping[".odh"] = "text/plain";
extensionMediaTypeMapping[".odl"] = "text/plain";
extensionMediaTypeMapping[".odp"] = "application/vnd.oasis.opendocument.presentation";
extensionMediaTypeMapping[".ods"] = "application/oleobject";
extensionMediaTypeMapping[".odt"] = "application/vnd.oasis.opendocument.text";
extensionMediaTypeMapping[".one"] = "application/onenote";
extensionMediaTypeMapping[".onea"] = "application/onenote";
extensionMediaTypeMapping[".onepkg"] = "application/onenote";
extensionMediaTypeMapping[".onetmp"] = "application/onenote";
extensionMediaTypeMapping[".onetoc"] = "application/onenote";
extensionMediaTypeMapping[".onetoc2"] = "application/onenote";
extensionMediaTypeMapping[".orderedtest"] = "application/xml";
extensionMediaTypeMapping[".osdx"] = "application/opensearchdescription+xml";
extensionMediaTypeMapping[".p10"] = "application/pkcs10";
extensionMediaTypeMapping[".p12"] = "application/x-pkcs12";
extensionMediaTypeMapping[".p7b"] = "application/x-pkcs7-certificates";
extensionMediaTypeMapping[".p7c"] = "application/pkcs7-mime";
extensionMediaTypeMapping[".p7m"] = "application/pkcs7-mime";
extensionMediaTypeMapping[".p7r"] = "application/x-pkcs7-certreqresp";
extensionMediaTypeMapping[".p7s"] = "application/pkcs7-signature";
extensionMediaTypeMapping[".pbm"] = "image/x-portable-bitmap";
extensionMediaTypeMapping[".pcast"] = "application/x-podcast";
extensionMediaTypeMapping[".pct"] = "image/pict";
extensionMediaTypeMapping[".pcx"] = "application/octet-stream";
extensionMediaTypeMapping[".pcz"] = "application/octet-stream";
extensionMediaTypeMapping[".pdf"] = "application/pdf";
extensionMediaTypeMapping[".pfb"] = "application/octet-stream";
extensionMediaTypeMapping[".pfm"] = "application/octet-stream";
extensionMediaTypeMapping[".pfx"] = "application/x-pkcs12";
extensionMediaTypeMapping[".pgm"] = "image/x-portable-graymap";
extensionMediaTypeMapping[".pic"] = "image/pict";
extensionMediaTypeMapping[".pict"] = "image/pict";
extensionMediaTypeMapping[".pkgdef"] = "text/plain";
extensionMediaTypeMapping[".pkgundef"] = "text/plain";
extensionMediaTypeMapping[".pko"] = "application/vnd.ms-pki.pko";
extensionMediaTypeMapping[".pls"] = "audio/scpls";
extensionMediaTypeMapping[".pma"] = "application/x-perfmon";
extensionMediaTypeMapping[".pmc"] = "application/x-perfmon";
extensionMediaTypeMapping[".pml"] = "application/x-perfmon";
extensionMediaTypeMapping[".pmr"] = "application/x-perfmon";
extensionMediaTypeMapping[".pmw"] = "application/x-perfmon";
extensionMediaTypeMapping[".png"] = "image/png";
extensionMediaTypeMapping[".pnm"] = "image/x-portable-anymap";
extensionMediaTypeMapping[".pnt"] = "image/x-macpaint";
extensionMediaTypeMapping[".pntg"] = "image/x-macpaint";
extensionMediaTypeMapping[".pnz"] = "image/png";
extensionMediaTypeMapping[".pot"] = "application/vnd.ms-powerpoint";
extensionMediaTypeMapping[".potm"] = "application/vnd.ms-powerpoint.template.macroEnabled.12";
extensionMediaTypeMapping[".potx"] = "application/vnd.openxmlformats-officedocument.presentationml.template";
extensionMediaTypeMapping[".ppa"] = "application/vnd.ms-powerpoint";
extensionMediaTypeMapping[".ppam"] = "application/vnd.ms-powerpoint.addin.macroEnabled.12";
extensionMediaTypeMapping[".ppm"] = "image/x-portable-pixmap";
extensionMediaTypeMapping[".pps"] = "application/vnd.ms-powerpoint";
extensionMediaTypeMapping[".ppsm"] = "application/vnd.ms-powerpoint.slideshow.macroEnabled.12";
extensionMediaTypeMapping[".ppsx"] = "application/vnd.openxmlformats-officedocument.presentationml.slideshow";
extensionMediaTypeMapping[".ppt"] = "application/vnd.ms-powerpoint";
extensionMediaTypeMapping[".pptm"] = "application/vnd.ms-powerpoint.presentation.macroEnabled.12";
extensionMediaTypeMapping[".pptx"] = "application/vnd.openxmlformats-officedocument.presentationml.presentation";
extensionMediaTypeMapping[".prf"] = "application/pics-rules";
extensionMediaTypeMapping[".prm"] = "application/octet-stream";
extensionMediaTypeMapping[".prx"] = "application/octet-stream";
extensionMediaTypeMapping[".ps"] = "application/postscript";
extensionMediaTypeMapping[".psc1"] = "application/PowerShell";
extensionMediaTypeMapping[".psd"] = "application/octet-stream";
extensionMediaTypeMapping[".psess"] = "application/xml";
extensionMediaTypeMapping[".psm"] = "application/octet-stream";
extensionMediaTypeMapping[".psp"] = "application/octet-stream";
extensionMediaTypeMapping[".pub"] = "application/x-mspublisher";
extensionMediaTypeMapping[".pwz"] = "application/vnd.ms-powerpoint";
extensionMediaTypeMapping[".qht"] = "text/x-html-insertion";
extensionMediaTypeMapping[".qhtm"] = "text/x-html-insertion";
extensionMediaTypeMapping[".qt"] = "video/quicktime";
extensionMediaTypeMapping[".qti"] = "image/x-quicktime";
extensionMediaTypeMapping[".qtif"] = "image/x-quicktime";
extensionMediaTypeMapping[".qtl"] = "application/x-quicktimeplayer";
extensionMediaTypeMapping[".qxd"] = "application/octet-stream";
extensionMediaTypeMapping[".ra"] = "audio/x-pn-realaudio";
extensionMediaTypeMapping[".ram"] = "audio/x-pn-realaudio";
extensionMediaTypeMapping[".rar"] = "application/octet-stream";
extensionMediaTypeMapping[".ras"] = "image/x-cmu-raster";
extensionMediaTypeMapping[".rat"] = "application/rat-file";
extensionMediaTypeMapping[".rc"] = "text/plain";
extensionMediaTypeMapping[".rc2"] = "text/plain";
extensionMediaTypeMapping[".rct"] = "text/plain";
extensionMediaTypeMapping[".rdlc"] = "application/xml";
extensionMediaTypeMapping[".resx"] = "application/xml";
extensionMediaTypeMapping[".rf"] = "image/vnd.rn-realflash";
extensionMediaTypeMapping[".rgb"] = "image/x-rgb";
extensionMediaTypeMapping[".rgs"] = "text/plain";
extensionMediaTypeMapping[".rm"] = "application/vnd.rn-realmedia";
extensionMediaTypeMapping[".rmi"] = "audio/mid";
extensionMediaTypeMapping[".rmp"] = "application/vnd.rn-rn_music_package";
extensionMediaTypeMapping[".roff"] = "application/x-troff";
extensionMediaTypeMapping[".rpm"] = "audio/x-pn-realaudio-plugin";
extensionMediaTypeMapping[".rqy"] = "text/x-ms-rqy";
extensionMediaTypeMapping[".rtf"] = "application/rtf";
extensionMediaTypeMapping[".rtx"] = "text/richtext";
extensionMediaTypeMapping[".ruleset"] = "application/xml";
extensionMediaTypeMapping[".s"] = "text/plain";
extensionMediaTypeMapping[".safariextz"] = "application/x-safari-safariextz";
extensionMediaTypeMapping[".scd"] = "application/x-msschedule";
extensionMediaTypeMapping[".sct"] = "text/scriptlet";
extensionMediaTypeMapping[".sd2"] = "audio/x-sd2";
extensionMediaTypeMapping[".sdp"] = "application/sdp";
extensionMediaTypeMapping[".sea"] = "application/octet-stream";
extensionMediaTypeMapping[".searchConnector-ms"] = "application/windows-search-connector+xml";
extensionMediaTypeMapping[".setpay"] = "application/set-payment-initiation";
extensionMediaTypeMapping[".setreg"] = "application/set-registration-initiation";
extensionMediaTypeMapping[".settings"] = "application/xml";
extensionMediaTypeMapping[".sgimb"] = "application/x-sgimb";
extensionMediaTypeMapping[".sgml"] = "text/sgml";
extensionMediaTypeMapping[".sh"] = "application/x-sh";
extensionMediaTypeMapping[".shar"] = "application/x-shar";
extensionMediaTypeMapping[".shtml"] = "text/html";
extensionMediaTypeMapping[".sit"] = "application/x-stuffit";
extensionMediaTypeMapping[".sitemap"] = "application/xml";
extensionMediaTypeMapping[".skin"] = "application/xml";
extensionMediaTypeMapping[".sldm"] = "application/vnd.ms-powerpoint.slide.macroEnabled.12";
extensionMediaTypeMapping[".sldx"] = "application/vnd.openxmlformats-officedocument.presentationml.slide";
extensionMediaTypeMapping[".slk"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".sln"] = "text/plain";
extensionMediaTypeMapping[".slupkg-ms"] = "application/x-ms-license";
extensionMediaTypeMapping[".smd"] = "audio/x-smd";
extensionMediaTypeMapping[".smi"] = "application/octet-stream";
extensionMediaTypeMapping[".smx"] = "audio/x-smd";
extensionMediaTypeMapping[".smz"] = "audio/x-smd";
extensionMediaTypeMapping[".snd"] = "audio/basic";
extensionMediaTypeMapping[".snippet"] = "application/xml";
extensionMediaTypeMapping[".snp"] = "application/octet-stream";
extensionMediaTypeMapping[".sol"] = "text/plain";
extensionMediaTypeMapping[".sor"] = "text/plain";
extensionMediaTypeMapping[".spc"] = "application/x-pkcs7-certificates";
extensionMediaTypeMapping[".spl"] = "application/futuresplash";
extensionMediaTypeMapping[".src"] = "application/x-wais-source";
extensionMediaTypeMapping[".srf"] = "text/plain";
extensionMediaTypeMapping[".SSISDeploymentManifest"] = "text/xml";
extensionMediaTypeMapping[".ssm"] = "application/streamingmedia";
extensionMediaTypeMapping[".sst"] = "application/vnd.ms-pki.certstore";
extensionMediaTypeMapping[".stl"] = "application/vnd.ms-pki.stl";
extensionMediaTypeMapping[".sv4cpio"] = "application/x-sv4cpio";
extensionMediaTypeMapping[".sv4crc"] = "application/x-sv4crc";
extensionMediaTypeMapping[".svc"] = "application/xml";
extensionMediaTypeMapping[".swf"] = "application/x-shockwave-flash";
extensionMediaTypeMapping[".t"] = "application/x-troff";
extensionMediaTypeMapping[".tar"] = "application/x-tar";
extensionMediaTypeMapping[".tcl"] = "application/x-tcl";
extensionMediaTypeMapping[".testrunconfig"] = "application/xml";
extensionMediaTypeMapping[".testsettings"] = "application/xml";
extensionMediaTypeMapping[".tex"] = "application/x-tex";
extensionMediaTypeMapping[".texi"] = "application/x-texinfo";
extensionMediaTypeMapping[".texinfo"] = "application/x-texinfo";
extensionMediaTypeMapping[".tgz"] = "application/x-compressed";
extensionMediaTypeMapping[".thmx"] = "application/vnd.ms-officetheme";
extensionMediaTypeMapping[".thn"] = "application/octet-stream";
extensionMediaTypeMapping[".tif"] = "image/tiff";
extensionMediaTypeMapping[".tiff"] = "image/tiff";
extensionMediaTypeMapping[".tlh"] = "text/plain";
extensionMediaTypeMapping[".tli"] = "text/plain";
extensionMediaTypeMapping[".toc"] = "application/octet-stream";
extensionMediaTypeMapping[".tr"] = "application/x-troff";
extensionMediaTypeMapping[".trm"] = "application/x-msterminal";
extensionMediaTypeMapping[".trx"] = "application/xml";
extensionMediaTypeMapping[".ts"] = "video/vnd.dlna.mpeg-tts";
extensionMediaTypeMapping[".tsv"] = "text/tab-separated-values";
extensionMediaTypeMapping[".ttf"] = "application/octet-stream";
extensionMediaTypeMapping[".tts"] = "video/vnd.dlna.mpeg-tts";
extensionMediaTypeMapping[".txt"] = "text/plain";
extensionMediaTypeMapping[".u32"] = "application/octet-stream";
extensionMediaTypeMapping[".uls"] = "text/iuls";
extensionMediaTypeMapping[".user"] = "text/plain";
extensionMediaTypeMapping[".ustar"] = "application/x-ustar";
extensionMediaTypeMapping[".vb"] = "text/plain";
extensionMediaTypeMapping[".vbdproj"] = "text/plain";
extensionMediaTypeMapping[".vbk"] = "video/mpeg";
extensionMediaTypeMapping[".vbproj"] = "text/plain";
extensionMediaTypeMapping[".vbs"] = "text/vbscript";
extensionMediaTypeMapping[".vcf"] = "text/x-vcard";
extensionMediaTypeMapping[".vcproj"] = "Application/xml";
extensionMediaTypeMapping[".vcs"] = "text/plain";
extensionMediaTypeMapping[".vcxproj"] = "Application/xml";
extensionMediaTypeMapping[".vddproj"] = "text/plain";
extensionMediaTypeMapping[".vdp"] = "text/plain";
extensionMediaTypeMapping[".vdproj"] = "text/plain";
extensionMediaTypeMapping[".vdx"] = "application/vnd.ms-visio.viewer";
extensionMediaTypeMapping[".vml"] = "text/xml";
extensionMediaTypeMapping[".vscontent"] = "application/xml";
extensionMediaTypeMapping[".vsct"] = "text/xml";
extensionMediaTypeMapping[".vsd"] = "application/vnd.visio";
extensionMediaTypeMapping[".vsi"] = "application/ms-vsi";
extensionMediaTypeMapping[".vsix"] = "application/vsix";
extensionMediaTypeMapping[".vsixlangpack"] = "text/xml";
extensionMediaTypeMapping[".vsixmanifest"] = "text/xml";
extensionMediaTypeMapping[".vsmdi"] = "application/xml";
extensionMediaTypeMapping[".vspscc"] = "text/plain";
extensionMediaTypeMapping[".vss"] = "application/vnd.visio";
extensionMediaTypeMapping[".vsscc"] = "text/plain";
extensionMediaTypeMapping[".vssettings"] = "text/xml";
extensionMediaTypeMapping[".vssscc"] = "text/plain";
extensionMediaTypeMapping[".vst"] = "application/vnd.visio";
extensionMediaTypeMapping[".vstemplate"] = "text/xml";
extensionMediaTypeMapping[".vsto"] = "application/x-ms-vsto";
extensionMediaTypeMapping[".vsw"] = "application/vnd.visio";
extensionMediaTypeMapping[".vsx"] = "application/vnd.visio";
extensionMediaTypeMapping[".vtx"] = "application/vnd.visio";
extensionMediaTypeMapping[".wav"] = "audio/wav";
extensionMediaTypeMapping[".wave"] = "audio/wav";
extensionMediaTypeMapping[".wax"] = "audio/x-ms-wax";
extensionMediaTypeMapping[".wbk"] = "application/msword";
extensionMediaTypeMapping[".wbmp"] = "image/vnd.wap.wbmp";
extensionMediaTypeMapping[".wcm"] = "application/vnd.ms-works";
extensionMediaTypeMapping[".wdb"] = "application/vnd.ms-works";
extensionMediaTypeMapping[".wdp"] = "image/vnd.ms-photo";
extensionMediaTypeMapping[".webarchive"] = "application/x-safari-webarchive";
extensionMediaTypeMapping[".webtest"] = "application/xml";
extensionMediaTypeMapping[".wiq"] = "application/xml";
extensionMediaTypeMapping[".wiz"] = "application/msword";
extensionMediaTypeMapping[".wks"] = "application/vnd.ms-works";
extensionMediaTypeMapping[".WLMP"] = "application/wlmoviemaker";
extensionMediaTypeMapping[".wlpginstall"] = "application/x-wlpg-detect";
extensionMediaTypeMapping[".wlpginstall3"] = "application/x-wlpg3-detect";
extensionMediaTypeMapping[".wm"] = "video/x-ms-wm";
extensionMediaTypeMapping[".wma"] = "audio/x-ms-wma";
extensionMediaTypeMapping[".wmd"] = "application/x-ms-wmd";
extensionMediaTypeMapping[".wmf"] = "application/x-msmetafile";
extensionMediaTypeMapping[".wml"] = "text/vnd.wap.wml";
extensionMediaTypeMapping[".wmlc"] = "application/vnd.wap.wmlc";
extensionMediaTypeMapping[".wmls"] = "text/vnd.wap.wmlscript";
extensionMediaTypeMapping[".wmlsc"] = "application/vnd.wap.wmlscriptc";
extensionMediaTypeMapping[".wmp"] = "video/x-ms-wmp";
extensionMediaTypeMapping[".wmv"] = "video/x-ms-wmv";
extensionMediaTypeMapping[".wmx"] = "video/x-ms-wmx";
extensionMediaTypeMapping[".wmz"] = "application/x-ms-wmz";
extensionMediaTypeMapping[".wpl"] = "application/vnd.ms-wpl";
extensionMediaTypeMapping[".wps"] = "application/vnd.ms-works";
extensionMediaTypeMapping[".wri"] = "application/x-mswrite";
extensionMediaTypeMapping[".wrl"] = "x-world/x-vrml";
extensionMediaTypeMapping[".wrz"] = "x-world/x-vrml";
extensionMediaTypeMapping[".wsc"] = "text/scriptlet";
extensionMediaTypeMapping[".wsdl"] = "text/xml";
extensionMediaTypeMapping[".wvx"] = "video/x-ms-wvx";
extensionMediaTypeMapping[".x"] = "application/directx";
extensionMediaTypeMapping[".xaf"] = "x-world/x-vrml";
extensionMediaTypeMapping[".xaml"] = "application/xaml+xml";
extensionMediaTypeMapping[".xap"] = "application/x-silverlight-app";
extensionMediaTypeMapping[".xbap"] = "application/x-ms-xbap";
extensionMediaTypeMapping[".xbm"] = "image/x-xbitmap";
extensionMediaTypeMapping[".xdr"] = "text/plain";
extensionMediaTypeMapping[".xht"] = "application/xhtml+xml";
extensionMediaTypeMapping[".xhtml"] = "application/xhtml+xml";
extensionMediaTypeMapping[".xla"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xlam"] = "application/vnd.ms-excel.addin.macroEnabled.12";
extensionMediaTypeMapping[".xlc"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xld"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xlk"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xll"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xlm"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xls"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xlsb"] = "application/vnd.ms-excel.sheet.binary.macroEnabled.12";
extensionMediaTypeMapping[".xlsm"] = "application/vnd.ms-excel.sheet.macroEnabled.12";
extensionMediaTypeMapping[".xlsx"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
extensionMediaTypeMapping[".xlt"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xltm"] = "application/vnd.ms-excel.template.macroEnabled.12";
extensionMediaTypeMapping[".xltx"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.template";
extensionMediaTypeMapping[".xlw"] = "application/vnd.ms-excel";
extensionMediaTypeMapping[".xml"] = "text/xml";
extensionMediaTypeMapping[".xmta"] = "application/xml";
extensionMediaTypeMapping[".xof"] = "x-world/x-vrml";
extensionMediaTypeMapping[".XOML"] = "text/plain";
extensionMediaTypeMapping[".xpm"] = "image/x-xpixmap";
extensionMediaTypeMapping[".xps"] = "application/vnd.ms-xpsdocument";
extensionMediaTypeMapping[".xrm-ms"] = "text/xml";
extensionMediaTypeMapping[".xsc"] = "application/xml";
extensionMediaTypeMapping[".xsd"] = "text/xml";
extensionMediaTypeMapping[".xsf"] = "text/xml";
extensionMediaTypeMapping[".xsl"] = "text/xml";
extensionMediaTypeMapping[".xslt"] = "text/xml";
extensionMediaTypeMapping[".xsn"] = "application/octet-stream";
extensionMediaTypeMapping[".xss"] = "application/xml";
extensionMediaTypeMapping[".xtp"] = "application/octet-stream";
extensionMediaTypeMapping[".xwd"] = "image/x-xwindowdump";
extensionMediaTypeMapping[".z"] = "application/x-compress";
extensionMediaTypeMapping[".zip"] = "application/x-zip-compressed";
/**
* Represents a MIME media type with type and subtype components.
* Media types follow the format "type/subtype" (e.g., "text/html", "image/jpeg").
*
* This class provides functionality to:
* - Create media type objects from strings or separate type/subtype values
* - Convert media type objects back to strings
* - Look up media types based on file extensions
*/
export default class MediaType {
/**
* Creates a new MediaType instance.
*
* @param {string} mediaType - Either a complete media type string ("type/subtype") or just the type component
* @param {string} [subtype] - The subtype component (optional if mediaType contains both parts)
* @throws {ArgumentError} Error message if parameters are invalid
*
* Usage examples:
* new MediaType("text/html") // Creates from complete string
* new MediaType("text", "html") // Creates from separate components
*/
constructor(mediaType, subtype) {
if (mediaType === undefined) {
throw new ArgumentError("First argument is required.");
}
if (subtype === undefined) {
let parts = mediaType.split("/");
if (parts.length != 2) {
throw new ArgumentError(`Invalid media type string received: ${mediaType}`);
}
else {
this.type = parts[0];
this.subtype = parts[1];
}
}
else {
this.type = mediaType;
this.subtype = subtype;
}
}
/**
* Returns the mapping between file extensions and their corresponding media types.
*
* @returns {Object} An object mapping file extensions to media type strings
*/
static get extensionMediaTypeMapping() {
return extensionMediaTypeMapping;
}
/**
* Creates a MediaType instance from a file extension.
*
* @param {string} extension - The file extension (with or without leading dot)
* @returns {MediaType?} A MediaType instance or null if not found
* @throws {ArgumentError} Error message if extension parameter is missing
*
* Usage examples:
* MediaType.fromExtension(".html") // Returns a MediaType for "text/html"
* MediaType.fromExtension("jpg") // Returns a MediaType for "image/jpeg"
*/
static fromExtension(extension) {
if (extension === undefined) {
throw ArgumentError("Extension parameter required.");
}
if (extension[0] !== ".") {
extension = "." + extension;
}
if (extension in MediaType.extensionMediaTypeMapping) {
return new MediaType(MediaType.extensionMediaTypeMapping[extension]);
}
else if (extension.toLowerCase() in MediaType.extensionMediaTypeMapping) {
return new MediaType(MediaType.extensionMediaTypeMapping[extension.toLowerCase()]);
}
else {
return null;
}
}
/**
* Converts the MediaType to its string representation.
*
* @returns {string} The media type string in "type/subtype" format
*/
toString() {
return `${this.type}/${this.subtype}`;
}
}