├── .gitignore ├── .npmignore ├── LICENSE.md ├── README.md ├── index.js ├── loaders ├── createFileLoader.js ├── createMediaLoader.js ├── index.js └── loadImage.js ├── package-lock.json ├── package.json └── test ├── custom-font.js ├── custom-type.js ├── fixtures ├── Oswald-Medium.ttf ├── baboon-no-ext ├── baboon.png ├── bluejean_short.mp3 ├── cube.obj ├── foo-err.json ├── foo.json ├── giphy.mp4 ├── other.bin ├── test.md └── test.txt ├── generate-bin.js └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | bower_components 2 | node_modules 3 | *.log 4 | .DS_Store 5 | bundle.js 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | bower_components 2 | node_modules 3 | *.log 4 | .DS_Store 5 | bundle.js 6 | test/ 7 | test.js 8 | demo/ 9 | .npmignore 10 | LICENSE.md -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2017 Matt DesLauriers 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy 5 | of this software and associated documentation files (the "Software"), to deal 6 | in the Software without restriction, including without limitation the rights 7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all 12 | copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 17 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 18 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 19 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 20 | OR OTHER DEALINGS IN THE SOFTWARE. 21 | 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # load-asset 2 | 3 | [![experimental](http://badges.github.io/stability-badges/dist/experimental.svg)](http://github.com/badges/stability-badges) 4 | 5 | A simple Promise-based asset loader with cross browser support down to IE 11. Ideal for use with async/await syntax. Uses `fetch` where possible, otherwise falls back to `XMLHTTPRequest`. 6 | 7 | Tries to infer loader type from extension, but you can also specify a `type` for other extensions – see [Loaders](#loaders) for details. 8 | 9 | - Image tag (png, jpg, svg, etc) 10 | - Audio tag (mp3, ogg, etc) 11 | - Video tag (mp4, etc) 12 | - JSON (json) 13 | - Text (txt) 14 | - Binary (bin) 15 | - Blob 16 | 17 | ```js 18 | const load = require('load-asset'); 19 | 20 | async function printImageSize () { 21 | // Load a single asset 22 | const image = await load('image.png'); 23 | 24 | // Print the image width and height after loading 25 | console.log(`Image Size: ${image.width} x ${image.height}`); 26 | } 27 | ``` 28 | 29 | Handles loading a single asset, or multiple assets in parallel. You can use a named object map for convenience, provide a `progress` callback for visual updates, and optionally continue loading if individual resources error out. 30 | 31 | **Note:** You will need to polyfill Promise for older browsers. 32 | 33 | ## Full Example 34 | 35 | ```js 36 | const load = require('load-asset'); 37 | 38 | async function render () { 39 | // Load markdown file as text string 40 | const readme = await load({ url: 'readme.md', type: 'text' }); 41 | console.log(readme); 42 | 43 | // Load a list of named assets in parallel 44 | const urls = [ 'a.png', 'data.json', 'other.txt' ]; 45 | const items = await load.all(urls); 46 | console.log(items[0], items[1].some.data, items[2].toUpperCase()); 47 | 48 | // Load a map of named assets in parallel 49 | // But use 'any' instead of 'all' so that errors/404s 50 | // do not stop loading the rest of the assets. 51 | const assets = await load.any({ 52 | diffuse: 'assets/diffuse.png', 53 | data: { url: 'path/to/api', type: 'json' }, 54 | arrayBuffer: { url: 'file.buf', type: 'binary' }, 55 | document: { url: 'file.pdf', type: 'blob' }, 56 | video: { url: 'file.mp4', muted: true } 57 | }); 58 | 59 | console.log(assets.diffuse); // tag 60 | console.log(assets.data.some.property); // JSON data 61 | } 62 | ``` 63 | 64 | ## Install 65 | 66 | Use [npm](https://npmjs.com/) to install. 67 | 68 | ```sh 69 | npm install load-asset --save 70 | ``` 71 | 72 | ## Usage 73 | 74 | #### `asset = load(item)` 75 | 76 | Loads the `item` asset, which is either a string URL or an object with properties, and returns an `asset` Promise which will resolve to the loaded object (such as HTMLVideoElement, Audio or Image tags). 77 | 78 | If `item` is an object, you can specify a list of options like so: 79 | 80 | - `url` (required) - the URL to the asset 81 | - `type` - the loader type name, can be `'image'`, `'audio'`, etc (see [full list](#loaders) below). If not specified, it will be inferred from file extension if possible. If no loader is found by the extension, or no extension exists, the returned Promise will reject with an error. 82 | 83 | Loaders may have individual options that can also be passed down into them, such as `crossOrigin` on Image: 84 | 85 | ```js 86 | const image = await load({ url: 'foo.png', crossOrigin: 'Anonymous' }); 87 | ``` 88 | 89 | You can also pass a function to `type` if you have a custom loader, see [test/custom-type.js](./test/custom-type.js) for an example loading the Wavefront OBJ format. This way you can integrate other game/app-specific asset types into a single sequence of progress events. 90 | 91 | #### `assets = load.all(items, [progress])` 92 | 93 | This loads an array or map of `items`, loading them all in parallel, and returns the result when all are finished loading. 94 | 95 | If you specify an array, the returned Promise resolves to an array of loaded values corresponding to the same order as the `items`. Alternatively, you can specify an object to receive back a map with named values. 96 | 97 | ```js 98 | async function start () { 99 | // Resolves to an array of images 100 | const images = await load.all([ 'a.png', 'b.png' ]); 101 | console.log(images[0].width); 102 | 103 | // Resolves to an object mapping 104 | const assets = await load.all({ 105 | normal: 'foo/normal.png', 106 | diffuse: 'foo/diffuse.png' 107 | }); 108 | console.log(assets.normal.width, assets.diffuse.width); 109 | } 110 | ``` 111 | 112 | You can optionally specify a `progress` callback function which gets triggered after each item is loaded, passed with an `event` object: 113 | 114 | - `count` - number of items that have been loaded 115 | - `total` - number of total items in the queue 116 | - `progress` - a number between 0 (exclusive) and 1 (inclusive) of load completion 117 | - `target` - an object or string representing the asset descriptor to load 118 | - `value` - the loaded value for this target 119 | 120 | > *Note:* With this function, if one asset fails to load, the loading will stop and reject early. 121 | 122 | #### `assets = load.any(items, [progress])` 123 | 124 | The same as `load.all`, except that any errors in loading (for e.g. 404 assets) will be caught and resolved to `null`, so that other assets can continue loading. 125 | 126 | If a resource did not load, an additional `error` property will be added to the `progress` callback event for that resource. 127 | 128 | Example: 129 | 130 | ```js 131 | async function start () { 132 | // Resolves to an array of images 133 | const results = await load.any([ 'a.png', 'b.png' ], ({ error }) => { 134 | // Log error to avoid developer errors 135 | if (error) console.error(error); 136 | }); 137 | 138 | // Filter out any images that couldn't load 139 | const images = results.filter(Boolean); 140 | // ... do something ... 141 | } 142 | ``` 143 | 144 | ## Nesting 145 | 146 | If you pass a Promise to the load funtion, it will simply be returned. This allows for nesting features, for example: 147 | 148 | ```js 149 | loader.all({ 150 | tiles: loader.all([ 'a.png', 'b.png', 'c.png' ]), 151 | group: loader.all({ 152 | iconA: 'bar.png',, 153 | iconB: 'foo.png' 154 | }) 155 | }).then(assets => { 156 | console.log(assets.tiles[0], assets.group.iconA.width); 157 | }); 158 | ``` 159 | 160 | ## Loaders 161 | 162 | All loaders, their inferred extensions, and any additional options are detailed below. You can specify a `type` option, such as `'image'` or `'blob'`, to override the extension lookup. 163 | 164 | #### `'image'` 165 | 166 | **Extensions:** *jpg, jpeg, svg, png, gif, webp, bmp, tga, tif, apng, wbpm, ico* 167 | 168 | Resolves to an Image tag. You can also pass `crossOrigin` in options for images, e.g. `{ crossOrigin: 'Anonymous' }`. 169 | 170 | #### `'json'` 171 | 172 | **Extensions:** *json* 173 | 174 | Resolves to parsed JSON data. 175 | 176 | #### `'text'` 177 | 178 | **Extensions:** *txt* 179 | 180 | Resolves to a text string. 181 | 182 | #### `'audio'` / `'video'` 183 | 184 | **Audio Extensions:** *mp3, ogg, wav, midi, and more* 185 | **Video Extensions:** *mp4, m4v, mov, mkv, mpeg, and more* 186 | 187 | See [here](https://github.com/mattdesl/browser-media-mime-type/blob/master/mime-types.json) for all inferred audio and video extensions. 188 | 189 | Additional options for `audio` & `video` types: 190 | 191 | - `crossOrigin` - e.g. 'Anonymous' 192 | - `event` - the load event to wait for, default `'canplay'`, can also be: `'canplaythrough'`, `'loadeddata'`, `'loadedmetadata'` 193 | - Additional media properties: *volume, preload, playbackRate, muted, currentTime, controls, autoPlay* 194 | 195 | #### `'binary'` 196 | 197 | **Extensions:** *bin* 198 | 199 | Resolves to an ArrayBuffer. 200 | 201 | #### `'blob'` 202 | 203 | Not associated with any file extensions. 204 | 205 | ## License 206 | 207 | MIT, see [LICENSE.md](http://github.com/mattdesl/load-asset/blob/master/LICENSE.md) for details. 208 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var loaders = require('./loaders'); 2 | var assign = require('object-assign'); 3 | var isPromise = require('is-promise'); 4 | var noop = function () {}; 5 | 6 | module.exports = loadAsset; 7 | 8 | module.exports.all = function all (opt, progress) { 9 | return loadMultiple(opt, progress, false); 10 | }; 11 | 12 | module.exports.any = function any (opt, progress) { 13 | return loadMultiple(opt, progress, true); 14 | }; 15 | 16 | function loadMultiple (opt, progress, skipMissing) { 17 | progress = progress || noop; 18 | if (typeof progress !== 'function') { 19 | return Promise.reject(new Error('The second argument to load.all() and load.any() must be a function, or undefined')); 20 | } 21 | 22 | var total; 23 | var count = 0; 24 | var load; 25 | var emitProgress = function (item, value, count, error) { 26 | var obj = { 27 | target: item, 28 | total: total, 29 | count: count, 30 | progress: count / total, 31 | value: value 32 | }; 33 | if (error) obj.error = error; 34 | progress(obj); 35 | }; 36 | 37 | if (skipMissing) { 38 | load = function (opt) { 39 | return loadAsset(opt).then(function (result) { 40 | return { value: result }; 41 | }, function (error) { 42 | return { value: null, error: error }; 43 | }).then(function (optional) { 44 | emitProgress(opt, optional.value, ++count, optional.error); 45 | return optional.value; 46 | }); 47 | }; 48 | } else { 49 | load = function (opt) { 50 | return loadAsset(opt).then(function (result) { 51 | emitProgress(opt, result, ++count); 52 | return result; 53 | }); 54 | }; 55 | } 56 | 57 | if (Array.isArray(opt)) { 58 | total = opt.length; 59 | return Promise.all(opt.map(function (item) { 60 | return load(item); 61 | })); 62 | } else if (opt) { 63 | var entries = Object.keys(opt).map(function (key) { 64 | return { key: key, value: opt[key] }; 65 | }); 66 | total = entries.length; 67 | return Promise.all(entries.map(function (item) { 68 | var key = item.key; 69 | return load(item.value).then(function (value) { 70 | return { value: value, key: key }; 71 | }); 72 | })).then(function (results) { 73 | return results.reduce(function (obj, item) { 74 | obj[item.key] = item.value; 75 | return obj; 76 | }, {}); 77 | }); 78 | } else { 79 | return Promise.reject(new Error('You must specify an array of assets or object group to load')); 80 | } 81 | } 82 | 83 | function loadAsset (opt) { 84 | if (!opt) return Promise.reject(new Error('You must specify a URL or descriptor of the asset to load')); 85 | if (typeof opt === 'string') { 86 | opt = { url: opt }; 87 | } 88 | // If it's a promise, assume nested features... 89 | if (isPromise(opt)) return opt; 90 | return getLoader(opt).then(function (loader) { 91 | opt = assign({}, opt); 92 | delete opt.type; 93 | return loader(opt); 94 | }); 95 | } 96 | 97 | function getLoader (opt) { 98 | var i, loader; 99 | var type = opt.type ? opt.type : null; 100 | if (type) { 101 | // Allow user to specify custom type function 102 | if (typeof type === 'function') { 103 | return Promise.resolve(type); 104 | } else { 105 | type = type.toLowerCase(); 106 | } 107 | // User specified an explicit type, use that. 108 | if (!opt.url) { 109 | return Promise.reject(new Error('When using loadAsset(), you must specify a URL or descriptor of the asset to load')); 110 | } 111 | for (i = 0; i < loaders.length; i++) { 112 | loader = loaders[i]; 113 | if (loader.key === type) return Promise.resolve(loader.load); 114 | } 115 | return Promise.reject(new Error('Could not find an asset loader by the key "' + opt.type + '"')); 116 | } else { 117 | // User didn't specify type, try to infer from file extension 118 | if (!opt.url) { 119 | return Promise.reject(new Error('When using loadAsset(), you must specify a URL or descriptor of the asset to load')); 120 | } 121 | var ext = extname(opt.url); 122 | if (!ext) return Promise.reject(new Error('No extension found for input URL "' + opt.url + '", try to specify a { type } such as "image" or "text"')); 123 | for (i = 0; i < loaders.length; i++) { 124 | loader = loaders[i]; 125 | if (!loader.match) continue; 126 | var isMatch = typeof loader.match === 'function' 127 | ? loader.match(ext) 128 | : loader.match.test(ext); 129 | if (isMatch) return Promise.resolve(loader.load); 130 | } 131 | return Promise.reject(new Error('Could not infer an asset loader from the file type "' + ext + '", try specifying { type } such as "image" or "text"')); 132 | } 133 | } 134 | 135 | function extname (url) { 136 | if (!url) return ''; 137 | var idx = url.lastIndexOf('/'); 138 | if (idx !== -1) url = url.substring(idx + 1); // Keep path without its segments 139 | idx = url.indexOf('?'); 140 | if (idx !== -1) url = url.substring(0, idx); // Remove query 141 | idx = url.indexOf('#'); 142 | if (idx !== -1) url = url.substring(0, idx); // Remove fragment 143 | idx = url.lastIndexOf('.'); 144 | return idx !== -1 ? url.substring(idx) : ''; 145 | } 146 | -------------------------------------------------------------------------------- /loaders/createFileLoader.js: -------------------------------------------------------------------------------- 1 | var xhr = require('xhr'); 2 | var assign = require('object-assign'); 3 | 4 | module.exports = function (type) { 5 | return function loadFile (opt) { 6 | var p; 7 | if ('fetch' in window) { 8 | p = window.fetch(opt.url, opt) 9 | .then(function (response) { 10 | if (/404/.test(response.status)) { 11 | throw new Error('Resource not found'); 12 | } 13 | if (!/^2/.test(response.status)) { 14 | throw new Error('Unexpected HTTP Status Code: ' + response.status); 15 | } 16 | if (!response.ok) { 17 | throw new Error('Response not OK'); 18 | } 19 | if (type === 'json') { 20 | return response.json(); 21 | } else if (type === 'binary') { 22 | return response.arrayBuffer(); 23 | } else if (type === 'blob') { 24 | return response.blob(); 25 | } else { 26 | return response.text(); 27 | } 28 | }); 29 | } else { 30 | p = xhrFetch(type, opt); 31 | } 32 | return p.catch(function (err) { 33 | throw new Error( 34 | err.message + ' while loading file ' + opt.url 35 | ); 36 | }); 37 | }; 38 | }; 39 | 40 | function xhrFetch (type, opt) { 41 | return new Promise(function (resolve, reject) { 42 | var responseType = 'text'; 43 | if (type === 'json') responseType = 'text'; 44 | else if (type === 'binary') responseType = 'arraybuffer'; 45 | else if (type === 'blob') responseType = 'blob'; 46 | opt = assign({}, opt, { 47 | json: false, 48 | responseType: responseType 49 | }); 50 | xhr(opt, function (err, res, body) { 51 | if (err) return reject(err); 52 | if (/404/.test(res.statusCode)) { 53 | throw new Error('Resource not found'); 54 | } 55 | if (!/^2/.test(res.statusCode)) { 56 | return reject(new Error('Unexpected HTTP Status Code: ' + res.statusCode)); 57 | } 58 | if (type === 'json') { 59 | try { 60 | body = JSON.parse(body); 61 | } catch (err) { 62 | return reject(err); 63 | } 64 | } 65 | resolve(body); 66 | }); 67 | }); 68 | } 69 | -------------------------------------------------------------------------------- /loaders/createMediaLoader.js: -------------------------------------------------------------------------------- 1 | var mime = require('browser-media-mime-type'); 2 | 3 | function getMediaType (ext) { 4 | var result = mime(ext); 5 | if (!result) return null; 6 | if (result.indexOf('audio') === 0) return 'audio'; 7 | if (result.indexOf('video') === 0) return 'video'; 8 | return null; 9 | } 10 | 11 | module.exports = function createMediaLoader (type, createElement) { 12 | return { 13 | key: type, 14 | match: function (ext) { 15 | return getMediaType(ext) === type; 16 | }, 17 | load: function (opt) { 18 | return new Promise(function (resolve, reject) { 19 | var finished = false; 20 | var media = createElement(); 21 | var onLoaded = function onLoaded () { 22 | if (finished) return; 23 | finished = true; 24 | resolve(media); 25 | }; 26 | 27 | var event = (opt.event || 'canplay').toLowerCase(); 28 | if (event === 'loadedmetadata') { 29 | media.onloadedmetadata = onLoaded; 30 | } else if (event === 'canplaythrough') { 31 | media.oncanplaythrough = onLoaded; 32 | } else if (event === 'loadeddata') { 33 | media.onloadeddata = onLoaded; 34 | } else { 35 | media.oncanplay = onLoaded; 36 | } 37 | 38 | media.onerror = function onError (er) { 39 | if (finished) return; 40 | finished = true; 41 | reject(new Error('Error while loading ' + type + ' at ' + opt.url)); 42 | }; 43 | 44 | // pass through media properties if defined 45 | if (opt.crossOrigin) media.crossOrigin = opt.crossOrigin; 46 | if (typeof opt.volume !== 'undefined') media.volume = opt.volume; 47 | if (typeof opt.preload !== 'undefined') media.preload = opt.volume; 48 | if (typeof opt.playbackRate !== 'undefined') media.playbackRate = opt.volume; 49 | if (typeof opt.muted !== 'undefined') media.muted = opt.volume; 50 | if (typeof opt.currentTime !== 'undefined') media.currentTime = opt.volume; 51 | if (typeof opt.controls !== 'undefined') media.controls = opt.volume; 52 | if (typeof opt.autoPlay !== 'undefined') media.autoPlay = opt.volume; 53 | 54 | media.src = opt.url; 55 | 56 | if (media.readyState >= media.HAVE_ENOUGH_DATA) { 57 | finished = true; 58 | return resolve(media); 59 | } 60 | 61 | media.load(); 62 | }); 63 | } 64 | }; 65 | }; 66 | -------------------------------------------------------------------------------- /loaders/index.js: -------------------------------------------------------------------------------- 1 | const createMediaLoader = require('./createMediaLoader'); 2 | const createFileLoader = require('./createFileLoader'); 3 | const loadImage = require('./loadImage'); 4 | 5 | module.exports = [ 6 | // json 7 | { 8 | key: 'json', 9 | match: /\.json$/i, 10 | load: createFileLoader('json') 11 | }, 12 | // text 13 | { 14 | key: 'text', 15 | match: /\.txt$/i, 16 | load: createFileLoader('text') 17 | }, 18 | // image 19 | { 20 | key: 'image', 21 | match: /\.(jpg|jpeg|svg|png|gif|webp|bmp|tga|tif|apng|wbpm|ico)$/i, 22 | load: loadImage 23 | }, 24 | // audio 25 | createMediaLoader('audio', function () { 26 | return new window.Audio(); 27 | }), 28 | // video 29 | createMediaLoader('video', function () { 30 | return document.createElement('video'); 31 | }), 32 | // binary 33 | { 34 | key: 'binary', 35 | match: /\.bin$/i, 36 | load: createFileLoader('binary') 37 | }, 38 | // blob 39 | { 40 | key: 'blob', 41 | load: createFileLoader('blob') 42 | } 43 | ]; 44 | -------------------------------------------------------------------------------- /loaders/loadImage.js: -------------------------------------------------------------------------------- 1 | module.exports = function (opt) { 2 | return new Promise(function (resolve, reject) { 3 | var finished = false; 4 | var image = new window.Image(); 5 | image.onload = function onLoaded () { 6 | if (finished) return; 7 | finished = true; 8 | resolve(image); 9 | }; 10 | image.onerror = function onError () { 11 | if (finished) return; 12 | finished = true; 13 | reject(new Error('Error while loading image at ' + opt.url)); 14 | }; 15 | if (opt.crossOrigin) image.crossOrigin = opt.crossOrigin; 16 | image.src = opt.url; 17 | }); 18 | }; 19 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "load-asset", 3 | "version": "1.2.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "JSONStream": { 8 | "version": "1.3.2", 9 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", 10 | "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", 11 | "dev": true, 12 | "requires": { 13 | "jsonparse": "1.3.1", 14 | "through": "2.3.8" 15 | } 16 | }, 17 | "acorn": { 18 | "version": "4.0.13", 19 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", 20 | "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", 21 | "dev": true 22 | }, 23 | "acorn-node": { 24 | "version": "1.3.0", 25 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.3.0.tgz", 26 | "integrity": "sha512-efP54n3d1aLfjL2UMdaXa6DsswwzJeI5rqhbFvXMrKiJ6eJFpf+7R0zN7t8IC+XKn2YOAFAv6xbBNgHUkoHWLw==", 27 | "dev": true, 28 | "requires": { 29 | "acorn": "5.5.3", 30 | "xtend": "4.0.1" 31 | }, 32 | "dependencies": { 33 | "acorn": { 34 | "version": "5.5.3", 35 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", 36 | "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==", 37 | "dev": true 38 | } 39 | } 40 | }, 41 | "ansi-regex": { 42 | "version": "0.2.1", 43 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", 44 | "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", 45 | "dev": true 46 | }, 47 | "ansi-styles": { 48 | "version": "1.1.0", 49 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", 50 | "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", 51 | "dev": true 52 | }, 53 | "anymatch": { 54 | "version": "1.3.2", 55 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", 56 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", 57 | "dev": true, 58 | "requires": { 59 | "micromatch": "2.3.11", 60 | "normalize-path": "2.1.1" 61 | } 62 | }, 63 | "arr-diff": { 64 | "version": "2.0.0", 65 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 66 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 67 | "dev": true, 68 | "requires": { 69 | "arr-flatten": "1.1.0" 70 | } 71 | }, 72 | "arr-flatten": { 73 | "version": "1.1.0", 74 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 75 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 76 | "dev": true 77 | }, 78 | "array-filter": { 79 | "version": "0.0.1", 80 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", 81 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", 82 | "dev": true 83 | }, 84 | "array-map": { 85 | "version": "0.0.0", 86 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", 87 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", 88 | "dev": true 89 | }, 90 | "array-reduce": { 91 | "version": "0.0.0", 92 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", 93 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", 94 | "dev": true 95 | }, 96 | "array-unique": { 97 | "version": "0.2.1", 98 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 99 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 100 | "dev": true 101 | }, 102 | "asn1.js": { 103 | "version": "4.10.1", 104 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", 105 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", 106 | "dev": true, 107 | "requires": { 108 | "bn.js": "4.11.8", 109 | "inherits": "2.0.3", 110 | "minimalistic-assert": "1.0.1" 111 | } 112 | }, 113 | "assert": { 114 | "version": "1.4.1", 115 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", 116 | "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", 117 | "dev": true, 118 | "requires": { 119 | "util": "0.10.3" 120 | } 121 | }, 122 | "astw": { 123 | "version": "2.2.0", 124 | "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", 125 | "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", 126 | "dev": true, 127 | "requires": { 128 | "acorn": "4.0.13" 129 | } 130 | }, 131 | "async-each": { 132 | "version": "1.0.1", 133 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 134 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 135 | "dev": true 136 | }, 137 | "balanced-match": { 138 | "version": "1.0.0", 139 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 140 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 141 | "dev": true 142 | }, 143 | "base64-js": { 144 | "version": "1.3.0", 145 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", 146 | "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", 147 | "dev": true 148 | }, 149 | "binary-extensions": { 150 | "version": "1.11.0", 151 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", 152 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", 153 | "dev": true 154 | }, 155 | "bn.js": { 156 | "version": "4.11.8", 157 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", 158 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", 159 | "dev": true 160 | }, 161 | "bole": { 162 | "version": "2.0.0", 163 | "resolved": "https://registry.npmjs.org/bole/-/bole-2.0.0.tgz", 164 | "integrity": "sha1-2KocaQRnv7T+Ebh0rLLoOH44JhU=", 165 | "dev": true, 166 | "requires": { 167 | "core-util-is": "1.0.2", 168 | "individual": "3.0.0", 169 | "json-stringify-safe": "5.0.1" 170 | } 171 | }, 172 | "brace-expansion": { 173 | "version": "1.1.11", 174 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 175 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 176 | "dev": true, 177 | "requires": { 178 | "balanced-match": "1.0.0", 179 | "concat-map": "0.0.1" 180 | } 181 | }, 182 | "braces": { 183 | "version": "1.8.5", 184 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 185 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 186 | "dev": true, 187 | "requires": { 188 | "expand-range": "1.8.2", 189 | "preserve": "0.2.0", 190 | "repeat-element": "1.1.2" 191 | } 192 | }, 193 | "brorand": { 194 | "version": "1.1.0", 195 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 196 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", 197 | "dev": true 198 | }, 199 | "browser-media-mime-type": { 200 | "version": "1.0.0", 201 | "resolved": "https://registry.npmjs.org/browser-media-mime-type/-/browser-media-mime-type-1.0.0.tgz", 202 | "integrity": "sha1-oVNKitk48Lz0tkL1QPo1YFZT0Ok=" 203 | }, 204 | "browser-pack": { 205 | "version": "6.1.0", 206 | "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", 207 | "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", 208 | "dev": true, 209 | "requires": { 210 | "JSONStream": "1.3.2", 211 | "combine-source-map": "0.8.0", 212 | "defined": "1.0.0", 213 | "safe-buffer": "5.1.2", 214 | "through2": "2.0.3", 215 | "umd": "3.0.3" 216 | } 217 | }, 218 | "browser-resolve": { 219 | "version": "1.11.2", 220 | "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", 221 | "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", 222 | "dev": true, 223 | "requires": { 224 | "resolve": "1.1.7" 225 | }, 226 | "dependencies": { 227 | "resolve": { 228 | "version": "1.1.7", 229 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", 230 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", 231 | "dev": true 232 | } 233 | } 234 | }, 235 | "browserify": { 236 | "version": "16.2.0", 237 | "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.2.0.tgz", 238 | "integrity": "sha512-yotdAkp/ZbgDesHQBYU37zjc29JDH4iXT8hjzM1fdUVWogjARX0S1cKeX24Ci6zZ+jG+ADmCTRt6xvtmJnI+BQ==", 239 | "dev": true, 240 | "requires": { 241 | "JSONStream": "1.3.2", 242 | "assert": "1.4.1", 243 | "browser-pack": "6.1.0", 244 | "browser-resolve": "1.11.2", 245 | "browserify-zlib": "0.2.0", 246 | "buffer": "5.1.0", 247 | "cached-path-relative": "1.0.1", 248 | "concat-stream": "1.6.2", 249 | "console-browserify": "1.1.0", 250 | "constants-browserify": "1.0.0", 251 | "crypto-browserify": "3.12.0", 252 | "defined": "1.0.0", 253 | "deps-sort": "2.0.0", 254 | "domain-browser": "1.2.0", 255 | "duplexer2": "0.1.4", 256 | "events": "2.0.0", 257 | "glob": "7.1.2", 258 | "has": "1.0.1", 259 | "htmlescape": "1.1.1", 260 | "https-browserify": "1.0.0", 261 | "inherits": "2.0.3", 262 | "insert-module-globals": "7.0.6", 263 | "labeled-stream-splicer": "2.0.1", 264 | "mkdirp": "0.5.1", 265 | "module-deps": "6.0.2", 266 | "os-browserify": "0.3.0", 267 | "parents": "1.0.1", 268 | "path-browserify": "0.0.0", 269 | "process": "0.11.10", 270 | "punycode": "1.4.1", 271 | "querystring-es3": "0.2.1", 272 | "read-only-stream": "2.0.0", 273 | "readable-stream": "2.3.6", 274 | "resolve": "1.7.1", 275 | "shasum": "1.0.2", 276 | "shell-quote": "1.6.1", 277 | "stream-browserify": "2.0.1", 278 | "stream-http": "2.8.1", 279 | "string_decoder": "1.1.1", 280 | "subarg": "1.0.0", 281 | "syntax-error": "1.4.0", 282 | "through2": "2.0.3", 283 | "timers-browserify": "1.4.2", 284 | "tty-browserify": "0.0.1", 285 | "url": "0.11.0", 286 | "util": "0.10.3", 287 | "vm-browserify": "1.0.1", 288 | "xtend": "4.0.1" 289 | }, 290 | "dependencies": { 291 | "events": { 292 | "version": "2.0.0", 293 | "resolved": "https://registry.npmjs.org/events/-/events-2.0.0.tgz", 294 | "integrity": "sha512-r/M5YkNg9zwI8QbSf7tsDWWJvO3PGwZXyG7GpFAxtMASnHL2eblFd7iHiGPtyGKKFPZ59S63NeX10Ws6WqGDcg==", 295 | "dev": true 296 | } 297 | } 298 | }, 299 | "browserify-aes": { 300 | "version": "1.2.0", 301 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 302 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 303 | "dev": true, 304 | "requires": { 305 | "buffer-xor": "1.0.3", 306 | "cipher-base": "1.0.4", 307 | "create-hash": "1.2.0", 308 | "evp_bytestokey": "1.0.3", 309 | "inherits": "2.0.3", 310 | "safe-buffer": "5.1.2" 311 | } 312 | }, 313 | "browserify-cipher": { 314 | "version": "1.0.1", 315 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 316 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 317 | "dev": true, 318 | "requires": { 319 | "browserify-aes": "1.2.0", 320 | "browserify-des": "1.0.1", 321 | "evp_bytestokey": "1.0.3" 322 | } 323 | }, 324 | "browserify-des": { 325 | "version": "1.0.1", 326 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", 327 | "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", 328 | "dev": true, 329 | "requires": { 330 | "cipher-base": "1.0.4", 331 | "des.js": "1.0.0", 332 | "inherits": "2.0.3" 333 | } 334 | }, 335 | "browserify-rsa": { 336 | "version": "4.0.1", 337 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", 338 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", 339 | "dev": true, 340 | "requires": { 341 | "bn.js": "4.11.8", 342 | "randombytes": "2.0.6" 343 | } 344 | }, 345 | "browserify-sign": { 346 | "version": "4.0.4", 347 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", 348 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", 349 | "dev": true, 350 | "requires": { 351 | "bn.js": "4.11.8", 352 | "browserify-rsa": "4.0.1", 353 | "create-hash": "1.2.0", 354 | "create-hmac": "1.1.7", 355 | "elliptic": "6.4.0", 356 | "inherits": "2.0.3", 357 | "parse-asn1": "5.1.1" 358 | } 359 | }, 360 | "browserify-zlib": { 361 | "version": "0.2.0", 362 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 363 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 364 | "dev": true, 365 | "requires": { 366 | "pako": "1.0.6" 367 | } 368 | }, 369 | "budo": { 370 | "version": "11.2.0", 371 | "resolved": "https://registry.npmjs.org/budo/-/budo-11.2.0.tgz", 372 | "integrity": "sha512-UW2466n1/Vinc0Ui+M3W2rK6ryHb0amVjcqKg91NwoKk80nEkVau4W8/HNMROhU1b413uQWPtsPyqAcqYLAPaQ==", 373 | "dev": true, 374 | "requires": { 375 | "bole": "2.0.0", 376 | "browserify": "16.2.0", 377 | "chokidar": "1.7.0", 378 | "connect-pushstate": "1.1.0", 379 | "escape-html": "1.0.3", 380 | "events": "1.1.1", 381 | "garnish": "5.2.0", 382 | "get-ports": "1.0.3", 383 | "inject-lr-script": "2.1.0", 384 | "internal-ip": "3.0.1", 385 | "micromatch": "2.3.11", 386 | "on-finished": "2.3.0", 387 | "on-headers": "1.0.1", 388 | "once": "1.4.0", 389 | "opn": "3.0.3", 390 | "path-is-absolute": "1.0.1", 391 | "pem": "1.12.5", 392 | "reload-css": "1.0.2", 393 | "resolve": "1.7.1", 394 | "serve-static": "1.13.2", 395 | "simple-html-index": "1.5.0", 396 | "stacked": "1.1.1", 397 | "stdout-stream": "1.4.0", 398 | "strip-ansi": "3.0.1", 399 | "subarg": "1.0.0", 400 | "term-color": "1.0.1", 401 | "url-trim": "1.0.0", 402 | "watchify-middleware": "1.8.0", 403 | "ws": "1.1.5", 404 | "xtend": "4.0.1" 405 | } 406 | }, 407 | "buffer": { 408 | "version": "5.1.0", 409 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.1.0.tgz", 410 | "integrity": "sha512-YkIRgwsZwJWTnyQrsBTWefizHh+8GYj3kbL1BTiAQ/9pwpino0G7B2gp5tx/FUBqUlvtxV85KNR3mwfAtv15Yw==", 411 | "dev": true, 412 | "requires": { 413 | "base64-js": "1.3.0", 414 | "ieee754": "1.1.11" 415 | } 416 | }, 417 | "buffer-from": { 418 | "version": "1.0.0", 419 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", 420 | "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", 421 | "dev": true 422 | }, 423 | "buffer-xor": { 424 | "version": "1.0.3", 425 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 426 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", 427 | "dev": true 428 | }, 429 | "builtin-status-codes": { 430 | "version": "3.0.0", 431 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 432 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", 433 | "dev": true 434 | }, 435 | "cached-path-relative": { 436 | "version": "1.0.1", 437 | "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", 438 | "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", 439 | "dev": true 440 | }, 441 | "chalk": { 442 | "version": "0.5.1", 443 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", 444 | "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", 445 | "dev": true, 446 | "requires": { 447 | "ansi-styles": "1.1.0", 448 | "escape-string-regexp": "1.0.5", 449 | "has-ansi": "0.1.0", 450 | "strip-ansi": "0.3.0", 451 | "supports-color": "0.2.0" 452 | }, 453 | "dependencies": { 454 | "strip-ansi": { 455 | "version": "0.3.0", 456 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", 457 | "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", 458 | "dev": true, 459 | "requires": { 460 | "ansi-regex": "0.2.1" 461 | } 462 | } 463 | } 464 | }, 465 | "charenc": { 466 | "version": "0.0.2", 467 | "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", 468 | "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", 469 | "dev": true 470 | }, 471 | "chokidar": { 472 | "version": "1.7.0", 473 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 474 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 475 | "dev": true, 476 | "requires": { 477 | "anymatch": "1.3.2", 478 | "async-each": "1.0.1", 479 | "fsevents": "1.2.3", 480 | "glob-parent": "2.0.0", 481 | "inherits": "2.0.3", 482 | "is-binary-path": "1.0.1", 483 | "is-glob": "2.0.1", 484 | "path-is-absolute": "1.0.1", 485 | "readdirp": "2.1.0" 486 | } 487 | }, 488 | "cipher-base": { 489 | "version": "1.0.4", 490 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 491 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 492 | "dev": true, 493 | "requires": { 494 | "inherits": "2.0.3", 495 | "safe-buffer": "5.1.2" 496 | } 497 | }, 498 | "combine-source-map": { 499 | "version": "0.8.0", 500 | "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", 501 | "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", 502 | "dev": true, 503 | "requires": { 504 | "convert-source-map": "1.1.3", 505 | "inline-source-map": "0.6.2", 506 | "lodash.memoize": "3.0.4", 507 | "source-map": "0.5.7" 508 | } 509 | }, 510 | "concat-map": { 511 | "version": "0.0.1", 512 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 513 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 514 | "dev": true 515 | }, 516 | "concat-stream": { 517 | "version": "1.6.2", 518 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 519 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 520 | "dev": true, 521 | "requires": { 522 | "buffer-from": "1.0.0", 523 | "inherits": "2.0.3", 524 | "readable-stream": "2.3.6", 525 | "typedarray": "0.0.6" 526 | } 527 | }, 528 | "connect-pushstate": { 529 | "version": "1.1.0", 530 | "resolved": "https://registry.npmjs.org/connect-pushstate/-/connect-pushstate-1.1.0.tgz", 531 | "integrity": "sha1-vKsiQnHEOWBKD7D2FMCl9WPojiQ=", 532 | "dev": true 533 | }, 534 | "console-browserify": { 535 | "version": "1.1.0", 536 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 537 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 538 | "dev": true, 539 | "requires": { 540 | "date-now": "0.1.4" 541 | } 542 | }, 543 | "constants-browserify": { 544 | "version": "1.0.0", 545 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 546 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 547 | "dev": true 548 | }, 549 | "convert-source-map": { 550 | "version": "1.1.3", 551 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", 552 | "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", 553 | "dev": true 554 | }, 555 | "core-util-is": { 556 | "version": "1.0.2", 557 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 558 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 559 | "dev": true 560 | }, 561 | "create-ecdh": { 562 | "version": "4.0.1", 563 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.1.tgz", 564 | "integrity": "sha512-iZvCCg8XqHQZ1ioNBTzXS/cQSkqkqcPs8xSX4upNB+DAk9Ht3uzQf2J32uAHNCne8LDmKr29AgZrEs4oIrwLuQ==", 565 | "dev": true, 566 | "requires": { 567 | "bn.js": "4.11.8", 568 | "elliptic": "6.4.0" 569 | } 570 | }, 571 | "create-hash": { 572 | "version": "1.2.0", 573 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 574 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 575 | "dev": true, 576 | "requires": { 577 | "cipher-base": "1.0.4", 578 | "inherits": "2.0.3", 579 | "md5.js": "1.3.4", 580 | "ripemd160": "2.0.2", 581 | "sha.js": "2.4.11" 582 | } 583 | }, 584 | "create-hmac": { 585 | "version": "1.1.7", 586 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 587 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 588 | "dev": true, 589 | "requires": { 590 | "cipher-base": "1.0.4", 591 | "create-hash": "1.2.0", 592 | "inherits": "2.0.3", 593 | "ripemd160": "2.0.2", 594 | "safe-buffer": "5.1.2", 595 | "sha.js": "2.4.11" 596 | } 597 | }, 598 | "cross-spawn": { 599 | "version": "6.0.5", 600 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 601 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 602 | "dev": true, 603 | "requires": { 604 | "nice-try": "1.0.4", 605 | "path-key": "2.0.1", 606 | "semver": "5.5.0", 607 | "shebang-command": "1.2.0", 608 | "which": "1.3.0" 609 | } 610 | }, 611 | "crypt": { 612 | "version": "0.0.2", 613 | "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", 614 | "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", 615 | "dev": true 616 | }, 617 | "crypto-browserify": { 618 | "version": "3.12.0", 619 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 620 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 621 | "dev": true, 622 | "requires": { 623 | "browserify-cipher": "1.0.1", 624 | "browserify-sign": "4.0.4", 625 | "create-ecdh": "4.0.1", 626 | "create-hash": "1.2.0", 627 | "create-hmac": "1.1.7", 628 | "diffie-hellman": "5.0.3", 629 | "inherits": "2.0.3", 630 | "pbkdf2": "3.0.16", 631 | "public-encrypt": "4.0.2", 632 | "randombytes": "2.0.6", 633 | "randomfill": "1.0.4" 634 | } 635 | }, 636 | "date-now": { 637 | "version": "0.1.4", 638 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 639 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", 640 | "dev": true 641 | }, 642 | "debounce": { 643 | "version": "1.1.0", 644 | "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.1.0.tgz", 645 | "integrity": "sha512-ZQVKfRVlwRfD150ndzEK8M90ABT+Y/JQKs4Y7U4MXdpuoUkkrr4DwKbVux3YjylA5bUMUj0Nc3pMxPJX6N2QQQ==", 646 | "dev": true 647 | }, 648 | "debug": { 649 | "version": "2.6.9", 650 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 651 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 652 | "dev": true, 653 | "requires": { 654 | "ms": "2.0.0" 655 | } 656 | }, 657 | "deep-equal": { 658 | "version": "1.0.1", 659 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", 660 | "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", 661 | "dev": true 662 | }, 663 | "default-gateway": { 664 | "version": "2.7.1", 665 | "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.1.tgz", 666 | "integrity": "sha512-3UOsgF6oWP0js8hoDp1tcrYYndTznfl8aWr+ziU1z/p9Uv+a2UztSegX/3wwdxaM4SpPgGe3G//tJJeNEog9Zg==", 667 | "dev": true, 668 | "requires": { 669 | "execa": "0.10.0", 670 | "ip-regex": "2.1.0" 671 | } 672 | }, 673 | "define-properties": { 674 | "version": "1.1.2", 675 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", 676 | "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", 677 | "dev": true, 678 | "requires": { 679 | "foreach": "2.0.5", 680 | "object-keys": "1.0.11" 681 | } 682 | }, 683 | "defined": { 684 | "version": "1.0.0", 685 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 686 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", 687 | "dev": true 688 | }, 689 | "depd": { 690 | "version": "1.1.2", 691 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 692 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 693 | "dev": true 694 | }, 695 | "deps-sort": { 696 | "version": "2.0.0", 697 | "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", 698 | "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", 699 | "dev": true, 700 | "requires": { 701 | "JSONStream": "1.3.2", 702 | "shasum": "1.0.2", 703 | "subarg": "1.0.0", 704 | "through2": "2.0.3" 705 | } 706 | }, 707 | "des.js": { 708 | "version": "1.0.0", 709 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", 710 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", 711 | "dev": true, 712 | "requires": { 713 | "inherits": "2.0.3", 714 | "minimalistic-assert": "1.0.1" 715 | } 716 | }, 717 | "destroy": { 718 | "version": "1.0.4", 719 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 720 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 721 | "dev": true 722 | }, 723 | "detective": { 724 | "version": "5.1.0", 725 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.1.0.tgz", 726 | "integrity": "sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ==", 727 | "dev": true, 728 | "requires": { 729 | "acorn-node": "1.3.0", 730 | "defined": "1.0.0", 731 | "minimist": "1.2.0" 732 | } 733 | }, 734 | "diffie-hellman": { 735 | "version": "5.0.3", 736 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 737 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 738 | "dev": true, 739 | "requires": { 740 | "bn.js": "4.11.8", 741 | "miller-rabin": "4.0.1", 742 | "randombytes": "2.0.6" 743 | } 744 | }, 745 | "dom-walk": { 746 | "version": "0.1.1", 747 | "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", 748 | "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" 749 | }, 750 | "domain-browser": { 751 | "version": "1.2.0", 752 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 753 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 754 | "dev": true 755 | }, 756 | "duplexer2": { 757 | "version": "0.1.4", 758 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", 759 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", 760 | "dev": true, 761 | "requires": { 762 | "readable-stream": "2.3.6" 763 | } 764 | }, 765 | "ee-first": { 766 | "version": "1.1.1", 767 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 768 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 769 | "dev": true 770 | }, 771 | "elliptic": { 772 | "version": "6.4.0", 773 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", 774 | "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", 775 | "dev": true, 776 | "requires": { 777 | "bn.js": "4.11.8", 778 | "brorand": "1.1.0", 779 | "hash.js": "1.1.3", 780 | "hmac-drbg": "1.0.1", 781 | "inherits": "2.0.3", 782 | "minimalistic-assert": "1.0.1", 783 | "minimalistic-crypto-utils": "1.0.1" 784 | } 785 | }, 786 | "encodeurl": { 787 | "version": "1.0.2", 788 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 789 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 790 | "dev": true 791 | }, 792 | "es-abstract": { 793 | "version": "1.11.0", 794 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz", 795 | "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==", 796 | "dev": true, 797 | "requires": { 798 | "es-to-primitive": "1.1.1", 799 | "function-bind": "1.1.1", 800 | "has": "1.0.1", 801 | "is-callable": "1.1.3", 802 | "is-regex": "1.0.4" 803 | } 804 | }, 805 | "es-to-primitive": { 806 | "version": "1.1.1", 807 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", 808 | "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", 809 | "dev": true, 810 | "requires": { 811 | "is-callable": "1.1.3", 812 | "is-date-object": "1.0.1", 813 | "is-symbol": "1.0.1" 814 | } 815 | }, 816 | "escape-html": { 817 | "version": "1.0.3", 818 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 819 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 820 | "dev": true 821 | }, 822 | "escape-string-regexp": { 823 | "version": "1.0.5", 824 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 825 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 826 | "dev": true 827 | }, 828 | "etag": { 829 | "version": "1.8.1", 830 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 831 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 832 | "dev": true 833 | }, 834 | "events": { 835 | "version": "1.1.1", 836 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", 837 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", 838 | "dev": true 839 | }, 840 | "evp_bytestokey": { 841 | "version": "1.0.3", 842 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 843 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 844 | "dev": true, 845 | "requires": { 846 | "md5.js": "1.3.4", 847 | "safe-buffer": "5.1.2" 848 | } 849 | }, 850 | "execa": { 851 | "version": "0.10.0", 852 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", 853 | "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", 854 | "dev": true, 855 | "requires": { 856 | "cross-spawn": "6.0.5", 857 | "get-stream": "3.0.0", 858 | "is-stream": "1.1.0", 859 | "npm-run-path": "2.0.2", 860 | "p-finally": "1.0.0", 861 | "signal-exit": "3.0.2", 862 | "strip-eof": "1.0.0" 863 | } 864 | }, 865 | "expand-brackets": { 866 | "version": "0.1.5", 867 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 868 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 869 | "dev": true, 870 | "requires": { 871 | "is-posix-bracket": "0.1.1" 872 | } 873 | }, 874 | "expand-range": { 875 | "version": "1.8.2", 876 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 877 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 878 | "dev": true, 879 | "requires": { 880 | "fill-range": "2.2.3" 881 | } 882 | }, 883 | "extglob": { 884 | "version": "0.3.2", 885 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 886 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 887 | "dev": true, 888 | "requires": { 889 | "is-extglob": "1.0.0" 890 | } 891 | }, 892 | "filename-regex": { 893 | "version": "2.0.1", 894 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 895 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 896 | "dev": true 897 | }, 898 | "fill-range": { 899 | "version": "2.2.3", 900 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 901 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 902 | "dev": true, 903 | "requires": { 904 | "is-number": "2.1.0", 905 | "isobject": "2.1.0", 906 | "randomatic": "1.1.7", 907 | "repeat-element": "1.1.2", 908 | "repeat-string": "1.6.1" 909 | } 910 | }, 911 | "for-each": { 912 | "version": "0.3.2", 913 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz", 914 | "integrity": "sha1-LEBFC5NI6X8oEyJZO6lnBLmr1NQ=", 915 | "requires": { 916 | "is-function": "1.0.1" 917 | } 918 | }, 919 | "for-in": { 920 | "version": "1.0.2", 921 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 922 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 923 | "dev": true 924 | }, 925 | "for-own": { 926 | "version": "0.1.5", 927 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 928 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 929 | "dev": true, 930 | "requires": { 931 | "for-in": "1.0.2" 932 | } 933 | }, 934 | "foreach": { 935 | "version": "2.0.5", 936 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 937 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 938 | "dev": true 939 | }, 940 | "fresh": { 941 | "version": "0.5.2", 942 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 943 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 944 | "dev": true 945 | }, 946 | "from2": { 947 | "version": "2.3.0", 948 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", 949 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", 950 | "dev": true, 951 | "requires": { 952 | "inherits": "2.0.3", 953 | "readable-stream": "2.3.6" 954 | } 955 | }, 956 | "from2-string": { 957 | "version": "1.1.0", 958 | "resolved": "https://registry.npmjs.org/from2-string/-/from2-string-1.1.0.tgz", 959 | "integrity": "sha1-GCgrJ9CKJnyzAwzSuLSw8hKvdSo=", 960 | "dev": true, 961 | "requires": { 962 | "from2": "2.3.0" 963 | } 964 | }, 965 | "fs.realpath": { 966 | "version": "1.0.0", 967 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 968 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 969 | "dev": true 970 | }, 971 | "fsevents": { 972 | "version": "1.2.3", 973 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", 974 | "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", 975 | "dev": true, 976 | "optional": true, 977 | "requires": { 978 | "nan": "2.10.0", 979 | "node-pre-gyp": "0.9.1" 980 | }, 981 | "dependencies": { 982 | "abbrev": { 983 | "version": "1.1.1", 984 | "bundled": true, 985 | "dev": true, 986 | "optional": true 987 | }, 988 | "ansi-regex": { 989 | "version": "2.1.1", 990 | "bundled": true, 991 | "dev": true 992 | }, 993 | "aproba": { 994 | "version": "1.2.0", 995 | "bundled": true, 996 | "dev": true, 997 | "optional": true 998 | }, 999 | "are-we-there-yet": { 1000 | "version": "1.1.4", 1001 | "bundled": true, 1002 | "dev": true, 1003 | "optional": true, 1004 | "requires": { 1005 | "delegates": "1.0.0", 1006 | "readable-stream": "2.3.6" 1007 | } 1008 | }, 1009 | "balanced-match": { 1010 | "version": "1.0.0", 1011 | "bundled": true, 1012 | "dev": true 1013 | }, 1014 | "brace-expansion": { 1015 | "version": "1.1.11", 1016 | "bundled": true, 1017 | "dev": true, 1018 | "requires": { 1019 | "balanced-match": "1.0.0", 1020 | "concat-map": "0.0.1" 1021 | } 1022 | }, 1023 | "chownr": { 1024 | "version": "1.0.1", 1025 | "bundled": true, 1026 | "dev": true, 1027 | "optional": true 1028 | }, 1029 | "code-point-at": { 1030 | "version": "1.1.0", 1031 | "bundled": true, 1032 | "dev": true 1033 | }, 1034 | "concat-map": { 1035 | "version": "0.0.1", 1036 | "bundled": true, 1037 | "dev": true 1038 | }, 1039 | "console-control-strings": { 1040 | "version": "1.1.0", 1041 | "bundled": true, 1042 | "dev": true 1043 | }, 1044 | "core-util-is": { 1045 | "version": "1.0.2", 1046 | "bundled": true, 1047 | "dev": true, 1048 | "optional": true 1049 | }, 1050 | "debug": { 1051 | "version": "2.6.9", 1052 | "bundled": true, 1053 | "dev": true, 1054 | "optional": true, 1055 | "requires": { 1056 | "ms": "2.0.0" 1057 | } 1058 | }, 1059 | "deep-extend": { 1060 | "version": "0.4.2", 1061 | "bundled": true, 1062 | "dev": true, 1063 | "optional": true 1064 | }, 1065 | "delegates": { 1066 | "version": "1.0.0", 1067 | "bundled": true, 1068 | "dev": true, 1069 | "optional": true 1070 | }, 1071 | "detect-libc": { 1072 | "version": "1.0.3", 1073 | "bundled": true, 1074 | "dev": true, 1075 | "optional": true 1076 | }, 1077 | "fs-minipass": { 1078 | "version": "1.2.5", 1079 | "bundled": true, 1080 | "dev": true, 1081 | "optional": true, 1082 | "requires": { 1083 | "minipass": "2.2.4" 1084 | } 1085 | }, 1086 | "fs.realpath": { 1087 | "version": "1.0.0", 1088 | "bundled": true, 1089 | "dev": true, 1090 | "optional": true 1091 | }, 1092 | "gauge": { 1093 | "version": "2.7.4", 1094 | "bundled": true, 1095 | "dev": true, 1096 | "optional": true, 1097 | "requires": { 1098 | "aproba": "1.2.0", 1099 | "console-control-strings": "1.1.0", 1100 | "has-unicode": "2.0.1", 1101 | "object-assign": "4.1.1", 1102 | "signal-exit": "3.0.2", 1103 | "string-width": "1.0.2", 1104 | "strip-ansi": "3.0.1", 1105 | "wide-align": "1.1.2" 1106 | } 1107 | }, 1108 | "glob": { 1109 | "version": "7.1.2", 1110 | "bundled": true, 1111 | "dev": true, 1112 | "optional": true, 1113 | "requires": { 1114 | "fs.realpath": "1.0.0", 1115 | "inflight": "1.0.6", 1116 | "inherits": "2.0.3", 1117 | "minimatch": "3.0.4", 1118 | "once": "1.4.0", 1119 | "path-is-absolute": "1.0.1" 1120 | } 1121 | }, 1122 | "has-unicode": { 1123 | "version": "2.0.1", 1124 | "bundled": true, 1125 | "dev": true, 1126 | "optional": true 1127 | }, 1128 | "iconv-lite": { 1129 | "version": "0.4.21", 1130 | "bundled": true, 1131 | "dev": true, 1132 | "optional": true, 1133 | "requires": { 1134 | "safer-buffer": "2.1.2" 1135 | } 1136 | }, 1137 | "ignore-walk": { 1138 | "version": "3.0.1", 1139 | "bundled": true, 1140 | "dev": true, 1141 | "optional": true, 1142 | "requires": { 1143 | "minimatch": "3.0.4" 1144 | } 1145 | }, 1146 | "inflight": { 1147 | "version": "1.0.6", 1148 | "bundled": true, 1149 | "dev": true, 1150 | "optional": true, 1151 | "requires": { 1152 | "once": "1.4.0", 1153 | "wrappy": "1.0.2" 1154 | } 1155 | }, 1156 | "inherits": { 1157 | "version": "2.0.3", 1158 | "bundled": true, 1159 | "dev": true 1160 | }, 1161 | "ini": { 1162 | "version": "1.3.5", 1163 | "bundled": true, 1164 | "dev": true, 1165 | "optional": true 1166 | }, 1167 | "is-fullwidth-code-point": { 1168 | "version": "1.0.0", 1169 | "bundled": true, 1170 | "dev": true, 1171 | "requires": { 1172 | "number-is-nan": "1.0.1" 1173 | } 1174 | }, 1175 | "isarray": { 1176 | "version": "1.0.0", 1177 | "bundled": true, 1178 | "dev": true, 1179 | "optional": true 1180 | }, 1181 | "minimatch": { 1182 | "version": "3.0.4", 1183 | "bundled": true, 1184 | "dev": true, 1185 | "requires": { 1186 | "brace-expansion": "1.1.11" 1187 | } 1188 | }, 1189 | "minimist": { 1190 | "version": "0.0.8", 1191 | "bundled": true, 1192 | "dev": true 1193 | }, 1194 | "minipass": { 1195 | "version": "2.2.4", 1196 | "bundled": true, 1197 | "dev": true, 1198 | "requires": { 1199 | "safe-buffer": "5.1.1", 1200 | "yallist": "3.0.2" 1201 | } 1202 | }, 1203 | "minizlib": { 1204 | "version": "1.1.0", 1205 | "bundled": true, 1206 | "dev": true, 1207 | "optional": true, 1208 | "requires": { 1209 | "minipass": "2.2.4" 1210 | } 1211 | }, 1212 | "mkdirp": { 1213 | "version": "0.5.1", 1214 | "bundled": true, 1215 | "dev": true, 1216 | "requires": { 1217 | "minimist": "0.0.8" 1218 | } 1219 | }, 1220 | "ms": { 1221 | "version": "2.0.0", 1222 | "bundled": true, 1223 | "dev": true, 1224 | "optional": true 1225 | }, 1226 | "needle": { 1227 | "version": "2.2.0", 1228 | "bundled": true, 1229 | "dev": true, 1230 | "optional": true, 1231 | "requires": { 1232 | "debug": "2.6.9", 1233 | "iconv-lite": "0.4.21", 1234 | "sax": "1.2.4" 1235 | } 1236 | }, 1237 | "node-pre-gyp": { 1238 | "version": "0.9.1", 1239 | "bundled": true, 1240 | "dev": true, 1241 | "optional": true, 1242 | "requires": { 1243 | "detect-libc": "1.0.3", 1244 | "mkdirp": "0.5.1", 1245 | "needle": "2.2.0", 1246 | "nopt": "4.0.1", 1247 | "npm-packlist": "1.1.10", 1248 | "npmlog": "4.1.2", 1249 | "rc": "1.2.6", 1250 | "rimraf": "2.6.2", 1251 | "semver": "5.5.0", 1252 | "tar": "4.4.1" 1253 | } 1254 | }, 1255 | "nopt": { 1256 | "version": "4.0.1", 1257 | "bundled": true, 1258 | "dev": true, 1259 | "optional": true, 1260 | "requires": { 1261 | "abbrev": "1.1.1", 1262 | "osenv": "0.1.5" 1263 | } 1264 | }, 1265 | "npm-bundled": { 1266 | "version": "1.0.3", 1267 | "bundled": true, 1268 | "dev": true, 1269 | "optional": true 1270 | }, 1271 | "npm-packlist": { 1272 | "version": "1.1.10", 1273 | "bundled": true, 1274 | "dev": true, 1275 | "optional": true, 1276 | "requires": { 1277 | "ignore-walk": "3.0.1", 1278 | "npm-bundled": "1.0.3" 1279 | } 1280 | }, 1281 | "npmlog": { 1282 | "version": "4.1.2", 1283 | "bundled": true, 1284 | "dev": true, 1285 | "optional": true, 1286 | "requires": { 1287 | "are-we-there-yet": "1.1.4", 1288 | "console-control-strings": "1.1.0", 1289 | "gauge": "2.7.4", 1290 | "set-blocking": "2.0.0" 1291 | } 1292 | }, 1293 | "number-is-nan": { 1294 | "version": "1.0.1", 1295 | "bundled": true, 1296 | "dev": true 1297 | }, 1298 | "object-assign": { 1299 | "version": "4.1.1", 1300 | "bundled": true, 1301 | "dev": true, 1302 | "optional": true 1303 | }, 1304 | "once": { 1305 | "version": "1.4.0", 1306 | "bundled": true, 1307 | "dev": true, 1308 | "requires": { 1309 | "wrappy": "1.0.2" 1310 | } 1311 | }, 1312 | "os-homedir": { 1313 | "version": "1.0.2", 1314 | "bundled": true, 1315 | "dev": true, 1316 | "optional": true 1317 | }, 1318 | "os-tmpdir": { 1319 | "version": "1.0.2", 1320 | "bundled": true, 1321 | "dev": true, 1322 | "optional": true 1323 | }, 1324 | "osenv": { 1325 | "version": "0.1.5", 1326 | "bundled": true, 1327 | "dev": true, 1328 | "optional": true, 1329 | "requires": { 1330 | "os-homedir": "1.0.2", 1331 | "os-tmpdir": "1.0.2" 1332 | } 1333 | }, 1334 | "path-is-absolute": { 1335 | "version": "1.0.1", 1336 | "bundled": true, 1337 | "dev": true, 1338 | "optional": true 1339 | }, 1340 | "process-nextick-args": { 1341 | "version": "2.0.0", 1342 | "bundled": true, 1343 | "dev": true, 1344 | "optional": true 1345 | }, 1346 | "rc": { 1347 | "version": "1.2.6", 1348 | "bundled": true, 1349 | "dev": true, 1350 | "optional": true, 1351 | "requires": { 1352 | "deep-extend": "0.4.2", 1353 | "ini": "1.3.5", 1354 | "minimist": "1.2.0", 1355 | "strip-json-comments": "2.0.1" 1356 | }, 1357 | "dependencies": { 1358 | "minimist": { 1359 | "version": "1.2.0", 1360 | "bundled": true, 1361 | "dev": true, 1362 | "optional": true 1363 | } 1364 | } 1365 | }, 1366 | "readable-stream": { 1367 | "version": "2.3.6", 1368 | "bundled": true, 1369 | "dev": true, 1370 | "optional": true, 1371 | "requires": { 1372 | "core-util-is": "1.0.2", 1373 | "inherits": "2.0.3", 1374 | "isarray": "1.0.0", 1375 | "process-nextick-args": "2.0.0", 1376 | "safe-buffer": "5.1.1", 1377 | "string_decoder": "1.1.1", 1378 | "util-deprecate": "1.0.2" 1379 | } 1380 | }, 1381 | "rimraf": { 1382 | "version": "2.6.2", 1383 | "bundled": true, 1384 | "dev": true, 1385 | "optional": true, 1386 | "requires": { 1387 | "glob": "7.1.2" 1388 | } 1389 | }, 1390 | "safe-buffer": { 1391 | "version": "5.1.1", 1392 | "bundled": true, 1393 | "dev": true 1394 | }, 1395 | "safer-buffer": { 1396 | "version": "2.1.2", 1397 | "bundled": true, 1398 | "dev": true, 1399 | "optional": true 1400 | }, 1401 | "sax": { 1402 | "version": "1.2.4", 1403 | "bundled": true, 1404 | "dev": true, 1405 | "optional": true 1406 | }, 1407 | "semver": { 1408 | "version": "5.5.0", 1409 | "bundled": true, 1410 | "dev": true, 1411 | "optional": true 1412 | }, 1413 | "set-blocking": { 1414 | "version": "2.0.0", 1415 | "bundled": true, 1416 | "dev": true, 1417 | "optional": true 1418 | }, 1419 | "signal-exit": { 1420 | "version": "3.0.2", 1421 | "bundled": true, 1422 | "dev": true, 1423 | "optional": true 1424 | }, 1425 | "string-width": { 1426 | "version": "1.0.2", 1427 | "bundled": true, 1428 | "dev": true, 1429 | "requires": { 1430 | "code-point-at": "1.1.0", 1431 | "is-fullwidth-code-point": "1.0.0", 1432 | "strip-ansi": "3.0.1" 1433 | } 1434 | }, 1435 | "string_decoder": { 1436 | "version": "1.1.1", 1437 | "bundled": true, 1438 | "dev": true, 1439 | "optional": true, 1440 | "requires": { 1441 | "safe-buffer": "5.1.1" 1442 | } 1443 | }, 1444 | "strip-ansi": { 1445 | "version": "3.0.1", 1446 | "bundled": true, 1447 | "dev": true, 1448 | "requires": { 1449 | "ansi-regex": "2.1.1" 1450 | } 1451 | }, 1452 | "strip-json-comments": { 1453 | "version": "2.0.1", 1454 | "bundled": true, 1455 | "dev": true, 1456 | "optional": true 1457 | }, 1458 | "tar": { 1459 | "version": "4.4.1", 1460 | "bundled": true, 1461 | "dev": true, 1462 | "optional": true, 1463 | "requires": { 1464 | "chownr": "1.0.1", 1465 | "fs-minipass": "1.2.5", 1466 | "minipass": "2.2.4", 1467 | "minizlib": "1.1.0", 1468 | "mkdirp": "0.5.1", 1469 | "safe-buffer": "5.1.1", 1470 | "yallist": "3.0.2" 1471 | } 1472 | }, 1473 | "util-deprecate": { 1474 | "version": "1.0.2", 1475 | "bundled": true, 1476 | "dev": true, 1477 | "optional": true 1478 | }, 1479 | "wide-align": { 1480 | "version": "1.1.2", 1481 | "bundled": true, 1482 | "dev": true, 1483 | "optional": true, 1484 | "requires": { 1485 | "string-width": "1.0.2" 1486 | } 1487 | }, 1488 | "wrappy": { 1489 | "version": "1.0.2", 1490 | "bundled": true, 1491 | "dev": true 1492 | }, 1493 | "yallist": { 1494 | "version": "3.0.2", 1495 | "bundled": true, 1496 | "dev": true 1497 | } 1498 | } 1499 | }, 1500 | "function-bind": { 1501 | "version": "1.1.1", 1502 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1503 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1504 | "dev": true 1505 | }, 1506 | "garnish": { 1507 | "version": "5.2.0", 1508 | "resolved": "https://registry.npmjs.org/garnish/-/garnish-5.2.0.tgz", 1509 | "integrity": "sha1-vtQ2WTguSxmOM8eTiXvnxwHmVXc=", 1510 | "dev": true, 1511 | "requires": { 1512 | "chalk": "0.5.1", 1513 | "minimist": "1.2.0", 1514 | "pad-left": "2.1.0", 1515 | "pad-right": "0.2.2", 1516 | "prettier-bytes": "1.0.4", 1517 | "pretty-ms": "2.1.0", 1518 | "right-now": "1.0.0", 1519 | "split2": "0.2.1", 1520 | "stdout-stream": "1.4.0", 1521 | "url-trim": "1.0.0" 1522 | } 1523 | }, 1524 | "get-ports": { 1525 | "version": "1.0.3", 1526 | "resolved": "https://registry.npmjs.org/get-ports/-/get-ports-1.0.3.tgz", 1527 | "integrity": "sha1-9AvVgKyn7A77e5bL/L6wPviUteg=", 1528 | "dev": true, 1529 | "requires": { 1530 | "map-limit": "0.0.1" 1531 | } 1532 | }, 1533 | "get-stream": { 1534 | "version": "3.0.0", 1535 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 1536 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 1537 | "dev": true 1538 | }, 1539 | "glob": { 1540 | "version": "7.1.2", 1541 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1542 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1543 | "dev": true, 1544 | "requires": { 1545 | "fs.realpath": "1.0.0", 1546 | "inflight": "1.0.6", 1547 | "inherits": "2.0.3", 1548 | "minimatch": "3.0.4", 1549 | "once": "1.4.0", 1550 | "path-is-absolute": "1.0.1" 1551 | } 1552 | }, 1553 | "glob-base": { 1554 | "version": "0.3.0", 1555 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 1556 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 1557 | "dev": true, 1558 | "requires": { 1559 | "glob-parent": "2.0.0", 1560 | "is-glob": "2.0.1" 1561 | } 1562 | }, 1563 | "glob-parent": { 1564 | "version": "2.0.0", 1565 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 1566 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 1567 | "dev": true, 1568 | "requires": { 1569 | "is-glob": "2.0.1" 1570 | } 1571 | }, 1572 | "global": { 1573 | "version": "4.3.2", 1574 | "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", 1575 | "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", 1576 | "requires": { 1577 | "min-document": "2.19.0", 1578 | "process": "0.5.2" 1579 | }, 1580 | "dependencies": { 1581 | "process": { 1582 | "version": "0.5.2", 1583 | "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", 1584 | "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" 1585 | } 1586 | } 1587 | }, 1588 | "graceful-fs": { 1589 | "version": "4.1.11", 1590 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1591 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 1592 | "dev": true 1593 | }, 1594 | "has": { 1595 | "version": "1.0.1", 1596 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 1597 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 1598 | "dev": true, 1599 | "requires": { 1600 | "function-bind": "1.1.1" 1601 | } 1602 | }, 1603 | "has-ansi": { 1604 | "version": "0.1.0", 1605 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", 1606 | "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", 1607 | "dev": true, 1608 | "requires": { 1609 | "ansi-regex": "0.2.1" 1610 | } 1611 | }, 1612 | "hash-base": { 1613 | "version": "3.0.4", 1614 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", 1615 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", 1616 | "dev": true, 1617 | "requires": { 1618 | "inherits": "2.0.3", 1619 | "safe-buffer": "5.1.2" 1620 | } 1621 | }, 1622 | "hash.js": { 1623 | "version": "1.1.3", 1624 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", 1625 | "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", 1626 | "dev": true, 1627 | "requires": { 1628 | "inherits": "2.0.3", 1629 | "minimalistic-assert": "1.0.1" 1630 | } 1631 | }, 1632 | "hmac-drbg": { 1633 | "version": "1.0.1", 1634 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1635 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1636 | "dev": true, 1637 | "requires": { 1638 | "hash.js": "1.1.3", 1639 | "minimalistic-assert": "1.0.1", 1640 | "minimalistic-crypto-utils": "1.0.1" 1641 | } 1642 | }, 1643 | "htmlescape": { 1644 | "version": "1.1.1", 1645 | "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", 1646 | "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", 1647 | "dev": true 1648 | }, 1649 | "http-errors": { 1650 | "version": "1.6.3", 1651 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 1652 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 1653 | "dev": true, 1654 | "requires": { 1655 | "depd": "1.1.2", 1656 | "inherits": "2.0.3", 1657 | "setprototypeof": "1.1.0", 1658 | "statuses": "1.4.0" 1659 | } 1660 | }, 1661 | "https-browserify": { 1662 | "version": "1.0.0", 1663 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 1664 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 1665 | "dev": true 1666 | }, 1667 | "ieee754": { 1668 | "version": "1.1.11", 1669 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", 1670 | "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", 1671 | "dev": true 1672 | }, 1673 | "individual": { 1674 | "version": "3.0.0", 1675 | "resolved": "https://registry.npmjs.org/individual/-/individual-3.0.0.tgz", 1676 | "integrity": "sha1-58pPhfiVewGHNPKFdQ3CLsL5hi0=", 1677 | "dev": true 1678 | }, 1679 | "inflight": { 1680 | "version": "1.0.6", 1681 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1682 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1683 | "dev": true, 1684 | "requires": { 1685 | "once": "1.4.0", 1686 | "wrappy": "1.0.2" 1687 | } 1688 | }, 1689 | "inherits": { 1690 | "version": "2.0.3", 1691 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1692 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1693 | "dev": true 1694 | }, 1695 | "inject-lr-script": { 1696 | "version": "2.1.0", 1697 | "resolved": "https://registry.npmjs.org/inject-lr-script/-/inject-lr-script-2.1.0.tgz", 1698 | "integrity": "sha1-5htehMEYczkGy+oB7D10Zpijn2U=", 1699 | "dev": true, 1700 | "requires": { 1701 | "resp-modifier": "6.0.2" 1702 | } 1703 | }, 1704 | "inline-source-map": { 1705 | "version": "0.6.2", 1706 | "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", 1707 | "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", 1708 | "dev": true, 1709 | "requires": { 1710 | "source-map": "0.5.7" 1711 | } 1712 | }, 1713 | "insert-module-globals": { 1714 | "version": "7.0.6", 1715 | "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.6.tgz", 1716 | "integrity": "sha512-R3sidKJr3SsggqQQ5cEwQb3pWG8RNx0UnpyeiOSR6jorRIeAOzH2gkTWnNdMnyRiVbjrG047K7UCtlMkQ1Mo9w==", 1717 | "dev": true, 1718 | "requires": { 1719 | "JSONStream": "1.3.2", 1720 | "combine-source-map": "0.8.0", 1721 | "concat-stream": "1.6.2", 1722 | "is-buffer": "1.1.6", 1723 | "lexical-scope": "1.2.0", 1724 | "path-is-absolute": "1.0.1", 1725 | "process": "0.11.10", 1726 | "through2": "2.0.3", 1727 | "xtend": "4.0.1" 1728 | } 1729 | }, 1730 | "internal-ip": { 1731 | "version": "3.0.1", 1732 | "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", 1733 | "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", 1734 | "dev": true, 1735 | "requires": { 1736 | "default-gateway": "2.7.1", 1737 | "ipaddr.js": "1.7.0" 1738 | } 1739 | }, 1740 | "ip-regex": { 1741 | "version": "2.1.0", 1742 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", 1743 | "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", 1744 | "dev": true 1745 | }, 1746 | "ipaddr.js": { 1747 | "version": "1.7.0", 1748 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.7.0.tgz", 1749 | "integrity": "sha1-IgbtM0r8MuAf7T7oOLayUhBoudI=", 1750 | "dev": true 1751 | }, 1752 | "is-binary-path": { 1753 | "version": "1.0.1", 1754 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 1755 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1756 | "dev": true, 1757 | "requires": { 1758 | "binary-extensions": "1.11.0" 1759 | } 1760 | }, 1761 | "is-buffer": { 1762 | "version": "1.1.6", 1763 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1764 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1765 | "dev": true 1766 | }, 1767 | "is-callable": { 1768 | "version": "1.1.3", 1769 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", 1770 | "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", 1771 | "dev": true 1772 | }, 1773 | "is-date-object": { 1774 | "version": "1.0.1", 1775 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1776 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1777 | "dev": true 1778 | }, 1779 | "is-dotfile": { 1780 | "version": "1.0.3", 1781 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1782 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 1783 | "dev": true 1784 | }, 1785 | "is-equal-shallow": { 1786 | "version": "0.1.3", 1787 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1788 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1789 | "dev": true, 1790 | "requires": { 1791 | "is-primitive": "2.0.0" 1792 | } 1793 | }, 1794 | "is-extendable": { 1795 | "version": "0.1.1", 1796 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1797 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1798 | "dev": true 1799 | }, 1800 | "is-extglob": { 1801 | "version": "1.0.0", 1802 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1803 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1804 | "dev": true 1805 | }, 1806 | "is-finite": { 1807 | "version": "1.0.2", 1808 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 1809 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 1810 | "dev": true, 1811 | "requires": { 1812 | "number-is-nan": "1.0.1" 1813 | } 1814 | }, 1815 | "is-function": { 1816 | "version": "1.0.1", 1817 | "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", 1818 | "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" 1819 | }, 1820 | "is-glob": { 1821 | "version": "2.0.1", 1822 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1823 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1824 | "dev": true, 1825 | "requires": { 1826 | "is-extglob": "1.0.0" 1827 | } 1828 | }, 1829 | "is-number": { 1830 | "version": "2.1.0", 1831 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1832 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1833 | "dev": true, 1834 | "requires": { 1835 | "kind-of": "3.2.2" 1836 | } 1837 | }, 1838 | "is-posix-bracket": { 1839 | "version": "0.1.1", 1840 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1841 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 1842 | "dev": true 1843 | }, 1844 | "is-primitive": { 1845 | "version": "2.0.0", 1846 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1847 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 1848 | "dev": true 1849 | }, 1850 | "is-promise": { 1851 | "version": "2.1.0", 1852 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1853 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" 1854 | }, 1855 | "is-regex": { 1856 | "version": "1.0.4", 1857 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1858 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1859 | "dev": true, 1860 | "requires": { 1861 | "has": "1.0.1" 1862 | } 1863 | }, 1864 | "is-stream": { 1865 | "version": "1.1.0", 1866 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1867 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1868 | "dev": true 1869 | }, 1870 | "is-symbol": { 1871 | "version": "1.0.1", 1872 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", 1873 | "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", 1874 | "dev": true 1875 | }, 1876 | "isarray": { 1877 | "version": "1.0.0", 1878 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1879 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1880 | "dev": true 1881 | }, 1882 | "isexe": { 1883 | "version": "2.0.0", 1884 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1885 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1886 | "dev": true 1887 | }, 1888 | "isobject": { 1889 | "version": "2.1.0", 1890 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1891 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1892 | "dev": true, 1893 | "requires": { 1894 | "isarray": "1.0.0" 1895 | } 1896 | }, 1897 | "json-stable-stringify": { 1898 | "version": "0.0.1", 1899 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", 1900 | "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", 1901 | "dev": true, 1902 | "requires": { 1903 | "jsonify": "0.0.0" 1904 | } 1905 | }, 1906 | "json-stringify-safe": { 1907 | "version": "5.0.1", 1908 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1909 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", 1910 | "dev": true 1911 | }, 1912 | "jsonify": { 1913 | "version": "0.0.0", 1914 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1915 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1916 | "dev": true 1917 | }, 1918 | "jsonparse": { 1919 | "version": "1.3.1", 1920 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 1921 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", 1922 | "dev": true 1923 | }, 1924 | "kind-of": { 1925 | "version": "3.2.2", 1926 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1927 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1928 | "dev": true, 1929 | "requires": { 1930 | "is-buffer": "1.1.6" 1931 | } 1932 | }, 1933 | "labeled-stream-splicer": { 1934 | "version": "2.0.1", 1935 | "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz", 1936 | "integrity": "sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg==", 1937 | "dev": true, 1938 | "requires": { 1939 | "inherits": "2.0.3", 1940 | "isarray": "2.0.4", 1941 | "stream-splicer": "2.0.0" 1942 | }, 1943 | "dependencies": { 1944 | "isarray": { 1945 | "version": "2.0.4", 1946 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.4.tgz", 1947 | "integrity": "sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==", 1948 | "dev": true 1949 | } 1950 | } 1951 | }, 1952 | "lexical-scope": { 1953 | "version": "1.2.0", 1954 | "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", 1955 | "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", 1956 | "dev": true, 1957 | "requires": { 1958 | "astw": "2.2.0" 1959 | } 1960 | }, 1961 | "lodash.memoize": { 1962 | "version": "3.0.4", 1963 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", 1964 | "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", 1965 | "dev": true 1966 | }, 1967 | "map-limit": { 1968 | "version": "0.0.1", 1969 | "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", 1970 | "integrity": "sha1-63lhAxwPDo0AG/LVb6toXViCLzg=", 1971 | "dev": true, 1972 | "requires": { 1973 | "once": "1.3.3" 1974 | }, 1975 | "dependencies": { 1976 | "once": { 1977 | "version": "1.3.3", 1978 | "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 1979 | "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", 1980 | "dev": true, 1981 | "requires": { 1982 | "wrappy": "1.0.2" 1983 | } 1984 | } 1985 | } 1986 | }, 1987 | "md5": { 1988 | "version": "2.2.1", 1989 | "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", 1990 | "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", 1991 | "dev": true, 1992 | "requires": { 1993 | "charenc": "0.0.2", 1994 | "crypt": "0.0.2", 1995 | "is-buffer": "1.1.6" 1996 | } 1997 | }, 1998 | "md5.js": { 1999 | "version": "1.3.4", 2000 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", 2001 | "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", 2002 | "dev": true, 2003 | "requires": { 2004 | "hash-base": "3.0.4", 2005 | "inherits": "2.0.3" 2006 | } 2007 | }, 2008 | "micromatch": { 2009 | "version": "2.3.11", 2010 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 2011 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 2012 | "dev": true, 2013 | "requires": { 2014 | "arr-diff": "2.0.0", 2015 | "array-unique": "0.2.1", 2016 | "braces": "1.8.5", 2017 | "expand-brackets": "0.1.5", 2018 | "extglob": "0.3.2", 2019 | "filename-regex": "2.0.1", 2020 | "is-extglob": "1.0.0", 2021 | "is-glob": "2.0.1", 2022 | "kind-of": "3.2.2", 2023 | "normalize-path": "2.1.1", 2024 | "object.omit": "2.0.1", 2025 | "parse-glob": "3.0.4", 2026 | "regex-cache": "0.4.4" 2027 | } 2028 | }, 2029 | "miller-rabin": { 2030 | "version": "4.0.1", 2031 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 2032 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 2033 | "dev": true, 2034 | "requires": { 2035 | "bn.js": "4.11.8", 2036 | "brorand": "1.1.0" 2037 | } 2038 | }, 2039 | "mime": { 2040 | "version": "1.4.1", 2041 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 2042 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", 2043 | "dev": true 2044 | }, 2045 | "min-document": { 2046 | "version": "2.19.0", 2047 | "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", 2048 | "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", 2049 | "requires": { 2050 | "dom-walk": "0.1.1" 2051 | } 2052 | }, 2053 | "minimalistic-assert": { 2054 | "version": "1.0.1", 2055 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 2056 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 2057 | "dev": true 2058 | }, 2059 | "minimalistic-crypto-utils": { 2060 | "version": "1.0.1", 2061 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 2062 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 2063 | "dev": true 2064 | }, 2065 | "minimatch": { 2066 | "version": "3.0.4", 2067 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2068 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2069 | "dev": true, 2070 | "requires": { 2071 | "brace-expansion": "1.1.11" 2072 | } 2073 | }, 2074 | "minimist": { 2075 | "version": "1.2.0", 2076 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2077 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 2078 | "dev": true 2079 | }, 2080 | "mkdirp": { 2081 | "version": "0.5.1", 2082 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2083 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2084 | "dev": true, 2085 | "requires": { 2086 | "minimist": "0.0.8" 2087 | }, 2088 | "dependencies": { 2089 | "minimist": { 2090 | "version": "0.0.8", 2091 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2092 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2093 | "dev": true 2094 | } 2095 | } 2096 | }, 2097 | "module-deps": { 2098 | "version": "6.0.2", 2099 | "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.0.2.tgz", 2100 | "integrity": "sha512-KWBI3009iRnHjRlxRhe8nJ6kdeBTg4sMi5N6AZgg5f1/v5S7EBCRBOY854I4P5Anl4kx6AJH+4bBBC2Gi3nkvg==", 2101 | "dev": true, 2102 | "requires": { 2103 | "JSONStream": "1.3.2", 2104 | "browser-resolve": "1.11.2", 2105 | "cached-path-relative": "1.0.1", 2106 | "concat-stream": "1.6.2", 2107 | "defined": "1.0.0", 2108 | "detective": "5.1.0", 2109 | "duplexer2": "0.1.4", 2110 | "inherits": "2.0.3", 2111 | "parents": "1.0.1", 2112 | "readable-stream": "2.3.6", 2113 | "resolve": "1.7.1", 2114 | "stream-combiner2": "1.1.1", 2115 | "subarg": "1.0.0", 2116 | "through2": "2.0.3", 2117 | "xtend": "4.0.1" 2118 | } 2119 | }, 2120 | "ms": { 2121 | "version": "2.0.0", 2122 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2123 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2124 | "dev": true 2125 | }, 2126 | "nan": { 2127 | "version": "2.10.0", 2128 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", 2129 | "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", 2130 | "dev": true, 2131 | "optional": true 2132 | }, 2133 | "nice-try": { 2134 | "version": "1.0.4", 2135 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", 2136 | "integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==", 2137 | "dev": true 2138 | }, 2139 | "normalize-path": { 2140 | "version": "2.1.1", 2141 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 2142 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 2143 | "dev": true, 2144 | "requires": { 2145 | "remove-trailing-separator": "1.1.0" 2146 | } 2147 | }, 2148 | "npm-run-path": { 2149 | "version": "2.0.2", 2150 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 2151 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 2152 | "dev": true, 2153 | "requires": { 2154 | "path-key": "2.0.1" 2155 | } 2156 | }, 2157 | "number-is-nan": { 2158 | "version": "1.0.1", 2159 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2160 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2161 | "dev": true 2162 | }, 2163 | "object-assign": { 2164 | "version": "4.1.1", 2165 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 2166 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 2167 | }, 2168 | "object-inspect": { 2169 | "version": "1.5.0", 2170 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.5.0.tgz", 2171 | "integrity": "sha512-UmOFbHbwvv+XHj7BerrhVq+knjceBdkvU5AriwLMvhv2qi+e7DJzxfBeFpILEjVzCp+xA+W/pIf06RGPWlZNfw==", 2172 | "dev": true 2173 | }, 2174 | "object-keys": { 2175 | "version": "1.0.11", 2176 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", 2177 | "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", 2178 | "dev": true 2179 | }, 2180 | "object.omit": { 2181 | "version": "2.0.1", 2182 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 2183 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 2184 | "dev": true, 2185 | "requires": { 2186 | "for-own": "0.1.5", 2187 | "is-extendable": "0.1.1" 2188 | } 2189 | }, 2190 | "on-finished": { 2191 | "version": "2.3.0", 2192 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 2193 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 2194 | "dev": true, 2195 | "requires": { 2196 | "ee-first": "1.1.1" 2197 | } 2198 | }, 2199 | "on-headers": { 2200 | "version": "1.0.1", 2201 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", 2202 | "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", 2203 | "dev": true 2204 | }, 2205 | "once": { 2206 | "version": "1.4.0", 2207 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2208 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2209 | "dev": true, 2210 | "requires": { 2211 | "wrappy": "1.0.2" 2212 | } 2213 | }, 2214 | "opn": { 2215 | "version": "3.0.3", 2216 | "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", 2217 | "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=", 2218 | "dev": true, 2219 | "requires": { 2220 | "object-assign": "4.1.1" 2221 | } 2222 | }, 2223 | "options": { 2224 | "version": "0.0.6", 2225 | "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", 2226 | "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", 2227 | "dev": true 2228 | }, 2229 | "os-browserify": { 2230 | "version": "0.3.0", 2231 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 2232 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 2233 | "dev": true 2234 | }, 2235 | "os-tmpdir": { 2236 | "version": "1.0.2", 2237 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 2238 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 2239 | "dev": true 2240 | }, 2241 | "outpipe": { 2242 | "version": "1.1.1", 2243 | "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", 2244 | "integrity": "sha1-UM+GFjZeh+Ax4ppeyTOaPaRyX6I=", 2245 | "dev": true, 2246 | "requires": { 2247 | "shell-quote": "1.6.1" 2248 | } 2249 | }, 2250 | "p-finally": { 2251 | "version": "1.0.0", 2252 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 2253 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 2254 | "dev": true 2255 | }, 2256 | "pad-left": { 2257 | "version": "2.1.0", 2258 | "resolved": "https://registry.npmjs.org/pad-left/-/pad-left-2.1.0.tgz", 2259 | "integrity": "sha1-FuajstRKjhOMsIOMx8tAOk/J6ZQ=", 2260 | "dev": true, 2261 | "requires": { 2262 | "repeat-string": "1.6.1" 2263 | } 2264 | }, 2265 | "pad-right": { 2266 | "version": "0.2.2", 2267 | "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", 2268 | "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", 2269 | "dev": true, 2270 | "requires": { 2271 | "repeat-string": "1.6.1" 2272 | } 2273 | }, 2274 | "pako": { 2275 | "version": "1.0.6", 2276 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", 2277 | "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", 2278 | "dev": true 2279 | }, 2280 | "parents": { 2281 | "version": "1.0.1", 2282 | "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", 2283 | "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", 2284 | "dev": true, 2285 | "requires": { 2286 | "path-platform": "0.11.15" 2287 | } 2288 | }, 2289 | "parse-asn1": { 2290 | "version": "5.1.1", 2291 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", 2292 | "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", 2293 | "dev": true, 2294 | "requires": { 2295 | "asn1.js": "4.10.1", 2296 | "browserify-aes": "1.2.0", 2297 | "create-hash": "1.2.0", 2298 | "evp_bytestokey": "1.0.3", 2299 | "pbkdf2": "3.0.16" 2300 | } 2301 | }, 2302 | "parse-glob": { 2303 | "version": "3.0.4", 2304 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 2305 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 2306 | "dev": true, 2307 | "requires": { 2308 | "glob-base": "0.3.0", 2309 | "is-dotfile": "1.0.3", 2310 | "is-extglob": "1.0.0", 2311 | "is-glob": "2.0.1" 2312 | } 2313 | }, 2314 | "parse-headers": { 2315 | "version": "2.0.1", 2316 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", 2317 | "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", 2318 | "requires": { 2319 | "for-each": "0.3.2", 2320 | "trim": "0.0.1" 2321 | } 2322 | }, 2323 | "parse-ms": { 2324 | "version": "1.0.1", 2325 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", 2326 | "integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=", 2327 | "dev": true 2328 | }, 2329 | "parse-wavefront-obj": { 2330 | "version": "1.0.3", 2331 | "resolved": "https://registry.npmjs.org/parse-wavefront-obj/-/parse-wavefront-obj-1.0.3.tgz", 2332 | "integrity": "sha1-Ub43AubNLDh0kNlWQOtK+6shck8=", 2333 | "dev": true 2334 | }, 2335 | "parseurl": { 2336 | "version": "1.3.2", 2337 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 2338 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", 2339 | "dev": true 2340 | }, 2341 | "path-browserify": { 2342 | "version": "0.0.0", 2343 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", 2344 | "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", 2345 | "dev": true 2346 | }, 2347 | "path-is-absolute": { 2348 | "version": "1.0.1", 2349 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2350 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 2351 | "dev": true 2352 | }, 2353 | "path-key": { 2354 | "version": "2.0.1", 2355 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2356 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 2357 | "dev": true 2358 | }, 2359 | "path-parse": { 2360 | "version": "1.0.5", 2361 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 2362 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 2363 | "dev": true 2364 | }, 2365 | "path-platform": { 2366 | "version": "0.11.15", 2367 | "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", 2368 | "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", 2369 | "dev": true 2370 | }, 2371 | "pbkdf2": { 2372 | "version": "3.0.16", 2373 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", 2374 | "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", 2375 | "dev": true, 2376 | "requires": { 2377 | "create-hash": "1.2.0", 2378 | "create-hmac": "1.1.7", 2379 | "ripemd160": "2.0.2", 2380 | "safe-buffer": "5.1.2", 2381 | "sha.js": "2.4.11" 2382 | } 2383 | }, 2384 | "pem": { 2385 | "version": "1.12.5", 2386 | "resolved": "https://registry.npmjs.org/pem/-/pem-1.12.5.tgz", 2387 | "integrity": "sha512-mm8gLf4ZCaY6Qdm8J4bBdHs6SO4px71FspxgC2jJ0vXf3PYNZnGhU9zITCxpzFHpLPHsHU3xRBbuXNxEWuWziQ==", 2388 | "dev": true, 2389 | "requires": { 2390 | "md5": "2.2.1", 2391 | "os-tmpdir": "1.0.2", 2392 | "safe-buffer": "5.1.2", 2393 | "which": "1.3.0" 2394 | } 2395 | }, 2396 | "plur": { 2397 | "version": "1.0.0", 2398 | "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz", 2399 | "integrity": "sha1-24XGgU9eXlo7Se/CjWBP7GKXUVY=", 2400 | "dev": true 2401 | }, 2402 | "preserve": { 2403 | "version": "0.2.0", 2404 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 2405 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 2406 | "dev": true 2407 | }, 2408 | "prettier-bytes": { 2409 | "version": "1.0.4", 2410 | "resolved": "https://registry.npmjs.org/prettier-bytes/-/prettier-bytes-1.0.4.tgz", 2411 | "integrity": "sha1-mUsCqkb2mcULYle1+qp/4lV+YtY=", 2412 | "dev": true 2413 | }, 2414 | "pretty-ms": { 2415 | "version": "2.1.0", 2416 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz", 2417 | "integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=", 2418 | "dev": true, 2419 | "requires": { 2420 | "is-finite": "1.0.2", 2421 | "parse-ms": "1.0.1", 2422 | "plur": "1.0.0" 2423 | } 2424 | }, 2425 | "process": { 2426 | "version": "0.11.10", 2427 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 2428 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 2429 | "dev": true 2430 | }, 2431 | "process-nextick-args": { 2432 | "version": "2.0.0", 2433 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2434 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 2435 | "dev": true 2436 | }, 2437 | "public-encrypt": { 2438 | "version": "4.0.2", 2439 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", 2440 | "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", 2441 | "dev": true, 2442 | "requires": { 2443 | "bn.js": "4.11.8", 2444 | "browserify-rsa": "4.0.1", 2445 | "create-hash": "1.2.0", 2446 | "parse-asn1": "5.1.1", 2447 | "randombytes": "2.0.6" 2448 | } 2449 | }, 2450 | "punycode": { 2451 | "version": "1.4.1", 2452 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2453 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 2454 | "dev": true 2455 | }, 2456 | "query-string": { 2457 | "version": "4.3.4", 2458 | "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", 2459 | "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", 2460 | "dev": true, 2461 | "requires": { 2462 | "object-assign": "4.1.1", 2463 | "strict-uri-encode": "1.1.0" 2464 | } 2465 | }, 2466 | "querystring": { 2467 | "version": "0.2.0", 2468 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2469 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 2470 | "dev": true 2471 | }, 2472 | "querystring-es3": { 2473 | "version": "0.2.1", 2474 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 2475 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 2476 | "dev": true 2477 | }, 2478 | "randomatic": { 2479 | "version": "1.1.7", 2480 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 2481 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 2482 | "dev": true, 2483 | "requires": { 2484 | "is-number": "3.0.0", 2485 | "kind-of": "4.0.0" 2486 | }, 2487 | "dependencies": { 2488 | "is-number": { 2489 | "version": "3.0.0", 2490 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2491 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2492 | "dev": true, 2493 | "requires": { 2494 | "kind-of": "3.2.2" 2495 | }, 2496 | "dependencies": { 2497 | "kind-of": { 2498 | "version": "3.2.2", 2499 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2500 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2501 | "dev": true, 2502 | "requires": { 2503 | "is-buffer": "1.1.6" 2504 | } 2505 | } 2506 | } 2507 | }, 2508 | "kind-of": { 2509 | "version": "4.0.0", 2510 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2511 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2512 | "dev": true, 2513 | "requires": { 2514 | "is-buffer": "1.1.6" 2515 | } 2516 | } 2517 | } 2518 | }, 2519 | "randombytes": { 2520 | "version": "2.0.6", 2521 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", 2522 | "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", 2523 | "dev": true, 2524 | "requires": { 2525 | "safe-buffer": "5.1.2" 2526 | } 2527 | }, 2528 | "randomfill": { 2529 | "version": "1.0.4", 2530 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 2531 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 2532 | "dev": true, 2533 | "requires": { 2534 | "randombytes": "2.0.6", 2535 | "safe-buffer": "5.1.2" 2536 | } 2537 | }, 2538 | "range-parser": { 2539 | "version": "1.2.0", 2540 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 2541 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", 2542 | "dev": true 2543 | }, 2544 | "read-only-stream": { 2545 | "version": "2.0.0", 2546 | "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", 2547 | "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", 2548 | "dev": true, 2549 | "requires": { 2550 | "readable-stream": "2.3.6" 2551 | } 2552 | }, 2553 | "readable-stream": { 2554 | "version": "2.3.6", 2555 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 2556 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 2557 | "dev": true, 2558 | "requires": { 2559 | "core-util-is": "1.0.2", 2560 | "inherits": "2.0.3", 2561 | "isarray": "1.0.0", 2562 | "process-nextick-args": "2.0.0", 2563 | "safe-buffer": "5.1.2", 2564 | "string_decoder": "1.1.1", 2565 | "util-deprecate": "1.0.2" 2566 | } 2567 | }, 2568 | "readdirp": { 2569 | "version": "2.1.0", 2570 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 2571 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 2572 | "dev": true, 2573 | "requires": { 2574 | "graceful-fs": "4.1.11", 2575 | "minimatch": "3.0.4", 2576 | "readable-stream": "2.3.6", 2577 | "set-immediate-shim": "1.0.1" 2578 | } 2579 | }, 2580 | "regex-cache": { 2581 | "version": "0.4.4", 2582 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 2583 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", 2584 | "dev": true, 2585 | "requires": { 2586 | "is-equal-shallow": "0.1.3" 2587 | } 2588 | }, 2589 | "reload-css": { 2590 | "version": "1.0.2", 2591 | "resolved": "https://registry.npmjs.org/reload-css/-/reload-css-1.0.2.tgz", 2592 | "integrity": "sha1-avsRFi4jFP7M2tbcX96CH9cxgzE=", 2593 | "dev": true, 2594 | "requires": { 2595 | "query-string": "4.3.4" 2596 | } 2597 | }, 2598 | "remove-trailing-separator": { 2599 | "version": "1.1.0", 2600 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2601 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 2602 | "dev": true 2603 | }, 2604 | "repeat-element": { 2605 | "version": "1.1.2", 2606 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2607 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2608 | "dev": true 2609 | }, 2610 | "repeat-string": { 2611 | "version": "1.6.1", 2612 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2613 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2614 | "dev": true 2615 | }, 2616 | "resolve": { 2617 | "version": "1.7.1", 2618 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", 2619 | "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", 2620 | "dev": true, 2621 | "requires": { 2622 | "path-parse": "1.0.5" 2623 | } 2624 | }, 2625 | "resp-modifier": { 2626 | "version": "6.0.2", 2627 | "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", 2628 | "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", 2629 | "dev": true, 2630 | "requires": { 2631 | "debug": "2.6.9", 2632 | "minimatch": "3.0.4" 2633 | } 2634 | }, 2635 | "resumer": { 2636 | "version": "0.0.0", 2637 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", 2638 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=", 2639 | "dev": true, 2640 | "requires": { 2641 | "through": "2.3.8" 2642 | } 2643 | }, 2644 | "right-now": { 2645 | "version": "1.0.0", 2646 | "resolved": "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz", 2647 | "integrity": "sha1-bolgne69fc2vja7Mmuo5z1haCRg=", 2648 | "dev": true 2649 | }, 2650 | "ripemd160": { 2651 | "version": "2.0.2", 2652 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 2653 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 2654 | "dev": true, 2655 | "requires": { 2656 | "hash-base": "3.0.4", 2657 | "inherits": "2.0.3" 2658 | } 2659 | }, 2660 | "safe-buffer": { 2661 | "version": "5.1.2", 2662 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2663 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2664 | "dev": true 2665 | }, 2666 | "semver": { 2667 | "version": "5.5.0", 2668 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 2669 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 2670 | "dev": true 2671 | }, 2672 | "send": { 2673 | "version": "0.16.2", 2674 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 2675 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 2676 | "dev": true, 2677 | "requires": { 2678 | "debug": "2.6.9", 2679 | "depd": "1.1.2", 2680 | "destroy": "1.0.4", 2681 | "encodeurl": "1.0.2", 2682 | "escape-html": "1.0.3", 2683 | "etag": "1.8.1", 2684 | "fresh": "0.5.2", 2685 | "http-errors": "1.6.3", 2686 | "mime": "1.4.1", 2687 | "ms": "2.0.0", 2688 | "on-finished": "2.3.0", 2689 | "range-parser": "1.2.0", 2690 | "statuses": "1.4.0" 2691 | } 2692 | }, 2693 | "serve-static": { 2694 | "version": "1.13.2", 2695 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 2696 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 2697 | "dev": true, 2698 | "requires": { 2699 | "encodeurl": "1.0.2", 2700 | "escape-html": "1.0.3", 2701 | "parseurl": "1.3.2", 2702 | "send": "0.16.2" 2703 | } 2704 | }, 2705 | "set-immediate-shim": { 2706 | "version": "1.0.1", 2707 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 2708 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 2709 | "dev": true 2710 | }, 2711 | "setprototypeof": { 2712 | "version": "1.1.0", 2713 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 2714 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 2715 | "dev": true 2716 | }, 2717 | "sha.js": { 2718 | "version": "2.4.11", 2719 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 2720 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 2721 | "dev": true, 2722 | "requires": { 2723 | "inherits": "2.0.3", 2724 | "safe-buffer": "5.1.2" 2725 | } 2726 | }, 2727 | "shasum": { 2728 | "version": "1.0.2", 2729 | "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", 2730 | "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", 2731 | "dev": true, 2732 | "requires": { 2733 | "json-stable-stringify": "0.0.1", 2734 | "sha.js": "2.4.11" 2735 | } 2736 | }, 2737 | "shebang-command": { 2738 | "version": "1.2.0", 2739 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 2740 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 2741 | "dev": true, 2742 | "requires": { 2743 | "shebang-regex": "1.0.0" 2744 | } 2745 | }, 2746 | "shebang-regex": { 2747 | "version": "1.0.0", 2748 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 2749 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 2750 | "dev": true 2751 | }, 2752 | "shell-quote": { 2753 | "version": "1.6.1", 2754 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", 2755 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", 2756 | "dev": true, 2757 | "requires": { 2758 | "array-filter": "0.0.1", 2759 | "array-map": "0.0.0", 2760 | "array-reduce": "0.0.0", 2761 | "jsonify": "0.0.0" 2762 | } 2763 | }, 2764 | "signal-exit": { 2765 | "version": "3.0.2", 2766 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 2767 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 2768 | "dev": true 2769 | }, 2770 | "simple-html-index": { 2771 | "version": "1.5.0", 2772 | "resolved": "https://registry.npmjs.org/simple-html-index/-/simple-html-index-1.5.0.tgz", 2773 | "integrity": "sha1-LJPurrrAAdihNfwAIr1K3o9YmW8=", 2774 | "dev": true, 2775 | "requires": { 2776 | "from2-string": "1.1.0" 2777 | } 2778 | }, 2779 | "source-map": { 2780 | "version": "0.5.7", 2781 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 2782 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 2783 | "dev": true 2784 | }, 2785 | "split2": { 2786 | "version": "0.2.1", 2787 | "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", 2788 | "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=", 2789 | "dev": true, 2790 | "requires": { 2791 | "through2": "0.6.5" 2792 | }, 2793 | "dependencies": { 2794 | "isarray": { 2795 | "version": "0.0.1", 2796 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 2797 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 2798 | "dev": true 2799 | }, 2800 | "readable-stream": { 2801 | "version": "1.0.34", 2802 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2803 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 2804 | "dev": true, 2805 | "requires": { 2806 | "core-util-is": "1.0.2", 2807 | "inherits": "2.0.3", 2808 | "isarray": "0.0.1", 2809 | "string_decoder": "0.10.31" 2810 | } 2811 | }, 2812 | "string_decoder": { 2813 | "version": "0.10.31", 2814 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 2815 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 2816 | "dev": true 2817 | }, 2818 | "through2": { 2819 | "version": "0.6.5", 2820 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 2821 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 2822 | "dev": true, 2823 | "requires": { 2824 | "readable-stream": "1.0.34", 2825 | "xtend": "4.0.1" 2826 | } 2827 | } 2828 | } 2829 | }, 2830 | "stacked": { 2831 | "version": "1.1.1", 2832 | "resolved": "https://registry.npmjs.org/stacked/-/stacked-1.1.1.tgz", 2833 | "integrity": "sha1-LH+jjMfjejQRp3zY55LeRI+faXU=", 2834 | "dev": true 2835 | }, 2836 | "statuses": { 2837 | "version": "1.4.0", 2838 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 2839 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", 2840 | "dev": true 2841 | }, 2842 | "stdout-stream": { 2843 | "version": "1.4.0", 2844 | "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", 2845 | "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", 2846 | "dev": true, 2847 | "requires": { 2848 | "readable-stream": "2.3.6" 2849 | } 2850 | }, 2851 | "stream-browserify": { 2852 | "version": "2.0.1", 2853 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", 2854 | "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", 2855 | "dev": true, 2856 | "requires": { 2857 | "inherits": "2.0.3", 2858 | "readable-stream": "2.3.6" 2859 | } 2860 | }, 2861 | "stream-combiner2": { 2862 | "version": "1.1.1", 2863 | "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", 2864 | "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", 2865 | "dev": true, 2866 | "requires": { 2867 | "duplexer2": "0.1.4", 2868 | "readable-stream": "2.3.6" 2869 | } 2870 | }, 2871 | "stream-http": { 2872 | "version": "2.8.1", 2873 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", 2874 | "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", 2875 | "dev": true, 2876 | "requires": { 2877 | "builtin-status-codes": "3.0.0", 2878 | "inherits": "2.0.3", 2879 | "readable-stream": "2.3.6", 2880 | "to-arraybuffer": "1.0.1", 2881 | "xtend": "4.0.1" 2882 | } 2883 | }, 2884 | "stream-splicer": { 2885 | "version": "2.0.0", 2886 | "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", 2887 | "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", 2888 | "dev": true, 2889 | "requires": { 2890 | "inherits": "2.0.3", 2891 | "readable-stream": "2.3.6" 2892 | } 2893 | }, 2894 | "strict-uri-encode": { 2895 | "version": "1.1.0", 2896 | "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", 2897 | "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", 2898 | "dev": true 2899 | }, 2900 | "string.prototype.trim": { 2901 | "version": "1.1.2", 2902 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", 2903 | "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", 2904 | "dev": true, 2905 | "requires": { 2906 | "define-properties": "1.1.2", 2907 | "es-abstract": "1.11.0", 2908 | "function-bind": "1.1.1" 2909 | } 2910 | }, 2911 | "string_decoder": { 2912 | "version": "1.1.1", 2913 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2914 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2915 | "dev": true, 2916 | "requires": { 2917 | "safe-buffer": "5.1.2" 2918 | } 2919 | }, 2920 | "strip-ansi": { 2921 | "version": "3.0.1", 2922 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2923 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2924 | "dev": true, 2925 | "requires": { 2926 | "ansi-regex": "2.1.1" 2927 | }, 2928 | "dependencies": { 2929 | "ansi-regex": { 2930 | "version": "2.1.1", 2931 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 2932 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 2933 | "dev": true 2934 | } 2935 | } 2936 | }, 2937 | "strip-eof": { 2938 | "version": "1.0.0", 2939 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 2940 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 2941 | "dev": true 2942 | }, 2943 | "subarg": { 2944 | "version": "1.0.0", 2945 | "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", 2946 | "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", 2947 | "dev": true, 2948 | "requires": { 2949 | "minimist": "1.2.0" 2950 | } 2951 | }, 2952 | "supports-color": { 2953 | "version": "0.2.0", 2954 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", 2955 | "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", 2956 | "dev": true 2957 | }, 2958 | "syntax-error": { 2959 | "version": "1.4.0", 2960 | "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", 2961 | "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", 2962 | "dev": true, 2963 | "requires": { 2964 | "acorn-node": "1.3.0" 2965 | } 2966 | }, 2967 | "tape": { 2968 | "version": "4.9.0", 2969 | "resolved": "https://registry.npmjs.org/tape/-/tape-4.9.0.tgz", 2970 | "integrity": "sha512-j0jO9BiScfqtPBb9QmPLL0qvxXMz98xjkMb7x8lKipFlJZwNJkqkWPou+NU4V6T9RnVh1kuSthLE8gLrN8bBfw==", 2971 | "dev": true, 2972 | "requires": { 2973 | "deep-equal": "1.0.1", 2974 | "defined": "1.0.0", 2975 | "for-each": "0.3.2", 2976 | "function-bind": "1.1.1", 2977 | "glob": "7.1.2", 2978 | "has": "1.0.1", 2979 | "inherits": "2.0.3", 2980 | "minimist": "1.2.0", 2981 | "object-inspect": "1.5.0", 2982 | "resolve": "1.5.0", 2983 | "resumer": "0.0.0", 2984 | "string.prototype.trim": "1.1.2", 2985 | "through": "2.3.8" 2986 | }, 2987 | "dependencies": { 2988 | "resolve": { 2989 | "version": "1.5.0", 2990 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", 2991 | "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", 2992 | "dev": true, 2993 | "requires": { 2994 | "path-parse": "1.0.5" 2995 | } 2996 | } 2997 | } 2998 | }, 2999 | "term-color": { 3000 | "version": "1.0.1", 3001 | "resolved": "https://registry.npmjs.org/term-color/-/term-color-1.0.1.tgz", 3002 | "integrity": "sha1-OOGSVTpHPjXkFgT/UZmEa/gRejo=", 3003 | "dev": true, 3004 | "requires": { 3005 | "ansi-styles": "2.0.1", 3006 | "supports-color": "1.3.1" 3007 | }, 3008 | "dependencies": { 3009 | "ansi-styles": { 3010 | "version": "2.0.1", 3011 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz", 3012 | "integrity": "sha1-sDP1f5Pi0oreuLwRE4+hPaD9IKM=", 3013 | "dev": true 3014 | }, 3015 | "supports-color": { 3016 | "version": "1.3.1", 3017 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz", 3018 | "integrity": "sha1-FXWN8J2P87SswwdTn6vicJXhBC0=", 3019 | "dev": true 3020 | } 3021 | } 3022 | }, 3023 | "through": { 3024 | "version": "2.3.8", 3025 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3026 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 3027 | "dev": true 3028 | }, 3029 | "through2": { 3030 | "version": "2.0.3", 3031 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 3032 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 3033 | "dev": true, 3034 | "requires": { 3035 | "readable-stream": "2.3.6", 3036 | "xtend": "4.0.1" 3037 | } 3038 | }, 3039 | "timers-browserify": { 3040 | "version": "1.4.2", 3041 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", 3042 | "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", 3043 | "dev": true, 3044 | "requires": { 3045 | "process": "0.11.10" 3046 | } 3047 | }, 3048 | "to-arraybuffer": { 3049 | "version": "1.0.1", 3050 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 3051 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 3052 | "dev": true 3053 | }, 3054 | "trim": { 3055 | "version": "0.0.1", 3056 | "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", 3057 | "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" 3058 | }, 3059 | "tty-browserify": { 3060 | "version": "0.0.1", 3061 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", 3062 | "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", 3063 | "dev": true 3064 | }, 3065 | "typedarray": { 3066 | "version": "0.0.6", 3067 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 3068 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 3069 | "dev": true 3070 | }, 3071 | "ultron": { 3072 | "version": "1.0.2", 3073 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", 3074 | "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", 3075 | "dev": true 3076 | }, 3077 | "umd": { 3078 | "version": "3.0.3", 3079 | "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", 3080 | "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", 3081 | "dev": true 3082 | }, 3083 | "url": { 3084 | "version": "0.11.0", 3085 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 3086 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 3087 | "dev": true, 3088 | "requires": { 3089 | "punycode": "1.3.2", 3090 | "querystring": "0.2.0" 3091 | }, 3092 | "dependencies": { 3093 | "punycode": { 3094 | "version": "1.3.2", 3095 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 3096 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 3097 | "dev": true 3098 | } 3099 | } 3100 | }, 3101 | "url-trim": { 3102 | "version": "1.0.0", 3103 | "resolved": "https://registry.npmjs.org/url-trim/-/url-trim-1.0.0.tgz", 3104 | "integrity": "sha1-QAV+LxZLiOXaynJp2kfm0d2Detw=", 3105 | "dev": true 3106 | }, 3107 | "util": { 3108 | "version": "0.10.3", 3109 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 3110 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 3111 | "dev": true, 3112 | "requires": { 3113 | "inherits": "2.0.1" 3114 | }, 3115 | "dependencies": { 3116 | "inherits": { 3117 | "version": "2.0.1", 3118 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 3119 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 3120 | "dev": true 3121 | } 3122 | } 3123 | }, 3124 | "util-deprecate": { 3125 | "version": "1.0.2", 3126 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 3127 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 3128 | "dev": true 3129 | }, 3130 | "vm-browserify": { 3131 | "version": "1.0.1", 3132 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.0.1.tgz", 3133 | "integrity": "sha512-EqzLchIMYLBjRPoqVsEkZOa/4Vr2RfOWbd58F+I/Gj79AYTrsseMunxbbSkbYfrqZaXSuPBBXNSOhtJgg0PpmA==", 3134 | "dev": true 3135 | }, 3136 | "watchify": { 3137 | "version": "3.11.0", 3138 | "resolved": "https://registry.npmjs.org/watchify/-/watchify-3.11.0.tgz", 3139 | "integrity": "sha512-7jWG0c3cKKm2hKScnSAMUEUjRJKXUShwMPk0ASVhICycQhwND3IMAdhJYmc1mxxKzBUJTSF5HZizfrKrS6BzkA==", 3140 | "dev": true, 3141 | "requires": { 3142 | "anymatch": "1.3.2", 3143 | "browserify": "16.2.0", 3144 | "chokidar": "1.7.0", 3145 | "defined": "1.0.0", 3146 | "outpipe": "1.1.1", 3147 | "through2": "2.0.3", 3148 | "xtend": "4.0.1" 3149 | } 3150 | }, 3151 | "watchify-middleware": { 3152 | "version": "1.8.0", 3153 | "resolved": "https://registry.npmjs.org/watchify-middleware/-/watchify-middleware-1.8.0.tgz", 3154 | "integrity": "sha512-INYU5/3zTZtWQvJKPelr47j0JeLTZK4GUDF0PoMltMPzMUEh/lW6g1t+Qe/tGHxm70AUc0NQrth3k3PTfOU9Nw==", 3155 | "dev": true, 3156 | "requires": { 3157 | "concat-stream": "1.6.2", 3158 | "debounce": "1.1.0", 3159 | "events": "1.1.1", 3160 | "object-assign": "4.1.1", 3161 | "strip-ansi": "3.0.1", 3162 | "watchify": "3.11.0" 3163 | } 3164 | }, 3165 | "which": { 3166 | "version": "1.3.0", 3167 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 3168 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", 3169 | "dev": true, 3170 | "requires": { 3171 | "isexe": "2.0.0" 3172 | } 3173 | }, 3174 | "wrappy": { 3175 | "version": "1.0.2", 3176 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 3177 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 3178 | "dev": true 3179 | }, 3180 | "ws": { 3181 | "version": "1.1.5", 3182 | "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", 3183 | "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", 3184 | "dev": true, 3185 | "requires": { 3186 | "options": "0.0.6", 3187 | "ultron": "1.0.2" 3188 | } 3189 | }, 3190 | "xhr": { 3191 | "version": "2.4.1", 3192 | "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.1.tgz", 3193 | "integrity": "sha512-pAIU5vBr9Hiy5cpFIbPnwf0C18ZF86DBsZKrlsf87N5De/JbA6RJ83UP/cv+aljl4S40iRVMqP4pr4sF9Dnj0A==", 3194 | "requires": { 3195 | "global": "4.3.2", 3196 | "is-function": "1.0.1", 3197 | "parse-headers": "2.0.1", 3198 | "xtend": "4.0.1" 3199 | } 3200 | }, 3201 | "xtend": { 3202 | "version": "4.0.1", 3203 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 3204 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 3205 | } 3206 | } 3207 | } 3208 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "load-asset", 3 | "version": "1.2.0", 4 | "description": "Loads a single or multiple assets and returns a promise.", 5 | "main": "index.js", 6 | "license": "MIT", 7 | "author": { 8 | "name": "Matt DesLauriers", 9 | "email": "dave.des@gmail.com", 10 | "url": "https://github.com/mattdesl" 11 | }, 12 | "dependencies": { 13 | "browser-media-mime-type": "^1.0.0", 14 | "is-promise": "^2.1.0", 15 | "object-assign": "^4.1.1", 16 | "xhr": "^2.4.1" 17 | }, 18 | "devDependencies": { 19 | "budo": "^11.2.0", 20 | "parse-wavefront-obj": "^1.0.3", 21 | "tape": "^4.9.0" 22 | }, 23 | "scripts": { 24 | "test": "budo test/index.js -o --dir test/ --live", 25 | "example": "budo test/custom-type.js -o --dir test/ --live", 26 | "example-font": "budo test/custom-font.js -o --dir test/ --live" 27 | }, 28 | "keywords": [ 29 | "mp3", 30 | "jpg", 31 | "jpeg", 32 | "image", 33 | "loader", 34 | "loading", 35 | "assets", 36 | "loaders" 37 | ], 38 | "repository": { 39 | "type": "git", 40 | "url": "git://github.com/mattdesl/load-asset.git" 41 | }, 42 | "homepage": "https://github.com/mattdesl/load-asset", 43 | "bugs": { 44 | "url": "https://github.com/mattdesl/load-asset/issues" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /test/custom-font.js: -------------------------------------------------------------------------------- 1 | const load = require('../'); 2 | 3 | // A custom font loader 4 | const Font = async (opt) => { 5 | return new window.FontFace(opt.family, `url(${opt.url})`).load(); 6 | }; 7 | 8 | // Render a Canvas2D graphic with a loaded image + custom font 9 | const draw = async () => { 10 | // First, preload font and image assets 11 | const { background, font } = await load.all({ 12 | background: 'fixtures/baboon.png', 13 | font: { url: 'fixtures/Oswald-Medium.ttf', family: 'Oswald', type: Font } 14 | }); 15 | 16 | // Then, add the font to the document so that it can be rendered in Canvas2D 17 | document.fonts.add(font); 18 | 19 | // Create a and grab its 2D context 20 | const canvas = document.createElement('canvas'); 21 | const context = canvas.getContext('2d'); 22 | 23 | // Draw the loaded background image... 24 | context.drawImage(background, 0, 0); 25 | 26 | // Now set & draw the loaded font 27 | context.font = `40px ${font.family}`; 28 | context.lineWidth = 2; 29 | context.strokeStyle = 'white'; 30 | context.strokeText('loaded.', 8, 75); 31 | return canvas; 32 | }; 33 | 34 | // Draw the canvas graphics and then append it to the body. 35 | (async () => { 36 | const canvas = await draw(); 37 | document.body.appendChild(canvas); 38 | })(); 39 | -------------------------------------------------------------------------------- /test/custom-type.js: -------------------------------------------------------------------------------- 1 | const load = require('../'); 2 | const parseOBJ = require('parse-wavefront-obj'); 3 | 4 | const OBJ = async opt => { 5 | // First load the resource as text 6 | const text = await load({ ...opt, type: 'text' }); 7 | // Then parse the OBJ file format 8 | return parseOBJ(text); 9 | }; 10 | 11 | const preload = async () => { 12 | // Now we have a custom OBJ asset alongside the rest of our preloader 13 | const assets = await load.any({ 14 | cube: { url: 'fixtures/cube.obj', type: OBJ }, 15 | image: 'fixtures/baboon.png', 16 | data: 'fixtures/foo.json' 17 | }, ev => { 18 | console.log(`Progress: ${ev.progress}`); 19 | }); 20 | console.log('Parsed OBJ:', assets.cube.positions, assets.cube.cells); 21 | return assets; 22 | }; 23 | 24 | preload(); 25 | -------------------------------------------------------------------------------- /test/fixtures/Oswald-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattdesl/load-asset/e14ca32a5849de59ccc8763cf308cc866d2bb28f/test/fixtures/Oswald-Medium.ttf -------------------------------------------------------------------------------- /test/fixtures/baboon-no-ext: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattdesl/load-asset/e14ca32a5849de59ccc8763cf308cc866d2bb28f/test/fixtures/baboon-no-ext -------------------------------------------------------------------------------- /test/fixtures/baboon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattdesl/load-asset/e14ca32a5849de59ccc8763cf308cc866d2bb28f/test/fixtures/baboon.png -------------------------------------------------------------------------------- /test/fixtures/bluejean_short.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattdesl/load-asset/e14ca32a5849de59ccc8763cf308cc866d2bb28f/test/fixtures/bluejean_short.mp3 -------------------------------------------------------------------------------- /test/fixtures/cube.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.78 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | mtllib cube.mtl 4 | o Cube 5 | v -1.000000 -1.000000 1.000000 6 | v -1.000000 1.000000 1.000000 7 | v -1.000000 -1.000000 -1.000000 8 | v -1.000000 1.000000 -1.000000 9 | v 1.000000 -1.000000 1.000000 10 | v 1.000000 1.000000 1.000000 11 | v 1.000000 -1.000000 -1.000000 12 | v 1.000000 1.000000 -1.000000 13 | vn -1.0000 0.0000 0.0000 14 | vn 0.0000 0.0000 -1.0000 15 | vn 1.0000 0.0000 0.0000 16 | vn 0.0000 0.0000 1.0000 17 | vn 0.0000 -1.0000 0.0000 18 | vn 0.0000 1.0000 0.0000 19 | usemtl None 20 | s off 21 | f 1//1 2//1 4//1 3//1 22 | f 3//2 4//2 8//2 7//2 23 | f 7//3 8//3 6//3 5//3 24 | f 5//4 6//4 2//4 1//4 25 | f 3//5 7//5 5//5 1//5 26 | f 8//6 4//6 2//6 6//6 27 | -------------------------------------------------------------------------------- /test/fixtures/foo-err.json: -------------------------------------------------------------------------------- 1 | { 2 | "hello": "world" 3 | }/ -------------------------------------------------------------------------------- /test/fixtures/foo.json: -------------------------------------------------------------------------------- 1 | { 2 | "hello": "world" 3 | } -------------------------------------------------------------------------------- /test/fixtures/giphy.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattdesl/load-asset/e14ca32a5849de59ccc8763cf308cc866d2bb28f/test/fixtures/giphy.mp4 -------------------------------------------------------------------------------- /test/fixtures/other.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mattdesl/load-asset/e14ca32a5849de59ccc8763cf308cc866d2bb28f/test/fixtures/other.bin -------------------------------------------------------------------------------- /test/fixtures/test.md: -------------------------------------------------------------------------------- 1 | # Hello 2 | 3 | world. -------------------------------------------------------------------------------- /test/fixtures/test.txt: -------------------------------------------------------------------------------- 1 | hello, world! -------------------------------------------------------------------------------- /test/generate-bin.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | const data = new Float32Array([ 1.5, 2.5, 500 ]); 5 | const buffer = Buffer.from(data.buffer); 6 | 7 | fs.writeFile(path.resolve(__dirname, 'fixtures/other.bin'), buffer, 'binary', err => { 8 | if (err) throw err; 9 | }); 10 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | const test = require('tape'); 2 | const loader = require('../'); 3 | 4 | test('should load images', async t => { 5 | t.plan(2); 6 | const result = await loader('fixtures/baboon.png'); 7 | t.equal(result.width, 128); 8 | t.equal(result.height, 128); 9 | }); 10 | 11 | test('should load images with query param', async t => { 12 | t.plan(2); 13 | const result = await loader('fixtures/baboon.png?cachebust=213'); 14 | t.equal(result.width, 128); 15 | t.equal(result.height, 128); 16 | }); 17 | 18 | test('should load image without extension', async t => { 19 | t.plan(2); 20 | const result = await loader({ url: 'fixtures/baboon-no-ext', type: 'image' }); 21 | t.equal(result.width, 128); 22 | t.equal(result.height, 128); 23 | }); 24 | 25 | test('should reject without extension', t => { 26 | t.plan(1); 27 | loader('fixtures/baboon-no-ext').then(() => t.fail('should not succeed'), () => t.ok(true)); 28 | }); 29 | 30 | test('should reject without URL', t => { 31 | t.plan(1); 32 | loader('').then(() => t.fail('should not succeed'), () => t.ok(true)); 33 | }); 34 | 35 | test('should load json', async t => { 36 | t.plan(1); 37 | const result = await loader('fixtures/foo.json'); 38 | t.equal(result.hello, 'world'); 39 | }); 40 | 41 | test('should reject with JSON error', t => { 42 | t.plan(1); 43 | loader('fixtures/foo-err.json').then(() => t.fail('should not succeed'), () => t.ok(true)); 44 | }); 45 | 46 | test('should load text files for all other extensions', async t => { 47 | t.plan(1); 48 | const result = await loader('fixtures/test.txt'); 49 | t.equal(result, 'hello, world!'); 50 | }); 51 | 52 | test('should load binary', async t => { 53 | t.plan(1); 54 | const result = await loader('fixtures/other.bin'); 55 | t.deepEqual(new Float32Array(result), new Float32Array([ 1.5, 2.5, 500 ])); 56 | }); 57 | 58 | test('should load audio blob', async t => { 59 | t.plan(3); 60 | const result = await loader({ url: 'fixtures/bluejean_short.mp3', type: 'blob' }); 61 | t.ok(result instanceof window.Blob); 62 | t.equal(result.size, 241988); 63 | t.equal(result.type, 'audio/mpeg'); 64 | }); 65 | 66 | test('should load audio file', async t => { 67 | t.plan(1); 68 | const result = await loader('fixtures/bluejean_short.mp3'); 69 | t.equal(Math.floor(result.duration), 15); 70 | }); 71 | 72 | test('should load audio file with loadeddata event', async t => { 73 | t.plan(1); 74 | const result = await loader({ url: 'fixtures/bluejean_short.mp3', event: 'loadeddata' }); 75 | t.equal(Math.floor(result.duration), 15); 76 | }); 77 | 78 | test('should load audio file with loadedmetadata event', async t => { 79 | t.plan(1); 80 | const result = await loader({ url: 'fixtures/bluejean_short.mp3', event: 'loadedmetadata' }); 81 | t.equal(Math.floor(result.duration), 15); 82 | }); 83 | 84 | test('should load audio file with canplaythrough event', async t => { 85 | t.plan(1); 86 | const result = await loader({ url: 'fixtures/bluejean_short.mp3', event: 'canplaythrough' }); 87 | t.equal(Math.floor(result.duration), 15); 88 | }); 89 | 90 | test('can load mp4 with audio type', async t => { 91 | t.plan(1); 92 | const result = await loader({ url: 'fixtures/giphy.mp4', type: 'audio', event: 'loadedmetadata' }); 93 | t.equal(Math.floor(result.duration), 1); 94 | }); 95 | 96 | test('can load mp4 with video type', async t => { 97 | t.plan(1); 98 | const result = await loader('fixtures/giphy.mp4'); 99 | t.equal(Math.floor(result.duration), 1); 100 | }); 101 | 102 | test('load multiple as a named object', async t => { 103 | t.plan(2); 104 | const result = await loader.all({ 105 | message: 'fixtures/test.txt', 106 | image: { url: 'fixtures/baboon-no-ext', type: 'image' } 107 | }); 108 | t.equal(result.message, 'hello, world!'); 109 | t.equal(result.image.width, 128); 110 | }); 111 | 112 | test('load multiple as a list of descriptors', async t => { 113 | t.plan(2); 114 | const result = await loader.all([ 115 | 'fixtures/test.txt', 116 | { url: 'fixtures/baboon-no-ext', type: 'image' } 117 | ]); 118 | t.equal(result[0], 'hello, world!'); 119 | t.equal(result[1].width, 128); 120 | }); 121 | 122 | test('load multiple while allowing failures', async t => { 123 | t.plan(2); 124 | const result = await loader.any([ 125 | 'fixtures/test.txt', 126 | 'fixtures/does-not-exist.txt' 127 | ]); 128 | t.equal(result[0], 'hello, world!'); 129 | t.deepEqual(result[1], null); 130 | }); 131 | 132 | test('array should emit progress', async t => { 133 | t.plan(2); 134 | let curCount = 0; 135 | await loader.any([ 136 | 'fixtures/test.txt', 137 | 'fixtures/baboon.png' 138 | ], ev => { 139 | t.equal(ev.count, ++curCount); 140 | }); 141 | }); 142 | 143 | test('array should emit progress', async t => { 144 | t.plan(4); 145 | let curCount = 0; 146 | await loader.any([ 147 | 'fixtures/test.txt', 148 | 'fixtures/not-found.png', 149 | 'fixtures/baboon.png' 150 | ], ev => { 151 | if (ev.error) { 152 | t.ok(ev.error, 'got error'); 153 | } 154 | t.equal(ev.count, ++curCount); 155 | }); 156 | }); 157 | 158 | test('custom loader type', async t => { 159 | t.plan(5); 160 | 161 | const customLoader = (opt) => { 162 | t.equal(opt.foo, 'bar'); 163 | return Promise.resolve(opt.url.toUpperCase()); 164 | }; 165 | let curCount = 0; 166 | const results = await loader.any([ 167 | { url: 'foobar', type: customLoader, foo: 'bar' }, 168 | 'fixtures/test.txt', 169 | 'fixtures/baboon.png' 170 | ], ev => { 171 | t.equal(ev.count, ++curCount); 172 | }); 173 | 174 | t.equal(results[0], 'FOOBAR'); 175 | }); 176 | 177 | test('should handle nested loading', t => { 178 | t.plan(3); 179 | loader.any({ 180 | a: 'fixtures/test.txt', 181 | tiles: loader.any({ 182 | baboon: 'fixtures/baboon.png' 183 | }), 184 | other: loader.any([ 185 | 'fixtures/foo.json', 186 | 'fixtures/test.txt' 187 | ]) 188 | }).then(result => { 189 | t.equal(result.a, 'hello, world!'); 190 | t.deepEqual(result.other, [ 191 | { hello: 'world' }, 'hello, world!' 192 | ]); 193 | t.equal(result.tiles.baboon.width, 128); 194 | }); 195 | }); 196 | --------------------------------------------------------------------------------