1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // types[extension] = type
- exports.types = Object.create(null)
- // extensions[type] = [extensions]
- exports.extensions = Object.create(null)
- // define more mime types
- exports.define = define
- // store the json files
- exports.json = {
- mime: require('./mime.json'),
- node: require('./node.json'),
- custom: require('./custom.json'),
- }
- exports.lookup = function (string) {
- if (!string || typeof string !== "string") return false
- string = string.replace(/.*[\.\/\\]/, '').toLowerCase()
- if (!string) return false
- return exports.types[string] || false
- }
- exports.extension = function (type) {
- if (!type || typeof type !== "string") return false
- type = type.match(/^\s*([^;\s]*)(?:;|\s|$)/)
- if (!type) return false
- var exts = exports.extensions[type[1].toLowerCase()]
- if (!exts || !exts.length) return false
- return exts[0]
- }
- // type has to be an exact mime type
- exports.charset = function (type) {
- // special cases
- switch (type) {
- case 'application/json': return 'UTF-8'
- }
- // default text/* to utf-8
- if (/^text\//.test(type)) return 'UTF-8'
- return false
- }
- // backwards compatibility
- exports.charsets = {
- lookup: exports.charset
- }
- exports.contentType = function (type) {
- if (!type || typeof type !== "string") return false
- if (!~type.indexOf('/')) type = exports.lookup(type)
- if (!type) return false
- if (!~type.indexOf('charset')) {
- var charset = exports.charset(type)
- if (charset) type += '; charset=' + charset.toLowerCase()
- }
- return type
- }
- define(exports.json.mime)
- define(exports.json.node)
- define(exports.json.custom)
- function define(json) {
- Object.keys(json).forEach(function (type) {
- var exts = json[type] || []
- exports.extensions[type] = exports.extensions[type] || []
- exts.forEach(function (ext) {
- if (!~exports.extensions[type].indexOf(ext)) exports.extensions[type].push(ext)
- exports.types[ext] = type
- })
- })
- }
|