Permalink
Browse files

Initial Commit

Change-Id: I99b9e91242dc8b87d9b929c9d5ee271c1d93641d
  • Loading branch information...
0 parents commit db353179ab952a4a757458fb3143fa780eaa80a4 @creationix committed Dec 26, 2010
Showing with 225 additions and 0 deletions.
  1. +26 −0 README.markdown
  2. +14 −0 package.json
  3. +185 −0 simple-mime.js
@@ -0,0 +1,26 @@
+# Mime
+
+This is a small, simple mime database. A common thing for node servers to do is serve static files over HTTP.
+This requires, among other things, knowin the mime type you want to send. Here is a simple module to make this easy.
+
+## Install
+
+If you use NPM, then install this via npm. Also, please remember to put it as a dependency in your package.json file of your module that requires it.
+
+ npm install simple-mime
+
+If you choose to not use npm, or can't use it in your environment, then simply copy the single file `simple-mime.js` to somewhere you can require it.
+
+## Usage
+
+Simply load this library, configure your fallback mime type, and query it for the mime type of various filenames.
+
+ var getMimeType = require('mime')('application/octect-stream');
+ var file = "/bar/foo/baz.mp3";
+ var type = getMimeType(file);
+
+## Goal
+
+You will probably not use this except as a dependency to your own module that deals with serving files over HTTP, or some other protocol that requires mime types.
+
+This doesn't have as many features as the `mime` module in npm, but it's a lot simpler too. The goal is that it's useful to someone.
@@ -0,0 +1,14 @@
+{
+ "name": "simple-mime",
+ "description": "A simple mime database.",
+ "tags": ["mime", "http", "stack"],
+ "version": "0.0.1",
+ "author": "Tim Caswell <tim@creationix.com>",
+ "repository": {
+ "type": "git",
+ "url": "http://github.com/creationix/simple-mime.git"
+ },
+ "bugs": "http://github.com/creationix/simple-mime/issues",
+ "engines": ["node >= 0.2.0"],
+ "main": "simple-mime.js"
+}
@@ -0,0 +1,185 @@
+// A simple mime database.
+var types;
+module.exports = function setup(defaultMime) {
+ return function getMime(path) {
+ path = path.toLowerCase().trim();
+ var index = String(path).lastIndexOf(".");
+ if (index >= 0) {
+ path = path.substr(index + 1);
+ }
+ return types[path] || defaultMime;
+ };
+};
+
+// Borrowed and passed around from who knows where, last grabbed from connect.
+types = {
+ "3gp": "video/3gpp",
+ a: "application/octet-stream",
+ ai: "application/postscript",
+ aif: "audio/x-aiff",
+ aiff: "audio/x-aiff",
+ asc: "application/pgp-signature",
+ asf: "video/x-ms-asf",
+ asm: "text/x-asm",
+ asx: "video/x-ms-asf",
+ atom: "application/atom+xml",
+ au: "audio/basic",
+ avi: "video/x-msvideo",
+ bat: "application/x-msdownload",
+ bin: "application/octet-stream",
+ bmp: "image/bmp",
+ bz2: "application/x-bzip2",
+ c: "text/x-c",
+ cab: "application/vnd.ms-cab-compressed",
+ cc: "text/x-c",
+ chm: "application/vnd.ms-htmlhelp",
+ "class": "application/octet-stream",
+ com: "application/x-msdownload",
+ conf: "text/plain",
+ cpp: "text/x-c",
+ crt: "application/x-x509-ca-cert",
+ css: "text/css",
+ csv: "text/csv",
+ cxx: "text/x-c",
+ deb: "application/x-debian-package",
+ der: "application/x-x509-ca-cert",
+ diff: "text/x-diff",
+ djv: "image/vnd.djvu",
+ djvu: "image/vnd.djvu",
+ dll: "application/x-msdownload",
+ dmg: "application/octet-stream",
+ doc: "application/msword",
+ dot: "application/msword",
+ dtd: "application/xml-dtd",
+ dvi: "application/x-dvi",
+ ear: "application/java-archive",
+ eml: "message/rfc822",
+ eps: "application/postscript",
+ exe: "application/x-msdownload",
+ f: "text/x-fortran",
+ f77: "text/x-fortran",
+ f90: "text/x-fortran",
+ flv: "video/x-flv",
+ "for": "text/x-fortran",
+ gem: "application/octet-stream",
+ gemspec: "text/x-script.ruby",
+ gif: "image/gif",
+ gz: "application/x-gzip",
+ h: "text/x-c",
+ hh: "text/x-c",
+ htm: "text/html",
+ html: "text/html",
+ ico: "image/vnd.microsoft.icon",
+ ics: "text/calendar",
+ ifb: "text/calendar",
+ iso: "application/octet-stream",
+ jar: "application/java-archive",
+ java: "text/x-java-source",
+ jnlp: "application/x-java-jnlp-file",
+ jpeg: "image/jpeg",
+ jpg: "image/jpeg",
+ js: "application/javascript",
+ json: "application/json",
+ log: "text/plain",
+ m3u: "audio/x-mpegurl",
+ m4v: "video/mp4",
+ man: "text/troff",
+ manifest: "text/cache-manifest",
+ mathml: "application/mathml+xml",
+ mbox: "application/mbox",
+ mdoc: "text/troff",
+ me: "text/troff",
+ mid: "audio/midi",
+ midi: "audio/midi",
+ mime: "message/rfc822",
+ mml: "application/mathml+xml",
+ mng: "video/x-mng",
+ mov: "video/quicktime",
+ mp3: "audio/mpeg",
+ mp4: "video/mp4",
+ mp4v: "video/mp4",
+ mpeg: "video/mpeg",
+ mpg: "video/mpeg",
+ ms: "text/troff",
+ msi: "application/x-msdownload",
+ odp: "application/vnd.oasis.opendocument.presentation",
+ ods: "application/vnd.oasis.opendocument.spreadsheet",
+ odt: "application/vnd.oasis.opendocument.text",
+ ogg: "application/ogg",
+ p: "text/x-pascal",
+ pas: "text/x-pascal",
+ pbm: "image/x-portable-bitmap",
+ pdf: "application/pdf",
+ pem: "application/x-x509-ca-cert",
+ pgm: "image/x-portable-graymap",
+ pgp: "application/pgp-encrypted",
+ pkg: "application/octet-stream",
+ pl: "text/x-script.perl",
+ pm: "text/x-script.perl-module",
+ png: "image/png",
+ pnm: "image/x-portable-anymap",
+ ppm: "image/x-portable-pixmap",
+ pps: "application/vnd.ms-powerpoint",
+ ppt: "application/vnd.ms-powerpoint",
+ ps: "application/postscript",
+ psd: "image/vnd.adobe.photoshop",
+ py: "text/x-script.python",
+ qt: "video/quicktime",
+ ra: "audio/x-pn-realaudio",
+ rake: "text/x-script.ruby",
+ ram: "audio/x-pn-realaudio",
+ rar: "application/x-rar-compressed",
+ rb: "text/x-script.ruby",
+ rdf: "application/rdf+xml",
+ roff: "text/troff",
+ rpm: "application/x-redhat-package-manager",
+ rss: "application/rss+xml",
+ rtf: "application/rtf",
+ ru: "text/x-script.ruby",
+ s: "text/x-asm",
+ sgm: "text/sgml",
+ sgml: "text/sgml",
+ sh: "application/x-sh",
+ sig: "application/pgp-signature",
+ snd: "audio/basic",
+ so: "application/octet-stream",
+ svg: "image/svg+xml",
+ svgz: "image/svg+xml",
+ swf: "application/x-shockwave-flash",
+ t: "text/troff",
+ tar: "application/x-tar",
+ tbz: "application/x-bzip-compressed-tar",
+ tci: "application/x-topcloud",
+ tcl: "application/x-tcl",
+ tex: "application/x-tex",
+ texi: "application/x-texinfo",
+ texinfo: "application/x-texinfo",
+ text: "text/plain",
+ tif: "image/tiff",
+ tiff: "image/tiff",
+ torrent: "application/x-bittorrent",
+ tr: "text/troff",
+ ttf: "application/x-font-ttf",
+ txt: "text/plain",
+ vcf: "text/x-vcard",
+ vcs: "text/x-vcalendar",
+ vrml: "model/vrml",
+ war : "application/java-archive",
+ wav : "audio/x-wav",
+ wma: "audio/x-ms-wma",
+ wmv: "video/x-ms-wmv",
+ wmx: "video/x-ms-wmx",
+ wrl: "model/vrml",
+ wsdl: "application/wsdl+xml",
+ xbm: "image/x-xbitmap",
+ xhtml: "application/xhtml+xml",
+ xls: "application/vnd.ms-excel",
+ xml: "application/xml",
+ xpm: "image/x-xpixmap",
+ xsl: "application/xml",
+ xslt: "application/xslt+xml",
+ yaml: "text/yaml",
+ yml: "text/yaml",
+ zip: "application/zip"
+};
+

0 comments on commit db35317

Please sign in to comment.