├── .gitignore ├── .travis.yml ├── README.md ├── index.js ├── package-lock.json ├── package.json ├── src └── utils.js └── test ├── img └── riding-a-bike.jpg └── utils.test.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '6' 4 | - '4' -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |
4 | LQIP CLI 5 |
6 |
7 |

8 | 9 |

LQIP: Low Quality Images Placeholder

10 | 11 | #### [Demo: must see first](https://lqip-loader.firebaseapp.com/) 12 | 13 | #### How To Use 14 | 15 | `npm i -g lqip-cli` 16 | 17 | `lqip ./my-image-directory/images.jpg` 18 | 19 | **options** 20 | 21 | `--no-copy` alternatively `-n`: will disable copying the Base64 string to clipboard 22 | 23 | *example:* 24 | 25 | `lqip -n ./my-image-directory/images.jpg` 26 | 27 | #### Inspired By: 28 | - Medium web app 29 | - Instagram mobile app 30 | - Polymer shop project 31 | 32 | #### Related Projects: 33 | - [lqip-loader for Webpack](https://github.com/zouhir/lqip-loader) 34 | - [lqip module for Node](https://github.com/zouhir/lqip) 35 | 36 | #### License 37 | MIT - [Zouhir Chahoud](https://zouhir.org/) -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | "use strict"; 4 | const meow = require("meow"); 5 | const lqip = require("lqip"); 6 | const chalk = require("chalk"); 7 | const ncp = require("copy-paste"); 8 | 9 | // CLI helpers 10 | const cli = meow( 11 | ` 12 | Usage 13 | $ lqip 14 | Options 15 | -n, --no copy to disable copying the Base64 string to clipboard 16 | Examples 17 | $ lqip ./images/banner.jpeg 18 | `, 19 | { 20 | string: ["no-copy"], 21 | alias: { 22 | n: "no-copy" 23 | } 24 | } 25 | ); 26 | 27 | // make sure a file was specified in cli 28 | if (cli.input.length === 0) { 29 | console.error("You need to specify at least 1 image"); 30 | process.exit(1); 31 | } 32 | 33 | // WIP only 1 file supported -- sorry! 34 | const promise = lqip(cli.input[0]); 35 | 36 | // WIP only 1 file supported -- sorry! 37 | promise.then( 38 | base64 => { 39 | console.log("\n" + chalk.green("✅ Success") + "\n"); 40 | console.log(chalk.green(base64) + "\n"); 41 | if (typeof cli.flags["noCopy"] === "undefined") { 42 | ncp.copy(base64, () => { 43 | console.log( 44 | chalk.yellow("✨ The Base64 above has been copied to your clipboard") 45 | ); 46 | }); 47 | } 48 | }, 49 | error => { 50 | console.log(chalk.red(error) + "\n"); 51 | console.log( 52 | chalk.red( 53 | "😿 We are sorry that error has happened, please file an issue for us at: https://github.com/zouhir/lqip-cli" 54 | ) 55 | ); 56 | } 57 | ); 58 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lqip-cli", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1, 5 | "dependencies": { 6 | "acorn": { 7 | "version": "5.0.3", 8 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", 9 | "integrity": "sha1-xGDfCEkUY/AozLguqzcwvwEIez0=", 10 | "dev": true 11 | }, 12 | "acorn-jsx": { 13 | "version": "3.0.1", 14 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 15 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 16 | "dev": true, 17 | "dependencies": { 18 | "acorn": { 19 | "version": "3.3.0", 20 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 21 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 22 | "dev": true 23 | } 24 | } 25 | }, 26 | "ajv": { 27 | "version": "4.11.8", 28 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", 29 | "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", 30 | "dev": true 31 | }, 32 | "ajv-keywords": { 33 | "version": "1.5.1", 34 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", 35 | "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", 36 | "dev": true 37 | }, 38 | "ansi-escapes": { 39 | "version": "1.4.0", 40 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", 41 | "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", 42 | "dev": true 43 | }, 44 | "ansi-regex": { 45 | "version": "2.1.1", 46 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 47 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 48 | }, 49 | "ansi-styles": { 50 | "version": "2.2.1", 51 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 52 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 53 | }, 54 | "argparse": { 55 | "version": "1.0.9", 56 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 57 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 58 | "dev": true 59 | }, 60 | "array-find-index": { 61 | "version": "1.0.2", 62 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 63 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" 64 | }, 65 | "array-union": { 66 | "version": "1.0.2", 67 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 68 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 69 | "dev": true 70 | }, 71 | "array-uniq": { 72 | "version": "1.0.3", 73 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 74 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 75 | "dev": true 76 | }, 77 | "arrify": { 78 | "version": "1.0.1", 79 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 80 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 81 | "dev": true 82 | }, 83 | "assertion-error": { 84 | "version": "1.0.2", 85 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", 86 | "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", 87 | "dev": true 88 | }, 89 | "babel-code-frame": { 90 | "version": "6.22.0", 91 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", 92 | "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", 93 | "dev": true 94 | }, 95 | "balanced-match": { 96 | "version": "1.0.0", 97 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 98 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 99 | "dev": true 100 | }, 101 | "brace-expansion": { 102 | "version": "1.1.8", 103 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 104 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 105 | "dev": true 106 | }, 107 | "browser-stdout": { 108 | "version": "1.3.0", 109 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", 110 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", 111 | "dev": true 112 | }, 113 | "builtin-modules": { 114 | "version": "1.1.1", 115 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 116 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" 117 | }, 118 | "caller-path": { 119 | "version": "0.1.0", 120 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 121 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 122 | "dev": true 123 | }, 124 | "callsites": { 125 | "version": "0.2.0", 126 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 127 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 128 | "dev": true 129 | }, 130 | "camelcase": { 131 | "version": "2.1.1", 132 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", 133 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" 134 | }, 135 | "camelcase-keys": { 136 | "version": "2.1.0", 137 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", 138 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=" 139 | }, 140 | "caw": { 141 | "version": "2.0.0", 142 | "resolved": "https://registry.npmjs.org/caw/-/caw-2.0.0.tgz", 143 | "integrity": "sha1-Efi93C+AFGmVLV4yJbqYSVovoP8=" 144 | }, 145 | "chai": { 146 | "version": "4.0.2", 147 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.0.2.tgz", 148 | "integrity": "sha1-L3MnxN5vOF3XeHmZ4qsCaXoyuDs=", 149 | "dev": true 150 | }, 151 | "chai-as-promised": { 152 | "version": "7.0.0", 153 | "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.0.0.tgz", 154 | "integrity": "sha512-7YYdnXPq2pV9nvRBb36Wi/MXfT8j2iL/H76GtenlOMatXbMoQLb+PonuVHGFsw5wE2M6R/VFciq8AnSSAix0GA==", 155 | "dev": true 156 | }, 157 | "chalk": { 158 | "version": "1.1.3", 159 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 160 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" 161 | }, 162 | "check-error": { 163 | "version": "1.0.2", 164 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 165 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 166 | "dev": true 167 | }, 168 | "circular-json": { 169 | "version": "0.3.1", 170 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", 171 | "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=", 172 | "dev": true 173 | }, 174 | "cli-cursor": { 175 | "version": "1.0.2", 176 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", 177 | "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", 178 | "dev": true 179 | }, 180 | "cli-width": { 181 | "version": "2.1.0", 182 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", 183 | "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", 184 | "dev": true 185 | }, 186 | "co": { 187 | "version": "4.6.0", 188 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 189 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 190 | "dev": true 191 | }, 192 | "code-point-at": { 193 | "version": "1.1.0", 194 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 195 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 196 | "dev": true 197 | }, 198 | "color": { 199 | "version": "1.0.3", 200 | "resolved": "https://registry.npmjs.org/color/-/color-1.0.3.tgz", 201 | "integrity": "sha1-5I6DLYXxTvaU+0aIEcLVz+cptV0=" 202 | }, 203 | "color-convert": { 204 | "version": "1.9.0", 205 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", 206 | "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=" 207 | }, 208 | "color-name": { 209 | "version": "1.1.2", 210 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", 211 | "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=" 212 | }, 213 | "color-string": { 214 | "version": "1.5.2", 215 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.2.tgz", 216 | "integrity": "sha1-JuRYFLw8mny9Z1FkikFDRRSnc6k=" 217 | }, 218 | "commander": { 219 | "version": "2.9.0", 220 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 221 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", 222 | "dev": true 223 | }, 224 | "concat-map": { 225 | "version": "0.0.1", 226 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 227 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 228 | "dev": true 229 | }, 230 | "concat-stream": { 231 | "version": "1.6.0", 232 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", 233 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", 234 | "dev": true 235 | }, 236 | "copy-paste": { 237 | "version": "1.3.0", 238 | "resolved": "https://registry.npmjs.org/copy-paste/-/copy-paste-1.3.0.tgz", 239 | "integrity": "sha1-p+bEocKP3t8rCB5yuX3y75X0ce0=" 240 | }, 241 | "core-util-is": { 242 | "version": "1.0.2", 243 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 244 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 245 | "dev": true 246 | }, 247 | "currently-unhandled": { 248 | "version": "0.4.1", 249 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 250 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=" 251 | }, 252 | "d": { 253 | "version": "1.0.0", 254 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", 255 | "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", 256 | "dev": true 257 | }, 258 | "debug": { 259 | "version": "2.6.8", 260 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 261 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 262 | "dev": true 263 | }, 264 | "decamelize": { 265 | "version": "1.2.0", 266 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 267 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 268 | }, 269 | "decompress-response": { 270 | "version": "3.3.0", 271 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 272 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" 273 | }, 274 | "deep-eql": { 275 | "version": "2.0.2", 276 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-2.0.2.tgz", 277 | "integrity": "sha1-sbrAblbwp2d3aG1Qyf63XC7XZ5o=", 278 | "dev": true, 279 | "dependencies": { 280 | "type-detect": { 281 | "version": "3.0.0", 282 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-3.0.0.tgz", 283 | "integrity": "sha1-RtDMhVOrt7E6NSsNbeov1Y8tm1U=", 284 | "dev": true 285 | } 286 | } 287 | }, 288 | "deep-extend": { 289 | "version": "0.4.2", 290 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", 291 | "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" 292 | }, 293 | "deep-is": { 294 | "version": "0.1.3", 295 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 296 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 297 | "dev": true 298 | }, 299 | "del": { 300 | "version": "2.2.2", 301 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 302 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", 303 | "dev": true 304 | }, 305 | "diff": { 306 | "version": "3.2.0", 307 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", 308 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", 309 | "dev": true 310 | }, 311 | "doctrine": { 312 | "version": "2.0.0", 313 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", 314 | "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", 315 | "dev": true 316 | }, 317 | "duplexer3": { 318 | "version": "0.1.4", 319 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 320 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" 321 | }, 322 | "error-ex": { 323 | "version": "1.3.1", 324 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 325 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 326 | "dependencies": { 327 | "is-arrayish": { 328 | "version": "0.2.1", 329 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 330 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" 331 | } 332 | } 333 | }, 334 | "es5-ext": { 335 | "version": "0.10.23", 336 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.23.tgz", 337 | "integrity": "sha1-dXi1G+l0IHpUh4IbVlOMIk5Oezg=", 338 | "dev": true 339 | }, 340 | "es6-iterator": { 341 | "version": "2.0.1", 342 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", 343 | "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", 344 | "dev": true 345 | }, 346 | "es6-map": { 347 | "version": "0.1.5", 348 | "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", 349 | "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", 350 | "dev": true 351 | }, 352 | "es6-set": { 353 | "version": "0.1.5", 354 | "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", 355 | "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", 356 | "dev": true 357 | }, 358 | "es6-symbol": { 359 | "version": "3.1.1", 360 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", 361 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", 362 | "dev": true 363 | }, 364 | "es6-weak-map": { 365 | "version": "2.0.2", 366 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", 367 | "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", 368 | "dev": true 369 | }, 370 | "escape-string-regexp": { 371 | "version": "1.0.5", 372 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 373 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 374 | }, 375 | "escope": { 376 | "version": "3.6.0", 377 | "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", 378 | "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", 379 | "dev": true 380 | }, 381 | "eslint": { 382 | "version": "3.19.0", 383 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", 384 | "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", 385 | "dev": true, 386 | "dependencies": { 387 | "strip-bom": { 388 | "version": "3.0.0", 389 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 390 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 391 | "dev": true 392 | } 393 | } 394 | }, 395 | "espree": { 396 | "version": "3.4.3", 397 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", 398 | "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", 399 | "dev": true 400 | }, 401 | "esprima": { 402 | "version": "3.1.3", 403 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", 404 | "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", 405 | "dev": true 406 | }, 407 | "esquery": { 408 | "version": "1.0.0", 409 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", 410 | "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", 411 | "dev": true 412 | }, 413 | "esrecurse": { 414 | "version": "4.2.0", 415 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", 416 | "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", 417 | "dev": true 418 | }, 419 | "estraverse": { 420 | "version": "4.2.0", 421 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 422 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 423 | "dev": true 424 | }, 425 | "esutils": { 426 | "version": "2.0.2", 427 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 428 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 429 | "dev": true 430 | }, 431 | "event-emitter": { 432 | "version": "0.3.5", 433 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", 434 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", 435 | "dev": true 436 | }, 437 | "exit-hook": { 438 | "version": "1.1.1", 439 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", 440 | "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", 441 | "dev": true 442 | }, 443 | "fast-levenshtein": { 444 | "version": "2.0.6", 445 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 446 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 447 | "dev": true 448 | }, 449 | "figures": { 450 | "version": "1.7.0", 451 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", 452 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 453 | "dev": true 454 | }, 455 | "file-entry-cache": { 456 | "version": "2.0.0", 457 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 458 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 459 | "dev": true 460 | }, 461 | "find-up": { 462 | "version": "1.1.2", 463 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 464 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=" 465 | }, 466 | "flat-cache": { 467 | "version": "1.2.2", 468 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", 469 | "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", 470 | "dev": true 471 | }, 472 | "fs.realpath": { 473 | "version": "1.0.0", 474 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 475 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 476 | "dev": true 477 | }, 478 | "generate-function": { 479 | "version": "2.0.0", 480 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", 481 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", 482 | "dev": true 483 | }, 484 | "generate-object-property": { 485 | "version": "1.2.0", 486 | "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 487 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", 488 | "dev": true 489 | }, 490 | "get-func-name": { 491 | "version": "2.0.0", 492 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 493 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 494 | "dev": true 495 | }, 496 | "get-proxy": { 497 | "version": "1.1.0", 498 | "resolved": "https://registry.npmjs.org/get-proxy/-/get-proxy-1.1.0.tgz", 499 | "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=" 500 | }, 501 | "get-stdin": { 502 | "version": "4.0.1", 503 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", 504 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" 505 | }, 506 | "get-stream": { 507 | "version": "3.0.0", 508 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 509 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" 510 | }, 511 | "glob": { 512 | "version": "7.1.2", 513 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 514 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 515 | "dev": true 516 | }, 517 | "globals": { 518 | "version": "9.18.0", 519 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 520 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 521 | "dev": true 522 | }, 523 | "globby": { 524 | "version": "5.0.0", 525 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 526 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", 527 | "dev": true 528 | }, 529 | "got": { 530 | "version": "7.0.0", 531 | "resolved": "https://registry.npmjs.org/got/-/got-7.0.0.tgz", 532 | "integrity": "sha1-gtQ59nY82xyIIbejquJ4TIjDuNM=" 533 | }, 534 | "graceful-fs": { 535 | "version": "4.1.11", 536 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 537 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" 538 | }, 539 | "graceful-readlink": { 540 | "version": "1.0.1", 541 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 542 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", 543 | "dev": true 544 | }, 545 | "growl": { 546 | "version": "1.9.2", 547 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 548 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 549 | "dev": true 550 | }, 551 | "has-ansi": { 552 | "version": "2.0.0", 553 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 554 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" 555 | }, 556 | "has-flag": { 557 | "version": "1.0.0", 558 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 559 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 560 | "dev": true 561 | }, 562 | "has-symbol-support-x": { 563 | "version": "1.2.0", 564 | "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.2.0.tgz", 565 | "integrity": "sha1-5iTq1RkMNbNOTimTRN/2Q32wLOI=" 566 | }, 567 | "has-to-string-tag-x": { 568 | "version": "1.2.0", 569 | "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.2.0.tgz", 570 | "integrity": "sha1-xTbcTbvr4b6dKPYk/TIPeTEp/VM=" 571 | }, 572 | "hosted-git-info": { 573 | "version": "2.5.0", 574 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", 575 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" 576 | }, 577 | "iconv-lite": { 578 | "version": "0.4.18", 579 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", 580 | "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==" 581 | }, 582 | "ignore": { 583 | "version": "3.3.3", 584 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", 585 | "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", 586 | "dev": true 587 | }, 588 | "imurmurhash": { 589 | "version": "0.1.4", 590 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 591 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 592 | "dev": true 593 | }, 594 | "indent-string": { 595 | "version": "2.1.0", 596 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", 597 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=" 598 | }, 599 | "inflight": { 600 | "version": "1.0.6", 601 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 602 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 603 | "dev": true 604 | }, 605 | "inherits": { 606 | "version": "2.0.3", 607 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 608 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 609 | "dev": true 610 | }, 611 | "ini": { 612 | "version": "1.3.4", 613 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 614 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" 615 | }, 616 | "inquirer": { 617 | "version": "0.12.0", 618 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", 619 | "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", 620 | "dev": true 621 | }, 622 | "interpret": { 623 | "version": "1.0.3", 624 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", 625 | "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", 626 | "dev": true 627 | }, 628 | "is-arrayish": { 629 | "version": "0.3.1", 630 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.1.tgz", 631 | "integrity": "sha1-wt/DhquqDD4zxI2z/ocFnmkGXv0=" 632 | }, 633 | "is-builtin-module": { 634 | "version": "1.0.0", 635 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 636 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=" 637 | }, 638 | "is-finite": { 639 | "version": "1.0.2", 640 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 641 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=" 642 | }, 643 | "is-fullwidth-code-point": { 644 | "version": "1.0.0", 645 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 646 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 647 | "dev": true 648 | }, 649 | "is-my-json-valid": { 650 | "version": "2.16.0", 651 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", 652 | "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", 653 | "dev": true 654 | }, 655 | "is-object": { 656 | "version": "1.0.1", 657 | "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", 658 | "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" 659 | }, 660 | "is-path-cwd": { 661 | "version": "1.0.0", 662 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 663 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", 664 | "dev": true 665 | }, 666 | "is-path-in-cwd": { 667 | "version": "1.0.0", 668 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", 669 | "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", 670 | "dev": true 671 | }, 672 | "is-path-inside": { 673 | "version": "1.0.0", 674 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", 675 | "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", 676 | "dev": true 677 | }, 678 | "is-plain-obj": { 679 | "version": "1.1.0", 680 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 681 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" 682 | }, 683 | "is-property": { 684 | "version": "1.0.2", 685 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 686 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", 687 | "dev": true 688 | }, 689 | "is-resolvable": { 690 | "version": "1.0.0", 691 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", 692 | "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", 693 | "dev": true 694 | }, 695 | "is-retry-allowed": { 696 | "version": "1.1.0", 697 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", 698 | "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" 699 | }, 700 | "is-stream": { 701 | "version": "1.1.0", 702 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 703 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 704 | }, 705 | "is-utf8": { 706 | "version": "0.2.1", 707 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 708 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" 709 | }, 710 | "isarray": { 711 | "version": "1.0.0", 712 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 713 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 714 | "dev": true 715 | }, 716 | "isurl": { 717 | "version": "1.0.0-alpha6", 718 | "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0-alpha6.tgz", 719 | "integrity": "sha1-nfC4R3hmqkJdBGvo+7Qp5ktbiRU=" 720 | }, 721 | "js-tokens": { 722 | "version": "3.0.1", 723 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", 724 | "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=", 725 | "dev": true 726 | }, 727 | "js-yaml": { 728 | "version": "3.8.4", 729 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", 730 | "integrity": "sha1-UgtFZPhlc7qWZir4Woyvp7S1pvY=", 731 | "dev": true 732 | }, 733 | "json-stable-stringify": { 734 | "version": "1.0.1", 735 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 736 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 737 | "dev": true 738 | }, 739 | "json3": { 740 | "version": "3.3.2", 741 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", 742 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", 743 | "dev": true 744 | }, 745 | "jsonify": { 746 | "version": "0.0.0", 747 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 748 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 749 | "dev": true 750 | }, 751 | "jsonpointer": { 752 | "version": "4.0.1", 753 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", 754 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", 755 | "dev": true 756 | }, 757 | "levn": { 758 | "version": "0.3.0", 759 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 760 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 761 | "dev": true 762 | }, 763 | "load-json-file": { 764 | "version": "1.1.0", 765 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 766 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=" 767 | }, 768 | "lodash": { 769 | "version": "4.17.4", 770 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 771 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 772 | "dev": true 773 | }, 774 | "lodash._baseassign": { 775 | "version": "3.2.0", 776 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", 777 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", 778 | "dev": true 779 | }, 780 | "lodash._basecopy": { 781 | "version": "3.0.1", 782 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 783 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 784 | "dev": true 785 | }, 786 | "lodash._basecreate": { 787 | "version": "3.0.3", 788 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", 789 | "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", 790 | "dev": true 791 | }, 792 | "lodash._getnative": { 793 | "version": "3.9.1", 794 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 795 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 796 | "dev": true 797 | }, 798 | "lodash._isiterateecall": { 799 | "version": "3.0.9", 800 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 801 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 802 | "dev": true 803 | }, 804 | "lodash.create": { 805 | "version": "3.1.1", 806 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", 807 | "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", 808 | "dev": true 809 | }, 810 | "lodash.isarguments": { 811 | "version": "3.1.0", 812 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 813 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 814 | "dev": true 815 | }, 816 | "lodash.isarray": { 817 | "version": "3.0.4", 818 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 819 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 820 | "dev": true 821 | }, 822 | "lodash.keys": { 823 | "version": "3.1.2", 824 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 825 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 826 | "dev": true 827 | }, 828 | "loud-rejection": { 829 | "version": "1.6.0", 830 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", 831 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=" 832 | }, 833 | "lowercase-keys": { 834 | "version": "1.0.0", 835 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", 836 | "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" 837 | }, 838 | "lqip": { 839 | "version": "1.1.0", 840 | "resolved": "https://registry.npmjs.org/lqip/-/lqip-1.1.0.tgz", 841 | "integrity": "sha512-mhG18Z43Qc91u1ZtxMA9qKZnvRNPtmIQN+K9o+oc/Ar6aMjQVLJXxJ08jlN5AWk0Jw8UTJ5VkcM0lnMDwB/ffA==" 842 | }, 843 | "map-obj": { 844 | "version": "1.0.1", 845 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 846 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" 847 | }, 848 | "meow": { 849 | "version": "3.7.0", 850 | "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", 851 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=" 852 | }, 853 | "mimic-response": { 854 | "version": "1.0.0", 855 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz", 856 | "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=" 857 | }, 858 | "minimatch": { 859 | "version": "3.0.4", 860 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 861 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 862 | "dev": true 863 | }, 864 | "minimist": { 865 | "version": "1.2.0", 866 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 867 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 868 | }, 869 | "minipass": { 870 | "version": "2.1.1", 871 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.1.1.tgz", 872 | "integrity": "sha512-xZjdNWL+9Z5Ut0Ay+S/2JJranFcuJJMmXIRKbFEpzETZITghn5w3Gf524kwfrpB7Jm8QplXwKJnkDn/pdF3/7Q==" 873 | }, 874 | "minizlib": { 875 | "version": "1.0.3", 876 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.0.3.tgz", 877 | "integrity": "sha1-1cGr93vhVGGZUuJTM27Mq5sqMvU=" 878 | }, 879 | "mkdirp": { 880 | "version": "0.5.1", 881 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 882 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 883 | "dependencies": { 884 | "minimist": { 885 | "version": "0.0.8", 886 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 887 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 888 | } 889 | } 890 | }, 891 | "mocha": { 892 | "version": "3.4.2", 893 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", 894 | "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", 895 | "dev": true, 896 | "dependencies": { 897 | "debug": { 898 | "version": "2.6.0", 899 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", 900 | "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", 901 | "dev": true 902 | }, 903 | "glob": { 904 | "version": "7.1.1", 905 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", 906 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", 907 | "dev": true 908 | }, 909 | "ms": { 910 | "version": "0.7.2", 911 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 912 | "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", 913 | "dev": true 914 | }, 915 | "supports-color": { 916 | "version": "3.1.2", 917 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", 918 | "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", 919 | "dev": true 920 | } 921 | } 922 | }, 923 | "mock-fs": { 924 | "version": "4.4.1", 925 | "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.4.1.tgz", 926 | "integrity": "sha512-C8aapOvl77Bs18WCkejdLuX2kX8DaqaJ7ZmqUmX9U6HD2g31Pd0tZfNBAEVulmJWKyzUIyutrtxiIoNdXLAYsw==", 927 | "dev": true 928 | }, 929 | "ms": { 930 | "version": "2.0.0", 931 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 932 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 933 | "dev": true 934 | }, 935 | "mute-stream": { 936 | "version": "0.0.5", 937 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", 938 | "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", 939 | "dev": true 940 | }, 941 | "nan": { 942 | "version": "2.6.2", 943 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", 944 | "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" 945 | }, 946 | "natural-compare": { 947 | "version": "1.4.0", 948 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 949 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 950 | "dev": true 951 | }, 952 | "normalize-package-data": { 953 | "version": "2.4.0", 954 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 955 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==" 956 | }, 957 | "number-is-nan": { 958 | "version": "1.0.1", 959 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 960 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 961 | }, 962 | "object-assign": { 963 | "version": "4.1.1", 964 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 965 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 966 | }, 967 | "once": { 968 | "version": "1.4.0", 969 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 970 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 971 | "dev": true 972 | }, 973 | "onetime": { 974 | "version": "1.1.0", 975 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", 976 | "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", 977 | "dev": true 978 | }, 979 | "optionator": { 980 | "version": "0.8.2", 981 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 982 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 983 | "dev": true 984 | }, 985 | "os-homedir": { 986 | "version": "1.0.2", 987 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 988 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 989 | "dev": true 990 | }, 991 | "p-cancelable": { 992 | "version": "0.2.0", 993 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.2.0.tgz", 994 | "integrity": "sha1-MVL08wvnYGtg6/6LuTs/32kIXkY=" 995 | }, 996 | "p-timeout": { 997 | "version": "1.1.1", 998 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.1.1.tgz", 999 | "integrity": "sha1-0o6f35bjKIhvv/B4+IatFYxTv20=" 1000 | }, 1001 | "parse-json": { 1002 | "version": "2.2.0", 1003 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1004 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" 1005 | }, 1006 | "path-exists": { 1007 | "version": "2.1.0", 1008 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 1009 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" 1010 | }, 1011 | "path-is-absolute": { 1012 | "version": "1.0.1", 1013 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1014 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1015 | "dev": true 1016 | }, 1017 | "path-is-inside": { 1018 | "version": "1.0.2", 1019 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1020 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1021 | "dev": true 1022 | }, 1023 | "path-parse": { 1024 | "version": "1.0.5", 1025 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 1026 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 1027 | "dev": true 1028 | }, 1029 | "path-type": { 1030 | "version": "1.1.0", 1031 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 1032 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=" 1033 | }, 1034 | "pathval": { 1035 | "version": "1.1.0", 1036 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 1037 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", 1038 | "dev": true 1039 | }, 1040 | "pify": { 1041 | "version": "2.3.0", 1042 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1043 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" 1044 | }, 1045 | "pinkie": { 1046 | "version": "2.0.4", 1047 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1048 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" 1049 | }, 1050 | "pinkie-promise": { 1051 | "version": "2.0.1", 1052 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1053 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" 1054 | }, 1055 | "pluralize": { 1056 | "version": "1.2.1", 1057 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", 1058 | "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", 1059 | "dev": true 1060 | }, 1061 | "prelude-ls": { 1062 | "version": "1.1.2", 1063 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1064 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1065 | "dev": true 1066 | }, 1067 | "prepend-http": { 1068 | "version": "1.0.4", 1069 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", 1070 | "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" 1071 | }, 1072 | "process-nextick-args": { 1073 | "version": "1.0.7", 1074 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1075 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 1076 | "dev": true 1077 | }, 1078 | "progress": { 1079 | "version": "1.1.8", 1080 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 1081 | "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", 1082 | "dev": true 1083 | }, 1084 | "rc": { 1085 | "version": "1.2.1", 1086 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", 1087 | "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=" 1088 | }, 1089 | "read-pkg": { 1090 | "version": "1.1.0", 1091 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 1092 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=" 1093 | }, 1094 | "read-pkg-up": { 1095 | "version": "1.0.1", 1096 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 1097 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=" 1098 | }, 1099 | "readable-stream": { 1100 | "version": "2.3.2", 1101 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", 1102 | "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", 1103 | "dev": true 1104 | }, 1105 | "readline2": { 1106 | "version": "1.0.1", 1107 | "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", 1108 | "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", 1109 | "dev": true 1110 | }, 1111 | "rechoir": { 1112 | "version": "0.6.2", 1113 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 1114 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 1115 | "dev": true 1116 | }, 1117 | "redent": { 1118 | "version": "1.0.0", 1119 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", 1120 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=" 1121 | }, 1122 | "repeating": { 1123 | "version": "2.0.1", 1124 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 1125 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" 1126 | }, 1127 | "require-uncached": { 1128 | "version": "1.0.3", 1129 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 1130 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 1131 | "dev": true 1132 | }, 1133 | "resolve": { 1134 | "version": "1.3.3", 1135 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", 1136 | "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", 1137 | "dev": true 1138 | }, 1139 | "resolve-from": { 1140 | "version": "1.0.1", 1141 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 1142 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 1143 | "dev": true 1144 | }, 1145 | "restore-cursor": { 1146 | "version": "1.0.1", 1147 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", 1148 | "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", 1149 | "dev": true 1150 | }, 1151 | "rimraf": { 1152 | "version": "2.6.1", 1153 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", 1154 | "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", 1155 | "dev": true 1156 | }, 1157 | "run-async": { 1158 | "version": "0.1.0", 1159 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", 1160 | "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", 1161 | "dev": true 1162 | }, 1163 | "rx-lite": { 1164 | "version": "3.1.2", 1165 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", 1166 | "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", 1167 | "dev": true 1168 | }, 1169 | "safe-buffer": { 1170 | "version": "5.1.1", 1171 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1172 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" 1173 | }, 1174 | "semver": { 1175 | "version": "5.3.0", 1176 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 1177 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" 1178 | }, 1179 | "sharp": { 1180 | "version": "0.18.1", 1181 | "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.18.1.tgz", 1182 | "integrity": "sha1-MueSJtThPp3VJdBK4k/TZy+1/t0=" 1183 | }, 1184 | "shelljs": { 1185 | "version": "0.7.8", 1186 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", 1187 | "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", 1188 | "dev": true 1189 | }, 1190 | "signal-exit": { 1191 | "version": "3.0.2", 1192 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1193 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 1194 | }, 1195 | "simple-swizzle": { 1196 | "version": "0.2.2", 1197 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", 1198 | "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=" 1199 | }, 1200 | "slice-ansi": { 1201 | "version": "0.0.4", 1202 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 1203 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", 1204 | "dev": true 1205 | }, 1206 | "spdx-correct": { 1207 | "version": "1.0.2", 1208 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", 1209 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=" 1210 | }, 1211 | "spdx-expression-parse": { 1212 | "version": "1.0.4", 1213 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 1214 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" 1215 | }, 1216 | "spdx-license-ids": { 1217 | "version": "1.2.2", 1218 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 1219 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" 1220 | }, 1221 | "sprintf-js": { 1222 | "version": "1.0.3", 1223 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1224 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1225 | "dev": true 1226 | }, 1227 | "string_decoder": { 1228 | "version": "1.0.3", 1229 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1230 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 1231 | "dev": true 1232 | }, 1233 | "string-width": { 1234 | "version": "1.0.2", 1235 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1236 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1237 | "dev": true 1238 | }, 1239 | "strip-ansi": { 1240 | "version": "3.0.1", 1241 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1242 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" 1243 | }, 1244 | "strip-bom": { 1245 | "version": "2.0.0", 1246 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 1247 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=" 1248 | }, 1249 | "strip-indent": { 1250 | "version": "1.0.1", 1251 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", 1252 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=" 1253 | }, 1254 | "strip-json-comments": { 1255 | "version": "2.0.1", 1256 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1257 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 1258 | }, 1259 | "supports-color": { 1260 | "version": "2.0.0", 1261 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1262 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 1263 | }, 1264 | "sync-exec": { 1265 | "version": "0.6.2", 1266 | "resolved": "https://registry.npmjs.org/sync-exec/-/sync-exec-0.6.2.tgz", 1267 | "integrity": "sha1-cX0izFPwzh3vVZQ2LzqJouu5EQU=", 1268 | "optional": true 1269 | }, 1270 | "table": { 1271 | "version": "3.8.3", 1272 | "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", 1273 | "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", 1274 | "dev": true, 1275 | "dependencies": { 1276 | "ansi-regex": { 1277 | "version": "3.0.0", 1278 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1279 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1280 | "dev": true 1281 | }, 1282 | "is-fullwidth-code-point": { 1283 | "version": "2.0.0", 1284 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1285 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1286 | "dev": true 1287 | }, 1288 | "string-width": { 1289 | "version": "2.1.0", 1290 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", 1291 | "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", 1292 | "dev": true 1293 | }, 1294 | "strip-ansi": { 1295 | "version": "4.0.0", 1296 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1297 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1298 | "dev": true 1299 | } 1300 | } 1301 | }, 1302 | "tar": { 1303 | "version": "3.1.5", 1304 | "resolved": "https://registry.npmjs.org/tar/-/tar-3.1.5.tgz", 1305 | "integrity": "sha512-TKJKz1fqBOZBaIQ/MGRKU0EnTGmKMLy4ReTRgP10AgtfOWBbj9PBg4MgY80GFpqGbs2EzcIctW5gbwbP4woDYg==" 1306 | }, 1307 | "text-table": { 1308 | "version": "0.2.0", 1309 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1310 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1311 | "dev": true 1312 | }, 1313 | "through": { 1314 | "version": "2.3.8", 1315 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1316 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1317 | "dev": true 1318 | }, 1319 | "timed-out": { 1320 | "version": "4.0.1", 1321 | "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", 1322 | "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" 1323 | }, 1324 | "trim-newlines": { 1325 | "version": "1.0.0", 1326 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", 1327 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" 1328 | }, 1329 | "tryit": { 1330 | "version": "1.0.3", 1331 | "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", 1332 | "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", 1333 | "dev": true 1334 | }, 1335 | "tunnel-agent": { 1336 | "version": "0.4.3", 1337 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", 1338 | "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" 1339 | }, 1340 | "type-check": { 1341 | "version": "0.3.2", 1342 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1343 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1344 | "dev": true 1345 | }, 1346 | "type-detect": { 1347 | "version": "4.0.3", 1348 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", 1349 | "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", 1350 | "dev": true 1351 | }, 1352 | "typedarray": { 1353 | "version": "0.0.6", 1354 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1355 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 1356 | "dev": true 1357 | }, 1358 | "url-parse-lax": { 1359 | "version": "1.0.0", 1360 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", 1361 | "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=" 1362 | }, 1363 | "user-home": { 1364 | "version": "2.0.0", 1365 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", 1366 | "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", 1367 | "dev": true 1368 | }, 1369 | "util-deprecate": { 1370 | "version": "1.0.2", 1371 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1372 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1373 | "dev": true 1374 | }, 1375 | "validate-npm-package-license": { 1376 | "version": "3.0.1", 1377 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", 1378 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=" 1379 | }, 1380 | "wordwrap": { 1381 | "version": "1.0.0", 1382 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 1383 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 1384 | "dev": true 1385 | }, 1386 | "wrappy": { 1387 | "version": "1.0.2", 1388 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1389 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1390 | "dev": true 1391 | }, 1392 | "write": { 1393 | "version": "0.2.1", 1394 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 1395 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 1396 | "dev": true 1397 | }, 1398 | "xtend": { 1399 | "version": "4.0.1", 1400 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 1401 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 1402 | "dev": true 1403 | }, 1404 | "yallist": { 1405 | "version": "3.0.2", 1406 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", 1407 | "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=" 1408 | } 1409 | } 1410 | } 1411 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lqip-cli", 3 | "version": "0.2.2", 4 | "description": "CLI to generate Low Quality Image Placeholders (LQIP)", 5 | "main": "index.js", 6 | "bin": { 7 | "lqip": "index.js", 8 | "lqip-cli": "index.js" 9 | }, 10 | "engines": { 11 | "node": ">=6" 12 | }, 13 | "engineStrict": true, 14 | "files": [ 15 | "index.js" 16 | ], 17 | "scripts": { 18 | "test": "mocha" 19 | }, 20 | "repository": { 21 | "type": "git", 22 | "url": "git+https://github.com/zouhir/lqip-cli.git" 23 | }, 24 | "keywords": [ 25 | "lqip", 26 | "cli", 27 | "node", 28 | "nodecli", 29 | "images", 30 | "blur", 31 | "blurry", 32 | "webpack" 33 | ], 34 | "author": "Zouhir Chahoud", 35 | "license": "MIT", 36 | "bugs": { 37 | "url": "https://github.com/zouhir/lqip-cli/issues" 38 | }, 39 | "homepage": "https://github.com/zouhir/lqip-cli#readme", 40 | "dependencies": { 41 | "chalk": "^1.1.3", 42 | "copy-paste": "^1.3.0", 43 | "lqip": "^1.1.0", 44 | "meow": "^3.7.0", 45 | "sharp": "^0.18.1" 46 | }, 47 | "devDependencies": { 48 | "chai": "^4.0.2", 49 | "chai-as-promised": "^7.0.0", 50 | "mocha": "^3.4.2", 51 | "mock-fs": "^4.4.1" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | 3 | // files that are not found 4 | exports.notFound = dirs => { 5 | let notFound = []; 6 | dirs.forEach(dir => { 7 | if (!fs.existsSync(dir)) { 8 | notFound.push(dir); 9 | } 10 | }); 11 | return notFound; 12 | }; 13 | 14 | // proper error 15 | exports.fileNotFoundMessage = filesArr => { 16 | let message = `We have failed to locate ${filesArr.length} files please make sure \n`; 17 | filesArr.forEach(file => { 18 | message += `- ${file} \n`; 19 | }); 20 | message += `Are existing \n`; 21 | 22 | return message; 23 | }; 24 | -------------------------------------------------------------------------------- /test/img/riding-a-bike.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zouhir/lqip-cli/fbf2d313c950b4950bd218d97bfe67a300dfc85f/test/img/riding-a-bike.jpg -------------------------------------------------------------------------------- /test/utils.test.js: -------------------------------------------------------------------------------- 1 | const chai = require('chai'); 2 | const mockFiles = require('mock-fs'); 3 | const utils = require('../src/utils'); 4 | 5 | const expect = chai.expect; 6 | 7 | describe('Utils check for unfound files', () => { 8 | before(() => { 9 | mockFiles({ 10 | 'test/dir/images': { 11 | 'earth.png': new Buffer([8, 6, 7, 5, 3, 0, 9]), 12 | 'sky.jpeg': new Buffer([8, 6, 7, 5, 3, 0, 9]), 13 | 'air.jpg': new Buffer([8, 6, 7, 5, 3, 0, 9]), 14 | }, 15 | }); 16 | }); 17 | after(() => { 18 | mockFiles.restore(); 19 | }); 20 | 21 | it('Should find all files and return empty array as not found', () => { 22 | const files = [ 23 | 'test/dir/images/earth.png', 24 | 'test/dir/images/sky.jpeg', 25 | 'test/dir/images/air.jpg', 26 | ]; 27 | expect(utils.notFound(files).length).to.equal(0); 28 | }); 29 | 30 | it('Should find 1 missing image', () => { 31 | const files = [ 32 | 'test/dir/images/earth.png', 33 | 'test/dir/images/sky.jpeg', 34 | 'test/dir/images/air.jpg', 35 | 'test/dir/images/hello.jpg', 36 | ]; 37 | expect(utils.notFound(files).length).to.equal(1); 38 | expect(utils.notFound(files)[0]).to.equal('test/dir/images/hello.jpg'); 39 | }); 40 | 41 | it('Should generate a relevant message', () => { 42 | const files = [ 43 | 'test/dir/images/earth.png', 44 | 'test/dir/images/sky.jpeg', 45 | 'test/dir/images/air.jpg', 46 | 'test/dir/images/hello.jpg', 47 | ]; 48 | let notFound = utils.notFound(files); 49 | expect(utils.fileNotFoundMessage(notFound)).to.contain('failed to locate 1 files'); 50 | expect(utils.fileNotFoundMessage(notFound)).to.contain('- test/dir/images/hello.jpg'); 51 | }); 52 | }); --------------------------------------------------------------------------------