You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.0 KiB
58 lines
1.0 KiB
/*! |
|
* 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 |
|
}
|
|
|