UNPKG

universal-common

Version:

Library that provides useful missing base class library functionality.

657 lines (647 loc) 37.6 kB
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}`; } }