├── .gitignore ├── README.md ├── index.js ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | *.jpg 2 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DPlayer-thumbnails 2 | 3 | > Generate thumbnails for [DPlayer](https://github.com/MoePlayer/DPlayer) 4 | 5 | [![npm](https://img.shields.io/npm/v/dplayer-thumbnails.svg?style=flat-square)](https://www.npmjs.com/package/dplayer-thumbnails) 6 | [![npm](https://img.shields.io/npm/dt/dplayer-thumbnails.svg?style=flat-square)](https://www.npmjs.com/package/dplayer-thumbnails) 7 | [![dependency Status](https://img.shields.io/david/MoePlayer/DPlayer-thumbnails.svg?style=flat-square)](https://david-dm.org/MoePlayer/DPlayer-thumbnails#info=dependencies) 8 | 9 | ## Install 10 | 11 | ``` 12 | $ npm install -g dplayer-thumbnails 13 | ``` 14 | 15 | ## Usage 16 | ``` 17 | $ dplayer-thumbnails --help 18 | $ dplayer-thumbnails -o ./thumbnails.jpg -q 60 demo.mp4 19 | ``` 20 | 21 | ## Author 22 | 23 | **DPlayer-thumbnails** © [DIYgod](https://github.com/DIYgod), Released under the [MIT](./LICENSE) License.
24 | Authored and maintained by DIYgod with help from contributors ([list](https://github.com/DIYgod/DPlayer-thumbnails/contributors)). 25 | 26 | > Blog [@Anotherhome](https://www.anotherhome.net) · GitHub [@DIYgod](https://github.com/DIYgod) · Twitter [@DIYgod](https://twitter.com/DIYgod) · Telegram Channel [@awesomeDIYgod](https://t.me/awesomeDIYgod) -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var ffmpeg = require('fluent-ffmpeg'); 3 | var nsg = require('node-sprite-generator'); 4 | var Jimp = require('jimp'); 5 | var rm = require('rimraf'); 6 | var Spinner = require('cli-spinner').Spinner; 7 | var program = require('commander'); 8 | var os = require('os'); 9 | var spinner; 10 | 11 | function startSpinner (string, step) { 12 | spinner = new Spinner(`[${step}/3] %s ${string}...`); 13 | spinner.setSpinnerString('|/-\\'); 14 | spinner.start(); 15 | } 16 | 17 | var startTime = +new Date(); 18 | var tmp = os.tmpdir() + '/dplayer-thumbnails' 19 | 20 | program 21 | .version('0.0.5') 22 | .usage('[options] ') 23 | .option('-o, --output ', 'thumbnails path, default: ./thumbnails.jpg', './thumbnails.jpg') 24 | .option('-q, --quality ', 'thumbnails quality, default: 60', 60) 25 | .description('🎉 Generate thumbnails for DPlayer') 26 | .action(function (file) { 27 | startSpinner('Screenshots generating', 1); 28 | ffmpeg(file) 29 | .screenshots({ 30 | count: 100, 31 | folder: tmp, 32 | filename: 'screenshot%00i.png', 33 | size: '160x?' 34 | }) 35 | .on('end', function () { 36 | spinner.stop(true); 37 | console.log('[1/3] Screenshots generated!'); 38 | startSpinner('Sprite generating', 2); 39 | 40 | nsg({ 41 | src: [ 42 | tmp + '/*.png' 43 | ], 44 | spritePath: tmp + '/sprite.png', 45 | stylesheetPath: tmp + '/sprite.css', 46 | layout: 'horizontal', 47 | compositor: 'jimp' 48 | }, function (err) { 49 | spinner.stop(true); 50 | console.log('[2/3] Sprite generated!'); 51 | startSpinner('Compressing', 3); 52 | 53 | Jimp.read(tmp + '/sprite.png', function (err, lenna) { 54 | if (err) throw err; 55 | lenna.quality(parseInt(program.quality)) 56 | .write(program.output); 57 | rm(tmp, function () { 58 | spinner.stop(true); 59 | console.log('[3/3] Compressing complete!'); 60 | console.log(`✨ Done in ${(+new Date() - startTime) / 1000}s.`); 61 | }); 62 | }); 63 | }); 64 | }); 65 | }); 66 | 67 | program.parse(process.argv); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dplayer-thumbnails", 3 | "version": "0.0.5", 4 | "description": "Generate thumbnails for DPlayer", 5 | "main": "index.js", 6 | "devDependencies": {}, 7 | "dependencies": { 8 | "cli-spinner": "^0.2.6", 9 | "commander": "^2.11.0", 10 | "fluent-ffmpeg": "^2.1.2", 11 | "jimp": "^0.2.28", 12 | "node-sprite-generator": "^0.10.2", 13 | "rimraf": "^2.6.1" 14 | }, 15 | "scripts": { 16 | "test": "echo \"Error: no test specified\" && exit 1" 17 | }, 18 | "repository": { 19 | "type": "git", 20 | "url": "git+https://github.com/MoePlayer/DPlayer-thumbnails.git" 21 | }, 22 | "bin": { 23 | "dplayer-thumbnails": "./index.js" 24 | }, 25 | "keywords": [ 26 | "thumbnails", 27 | "player", 28 | "dplayer" 29 | ], 30 | "author": "DIYgod", 31 | "license": "MIT", 32 | "bugs": { 33 | "url": "https://github.com/MoePlayer/DPlayer-thumbnails/issues" 34 | }, 35 | "homepage": "https://github.com/MoePlayer/DPlayer-thumbnails#readme" 36 | } 37 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | ajv@^5.1.0: 6 | version "5.5.0" 7 | resolved "https://registry.npmjs.org/ajv/-/ajv-5.5.0.tgz#eb2840746e9dc48bd5e063a36e3fd400c5eab5a9" 8 | dependencies: 9 | co "^4.6.0" 10 | fast-deep-equal "^1.0.0" 11 | fast-json-stable-stringify "^2.0.0" 12 | json-schema-traverse "^0.3.0" 13 | 14 | array-parallel@~0.1.3: 15 | version "0.1.3" 16 | resolved "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz#8f785308926ed5aa478c47e64d1b334b6c0c947d" 17 | 18 | array-series@~0.1.5: 19 | version "0.1.5" 20 | resolved "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz#df5d37bfc5c2ef0755e2aa4f92feae7d4b5a972f" 21 | 22 | asn1@~0.2.3: 23 | version "0.2.3" 24 | resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 25 | 26 | assert-plus@1.0.0, assert-plus@^1.0.0: 27 | version "1.0.0" 28 | resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 29 | 30 | async@1.2.0: 31 | version "1.2.0" 32 | resolved "https://registry.npmjs.org/async/-/async-1.2.0.tgz#9029580f93d05a7cab24f502c84707ac3ef57b10" 33 | 34 | async@>=0.2.9: 35 | version "2.6.0" 36 | resolved "https://registry.npmjs.org/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" 37 | dependencies: 38 | lodash "^4.14.0" 39 | 40 | asynckit@^0.4.0: 41 | version "0.4.0" 42 | resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 43 | 44 | aws-sign2@~0.7.0: 45 | version "0.7.0" 46 | resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" 47 | 48 | aws4@^1.6.0: 49 | version "1.6.0" 50 | resolved "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 51 | 52 | balanced-match@^1.0.0: 53 | version "1.0.0" 54 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 55 | 56 | bcrypt-pbkdf@^1.0.0: 57 | version "1.0.1" 58 | resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 59 | dependencies: 60 | tweetnacl "^0.14.3" 61 | 62 | bignumber.js@^2.1.0: 63 | version "2.4.0" 64 | resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-2.4.0.tgz#838a992da9f9d737e0f4b2db0be62bb09dd0c5e8" 65 | 66 | bin-pack@1.0.1: 67 | version "1.0.1" 68 | resolved "https://registry.npmjs.org/bin-pack/-/bin-pack-1.0.1.tgz#556da38f866f2aebe56ecb45f42849b084b0c66f" 69 | 70 | bmp-js@0.0.1: 71 | version "0.0.1" 72 | resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.1.tgz#5ad0147099d13a9f38aa7b99af1d6e78666ed37f" 73 | 74 | bmp-js@0.0.3: 75 | version "0.0.3" 76 | resolved "https://registry.npmjs.org/bmp-js/-/bmp-js-0.0.3.tgz#64113e9c7cf1202b376ed607bf30626ebe57b18a" 77 | 78 | boom@4.x.x: 79 | version "4.3.1" 80 | resolved "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" 81 | dependencies: 82 | hoek "4.x.x" 83 | 84 | boom@5.x.x: 85 | version "5.2.0" 86 | resolved "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" 87 | dependencies: 88 | hoek "4.x.x" 89 | 90 | brace-expansion@^1.0.0, brace-expansion@^1.1.7: 91 | version "1.1.8" 92 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" 93 | dependencies: 94 | balanced-match "^1.0.0" 95 | concat-map "0.0.1" 96 | 97 | buffer-equal@0.0.1: 98 | version "0.0.1" 99 | resolved "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" 100 | 101 | canvas@1.3.12: 102 | version "1.3.12" 103 | resolved "https://registry.npmjs.org/canvas/-/canvas-1.3.12.tgz#0e6d7b78d6c9730cf1129d1138b28d6d52667e93" 104 | dependencies: 105 | nan "^2.1.0" 106 | 107 | caseless@~0.12.0: 108 | version "0.12.0" 109 | resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 110 | 111 | cli-spinner@^0.2.6: 112 | version "0.2.7" 113 | resolved "https://registry.npmjs.org/cli-spinner/-/cli-spinner-0.2.7.tgz#7f7868a6f52ed5a621d5169ced428b61847a97c7" 114 | 115 | co@^4.6.0: 116 | version "4.6.0" 117 | resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 118 | 119 | combined-stream@^1.0.5, combined-stream@~1.0.5: 120 | version "1.0.5" 121 | resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 122 | dependencies: 123 | delayed-stream "~1.0.0" 124 | 125 | commander@^2.11.0: 126 | version "2.12.2" 127 | resolved "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" 128 | 129 | concat-map@0.0.1: 130 | version "0.0.1" 131 | resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 132 | 133 | core-util-is@1.0.2: 134 | version "1.0.2" 135 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 136 | 137 | cryptiles@3.x.x: 138 | version "3.1.2" 139 | resolved "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" 140 | dependencies: 141 | boom "5.x.x" 142 | 143 | dashdash@^1.12.0: 144 | version "1.14.1" 145 | resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 146 | dependencies: 147 | assert-plus "^1.0.0" 148 | 149 | debug@~2.2.0: 150 | version "2.2.0" 151 | resolved "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 152 | dependencies: 153 | ms "0.7.1" 154 | 155 | delayed-stream@~1.0.0: 156 | version "1.0.0" 157 | resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 158 | 159 | dom-walk@^0.1.0: 160 | version "0.1.1" 161 | resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" 162 | 163 | ecc-jsbn@~0.1.1: 164 | version "0.1.1" 165 | resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 166 | dependencies: 167 | jsbn "~0.1.0" 168 | 169 | es6-promise@^3.0.2: 170 | version "3.3.1" 171 | resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" 172 | 173 | exif-parser@^0.1.9: 174 | version "0.1.12" 175 | resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" 176 | 177 | extend@~3.0.1: 178 | version "3.0.1" 179 | resolved "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" 180 | 181 | extsprintf@1.3.0: 182 | version "1.3.0" 183 | resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" 184 | 185 | extsprintf@^1.2.0: 186 | version "1.4.0" 187 | resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" 188 | 189 | fast-deep-equal@^1.0.0: 190 | version "1.0.0" 191 | resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" 192 | 193 | fast-json-stable-stringify@^2.0.0: 194 | version "2.0.0" 195 | resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 196 | 197 | file-type@^3.1.0: 198 | version "3.9.0" 199 | resolved "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" 200 | 201 | fluent-ffmpeg@^2.1.2: 202 | version "2.1.2" 203 | resolved "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz#c952de2240f812ebda0aa8006d7776ee2acf7d74" 204 | dependencies: 205 | async ">=0.2.9" 206 | which "^1.1.1" 207 | 208 | for-each@^0.3.2: 209 | version "0.3.2" 210 | resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" 211 | dependencies: 212 | is-function "~1.0.0" 213 | 214 | forever-agent@~0.6.1: 215 | version "0.6.1" 216 | resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 217 | 218 | form-data@~2.3.1: 219 | version "2.3.1" 220 | resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" 221 | dependencies: 222 | asynckit "^0.4.0" 223 | combined-stream "^1.0.5" 224 | mime-types "^2.1.12" 225 | 226 | fs.realpath@^1.0.0: 227 | version "1.0.0" 228 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 229 | 230 | getpass@^0.1.1: 231 | version "0.1.7" 232 | resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" 233 | dependencies: 234 | assert-plus "^1.0.0" 235 | 236 | glob@5.0.10: 237 | version "5.0.10" 238 | resolved "https://registry.npmjs.org/glob/-/glob-5.0.10.tgz#3ee350319f31f352cef6899a48f6b6b7834c6899" 239 | dependencies: 240 | inflight "^1.0.4" 241 | inherits "2" 242 | minimatch "^2.0.1" 243 | once "^1.3.0" 244 | path-is-absolute "^1.0.0" 245 | 246 | glob@^7.0.5: 247 | version "7.1.2" 248 | resolved "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 249 | dependencies: 250 | fs.realpath "^1.0.0" 251 | inflight "^1.0.4" 252 | inherits "2" 253 | minimatch "^3.0.4" 254 | once "^1.3.0" 255 | path-is-absolute "^1.0.0" 256 | 257 | global@~4.3.0: 258 | version "4.3.2" 259 | resolved "https://registry.npmjs.org/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" 260 | dependencies: 261 | min-document "^2.19.0" 262 | process "~0.5.1" 263 | 264 | gm@1.22.0: 265 | version "1.22.0" 266 | resolved "https://registry.npmjs.org/gm/-/gm-1.22.0.tgz#670bf3691ae9ae46cadf47012ea12ac40a8027c2" 267 | dependencies: 268 | array-parallel "~0.1.3" 269 | array-series "~0.1.5" 270 | debug "~2.2.0" 271 | 272 | har-schema@^2.0.0: 273 | version "2.0.0" 274 | resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" 275 | 276 | har-validator@~5.0.3: 277 | version "5.0.3" 278 | resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" 279 | dependencies: 280 | ajv "^5.1.0" 281 | har-schema "^2.0.0" 282 | 283 | hawk@~6.0.2: 284 | version "6.0.2" 285 | resolved "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" 286 | dependencies: 287 | boom "4.x.x" 288 | cryptiles "3.x.x" 289 | hoek "4.x.x" 290 | sntp "2.x.x" 291 | 292 | hoek@4.x.x: 293 | version "4.2.0" 294 | resolved "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" 295 | 296 | http-signature@~1.2.0: 297 | version "1.2.0" 298 | resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" 299 | dependencies: 300 | assert-plus "^1.0.0" 301 | jsprim "^1.2.2" 302 | sshpk "^1.7.0" 303 | 304 | inflight@^1.0.4: 305 | version "1.0.6" 306 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 307 | dependencies: 308 | once "^1.3.0" 309 | wrappy "1" 310 | 311 | inherits@2: 312 | version "2.0.3" 313 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 314 | 315 | ip-regex@^1.0.1: 316 | version "1.0.3" 317 | resolved "https://registry.npmjs.org/ip-regex/-/ip-regex-1.0.3.tgz#dc589076f659f419c222039a33316f1c7387effd" 318 | 319 | is-function@^1.0.1, is-function@~1.0.0: 320 | version "1.0.1" 321 | resolved "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz#12cfb98b65b57dd3d193a3121f5f6e2f437602b5" 322 | 323 | is-typedarray@~1.0.0: 324 | version "1.0.0" 325 | resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 326 | 327 | isexe@^2.0.0: 328 | version "2.0.0" 329 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 330 | 331 | isstream@~0.1.2: 332 | version "0.1.2" 333 | resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 334 | 335 | jimp@0.2.21: 336 | version "0.2.21" 337 | resolved "https://registry.npmjs.org/jimp/-/jimp-0.2.21.tgz#5122960cd5d5bc4196a85345f66a33b7daee4eb3" 338 | dependencies: 339 | bignumber.js "^2.1.0" 340 | bmp-js "0.0.1" 341 | es6-promise "^3.0.2" 342 | exif-parser "^0.1.9" 343 | file-type "^3.1.0" 344 | jpeg-js "^0.1.1" 345 | mime "^1.3.4" 346 | pixelmatch "^4.0.0" 347 | pngjs "^2.1.0" 348 | read-chunk "^1.0.1" 349 | request "^2.65.0" 350 | stream-to-buffer "^0.1.0" 351 | tinycolor2 "^1.1.2" 352 | url-regex "^3.0.0" 353 | 354 | jimp@^0.2.28: 355 | version "0.2.28" 356 | resolved "https://registry.npmjs.org/jimp/-/jimp-0.2.28.tgz#dd529a937190f42957a7937d1acc3a7762996ea2" 357 | dependencies: 358 | bignumber.js "^2.1.0" 359 | bmp-js "0.0.3" 360 | es6-promise "^3.0.2" 361 | exif-parser "^0.1.9" 362 | file-type "^3.1.0" 363 | jpeg-js "^0.2.0" 364 | load-bmfont "^1.2.3" 365 | mime "^1.3.4" 366 | mkdirp "0.5.1" 367 | pixelmatch "^4.0.0" 368 | pngjs "^3.0.0" 369 | read-chunk "^1.0.1" 370 | request "^2.65.0" 371 | stream-to-buffer "^0.1.0" 372 | tinycolor2 "^1.1.2" 373 | url-regex "^3.0.0" 374 | 375 | jpeg-js@^0.1.1: 376 | version "0.1.2" 377 | resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.1.2.tgz#135b992c0575c985cfa0f494a3227ed238583ece" 378 | 379 | jpeg-js@^0.2.0: 380 | version "0.2.0" 381 | resolved "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.2.0.tgz#53e448ec9d263e683266467e9442d2c5a2ef5482" 382 | 383 | jsbn@~0.1.0: 384 | version "0.1.1" 385 | resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 386 | 387 | json-schema-traverse@^0.3.0: 388 | version "0.3.1" 389 | resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" 390 | 391 | json-schema@0.2.3: 392 | version "0.2.3" 393 | resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 394 | 395 | json-stringify-safe@~5.0.1: 396 | version "5.0.1" 397 | resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 398 | 399 | jsprim@^1.2.2: 400 | version "1.4.1" 401 | resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" 402 | dependencies: 403 | assert-plus "1.0.0" 404 | extsprintf "1.3.0" 405 | json-schema "0.2.3" 406 | verror "1.10.0" 407 | 408 | load-bmfont@^1.2.3: 409 | version "1.3.0" 410 | resolved "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.3.0.tgz#bb7e7c710de6bcafcb13cb3b8c81e0c0131ecbc9" 411 | dependencies: 412 | buffer-equal "0.0.1" 413 | mime "^1.3.4" 414 | parse-bmfont-ascii "^1.0.3" 415 | parse-bmfont-binary "^1.0.5" 416 | parse-bmfont-xml "^1.1.0" 417 | xhr "^2.0.1" 418 | xtend "^4.0.0" 419 | 420 | lodash@^4.14.0: 421 | version "4.17.4" 422 | resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 423 | 424 | mime-db@~1.30.0: 425 | version "1.30.0" 426 | resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" 427 | 428 | mime-types@^2.1.12, mime-types@~2.1.17: 429 | version "2.1.17" 430 | resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" 431 | dependencies: 432 | mime-db "~1.30.0" 433 | 434 | mime@^1.3.4: 435 | version "1.6.0" 436 | resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" 437 | 438 | min-document@^2.19.0: 439 | version "2.19.0" 440 | resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" 441 | dependencies: 442 | dom-walk "^0.1.0" 443 | 444 | minimatch@^2.0.1: 445 | version "2.0.10" 446 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" 447 | dependencies: 448 | brace-expansion "^1.0.0" 449 | 450 | minimatch@^3.0.4: 451 | version "3.0.4" 452 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 453 | dependencies: 454 | brace-expansion "^1.1.7" 455 | 456 | minimist@0.0.8: 457 | version "0.0.8" 458 | resolved "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 459 | 460 | mkdirp@0.5.1: 461 | version "0.5.1" 462 | resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 463 | dependencies: 464 | minimist "0.0.8" 465 | 466 | ms@0.7.1: 467 | version "0.7.1" 468 | resolved "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 469 | 470 | nan@^2.1.0: 471 | version "2.8.0" 472 | resolved "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" 473 | 474 | node-sprite-generator@^0.10.2: 475 | version "0.10.2" 476 | resolved "https://registry.npmjs.org/node-sprite-generator/-/node-sprite-generator-0.10.2.tgz#804e9020b93bd8decca10855c609f43de5db7fc2" 477 | dependencies: 478 | async "1.2.0" 479 | bin-pack "1.0.1" 480 | glob "5.0.10" 481 | jimp "0.2.21" 482 | mkdirp "0.5.1" 483 | underscore "1.8.3" 484 | optionalDependencies: 485 | canvas "1.3.12" 486 | gm "1.22.0" 487 | 488 | oauth-sign@~0.8.2: 489 | version "0.8.2" 490 | resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 491 | 492 | once@^1.3.0: 493 | version "1.4.0" 494 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 495 | dependencies: 496 | wrappy "1" 497 | 498 | parse-bmfont-ascii@^1.0.3: 499 | version "1.0.6" 500 | resolved "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" 501 | 502 | parse-bmfont-binary@^1.0.5: 503 | version "1.0.6" 504 | resolved "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" 505 | 506 | parse-bmfont-xml@^1.1.0: 507 | version "1.1.3" 508 | resolved "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.3.tgz#d6b66a371afd39c5007d9f0eeb262a4f2cce7b7c" 509 | dependencies: 510 | xml-parse-from-string "^1.0.0" 511 | xml2js "^0.4.5" 512 | 513 | parse-headers@^2.0.0: 514 | version "2.0.1" 515 | resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz#6ae83a7aa25a9d9b700acc28698cd1f1ed7e9536" 516 | dependencies: 517 | for-each "^0.3.2" 518 | trim "0.0.1" 519 | 520 | path-is-absolute@^1.0.0: 521 | version "1.0.1" 522 | resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 523 | 524 | performance-now@^2.1.0: 525 | version "2.1.0" 526 | resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" 527 | 528 | pixelmatch@^4.0.0: 529 | version "4.0.2" 530 | resolved "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" 531 | dependencies: 532 | pngjs "^3.0.0" 533 | 534 | pngjs@^2.1.0: 535 | version "2.3.1" 536 | resolved "https://registry.npmjs.org/pngjs/-/pngjs-2.3.1.tgz#11d1e12b9cb64d63e30c143a330f4c1f567da85f" 537 | 538 | pngjs@^3.0.0: 539 | version "3.3.1" 540 | resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.3.1.tgz#8e14e6679ee7424b544334c3b2d21cea6d8c209a" 541 | 542 | process@~0.5.1: 543 | version "0.5.2" 544 | resolved "https://registry.npmjs.org/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" 545 | 546 | punycode@^1.4.1: 547 | version "1.4.1" 548 | resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 549 | 550 | qs@~6.5.1: 551 | version "6.5.1" 552 | resolved "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" 553 | 554 | read-chunk@^1.0.1: 555 | version "1.0.1" 556 | resolved "https://registry.npmjs.org/read-chunk/-/read-chunk-1.0.1.tgz#5f68cab307e663f19993527d9b589cace4661194" 557 | 558 | request@^2.65.0: 559 | version "2.83.0" 560 | resolved "https://registry.npmjs.org/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" 561 | dependencies: 562 | aws-sign2 "~0.7.0" 563 | aws4 "^1.6.0" 564 | caseless "~0.12.0" 565 | combined-stream "~1.0.5" 566 | extend "~3.0.1" 567 | forever-agent "~0.6.1" 568 | form-data "~2.3.1" 569 | har-validator "~5.0.3" 570 | hawk "~6.0.2" 571 | http-signature "~1.2.0" 572 | is-typedarray "~1.0.0" 573 | isstream "~0.1.2" 574 | json-stringify-safe "~5.0.1" 575 | mime-types "~2.1.17" 576 | oauth-sign "~0.8.2" 577 | performance-now "^2.1.0" 578 | qs "~6.5.1" 579 | safe-buffer "^5.1.1" 580 | stringstream "~0.0.5" 581 | tough-cookie "~2.3.3" 582 | tunnel-agent "^0.6.0" 583 | uuid "^3.1.0" 584 | 585 | rimraf@^2.6.1: 586 | version "2.6.2" 587 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" 588 | dependencies: 589 | glob "^7.0.5" 590 | 591 | safe-buffer@^5.0.1, safe-buffer@^5.1.1: 592 | version "5.1.1" 593 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" 594 | 595 | sax@>=0.6.0: 596 | version "1.2.4" 597 | resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" 598 | 599 | sntp@2.x.x: 600 | version "2.1.0" 601 | resolved "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" 602 | dependencies: 603 | hoek "4.x.x" 604 | 605 | sshpk@^1.7.0: 606 | version "1.13.1" 607 | resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" 608 | dependencies: 609 | asn1 "~0.2.3" 610 | assert-plus "^1.0.0" 611 | dashdash "^1.12.0" 612 | getpass "^0.1.1" 613 | optionalDependencies: 614 | bcrypt-pbkdf "^1.0.0" 615 | ecc-jsbn "~0.1.1" 616 | jsbn "~0.1.0" 617 | tweetnacl "~0.14.0" 618 | 619 | stream-to-buffer@^0.1.0: 620 | version "0.1.0" 621 | resolved "https://registry.npmjs.org/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz#26799d903ab2025c9bd550ac47171b00f8dd80a9" 622 | dependencies: 623 | stream-to "~0.2.0" 624 | 625 | stream-to@~0.2.0: 626 | version "0.2.2" 627 | resolved "https://registry.npmjs.org/stream-to/-/stream-to-0.2.2.tgz#84306098d85fdb990b9fa300b1b3ccf55e8ef01d" 628 | 629 | stringstream@~0.0.5: 630 | version "0.0.5" 631 | resolved "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 632 | 633 | tinycolor2@^1.1.2: 634 | version "1.4.1" 635 | resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" 636 | 637 | tough-cookie@~2.3.3: 638 | version "2.3.3" 639 | resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" 640 | dependencies: 641 | punycode "^1.4.1" 642 | 643 | trim@0.0.1: 644 | version "0.0.1" 645 | resolved "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" 646 | 647 | tunnel-agent@^0.6.0: 648 | version "0.6.0" 649 | resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 650 | dependencies: 651 | safe-buffer "^5.0.1" 652 | 653 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 654 | version "0.14.5" 655 | resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 656 | 657 | underscore@1.8.3: 658 | version "1.8.3" 659 | resolved "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" 660 | 661 | url-regex@^3.0.0: 662 | version "3.2.0" 663 | resolved "https://registry.npmjs.org/url-regex/-/url-regex-3.2.0.tgz#dbad1e0c9e29e105dd0b1f09f6862f7fdb482724" 664 | dependencies: 665 | ip-regex "^1.0.1" 666 | 667 | uuid@^3.1.0: 668 | version "3.1.0" 669 | resolved "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" 670 | 671 | verror@1.10.0: 672 | version "1.10.0" 673 | resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" 674 | dependencies: 675 | assert-plus "^1.0.0" 676 | core-util-is "1.0.2" 677 | extsprintf "^1.2.0" 678 | 679 | which@^1.1.1: 680 | version "1.3.0" 681 | resolved "https://registry.npmjs.org/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 682 | dependencies: 683 | isexe "^2.0.0" 684 | 685 | wrappy@1: 686 | version "1.0.2" 687 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 688 | 689 | xhr@^2.0.1: 690 | version "2.4.0" 691 | resolved "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz#e16e66a45f869861eeefab416d5eff722dc40993" 692 | dependencies: 693 | global "~4.3.0" 694 | is-function "^1.0.1" 695 | parse-headers "^2.0.0" 696 | xtend "^4.0.0" 697 | 698 | xml-parse-from-string@^1.0.0: 699 | version "1.0.1" 700 | resolved "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" 701 | 702 | xml2js@^0.4.5: 703 | version "0.4.19" 704 | resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7" 705 | dependencies: 706 | sax ">=0.6.0" 707 | xmlbuilder "~9.0.1" 708 | 709 | xmlbuilder@~9.0.1: 710 | version "9.0.4" 711 | resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.4.tgz#519cb4ca686d005a8420d3496f3f0caeecca580f" 712 | 713 | xtend@^4.0.0: 714 | version "4.0.1" 715 | resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 716 | --------------------------------------------------------------------------------