Sha256: 1a04312fd7781805dd4d31cba76b3d2fa15b0e8bd75c38ecedc98d6e8f9da81e

Contents?: true

Size: 1.66 KB

Versions: 144

Compression:

Stored size: 1.66 KB

Contents

var db = require('mime-db')

// types[extension] = type
exports.types = Object.create(null)
// extensions[type] = [extensions]
exports.extensions = Object.create(null)

Object.keys(db).forEach(function (name) {
  var mime = db[name]
  var exts = mime.extensions
  if (!exts || !exts.length) return
  exports.extensions[name] = exts
  exts.forEach(function (ext) {
    exports.types[ext] = name
  })
})

exports.lookup = function (string) {
  if (!string || typeof string !== "string") return false
  // remove any leading paths, though we should just use path.basename
  string = string.replace(/.*[\.\/\\]/, '').toLowerCase()
  if (!string) return false
  return exports.types[string] || false
}

exports.extension = function (type) {
  if (!type || typeof type !== "string") return false
  // to do: use media-typer
  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) {
  var mime = db[type]
  if (mime && mime.charset) return mime.charset

  // default text/* to utf-8
  if (/^text\//.test(type)) return 'UTF-8'

  return false
}

// backwards compatibility
exports.charsets = {
  lookup: exports.charset
}

// to do: maybe use set-type module or something
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
}

Version data entries

144 entries across 83 versions & 5 rubygems

Version Path
trusty-festivity-extension-2.6.3 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.6.2 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.6.1 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.6 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.19 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.18 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.17 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.16 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.15 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.14 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.13 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.12 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.11 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.10 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.9 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.8 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.7 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.6 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
trusty-festivity-extension-2.5.5 node_modules/bower/node_modules/request/node_modules/mime-types/index.js
blackboard-3.1.9 lib/site_template/node_modules/engine.io/node_modules/mime-types/index.js