├── .eslintignore ├── .eslintrc ├── .gitignore ├── .travis.yml ├── HISTORY.md ├── LICENSE ├── README.md ├── index.d.ts ├── index.js ├── package.json ├── test ├── .eslintrc └── test.js ├── tsconfig.json ├── tslint.json └── yarn.lock /.eslintignore: -------------------------------------------------------------------------------- 1 | coverage 2 | node_modules 3 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "standard" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store* 3 | *.log 4 | *.gz 5 | 6 | node_modules 7 | coverage 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "0.6" 4 | - "0.8" 5 | - "0.10" 6 | - "0.12" 7 | - "1.8" 8 | - "2.2" 9 | - "2.5" 10 | - "3.3" 11 | - "4.6" 12 | - "5.12" 13 | - "6.9" 14 | - "7.1" 15 | sudo: false 16 | cache: 17 | directories: 18 | - node_modules 19 | before_install: 20 | # Setup Node.js version-specific dependencies 21 | - "test $TRAVIS_NODE_VERSION != '0.6' || npm rm --save-dev istanbul" 22 | - "test $TRAVIS_NODE_VERSION != '0.8' || npm rm --save-dev istanbul" 23 | - "test $(echo $TRAVIS_NODE_VERSION | cut -d'.' -f1) -ge 4 || npm rm --save-dev eslint eslint-config-standard eslint-plugin-promise eslint-plugin-standard" 24 | # Update Node.js modules 25 | - "test ! -d node_modules || npm prune" 26 | - "test ! -d node_modules || npm rebuild" 27 | script: 28 | # Run test script, depending on istanbul install 29 | - "test ! -z $(npm -ps ls istanbul) || npm test" 30 | - "test -z $(npm -ps ls istanbul) || npm run-script test-travis" 31 | - "test -z $(npm -ps ls eslint ) || npm run-script lint" 32 | after_script: 33 | - "test -e ./coverage/lcov.info && npm install coveralls@2 && cat ./coverage/lcov.info | coveralls" 34 | -------------------------------------------------------------------------------- /HISTORY.md: -------------------------------------------------------------------------------- 1 | 2.1.13 / 2016-11-18 2 | =================== 3 | 4 | * deps: mime-db@~1.25.0 5 | - Add new mime types 6 | 7 | 2.1.12 / 2016-09-18 8 | =================== 9 | 10 | * deps: mime-db@~1.24.0 11 | - Add new mime types 12 | - Add `audio/mp3` 13 | 14 | 2.1.11 / 2016-05-01 15 | =================== 16 | 17 | * deps: mime-db@~1.23.0 18 | - Add new mime types 19 | 20 | 2.1.10 / 2016-02-15 21 | =================== 22 | 23 | * deps: mime-db@~1.22.0 24 | - Add new mime types 25 | - Fix extension of `application/dash+xml` 26 | - Update primary extension for `audio/mp4` 27 | 28 | 2.1.9 / 2016-01-06 29 | ================== 30 | 31 | * deps: mime-db@~1.21.0 32 | - Add new mime types 33 | 34 | 2.1.8 / 2015-11-30 35 | ================== 36 | 37 | * deps: mime-db@~1.20.0 38 | - Add new mime types 39 | 40 | 2.1.7 / 2015-09-20 41 | ================== 42 | 43 | * deps: mime-db@~1.19.0 44 | - Add new mime types 45 | 46 | 2.1.6 / 2015-09-03 47 | ================== 48 | 49 | * deps: mime-db@~1.18.0 50 | - Add new mime types 51 | 52 | 2.1.5 / 2015-08-20 53 | ================== 54 | 55 | * deps: mime-db@~1.17.0 56 | - Add new mime types 57 | 58 | 2.1.4 / 2015-07-30 59 | ================== 60 | 61 | * deps: mime-db@~1.16.0 62 | - Add new mime types 63 | 64 | 2.1.3 / 2015-07-13 65 | ================== 66 | 67 | * deps: mime-db@~1.15.0 68 | - Add new mime types 69 | 70 | 2.1.2 / 2015-06-25 71 | ================== 72 | 73 | * deps: mime-db@~1.14.0 74 | - Add new mime types 75 | 76 | 2.1.1 / 2015-06-08 77 | ================== 78 | 79 | * perf: fix deopt during mapping 80 | 81 | 2.1.0 / 2015-06-07 82 | ================== 83 | 84 | * Fix incorrectly treating extension-less file name as extension 85 | - i.e. `'path/to/json'` will no longer return `application/json` 86 | * Fix `.charset(type)` to accept parameters 87 | * Fix `.charset(type)` to match case-insensitive 88 | * Improve generation of extension to MIME mapping 89 | * Refactor internals for readability and no argument reassignment 90 | * Prefer `application/*` MIME types from the same source 91 | * Prefer any type over `application/octet-stream` 92 | * deps: mime-db@~1.13.0 93 | - Add nginx as a source 94 | - Add new mime types 95 | 96 | 2.0.14 / 2015-06-06 97 | =================== 98 | 99 | * deps: mime-db@~1.12.0 100 | - Add new mime types 101 | 102 | 2.0.13 / 2015-05-31 103 | =================== 104 | 105 | * deps: mime-db@~1.11.0 106 | - Add new mime types 107 | 108 | 2.0.12 / 2015-05-19 109 | =================== 110 | 111 | * deps: mime-db@~1.10.0 112 | - Add new mime types 113 | 114 | 2.0.11 / 2015-05-05 115 | =================== 116 | 117 | * deps: mime-db@~1.9.1 118 | - Add new mime types 119 | 120 | 2.0.10 / 2015-03-13 121 | =================== 122 | 123 | * deps: mime-db@~1.8.0 124 | - Add new mime types 125 | 126 | 2.0.9 / 2015-02-09 127 | ================== 128 | 129 | * deps: mime-db@~1.7.0 130 | - Add new mime types 131 | - Community extensions ownership transferred from `node-mime` 132 | 133 | 2.0.8 / 2015-01-29 134 | ================== 135 | 136 | * deps: mime-db@~1.6.0 137 | - Add new mime types 138 | 139 | 2.0.7 / 2014-12-30 140 | ================== 141 | 142 | * deps: mime-db@~1.5.0 143 | - Add new mime types 144 | - Fix various invalid MIME type entries 145 | 146 | 2.0.6 / 2014-12-30 147 | ================== 148 | 149 | * deps: mime-db@~1.4.0 150 | - Add new mime types 151 | - Fix various invalid MIME type entries 152 | - Remove example template MIME types 153 | 154 | 2.0.5 / 2014-12-29 155 | ================== 156 | 157 | * deps: mime-db@~1.3.1 158 | - Fix missing extensions 159 | 160 | 2.0.4 / 2014-12-10 161 | ================== 162 | 163 | * deps: mime-db@~1.3.0 164 | - Add new mime types 165 | 166 | 2.0.3 / 2014-11-09 167 | ================== 168 | 169 | * deps: mime-db@~1.2.0 170 | - Add new mime types 171 | 172 | 2.0.2 / 2014-09-28 173 | ================== 174 | 175 | * deps: mime-db@~1.1.0 176 | - Add new mime types 177 | - Add additional compressible 178 | - Update charsets 179 | 180 | 2.0.1 / 2014-09-07 181 | ================== 182 | 183 | * Support Node.js 0.6 184 | 185 | 2.0.0 / 2014-09-02 186 | ================== 187 | 188 | * Use `mime-db` 189 | * Remove `.define()` 190 | 191 | 1.0.2 / 2014-08-04 192 | ================== 193 | 194 | * Set charset=utf-8 for `text/javascript` 195 | 196 | 1.0.1 / 2014-06-24 197 | ================== 198 | 199 | * Add `text/jsx` type 200 | 201 | 1.0.0 / 2014-05-12 202 | ================== 203 | 204 | * Return `false` for unknown types 205 | * Set charset=utf-8 for `application/json` 206 | 207 | 0.1.0 / 2014-05-02 208 | ================== 209 | 210 | * Initial release 211 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright (c) 2014 Jonathan Ong 4 | Copyright (c) 2015 Douglas Christopher Wilson 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | 'Software'), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # mime-types 2 | 3 | [![NPM Version][npm-image]][npm-url] 4 | [![NPM Downloads][downloads-image]][downloads-url] 5 | [![Node.js Version][node-version-image]][node-version-url] 6 | [![Build Status][travis-image]][travis-url] 7 | [![Test Coverage][coveralls-image]][coveralls-url] 8 | 9 | The ultimate javascript content-type utility. 10 | 11 | Similar to [node-mime](https://github.com/broofa/node-mime), except: 12 | 13 | - __No fallbacks.__ Instead of naively returning the first available type, `mime-types` simply returns `false`, 14 | so do `var type = mime.lookup('unrecognized') || 'application/octet-stream'`. 15 | - No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`. 16 | - Additional mime types are added such as jade and stylus via [mime-db](https://github.com/jshttp/mime-db) 17 | - No `.define()` functionality 18 | 19 | Otherwise, the API is compatible. 20 | 21 | ## Install 22 | 23 | ```sh 24 | $ yarn add react-native-mime-types 25 | ``` 26 | 27 | ## Adding Types 28 | 29 | All mime types are based on [mime-db](https://github.com/jshttp/mime-db), 30 | so open a PR there if you'd like to add mime types. 31 | 32 | ## API 33 | 34 | ```js 35 | import * as mime from 'react-native-mime-types'; 36 | ``` 37 | 38 | All functions return `false` if input is invalid or not found. 39 | 40 | ### mime.lookup(path) 41 | 42 | Lookup the content-type associated with a file. 43 | 44 | ```js 45 | mime.lookup('json') // 'application/json' 46 | mime.lookup('.md') // 'text/x-markdown' 47 | mime.lookup('file.html') // 'text/html' 48 | mime.lookup('folder/file.js') // 'application/javascript' 49 | mime.lookup('folder/.htaccess') // false 50 | 51 | mime.lookup('cats') // false 52 | ``` 53 | 54 | ### mime.contentType(type) 55 | 56 | Create a full content-type header given a content-type or extension. 57 | 58 | ```js 59 | mime.contentType('markdown') // 'text/x-markdown; charset=utf-8' 60 | mime.contentType('file.json') // 'application/json; charset=utf-8' 61 | 62 | // from a full path 63 | mime.contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8' 64 | ``` 65 | 66 | ### mime.extension(type) 67 | 68 | Get the default extension for a content-type. 69 | 70 | ```js 71 | mime.extension('application/octet-stream') // 'bin' 72 | ``` 73 | 74 | ### mime.charset(type) 75 | 76 | Lookup the implied default charset of a content-type. 77 | 78 | ```js 79 | mime.charset('text/x-markdown') // 'UTF-8' 80 | ``` 81 | 82 | ### var type = mime.types[extension] 83 | 84 | A map of content-types by extension. 85 | 86 | ### [extensions...] = mime.extensions[type] 87 | 88 | A map of extensions by content-type. 89 | 90 | ## License 91 | 92 | [MIT](LICENSE) 93 | 94 | [npm-image]: https://img.shields.io/npm/v/react-native-mime-types.svg 95 | [npm-url]: https://npmjs.org/package/react-native-mime-types 96 | [node-version-image]: https://img.shields.io/node/v/react-native-mime-types.svg 97 | [node-version-url]: https://nodejs.org/en/download/ 98 | [travis-image]: https://img.shields.io/travis/jshttp/mime-types/master.svg 99 | [travis-url]: https://travis-ci.org/jshttp/mime-types 100 | [coveralls-image]: https://img.shields.io/coveralls/jshttp/mime-types/master.svg 101 | [coveralls-url]: https://coveralls.io/r/jshttp/mime-types 102 | [downloads-image]: https://img.shields.io/npm/dm/react-native-mime-types.svg 103 | [downloads-url]: https://npmjs.org/package/react-native-mime-types 104 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | // Type definitions for mime-types 2.1 2 | // Project: https://github.com/jshttp/mime-types#readme 3 | // Definitions by: Gyusun Yeom 4 | // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped 5 | 6 | export function lookup(filenameOrExt: string): string | false; 7 | export function contentType(filenameOrExt: string): string | false; 8 | export function extension(typeString: string): string | false; 9 | export function charset(typeString: string): string | false; 10 | export const types: { [key: string]: string }; 11 | export const extensions: { [key: string]: string[] }; 12 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * mime-types 3 | * Copyright(c) 2014 Jonathan Ong 4 | * Copyright(c) 2015 Douglas Christopher Wilson 5 | * MIT Licensed 6 | */ 7 | 8 | 'use strict' 9 | 10 | /** 11 | * Module dependencies. 12 | * @private 13 | */ 14 | 15 | var db = require('mime-db') 16 | 17 | const extname = function(path) { 18 | if (!path || path.indexOf('.') === -1) { return '' } 19 | path = '.' + path.split('.').pop().toLowerCase() 20 | return /.*(\..*)/g.exec(path)[1] || '' 21 | } 22 | 23 | /** 24 | * Module variables. 25 | * @private 26 | */ 27 | 28 | var extractTypeRegExp = /^\s*([^;\s]*)(?:;|\s|$)/ 29 | var textTypeRegExp = /^text\//i 30 | 31 | /** 32 | * Module exports. 33 | * @public 34 | */ 35 | 36 | exports.charset = charset 37 | exports.charsets = { lookup: charset } 38 | exports.contentType = contentType 39 | exports.extension = extension 40 | exports.extensions = Object.create(null) 41 | exports.lookup = lookup 42 | exports.types = Object.create(null) 43 | 44 | // Populate the extensions/types maps 45 | populateMaps(exports.extensions, exports.types) 46 | 47 | /** 48 | * Get the default charset for a MIME type. 49 | * 50 | * @param {string} type 51 | * @return {boolean|string} 52 | */ 53 | 54 | function charset (type) { 55 | if (!type || typeof type !== 'string') { 56 | return false 57 | } 58 | 59 | // TODO: use media-typer 60 | var match = extractTypeRegExp.exec(type) 61 | var mime = match && db[match[1].toLowerCase()] 62 | 63 | if (mime && mime.charset) { 64 | return mime.charset 65 | } 66 | 67 | // default text/* to utf-8 68 | if (match && textTypeRegExp.test(match[1])) { 69 | return 'UTF-8' 70 | } 71 | 72 | return false 73 | } 74 | 75 | /** 76 | * Create a full Content-Type header given a MIME type or extension. 77 | * 78 | * @param {string} str 79 | * @return {boolean|string} 80 | */ 81 | 82 | function contentType (str) { 83 | // TODO: should this even be in this module? 84 | if (!str || typeof str !== 'string') { 85 | return false 86 | } 87 | 88 | var mime = str.indexOf('/') === -1 89 | ? exports.lookup(str) 90 | : str 91 | 92 | if (!mime) { 93 | return false 94 | } 95 | 96 | // TODO: use content-type or other module 97 | if (mime.indexOf('charset') === -1) { 98 | var charset = exports.charset(mime) 99 | if (charset) mime += '; charset=' + charset.toLowerCase() 100 | } 101 | 102 | return mime 103 | } 104 | 105 | /** 106 | * Get the default extension for a MIME type. 107 | * 108 | * @param {string} type 109 | * @return {boolean|string} 110 | */ 111 | 112 | function extension (type) { 113 | if (!type || typeof type !== 'string') { 114 | return false 115 | } 116 | 117 | // TODO: use media-typer 118 | var match = extractTypeRegExp.exec(type) 119 | 120 | // get extensions 121 | var exts = match && exports.extensions[match[1].toLowerCase()] 122 | 123 | if (!exts || !exts.length) { 124 | return false 125 | } 126 | 127 | return exts[0] 128 | } 129 | 130 | /** 131 | * Lookup the MIME type for a file path/extension. 132 | * 133 | * @param {string} path 134 | * @return {boolean|string} 135 | */ 136 | 137 | function lookup (path) { 138 | if (!path || typeof path !== 'string') { 139 | return false 140 | } 141 | 142 | // get the extension ("ext" or ".ext" or full path) 143 | var extension = extname('x.' + path) 144 | .toLowerCase() 145 | .substr(1) 146 | 147 | if (!extension) { 148 | return false 149 | } 150 | 151 | return exports.types[extension] || false 152 | } 153 | 154 | /** 155 | * Populate the extensions and types maps. 156 | * @private 157 | */ 158 | 159 | function populateMaps (extensions, types) { 160 | // source preference (least -> most) 161 | var preference = ['nginx', 'apache', undefined, 'iana'] 162 | 163 | Object.keys(db).forEach(function forEachMimeType (type) { 164 | var mime = db[type] 165 | var exts = mime.extensions 166 | 167 | if (!exts || !exts.length) { 168 | return 169 | } 170 | 171 | // mime -> extensions 172 | extensions[type] = exts 173 | 174 | // extension -> mime 175 | for (var i = 0; i < exts.length; i++) { 176 | var extension = exts[i] 177 | 178 | if (types[extension]) { 179 | var from = preference.indexOf(db[types[extension]].source) 180 | var to = preference.indexOf(mime.source) 181 | 182 | if (types[extension] !== 'application/octet-stream' && 183 | from > to || (from === to && types[extension].substr(0, 12) === 'application/')) { 184 | // skip the remapping 185 | continue 186 | } 187 | } 188 | 189 | // set the extension -> mime 190 | types[extension] = type 191 | } 192 | }) 193 | } 194 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-native-mime-types", 3 | "description": "The ultimate javascript content-type utility.", 4 | "version": "2.5.0", 5 | "contributors": [ 6 | "Douglas Christopher Wilson ", 7 | "Jeremiah Senkpiel (https://searchbeam.jit.su)", 8 | "Jonathan Ong (http://jongleberry.com)", 9 | "Pierre Monge = 0.6" 36 | }, 37 | "scripts": { 38 | "lint": "eslint .", 39 | "test": "mocha --reporter spec test/test.js", 40 | "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/test.js", 41 | "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter dot test/test.js" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /test/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | 2 | var assert = require('assert') 3 | var mimeTypes = require('..') 4 | 5 | describe('mimeTypes', function () { 6 | describe('.charset(type)', function () { 7 | it('should return "UTF-8" for "application/json"', function () { 8 | assert.equal(mimeTypes.charset('application/json'), 'UTF-8') 9 | }) 10 | 11 | it('should return "UTF-8" for "application/json; foo=bar"', function () { 12 | assert.equal(mimeTypes.charset('application/json; foo=bar'), 'UTF-8') 13 | }) 14 | 15 | it('should return "UTF-8" for "application/javascript"', function () { 16 | assert.equal(mimeTypes.charset('application/javascript'), 'UTF-8') 17 | }) 18 | 19 | it('should return "UTF-8" for "application/JavaScript"', function () { 20 | assert.equal(mimeTypes.charset('application/JavaScript'), 'UTF-8') 21 | }) 22 | 23 | it('should return "UTF-8" for "text/html"', function () { 24 | assert.equal(mimeTypes.charset('text/html'), 'UTF-8') 25 | }) 26 | 27 | it('should return "UTF-8" for "TEXT/HTML"', function () { 28 | assert.equal(mimeTypes.charset('TEXT/HTML'), 'UTF-8') 29 | }) 30 | 31 | it('should return "UTF-8" for any text/*', function () { 32 | assert.equal(mimeTypes.charset('text/x-bogus'), 'UTF-8') 33 | }) 34 | 35 | it('should return false for unknown types', function () { 36 | assert.strictEqual(mimeTypes.charset('application/x-bogus'), false) 37 | }) 38 | 39 | it('should return false for any application/octet-stream', function () { 40 | assert.strictEqual(mimeTypes.charset('application/octet-stream'), false) 41 | }) 42 | 43 | it('should return false for invalid arguments', function () { 44 | assert.strictEqual(mimeTypes.charset({}), false) 45 | assert.strictEqual(mimeTypes.charset(null), false) 46 | assert.strictEqual(mimeTypes.charset(true), false) 47 | assert.strictEqual(mimeTypes.charset(42), false) 48 | }) 49 | }) 50 | 51 | describe('.contentType(extension)', function () { 52 | it('should return content-type for "html"', function () { 53 | assert.equal(mimeTypes.contentType('html'), 'text/html; charset=utf-8') 54 | }) 55 | 56 | it('should return content-type for ".html"', function () { 57 | assert.equal(mimeTypes.contentType('.html'), 'text/html; charset=utf-8') 58 | }) 59 | 60 | it('should return content-type for "jade"', function () { 61 | assert.equal(mimeTypes.contentType('jade'), 'text/jade; charset=utf-8') 62 | }) 63 | 64 | it('should return content-type for "json"', function () { 65 | assert.equal(mimeTypes.contentType('json'), 'application/json; charset=utf-8') 66 | }) 67 | 68 | it('should return false for unknown extensions', function () { 69 | assert.strictEqual(mimeTypes.contentType('bogus'), false) 70 | }) 71 | 72 | it('should return false for invalid arguments', function () { 73 | assert.strictEqual(mimeTypes.contentType({}), false) 74 | assert.strictEqual(mimeTypes.contentType(null), false) 75 | assert.strictEqual(mimeTypes.contentType(true), false) 76 | assert.strictEqual(mimeTypes.contentType(42), false) 77 | }) 78 | }) 79 | 80 | describe('.contentType(type)', function () { 81 | it('should attach charset to "application/json"', function () { 82 | assert.equal(mimeTypes.contentType('application/json'), 'application/json; charset=utf-8') 83 | }) 84 | 85 | it('should attach charset to "application/json; foo=bar"', function () { 86 | assert.equal(mimeTypes.contentType('application/json; foo=bar'), 'application/json; foo=bar; charset=utf-8') 87 | }) 88 | 89 | it('should attach charset to "TEXT/HTML"', function () { 90 | assert.equal(mimeTypes.contentType('TEXT/HTML'), 'TEXT/HTML; charset=utf-8') 91 | }) 92 | 93 | it('should attach charset to "text/html"', function () { 94 | assert.equal(mimeTypes.contentType('text/html'), 'text/html; charset=utf-8') 95 | }) 96 | 97 | it('should not alter "text/html; charset=iso-8859-1"', function () { 98 | assert.equal(mimeTypes.contentType('text/html; charset=iso-8859-1'), 'text/html; charset=iso-8859-1') 99 | }) 100 | 101 | it('should return type for unknown types', function () { 102 | assert.equal(mimeTypes.contentType('application/x-bogus'), 'application/x-bogus') 103 | }) 104 | }) 105 | 106 | describe('.extension(type)', function () { 107 | it('should return extension for mime type', function () { 108 | assert.equal(mimeTypes.extension('text/html'), 'html') 109 | assert.equal(mimeTypes.extension(' text/html'), 'html') 110 | assert.equal(mimeTypes.extension('text/html '), 'html') 111 | }) 112 | 113 | it('should return false for unknown type', function () { 114 | assert.strictEqual(mimeTypes.extension('application/x-bogus'), false) 115 | }) 116 | 117 | it('should return false for non-type string', function () { 118 | assert.strictEqual(mimeTypes.extension('bogus'), false) 119 | }) 120 | 121 | it('should return false for non-strings', function () { 122 | assert.strictEqual(mimeTypes.extension(null), false) 123 | assert.strictEqual(mimeTypes.extension(undefined), false) 124 | assert.strictEqual(mimeTypes.extension(42), false) 125 | assert.strictEqual(mimeTypes.extension({}), false) 126 | }) 127 | 128 | it('should return extension for mime type with parameters', function () { 129 | assert.equal(mimeTypes.extension('text/html;charset=UTF-8'), 'html') 130 | assert.equal(mimeTypes.extension('text/HTML; charset=UTF-8'), 'html') 131 | assert.equal(mimeTypes.extension('text/html; charset=UTF-8'), 'html') 132 | assert.equal(mimeTypes.extension('text/html; charset=UTF-8 '), 'html') 133 | assert.equal(mimeTypes.extension('text/html ; charset=UTF-8'), 'html') 134 | }) 135 | }) 136 | 137 | describe('.lookup(extension)', function () { 138 | it('should return mime type for ".html"', function () { 139 | assert.equal(mimeTypes.lookup('.html'), 'text/html') 140 | }) 141 | 142 | it('should return mime type for ".js"', function () { 143 | assert.equal(mimeTypes.lookup('.js'), 'application/javascript') 144 | }) 145 | 146 | it('should return mime type for ".json"', function () { 147 | assert.equal(mimeTypes.lookup('.json'), 'application/json') 148 | }) 149 | 150 | it('should return mime type for ".rtf"', function () { 151 | assert.equal(mimeTypes.lookup('.rtf'), 'application/rtf') 152 | }) 153 | 154 | it('should return mime type for ".txt"', function () { 155 | assert.equal(mimeTypes.lookup('.txt'), 'text/plain') 156 | }) 157 | 158 | it('should return mime type for ".xml"', function () { 159 | assert.equal(mimeTypes.lookup('.xml'), 'application/xml') 160 | }) 161 | 162 | it('should work without the leading dot', function () { 163 | assert.equal(mimeTypes.lookup('html'), 'text/html') 164 | assert.equal(mimeTypes.lookup('xml'), 'application/xml') 165 | }) 166 | 167 | it('should be case insensitive', function () { 168 | assert.equal(mimeTypes.lookup('HTML'), 'text/html') 169 | assert.equal(mimeTypes.lookup('.Xml'), 'application/xml') 170 | }) 171 | 172 | it('should return false for unknown extension', function () { 173 | assert.strictEqual(mimeTypes.lookup('.bogus'), false) 174 | assert.strictEqual(mimeTypes.lookup('bogus'), false) 175 | }) 176 | 177 | it('should return false for non-strings', function () { 178 | assert.strictEqual(mimeTypes.lookup(null), false) 179 | assert.strictEqual(mimeTypes.lookup(undefined), false) 180 | assert.strictEqual(mimeTypes.lookup(42), false) 181 | assert.strictEqual(mimeTypes.lookup({}), false) 182 | }) 183 | }) 184 | 185 | describe('.lookup(path)', function () { 186 | it('should return mime type for file name', function () { 187 | assert.equal(mimeTypes.lookup('page.html'), 'text/html') 188 | }) 189 | 190 | it('should return mime type for relative path', function () { 191 | assert.equal(mimeTypes.lookup('path/to/page.html'), 'text/html') 192 | assert.equal(mimeTypes.lookup('path\\to\\page.html'), 'text/html') 193 | }) 194 | 195 | it('should return mime type for absolute path', function () { 196 | assert.equal(mimeTypes.lookup('/path/to/page.html'), 'text/html') 197 | assert.equal(mimeTypes.lookup('C:\\path\\to\\page.html'), 'text/html') 198 | }) 199 | 200 | it('should be case insensitive', function () { 201 | assert.equal(mimeTypes.lookup('/path/to/PAGE.HTML'), 'text/html') 202 | assert.equal(mimeTypes.lookup('C:\\path\\to\\PAGE.HTML'), 'text/html') 203 | }) 204 | 205 | it('should return false for unknown extension', function () { 206 | assert.strictEqual(mimeTypes.lookup('/path/to/file.bogus'), false) 207 | }) 208 | 209 | it('should return false for path without extension', function () { 210 | assert.strictEqual(mimeTypes.lookup('/path/to/json'), false) 211 | }) 212 | 213 | describe('path with dotfile', function () { 214 | it('should return false when extension-less', function () { 215 | assert.strictEqual(mimeTypes.lookup('/path/to/json'), false) 216 | }) 217 | 218 | it('should return mime type when there is extension', function () { 219 | assert.strictEqual(mimeTypes.lookup('/path/to/.config.json'), 'application/json') 220 | }) 221 | 222 | it('should return mime type when there is extension, but no path', function () { 223 | assert.strictEqual(mimeTypes.lookup('.config.json'), 'application/json') 224 | }) 225 | }) 226 | }) 227 | }) 228 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "lib": ["es6"], 5 | "noImplicitAny": true, 6 | "noImplicitThis": true, 7 | "strictNullChecks": true, 8 | "strictFunctionTypes": true, 9 | "baseUrl": "../", 10 | "typeRoots": ["../"], 11 | "types": [], 12 | "noEmit": true, 13 | "forceConsistentCasingInFileNames": true 14 | }, 15 | "files": ["index.d.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "dtslint/dt.json" 3 | } 4 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | abbrev@1, abbrev@1.0.x: 6 | version "1.0.9" 7 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 8 | 9 | acorn-jsx@^3.0.0: 10 | version "3.0.1" 11 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 12 | dependencies: 13 | acorn "^3.0.4" 14 | 15 | acorn@^3.0.4: 16 | version "3.3.0" 17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 18 | 19 | acorn@^4.0.1: 20 | version "4.0.4" 21 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.4.tgz#17a8d6a7a6c4ef538b814ec9abac2779293bf30a" 22 | 23 | ajv-keywords@^1.0.0: 24 | version "1.3.0" 25 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.3.0.tgz#b2dbcdb32ce40b7a64ce5bc6e4ec9b0a918b455a" 26 | 27 | ajv@^4.7.0: 28 | version "4.10.0" 29 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.0.tgz#7ae6169180eb199192a8b9a19fd0f47fc9ac8764" 30 | dependencies: 31 | co "^4.6.0" 32 | json-stable-stringify "^1.0.1" 33 | 34 | align-text@^0.1.1, align-text@^0.1.3: 35 | version "0.1.4" 36 | resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" 37 | dependencies: 38 | kind-of "^3.0.2" 39 | longest "^1.0.1" 40 | repeat-string "^1.5.2" 41 | 42 | amdefine@>=0.0.4: 43 | version "1.0.1" 44 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 45 | 46 | ansi-escapes@^1.1.0: 47 | version "1.4.0" 48 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 49 | 50 | ansi-regex@^2.0.0: 51 | version "2.0.0" 52 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107" 53 | 54 | ansi-styles@^2.2.1: 55 | version "2.2.1" 56 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 57 | 58 | argparse@^1.0.7: 59 | version "1.0.9" 60 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 61 | dependencies: 62 | sprintf-js "~1.0.2" 63 | 64 | array-union@^1.0.1: 65 | version "1.0.2" 66 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 67 | dependencies: 68 | array-uniq "^1.0.1" 69 | 70 | array-uniq@^1.0.1: 71 | version "1.0.3" 72 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 73 | 74 | arrify@^1.0.0: 75 | version "1.0.1" 76 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 77 | 78 | async@1.x, async@^1.4.0: 79 | version "1.5.2" 80 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 81 | 82 | async@~0.2.6: 83 | version "0.2.10" 84 | resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" 85 | 86 | babel-code-frame@^6.16.0: 87 | version "6.20.0" 88 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26" 89 | dependencies: 90 | chalk "^1.1.0" 91 | esutils "^2.0.2" 92 | js-tokens "^2.0.0" 93 | 94 | balanced-match@^0.4.1: 95 | version "0.4.2" 96 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 97 | 98 | brace-expansion@^1.0.0: 99 | version "1.1.6" 100 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 101 | dependencies: 102 | balanced-match "^0.4.1" 103 | concat-map "0.0.1" 104 | 105 | buffer-shims@^1.0.0: 106 | version "1.0.0" 107 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 108 | 109 | caller-path@^0.1.0: 110 | version "0.1.0" 111 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 112 | dependencies: 113 | callsites "^0.2.0" 114 | 115 | callsites@^0.2.0: 116 | version "0.2.0" 117 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 118 | 119 | camelcase@^1.0.2: 120 | version "1.2.1" 121 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 122 | 123 | center-align@^0.1.1: 124 | version "0.1.3" 125 | resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" 126 | dependencies: 127 | align-text "^0.1.3" 128 | lazy-cache "^1.0.3" 129 | 130 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: 131 | version "1.1.3" 132 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 133 | dependencies: 134 | ansi-styles "^2.2.1" 135 | escape-string-regexp "^1.0.2" 136 | has-ansi "^2.0.0" 137 | strip-ansi "^3.0.0" 138 | supports-color "^2.0.0" 139 | 140 | circular-json@^0.3.1: 141 | version "0.3.1" 142 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" 143 | 144 | cli-cursor@^1.0.1: 145 | version "1.0.2" 146 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 147 | dependencies: 148 | restore-cursor "^1.0.1" 149 | 150 | cli-width@^2.0.0: 151 | version "2.1.0" 152 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 153 | 154 | cliui@^2.1.0: 155 | version "2.1.0" 156 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" 157 | dependencies: 158 | center-align "^0.1.1" 159 | right-align "^0.1.1" 160 | wordwrap "0.0.2" 161 | 162 | co@^4.6.0: 163 | version "4.6.0" 164 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 165 | 166 | code-point-at@^1.0.0: 167 | version "1.1.0" 168 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 169 | 170 | commander@0.6.1: 171 | version "0.6.1" 172 | resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" 173 | 174 | commander@2.3.0: 175 | version "2.3.0" 176 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" 177 | 178 | concat-map@0.0.1: 179 | version "0.0.1" 180 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 181 | 182 | concat-stream@^1.4.6: 183 | version "1.6.0" 184 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 185 | dependencies: 186 | inherits "^2.0.3" 187 | readable-stream "^2.2.2" 188 | typedarray "^0.0.6" 189 | 190 | core-util-is@~1.0.0: 191 | version "1.0.2" 192 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 193 | 194 | d@^0.1.1, d@~0.1.1: 195 | version "0.1.1" 196 | resolved "https://registry.yarnpkg.com/d/-/d-0.1.1.tgz#da184c535d18d8ee7ba2aa229b914009fae11309" 197 | dependencies: 198 | es5-ext "~0.10.2" 199 | 200 | debug@2.0.0: 201 | version "2.0.0" 202 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.0.0.tgz#89bd9df6732b51256bc6705342bba02ed12131ef" 203 | dependencies: 204 | ms "0.6.2" 205 | 206 | debug@^2.1.1: 207 | version "2.5.1" 208 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.5.1.tgz#9107bb4a506052ec2a02314bc606313ed2b921c1" 209 | dependencies: 210 | ms "0.7.2" 211 | 212 | decamelize@^1.0.0: 213 | version "1.2.0" 214 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 215 | 216 | deep-is@~0.1.3: 217 | version "0.1.3" 218 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 219 | 220 | del@^2.0.2: 221 | version "2.2.2" 222 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 223 | dependencies: 224 | globby "^5.0.0" 225 | is-path-cwd "^1.0.0" 226 | is-path-in-cwd "^1.0.0" 227 | object-assign "^4.0.1" 228 | pify "^2.0.0" 229 | pinkie-promise "^2.0.0" 230 | rimraf "^2.2.8" 231 | 232 | diff@1.0.8: 233 | version "1.0.8" 234 | resolved "https://registry.yarnpkg.com/diff/-/diff-1.0.8.tgz#343276308ec991b7bc82267ed55bc1411f971666" 235 | 236 | doctrine@^1.2.2: 237 | version "1.5.0" 238 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 239 | dependencies: 240 | esutils "^2.0.2" 241 | isarray "^1.0.0" 242 | 243 | es5-ext@^0.10.7, es5-ext@^0.10.8, es5-ext@~0.10.11, es5-ext@~0.10.2, es5-ext@~0.10.7: 244 | version "0.10.12" 245 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.12.tgz#aa84641d4db76b62abba5e45fd805ecbab140047" 246 | dependencies: 247 | es6-iterator "2" 248 | es6-symbol "~3.1" 249 | 250 | es6-iterator@2: 251 | version "2.0.0" 252 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.0.tgz#bd968567d61635e33c0b80727613c9cb4b096bac" 253 | dependencies: 254 | d "^0.1.1" 255 | es5-ext "^0.10.7" 256 | es6-symbol "3" 257 | 258 | es6-map@^0.1.3: 259 | version "0.1.4" 260 | resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.4.tgz#a34b147be224773a4d7da8072794cefa3632b897" 261 | dependencies: 262 | d "~0.1.1" 263 | es5-ext "~0.10.11" 264 | es6-iterator "2" 265 | es6-set "~0.1.3" 266 | es6-symbol "~3.1.0" 267 | event-emitter "~0.3.4" 268 | 269 | es6-set@~0.1.3: 270 | version "0.1.4" 271 | resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.4.tgz#9516b6761c2964b92ff479456233a247dc707ce8" 272 | dependencies: 273 | d "~0.1.1" 274 | es5-ext "~0.10.11" 275 | es6-iterator "2" 276 | es6-symbol "3" 277 | event-emitter "~0.3.4" 278 | 279 | es6-symbol@3, es6-symbol@~3.1, es6-symbol@~3.1.0: 280 | version "3.1.0" 281 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.0.tgz#94481c655e7a7cad82eba832d97d5433496d7ffa" 282 | dependencies: 283 | d "~0.1.1" 284 | es5-ext "~0.10.11" 285 | 286 | es6-weak-map@^2.0.1: 287 | version "2.0.1" 288 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.1.tgz#0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81" 289 | dependencies: 290 | d "^0.1.1" 291 | es5-ext "^0.10.8" 292 | es6-iterator "2" 293 | es6-symbol "3" 294 | 295 | escape-string-regexp@1.0.2, escape-string-regexp@^1.0.2: 296 | version "1.0.2" 297 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz#4dbc2fe674e71949caf3fb2695ce7f2dc1d9a8d1" 298 | 299 | escape-string-regexp@^1.0.5: 300 | version "1.0.5" 301 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 302 | 303 | escodegen@1.8.x: 304 | version "1.8.1" 305 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" 306 | dependencies: 307 | esprima "^2.7.1" 308 | estraverse "^1.9.1" 309 | esutils "^2.0.2" 310 | optionator "^0.8.1" 311 | optionalDependencies: 312 | source-map "~0.2.0" 313 | 314 | escope@^3.6.0: 315 | version "3.6.0" 316 | resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 317 | dependencies: 318 | es6-map "^0.1.3" 319 | es6-weak-map "^2.0.1" 320 | esrecurse "^4.1.0" 321 | estraverse "^4.1.1" 322 | 323 | eslint-config-standard@6.2.1: 324 | version "6.2.1" 325 | resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-6.2.1.tgz#d3a68aafc7191639e7ee441e7348739026354292" 326 | 327 | eslint-plugin-promise@3.4.0: 328 | version "3.4.0" 329 | resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-3.4.0.tgz#6ba9048c2df57be77d036e0c68918bc9b4fc4195" 330 | 331 | eslint-plugin-standard@2.0.1: 332 | version "2.0.1" 333 | resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-2.0.1.tgz#3589699ff9c917f2c25f76a916687f641c369ff3" 334 | 335 | eslint@3.10.2: 336 | version "3.10.2" 337 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.10.2.tgz#c9a10e8bf6e9d65651204778c503341f1eac3ce7" 338 | dependencies: 339 | babel-code-frame "^6.16.0" 340 | chalk "^1.1.3" 341 | concat-stream "^1.4.6" 342 | debug "^2.1.1" 343 | doctrine "^1.2.2" 344 | escope "^3.6.0" 345 | espree "^3.3.1" 346 | estraverse "^4.2.0" 347 | esutils "^2.0.2" 348 | file-entry-cache "^2.0.0" 349 | glob "^7.0.3" 350 | globals "^9.2.0" 351 | ignore "^3.2.0" 352 | imurmurhash "^0.1.4" 353 | inquirer "^0.12.0" 354 | is-my-json-valid "^2.10.0" 355 | is-resolvable "^1.0.0" 356 | js-yaml "^3.5.1" 357 | json-stable-stringify "^1.0.0" 358 | levn "^0.3.0" 359 | lodash "^4.0.0" 360 | mkdirp "^0.5.0" 361 | natural-compare "^1.4.0" 362 | optionator "^0.8.2" 363 | path-is-inside "^1.0.1" 364 | pluralize "^1.2.1" 365 | progress "^1.1.8" 366 | require-uncached "^1.0.2" 367 | shelljs "^0.7.5" 368 | strip-bom "^3.0.0" 369 | strip-json-comments "~1.0.1" 370 | table "^3.7.8" 371 | text-table "~0.2.0" 372 | user-home "^2.0.0" 373 | 374 | espree@^3.3.1: 375 | version "3.3.2" 376 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.3.2.tgz#dbf3fadeb4ecb4d4778303e50103b3d36c88b89c" 377 | dependencies: 378 | acorn "^4.0.1" 379 | acorn-jsx "^3.0.0" 380 | 381 | esprima@2.7.x, esprima@^2.6.0, esprima@^2.7.1: 382 | version "2.7.3" 383 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 384 | 385 | esrecurse@^4.1.0: 386 | version "4.1.0" 387 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" 388 | dependencies: 389 | estraverse "~4.1.0" 390 | object-assign "^4.0.1" 391 | 392 | estraverse@^1.9.1: 393 | version "1.9.3" 394 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" 395 | 396 | estraverse@^4.1.1, estraverse@^4.2.0: 397 | version "4.2.0" 398 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 399 | 400 | estraverse@~4.1.0: 401 | version "4.1.1" 402 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" 403 | 404 | esutils@^2.0.2: 405 | version "2.0.2" 406 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 407 | 408 | event-emitter@~0.3.4: 409 | version "0.3.4" 410 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.4.tgz#8d63ddfb4cfe1fae3b32ca265c4c720222080bb5" 411 | dependencies: 412 | d "~0.1.1" 413 | es5-ext "~0.10.7" 414 | 415 | exit-hook@^1.0.0: 416 | version "1.1.1" 417 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 418 | 419 | fast-levenshtein@~2.0.4: 420 | version "2.0.5" 421 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2" 422 | 423 | figures@^1.3.5: 424 | version "1.7.0" 425 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 426 | dependencies: 427 | escape-string-regexp "^1.0.5" 428 | object-assign "^4.1.0" 429 | 430 | file-entry-cache@^2.0.0: 431 | version "2.0.0" 432 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 433 | dependencies: 434 | flat-cache "^1.2.1" 435 | object-assign "^4.0.1" 436 | 437 | flat-cache@^1.2.1: 438 | version "1.2.2" 439 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 440 | dependencies: 441 | circular-json "^0.3.1" 442 | del "^2.0.2" 443 | graceful-fs "^4.1.2" 444 | write "^0.2.1" 445 | 446 | fs.realpath@^1.0.0: 447 | version "1.0.0" 448 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 449 | 450 | generate-function@^2.0.0: 451 | version "2.0.0" 452 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 453 | 454 | generate-object-property@^1.1.0: 455 | version "1.2.0" 456 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 457 | dependencies: 458 | is-property "^1.0.0" 459 | 460 | glob@3.2.3: 461 | version "3.2.3" 462 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.2.3.tgz#e313eeb249c7affaa5c475286b0e115b59839467" 463 | dependencies: 464 | graceful-fs "~2.0.0" 465 | inherits "2" 466 | minimatch "~0.2.11" 467 | 468 | glob@^5.0.15: 469 | version "5.0.15" 470 | resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" 471 | dependencies: 472 | inflight "^1.0.4" 473 | inherits "2" 474 | minimatch "2 || 3" 475 | once "^1.3.0" 476 | path-is-absolute "^1.0.0" 477 | 478 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: 479 | version "7.1.1" 480 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 481 | dependencies: 482 | fs.realpath "^1.0.0" 483 | inflight "^1.0.4" 484 | inherits "2" 485 | minimatch "^3.0.2" 486 | once "^1.3.0" 487 | path-is-absolute "^1.0.0" 488 | 489 | globals@^9.2.0: 490 | version "9.14.0" 491 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.14.0.tgz#8859936af0038741263053b39d0e76ca241e4034" 492 | 493 | globby@^5.0.0: 494 | version "5.0.0" 495 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 496 | dependencies: 497 | array-union "^1.0.1" 498 | arrify "^1.0.0" 499 | glob "^7.0.3" 500 | object-assign "^4.0.1" 501 | pify "^2.0.0" 502 | pinkie-promise "^2.0.0" 503 | 504 | graceful-fs@^4.1.2: 505 | version "4.1.11" 506 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 507 | 508 | graceful-fs@~2.0.0: 509 | version "2.0.3" 510 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-2.0.3.tgz#7cd2cdb228a4a3f36e95efa6cc142de7d1a136d0" 511 | 512 | growl@1.8.1: 513 | version "1.8.1" 514 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.8.1.tgz#4b2dec8d907e93db336624dcec0183502f8c9428" 515 | 516 | handlebars@^4.0.1: 517 | version "4.0.6" 518 | resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.6.tgz#2ce4484850537f9c97a8026d5399b935c4ed4ed7" 519 | dependencies: 520 | async "^1.4.0" 521 | optimist "^0.6.1" 522 | source-map "^0.4.4" 523 | optionalDependencies: 524 | uglify-js "^2.6" 525 | 526 | has-ansi@^2.0.0: 527 | version "2.0.0" 528 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 529 | dependencies: 530 | ansi-regex "^2.0.0" 531 | 532 | has-flag@^1.0.0: 533 | version "1.0.0" 534 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 535 | 536 | ignore@^3.2.0: 537 | version "3.2.0" 538 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.0.tgz#8d88f03c3002a0ac52114db25d2c673b0bf1e435" 539 | 540 | imurmurhash@^0.1.4: 541 | version "0.1.4" 542 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 543 | 544 | inflight@^1.0.4: 545 | version "1.0.6" 546 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 547 | dependencies: 548 | once "^1.3.0" 549 | wrappy "1" 550 | 551 | inherits@2, inherits@^2.0.3, inherits@~2.0.1: 552 | version "2.0.3" 553 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 554 | 555 | inquirer@^0.12.0: 556 | version "0.12.0" 557 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" 558 | dependencies: 559 | ansi-escapes "^1.1.0" 560 | ansi-regex "^2.0.0" 561 | chalk "^1.0.0" 562 | cli-cursor "^1.0.1" 563 | cli-width "^2.0.0" 564 | figures "^1.3.5" 565 | lodash "^4.3.0" 566 | readline2 "^1.0.1" 567 | run-async "^0.1.0" 568 | rx-lite "^3.1.2" 569 | string-width "^1.0.1" 570 | strip-ansi "^3.0.0" 571 | through "^2.3.6" 572 | 573 | interpret@^1.0.0: 574 | version "1.0.1" 575 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" 576 | 577 | is-buffer@^1.0.2: 578 | version "1.1.4" 579 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" 580 | 581 | is-fullwidth-code-point@^1.0.0: 582 | version "1.0.0" 583 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 584 | dependencies: 585 | number-is-nan "^1.0.0" 586 | 587 | is-fullwidth-code-point@^2.0.0: 588 | version "2.0.0" 589 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 590 | 591 | is-my-json-valid@^2.10.0: 592 | version "2.15.0" 593 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" 594 | dependencies: 595 | generate-function "^2.0.0" 596 | generate-object-property "^1.1.0" 597 | jsonpointer "^4.0.0" 598 | xtend "^4.0.0" 599 | 600 | is-path-cwd@^1.0.0: 601 | version "1.0.0" 602 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 603 | 604 | is-path-in-cwd@^1.0.0: 605 | version "1.0.0" 606 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 607 | dependencies: 608 | is-path-inside "^1.0.0" 609 | 610 | is-path-inside@^1.0.0: 611 | version "1.0.0" 612 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 613 | dependencies: 614 | path-is-inside "^1.0.1" 615 | 616 | is-property@^1.0.0: 617 | version "1.0.2" 618 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 619 | 620 | is-resolvable@^1.0.0: 621 | version "1.0.0" 622 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 623 | dependencies: 624 | tryit "^1.0.1" 625 | 626 | isarray@^1.0.0, isarray@~1.0.0: 627 | version "1.0.0" 628 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 629 | 630 | isexe@^1.1.1: 631 | version "1.1.2" 632 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" 633 | 634 | istanbul@0.4.5: 635 | version "0.4.5" 636 | resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" 637 | dependencies: 638 | abbrev "1.0.x" 639 | async "1.x" 640 | escodegen "1.8.x" 641 | esprima "2.7.x" 642 | glob "^5.0.15" 643 | handlebars "^4.0.1" 644 | js-yaml "3.x" 645 | mkdirp "0.5.x" 646 | nopt "3.x" 647 | once "1.x" 648 | resolve "1.1.x" 649 | supports-color "^3.1.0" 650 | which "^1.1.1" 651 | wordwrap "^1.0.0" 652 | 653 | jade@0.26.3: 654 | version "0.26.3" 655 | resolved "https://registry.yarnpkg.com/jade/-/jade-0.26.3.tgz#8f10d7977d8d79f2f6ff862a81b0513ccb25686c" 656 | dependencies: 657 | commander "0.6.1" 658 | mkdirp "0.3.0" 659 | 660 | js-tokens@^2.0.0: 661 | version "2.0.0" 662 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5" 663 | 664 | js-yaml@3.x, js-yaml@^3.5.1: 665 | version "3.7.0" 666 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" 667 | dependencies: 668 | argparse "^1.0.7" 669 | esprima "^2.6.0" 670 | 671 | json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: 672 | version "1.0.1" 673 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 674 | dependencies: 675 | jsonify "~0.0.0" 676 | 677 | jsonify@~0.0.0: 678 | version "0.0.0" 679 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 680 | 681 | jsonpointer@^4.0.0: 682 | version "4.0.1" 683 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 684 | 685 | kind-of@^3.0.2: 686 | version "3.1.0" 687 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 688 | dependencies: 689 | is-buffer "^1.0.2" 690 | 691 | lazy-cache@^1.0.3: 692 | version "1.0.4" 693 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 694 | 695 | levn@^0.3.0, levn@~0.3.0: 696 | version "0.3.0" 697 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 698 | dependencies: 699 | prelude-ls "~1.1.2" 700 | type-check "~0.3.2" 701 | 702 | lodash@^4.0.0, lodash@^4.3.0: 703 | version "4.17.2" 704 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42" 705 | 706 | longest@^1.0.1: 707 | version "1.0.1" 708 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 709 | 710 | lru-cache@2: 711 | version "2.7.3" 712 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" 713 | 714 | mime-db@~1.52.0: 715 | version "1.52.0" 716 | resolved "https://npm.klaxoon.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 717 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 718 | 719 | "minimatch@2 || 3", minimatch@^3.0.2: 720 | version "3.0.3" 721 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 722 | dependencies: 723 | brace-expansion "^1.0.0" 724 | 725 | minimatch@~0.2.11: 726 | version "0.2.14" 727 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" 728 | dependencies: 729 | lru-cache "2" 730 | sigmund "~1.0.0" 731 | 732 | minimist@0.0.8, minimist@~0.0.1: 733 | version "0.0.8" 734 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 735 | 736 | mkdirp@0.3.0: 737 | version "0.3.0" 738 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" 739 | 740 | mkdirp@0.5.0: 741 | version "0.5.0" 742 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.0.tgz#1d73076a6df986cd9344e15e71fcc05a4c9abf12" 743 | dependencies: 744 | minimist "0.0.8" 745 | 746 | mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: 747 | version "0.5.1" 748 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 749 | dependencies: 750 | minimist "0.0.8" 751 | 752 | mocha@1.21.5: 753 | version "1.21.5" 754 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-1.21.5.tgz#7c58b09174df976e434a23b1e8d639873fc529e9" 755 | dependencies: 756 | commander "2.3.0" 757 | debug "2.0.0" 758 | diff "1.0.8" 759 | escape-string-regexp "1.0.2" 760 | glob "3.2.3" 761 | growl "1.8.1" 762 | jade "0.26.3" 763 | mkdirp "0.5.0" 764 | 765 | ms@0.6.2: 766 | version "0.6.2" 767 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.6.2.tgz#d89c2124c6fdc1353d65a8b77bf1aac4b193708c" 768 | 769 | ms@0.7.2: 770 | version "0.7.2" 771 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 772 | 773 | mute-stream@0.0.5: 774 | version "0.0.5" 775 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" 776 | 777 | natural-compare@^1.4.0: 778 | version "1.4.0" 779 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 780 | 781 | nopt@3.x: 782 | version "3.0.6" 783 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 784 | dependencies: 785 | abbrev "1" 786 | 787 | number-is-nan@^1.0.0: 788 | version "1.0.1" 789 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 790 | 791 | object-assign@^4.0.1, object-assign@^4.1.0: 792 | version "4.1.0" 793 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" 794 | 795 | once@1.x, once@^1.3.0: 796 | version "1.4.0" 797 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 798 | dependencies: 799 | wrappy "1" 800 | 801 | onetime@^1.0.0: 802 | version "1.1.0" 803 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 804 | 805 | optimist@^0.6.1: 806 | version "0.6.1" 807 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 808 | dependencies: 809 | minimist "~0.0.1" 810 | wordwrap "~0.0.2" 811 | 812 | optionator@^0.8.1, optionator@^0.8.2: 813 | version "0.8.2" 814 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 815 | dependencies: 816 | deep-is "~0.1.3" 817 | fast-levenshtein "~2.0.4" 818 | levn "~0.3.0" 819 | prelude-ls "~1.1.2" 820 | type-check "~0.3.2" 821 | wordwrap "~1.0.0" 822 | 823 | os-homedir@^1.0.0: 824 | version "1.0.2" 825 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 826 | 827 | path-is-absolute@^1.0.0: 828 | version "1.0.1" 829 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 830 | 831 | path-is-inside@^1.0.1: 832 | version "1.0.2" 833 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 834 | 835 | pify@^2.0.0: 836 | version "2.3.0" 837 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 838 | 839 | pinkie-promise@^2.0.0: 840 | version "2.0.1" 841 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 842 | dependencies: 843 | pinkie "^2.0.0" 844 | 845 | pinkie@^2.0.0: 846 | version "2.0.4" 847 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 848 | 849 | pluralize@^1.2.1: 850 | version "1.2.1" 851 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" 852 | 853 | prelude-ls@~1.1.2: 854 | version "1.1.2" 855 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 856 | 857 | process-nextick-args@~1.0.6: 858 | version "1.0.7" 859 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 860 | 861 | progress@^1.1.8: 862 | version "1.1.8" 863 | resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 864 | 865 | readable-stream@^2.2.2: 866 | version "2.2.2" 867 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" 868 | dependencies: 869 | buffer-shims "^1.0.0" 870 | core-util-is "~1.0.0" 871 | inherits "~2.0.1" 872 | isarray "~1.0.0" 873 | process-nextick-args "~1.0.6" 874 | string_decoder "~0.10.x" 875 | util-deprecate "~1.0.1" 876 | 877 | readline2@^1.0.1: 878 | version "1.0.1" 879 | resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" 880 | dependencies: 881 | code-point-at "^1.0.0" 882 | is-fullwidth-code-point "^1.0.0" 883 | mute-stream "0.0.5" 884 | 885 | rechoir@^0.6.2: 886 | version "0.6.2" 887 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 888 | dependencies: 889 | resolve "^1.1.6" 890 | 891 | repeat-string@^1.5.2: 892 | version "1.6.1" 893 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 894 | 895 | require-uncached@^1.0.2: 896 | version "1.0.3" 897 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 898 | dependencies: 899 | caller-path "^0.1.0" 900 | resolve-from "^1.0.0" 901 | 902 | resolve-from@^1.0.0: 903 | version "1.0.1" 904 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 905 | 906 | resolve@1.1.x, resolve@^1.1.6: 907 | version "1.1.7" 908 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" 909 | 910 | restore-cursor@^1.0.1: 911 | version "1.0.1" 912 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 913 | dependencies: 914 | exit-hook "^1.0.0" 915 | onetime "^1.0.0" 916 | 917 | right-align@^0.1.1: 918 | version "0.1.3" 919 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 920 | dependencies: 921 | align-text "^0.1.1" 922 | 923 | rimraf@^2.2.8: 924 | version "2.5.4" 925 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" 926 | dependencies: 927 | glob "^7.0.5" 928 | 929 | run-async@^0.1.0: 930 | version "0.1.0" 931 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" 932 | dependencies: 933 | once "^1.3.0" 934 | 935 | rx-lite@^3.1.2: 936 | version "3.1.2" 937 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" 938 | 939 | shelljs@^0.7.5: 940 | version "0.7.5" 941 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.5.tgz#2eef7a50a21e1ccf37da00df767ec69e30ad0675" 942 | dependencies: 943 | glob "^7.0.0" 944 | interpret "^1.0.0" 945 | rechoir "^0.6.2" 946 | 947 | sigmund@~1.0.0: 948 | version "1.0.1" 949 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" 950 | 951 | slice-ansi@0.0.4: 952 | version "0.0.4" 953 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 954 | 955 | source-map@^0.4.4: 956 | version "0.4.4" 957 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" 958 | dependencies: 959 | amdefine ">=0.0.4" 960 | 961 | source-map@~0.2.0: 962 | version "0.2.0" 963 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" 964 | dependencies: 965 | amdefine ">=0.0.4" 966 | 967 | source-map@~0.5.1: 968 | version "0.5.6" 969 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 970 | 971 | sprintf-js@~1.0.2: 972 | version "1.0.3" 973 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 974 | 975 | string-width@^1.0.1: 976 | version "1.0.2" 977 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 978 | dependencies: 979 | code-point-at "^1.0.0" 980 | is-fullwidth-code-point "^1.0.0" 981 | strip-ansi "^3.0.0" 982 | 983 | string-width@^2.0.0: 984 | version "2.0.0" 985 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" 986 | dependencies: 987 | is-fullwidth-code-point "^2.0.0" 988 | strip-ansi "^3.0.0" 989 | 990 | string_decoder@~0.10.x: 991 | version "0.10.31" 992 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 993 | 994 | strip-ansi@^3.0.0: 995 | version "3.0.1" 996 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 997 | dependencies: 998 | ansi-regex "^2.0.0" 999 | 1000 | strip-bom@^3.0.0: 1001 | version "3.0.0" 1002 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1003 | 1004 | strip-json-comments@~1.0.1: 1005 | version "1.0.4" 1006 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" 1007 | 1008 | supports-color@^2.0.0: 1009 | version "2.0.0" 1010 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1011 | 1012 | supports-color@^3.1.0: 1013 | version "3.1.2" 1014 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" 1015 | dependencies: 1016 | has-flag "^1.0.0" 1017 | 1018 | table@^3.7.8: 1019 | version "3.8.3" 1020 | resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" 1021 | dependencies: 1022 | ajv "^4.7.0" 1023 | ajv-keywords "^1.0.0" 1024 | chalk "^1.1.1" 1025 | lodash "^4.0.0" 1026 | slice-ansi "0.0.4" 1027 | string-width "^2.0.0" 1028 | 1029 | text-table@~0.2.0: 1030 | version "0.2.0" 1031 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1032 | 1033 | through@^2.3.6: 1034 | version "2.3.8" 1035 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1036 | 1037 | tryit@^1.0.1: 1038 | version "1.0.3" 1039 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 1040 | 1041 | type-check@~0.3.2: 1042 | version "0.3.2" 1043 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1044 | dependencies: 1045 | prelude-ls "~1.1.2" 1046 | 1047 | typedarray@^0.0.6: 1048 | version "0.0.6" 1049 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 1050 | 1051 | uglify-js@^2.6: 1052 | version "2.7.5" 1053 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" 1054 | dependencies: 1055 | async "~0.2.6" 1056 | source-map "~0.5.1" 1057 | uglify-to-browserify "~1.0.0" 1058 | yargs "~3.10.0" 1059 | 1060 | uglify-to-browserify@~1.0.0: 1061 | version "1.0.2" 1062 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 1063 | 1064 | user-home@^2.0.0: 1065 | version "2.0.0" 1066 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 1067 | dependencies: 1068 | os-homedir "^1.0.0" 1069 | 1070 | util-deprecate@~1.0.1: 1071 | version "1.0.2" 1072 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1073 | 1074 | which@^1.1.1: 1075 | version "1.2.12" 1076 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" 1077 | dependencies: 1078 | isexe "^1.1.1" 1079 | 1080 | window-size@0.1.0: 1081 | version "0.1.0" 1082 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 1083 | 1084 | wordwrap@0.0.2: 1085 | version "0.0.2" 1086 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 1087 | 1088 | wordwrap@^1.0.0, wordwrap@~1.0.0: 1089 | version "1.0.0" 1090 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1091 | 1092 | wordwrap@~0.0.2: 1093 | version "0.0.3" 1094 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 1095 | 1096 | wrappy@1: 1097 | version "1.0.2" 1098 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1099 | 1100 | write@^0.2.1: 1101 | version "0.2.1" 1102 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 1103 | dependencies: 1104 | mkdirp "^0.5.1" 1105 | 1106 | xtend@^4.0.0: 1107 | version "4.0.1" 1108 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1109 | 1110 | yargs@~3.10.0: 1111 | version "3.10.0" 1112 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 1113 | dependencies: 1114 | camelcase "^1.0.2" 1115 | cliui "^2.1.0" 1116 | decamelize "^1.0.0" 1117 | window-size "0.1.0" 1118 | --------------------------------------------------------------------------------