lib/sl-content.js
/**
* Copyright 2017 MaddHacker
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
/**
* Generic concept of a Content-Type model => all (non-binary) content is assumed to have charset = 'utf-8'.
*
* @param {String} mimeType => how the client should read the content
* @param {Object} content => actual content (file, image, etc)
* @param {String} encoding => 'binary' or 'utf-8' encoded content, default is 'binary'
* @returns {Content} content wrapper for given payload.
*/
function Content(mimeType, content, encoding) {
var obj = {};
obj.type = mimeType;
obj.value = content;
obj.length = content.byteLength || content.length;
obj.encoding = encoding || binaryEncoding;
if (obj.encoding === utf8Encoding) {
obj.type = obj.type + utf8EncodingCharset;
}
return obj;
}
/**
* Shortcut to use a known MIME type constant to create a Content Object
*
* @param {Object} mimeType => one of the known MIME Types
* @param {Object} content actual content (file, image, etc)
*
* @see #Content(String, Object, String)
*/
function ContentFromKnownType(mimeType, content) {
return Content(mimeType.mimeType, content, mimeType.encoding);
}
const binaryEncoding = 'binary';
const utf8Encoding = 'utf-8';
const utf8EncodingCharset = '; charset=utf-8';
/**
* Comprehensive list of MIME types by extension, others can still be supported using the `#custom()` export
*/
const mimeTypes = {
'x3d': { mimeType: 'application/vnd.hzn-3d-crossword', encoding: binaryEncoding },
'3dml': { mimeType: 'text/vnd.in3d.3dml', encoding: binaryEncoding },
'3g2': { mimeType: 'video/3gpp2', encoding: binaryEncoding },
'3gp': { mimeType: 'video/3gpp', encoding: binaryEncoding },
'7z': { mimeType: 'application/x-7z-compressed', encoding: binaryEncoding },
'aab': { mimeType: 'application/x-authorware-bin', encoding: binaryEncoding },
'aac': { mimeType: 'audio/x-aac', encoding: binaryEncoding },
'aam': { mimeType: 'application/x-authorware-map', encoding: binaryEncoding },
'aas': { mimeType: 'application/x-authorware-seg', encoding: binaryEncoding },
'abw': { mimeType: 'application/x-abiword', encoding: binaryEncoding },
'ac': { mimeType: 'application/pkix-attr-cert', encoding: binaryEncoding },
'acc': { mimeType: 'application/vnd.americandynamics.acc', encoding: binaryEncoding },
'ace': { mimeType: 'application/x-ace-compressed', encoding: binaryEncoding },
'acu': { mimeType: 'application/vnd.acucobol', encoding: binaryEncoding },
'adp': { mimeType: 'audio/adpcm', encoding: binaryEncoding },
'aep': { mimeType: 'application/vnd.audiograph', encoding: binaryEncoding },
'afp': { mimeType: 'application/vnd.ibm.modcap', encoding: binaryEncoding },
'ahead': { mimeType: 'application/vnd.ahead.space', encoding: binaryEncoding },
'ai': { mimeType: 'application/postscript', encoding: binaryEncoding },
'aif': { mimeType: 'audio/x-aiff', encoding: binaryEncoding },
'air': { mimeType: 'application/vnd.adobe.air-application-installer-package+zip', encoding: binaryEncoding },
'ait': { mimeType: 'application/vnd.dvb.ait', encoding: binaryEncoding },
'ami': { mimeType: 'application/vnd.amiga.ami', encoding: binaryEncoding },
'apk': { mimeType: 'application/vnd.android.package-archive', encoding: binaryEncoding },
'application': { mimeType: 'application/x-ms-application', encoding: binaryEncoding },
'apr': { mimeType: 'application/vnd.lotus-approach', encoding: binaryEncoding },
'asf': { mimeType: 'video/x-ms-asf', encoding: binaryEncoding },
'aso': { mimeType: 'application/vnd.accpac.simply.aso', encoding: binaryEncoding },
'atc': { mimeType: 'application/vnd.acucorp', encoding: binaryEncoding },
'atom': { mimeType: 'application/atom+xml', encoding: binaryEncoding },
'atomcat': { mimeType: 'application/atomcat+xml', encoding: binaryEncoding },
'atomsvc': { mimeType: 'application/atomsvc+xml', encoding: binaryEncoding },
'atx': { mimeType: 'application/vnd.antix.game-component', encoding: binaryEncoding },
'au': { mimeType: 'audio/basic', encoding: binaryEncoding },
'avi': { mimeType: 'video/x-msvideo', encoding: binaryEncoding },
'aw': { mimeType: 'application/applixware', encoding: binaryEncoding },
'azf': { mimeType: 'application/vnd.airzip.filesecure.azf', encoding: binaryEncoding },
'azs': { mimeType: 'application/vnd.airzip.filesecure.azs', encoding: binaryEncoding },
'azw': { mimeType: 'application/vnd.amazon.ebook', encoding: binaryEncoding },
'bcpio': { mimeType: 'application/x-bcpio', encoding: binaryEncoding },
'bdf': { mimeType: 'application/x-font-bdf', encoding: binaryEncoding },
'bdm': { mimeType: 'application/vnd.syncml.dm+wbxml', encoding: binaryEncoding },
'bed': { mimeType: 'application/vnd.realvnc.bed', encoding: binaryEncoding },
'bh2': { mimeType: 'application/vnd.fujitsu.oasysprs', encoding: binaryEncoding },
'bin': { mimeType: 'application/octet-stream', encoding: binaryEncoding },
'bmi': { mimeType: 'application/vnd.bmi', encoding: binaryEncoding },
'bmp': { mimeType: 'image/bmp', encoding: binaryEncoding },
'box': { mimeType: 'application/vnd.previewsystems.box', encoding: binaryEncoding },
'btif': { mimeType: 'image/prs.btif', encoding: binaryEncoding },
'bz': { mimeType: 'application/x-bzip', encoding: binaryEncoding },
'bz2': { mimeType: 'application/x-bzip2', encoding: binaryEncoding },
'c': { mimeType: 'text/x-c', encoding: binaryEncoding },
'c11amc': { mimeType: 'application/vnd.cluetrust.cartomobile-config', encoding: binaryEncoding },
'c11amz': { mimeType: 'application/vnd.cluetrust.cartomobile-config-pkg', encoding: binaryEncoding },
'c4g': { mimeType: 'application/vnd.clonk.c4group', encoding: binaryEncoding },
'cab': { mimeType: 'application/vnd.ms-cab-compressed', encoding: binaryEncoding },
'car': { mimeType: 'application/vnd.curl.car', encoding: binaryEncoding },
'cat': { mimeType: 'application/vnd.ms-pki.seccat', encoding: binaryEncoding },
'ccxml': { mimeType: 'application/ccxml+xml', encoding: binaryEncoding },
'cdbcmsg': { mimeType: 'application/vnd.contact.cmsg', encoding: binaryEncoding },
'cdkey': { mimeType: 'application/vnd.mediastation.cdkey', encoding: binaryEncoding },
'cdmia': { mimeType: 'application/cdmi-capability', encoding: binaryEncoding },
'cdmic': { mimeType: 'application/cdmi-container', encoding: binaryEncoding },
'cdmid': { mimeType: 'application/cdmi-domain', encoding: binaryEncoding },
'cdmio': { mimeType: 'application/cdmi-object', encoding: binaryEncoding },
'cdmiq': { mimeType: 'application/cdmi-queue', encoding: binaryEncoding },
'cdx': { mimeType: 'chemical/x-cdx', encoding: binaryEncoding },
'cdxml': { mimeType: 'application/vnd.chemdraw+xml', encoding: binaryEncoding },
'cdy': { mimeType: 'application/vnd.cinderella', encoding: binaryEncoding },
'cer': { mimeType: 'application/pkix-cert', encoding: binaryEncoding },
'cgm': { mimeType: 'image/cgm', encoding: binaryEncoding },
'chat': { mimeType: 'application/x-chat', encoding: binaryEncoding },
'chm': { mimeType: 'application/vnd.ms-htmlhelp', encoding: binaryEncoding },
'chrt': { mimeType: 'application/vnd.kde.kchart', encoding: binaryEncoding },
'cif': { mimeType: 'chemical/x-cif', encoding: binaryEncoding },
'cii': { mimeType: 'application/vnd.anser-web-certificate-issue-initiation', encoding: binaryEncoding },
'cil': { mimeType: 'application/vnd.ms-artgalry', encoding: binaryEncoding },
'cla': { mimeType: 'application/vnd.claymore', encoding: binaryEncoding },
'class': { mimeType: 'application/java-vm', encoding: binaryEncoding },
'clkk': { mimeType: 'application/vnd.crick.clicker.keyboard', encoding: binaryEncoding },
'clkp': { mimeType: 'application/vnd.crick.clicker.palette', encoding: binaryEncoding },
'clkt': { mimeType: 'application/vnd.crick.clicker.template', encoding: binaryEncoding },
'clkw': { mimeType: 'application/vnd.crick.clicker.wordbank', encoding: binaryEncoding },
'clkx': { mimeType: 'application/vnd.crick.clicker', encoding: binaryEncoding },
'clp': { mimeType: 'application/x-msclip', encoding: binaryEncoding },
'cmc': { mimeType: 'application/vnd.cosmocaller', encoding: binaryEncoding },
'cmdf': { mimeType: 'chemical/x-cmdf', encoding: binaryEncoding },
'cml': { mimeType: 'chemical/x-cml', encoding: binaryEncoding },
'cmp': { mimeType: 'application/vnd.yellowriver-custom-menu', encoding: binaryEncoding },
'cmx': { mimeType: 'image/x-cmx', encoding: binaryEncoding },
'cod': { mimeType: 'application/vnd.rim.cod', encoding: binaryEncoding },
'cpio': { mimeType: 'application/x-cpio', encoding: binaryEncoding },
'cpt': { mimeType: 'application/mac-compactpro', encoding: binaryEncoding },
'crd': { mimeType: 'application/x-mscardfile', encoding: binaryEncoding },
'crl': { mimeType: 'application/pkix-crl', encoding: binaryEncoding },
'cryptonote': { mimeType: 'application/vnd.rig.cryptonote', encoding: binaryEncoding },
'csh': { mimeType: 'application/x-csh', encoding: binaryEncoding },
'csml': { mimeType: 'chemical/x-csml', encoding: binaryEncoding },
'csp': { mimeType: 'application/vnd.commonspace', encoding: binaryEncoding },
'css': { mimeType: 'text/css', encoding: utf8Encoding },
'csv': { mimeType: 'text/csv', encoding: binaryEncoding },
'cu': { mimeType: 'application/cu-seeme', encoding: binaryEncoding },
'curl': { mimeType: 'text/vnd.curl', encoding: binaryEncoding },
'cww': { mimeType: 'application/prs.cww', encoding: binaryEncoding },
'dae': { mimeType: 'model/vnd.collada+xml', encoding: binaryEncoding },
'daf': { mimeType: 'application/vnd.mobius.daf', encoding: binaryEncoding },
'davmount': { mimeType: 'application/davmount+xml', encoding: binaryEncoding },
'dcurl': { mimeType: 'text/vnd.curl.dcurl', encoding: binaryEncoding },
'dd2': { mimeType: 'application/vnd.oma.dd2+xml', encoding: binaryEncoding },
'ddd': { mimeType: 'application/vnd.fujixerox.ddd', encoding: binaryEncoding },
'deb': { mimeType: 'application/x-debian-package', encoding: binaryEncoding },
'der': { mimeType: 'application/x-x509-ca-cert', encoding: binaryEncoding },
'dfac': { mimeType: 'application/vnd.dreamfactory', encoding: binaryEncoding },
'dir': { mimeType: 'application/x-director', encoding: binaryEncoding },
'dis': { mimeType: 'application/vnd.mobius.dis', encoding: binaryEncoding },
'djvu': { mimeType: 'image/vnd.djvu', encoding: binaryEncoding },
'dna': { mimeType: 'application/vnd.dna', encoding: binaryEncoding },
'doc': { mimeType: 'application/msword', encoding: binaryEncoding },
'docm': { mimeType: 'application/vnd.ms-word.document.macroenabled.12', encoding: binaryEncoding },
'docx': { mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', encoding: binaryEncoding },
'dotm': { mimeType: 'application/vnd.ms-word.template.macroenabled.12', encoding: binaryEncoding },
'dotx': { mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', encoding: binaryEncoding },
'dp': { mimeType: 'application/vnd.osgi.dp', encoding: binaryEncoding },
'dpg': { mimeType: 'application/vnd.dpgraph', encoding: binaryEncoding },
'dra': { mimeType: 'audio/vnd.dra', encoding: binaryEncoding },
'dsc': { mimeType: 'text/prs.lines.tag', encoding: binaryEncoding },
'dssc': { mimeType: 'application/dssc+der', encoding: binaryEncoding },
'dtb': { mimeType: 'application/x-dtbook+xml', encoding: binaryEncoding },
'dtd': { mimeType: 'application/xml-dtd', encoding: binaryEncoding },
'dts': { mimeType: 'audio/vnd.dts', encoding: binaryEncoding },
'dtshd': { mimeType: 'audio/vnd.dts.hd', encoding: binaryEncoding },
'dvi': { mimeType: 'application/x-dvi', encoding: binaryEncoding },
'dwf': { mimeType: 'model/vnd.dwf', encoding: binaryEncoding },
'dwg': { mimeType: 'image/vnd.dwg', encoding: binaryEncoding },
'dxf': { mimeType: 'image/vnd.dxf', encoding: binaryEncoding },
'dxp': { mimeType: 'application/vnd.spotfire.dxp', encoding: binaryEncoding },
'ecelp4800': { mimeType: 'audio/vnd.nuera.ecelp4800', encoding: binaryEncoding },
'ecelp7470': { mimeType: 'audio/vnd.nuera.ecelp7470', encoding: binaryEncoding },
'ecelp9600': { mimeType: 'audio/vnd.nuera.ecelp9600', encoding: binaryEncoding },
'edm': { mimeType: 'application/vnd.novadigm.edm', encoding: binaryEncoding },
'edx': { mimeType: 'application/vnd.novadigm.edx', encoding: binaryEncoding },
'efif': { mimeType: 'application/vnd.picsel', encoding: binaryEncoding },
'ei6': { mimeType: 'application/vnd.pg.osasli', encoding: binaryEncoding },
'eml': { mimeType: 'message/rfc822', encoding: binaryEncoding },
'emma': { mimeType: 'application/emma+xml', encoding: binaryEncoding },
'eol': { mimeType: 'audio/vnd.digital-winds', encoding: binaryEncoding },
'eot': { mimeType: 'application/vnd.ms-fontobject', encoding: binaryEncoding },
'epub': { mimeType: 'application/epub+zip', encoding: binaryEncoding },
'es': { mimeType: 'application/ecmascript', encoding: binaryEncoding },
'es3': { mimeType: 'application/vnd.eszigno3+xml', encoding: binaryEncoding },
'esf': { mimeType: 'application/vnd.epson.esf', encoding: binaryEncoding },
'etx': { mimeType: 'text/x-setext', encoding: binaryEncoding },
'exe': { mimeType: 'application/x-msdownload', encoding: binaryEncoding },
'exi': { mimeType: 'application/exi', encoding: binaryEncoding },
'ext': { mimeType: 'application/vnd.novadigm.ext', encoding: binaryEncoding },
'ez2': { mimeType: 'application/vnd.ezpix-album', encoding: binaryEncoding },
'ez3': { mimeType: 'application/vnd.ezpix-package', encoding: binaryEncoding },
'f': { mimeType: 'text/x-fortran', encoding: binaryEncoding },
'f4v': { mimeType: 'video/x-f4v', encoding: binaryEncoding },
'fbs': { mimeType: 'image/vnd.fastbidsheet', encoding: binaryEncoding },
'fcs': { mimeType: 'application/vnd.isac.fcs', encoding: binaryEncoding },
'fdf': { mimeType: 'application/vnd.fdf', encoding: binaryEncoding },
'fe_launch': { mimeType: 'application/vnd.denovo.fcselayout-link', encoding: binaryEncoding },
'fg5': { mimeType: 'application/vnd.fujitsu.oasysgp', encoding: binaryEncoding },
'fh': { mimeType: 'image/x-freehand', encoding: binaryEncoding },
'fig': { mimeType: 'application/x-xfig', encoding: binaryEncoding },
'fli': { mimeType: 'video/x-fli', encoding: binaryEncoding },
'flo': { mimeType: 'application/vnd.micrografx.flo', encoding: binaryEncoding },
'flv': { mimeType: 'video/x-flv', encoding: binaryEncoding },
'flw': { mimeType: 'application/vnd.kde.kivio', encoding: binaryEncoding },
'flx': { mimeType: 'text/vnd.fmi.flexstor', encoding: binaryEncoding },
'fly': { mimeType: 'text/vnd.fly', encoding: binaryEncoding },
'fm': { mimeType: 'application/vnd.framemaker', encoding: binaryEncoding },
'fnc': { mimeType: 'application/vnd.frogans.fnc', encoding: binaryEncoding },
'fpx': { mimeType: 'image/vnd.fpx', encoding: binaryEncoding },
'fsc': { mimeType: 'application/vnd.fsc.weblaunch', encoding: binaryEncoding },
'fst': { mimeType: 'image/vnd.fst', encoding: binaryEncoding },
'ftc': { mimeType: 'application/vnd.fluxtime.clip', encoding: binaryEncoding },
'fti': { mimeType: 'application/vnd.anser-web-funds-transfer-initiation', encoding: binaryEncoding },
'fvt': { mimeType: 'video/vnd.fvt', encoding: binaryEncoding },
'fxp': { mimeType: 'application/vnd.adobe.fxp', encoding: binaryEncoding },
'fzs': { mimeType: 'application/vnd.fuzzysheet', encoding: binaryEncoding },
'g2w': { mimeType: 'application/vnd.geoplan', encoding: binaryEncoding },
'g3': { mimeType: 'image/g3fax', encoding: binaryEncoding },
'g3w': { mimeType: 'application/vnd.geospace', encoding: binaryEncoding },
'gac': { mimeType: 'application/vnd.groove-account', encoding: binaryEncoding },
'gdl': { mimeType: 'model/vnd.gdl', encoding: binaryEncoding },
'geo': { mimeType: 'application/vnd.dynageo', encoding: binaryEncoding },
'gex': { mimeType: 'application/vnd.geometry-explorer', encoding: binaryEncoding },
'ggb': { mimeType: 'application/vnd.geogebra.file', encoding: binaryEncoding },
'ggt': { mimeType: 'application/vnd.geogebra.tool', encoding: binaryEncoding },
'ghf': { mimeType: 'application/vnd.groove-help', encoding: binaryEncoding },
'gif': { mimeType: 'image/gif', encoding: binaryEncoding },
'gim': { mimeType: 'application/vnd.groove-identity-message', encoding: binaryEncoding },
'gmx': { mimeType: 'application/vnd.gmx', encoding: binaryEncoding },
'gnumeric': { mimeType: 'application/x-gnumeric', encoding: binaryEncoding },
'gph': { mimeType: 'application/vnd.flographit', encoding: binaryEncoding },
'gqf': { mimeType: 'application/vnd.grafeq', encoding: binaryEncoding },
'gram': { mimeType: 'application/srgs', encoding: binaryEncoding },
'grv': { mimeType: 'application/vnd.groove-injector', encoding: binaryEncoding },
'grxml': { mimeType: 'application/srgs+xml', encoding: binaryEncoding },
'gsf': { mimeType: 'application/x-font-ghostscript', encoding: binaryEncoding },
'gtar': { mimeType: 'application/x-gtar', encoding: binaryEncoding },
'gtm': { mimeType: 'application/vnd.groove-tool-message', encoding: binaryEncoding },
'gtw': { mimeType: 'model/vnd.gtw', encoding: binaryEncoding },
'gv': { mimeType: 'text/vnd.graphviz', encoding: binaryEncoding },
'gxt': { mimeType: 'application/vnd.geonext', encoding: binaryEncoding },
'h261': { mimeType: 'video/h261', encoding: binaryEncoding },
'h263': { mimeType: 'video/h263', encoding: binaryEncoding },
'h264': { mimeType: 'video/h264', encoding: binaryEncoding },
'hal': { mimeType: 'application/vnd.hal+xml', encoding: binaryEncoding },
'hbci': { mimeType: 'application/vnd.hbci', encoding: binaryEncoding },
'hdf': { mimeType: 'application/x-hdf', encoding: binaryEncoding },
'hlp': { mimeType: 'application/winhlp', encoding: binaryEncoding },
'hpgl': { mimeType: 'application/vnd.hp-hpgl', encoding: binaryEncoding },
'hpid': { mimeType: 'application/vnd.hp-hpid', encoding: binaryEncoding },
'hps': { mimeType: 'application/vnd.hp-hps', encoding: binaryEncoding },
'hqx': { mimeType: 'application/mac-binhex40', encoding: binaryEncoding },
'htke': { mimeType: 'application/vnd.kenameaapp', encoding: binaryEncoding },
'html': { mimeType: 'text/html', encoding: utf8Encoding },
'hvd': { mimeType: 'application/vnd.yamaha.hv-dic', encoding: binaryEncoding },
'hvp': { mimeType: 'application/vnd.yamaha.hv-voice', encoding: binaryEncoding },
'hvs': { mimeType: 'application/vnd.yamaha.hv-script', encoding: binaryEncoding },
'i2g': { mimeType: 'application/vnd.intergeo', encoding: binaryEncoding },
'icc': { mimeType: 'application/vnd.iccprofile', encoding: binaryEncoding },
'ice': { mimeType: 'x-conference/x-cooltalk', encoding: binaryEncoding },
'ico': { mimeType: 'image/x-icon', encoding: binaryEncoding },
'ics': { mimeType: 'text/calendar', encoding: binaryEncoding },
'ief': { mimeType: 'image/ief', encoding: binaryEncoding },
'ifm': { mimeType: 'application/vnd.shana.informed.formdata', encoding: binaryEncoding },
'igl': { mimeType: 'application/vnd.igloader', encoding: binaryEncoding },
'igm': { mimeType: 'application/vnd.insors.igm', encoding: binaryEncoding },
'igs': { mimeType: 'model/iges', encoding: binaryEncoding },
'igx': { mimeType: 'application/vnd.micrografx.igx', encoding: binaryEncoding },
'iif': { mimeType: 'application/vnd.shana.informed.interchange', encoding: binaryEncoding },
'imp': { mimeType: 'application/vnd.accpac.simply.imp', encoding: binaryEncoding },
'ims': { mimeType: 'application/vnd.ms-ims', encoding: binaryEncoding },
'ipfix': { mimeType: 'application/ipfix', encoding: binaryEncoding },
'ipk': { mimeType: 'application/vnd.shana.informed.package', encoding: binaryEncoding },
'irm': { mimeType: 'application/vnd.ibm.rights-management', encoding: binaryEncoding },
'irp': { mimeType: 'application/vnd.irepository.package+xml', encoding: binaryEncoding },
'itp': { mimeType: 'application/vnd.shana.informed.formtemplate', encoding: binaryEncoding },
'ivp': { mimeType: 'application/vnd.immervision-ivp', encoding: binaryEncoding },
'ivu': { mimeType: 'application/vnd.immervision-ivu', encoding: binaryEncoding },
'jad': { mimeType: 'text/vnd.sun.j2me.app-descriptor', encoding: binaryEncoding },
'jam': { mimeType: 'application/vnd.jam', encoding: binaryEncoding },
'jar': { mimeType: 'application/java-archive', encoding: binaryEncoding },
'java': { mimeType: 'text/x-java-source', encoding: binaryEncoding },
'jisp': { mimeType: 'application/vnd.jisp', encoding: binaryEncoding },
'jlt': { mimeType: 'application/vnd.hp-jlyt', encoding: binaryEncoding },
'jnlp': { mimeType: 'application/x-java-jnlp-file', encoding: binaryEncoding },
'joda': { mimeType: 'application/vnd.joost.joda-archive', encoding: binaryEncoding },
'jpeg': { mimeType: 'image/jpeg', encoding: binaryEncoding },
'jpg': { mimeType: 'image/jpeg', encoding: binaryEncoding },
'jpgv': { mimeType: 'video/jpeg', encoding: binaryEncoding },
'jpm': { mimeType: 'video/jpm', encoding: binaryEncoding },
'js': { mimeType: 'application/javascript', encoding: utf8Encoding },
'json': { mimeType: 'application/json', encoding: utf8Encoding },
'karbon': { mimeType: 'application/vnd.kde.karbon', encoding: binaryEncoding },
'kfo': { mimeType: 'application/vnd.kde.kformula', encoding: binaryEncoding },
'kia': { mimeType: 'application/vnd.kidspiration', encoding: binaryEncoding },
'kml': { mimeType: 'application/vnd.google-earth.kml+xml', encoding: binaryEncoding },
'kmz': { mimeType: 'application/vnd.google-earth.kmz', encoding: binaryEncoding },
'kne': { mimeType: 'application/vnd.kinar', encoding: binaryEncoding },
'kon': { mimeType: 'application/vnd.kde.kontour', encoding: binaryEncoding },
'kpr': { mimeType: 'application/vnd.kde.kpresenter', encoding: binaryEncoding },
'ksp': { mimeType: 'application/vnd.kde.kspread', encoding: binaryEncoding },
'ktx': { mimeType: 'image/ktx', encoding: binaryEncoding },
'ktz': { mimeType: 'application/vnd.kahootz', encoding: binaryEncoding },
'kwd': { mimeType: 'application/vnd.kde.kword', encoding: binaryEncoding },
'lasxml': { mimeType: 'application/vnd.las.las+xml', encoding: binaryEncoding },
'latex': { mimeType: 'application/x-latex', encoding: binaryEncoding },
'lbd': { mimeType: 'application/vnd.llamagraphics.life-balance.desktop', encoding: binaryEncoding },
'lbe': { mimeType: 'application/vnd.llamagraphics.life-balance.exchange+xml', encoding: binaryEncoding },
'les': { mimeType: 'application/vnd.hhe.lesson-player', encoding: binaryEncoding },
'link66': { mimeType: 'application/vnd.route66.link66+xml', encoding: binaryEncoding },
'lrm': { mimeType: 'application/vnd.ms-lrm', encoding: binaryEncoding },
'ltf': { mimeType: 'application/vnd.frogans.ltf', encoding: binaryEncoding },
'lvp': { mimeType: 'audio/vnd.lucent.voice', encoding: binaryEncoding },
'lwp': { mimeType: 'application/vnd.lotus-wordpro', encoding: binaryEncoding },
'm21': { mimeType: 'application/mp21', encoding: binaryEncoding },
'm3u': { mimeType: 'audio/x-mpegurl', encoding: binaryEncoding },
'm3u8': { mimeType: 'application/vnd.apple.mpegurl', encoding: binaryEncoding },
'm4v': { mimeType: 'video/x-m4v', encoding: binaryEncoding },
'ma': { mimeType: 'application/mathematica', encoding: binaryEncoding },
'mads': { mimeType: 'application/mads+xml', encoding: binaryEncoding },
'mag': { mimeType: 'application/vnd.ecowin.chart', encoding: binaryEncoding },
'mathml': { mimeType: 'application/mathml+xml', encoding: binaryEncoding },
'mbk': { mimeType: 'application/vnd.mobius.mbk', encoding: binaryEncoding },
'mbox': { mimeType: 'application/mbox', encoding: binaryEncoding },
'mc1': { mimeType: 'application/vnd.medcalcdata', encoding: binaryEncoding },
'mcd': { mimeType: 'application/vnd.mcd', encoding: binaryEncoding },
'mcurl': { mimeType: 'text/vnd.curl.mcurl', encoding: binaryEncoding },
'mdb': { mimeType: 'application/x-msaccess', encoding: binaryEncoding },
'mdi': { mimeType: 'image/vnd.ms-modi', encoding: binaryEncoding },
'meta4': { mimeType: 'application/metalink4+xml', encoding: binaryEncoding },
'mets': { mimeType: 'application/mets+xml', encoding: binaryEncoding },
'mfm': { mimeType: 'application/vnd.mfmp', encoding: binaryEncoding },
'mgp': { mimeType: 'application/vnd.osgeo.mapguide.package', encoding: binaryEncoding },
'mgz': { mimeType: 'application/vnd.proteus.magazine', encoding: binaryEncoding },
'mid': { mimeType: 'audio/midi', encoding: binaryEncoding },
'mif': { mimeType: 'application/vnd.mif', encoding: binaryEncoding },
'mj2': { mimeType: 'video/mj2', encoding: binaryEncoding },
'mlp': { mimeType: 'application/vnd.dolby.mlp', encoding: binaryEncoding },
'mmd': { mimeType: 'application/vnd.chipnuts.karaoke-mmd', encoding: binaryEncoding },
'mmf': { mimeType: 'application/vnd.smaf', encoding: binaryEncoding },
'mmr': { mimeType: 'image/vnd.fujixerox.edmics-mmr', encoding: binaryEncoding },
'mny': { mimeType: 'application/x-msmoney', encoding: binaryEncoding },
'mods': { mimeType: 'application/mods+xml', encoding: binaryEncoding },
'movie': { mimeType: 'video/x-sgi-movie', encoding: binaryEncoding },
'mp4': { mimeType: 'video/mp4', encoding: binaryEncoding },
'mp4a': { mimeType: 'audio/mp4', encoding: binaryEncoding },
'mpc': { mimeType: 'application/vnd.mophun.certificate', encoding: binaryEncoding },
'mpeg': { mimeType: 'video/mpeg', encoding: binaryEncoding },
'mpga': { mimeType: 'audio/mpeg', encoding: binaryEncoding },
'mpkg': { mimeType: 'application/vnd.apple.installer+xml', encoding: binaryEncoding },
'mpm': { mimeType: 'application/vnd.blueice.multipass', encoding: binaryEncoding },
'mpn': { mimeType: 'application/vnd.mophun.application', encoding: binaryEncoding },
'mpp': { mimeType: 'application/vnd.ms-project', encoding: binaryEncoding },
'mpy': { mimeType: 'application/vnd.ibm.minipay', encoding: binaryEncoding },
'mqy': { mimeType: 'application/vnd.mobius.mqy', encoding: binaryEncoding },
'mrc': { mimeType: 'application/marc', encoding: binaryEncoding },
'mrcx': { mimeType: 'application/marcxml+xml', encoding: binaryEncoding },
'mscml': { mimeType: 'application/mediaservercontrol+xml', encoding: binaryEncoding },
'mseq': { mimeType: 'application/vnd.mseq', encoding: binaryEncoding },
'msf': { mimeType: 'application/vnd.epson.msf', encoding: binaryEncoding },
'msh': { mimeType: 'model/mesh', encoding: binaryEncoding },
'msl': { mimeType: 'application/vnd.mobius.msl', encoding: binaryEncoding },
'msty': { mimeType: 'application/vnd.muvee.style', encoding: binaryEncoding },
'mts': { mimeType: 'model/vnd.mts', encoding: binaryEncoding },
'mus': { mimeType: 'application/vnd.musician', encoding: binaryEncoding },
'musicxml': { mimeType: 'application/vnd.recordare.musicxml+xml', encoding: binaryEncoding },
'mvb': { mimeType: 'application/x-msmediaview', encoding: binaryEncoding },
'mwf': { mimeType: 'application/vnd.mfer', encoding: binaryEncoding },
'mxf': { mimeType: 'application/mxf', encoding: binaryEncoding },
'mxl': { mimeType: 'application/vnd.recordare.musicxml', encoding: binaryEncoding },
'mxml': { mimeType: 'application/xv+xml', encoding: binaryEncoding },
'mxs': { mimeType: 'application/vnd.triscape.mxs', encoding: binaryEncoding },
'mxu': { mimeType: 'video/vnd.mpegurl', encoding: binaryEncoding },
'n3': { mimeType: 'text/n3', encoding: binaryEncoding },
'nbp': { mimeType: 'application/vnd.wolfram.player', encoding: binaryEncoding },
'nc': { mimeType: 'application/x-netcdf', encoding: binaryEncoding },
'ncx': { mimeType: 'application/x-dtbncx+xml', encoding: binaryEncoding },
'n-gage': { mimeType: 'application/vnd.nokia.n-gage.symbian.install', encoding: binaryEncoding },
'ngdat': { mimeType: 'application/vnd.nokia.n-gage.data', encoding: binaryEncoding },
'nlu': { mimeType: 'application/vnd.neurolanguage.nlu', encoding: binaryEncoding },
'nml': { mimeType: 'application/vnd.enliven', encoding: binaryEncoding },
'nnd': { mimeType: 'application/vnd.noblenet-directory', encoding: binaryEncoding },
'nns': { mimeType: 'application/vnd.noblenet-sealer', encoding: binaryEncoding },
'nnw': { mimeType: 'application/vnd.noblenet-web', encoding: binaryEncoding },
'npx': { mimeType: 'image/vnd.net-fpx', encoding: binaryEncoding },
'nsf': { mimeType: 'application/vnd.lotus-notes', encoding: binaryEncoding },
'oa2': { mimeType: 'application/vnd.fujitsu.oasys2', encoding: binaryEncoding },
'oa3': { mimeType: 'application/vnd.fujitsu.oasys3', encoding: binaryEncoding },
'oas': { mimeType: 'application/vnd.fujitsu.oasys', encoding: binaryEncoding },
'obd': { mimeType: 'application/x-msbinder', encoding: binaryEncoding },
'oda': { mimeType: 'application/oda', encoding: binaryEncoding },
'odb': { mimeType: 'application/vnd.oasis.opendocument.database', encoding: binaryEncoding },
'odc': { mimeType: 'application/vnd.oasis.opendocument.chart', encoding: binaryEncoding },
'odf': { mimeType: 'application/vnd.oasis.opendocument.formula', encoding: binaryEncoding },
'odft': { mimeType: 'application/vnd.oasis.opendocument.formula-template', encoding: binaryEncoding },
'odg': { mimeType: 'application/vnd.oasis.opendocument.graphics', encoding: binaryEncoding },
'odi': { mimeType: 'application/vnd.oasis.opendocument.image', encoding: binaryEncoding },
'odm': { mimeType: 'application/vnd.oasis.opendocument.text-master', encoding: binaryEncoding },
'odp': { mimeType: 'application/vnd.oasis.opendocument.presentation', encoding: binaryEncoding },
'ods': { mimeType: 'application/vnd.oasis.opendocument.spreadsheet', encoding: binaryEncoding },
'odt': { mimeType: 'application/vnd.oasis.opendocument.text', encoding: binaryEncoding },
'oga': { mimeType: 'audio/ogg', encoding: binaryEncoding },
'ogv': { mimeType: 'video/ogg', encoding: binaryEncoding },
'ogx': { mimeType: 'application/ogg', encoding: binaryEncoding },
'onetoc': { mimeType: 'application/onenote', encoding: binaryEncoding },
'opf': { mimeType: 'application/oebps-package+xml', encoding: binaryEncoding },
'org': { mimeType: 'application/vnd.lotus-organizer', encoding: binaryEncoding },
'osf': { mimeType: 'application/vnd.yamaha.openscoreformat', encoding: binaryEncoding },
'osfpvg': { mimeType: 'application/vnd.yamaha.openscoreformat.osfpvg+xml', encoding: binaryEncoding },
'otc': { mimeType: 'application/vnd.oasis.opendocument.chart-template', encoding: binaryEncoding },
'otf': { mimeType: 'application/x-font-otf', encoding: binaryEncoding },
'otg': { mimeType: 'application/vnd.oasis.opendocument.graphics-template', encoding: binaryEncoding },
'oth': { mimeType: 'application/vnd.oasis.opendocument.text-web', encoding: binaryEncoding },
'oti': { mimeType: 'application/vnd.oasis.opendocument.image-template', encoding: binaryEncoding },
'otp': { mimeType: 'application/vnd.oasis.opendocument.presentation-template', encoding: binaryEncoding },
'ots': { mimeType: 'application/vnd.oasis.opendocument.spreadsheet-template', encoding: binaryEncoding },
'ott': { mimeType: 'application/vnd.oasis.opendocument.text-template', encoding: binaryEncoding },
'out': { mimeType: 'application/octet-stream', encoding: binaryEncoding },
'oxt': { mimeType: 'application/vnd.openofficeorg.extension', encoding: binaryEncoding },
'p': { mimeType: 'text/x-pascal', encoding: binaryEncoding },
'p10': { mimeType: 'application/pkcs10', encoding: binaryEncoding },
'p12': { mimeType: 'application/x-pkcs12', encoding: binaryEncoding },
'p7b': { mimeType: 'application/x-pkcs7-certificates', encoding: binaryEncoding },
'p7m': { mimeType: 'application/pkcs7-mime', encoding: binaryEncoding },
'p7r': { mimeType: 'application/x-pkcs7-certreqresp', encoding: binaryEncoding },
'p7s': { mimeType: 'application/pkcs7-signature', encoding: binaryEncoding },
'p8': { mimeType: 'application/pkcs8', encoding: binaryEncoding },
'par': { mimeType: 'text/plain-bas', encoding: binaryEncoding },
'paw': { mimeType: 'application/vnd.pawaafile', encoding: binaryEncoding },
'pbd': { mimeType: 'application/vnd.powerbuilder6', encoding: binaryEncoding },
'pbm': { mimeType: 'image/x-portable-bitmap', encoding: binaryEncoding },
'pcf': { mimeType: 'application/x-font-pcf', encoding: binaryEncoding },
'pcl': { mimeType: 'application/vnd.hp-pcl', encoding: binaryEncoding },
'pclxl': { mimeType: 'application/vnd.hp-pclxl', encoding: binaryEncoding },
'pcurl': { mimeType: 'application/vnd.curl.pcurl', encoding: binaryEncoding },
'pcx': { mimeType: 'image/x-pcx', encoding: binaryEncoding },
'pdb': { mimeType: 'application/vnd.palm', encoding: binaryEncoding },
'pdf': { mimeType: 'application/pdf', encoding: binaryEncoding },
'pfa': { mimeType: 'application/x-font-type1', encoding: binaryEncoding },
'pfr': { mimeType: 'application/font-tdpfr', encoding: binaryEncoding },
'pgm': { mimeType: 'image/x-portable-graymap', encoding: binaryEncoding },
'pgn': { mimeType: 'application/x-chess-pgn', encoding: binaryEncoding },
'pic': { mimeType: 'image/x-pict', encoding: binaryEncoding },
'pjpeg': { mimeType: 'image/pjpeg', encoding: binaryEncoding },
'pki': { mimeType: 'application/pkixcmp', encoding: binaryEncoding },
'pkipath': { mimeType: 'application/pkix-pkipath', encoding: binaryEncoding },
'plb': { mimeType: 'application/vnd.3gpp.pic-bw-large', encoding: binaryEncoding },
'plc': { mimeType: 'application/vnd.mobius.plc', encoding: binaryEncoding },
'plf': { mimeType: 'application/vnd.pocketlearn', encoding: binaryEncoding },
'pls': { mimeType: 'application/pls+xml', encoding: binaryEncoding },
'pml': { mimeType: 'application/vnd.ctc-posml', encoding: binaryEncoding },
'png': { mimeType: 'image/png', encoding: binaryEncoding },
'pnm': { mimeType: 'image/x-portable-anymap', encoding: binaryEncoding },
'portpkg': { mimeType: 'application/vnd.macports.portpkg', encoding: binaryEncoding },
'potm': { mimeType: 'application/vnd.ms-powerpoint.template.macroenabled.12', encoding: binaryEncoding },
'potx': { mimeType: 'application/vnd.openxmlformats-officedocument.presentationml.template', encoding: binaryEncoding },
'ppam': { mimeType: 'application/vnd.ms-powerpoint.addin.macroenabled.12', encoding: binaryEncoding },
'ppd': { mimeType: 'application/vnd.cups-ppd', encoding: binaryEncoding },
'ppm': { mimeType: 'image/x-portable-pixmap', encoding: binaryEncoding },
'ppsm': { mimeType: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', encoding: binaryEncoding },
'ppsx': { mimeType: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', encoding: binaryEncoding },
'ppt': { mimeType: 'application/vnd.ms-powerpoint', encoding: binaryEncoding },
'pptm': { mimeType: 'application/vnd.ms-powerpoint.presentation.macroenabled.12', encoding: binaryEncoding },
'pptx': { mimeType: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', encoding: binaryEncoding },
'prc': { mimeType: 'application/x-mobipocket-ebook', encoding: binaryEncoding },
'pre': { mimeType: 'application/vnd.lotus-freelance', encoding: binaryEncoding },
'prf': { mimeType: 'application/pics-rules', encoding: binaryEncoding },
'psb': { mimeType: 'application/vnd.3gpp.pic-bw-small', encoding: binaryEncoding },
'psd': { mimeType: 'image/vnd.adobe.photoshop', encoding: binaryEncoding },
'psf': { mimeType: 'application/x-font-linux-psf', encoding: binaryEncoding },
'pskcxml': { mimeType: 'application/pskc+xml', encoding: binaryEncoding },
'ptid': { mimeType: 'application/vnd.pvi.ptid1', encoding: binaryEncoding },
'pub': { mimeType: 'application/x-mspublisher', encoding: binaryEncoding },
'pvb': { mimeType: 'application/vnd.3gpp.pic-bw-var', encoding: binaryEncoding },
'pwn': { mimeType: 'application/vnd.3m.post-it-notes', encoding: binaryEncoding },
'pya': { mimeType: 'audio/vnd.ms-playready.media.pya', encoding: binaryEncoding },
'pyv': { mimeType: 'video/vnd.ms-playready.media.pyv', encoding: binaryEncoding },
'qam': { mimeType: 'application/vnd.epson.quickanime', encoding: binaryEncoding },
'qbo': { mimeType: 'application/vnd.intu.qbo', encoding: binaryEncoding },
'qfx': { mimeType: 'application/vnd.intu.qfx', encoding: binaryEncoding },
'qps': { mimeType: 'application/vnd.publishare-delta-tree', encoding: binaryEncoding },
'qt': { mimeType: 'video/quicktime', encoding: binaryEncoding },
'qxd': { mimeType: 'application/vnd.quark.quarkxpress', encoding: binaryEncoding },
'ram': { mimeType: 'audio/x-pn-realaudio', encoding: binaryEncoding },
'rar': { mimeType: 'application/x-rar-compressed', encoding: binaryEncoding },
'ras': { mimeType: 'image/x-cmu-raster', encoding: binaryEncoding },
'rcprofile': { mimeType: 'application/vnd.ipunplugged.rcprofile', encoding: binaryEncoding },
'rdf': { mimeType: 'application/rdf+xml', encoding: binaryEncoding },
'rdz': { mimeType: 'application/vnd.data-vision.rdz', encoding: binaryEncoding },
'rep': { mimeType: 'application/vnd.businessobjects', encoding: binaryEncoding },
'res': { mimeType: 'application/x-dtbresource+xml', encoding: binaryEncoding },
'rgb': { mimeType: 'image/x-rgb', encoding: binaryEncoding },
'rif': { mimeType: 'application/reginfo+xml', encoding: binaryEncoding },
'rip': { mimeType: 'audio/vnd.rip', encoding: binaryEncoding },
'rl': { mimeType: 'application/resource-lists+xml', encoding: binaryEncoding },
'rlc': { mimeType: 'image/vnd.fujixerox.edmics-rlc', encoding: binaryEncoding },
'rld': { mimeType: 'application/resource-lists-diff+xml', encoding: binaryEncoding },
'rm': { mimeType: 'application/vnd.rn-realmedia', encoding: binaryEncoding },
'rmp': { mimeType: 'audio/x-pn-realaudio-plugin', encoding: binaryEncoding },
'rms': { mimeType: 'application/vnd.jcp.javame.midlet-rms', encoding: binaryEncoding },
'rnc': { mimeType: 'application/relax-ng-compact-syntax', encoding: binaryEncoding },
'rp9': { mimeType: 'application/vnd.cloanto.rp9', encoding: binaryEncoding },
'rpss': { mimeType: 'application/vnd.nokia.radio-presets', encoding: binaryEncoding },
'rpst': { mimeType: 'application/vnd.nokia.radio-preset', encoding: binaryEncoding },
'rq': { mimeType: 'application/sparql-query', encoding: binaryEncoding },
'rs': { mimeType: 'application/rls-services+xml', encoding: binaryEncoding },
'rsd': { mimeType: 'application/rsd+xml', encoding: binaryEncoding },
'rss': { mimeType: 'application/rss+xml', encoding: binaryEncoding },
'rtf': { mimeType: 'application/rtf', encoding: binaryEncoding },
'rtx': { mimeType: 'text/richtext', encoding: binaryEncoding },
's': { mimeType: 'text/x-asm', encoding: binaryEncoding },
'saf': { mimeType: 'application/vnd.yamaha.smaf-audio', encoding: binaryEncoding },
'sbml': { mimeType: 'application/sbml+xml', encoding: binaryEncoding },
'sc': { mimeType: 'application/vnd.ibm.secure-container', encoding: binaryEncoding },
'scd': { mimeType: 'application/x-msschedule', encoding: binaryEncoding },
'scm': { mimeType: 'application/vnd.lotus-screencam', encoding: binaryEncoding },
'scq': { mimeType: 'application/scvp-cv-request', encoding: binaryEncoding },
'scs': { mimeType: 'application/scvp-cv-response', encoding: binaryEncoding },
'scurl': { mimeType: 'text/vnd.curl.scurl', encoding: binaryEncoding },
'sda': { mimeType: 'application/vnd.stardivision.draw', encoding: binaryEncoding },
'sdc': { mimeType: 'application/vnd.stardivision.calc', encoding: binaryEncoding },
'sdd': { mimeType: 'application/vnd.stardivision.impress', encoding: binaryEncoding },
'sdkm': { mimeType: 'application/vnd.solent.sdkm+xml', encoding: binaryEncoding },
'sdp': { mimeType: 'application/sdp', encoding: binaryEncoding },
'sdw': { mimeType: 'application/vnd.stardivision.writer', encoding: binaryEncoding },
'see': { mimeType: 'application/vnd.seemail', encoding: binaryEncoding },
'seed': { mimeType: 'application/vnd.fdsn.seed', encoding: binaryEncoding },
'sema': { mimeType: 'application/vnd.sema', encoding: binaryEncoding },
'semd': { mimeType: 'application/vnd.semd', encoding: binaryEncoding },
'semf': { mimeType: 'application/vnd.semf', encoding: binaryEncoding },
'ser': { mimeType: 'application/java-serialized-object', encoding: binaryEncoding },
'setpay': { mimeType: 'application/set-payment-initiation', encoding: binaryEncoding },
'setreg': { mimeType: 'application/set-registration-initiation', encoding: binaryEncoding },
'sfd-hdstx': { mimeType: 'application/vnd.hydrostatix.sof-data', encoding: binaryEncoding },
'sfs': { mimeType: 'application/vnd.spotfire.sfs', encoding: binaryEncoding },
'sgl': { mimeType: 'application/vnd.stardivision.writer-global', encoding: binaryEncoding },
'sgml': { mimeType: 'text/sgml', encoding: binaryEncoding },
'sh': { mimeType: 'application/x-sh', encoding: binaryEncoding },
'shar': { mimeType: 'application/x-shar', encoding: binaryEncoding },
'shf': { mimeType: 'application/shf+xml', encoding: binaryEncoding },
'sis': { mimeType: 'application/vnd.symbian.install', encoding: binaryEncoding },
'sit': { mimeType: 'application/x-stuffit', encoding: binaryEncoding },
'sitx': { mimeType: 'application/x-stuffitx', encoding: binaryEncoding },
'skp': { mimeType: 'application/vnd.koan', encoding: binaryEncoding },
'sldm': { mimeType: 'application/vnd.ms-powerpoint.slide.macroenabled.12', encoding: binaryEncoding },
'sldx': { mimeType: 'application/vnd.openxmlformats-officedocument.presentationml.slide', encoding: binaryEncoding },
'slt': { mimeType: 'application/vnd.epson.salt', encoding: binaryEncoding },
'sm': { mimeType: 'application/vnd.stepmania.stepchart', encoding: binaryEncoding },
'smf': { mimeType: 'application/vnd.stardivision.math', encoding: binaryEncoding },
'smi': { mimeType: 'application/smil+xml', encoding: binaryEncoding },
'snf': { mimeType: 'application/x-font-snf', encoding: binaryEncoding },
'spf': { mimeType: 'application/vnd.yamaha.smaf-phrase', encoding: binaryEncoding },
'spl': { mimeType: 'application/x-futuresplash', encoding: binaryEncoding },
'spot': { mimeType: 'text/vnd.in3d.spot', encoding: binaryEncoding },
'spp': { mimeType: 'application/scvp-vp-response', encoding: binaryEncoding },
'spq': { mimeType: 'application/scvp-vp-request', encoding: binaryEncoding },
'src': { mimeType: 'application/x-wais-source', encoding: binaryEncoding },
'sru': { mimeType: 'application/sru+xml', encoding: binaryEncoding },
'srx': { mimeType: 'application/sparql-results+xml', encoding: binaryEncoding },
'sse': { mimeType: 'application/vnd.kodak-descriptor', encoding: binaryEncoding },
'ssf': { mimeType: 'application/vnd.epson.ssf', encoding: binaryEncoding },
'ssml': { mimeType: 'application/ssml+xml', encoding: binaryEncoding },
'st': { mimeType: 'application/vnd.sailingtracker.track', encoding: binaryEncoding },
'stc': { mimeType: 'application/vnd.sun.xml.calc.template', encoding: binaryEncoding },
'std': { mimeType: 'application/vnd.sun.xml.draw.template', encoding: binaryEncoding },
'stf': { mimeType: 'application/vnd.wt.stf', encoding: binaryEncoding },
'sti': { mimeType: 'application/vnd.sun.xml.impress.template', encoding: binaryEncoding },
'stk': { mimeType: 'application/hyperstudio', encoding: binaryEncoding },
'stl': { mimeType: 'application/vnd.ms-pki.stl', encoding: binaryEncoding },
'str': { mimeType: 'application/vnd.pg.format', encoding: binaryEncoding },
'stw': { mimeType: 'application/vnd.sun.xml.writer.template', encoding: binaryEncoding },
'sub': { mimeType: 'image/vnd.dvb.subtitle', encoding: binaryEncoding },
'sus': { mimeType: 'application/vnd.sus-calendar', encoding: binaryEncoding },
'sv4cpio': { mimeType: 'application/x-sv4cpio', encoding: binaryEncoding },
'sv4crc': { mimeType: 'application/x-sv4crc', encoding: binaryEncoding },
'svc': { mimeType: 'application/vnd.dvb.service', encoding: binaryEncoding },
'svd': { mimeType: 'application/vnd.svd', encoding: binaryEncoding },
'svg': { mimeType: 'image/svg+xml', encoding: binaryEncoding },
'swf': { mimeType: 'application/x-shockwave-flash', encoding: binaryEncoding },
'swi': { mimeType: 'application/vnd.aristanetworks.swi', encoding: binaryEncoding },
'sxc': { mimeType: 'application/vnd.sun.xml.calc', encoding: binaryEncoding },
'sxd': { mimeType: 'application/vnd.sun.xml.draw', encoding: binaryEncoding },
'sxg': { mimeType: 'application/vnd.sun.xml.writer.global', encoding: binaryEncoding },
'sxi': { mimeType: 'application/vnd.sun.xml.impress', encoding: binaryEncoding },
'sxm': { mimeType: 'application/vnd.sun.xml.math', encoding: binaryEncoding },
'sxw': { mimeType: 'application/vnd.sun.xml.writer', encoding: binaryEncoding },
't': { mimeType: 'text/troff', encoding: binaryEncoding },
'tao': { mimeType: 'application/vnd.tao.intent-module-archive', encoding: binaryEncoding },
'tar': { mimeType: 'application/x-tar', encoding: binaryEncoding },
'tcap': { mimeType: 'application/vnd.3gpp2.tcap', encoding: binaryEncoding },
'tcl': { mimeType: 'application/x-tcl', encoding: binaryEncoding },
'teacher': { mimeType: 'application/vnd.smart.teacher', encoding: binaryEncoding },
'tei': { mimeType: 'application/tei+xml', encoding: binaryEncoding },
'tex': { mimeType: 'application/x-tex', encoding: binaryEncoding },
'texinfo': { mimeType: 'application/x-texinfo', encoding: binaryEncoding },
'tfi': { mimeType: 'application/thraud+xml', encoding: binaryEncoding },
'tfm': { mimeType: 'application/x-tex-tfm', encoding: binaryEncoding },
'thmx': { mimeType: 'application/vnd.ms-officetheme', encoding: binaryEncoding },
'tiff': { mimeType: 'image/tiff', encoding: binaryEncoding },
'tmo': { mimeType: 'application/vnd.tmobile-livetv', encoding: binaryEncoding },
'torrent': { mimeType: 'application/x-bittorrent', encoding: binaryEncoding },
'tpl': { mimeType: 'application/vnd.groove-tool-template', encoding: binaryEncoding },
'tpt': { mimeType: 'application/vnd.trid.tpt', encoding: binaryEncoding },
'tra': { mimeType: 'application/vnd.trueapp', encoding: binaryEncoding },
'trm': { mimeType: 'application/x-msterminal', encoding: binaryEncoding },
'tsd': { mimeType: 'application/timestamped-data', encoding: binaryEncoding },
'tsv': { mimeType: 'text/tab-separated-values', encoding: binaryEncoding },
'ttf': { mimeType: 'application/x-font-ttf', encoding: binaryEncoding },
'ttl': { mimeType: 'text/turtle', encoding: binaryEncoding },
'twd': { mimeType: 'application/vnd.simtech-mindmapper', encoding: binaryEncoding },
'txd': { mimeType: 'application/vnd.genomatix.tuxedo', encoding: binaryEncoding },
'txf': { mimeType: 'application/vnd.mobius.txf', encoding: binaryEncoding },
'txt': { mimeType: 'text/plain', encoding: utf8Encoding },
'ufd': { mimeType: 'application/vnd.ufdl', encoding: binaryEncoding },
'umj': { mimeType: 'application/vnd.umajin', encoding: binaryEncoding },
'unityweb': { mimeType: 'application/vnd.unity', encoding: binaryEncoding },
'uoml': { mimeType: 'application/vnd.uoml+xml', encoding: binaryEncoding },
'uri': { mimeType: 'text/uri-list', encoding: binaryEncoding },
'ustar': { mimeType: 'application/x-ustar', encoding: binaryEncoding },
'utz': { mimeType: 'application/vnd.uiq.theme', encoding: binaryEncoding },
'uu': { mimeType: 'text/x-uuencode', encoding: binaryEncoding },
'uva': { mimeType: 'audio/vnd.dece.audio', encoding: binaryEncoding },
'uvh': { mimeType: 'video/vnd.dece.hd', encoding: binaryEncoding },
'uvi': { mimeType: 'image/vnd.dece.graphic', encoding: binaryEncoding },
'uvm': { mimeType: 'video/vnd.dece.mobile', encoding: binaryEncoding },
'uvp': { mimeType: 'video/vnd.dece.pd', encoding: binaryEncoding },
'uvs': { mimeType: 'video/vnd.dece.sd', encoding: binaryEncoding },
'uvu': { mimeType: 'video/vnd.uvvu.mp4', encoding: binaryEncoding },
'uvv': { mimeType: 'video/vnd.dece.video', encoding: binaryEncoding },
'vcd': { mimeType: 'application/x-cdlink', encoding: binaryEncoding },
'vcf': { mimeType: 'text/x-vcard', encoding: binaryEncoding },
'vcg': { mimeType: 'application/vnd.groove-vcard', encoding: binaryEncoding },
'vcs': { mimeType: 'text/x-vcalendar', encoding: binaryEncoding },
'vcx': { mimeType: 'application/vnd.vcx', encoding: binaryEncoding },
'vis': { mimeType: 'application/vnd.visionary', encoding: binaryEncoding },
'viv': { mimeType: 'video/vnd.vivo', encoding: binaryEncoding },
'vsd': { mimeType: 'application/vnd.visio', encoding: binaryEncoding },
'vsdx': { mimeType: 'application/vnd.visio2013', encoding: binaryEncoding },
'vsf': { mimeType: 'application/vnd.vsf', encoding: binaryEncoding },
'vtu': { mimeType: 'model/vnd.vtu', encoding: binaryEncoding },
'vxml': { mimeType: 'application/voicexml+xml', encoding: binaryEncoding },
'wad': { mimeType: 'application/x-doom', encoding: binaryEncoding },
'wav': { mimeType: 'audio/x-wav', encoding: binaryEncoding },
'wax': { mimeType: 'audio/x-ms-wax', encoding: binaryEncoding },
'wbmp': { mimeType: 'image/vnd.wap.wbmp', encoding: binaryEncoding },
'wbs': { mimeType: 'application/vnd.criticaltools.wbs+xml', encoding: binaryEncoding },
'wbxml': { mimeType: 'application/vnd.wap.wbxml', encoding: binaryEncoding },
'weba': { mimeType: 'audio/webm', encoding: binaryEncoding },
'webm': { mimeType: 'video/webm', encoding: binaryEncoding },
'webp': { mimeType: 'image/webp', encoding: binaryEncoding },
'wg': { mimeType: 'application/vnd.pmi.widget', encoding: binaryEncoding },
'wgt': { mimeType: 'application/widget', encoding: binaryEncoding },
'wm': { mimeType: 'video/x-ms-wm', encoding: binaryEncoding },
'wma': { mimeType: 'audio/x-ms-wma', encoding: binaryEncoding },
'wmd': { mimeType: 'application/x-ms-wmd', encoding: binaryEncoding },
'wmf': { mimeType: 'application/x-msmetafile', encoding: binaryEncoding },
'wml': { mimeType: 'text/vnd.wap.wml', encoding: binaryEncoding },
'wmlc': { mimeType: 'application/vnd.wap.wmlc', encoding: binaryEncoding },
'wmls': { mimeType: 'text/vnd.wap.wmlscript', encoding: binaryEncoding },
'wmlsc': { mimeType: 'application/vnd.wap.wmlscriptc', encoding: binaryEncoding },
'wmv': { mimeType: 'video/x-ms-wmv', encoding: binaryEncoding },
'wmx': { mimeType: 'video/x-ms-wmx', encoding: binaryEncoding },
'wmz': { mimeType: 'application/x-ms-wmz', encoding: binaryEncoding },
'woff': { mimeType: 'application/x-font-woff', encoding: binaryEncoding },
'wpd': { mimeType: 'application/vnd.wordperfect', encoding: binaryEncoding },
'wpl': { mimeType: 'application/vnd.ms-wpl', encoding: binaryEncoding },
'wps': { mimeType: 'application/vnd.ms-works', encoding: binaryEncoding },
'wqd': { mimeType: 'application/vnd.wqd', encoding: binaryEncoding },
'wri': { mimeType: 'application/x-mswrite', encoding: binaryEncoding },
'wrl': { mimeType: 'model/vrml', encoding: binaryEncoding },
'wsdl': { mimeType: 'application/wsdl+xml', encoding: binaryEncoding },
'wspolicy': { mimeType: 'application/wspolicy+xml', encoding: binaryEncoding },
'wtb': { mimeType: 'application/vnd.webturbo', encoding: binaryEncoding },
'wvx': { mimeType: 'video/x-ms-wvx', encoding: binaryEncoding },
'xap': { mimeType: 'application/x-silverlight-app', encoding: binaryEncoding },
'xar': { mimeType: 'application/vnd.xara', encoding: binaryEncoding },
'xbap': { mimeType: 'application/x-ms-xbap', encoding: binaryEncoding },
'xbd': { mimeType: 'application/vnd.fujixerox.docuworks.binder', encoding: binaryEncoding },
'xbm': { mimeType: 'image/x-xbitmap', encoding: binaryEncoding },
'xdf': { mimeType: 'application/xcap-diff+xml', encoding: binaryEncoding },
'xdm': { mimeType: 'application/vnd.syncml.dm+xml', encoding: binaryEncoding },
'xdp': { mimeType: 'application/vnd.adobe.xdp+xml', encoding: binaryEncoding },
'xdssc': { mimeType: 'application/dssc+xml', encoding: binaryEncoding },
'xdw': { mimeType: 'application/vnd.fujixerox.docuworks', encoding: binaryEncoding },
'xenc': { mimeType: 'application/xenc+xml', encoding: binaryEncoding },
'xer': { mimeType: 'application/patch-ops-error+xml', encoding: binaryEncoding },
'xfdf': { mimeType: 'application/vnd.adobe.xfdf', encoding: binaryEncoding },
'xfdl': { mimeType: 'application/vnd.xfdl', encoding: binaryEncoding },
'xhtml': { mimeType: 'application/xhtml+xml', encoding: utf8Encoding },
'xif': { mimeType: 'image/vnd.xiff', encoding: binaryEncoding },
'xlam': { mimeType: 'application/vnd.ms-excel.addin.macroenabled.12', encoding: binaryEncoding },
'xls': { mimeType: 'application/vnd.ms-excel', encoding: binaryEncoding },
'xlsb': { mimeType: 'application/vnd.ms-excel.sheet.binary.macroenabled.12', encoding: binaryEncoding },
'xlsm': { mimeType: 'application/vnd.ms-excel.sheet.macroenabled.12', encoding: binaryEncoding },
'xlsx': { mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', encoding: binaryEncoding },
'xltm': { mimeType: 'application/vnd.ms-excel.template.macroenabled.12', encoding: binaryEncoding },
'xltx': { mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', encoding: binaryEncoding },
'xml': { mimeType: 'application/xml', encoding: utf8Encoding },
'xo': { mimeType: 'application/vnd.olpc-sugar', encoding: binaryEncoding },
'xop': { mimeType: 'application/xop+xml', encoding: binaryEncoding },
'xpi': { mimeType: 'application/x-xpinstall', encoding: binaryEncoding },
'xpm': { mimeType: 'image/x-xpixmap', encoding: binaryEncoding },
'xpr': { mimeType: 'application/vnd.is-xpr', encoding: binaryEncoding },
'xps': { mimeType: 'application/vnd.ms-xpsdocument', encoding: binaryEncoding },
'xpw': { mimeType: 'application/vnd.intercon.formnet', encoding: binaryEncoding },
'xslt': { mimeType: 'application/xslt+xml', encoding: binaryEncoding },
'xsm': { mimeType: 'application/vnd.syncml+xml', encoding: binaryEncoding },
'xspf': { mimeType: 'application/xspf+xml', encoding: binaryEncoding },
'xul': { mimeType: 'application/vnd.mozilla.xul+xml', encoding: binaryEncoding },
'xwd': { mimeType: 'image/x-xwindowdump', encoding: binaryEncoding },
'xyz': { mimeType: 'chemical/x-xyz', encoding: binaryEncoding },
'yaml': { mimeType: 'text/yaml', encoding: utf8Encoding },
'yang': { mimeType: 'application/yang', encoding: binaryEncoding },
'yin': { mimeType: 'application/yin+xml', encoding: binaryEncoding },
'zaz': { mimeType: 'application/vnd.zzazz.deck+xml', encoding: binaryEncoding },
'zip': { mimeType: 'application/zip', encoding: binaryEncoding },
'zir': { mimeType: 'application/vnd.zul', encoding: binaryEncoding },
'zmm': { mimeType: 'application/vnd.handheld-entertainment+xml', encoding: binaryEncoding }
};
/**
* export based on how client read, or extend new export module type
*
* @param {object} content actual content
* @returns {Content} Content wrapper for given payload
*/
module.exports = {
binary: (content) => { return ContentFromKnownType(mimeTypes.bin, content); },
text: (content) => { return ContentFromKnownType(mimeTypes.txt, content); },
html: (content) => { return ContentFromKnownType(mimeTypes.html, content); },
json: (content) => { return ContentFromKnownType(mimeTypes.json, content); },
xml: (content) => { return ContentFromKnownType(mimeTypes.xml, content); },
byExtension: (extension, content) => {
let contentObj = mimeTypes[extension] || mimeTypes.bin;
return new ContentFromKnownType(contentObj, content);
},
custom: Content,
fromKnownType: ContentFromKnownType,
mimeTypes: mimeTypes,
typeString: (mimeTypeObj = mimeTypes.bin) => { return mimeTypeObj.mimeType + ((mimeTypeObj.encoding === utf8Encoding) ? utf8EncodingCharset : ''); }
};