misc-utils-of-mine-generic
Version:
Miscellaneous utilities for JavaScript/TypeScript that I often use
262 lines (258 loc) • 5.68 kB
text/typescript
/**
* Returns mimetype associated to given extension or undefined if none is found. This only considers nginx
* mime type list form https://github.com/jshttp/mime-db
*/
export function getMimeTypeForExtension(extension: string) {
return Object.keys(commonExtensionMimeTypeMap).find(a => commonExtensionMimeTypeMap[a].extensions.includes(extension))
}
/**
* Returns known extensions for given MimeType or undefined if none is found. This only considers nginx mime
* type list form https://github.com/jshttp/mime-db
*/
export function getExtensionsForMimeType(mimeType: string) {
const found = Object.keys(commonExtensionMimeTypeMap).find(a => a === mimeType)
return found && (commonExtensionMimeTypeMap[found].extensions as string[])
}
// taken from https://github.com/jshttp/mime-db
const commonExtensionMimeTypeMap: any = {
'application/atom+xml': {
extensions: ['atom']
},
'application/java-archive': {
extensions: ['jar', 'war', 'ear']
},
'application/javascript': {
extensions: ['js']
},
'application/json': {
extensions: ['json']
},
'application/mac-binhex40': {
extensions: ['hqx']
},
'application/msword': {
extensions: ['doc']
},
'application/octet-stream': {
extensions: ['bin', 'exe', 'dll', 'deb', 'dmg', 'iso', 'img', 'msi', 'msp', 'msm']
},
'application/pdf': {
extensions: ['pdf']
},
'application/postscript': {
extensions: ['ps', 'eps', 'ai']
},
'application/rss+xml': {
extensions: ['rss']
},
'application/rtf': {
extensions: ['rtf']
},
'application/vnd.apple.mpegurl': {
extensions: ['m3u8']
},
'application/vnd.google-earth.kml+xml': {
extensions: ['kml']
},
'application/vnd.google-earth.kmz': {
extensions: ['kmz']
},
'application/vnd.ms-excel': {
extensions: ['xls']
},
'application/vnd.ms-fontobject': {
extensions: ['eot']
},
'application/vnd.ms-powerpoint': {
extensions: ['ppt']
},
'application/vnd.oasis.opendocument.graphics': {
extensions: ['odg']
},
'application/vnd.oasis.opendocument.presentation': {
extensions: ['odp']
},
'application/vnd.oasis.opendocument.spreadsheet': {
extensions: ['ods']
},
'application/vnd.oasis.opendocument.text': {
extensions: ['odt']
},
'application/vnd.openxmlformats-officedocument.presentationml.presentation': {
extensions: ['pptx']
},
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': {
extensions: ['xlsx']
},
'application/vnd.openxmlformats-officedocument.wordprocessingml.document': {
extensions: ['docx']
},
'application/vnd.wap.wmlc': {
extensions: ['wmlc']
},
'application/x-7z-compressed': {
extensions: ['7z']
},
'application/x-cocoa': {
extensions: ['cco']
},
'application/x-java-archive-diff': {
extensions: ['jardiff']
},
'application/x-java-jnlp-file': {
extensions: ['jnlp']
},
'application/x-makeself': {
extensions: ['run']
},
'application/x-perl': {
extensions: ['pl', 'pm']
},
'application/x-pilot': {
extensions: ['prc', 'pdb']
},
'application/x-rar-compressed': {
extensions: ['rar']
},
'application/x-redhat-package-manager': {
extensions: ['rpm']
},
'application/x-sea': {
extensions: ['sea']
},
'application/x-shockwave-flash': {
extensions: ['swf']
},
'application/x-stuffit': {
extensions: ['sit']
},
'application/x-tcl': {
extensions: ['tcl', 'tk']
},
'application/x-x509-ca-cert': {
extensions: ['der', 'pem', 'crt']
},
'application/x-xpinstall': {
extensions: ['xpi']
},
'application/xhtml+xml': {
extensions: ['xhtml']
},
'application/xspf+xml': {
extensions: ['xspf']
},
'application/zip': {
extensions: ['zip']
},
'audio/midi': {
extensions: ['mid', 'midi', 'kar']
},
'audio/mpeg': {
extensions: ['mp3']
},
'audio/ogg': {
extensions: ['ogg']
},
'audio/x-m4a': {
extensions: ['m4a']
},
'audio/x-realaudio': {
extensions: ['ra']
},
'font/woff': {
extensions: ['woff']
},
'font/woff2': {
extensions: ['woff2']
},
'image/gif': {
extensions: ['gif']
},
'image/jpeg': {
extensions: ['jpeg', 'jpg']
},
'image/png': {
extensions: ['png']
},
'image/svg+xml': {
extensions: ['svg', 'svgz']
},
'image/tiff': {
extensions: ['tif', 'tiff']
},
'image/vnd.wap.wbmp': {
extensions: ['wbmp']
},
'image/webp': {
extensions: ['webp']
},
'image/x-icon': {
extensions: ['ico']
},
'image/x-jng': {
extensions: ['jng']
},
'image/x-ms-bmp': {
extensions: ['bmp']
},
'text/css': {
extensions: ['css']
},
'text/html': {
extensions: ['html', 'htm', 'shtml']
},
'text/mathml': {
extensions: ['mml']
},
'text/plain': {
extensions: ['txt']
},
'text/vnd.sun.j2me.app-descriptor': {
extensions: ['jad']
},
'text/vnd.wap.wml': {
extensions: ['wml']
},
'text/x-component': {
extensions: ['htc']
},
'text/xml': {
extensions: ['xml']
},
'video/3gpp': {
extensions: ['3gpp', '3gp']
},
'video/mp2t': {
extensions: ['ts']
},
'video/mp4': {
extensions: ['mp4']
},
'video/mpeg': {
extensions: ['mpeg', 'mpg']
},
'video/quicktime': {
extensions: ['mov']
},
'video/webm': {
extensions: ['webm']
},
'video/x-flv': {
extensions: ['flv']
},
'video/x-m4v': {
extensions: ['m4v']
},
'video/x-mng': {
extensions: ['mng']
},
'video/x-ms-asf': {
extensions: ['asx', 'asf']
},
'video/x-ms-wmv': {
extensions: ['wmv']
},
'video/x-msvideo': {
extensions: ['avi']
}
}