| /*! |
| * compressible |
| * Copyright(c) 2013 Jonathan Ong |
| * Copyright(c) 2014 Jeremiah Senkpiel |
| * Copyright(c) 2015 Douglas Christopher Wilson |
| * MIT Licensed |
| */ |
| |
| 'use strict' |
| |
| /** |
| * Module dependencies. |
| * @private |
| */ |
| |
| var db = require('mime-db') |
| |
| /** |
| * Module variables. |
| * @private |
| */ |
| |
| var COMPRESSIBLE_TYPE_REGEXP = /^text\/|\+(?:json|text|xml)$/i |
| var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ |
| |
| /** |
| * Module exports. |
| * @public |
| */ |
| |
| module.exports = compressible |
| |
| /** |
| * Checks if a type is compressible. |
| * |
| * @param {string} type |
| * @return {Boolean} compressible |
| * @public |
| */ |
| |
| function compressible (type) { |
| if (!type || typeof type !== 'string') { |
| return false |
| } |
| |
| // strip parameters |
| var match = EXTRACT_TYPE_REGEXP.exec(type) |
| var mime = match && match[1].toLowerCase() |
| var data = db[mime] |
| |
| // return database information |
| if (data && data.compressible !== undefined) { |
| return data.compressible |
| } |
| |
| // fallback to regexp or unknown |
| return COMPRESSIBLE_TYPE_REGEXP.test(mime) || undefined |
| } |