├── .eslintignore ├── test ├── .eslintrc.yml └── index.js ├── .gitignore ├── index.js ├── .eslintrc.yml ├── src ├── custom-suffix.json ├── README.md ├── nginx-types.json ├── custom-types.json └── apache-types.json ├── LICENSE ├── scripts ├── lib │ └── write-db.js ├── version-history.js ├── fetch-nginx.js ├── fetch-apache.js ├── build.js └── fetch-iana.js ├── package.json ├── README.md ├── .github └── workflows │ └── ci.yml └── HISTORY.md /.eslintignore: -------------------------------------------------------------------------------- 1 | coverage 2 | node_modules 3 | -------------------------------------------------------------------------------- /test/.eslintrc.yml: -------------------------------------------------------------------------------- 1 | env: 2 | mocha: true 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store* 3 | *.log 4 | *.gz 5 | 6 | .nyc_output 7 | node_modules 8 | package-lock.json 9 | coverage 10 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * mime-db 3 | * Copyright(c) 2014 Jonathan Ong 4 | * MIT Licensed 5 | */ 6 | 7 | /** 8 | * Module exports. 9 | */ 10 | 11 | module.exports = require('./db.json') 12 | -------------------------------------------------------------------------------- /.eslintrc.yml: -------------------------------------------------------------------------------- 1 | root: true 2 | extends: 3 | - standard 4 | - plugin:markdown/recommended 5 | plugins: 6 | - markdown 7 | overrides: 8 | - files: '**/*.md' 9 | processor: 'markdown/markdown' 10 | -------------------------------------------------------------------------------- /src/custom-suffix.json: -------------------------------------------------------------------------------- 1 | { 2 | "+json": { 3 | "compressible": true, 4 | "notes": "+json means it is JSON, which is compressible." 5 | }, 6 | "+xml": { 7 | "compressible": true, 8 | "notes": "+xml means it is XML, which is compressible." 9 | }, 10 | "+zip": { 11 | "compressible": false, 12 | "notes": "+zip means it is a ZIP archive, which is not compressible." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 Jonathan Ong me@jongleberry.com 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | # MIME sources 2 | 3 | This directory contains various sources for building the database. 4 | 5 | ## Type data files 6 | 7 | Type data files are those that are in the format `*-types.json` and contain 8 | general MIME type data. 9 | 10 | ### Format 11 | 12 | The JSON consists of a single object with keys being the normalized MIME type 13 | (all lower-case) and the value being an object of the data with the following 14 | keys: 15 | 16 | #### compressible 17 | 18 | A Boolean indicating if the type is "compressible". The definition of 19 | "compressible" is loose, but in general indicates if a compression algorithm 20 | like gzip is able to reduce the size of a typical file in the matching format. 21 | 22 | #### extensions 23 | 24 | An array of extensions assigned to the MIME type. The order of extensions is 25 | significant, with the most-preferred at index 0. 26 | 27 | #### notes 28 | 29 | A free-form string that contains miscellaneous notes regarding the type. 30 | 31 | #### sources 32 | 33 | An array of URLs that are used to source the type. 34 | 35 | ### apache-types.json 36 | 37 | Data built from the Apache project. 38 | 39 | ### custom-types.json 40 | 41 | Data that is custom from the community or `mime-db` maintainers. 42 | 43 | ### iana-types.json 44 | 45 | Data built from the IANA database. 46 | 47 | ### nginx-types.json 48 | 49 | Data built from the nginx database. 50 | 51 | ## custom-suffix.json 52 | 53 | Data that is custom from the community or `mime-db` maintainers that applies 54 | to all types with a given suffix. 55 | -------------------------------------------------------------------------------- /scripts/lib/write-db.js: -------------------------------------------------------------------------------- 1 | 2 | var fs = require('fs') 3 | 4 | module.exports = function writeDatabaseSync (fileName, obj) { 5 | var fd = fs.openSync(fileName, 'w') 6 | var keys = Object.keys(obj).sort() 7 | 8 | fs.writeSync(fd, '{\n') 9 | 10 | keys.forEach(function (key, i, arr) { 11 | fs.writeSync(fd, ' ' + JSON.stringify(key) + ': {') 12 | 13 | var end = endLine.apply(this, arguments) 14 | var data = obj[key] 15 | var keys = Object.keys(data).sort(sortDataKeys) 16 | 17 | if (keys.length === 0) { 18 | fs.writeSync(fd, '}' + end) 19 | return 20 | } 21 | 22 | fs.writeSync(fd, '\n') 23 | keys.forEach(function (key, i, arr) { 24 | var end = endLine.apply(this, arguments) 25 | var val = data[key] 26 | 27 | if (val !== undefined) { 28 | var str = Array.isArray(val) && val.some(function (v) { return String(v).length > 15 }) 29 | ? JSON.stringify(val, null, 2).split('\n').join('\n ') 30 | : JSON.stringify(val) 31 | 32 | fs.writeSync(fd, ' ' + JSON.stringify(key) + ': ' + str + end) 33 | } 34 | }) 35 | 36 | fs.writeSync(fd, ' }' + end) 37 | }) 38 | 39 | fs.writeSync(fd, '}\n') 40 | 41 | fs.closeSync(fd) 42 | } 43 | 44 | function endLine (key, i, arr) { 45 | var comma = i + 1 === arr.length 46 | ? '' 47 | : ',' 48 | return comma + '\n' 49 | } 50 | 51 | function sortDataKeys (a, b) { 52 | var cmp = a.localeCompare(b) 53 | 54 | return cmp && (a === 'source' || b === 'source') 55 | ? (a === 'source' ? -1 : 1) 56 | : cmp 57 | } 58 | -------------------------------------------------------------------------------- /scripts/version-history.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | var fs = require('fs') 4 | var path = require('path') 5 | 6 | var HISTORY_FILE_PATH = path.join(__dirname, '..', 'HISTORY.md') 7 | var MD_HEADER_REGEXP = /^====*$/ 8 | var VERSION = process.env.npm_package_version 9 | var VERSION_PLACEHOLDER_REGEXP = /^(?:unreleased|(\d+\.)+x)$/ 10 | 11 | var historyFileLines = fs.readFileSync(HISTORY_FILE_PATH, 'utf-8').split('\n') 12 | 13 | if (!MD_HEADER_REGEXP.test(historyFileLines[1])) { 14 | console.error('Missing header in HISTORY.md') 15 | process.exit(1) 16 | } 17 | 18 | if (!VERSION_PLACEHOLDER_REGEXP.test(historyFileLines[0])) { 19 | console.error('Missing placegolder version in HISTORY.md') 20 | process.exit(1) 21 | } 22 | 23 | if (historyFileLines[0].indexOf('x') !== -1) { 24 | var versionCheckRegExp = new RegExp('^' + historyFileLines[0].replace('x', '.+') + '$') 25 | 26 | if (!versionCheckRegExp.test(VERSION)) { 27 | console.error('Version %s does not match placeholder %s', VERSION, historyFileLines[0]) 28 | process.exit(1) 29 | } 30 | } 31 | 32 | historyFileLines[0] = VERSION + ' / ' + getLocaleDate() 33 | historyFileLines[1] = repeat('=', historyFileLines[0].length) 34 | 35 | fs.writeFileSync(HISTORY_FILE_PATH, historyFileLines.join('\n')) 36 | 37 | function getLocaleDate () { 38 | var now = new Date() 39 | 40 | return zeroPad(now.getFullYear(), 4) + '-' + 41 | zeroPad(now.getMonth() + 1, 2) + '-' + 42 | zeroPad(now.getDate(), 2) 43 | } 44 | 45 | function repeat (str, length) { 46 | var out = '' 47 | 48 | for (var i = 0; i < length; i++) { 49 | out += str 50 | } 51 | 52 | return out 53 | } 54 | 55 | function zeroPad (number, length) { 56 | var num = number.toString() 57 | 58 | while (num.length < length) { 59 | num = '0' + num 60 | } 61 | 62 | return num 63 | } 64 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mime-db", 3 | "description": "Media Type Database", 4 | "version": "1.50.0", 5 | "contributors": [ 6 | "Douglas Christopher Wilson ", 7 | "Jonathan Ong (http://jongleberry.com)", 8 | "Robert Kieffer (http://github.com/broofa)" 9 | ], 10 | "license": "MIT", 11 | "keywords": [ 12 | "mime", 13 | "db", 14 | "type", 15 | "types", 16 | "database", 17 | "charset", 18 | "charsets" 19 | ], 20 | "repository": "jshttp/mime-db", 21 | "devDependencies": { 22 | "bluebird": "3.7.2", 23 | "co": "4.6.0", 24 | "cogent": "1.0.1", 25 | "csv-parse": "4.16.3", 26 | "eslint": "7.32.0", 27 | "eslint-config-standard": "15.0.1", 28 | "eslint-plugin-import": "2.24.2", 29 | "eslint-plugin-markdown": "2.2.1", 30 | "eslint-plugin-node": "11.1.0", 31 | "eslint-plugin-promise": "5.1.0", 32 | "eslint-plugin-standard": "4.1.0", 33 | "gnode": "0.1.2", 34 | "mocha": "9.1.1", 35 | "nyc": "15.1.0", 36 | "raw-body": "2.4.1", 37 | "stream-to-array": "2.3.0" 38 | }, 39 | "files": [ 40 | "HISTORY.md", 41 | "LICENSE", 42 | "README.md", 43 | "db.json", 44 | "index.js" 45 | ], 46 | "engines": { 47 | "node": ">= 0.6" 48 | }, 49 | "scripts": { 50 | "build": "node scripts/build", 51 | "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", 52 | "lint": "eslint .", 53 | "test": "mocha --reporter spec --bail --check-leaks test/", 54 | "test-ci": "nyc --reporter=lcov --reporter=text npm test", 55 | "test-cov": "nyc --reporter=html --reporter=text npm test", 56 | "update": "npm run fetch && npm run build", 57 | "version": "node scripts/version-history.js && git add HISTORY.md" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /scripts/fetch-nginx.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | /** 4 | * Convert these text files to JSON for browser usage. 5 | */ 6 | 7 | var getBody = require('raw-body') 8 | var https = require('https') 9 | var writedb = require('./lib/write-db') 10 | 11 | /** 12 | * Mime types and associated extensions are stored in the form: 13 | * 14 | * ; 15 | */ 16 | var TYPE_LINE_REGEXP = /^\s*([\w-]+\/[\w+.-]+)((?:\s+[\w-]+)*);\s*$/gm 17 | 18 | /** 19 | * URL for the mime.types file in the NGINX project source. 20 | * 21 | * This uses the Github.com mirror of the Mercurial repository 22 | * as the Mercurial web interface requires cookies. 23 | */ 24 | var URL = 'https://raw.githubusercontent.com/nginx/nginx/master/conf/mime.types' 25 | 26 | get(URL, function onResponse (err, body) { 27 | if (err) throw err 28 | 29 | var json = {} 30 | var match = null 31 | 32 | TYPE_LINE_REGEXP.index = 0 33 | 34 | while ((match = TYPE_LINE_REGEXP.exec(body))) { 35 | var mime = match[1] 36 | 37 | // parse the extensions 38 | var extensions = (match[2] || '') 39 | .split(/\s+/) 40 | .filter(Boolean) 41 | var data = json[mime] || (json[mime] = {}) 42 | 43 | // append the extensions 44 | appendExtensions(data, extensions) 45 | } 46 | 47 | writedb('src/nginx-types.json', json) 48 | }) 49 | 50 | /** 51 | * Append an extension to an object. 52 | */ 53 | function appendExtension (obj, extension) { 54 | if (!obj.extensions) { 55 | obj.extensions = [] 56 | } 57 | 58 | if (obj.extensions.indexOf(extension) === -1) { 59 | obj.extensions.push(extension) 60 | } 61 | } 62 | 63 | /** 64 | * Append extensions to an object. 65 | */ 66 | function appendExtensions (obj, extensions) { 67 | if (extensions.length === 0) { 68 | return 69 | } 70 | 71 | for (var i = 0; i < extensions.length; i++) { 72 | var extension = extensions[i] 73 | 74 | // add extension to the type entry 75 | appendExtension(obj, extension) 76 | } 77 | } 78 | 79 | /** 80 | * Get HTTPS resource. 81 | */ 82 | function get (url, callback) { 83 | https.get(url, function onResponse (res) { 84 | if (res.statusCode !== 200) { 85 | callback(new Error('got status code ' + res.statusCode + ' from ' + URL)) 86 | } else { 87 | getBody(res, true, callback) 88 | } 89 | }) 90 | } 91 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | 2 | var assert = require('assert') 3 | var fs = require('fs') 4 | var join = require('path').join 5 | 6 | var db = require('..') 7 | 8 | describe('mime-db', function () { 9 | it('should not contain types not in src/', function () { 10 | var path = join(__dirname, '..', 'src') 11 | var types = [] 12 | 13 | // collect all source types 14 | fs.readdirSync(path).forEach(function (file) { 15 | if (!/-types\.json$/.test(file)) return 16 | types.push.apply(types, Object.keys(require(path + '/' + file))) 17 | }) 18 | 19 | Object.keys(db).forEach(function (name) { 20 | assert.ok(types.indexOf(name) !== -1, 'type "' + name + '" should be in src/') 21 | }) 22 | }) 23 | 24 | it('should all be mime types', function () { 25 | assert(Object.keys(db).every(function (name) { 26 | return ~name.indexOf('/') || console.log(name) 27 | })) 28 | }) 29 | 30 | it('should not have any uppercased letters in names', function () { 31 | Object.keys(db).forEach(function (name) { 32 | assert.strictEqual(name, name.toLowerCase(), 'type "' + name + '" should be lowercase') 33 | }) 34 | }) 35 | 36 | it('should have .json and .js as having UTF-8 charsets', function () { 37 | assert.strictEqual('UTF-8', db['application/json'].charset) 38 | assert.strictEqual('UTF-8', db['application/javascript'].charset) 39 | }) 40 | 41 | it('should set audio/x-flac with extension=flac', function () { 42 | assert.strictEqual('flac', db['audio/x-flac'].extensions[0]) 43 | }) 44 | 45 | it('should have guessed application/mathml+xml', function () { 46 | // because it doesn't have a "template" 47 | assert(db['application/mathml+xml']) 48 | }) 49 | 50 | it('should not have an empty .extensions', function () { 51 | assert(Object.keys(db).every(function (name) { 52 | var mime = db[name] 53 | if (!mime.extensions) return true 54 | return mime.extensions.length 55 | })) 56 | }) 57 | 58 | it('should have only lowercase .extensions', function () { 59 | Object.keys(db).forEach(function (name) { 60 | (db[name].extensions || []).forEach(function (ext) { 61 | assert.strictEqual(ext, ext.toLowerCase(), 'extension "' + ext + '" in type "' + name + '" should be lowercase') 62 | }) 63 | }) 64 | }) 65 | 66 | it('should have the default .extension as the first', function () { 67 | assert.strictEqual(db['text/plain'].extensions[0], 'txt') 68 | assert.strictEqual(db['video/x-matroska'].extensions[0], 'mkv') 69 | }) 70 | }) 71 | -------------------------------------------------------------------------------- /scripts/fetch-apache.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | /** 4 | * Convert these text files to JSON for browser usage. 5 | */ 6 | 7 | var getBody = require('raw-body') 8 | var https = require('https') 9 | var writedb = require('./lib/write-db') 10 | 11 | /** 12 | * Mime types and associated extensions are stored in the form: 13 | * 14 | * 15 | * 16 | * And some are commented out with a leading `#` because they have no associated extensions. 17 | * This regexp checks whether a single line matches this format, ignoring lines that are just comments. 18 | * We could also just remove all lines that start with `#` if we want to make the JSON files smaller 19 | * and ignore all mime types without associated extensions. 20 | */ 21 | var TYPE_LINE_REGEXP = /^(?:# )?([\w-]+\/[\w+.-]+)((?:\s+[\w-]+)*)$/gm 22 | 23 | /** 24 | * URL for the mime.types file in the Apache HTTPD project source. 25 | */ 26 | var URL = 'https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types' 27 | 28 | get(URL, function onResponse (err, body) { 29 | if (err) throw err 30 | 31 | var json = {} 32 | var match = null 33 | 34 | TYPE_LINE_REGEXP.index = 0 35 | 36 | while ((match = TYPE_LINE_REGEXP.exec(body))) { 37 | var mime = match[1] 38 | 39 | if (mime.substr(-8) === '/example') { 40 | continue 41 | } 42 | 43 | // parse the extensions 44 | var extensions = (match[2] || '') 45 | .split(/\s+/) 46 | .filter(Boolean) 47 | var data = json[mime] || (json[mime] = {}) 48 | 49 | // append the extensions 50 | appendExtensions(data, extensions) 51 | } 52 | 53 | writedb('src/apache-types.json', json) 54 | }) 55 | 56 | /** 57 | * Append an extension to an object. 58 | */ 59 | function appendExtension (obj, extension) { 60 | if (!obj.extensions) { 61 | obj.extensions = [] 62 | } 63 | 64 | if (obj.extensions.indexOf(extension) === -1) { 65 | obj.extensions.push(extension) 66 | } 67 | } 68 | 69 | /** 70 | * Append extensions to an object. 71 | */ 72 | function appendExtensions (obj, extensions) { 73 | if (extensions.length === 0) { 74 | return 75 | } 76 | 77 | for (var i = 0; i < extensions.length; i++) { 78 | var extension = extensions[i] 79 | 80 | // add extension to the type entry 81 | appendExtension(obj, extension) 82 | } 83 | } 84 | 85 | /** 86 | * Get HTTPS resource. 87 | */ 88 | function get (url, callback) { 89 | https.get(url, function onResponse (res) { 90 | if (res.statusCode !== 200) { 91 | callback(new Error('got status code ' + res.statusCode + ' from ' + URL)) 92 | } else { 93 | getBody(res, true, callback) 94 | } 95 | }) 96 | } 97 | -------------------------------------------------------------------------------- /scripts/build.js: -------------------------------------------------------------------------------- 1 | 2 | var db = {} 3 | 4 | // initialize with all the IANA types 5 | addData(db, require('../src/iana-types.json'), 'iana') 6 | 7 | // add the mime extensions from Apache 8 | addData(db, require('../src/apache-types.json'), 'apache') 9 | 10 | // add the mime extensions from nginx 11 | addData(db, require('../src/nginx-types.json'), 'nginx') 12 | 13 | // now add all our custom data 14 | addData(db, require('../src/custom-types.json')) 15 | 16 | // finally, all custom suffix defaults 17 | var mime = require('../src/custom-suffix.json') 18 | Object.keys(mime).forEach(function (suffix) { 19 | var s = mime[suffix] 20 | 21 | Object.keys(db).forEach(function (type) { 22 | if (type.substr(0 - suffix.length) !== suffix) { 23 | return 24 | } 25 | 26 | var d = db[type] 27 | if (d.compressible === undefined) d.compressible = s.compressible 28 | }) 29 | }) 30 | 31 | // write db 32 | require('./lib/write-db')('db.json', db) 33 | 34 | /** 35 | * Add mime data to the db, marked as a given source. 36 | */ 37 | function addData (db, mime, source) { 38 | Object.keys(mime).forEach(function (key) { 39 | var data = mime[key] 40 | var type = key.toLowerCase() 41 | var obj = db[type] = db[type] || createTypeEntry(source) 42 | 43 | // add missing data 44 | setValue(obj, 'charset', data.charset) 45 | setValue(obj, 'compressible', data.compressible) 46 | 47 | // append new extensions 48 | appendExtensions(obj, data.extensions) 49 | }) 50 | } 51 | 52 | /** 53 | * Append an extension to an object. 54 | */ 55 | function appendExtension (obj, extension) { 56 | if (!obj.extensions) { 57 | obj.extensions = [] 58 | } 59 | 60 | if (obj.extensions.indexOf(extension) === -1) { 61 | obj.extensions.push(extension) 62 | } 63 | } 64 | 65 | /** 66 | * Append extensions to an object. 67 | */ 68 | function appendExtensions (obj, extensions) { 69 | if (!extensions) { 70 | return 71 | } 72 | 73 | for (var i = 0; i < extensions.length; i++) { 74 | var extension = extensions[i] 75 | 76 | // add extension to the type entry 77 | appendExtension(obj, extension) 78 | } 79 | } 80 | 81 | /** 82 | * Create a new type entry, optionally marked from a source. 83 | */ 84 | function createTypeEntry (source) { 85 | var obj = {} 86 | 87 | if (source !== undefined) { 88 | obj.source = source 89 | } 90 | 91 | return obj 92 | } 93 | 94 | /** 95 | * Set a value on an object, if not already set. 96 | */ 97 | function setValue (obj, prop, value) { 98 | if (value !== undefined && obj[prop] === undefined) { 99 | obj[prop] = value 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mime-db 2 | 3 | [![NPM Version][npm-version-image]][npm-url] 4 | [![NPM Downloads][npm-downloads-image]][npm-url] 5 | [![Node.js Version][node-image]][node-url] 6 | [![Build Status][ci-image]][ci-url] 7 | [![Coverage Status][coveralls-image]][coveralls-url] 8 | 9 | This is a database of all mime types. 10 | It consists of a single, public JSON file and does not include any logic, 11 | allowing it to remain as un-opinionated as possible with an API. 12 | It aggregates data from the following sources: 13 | 14 | - http://www.iana.org/assignments/media-types/media-types.xhtml 15 | - http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types 16 | - http://hg.nginx.org/nginx/raw-file/default/conf/mime.types 17 | 18 | ## Installation 19 | 20 | ```bash 21 | npm install mime-db 22 | ``` 23 | 24 | ### Database Download 25 | 26 | If you're crazy enough to use this in the browser, you can just grab the 27 | JSON file using [jsDelivr](https://www.jsdelivr.com/). It is recommended to 28 | replace `master` with [a release tag](https://github.com/jshttp/mime-db/tags) 29 | as the JSON format may change in the future. 30 | 31 | ``` 32 | https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json 33 | ``` 34 | 35 | ## Usage 36 | 37 | ```js 38 | var db = require('mime-db') 39 | 40 | // grab data on .js files 41 | var data = db['application/javascript'] 42 | ``` 43 | 44 | ## Data Structure 45 | 46 | The JSON file is a map lookup for lowercased mime types. 47 | Each mime type has the following properties: 48 | 49 | - `.source` - where the mime type is defined. 50 | If not set, it's probably a custom media type. 51 | - `apache` - [Apache common media types](http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types) 52 | - `iana` - [IANA-defined media types](http://www.iana.org/assignments/media-types/media-types.xhtml) 53 | - `nginx` - [nginx media types](http://hg.nginx.org/nginx/raw-file/default/conf/mime.types) 54 | - `.extensions[]` - known extensions associated with this mime type. 55 | - `.compressible` - whether a file of this type can be gzipped. 56 | - `.charset` - the default charset associated with this type, if any. 57 | 58 | If unknown, every property could be `undefined`. 59 | 60 | ## Contributing 61 | 62 | To edit the database, only make PRs against `src/custom-types.json` or 63 | `src/custom-suffix.json`. 64 | 65 | The `src/custom-types.json` file is a JSON object with the MIME type as the 66 | keys and the values being an object with the following keys: 67 | 68 | - `compressible` - leave out if you don't know, otherwise `true`/`false` to 69 | indicate whether the data represented by the type is typically compressible. 70 | - `extensions` - include an array of file extensions that are associated with 71 | the type. 72 | - `notes` - human-readable notes about the type, typically what the type is. 73 | - `sources` - include an array of URLs of where the MIME type and the associated 74 | extensions are sourced from. This needs to be a [primary source](https://en.wikipedia.org/wiki/Primary_source); 75 | links to type aggregating sites and Wikipedia are _not acceptable_. 76 | 77 | To update the build, run `npm run build`. 78 | 79 | ### Adding Custom Media Types 80 | 81 | The best way to get new media types included in this library is to register 82 | them with the IANA. The community registration procedure is outlined in 83 | [RFC 6838 section 5](http://tools.ietf.org/html/rfc6838#section-5). Types 84 | registered with the IANA are automatically pulled into this library. 85 | 86 | If that is not possible / feasible, they can be added directly here as a 87 | "custom" type. To do this, it is required to have a primary source that 88 | definitively lists the media type. If an extension is going to be listed as 89 | associateed with this media type, the source must definitively link the 90 | media type and extension as well. 91 | 92 | [ci-image]: https://badgen.net/github/checks/jshttp/mime-db/master?label=ci 93 | [ci-url]: https://github.com/jshttp/mime-db/actions?query=workflow%3Aci 94 | [coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/mime-db/master 95 | [coveralls-url]: https://coveralls.io/r/jshttp/mime-db?branch=master 96 | [node-image]: https://badgen.net/npm/node/mime-db 97 | [node-url]: https://nodejs.org/en/download 98 | [npm-downloads-image]: https://badgen.net/npm/dm/mime-db 99 | [npm-url]: https://npmjs.org/package/mime-db 100 | [npm-version-image]: https://badgen.net/npm/v/mime-db 101 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | - pull_request 5 | - push 6 | 7 | jobs: 8 | test: 9 | runs-on: ubuntu-18.04 10 | strategy: 11 | matrix: 12 | name: 13 | - Node.js 0.6 14 | - Node.js 0.8 15 | - Node.js 0.10 16 | - Node.js 0.12 17 | - io.js 1.x 18 | - io.js 2.x 19 | - io.js 3.x 20 | - Node.js 4.x 21 | - Node.js 5.x 22 | - Node.js 6.x 23 | - Node.js 7.x 24 | - Node.js 8.x 25 | - Node.js 9.x 26 | - Node.js 10.x 27 | - Node.js 11.x 28 | - Node.js 12.x 29 | - Node.js 13.x 30 | - Node.js 14.x 31 | - Node.js 15.x 32 | - Node.js 16.x 33 | 34 | include: 35 | - name: Node.js 0.6 36 | node-version: "0.6" 37 | npm-i: mocha@1.21.5 38 | npm-rm: nyc 39 | 40 | - name: Node.js 0.8 41 | node-version: "0.8" 42 | npm-i: mocha@2.5.3 43 | npm-rm: nyc 44 | 45 | - name: Node.js 0.10 46 | node-version: "0.10" 47 | npm-i: mocha@3.5.3 48 | npm-rm: nyc 49 | 50 | - name: Node.js 0.12 51 | node-version: "0.12" 52 | npm-i: mocha@3.5.3 53 | npm-rm: nyc 54 | 55 | - name: io.js 1.x 56 | node-version: "1.8" 57 | npm-i: mocha@3.5.3 58 | npm-rm: nyc 59 | 60 | - name: io.js 2.x 61 | node-version: "2.5" 62 | npm-i: mocha@3.5.3 63 | npm-rm: nyc 64 | 65 | - name: io.js 3.x 66 | node-version: "3.3" 67 | npm-i: mocha@3.5.3 68 | npm-rm: nyc 69 | 70 | - name: Node.js 4.x 71 | node-version: "4.9" 72 | npm-i: mocha@5.2.0 73 | npm-rm: nyc 74 | 75 | - name: Node.js 5.x 76 | node-version: "5.12" 77 | npm-i: mocha@5.2.0 78 | npm-rm: nyc 79 | 80 | - name: Node.js 6.x 81 | node-version: "6.17" 82 | npm-i: mocha@6.2.2 83 | npm-rm: nyc 84 | 85 | - name: Node.js 7.x 86 | node-version: "7.10" 87 | npm-i: mocha@6.2.2 88 | npm-rm: nyc 89 | 90 | - name: Node.js 8.x 91 | node-version: "8.17" 92 | npm-i: mocha@7.2.0 93 | 94 | - name: Node.js 9.x 95 | node-version: "9.11" 96 | npm-i: mocha@7.2.0 97 | 98 | - name: Node.js 10.x 99 | node-version: "10.24" 100 | npm-i: mocha@8.4.0 101 | 102 | - name: Node.js 11.x 103 | node-version: "11.15" 104 | npm-i: mocha@8.4.0 105 | 106 | - name: Node.js 12.x 107 | node-version: "12.22" 108 | 109 | - name: Node.js 13.x 110 | node-version: "13.14" 111 | 112 | - name: Node.js 14.x 113 | node-version: "14.18" 114 | 115 | - name: Node.js 15.x 116 | node-version: "15.14" 117 | 118 | - name: Node.js 16.x 119 | node-version: "16.10" 120 | 121 | steps: 122 | - uses: actions/checkout@v2 123 | 124 | - name: Install Node.js ${{ matrix.node-version }} 125 | shell: bash -eo pipefail -l {0} 126 | run: | 127 | if [[ "${{ matrix.node-version }}" == 0.6* ]]; then 128 | sudo apt-get install g++-4.8 gcc-4.8 libssl1.0-dev 129 | export CC=/usr/bin/gcc-4.8 130 | export CXX=/usr/bin/g++-4.8 131 | fi 132 | nvm install --default ${{ matrix.node-version }} 133 | if [[ "${{ matrix.node-version }}" == 0.* ]]; then 134 | npm config set strict-ssl false 135 | fi 136 | dirname "$(nvm which ${{ matrix.node-version }})" >> "$GITHUB_PATH" 137 | 138 | - name: Configure npm 139 | run: npm config set shrinkwrap false 140 | 141 | - name: Remove non-test npm modules 142 | run: npm rm --silent --save-dev bluebird co cogent csv-parse gnode raw-body stream-to-array 143 | 144 | - name: Remove npm module(s) ${{ matrix.npm-rm }} 145 | run: npm rm --silent --save-dev ${{ matrix.npm-rm }} 146 | if: matrix.npm-rm != '' 147 | 148 | - name: Install npm module(s) ${{ matrix.npm-i }} 149 | run: npm install --save-dev ${{ matrix.npm-i }} 150 | if: matrix.npm-i != '' 151 | 152 | - name: Setup Node.js version-specific dependencies 153 | shell: bash 154 | run: | 155 | # eslint for linting 156 | # - remove on Node.js < 10 157 | if [[ "$(cut -d. -f1 <<< "${{ matrix.node-version }}")" -lt 10 ]]; then 158 | node -pe 'Object.keys(require("./package").devDependencies).join("\n")' | \ 159 | grep -E '^eslint(-|$)' | \ 160 | sort -r | \ 161 | xargs -n1 npm rm --silent --save-dev 162 | fi 163 | 164 | - name: Install Node.js dependencies 165 | run: npm install 166 | 167 | - name: List environment 168 | id: list_env 169 | shell: bash 170 | run: | 171 | echo "node@$(node -v)" 172 | echo "npm@$(npm -v)" 173 | npm -s ls ||: 174 | (npm -s ls --depth=0 ||:) | awk -F'[ @]' 'NR>1 && $2 { print "::set-output name=" $2 "::" $3 }' 175 | 176 | - name: Run tests 177 | shell: bash 178 | run: | 179 | if npm -ps ls nyc | grep -q nyc; then 180 | npm run test-ci 181 | else 182 | npm test 183 | fi 184 | 185 | - name: Lint code 186 | if: steps.list_env.outputs.eslint != '' 187 | run: npm run lint 188 | 189 | - name: Collect code coverage 190 | uses: coverallsapp/github-action@master 191 | if: steps.list_env.outputs.nyc != '' 192 | with: 193 | github-token: ${{ secrets.GITHUB_TOKEN }} 194 | flag-name: run-${{ matrix.test_number }} 195 | parallel: true 196 | 197 | coverage: 198 | needs: test 199 | runs-on: ubuntu-latest 200 | steps: 201 | - name: Uploade code coverage 202 | uses: coverallsapp/github-action@master 203 | with: 204 | github-token: ${{ secrets.github_token }} 205 | parallel-finished: true 206 | -------------------------------------------------------------------------------- /src/nginx-types.json: -------------------------------------------------------------------------------- 1 | { 2 | "application/atom+xml": { 3 | "extensions": ["atom"] 4 | }, 5 | "application/java-archive": { 6 | "extensions": ["jar","war","ear"] 7 | }, 8 | "application/javascript": { 9 | "extensions": ["js"] 10 | }, 11 | "application/json": { 12 | "extensions": ["json"] 13 | }, 14 | "application/mac-binhex40": { 15 | "extensions": ["hqx"] 16 | }, 17 | "application/msword": { 18 | "extensions": ["doc"] 19 | }, 20 | "application/octet-stream": { 21 | "extensions": ["bin","exe","dll","deb","dmg","iso","img","msi","msp","msm"] 22 | }, 23 | "application/pdf": { 24 | "extensions": ["pdf"] 25 | }, 26 | "application/postscript": { 27 | "extensions": ["ps","eps","ai"] 28 | }, 29 | "application/rss+xml": { 30 | "extensions": ["rss"] 31 | }, 32 | "application/rtf": { 33 | "extensions": ["rtf"] 34 | }, 35 | "application/vnd.apple.mpegurl": { 36 | "extensions": ["m3u8"] 37 | }, 38 | "application/vnd.google-earth.kml+xml": { 39 | "extensions": ["kml"] 40 | }, 41 | "application/vnd.google-earth.kmz": { 42 | "extensions": ["kmz"] 43 | }, 44 | "application/vnd.ms-excel": { 45 | "extensions": ["xls"] 46 | }, 47 | "application/vnd.ms-fontobject": { 48 | "extensions": ["eot"] 49 | }, 50 | "application/vnd.ms-powerpoint": { 51 | "extensions": ["ppt"] 52 | }, 53 | "application/vnd.oasis.opendocument.graphics": { 54 | "extensions": ["odg"] 55 | }, 56 | "application/vnd.oasis.opendocument.presentation": { 57 | "extensions": ["odp"] 58 | }, 59 | "application/vnd.oasis.opendocument.spreadsheet": { 60 | "extensions": ["ods"] 61 | }, 62 | "application/vnd.oasis.opendocument.text": { 63 | "extensions": ["odt"] 64 | }, 65 | "application/vnd.openxmlformats-officedocument.presentationml.presentation": { 66 | "extensions": ["pptx"] 67 | }, 68 | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { 69 | "extensions": ["xlsx"] 70 | }, 71 | "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { 72 | "extensions": ["docx"] 73 | }, 74 | "application/vnd.wap.wmlc": { 75 | "extensions": ["wmlc"] 76 | }, 77 | "application/wasm": { 78 | "extensions": ["wasm"] 79 | }, 80 | "application/x-7z-compressed": { 81 | "extensions": ["7z"] 82 | }, 83 | "application/x-cocoa": { 84 | "extensions": ["cco"] 85 | }, 86 | "application/x-java-archive-diff": { 87 | "extensions": ["jardiff"] 88 | }, 89 | "application/x-java-jnlp-file": { 90 | "extensions": ["jnlp"] 91 | }, 92 | "application/x-makeself": { 93 | "extensions": ["run"] 94 | }, 95 | "application/x-perl": { 96 | "extensions": ["pl","pm"] 97 | }, 98 | "application/x-pilot": { 99 | "extensions": ["prc","pdb"] 100 | }, 101 | "application/x-rar-compressed": { 102 | "extensions": ["rar"] 103 | }, 104 | "application/x-redhat-package-manager": { 105 | "extensions": ["rpm"] 106 | }, 107 | "application/x-sea": { 108 | "extensions": ["sea"] 109 | }, 110 | "application/x-shockwave-flash": { 111 | "extensions": ["swf"] 112 | }, 113 | "application/x-stuffit": { 114 | "extensions": ["sit"] 115 | }, 116 | "application/x-tcl": { 117 | "extensions": ["tcl","tk"] 118 | }, 119 | "application/x-x509-ca-cert": { 120 | "extensions": ["der","pem","crt"] 121 | }, 122 | "application/x-xpinstall": { 123 | "extensions": ["xpi"] 124 | }, 125 | "application/xhtml+xml": { 126 | "extensions": ["xhtml"] 127 | }, 128 | "application/xspf+xml": { 129 | "extensions": ["xspf"] 130 | }, 131 | "application/zip": { 132 | "extensions": ["zip"] 133 | }, 134 | "audio/midi": { 135 | "extensions": ["mid","midi","kar"] 136 | }, 137 | "audio/mpeg": { 138 | "extensions": ["mp3"] 139 | }, 140 | "audio/ogg": { 141 | "extensions": ["ogg"] 142 | }, 143 | "audio/x-m4a": { 144 | "extensions": ["m4a"] 145 | }, 146 | "audio/x-realaudio": { 147 | "extensions": ["ra"] 148 | }, 149 | "font/woff": { 150 | "extensions": ["woff"] 151 | }, 152 | "font/woff2": { 153 | "extensions": ["woff2"] 154 | }, 155 | "image/gif": { 156 | "extensions": ["gif"] 157 | }, 158 | "image/jpeg": { 159 | "extensions": ["jpeg","jpg"] 160 | }, 161 | "image/png": { 162 | "extensions": ["png"] 163 | }, 164 | "image/svg+xml": { 165 | "extensions": ["svg","svgz"] 166 | }, 167 | "image/tiff": { 168 | "extensions": ["tif","tiff"] 169 | }, 170 | "image/vnd.wap.wbmp": { 171 | "extensions": ["wbmp"] 172 | }, 173 | "image/webp": { 174 | "extensions": ["webp"] 175 | }, 176 | "image/x-icon": { 177 | "extensions": ["ico"] 178 | }, 179 | "image/x-jng": { 180 | "extensions": ["jng"] 181 | }, 182 | "image/x-ms-bmp": { 183 | "extensions": ["bmp"] 184 | }, 185 | "text/css": { 186 | "extensions": ["css"] 187 | }, 188 | "text/html": { 189 | "extensions": ["html","htm","shtml"] 190 | }, 191 | "text/mathml": { 192 | "extensions": ["mml"] 193 | }, 194 | "text/plain": { 195 | "extensions": ["txt"] 196 | }, 197 | "text/vnd.sun.j2me.app-descriptor": { 198 | "extensions": ["jad"] 199 | }, 200 | "text/vnd.wap.wml": { 201 | "extensions": ["wml"] 202 | }, 203 | "text/x-component": { 204 | "extensions": ["htc"] 205 | }, 206 | "text/xml": { 207 | "extensions": ["xml"] 208 | }, 209 | "video/3gpp": { 210 | "extensions": ["3gpp","3gp"] 211 | }, 212 | "video/mp2t": { 213 | "extensions": ["ts"] 214 | }, 215 | "video/mp4": { 216 | "extensions": ["mp4"] 217 | }, 218 | "video/mpeg": { 219 | "extensions": ["mpeg","mpg"] 220 | }, 221 | "video/quicktime": { 222 | "extensions": ["mov"] 223 | }, 224 | "video/webm": { 225 | "extensions": ["webm"] 226 | }, 227 | "video/x-flv": { 228 | "extensions": ["flv"] 229 | }, 230 | "video/x-m4v": { 231 | "extensions": ["m4v"] 232 | }, 233 | "video/x-mng": { 234 | "extensions": ["mng"] 235 | }, 236 | "video/x-ms-asf": { 237 | "extensions": ["asx","asf"] 238 | }, 239 | "video/x-ms-wmv": { 240 | "extensions": ["wmv"] 241 | }, 242 | "video/x-msvideo": { 243 | "extensions": ["avi"] 244 | } 245 | } 246 | -------------------------------------------------------------------------------- /scripts/fetch-iana.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Convert the IANA definitions from CSV to local. 4 | */ 5 | 6 | global.Promise = global.Promise || loadBluebird() 7 | 8 | var co = require('co') 9 | var getRawBody = require('raw-body') 10 | var cogent = require('cogent') 11 | var parser = require('csv-parse') 12 | var toArray = require('stream-to-array') 13 | var writedb = require('./lib/write-db') 14 | 15 | var extensionsQuotedRegExp = /^\s*(?:\d\.\s+)?File extension(?:\(s\)|s|)\s?:(?:[^'"\r\n]+)(?:"\.?([0-9a-z_-]+)"|'\.?([0-9a-z_-]+)')/im 16 | var intendedUsageRegExp = /^\s*(?:(?:\d{1,2}\.|o)\s+)?Intended\s+Usage\s*:\s*(\S+)/im 17 | var leadingSpacesRegExp = /^\s+/ 18 | var listColonRegExp = /:(?:\s|$)/m 19 | var nameWithNotesRegExp = /^(\S+)(?: - (.*)$| \((.*)\)$|)/ 20 | var mimeTypeLineRegExp = /^(?:\s*|[^:\s-]*\s+)(?:MIME type(?: name)?|MIME media type(?: name)?|Media type(?: name)?|Type name)\s?:\s+(.*)$/im 21 | var mimeSubtypeLineRegExp = /^[^:\s-]*\s*(?:MIME |Media )?subtype(?: name)?\s?:\s+(?:[a-z]+ Tree\s+(?:- ?)?|(?:[a-z]+ )+- )?([^([\r\n]*).*$/im 22 | var mimeSubtypesLineRegExp = /^[^:\s-]*\s*(?:MIME |Media )?subtype(?: names)?\s?:\s+(?:[a-z]+ Tree\s+(?:- ?)?)?(.*)$/im 23 | var rfcReferenceRegExp = /\[(RFC[0-9]{4})]/gi 24 | var slurpModeRegExp = /^\s{0,3}(?:[1-4]\. )?[a-z]{4,}(?: [a-z]{4,})+(?:s|\(s\))?\s*:\s*/i 25 | var symbolRegExp = /[._-]/g 26 | var trimQuotesRegExp = /^"|"$/gm 27 | var urlReferenceRegExp = /\[(https?:\/\/[^\]]+)]/gi 28 | 29 | var CHARSET_DEFAULT_REGEXP = /(?:\bcharset\b[^.]*(?:\.\s+default\s+(?:value\s+)?is|\bdefault[^.]*(?:of|is)|\bmust\s+have\s+the\s+value|\bvalue\s+must\s+be)\s+|\bcharset\s*\(?defaults\s+to\s+|\bdefault\b[^.]*?\bchar(?:set|act[eo]r\s+set)\b[^.]*?(?:of|is)\s+|\bcharset\s+(?:must|is)\s+always\s+(?:be\s+)?)["']?([a-z0-9]+-[a-z0-9-]+)/im 30 | var EXTENSIONS_REGEXP = /(?:^\s*(?:\d\.\s+)?|\s+[23]\.\s+)[Ff]ile [Ee]xtension(?:\(s\)|s|)\s?:\s+(?:\*\.|\.|)([0-9a-z_-]+|[0-9A-Z_-]+)(?:\s*\(|\s*[34]\.\s+|\s+[A-Z]|$)/m 31 | var MIME_TYPE_HAS_CHARSET_PARAMETER_REGEXP = /parameters\s*:[^.]*\bcharset\b/im 32 | 33 | co(function * () { 34 | var gens = yield [ 35 | get('application', { extensions: /(?:\/(?:ecmascript|express|gzip|(?:ld|manifest)\+json|n-quads|n-triples|trig|vnd\.(?:apple\..+|dbf|mapbox-vector-tile|rar))|\+xml)$/ }), 36 | get('audio', { extensions: /\/mobile-xmf$/ }), 37 | get('font', { extensions: true }), 38 | get('image', { extensions: true }), 39 | get('message', { extensions: true }), 40 | get('model', { extensions: true }), 41 | get('multipart'), 42 | get('text', { extensions: /\/(?:spdx|turtle|vtt)$/ }), 43 | get('video', { extensions: /\/iso\.segment$/ }) 44 | ] 45 | 46 | // flatten generators 47 | gens = gens.reduce(concat, []) 48 | 49 | // get results in groups 50 | var results = [] 51 | while (gens.length !== 0) { 52 | results.push(yield gens.splice(0, 10)) 53 | } 54 | 55 | // flatten results 56 | results = results.reduce(concat, []) 57 | 58 | // gather extension frequency 59 | var exts = Object.create(null) 60 | results.forEach(function (result) { 61 | (result.extensions || []).forEach(function (ext) { 62 | exts[ext] = (exts[ext] || 0) + 1 63 | }) 64 | }) 65 | 66 | // construct json map 67 | var json = Object.create(null) 68 | results.forEach(function (result) { 69 | var mime = result.mime 70 | 71 | if (mime in json) { 72 | throw new Error('duplicate entry for ' + mime) 73 | } 74 | 75 | json[mime] = { 76 | charset: result.charset, 77 | notes: result.notes, 78 | sources: result.sources 79 | } 80 | 81 | // keep unambigious extensions 82 | if (result.extensions && exts[result.extensions[0]] === 1) { 83 | json[mime].extensions = result.extensions 84 | } 85 | }) 86 | 87 | writedb('src/iana-types.json', json) 88 | }).then() 89 | 90 | function addTemplateData (data, options) { 91 | var opts = options || {} 92 | 93 | if (!data.template) { 94 | return data 95 | } 96 | 97 | return function * get () { 98 | var res = yield * cogent('http://www.iana.org/assignments/media-types/' + data.template, { retries: 3 }) 99 | var ref = data.type + '/' + data.name 100 | var rfc = getRfcReferences(data.reference)[0] 101 | 102 | if (res.statusCode === 404 && data.template !== ref) { 103 | console.log('template ' + data.template + ' not found, retry as ' + ref) 104 | data.template = ref 105 | res = yield * cogent('http://www.iana.org/assignments/media-types/' + ref, { retries: 3 }) 106 | 107 | // replace the guessed mime 108 | if (res.statusCode === 200) { 109 | data.mime = data.template 110 | } 111 | } 112 | 113 | if (res.statusCode === 404 && rfc !== undefined) { 114 | console.log('template ' + data.template + ' not found, fetch ' + rfc) 115 | res = yield * cogent('http://tools.ietf.org/rfc/' + rfc.toLowerCase() + '.txt') 116 | } 117 | 118 | if (res.statusCode === 404) { 119 | console.log('template ' + data.template + ' not found') 120 | return data 121 | } 122 | 123 | if (res.statusCode !== 200) { 124 | throw new Error('got status code ' + res.statusCode + ' from template ' + data.template) 125 | } 126 | 127 | var body = yield getTemplateBody(res) 128 | var href = res.urls[0].href 129 | var mime = extractTemplateMime(body) 130 | 131 | // add the template as a source 132 | addSource(data, href) 133 | 134 | if (mimeEql(mime, data.mime)) { 135 | // use extracted mime 136 | data.mime = mime 137 | 138 | // use extracted charset 139 | data.charset = extractTemplateCharset(body) 140 | 141 | // use extracted extensions 142 | var useExt = opts.extensions && 143 | (opts.extensions === true || opts.extensions.test(data.mime)) 144 | if (useExt && extractIntendedUsage(body) === 'common') { 145 | data.extensions = extractTemplateExtensions(body) 146 | } 147 | } 148 | 149 | return data 150 | } 151 | } 152 | 153 | function extractIntendedUsage (body) { 154 | var match = intendedUsageRegExp.exec(body) 155 | 156 | return match 157 | ? match[1].toLocaleLowerCase() 158 | : undefined 159 | } 160 | 161 | function extractTemplateMime (body) { 162 | var type = mimeTypeLineRegExp.exec(body) 163 | var subtype = mimeSubtypeLineRegExp.exec(body) 164 | 165 | if (!subtype && (subtype = mimeSubtypesLineRegExp.exec(body)) && !/^[A-Za-z0-9]+$/.test(subtype[1])) { 166 | return 167 | } 168 | 169 | if (!type || !subtype) { 170 | return 171 | } 172 | 173 | type = type[1].trim().replace(trimQuotesRegExp, '') 174 | subtype = subtype[1].trim().replace(trimQuotesRegExp, '') 175 | 176 | if (!subtype) { 177 | return 178 | } 179 | 180 | if (subtype.substr(0, type.length + 1) === type + '/') { 181 | // strip type from subtype 182 | subtype = subtype.substr(type.length + 1) 183 | } 184 | 185 | return (type + '/' + subtype).toLowerCase() 186 | } 187 | 188 | function extractTemplateCharset (body) { 189 | if (!MIME_TYPE_HAS_CHARSET_PARAMETER_REGEXP.test(body)) { 190 | return undefined 191 | } 192 | 193 | var match = CHARSET_DEFAULT_REGEXP.exec(body) 194 | 195 | return match 196 | ? match[1].toUpperCase() 197 | : undefined 198 | } 199 | 200 | function extractTemplateExtensions (body) { 201 | var match = EXTENSIONS_REGEXP.exec(body) || extensionsQuotedRegExp.exec(body) 202 | 203 | if (!match) { 204 | return 205 | } 206 | 207 | var ext = (match[1] || match[2]).toLowerCase() 208 | 209 | if (ext !== 'none' && ext !== 'undefined') { 210 | return [ext] 211 | } 212 | } 213 | 214 | function * get (type, options) { 215 | var res = yield * cogent('http://www.iana.org/assignments/media-types/' + encodeURIComponent(type) + '.csv', { retries: 3 }) 216 | 217 | if (res.statusCode !== 200) { 218 | throw new Error('got status code ' + res.statusCode + ' from ' + type) 219 | } 220 | 221 | var mimes = yield toArray(res.pipe(parser())) 222 | var headers = mimes.shift().map(normalizeHeader) 223 | var reduceRows = generateRowMapper(headers) 224 | var templates = Object.create(null) 225 | 226 | return mimes.map(function (row) { 227 | var data = row.reduce(reduceRows, { type: type }) 228 | 229 | if (data.template) { 230 | if (data.template === type + '/example') { 231 | return 232 | } 233 | 234 | if (templates[data.template]) { 235 | // duplicate entry 236 | return 237 | } 238 | 239 | templates[data.template] = true 240 | } 241 | 242 | // guess mime type 243 | data.mime = (data.template || (type + '/' + data.name)).toLowerCase() 244 | 245 | // extract notes from name 246 | var nameMatch = nameWithNotesRegExp.exec(data.name) 247 | data.name = nameMatch[1] 248 | data.notes = nameMatch[2] || nameMatch[3] 249 | 250 | // add reference sources 251 | parseReferences(data.reference).forEach(function (url) { 252 | addSource(data, url) 253 | }) 254 | 255 | return addTemplateData(data, options) 256 | }) 257 | } 258 | 259 | function * getTemplateBody (res) { 260 | var body = yield getRawBody(res, { encoding: 'ascii' }) 261 | var lines = body.split(/\r?\n/) 262 | var slurp = false 263 | 264 | return lines.reduce(function (lines, line) { 265 | line = line.replace(/=20$/, ' ') 266 | 267 | var prev = (lines[lines.length - 1] || '') 268 | var match = leadingSpacesRegExp.exec(line) 269 | 270 | if (slurp && line.trim().length === 0 && !/:\s*$/.test(prev)) { 271 | slurp = false 272 | return lines 273 | } 274 | 275 | if (slurpModeRegExp.test(line)) { 276 | slurp = false 277 | lines.push(line) 278 | } else if (slurp) { 279 | lines[lines.length - 1] = appendToLine(prev, line) 280 | } else if (match && match[0].length >= 3 && match[0].trim() !== 0 && prev.trim().length !== 0 && !listColonRegExp.test(line)) { 281 | lines[lines.length - 1] = appendToLine(prev, line) 282 | } else { 283 | lines.push(line) 284 | } 285 | 286 | // turn on slurp mode 287 | slurp = slurp || slurpModeRegExp.test(line) 288 | 289 | return lines 290 | }, []).join('\n') 291 | } 292 | 293 | function addSource (data, url) { 294 | var sources = data.sources || (data.sources = []) 295 | 296 | if (sources.indexOf(url) === -1) { 297 | sources.push(url) 298 | } 299 | } 300 | 301 | function appendToLine (line, str) { 302 | var trimmed = line.trimRight() 303 | var append = trimmed.substr(-1) === '-' 304 | ? str.trimLeft() 305 | : ' ' + str.trimLeft() 306 | return trimmed + append 307 | } 308 | 309 | function concat (a, b) { 310 | return a.concat(b.filter(Boolean)) 311 | } 312 | 313 | function generateRowMapper (headers) { 314 | return function reduceRows (obj, val, index) { 315 | if (val !== '') { 316 | obj[headers[index]] = val 317 | } 318 | 319 | return obj 320 | } 321 | } 322 | 323 | function getRfcReferences (reference) { 324 | var match = null 325 | var rfcs = [] 326 | 327 | rfcReferenceRegExp.index = 0 328 | 329 | while ((match = rfcReferenceRegExp.exec(reference))) { 330 | rfcs.push(match[1].toUpperCase()) 331 | } 332 | 333 | return rfcs 334 | } 335 | 336 | function getUrlReferences (reference) { 337 | var match = null 338 | var urls = [] 339 | 340 | urlReferenceRegExp.index = 0 341 | 342 | while ((match = urlReferenceRegExp.exec(reference))) { 343 | urls.push(match[1]) 344 | } 345 | 346 | return urls 347 | } 348 | 349 | function loadBluebird () { 350 | var Promise = require('bluebird') 351 | 352 | // Silence all warnings 353 | Promise.config({ 354 | warnings: false 355 | }) 356 | 357 | return Promise 358 | } 359 | 360 | function mimeEql (mime1, mime2) { 361 | return mime1 && mime2 && 362 | mime1.replace(symbolRegExp, '-') === mime2.replace(symbolRegExp, '-') 363 | } 364 | 365 | function normalizeHeader (val) { 366 | return val.substr(0, 1).toLowerCase() + val.substr(1).replace(/ (.)/, function (s, c) { 367 | return c.toUpperCase() 368 | }) 369 | } 370 | 371 | function parseReferences (reference) { 372 | return getUrlReferences(reference).concat(getRfcReferences(reference).map(function (rfc) { 373 | return 'http://tools.ietf.org/rfc/' + rfc.toLowerCase() + '.txt' 374 | })) 375 | } 376 | -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | unreleased 2 | ========== 3 | 4 | * Add new upstream MIME types 5 | 6 | 1.50.0 / 2021-09-15 7 | =================== 8 | 9 | * Add deprecated iWorks mime types and extensions 10 | * Add new upstream MIME types 11 | 12 | 1.49.0 / 2021-07-26 13 | =================== 14 | 15 | * Add extension `.trig` to `application/trig` 16 | * Add new upstream MIME types 17 | 18 | 1.48.0 / 2021-05-30 19 | =================== 20 | 21 | * Add extension `.mvt` to `application/vnd.mapbox-vector-tile` 22 | * Add new upstream MIME types 23 | * Mark `text/yaml` as compressible 24 | 25 | 1.47.0 / 2021-04-01 26 | =================== 27 | 28 | * Add new upstream MIME types 29 | * Remove ambigious extensions from IANA for `application/*+xml` types 30 | * Update primary extension to `.es` for `application/ecmascript` 31 | 32 | 1.46.0 / 2021-02-13 33 | =================== 34 | 35 | * Add extension `.amr` to `audio/amr` 36 | * Add extension `.m4s` to `video/iso.segment` 37 | * Add extension `.opus` to `audio/ogg` 38 | * Add new upstream MIME types 39 | 40 | 1.45.0 / 2020-09-22 41 | =================== 42 | 43 | * Add `application/ubjson` with extension `.ubj` 44 | * Add `image/avif` with extension `.avif` 45 | * Add `image/ktx2` with extension `.ktx2` 46 | * Add extension `.dbf` to `application/vnd.dbf` 47 | * Add extension `.rar` to `application/vnd.rar` 48 | * Add extension `.td` to `application/urc-targetdesc+xml` 49 | * Add new upstream MIME types 50 | * Fix extension of `application/vnd.apple.keynote` to be `.key` 51 | 52 | 1.44.0 / 2020-04-22 53 | =================== 54 | 55 | * Add charsets from IANA 56 | * Add extension `.cjs` to `application/node` 57 | * Add new upstream MIME types 58 | 59 | 1.43.0 / 2020-01-05 60 | =================== 61 | 62 | * Add `application/x-keepass2` with extension `.kdbx` 63 | * Add extension `.mxmf` to `audio/mobile-xmf` 64 | * Add extensions from IANA for `application/*+xml` types 65 | * Add new upstream MIME types 66 | 67 | 1.42.0 / 2019-09-25 68 | =================== 69 | 70 | * Add `image/vnd.ms-dds` with extension `.dds` 71 | * Add new upstream MIME types 72 | * Remove compressible from `multipart/mixed` 73 | 74 | 1.41.0 / 2019-08-30 75 | =================== 76 | 77 | * Add new upstream MIME types 78 | * Add `application/toml` with extension `.toml` 79 | * Mark `font/ttf` as compressible 80 | 81 | 1.40.0 / 2019-04-20 82 | =================== 83 | 84 | * Add extensions from IANA for `model/*` types 85 | * Add `text/mdx` with extension `.mdx` 86 | 87 | 1.39.0 / 2019-04-04 88 | =================== 89 | 90 | * Add extensions `.siv` and `.sieve` to `application/sieve` 91 | * Add new upstream MIME types 92 | 93 | 1.38.0 / 2019-02-04 94 | =================== 95 | 96 | * Add extension `.nq` to `application/n-quads` 97 | * Add extension `.nt` to `application/n-triples` 98 | * Add new upstream MIME types 99 | * Mark `text/less` as compressible 100 | 101 | 1.37.0 / 2018-10-19 102 | =================== 103 | 104 | * Add extensions to HEIC image types 105 | * Add new upstream MIME types 106 | 107 | 1.36.0 / 2018-08-20 108 | =================== 109 | 110 | * Add Apple file extensions from IANA 111 | * Add extensions from IANA for `image/*` types 112 | * Add new upstream MIME types 113 | 114 | 1.35.0 / 2018-07-15 115 | =================== 116 | 117 | * Add extension `.owl` to `application/rdf+xml` 118 | * Add new upstream MIME types 119 | - Removes extension `.woff` from `application/font-woff` 120 | 121 | 1.34.0 / 2018-06-03 122 | =================== 123 | 124 | * Add extension `.csl` to `application/vnd.citationstyles.style+xml` 125 | * Add extension `.es` to `application/ecmascript` 126 | * Add new upstream MIME types 127 | * Add `UTF-8` as default charset for `text/turtle` 128 | * Mark all XML-derived types as compressible 129 | 130 | 1.33.0 / 2018-02-15 131 | =================== 132 | 133 | * Add extensions from IANA for `message/*` types 134 | * Add new upstream MIME types 135 | * Fix some incorrect OOXML types 136 | * Remove `application/font-woff2` 137 | 138 | 1.32.0 / 2017-11-29 139 | =================== 140 | 141 | * Add new upstream MIME types 142 | * Update `text/hjson` to registered `application/hjson` 143 | * Add `text/shex` with extension `.shex` 144 | 145 | 1.31.0 / 2017-10-25 146 | =================== 147 | 148 | * Add `application/raml+yaml` with extension `.raml` 149 | * Add `application/wasm` with extension `.wasm` 150 | * Add new `font` type from IANA 151 | * Add new upstream font extensions 152 | * Add new upstream MIME types 153 | * Add extensions for JPEG-2000 images 154 | 155 | 1.30.0 / 2017-08-27 156 | =================== 157 | 158 | * Add `application/vnd.ms-outlook` 159 | * Add `application/x-arj` 160 | * Add extension `.mjs` to `application/javascript` 161 | * Add glTF types and extensions 162 | * Add new upstream MIME types 163 | * Add `text/x-org` 164 | * Add VirtualBox MIME types 165 | * Fix `source` records for `video/*` types that are IANA 166 | * Update `font/opentype` to registered `font/otf` 167 | 168 | 1.29.0 / 2017-07-10 169 | =================== 170 | 171 | * Add `application/fido.trusted-apps+json` 172 | * Add extension `.wadl` to `application/vnd.sun.wadl+xml` 173 | * Add new upstream MIME types 174 | * Add `UTF-8` as default charset for `text/css` 175 | 176 | 1.28.0 / 2017-05-14 177 | =================== 178 | 179 | * Add new upstream MIME types 180 | * Add extension `.gz` to `application/gzip` 181 | * Update extensions `.md` and `.markdown` to be `text/markdown` 182 | 183 | 1.27.0 / 2017-03-16 184 | =================== 185 | 186 | * Add new upstream MIME types 187 | * Add `image/apng` with extension `.apng` 188 | 189 | 1.26.0 / 2017-01-14 190 | =================== 191 | 192 | * Add new upstream MIME types 193 | * Add extension `.geojson` to `application/geo+json` 194 | 195 | 1.25.0 / 2016-11-11 196 | =================== 197 | 198 | * Add new upstream MIME types 199 | 200 | 1.24.0 / 2016-09-18 201 | =================== 202 | 203 | * Add `audio/mp3` 204 | * Add new upstream MIME types 205 | 206 | 1.23.0 / 2016-05-01 207 | =================== 208 | 209 | * Add new upstream MIME types 210 | * Add extension `.3gpp` to `audio/3gpp` 211 | 212 | 1.22.0 / 2016-02-15 213 | =================== 214 | 215 | * Add `text/slim` 216 | * Add extension `.rng` to `application/xml` 217 | * Add new upstream MIME types 218 | * Fix extension of `application/dash+xml` to be `.mpd` 219 | * Update primary extension to `.m4a` for `audio/mp4` 220 | 221 | 1.21.0 / 2016-01-06 222 | =================== 223 | 224 | * Add Google document types 225 | * Add new upstream MIME types 226 | 227 | 1.20.0 / 2015-11-10 228 | =================== 229 | 230 | * Add `text/x-suse-ymp` 231 | * Add new upstream MIME types 232 | 233 | 1.19.0 / 2015-09-17 234 | =================== 235 | 236 | * Add `application/vnd.apple.pkpass` 237 | * Add new upstream MIME types 238 | 239 | 1.18.0 / 2015-09-03 240 | =================== 241 | 242 | * Add new upstream MIME types 243 | 244 | 1.17.0 / 2015-08-13 245 | =================== 246 | 247 | * Add `application/x-msdos-program` 248 | * Add `audio/g711-0` 249 | * Add `image/vnd.mozilla.apng` 250 | * Add extension `.exe` to `application/x-msdos-program` 251 | 252 | 1.16.0 / 2015-07-29 253 | =================== 254 | 255 | * Add `application/vnd.uri-map` 256 | 257 | 1.15.0 / 2015-07-13 258 | =================== 259 | 260 | * Add `application/x-httpd-php` 261 | 262 | 1.14.0 / 2015-06-25 263 | =================== 264 | 265 | * Add `application/scim+json` 266 | * Add `application/vnd.3gpp.ussd+xml` 267 | * Add `application/vnd.biopax.rdf+xml` 268 | * Add `text/x-processing` 269 | 270 | 1.13.0 / 2015-06-07 271 | =================== 272 | 273 | * Add nginx as a source 274 | * Add `application/x-cocoa` 275 | * Add `application/x-java-archive-diff` 276 | * Add `application/x-makeself` 277 | * Add `application/x-perl` 278 | * Add `application/x-pilot` 279 | * Add `application/x-redhat-package-manager` 280 | * Add `application/x-sea` 281 | * Add `audio/x-m4a` 282 | * Add `audio/x-realaudio` 283 | * Add `image/x-jng` 284 | * Add `text/mathml` 285 | 286 | 1.12.0 / 2015-06-05 287 | =================== 288 | 289 | * Add `application/bdoc` 290 | * Add `application/vnd.hyperdrive+json` 291 | * Add `application/x-bdoc` 292 | * Add extension `.rtf` to `text/rtf` 293 | 294 | 1.11.0 / 2015-05-31 295 | =================== 296 | 297 | * Add `audio/wav` 298 | * Add `audio/wave` 299 | * Add extension `.litcoffee` to `text/coffeescript` 300 | * Add extension `.sfd-hdstx` to `application/vnd.hydrostatix.sof-data` 301 | * Add extension `.n-gage` to `application/vnd.nokia.n-gage.symbian.install` 302 | 303 | 1.10.0 / 2015-05-19 304 | =================== 305 | 306 | * Add `application/vnd.balsamiq.bmpr` 307 | * Add `application/vnd.microsoft.portable-executable` 308 | * Add `application/x-ns-proxy-autoconfig` 309 | 310 | 1.9.1 / 2015-04-19 311 | ================== 312 | 313 | * Remove `.json` extension from `application/manifest+json` 314 | - This is causing bugs downstream 315 | 316 | 1.9.0 / 2015-04-19 317 | ================== 318 | 319 | * Add `application/manifest+json` 320 | * Add `application/vnd.micro+json` 321 | * Add `image/vnd.zbrush.pcx` 322 | * Add `image/x-ms-bmp` 323 | 324 | 1.8.0 / 2015-03-13 325 | ================== 326 | 327 | * Add `application/vnd.citationstyles.style+xml` 328 | * Add `application/vnd.fastcopy-disk-image` 329 | * Add `application/vnd.gov.sk.xmldatacontainer+xml` 330 | * Add extension `.jsonld` to `application/ld+json` 331 | 332 | 1.7.0 / 2015-02-08 333 | ================== 334 | 335 | * Add `application/vnd.gerber` 336 | * Add `application/vnd.msa-disk-image` 337 | 338 | 1.6.1 / 2015-02-05 339 | ================== 340 | 341 | * Community extensions ownership transferred from `node-mime` 342 | 343 | 1.6.0 / 2015-01-29 344 | ================== 345 | 346 | * Add `application/jose` 347 | * Add `application/jose+json` 348 | * Add `application/json-seq` 349 | * Add `application/jwk+json` 350 | * Add `application/jwk-set+json` 351 | * Add `application/jwt` 352 | * Add `application/rdap+json` 353 | * Add `application/vnd.gov.sk.e-form+xml` 354 | * Add `application/vnd.ims.imsccv1p3` 355 | 356 | 1.5.0 / 2014-12-30 357 | ================== 358 | 359 | * Add `application/vnd.oracle.resource+json` 360 | * Fix various invalid MIME type entries 361 | - `application/mbox+xml` 362 | - `application/oscp-response` 363 | - `application/vwg-multiplexed` 364 | - `audio/g721` 365 | 366 | 1.4.0 / 2014-12-21 367 | ================== 368 | 369 | * Add `application/vnd.ims.imsccv1p2` 370 | * Fix various invalid MIME type entries 371 | - `application/vnd-acucobol` 372 | - `application/vnd-curl` 373 | - `application/vnd-dart` 374 | - `application/vnd-dxr` 375 | - `application/vnd-fdf` 376 | - `application/vnd-mif` 377 | - `application/vnd-sema` 378 | - `application/vnd-wap-wmlc` 379 | - `application/vnd.adobe.flash-movie` 380 | - `application/vnd.dece-zip` 381 | - `application/vnd.dvb_service` 382 | - `application/vnd.micrografx-igx` 383 | - `application/vnd.sealed-doc` 384 | - `application/vnd.sealed-eml` 385 | - `application/vnd.sealed-mht` 386 | - `application/vnd.sealed-ppt` 387 | - `application/vnd.sealed-tiff` 388 | - `application/vnd.sealed-xls` 389 | - `application/vnd.sealedmedia.softseal-html` 390 | - `application/vnd.sealedmedia.softseal-pdf` 391 | - `application/vnd.wap-slc` 392 | - `application/vnd.wap-wbxml` 393 | - `audio/vnd.sealedmedia.softseal-mpeg` 394 | - `image/vnd-djvu` 395 | - `image/vnd-svf` 396 | - `image/vnd-wap-wbmp` 397 | - `image/vnd.sealed-png` 398 | - `image/vnd.sealedmedia.softseal-gif` 399 | - `image/vnd.sealedmedia.softseal-jpg` 400 | - `model/vnd-dwf` 401 | - `model/vnd.parasolid.transmit-binary` 402 | - `model/vnd.parasolid.transmit-text` 403 | - `text/vnd-a` 404 | - `text/vnd-curl` 405 | - `text/vnd.wap-wml` 406 | * Remove example template MIME types 407 | - `application/example` 408 | - `audio/example` 409 | - `image/example` 410 | - `message/example` 411 | - `model/example` 412 | - `multipart/example` 413 | - `text/example` 414 | - `video/example` 415 | 416 | 1.3.1 / 2014-12-16 417 | ================== 418 | 419 | * Fix missing extensions 420 | - `application/json5` 421 | - `text/hjson` 422 | 423 | 1.3.0 / 2014-12-07 424 | ================== 425 | 426 | * Add `application/a2l` 427 | * Add `application/aml` 428 | * Add `application/atfx` 429 | * Add `application/atxml` 430 | * Add `application/cdfx+xml` 431 | * Add `application/dii` 432 | * Add `application/json5` 433 | * Add `application/lxf` 434 | * Add `application/mf4` 435 | * Add `application/vnd.apache.thrift.compact` 436 | * Add `application/vnd.apache.thrift.json` 437 | * Add `application/vnd.coffeescript` 438 | * Add `application/vnd.enphase.envoy` 439 | * Add `application/vnd.ims.imsccv1p1` 440 | * Add `text/csv-schema` 441 | * Add `text/hjson` 442 | * Add `text/markdown` 443 | * Add `text/yaml` 444 | 445 | 1.2.0 / 2014-11-09 446 | ================== 447 | 448 | * Add `application/cea` 449 | * Add `application/dit` 450 | * Add `application/vnd.gov.sk.e-form+zip` 451 | * Add `application/vnd.tmd.mediaflex.api+xml` 452 | * Type `application/epub+zip` is now IANA-registered 453 | 454 | 1.1.2 / 2014-10-23 455 | ================== 456 | 457 | * Rebuild database for `application/x-www-form-urlencoded` change 458 | 459 | 1.1.1 / 2014-10-20 460 | ================== 461 | 462 | * Mark `application/x-www-form-urlencoded` as compressible. 463 | 464 | 1.1.0 / 2014-09-28 465 | ================== 466 | 467 | * Add `application/font-woff2` 468 | 469 | 1.0.3 / 2014-09-25 470 | ================== 471 | 472 | * Fix engine requirement in package 473 | 474 | 1.0.2 / 2014-09-25 475 | ================== 476 | 477 | * Add `application/coap-group+json` 478 | * Add `application/dcd` 479 | * Add `application/vnd.apache.thrift.binary` 480 | * Add `image/vnd.tencent.tap` 481 | * Mark all JSON-derived types as compressible 482 | * Update `text/vtt` data 483 | 484 | 1.0.1 / 2014-08-30 485 | ================== 486 | 487 | * Fix extension ordering 488 | 489 | 1.0.0 / 2014-08-30 490 | ================== 491 | 492 | * Add `application/atf` 493 | * Add `application/merge-patch+json` 494 | * Add `multipart/x-mixed-replace` 495 | * Add `source: 'apache'` metadata 496 | * Add `source: 'iana'` metadata 497 | * Remove badly-assumed charset data 498 | -------------------------------------------------------------------------------- /src/custom-types.json: -------------------------------------------------------------------------------- 1 | { 2 | "application/bdoc": { 3 | "compressible": false, 4 | "extensions": ["bdoc"], 5 | "notes": "Digital signature container", 6 | "sources": [ 7 | "http://wpki.eu/wiki/upload/4/4f/BDoc-1.02.pdf", 8 | "http://www.id.ee/public/bdoc-spec21.pdf" 9 | ] 10 | }, 11 | "application/dart": { 12 | "compressible": true 13 | }, 14 | "application/ecmascript": { 15 | "compressible": true, 16 | "sources": [ 17 | "http://tools.ietf.org/rfc/rfc4329.txt", 18 | "http://www.iana.org/assignments/media-types/application/ecmascript" 19 | ] 20 | }, 21 | "application/edi-x12": { 22 | "compressible": false 23 | }, 24 | "application/edifact": { 25 | "compressible": false 26 | }, 27 | "application/fido.trusted-apps+json": { 28 | "sources": [ 29 | "https://fidoalliance.org/specs/fido-u2f-v1.0-ps-20141009/fido-appid-and-facets-ps-20141009.html" 30 | ] 31 | }, 32 | "application/font-woff": { 33 | "compressible": false, 34 | "notes": "File type is already a binary compressed format.", 35 | "sources": [ 36 | "https://github.com/h5bp/server-configs-apache/issues/42" 37 | ] 38 | }, 39 | "application/geo+json": { 40 | "extensions": ["geojson"], 41 | "sources": [ 42 | "http://tools.ietf.org/rfc/rfc7946.txt", 43 | "http://www.iana.org/assignments/media-types/application/geo+json" 44 | ] 45 | }, 46 | "application/gzip": { 47 | "compressible": false 48 | }, 49 | "application/hjson": { 50 | "extensions": ["hjson"], 51 | "sources": [ 52 | "https://hjson.org/rfc.html#rfc.section.1.3" 53 | ] 54 | }, 55 | "application/java-archive": { 56 | "compressible": false 57 | }, 58 | "application/java-serialized-object": { 59 | "compressible": false 60 | }, 61 | "application/java-vm": { 62 | "compressible": false 63 | }, 64 | "application/javascript": { 65 | "charset": "UTF-8", 66 | "compressible": true, 67 | "extensions": ["mjs"], 68 | "sources": [ 69 | "https://tools.ietf.org/html/draft-bfarias-javascript-mjs-00" 70 | ] 71 | }, 72 | "application/json": { 73 | "charset": "UTF-8", 74 | "compressible": true, 75 | "extensions": ["map"] 76 | }, 77 | "application/json5": { 78 | "extensions": ["json5"] 79 | }, 80 | "application/manifest+json": { 81 | "charset": "UTF-8", 82 | "sources": [ 83 | "http://w3c.github.io/manifest/#h-media-type-registration" 84 | ] 85 | }, 86 | "application/mp4": { 87 | "extensions": ["m4p"] 88 | }, 89 | "application/msword": { 90 | "compressible": false 91 | }, 92 | "application/node": { 93 | "extensions": ["cjs"], 94 | "sources": [ 95 | "https://www.iana.org/assignments/media-types/application/node" 96 | ] 97 | }, 98 | "application/octet-stream": { 99 | "compressible": false, 100 | "extensions": ["buffer"], 101 | "sources": [ 102 | "https://github.com/broofa/node-mime/blob/v1.2.11/types/mime.types#L154" 103 | ] 104 | }, 105 | "application/ogg": { 106 | "compressible": false 107 | }, 108 | "application/pdf": { 109 | "compressible": false 110 | }, 111 | "application/pgp-encrypted": { 112 | "compressible": false 113 | }, 114 | "application/postscript": { 115 | "compressible": true 116 | }, 117 | "application/raml+yaml": { 118 | "compressible": true, 119 | "extensions": ["raml"], 120 | "sources": [ 121 | "http://raml.org/spec.html" 122 | ] 123 | }, 124 | "application/rdf+xml": { 125 | "compressible": true, 126 | "extensions": ["owl"], 127 | "notes": "OWL 1 recommends using '.rdf' or '.owl' as extensions under the 'application/rdf+xml' mime type", 128 | "sources": [ 129 | "https://www.w3.org/TR/owl-ref/#MIMEType" 130 | ] 131 | }, 132 | "application/rtf": { 133 | "compressible": true 134 | }, 135 | "application/sieve": { 136 | "extensions": ["siv","sieve"], 137 | "sources": [ 138 | "https://tools.ietf.org/rfc/rfc5228.txt", 139 | "https://www.iana.org/assignments/media-types/application/sieve" 140 | ] 141 | }, 142 | "application/tar": { 143 | "compressible": true 144 | }, 145 | "application/toml": { 146 | "extensions": ["toml"], 147 | "sources" : [ 148 | "https://github.com/toml-lang/toml" 149 | ], 150 | "compressible": true 151 | }, 152 | "application/ubjson": { 153 | "extensions": ["ubj"], 154 | "sources" : [ 155 | "http://ubjson.org/" 156 | ], 157 | "compressible": false 158 | }, 159 | "application/vnd.android.package-archive": { 160 | "compressible": false 161 | }, 162 | "application/vnd.apple.pkpass": { 163 | "compressible": false, 164 | "extensions": ["pkpass"], 165 | "sources": [ 166 | "https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/PassKit_PG/DistributingPasses.html" 167 | ] 168 | }, 169 | "application/vnd.dart": { 170 | "compressible": true 171 | }, 172 | "application/vnd.google-apps.document": { 173 | "compressible": false, 174 | "extensions": ["gdoc"], 175 | "sources": [ 176 | "https://developers.google.com/drive/v2/web/mime-types", 177 | "https://support.google.com/drive/answer/2374983?hl=en" 178 | ] 179 | }, 180 | "application/vnd.google-apps.presentation": { 181 | "compressible": false, 182 | "extensions": ["gslides"], 183 | "sources": [ 184 | "https://developers.google.com/drive/v2/web/mime-types", 185 | "https://support.google.com/drive/answer/2374983?hl=en" 186 | ] 187 | }, 188 | "application/vnd.google-apps.spreadsheet": { 189 | "compressible": false, 190 | "extensions": ["gsheet"], 191 | "sources": [ 192 | "https://developers.google.com/drive/v2/web/mime-types", 193 | "https://support.google.com/drive/answer/2374983?hl=en" 194 | ] 195 | }, 196 | "application/vnd.google-earth.kmz": { 197 | "compressible": false 198 | }, 199 | "application/vnd.ms-excel": { 200 | "compressible": false 201 | }, 202 | "application/vnd.ms-fontobject": { 203 | "compressible": true, 204 | "sources": [ 205 | "http://www.phpied.com/gzip-your-font-face-files/" 206 | ] 207 | }, 208 | "application/vnd.ms-opentype": { 209 | "compressible": true, 210 | "sources": [ 211 | "http://www.phpied.com/gzip-your-font-face-files/" 212 | ] 213 | }, 214 | "application/vnd.ms-outlook": { 215 | "compressible": false, 216 | "extensions": ["msg"] 217 | }, 218 | "application/vnd.ms-powerpoint": { 219 | "compressible": false 220 | }, 221 | "application/vnd.ms-xpsdocument": { 222 | "compressible": false 223 | }, 224 | "application/vnd.oasis.opendocument.graphics": { 225 | "compressible": false 226 | }, 227 | "application/vnd.oasis.opendocument.presentation": { 228 | "compressible": false 229 | }, 230 | "application/vnd.oasis.opendocument.spreadsheet": { 231 | "compressible": false 232 | }, 233 | "application/vnd.oasis.opendocument.text": { 234 | "compressible": false, 235 | "sources": [ 236 | "http://en.wikipedia.org/wiki/OpenDocument_technical_specification#File_types" 237 | ] 238 | }, 239 | "application/vnd.openxmlformats-officedocument.presentationml.presentation": { 240 | "compressible": false 241 | }, 242 | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { 243 | "compressible": false 244 | }, 245 | "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { 246 | "compressible": false 247 | }, 248 | "application/wasm": { 249 | "compressible": true, 250 | "sources": [ 251 | "https://webassembly.github.io/spec/core/binary/conventions.html" 252 | ] 253 | }, 254 | "application/x-7z-compressed": { 255 | "compressible": false 256 | }, 257 | "application/x-arj": { 258 | "compressible": false, 259 | "extensions": ["arj"], 260 | "notes": "No registered type, so using type from Linux file(1)", 261 | "sources": [ 262 | "https://github.com/file/file/blob/daaf6d44768677aca17af780bba0a451fbb69ac8/magic/Magdir/archive" 263 | ] 264 | }, 265 | "application/x-bdoc": { 266 | "compressible": false, 267 | "extensions": ["bdoc"], 268 | "notes": "Digital signature container", 269 | "sources": [ 270 | "http://wpki.eu/wiki/upload/4/4f/BDoc-1.02.pdf", 271 | "http://www.id.ee/public/bdoc-spec21.pdf" 272 | ] 273 | }, 274 | "application/x-bzip": { 275 | "compressible": false 276 | }, 277 | "application/x-bzip2": { 278 | "compressible": false 279 | }, 280 | "application/x-chrome-extension": { 281 | "extensions": ["crx"] 282 | }, 283 | "application/x-deb": { 284 | "compressible": false 285 | }, 286 | "application/x-dvi": { 287 | "compressible": false 288 | }, 289 | "application/x-httpd-php": { 290 | "compressible": true, 291 | "extensions": ["php"], 292 | "sources": [ 293 | "http://php.net/manual/en/faq.installation.php" 294 | ] 295 | }, 296 | "application/x-iwork-keynote-sffkey": { 297 | "extensions": ["key"], 298 | "notes": "Deprecated alias for iWorks Keynote file", 299 | "sources": [ 300 | "https://www.iana.org/assignments/media-types/application/vnd.apple.keynote" 301 | ] 302 | }, 303 | "application/x-iwork-numbers-sffnumbers": { 304 | "extensions": ["numbers"], 305 | "notes": "Deprecated alias for iWorks Numbers file", 306 | "sources": [ 307 | "https://www.iana.org/assignments/media-types/application/vnd.apple.numbers" 308 | ] 309 | }, 310 | "application/x-iwork-pages-sffpages": { 311 | "extensions": ["pages"], 312 | "notes": "Deprecated alias for iWorks Pages file", 313 | "sources": [ 314 | "https://www.iana.org/assignments/media-types/application/vnd.apple.pages" 315 | ] 316 | }, 317 | "application/x-java-jnlp-file": { 318 | "compressible": false 319 | }, 320 | "application/x-javascript": { 321 | "compressible": true 322 | }, 323 | "application/x-keepass2": { 324 | "extensions": ["kdbx"], 325 | "sources": [ 326 | "https://github.com/keepassx/keepassx/blob/master/share/linux/keepassx.xml" 327 | ] 328 | }, 329 | "application/x-latex": { 330 | "compressible": false 331 | }, 332 | "application/x-lua-bytecode": { 333 | "extensions": ["luac"] 334 | }, 335 | "application/x-mpegurl": { 336 | "compressible": false 337 | }, 338 | "application/x-msdos-program": { 339 | "extensions": ["exe"], 340 | "sources": [ 341 | "https://bugzilla.mozilla.org/show_bug.cgi?id=250938" 342 | ] 343 | }, 344 | "application/x-ns-proxy-autoconfig": { 345 | "compressible": true, 346 | "extensions": ["pac"], 347 | "sources": [ 348 | "https://web.archive.org/web/20070602031929/http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/proxy-live.html", 349 | "https://en.wikipedia.org/wiki/Proxy_auto-config#The_PAC_File" 350 | ] 351 | }, 352 | "application/x-pkcs12": { 353 | "compressible": false 354 | }, 355 | "application/x-rar-compressed": { 356 | "compressible": false 357 | }, 358 | "application/x-sh": { 359 | "compressible": true 360 | }, 361 | "application/x-shockwave-flash": { 362 | "compressible": false 363 | }, 364 | "application/x-stuffit": { 365 | "compressible": false 366 | }, 367 | "application/x-tar": { 368 | "compressible": true 369 | }, 370 | "application/x-virtualbox-hdd": { 371 | "compressible": true, 372 | "extensions": ["hdd"], 373 | "notes": "Parallels Hard Disk Image", 374 | "sources": [ 375 | "https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/solaris/virtualbox.keys", 376 | "https://github.com/VirtualMonitor/VirtualMonitor/blob/master/src/VBox/Installer/common/virtualbox.xml" 377 | ] 378 | }, 379 | "application/x-virtualbox-ova": { 380 | "compressible": true, 381 | "extensions": ["ova"], 382 | "notes": "Open Virtualization Format (OVF) Archive", 383 | "sources": [ 384 | "https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/solaris/virtualbox.keys", 385 | "https://github.com/VirtualMonitor/VirtualMonitor/blob/master/src/VBox/Installer/common/virtualbox.xml" 386 | ] 387 | }, 388 | "application/x-virtualbox-ovf": { 389 | "compressible": true, 390 | "extensions": ["ovf"], 391 | "notes": "Open Virtualization Format (OVF) Image", 392 | "sources": [ 393 | "https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/solaris/virtualbox.keys", 394 | "https://github.com/VirtualMonitor/VirtualMonitor/blob/master/src/VBox/Installer/common/virtualbox.xml" 395 | ] 396 | }, 397 | "application/x-virtualbox-vbox": { 398 | "compressible": true, 399 | "extensions": ["vbox"], 400 | "notes": "VirtualBox Settings File", 401 | "sources": [ 402 | "https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/solaris/virtualbox.keys", 403 | "https://github.com/VirtualMonitor/VirtualMonitor/blob/master/src/VBox/Installer/common/virtualbox.xml" 404 | ] 405 | }, 406 | "application/x-virtualbox-vbox-extpack": { 407 | "compressible": false, 408 | "extensions": ["vbox-extpack"], 409 | "notes": "VirtualBox Extension Pack", 410 | "sources": [ 411 | "https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/solaris/virtualbox.keys", 412 | "https://github.com/VirtualMonitor/VirtualMonitor/blob/master/src/VBox/Installer/common/virtualbox.xml" 413 | ] 414 | }, 415 | "application/x-virtualbox-vdi": { 416 | "compressible": true, 417 | "extensions": ["vdi"], 418 | "notes": "VirtualBox Disk Image", 419 | "sources": [ 420 | "https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/solaris/virtualbox.keys", 421 | "https://github.com/VirtualMonitor/VirtualMonitor/blob/master/src/VBox/Installer/common/virtualbox.xml" 422 | ] 423 | }, 424 | "application/x-virtualbox-vhd": { 425 | "compressible": true, 426 | "extensions": ["vhd"], 427 | "notes": "Microsoft Virtual Hard Disk", 428 | "sources": [ 429 | "https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/solaris/virtualbox.keys", 430 | "https://github.com/VirtualMonitor/VirtualMonitor/blob/master/src/VBox/Installer/common/virtualbox.xml" 431 | ] 432 | }, 433 | "application/x-virtualbox-vmdk": { 434 | "compressible": true, 435 | "extensions": ["vmdk"], 436 | "notes": "VMWare Virtual Machine Disk", 437 | "sources": [ 438 | "https://www.virtualbox.org/svn/vbox/trunk/src/VBox/Installer/solaris/virtualbox.keys", 439 | "https://github.com/VirtualMonitor/VirtualMonitor/blob/master/src/VBox/Installer/common/virtualbox.xml" 440 | ] 441 | }, 442 | "application/x-web-app-manifest+json": { 443 | "extensions": ["webapp"] 444 | }, 445 | "application/x-www-form-urlencoded": { 446 | "compressible": true 447 | }, 448 | "application/x-xpinstall": { 449 | "compressible": false 450 | }, 451 | "application/xml": { 452 | "compressible": true, 453 | "extensions": ["xsd","rng"], 454 | "sources": [ 455 | "http://en.wikipedia.org/wiki/RELAX_NG" 456 | ] 457 | }, 458 | "application/xml-dtd": { 459 | "compressible": true, 460 | "sources": [ 461 | "http://en.wikipedia.org/wiki/Document_type_definition" 462 | ] 463 | }, 464 | "application/zip": { 465 | "compressible": false 466 | }, 467 | "audio/3gpp": { 468 | "compressible": false, 469 | "extensions": ["3gpp"] 470 | }, 471 | "audio/amr": { 472 | "extensions": ["amr"], 473 | "sources": [ 474 | "https://tools.ietf.org/html/rfc4867" 475 | ] 476 | }, 477 | "audio/basic": { 478 | "compressible": false 479 | }, 480 | "audio/l24": { 481 | "compressible": false 482 | }, 483 | "audio/mp3": { 484 | "compressible": false, 485 | "extensions": ["mp3"], 486 | "notes": "Chromium sends this mimetype instead of audio/mpeg for mp3 files", 487 | "sources": [ 488 | "https://bugs.chromium.org/p/chromium/issues/detail?id=227004" 489 | ] 490 | }, 491 | "audio/mp4": { 492 | "compressible": false 493 | }, 494 | "audio/mpeg": { 495 | "compressible": false 496 | }, 497 | "audio/ogg": { 498 | "compressible": false 499 | }, 500 | "audio/vnd.rn-realaudio": { 501 | "compressible": false 502 | }, 503 | "audio/vnd.wave": { 504 | "compressible": false 505 | }, 506 | "audio/vorbis": { 507 | "compressible": false 508 | }, 509 | "audio/wav": { 510 | "compressible": false, 511 | "extensions": ["wav"] 512 | }, 513 | "audio/wave": { 514 | "compressible": false, 515 | "extensions": ["wav"] 516 | }, 517 | "audio/webm": { 518 | "compressible": false 519 | }, 520 | "audio/x-aac": { 521 | "compressible": false 522 | }, 523 | "audio/x-caf": { 524 | "compressible": false 525 | }, 526 | "font/otf": { 527 | "compressible": true, 528 | "sources": [ 529 | "https://www.iana.org/assignments/media-types/font/otf", 530 | "http://www.phpied.com/gzip-your-font-face-files/" 531 | ] 532 | }, 533 | "font/ttf": { 534 | "compressible": true, 535 | "sources": [ 536 | "https://www.iana.org/assignments/media-types/font/ttf", 537 | "http://www.phpied.com/gzip-your-font-face-files/" 538 | ] 539 | }, 540 | "image/apng": { 541 | "compressible": false, 542 | "extensions": ["apng"], 543 | "sources": [ 544 | "https://wiki.mozilla.org/APNG_Specification", 545 | "https://en.wikipedia.org/wiki/APNG" 546 | ] 547 | }, 548 | "image/avif": { 549 | "compressible": false, 550 | "extensions": ["avif"], 551 | "sources": [ 552 | "https://aomediacodec.github.io/av1-avif/" 553 | ], 554 | "notes": "The AV1 Image File Format (AVIF) is a specification for storing images or image sequences compressed with AV1 in the HEIF file format" 555 | }, 556 | "image/bmp": { 557 | "compressible": true, 558 | "sources": [ 559 | "http://stackoverflow.com/a/12770116" 560 | ] 561 | }, 562 | "image/gif": { 563 | "compressible": false 564 | }, 565 | "image/heic": { 566 | "extensions": ["heic"], 567 | "sources": [ 568 | "https://www.iana.org/assignments/media-types/image/heic", 569 | "http://nokiatech.github.io/heif/technical.html" 570 | ] 571 | }, 572 | "image/heic-sequence": { 573 | "extensions": ["heics"], 574 | "sources": [ 575 | "https://www.iana.org/assignments/media-types/image/heic-sequence", 576 | "http://nokiatech.github.io/heif/technical.html" 577 | ] 578 | }, 579 | "image/heif": { 580 | "extensions": ["heif"], 581 | "sources": [ 582 | "https://www.iana.org/assignments/media-types/image/heif", 583 | "http://nokiatech.github.io/heif/technical.html" 584 | ] 585 | }, 586 | "image/heif-sequence": { 587 | "extensions": ["heifs"], 588 | "sources": [ 589 | "https://www.iana.org/assignments/media-types/image/heif-sequence", 590 | "http://nokiatech.github.io/heif/technical.html" 591 | ] 592 | }, 593 | "image/jp2": { 594 | "compressible": false, 595 | "extensions": ["jp2","jpg2"], 596 | "sources": [ 597 | "https://www.iana.org/assignments/media-types/image/jp2", 598 | "https://tools.ietf.org/html/rfc3745" 599 | ] 600 | }, 601 | "image/jpeg": { 602 | "compressible": false 603 | }, 604 | "image/jpm": { 605 | "compressible": false, 606 | "extensions": ["jpm"], 607 | "sources": [ 608 | "https://www.iana.org/assignments/media-types/image/jpm", 609 | "https://tools.ietf.org/html/rfc3745" 610 | ] 611 | }, 612 | "image/jpx": { 613 | "compressible": false, 614 | "extensions": ["jpx","jpf"], 615 | "sources": [ 616 | "https://www.iana.org/assignments/media-types/image/jpx", 617 | "https://tools.ietf.org/html/rfc3745" 618 | ] 619 | }, 620 | "image/pjpeg": { 621 | "compressible": false 622 | }, 623 | "image/png": { 624 | "compressible": false 625 | }, 626 | "image/tiff": { 627 | "compressible": false, 628 | "notes": "Gains insignificant in testing.", 629 | "sources": [ 630 | "http://stackoverflow.com/a/12770116" 631 | ] 632 | }, 633 | "image/vnd.adobe.photoshop": { 634 | "compressible": true 635 | }, 636 | "image/vnd.ms-dds" : { 637 | "extensions": ["dds"], 638 | "notes": "Microsoft format for storing graphical textures and cubemaps. Used in 3d engines, such as Babylon.js.", 639 | "sources": [ 640 | "https://docs.microsoft.com/en-us/windows/win32/wic/dds-format-overview" 641 | ] 642 | }, 643 | "image/x-icon": { 644 | "compressible": true, 645 | "notes": "Usually a wrapper for .bmp formated images.", 646 | "sources": [ 647 | "http://en.wikipedia.org/wiki/ICO_(file_format)" 648 | ] 649 | }, 650 | "image/x-ms-bmp": { 651 | "compressible": true, 652 | "sources": [ 653 | "http://stackoverflow.com/a/12770116" 654 | ] 655 | }, 656 | "image/x-xcf": { 657 | "compressible": false 658 | }, 659 | "message/http": { 660 | "compressible": false, 661 | "notes": "It is safest to leave these uncompressed.", 662 | "sources": [ 663 | "http://stackoverflow.com/a/1450163" 664 | ] 665 | }, 666 | "message/partial": { 667 | "compressible": false 668 | }, 669 | "message/rfc822": { 670 | "compressible": true, 671 | "sources": [ 672 | "http://en.wikipedia.org/wiki/MIME#Multipart_subtypes" 673 | ] 674 | }, 675 | "model/gltf-binary": { 676 | "compressible": true 677 | }, 678 | "model/iges": { 679 | "compressible": false 680 | }, 681 | "model/mesh": { 682 | "compressible": false 683 | }, 684 | "model/vrml": { 685 | "compressible": false 686 | }, 687 | "model/x3d+binary": { 688 | "compressible": false 689 | }, 690 | "model/x3d+vrml": { 691 | "compressible": false 692 | }, 693 | "multipart/alternative": { 694 | "compressible": false 695 | }, 696 | "multipart/encrypted": { 697 | "compressible": false 698 | }, 699 | "multipart/form-data": { 700 | "compressible": false 701 | }, 702 | "multipart/related": { 703 | "compressible": false 704 | }, 705 | "multipart/signed": { 706 | "compressible": false 707 | }, 708 | "text/cache-manifest": { 709 | "compressible": true, 710 | "extensions": ["manifest"], 711 | "notes": "I think so.", 712 | "sources": [ 713 | "https://bugzilla.mozilla.org/show_bug.cgi?id=715191#c2" 714 | ] 715 | }, 716 | "text/calender": { 717 | "compressible": true, 718 | "notes": "Probably needs to be uncompressed before sent to iCalender.", 719 | "sources": [ 720 | "http://en.wikipedia.org/wiki/ICalendar" 721 | ] 722 | }, 723 | "text/cmd": { 724 | "compressible": true 725 | }, 726 | "text/coffeescript": { 727 | "extensions": ["coffee","litcoffee"] 728 | }, 729 | "text/css": { 730 | "charset": "UTF-8", 731 | "compressible": true, 732 | "sources": [ 733 | "https://www.w3.org/TR/CSS22/syndata.html#charset" 734 | ] 735 | }, 736 | "text/csv": { 737 | "compressible": true 738 | }, 739 | "text/html": { 740 | "compressible": true 741 | }, 742 | "text/jade": { 743 | "extensions": ["jade"] 744 | }, 745 | "text/javascript": { 746 | "compressible": true 747 | }, 748 | "text/jsx": { 749 | "compressible": true, 750 | "extensions": ["jsx"], 751 | "sources": [ 752 | "http://facebook.github.io/react/docs/getting-started.html" 753 | ] 754 | }, 755 | "text/less": { 756 | "compressible": true, 757 | "extensions": ["less"] 758 | }, 759 | "text/markdown": { 760 | "compressible": true, 761 | "extensions": ["markdown","md"], 762 | "sources": [ 763 | "https://tools.ietf.org/html/rfc7763" 764 | ] 765 | }, 766 | "text/mdx": { 767 | "compressible": true, 768 | "extensions": ["mdx"], 769 | "notes": "JSX in Markdown", 770 | "sources": [ 771 | "https://github.com/mdx-js/specification" 772 | ] 773 | }, 774 | "text/n3": { 775 | "compressible": true, 776 | "sources": [ 777 | "http://en.wikipedia.org/wiki/Notation3" 778 | ] 779 | }, 780 | "text/plain": { 781 | "compressible": true, 782 | "extensions": ["ini"] 783 | }, 784 | "text/richtext": { 785 | "compressible": true 786 | }, 787 | "text/rtf": { 788 | "compressible": true, 789 | "extensions": ["rtf"] 790 | }, 791 | "text/shex": { 792 | "extensions": ["shex"], 793 | "sources": [ 794 | "http://shex.io/shex-semantics/" 795 | ] 796 | }, 797 | "text/slim": { 798 | "extensions": ["slim","slm"], 799 | "sources": [ 800 | "http://slim-lang.com/" 801 | ] 802 | }, 803 | "text/stylus": { 804 | "extensions": ["stylus","styl"] 805 | }, 806 | "text/tab-separated-values": { 807 | "compressible": true 808 | }, 809 | "text/uri-list": { 810 | "compressible": true 811 | }, 812 | "text/vcard": { 813 | "compressible": true 814 | }, 815 | "text/vtt": { 816 | "charset": "UTF-8", 817 | "compressible": true, 818 | "sources": [ 819 | "http://tools.ietf.org/html/draft-pantos-http-live-streaming-13" 820 | ] 821 | }, 822 | "text/x-gwt-rpc": { 823 | "compressible": true 824 | }, 825 | "text/x-handlebars-template": { 826 | "extensions": ["hbs"] 827 | }, 828 | "text/x-jquery-tmpl": { 829 | "compressible": true 830 | }, 831 | "text/x-lua": { 832 | "extensions": ["lua"] 833 | }, 834 | "text/x-markdown": { 835 | "compressible": true, 836 | "extensions": ["mkd"] 837 | }, 838 | "text/x-org": { 839 | "compressible": true, 840 | "extensions": ["org"], 841 | "sources": [ 842 | "https://lists.gnu.org/archive/html/emacs-orgmode/2011-01/msg00971.html", 843 | "http://orgmode.org" 844 | ] 845 | }, 846 | "text/x-processing": { 847 | "compressible": true, 848 | "extensions": ["pde"], 849 | "sources": [ 850 | "https://en.wikipedia.org/wiki/Processing_(programming_language)" 851 | ] 852 | }, 853 | "text/x-sass": { 854 | "extensions": ["sass"] 855 | }, 856 | "text/x-scss": { 857 | "extensions": ["scss"] 858 | }, 859 | "text/x-suse-ymp": { 860 | "compressible": true, 861 | "extensions": ["ymp"], 862 | "sources": [ 863 | "https://en.opensuse.org/openSUSE:One_Click_Install", 864 | "https://news.opensuse.org/2007/08/01/benjis-one-click-install-gets-supported-by-opensuse-build-service/" 865 | ] 866 | }, 867 | "text/xml": { 868 | "compressible": true 869 | }, 870 | "text/yaml": { 871 | "compressible": true, 872 | "extensions": ["yaml","yml"] 873 | }, 874 | "video/mp4": { 875 | "compressible": false 876 | }, 877 | "video/mpeg": { 878 | "compressible": false 879 | }, 880 | "video/ogg": { 881 | "compressible": false 882 | }, 883 | "video/quicktime": { 884 | "compressible": false 885 | }, 886 | "video/webm": { 887 | "compressible": false 888 | }, 889 | "video/x-flv": { 890 | "compressible": false 891 | }, 892 | "video/x-matroska": { 893 | "compressible": false 894 | }, 895 | "video/x-ms-wmv": { 896 | "compressible": false 897 | }, 898 | "x-shader/x-fragment": { 899 | "compressible": true, 900 | "sources": [ 901 | "https://developer.mozilla.org/en-US/docs/Web/WebGL/Adding_2D_content_to_a_WebGL_context", 902 | "https://bugzilla.mozilla.org/show_bug.cgi?id=715191#c2" 903 | ] 904 | }, 905 | "x-shader/x-vertex": { 906 | "compressible": true, 907 | "sources": [ 908 | "https://developer.mozilla.org/en-US/docs/Web/WebGL/Adding_2D_content_to_a_WebGL_context" 909 | ] 910 | } 911 | } 912 | -------------------------------------------------------------------------------- /src/apache-types.json: -------------------------------------------------------------------------------- 1 | { 2 | "application/1d-interleaved-parityfec": {}, 3 | "application/3gpdash-qoe-report+xml": {}, 4 | "application/3gpp-ims+xml": {}, 5 | "application/a2l": {}, 6 | "application/activemessage": {}, 7 | "application/alto-costmap+json": {}, 8 | "application/alto-costmapfilter+json": {}, 9 | "application/alto-directory+json": {}, 10 | "application/alto-endpointcost+json": {}, 11 | "application/alto-endpointcostparams+json": {}, 12 | "application/alto-endpointprop+json": {}, 13 | "application/alto-endpointpropparams+json": {}, 14 | "application/alto-error+json": {}, 15 | "application/alto-networkmap+json": {}, 16 | "application/alto-networkmapfilter+json": {}, 17 | "application/aml": {}, 18 | "application/andrew-inset": { 19 | "extensions": ["ez"] 20 | }, 21 | "application/applefile": {}, 22 | "application/applixware": { 23 | "extensions": ["aw"] 24 | }, 25 | "application/atf": {}, 26 | "application/atfx": {}, 27 | "application/atom+xml": { 28 | "extensions": ["atom"] 29 | }, 30 | "application/atomcat+xml": { 31 | "extensions": ["atomcat"] 32 | }, 33 | "application/atomdeleted+xml": {}, 34 | "application/atomicmail": {}, 35 | "application/atomsvc+xml": { 36 | "extensions": ["atomsvc"] 37 | }, 38 | "application/atxml": {}, 39 | "application/auth-policy+xml": {}, 40 | "application/bacnet-xdd+zip": {}, 41 | "application/batch-smtp": {}, 42 | "application/beep+xml": {}, 43 | "application/calendar+json": {}, 44 | "application/calendar+xml": {}, 45 | "application/call-completion": {}, 46 | "application/cals-1840": {}, 47 | "application/cbor": {}, 48 | "application/ccmp+xml": {}, 49 | "application/ccxml+xml": { 50 | "extensions": ["ccxml"] 51 | }, 52 | "application/cdfx+xml": {}, 53 | "application/cdmi-capability": { 54 | "extensions": ["cdmia"] 55 | }, 56 | "application/cdmi-container": { 57 | "extensions": ["cdmic"] 58 | }, 59 | "application/cdmi-domain": { 60 | "extensions": ["cdmid"] 61 | }, 62 | "application/cdmi-object": { 63 | "extensions": ["cdmio"] 64 | }, 65 | "application/cdmi-queue": { 66 | "extensions": ["cdmiq"] 67 | }, 68 | "application/cdni": {}, 69 | "application/cea": {}, 70 | "application/cea-2018+xml": {}, 71 | "application/cellml+xml": {}, 72 | "application/cfw": {}, 73 | "application/cms": {}, 74 | "application/cnrp+xml": {}, 75 | "application/coap-group+json": {}, 76 | "application/commonground": {}, 77 | "application/conference-info+xml": {}, 78 | "application/cpl+xml": {}, 79 | "application/csrattrs": {}, 80 | "application/csta+xml": {}, 81 | "application/cstadata+xml": {}, 82 | "application/csvm+json": {}, 83 | "application/cu-seeme": { 84 | "extensions": ["cu"] 85 | }, 86 | "application/cybercash": {}, 87 | "application/dash+xml": {}, 88 | "application/dashdelta": {}, 89 | "application/davmount+xml": { 90 | "extensions": ["davmount"] 91 | }, 92 | "application/dca-rft": {}, 93 | "application/dcd": {}, 94 | "application/dec-dx": {}, 95 | "application/dialog-info+xml": {}, 96 | "application/dicom": {}, 97 | "application/dii": {}, 98 | "application/dit": {}, 99 | "application/dns": {}, 100 | "application/docbook+xml": { 101 | "extensions": ["dbk"] 102 | }, 103 | "application/dskpp+xml": {}, 104 | "application/dssc+der": { 105 | "extensions": ["dssc"] 106 | }, 107 | "application/dssc+xml": { 108 | "extensions": ["xdssc"] 109 | }, 110 | "application/dvcs": {}, 111 | "application/ecmascript": { 112 | "extensions": ["ecma"] 113 | }, 114 | "application/edi-consent": {}, 115 | "application/edi-x12": {}, 116 | "application/edifact": {}, 117 | "application/efi": {}, 118 | "application/emergencycalldata.comment+xml": {}, 119 | "application/emergencycalldata.deviceinfo+xml": {}, 120 | "application/emergencycalldata.providerinfo+xml": {}, 121 | "application/emergencycalldata.serviceinfo+xml": {}, 122 | "application/emergencycalldata.subscriberinfo+xml": {}, 123 | "application/emma+xml": { 124 | "extensions": ["emma"] 125 | }, 126 | "application/emotionml+xml": {}, 127 | "application/encaprtp": {}, 128 | "application/epp+xml": {}, 129 | "application/epub+zip": { 130 | "extensions": ["epub"] 131 | }, 132 | "application/eshop": {}, 133 | "application/exi": { 134 | "extensions": ["exi"] 135 | }, 136 | "application/fastinfoset": {}, 137 | "application/fastsoap": {}, 138 | "application/fdt+xml": {}, 139 | "application/fits": {}, 140 | "application/font-tdpfr": { 141 | "extensions": ["pfr"] 142 | }, 143 | "application/framework-attributes+xml": {}, 144 | "application/geo+json": {}, 145 | "application/gml+xml": { 146 | "extensions": ["gml"] 147 | }, 148 | "application/gpx+xml": { 149 | "extensions": ["gpx"] 150 | }, 151 | "application/gxf": { 152 | "extensions": ["gxf"] 153 | }, 154 | "application/gzip": {}, 155 | "application/h224": {}, 156 | "application/held+xml": {}, 157 | "application/http": {}, 158 | "application/hyperstudio": { 159 | "extensions": ["stk"] 160 | }, 161 | "application/ibe-key-request+xml": {}, 162 | "application/ibe-pkg-reply+xml": {}, 163 | "application/ibe-pp-data": {}, 164 | "application/iges": {}, 165 | "application/im-iscomposing+xml": {}, 166 | "application/index": {}, 167 | "application/index.cmd": {}, 168 | "application/index.obj": {}, 169 | "application/index.response": {}, 170 | "application/index.vnd": {}, 171 | "application/inkml+xml": { 172 | "extensions": ["ink","inkml"] 173 | }, 174 | "application/iotp": {}, 175 | "application/ipfix": { 176 | "extensions": ["ipfix"] 177 | }, 178 | "application/ipp": {}, 179 | "application/isup": {}, 180 | "application/its+xml": {}, 181 | "application/java-archive": { 182 | "extensions": ["jar"] 183 | }, 184 | "application/java-serialized-object": { 185 | "extensions": ["ser"] 186 | }, 187 | "application/java-vm": { 188 | "extensions": ["class"] 189 | }, 190 | "application/javascript": { 191 | "extensions": ["js"] 192 | }, 193 | "application/jose": {}, 194 | "application/jose+json": {}, 195 | "application/jrd+json": {}, 196 | "application/json": { 197 | "extensions": ["json"] 198 | }, 199 | "application/json-patch+json": {}, 200 | "application/json-seq": {}, 201 | "application/jsonml+json": { 202 | "extensions": ["jsonml"] 203 | }, 204 | "application/jwk+json": {}, 205 | "application/jwk-set+json": {}, 206 | "application/jwt": {}, 207 | "application/kpml-request+xml": {}, 208 | "application/kpml-response+xml": {}, 209 | "application/ld+json": {}, 210 | "application/lgr+xml": {}, 211 | "application/link-format": {}, 212 | "application/load-control+xml": {}, 213 | "application/lost+xml": { 214 | "extensions": ["lostxml"] 215 | }, 216 | "application/lostsync+xml": {}, 217 | "application/lxf": {}, 218 | "application/mac-binhex40": { 219 | "extensions": ["hqx"] 220 | }, 221 | "application/mac-compactpro": { 222 | "extensions": ["cpt"] 223 | }, 224 | "application/macwriteii": {}, 225 | "application/mads+xml": { 226 | "extensions": ["mads"] 227 | }, 228 | "application/marc": { 229 | "extensions": ["mrc"] 230 | }, 231 | "application/marcxml+xml": { 232 | "extensions": ["mrcx"] 233 | }, 234 | "application/mathematica": { 235 | "extensions": ["ma","nb","mb"] 236 | }, 237 | "application/mathml+xml": { 238 | "extensions": ["mathml"] 239 | }, 240 | "application/mathml-content+xml": {}, 241 | "application/mathml-presentation+xml": {}, 242 | "application/mbms-associated-procedure-description+xml": {}, 243 | "application/mbms-deregister+xml": {}, 244 | "application/mbms-envelope+xml": {}, 245 | "application/mbms-msk+xml": {}, 246 | "application/mbms-msk-response+xml": {}, 247 | "application/mbms-protection-description+xml": {}, 248 | "application/mbms-reception-report+xml": {}, 249 | "application/mbms-register+xml": {}, 250 | "application/mbms-register-response+xml": {}, 251 | "application/mbms-schedule+xml": {}, 252 | "application/mbms-user-service-description+xml": {}, 253 | "application/mbox": { 254 | "extensions": ["mbox"] 255 | }, 256 | "application/media-policy-dataset+xml": {}, 257 | "application/media_control+xml": {}, 258 | "application/mediaservercontrol+xml": { 259 | "extensions": ["mscml"] 260 | }, 261 | "application/merge-patch+json": {}, 262 | "application/metalink+xml": { 263 | "extensions": ["metalink"] 264 | }, 265 | "application/metalink4+xml": { 266 | "extensions": ["meta4"] 267 | }, 268 | "application/mets+xml": { 269 | "extensions": ["mets"] 270 | }, 271 | "application/mf4": {}, 272 | "application/mikey": {}, 273 | "application/mods+xml": { 274 | "extensions": ["mods"] 275 | }, 276 | "application/moss-keys": {}, 277 | "application/moss-signature": {}, 278 | "application/mosskey-data": {}, 279 | "application/mosskey-request": {}, 280 | "application/mp21": { 281 | "extensions": ["m21","mp21"] 282 | }, 283 | "application/mp4": { 284 | "extensions": ["mp4s"] 285 | }, 286 | "application/mpeg4-generic": {}, 287 | "application/mpeg4-iod": {}, 288 | "application/mpeg4-iod-xmt": {}, 289 | "application/mrb-consumer+xml": {}, 290 | "application/mrb-publish+xml": {}, 291 | "application/msc-ivr+xml": {}, 292 | "application/msc-mixer+xml": {}, 293 | "application/msword": { 294 | "extensions": ["doc","dot"] 295 | }, 296 | "application/mxf": { 297 | "extensions": ["mxf"] 298 | }, 299 | "application/nasdata": {}, 300 | "application/news-checkgroups": {}, 301 | "application/news-groupinfo": {}, 302 | "application/news-transmission": {}, 303 | "application/nlsml+xml": {}, 304 | "application/nss": {}, 305 | "application/ocsp-request": {}, 306 | "application/ocsp-response": {}, 307 | "application/octet-stream": { 308 | "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy"] 309 | }, 310 | "application/oda": { 311 | "extensions": ["oda"] 312 | }, 313 | "application/odx": {}, 314 | "application/oebps-package+xml": { 315 | "extensions": ["opf"] 316 | }, 317 | "application/ogg": { 318 | "extensions": ["ogx"] 319 | }, 320 | "application/omdoc+xml": { 321 | "extensions": ["omdoc"] 322 | }, 323 | "application/onenote": { 324 | "extensions": ["onetoc","onetoc2","onetmp","onepkg"] 325 | }, 326 | "application/oxps": { 327 | "extensions": ["oxps"] 328 | }, 329 | "application/p2p-overlay+xml": {}, 330 | "application/parityfec": {}, 331 | "application/patch-ops-error+xml": { 332 | "extensions": ["xer"] 333 | }, 334 | "application/pdf": { 335 | "extensions": ["pdf"] 336 | }, 337 | "application/pdx": {}, 338 | "application/pgp-encrypted": { 339 | "extensions": ["pgp"] 340 | }, 341 | "application/pgp-keys": {}, 342 | "application/pgp-signature": { 343 | "extensions": ["asc","sig"] 344 | }, 345 | "application/pics-rules": { 346 | "extensions": ["prf"] 347 | }, 348 | "application/pidf+xml": {}, 349 | "application/pidf-diff+xml": {}, 350 | "application/pkcs10": { 351 | "extensions": ["p10"] 352 | }, 353 | "application/pkcs12": {}, 354 | "application/pkcs7-mime": { 355 | "extensions": ["p7m","p7c"] 356 | }, 357 | "application/pkcs7-signature": { 358 | "extensions": ["p7s"] 359 | }, 360 | "application/pkcs8": { 361 | "extensions": ["p8"] 362 | }, 363 | "application/pkix-attr-cert": { 364 | "extensions": ["ac"] 365 | }, 366 | "application/pkix-cert": { 367 | "extensions": ["cer"] 368 | }, 369 | "application/pkix-crl": { 370 | "extensions": ["crl"] 371 | }, 372 | "application/pkix-pkipath": { 373 | "extensions": ["pkipath"] 374 | }, 375 | "application/pkixcmp": { 376 | "extensions": ["pki"] 377 | }, 378 | "application/pls+xml": { 379 | "extensions": ["pls"] 380 | }, 381 | "application/poc-settings+xml": {}, 382 | "application/postscript": { 383 | "extensions": ["ai","eps","ps"] 384 | }, 385 | "application/ppsp-tracker+json": {}, 386 | "application/problem+json": {}, 387 | "application/problem+xml": {}, 388 | "application/provenance+xml": {}, 389 | "application/prs.alvestrand.titrax-sheet": {}, 390 | "application/prs.cww": { 391 | "extensions": ["cww"] 392 | }, 393 | "application/prs.hpub+zip": {}, 394 | "application/prs.nprend": {}, 395 | "application/prs.plucker": {}, 396 | "application/prs.rdf-xml-crypt": {}, 397 | "application/prs.xsf+xml": {}, 398 | "application/pskc+xml": { 399 | "extensions": ["pskcxml"] 400 | }, 401 | "application/qsig": {}, 402 | "application/raptorfec": {}, 403 | "application/rdap+json": {}, 404 | "application/rdf+xml": { 405 | "extensions": ["rdf"] 406 | }, 407 | "application/reginfo+xml": { 408 | "extensions": ["rif"] 409 | }, 410 | "application/relax-ng-compact-syntax": { 411 | "extensions": ["rnc"] 412 | }, 413 | "application/remote-printing": {}, 414 | "application/reputon+json": {}, 415 | "application/resource-lists+xml": { 416 | "extensions": ["rl"] 417 | }, 418 | "application/resource-lists-diff+xml": { 419 | "extensions": ["rld"] 420 | }, 421 | "application/rfc+xml": {}, 422 | "application/riscos": {}, 423 | "application/rlmi+xml": {}, 424 | "application/rls-services+xml": { 425 | "extensions": ["rs"] 426 | }, 427 | "application/rpki-ghostbusters": { 428 | "extensions": ["gbr"] 429 | }, 430 | "application/rpki-manifest": { 431 | "extensions": ["mft"] 432 | }, 433 | "application/rpki-roa": { 434 | "extensions": ["roa"] 435 | }, 436 | "application/rpki-updown": {}, 437 | "application/rsd+xml": { 438 | "extensions": ["rsd"] 439 | }, 440 | "application/rss+xml": { 441 | "extensions": ["rss"] 442 | }, 443 | "application/rtf": { 444 | "extensions": ["rtf"] 445 | }, 446 | "application/rtploopback": {}, 447 | "application/rtx": {}, 448 | "application/samlassertion+xml": {}, 449 | "application/samlmetadata+xml": {}, 450 | "application/sbml+xml": { 451 | "extensions": ["sbml"] 452 | }, 453 | "application/scaip+xml": {}, 454 | "application/scim+json": {}, 455 | "application/scvp-cv-request": { 456 | "extensions": ["scq"] 457 | }, 458 | "application/scvp-cv-response": { 459 | "extensions": ["scs"] 460 | }, 461 | "application/scvp-vp-request": { 462 | "extensions": ["spq"] 463 | }, 464 | "application/scvp-vp-response": { 465 | "extensions": ["spp"] 466 | }, 467 | "application/sdp": { 468 | "extensions": ["sdp"] 469 | }, 470 | "application/sep+xml": {}, 471 | "application/sep-exi": {}, 472 | "application/session-info": {}, 473 | "application/set-payment": {}, 474 | "application/set-payment-initiation": { 475 | "extensions": ["setpay"] 476 | }, 477 | "application/set-registration": {}, 478 | "application/set-registration-initiation": { 479 | "extensions": ["setreg"] 480 | }, 481 | "application/sgml": {}, 482 | "application/sgml-open-catalog": {}, 483 | "application/shf+xml": { 484 | "extensions": ["shf"] 485 | }, 486 | "application/sieve": {}, 487 | "application/simple-filter+xml": {}, 488 | "application/simple-message-summary": {}, 489 | "application/simplesymbolcontainer": {}, 490 | "application/slate": {}, 491 | "application/smil": {}, 492 | "application/smil+xml": { 493 | "extensions": ["smi","smil"] 494 | }, 495 | "application/smpte336m": {}, 496 | "application/soap+fastinfoset": {}, 497 | "application/soap+xml": {}, 498 | "application/sparql-query": { 499 | "extensions": ["rq"] 500 | }, 501 | "application/sparql-results+xml": { 502 | "extensions": ["srx"] 503 | }, 504 | "application/spirits-event+xml": {}, 505 | "application/sql": {}, 506 | "application/srgs": { 507 | "extensions": ["gram"] 508 | }, 509 | "application/srgs+xml": { 510 | "extensions": ["grxml"] 511 | }, 512 | "application/sru+xml": { 513 | "extensions": ["sru"] 514 | }, 515 | "application/ssdl+xml": { 516 | "extensions": ["ssdl"] 517 | }, 518 | "application/ssml+xml": { 519 | "extensions": ["ssml"] 520 | }, 521 | "application/tamp-apex-update": {}, 522 | "application/tamp-apex-update-confirm": {}, 523 | "application/tamp-community-update": {}, 524 | "application/tamp-community-update-confirm": {}, 525 | "application/tamp-error": {}, 526 | "application/tamp-sequence-adjust": {}, 527 | "application/tamp-sequence-adjust-confirm": {}, 528 | "application/tamp-status-query": {}, 529 | "application/tamp-status-response": {}, 530 | "application/tamp-update": {}, 531 | "application/tamp-update-confirm": {}, 532 | "application/tei+xml": { 533 | "extensions": ["tei","teicorpus"] 534 | }, 535 | "application/thraud+xml": { 536 | "extensions": ["tfi"] 537 | }, 538 | "application/timestamp-query": {}, 539 | "application/timestamp-reply": {}, 540 | "application/timestamped-data": { 541 | "extensions": ["tsd"] 542 | }, 543 | "application/ttml+xml": {}, 544 | "application/tve-trigger": {}, 545 | "application/ulpfec": {}, 546 | "application/urc-grpsheet+xml": {}, 547 | "application/urc-ressheet+xml": {}, 548 | "application/urc-targetdesc+xml": {}, 549 | "application/urc-uisocketdesc+xml": {}, 550 | "application/vcard+json": {}, 551 | "application/vcard+xml": {}, 552 | "application/vemmi": {}, 553 | "application/vividence.scriptfile": {}, 554 | "application/vnd.3gpp-prose+xml": {}, 555 | "application/vnd.3gpp-prose-pc3ch+xml": {}, 556 | "application/vnd.3gpp.access-transfer-events+xml": {}, 557 | "application/vnd.3gpp.bsf+xml": {}, 558 | "application/vnd.3gpp.mid-call+xml": {}, 559 | "application/vnd.3gpp.pic-bw-large": { 560 | "extensions": ["plb"] 561 | }, 562 | "application/vnd.3gpp.pic-bw-small": { 563 | "extensions": ["psb"] 564 | }, 565 | "application/vnd.3gpp.pic-bw-var": { 566 | "extensions": ["pvb"] 567 | }, 568 | "application/vnd.3gpp.sms": {}, 569 | "application/vnd.3gpp.sms+xml": {}, 570 | "application/vnd.3gpp.srvcc-ext+xml": {}, 571 | "application/vnd.3gpp.srvcc-info+xml": {}, 572 | "application/vnd.3gpp.state-and-event-info+xml": {}, 573 | "application/vnd.3gpp.ussd+xml": {}, 574 | "application/vnd.3gpp2.bcmcsinfo+xml": {}, 575 | "application/vnd.3gpp2.sms": {}, 576 | "application/vnd.3gpp2.tcap": { 577 | "extensions": ["tcap"] 578 | }, 579 | "application/vnd.3lightssoftware.imagescal": {}, 580 | "application/vnd.3m.post-it-notes": { 581 | "extensions": ["pwn"] 582 | }, 583 | "application/vnd.accpac.simply.aso": { 584 | "extensions": ["aso"] 585 | }, 586 | "application/vnd.accpac.simply.imp": { 587 | "extensions": ["imp"] 588 | }, 589 | "application/vnd.acucobol": { 590 | "extensions": ["acu"] 591 | }, 592 | "application/vnd.acucorp": { 593 | "extensions": ["atc","acutc"] 594 | }, 595 | "application/vnd.adobe.air-application-installer-package+zip": { 596 | "extensions": ["air"] 597 | }, 598 | "application/vnd.adobe.flash.movie": {}, 599 | "application/vnd.adobe.formscentral.fcdt": { 600 | "extensions": ["fcdt"] 601 | }, 602 | "application/vnd.adobe.fxp": { 603 | "extensions": ["fxp","fxpl"] 604 | }, 605 | "application/vnd.adobe.partial-upload": {}, 606 | "application/vnd.adobe.xdp+xml": { 607 | "extensions": ["xdp"] 608 | }, 609 | "application/vnd.adobe.xfdf": { 610 | "extensions": ["xfdf"] 611 | }, 612 | "application/vnd.aether.imp": {}, 613 | "application/vnd.ah-barcode": {}, 614 | "application/vnd.ahead.space": { 615 | "extensions": ["ahead"] 616 | }, 617 | "application/vnd.airzip.filesecure.azf": { 618 | "extensions": ["azf"] 619 | }, 620 | "application/vnd.airzip.filesecure.azs": { 621 | "extensions": ["azs"] 622 | }, 623 | "application/vnd.amazon.ebook": { 624 | "extensions": ["azw"] 625 | }, 626 | "application/vnd.amazon.mobi8-ebook": {}, 627 | "application/vnd.americandynamics.acc": { 628 | "extensions": ["acc"] 629 | }, 630 | "application/vnd.amiga.ami": { 631 | "extensions": ["ami"] 632 | }, 633 | "application/vnd.amundsen.maze+xml": {}, 634 | "application/vnd.android.package-archive": { 635 | "extensions": ["apk"] 636 | }, 637 | "application/vnd.anki": {}, 638 | "application/vnd.anser-web-certificate-issue-initiation": { 639 | "extensions": ["cii"] 640 | }, 641 | "application/vnd.anser-web-funds-transfer-initiation": { 642 | "extensions": ["fti"] 643 | }, 644 | "application/vnd.antix.game-component": { 645 | "extensions": ["atx"] 646 | }, 647 | "application/vnd.apache.thrift.binary": {}, 648 | "application/vnd.apache.thrift.compact": {}, 649 | "application/vnd.apache.thrift.json": {}, 650 | "application/vnd.api+json": {}, 651 | "application/vnd.apple.installer+xml": { 652 | "extensions": ["mpkg"] 653 | }, 654 | "application/vnd.apple.mpegurl": { 655 | "extensions": ["m3u8"] 656 | }, 657 | "application/vnd.arastra.swi": {}, 658 | "application/vnd.aristanetworks.swi": { 659 | "extensions": ["swi"] 660 | }, 661 | "application/vnd.artsquare": {}, 662 | "application/vnd.astraea-software.iota": { 663 | "extensions": ["iota"] 664 | }, 665 | "application/vnd.audiograph": { 666 | "extensions": ["aep"] 667 | }, 668 | "application/vnd.autopackage": {}, 669 | "application/vnd.avistar+xml": {}, 670 | "application/vnd.balsamiq.bmml+xml": {}, 671 | "application/vnd.balsamiq.bmpr": {}, 672 | "application/vnd.bekitzur-stech+json": {}, 673 | "application/vnd.biopax.rdf+xml": {}, 674 | "application/vnd.blueice.multipass": { 675 | "extensions": ["mpm"] 676 | }, 677 | "application/vnd.bluetooth.ep.oob": {}, 678 | "application/vnd.bluetooth.le.oob": {}, 679 | "application/vnd.bmi": { 680 | "extensions": ["bmi"] 681 | }, 682 | "application/vnd.businessobjects": { 683 | "extensions": ["rep"] 684 | }, 685 | "application/vnd.cab-jscript": {}, 686 | "application/vnd.canon-cpdl": {}, 687 | "application/vnd.canon-lips": {}, 688 | "application/vnd.cendio.thinlinc.clientconf": {}, 689 | "application/vnd.century-systems.tcp_stream": {}, 690 | "application/vnd.chemdraw+xml": { 691 | "extensions": ["cdxml"] 692 | }, 693 | "application/vnd.chess-pgn": {}, 694 | "application/vnd.chipnuts.karaoke-mmd": { 695 | "extensions": ["mmd"] 696 | }, 697 | "application/vnd.cinderella": { 698 | "extensions": ["cdy"] 699 | }, 700 | "application/vnd.cirpack.isdn-ext": {}, 701 | "application/vnd.citationstyles.style+xml": {}, 702 | "application/vnd.claymore": { 703 | "extensions": ["cla"] 704 | }, 705 | "application/vnd.cloanto.rp9": { 706 | "extensions": ["rp9"] 707 | }, 708 | "application/vnd.clonk.c4group": { 709 | "extensions": ["c4g","c4d","c4f","c4p","c4u"] 710 | }, 711 | "application/vnd.cluetrust.cartomobile-config": { 712 | "extensions": ["c11amc"] 713 | }, 714 | "application/vnd.cluetrust.cartomobile-config-pkg": { 715 | "extensions": ["c11amz"] 716 | }, 717 | "application/vnd.coffeescript": {}, 718 | "application/vnd.collection+json": {}, 719 | "application/vnd.collection.doc+json": {}, 720 | "application/vnd.collection.next+json": {}, 721 | "application/vnd.comicbook+zip": {}, 722 | "application/vnd.commerce-battelle": {}, 723 | "application/vnd.commonspace": { 724 | "extensions": ["csp"] 725 | }, 726 | "application/vnd.contact.cmsg": { 727 | "extensions": ["cdbcmsg"] 728 | }, 729 | "application/vnd.coreos.ignition+json": {}, 730 | "application/vnd.cosmocaller": { 731 | "extensions": ["cmc"] 732 | }, 733 | "application/vnd.crick.clicker": { 734 | "extensions": ["clkx"] 735 | }, 736 | "application/vnd.crick.clicker.keyboard": { 737 | "extensions": ["clkk"] 738 | }, 739 | "application/vnd.crick.clicker.palette": { 740 | "extensions": ["clkp"] 741 | }, 742 | "application/vnd.crick.clicker.template": { 743 | "extensions": ["clkt"] 744 | }, 745 | "application/vnd.crick.clicker.wordbank": { 746 | "extensions": ["clkw"] 747 | }, 748 | "application/vnd.criticaltools.wbs+xml": { 749 | "extensions": ["wbs"] 750 | }, 751 | "application/vnd.ctc-posml": { 752 | "extensions": ["pml"] 753 | }, 754 | "application/vnd.ctct.ws+xml": {}, 755 | "application/vnd.cups-pdf": {}, 756 | "application/vnd.cups-postscript": {}, 757 | "application/vnd.cups-ppd": { 758 | "extensions": ["ppd"] 759 | }, 760 | "application/vnd.cups-raster": {}, 761 | "application/vnd.cups-raw": {}, 762 | "application/vnd.curl": {}, 763 | "application/vnd.curl.car": { 764 | "extensions": ["car"] 765 | }, 766 | "application/vnd.curl.pcurl": { 767 | "extensions": ["pcurl"] 768 | }, 769 | "application/vnd.cyan.dean.root+xml": {}, 770 | "application/vnd.cybank": {}, 771 | "application/vnd.dart": { 772 | "extensions": ["dart"] 773 | }, 774 | "application/vnd.data-vision.rdz": { 775 | "extensions": ["rdz"] 776 | }, 777 | "application/vnd.debian.binary-package": {}, 778 | "application/vnd.dece.data": { 779 | "extensions": ["uvf","uvvf","uvd","uvvd"] 780 | }, 781 | "application/vnd.dece.ttml+xml": { 782 | "extensions": ["uvt","uvvt"] 783 | }, 784 | "application/vnd.dece.unspecified": { 785 | "extensions": ["uvx","uvvx"] 786 | }, 787 | "application/vnd.dece.zip": { 788 | "extensions": ["uvz","uvvz"] 789 | }, 790 | "application/vnd.denovo.fcselayout-link": { 791 | "extensions": ["fe_launch"] 792 | }, 793 | "application/vnd.desmume.movie": {}, 794 | "application/vnd.dir-bi.plate-dl-nosuffix": {}, 795 | "application/vnd.dm.delegation+xml": {}, 796 | "application/vnd.dna": { 797 | "extensions": ["dna"] 798 | }, 799 | "application/vnd.document+json": {}, 800 | "application/vnd.dolby.mlp": { 801 | "extensions": ["mlp"] 802 | }, 803 | "application/vnd.dolby.mobile.1": {}, 804 | "application/vnd.dolby.mobile.2": {}, 805 | "application/vnd.doremir.scorecloud-binary-document": {}, 806 | "application/vnd.dpgraph": { 807 | "extensions": ["dpg"] 808 | }, 809 | "application/vnd.dreamfactory": { 810 | "extensions": ["dfac"] 811 | }, 812 | "application/vnd.drive+json": {}, 813 | "application/vnd.ds-keypoint": { 814 | "extensions": ["kpxx"] 815 | }, 816 | "application/vnd.dtg.local": {}, 817 | "application/vnd.dtg.local.flash": {}, 818 | "application/vnd.dtg.local.html": {}, 819 | "application/vnd.dvb.ait": { 820 | "extensions": ["ait"] 821 | }, 822 | "application/vnd.dvb.dvbj": {}, 823 | "application/vnd.dvb.esgcontainer": {}, 824 | "application/vnd.dvb.ipdcdftnotifaccess": {}, 825 | "application/vnd.dvb.ipdcesgaccess": {}, 826 | "application/vnd.dvb.ipdcesgaccess2": {}, 827 | "application/vnd.dvb.ipdcesgpdd": {}, 828 | "application/vnd.dvb.ipdcroaming": {}, 829 | "application/vnd.dvb.iptv.alfec-base": {}, 830 | "application/vnd.dvb.iptv.alfec-enhancement": {}, 831 | "application/vnd.dvb.notif-aggregate-root+xml": {}, 832 | "application/vnd.dvb.notif-container+xml": {}, 833 | "application/vnd.dvb.notif-generic+xml": {}, 834 | "application/vnd.dvb.notif-ia-msglist+xml": {}, 835 | "application/vnd.dvb.notif-ia-registration-request+xml": {}, 836 | "application/vnd.dvb.notif-ia-registration-response+xml": {}, 837 | "application/vnd.dvb.notif-init+xml": {}, 838 | "application/vnd.dvb.pfr": {}, 839 | "application/vnd.dvb.service": { 840 | "extensions": ["svc"] 841 | }, 842 | "application/vnd.dxr": {}, 843 | "application/vnd.dynageo": { 844 | "extensions": ["geo"] 845 | }, 846 | "application/vnd.dzr": {}, 847 | "application/vnd.easykaraoke.cdgdownload": {}, 848 | "application/vnd.ecdis-update": {}, 849 | "application/vnd.ecowin.chart": { 850 | "extensions": ["mag"] 851 | }, 852 | "application/vnd.ecowin.filerequest": {}, 853 | "application/vnd.ecowin.fileupdate": {}, 854 | "application/vnd.ecowin.series": {}, 855 | "application/vnd.ecowin.seriesrequest": {}, 856 | "application/vnd.ecowin.seriesupdate": {}, 857 | "application/vnd.emclient.accessrequest+xml": {}, 858 | "application/vnd.enliven": { 859 | "extensions": ["nml"] 860 | }, 861 | "application/vnd.enphase.envoy": {}, 862 | "application/vnd.eprints.data+xml": {}, 863 | "application/vnd.epson.esf": { 864 | "extensions": ["esf"] 865 | }, 866 | "application/vnd.epson.msf": { 867 | "extensions": ["msf"] 868 | }, 869 | "application/vnd.epson.quickanime": { 870 | "extensions": ["qam"] 871 | }, 872 | "application/vnd.epson.salt": { 873 | "extensions": ["slt"] 874 | }, 875 | "application/vnd.epson.ssf": { 876 | "extensions": ["ssf"] 877 | }, 878 | "application/vnd.ericsson.quickcall": {}, 879 | "application/vnd.eszigno3+xml": { 880 | "extensions": ["es3","et3"] 881 | }, 882 | "application/vnd.etsi.aoc+xml": {}, 883 | "application/vnd.etsi.asic-e+zip": {}, 884 | "application/vnd.etsi.asic-s+zip": {}, 885 | "application/vnd.etsi.cug+xml": {}, 886 | "application/vnd.etsi.iptvcommand+xml": {}, 887 | "application/vnd.etsi.iptvdiscovery+xml": {}, 888 | "application/vnd.etsi.iptvprofile+xml": {}, 889 | "application/vnd.etsi.iptvsad-bc+xml": {}, 890 | "application/vnd.etsi.iptvsad-cod+xml": {}, 891 | "application/vnd.etsi.iptvsad-npvr+xml": {}, 892 | "application/vnd.etsi.iptvservice+xml": {}, 893 | "application/vnd.etsi.iptvsync+xml": {}, 894 | "application/vnd.etsi.iptvueprofile+xml": {}, 895 | "application/vnd.etsi.mcid+xml": {}, 896 | "application/vnd.etsi.mheg5": {}, 897 | "application/vnd.etsi.overload-control-policy-dataset+xml": {}, 898 | "application/vnd.etsi.pstn+xml": {}, 899 | "application/vnd.etsi.sci+xml": {}, 900 | "application/vnd.etsi.simservs+xml": {}, 901 | "application/vnd.etsi.timestamp-token": {}, 902 | "application/vnd.etsi.tsl+xml": {}, 903 | "application/vnd.etsi.tsl.der": {}, 904 | "application/vnd.eudora.data": {}, 905 | "application/vnd.ezpix-album": { 906 | "extensions": ["ez2"] 907 | }, 908 | "application/vnd.ezpix-package": { 909 | "extensions": ["ez3"] 910 | }, 911 | "application/vnd.f-secure.mobile": {}, 912 | "application/vnd.fastcopy-disk-image": {}, 913 | "application/vnd.fdf": { 914 | "extensions": ["fdf"] 915 | }, 916 | "application/vnd.fdsn.mseed": { 917 | "extensions": ["mseed"] 918 | }, 919 | "application/vnd.fdsn.seed": { 920 | "extensions": ["seed","dataless"] 921 | }, 922 | "application/vnd.ffsns": {}, 923 | "application/vnd.filmit.zfc": {}, 924 | "application/vnd.fints": {}, 925 | "application/vnd.firemonkeys.cloudcell": {}, 926 | "application/vnd.flographit": { 927 | "extensions": ["gph"] 928 | }, 929 | "application/vnd.fluxtime.clip": { 930 | "extensions": ["ftc"] 931 | }, 932 | "application/vnd.font-fontforge-sfd": {}, 933 | "application/vnd.framemaker": { 934 | "extensions": ["fm","frame","maker","book"] 935 | }, 936 | "application/vnd.frogans.fnc": { 937 | "extensions": ["fnc"] 938 | }, 939 | "application/vnd.frogans.ltf": { 940 | "extensions": ["ltf"] 941 | }, 942 | "application/vnd.fsc.weblaunch": { 943 | "extensions": ["fsc"] 944 | }, 945 | "application/vnd.fujitsu.oasys": { 946 | "extensions": ["oas"] 947 | }, 948 | "application/vnd.fujitsu.oasys2": { 949 | "extensions": ["oa2"] 950 | }, 951 | "application/vnd.fujitsu.oasys3": { 952 | "extensions": ["oa3"] 953 | }, 954 | "application/vnd.fujitsu.oasysgp": { 955 | "extensions": ["fg5"] 956 | }, 957 | "application/vnd.fujitsu.oasysprs": { 958 | "extensions": ["bh2"] 959 | }, 960 | "application/vnd.fujixerox.art-ex": {}, 961 | "application/vnd.fujixerox.art4": {}, 962 | "application/vnd.fujixerox.ddd": { 963 | "extensions": ["ddd"] 964 | }, 965 | "application/vnd.fujixerox.docuworks": { 966 | "extensions": ["xdw"] 967 | }, 968 | "application/vnd.fujixerox.docuworks.binder": { 969 | "extensions": ["xbd"] 970 | }, 971 | "application/vnd.fujixerox.docuworks.container": {}, 972 | "application/vnd.fujixerox.hbpl": {}, 973 | "application/vnd.fut-misnet": {}, 974 | "application/vnd.fuzzysheet": { 975 | "extensions": ["fzs"] 976 | }, 977 | "application/vnd.genomatix.tuxedo": { 978 | "extensions": ["txd"] 979 | }, 980 | "application/vnd.geo+json": {}, 981 | "application/vnd.geocube+xml": {}, 982 | "application/vnd.geogebra.file": { 983 | "extensions": ["ggb"] 984 | }, 985 | "application/vnd.geogebra.tool": { 986 | "extensions": ["ggt"] 987 | }, 988 | "application/vnd.geometry-explorer": { 989 | "extensions": ["gex","gre"] 990 | }, 991 | "application/vnd.geonext": { 992 | "extensions": ["gxt"] 993 | }, 994 | "application/vnd.geoplan": { 995 | "extensions": ["g2w"] 996 | }, 997 | "application/vnd.geospace": { 998 | "extensions": ["g3w"] 999 | }, 1000 | "application/vnd.gerber": {}, 1001 | "application/vnd.globalplatform.card-content-mgt": {}, 1002 | "application/vnd.globalplatform.card-content-mgt-response": {}, 1003 | "application/vnd.gmx": { 1004 | "extensions": ["gmx"] 1005 | }, 1006 | "application/vnd.google-earth.kml+xml": { 1007 | "extensions": ["kml"] 1008 | }, 1009 | "application/vnd.google-earth.kmz": { 1010 | "extensions": ["kmz"] 1011 | }, 1012 | "application/vnd.gov.sk.e-form+xml": {}, 1013 | "application/vnd.gov.sk.e-form+zip": {}, 1014 | "application/vnd.gov.sk.xmldatacontainer+xml": {}, 1015 | "application/vnd.grafeq": { 1016 | "extensions": ["gqf","gqs"] 1017 | }, 1018 | "application/vnd.gridmp": {}, 1019 | "application/vnd.groove-account": { 1020 | "extensions": ["gac"] 1021 | }, 1022 | "application/vnd.groove-help": { 1023 | "extensions": ["ghf"] 1024 | }, 1025 | "application/vnd.groove-identity-message": { 1026 | "extensions": ["gim"] 1027 | }, 1028 | "application/vnd.groove-injector": { 1029 | "extensions": ["grv"] 1030 | }, 1031 | "application/vnd.groove-tool-message": { 1032 | "extensions": ["gtm"] 1033 | }, 1034 | "application/vnd.groove-tool-template": { 1035 | "extensions": ["tpl"] 1036 | }, 1037 | "application/vnd.groove-vcard": { 1038 | "extensions": ["vcg"] 1039 | }, 1040 | "application/vnd.hal+json": {}, 1041 | "application/vnd.hal+xml": { 1042 | "extensions": ["hal"] 1043 | }, 1044 | "application/vnd.handheld-entertainment+xml": { 1045 | "extensions": ["zmm"] 1046 | }, 1047 | "application/vnd.hbci": { 1048 | "extensions": ["hbci"] 1049 | }, 1050 | "application/vnd.hcl-bireports": {}, 1051 | "application/vnd.hdt": {}, 1052 | "application/vnd.heroku+json": {}, 1053 | "application/vnd.hhe.lesson-player": { 1054 | "extensions": ["les"] 1055 | }, 1056 | "application/vnd.hp-hpgl": { 1057 | "extensions": ["hpgl"] 1058 | }, 1059 | "application/vnd.hp-hpid": { 1060 | "extensions": ["hpid"] 1061 | }, 1062 | "application/vnd.hp-hps": { 1063 | "extensions": ["hps"] 1064 | }, 1065 | "application/vnd.hp-jlyt": { 1066 | "extensions": ["jlt"] 1067 | }, 1068 | "application/vnd.hp-pcl": { 1069 | "extensions": ["pcl"] 1070 | }, 1071 | "application/vnd.hp-pclxl": { 1072 | "extensions": ["pclxl"] 1073 | }, 1074 | "application/vnd.httphone": {}, 1075 | "application/vnd.hydrostatix.sof-data": { 1076 | "extensions": ["sfd-hdstx"] 1077 | }, 1078 | "application/vnd.hyperdrive+json": {}, 1079 | "application/vnd.hzn-3d-crossword": {}, 1080 | "application/vnd.ibm.afplinedata": {}, 1081 | "application/vnd.ibm.electronic-media": {}, 1082 | "application/vnd.ibm.minipay": { 1083 | "extensions": ["mpy"] 1084 | }, 1085 | "application/vnd.ibm.modcap": { 1086 | "extensions": ["afp","listafp","list3820"] 1087 | }, 1088 | "application/vnd.ibm.rights-management": { 1089 | "extensions": ["irm"] 1090 | }, 1091 | "application/vnd.ibm.secure-container": { 1092 | "extensions": ["sc"] 1093 | }, 1094 | "application/vnd.iccprofile": { 1095 | "extensions": ["icc","icm"] 1096 | }, 1097 | "application/vnd.ieee.1905": {}, 1098 | "application/vnd.igloader": { 1099 | "extensions": ["igl"] 1100 | }, 1101 | "application/vnd.immervision-ivp": { 1102 | "extensions": ["ivp"] 1103 | }, 1104 | "application/vnd.immervision-ivu": { 1105 | "extensions": ["ivu"] 1106 | }, 1107 | "application/vnd.ims.imsccv1p1": {}, 1108 | "application/vnd.ims.imsccv1p2": {}, 1109 | "application/vnd.ims.imsccv1p3": {}, 1110 | "application/vnd.ims.lis.v2.result+json": {}, 1111 | "application/vnd.ims.lti.v2.toolconsumerprofile+json": {}, 1112 | "application/vnd.ims.lti.v2.toolproxy+json": {}, 1113 | "application/vnd.ims.lti.v2.toolproxy.id+json": {}, 1114 | "application/vnd.ims.lti.v2.toolsettings+json": {}, 1115 | "application/vnd.ims.lti.v2.toolsettings.simple+json": {}, 1116 | "application/vnd.informedcontrol.rms+xml": {}, 1117 | "application/vnd.informix-visionary": {}, 1118 | "application/vnd.infotech.project": {}, 1119 | "application/vnd.infotech.project+xml": {}, 1120 | "application/vnd.innopath.wamp.notification": {}, 1121 | "application/vnd.insors.igm": { 1122 | "extensions": ["igm"] 1123 | }, 1124 | "application/vnd.intercon.formnet": { 1125 | "extensions": ["xpw","xpx"] 1126 | }, 1127 | "application/vnd.intergeo": { 1128 | "extensions": ["i2g"] 1129 | }, 1130 | "application/vnd.intertrust.digibox": {}, 1131 | "application/vnd.intertrust.nncp": {}, 1132 | "application/vnd.intu.qbo": { 1133 | "extensions": ["qbo"] 1134 | }, 1135 | "application/vnd.intu.qfx": { 1136 | "extensions": ["qfx"] 1137 | }, 1138 | "application/vnd.iptc.g2.catalogitem+xml": {}, 1139 | "application/vnd.iptc.g2.conceptitem+xml": {}, 1140 | "application/vnd.iptc.g2.knowledgeitem+xml": {}, 1141 | "application/vnd.iptc.g2.newsitem+xml": {}, 1142 | "application/vnd.iptc.g2.newsmessage+xml": {}, 1143 | "application/vnd.iptc.g2.packageitem+xml": {}, 1144 | "application/vnd.iptc.g2.planningitem+xml": {}, 1145 | "application/vnd.ipunplugged.rcprofile": { 1146 | "extensions": ["rcprofile"] 1147 | }, 1148 | "application/vnd.irepository.package+xml": { 1149 | "extensions": ["irp"] 1150 | }, 1151 | "application/vnd.is-xpr": { 1152 | "extensions": ["xpr"] 1153 | }, 1154 | "application/vnd.isac.fcs": { 1155 | "extensions": ["fcs"] 1156 | }, 1157 | "application/vnd.jam": { 1158 | "extensions": ["jam"] 1159 | }, 1160 | "application/vnd.japannet-directory-service": {}, 1161 | "application/vnd.japannet-jpnstore-wakeup": {}, 1162 | "application/vnd.japannet-payment-wakeup": {}, 1163 | "application/vnd.japannet-registration": {}, 1164 | "application/vnd.japannet-registration-wakeup": {}, 1165 | "application/vnd.japannet-setstore-wakeup": {}, 1166 | "application/vnd.japannet-verification": {}, 1167 | "application/vnd.japannet-verification-wakeup": {}, 1168 | "application/vnd.jcp.javame.midlet-rms": { 1169 | "extensions": ["rms"] 1170 | }, 1171 | "application/vnd.jisp": { 1172 | "extensions": ["jisp"] 1173 | }, 1174 | "application/vnd.joost.joda-archive": { 1175 | "extensions": ["joda"] 1176 | }, 1177 | "application/vnd.jsk.isdn-ngn": {}, 1178 | "application/vnd.kahootz": { 1179 | "extensions": ["ktz","ktr"] 1180 | }, 1181 | "application/vnd.kde.karbon": { 1182 | "extensions": ["karbon"] 1183 | }, 1184 | "application/vnd.kde.kchart": { 1185 | "extensions": ["chrt"] 1186 | }, 1187 | "application/vnd.kde.kformula": { 1188 | "extensions": ["kfo"] 1189 | }, 1190 | "application/vnd.kde.kivio": { 1191 | "extensions": ["flw"] 1192 | }, 1193 | "application/vnd.kde.kontour": { 1194 | "extensions": ["kon"] 1195 | }, 1196 | "application/vnd.kde.kpresenter": { 1197 | "extensions": ["kpr","kpt"] 1198 | }, 1199 | "application/vnd.kde.kspread": { 1200 | "extensions": ["ksp"] 1201 | }, 1202 | "application/vnd.kde.kword": { 1203 | "extensions": ["kwd","kwt"] 1204 | }, 1205 | "application/vnd.kenameaapp": { 1206 | "extensions": ["htke"] 1207 | }, 1208 | "application/vnd.kidspiration": { 1209 | "extensions": ["kia"] 1210 | }, 1211 | "application/vnd.kinar": { 1212 | "extensions": ["kne","knp"] 1213 | }, 1214 | "application/vnd.koan": { 1215 | "extensions": ["skp","skd","skt","skm"] 1216 | }, 1217 | "application/vnd.kodak-descriptor": { 1218 | "extensions": ["sse"] 1219 | }, 1220 | "application/vnd.las.las+xml": { 1221 | "extensions": ["lasxml"] 1222 | }, 1223 | "application/vnd.liberty-request+xml": {}, 1224 | "application/vnd.llamagraphics.life-balance.desktop": { 1225 | "extensions": ["lbd"] 1226 | }, 1227 | "application/vnd.llamagraphics.life-balance.exchange+xml": { 1228 | "extensions": ["lbe"] 1229 | }, 1230 | "application/vnd.lotus-1-2-3": { 1231 | "extensions": ["123"] 1232 | }, 1233 | "application/vnd.lotus-approach": { 1234 | "extensions": ["apr"] 1235 | }, 1236 | "application/vnd.lotus-freelance": { 1237 | "extensions": ["pre"] 1238 | }, 1239 | "application/vnd.lotus-notes": { 1240 | "extensions": ["nsf"] 1241 | }, 1242 | "application/vnd.lotus-organizer": { 1243 | "extensions": ["org"] 1244 | }, 1245 | "application/vnd.lotus-screencam": { 1246 | "extensions": ["scm"] 1247 | }, 1248 | "application/vnd.lotus-wordpro": { 1249 | "extensions": ["lwp"] 1250 | }, 1251 | "application/vnd.macports.portpkg": { 1252 | "extensions": ["portpkg"] 1253 | }, 1254 | "application/vnd.mapbox-vector-tile": {}, 1255 | "application/vnd.marlin.drm.actiontoken+xml": {}, 1256 | "application/vnd.marlin.drm.conftoken+xml": {}, 1257 | "application/vnd.marlin.drm.license+xml": {}, 1258 | "application/vnd.marlin.drm.mdcf": {}, 1259 | "application/vnd.mason+json": {}, 1260 | "application/vnd.maxmind.maxmind-db": {}, 1261 | "application/vnd.mcd": { 1262 | "extensions": ["mcd"] 1263 | }, 1264 | "application/vnd.medcalcdata": { 1265 | "extensions": ["mc1"] 1266 | }, 1267 | "application/vnd.mediastation.cdkey": { 1268 | "extensions": ["cdkey"] 1269 | }, 1270 | "application/vnd.meridian-slingshot": {}, 1271 | "application/vnd.mfer": { 1272 | "extensions": ["mwf"] 1273 | }, 1274 | "application/vnd.mfmp": { 1275 | "extensions": ["mfm"] 1276 | }, 1277 | "application/vnd.micro+json": {}, 1278 | "application/vnd.micrografx.flo": { 1279 | "extensions": ["flo"] 1280 | }, 1281 | "application/vnd.micrografx.igx": { 1282 | "extensions": ["igx"] 1283 | }, 1284 | "application/vnd.microsoft.portable-executable": {}, 1285 | "application/vnd.miele+json": {}, 1286 | "application/vnd.mif": { 1287 | "extensions": ["mif"] 1288 | }, 1289 | "application/vnd.minisoft-hp3000-save": {}, 1290 | "application/vnd.mitsubishi.misty-guard.trustweb": {}, 1291 | "application/vnd.mobius.daf": { 1292 | "extensions": ["daf"] 1293 | }, 1294 | "application/vnd.mobius.dis": { 1295 | "extensions": ["dis"] 1296 | }, 1297 | "application/vnd.mobius.mbk": { 1298 | "extensions": ["mbk"] 1299 | }, 1300 | "application/vnd.mobius.mqy": { 1301 | "extensions": ["mqy"] 1302 | }, 1303 | "application/vnd.mobius.msl": { 1304 | "extensions": ["msl"] 1305 | }, 1306 | "application/vnd.mobius.plc": { 1307 | "extensions": ["plc"] 1308 | }, 1309 | "application/vnd.mobius.txf": { 1310 | "extensions": ["txf"] 1311 | }, 1312 | "application/vnd.mophun.application": { 1313 | "extensions": ["mpn"] 1314 | }, 1315 | "application/vnd.mophun.certificate": { 1316 | "extensions": ["mpc"] 1317 | }, 1318 | "application/vnd.motorola.flexsuite": {}, 1319 | "application/vnd.motorola.flexsuite.adsi": {}, 1320 | "application/vnd.motorola.flexsuite.fis": {}, 1321 | "application/vnd.motorola.flexsuite.gotap": {}, 1322 | "application/vnd.motorola.flexsuite.kmr": {}, 1323 | "application/vnd.motorola.flexsuite.ttc": {}, 1324 | "application/vnd.motorola.flexsuite.wem": {}, 1325 | "application/vnd.motorola.iprm": {}, 1326 | "application/vnd.mozilla.xul+xml": { 1327 | "extensions": ["xul"] 1328 | }, 1329 | "application/vnd.ms-3mfdocument": {}, 1330 | "application/vnd.ms-artgalry": { 1331 | "extensions": ["cil"] 1332 | }, 1333 | "application/vnd.ms-asf": {}, 1334 | "application/vnd.ms-cab-compressed": { 1335 | "extensions": ["cab"] 1336 | }, 1337 | "application/vnd.ms-color.iccprofile": {}, 1338 | "application/vnd.ms-excel": { 1339 | "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] 1340 | }, 1341 | "application/vnd.ms-excel.addin.macroenabled.12": { 1342 | "extensions": ["xlam"] 1343 | }, 1344 | "application/vnd.ms-excel.sheet.binary.macroenabled.12": { 1345 | "extensions": ["xlsb"] 1346 | }, 1347 | "application/vnd.ms-excel.sheet.macroenabled.12": { 1348 | "extensions": ["xlsm"] 1349 | }, 1350 | "application/vnd.ms-excel.template.macroenabled.12": { 1351 | "extensions": ["xltm"] 1352 | }, 1353 | "application/vnd.ms-fontobject": { 1354 | "extensions": ["eot"] 1355 | }, 1356 | "application/vnd.ms-htmlhelp": { 1357 | "extensions": ["chm"] 1358 | }, 1359 | "application/vnd.ms-ims": { 1360 | "extensions": ["ims"] 1361 | }, 1362 | "application/vnd.ms-lrm": { 1363 | "extensions": ["lrm"] 1364 | }, 1365 | "application/vnd.ms-office.activex+xml": {}, 1366 | "application/vnd.ms-officetheme": { 1367 | "extensions": ["thmx"] 1368 | }, 1369 | "application/vnd.ms-opentype": {}, 1370 | "application/vnd.ms-package.obfuscated-opentype": {}, 1371 | "application/vnd.ms-pki.seccat": { 1372 | "extensions": ["cat"] 1373 | }, 1374 | "application/vnd.ms-pki.stl": { 1375 | "extensions": ["stl"] 1376 | }, 1377 | "application/vnd.ms-playready.initiator+xml": {}, 1378 | "application/vnd.ms-powerpoint": { 1379 | "extensions": ["ppt","pps","pot"] 1380 | }, 1381 | "application/vnd.ms-powerpoint.addin.macroenabled.12": { 1382 | "extensions": ["ppam"] 1383 | }, 1384 | "application/vnd.ms-powerpoint.presentation.macroenabled.12": { 1385 | "extensions": ["pptm"] 1386 | }, 1387 | "application/vnd.ms-powerpoint.slide.macroenabled.12": { 1388 | "extensions": ["sldm"] 1389 | }, 1390 | "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { 1391 | "extensions": ["ppsm"] 1392 | }, 1393 | "application/vnd.ms-powerpoint.template.macroenabled.12": { 1394 | "extensions": ["potm"] 1395 | }, 1396 | "application/vnd.ms-printdevicecapabilities+xml": {}, 1397 | "application/vnd.ms-printing.printticket+xml": {}, 1398 | "application/vnd.ms-printschematicket+xml": {}, 1399 | "application/vnd.ms-project": { 1400 | "extensions": ["mpp","mpt"] 1401 | }, 1402 | "application/vnd.ms-tnef": {}, 1403 | "application/vnd.ms-windows.devicepairing": {}, 1404 | "application/vnd.ms-windows.nwprinting.oob": {}, 1405 | "application/vnd.ms-windows.printerpairing": {}, 1406 | "application/vnd.ms-windows.wsd.oob": {}, 1407 | "application/vnd.ms-wmdrm.lic-chlg-req": {}, 1408 | "application/vnd.ms-wmdrm.lic-resp": {}, 1409 | "application/vnd.ms-wmdrm.meter-chlg-req": {}, 1410 | "application/vnd.ms-wmdrm.meter-resp": {}, 1411 | "application/vnd.ms-word.document.macroenabled.12": { 1412 | "extensions": ["docm"] 1413 | }, 1414 | "application/vnd.ms-word.template.macroenabled.12": { 1415 | "extensions": ["dotm"] 1416 | }, 1417 | "application/vnd.ms-works": { 1418 | "extensions": ["wps","wks","wcm","wdb"] 1419 | }, 1420 | "application/vnd.ms-wpl": { 1421 | "extensions": ["wpl"] 1422 | }, 1423 | "application/vnd.ms-xpsdocument": { 1424 | "extensions": ["xps"] 1425 | }, 1426 | "application/vnd.msa-disk-image": {}, 1427 | "application/vnd.mseq": { 1428 | "extensions": ["mseq"] 1429 | }, 1430 | "application/vnd.msign": {}, 1431 | "application/vnd.multiad.creator": {}, 1432 | "application/vnd.multiad.creator.cif": {}, 1433 | "application/vnd.music-niff": {}, 1434 | "application/vnd.musician": { 1435 | "extensions": ["mus"] 1436 | }, 1437 | "application/vnd.muvee.style": { 1438 | "extensions": ["msty"] 1439 | }, 1440 | "application/vnd.mynfc": { 1441 | "extensions": ["taglet"] 1442 | }, 1443 | "application/vnd.ncd.control": {}, 1444 | "application/vnd.ncd.reference": {}, 1445 | "application/vnd.nervana": {}, 1446 | "application/vnd.netfpx": {}, 1447 | "application/vnd.neurolanguage.nlu": { 1448 | "extensions": ["nlu"] 1449 | }, 1450 | "application/vnd.nintendo.nitro.rom": {}, 1451 | "application/vnd.nintendo.snes.rom": {}, 1452 | "application/vnd.nitf": { 1453 | "extensions": ["ntf","nitf"] 1454 | }, 1455 | "application/vnd.noblenet-directory": { 1456 | "extensions": ["nnd"] 1457 | }, 1458 | "application/vnd.noblenet-sealer": { 1459 | "extensions": ["nns"] 1460 | }, 1461 | "application/vnd.noblenet-web": { 1462 | "extensions": ["nnw"] 1463 | }, 1464 | "application/vnd.nokia.catalogs": {}, 1465 | "application/vnd.nokia.conml+wbxml": {}, 1466 | "application/vnd.nokia.conml+xml": {}, 1467 | "application/vnd.nokia.iptv.config+xml": {}, 1468 | "application/vnd.nokia.isds-radio-presets": {}, 1469 | "application/vnd.nokia.landmark+wbxml": {}, 1470 | "application/vnd.nokia.landmark+xml": {}, 1471 | "application/vnd.nokia.landmarkcollection+xml": {}, 1472 | "application/vnd.nokia.n-gage.ac+xml": {}, 1473 | "application/vnd.nokia.n-gage.data": { 1474 | "extensions": ["ngdat"] 1475 | }, 1476 | "application/vnd.nokia.n-gage.symbian.install": { 1477 | "extensions": ["n-gage"] 1478 | }, 1479 | "application/vnd.nokia.ncd": {}, 1480 | "application/vnd.nokia.pcd+wbxml": {}, 1481 | "application/vnd.nokia.pcd+xml": {}, 1482 | "application/vnd.nokia.radio-preset": { 1483 | "extensions": ["rpst"] 1484 | }, 1485 | "application/vnd.nokia.radio-presets": { 1486 | "extensions": ["rpss"] 1487 | }, 1488 | "application/vnd.novadigm.edm": { 1489 | "extensions": ["edm"] 1490 | }, 1491 | "application/vnd.novadigm.edx": { 1492 | "extensions": ["edx"] 1493 | }, 1494 | "application/vnd.novadigm.ext": { 1495 | "extensions": ["ext"] 1496 | }, 1497 | "application/vnd.ntt-local.content-share": {}, 1498 | "application/vnd.ntt-local.file-transfer": {}, 1499 | "application/vnd.ntt-local.ogw_remote-access": {}, 1500 | "application/vnd.ntt-local.sip-ta_remote": {}, 1501 | "application/vnd.ntt-local.sip-ta_tcp_stream": {}, 1502 | "application/vnd.oasis.opendocument.chart": { 1503 | "extensions": ["odc"] 1504 | }, 1505 | "application/vnd.oasis.opendocument.chart-template": { 1506 | "extensions": ["otc"] 1507 | }, 1508 | "application/vnd.oasis.opendocument.database": { 1509 | "extensions": ["odb"] 1510 | }, 1511 | "application/vnd.oasis.opendocument.formula": { 1512 | "extensions": ["odf"] 1513 | }, 1514 | "application/vnd.oasis.opendocument.formula-template": { 1515 | "extensions": ["odft"] 1516 | }, 1517 | "application/vnd.oasis.opendocument.graphics": { 1518 | "extensions": ["odg"] 1519 | }, 1520 | "application/vnd.oasis.opendocument.graphics-template": { 1521 | "extensions": ["otg"] 1522 | }, 1523 | "application/vnd.oasis.opendocument.image": { 1524 | "extensions": ["odi"] 1525 | }, 1526 | "application/vnd.oasis.opendocument.image-template": { 1527 | "extensions": ["oti"] 1528 | }, 1529 | "application/vnd.oasis.opendocument.presentation": { 1530 | "extensions": ["odp"] 1531 | }, 1532 | "application/vnd.oasis.opendocument.presentation-template": { 1533 | "extensions": ["otp"] 1534 | }, 1535 | "application/vnd.oasis.opendocument.spreadsheet": { 1536 | "extensions": ["ods"] 1537 | }, 1538 | "application/vnd.oasis.opendocument.spreadsheet-template": { 1539 | "extensions": ["ots"] 1540 | }, 1541 | "application/vnd.oasis.opendocument.text": { 1542 | "extensions": ["odt"] 1543 | }, 1544 | "application/vnd.oasis.opendocument.text-master": { 1545 | "extensions": ["odm"] 1546 | }, 1547 | "application/vnd.oasis.opendocument.text-template": { 1548 | "extensions": ["ott"] 1549 | }, 1550 | "application/vnd.oasis.opendocument.text-web": { 1551 | "extensions": ["oth"] 1552 | }, 1553 | "application/vnd.obn": {}, 1554 | "application/vnd.oftn.l10n+json": {}, 1555 | "application/vnd.oipf.contentaccessdownload+xml": {}, 1556 | "application/vnd.oipf.contentaccessstreaming+xml": {}, 1557 | "application/vnd.oipf.cspg-hexbinary": {}, 1558 | "application/vnd.oipf.dae.svg+xml": {}, 1559 | "application/vnd.oipf.dae.xhtml+xml": {}, 1560 | "application/vnd.oipf.mippvcontrolmessage+xml": {}, 1561 | "application/vnd.oipf.pae.gem": {}, 1562 | "application/vnd.oipf.spdiscovery+xml": {}, 1563 | "application/vnd.oipf.spdlist+xml": {}, 1564 | "application/vnd.oipf.ueprofile+xml": {}, 1565 | "application/vnd.oipf.userprofile+xml": {}, 1566 | "application/vnd.olpc-sugar": { 1567 | "extensions": ["xo"] 1568 | }, 1569 | "application/vnd.oma-scws-config": {}, 1570 | "application/vnd.oma-scws-http-request": {}, 1571 | "application/vnd.oma-scws-http-response": {}, 1572 | "application/vnd.oma.bcast.associated-procedure-parameter+xml": {}, 1573 | "application/vnd.oma.bcast.drm-trigger+xml": {}, 1574 | "application/vnd.oma.bcast.imd+xml": {}, 1575 | "application/vnd.oma.bcast.ltkm": {}, 1576 | "application/vnd.oma.bcast.notification+xml": {}, 1577 | "application/vnd.oma.bcast.provisioningtrigger": {}, 1578 | "application/vnd.oma.bcast.sgboot": {}, 1579 | "application/vnd.oma.bcast.sgdd+xml": {}, 1580 | "application/vnd.oma.bcast.sgdu": {}, 1581 | "application/vnd.oma.bcast.simple-symbol-container": {}, 1582 | "application/vnd.oma.bcast.smartcard-trigger+xml": {}, 1583 | "application/vnd.oma.bcast.sprov+xml": {}, 1584 | "application/vnd.oma.bcast.stkm": {}, 1585 | "application/vnd.oma.cab-address-book+xml": {}, 1586 | "application/vnd.oma.cab-feature-handler+xml": {}, 1587 | "application/vnd.oma.cab-pcc+xml": {}, 1588 | "application/vnd.oma.cab-subs-invite+xml": {}, 1589 | "application/vnd.oma.cab-user-prefs+xml": {}, 1590 | "application/vnd.oma.dcd": {}, 1591 | "application/vnd.oma.dcdc": {}, 1592 | "application/vnd.oma.dd2+xml": { 1593 | "extensions": ["dd2"] 1594 | }, 1595 | "application/vnd.oma.drm.risd+xml": {}, 1596 | "application/vnd.oma.group-usage-list+xml": {}, 1597 | "application/vnd.oma.lwm2m+json": {}, 1598 | "application/vnd.oma.lwm2m+tlv": {}, 1599 | "application/vnd.oma.pal+xml": {}, 1600 | "application/vnd.oma.poc.detailed-progress-report+xml": {}, 1601 | "application/vnd.oma.poc.final-report+xml": {}, 1602 | "application/vnd.oma.poc.groups+xml": {}, 1603 | "application/vnd.oma.poc.invocation-descriptor+xml": {}, 1604 | "application/vnd.oma.poc.optimized-progress-report+xml": {}, 1605 | "application/vnd.oma.push": {}, 1606 | "application/vnd.oma.scidm.messages+xml": {}, 1607 | "application/vnd.oma.xcap-directory+xml": {}, 1608 | "application/vnd.omads-email+xml": {}, 1609 | "application/vnd.omads-file+xml": {}, 1610 | "application/vnd.omads-folder+xml": {}, 1611 | "application/vnd.omaloc-supl-init": {}, 1612 | "application/vnd.onepager": {}, 1613 | "application/vnd.openblox.game+xml": {}, 1614 | "application/vnd.openblox.game-binary": {}, 1615 | "application/vnd.openeye.oeb": {}, 1616 | "application/vnd.openofficeorg.extension": { 1617 | "extensions": ["oxt"] 1618 | }, 1619 | "application/vnd.openxmlformats-officedocument.custom-properties+xml": {}, 1620 | "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {}, 1621 | "application/vnd.openxmlformats-officedocument.drawing+xml": {}, 1622 | "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {}, 1623 | "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {}, 1624 | "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {}, 1625 | "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {}, 1626 | "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {}, 1627 | "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {}, 1628 | "application/vnd.openxmlformats-officedocument.extended-properties+xml": {}, 1629 | "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {}, 1630 | "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {}, 1631 | "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {}, 1632 | "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {}, 1633 | "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {}, 1634 | "application/vnd.openxmlformats-officedocument.presentationml.presentation": { 1635 | "extensions": ["pptx"] 1636 | }, 1637 | "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {}, 1638 | "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {}, 1639 | "application/vnd.openxmlformats-officedocument.presentationml.slide": { 1640 | "extensions": ["sldx"] 1641 | }, 1642 | "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {}, 1643 | "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {}, 1644 | "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {}, 1645 | "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { 1646 | "extensions": ["ppsx"] 1647 | }, 1648 | "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {}, 1649 | "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {}, 1650 | "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {}, 1651 | "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {}, 1652 | "application/vnd.openxmlformats-officedocument.presentationml.template": { 1653 | "extensions": ["potx"] 1654 | }, 1655 | "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {}, 1656 | "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {}, 1657 | "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {}, 1658 | "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {}, 1659 | "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {}, 1660 | "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {}, 1661 | "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {}, 1662 | "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {}, 1663 | "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {}, 1664 | "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {}, 1665 | "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {}, 1666 | "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {}, 1667 | "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {}, 1668 | "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {}, 1669 | "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {}, 1670 | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { 1671 | "extensions": ["xlsx"] 1672 | }, 1673 | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {}, 1674 | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {}, 1675 | "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {}, 1676 | "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {}, 1677 | "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {}, 1678 | "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { 1679 | "extensions": ["xltx"] 1680 | }, 1681 | "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {}, 1682 | "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {}, 1683 | "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {}, 1684 | "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {}, 1685 | "application/vnd.openxmlformats-officedocument.theme+xml": {}, 1686 | "application/vnd.openxmlformats-officedocument.themeoverride+xml": {}, 1687 | "application/vnd.openxmlformats-officedocument.vmldrawing": {}, 1688 | "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {}, 1689 | "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { 1690 | "extensions": ["docx"] 1691 | }, 1692 | "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {}, 1693 | "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {}, 1694 | "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {}, 1695 | "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {}, 1696 | "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {}, 1697 | "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {}, 1698 | "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {}, 1699 | "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {}, 1700 | "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {}, 1701 | "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { 1702 | "extensions": ["dotx"] 1703 | }, 1704 | "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {}, 1705 | "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {}, 1706 | "application/vnd.openxmlformats-package.core-properties+xml": {}, 1707 | "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {}, 1708 | "application/vnd.openxmlformats-package.relationships+xml": {}, 1709 | "application/vnd.oracle.resource+json": {}, 1710 | "application/vnd.orange.indata": {}, 1711 | "application/vnd.osa.netdeploy": {}, 1712 | "application/vnd.osgeo.mapguide.package": { 1713 | "extensions": ["mgp"] 1714 | }, 1715 | "application/vnd.osgi.bundle": {}, 1716 | "application/vnd.osgi.dp": { 1717 | "extensions": ["dp"] 1718 | }, 1719 | "application/vnd.osgi.subsystem": { 1720 | "extensions": ["esa"] 1721 | }, 1722 | "application/vnd.otps.ct-kip+xml": {}, 1723 | "application/vnd.oxli.countgraph": {}, 1724 | "application/vnd.pagerduty+json": {}, 1725 | "application/vnd.palm": { 1726 | "extensions": ["pdb","pqa","oprc"] 1727 | }, 1728 | "application/vnd.panoply": {}, 1729 | "application/vnd.paos.xml": {}, 1730 | "application/vnd.pawaafile": { 1731 | "extensions": ["paw"] 1732 | }, 1733 | "application/vnd.pcos": {}, 1734 | "application/vnd.pg.format": { 1735 | "extensions": ["str"] 1736 | }, 1737 | "application/vnd.pg.osasli": { 1738 | "extensions": ["ei6"] 1739 | }, 1740 | "application/vnd.piaccess.application-licence": {}, 1741 | "application/vnd.picsel": { 1742 | "extensions": ["efif"] 1743 | }, 1744 | "application/vnd.pmi.widget": { 1745 | "extensions": ["wg"] 1746 | }, 1747 | "application/vnd.poc.group-advertisement+xml": {}, 1748 | "application/vnd.pocketlearn": { 1749 | "extensions": ["plf"] 1750 | }, 1751 | "application/vnd.powerbuilder6": { 1752 | "extensions": ["pbd"] 1753 | }, 1754 | "application/vnd.powerbuilder6-s": {}, 1755 | "application/vnd.powerbuilder7": {}, 1756 | "application/vnd.powerbuilder7-s": {}, 1757 | "application/vnd.powerbuilder75": {}, 1758 | "application/vnd.powerbuilder75-s": {}, 1759 | "application/vnd.preminet": {}, 1760 | "application/vnd.previewsystems.box": { 1761 | "extensions": ["box"] 1762 | }, 1763 | "application/vnd.proteus.magazine": { 1764 | "extensions": ["mgz"] 1765 | }, 1766 | "application/vnd.publishare-delta-tree": { 1767 | "extensions": ["qps"] 1768 | }, 1769 | "application/vnd.pvi.ptid1": { 1770 | "extensions": ["ptid"] 1771 | }, 1772 | "application/vnd.pwg-multiplexed": {}, 1773 | "application/vnd.pwg-xhtml-print+xml": {}, 1774 | "application/vnd.qualcomm.brew-app-res": {}, 1775 | "application/vnd.quarantainenet": {}, 1776 | "application/vnd.quark.quarkxpress": { 1777 | "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] 1778 | }, 1779 | "application/vnd.quobject-quoxdocument": {}, 1780 | "application/vnd.radisys.moml+xml": {}, 1781 | "application/vnd.radisys.msml+xml": {}, 1782 | "application/vnd.radisys.msml-audit+xml": {}, 1783 | "application/vnd.radisys.msml-audit-conf+xml": {}, 1784 | "application/vnd.radisys.msml-audit-conn+xml": {}, 1785 | "application/vnd.radisys.msml-audit-dialog+xml": {}, 1786 | "application/vnd.radisys.msml-audit-stream+xml": {}, 1787 | "application/vnd.radisys.msml-conf+xml": {}, 1788 | "application/vnd.radisys.msml-dialog+xml": {}, 1789 | "application/vnd.radisys.msml-dialog-base+xml": {}, 1790 | "application/vnd.radisys.msml-dialog-fax-detect+xml": {}, 1791 | "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {}, 1792 | "application/vnd.radisys.msml-dialog-group+xml": {}, 1793 | "application/vnd.radisys.msml-dialog-speech+xml": {}, 1794 | "application/vnd.radisys.msml-dialog-transform+xml": {}, 1795 | "application/vnd.rainstor.data": {}, 1796 | "application/vnd.rapid": {}, 1797 | "application/vnd.rar": {}, 1798 | "application/vnd.realvnc.bed": { 1799 | "extensions": ["bed"] 1800 | }, 1801 | "application/vnd.recordare.musicxml": { 1802 | "extensions": ["mxl"] 1803 | }, 1804 | "application/vnd.recordare.musicxml+xml": { 1805 | "extensions": ["musicxml"] 1806 | }, 1807 | "application/vnd.renlearn.rlprint": {}, 1808 | "application/vnd.rig.cryptonote": { 1809 | "extensions": ["cryptonote"] 1810 | }, 1811 | "application/vnd.rim.cod": { 1812 | "extensions": ["cod"] 1813 | }, 1814 | "application/vnd.rn-realmedia": { 1815 | "extensions": ["rm"] 1816 | }, 1817 | "application/vnd.rn-realmedia-vbr": { 1818 | "extensions": ["rmvb"] 1819 | }, 1820 | "application/vnd.route66.link66+xml": { 1821 | "extensions": ["link66"] 1822 | }, 1823 | "application/vnd.rs-274x": {}, 1824 | "application/vnd.ruckus.download": {}, 1825 | "application/vnd.s3sms": {}, 1826 | "application/vnd.sailingtracker.track": { 1827 | "extensions": ["st"] 1828 | }, 1829 | "application/vnd.sbm.cid": {}, 1830 | "application/vnd.sbm.mid2": {}, 1831 | "application/vnd.scribus": {}, 1832 | "application/vnd.sealed.3df": {}, 1833 | "application/vnd.sealed.csf": {}, 1834 | "application/vnd.sealed.doc": {}, 1835 | "application/vnd.sealed.eml": {}, 1836 | "application/vnd.sealed.mht": {}, 1837 | "application/vnd.sealed.net": {}, 1838 | "application/vnd.sealed.ppt": {}, 1839 | "application/vnd.sealed.tiff": {}, 1840 | "application/vnd.sealed.xls": {}, 1841 | "application/vnd.sealedmedia.softseal.html": {}, 1842 | "application/vnd.sealedmedia.softseal.pdf": {}, 1843 | "application/vnd.seemail": { 1844 | "extensions": ["see"] 1845 | }, 1846 | "application/vnd.sema": { 1847 | "extensions": ["sema"] 1848 | }, 1849 | "application/vnd.semd": { 1850 | "extensions": ["semd"] 1851 | }, 1852 | "application/vnd.semf": { 1853 | "extensions": ["semf"] 1854 | }, 1855 | "application/vnd.shana.informed.formdata": { 1856 | "extensions": ["ifm"] 1857 | }, 1858 | "application/vnd.shana.informed.formtemplate": { 1859 | "extensions": ["itp"] 1860 | }, 1861 | "application/vnd.shana.informed.interchange": { 1862 | "extensions": ["iif"] 1863 | }, 1864 | "application/vnd.shana.informed.package": { 1865 | "extensions": ["ipk"] 1866 | }, 1867 | "application/vnd.simtech-mindmapper": { 1868 | "extensions": ["twd","twds"] 1869 | }, 1870 | "application/vnd.siren+json": {}, 1871 | "application/vnd.smaf": { 1872 | "extensions": ["mmf"] 1873 | }, 1874 | "application/vnd.smart.notebook": {}, 1875 | "application/vnd.smart.teacher": { 1876 | "extensions": ["teacher"] 1877 | }, 1878 | "application/vnd.software602.filler.form+xml": {}, 1879 | "application/vnd.software602.filler.form-xml-zip": {}, 1880 | "application/vnd.solent.sdkm+xml": { 1881 | "extensions": ["sdkm","sdkd"] 1882 | }, 1883 | "application/vnd.spotfire.dxp": { 1884 | "extensions": ["dxp"] 1885 | }, 1886 | "application/vnd.spotfire.sfs": { 1887 | "extensions": ["sfs"] 1888 | }, 1889 | "application/vnd.sss-cod": {}, 1890 | "application/vnd.sss-dtf": {}, 1891 | "application/vnd.sss-ntf": {}, 1892 | "application/vnd.stardivision.calc": { 1893 | "extensions": ["sdc"] 1894 | }, 1895 | "application/vnd.stardivision.draw": { 1896 | "extensions": ["sda"] 1897 | }, 1898 | "application/vnd.stardivision.impress": { 1899 | "extensions": ["sdd"] 1900 | }, 1901 | "application/vnd.stardivision.math": { 1902 | "extensions": ["smf"] 1903 | }, 1904 | "application/vnd.stardivision.writer": { 1905 | "extensions": ["sdw","vor"] 1906 | }, 1907 | "application/vnd.stardivision.writer-global": { 1908 | "extensions": ["sgl"] 1909 | }, 1910 | "application/vnd.stepmania.package": { 1911 | "extensions": ["smzip"] 1912 | }, 1913 | "application/vnd.stepmania.stepchart": { 1914 | "extensions": ["sm"] 1915 | }, 1916 | "application/vnd.street-stream": {}, 1917 | "application/vnd.sun.wadl+xml": {}, 1918 | "application/vnd.sun.xml.calc": { 1919 | "extensions": ["sxc"] 1920 | }, 1921 | "application/vnd.sun.xml.calc.template": { 1922 | "extensions": ["stc"] 1923 | }, 1924 | "application/vnd.sun.xml.draw": { 1925 | "extensions": ["sxd"] 1926 | }, 1927 | "application/vnd.sun.xml.draw.template": { 1928 | "extensions": ["std"] 1929 | }, 1930 | "application/vnd.sun.xml.impress": { 1931 | "extensions": ["sxi"] 1932 | }, 1933 | "application/vnd.sun.xml.impress.template": { 1934 | "extensions": ["sti"] 1935 | }, 1936 | "application/vnd.sun.xml.math": { 1937 | "extensions": ["sxm"] 1938 | }, 1939 | "application/vnd.sun.xml.writer": { 1940 | "extensions": ["sxw"] 1941 | }, 1942 | "application/vnd.sun.xml.writer.global": { 1943 | "extensions": ["sxg"] 1944 | }, 1945 | "application/vnd.sun.xml.writer.template": { 1946 | "extensions": ["stw"] 1947 | }, 1948 | "application/vnd.sus-calendar": { 1949 | "extensions": ["sus","susp"] 1950 | }, 1951 | "application/vnd.svd": { 1952 | "extensions": ["svd"] 1953 | }, 1954 | "application/vnd.swiftview-ics": {}, 1955 | "application/vnd.symbian.install": { 1956 | "extensions": ["sis","sisx"] 1957 | }, 1958 | "application/vnd.syncml+xml": { 1959 | "extensions": ["xsm"] 1960 | }, 1961 | "application/vnd.syncml.dm+wbxml": { 1962 | "extensions": ["bdm"] 1963 | }, 1964 | "application/vnd.syncml.dm+xml": { 1965 | "extensions": ["xdm"] 1966 | }, 1967 | "application/vnd.syncml.dm.notification": {}, 1968 | "application/vnd.syncml.dmddf+wbxml": {}, 1969 | "application/vnd.syncml.dmddf+xml": {}, 1970 | "application/vnd.syncml.dmtnds+wbxml": {}, 1971 | "application/vnd.syncml.dmtnds+xml": {}, 1972 | "application/vnd.syncml.ds.notification": {}, 1973 | "application/vnd.tao.intent-module-archive": { 1974 | "extensions": ["tao"] 1975 | }, 1976 | "application/vnd.tcpdump.pcap": { 1977 | "extensions": ["pcap","cap","dmp"] 1978 | }, 1979 | "application/vnd.tmd.mediaflex.api+xml": {}, 1980 | "application/vnd.tml": {}, 1981 | "application/vnd.tmobile-livetv": { 1982 | "extensions": ["tmo"] 1983 | }, 1984 | "application/vnd.trid.tpt": { 1985 | "extensions": ["tpt"] 1986 | }, 1987 | "application/vnd.triscape.mxs": { 1988 | "extensions": ["mxs"] 1989 | }, 1990 | "application/vnd.trueapp": { 1991 | "extensions": ["tra"] 1992 | }, 1993 | "application/vnd.truedoc": {}, 1994 | "application/vnd.ubisoft.webplayer": {}, 1995 | "application/vnd.ufdl": { 1996 | "extensions": ["ufd","ufdl"] 1997 | }, 1998 | "application/vnd.uiq.theme": { 1999 | "extensions": ["utz"] 2000 | }, 2001 | "application/vnd.umajin": { 2002 | "extensions": ["umj"] 2003 | }, 2004 | "application/vnd.unity": { 2005 | "extensions": ["unityweb"] 2006 | }, 2007 | "application/vnd.uoml+xml": { 2008 | "extensions": ["uoml"] 2009 | }, 2010 | "application/vnd.uplanet.alert": {}, 2011 | "application/vnd.uplanet.alert-wbxml": {}, 2012 | "application/vnd.uplanet.bearer-choice": {}, 2013 | "application/vnd.uplanet.bearer-choice-wbxml": {}, 2014 | "application/vnd.uplanet.cacheop": {}, 2015 | "application/vnd.uplanet.cacheop-wbxml": {}, 2016 | "application/vnd.uplanet.channel": {}, 2017 | "application/vnd.uplanet.channel-wbxml": {}, 2018 | "application/vnd.uplanet.list": {}, 2019 | "application/vnd.uplanet.list-wbxml": {}, 2020 | "application/vnd.uplanet.listcmd": {}, 2021 | "application/vnd.uplanet.listcmd-wbxml": {}, 2022 | "application/vnd.uplanet.signal": {}, 2023 | "application/vnd.uri-map": {}, 2024 | "application/vnd.valve.source.material": {}, 2025 | "application/vnd.vcx": { 2026 | "extensions": ["vcx"] 2027 | }, 2028 | "application/vnd.vd-study": {}, 2029 | "application/vnd.vectorworks": {}, 2030 | "application/vnd.vel+json": {}, 2031 | "application/vnd.verimatrix.vcas": {}, 2032 | "application/vnd.vidsoft.vidconference": {}, 2033 | "application/vnd.visio": { 2034 | "extensions": ["vsd","vst","vss","vsw"] 2035 | }, 2036 | "application/vnd.visionary": { 2037 | "extensions": ["vis"] 2038 | }, 2039 | "application/vnd.vividence.scriptfile": {}, 2040 | "application/vnd.vsf": { 2041 | "extensions": ["vsf"] 2042 | }, 2043 | "application/vnd.wap.sic": {}, 2044 | "application/vnd.wap.slc": {}, 2045 | "application/vnd.wap.wbxml": { 2046 | "extensions": ["wbxml"] 2047 | }, 2048 | "application/vnd.wap.wmlc": { 2049 | "extensions": ["wmlc"] 2050 | }, 2051 | "application/vnd.wap.wmlscriptc": { 2052 | "extensions": ["wmlsc"] 2053 | }, 2054 | "application/vnd.webturbo": { 2055 | "extensions": ["wtb"] 2056 | }, 2057 | "application/vnd.wfa.p2p": {}, 2058 | "application/vnd.wfa.wsc": {}, 2059 | "application/vnd.windows.devicepairing": {}, 2060 | "application/vnd.wmc": {}, 2061 | "application/vnd.wmf.bootstrap": {}, 2062 | "application/vnd.wolfram.mathematica": {}, 2063 | "application/vnd.wolfram.mathematica.package": {}, 2064 | "application/vnd.wolfram.player": { 2065 | "extensions": ["nbp"] 2066 | }, 2067 | "application/vnd.wordperfect": { 2068 | "extensions": ["wpd"] 2069 | }, 2070 | "application/vnd.wqd": { 2071 | "extensions": ["wqd"] 2072 | }, 2073 | "application/vnd.wrq-hp3000-labelled": {}, 2074 | "application/vnd.wt.stf": { 2075 | "extensions": ["stf"] 2076 | }, 2077 | "application/vnd.wv.csp+wbxml": {}, 2078 | "application/vnd.wv.csp+xml": {}, 2079 | "application/vnd.wv.ssp+xml": {}, 2080 | "application/vnd.xacml+json": {}, 2081 | "application/vnd.xara": { 2082 | "extensions": ["xar"] 2083 | }, 2084 | "application/vnd.xfdl": { 2085 | "extensions": ["xfdl"] 2086 | }, 2087 | "application/vnd.xfdl.webform": {}, 2088 | "application/vnd.xmi+xml": {}, 2089 | "application/vnd.xmpie.cpkg": {}, 2090 | "application/vnd.xmpie.dpkg": {}, 2091 | "application/vnd.xmpie.plan": {}, 2092 | "application/vnd.xmpie.ppkg": {}, 2093 | "application/vnd.xmpie.xlim": {}, 2094 | "application/vnd.yamaha.hv-dic": { 2095 | "extensions": ["hvd"] 2096 | }, 2097 | "application/vnd.yamaha.hv-script": { 2098 | "extensions": ["hvs"] 2099 | }, 2100 | "application/vnd.yamaha.hv-voice": { 2101 | "extensions": ["hvp"] 2102 | }, 2103 | "application/vnd.yamaha.openscoreformat": { 2104 | "extensions": ["osf"] 2105 | }, 2106 | "application/vnd.yamaha.openscoreformat.osfpvg+xml": { 2107 | "extensions": ["osfpvg"] 2108 | }, 2109 | "application/vnd.yamaha.remote-setup": {}, 2110 | "application/vnd.yamaha.smaf-audio": { 2111 | "extensions": ["saf"] 2112 | }, 2113 | "application/vnd.yamaha.smaf-phrase": { 2114 | "extensions": ["spf"] 2115 | }, 2116 | "application/vnd.yamaha.through-ngn": {}, 2117 | "application/vnd.yamaha.tunnel-udpencap": {}, 2118 | "application/vnd.yaoweme": {}, 2119 | "application/vnd.yellowriver-custom-menu": { 2120 | "extensions": ["cmp"] 2121 | }, 2122 | "application/vnd.zul": { 2123 | "extensions": ["zir","zirz"] 2124 | }, 2125 | "application/vnd.zzazz.deck+xml": { 2126 | "extensions": ["zaz"] 2127 | }, 2128 | "application/voicexml+xml": { 2129 | "extensions": ["vxml"] 2130 | }, 2131 | "application/vq-rtcpxr": {}, 2132 | "application/watcherinfo+xml": {}, 2133 | "application/whoispp-query": {}, 2134 | "application/whoispp-response": {}, 2135 | "application/widget": { 2136 | "extensions": ["wgt"] 2137 | }, 2138 | "application/winhlp": { 2139 | "extensions": ["hlp"] 2140 | }, 2141 | "application/wita": {}, 2142 | "application/wordperfect5.1": {}, 2143 | "application/wsdl+xml": { 2144 | "extensions": ["wsdl"] 2145 | }, 2146 | "application/wspolicy+xml": { 2147 | "extensions": ["wspolicy"] 2148 | }, 2149 | "application/x-7z-compressed": { 2150 | "extensions": ["7z"] 2151 | }, 2152 | "application/x-abiword": { 2153 | "extensions": ["abw"] 2154 | }, 2155 | "application/x-ace-compressed": { 2156 | "extensions": ["ace"] 2157 | }, 2158 | "application/x-amf": {}, 2159 | "application/x-apple-diskimage": { 2160 | "extensions": ["dmg"] 2161 | }, 2162 | "application/x-authorware-bin": { 2163 | "extensions": ["aab","x32","u32","vox"] 2164 | }, 2165 | "application/x-authorware-map": { 2166 | "extensions": ["aam"] 2167 | }, 2168 | "application/x-authorware-seg": { 2169 | "extensions": ["aas"] 2170 | }, 2171 | "application/x-bcpio": { 2172 | "extensions": ["bcpio"] 2173 | }, 2174 | "application/x-bittorrent": { 2175 | "extensions": ["torrent"] 2176 | }, 2177 | "application/x-blorb": { 2178 | "extensions": ["blb","blorb"] 2179 | }, 2180 | "application/x-bzip": { 2181 | "extensions": ["bz"] 2182 | }, 2183 | "application/x-bzip2": { 2184 | "extensions": ["bz2","boz"] 2185 | }, 2186 | "application/x-cbr": { 2187 | "extensions": ["cbr","cba","cbt","cbz","cb7"] 2188 | }, 2189 | "application/x-cdlink": { 2190 | "extensions": ["vcd"] 2191 | }, 2192 | "application/x-cfs-compressed": { 2193 | "extensions": ["cfs"] 2194 | }, 2195 | "application/x-chat": { 2196 | "extensions": ["chat"] 2197 | }, 2198 | "application/x-chess-pgn": { 2199 | "extensions": ["pgn"] 2200 | }, 2201 | "application/x-compress": {}, 2202 | "application/x-conference": { 2203 | "extensions": ["nsc"] 2204 | }, 2205 | "application/x-cpio": { 2206 | "extensions": ["cpio"] 2207 | }, 2208 | "application/x-csh": { 2209 | "extensions": ["csh"] 2210 | }, 2211 | "application/x-debian-package": { 2212 | "extensions": ["deb","udeb"] 2213 | }, 2214 | "application/x-dgc-compressed": { 2215 | "extensions": ["dgc"] 2216 | }, 2217 | "application/x-director": { 2218 | "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] 2219 | }, 2220 | "application/x-doom": { 2221 | "extensions": ["wad"] 2222 | }, 2223 | "application/x-dtbncx+xml": { 2224 | "extensions": ["ncx"] 2225 | }, 2226 | "application/x-dtbook+xml": { 2227 | "extensions": ["dtb"] 2228 | }, 2229 | "application/x-dtbresource+xml": { 2230 | "extensions": ["res"] 2231 | }, 2232 | "application/x-dvi": { 2233 | "extensions": ["dvi"] 2234 | }, 2235 | "application/x-envoy": { 2236 | "extensions": ["evy"] 2237 | }, 2238 | "application/x-eva": { 2239 | "extensions": ["eva"] 2240 | }, 2241 | "application/x-font-bdf": { 2242 | "extensions": ["bdf"] 2243 | }, 2244 | "application/x-font-dos": {}, 2245 | "application/x-font-framemaker": {}, 2246 | "application/x-font-ghostscript": { 2247 | "extensions": ["gsf"] 2248 | }, 2249 | "application/x-font-libgrx": {}, 2250 | "application/x-font-linux-psf": { 2251 | "extensions": ["psf"] 2252 | }, 2253 | "application/x-font-pcf": { 2254 | "extensions": ["pcf"] 2255 | }, 2256 | "application/x-font-snf": { 2257 | "extensions": ["snf"] 2258 | }, 2259 | "application/x-font-speedo": {}, 2260 | "application/x-font-sunos-news": {}, 2261 | "application/x-font-type1": { 2262 | "extensions": ["pfa","pfb","pfm","afm"] 2263 | }, 2264 | "application/x-font-vfont": {}, 2265 | "application/x-freearc": { 2266 | "extensions": ["arc"] 2267 | }, 2268 | "application/x-futuresplash": { 2269 | "extensions": ["spl"] 2270 | }, 2271 | "application/x-gca-compressed": { 2272 | "extensions": ["gca"] 2273 | }, 2274 | "application/x-glulx": { 2275 | "extensions": ["ulx"] 2276 | }, 2277 | "application/x-gnumeric": { 2278 | "extensions": ["gnumeric"] 2279 | }, 2280 | "application/x-gramps-xml": { 2281 | "extensions": ["gramps"] 2282 | }, 2283 | "application/x-gtar": { 2284 | "extensions": ["gtar"] 2285 | }, 2286 | "application/x-gzip": {}, 2287 | "application/x-hdf": { 2288 | "extensions": ["hdf"] 2289 | }, 2290 | "application/x-install-instructions": { 2291 | "extensions": ["install"] 2292 | }, 2293 | "application/x-iso9660-image": { 2294 | "extensions": ["iso"] 2295 | }, 2296 | "application/x-java-jnlp-file": { 2297 | "extensions": ["jnlp"] 2298 | }, 2299 | "application/x-latex": { 2300 | "extensions": ["latex"] 2301 | }, 2302 | "application/x-lzh-compressed": { 2303 | "extensions": ["lzh","lha"] 2304 | }, 2305 | "application/x-mie": { 2306 | "extensions": ["mie"] 2307 | }, 2308 | "application/x-mobipocket-ebook": { 2309 | "extensions": ["prc","mobi"] 2310 | }, 2311 | "application/x-ms-application": { 2312 | "extensions": ["application"] 2313 | }, 2314 | "application/x-ms-shortcut": { 2315 | "extensions": ["lnk"] 2316 | }, 2317 | "application/x-ms-wmd": { 2318 | "extensions": ["wmd"] 2319 | }, 2320 | "application/x-ms-wmz": { 2321 | "extensions": ["wmz"] 2322 | }, 2323 | "application/x-ms-xbap": { 2324 | "extensions": ["xbap"] 2325 | }, 2326 | "application/x-msaccess": { 2327 | "extensions": ["mdb"] 2328 | }, 2329 | "application/x-msbinder": { 2330 | "extensions": ["obd"] 2331 | }, 2332 | "application/x-mscardfile": { 2333 | "extensions": ["crd"] 2334 | }, 2335 | "application/x-msclip": { 2336 | "extensions": ["clp"] 2337 | }, 2338 | "application/x-msdownload": { 2339 | "extensions": ["exe","dll","com","bat","msi"] 2340 | }, 2341 | "application/x-msmediaview": { 2342 | "extensions": ["mvb","m13","m14"] 2343 | }, 2344 | "application/x-msmetafile": { 2345 | "extensions": ["wmf","wmz","emf","emz"] 2346 | }, 2347 | "application/x-msmoney": { 2348 | "extensions": ["mny"] 2349 | }, 2350 | "application/x-mspublisher": { 2351 | "extensions": ["pub"] 2352 | }, 2353 | "application/x-msschedule": { 2354 | "extensions": ["scd"] 2355 | }, 2356 | "application/x-msterminal": { 2357 | "extensions": ["trm"] 2358 | }, 2359 | "application/x-mswrite": { 2360 | "extensions": ["wri"] 2361 | }, 2362 | "application/x-netcdf": { 2363 | "extensions": ["nc","cdf"] 2364 | }, 2365 | "application/x-nzb": { 2366 | "extensions": ["nzb"] 2367 | }, 2368 | "application/x-pkcs12": { 2369 | "extensions": ["p12","pfx"] 2370 | }, 2371 | "application/x-pkcs7-certificates": { 2372 | "extensions": ["p7b","spc"] 2373 | }, 2374 | "application/x-pkcs7-certreqresp": { 2375 | "extensions": ["p7r"] 2376 | }, 2377 | "application/x-rar-compressed": { 2378 | "extensions": ["rar"] 2379 | }, 2380 | "application/x-research-info-systems": { 2381 | "extensions": ["ris"] 2382 | }, 2383 | "application/x-sh": { 2384 | "extensions": ["sh"] 2385 | }, 2386 | "application/x-shar": { 2387 | "extensions": ["shar"] 2388 | }, 2389 | "application/x-shockwave-flash": { 2390 | "extensions": ["swf"] 2391 | }, 2392 | "application/x-silverlight-app": { 2393 | "extensions": ["xap"] 2394 | }, 2395 | "application/x-sql": { 2396 | "extensions": ["sql"] 2397 | }, 2398 | "application/x-stuffit": { 2399 | "extensions": ["sit"] 2400 | }, 2401 | "application/x-stuffitx": { 2402 | "extensions": ["sitx"] 2403 | }, 2404 | "application/x-subrip": { 2405 | "extensions": ["srt"] 2406 | }, 2407 | "application/x-sv4cpio": { 2408 | "extensions": ["sv4cpio"] 2409 | }, 2410 | "application/x-sv4crc": { 2411 | "extensions": ["sv4crc"] 2412 | }, 2413 | "application/x-t3vm-image": { 2414 | "extensions": ["t3"] 2415 | }, 2416 | "application/x-tads": { 2417 | "extensions": ["gam"] 2418 | }, 2419 | "application/x-tar": { 2420 | "extensions": ["tar"] 2421 | }, 2422 | "application/x-tcl": { 2423 | "extensions": ["tcl"] 2424 | }, 2425 | "application/x-tex": { 2426 | "extensions": ["tex"] 2427 | }, 2428 | "application/x-tex-tfm": { 2429 | "extensions": ["tfm"] 2430 | }, 2431 | "application/x-texinfo": { 2432 | "extensions": ["texinfo","texi"] 2433 | }, 2434 | "application/x-tgif": { 2435 | "extensions": ["obj"] 2436 | }, 2437 | "application/x-ustar": { 2438 | "extensions": ["ustar"] 2439 | }, 2440 | "application/x-wais-source": { 2441 | "extensions": ["src"] 2442 | }, 2443 | "application/x-www-form-urlencoded": {}, 2444 | "application/x-x509-ca-cert": { 2445 | "extensions": ["der","crt"] 2446 | }, 2447 | "application/x-xfig": { 2448 | "extensions": ["fig"] 2449 | }, 2450 | "application/x-xliff+xml": { 2451 | "extensions": ["xlf"] 2452 | }, 2453 | "application/x-xpinstall": { 2454 | "extensions": ["xpi"] 2455 | }, 2456 | "application/x-xz": { 2457 | "extensions": ["xz"] 2458 | }, 2459 | "application/x-zmachine": { 2460 | "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] 2461 | }, 2462 | "application/x400-bp": {}, 2463 | "application/xacml+xml": {}, 2464 | "application/xaml+xml": { 2465 | "extensions": ["xaml"] 2466 | }, 2467 | "application/xcap-att+xml": {}, 2468 | "application/xcap-caps+xml": {}, 2469 | "application/xcap-diff+xml": { 2470 | "extensions": ["xdf"] 2471 | }, 2472 | "application/xcap-el+xml": {}, 2473 | "application/xcap-error+xml": {}, 2474 | "application/xcap-ns+xml": {}, 2475 | "application/xcon-conference-info+xml": {}, 2476 | "application/xcon-conference-info-diff+xml": {}, 2477 | "application/xenc+xml": { 2478 | "extensions": ["xenc"] 2479 | }, 2480 | "application/xhtml+xml": { 2481 | "extensions": ["xhtml","xht"] 2482 | }, 2483 | "application/xhtml-voice+xml": {}, 2484 | "application/xml": { 2485 | "extensions": ["xml","xsl"] 2486 | }, 2487 | "application/xml-dtd": { 2488 | "extensions": ["dtd"] 2489 | }, 2490 | "application/xml-external-parsed-entity": {}, 2491 | "application/xml-patch+xml": {}, 2492 | "application/xmpp+xml": {}, 2493 | "application/xop+xml": { 2494 | "extensions": ["xop"] 2495 | }, 2496 | "application/xproc+xml": { 2497 | "extensions": ["xpl"] 2498 | }, 2499 | "application/xslt+xml": { 2500 | "extensions": ["xslt"] 2501 | }, 2502 | "application/xspf+xml": { 2503 | "extensions": ["xspf"] 2504 | }, 2505 | "application/xv+xml": { 2506 | "extensions": ["mxml","xhvml","xvml","xvm"] 2507 | }, 2508 | "application/yang": { 2509 | "extensions": ["yang"] 2510 | }, 2511 | "application/yin+xml": { 2512 | "extensions": ["yin"] 2513 | }, 2514 | "application/zip": { 2515 | "extensions": ["zip"] 2516 | }, 2517 | "application/zlib": {}, 2518 | "audio/1d-interleaved-parityfec": {}, 2519 | "audio/32kadpcm": {}, 2520 | "audio/3gpp": {}, 2521 | "audio/3gpp2": {}, 2522 | "audio/ac3": {}, 2523 | "audio/adpcm": { 2524 | "extensions": ["adp"] 2525 | }, 2526 | "audio/amr": {}, 2527 | "audio/amr-wb": {}, 2528 | "audio/amr-wb+": {}, 2529 | "audio/aptx": {}, 2530 | "audio/asc": {}, 2531 | "audio/atrac-advanced-lossless": {}, 2532 | "audio/atrac-x": {}, 2533 | "audio/atrac3": {}, 2534 | "audio/basic": { 2535 | "extensions": ["au","snd"] 2536 | }, 2537 | "audio/bv16": {}, 2538 | "audio/bv32": {}, 2539 | "audio/clearmode": {}, 2540 | "audio/cn": {}, 2541 | "audio/dat12": {}, 2542 | "audio/dls": {}, 2543 | "audio/dsr-es201108": {}, 2544 | "audio/dsr-es202050": {}, 2545 | "audio/dsr-es202211": {}, 2546 | "audio/dsr-es202212": {}, 2547 | "audio/dv": {}, 2548 | "audio/dvi4": {}, 2549 | "audio/eac3": {}, 2550 | "audio/encaprtp": {}, 2551 | "audio/evrc": {}, 2552 | "audio/evrc-qcp": {}, 2553 | "audio/evrc0": {}, 2554 | "audio/evrc1": {}, 2555 | "audio/evrcb": {}, 2556 | "audio/evrcb0": {}, 2557 | "audio/evrcb1": {}, 2558 | "audio/evrcnw": {}, 2559 | "audio/evrcnw0": {}, 2560 | "audio/evrcnw1": {}, 2561 | "audio/evrcwb": {}, 2562 | "audio/evrcwb0": {}, 2563 | "audio/evrcwb1": {}, 2564 | "audio/evs": {}, 2565 | "audio/fwdred": {}, 2566 | "audio/g711-0": {}, 2567 | "audio/g719": {}, 2568 | "audio/g722": {}, 2569 | "audio/g7221": {}, 2570 | "audio/g723": {}, 2571 | "audio/g726-16": {}, 2572 | "audio/g726-24": {}, 2573 | "audio/g726-32": {}, 2574 | "audio/g726-40": {}, 2575 | "audio/g728": {}, 2576 | "audio/g729": {}, 2577 | "audio/g7291": {}, 2578 | "audio/g729d": {}, 2579 | "audio/g729e": {}, 2580 | "audio/gsm": {}, 2581 | "audio/gsm-efr": {}, 2582 | "audio/gsm-hr-08": {}, 2583 | "audio/ilbc": {}, 2584 | "audio/ip-mr_v2.5": {}, 2585 | "audio/isac": {}, 2586 | "audio/l16": {}, 2587 | "audio/l20": {}, 2588 | "audio/l24": {}, 2589 | "audio/l8": {}, 2590 | "audio/lpc": {}, 2591 | "audio/midi": { 2592 | "extensions": ["mid","midi","kar","rmi"] 2593 | }, 2594 | "audio/mobile-xmf": {}, 2595 | "audio/mp4": { 2596 | "extensions": ["m4a","mp4a"] 2597 | }, 2598 | "audio/mp4a-latm": {}, 2599 | "audio/mpa": {}, 2600 | "audio/mpa-robust": {}, 2601 | "audio/mpeg": { 2602 | "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] 2603 | }, 2604 | "audio/mpeg4-generic": {}, 2605 | "audio/musepack": {}, 2606 | "audio/ogg": { 2607 | "extensions": ["oga","ogg","spx","opus"] 2608 | }, 2609 | "audio/opus": {}, 2610 | "audio/parityfec": {}, 2611 | "audio/pcma": {}, 2612 | "audio/pcma-wb": {}, 2613 | "audio/pcmu": {}, 2614 | "audio/pcmu-wb": {}, 2615 | "audio/prs.sid": {}, 2616 | "audio/qcelp": {}, 2617 | "audio/raptorfec": {}, 2618 | "audio/red": {}, 2619 | "audio/rtp-enc-aescm128": {}, 2620 | "audio/rtp-midi": {}, 2621 | "audio/rtploopback": {}, 2622 | "audio/rtx": {}, 2623 | "audio/s3m": { 2624 | "extensions": ["s3m"] 2625 | }, 2626 | "audio/silk": { 2627 | "extensions": ["sil"] 2628 | }, 2629 | "audio/smv": {}, 2630 | "audio/smv-qcp": {}, 2631 | "audio/smv0": {}, 2632 | "audio/sp-midi": {}, 2633 | "audio/speex": {}, 2634 | "audio/t140c": {}, 2635 | "audio/t38": {}, 2636 | "audio/telephone-event": {}, 2637 | "audio/tone": {}, 2638 | "audio/uemclip": {}, 2639 | "audio/ulpfec": {}, 2640 | "audio/vdvi": {}, 2641 | "audio/vmr-wb": {}, 2642 | "audio/vnd.3gpp.iufp": {}, 2643 | "audio/vnd.4sb": {}, 2644 | "audio/vnd.audiokoz": {}, 2645 | "audio/vnd.celp": {}, 2646 | "audio/vnd.cisco.nse": {}, 2647 | "audio/vnd.cmles.radio-events": {}, 2648 | "audio/vnd.cns.anp1": {}, 2649 | "audio/vnd.cns.inf1": {}, 2650 | "audio/vnd.dece.audio": { 2651 | "extensions": ["uva","uvva"] 2652 | }, 2653 | "audio/vnd.digital-winds": { 2654 | "extensions": ["eol"] 2655 | }, 2656 | "audio/vnd.dlna.adts": {}, 2657 | "audio/vnd.dolby.heaac.1": {}, 2658 | "audio/vnd.dolby.heaac.2": {}, 2659 | "audio/vnd.dolby.mlp": {}, 2660 | "audio/vnd.dolby.mps": {}, 2661 | "audio/vnd.dolby.pl2": {}, 2662 | "audio/vnd.dolby.pl2x": {}, 2663 | "audio/vnd.dolby.pl2z": {}, 2664 | "audio/vnd.dolby.pulse.1": {}, 2665 | "audio/vnd.dra": { 2666 | "extensions": ["dra"] 2667 | }, 2668 | "audio/vnd.dts": { 2669 | "extensions": ["dts"] 2670 | }, 2671 | "audio/vnd.dts.hd": { 2672 | "extensions": ["dtshd"] 2673 | }, 2674 | "audio/vnd.dvb.file": {}, 2675 | "audio/vnd.everad.plj": {}, 2676 | "audio/vnd.hns.audio": {}, 2677 | "audio/vnd.lucent.voice": { 2678 | "extensions": ["lvp"] 2679 | }, 2680 | "audio/vnd.ms-playready.media.pya": { 2681 | "extensions": ["pya"] 2682 | }, 2683 | "audio/vnd.nokia.mobile-xmf": {}, 2684 | "audio/vnd.nortel.vbk": {}, 2685 | "audio/vnd.nuera.ecelp4800": { 2686 | "extensions": ["ecelp4800"] 2687 | }, 2688 | "audio/vnd.nuera.ecelp7470": { 2689 | "extensions": ["ecelp7470"] 2690 | }, 2691 | "audio/vnd.nuera.ecelp9600": { 2692 | "extensions": ["ecelp9600"] 2693 | }, 2694 | "audio/vnd.octel.sbc": {}, 2695 | "audio/vnd.qcelp": {}, 2696 | "audio/vnd.rhetorex.32kadpcm": {}, 2697 | "audio/vnd.rip": { 2698 | "extensions": ["rip"] 2699 | }, 2700 | "audio/vnd.sealedmedia.softseal.mpeg": {}, 2701 | "audio/vnd.vmx.cvsd": {}, 2702 | "audio/vorbis": {}, 2703 | "audio/vorbis-config": {}, 2704 | "audio/webm": { 2705 | "extensions": ["weba"] 2706 | }, 2707 | "audio/x-aac": { 2708 | "extensions": ["aac"] 2709 | }, 2710 | "audio/x-aiff": { 2711 | "extensions": ["aif","aiff","aifc"] 2712 | }, 2713 | "audio/x-caf": { 2714 | "extensions": ["caf"] 2715 | }, 2716 | "audio/x-flac": { 2717 | "extensions": ["flac"] 2718 | }, 2719 | "audio/x-matroska": { 2720 | "extensions": ["mka"] 2721 | }, 2722 | "audio/x-mpegurl": { 2723 | "extensions": ["m3u"] 2724 | }, 2725 | "audio/x-ms-wax": { 2726 | "extensions": ["wax"] 2727 | }, 2728 | "audio/x-ms-wma": { 2729 | "extensions": ["wma"] 2730 | }, 2731 | "audio/x-pn-realaudio": { 2732 | "extensions": ["ram","ra"] 2733 | }, 2734 | "audio/x-pn-realaudio-plugin": { 2735 | "extensions": ["rmp"] 2736 | }, 2737 | "audio/x-tta": {}, 2738 | "audio/x-wav": { 2739 | "extensions": ["wav"] 2740 | }, 2741 | "audio/xm": { 2742 | "extensions": ["xm"] 2743 | }, 2744 | "chemical/x-cdx": { 2745 | "extensions": ["cdx"] 2746 | }, 2747 | "chemical/x-cif": { 2748 | "extensions": ["cif"] 2749 | }, 2750 | "chemical/x-cmdf": { 2751 | "extensions": ["cmdf"] 2752 | }, 2753 | "chemical/x-cml": { 2754 | "extensions": ["cml"] 2755 | }, 2756 | "chemical/x-csml": { 2757 | "extensions": ["csml"] 2758 | }, 2759 | "chemical/x-pdb": {}, 2760 | "chemical/x-xyz": { 2761 | "extensions": ["xyz"] 2762 | }, 2763 | "font/collection": { 2764 | "extensions": ["ttc"] 2765 | }, 2766 | "font/otf": { 2767 | "extensions": ["otf"] 2768 | }, 2769 | "font/sfnt": {}, 2770 | "font/ttf": { 2771 | "extensions": ["ttf"] 2772 | }, 2773 | "font/woff": { 2774 | "extensions": ["woff"] 2775 | }, 2776 | "font/woff2": { 2777 | "extensions": ["woff2"] 2778 | }, 2779 | "image/bmp": { 2780 | "extensions": ["bmp"] 2781 | }, 2782 | "image/cgm": { 2783 | "extensions": ["cgm"] 2784 | }, 2785 | "image/dicom-rle": {}, 2786 | "image/emf": {}, 2787 | "image/fits": {}, 2788 | "image/g3fax": { 2789 | "extensions": ["g3"] 2790 | }, 2791 | "image/gif": { 2792 | "extensions": ["gif"] 2793 | }, 2794 | "image/ief": { 2795 | "extensions": ["ief"] 2796 | }, 2797 | "image/jls": {}, 2798 | "image/jp2": {}, 2799 | "image/jpeg": { 2800 | "extensions": ["jpeg","jpg","jpe"] 2801 | }, 2802 | "image/jpm": {}, 2803 | "image/jpx": {}, 2804 | "image/ktx": { 2805 | "extensions": ["ktx"] 2806 | }, 2807 | "image/naplps": {}, 2808 | "image/png": { 2809 | "extensions": ["png"] 2810 | }, 2811 | "image/prs.btif": { 2812 | "extensions": ["btif"] 2813 | }, 2814 | "image/prs.pti": {}, 2815 | "image/pwg-raster": {}, 2816 | "image/sgi": { 2817 | "extensions": ["sgi"] 2818 | }, 2819 | "image/svg+xml": { 2820 | "extensions": ["svg","svgz"] 2821 | }, 2822 | "image/t38": {}, 2823 | "image/tiff": { 2824 | "extensions": ["tiff","tif"] 2825 | }, 2826 | "image/tiff-fx": {}, 2827 | "image/vnd.adobe.photoshop": { 2828 | "extensions": ["psd"] 2829 | }, 2830 | "image/vnd.airzip.accelerator.azv": {}, 2831 | "image/vnd.cns.inf2": {}, 2832 | "image/vnd.dece.graphic": { 2833 | "extensions": ["uvi","uvvi","uvg","uvvg"] 2834 | }, 2835 | "image/vnd.djvu": { 2836 | "extensions": ["djvu","djv"] 2837 | }, 2838 | "image/vnd.dvb.subtitle": { 2839 | "extensions": ["sub"] 2840 | }, 2841 | "image/vnd.dwg": { 2842 | "extensions": ["dwg"] 2843 | }, 2844 | "image/vnd.dxf": { 2845 | "extensions": ["dxf"] 2846 | }, 2847 | "image/vnd.fastbidsheet": { 2848 | "extensions": ["fbs"] 2849 | }, 2850 | "image/vnd.fpx": { 2851 | "extensions": ["fpx"] 2852 | }, 2853 | "image/vnd.fst": { 2854 | "extensions": ["fst"] 2855 | }, 2856 | "image/vnd.fujixerox.edmics-mmr": { 2857 | "extensions": ["mmr"] 2858 | }, 2859 | "image/vnd.fujixerox.edmics-rlc": { 2860 | "extensions": ["rlc"] 2861 | }, 2862 | "image/vnd.globalgraphics.pgb": {}, 2863 | "image/vnd.microsoft.icon": {}, 2864 | "image/vnd.mix": {}, 2865 | "image/vnd.mozilla.apng": {}, 2866 | "image/vnd.ms-modi": { 2867 | "extensions": ["mdi"] 2868 | }, 2869 | "image/vnd.ms-photo": { 2870 | "extensions": ["wdp"] 2871 | }, 2872 | "image/vnd.net-fpx": { 2873 | "extensions": ["npx"] 2874 | }, 2875 | "image/vnd.radiance": {}, 2876 | "image/vnd.sealed.png": {}, 2877 | "image/vnd.sealedmedia.softseal.gif": {}, 2878 | "image/vnd.sealedmedia.softseal.jpg": {}, 2879 | "image/vnd.svf": {}, 2880 | "image/vnd.tencent.tap": {}, 2881 | "image/vnd.valve.source.texture": {}, 2882 | "image/vnd.wap.wbmp": { 2883 | "extensions": ["wbmp"] 2884 | }, 2885 | "image/vnd.xiff": { 2886 | "extensions": ["xif"] 2887 | }, 2888 | "image/vnd.zbrush.pcx": {}, 2889 | "image/webp": { 2890 | "extensions": ["webp"] 2891 | }, 2892 | "image/wmf": {}, 2893 | "image/x-3ds": { 2894 | "extensions": ["3ds"] 2895 | }, 2896 | "image/x-cmu-raster": { 2897 | "extensions": ["ras"] 2898 | }, 2899 | "image/x-cmx": { 2900 | "extensions": ["cmx"] 2901 | }, 2902 | "image/x-freehand": { 2903 | "extensions": ["fh","fhc","fh4","fh5","fh7"] 2904 | }, 2905 | "image/x-icon": { 2906 | "extensions": ["ico"] 2907 | }, 2908 | "image/x-mrsid-image": { 2909 | "extensions": ["sid"] 2910 | }, 2911 | "image/x-pcx": { 2912 | "extensions": ["pcx"] 2913 | }, 2914 | "image/x-pict": { 2915 | "extensions": ["pic","pct"] 2916 | }, 2917 | "image/x-portable-anymap": { 2918 | "extensions": ["pnm"] 2919 | }, 2920 | "image/x-portable-bitmap": { 2921 | "extensions": ["pbm"] 2922 | }, 2923 | "image/x-portable-graymap": { 2924 | "extensions": ["pgm"] 2925 | }, 2926 | "image/x-portable-pixmap": { 2927 | "extensions": ["ppm"] 2928 | }, 2929 | "image/x-rgb": { 2930 | "extensions": ["rgb"] 2931 | }, 2932 | "image/x-tga": { 2933 | "extensions": ["tga"] 2934 | }, 2935 | "image/x-xbitmap": { 2936 | "extensions": ["xbm"] 2937 | }, 2938 | "image/x-xpixmap": { 2939 | "extensions": ["xpm"] 2940 | }, 2941 | "image/x-xwindowdump": { 2942 | "extensions": ["xwd"] 2943 | }, 2944 | "message/cpim": {}, 2945 | "message/delivery-status": {}, 2946 | "message/disposition-notification": {}, 2947 | "message/external-body": {}, 2948 | "message/feedback-report": {}, 2949 | "message/global": {}, 2950 | "message/global-delivery-status": {}, 2951 | "message/global-disposition-notification": {}, 2952 | "message/global-headers": {}, 2953 | "message/http": {}, 2954 | "message/imdn+xml": {}, 2955 | "message/news": {}, 2956 | "message/partial": {}, 2957 | "message/rfc822": { 2958 | "extensions": ["eml","mime"] 2959 | }, 2960 | "message/s-http": {}, 2961 | "message/sip": {}, 2962 | "message/sipfrag": {}, 2963 | "message/tracking-status": {}, 2964 | "message/vnd.si.simp": {}, 2965 | "message/vnd.wfa.wsc": {}, 2966 | "model/gltf+json": {}, 2967 | "model/iges": { 2968 | "extensions": ["igs","iges"] 2969 | }, 2970 | "model/mesh": { 2971 | "extensions": ["msh","mesh","silo"] 2972 | }, 2973 | "model/vnd.collada+xml": { 2974 | "extensions": ["dae"] 2975 | }, 2976 | "model/vnd.dwf": { 2977 | "extensions": ["dwf"] 2978 | }, 2979 | "model/vnd.flatland.3dml": {}, 2980 | "model/vnd.gdl": { 2981 | "extensions": ["gdl"] 2982 | }, 2983 | "model/vnd.gs-gdl": {}, 2984 | "model/vnd.gs.gdl": {}, 2985 | "model/vnd.gtw": { 2986 | "extensions": ["gtw"] 2987 | }, 2988 | "model/vnd.moml+xml": {}, 2989 | "model/vnd.mts": { 2990 | "extensions": ["mts"] 2991 | }, 2992 | "model/vnd.opengex": {}, 2993 | "model/vnd.parasolid.transmit.binary": {}, 2994 | "model/vnd.parasolid.transmit.text": {}, 2995 | "model/vnd.rosette.annotated-data-model": {}, 2996 | "model/vnd.valve.source.compiled-map": {}, 2997 | "model/vnd.vtu": { 2998 | "extensions": ["vtu"] 2999 | }, 3000 | "model/vrml": { 3001 | "extensions": ["wrl","vrml"] 3002 | }, 3003 | "model/x3d+binary": { 3004 | "extensions": ["x3db","x3dbz"] 3005 | }, 3006 | "model/x3d+fastinfoset": {}, 3007 | "model/x3d+vrml": { 3008 | "extensions": ["x3dv","x3dvz"] 3009 | }, 3010 | "model/x3d+xml": { 3011 | "extensions": ["x3d","x3dz"] 3012 | }, 3013 | "model/x3d-vrml": {}, 3014 | "multipart/alternative": {}, 3015 | "multipart/appledouble": {}, 3016 | "multipart/byteranges": {}, 3017 | "multipart/digest": {}, 3018 | "multipart/encrypted": {}, 3019 | "multipart/form-data": {}, 3020 | "multipart/header-set": {}, 3021 | "multipart/mixed": {}, 3022 | "multipart/parallel": {}, 3023 | "multipart/related": {}, 3024 | "multipart/report": {}, 3025 | "multipart/signed": {}, 3026 | "multipart/voice-message": {}, 3027 | "multipart/x-mixed-replace": {}, 3028 | "text/1d-interleaved-parityfec": {}, 3029 | "text/cache-manifest": { 3030 | "extensions": ["appcache"] 3031 | }, 3032 | "text/calendar": { 3033 | "extensions": ["ics","ifb"] 3034 | }, 3035 | "text/css": { 3036 | "extensions": ["css"] 3037 | }, 3038 | "text/csv": { 3039 | "extensions": ["csv"] 3040 | }, 3041 | "text/csv-schema": {}, 3042 | "text/directory": {}, 3043 | "text/dns": {}, 3044 | "text/ecmascript": {}, 3045 | "text/encaprtp": {}, 3046 | "text/enriched": {}, 3047 | "text/fwdred": {}, 3048 | "text/grammar-ref-list": {}, 3049 | "text/html": { 3050 | "extensions": ["html","htm"] 3051 | }, 3052 | "text/javascript": {}, 3053 | "text/jcr-cnd": {}, 3054 | "text/markdown": {}, 3055 | "text/mizar": {}, 3056 | "text/n3": { 3057 | "extensions": ["n3"] 3058 | }, 3059 | "text/parameters": {}, 3060 | "text/parityfec": {}, 3061 | "text/plain": { 3062 | "extensions": ["txt","text","conf","def","list","log","in"] 3063 | }, 3064 | "text/provenance-notation": {}, 3065 | "text/prs.fallenstein.rst": {}, 3066 | "text/prs.lines.tag": { 3067 | "extensions": ["dsc"] 3068 | }, 3069 | "text/prs.prop.logic": {}, 3070 | "text/raptorfec": {}, 3071 | "text/red": {}, 3072 | "text/rfc822-headers": {}, 3073 | "text/richtext": { 3074 | "extensions": ["rtx"] 3075 | }, 3076 | "text/rtf": {}, 3077 | "text/rtp-enc-aescm128": {}, 3078 | "text/rtploopback": {}, 3079 | "text/rtx": {}, 3080 | "text/sgml": { 3081 | "extensions": ["sgml","sgm"] 3082 | }, 3083 | "text/t140": {}, 3084 | "text/tab-separated-values": { 3085 | "extensions": ["tsv"] 3086 | }, 3087 | "text/troff": { 3088 | "extensions": ["t","tr","roff","man","me","ms"] 3089 | }, 3090 | "text/turtle": { 3091 | "extensions": ["ttl"] 3092 | }, 3093 | "text/ulpfec": {}, 3094 | "text/uri-list": { 3095 | "extensions": ["uri","uris","urls"] 3096 | }, 3097 | "text/vcard": { 3098 | "extensions": ["vcard"] 3099 | }, 3100 | "text/vnd.a": {}, 3101 | "text/vnd.abc": {}, 3102 | "text/vnd.curl": { 3103 | "extensions": ["curl"] 3104 | }, 3105 | "text/vnd.curl.dcurl": { 3106 | "extensions": ["dcurl"] 3107 | }, 3108 | "text/vnd.curl.mcurl": { 3109 | "extensions": ["mcurl"] 3110 | }, 3111 | "text/vnd.curl.scurl": { 3112 | "extensions": ["scurl"] 3113 | }, 3114 | "text/vnd.debian.copyright": {}, 3115 | "text/vnd.dmclientscript": {}, 3116 | "text/vnd.dvb.subtitle": { 3117 | "extensions": ["sub"] 3118 | }, 3119 | "text/vnd.esmertec.theme-descriptor": {}, 3120 | "text/vnd.fly": { 3121 | "extensions": ["fly"] 3122 | }, 3123 | "text/vnd.fmi.flexstor": { 3124 | "extensions": ["flx"] 3125 | }, 3126 | "text/vnd.graphviz": { 3127 | "extensions": ["gv"] 3128 | }, 3129 | "text/vnd.in3d.3dml": { 3130 | "extensions": ["3dml"] 3131 | }, 3132 | "text/vnd.in3d.spot": { 3133 | "extensions": ["spot"] 3134 | }, 3135 | "text/vnd.iptc.newsml": {}, 3136 | "text/vnd.iptc.nitf": {}, 3137 | "text/vnd.latex-z": {}, 3138 | "text/vnd.motorola.reflex": {}, 3139 | "text/vnd.ms-mediapackage": {}, 3140 | "text/vnd.net2phone.commcenter.command": {}, 3141 | "text/vnd.radisys.msml-basic-layout": {}, 3142 | "text/vnd.si.uricatalogue": {}, 3143 | "text/vnd.sun.j2me.app-descriptor": { 3144 | "extensions": ["jad"] 3145 | }, 3146 | "text/vnd.trolltech.linguist": {}, 3147 | "text/vnd.wap.si": {}, 3148 | "text/vnd.wap.sl": {}, 3149 | "text/vnd.wap.wml": { 3150 | "extensions": ["wml"] 3151 | }, 3152 | "text/vnd.wap.wmlscript": { 3153 | "extensions": ["wmls"] 3154 | }, 3155 | "text/x-asm": { 3156 | "extensions": ["s","asm"] 3157 | }, 3158 | "text/x-c": { 3159 | "extensions": ["c","cc","cxx","cpp","h","hh","dic"] 3160 | }, 3161 | "text/x-fortran": { 3162 | "extensions": ["f","for","f77","f90"] 3163 | }, 3164 | "text/x-java-source": { 3165 | "extensions": ["java"] 3166 | }, 3167 | "text/x-nfo": { 3168 | "extensions": ["nfo"] 3169 | }, 3170 | "text/x-opml": { 3171 | "extensions": ["opml"] 3172 | }, 3173 | "text/x-pascal": { 3174 | "extensions": ["p","pas"] 3175 | }, 3176 | "text/x-setext": { 3177 | "extensions": ["etx"] 3178 | }, 3179 | "text/x-sfv": { 3180 | "extensions": ["sfv"] 3181 | }, 3182 | "text/x-uuencode": { 3183 | "extensions": ["uu"] 3184 | }, 3185 | "text/x-vcalendar": { 3186 | "extensions": ["vcs"] 3187 | }, 3188 | "text/x-vcard": { 3189 | "extensions": ["vcf"] 3190 | }, 3191 | "text/xml": {}, 3192 | "text/xml-external-parsed-entity": {}, 3193 | "video/1d-interleaved-parityfec": {}, 3194 | "video/3gpp": { 3195 | "extensions": ["3gp"] 3196 | }, 3197 | "video/3gpp-tt": {}, 3198 | "video/3gpp2": { 3199 | "extensions": ["3g2"] 3200 | }, 3201 | "video/bmpeg": {}, 3202 | "video/bt656": {}, 3203 | "video/celb": {}, 3204 | "video/dv": {}, 3205 | "video/encaprtp": {}, 3206 | "video/h261": { 3207 | "extensions": ["h261"] 3208 | }, 3209 | "video/h263": { 3210 | "extensions": ["h263"] 3211 | }, 3212 | "video/h263-1998": {}, 3213 | "video/h263-2000": {}, 3214 | "video/h264": { 3215 | "extensions": ["h264"] 3216 | }, 3217 | "video/h264-rcdo": {}, 3218 | "video/h264-svc": {}, 3219 | "video/h265": {}, 3220 | "video/iso.segment": {}, 3221 | "video/jpeg": { 3222 | "extensions": ["jpgv"] 3223 | }, 3224 | "video/jpeg2000": {}, 3225 | "video/jpm": { 3226 | "extensions": ["jpm","jpgm"] 3227 | }, 3228 | "video/mj2": { 3229 | "extensions": ["mj2","mjp2"] 3230 | }, 3231 | "video/mp1s": {}, 3232 | "video/mp2p": {}, 3233 | "video/mp2t": {}, 3234 | "video/mp4": { 3235 | "extensions": ["mp4","mp4v","mpg4"] 3236 | }, 3237 | "video/mp4v-es": {}, 3238 | "video/mpeg": { 3239 | "extensions": ["mpeg","mpg","mpe","m1v","m2v"] 3240 | }, 3241 | "video/mpeg4-generic": {}, 3242 | "video/mpv": {}, 3243 | "video/nv": {}, 3244 | "video/ogg": { 3245 | "extensions": ["ogv"] 3246 | }, 3247 | "video/parityfec": {}, 3248 | "video/pointer": {}, 3249 | "video/quicktime": { 3250 | "extensions": ["qt","mov"] 3251 | }, 3252 | "video/raptorfec": {}, 3253 | "video/raw": {}, 3254 | "video/rtp-enc-aescm128": {}, 3255 | "video/rtploopback": {}, 3256 | "video/rtx": {}, 3257 | "video/smpte292m": {}, 3258 | "video/ulpfec": {}, 3259 | "video/vc1": {}, 3260 | "video/vnd.cctv": {}, 3261 | "video/vnd.dece.hd": { 3262 | "extensions": ["uvh","uvvh"] 3263 | }, 3264 | "video/vnd.dece.mobile": { 3265 | "extensions": ["uvm","uvvm"] 3266 | }, 3267 | "video/vnd.dece.mp4": {}, 3268 | "video/vnd.dece.pd": { 3269 | "extensions": ["uvp","uvvp"] 3270 | }, 3271 | "video/vnd.dece.sd": { 3272 | "extensions": ["uvs","uvvs"] 3273 | }, 3274 | "video/vnd.dece.video": { 3275 | "extensions": ["uvv","uvvv"] 3276 | }, 3277 | "video/vnd.directv.mpeg": {}, 3278 | "video/vnd.directv.mpeg-tts": {}, 3279 | "video/vnd.dlna.mpeg-tts": {}, 3280 | "video/vnd.dvb.file": { 3281 | "extensions": ["dvb"] 3282 | }, 3283 | "video/vnd.fvt": { 3284 | "extensions": ["fvt"] 3285 | }, 3286 | "video/vnd.hns.video": {}, 3287 | "video/vnd.iptvforum.1dparityfec-1010": {}, 3288 | "video/vnd.iptvforum.1dparityfec-2005": {}, 3289 | "video/vnd.iptvforum.2dparityfec-1010": {}, 3290 | "video/vnd.iptvforum.2dparityfec-2005": {}, 3291 | "video/vnd.iptvforum.ttsavc": {}, 3292 | "video/vnd.iptvforum.ttsmpeg2": {}, 3293 | "video/vnd.motorola.video": {}, 3294 | "video/vnd.motorola.videop": {}, 3295 | "video/vnd.mpegurl": { 3296 | "extensions": ["mxu","m4u"] 3297 | }, 3298 | "video/vnd.ms-playready.media.pyv": { 3299 | "extensions": ["pyv"] 3300 | }, 3301 | "video/vnd.nokia.interleaved-multimedia": {}, 3302 | "video/vnd.nokia.videovoip": {}, 3303 | "video/vnd.objectvideo": {}, 3304 | "video/vnd.radgamettools.bink": {}, 3305 | "video/vnd.radgamettools.smacker": {}, 3306 | "video/vnd.sealed.mpeg1": {}, 3307 | "video/vnd.sealed.mpeg4": {}, 3308 | "video/vnd.sealed.swf": {}, 3309 | "video/vnd.sealedmedia.softseal.mov": {}, 3310 | "video/vnd.uvvu.mp4": { 3311 | "extensions": ["uvu","uvvu"] 3312 | }, 3313 | "video/vnd.vivo": { 3314 | "extensions": ["viv"] 3315 | }, 3316 | "video/vp8": {}, 3317 | "video/webm": { 3318 | "extensions": ["webm"] 3319 | }, 3320 | "video/x-f4v": { 3321 | "extensions": ["f4v"] 3322 | }, 3323 | "video/x-fli": { 3324 | "extensions": ["fli"] 3325 | }, 3326 | "video/x-flv": { 3327 | "extensions": ["flv"] 3328 | }, 3329 | "video/x-m4v": { 3330 | "extensions": ["m4v"] 3331 | }, 3332 | "video/x-matroska": { 3333 | "extensions": ["mkv","mk3d","mks"] 3334 | }, 3335 | "video/x-mng": { 3336 | "extensions": ["mng"] 3337 | }, 3338 | "video/x-ms-asf": { 3339 | "extensions": ["asf","asx"] 3340 | }, 3341 | "video/x-ms-vob": { 3342 | "extensions": ["vob"] 3343 | }, 3344 | "video/x-ms-wm": { 3345 | "extensions": ["wm"] 3346 | }, 3347 | "video/x-ms-wmv": { 3348 | "extensions": ["wmv"] 3349 | }, 3350 | "video/x-ms-wmx": { 3351 | "extensions": ["wmx"] 3352 | }, 3353 | "video/x-ms-wvx": { 3354 | "extensions": ["wvx"] 3355 | }, 3356 | "video/x-msvideo": { 3357 | "extensions": ["avi"] 3358 | }, 3359 | "video/x-sgi-movie": { 3360 | "extensions": ["movie"] 3361 | }, 3362 | "video/x-smv": { 3363 | "extensions": ["smv"] 3364 | }, 3365 | "x-conference/x-cooltalk": { 3366 | "extensions": ["ice"] 3367 | } 3368 | } 3369 | --------------------------------------------------------------------------------