├── .babelrc ├── .circleci └── config.yml ├── .eslintrc.json ├── .gitignore ├── .npmignore ├── README.md ├── package-lock.json ├── package.json ├── sample ├── client.js ├── server-with-middleware.js └── server.js ├── src ├── error.js ├── index.js └── main.js └── test ├── disconnect.js ├── error.js ├── exports.js ├── helper.js ├── request_response.js ├── request_response_error.js └── timeout.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ "es2015", "stage-0" ] 3 | } -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: circleci/node:10.4.0 6 | working_directory: ~/app 7 | steps: 8 | - run: 'node -v' 9 | - run: 'npm -v' 10 | - checkout 11 | - run: 'npm ci' 12 | - run: 'npm run build' 13 | - run: 14 | command: 'npm run test:standard' 15 | when: always 16 | - run: 17 | command: 'npm run test:mocha' 18 | when: always 19 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["eslint:recommended"], 3 | "parser": "babel-eslint", 4 | "env":{ 5 | "node": true, 6 | "browser": true, 7 | "es6": true 8 | }, 9 | "plugins":[ 10 | ], 11 | "rules":{ 12 | "strict": [2, "global"], 13 | "semi": 2, 14 | "new-cap": 0, 15 | "comma-spacing": [2, {"before": false, "after": true}], 16 | "no-unused-vars": [1, {"args": "none"}], 17 | "no-constant-condition": 0, 18 | "no-shadow": 0, 19 | "no-loop-func": 0, 20 | "curly": 0, 21 | "no-constant-condition": 1, 22 | "no-console": 1 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *#* 3 | .DS_Store 4 | node_modules/ 5 | *.log 6 | *.log.* 7 | lib/ 8 | tmp/ 9 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | src/ 2 | test/ 3 | samples/ 4 | tmp/ 5 | package-lock.json 6 | circle.yml 7 | .babelrc 8 | .eslintrc.json 9 | *.log 10 | *.log.* 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # socket.io-request 2 | 3 | bidirectional request-response for socket.io 4 | 5 | - https://github.com/shokai/socket.io-request 6 | - https://npmjs.com/package/socket.io-request 7 | 8 | [![Circle CI](https://circleci.com/gh/shokai/socket.io-request.svg?style=svg)](https://circleci.com/gh/shokai/socket.io-request) 9 | 10 | ## Feature 11 | Of cource, Socket.IO's `emit` and `on` have request-response. This library adds some features. 12 | 13 | - Promise interface 14 | - Exception handling 15 | - `timeout` 16 | - `disconnect` 17 | 18 | 19 | ## Install 20 | 21 | % npm install socket.io-request -save 22 | 23 | ## Methods 24 | 25 | - `request("method", data)` return `Promise` 26 | - `response("method", handler)` 27 | 28 | 29 | ## Usage 30 | 31 | ### request from Client to Server 32 | 33 | client 34 | 35 | ```javascript 36 | var ioreq = require("socket.io-request"); 37 | var io = require("socket.io-client")("http://localhost:3000"); 38 | 39 | io.on("connect", function(){ 40 | ioreq(io).request("toUpper", "hello world") // method, data 41 | .then(function(res){ 42 | console.log(res); // get "HELLO WORLD" 43 | }) 44 | .catch(function(err){ 45 | console.error(err.stack || err); 46 | }); 47 | }); 48 | ``` 49 | 50 | server 51 | 52 | ```javascript 53 | var ioreq = require("socket.io-request"); 54 | var io = require("socket.io")(3000); 55 | 56 | io.on("connection", function(socket){ // new client 57 | ioreq(socket).response("toUpper", function(req, res){ // method, handler 58 | res(req.toUpperCase()); // return to client 59 | }); 60 | }); 61 | ``` 62 | 63 | 64 | ### request from Server to Client 65 | 66 | server 67 | 68 | ```javascript 69 | var ioreq = require("socket.io-request"); 70 | var io = require("socket.io")(3000); 71 | 72 | io.on("connection", function(socket){ // new client 73 | ioreq(io).request("windowSize") 74 | .then(function(res){ 75 | console.log(res); // get {height: 528, width: 924} 76 | }); 77 | }); 78 | ``` 79 | 80 | client (web browser) 81 | 82 | ```javascript 83 | var ioreq = require("socket.io-request"); 84 | var io = require("socket.io-client")("http://localhost:3000"); 85 | 86 | io.on("connect", function(){ 87 | ioreq(io).response("windowSize", function(req, res){ 88 | res({ 89 | height: window.innerHeight, 90 | width: window.innerWidth 91 | }); // return to server 92 | }); 93 | }); 94 | ``` 95 | 96 | ### Error handling 97 | 98 | `res.error` returns error object to requester. 99 | 100 | ```javascript 101 | ioreq(io).response("foo", function(req, res){ 102 | if(typeof req !== "string") return res.error(new Error("request is not String")); 103 | res("foo!" + req); 104 | }); 105 | ``` 106 | 107 | ```javascript 108 | ioreq(io).request("foo", 123) 109 | .then(function(res){ 110 | console.log(res); 111 | }) 112 | .catch(function(err){ 113 | console.error(err); // => "[Error: request is not String]" 114 | }); 115 | ``` 116 | 117 | 118 | ### Options 119 | 120 | ```javascript 121 | var options = { 122 | event: "socket.io-request", // event name on socket.io 123 | timeout: 90000 // request timeout (msec) 124 | }; 125 | 126 | ioreq(io, options).request("foo"); 127 | ``` 128 | 129 | ## Async-Await 130 | 131 | Using [async-await syntax](https://github.com/tc39/ecmascript-asyncawait), you can write like below. 132 | 133 | ```javascript 134 | async () => { 135 | const res = await ioreq(io).request("hello"); 136 | }; 137 | ``` 138 | 139 | 140 | ## Samples 141 | 142 | in `./sample` directory. 143 | 144 | 145 | ## Develop 146 | 147 | % npm i 148 | % npm run build 149 | % npm test 150 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "socket.io-request", 3 | "version": "0.8.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.3", 9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", 10 | "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", 11 | "dev": true, 12 | "requires": { 13 | "mime-types": "~2.1.11", 14 | "negotiator": "0.6.1" 15 | } 16 | }, 17 | "acorn": { 18 | "version": "5.1.1", 19 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", 20 | "integrity": "sha512-vOk6uEMctu0vQrvuSqFdJyqj1Q0S5VTDL79qtjo+DhRr+1mmaD+tluFSCZqhvi/JUhXSzoZN2BhtstaPEeE8cw==", 21 | "dev": true 22 | }, 23 | "acorn-jsx": { 24 | "version": "3.0.1", 25 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 26 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 27 | "dev": true, 28 | "requires": { 29 | "acorn": "^3.0.4" 30 | }, 31 | "dependencies": { 32 | "acorn": { 33 | "version": "3.3.0", 34 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 35 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 36 | "dev": true 37 | } 38 | } 39 | }, 40 | "after": { 41 | "version": "0.8.2", 42 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", 43 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", 44 | "dev": true 45 | }, 46 | "ajv": { 47 | "version": "4.11.8", 48 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", 49 | "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", 50 | "dev": true, 51 | "requires": { 52 | "co": "^4.6.0", 53 | "json-stable-stringify": "^1.0.1" 54 | } 55 | }, 56 | "ajv-keywords": { 57 | "version": "1.5.1", 58 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", 59 | "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", 60 | "dev": true 61 | }, 62 | "ansi-escapes": { 63 | "version": "1.4.0", 64 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", 65 | "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", 66 | "dev": true 67 | }, 68 | "ansi-regex": { 69 | "version": "2.1.1", 70 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 71 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 72 | "dev": true 73 | }, 74 | "ansi-styles": { 75 | "version": "2.2.1", 76 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 77 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 78 | "dev": true 79 | }, 80 | "anymatch": { 81 | "version": "1.3.2", 82 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", 83 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", 84 | "dev": true, 85 | "optional": true, 86 | "requires": { 87 | "micromatch": "^2.1.5", 88 | "normalize-path": "^2.0.0" 89 | } 90 | }, 91 | "argparse": { 92 | "version": "1.0.9", 93 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 94 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 95 | "dev": true, 96 | "requires": { 97 | "sprintf-js": "~1.0.2" 98 | } 99 | }, 100 | "arr-diff": { 101 | "version": "2.0.0", 102 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 103 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 104 | "dev": true, 105 | "optional": true, 106 | "requires": { 107 | "arr-flatten": "^1.0.1" 108 | } 109 | }, 110 | "arr-flatten": { 111 | "version": "1.1.0", 112 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 113 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 114 | "dev": true, 115 | "optional": true 116 | }, 117 | "array-filter": { 118 | "version": "0.0.1", 119 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", 120 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", 121 | "dev": true 122 | }, 123 | "array-map": { 124 | "version": "0.0.0", 125 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", 126 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", 127 | "dev": true 128 | }, 129 | "array-reduce": { 130 | "version": "0.0.0", 131 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", 132 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", 133 | "dev": true 134 | }, 135 | "array-union": { 136 | "version": "1.0.2", 137 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 138 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 139 | "dev": true, 140 | "requires": { 141 | "array-uniq": "^1.0.1" 142 | } 143 | }, 144 | "array-uniq": { 145 | "version": "1.0.3", 146 | "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 147 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 148 | "dev": true 149 | }, 150 | "array-unique": { 151 | "version": "0.2.1", 152 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 153 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 154 | "dev": true, 155 | "optional": true 156 | }, 157 | "array.prototype.find": { 158 | "version": "2.0.4", 159 | "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", 160 | "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", 161 | "dev": true, 162 | "requires": { 163 | "define-properties": "^1.1.2", 164 | "es-abstract": "^1.7.0" 165 | } 166 | }, 167 | "arraybuffer.slice": { 168 | "version": "0.0.6", 169 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", 170 | "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", 171 | "dev": true 172 | }, 173 | "arrify": { 174 | "version": "1.0.1", 175 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 176 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 177 | "dev": true 178 | }, 179 | "assertion-error": { 180 | "version": "1.0.2", 181 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", 182 | "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", 183 | "dev": true 184 | }, 185 | "async-each": { 186 | "version": "1.0.1", 187 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 188 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 189 | "dev": true, 190 | "optional": true 191 | }, 192 | "babel-cli": { 193 | "version": "6.26.0", 194 | "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", 195 | "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", 196 | "dev": true, 197 | "requires": { 198 | "babel-core": "^6.26.0", 199 | "babel-polyfill": "^6.26.0", 200 | "babel-register": "^6.26.0", 201 | "babel-runtime": "^6.26.0", 202 | "chokidar": "^1.6.1", 203 | "commander": "^2.11.0", 204 | "convert-source-map": "^1.5.0", 205 | "fs-readdir-recursive": "^1.0.0", 206 | "glob": "^7.1.2", 207 | "lodash": "^4.17.4", 208 | "output-file-sync": "^1.1.2", 209 | "path-is-absolute": "^1.0.1", 210 | "slash": "^1.0.0", 211 | "source-map": "^0.5.6", 212 | "v8flags": "^2.1.1" 213 | } 214 | }, 215 | "babel-code-frame": { 216 | "version": "6.26.0", 217 | "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", 218 | "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", 219 | "dev": true, 220 | "requires": { 221 | "chalk": "^1.1.3", 222 | "esutils": "^2.0.2", 223 | "js-tokens": "^3.0.2" 224 | } 225 | }, 226 | "babel-core": { 227 | "version": "6.26.0", 228 | "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", 229 | "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", 230 | "dev": true, 231 | "requires": { 232 | "babel-code-frame": "^6.26.0", 233 | "babel-generator": "^6.26.0", 234 | "babel-helpers": "^6.24.1", 235 | "babel-messages": "^6.23.0", 236 | "babel-register": "^6.26.0", 237 | "babel-runtime": "^6.26.0", 238 | "babel-template": "^6.26.0", 239 | "babel-traverse": "^6.26.0", 240 | "babel-types": "^6.26.0", 241 | "babylon": "^6.18.0", 242 | "convert-source-map": "^1.5.0", 243 | "debug": "^2.6.8", 244 | "json5": "^0.5.1", 245 | "lodash": "^4.17.4", 246 | "minimatch": "^3.0.4", 247 | "path-is-absolute": "^1.0.1", 248 | "private": "^0.1.7", 249 | "slash": "^1.0.0", 250 | "source-map": "^0.5.6" 251 | } 252 | }, 253 | "babel-generator": { 254 | "version": "6.26.0", 255 | "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", 256 | "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", 257 | "dev": true, 258 | "requires": { 259 | "babel-messages": "^6.23.0", 260 | "babel-runtime": "^6.26.0", 261 | "babel-types": "^6.26.0", 262 | "detect-indent": "^4.0.0", 263 | "jsesc": "^1.3.0", 264 | "lodash": "^4.17.4", 265 | "source-map": "^0.5.6", 266 | "trim-right": "^1.0.1" 267 | } 268 | }, 269 | "babel-helper-bindify-decorators": { 270 | "version": "6.24.1", 271 | "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", 272 | "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", 273 | "dev": true, 274 | "requires": { 275 | "babel-runtime": "^6.22.0", 276 | "babel-traverse": "^6.24.1", 277 | "babel-types": "^6.24.1" 278 | } 279 | }, 280 | "babel-helper-builder-binary-assignment-operator-visitor": { 281 | "version": "6.24.1", 282 | "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", 283 | "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", 284 | "dev": true, 285 | "requires": { 286 | "babel-helper-explode-assignable-expression": "^6.24.1", 287 | "babel-runtime": "^6.22.0", 288 | "babel-types": "^6.24.1" 289 | } 290 | }, 291 | "babel-helper-call-delegate": { 292 | "version": "6.24.1", 293 | "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", 294 | "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", 295 | "dev": true, 296 | "requires": { 297 | "babel-helper-hoist-variables": "^6.24.1", 298 | "babel-runtime": "^6.22.0", 299 | "babel-traverse": "^6.24.1", 300 | "babel-types": "^6.24.1" 301 | } 302 | }, 303 | "babel-helper-define-map": { 304 | "version": "6.26.0", 305 | "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", 306 | "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", 307 | "dev": true, 308 | "requires": { 309 | "babel-helper-function-name": "^6.24.1", 310 | "babel-runtime": "^6.26.0", 311 | "babel-types": "^6.26.0", 312 | "lodash": "^4.17.4" 313 | } 314 | }, 315 | "babel-helper-explode-assignable-expression": { 316 | "version": "6.24.1", 317 | "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", 318 | "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", 319 | "dev": true, 320 | "requires": { 321 | "babel-runtime": "^6.22.0", 322 | "babel-traverse": "^6.24.1", 323 | "babel-types": "^6.24.1" 324 | } 325 | }, 326 | "babel-helper-explode-class": { 327 | "version": "6.24.1", 328 | "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", 329 | "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", 330 | "dev": true, 331 | "requires": { 332 | "babel-helper-bindify-decorators": "^6.24.1", 333 | "babel-runtime": "^6.22.0", 334 | "babel-traverse": "^6.24.1", 335 | "babel-types": "^6.24.1" 336 | } 337 | }, 338 | "babel-helper-function-name": { 339 | "version": "6.24.1", 340 | "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", 341 | "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", 342 | "dev": true, 343 | "requires": { 344 | "babel-helper-get-function-arity": "^6.24.1", 345 | "babel-runtime": "^6.22.0", 346 | "babel-template": "^6.24.1", 347 | "babel-traverse": "^6.24.1", 348 | "babel-types": "^6.24.1" 349 | } 350 | }, 351 | "babel-helper-get-function-arity": { 352 | "version": "6.24.1", 353 | "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", 354 | "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", 355 | "dev": true, 356 | "requires": { 357 | "babel-runtime": "^6.22.0", 358 | "babel-types": "^6.24.1" 359 | } 360 | }, 361 | "babel-helper-hoist-variables": { 362 | "version": "6.24.1", 363 | "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", 364 | "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", 365 | "dev": true, 366 | "requires": { 367 | "babel-runtime": "^6.22.0", 368 | "babel-types": "^6.24.1" 369 | } 370 | }, 371 | "babel-helper-optimise-call-expression": { 372 | "version": "6.24.1", 373 | "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", 374 | "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", 375 | "dev": true, 376 | "requires": { 377 | "babel-runtime": "^6.22.0", 378 | "babel-types": "^6.24.1" 379 | } 380 | }, 381 | "babel-helper-regex": { 382 | "version": "6.26.0", 383 | "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", 384 | "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", 385 | "dev": true, 386 | "requires": { 387 | "babel-runtime": "^6.26.0", 388 | "babel-types": "^6.26.0", 389 | "lodash": "^4.17.4" 390 | } 391 | }, 392 | "babel-helper-remap-async-to-generator": { 393 | "version": "6.24.1", 394 | "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", 395 | "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", 396 | "dev": true, 397 | "requires": { 398 | "babel-helper-function-name": "^6.24.1", 399 | "babel-runtime": "^6.22.0", 400 | "babel-template": "^6.24.1", 401 | "babel-traverse": "^6.24.1", 402 | "babel-types": "^6.24.1" 403 | } 404 | }, 405 | "babel-helper-replace-supers": { 406 | "version": "6.24.1", 407 | "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", 408 | "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", 409 | "dev": true, 410 | "requires": { 411 | "babel-helper-optimise-call-expression": "^6.24.1", 412 | "babel-messages": "^6.23.0", 413 | "babel-runtime": "^6.22.0", 414 | "babel-template": "^6.24.1", 415 | "babel-traverse": "^6.24.1", 416 | "babel-types": "^6.24.1" 417 | } 418 | }, 419 | "babel-helpers": { 420 | "version": "6.24.1", 421 | "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", 422 | "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", 423 | "dev": true, 424 | "requires": { 425 | "babel-runtime": "^6.22.0", 426 | "babel-template": "^6.24.1" 427 | } 428 | }, 429 | "babel-messages": { 430 | "version": "6.23.0", 431 | "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", 432 | "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", 433 | "dev": true, 434 | "requires": { 435 | "babel-runtime": "^6.22.0" 436 | } 437 | }, 438 | "babel-plugin-check-es2015-constants": { 439 | "version": "6.22.0", 440 | "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", 441 | "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", 442 | "dev": true, 443 | "requires": { 444 | "babel-runtime": "^6.22.0" 445 | } 446 | }, 447 | "babel-plugin-syntax-async-functions": { 448 | "version": "6.13.0", 449 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", 450 | "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", 451 | "dev": true 452 | }, 453 | "babel-plugin-syntax-async-generators": { 454 | "version": "6.13.0", 455 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", 456 | "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", 457 | "dev": true 458 | }, 459 | "babel-plugin-syntax-class-constructor-call": { 460 | "version": "6.18.0", 461 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", 462 | "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", 463 | "dev": true 464 | }, 465 | "babel-plugin-syntax-class-properties": { 466 | "version": "6.13.0", 467 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", 468 | "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", 469 | "dev": true 470 | }, 471 | "babel-plugin-syntax-decorators": { 472 | "version": "6.13.0", 473 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", 474 | "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", 475 | "dev": true 476 | }, 477 | "babel-plugin-syntax-do-expressions": { 478 | "version": "6.13.0", 479 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", 480 | "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=", 481 | "dev": true 482 | }, 483 | "babel-plugin-syntax-dynamic-import": { 484 | "version": "6.18.0", 485 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", 486 | "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", 487 | "dev": true 488 | }, 489 | "babel-plugin-syntax-exponentiation-operator": { 490 | "version": "6.13.0", 491 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", 492 | "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", 493 | "dev": true 494 | }, 495 | "babel-plugin-syntax-export-extensions": { 496 | "version": "6.13.0", 497 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", 498 | "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", 499 | "dev": true 500 | }, 501 | "babel-plugin-syntax-function-bind": { 502 | "version": "6.13.0", 503 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", 504 | "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=", 505 | "dev": true 506 | }, 507 | "babel-plugin-syntax-object-rest-spread": { 508 | "version": "6.13.0", 509 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", 510 | "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", 511 | "dev": true 512 | }, 513 | "babel-plugin-syntax-trailing-function-commas": { 514 | "version": "6.22.0", 515 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", 516 | "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", 517 | "dev": true 518 | }, 519 | "babel-plugin-transform-async-generator-functions": { 520 | "version": "6.24.1", 521 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", 522 | "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", 523 | "dev": true, 524 | "requires": { 525 | "babel-helper-remap-async-to-generator": "^6.24.1", 526 | "babel-plugin-syntax-async-generators": "^6.5.0", 527 | "babel-runtime": "^6.22.0" 528 | } 529 | }, 530 | "babel-plugin-transform-async-to-generator": { 531 | "version": "6.24.1", 532 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", 533 | "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", 534 | "dev": true, 535 | "requires": { 536 | "babel-helper-remap-async-to-generator": "^6.24.1", 537 | "babel-plugin-syntax-async-functions": "^6.8.0", 538 | "babel-runtime": "^6.22.0" 539 | } 540 | }, 541 | "babel-plugin-transform-class-constructor-call": { 542 | "version": "6.24.1", 543 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", 544 | "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", 545 | "dev": true, 546 | "requires": { 547 | "babel-plugin-syntax-class-constructor-call": "^6.18.0", 548 | "babel-runtime": "^6.22.0", 549 | "babel-template": "^6.24.1" 550 | } 551 | }, 552 | "babel-plugin-transform-class-properties": { 553 | "version": "6.24.1", 554 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", 555 | "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", 556 | "dev": true, 557 | "requires": { 558 | "babel-helper-function-name": "^6.24.1", 559 | "babel-plugin-syntax-class-properties": "^6.8.0", 560 | "babel-runtime": "^6.22.0", 561 | "babel-template": "^6.24.1" 562 | } 563 | }, 564 | "babel-plugin-transform-decorators": { 565 | "version": "6.24.1", 566 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", 567 | "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", 568 | "dev": true, 569 | "requires": { 570 | "babel-helper-explode-class": "^6.24.1", 571 | "babel-plugin-syntax-decorators": "^6.13.0", 572 | "babel-runtime": "^6.22.0", 573 | "babel-template": "^6.24.1", 574 | "babel-types": "^6.24.1" 575 | } 576 | }, 577 | "babel-plugin-transform-do-expressions": { 578 | "version": "6.22.0", 579 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", 580 | "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", 581 | "dev": true, 582 | "requires": { 583 | "babel-plugin-syntax-do-expressions": "^6.8.0", 584 | "babel-runtime": "^6.22.0" 585 | } 586 | }, 587 | "babel-plugin-transform-es2015-arrow-functions": { 588 | "version": "6.22.0", 589 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", 590 | "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", 591 | "dev": true, 592 | "requires": { 593 | "babel-runtime": "^6.22.0" 594 | } 595 | }, 596 | "babel-plugin-transform-es2015-block-scoped-functions": { 597 | "version": "6.22.0", 598 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", 599 | "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", 600 | "dev": true, 601 | "requires": { 602 | "babel-runtime": "^6.22.0" 603 | } 604 | }, 605 | "babel-plugin-transform-es2015-block-scoping": { 606 | "version": "6.26.0", 607 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", 608 | "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", 609 | "dev": true, 610 | "requires": { 611 | "babel-runtime": "^6.26.0", 612 | "babel-template": "^6.26.0", 613 | "babel-traverse": "^6.26.0", 614 | "babel-types": "^6.26.0", 615 | "lodash": "^4.17.4" 616 | } 617 | }, 618 | "babel-plugin-transform-es2015-classes": { 619 | "version": "6.24.1", 620 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", 621 | "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", 622 | "dev": true, 623 | "requires": { 624 | "babel-helper-define-map": "^6.24.1", 625 | "babel-helper-function-name": "^6.24.1", 626 | "babel-helper-optimise-call-expression": "^6.24.1", 627 | "babel-helper-replace-supers": "^6.24.1", 628 | "babel-messages": "^6.23.0", 629 | "babel-runtime": "^6.22.0", 630 | "babel-template": "^6.24.1", 631 | "babel-traverse": "^6.24.1", 632 | "babel-types": "^6.24.1" 633 | } 634 | }, 635 | "babel-plugin-transform-es2015-computed-properties": { 636 | "version": "6.24.1", 637 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", 638 | "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", 639 | "dev": true, 640 | "requires": { 641 | "babel-runtime": "^6.22.0", 642 | "babel-template": "^6.24.1" 643 | } 644 | }, 645 | "babel-plugin-transform-es2015-destructuring": { 646 | "version": "6.23.0", 647 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", 648 | "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", 649 | "dev": true, 650 | "requires": { 651 | "babel-runtime": "^6.22.0" 652 | } 653 | }, 654 | "babel-plugin-transform-es2015-duplicate-keys": { 655 | "version": "6.24.1", 656 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", 657 | "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", 658 | "dev": true, 659 | "requires": { 660 | "babel-runtime": "^6.22.0", 661 | "babel-types": "^6.24.1" 662 | } 663 | }, 664 | "babel-plugin-transform-es2015-for-of": { 665 | "version": "6.23.0", 666 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", 667 | "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", 668 | "dev": true, 669 | "requires": { 670 | "babel-runtime": "^6.22.0" 671 | } 672 | }, 673 | "babel-plugin-transform-es2015-function-name": { 674 | "version": "6.24.1", 675 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", 676 | "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", 677 | "dev": true, 678 | "requires": { 679 | "babel-helper-function-name": "^6.24.1", 680 | "babel-runtime": "^6.22.0", 681 | "babel-types": "^6.24.1" 682 | } 683 | }, 684 | "babel-plugin-transform-es2015-literals": { 685 | "version": "6.22.0", 686 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", 687 | "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", 688 | "dev": true, 689 | "requires": { 690 | "babel-runtime": "^6.22.0" 691 | } 692 | }, 693 | "babel-plugin-transform-es2015-modules-amd": { 694 | "version": "6.24.1", 695 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", 696 | "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", 697 | "dev": true, 698 | "requires": { 699 | "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", 700 | "babel-runtime": "^6.22.0", 701 | "babel-template": "^6.24.1" 702 | } 703 | }, 704 | "babel-plugin-transform-es2015-modules-commonjs": { 705 | "version": "6.26.0", 706 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", 707 | "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", 708 | "dev": true, 709 | "requires": { 710 | "babel-plugin-transform-strict-mode": "^6.24.1", 711 | "babel-runtime": "^6.26.0", 712 | "babel-template": "^6.26.0", 713 | "babel-types": "^6.26.0" 714 | } 715 | }, 716 | "babel-plugin-transform-es2015-modules-systemjs": { 717 | "version": "6.24.1", 718 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", 719 | "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", 720 | "dev": true, 721 | "requires": { 722 | "babel-helper-hoist-variables": "^6.24.1", 723 | "babel-runtime": "^6.22.0", 724 | "babel-template": "^6.24.1" 725 | } 726 | }, 727 | "babel-plugin-transform-es2015-modules-umd": { 728 | "version": "6.24.1", 729 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", 730 | "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", 731 | "dev": true, 732 | "requires": { 733 | "babel-plugin-transform-es2015-modules-amd": "^6.24.1", 734 | "babel-runtime": "^6.22.0", 735 | "babel-template": "^6.24.1" 736 | } 737 | }, 738 | "babel-plugin-transform-es2015-object-super": { 739 | "version": "6.24.1", 740 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", 741 | "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", 742 | "dev": true, 743 | "requires": { 744 | "babel-helper-replace-supers": "^6.24.1", 745 | "babel-runtime": "^6.22.0" 746 | } 747 | }, 748 | "babel-plugin-transform-es2015-parameters": { 749 | "version": "6.24.1", 750 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", 751 | "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", 752 | "dev": true, 753 | "requires": { 754 | "babel-helper-call-delegate": "^6.24.1", 755 | "babel-helper-get-function-arity": "^6.24.1", 756 | "babel-runtime": "^6.22.0", 757 | "babel-template": "^6.24.1", 758 | "babel-traverse": "^6.24.1", 759 | "babel-types": "^6.24.1" 760 | } 761 | }, 762 | "babel-plugin-transform-es2015-shorthand-properties": { 763 | "version": "6.24.1", 764 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", 765 | "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", 766 | "dev": true, 767 | "requires": { 768 | "babel-runtime": "^6.22.0", 769 | "babel-types": "^6.24.1" 770 | } 771 | }, 772 | "babel-plugin-transform-es2015-spread": { 773 | "version": "6.22.0", 774 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", 775 | "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", 776 | "dev": true, 777 | "requires": { 778 | "babel-runtime": "^6.22.0" 779 | } 780 | }, 781 | "babel-plugin-transform-es2015-sticky-regex": { 782 | "version": "6.24.1", 783 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", 784 | "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", 785 | "dev": true, 786 | "requires": { 787 | "babel-helper-regex": "^6.24.1", 788 | "babel-runtime": "^6.22.0", 789 | "babel-types": "^6.24.1" 790 | } 791 | }, 792 | "babel-plugin-transform-es2015-template-literals": { 793 | "version": "6.22.0", 794 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", 795 | "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", 796 | "dev": true, 797 | "requires": { 798 | "babel-runtime": "^6.22.0" 799 | } 800 | }, 801 | "babel-plugin-transform-es2015-typeof-symbol": { 802 | "version": "6.23.0", 803 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", 804 | "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", 805 | "dev": true, 806 | "requires": { 807 | "babel-runtime": "^6.22.0" 808 | } 809 | }, 810 | "babel-plugin-transform-es2015-unicode-regex": { 811 | "version": "6.24.1", 812 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", 813 | "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", 814 | "dev": true, 815 | "requires": { 816 | "babel-helper-regex": "^6.24.1", 817 | "babel-runtime": "^6.22.0", 818 | "regexpu-core": "^2.0.0" 819 | } 820 | }, 821 | "babel-plugin-transform-exponentiation-operator": { 822 | "version": "6.24.1", 823 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", 824 | "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", 825 | "dev": true, 826 | "requires": { 827 | "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", 828 | "babel-plugin-syntax-exponentiation-operator": "^6.8.0", 829 | "babel-runtime": "^6.22.0" 830 | } 831 | }, 832 | "babel-plugin-transform-export-extensions": { 833 | "version": "6.22.0", 834 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", 835 | "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", 836 | "dev": true, 837 | "requires": { 838 | "babel-plugin-syntax-export-extensions": "^6.8.0", 839 | "babel-runtime": "^6.22.0" 840 | } 841 | }, 842 | "babel-plugin-transform-function-bind": { 843 | "version": "6.22.0", 844 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", 845 | "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", 846 | "dev": true, 847 | "requires": { 848 | "babel-plugin-syntax-function-bind": "^6.8.0", 849 | "babel-runtime": "^6.22.0" 850 | } 851 | }, 852 | "babel-plugin-transform-object-rest-spread": { 853 | "version": "6.26.0", 854 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", 855 | "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", 856 | "dev": true, 857 | "requires": { 858 | "babel-plugin-syntax-object-rest-spread": "^6.8.0", 859 | "babel-runtime": "^6.26.0" 860 | } 861 | }, 862 | "babel-plugin-transform-regenerator": { 863 | "version": "6.26.0", 864 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", 865 | "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", 866 | "dev": true, 867 | "requires": { 868 | "regenerator-transform": "^0.10.0" 869 | } 870 | }, 871 | "babel-plugin-transform-strict-mode": { 872 | "version": "6.24.1", 873 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", 874 | "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", 875 | "dev": true, 876 | "requires": { 877 | "babel-runtime": "^6.22.0", 878 | "babel-types": "^6.24.1" 879 | } 880 | }, 881 | "babel-polyfill": { 882 | "version": "6.26.0", 883 | "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", 884 | "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", 885 | "dev": true, 886 | "requires": { 887 | "babel-runtime": "^6.26.0", 888 | "core-js": "^2.5.0", 889 | "regenerator-runtime": "^0.10.5" 890 | }, 891 | "dependencies": { 892 | "regenerator-runtime": { 893 | "version": "0.10.5", 894 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", 895 | "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", 896 | "dev": true 897 | } 898 | } 899 | }, 900 | "babel-preset-es2015": { 901 | "version": "6.24.1", 902 | "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", 903 | "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", 904 | "dev": true, 905 | "requires": { 906 | "babel-plugin-check-es2015-constants": "^6.22.0", 907 | "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", 908 | "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", 909 | "babel-plugin-transform-es2015-block-scoping": "^6.24.1", 910 | "babel-plugin-transform-es2015-classes": "^6.24.1", 911 | "babel-plugin-transform-es2015-computed-properties": "^6.24.1", 912 | "babel-plugin-transform-es2015-destructuring": "^6.22.0", 913 | "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", 914 | "babel-plugin-transform-es2015-for-of": "^6.22.0", 915 | "babel-plugin-transform-es2015-function-name": "^6.24.1", 916 | "babel-plugin-transform-es2015-literals": "^6.22.0", 917 | "babel-plugin-transform-es2015-modules-amd": "^6.24.1", 918 | "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", 919 | "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", 920 | "babel-plugin-transform-es2015-modules-umd": "^6.24.1", 921 | "babel-plugin-transform-es2015-object-super": "^6.24.1", 922 | "babel-plugin-transform-es2015-parameters": "^6.24.1", 923 | "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", 924 | "babel-plugin-transform-es2015-spread": "^6.22.0", 925 | "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", 926 | "babel-plugin-transform-es2015-template-literals": "^6.22.0", 927 | "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", 928 | "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", 929 | "babel-plugin-transform-regenerator": "^6.24.1" 930 | } 931 | }, 932 | "babel-preset-stage-0": { 933 | "version": "6.24.1", 934 | "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz", 935 | "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=", 936 | "dev": true, 937 | "requires": { 938 | "babel-plugin-transform-do-expressions": "^6.22.0", 939 | "babel-plugin-transform-function-bind": "^6.22.0", 940 | "babel-preset-stage-1": "^6.24.1" 941 | } 942 | }, 943 | "babel-preset-stage-1": { 944 | "version": "6.24.1", 945 | "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", 946 | "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", 947 | "dev": true, 948 | "requires": { 949 | "babel-plugin-transform-class-constructor-call": "^6.24.1", 950 | "babel-plugin-transform-export-extensions": "^6.22.0", 951 | "babel-preset-stage-2": "^6.24.1" 952 | } 953 | }, 954 | "babel-preset-stage-2": { 955 | "version": "6.24.1", 956 | "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", 957 | "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", 958 | "dev": true, 959 | "requires": { 960 | "babel-plugin-syntax-dynamic-import": "^6.18.0", 961 | "babel-plugin-transform-class-properties": "^6.24.1", 962 | "babel-plugin-transform-decorators": "^6.24.1", 963 | "babel-preset-stage-3": "^6.24.1" 964 | } 965 | }, 966 | "babel-preset-stage-3": { 967 | "version": "6.24.1", 968 | "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", 969 | "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", 970 | "dev": true, 971 | "requires": { 972 | "babel-plugin-syntax-trailing-function-commas": "^6.22.0", 973 | "babel-plugin-transform-async-generator-functions": "^6.24.1", 974 | "babel-plugin-transform-async-to-generator": "^6.24.1", 975 | "babel-plugin-transform-exponentiation-operator": "^6.24.1", 976 | "babel-plugin-transform-object-rest-spread": "^6.22.0" 977 | } 978 | }, 979 | "babel-register": { 980 | "version": "6.26.0", 981 | "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", 982 | "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", 983 | "dev": true, 984 | "requires": { 985 | "babel-core": "^6.26.0", 986 | "babel-runtime": "^6.26.0", 987 | "core-js": "^2.5.0", 988 | "home-or-tmp": "^2.0.0", 989 | "lodash": "^4.17.4", 990 | "mkdirp": "^0.5.1", 991 | "source-map-support": "^0.4.15" 992 | } 993 | }, 994 | "babel-runtime": { 995 | "version": "6.26.0", 996 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 997 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 998 | "dev": true, 999 | "requires": { 1000 | "core-js": "^2.4.0", 1001 | "regenerator-runtime": "^0.11.0" 1002 | } 1003 | }, 1004 | "babel-template": { 1005 | "version": "6.26.0", 1006 | "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", 1007 | "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", 1008 | "dev": true, 1009 | "requires": { 1010 | "babel-runtime": "^6.26.0", 1011 | "babel-traverse": "^6.26.0", 1012 | "babel-types": "^6.26.0", 1013 | "babylon": "^6.18.0", 1014 | "lodash": "^4.17.4" 1015 | } 1016 | }, 1017 | "babel-traverse": { 1018 | "version": "6.26.0", 1019 | "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", 1020 | "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", 1021 | "dev": true, 1022 | "requires": { 1023 | "babel-code-frame": "^6.26.0", 1024 | "babel-messages": "^6.23.0", 1025 | "babel-runtime": "^6.26.0", 1026 | "babel-types": "^6.26.0", 1027 | "babylon": "^6.18.0", 1028 | "debug": "^2.6.8", 1029 | "globals": "^9.18.0", 1030 | "invariant": "^2.2.2", 1031 | "lodash": "^4.17.4" 1032 | } 1033 | }, 1034 | "babel-types": { 1035 | "version": "6.26.0", 1036 | "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", 1037 | "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", 1038 | "dev": true, 1039 | "requires": { 1040 | "babel-runtime": "^6.26.0", 1041 | "esutils": "^2.0.2", 1042 | "lodash": "^4.17.4", 1043 | "to-fast-properties": "^1.0.3" 1044 | } 1045 | }, 1046 | "babylon": { 1047 | "version": "6.18.0", 1048 | "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", 1049 | "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", 1050 | "dev": true 1051 | }, 1052 | "backo2": { 1053 | "version": "1.0.2", 1054 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 1055 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", 1056 | "dev": true 1057 | }, 1058 | "balanced-match": { 1059 | "version": "1.0.0", 1060 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1061 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1062 | "dev": true 1063 | }, 1064 | "base64-arraybuffer": { 1065 | "version": "0.1.5", 1066 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", 1067 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", 1068 | "dev": true 1069 | }, 1070 | "base64id": { 1071 | "version": "1.0.0", 1072 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", 1073 | "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", 1074 | "dev": true 1075 | }, 1076 | "better-assert": { 1077 | "version": "1.0.2", 1078 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", 1079 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", 1080 | "dev": true, 1081 | "requires": { 1082 | "callsite": "1.0.0" 1083 | } 1084 | }, 1085 | "binary-extensions": { 1086 | "version": "1.10.0", 1087 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz", 1088 | "integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=", 1089 | "dev": true, 1090 | "optional": true 1091 | }, 1092 | "blob": { 1093 | "version": "0.0.4", 1094 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", 1095 | "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", 1096 | "dev": true 1097 | }, 1098 | "brace-expansion": { 1099 | "version": "1.1.8", 1100 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 1101 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 1102 | "dev": true, 1103 | "requires": { 1104 | "balanced-match": "^1.0.0", 1105 | "concat-map": "0.0.1" 1106 | } 1107 | }, 1108 | "braces": { 1109 | "version": "1.8.5", 1110 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 1111 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 1112 | "dev": true, 1113 | "optional": true, 1114 | "requires": { 1115 | "expand-range": "^1.8.1", 1116 | "preserve": "^0.2.0", 1117 | "repeat-element": "^1.1.2" 1118 | } 1119 | }, 1120 | "browser-stdout": { 1121 | "version": "1.3.0", 1122 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", 1123 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", 1124 | "dev": true 1125 | }, 1126 | "builtin-modules": { 1127 | "version": "1.1.1", 1128 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 1129 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 1130 | "dev": true 1131 | }, 1132 | "caller-path": { 1133 | "version": "0.1.0", 1134 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 1135 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 1136 | "dev": true, 1137 | "requires": { 1138 | "callsites": "^0.2.0" 1139 | } 1140 | }, 1141 | "callsite": { 1142 | "version": "1.0.0", 1143 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", 1144 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", 1145 | "dev": true 1146 | }, 1147 | "callsites": { 1148 | "version": "0.2.0", 1149 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 1150 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 1151 | "dev": true 1152 | }, 1153 | "chai": { 1154 | "version": "4.1.2", 1155 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", 1156 | "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", 1157 | "dev": true, 1158 | "requires": { 1159 | "assertion-error": "^1.0.1", 1160 | "check-error": "^1.0.1", 1161 | "deep-eql": "^3.0.0", 1162 | "get-func-name": "^2.0.0", 1163 | "pathval": "^1.0.0", 1164 | "type-detect": "^4.0.0" 1165 | } 1166 | }, 1167 | "chalk": { 1168 | "version": "1.1.3", 1169 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1170 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1171 | "dev": true, 1172 | "requires": { 1173 | "ansi-styles": "^2.2.1", 1174 | "escape-string-regexp": "^1.0.2", 1175 | "has-ansi": "^2.0.0", 1176 | "strip-ansi": "^3.0.0", 1177 | "supports-color": "^2.0.0" 1178 | } 1179 | }, 1180 | "check-error": { 1181 | "version": "1.0.2", 1182 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 1183 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 1184 | "dev": true 1185 | }, 1186 | "chokidar": { 1187 | "version": "1.7.0", 1188 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 1189 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 1190 | "dev": true, 1191 | "optional": true, 1192 | "requires": { 1193 | "anymatch": "^1.3.0", 1194 | "async-each": "^1.0.0", 1195 | "fsevents": "^1.0.0", 1196 | "glob-parent": "^2.0.0", 1197 | "inherits": "^2.0.1", 1198 | "is-binary-path": "^1.0.0", 1199 | "is-glob": "^2.0.0", 1200 | "path-is-absolute": "^1.0.0", 1201 | "readdirp": "^2.0.0" 1202 | } 1203 | }, 1204 | "circular-json": { 1205 | "version": "0.3.3", 1206 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", 1207 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", 1208 | "dev": true 1209 | }, 1210 | "cli-cursor": { 1211 | "version": "1.0.2", 1212 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", 1213 | "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", 1214 | "dev": true, 1215 | "requires": { 1216 | "restore-cursor": "^1.0.1" 1217 | } 1218 | }, 1219 | "cli-width": { 1220 | "version": "2.2.0", 1221 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 1222 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 1223 | "dev": true 1224 | }, 1225 | "co": { 1226 | "version": "4.6.0", 1227 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 1228 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 1229 | "dev": true 1230 | }, 1231 | "code-point-at": { 1232 | "version": "1.1.0", 1233 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 1234 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 1235 | "dev": true 1236 | }, 1237 | "color-convert": { 1238 | "version": "1.9.0", 1239 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", 1240 | "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", 1241 | "dev": true, 1242 | "requires": { 1243 | "color-name": "^1.1.1" 1244 | } 1245 | }, 1246 | "color-name": { 1247 | "version": "1.1.3", 1248 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1249 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1250 | "dev": true 1251 | }, 1252 | "combine-middlewares": { 1253 | "version": "0.1.0", 1254 | "resolved": "https://registry.npmjs.org/combine-middlewares/-/combine-middlewares-0.1.0.tgz", 1255 | "integrity": "sha512-X7A6T6UAH1cULUIhDgvBol2XcvThuVrDMdD2ZPg9FEddEW3KsoKShd1yaRsMIl1v4Aj8dqSfehMXJxD/kwXJ2Q==" 1256 | }, 1257 | "commander": { 1258 | "version": "2.11.0", 1259 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", 1260 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", 1261 | "dev": true 1262 | }, 1263 | "component-bind": { 1264 | "version": "1.0.0", 1265 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", 1266 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", 1267 | "dev": true 1268 | }, 1269 | "component-emitter": { 1270 | "version": "1.2.1", 1271 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 1272 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 1273 | "dev": true 1274 | }, 1275 | "component-inherit": { 1276 | "version": "0.0.3", 1277 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", 1278 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", 1279 | "dev": true 1280 | }, 1281 | "concat-map": { 1282 | "version": "0.0.1", 1283 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1284 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1285 | "dev": true 1286 | }, 1287 | "concat-stream": { 1288 | "version": "1.6.0", 1289 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", 1290 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", 1291 | "dev": true, 1292 | "requires": { 1293 | "inherits": "^2.0.3", 1294 | "readable-stream": "^2.2.2", 1295 | "typedarray": "^0.0.6" 1296 | } 1297 | }, 1298 | "contains-path": { 1299 | "version": "0.1.0", 1300 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 1301 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 1302 | "dev": true 1303 | }, 1304 | "convert-source-map": { 1305 | "version": "1.5.0", 1306 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 1307 | "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", 1308 | "dev": true 1309 | }, 1310 | "cookie": { 1311 | "version": "0.3.1", 1312 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 1313 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", 1314 | "dev": true 1315 | }, 1316 | "core-js": { 1317 | "version": "2.5.0", 1318 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", 1319 | "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=", 1320 | "dev": true 1321 | }, 1322 | "core-util-is": { 1323 | "version": "1.0.2", 1324 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1325 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1326 | "dev": true 1327 | }, 1328 | "cross-spawn": { 1329 | "version": "5.1.0", 1330 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", 1331 | "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", 1332 | "dev": true, 1333 | "requires": { 1334 | "lru-cache": "^4.0.1", 1335 | "shebang-command": "^1.2.0", 1336 | "which": "^1.2.9" 1337 | } 1338 | }, 1339 | "d": { 1340 | "version": "1.0.0", 1341 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", 1342 | "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", 1343 | "dev": true, 1344 | "requires": { 1345 | "es5-ext": "^0.10.9" 1346 | } 1347 | }, 1348 | "debug": { 1349 | "version": "2.6.8", 1350 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 1351 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 1352 | "dev": true, 1353 | "requires": { 1354 | "ms": "2.0.0" 1355 | } 1356 | }, 1357 | "debug-log": { 1358 | "version": "1.0.1", 1359 | "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", 1360 | "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", 1361 | "dev": true 1362 | }, 1363 | "deep-eql": { 1364 | "version": "3.0.1", 1365 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 1366 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 1367 | "dev": true, 1368 | "requires": { 1369 | "type-detect": "^4.0.0" 1370 | } 1371 | }, 1372 | "deep-is": { 1373 | "version": "0.1.3", 1374 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 1375 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 1376 | "dev": true 1377 | }, 1378 | "define-properties": { 1379 | "version": "1.1.2", 1380 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", 1381 | "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", 1382 | "dev": true, 1383 | "requires": { 1384 | "foreach": "^2.0.5", 1385 | "object-keys": "^1.0.8" 1386 | } 1387 | }, 1388 | "deglob": { 1389 | "version": "2.1.0", 1390 | "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz", 1391 | "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=", 1392 | "dev": true, 1393 | "requires": { 1394 | "find-root": "^1.0.0", 1395 | "glob": "^7.0.5", 1396 | "ignore": "^3.0.9", 1397 | "pkg-config": "^1.1.0", 1398 | "run-parallel": "^1.1.2", 1399 | "uniq": "^1.0.1" 1400 | } 1401 | }, 1402 | "del": { 1403 | "version": "2.2.2", 1404 | "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 1405 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", 1406 | "dev": true, 1407 | "requires": { 1408 | "globby": "^5.0.0", 1409 | "is-path-cwd": "^1.0.0", 1410 | "is-path-in-cwd": "^1.0.0", 1411 | "object-assign": "^4.0.1", 1412 | "pify": "^2.0.0", 1413 | "pinkie-promise": "^2.0.0", 1414 | "rimraf": "^2.2.8" 1415 | } 1416 | }, 1417 | "deserialize-error": { 1418 | "version": "0.0.3", 1419 | "resolved": "https://registry.npmjs.org/deserialize-error/-/deserialize-error-0.0.3.tgz", 1420 | "integrity": "sha1-9WhjNXLXwsxGpVpfwlS23857P8o=" 1421 | }, 1422 | "detect-indent": { 1423 | "version": "4.0.0", 1424 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", 1425 | "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", 1426 | "dev": true, 1427 | "requires": { 1428 | "repeating": "^2.0.0" 1429 | } 1430 | }, 1431 | "diff": { 1432 | "version": "3.2.0", 1433 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", 1434 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", 1435 | "dev": true 1436 | }, 1437 | "doctrine": { 1438 | "version": "2.0.0", 1439 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", 1440 | "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", 1441 | "dev": true, 1442 | "requires": { 1443 | "esutils": "^2.0.2", 1444 | "isarray": "^1.0.0" 1445 | } 1446 | }, 1447 | "duplexer": { 1448 | "version": "0.1.1", 1449 | "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", 1450 | "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", 1451 | "dev": true 1452 | }, 1453 | "engine.io": { 1454 | "version": "3.1.0", 1455 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.0.tgz", 1456 | "integrity": "sha1-XKQ4486f28kVxKIcjdnhJmcG5X4=", 1457 | "dev": true, 1458 | "requires": { 1459 | "accepts": "1.3.3", 1460 | "base64id": "1.0.0", 1461 | "cookie": "0.3.1", 1462 | "debug": "~2.6.4", 1463 | "engine.io-parser": "~2.1.0", 1464 | "uws": "~0.14.4", 1465 | "ws": "~2.3.1" 1466 | } 1467 | }, 1468 | "engine.io-client": { 1469 | "version": "3.1.1", 1470 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.1.tgz", 1471 | "integrity": "sha1-QVqYUrrbFPoAj6PvHjFgjbZ2EyU=", 1472 | "dev": true, 1473 | "requires": { 1474 | "component-emitter": "1.2.1", 1475 | "component-inherit": "0.0.3", 1476 | "debug": "~2.6.4", 1477 | "engine.io-parser": "~2.1.1", 1478 | "has-cors": "1.1.0", 1479 | "indexof": "0.0.1", 1480 | "parsejson": "0.0.3", 1481 | "parseqs": "0.0.5", 1482 | "parseuri": "0.0.5", 1483 | "ws": "~2.3.1", 1484 | "xmlhttprequest-ssl": "1.5.3", 1485 | "yeast": "0.1.2" 1486 | } 1487 | }, 1488 | "engine.io-parser": { 1489 | "version": "2.1.1", 1490 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", 1491 | "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", 1492 | "dev": true, 1493 | "requires": { 1494 | "after": "0.8.2", 1495 | "arraybuffer.slice": "0.0.6", 1496 | "base64-arraybuffer": "0.1.5", 1497 | "blob": "0.0.4", 1498 | "has-binary2": "~1.0.2" 1499 | } 1500 | }, 1501 | "error-ex": { 1502 | "version": "1.3.1", 1503 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 1504 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 1505 | "dev": true, 1506 | "requires": { 1507 | "is-arrayish": "^0.2.1" 1508 | } 1509 | }, 1510 | "es-abstract": { 1511 | "version": "1.8.0", 1512 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.8.0.tgz", 1513 | "integrity": "sha512-Cf9/h5MrXtExM20gSS55YFrGKCyPrRBjIVBtVyy8vmlsDfe0NPKMWj65tPLgzyfPuapWxh5whpXCtW4+AW5mRg==", 1514 | "dev": true, 1515 | "requires": { 1516 | "es-to-primitive": "^1.1.1", 1517 | "function-bind": "^1.1.0", 1518 | "has": "^1.0.1", 1519 | "is-callable": "^1.1.3", 1520 | "is-regex": "^1.0.4" 1521 | } 1522 | }, 1523 | "es-to-primitive": { 1524 | "version": "1.1.1", 1525 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", 1526 | "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", 1527 | "dev": true, 1528 | "requires": { 1529 | "is-callable": "^1.1.1", 1530 | "is-date-object": "^1.0.1", 1531 | "is-symbol": "^1.0.1" 1532 | } 1533 | }, 1534 | "es5-ext": { 1535 | "version": "0.10.29", 1536 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.29.tgz", 1537 | "integrity": "sha512-KXla9NXo5sdaEkGSmbFPYgjH6m75kxsthL6GDRSug/Y2OiMoYm0I9giL39j4cgmaFmAbkIFJ6gG+SGKnLSmOvA==", 1538 | "dev": true, 1539 | "requires": { 1540 | "es6-iterator": "2", 1541 | "es6-symbol": "~3.1" 1542 | } 1543 | }, 1544 | "es6-iterator": { 1545 | "version": "2.0.1", 1546 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", 1547 | "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", 1548 | "dev": true, 1549 | "requires": { 1550 | "d": "1", 1551 | "es5-ext": "^0.10.14", 1552 | "es6-symbol": "^3.1" 1553 | } 1554 | }, 1555 | "es6-map": { 1556 | "version": "0.1.5", 1557 | "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", 1558 | "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", 1559 | "dev": true, 1560 | "requires": { 1561 | "d": "1", 1562 | "es5-ext": "~0.10.14", 1563 | "es6-iterator": "~2.0.1", 1564 | "es6-set": "~0.1.5", 1565 | "es6-symbol": "~3.1.1", 1566 | "event-emitter": "~0.3.5" 1567 | } 1568 | }, 1569 | "es6-set": { 1570 | "version": "0.1.5", 1571 | "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", 1572 | "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", 1573 | "dev": true, 1574 | "requires": { 1575 | "d": "1", 1576 | "es5-ext": "~0.10.14", 1577 | "es6-iterator": "~2.0.1", 1578 | "es6-symbol": "3.1.1", 1579 | "event-emitter": "~0.3.5" 1580 | } 1581 | }, 1582 | "es6-symbol": { 1583 | "version": "3.1.1", 1584 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", 1585 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", 1586 | "dev": true, 1587 | "requires": { 1588 | "d": "1", 1589 | "es5-ext": "~0.10.14" 1590 | } 1591 | }, 1592 | "es6-weak-map": { 1593 | "version": "2.0.2", 1594 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", 1595 | "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", 1596 | "dev": true, 1597 | "requires": { 1598 | "d": "1", 1599 | "es5-ext": "^0.10.14", 1600 | "es6-iterator": "^2.0.1", 1601 | "es6-symbol": "^3.1.1" 1602 | } 1603 | }, 1604 | "escape-string-regexp": { 1605 | "version": "1.0.5", 1606 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1607 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1608 | "dev": true 1609 | }, 1610 | "escope": { 1611 | "version": "3.6.0", 1612 | "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", 1613 | "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", 1614 | "dev": true, 1615 | "requires": { 1616 | "es6-map": "^0.1.3", 1617 | "es6-weak-map": "^2.0.1", 1618 | "esrecurse": "^4.1.0", 1619 | "estraverse": "^4.1.1" 1620 | } 1621 | }, 1622 | "eslint": { 1623 | "version": "3.19.0", 1624 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", 1625 | "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", 1626 | "dev": true, 1627 | "requires": { 1628 | "babel-code-frame": "^6.16.0", 1629 | "chalk": "^1.1.3", 1630 | "concat-stream": "^1.5.2", 1631 | "debug": "^2.1.1", 1632 | "doctrine": "^2.0.0", 1633 | "escope": "^3.6.0", 1634 | "espree": "^3.4.0", 1635 | "esquery": "^1.0.0", 1636 | "estraverse": "^4.2.0", 1637 | "esutils": "^2.0.2", 1638 | "file-entry-cache": "^2.0.0", 1639 | "glob": "^7.0.3", 1640 | "globals": "^9.14.0", 1641 | "ignore": "^3.2.0", 1642 | "imurmurhash": "^0.1.4", 1643 | "inquirer": "^0.12.0", 1644 | "is-my-json-valid": "^2.10.0", 1645 | "is-resolvable": "^1.0.0", 1646 | "js-yaml": "^3.5.1", 1647 | "json-stable-stringify": "^1.0.0", 1648 | "levn": "^0.3.0", 1649 | "lodash": "^4.0.0", 1650 | "mkdirp": "^0.5.0", 1651 | "natural-compare": "^1.4.0", 1652 | "optionator": "^0.8.2", 1653 | "path-is-inside": "^1.0.1", 1654 | "pluralize": "^1.2.1", 1655 | "progress": "^1.1.8", 1656 | "require-uncached": "^1.0.2", 1657 | "shelljs": "^0.7.5", 1658 | "strip-bom": "^3.0.0", 1659 | "strip-json-comments": "~2.0.1", 1660 | "table": "^3.7.8", 1661 | "text-table": "~0.2.0", 1662 | "user-home": "^2.0.0" 1663 | }, 1664 | "dependencies": { 1665 | "user-home": { 1666 | "version": "2.0.0", 1667 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", 1668 | "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", 1669 | "dev": true, 1670 | "requires": { 1671 | "os-homedir": "^1.0.0" 1672 | } 1673 | } 1674 | } 1675 | }, 1676 | "eslint-config-standard": { 1677 | "version": "10.2.1", 1678 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", 1679 | "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", 1680 | "dev": true 1681 | }, 1682 | "eslint-config-standard-jsx": { 1683 | "version": "4.0.2", 1684 | "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", 1685 | "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", 1686 | "dev": true 1687 | }, 1688 | "eslint-import-resolver-node": { 1689 | "version": "0.2.3", 1690 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", 1691 | "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", 1692 | "dev": true, 1693 | "requires": { 1694 | "debug": "^2.2.0", 1695 | "object-assign": "^4.0.1", 1696 | "resolve": "^1.1.6" 1697 | } 1698 | }, 1699 | "eslint-module-utils": { 1700 | "version": "2.1.1", 1701 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", 1702 | "integrity": "sha512-jDI/X5l/6D1rRD/3T43q8Qgbls2nq5km5KSqiwlyUbGo5+04fXhMKdCPhjwbqAa6HXWaMxj8Q4hQDIh7IadJQw==", 1703 | "dev": true, 1704 | "requires": { 1705 | "debug": "^2.6.8", 1706 | "pkg-dir": "^1.0.0" 1707 | } 1708 | }, 1709 | "eslint-plugin-import": { 1710 | "version": "2.2.0", 1711 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz", 1712 | "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=", 1713 | "dev": true, 1714 | "requires": { 1715 | "builtin-modules": "^1.1.1", 1716 | "contains-path": "^0.1.0", 1717 | "debug": "^2.2.0", 1718 | "doctrine": "1.5.0", 1719 | "eslint-import-resolver-node": "^0.2.0", 1720 | "eslint-module-utils": "^2.0.0", 1721 | "has": "^1.0.1", 1722 | "lodash.cond": "^4.3.0", 1723 | "minimatch": "^3.0.3", 1724 | "pkg-up": "^1.0.0" 1725 | }, 1726 | "dependencies": { 1727 | "doctrine": { 1728 | "version": "1.5.0", 1729 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 1730 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 1731 | "dev": true, 1732 | "requires": { 1733 | "esutils": "^2.0.2", 1734 | "isarray": "^1.0.0" 1735 | } 1736 | } 1737 | } 1738 | }, 1739 | "eslint-plugin-node": { 1740 | "version": "4.2.3", 1741 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz", 1742 | "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==", 1743 | "dev": true, 1744 | "requires": { 1745 | "ignore": "^3.0.11", 1746 | "minimatch": "^3.0.2", 1747 | "object-assign": "^4.0.1", 1748 | "resolve": "^1.1.7", 1749 | "semver": "5.3.0" 1750 | }, 1751 | "dependencies": { 1752 | "semver": { 1753 | "version": "5.3.0", 1754 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 1755 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", 1756 | "dev": true 1757 | } 1758 | } 1759 | }, 1760 | "eslint-plugin-promise": { 1761 | "version": "3.5.0", 1762 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", 1763 | "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", 1764 | "dev": true 1765 | }, 1766 | "eslint-plugin-react": { 1767 | "version": "6.10.3", 1768 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", 1769 | "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", 1770 | "dev": true, 1771 | "requires": { 1772 | "array.prototype.find": "^2.0.1", 1773 | "doctrine": "^1.2.2", 1774 | "has": "^1.0.1", 1775 | "jsx-ast-utils": "^1.3.4", 1776 | "object.assign": "^4.0.4" 1777 | }, 1778 | "dependencies": { 1779 | "doctrine": { 1780 | "version": "1.5.0", 1781 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 1782 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 1783 | "dev": true, 1784 | "requires": { 1785 | "esutils": "^2.0.2", 1786 | "isarray": "^1.0.0" 1787 | } 1788 | } 1789 | } 1790 | }, 1791 | "eslint-plugin-standard": { 1792 | "version": "3.0.1", 1793 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", 1794 | "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", 1795 | "dev": true 1796 | }, 1797 | "espree": { 1798 | "version": "3.5.0", 1799 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.0.tgz", 1800 | "integrity": "sha1-mDWGJb3QVYYeon4oZ+pyn69GPY0=", 1801 | "dev": true, 1802 | "requires": { 1803 | "acorn": "^5.1.1", 1804 | "acorn-jsx": "^3.0.0" 1805 | } 1806 | }, 1807 | "esprima": { 1808 | "version": "4.0.0", 1809 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", 1810 | "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", 1811 | "dev": true 1812 | }, 1813 | "esquery": { 1814 | "version": "1.0.0", 1815 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", 1816 | "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", 1817 | "dev": true, 1818 | "requires": { 1819 | "estraverse": "^4.0.0" 1820 | } 1821 | }, 1822 | "esrecurse": { 1823 | "version": "4.2.0", 1824 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", 1825 | "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", 1826 | "dev": true, 1827 | "requires": { 1828 | "estraverse": "^4.1.0", 1829 | "object-assign": "^4.0.1" 1830 | } 1831 | }, 1832 | "estraverse": { 1833 | "version": "4.2.0", 1834 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 1835 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 1836 | "dev": true 1837 | }, 1838 | "esutils": { 1839 | "version": "2.0.2", 1840 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 1841 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 1842 | "dev": true 1843 | }, 1844 | "event-emitter": { 1845 | "version": "0.3.5", 1846 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", 1847 | "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", 1848 | "dev": true, 1849 | "requires": { 1850 | "d": "1", 1851 | "es5-ext": "~0.10.14" 1852 | } 1853 | }, 1854 | "event-stream": { 1855 | "version": "3.3.4", 1856 | "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", 1857 | "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", 1858 | "dev": true, 1859 | "requires": { 1860 | "duplexer": "~0.1.1", 1861 | "from": "~0", 1862 | "map-stream": "~0.1.0", 1863 | "pause-stream": "0.0.11", 1864 | "split": "0.3", 1865 | "stream-combiner": "~0.0.4", 1866 | "through": "~2.3.1" 1867 | } 1868 | }, 1869 | "exit-hook": { 1870 | "version": "1.1.1", 1871 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", 1872 | "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", 1873 | "dev": true 1874 | }, 1875 | "expand-brackets": { 1876 | "version": "0.1.5", 1877 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 1878 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 1879 | "dev": true, 1880 | "optional": true, 1881 | "requires": { 1882 | "is-posix-bracket": "^0.1.0" 1883 | } 1884 | }, 1885 | "expand-range": { 1886 | "version": "1.8.2", 1887 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 1888 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 1889 | "dev": true, 1890 | "optional": true, 1891 | "requires": { 1892 | "fill-range": "^2.1.0" 1893 | } 1894 | }, 1895 | "extglob": { 1896 | "version": "0.3.2", 1897 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 1898 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 1899 | "dev": true, 1900 | "optional": true, 1901 | "requires": { 1902 | "is-extglob": "^1.0.0" 1903 | } 1904 | }, 1905 | "fast-levenshtein": { 1906 | "version": "2.0.6", 1907 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1908 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1909 | "dev": true 1910 | }, 1911 | "figures": { 1912 | "version": "1.7.0", 1913 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", 1914 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 1915 | "dev": true, 1916 | "requires": { 1917 | "escape-string-regexp": "^1.0.5", 1918 | "object-assign": "^4.1.0" 1919 | } 1920 | }, 1921 | "file-entry-cache": { 1922 | "version": "2.0.0", 1923 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 1924 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 1925 | "dev": true, 1926 | "requires": { 1927 | "flat-cache": "^1.2.1", 1928 | "object-assign": "^4.0.1" 1929 | } 1930 | }, 1931 | "filename-regex": { 1932 | "version": "2.0.1", 1933 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 1934 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 1935 | "dev": true, 1936 | "optional": true 1937 | }, 1938 | "fill-range": { 1939 | "version": "2.2.3", 1940 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 1941 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 1942 | "dev": true, 1943 | "optional": true, 1944 | "requires": { 1945 | "is-number": "^2.1.0", 1946 | "isobject": "^2.0.0", 1947 | "randomatic": "^1.1.3", 1948 | "repeat-element": "^1.1.2", 1949 | "repeat-string": "^1.5.2" 1950 | } 1951 | }, 1952 | "find-root": { 1953 | "version": "1.1.0", 1954 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", 1955 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", 1956 | "dev": true 1957 | }, 1958 | "find-up": { 1959 | "version": "1.1.2", 1960 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 1961 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 1962 | "dev": true, 1963 | "requires": { 1964 | "path-exists": "^2.0.0", 1965 | "pinkie-promise": "^2.0.0" 1966 | } 1967 | }, 1968 | "flat-cache": { 1969 | "version": "1.2.2", 1970 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", 1971 | "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", 1972 | "dev": true, 1973 | "requires": { 1974 | "circular-json": "^0.3.1", 1975 | "del": "^2.0.2", 1976 | "graceful-fs": "^4.1.2", 1977 | "write": "^0.2.1" 1978 | } 1979 | }, 1980 | "for-in": { 1981 | "version": "1.0.2", 1982 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1983 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1984 | "dev": true, 1985 | "optional": true 1986 | }, 1987 | "for-own": { 1988 | "version": "0.1.5", 1989 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 1990 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 1991 | "dev": true, 1992 | "optional": true, 1993 | "requires": { 1994 | "for-in": "^1.0.1" 1995 | } 1996 | }, 1997 | "foreach": { 1998 | "version": "2.0.5", 1999 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 2000 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", 2001 | "dev": true 2002 | }, 2003 | "from": { 2004 | "version": "0.1.7", 2005 | "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", 2006 | "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=", 2007 | "dev": true 2008 | }, 2009 | "fs-readdir-recursive": { 2010 | "version": "1.0.0", 2011 | "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", 2012 | "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=", 2013 | "dev": true 2014 | }, 2015 | "fs.realpath": { 2016 | "version": "1.0.0", 2017 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2018 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 2019 | "dev": true 2020 | }, 2021 | "fsevents": { 2022 | "version": "1.1.2", 2023 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", 2024 | "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", 2025 | "dev": true, 2026 | "optional": true, 2027 | "requires": { 2028 | "nan": "^2.3.0", 2029 | "node-pre-gyp": "^0.6.36" 2030 | }, 2031 | "dependencies": { 2032 | "abbrev": { 2033 | "version": "1.1.0", 2034 | "bundled": true, 2035 | "dev": true, 2036 | "optional": true 2037 | }, 2038 | "ajv": { 2039 | "version": "4.11.8", 2040 | "bundled": true, 2041 | "dev": true, 2042 | "optional": true, 2043 | "requires": { 2044 | "co": "^4.6.0", 2045 | "json-stable-stringify": "^1.0.1" 2046 | } 2047 | }, 2048 | "ansi-regex": { 2049 | "version": "2.1.1", 2050 | "bundled": true, 2051 | "dev": true 2052 | }, 2053 | "aproba": { 2054 | "version": "1.1.1", 2055 | "bundled": true, 2056 | "dev": true, 2057 | "optional": true 2058 | }, 2059 | "are-we-there-yet": { 2060 | "version": "1.1.4", 2061 | "bundled": true, 2062 | "dev": true, 2063 | "optional": true, 2064 | "requires": { 2065 | "delegates": "^1.0.0", 2066 | "readable-stream": "^2.0.6" 2067 | } 2068 | }, 2069 | "asn1": { 2070 | "version": "0.2.3", 2071 | "bundled": true, 2072 | "dev": true, 2073 | "optional": true 2074 | }, 2075 | "assert-plus": { 2076 | "version": "0.2.0", 2077 | "bundled": true, 2078 | "dev": true, 2079 | "optional": true 2080 | }, 2081 | "asynckit": { 2082 | "version": "0.4.0", 2083 | "bundled": true, 2084 | "dev": true, 2085 | "optional": true 2086 | }, 2087 | "aws-sign2": { 2088 | "version": "0.6.0", 2089 | "bundled": true, 2090 | "dev": true, 2091 | "optional": true 2092 | }, 2093 | "aws4": { 2094 | "version": "1.6.0", 2095 | "bundled": true, 2096 | "dev": true, 2097 | "optional": true 2098 | }, 2099 | "balanced-match": { 2100 | "version": "0.4.2", 2101 | "bundled": true, 2102 | "dev": true 2103 | }, 2104 | "bcrypt-pbkdf": { 2105 | "version": "1.0.1", 2106 | "bundled": true, 2107 | "dev": true, 2108 | "optional": true, 2109 | "requires": { 2110 | "tweetnacl": "^0.14.3" 2111 | } 2112 | }, 2113 | "block-stream": { 2114 | "version": "0.0.9", 2115 | "bundled": true, 2116 | "dev": true, 2117 | "requires": { 2118 | "inherits": "~2.0.0" 2119 | } 2120 | }, 2121 | "boom": { 2122 | "version": "2.10.1", 2123 | "bundled": true, 2124 | "dev": true, 2125 | "requires": { 2126 | "hoek": "2.x.x" 2127 | } 2128 | }, 2129 | "brace-expansion": { 2130 | "version": "1.1.7", 2131 | "bundled": true, 2132 | "dev": true, 2133 | "requires": { 2134 | "balanced-match": "^0.4.1", 2135 | "concat-map": "0.0.1" 2136 | } 2137 | }, 2138 | "buffer-shims": { 2139 | "version": "1.0.0", 2140 | "bundled": true, 2141 | "dev": true 2142 | }, 2143 | "caseless": { 2144 | "version": "0.12.0", 2145 | "bundled": true, 2146 | "dev": true, 2147 | "optional": true 2148 | }, 2149 | "co": { 2150 | "version": "4.6.0", 2151 | "bundled": true, 2152 | "dev": true, 2153 | "optional": true 2154 | }, 2155 | "code-point-at": { 2156 | "version": "1.1.0", 2157 | "bundled": true, 2158 | "dev": true 2159 | }, 2160 | "combined-stream": { 2161 | "version": "1.0.5", 2162 | "bundled": true, 2163 | "dev": true, 2164 | "requires": { 2165 | "delayed-stream": "~1.0.0" 2166 | } 2167 | }, 2168 | "concat-map": { 2169 | "version": "0.0.1", 2170 | "bundled": true, 2171 | "dev": true 2172 | }, 2173 | "console-control-strings": { 2174 | "version": "1.1.0", 2175 | "bundled": true, 2176 | "dev": true 2177 | }, 2178 | "core-util-is": { 2179 | "version": "1.0.2", 2180 | "bundled": true, 2181 | "dev": true 2182 | }, 2183 | "cryptiles": { 2184 | "version": "2.0.5", 2185 | "bundled": true, 2186 | "dev": true, 2187 | "optional": true, 2188 | "requires": { 2189 | "boom": "2.x.x" 2190 | } 2191 | }, 2192 | "dashdash": { 2193 | "version": "1.14.1", 2194 | "bundled": true, 2195 | "dev": true, 2196 | "optional": true, 2197 | "requires": { 2198 | "assert-plus": "^1.0.0" 2199 | }, 2200 | "dependencies": { 2201 | "assert-plus": { 2202 | "version": "1.0.0", 2203 | "bundled": true, 2204 | "dev": true, 2205 | "optional": true 2206 | } 2207 | } 2208 | }, 2209 | "debug": { 2210 | "version": "2.6.8", 2211 | "bundled": true, 2212 | "dev": true, 2213 | "optional": true, 2214 | "requires": { 2215 | "ms": "2.0.0" 2216 | } 2217 | }, 2218 | "deep-extend": { 2219 | "version": "0.4.2", 2220 | "bundled": true, 2221 | "dev": true, 2222 | "optional": true 2223 | }, 2224 | "delayed-stream": { 2225 | "version": "1.0.0", 2226 | "bundled": true, 2227 | "dev": true 2228 | }, 2229 | "delegates": { 2230 | "version": "1.0.0", 2231 | "bundled": true, 2232 | "dev": true, 2233 | "optional": true 2234 | }, 2235 | "ecc-jsbn": { 2236 | "version": "0.1.1", 2237 | "bundled": true, 2238 | "dev": true, 2239 | "optional": true, 2240 | "requires": { 2241 | "jsbn": "~0.1.0" 2242 | } 2243 | }, 2244 | "extend": { 2245 | "version": "3.0.1", 2246 | "bundled": true, 2247 | "dev": true, 2248 | "optional": true 2249 | }, 2250 | "extsprintf": { 2251 | "version": "1.0.2", 2252 | "bundled": true, 2253 | "dev": true 2254 | }, 2255 | "forever-agent": { 2256 | "version": "0.6.1", 2257 | "bundled": true, 2258 | "dev": true, 2259 | "optional": true 2260 | }, 2261 | "form-data": { 2262 | "version": "2.1.4", 2263 | "bundled": true, 2264 | "dev": true, 2265 | "optional": true, 2266 | "requires": { 2267 | "asynckit": "^0.4.0", 2268 | "combined-stream": "^1.0.5", 2269 | "mime-types": "^2.1.12" 2270 | } 2271 | }, 2272 | "fs.realpath": { 2273 | "version": "1.0.0", 2274 | "bundled": true, 2275 | "dev": true 2276 | }, 2277 | "fstream": { 2278 | "version": "1.0.11", 2279 | "bundled": true, 2280 | "dev": true, 2281 | "requires": { 2282 | "graceful-fs": "^4.1.2", 2283 | "inherits": "~2.0.0", 2284 | "mkdirp": ">=0.5 0", 2285 | "rimraf": "2" 2286 | } 2287 | }, 2288 | "fstream-ignore": { 2289 | "version": "1.0.5", 2290 | "bundled": true, 2291 | "dev": true, 2292 | "optional": true, 2293 | "requires": { 2294 | "fstream": "^1.0.0", 2295 | "inherits": "2", 2296 | "minimatch": "^3.0.0" 2297 | } 2298 | }, 2299 | "gauge": { 2300 | "version": "2.7.4", 2301 | "bundled": true, 2302 | "dev": true, 2303 | "optional": true, 2304 | "requires": { 2305 | "aproba": "^1.0.3", 2306 | "console-control-strings": "^1.0.0", 2307 | "has-unicode": "^2.0.0", 2308 | "object-assign": "^4.1.0", 2309 | "signal-exit": "^3.0.0", 2310 | "string-width": "^1.0.1", 2311 | "strip-ansi": "^3.0.1", 2312 | "wide-align": "^1.1.0" 2313 | } 2314 | }, 2315 | "getpass": { 2316 | "version": "0.1.7", 2317 | "bundled": true, 2318 | "dev": true, 2319 | "optional": true, 2320 | "requires": { 2321 | "assert-plus": "^1.0.0" 2322 | }, 2323 | "dependencies": { 2324 | "assert-plus": { 2325 | "version": "1.0.0", 2326 | "bundled": true, 2327 | "dev": true, 2328 | "optional": true 2329 | } 2330 | } 2331 | }, 2332 | "glob": { 2333 | "version": "7.1.2", 2334 | "bundled": true, 2335 | "dev": true, 2336 | "requires": { 2337 | "fs.realpath": "^1.0.0", 2338 | "inflight": "^1.0.4", 2339 | "inherits": "2", 2340 | "minimatch": "^3.0.4", 2341 | "once": "^1.3.0", 2342 | "path-is-absolute": "^1.0.0" 2343 | } 2344 | }, 2345 | "graceful-fs": { 2346 | "version": "4.1.11", 2347 | "bundled": true, 2348 | "dev": true 2349 | }, 2350 | "har-schema": { 2351 | "version": "1.0.5", 2352 | "bundled": true, 2353 | "dev": true, 2354 | "optional": true 2355 | }, 2356 | "har-validator": { 2357 | "version": "4.2.1", 2358 | "bundled": true, 2359 | "dev": true, 2360 | "optional": true, 2361 | "requires": { 2362 | "ajv": "^4.9.1", 2363 | "har-schema": "^1.0.5" 2364 | } 2365 | }, 2366 | "has-unicode": { 2367 | "version": "2.0.1", 2368 | "bundled": true, 2369 | "dev": true, 2370 | "optional": true 2371 | }, 2372 | "hawk": { 2373 | "version": "3.1.3", 2374 | "bundled": true, 2375 | "dev": true, 2376 | "optional": true, 2377 | "requires": { 2378 | "boom": "2.x.x", 2379 | "cryptiles": "2.x.x", 2380 | "hoek": "2.x.x", 2381 | "sntp": "1.x.x" 2382 | } 2383 | }, 2384 | "hoek": { 2385 | "version": "2.16.3", 2386 | "bundled": true, 2387 | "dev": true 2388 | }, 2389 | "http-signature": { 2390 | "version": "1.1.1", 2391 | "bundled": true, 2392 | "dev": true, 2393 | "optional": true, 2394 | "requires": { 2395 | "assert-plus": "^0.2.0", 2396 | "jsprim": "^1.2.2", 2397 | "sshpk": "^1.7.0" 2398 | } 2399 | }, 2400 | "inflight": { 2401 | "version": "1.0.6", 2402 | "bundled": true, 2403 | "dev": true, 2404 | "requires": { 2405 | "once": "^1.3.0", 2406 | "wrappy": "1" 2407 | } 2408 | }, 2409 | "inherits": { 2410 | "version": "2.0.3", 2411 | "bundled": true, 2412 | "dev": true 2413 | }, 2414 | "ini": { 2415 | "version": "1.3.4", 2416 | "bundled": true, 2417 | "dev": true, 2418 | "optional": true 2419 | }, 2420 | "is-fullwidth-code-point": { 2421 | "version": "1.0.0", 2422 | "bundled": true, 2423 | "dev": true, 2424 | "requires": { 2425 | "number-is-nan": "^1.0.0" 2426 | } 2427 | }, 2428 | "is-typedarray": { 2429 | "version": "1.0.0", 2430 | "bundled": true, 2431 | "dev": true, 2432 | "optional": true 2433 | }, 2434 | "isarray": { 2435 | "version": "1.0.0", 2436 | "bundled": true, 2437 | "dev": true 2438 | }, 2439 | "isstream": { 2440 | "version": "0.1.2", 2441 | "bundled": true, 2442 | "dev": true, 2443 | "optional": true 2444 | }, 2445 | "jodid25519": { 2446 | "version": "1.0.2", 2447 | "bundled": true, 2448 | "dev": true, 2449 | "optional": true, 2450 | "requires": { 2451 | "jsbn": "~0.1.0" 2452 | } 2453 | }, 2454 | "jsbn": { 2455 | "version": "0.1.1", 2456 | "bundled": true, 2457 | "dev": true, 2458 | "optional": true 2459 | }, 2460 | "json-schema": { 2461 | "version": "0.2.3", 2462 | "bundled": true, 2463 | "dev": true, 2464 | "optional": true 2465 | }, 2466 | "json-stable-stringify": { 2467 | "version": "1.0.1", 2468 | "bundled": true, 2469 | "dev": true, 2470 | "optional": true, 2471 | "requires": { 2472 | "jsonify": "~0.0.0" 2473 | } 2474 | }, 2475 | "json-stringify-safe": { 2476 | "version": "5.0.1", 2477 | "bundled": true, 2478 | "dev": true, 2479 | "optional": true 2480 | }, 2481 | "jsonify": { 2482 | "version": "0.0.0", 2483 | "bundled": true, 2484 | "dev": true, 2485 | "optional": true 2486 | }, 2487 | "jsprim": { 2488 | "version": "1.4.0", 2489 | "bundled": true, 2490 | "dev": true, 2491 | "optional": true, 2492 | "requires": { 2493 | "assert-plus": "1.0.0", 2494 | "extsprintf": "1.0.2", 2495 | "json-schema": "0.2.3", 2496 | "verror": "1.3.6" 2497 | }, 2498 | "dependencies": { 2499 | "assert-plus": { 2500 | "version": "1.0.0", 2501 | "bundled": true, 2502 | "dev": true, 2503 | "optional": true 2504 | } 2505 | } 2506 | }, 2507 | "mime-db": { 2508 | "version": "1.27.0", 2509 | "bundled": true, 2510 | "dev": true 2511 | }, 2512 | "mime-types": { 2513 | "version": "2.1.15", 2514 | "bundled": true, 2515 | "dev": true, 2516 | "requires": { 2517 | "mime-db": "~1.27.0" 2518 | } 2519 | }, 2520 | "minimatch": { 2521 | "version": "3.0.4", 2522 | "bundled": true, 2523 | "dev": true, 2524 | "requires": { 2525 | "brace-expansion": "^1.1.7" 2526 | } 2527 | }, 2528 | "minimist": { 2529 | "version": "0.0.8", 2530 | "bundled": true, 2531 | "dev": true 2532 | }, 2533 | "mkdirp": { 2534 | "version": "0.5.1", 2535 | "bundled": true, 2536 | "dev": true, 2537 | "requires": { 2538 | "minimist": "0.0.8" 2539 | } 2540 | }, 2541 | "ms": { 2542 | "version": "2.0.0", 2543 | "bundled": true, 2544 | "dev": true, 2545 | "optional": true 2546 | }, 2547 | "node-pre-gyp": { 2548 | "version": "0.6.36", 2549 | "bundled": true, 2550 | "dev": true, 2551 | "optional": true, 2552 | "requires": { 2553 | "mkdirp": "^0.5.1", 2554 | "nopt": "^4.0.1", 2555 | "npmlog": "^4.0.2", 2556 | "rc": "^1.1.7", 2557 | "request": "^2.81.0", 2558 | "rimraf": "^2.6.1", 2559 | "semver": "^5.3.0", 2560 | "tar": "^2.2.1", 2561 | "tar-pack": "^3.4.0" 2562 | } 2563 | }, 2564 | "nopt": { 2565 | "version": "4.0.1", 2566 | "bundled": true, 2567 | "dev": true, 2568 | "optional": true, 2569 | "requires": { 2570 | "abbrev": "1", 2571 | "osenv": "^0.1.4" 2572 | } 2573 | }, 2574 | "npmlog": { 2575 | "version": "4.1.0", 2576 | "bundled": true, 2577 | "dev": true, 2578 | "optional": true, 2579 | "requires": { 2580 | "are-we-there-yet": "~1.1.2", 2581 | "console-control-strings": "~1.1.0", 2582 | "gauge": "~2.7.3", 2583 | "set-blocking": "~2.0.0" 2584 | } 2585 | }, 2586 | "number-is-nan": { 2587 | "version": "1.0.1", 2588 | "bundled": true, 2589 | "dev": true 2590 | }, 2591 | "oauth-sign": { 2592 | "version": "0.8.2", 2593 | "bundled": true, 2594 | "dev": true, 2595 | "optional": true 2596 | }, 2597 | "object-assign": { 2598 | "version": "4.1.1", 2599 | "bundled": true, 2600 | "dev": true, 2601 | "optional": true 2602 | }, 2603 | "once": { 2604 | "version": "1.4.0", 2605 | "bundled": true, 2606 | "dev": true, 2607 | "requires": { 2608 | "wrappy": "1" 2609 | } 2610 | }, 2611 | "os-homedir": { 2612 | "version": "1.0.2", 2613 | "bundled": true, 2614 | "dev": true, 2615 | "optional": true 2616 | }, 2617 | "os-tmpdir": { 2618 | "version": "1.0.2", 2619 | "bundled": true, 2620 | "dev": true, 2621 | "optional": true 2622 | }, 2623 | "osenv": { 2624 | "version": "0.1.4", 2625 | "bundled": true, 2626 | "dev": true, 2627 | "optional": true, 2628 | "requires": { 2629 | "os-homedir": "^1.0.0", 2630 | "os-tmpdir": "^1.0.0" 2631 | } 2632 | }, 2633 | "path-is-absolute": { 2634 | "version": "1.0.1", 2635 | "bundled": true, 2636 | "dev": true 2637 | }, 2638 | "performance-now": { 2639 | "version": "0.2.0", 2640 | "bundled": true, 2641 | "dev": true, 2642 | "optional": true 2643 | }, 2644 | "process-nextick-args": { 2645 | "version": "1.0.7", 2646 | "bundled": true, 2647 | "dev": true 2648 | }, 2649 | "punycode": { 2650 | "version": "1.4.1", 2651 | "bundled": true, 2652 | "dev": true, 2653 | "optional": true 2654 | }, 2655 | "qs": { 2656 | "version": "6.4.0", 2657 | "bundled": true, 2658 | "dev": true, 2659 | "optional": true 2660 | }, 2661 | "rc": { 2662 | "version": "1.2.1", 2663 | "bundled": true, 2664 | "dev": true, 2665 | "optional": true, 2666 | "requires": { 2667 | "deep-extend": "~0.4.0", 2668 | "ini": "~1.3.0", 2669 | "minimist": "^1.2.0", 2670 | "strip-json-comments": "~2.0.1" 2671 | }, 2672 | "dependencies": { 2673 | "minimist": { 2674 | "version": "1.2.0", 2675 | "bundled": true, 2676 | "dev": true, 2677 | "optional": true 2678 | } 2679 | } 2680 | }, 2681 | "readable-stream": { 2682 | "version": "2.2.9", 2683 | "bundled": true, 2684 | "dev": true, 2685 | "requires": { 2686 | "buffer-shims": "~1.0.0", 2687 | "core-util-is": "~1.0.0", 2688 | "inherits": "~2.0.1", 2689 | "isarray": "~1.0.0", 2690 | "process-nextick-args": "~1.0.6", 2691 | "string_decoder": "~1.0.0", 2692 | "util-deprecate": "~1.0.1" 2693 | } 2694 | }, 2695 | "request": { 2696 | "version": "2.81.0", 2697 | "bundled": true, 2698 | "dev": true, 2699 | "optional": true, 2700 | "requires": { 2701 | "aws-sign2": "~0.6.0", 2702 | "aws4": "^1.2.1", 2703 | "caseless": "~0.12.0", 2704 | "combined-stream": "~1.0.5", 2705 | "extend": "~3.0.0", 2706 | "forever-agent": "~0.6.1", 2707 | "form-data": "~2.1.1", 2708 | "har-validator": "~4.2.1", 2709 | "hawk": "~3.1.3", 2710 | "http-signature": "~1.1.0", 2711 | "is-typedarray": "~1.0.0", 2712 | "isstream": "~0.1.2", 2713 | "json-stringify-safe": "~5.0.1", 2714 | "mime-types": "~2.1.7", 2715 | "oauth-sign": "~0.8.1", 2716 | "performance-now": "^0.2.0", 2717 | "qs": "~6.4.0", 2718 | "safe-buffer": "^5.0.1", 2719 | "stringstream": "~0.0.4", 2720 | "tough-cookie": "~2.3.0", 2721 | "tunnel-agent": "^0.6.0", 2722 | "uuid": "^3.0.0" 2723 | } 2724 | }, 2725 | "rimraf": { 2726 | "version": "2.6.1", 2727 | "bundled": true, 2728 | "dev": true, 2729 | "requires": { 2730 | "glob": "^7.0.5" 2731 | } 2732 | }, 2733 | "safe-buffer": { 2734 | "version": "5.0.1", 2735 | "bundled": true, 2736 | "dev": true 2737 | }, 2738 | "semver": { 2739 | "version": "5.3.0", 2740 | "bundled": true, 2741 | "dev": true, 2742 | "optional": true 2743 | }, 2744 | "set-blocking": { 2745 | "version": "2.0.0", 2746 | "bundled": true, 2747 | "dev": true, 2748 | "optional": true 2749 | }, 2750 | "signal-exit": { 2751 | "version": "3.0.2", 2752 | "bundled": true, 2753 | "dev": true, 2754 | "optional": true 2755 | }, 2756 | "sntp": { 2757 | "version": "1.0.9", 2758 | "bundled": true, 2759 | "dev": true, 2760 | "optional": true, 2761 | "requires": { 2762 | "hoek": "2.x.x" 2763 | } 2764 | }, 2765 | "sshpk": { 2766 | "version": "1.13.0", 2767 | "bundled": true, 2768 | "dev": true, 2769 | "optional": true, 2770 | "requires": { 2771 | "asn1": "~0.2.3", 2772 | "assert-plus": "^1.0.0", 2773 | "bcrypt-pbkdf": "^1.0.0", 2774 | "dashdash": "^1.12.0", 2775 | "ecc-jsbn": "~0.1.1", 2776 | "getpass": "^0.1.1", 2777 | "jodid25519": "^1.0.0", 2778 | "jsbn": "~0.1.0", 2779 | "tweetnacl": "~0.14.0" 2780 | }, 2781 | "dependencies": { 2782 | "assert-plus": { 2783 | "version": "1.0.0", 2784 | "bundled": true, 2785 | "dev": true, 2786 | "optional": true 2787 | } 2788 | } 2789 | }, 2790 | "string-width": { 2791 | "version": "1.0.2", 2792 | "bundled": true, 2793 | "dev": true, 2794 | "requires": { 2795 | "code-point-at": "^1.0.0", 2796 | "is-fullwidth-code-point": "^1.0.0", 2797 | "strip-ansi": "^3.0.0" 2798 | } 2799 | }, 2800 | "string_decoder": { 2801 | "version": "1.0.1", 2802 | "bundled": true, 2803 | "dev": true, 2804 | "requires": { 2805 | "safe-buffer": "^5.0.1" 2806 | } 2807 | }, 2808 | "stringstream": { 2809 | "version": "0.0.5", 2810 | "bundled": true, 2811 | "dev": true, 2812 | "optional": true 2813 | }, 2814 | "strip-ansi": { 2815 | "version": "3.0.1", 2816 | "bundled": true, 2817 | "dev": true, 2818 | "requires": { 2819 | "ansi-regex": "^2.0.0" 2820 | } 2821 | }, 2822 | "strip-json-comments": { 2823 | "version": "2.0.1", 2824 | "bundled": true, 2825 | "dev": true, 2826 | "optional": true 2827 | }, 2828 | "tar": { 2829 | "version": "2.2.1", 2830 | "bundled": true, 2831 | "dev": true, 2832 | "requires": { 2833 | "block-stream": "*", 2834 | "fstream": "^1.0.2", 2835 | "inherits": "2" 2836 | } 2837 | }, 2838 | "tar-pack": { 2839 | "version": "3.4.0", 2840 | "bundled": true, 2841 | "dev": true, 2842 | "optional": true, 2843 | "requires": { 2844 | "debug": "^2.2.0", 2845 | "fstream": "^1.0.10", 2846 | "fstream-ignore": "^1.0.5", 2847 | "once": "^1.3.3", 2848 | "readable-stream": "^2.1.4", 2849 | "rimraf": "^2.5.1", 2850 | "tar": "^2.2.1", 2851 | "uid-number": "^0.0.6" 2852 | } 2853 | }, 2854 | "tough-cookie": { 2855 | "version": "2.3.2", 2856 | "bundled": true, 2857 | "dev": true, 2858 | "optional": true, 2859 | "requires": { 2860 | "punycode": "^1.4.1" 2861 | } 2862 | }, 2863 | "tunnel-agent": { 2864 | "version": "0.6.0", 2865 | "bundled": true, 2866 | "dev": true, 2867 | "optional": true, 2868 | "requires": { 2869 | "safe-buffer": "^5.0.1" 2870 | } 2871 | }, 2872 | "tweetnacl": { 2873 | "version": "0.14.5", 2874 | "bundled": true, 2875 | "dev": true, 2876 | "optional": true 2877 | }, 2878 | "uid-number": { 2879 | "version": "0.0.6", 2880 | "bundled": true, 2881 | "dev": true, 2882 | "optional": true 2883 | }, 2884 | "util-deprecate": { 2885 | "version": "1.0.2", 2886 | "bundled": true, 2887 | "dev": true 2888 | }, 2889 | "uuid": { 2890 | "version": "3.0.1", 2891 | "bundled": true, 2892 | "dev": true, 2893 | "optional": true 2894 | }, 2895 | "verror": { 2896 | "version": "1.3.6", 2897 | "bundled": true, 2898 | "dev": true, 2899 | "optional": true, 2900 | "requires": { 2901 | "extsprintf": "1.0.2" 2902 | } 2903 | }, 2904 | "wide-align": { 2905 | "version": "1.1.2", 2906 | "bundled": true, 2907 | "dev": true, 2908 | "optional": true, 2909 | "requires": { 2910 | "string-width": "^1.0.2" 2911 | } 2912 | }, 2913 | "wrappy": { 2914 | "version": "1.0.2", 2915 | "bundled": true, 2916 | "dev": true 2917 | } 2918 | } 2919 | }, 2920 | "function-bind": { 2921 | "version": "1.1.0", 2922 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", 2923 | "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", 2924 | "dev": true 2925 | }, 2926 | "generate-function": { 2927 | "version": "2.0.0", 2928 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", 2929 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", 2930 | "dev": true 2931 | }, 2932 | "generate-object-property": { 2933 | "version": "1.2.0", 2934 | "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 2935 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", 2936 | "dev": true, 2937 | "requires": { 2938 | "is-property": "^1.0.0" 2939 | } 2940 | }, 2941 | "get-func-name": { 2942 | "version": "2.0.0", 2943 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 2944 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 2945 | "dev": true 2946 | }, 2947 | "get-stdin": { 2948 | "version": "5.0.1", 2949 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", 2950 | "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", 2951 | "dev": true 2952 | }, 2953 | "glob": { 2954 | "version": "7.1.2", 2955 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 2956 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 2957 | "dev": true, 2958 | "requires": { 2959 | "fs.realpath": "^1.0.0", 2960 | "inflight": "^1.0.4", 2961 | "inherits": "2", 2962 | "minimatch": "^3.0.4", 2963 | "once": "^1.3.0", 2964 | "path-is-absolute": "^1.0.0" 2965 | } 2966 | }, 2967 | "glob-base": { 2968 | "version": "0.3.0", 2969 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 2970 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 2971 | "dev": true, 2972 | "optional": true, 2973 | "requires": { 2974 | "glob-parent": "^2.0.0", 2975 | "is-glob": "^2.0.0" 2976 | } 2977 | }, 2978 | "glob-parent": { 2979 | "version": "2.0.0", 2980 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 2981 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 2982 | "dev": true, 2983 | "requires": { 2984 | "is-glob": "^2.0.0" 2985 | } 2986 | }, 2987 | "globals": { 2988 | "version": "9.18.0", 2989 | "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 2990 | "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", 2991 | "dev": true 2992 | }, 2993 | "globby": { 2994 | "version": "5.0.0", 2995 | "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 2996 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", 2997 | "dev": true, 2998 | "requires": { 2999 | "array-union": "^1.0.1", 3000 | "arrify": "^1.0.0", 3001 | "glob": "^7.0.3", 3002 | "object-assign": "^4.0.1", 3003 | "pify": "^2.0.0", 3004 | "pinkie-promise": "^2.0.0" 3005 | } 3006 | }, 3007 | "graceful-fs": { 3008 | "version": "4.1.11", 3009 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 3010 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 3011 | "dev": true 3012 | }, 3013 | "graceful-readlink": { 3014 | "version": "1.0.1", 3015 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 3016 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", 3017 | "dev": true 3018 | }, 3019 | "growl": { 3020 | "version": "1.9.2", 3021 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 3022 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 3023 | "dev": true 3024 | }, 3025 | "has": { 3026 | "version": "1.0.1", 3027 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 3028 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 3029 | "dev": true, 3030 | "requires": { 3031 | "function-bind": "^1.0.2" 3032 | } 3033 | }, 3034 | "has-ansi": { 3035 | "version": "2.0.0", 3036 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 3037 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 3038 | "dev": true, 3039 | "requires": { 3040 | "ansi-regex": "^2.0.0" 3041 | } 3042 | }, 3043 | "has-binary2": { 3044 | "version": "1.0.2", 3045 | "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz", 3046 | "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=", 3047 | "dev": true, 3048 | "requires": { 3049 | "isarray": "2.0.1" 3050 | }, 3051 | "dependencies": { 3052 | "isarray": { 3053 | "version": "2.0.1", 3054 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", 3055 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", 3056 | "dev": true 3057 | } 3058 | } 3059 | }, 3060 | "has-cors": { 3061 | "version": "1.1.0", 3062 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", 3063 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", 3064 | "dev": true 3065 | }, 3066 | "has-flag": { 3067 | "version": "1.0.0", 3068 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 3069 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 3070 | "dev": true 3071 | }, 3072 | "home-or-tmp": { 3073 | "version": "2.0.0", 3074 | "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", 3075 | "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", 3076 | "dev": true, 3077 | "requires": { 3078 | "os-homedir": "^1.0.0", 3079 | "os-tmpdir": "^1.0.1" 3080 | } 3081 | }, 3082 | "hosted-git-info": { 3083 | "version": "2.5.0", 3084 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", 3085 | "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", 3086 | "dev": true 3087 | }, 3088 | "ignore": { 3089 | "version": "3.3.3", 3090 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", 3091 | "integrity": "sha1-QyNS5XrM2HqzEQ6C0/6g5HgSFW0=", 3092 | "dev": true 3093 | }, 3094 | "imurmurhash": { 3095 | "version": "0.1.4", 3096 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3097 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 3098 | "dev": true 3099 | }, 3100 | "indexof": { 3101 | "version": "0.0.1", 3102 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 3103 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", 3104 | "dev": true 3105 | }, 3106 | "inflight": { 3107 | "version": "1.0.6", 3108 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3109 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 3110 | "dev": true, 3111 | "requires": { 3112 | "once": "^1.3.0", 3113 | "wrappy": "1" 3114 | } 3115 | }, 3116 | "inherits": { 3117 | "version": "2.0.3", 3118 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 3119 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 3120 | "dev": true 3121 | }, 3122 | "inquirer": { 3123 | "version": "0.12.0", 3124 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", 3125 | "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", 3126 | "dev": true, 3127 | "requires": { 3128 | "ansi-escapes": "^1.1.0", 3129 | "ansi-regex": "^2.0.0", 3130 | "chalk": "^1.0.0", 3131 | "cli-cursor": "^1.0.1", 3132 | "cli-width": "^2.0.0", 3133 | "figures": "^1.3.5", 3134 | "lodash": "^4.3.0", 3135 | "readline2": "^1.0.1", 3136 | "run-async": "^0.1.0", 3137 | "rx-lite": "^3.1.2", 3138 | "string-width": "^1.0.1", 3139 | "strip-ansi": "^3.0.0", 3140 | "through": "^2.3.6" 3141 | } 3142 | }, 3143 | "interpret": { 3144 | "version": "1.0.3", 3145 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", 3146 | "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", 3147 | "dev": true 3148 | }, 3149 | "invariant": { 3150 | "version": "2.2.2", 3151 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", 3152 | "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", 3153 | "dev": true, 3154 | "requires": { 3155 | "loose-envify": "^1.0.0" 3156 | } 3157 | }, 3158 | "is-arrayish": { 3159 | "version": "0.2.1", 3160 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 3161 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 3162 | "dev": true 3163 | }, 3164 | "is-binary-path": { 3165 | "version": "1.0.1", 3166 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 3167 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 3168 | "dev": true, 3169 | "optional": true, 3170 | "requires": { 3171 | "binary-extensions": "^1.0.0" 3172 | } 3173 | }, 3174 | "is-buffer": { 3175 | "version": "1.1.5", 3176 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", 3177 | "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", 3178 | "dev": true 3179 | }, 3180 | "is-builtin-module": { 3181 | "version": "1.0.0", 3182 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 3183 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 3184 | "dev": true, 3185 | "requires": { 3186 | "builtin-modules": "^1.0.0" 3187 | } 3188 | }, 3189 | "is-callable": { 3190 | "version": "1.1.3", 3191 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", 3192 | "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=", 3193 | "dev": true 3194 | }, 3195 | "is-date-object": { 3196 | "version": "1.0.1", 3197 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 3198 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 3199 | "dev": true 3200 | }, 3201 | "is-dotfile": { 3202 | "version": "1.0.3", 3203 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 3204 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 3205 | "dev": true, 3206 | "optional": true 3207 | }, 3208 | "is-equal-shallow": { 3209 | "version": "0.1.3", 3210 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 3211 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 3212 | "dev": true, 3213 | "optional": true, 3214 | "requires": { 3215 | "is-primitive": "^2.0.0" 3216 | } 3217 | }, 3218 | "is-extendable": { 3219 | "version": "0.1.1", 3220 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 3221 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 3222 | "dev": true, 3223 | "optional": true 3224 | }, 3225 | "is-extglob": { 3226 | "version": "1.0.0", 3227 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 3228 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 3229 | "dev": true 3230 | }, 3231 | "is-finite": { 3232 | "version": "1.0.2", 3233 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", 3234 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", 3235 | "dev": true, 3236 | "requires": { 3237 | "number-is-nan": "^1.0.0" 3238 | } 3239 | }, 3240 | "is-fullwidth-code-point": { 3241 | "version": "1.0.0", 3242 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 3243 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 3244 | "dev": true, 3245 | "requires": { 3246 | "number-is-nan": "^1.0.0" 3247 | } 3248 | }, 3249 | "is-glob": { 3250 | "version": "2.0.1", 3251 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 3252 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 3253 | "dev": true, 3254 | "requires": { 3255 | "is-extglob": "^1.0.0" 3256 | } 3257 | }, 3258 | "is-my-json-valid": { 3259 | "version": "2.16.1", 3260 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", 3261 | "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", 3262 | "dev": true, 3263 | "requires": { 3264 | "generate-function": "^2.0.0", 3265 | "generate-object-property": "^1.1.0", 3266 | "jsonpointer": "^4.0.0", 3267 | "xtend": "^4.0.0" 3268 | } 3269 | }, 3270 | "is-number": { 3271 | "version": "2.1.0", 3272 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 3273 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 3274 | "dev": true, 3275 | "optional": true, 3276 | "requires": { 3277 | "kind-of": "^3.0.2" 3278 | } 3279 | }, 3280 | "is-path-cwd": { 3281 | "version": "1.0.0", 3282 | "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 3283 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", 3284 | "dev": true 3285 | }, 3286 | "is-path-in-cwd": { 3287 | "version": "1.0.0", 3288 | "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", 3289 | "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", 3290 | "dev": true, 3291 | "requires": { 3292 | "is-path-inside": "^1.0.0" 3293 | } 3294 | }, 3295 | "is-path-inside": { 3296 | "version": "1.0.0", 3297 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", 3298 | "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", 3299 | "dev": true, 3300 | "requires": { 3301 | "path-is-inside": "^1.0.1" 3302 | } 3303 | }, 3304 | "is-posix-bracket": { 3305 | "version": "0.1.1", 3306 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 3307 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 3308 | "dev": true, 3309 | "optional": true 3310 | }, 3311 | "is-primitive": { 3312 | "version": "2.0.0", 3313 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 3314 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 3315 | "dev": true 3316 | }, 3317 | "is-property": { 3318 | "version": "1.0.2", 3319 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 3320 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", 3321 | "dev": true 3322 | }, 3323 | "is-regex": { 3324 | "version": "1.0.4", 3325 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 3326 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 3327 | "dev": true, 3328 | "requires": { 3329 | "has": "^1.0.1" 3330 | } 3331 | }, 3332 | "is-resolvable": { 3333 | "version": "1.0.0", 3334 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", 3335 | "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", 3336 | "dev": true, 3337 | "requires": { 3338 | "tryit": "^1.0.1" 3339 | } 3340 | }, 3341 | "is-symbol": { 3342 | "version": "1.0.1", 3343 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", 3344 | "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=", 3345 | "dev": true 3346 | }, 3347 | "isarray": { 3348 | "version": "1.0.0", 3349 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 3350 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 3351 | "dev": true 3352 | }, 3353 | "isexe": { 3354 | "version": "2.0.0", 3355 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3356 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 3357 | "dev": true 3358 | }, 3359 | "isobject": { 3360 | "version": "2.1.0", 3361 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 3362 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 3363 | "dev": true, 3364 | "optional": true, 3365 | "requires": { 3366 | "isarray": "1.0.0" 3367 | } 3368 | }, 3369 | "js-tokens": { 3370 | "version": "3.0.2", 3371 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 3372 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", 3373 | "dev": true 3374 | }, 3375 | "js-yaml": { 3376 | "version": "3.9.1", 3377 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.1.tgz", 3378 | "integrity": "sha512-CbcG379L1e+mWBnLvHWWeLs8GyV/EMw862uLI3c+GxVyDHWZcjZinwuBd3iW2pgxgIlksW/1vNJa4to+RvDOww==", 3379 | "dev": true, 3380 | "requires": { 3381 | "argparse": "^1.0.7", 3382 | "esprima": "^4.0.0" 3383 | } 3384 | }, 3385 | "jsesc": { 3386 | "version": "1.3.0", 3387 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", 3388 | "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", 3389 | "dev": true 3390 | }, 3391 | "json-stable-stringify": { 3392 | "version": "1.0.1", 3393 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 3394 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 3395 | "dev": true, 3396 | "requires": { 3397 | "jsonify": "~0.0.0" 3398 | } 3399 | }, 3400 | "json3": { 3401 | "version": "3.3.2", 3402 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", 3403 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", 3404 | "dev": true 3405 | }, 3406 | "json5": { 3407 | "version": "0.5.1", 3408 | "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 3409 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 3410 | "dev": true 3411 | }, 3412 | "jsonify": { 3413 | "version": "0.0.0", 3414 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 3415 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 3416 | "dev": true 3417 | }, 3418 | "jsonpointer": { 3419 | "version": "4.0.1", 3420 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", 3421 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", 3422 | "dev": true 3423 | }, 3424 | "jsx-ast-utils": { 3425 | "version": "1.4.1", 3426 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", 3427 | "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", 3428 | "dev": true 3429 | }, 3430 | "kind-of": { 3431 | "version": "3.2.2", 3432 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3433 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3434 | "dev": true, 3435 | "requires": { 3436 | "is-buffer": "^1.1.5" 3437 | } 3438 | }, 3439 | "levn": { 3440 | "version": "0.3.0", 3441 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 3442 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 3443 | "dev": true, 3444 | "requires": { 3445 | "prelude-ls": "~1.1.2", 3446 | "type-check": "~0.3.2" 3447 | } 3448 | }, 3449 | "load-json-file": { 3450 | "version": "2.0.0", 3451 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 3452 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 3453 | "dev": true, 3454 | "requires": { 3455 | "graceful-fs": "^4.1.2", 3456 | "parse-json": "^2.2.0", 3457 | "pify": "^2.0.0", 3458 | "strip-bom": "^3.0.0" 3459 | } 3460 | }, 3461 | "locate-path": { 3462 | "version": "2.0.0", 3463 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 3464 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 3465 | "dev": true, 3466 | "requires": { 3467 | "p-locate": "^2.0.0", 3468 | "path-exists": "^3.0.0" 3469 | }, 3470 | "dependencies": { 3471 | "path-exists": { 3472 | "version": "3.0.0", 3473 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 3474 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 3475 | "dev": true 3476 | } 3477 | } 3478 | }, 3479 | "lodash": { 3480 | "version": "4.17.4", 3481 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 3482 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 3483 | "dev": true 3484 | }, 3485 | "lodash._baseassign": { 3486 | "version": "3.2.0", 3487 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", 3488 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", 3489 | "dev": true, 3490 | "requires": { 3491 | "lodash._basecopy": "^3.0.0", 3492 | "lodash.keys": "^3.0.0" 3493 | } 3494 | }, 3495 | "lodash._basecopy": { 3496 | "version": "3.0.1", 3497 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 3498 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 3499 | "dev": true 3500 | }, 3501 | "lodash._basecreate": { 3502 | "version": "3.0.3", 3503 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", 3504 | "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", 3505 | "dev": true 3506 | }, 3507 | "lodash._getnative": { 3508 | "version": "3.9.1", 3509 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 3510 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 3511 | "dev": true 3512 | }, 3513 | "lodash._isiterateecall": { 3514 | "version": "3.0.9", 3515 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 3516 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 3517 | "dev": true 3518 | }, 3519 | "lodash.cond": { 3520 | "version": "4.5.2", 3521 | "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", 3522 | "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", 3523 | "dev": true 3524 | }, 3525 | "lodash.create": { 3526 | "version": "3.1.1", 3527 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", 3528 | "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", 3529 | "dev": true, 3530 | "requires": { 3531 | "lodash._baseassign": "^3.0.0", 3532 | "lodash._basecreate": "^3.0.0", 3533 | "lodash._isiterateecall": "^3.0.0" 3534 | } 3535 | }, 3536 | "lodash.isarguments": { 3537 | "version": "3.1.0", 3538 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 3539 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 3540 | "dev": true 3541 | }, 3542 | "lodash.isarray": { 3543 | "version": "3.0.4", 3544 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 3545 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 3546 | "dev": true 3547 | }, 3548 | "lodash.keys": { 3549 | "version": "3.1.2", 3550 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 3551 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 3552 | "dev": true, 3553 | "requires": { 3554 | "lodash._getnative": "^3.0.0", 3555 | "lodash.isarguments": "^3.0.0", 3556 | "lodash.isarray": "^3.0.0" 3557 | } 3558 | }, 3559 | "loose-envify": { 3560 | "version": "1.3.1", 3561 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 3562 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 3563 | "dev": true, 3564 | "requires": { 3565 | "js-tokens": "^3.0.0" 3566 | } 3567 | }, 3568 | "lru-cache": { 3569 | "version": "4.1.1", 3570 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", 3571 | "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", 3572 | "dev": true, 3573 | "requires": { 3574 | "pseudomap": "^1.0.2", 3575 | "yallist": "^2.1.2" 3576 | } 3577 | }, 3578 | "map-stream": { 3579 | "version": "0.1.0", 3580 | "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", 3581 | "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", 3582 | "dev": true 3583 | }, 3584 | "memory-streams": { 3585 | "version": "0.1.2", 3586 | "resolved": "https://registry.npmjs.org/memory-streams/-/memory-streams-0.1.2.tgz", 3587 | "integrity": "sha1-Jz/3d6tg/sWZsRY1UlUoLMosUMI=", 3588 | "dev": true, 3589 | "requires": { 3590 | "readable-stream": "~1.0.2" 3591 | }, 3592 | "dependencies": { 3593 | "isarray": { 3594 | "version": "0.0.1", 3595 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 3596 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 3597 | "dev": true 3598 | }, 3599 | "readable-stream": { 3600 | "version": "1.0.34", 3601 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 3602 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 3603 | "dev": true, 3604 | "requires": { 3605 | "core-util-is": "~1.0.0", 3606 | "inherits": "~2.0.1", 3607 | "isarray": "0.0.1", 3608 | "string_decoder": "~0.10.x" 3609 | } 3610 | }, 3611 | "string_decoder": { 3612 | "version": "0.10.31", 3613 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 3614 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 3615 | "dev": true 3616 | } 3617 | } 3618 | }, 3619 | "micromatch": { 3620 | "version": "2.3.11", 3621 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 3622 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 3623 | "dev": true, 3624 | "optional": true, 3625 | "requires": { 3626 | "arr-diff": "^2.0.0", 3627 | "array-unique": "^0.2.1", 3628 | "braces": "^1.8.2", 3629 | "expand-brackets": "^0.1.4", 3630 | "extglob": "^0.3.1", 3631 | "filename-regex": "^2.0.0", 3632 | "is-extglob": "^1.0.0", 3633 | "is-glob": "^2.0.1", 3634 | "kind-of": "^3.0.2", 3635 | "normalize-path": "^2.0.1", 3636 | "object.omit": "^2.0.0", 3637 | "parse-glob": "^3.0.4", 3638 | "regex-cache": "^0.4.2" 3639 | } 3640 | }, 3641 | "mime-db": { 3642 | "version": "1.29.0", 3643 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", 3644 | "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=", 3645 | "dev": true 3646 | }, 3647 | "mime-types": { 3648 | "version": "2.1.16", 3649 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", 3650 | "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", 3651 | "dev": true, 3652 | "requires": { 3653 | "mime-db": "~1.29.0" 3654 | } 3655 | }, 3656 | "minimatch": { 3657 | "version": "3.0.4", 3658 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 3659 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 3660 | "dev": true, 3661 | "requires": { 3662 | "brace-expansion": "^1.1.7" 3663 | } 3664 | }, 3665 | "minimist": { 3666 | "version": "0.0.8", 3667 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 3668 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 3669 | "dev": true 3670 | }, 3671 | "mkdirp": { 3672 | "version": "0.5.1", 3673 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 3674 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 3675 | "dev": true, 3676 | "requires": { 3677 | "minimist": "0.0.8" 3678 | } 3679 | }, 3680 | "mocha": { 3681 | "version": "3.5.0", 3682 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.0.tgz", 3683 | "integrity": "sha512-pIU2PJjrPYvYRqVpjXzj76qltO9uBYI7woYAMoxbSefsa+vqAfptjoeevd6bUgwD0mPIO+hv9f7ltvsNreL2PA==", 3684 | "dev": true, 3685 | "requires": { 3686 | "browser-stdout": "1.3.0", 3687 | "commander": "2.9.0", 3688 | "debug": "2.6.8", 3689 | "diff": "3.2.0", 3690 | "escape-string-regexp": "1.0.5", 3691 | "glob": "7.1.1", 3692 | "growl": "1.9.2", 3693 | "json3": "3.3.2", 3694 | "lodash.create": "3.1.1", 3695 | "mkdirp": "0.5.1", 3696 | "supports-color": "3.1.2" 3697 | }, 3698 | "dependencies": { 3699 | "commander": { 3700 | "version": "2.9.0", 3701 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 3702 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", 3703 | "dev": true, 3704 | "requires": { 3705 | "graceful-readlink": ">= 1.0.0" 3706 | } 3707 | }, 3708 | "glob": { 3709 | "version": "7.1.1", 3710 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", 3711 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", 3712 | "dev": true, 3713 | "requires": { 3714 | "fs.realpath": "^1.0.0", 3715 | "inflight": "^1.0.4", 3716 | "inherits": "2", 3717 | "minimatch": "^3.0.2", 3718 | "once": "^1.3.0", 3719 | "path-is-absolute": "^1.0.0" 3720 | } 3721 | }, 3722 | "supports-color": { 3723 | "version": "3.1.2", 3724 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", 3725 | "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", 3726 | "dev": true, 3727 | "requires": { 3728 | "has-flag": "^1.0.0" 3729 | } 3730 | } 3731 | } 3732 | }, 3733 | "ms": { 3734 | "version": "2.0.0", 3735 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 3736 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 3737 | "dev": true 3738 | }, 3739 | "mute-stream": { 3740 | "version": "0.0.5", 3741 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", 3742 | "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", 3743 | "dev": true 3744 | }, 3745 | "nan": { 3746 | "version": "2.6.2", 3747 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", 3748 | "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", 3749 | "dev": true, 3750 | "optional": true 3751 | }, 3752 | "natural-compare": { 3753 | "version": "1.4.0", 3754 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3755 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 3756 | "dev": true 3757 | }, 3758 | "negotiator": { 3759 | "version": "0.6.1", 3760 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 3761 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", 3762 | "dev": true 3763 | }, 3764 | "normalize-package-data": { 3765 | "version": "2.4.0", 3766 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 3767 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 3768 | "dev": true, 3769 | "requires": { 3770 | "hosted-git-info": "^2.1.4", 3771 | "is-builtin-module": "^1.0.0", 3772 | "semver": "2 || 3 || 4 || 5", 3773 | "validate-npm-package-license": "^3.0.1" 3774 | } 3775 | }, 3776 | "normalize-path": { 3777 | "version": "2.1.1", 3778 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 3779 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 3780 | "dev": true, 3781 | "requires": { 3782 | "remove-trailing-separator": "^1.0.1" 3783 | } 3784 | }, 3785 | "npm-run-all": { 3786 | "version": "4.1.1", 3787 | "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.1.tgz", 3788 | "integrity": "sha512-qrmqqaJa+REbzUTIL/mHfTdgwz+gL1xUezY/ueyLa7GISZ4T3h0CH8D2r6AaZdCYN2unu7PzspP0ofpXla1ftg==", 3789 | "dev": true, 3790 | "requires": { 3791 | "ansi-styles": "^3.2.0", 3792 | "chalk": "^2.1.0", 3793 | "cross-spawn": "^5.1.0", 3794 | "memory-streams": "^0.1.2", 3795 | "minimatch": "^3.0.4", 3796 | "ps-tree": "^1.1.0", 3797 | "read-pkg": "^2.0.0", 3798 | "shell-quote": "^1.6.1", 3799 | "string.prototype.padend": "^3.0.0" 3800 | }, 3801 | "dependencies": { 3802 | "ansi-styles": { 3803 | "version": "3.2.0", 3804 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 3805 | "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", 3806 | "dev": true, 3807 | "requires": { 3808 | "color-convert": "^1.9.0" 3809 | } 3810 | }, 3811 | "chalk": { 3812 | "version": "2.1.0", 3813 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", 3814 | "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", 3815 | "dev": true, 3816 | "requires": { 3817 | "ansi-styles": "^3.1.0", 3818 | "escape-string-regexp": "^1.0.5", 3819 | "supports-color": "^4.0.0" 3820 | } 3821 | }, 3822 | "has-flag": { 3823 | "version": "2.0.0", 3824 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 3825 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 3826 | "dev": true 3827 | }, 3828 | "supports-color": { 3829 | "version": "4.4.0", 3830 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", 3831 | "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", 3832 | "dev": true, 3833 | "requires": { 3834 | "has-flag": "^2.0.0" 3835 | } 3836 | } 3837 | } 3838 | }, 3839 | "number-is-nan": { 3840 | "version": "1.0.1", 3841 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 3842 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 3843 | "dev": true 3844 | }, 3845 | "object-assign": { 3846 | "version": "4.1.1", 3847 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 3848 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 3849 | "dev": true 3850 | }, 3851 | "object-component": { 3852 | "version": "0.0.3", 3853 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", 3854 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", 3855 | "dev": true 3856 | }, 3857 | "object-keys": { 3858 | "version": "1.0.11", 3859 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", 3860 | "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", 3861 | "dev": true 3862 | }, 3863 | "object.assign": { 3864 | "version": "4.0.4", 3865 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", 3866 | "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", 3867 | "dev": true, 3868 | "requires": { 3869 | "define-properties": "^1.1.2", 3870 | "function-bind": "^1.1.0", 3871 | "object-keys": "^1.0.10" 3872 | } 3873 | }, 3874 | "object.omit": { 3875 | "version": "2.0.1", 3876 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 3877 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 3878 | "dev": true, 3879 | "optional": true, 3880 | "requires": { 3881 | "for-own": "^0.1.4", 3882 | "is-extendable": "^0.1.1" 3883 | } 3884 | }, 3885 | "once": { 3886 | "version": "1.4.0", 3887 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3888 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3889 | "dev": true, 3890 | "requires": { 3891 | "wrappy": "1" 3892 | } 3893 | }, 3894 | "onetime": { 3895 | "version": "1.1.0", 3896 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", 3897 | "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", 3898 | "dev": true 3899 | }, 3900 | "optionator": { 3901 | "version": "0.8.2", 3902 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 3903 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 3904 | "dev": true, 3905 | "requires": { 3906 | "deep-is": "~0.1.3", 3907 | "fast-levenshtein": "~2.0.4", 3908 | "levn": "~0.3.0", 3909 | "prelude-ls": "~1.1.2", 3910 | "type-check": "~0.3.2", 3911 | "wordwrap": "~1.0.0" 3912 | } 3913 | }, 3914 | "os-homedir": { 3915 | "version": "1.0.2", 3916 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 3917 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 3918 | "dev": true 3919 | }, 3920 | "os-tmpdir": { 3921 | "version": "1.0.2", 3922 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 3923 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 3924 | "dev": true 3925 | }, 3926 | "output-file-sync": { 3927 | "version": "1.1.2", 3928 | "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", 3929 | "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", 3930 | "dev": true, 3931 | "requires": { 3932 | "graceful-fs": "^4.1.4", 3933 | "mkdirp": "^0.5.1", 3934 | "object-assign": "^4.1.0" 3935 | } 3936 | }, 3937 | "p-limit": { 3938 | "version": "1.1.0", 3939 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", 3940 | "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", 3941 | "dev": true 3942 | }, 3943 | "p-locate": { 3944 | "version": "2.0.0", 3945 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 3946 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 3947 | "dev": true, 3948 | "requires": { 3949 | "p-limit": "^1.1.0" 3950 | } 3951 | }, 3952 | "parse-glob": { 3953 | "version": "3.0.4", 3954 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 3955 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 3956 | "dev": true, 3957 | "optional": true, 3958 | "requires": { 3959 | "glob-base": "^0.3.0", 3960 | "is-dotfile": "^1.0.0", 3961 | "is-extglob": "^1.0.0", 3962 | "is-glob": "^2.0.0" 3963 | } 3964 | }, 3965 | "parse-json": { 3966 | "version": "2.2.0", 3967 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 3968 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 3969 | "dev": true, 3970 | "requires": { 3971 | "error-ex": "^1.2.0" 3972 | } 3973 | }, 3974 | "parsejson": { 3975 | "version": "0.0.3", 3976 | "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", 3977 | "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", 3978 | "dev": true, 3979 | "requires": { 3980 | "better-assert": "~1.0.0" 3981 | } 3982 | }, 3983 | "parseqs": { 3984 | "version": "0.0.5", 3985 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", 3986 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", 3987 | "dev": true, 3988 | "requires": { 3989 | "better-assert": "~1.0.0" 3990 | } 3991 | }, 3992 | "parseuri": { 3993 | "version": "0.0.5", 3994 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", 3995 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", 3996 | "dev": true, 3997 | "requires": { 3998 | "better-assert": "~1.0.0" 3999 | } 4000 | }, 4001 | "path-exists": { 4002 | "version": "2.1.0", 4003 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 4004 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 4005 | "dev": true, 4006 | "requires": { 4007 | "pinkie-promise": "^2.0.0" 4008 | } 4009 | }, 4010 | "path-is-absolute": { 4011 | "version": "1.0.1", 4012 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 4013 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 4014 | "dev": true 4015 | }, 4016 | "path-is-inside": { 4017 | "version": "1.0.2", 4018 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 4019 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 4020 | "dev": true 4021 | }, 4022 | "path-parse": { 4023 | "version": "1.0.5", 4024 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 4025 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 4026 | "dev": true 4027 | }, 4028 | "path-type": { 4029 | "version": "2.0.0", 4030 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 4031 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 4032 | "dev": true, 4033 | "requires": { 4034 | "pify": "^2.0.0" 4035 | } 4036 | }, 4037 | "pathval": { 4038 | "version": "1.1.0", 4039 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 4040 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", 4041 | "dev": true 4042 | }, 4043 | "pause-stream": { 4044 | "version": "0.0.11", 4045 | "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", 4046 | "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", 4047 | "dev": true, 4048 | "requires": { 4049 | "through": "~2.3" 4050 | } 4051 | }, 4052 | "pify": { 4053 | "version": "2.3.0", 4054 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 4055 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 4056 | "dev": true 4057 | }, 4058 | "pinkie": { 4059 | "version": "2.0.4", 4060 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 4061 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 4062 | "dev": true 4063 | }, 4064 | "pinkie-promise": { 4065 | "version": "2.0.1", 4066 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 4067 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 4068 | "dev": true, 4069 | "requires": { 4070 | "pinkie": "^2.0.0" 4071 | } 4072 | }, 4073 | "pkg-conf": { 4074 | "version": "2.0.0", 4075 | "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.0.0.tgz", 4076 | "integrity": "sha1-BxyHZQQDvM+5xif1h1G/5HwGcnk=", 4077 | "dev": true, 4078 | "requires": { 4079 | "find-up": "^2.0.0", 4080 | "load-json-file": "^2.0.0" 4081 | }, 4082 | "dependencies": { 4083 | "find-up": { 4084 | "version": "2.1.0", 4085 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 4086 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 4087 | "dev": true, 4088 | "requires": { 4089 | "locate-path": "^2.0.0" 4090 | } 4091 | } 4092 | } 4093 | }, 4094 | "pkg-config": { 4095 | "version": "1.1.1", 4096 | "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", 4097 | "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", 4098 | "dev": true, 4099 | "requires": { 4100 | "debug-log": "^1.0.0", 4101 | "find-root": "^1.0.0", 4102 | "xtend": "^4.0.1" 4103 | } 4104 | }, 4105 | "pkg-dir": { 4106 | "version": "1.0.0", 4107 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", 4108 | "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", 4109 | "dev": true, 4110 | "requires": { 4111 | "find-up": "^1.0.0" 4112 | } 4113 | }, 4114 | "pkg-up": { 4115 | "version": "1.0.0", 4116 | "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", 4117 | "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", 4118 | "dev": true, 4119 | "requires": { 4120 | "find-up": "^1.0.0" 4121 | } 4122 | }, 4123 | "pluralize": { 4124 | "version": "1.2.1", 4125 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", 4126 | "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", 4127 | "dev": true 4128 | }, 4129 | "prelude-ls": { 4130 | "version": "1.1.2", 4131 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 4132 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 4133 | "dev": true 4134 | }, 4135 | "preserve": { 4136 | "version": "0.2.0", 4137 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 4138 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 4139 | "dev": true, 4140 | "optional": true 4141 | }, 4142 | "private": { 4143 | "version": "0.1.7", 4144 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", 4145 | "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", 4146 | "dev": true 4147 | }, 4148 | "process-nextick-args": { 4149 | "version": "1.0.7", 4150 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 4151 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 4152 | "dev": true 4153 | }, 4154 | "progress": { 4155 | "version": "1.1.8", 4156 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 4157 | "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", 4158 | "dev": true 4159 | }, 4160 | "ps-tree": { 4161 | "version": "1.1.0", 4162 | "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", 4163 | "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", 4164 | "dev": true, 4165 | "requires": { 4166 | "event-stream": "~3.3.0" 4167 | } 4168 | }, 4169 | "pseudomap": { 4170 | "version": "1.0.2", 4171 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 4172 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 4173 | "dev": true 4174 | }, 4175 | "randomatic": { 4176 | "version": "1.1.7", 4177 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 4178 | "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", 4179 | "dev": true, 4180 | "optional": true, 4181 | "requires": { 4182 | "is-number": "^3.0.0", 4183 | "kind-of": "^4.0.0" 4184 | }, 4185 | "dependencies": { 4186 | "is-number": { 4187 | "version": "3.0.0", 4188 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 4189 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 4190 | "dev": true, 4191 | "optional": true, 4192 | "requires": { 4193 | "kind-of": "^3.0.2" 4194 | }, 4195 | "dependencies": { 4196 | "kind-of": { 4197 | "version": "3.2.2", 4198 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 4199 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 4200 | "dev": true, 4201 | "optional": true, 4202 | "requires": { 4203 | "is-buffer": "^1.1.5" 4204 | } 4205 | } 4206 | } 4207 | }, 4208 | "kind-of": { 4209 | "version": "4.0.0", 4210 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 4211 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 4212 | "dev": true, 4213 | "optional": true, 4214 | "requires": { 4215 | "is-buffer": "^1.1.5" 4216 | } 4217 | } 4218 | } 4219 | }, 4220 | "read-pkg": { 4221 | "version": "2.0.0", 4222 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 4223 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 4224 | "dev": true, 4225 | "requires": { 4226 | "load-json-file": "^2.0.0", 4227 | "normalize-package-data": "^2.3.2", 4228 | "path-type": "^2.0.0" 4229 | } 4230 | }, 4231 | "readable-stream": { 4232 | "version": "2.3.3", 4233 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 4234 | "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", 4235 | "dev": true, 4236 | "requires": { 4237 | "core-util-is": "~1.0.0", 4238 | "inherits": "~2.0.3", 4239 | "isarray": "~1.0.0", 4240 | "process-nextick-args": "~1.0.6", 4241 | "safe-buffer": "~5.1.1", 4242 | "string_decoder": "~1.0.3", 4243 | "util-deprecate": "~1.0.1" 4244 | } 4245 | }, 4246 | "readdirp": { 4247 | "version": "2.1.0", 4248 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 4249 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 4250 | "dev": true, 4251 | "optional": true, 4252 | "requires": { 4253 | "graceful-fs": "^4.1.2", 4254 | "minimatch": "^3.0.2", 4255 | "readable-stream": "^2.0.2", 4256 | "set-immediate-shim": "^1.0.1" 4257 | } 4258 | }, 4259 | "readline2": { 4260 | "version": "1.0.1", 4261 | "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", 4262 | "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", 4263 | "dev": true, 4264 | "requires": { 4265 | "code-point-at": "^1.0.0", 4266 | "is-fullwidth-code-point": "^1.0.0", 4267 | "mute-stream": "0.0.5" 4268 | } 4269 | }, 4270 | "rechoir": { 4271 | "version": "0.6.2", 4272 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 4273 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 4274 | "dev": true, 4275 | "requires": { 4276 | "resolve": "^1.1.6" 4277 | } 4278 | }, 4279 | "regenerate": { 4280 | "version": "1.3.2", 4281 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", 4282 | "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", 4283 | "dev": true 4284 | }, 4285 | "regenerator-runtime": { 4286 | "version": "0.11.0", 4287 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", 4288 | "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", 4289 | "dev": true 4290 | }, 4291 | "regenerator-transform": { 4292 | "version": "0.10.1", 4293 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", 4294 | "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", 4295 | "dev": true, 4296 | "requires": { 4297 | "babel-runtime": "^6.18.0", 4298 | "babel-types": "^6.19.0", 4299 | "private": "^0.1.6" 4300 | } 4301 | }, 4302 | "regex-cache": { 4303 | "version": "0.4.3", 4304 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", 4305 | "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", 4306 | "dev": true, 4307 | "optional": true, 4308 | "requires": { 4309 | "is-equal-shallow": "^0.1.3", 4310 | "is-primitive": "^2.0.0" 4311 | } 4312 | }, 4313 | "regexpu-core": { 4314 | "version": "2.0.0", 4315 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", 4316 | "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", 4317 | "dev": true, 4318 | "requires": { 4319 | "regenerate": "^1.2.1", 4320 | "regjsgen": "^0.2.0", 4321 | "regjsparser": "^0.1.4" 4322 | } 4323 | }, 4324 | "regjsgen": { 4325 | "version": "0.2.0", 4326 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", 4327 | "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", 4328 | "dev": true 4329 | }, 4330 | "regjsparser": { 4331 | "version": "0.1.5", 4332 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", 4333 | "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", 4334 | "dev": true, 4335 | "requires": { 4336 | "jsesc": "~0.5.0" 4337 | }, 4338 | "dependencies": { 4339 | "jsesc": { 4340 | "version": "0.5.0", 4341 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 4342 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 4343 | "dev": true 4344 | } 4345 | } 4346 | }, 4347 | "remove-trailing-separator": { 4348 | "version": "1.1.0", 4349 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 4350 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 4351 | "dev": true 4352 | }, 4353 | "repeat-element": { 4354 | "version": "1.1.2", 4355 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 4356 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 4357 | "dev": true 4358 | }, 4359 | "repeat-string": { 4360 | "version": "1.6.1", 4361 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 4362 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 4363 | "dev": true, 4364 | "optional": true 4365 | }, 4366 | "repeating": { 4367 | "version": "2.0.1", 4368 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", 4369 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", 4370 | "dev": true, 4371 | "requires": { 4372 | "is-finite": "^1.0.0" 4373 | } 4374 | }, 4375 | "require-uncached": { 4376 | "version": "1.0.3", 4377 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 4378 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 4379 | "dev": true, 4380 | "requires": { 4381 | "caller-path": "^0.1.0", 4382 | "resolve-from": "^1.0.0" 4383 | } 4384 | }, 4385 | "resolve": { 4386 | "version": "1.4.0", 4387 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", 4388 | "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", 4389 | "dev": true, 4390 | "requires": { 4391 | "path-parse": "^1.0.5" 4392 | } 4393 | }, 4394 | "resolve-from": { 4395 | "version": "1.0.1", 4396 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 4397 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 4398 | "dev": true 4399 | }, 4400 | "restore-cursor": { 4401 | "version": "1.0.1", 4402 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", 4403 | "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", 4404 | "dev": true, 4405 | "requires": { 4406 | "exit-hook": "^1.0.0", 4407 | "onetime": "^1.0.0" 4408 | } 4409 | }, 4410 | "rimraf": { 4411 | "version": "2.6.1", 4412 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", 4413 | "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", 4414 | "dev": true, 4415 | "requires": { 4416 | "glob": "^7.0.5" 4417 | } 4418 | }, 4419 | "run-async": { 4420 | "version": "0.1.0", 4421 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", 4422 | "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", 4423 | "dev": true, 4424 | "requires": { 4425 | "once": "^1.3.0" 4426 | } 4427 | }, 4428 | "run-parallel": { 4429 | "version": "1.1.6", 4430 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.6.tgz", 4431 | "integrity": "sha1-KQA8miFj4B4tLfyQV18sbB1hoDk=", 4432 | "dev": true 4433 | }, 4434 | "rx-lite": { 4435 | "version": "3.1.2", 4436 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", 4437 | "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", 4438 | "dev": true 4439 | }, 4440 | "safe-buffer": { 4441 | "version": "5.1.1", 4442 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 4443 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 4444 | "dev": true 4445 | }, 4446 | "semver": { 4447 | "version": "5.4.1", 4448 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", 4449 | "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", 4450 | "dev": true 4451 | }, 4452 | "serialize-error": { 4453 | "version": "2.1.0", 4454 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", 4455 | "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=" 4456 | }, 4457 | "set-immediate-shim": { 4458 | "version": "1.0.1", 4459 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 4460 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 4461 | "dev": true, 4462 | "optional": true 4463 | }, 4464 | "shebang-command": { 4465 | "version": "1.2.0", 4466 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 4467 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 4468 | "dev": true, 4469 | "requires": { 4470 | "shebang-regex": "^1.0.0" 4471 | } 4472 | }, 4473 | "shebang-regex": { 4474 | "version": "1.0.0", 4475 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 4476 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 4477 | "dev": true 4478 | }, 4479 | "shell-quote": { 4480 | "version": "1.6.1", 4481 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", 4482 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", 4483 | "dev": true, 4484 | "requires": { 4485 | "array-filter": "~0.0.0", 4486 | "array-map": "~0.0.0", 4487 | "array-reduce": "~0.0.0", 4488 | "jsonify": "~0.0.0" 4489 | } 4490 | }, 4491 | "shelljs": { 4492 | "version": "0.7.8", 4493 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", 4494 | "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", 4495 | "dev": true, 4496 | "requires": { 4497 | "glob": "^7.0.0", 4498 | "interpret": "^1.0.0", 4499 | "rechoir": "^0.6.2" 4500 | } 4501 | }, 4502 | "slash": { 4503 | "version": "1.0.0", 4504 | "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", 4505 | "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", 4506 | "dev": true 4507 | }, 4508 | "slice-ansi": { 4509 | "version": "0.0.4", 4510 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 4511 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", 4512 | "dev": true 4513 | }, 4514 | "socket.io": { 4515 | "version": "2.0.3", 4516 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.3.tgz", 4517 | "integrity": "sha1-Q1nwaiSTOua9CHeYr3jGgOrjReM=", 4518 | "dev": true, 4519 | "requires": { 4520 | "debug": "~2.6.6", 4521 | "engine.io": "~3.1.0", 4522 | "object-assign": "~4.1.1", 4523 | "socket.io-adapter": "~1.1.0", 4524 | "socket.io-client": "~2.0.2", 4525 | "socket.io-parser": "~3.1.1" 4526 | } 4527 | }, 4528 | "socket.io-adapter": { 4529 | "version": "1.1.1", 4530 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", 4531 | "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", 4532 | "dev": true 4533 | }, 4534 | "socket.io-client": { 4535 | "version": "2.0.3", 4536 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.3.tgz", 4537 | "integrity": "sha1-bK9K/5+FsZ/ZG2zhPWmttWT4hzs=", 4538 | "dev": true, 4539 | "requires": { 4540 | "backo2": "1.0.2", 4541 | "base64-arraybuffer": "0.1.5", 4542 | "component-bind": "1.0.0", 4543 | "component-emitter": "1.2.1", 4544 | "debug": "~2.6.4", 4545 | "engine.io-client": "~3.1.0", 4546 | "has-cors": "1.1.0", 4547 | "indexof": "0.0.1", 4548 | "object-component": "0.0.3", 4549 | "parseqs": "0.0.5", 4550 | "parseuri": "0.0.5", 4551 | "socket.io-parser": "~3.1.1", 4552 | "to-array": "0.1.4" 4553 | } 4554 | }, 4555 | "socket.io-parser": { 4556 | "version": "3.1.2", 4557 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", 4558 | "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", 4559 | "dev": true, 4560 | "requires": { 4561 | "component-emitter": "1.2.1", 4562 | "debug": "~2.6.4", 4563 | "has-binary2": "~1.0.2", 4564 | "isarray": "2.0.1" 4565 | }, 4566 | "dependencies": { 4567 | "isarray": { 4568 | "version": "2.0.1", 4569 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", 4570 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", 4571 | "dev": true 4572 | } 4573 | } 4574 | }, 4575 | "source-map": { 4576 | "version": "0.5.7", 4577 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 4578 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 4579 | "dev": true 4580 | }, 4581 | "source-map-support": { 4582 | "version": "0.4.16", 4583 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.16.tgz", 4584 | "integrity": "sha512-A6vlydY7H/ljr4L2UOhDSajQdZQ6dMD7cLH0pzwcmwLyc9u8PNI4WGtnfDDzX7uzGL6c/T+ORL97Zlh+S4iOrg==", 4585 | "dev": true, 4586 | "requires": { 4587 | "source-map": "^0.5.6" 4588 | } 4589 | }, 4590 | "spdx-correct": { 4591 | "version": "1.0.2", 4592 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", 4593 | "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", 4594 | "dev": true, 4595 | "requires": { 4596 | "spdx-license-ids": "^1.0.2" 4597 | } 4598 | }, 4599 | "spdx-expression-parse": { 4600 | "version": "1.0.4", 4601 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", 4602 | "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", 4603 | "dev": true 4604 | }, 4605 | "spdx-license-ids": { 4606 | "version": "1.2.2", 4607 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", 4608 | "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", 4609 | "dev": true 4610 | }, 4611 | "split": { 4612 | "version": "0.3.3", 4613 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", 4614 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", 4615 | "dev": true, 4616 | "requires": { 4617 | "through": "2" 4618 | } 4619 | }, 4620 | "sprintf-js": { 4621 | "version": "1.0.3", 4622 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 4623 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 4624 | "dev": true 4625 | }, 4626 | "standard": { 4627 | "version": "10.0.3", 4628 | "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.3.tgz", 4629 | "integrity": "sha512-JURZ+85ExKLQULckDFijdX5WHzN6RC7fgiZNSV4jFQVo+3tPoQGHyBrGekye/yf0aOfb4210EM5qPNlc2cRh4w==", 4630 | "dev": true, 4631 | "requires": { 4632 | "eslint": "~3.19.0", 4633 | "eslint-config-standard": "10.2.1", 4634 | "eslint-config-standard-jsx": "4.0.2", 4635 | "eslint-plugin-import": "~2.2.0", 4636 | "eslint-plugin-node": "~4.2.2", 4637 | "eslint-plugin-promise": "~3.5.0", 4638 | "eslint-plugin-react": "~6.10.0", 4639 | "eslint-plugin-standard": "~3.0.1", 4640 | "standard-engine": "~7.0.0" 4641 | } 4642 | }, 4643 | "standard-engine": { 4644 | "version": "7.0.0", 4645 | "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz", 4646 | "integrity": "sha1-67d7nI/CyBZf+jU72Rug3/Qa9pA=", 4647 | "dev": true, 4648 | "requires": { 4649 | "deglob": "^2.1.0", 4650 | "get-stdin": "^5.0.1", 4651 | "minimist": "^1.1.0", 4652 | "pkg-conf": "^2.0.0" 4653 | }, 4654 | "dependencies": { 4655 | "minimist": { 4656 | "version": "1.2.0", 4657 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 4658 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 4659 | "dev": true 4660 | } 4661 | } 4662 | }, 4663 | "stream-combiner": { 4664 | "version": "0.0.4", 4665 | "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", 4666 | "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", 4667 | "dev": true, 4668 | "requires": { 4669 | "duplexer": "~0.1.1" 4670 | } 4671 | }, 4672 | "string-width": { 4673 | "version": "1.0.2", 4674 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 4675 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 4676 | "dev": true, 4677 | "requires": { 4678 | "code-point-at": "^1.0.0", 4679 | "is-fullwidth-code-point": "^1.0.0", 4680 | "strip-ansi": "^3.0.0" 4681 | } 4682 | }, 4683 | "string.prototype.padend": { 4684 | "version": "3.0.0", 4685 | "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", 4686 | "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", 4687 | "dev": true, 4688 | "requires": { 4689 | "define-properties": "^1.1.2", 4690 | "es-abstract": "^1.4.3", 4691 | "function-bind": "^1.0.2" 4692 | } 4693 | }, 4694 | "string_decoder": { 4695 | "version": "1.0.3", 4696 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 4697 | "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", 4698 | "dev": true, 4699 | "requires": { 4700 | "safe-buffer": "~5.1.0" 4701 | } 4702 | }, 4703 | "strip-ansi": { 4704 | "version": "3.0.1", 4705 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 4706 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 4707 | "dev": true, 4708 | "requires": { 4709 | "ansi-regex": "^2.0.0" 4710 | } 4711 | }, 4712 | "strip-bom": { 4713 | "version": "3.0.0", 4714 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 4715 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 4716 | "dev": true 4717 | }, 4718 | "strip-json-comments": { 4719 | "version": "2.0.1", 4720 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 4721 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 4722 | "dev": true 4723 | }, 4724 | "supports-color": { 4725 | "version": "2.0.0", 4726 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 4727 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 4728 | "dev": true 4729 | }, 4730 | "table": { 4731 | "version": "3.8.3", 4732 | "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", 4733 | "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", 4734 | "dev": true, 4735 | "requires": { 4736 | "ajv": "^4.7.0", 4737 | "ajv-keywords": "^1.0.0", 4738 | "chalk": "^1.1.1", 4739 | "lodash": "^4.0.0", 4740 | "slice-ansi": "0.0.4", 4741 | "string-width": "^2.0.0" 4742 | }, 4743 | "dependencies": { 4744 | "ansi-regex": { 4745 | "version": "3.0.0", 4746 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 4747 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 4748 | "dev": true 4749 | }, 4750 | "is-fullwidth-code-point": { 4751 | "version": "2.0.0", 4752 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 4753 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 4754 | "dev": true 4755 | }, 4756 | "string-width": { 4757 | "version": "2.1.1", 4758 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 4759 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 4760 | "dev": true, 4761 | "requires": { 4762 | "is-fullwidth-code-point": "^2.0.0", 4763 | "strip-ansi": "^4.0.0" 4764 | } 4765 | }, 4766 | "strip-ansi": { 4767 | "version": "4.0.0", 4768 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 4769 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 4770 | "dev": true, 4771 | "requires": { 4772 | "ansi-regex": "^3.0.0" 4773 | } 4774 | } 4775 | } 4776 | }, 4777 | "text-table": { 4778 | "version": "0.2.0", 4779 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 4780 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 4781 | "dev": true 4782 | }, 4783 | "through": { 4784 | "version": "2.3.8", 4785 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 4786 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 4787 | "dev": true 4788 | }, 4789 | "to-array": { 4790 | "version": "0.1.4", 4791 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", 4792 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", 4793 | "dev": true 4794 | }, 4795 | "to-fast-properties": { 4796 | "version": "1.0.3", 4797 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", 4798 | "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", 4799 | "dev": true 4800 | }, 4801 | "trim-right": { 4802 | "version": "1.0.1", 4803 | "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", 4804 | "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", 4805 | "dev": true 4806 | }, 4807 | "tryit": { 4808 | "version": "1.0.3", 4809 | "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", 4810 | "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", 4811 | "dev": true 4812 | }, 4813 | "type-check": { 4814 | "version": "0.3.2", 4815 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 4816 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 4817 | "dev": true, 4818 | "requires": { 4819 | "prelude-ls": "~1.1.2" 4820 | } 4821 | }, 4822 | "type-detect": { 4823 | "version": "4.0.3", 4824 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", 4825 | "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", 4826 | "dev": true 4827 | }, 4828 | "typedarray": { 4829 | "version": "0.0.6", 4830 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 4831 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 4832 | "dev": true 4833 | }, 4834 | "ultron": { 4835 | "version": "1.1.0", 4836 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz", 4837 | "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ=", 4838 | "dev": true 4839 | }, 4840 | "uniq": { 4841 | "version": "1.0.1", 4842 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", 4843 | "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", 4844 | "dev": true 4845 | }, 4846 | "user-home": { 4847 | "version": "1.1.1", 4848 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 4849 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 4850 | "dev": true 4851 | }, 4852 | "util-deprecate": { 4853 | "version": "1.0.2", 4854 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4855 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 4856 | "dev": true 4857 | }, 4858 | "uws": { 4859 | "version": "0.14.5", 4860 | "resolved": "https://registry.npmjs.org/uws/-/uws-0.14.5.tgz", 4861 | "integrity": "sha1-Z6rzPEaypYel9mZtAPdpEyjxSdw=", 4862 | "dev": true, 4863 | "optional": true 4864 | }, 4865 | "v8flags": { 4866 | "version": "2.1.1", 4867 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 4868 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 4869 | "dev": true, 4870 | "requires": { 4871 | "user-home": "^1.1.1" 4872 | } 4873 | }, 4874 | "validate-npm-package-license": { 4875 | "version": "3.0.1", 4876 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", 4877 | "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", 4878 | "dev": true, 4879 | "requires": { 4880 | "spdx-correct": "~1.0.0", 4881 | "spdx-expression-parse": "~1.0.0" 4882 | } 4883 | }, 4884 | "which": { 4885 | "version": "1.3.0", 4886 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 4887 | "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", 4888 | "dev": true, 4889 | "requires": { 4890 | "isexe": "^2.0.0" 4891 | } 4892 | }, 4893 | "wordwrap": { 4894 | "version": "1.0.0", 4895 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 4896 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 4897 | "dev": true 4898 | }, 4899 | "wrappy": { 4900 | "version": "1.0.2", 4901 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4902 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 4903 | "dev": true 4904 | }, 4905 | "write": { 4906 | "version": "0.2.1", 4907 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 4908 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 4909 | "dev": true, 4910 | "requires": { 4911 | "mkdirp": "^0.5.1" 4912 | } 4913 | }, 4914 | "ws": { 4915 | "version": "2.3.1", 4916 | "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", 4917 | "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", 4918 | "dev": true, 4919 | "requires": { 4920 | "safe-buffer": "~5.0.1", 4921 | "ultron": "~1.1.0" 4922 | }, 4923 | "dependencies": { 4924 | "safe-buffer": { 4925 | "version": "5.0.1", 4926 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", 4927 | "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", 4928 | "dev": true 4929 | } 4930 | } 4931 | }, 4932 | "xmlhttprequest-ssl": { 4933 | "version": "1.5.3", 4934 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", 4935 | "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", 4936 | "dev": true 4937 | }, 4938 | "xtend": { 4939 | "version": "4.0.1", 4940 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 4941 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 4942 | "dev": true 4943 | }, 4944 | "yallist": { 4945 | "version": "2.1.2", 4946 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 4947 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 4948 | "dev": true 4949 | }, 4950 | "yeast": { 4951 | "version": "0.1.2", 4952 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", 4953 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", 4954 | "dev": true 4955 | } 4956 | } 4957 | } 4958 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "socket.io-request", 3 | "version": "0.8.0", 4 | "description": "bidirectional request-response for socket.io", 5 | "main": "lib/index.js", 6 | "scripts": { 7 | "test": "run-s test:*", 8 | "test:mocha": "mocha test/*.js -r babel-polyfill --compilers js:babel-register", 9 | "test:standard": "standard", 10 | "build": "babel src/ --out-dir lib/ --source-maps inline", 11 | "watch": "npm run build -- --watch", 12 | "clean": "rm -rf lib/*" 13 | }, 14 | "keywords": [ 15 | "socket.io", 16 | "reqres", 17 | "request", 18 | "response" 19 | ], 20 | "author": "Sho Hashimoto ", 21 | "license": "MIT", 22 | "devDependencies": { 23 | "babel-cli": "^6.26.0", 24 | "babel-polyfill": "^6.26.0", 25 | "babel-preset-es2015": "^6.6.0", 26 | "babel-preset-stage-0": "^6.5.0", 27 | "babel-register": "^6.26.0", 28 | "chai": "^4.1.2", 29 | "mocha": "^3.5.0", 30 | "npm-run-all": "^4.1.1", 31 | "socket.io": "^2.0.3", 32 | "socket.io-client": "^2.0.3", 33 | "standard": "^10.0.3" 34 | }, 35 | "dependencies": { 36 | "combine-middlewares": "^0.1.0", 37 | "deserialize-error": "^0.0.3", 38 | "serialize-error": "^2.0.0" 39 | }, 40 | "directories": { 41 | "test": "test" 42 | }, 43 | "repository": { 44 | "type": "git", 45 | "url": "git+https://github.com/shokai/socket.io-request.git" 46 | }, 47 | "bugs": { 48 | "url": "https://github.com/shokai/socket.io-request/issues" 49 | }, 50 | "homepage": "https://github.com/shokai/socket.io-request#readme" 51 | } 52 | -------------------------------------------------------------------------------- /sample/client.js: -------------------------------------------------------------------------------- 1 | var ioreq = require('../') 2 | // var ioreq = require('socket.io-request') 3 | 4 | var io = require('socket.io-client')('http://localhost:3000') 5 | 6 | io.on('connect', () => console.log('connect!')) 7 | io.on('disconnect', () => console.log('disconnect!')) 8 | 9 | io.once('connect', function () { 10 | process.stdin.on('data', async function (data) { 11 | try { 12 | const res = await ioreq(io).request('toUpper', data.toString().trim()) 13 | console.log(res) 14 | } catch (err) { 15 | console.error(err.stack || err) 16 | } 17 | }) 18 | }) 19 | -------------------------------------------------------------------------------- /sample/server-with-middleware.js: -------------------------------------------------------------------------------- 1 | var ioreq = require('../') 2 | // var ioreq = require('socket.io-request') 3 | 4 | var io = require('socket.io')(3000) 5 | 6 | async function logger (req, res, next) { 7 | console.log('received', req) 8 | const result = await next() 9 | console.log('returned', result) 10 | } 11 | 12 | function validator (req, res, next) { 13 | try { 14 | if (!(/^[a-z]+$/.test(req))) { 15 | throw new Error('request must be lower case alphabet.') 16 | } 17 | } catch (err) { 18 | res.error(err) 19 | return err 20 | } 21 | return next() 22 | } 23 | 24 | async function upper (req, res) { 25 | const result = req.toUpperCase() 26 | res(result) 27 | return result 28 | } 29 | 30 | io.on('connection', function (socket) { 31 | console.log('new client! ' + socket.id) 32 | 33 | ioreq(socket).response('toUpper', logger, validator, upper) 34 | }) 35 | -------------------------------------------------------------------------------- /sample/server.js: -------------------------------------------------------------------------------- 1 | var ioreq = require('../') 2 | // var ioreq = require('socket.io-request') 3 | 4 | var io = require('socket.io')(3000) 5 | 6 | io.on('connection', function (socket) { 7 | console.log('new client! ' + socket.id) 8 | 9 | ioreq(socket).response('toUpper', function (req, res) { 10 | console.log(req) 11 | res(req.toUpperCase()) 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /src/error.js: -------------------------------------------------------------------------------- 1 | import serializeError from 'serialize-error' 2 | import deserializeError from 'deserialize-error' 3 | 4 | function serializeErrorWithoutStack (err) { 5 | delete err.stack 6 | return serializeError(err) 7 | } 8 | 9 | // convert (nested) Error object to Plain object to send via socket.io 10 | export function convertErrorToObject (err) { 11 | if (err instanceof Error) return serializeErrorWithoutStack(err) 12 | if (err instanceof Array) return err.map(serializeErrorWithoutStack) 13 | let obj = {} 14 | for (let k in err) { 15 | if (err.hasOwnProperty(k)) { 16 | obj[k] = serializeErrorWithoutStack(err[k]) 17 | } 18 | } 19 | return obj 20 | } 21 | 22 | // convert nested object to Error 23 | export function convertObjectToError (obj) { 24 | if (obj instanceof Error) return obj 25 | if (obj instanceof Array) return obj.map(deserializeError) 26 | if (typeof obj !== 'object') return obj 27 | let err = deserializeError(obj) 28 | if (err !== obj) return err 29 | err = {} 30 | for (let k in obj) { 31 | err[k] = deserializeError(obj[k]) 32 | } 33 | return err 34 | } 35 | 36 | export class TimeoutError extends Error { 37 | constructor (message) { 38 | super(message) 39 | this.name = 'TimeoutError' 40 | } 41 | } 42 | 43 | export class SocketIOError extends Error { 44 | constructor (message) { 45 | super(message) 46 | this.name = 'SocketIOError' 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import SocketIORequest from './main' 2 | import {TimeoutError, SocketIOError} from './error' 3 | 4 | module.exports = (io, options) => new SocketIORequest(io, options) 5 | Object.assign(module.exports, {TimeoutError, SocketIOError}) 6 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import {convertErrorToObject, convertObjectToError, TimeoutError, SocketIOError} from './error' 2 | import combineMiddlewares from 'combine-middlewares' 3 | 4 | export default class SocketIORequest { 5 | constructor (io, options = {}) { 6 | this.io = io 7 | this.options = Object.assign({ 8 | event: 'socket.io-request', 9 | timeout: 90000 10 | }, options) 11 | } 12 | 13 | request (method, data) { 14 | if (typeof method !== 'string') throw new Error('argument "method" is missing') 15 | 16 | return new Promise((resolve, reject) => { 17 | this.io.emit(this.options.event, {method, data}, (res) => { 18 | clearTimeout(timeout) 19 | this.io.removeListener('disconnect', onDisconnect) 20 | if (res.error) return reject(convertObjectToError(res.error)) 21 | resolve(res.data) 22 | }) 23 | 24 | const onDisconnect = () => { 25 | clearTimeout(timeout) 26 | reject(new SocketIOError('disconnect')) 27 | } 28 | 29 | const timeout = setTimeout(() => { 30 | this.io.removeListener('disconnect', onDisconnect) 31 | reject(new TimeoutError(`exceeded ${this.options.timeout} (msec)`)) 32 | }, this.options.timeout) 33 | 34 | this.io.once('disconnect', onDisconnect) 35 | }) 36 | } 37 | 38 | response (method, ...middlewares) { 39 | if (typeof method !== 'string') throw new Error('argument "method" is missing') 40 | if (middlewares.find(m => typeof m !== 'function')) { 41 | throw new Error('"middlewares" must be a function') 42 | } 43 | const combined = combineMiddlewares(...middlewares.concat()) 44 | this.io.on(this.options.event, (req, ack) => { 45 | if (req.method !== method) return 46 | const res = data => ack({data}) 47 | res.error = err => ack({error: convertErrorToObject(err)}) 48 | combined(req.data, res) 49 | }) 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /test/disconnect.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import {assert} from 'chai' 4 | import {Server, port} from './helper' 5 | 6 | import Client from 'socket.io-client' 7 | 8 | import ioreq, {SocketIOError} from '../src/' 9 | 10 | const server = Server() 11 | 12 | describe('handling disconnect error', function () { 13 | describe('server disconnect', function () { 14 | it('should throw error', function (done) { 15 | server.on('connection', (socket) => { 16 | ioreq(socket).response('disconnect', (req, res) => { 17 | socket.disconnect() 18 | }) 19 | }) 20 | 21 | const client = Client(`http://localhost:${port}`) 22 | client.once('connect', async () => { 23 | var err, res 24 | try { 25 | res = await ioreq(client).request('disconnect') 26 | } catch (_err) { 27 | err = _err 28 | } 29 | assert.isUndefined(res) 30 | assert.equal(err.name, SocketIOError.name) 31 | assert.equal(err.message, 'disconnect') 32 | done() 33 | }) 34 | }) 35 | }) 36 | 37 | describe('client disconnect', function () { 38 | it('should throw error', function (done) { 39 | const client = Client(`http://localhost:${port}`) 40 | client.once('connect', () => { 41 | ioreq(client).response('disconnect', (req, res) => { 42 | client.disconnect() 43 | }) 44 | }) 45 | 46 | server.on('connection', async (socket) => { 47 | var err, res 48 | try { 49 | res = await ioreq(socket).request('disconnect') 50 | } catch (_err) { 51 | err = _err 52 | } 53 | assert.isUndefined(res) 54 | assert.equal(err.name, SocketIOError.name) 55 | assert.equal(err.message, 'disconnect') 56 | done() 57 | }) 58 | }) 59 | }) 60 | }) 61 | -------------------------------------------------------------------------------- /test/error.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import {convertErrorToObject, convertObjectToError} from '../src/error' 4 | import {assert} from 'chai' 5 | 6 | describe('convertErrotToOjbect', function () { 7 | it('convert Error to Object', function () { 8 | const err = new Error('this is error') 9 | const obj = convertErrorToObject(err) 10 | assert.equal(obj.name, 'Error') 11 | assert.equal(obj.message, 'this is error') 12 | assert.isUndefined(obj.stack) 13 | assert.isObject(obj) 14 | }) 15 | 16 | it('convert Error in Array', function () { 17 | const errs = [ new Error('this is error') ] 18 | const objs = convertErrorToObject(errs) 19 | assert.equal(objs[0].name, 'Error') 20 | assert.equal(objs[0].message, 'this is error') 21 | assert.isUndefined(objs[0].stack) 22 | assert.isObject(objs[0]) 23 | }) 24 | 25 | it('convert Error in nested Object', function () { 26 | const errs = { foo: new Error('this is error'), bar: new Error('barbar') } 27 | const objs = convertErrorToObject(errs) 28 | assert.equal(objs.foo.name, 'Error') 29 | assert.equal(objs.foo.message, 'this is error') 30 | assert.isUndefined(objs.foo.stack) 31 | assert.isObject(objs.foo) 32 | assert.equal(objs.bar.name, 'Error') 33 | assert.equal(objs.bar.message, 'barbar') 34 | assert.isUndefined(objs.bar.stack) 35 | assert.isObject(objs.bar) 36 | }) 37 | }) 38 | 39 | describe('convertObjectToErrot', function () { 40 | it('convert Object to Error', function () { 41 | const obj = convertErrorToObject(new Error('this is error')) 42 | const err = convertObjectToError(obj) 43 | assert.equal(err.name, 'Error') 44 | assert.equal(err.message, 'this is error') 45 | assert.instanceOf(err, Error) 46 | }) 47 | 48 | it('convert Error in Array', function () { 49 | const objs = convertErrorToObject([ new Error('this is error') ]) 50 | const errs = convertObjectToError(objs) 51 | assert.equal(errs[0].name, 'Error') 52 | assert.equal(errs[0].message, 'this is error') 53 | assert.instanceOf(errs[0], Error) 54 | }) 55 | 56 | it('convert Error in nested Object', function () { 57 | const objs = convertErrorToObject({ foo: new Error('this is error'), bar: new Error('barbar') }) 58 | const errs = convertObjectToError(objs) 59 | assert.equal(errs.foo.name, 'Error') 60 | assert.equal(errs.foo.message, 'this is error') 61 | assert.instanceOf(errs.foo, Error) 62 | assert.equal(errs.bar.name, 'Error') 63 | assert.equal(errs.bar.message, 'barbar') 64 | assert.instanceOf(errs.bar, Error) 65 | }) 66 | }) 67 | -------------------------------------------------------------------------------- /test/exports.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import {assert} from 'chai' 4 | 5 | import ioreq, {TimeoutError, SocketIOError} from '../' 6 | 7 | describe('npm exports', function () { 8 | it('should export function', function () { 9 | assert.isFunction(ioreq) 10 | }) 11 | 12 | it('should export errors', function () { 13 | assert.isFunction(TimeoutError) 14 | assert.isFunction(SocketIOError) 15 | }) 16 | }) 17 | -------------------------------------------------------------------------------- /test/helper.js: -------------------------------------------------------------------------------- 1 | import SocketIO from 'socket.io' 2 | 3 | export const delay = (msec) => new Promise(resolve => setTimeout(resolve, msec)) 4 | 5 | export const port = (process.env.PORT || 3000) - 0 6 | 7 | var server = null 8 | export function Server () { 9 | return server || (server = SocketIO(port)) 10 | } 11 | -------------------------------------------------------------------------------- /test/request_response.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import {assert} from 'chai' 4 | import {Server, port} from './helper' 5 | 6 | import Client from 'socket.io-client' 7 | 8 | import ioreq from '../src/' 9 | 10 | const server = Server() 11 | 12 | describe('request-response', function () { 13 | describe('from Client to Server', function () { 14 | it('should respond uppercase string', function (done) { 15 | server.on('connection', (socket) => { 16 | ioreq(socket).response('toUpper', (req, res) => { 17 | res(req.str.toUpperCase()) 18 | }) 19 | }) 20 | 21 | const client = Client(`http://localhost:${port}`) 22 | client.once('connect', async () => { 23 | const str = await ioreq(client).request('toUpper', {str: 'hello'}) 24 | assert.equal(str, 'HELLO') 25 | done() 26 | }) 27 | }) 28 | }) 29 | 30 | describe('from Server to Client', function () { 31 | it('should respond sum of array', function (done) { 32 | const client = Client(`http://localhost:${port}`) 33 | client.once('connect', function () { 34 | ioreq(client).response('sum', (req, res) => { 35 | res(req.reduce((a, b) => a + b)) 36 | }) 37 | }) 38 | 39 | server.on('connection', async (socket) => { 40 | const sum = await ioreq(socket).request('sum', [8, 9, 10]) 41 | assert.equal(sum, 27) 42 | done() 43 | }) 44 | }) 45 | }) 46 | }) 47 | -------------------------------------------------------------------------------- /test/request_response_error.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import {assert} from 'chai' 4 | import {Server, port} from './helper' 5 | 6 | import Client from 'socket.io-client' 7 | 8 | import ioreq from '../src/' 9 | 10 | const server = Server() 11 | 12 | describe('req.error(err)', function () { 13 | it('return error', function () { 14 | server.on('connection', (socket) => { 15 | ioreq(socket).response('req-error', (req, res) => { 16 | return res.error(new Error('something wrong')) 17 | }) 18 | }) 19 | 20 | const client = Client(`http://localhost:${port}`) 21 | client.once('connect', async () => { 22 | let res, err 23 | try { 24 | res = await ioreq(client).request('req-error', {msg: 'hello'}) 25 | } catch (_err) { 26 | err = _err 27 | } 28 | assert.isUndefined(res) 29 | assert.instanceOf(err, Error) 30 | assert.equal(err.name, 'Error') 31 | assert.equal(err.message, 'something wrong') 32 | }) 33 | }) 34 | 35 | it('return nested error', function () { 36 | server.on('connection', (socket) => { 37 | ioreq(socket).response('req-error-nested', (req, res) => { 38 | return res.error({foo: new Error('something wrong'), bar: 'bar'}) 39 | }) 40 | }) 41 | 42 | const client = Client(`http://localhost:${port}`) 43 | client.once('connect', async () => { 44 | let res, errs 45 | try { 46 | res = await ioreq(client).request('req-error-nested', {msg: 'hello'}) 47 | } catch (_errs) { 48 | errs = _errs 49 | } 50 | assert.isUndefined(res) 51 | assert.instanceOf(errs.foo, Error) 52 | assert.equal(errs.foo.name, 'Error') 53 | assert.equal(errs.foo.message, 'something wrong') 54 | }) 55 | }) 56 | 57 | it('return error array', function () { 58 | server.on('connection', (socket) => { 59 | ioreq(socket).response('req-error-array', (req, res) => { 60 | return res.error(['foo', 'bar', new Error('something wrong')]) 61 | }) 62 | }) 63 | 64 | const client = Client(`http://localhost:${port}`) 65 | client.once('connect', async () => { 66 | let res, errs 67 | try { 68 | res = await ioreq(client).request('req-error-array', {msg: 'hello'}) 69 | } catch (_errs) { 70 | errs = _errs 71 | } 72 | assert.isUndefined(res) 73 | assert.equal(errs[0], 'foo') 74 | assert.equal(errs[1], 'bar') 75 | assert.instanceOf(errs[2], Error) 76 | assert.equal(errs[2].name, 'Error') 77 | assert.equal(errs[2].message, 'something wrong') 78 | assert.isString(errs[2].stack) 79 | }) 80 | }) 81 | }) 82 | -------------------------------------------------------------------------------- /test/timeout.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | 3 | import {assert} from 'chai' 4 | import {Server, port, delay} from './helper' 5 | 6 | import Client from 'socket.io-client' 7 | 8 | import ioreq, {TimeoutError} from '../src/' 9 | 10 | const server = Server() 11 | 12 | describe('timeout option', function () { 13 | it('should timeout in 1 sec', function (done) { 14 | this.timeout(2000) 15 | server.on('connection', (socket) => { 16 | ioreq(socket).response('timeout', async (req, res) => { 17 | await delay(1500) 18 | res('done') 19 | }) 20 | }) 21 | 22 | const client = Client(`http://localhost:${port}`) 23 | client.once('connect', async () => { 24 | let err, res 25 | try { 26 | res = await ioreq(client, {timeout: 1000}).request('timeout') 27 | } catch (_err) { 28 | err = _err 29 | } 30 | assert.isUndefined(res) 31 | assert.equal(err.name, TimeoutError.name) 32 | done() 33 | }) 34 | }) 35 | }) 36 | --------------------------------------------------------------------------------