├── .eslintrc.yaml ├── .gitignore ├── package-lock.json ├── package.json ├── readme.md ├── src ├── basic-pubsub │ ├── publish-bulk.ts │ ├── publisher.ts │ └── receiver.ts ├── events │ └── event-listener.ts └── messenger.ts └── tsconfig.json /.eslintrc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | extends: airbnb-base 3 | env: 4 | node: true 5 | mocha: true 6 | es6: true 7 | parser: typescript-eslint-parser 8 | parserOptions: 9 | sourceType: module 10 | ecmaFeatures: 11 | modules: true 12 | rules: 13 | generator-star-spacing: 14 | - 2 15 | - before: true 16 | after: true 17 | no-shadow: 0 18 | import/no-unresolved: 0 19 | import/extensions: 0 20 | require-yield: 0 21 | no-param-reassign: 0 22 | comma-dangle: 0 23 | no-underscore-dangle: 0 24 | no-control-regex: 0 25 | import/no-extraneous-dependencies: 26 | - 2 27 | - devDependencies: true 28 | func-names: 0 29 | no-unused-expressions: 0 30 | prefer-arrow-callback: 1 31 | no-use-before-define: 32 | - 2 33 | - functions: false 34 | space-before-function-paren: 35 | - 2 36 | - always 37 | max-len: 38 | - 2 39 | - 120 40 | - 2 41 | semi: 42 | - 2 43 | - never 44 | strict: 45 | - 2 46 | - global 47 | arrow-parens: 48 | - 2 49 | - always 50 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | npm-debug.log 4 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@risingstack/rest-api-typescript", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/bluebird": { 8 | "version": "3.5.20", 9 | "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.20.tgz", 10 | "integrity": "sha512-Wk41MVdF+cHBfVXj/ufUHJeO3BlIQr1McbHZANErMykaCWeDSZbH5erGjNBw2/3UlRdSxZbLfSuQTzFmPOYFsA==", 11 | "dev": true 12 | }, 13 | "@types/body-parser": { 14 | "version": "1.16.8", 15 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.16.8.tgz", 16 | "integrity": "sha512-BdN2PXxOFnTXFcyONPW6t0fHjz2fvRZHVMFpaS0wYr+Y8fWEaNOs4V8LEu/fpzQlMx+ahdndgTaGTwPC+J/EeA==", 17 | "dev": true, 18 | "requires": { 19 | "@types/express": "4.11.1", 20 | "@types/node": "7.0.22" 21 | } 22 | }, 23 | "@types/events": { 24 | "version": "1.2.0", 25 | "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", 26 | "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==", 27 | "dev": true 28 | }, 29 | "@types/express": { 30 | "version": "4.11.1", 31 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.11.1.tgz", 32 | "integrity": "sha512-ttWle8cnPA5rAelauSWeWJimtY2RsUf2aspYZs7xPHiWgOlPn6nnUfBMtrkcnjFJuIHJF4gNOdVvpLK2Zmvh6g==", 33 | "dev": true, 34 | "requires": { 35 | "@types/body-parser": "1.16.8", 36 | "@types/express-serve-static-core": "4.11.1", 37 | "@types/serve-static": "1.13.1" 38 | } 39 | }, 40 | "@types/express-serve-static-core": { 41 | "version": "4.11.1", 42 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.11.1.tgz", 43 | "integrity": "sha512-EehCl3tpuqiM8RUb+0255M8PhhSwTtLfmO7zBBdv0ay/VTd/zmrqDfQdZFsa5z/PVMbH2yCMZPXsnrImpATyIw==", 44 | "dev": true, 45 | "requires": { 46 | "@types/events": "1.2.0", 47 | "@types/node": "7.0.22" 48 | } 49 | }, 50 | "@types/ioredis": { 51 | "version": "3.2.7", 52 | "resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-3.2.7.tgz", 53 | "integrity": "sha512-fd8kNaGVoJLm7q3KhT/wT8/OunWUdJUqq9/dt5YhOzPIuHGylmnAC4jJAJpdTHjt7I+btzfPZewzzMW+F4ErBQ==", 54 | "dev": true, 55 | "requires": { 56 | "@types/bluebird": "3.5.20", 57 | "@types/node": "7.0.22" 58 | } 59 | }, 60 | "@types/mime": { 61 | "version": "2.0.0", 62 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz", 63 | "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA==", 64 | "dev": true 65 | }, 66 | "@types/mocha": { 67 | "version": "2.2.41", 68 | "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.41.tgz", 69 | "integrity": "sha1-4nzwgXFT658nE7LT9saPHhw8pgg=", 70 | "dev": true 71 | }, 72 | "@types/node": { 73 | "version": "7.0.22", 74 | "resolved": "https://registry.npmjs.org/@types/node/-/node-7.0.22.tgz", 75 | "integrity": "sha1-RZP02Ci91hKSlHjqQMZ7T0A8olU=", 76 | "dev": true 77 | }, 78 | "@types/serve-static": { 79 | "version": "1.13.1", 80 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.1.tgz", 81 | "integrity": "sha512-jDMH+3BQPtvqZVIcsH700Dfi8Q3MIcEx16g/VdxjoqiGR/NntekB10xdBpirMKnPe9z2C5cBmL0vte0YttOr3Q==", 82 | "dev": true, 83 | "requires": { 84 | "@types/express-serve-static-core": "4.11.1", 85 | "@types/mime": "2.0.0" 86 | } 87 | }, 88 | "acorn": { 89 | "version": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", 90 | "integrity": "sha512-Bg8ZrM3YfY12mPZkONS5uKZsTj9ctIduab+rkfIibEdWeVaZt37HeqsXPf+7ekOECE7NxOOa4VxuZKSkTGo8Tw==", 91 | "dev": true 92 | }, 93 | "acorn-jsx": { 94 | "version": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", 95 | "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", 96 | "dev": true, 97 | "requires": { 98 | "acorn": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz" 99 | }, 100 | "dependencies": { 101 | "acorn": { 102 | "version": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", 103 | "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", 104 | "dev": true 105 | } 106 | } 107 | }, 108 | "ansi-regex": { 109 | "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 110 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 111 | "dev": true 112 | }, 113 | "ansi-styles": { 114 | "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 115 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 116 | "dev": true 117 | }, 118 | "argparse": { 119 | "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 120 | "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", 121 | "dev": true, 122 | "requires": { 123 | "sprintf-js": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" 124 | } 125 | }, 126 | "array-union": { 127 | "version": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 128 | "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", 129 | "dev": true, 130 | "requires": { 131 | "array-uniq": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" 132 | } 133 | }, 134 | "array-uniq": { 135 | "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 136 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 137 | "dev": true 138 | }, 139 | "arrify": { 140 | "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 141 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 142 | "dev": true 143 | }, 144 | "asynckit": { 145 | "version": "0.4.0", 146 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 147 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", 148 | "dev": true 149 | }, 150 | "babel-code-frame": { 151 | "version": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", 152 | "integrity": "sha512-Dmx3yJCO/UHWgFTKUlBPHUm7h5hCjI5Lfc07gmSv7H4AbUwxS7NHyorp8HN1YEd4xSDCf7P4zqnS63I3aaJTwg==", 153 | "dev": true, 154 | "requires": { 155 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 156 | "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 157 | "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz" 158 | } 159 | }, 160 | "balanced-match": { 161 | "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 162 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 163 | "dev": true 164 | }, 165 | "bluebird": { 166 | "version": "3.5.1", 167 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", 168 | "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" 169 | }, 170 | "brace-expansion": { 171 | "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 172 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 173 | "dev": true, 174 | "requires": { 175 | "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 176 | "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 177 | } 178 | }, 179 | "browser-stdout": { 180 | "version": "1.3.0", 181 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", 182 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", 183 | "dev": true 184 | }, 185 | "builtin-modules": { 186 | "version": "1.1.1", 187 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 188 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 189 | "dev": true 190 | }, 191 | "caller-path": { 192 | "version": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 193 | "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", 194 | "dev": true, 195 | "requires": { 196 | "callsites": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz" 197 | } 198 | }, 199 | "callsites": { 200 | "version": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", 201 | "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", 202 | "dev": true 203 | }, 204 | "chalk": { 205 | "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 206 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 207 | "dev": true, 208 | "requires": { 209 | "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 210 | "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 211 | "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 212 | "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 213 | "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" 214 | } 215 | }, 216 | "circular-json": { 217 | "version": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", 218 | "integrity": "sha512-MTc6ffiOuzmPfRWVHjRscjzTQSYq16oouOebk6iHn/Tvp1mKBwQ/x33Trh7oZwI0e7wZyMV9KzDBWalzxjoIGQ==", 219 | "dev": true 220 | }, 221 | "cluster-key-slot": { 222 | "version": "1.0.8", 223 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.0.8.tgz", 224 | "integrity": "sha1-dlRVYIWmUzCTKi6LWXb44tCz5BQ=" 225 | }, 226 | "co": { 227 | "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 228 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", 229 | "dev": true 230 | }, 231 | "combined-stream": { 232 | "version": "1.0.6", 233 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", 234 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", 235 | "dev": true, 236 | "requires": { 237 | "delayed-stream": "1.0.0" 238 | } 239 | }, 240 | "commander": { 241 | "version": "2.9.0", 242 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", 243 | "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", 244 | "dev": true, 245 | "requires": { 246 | "graceful-readlink": "1.0.1" 247 | } 248 | }, 249 | "component-emitter": { 250 | "version": "1.2.1", 251 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 252 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 253 | "dev": true 254 | }, 255 | "concat-map": { 256 | "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 257 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 258 | "dev": true 259 | }, 260 | "concat-stream": { 261 | "version": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", 262 | "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", 263 | "dev": true, 264 | "requires": { 265 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 266 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", 267 | "typedarray": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" 268 | } 269 | }, 270 | "contains-path": { 271 | "version": "0.1.0", 272 | "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", 273 | "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", 274 | "dev": true 275 | }, 276 | "cookiejar": { 277 | "version": "2.1.1", 278 | "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.1.tgz", 279 | "integrity": "sha1-Qa1XsbVVlR7BcUEqgZQrHoIA00o=", 280 | "dev": true 281 | }, 282 | "core-util-is": { 283 | "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 284 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 285 | "dev": true 286 | }, 287 | "debug": { 288 | "version": "2.6.9", 289 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 290 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 291 | "requires": { 292 | "ms": "2.0.0" 293 | }, 294 | "dependencies": { 295 | "ms": { 296 | "version": "2.0.0", 297 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 298 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 299 | } 300 | } 301 | }, 302 | "deep-is": { 303 | "version": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 304 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 305 | "dev": true 306 | }, 307 | "del": { 308 | "version": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 309 | "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", 310 | "dev": true, 311 | "requires": { 312 | "globby": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 313 | "is-path-cwd": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 314 | "is-path-in-cwd": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", 315 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 316 | "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 317 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 318 | "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" 319 | } 320 | }, 321 | "delayed-stream": { 322 | "version": "1.0.0", 323 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 324 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", 325 | "dev": true 326 | }, 327 | "denque": { 328 | "version": "1.2.3", 329 | "resolved": "https://registry.npmjs.org/denque/-/denque-1.2.3.tgz", 330 | "integrity": "sha512-BOjyD1zPf7gqgXlXBCnCsz84cbRNfqpQNvWOUiw3Onu9s7a2afW2LyHzctoie/2KELfUoZkNHTnW02C3hCU20w==" 331 | }, 332 | "diff": { 333 | "version": "3.2.0", 334 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", 335 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", 336 | "dev": true 337 | }, 338 | "doctrine": { 339 | "version": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", 340 | "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", 341 | "dev": true, 342 | "requires": { 343 | "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 344 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 345 | } 346 | }, 347 | "error-ex": { 348 | "version": "1.3.1", 349 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 350 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 351 | "dev": true, 352 | "requires": { 353 | "is-arrayish": "0.2.1" 354 | } 355 | }, 356 | "escape-string-regexp": { 357 | "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 358 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 359 | "dev": true 360 | }, 361 | "eslint": { 362 | "version": "4.0.0", 363 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.0.0.tgz", 364 | "integrity": "sha1-cnfAFDf99B3M0WjVqg5Jt1yh8mA=", 365 | "dev": true, 366 | "requires": { 367 | "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", 368 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 369 | "concat-stream": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", 370 | "debug": "2.6.8", 371 | "doctrine": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", 372 | "eslint-scope": "3.7.1", 373 | "espree": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", 374 | "esquery": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", 375 | "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 376 | "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 377 | "file-entry-cache": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 378 | "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 379 | "globals": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 380 | "ignore": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", 381 | "imurmurhash": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 382 | "inquirer": "3.1.0", 383 | "is-my-json-valid": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", 384 | "is-resolvable": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", 385 | "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", 386 | "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 387 | "levn": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 388 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 389 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 390 | "natural-compare": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 391 | "optionator": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 392 | "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 393 | "pluralize": "4.0.0", 394 | "progress": "2.0.0", 395 | "require-uncached": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 396 | "strip-json-comments": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 397 | "table": "4.0.1", 398 | "text-table": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" 399 | }, 400 | "dependencies": { 401 | "ansi-escapes": { 402 | "version": "2.0.0", 403 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", 404 | "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", 405 | "dev": true 406 | }, 407 | "cli-cursor": { 408 | "version": "2.1.0", 409 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 410 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 411 | "dev": true, 412 | "requires": { 413 | "restore-cursor": "2.0.0" 414 | } 415 | }, 416 | "debug": { 417 | "version": "2.6.8", 418 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 419 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 420 | "dev": true, 421 | "requires": { 422 | "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 423 | } 424 | }, 425 | "figures": { 426 | "version": "2.0.0", 427 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 428 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 429 | "dev": true, 430 | "requires": { 431 | "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" 432 | } 433 | }, 434 | "inquirer": { 435 | "version": "3.1.0", 436 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.1.0.tgz", 437 | "integrity": "sha512-JLl89yPOEoGohLjeGs3XCekeovADbrEw/WRJQYgPED6zeJWrpIsY9i9/rn+VltZox/9w94lVYqo94QfEmniB1w==", 438 | "dev": true, 439 | "requires": { 440 | "ansi-escapes": "2.0.0", 441 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 442 | "cli-cursor": "2.1.0", 443 | "cli-width": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", 444 | "external-editor": "2.0.4", 445 | "figures": "2.0.0", 446 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 447 | "mute-stream": "0.0.7", 448 | "run-async": "2.3.0", 449 | "rx-lite": "4.0.8", 450 | "rx-lite-aggregates": "4.0.8", 451 | "string-width": "2.0.0", 452 | "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 453 | "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" 454 | }, 455 | "dependencies": { 456 | "cli-width": { 457 | "version": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", 458 | "integrity": "sha512-w9+InVqlfC6hq5odRMsdb85XIIaCusCmCg21AsMEqGYKGHEWxr1CBYW4CCTSWC0FpsFGkY6FrOvjnnxGlY52Bg==", 459 | "dev": true 460 | } 461 | } 462 | }, 463 | "is-fullwidth-code-point": { 464 | "version": "2.0.0", 465 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 466 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 467 | "dev": true 468 | }, 469 | "lodash": { 470 | "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 471 | "integrity": "sha512-6X37Sq9KCpLSXEh8uM12AKYlviHPNNk4RxiGBn4cmKGJinbXBneWIV7iE/nXkM928O7ytHcHb6+X6Svl0f4hXg==", 472 | "dev": true 473 | }, 474 | "mute-stream": { 475 | "version": "0.0.7", 476 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 477 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 478 | "dev": true 479 | }, 480 | "onetime": { 481 | "version": "2.0.1", 482 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 483 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 484 | "dev": true, 485 | "requires": { 486 | "mimic-fn": "1.1.0" 487 | } 488 | }, 489 | "pluralize": { 490 | "version": "4.0.0", 491 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", 492 | "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", 493 | "dev": true 494 | }, 495 | "progress": { 496 | "version": "2.0.0", 497 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", 498 | "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", 499 | "dev": true 500 | }, 501 | "restore-cursor": { 502 | "version": "2.0.0", 503 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 504 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 505 | "dev": true, 506 | "requires": { 507 | "onetime": "2.0.1", 508 | "signal-exit": "3.0.2" 509 | } 510 | }, 511 | "run-async": { 512 | "version": "2.3.0", 513 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 514 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 515 | "dev": true, 516 | "requires": { 517 | "is-promise": "2.1.0" 518 | } 519 | }, 520 | "rx-lite": { 521 | "version": "4.0.8", 522 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", 523 | "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", 524 | "dev": true 525 | }, 526 | "string-width": { 527 | "version": "2.0.0", 528 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", 529 | "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", 530 | "dev": true, 531 | "requires": { 532 | "is-fullwidth-code-point": "2.0.0", 533 | "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" 534 | } 535 | }, 536 | "table": { 537 | "version": "4.0.1", 538 | "resolved": "https://registry.npmjs.org/table/-/table-4.0.1.tgz", 539 | "integrity": "sha1-qBFsEz+sLGH0pCCrbN9cTWHw5DU=", 540 | "dev": true, 541 | "requires": { 542 | "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", 543 | "ajv-keywords": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", 544 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 545 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 546 | "slice-ansi": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 547 | "string-width": "2.0.0" 548 | }, 549 | "dependencies": { 550 | "ajv": { 551 | "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", 552 | "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==", 553 | "dev": true, 554 | "requires": { 555 | "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", 556 | "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" 557 | } 558 | }, 559 | "ajv-keywords": { 560 | "version": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", 561 | "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==", 562 | "dev": true 563 | }, 564 | "slice-ansi": { 565 | "version": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 566 | "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", 567 | "dev": true 568 | } 569 | } 570 | } 571 | } 572 | }, 573 | "eslint-config-airbnb-base": { 574 | "version": "11.2.0", 575 | "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.2.0.tgz", 576 | "integrity": "sha1-GancRIGib3CQRUXsBAEWh2AY+FM=", 577 | "dev": true 578 | }, 579 | "eslint-import-resolver-node": { 580 | "version": "0.2.3", 581 | "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", 582 | "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", 583 | "dev": true, 584 | "requires": { 585 | "debug": "2.6.9", 586 | "object-assign": "4.1.1", 587 | "resolve": "1.7.1" 588 | }, 589 | "dependencies": { 590 | "object-assign": { 591 | "version": "4.1.1", 592 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 593 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 594 | "dev": true 595 | } 596 | } 597 | }, 598 | "eslint-module-utils": { 599 | "version": "2.2.0", 600 | "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", 601 | "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", 602 | "dev": true, 603 | "requires": { 604 | "debug": "2.6.9", 605 | "pkg-dir": "1.0.0" 606 | } 607 | }, 608 | "eslint-plugin-import": { 609 | "version": "2.3.0", 610 | "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.3.0.tgz", 611 | "integrity": "sha1-N8gB4K2g4pbL3yDD85OstbUq82s=", 612 | "dev": true, 613 | "requires": { 614 | "builtin-modules": "1.1.1", 615 | "contains-path": "0.1.0", 616 | "debug": "2.6.9", 617 | "doctrine": "1.5.0", 618 | "eslint-import-resolver-node": "0.2.3", 619 | "eslint-module-utils": "2.2.0", 620 | "has": "1.0.1", 621 | "lodash.cond": "4.5.2", 622 | "minimatch": "3.0.4", 623 | "read-pkg-up": "2.0.0" 624 | }, 625 | "dependencies": { 626 | "balanced-match": { 627 | "version": "1.0.0", 628 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 629 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 630 | "dev": true 631 | }, 632 | "brace-expansion": { 633 | "version": "1.1.11", 634 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 635 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 636 | "dev": true, 637 | "requires": { 638 | "balanced-match": "1.0.0", 639 | "concat-map": "0.0.1" 640 | } 641 | }, 642 | "concat-map": { 643 | "version": "0.0.1", 644 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 645 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 646 | "dev": true 647 | }, 648 | "doctrine": { 649 | "version": "1.5.0", 650 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", 651 | "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", 652 | "dev": true, 653 | "requires": { 654 | "esutils": "2.0.2", 655 | "isarray": "1.0.0" 656 | } 657 | }, 658 | "esutils": { 659 | "version": "2.0.2", 660 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 661 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 662 | "dev": true 663 | }, 664 | "isarray": { 665 | "version": "1.0.0", 666 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 667 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 668 | "dev": true 669 | }, 670 | "minimatch": { 671 | "version": "3.0.4", 672 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 673 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 674 | "dev": true, 675 | "requires": { 676 | "brace-expansion": "1.1.11" 677 | } 678 | } 679 | } 680 | }, 681 | "eslint-plugin-promise": { 682 | "version": "3.5.0", 683 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", 684 | "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", 685 | "dev": true 686 | }, 687 | "eslint-scope": { 688 | "version": "3.7.1", 689 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", 690 | "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", 691 | "dev": true, 692 | "requires": { 693 | "esrecurse": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", 694 | "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" 695 | } 696 | }, 697 | "espree": { 698 | "version": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", 699 | "integrity": "sha512-Xqn0i9fqQLP/vV+/kw/kg94qSqoQME0xuoroSuTieHOC3SoYVumn/zq+aoqc0EkK0IqiFhsfN+R+ACt6RExJgg==", 700 | "dev": true, 701 | "requires": { 702 | "acorn": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz", 703 | "acorn-jsx": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz" 704 | } 705 | }, 706 | "esprima": { 707 | "version": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", 708 | "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", 709 | "dev": true 710 | }, 711 | "esquery": { 712 | "version": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", 713 | "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", 714 | "dev": true, 715 | "requires": { 716 | "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz" 717 | } 718 | }, 719 | "esrecurse": { 720 | "version": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", 721 | "integrity": "sha512-4pWjwT+t5yO1v2/nV29A6IUpV7I78jR6mmZhhM/65pPV3ZZZQ5f1j354Mt5XzhDH0bqB3oDfF0BA2RPOY/NxBg==", 722 | "dev": true, 723 | "requires": { 724 | "estraverse": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 725 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 726 | } 727 | }, 728 | "estraverse": { 729 | "version": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 730 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 731 | "dev": true 732 | }, 733 | "esutils": { 734 | "version": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", 735 | "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", 736 | "dev": true 737 | }, 738 | "extend": { 739 | "version": "3.0.1", 740 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 741 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", 742 | "dev": true 743 | }, 744 | "external-editor": { 745 | "version": "2.0.4", 746 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", 747 | "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", 748 | "dev": true, 749 | "requires": { 750 | "iconv-lite": "0.4.18", 751 | "jschardet": "1.4.2", 752 | "tmp": "0.0.31" 753 | } 754 | }, 755 | "fast-levenshtein": { 756 | "version": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 757 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 758 | "dev": true 759 | }, 760 | "file-entry-cache": { 761 | "version": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", 762 | "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", 763 | "dev": true, 764 | "requires": { 765 | "flat-cache": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", 766 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" 767 | } 768 | }, 769 | "find-up": { 770 | "version": "1.1.2", 771 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 772 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 773 | "dev": true, 774 | "requires": { 775 | "path-exists": "2.1.0", 776 | "pinkie-promise": "2.0.1" 777 | }, 778 | "dependencies": { 779 | "pinkie": { 780 | "version": "2.0.4", 781 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 782 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 783 | "dev": true 784 | }, 785 | "pinkie-promise": { 786 | "version": "2.0.1", 787 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 788 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 789 | "dev": true, 790 | "requires": { 791 | "pinkie": "2.0.4" 792 | } 793 | } 794 | } 795 | }, 796 | "flat-cache": { 797 | "version": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", 798 | "integrity": "sha512-JzMp5lzDuF/1qgd3g+awLvXlVxAcWxL4L2NfZe9r19bwjKqGjXg5waNXG8wuP9skmVmiKhAo/lN+FDJxVKNDgQ==", 799 | "dev": true, 800 | "requires": { 801 | "circular-json": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", 802 | "del": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", 803 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 804 | "write": "https://registry.npmjs.org/write/-/write-0.2.1.tgz" 805 | } 806 | }, 807 | "flexbuffer": { 808 | "version": "0.0.6", 809 | "resolved": "https://registry.npmjs.org/flexbuffer/-/flexbuffer-0.0.6.tgz", 810 | "integrity": "sha1-A5/fI/iCPkQMOPMnfm/vEXQhWzA=" 811 | }, 812 | "form-data": { 813 | "version": "2.3.2", 814 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", 815 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", 816 | "dev": true, 817 | "requires": { 818 | "asynckit": "0.4.0", 819 | "combined-stream": "1.0.6", 820 | "mime-types": "2.1.18" 821 | } 822 | }, 823 | "formidable": { 824 | "version": "1.2.1", 825 | "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", 826 | "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==", 827 | "dev": true 828 | }, 829 | "fs.realpath": { 830 | "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 831 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 832 | "dev": true 833 | }, 834 | "function-bind": { 835 | "version": "1.1.1", 836 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 837 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 838 | "dev": true 839 | }, 840 | "generate-function": { 841 | "version": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", 842 | "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", 843 | "dev": true 844 | }, 845 | "generate-object-property": { 846 | "version": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 847 | "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", 848 | "dev": true, 849 | "requires": { 850 | "is-property": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" 851 | } 852 | }, 853 | "glob": { 854 | "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 855 | "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", 856 | "dev": true, 857 | "requires": { 858 | "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 859 | "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 860 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 861 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 862 | "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 863 | "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 864 | } 865 | }, 866 | "globals": { 867 | "version": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", 868 | "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", 869 | "dev": true 870 | }, 871 | "globby": { 872 | "version": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", 873 | "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", 874 | "dev": true, 875 | "requires": { 876 | "array-union": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", 877 | "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 878 | "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 879 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 880 | "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 881 | "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" 882 | } 883 | }, 884 | "graceful-fs": { 885 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 886 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 887 | "dev": true 888 | }, 889 | "graceful-readlink": { 890 | "version": "1.0.1", 891 | "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", 892 | "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", 893 | "dev": true 894 | }, 895 | "growl": { 896 | "version": "1.9.2", 897 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", 898 | "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", 899 | "dev": true 900 | }, 901 | "has": { 902 | "version": "1.0.1", 903 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", 904 | "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", 905 | "dev": true, 906 | "requires": { 907 | "function-bind": "1.1.1" 908 | } 909 | }, 910 | "has-ansi": { 911 | "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 912 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 913 | "dev": true, 914 | "requires": { 915 | "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" 916 | } 917 | }, 918 | "has-flag": { 919 | "version": "1.0.0", 920 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 921 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 922 | "dev": true 923 | }, 924 | "hosted-git-info": { 925 | "version": "2.6.0", 926 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", 927 | "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", 928 | "dev": true 929 | }, 930 | "iconv-lite": { 931 | "version": "0.4.18", 932 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", 933 | "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", 934 | "dev": true 935 | }, 936 | "ignore": { 937 | "version": "https://registry.npmjs.org/ignore/-/ignore-3.3.3.tgz", 938 | "integrity": "sha512-EreSWopcoOuUkFfoYLwnaiDVfyyI4vmaYJN2k9XtwUH0GBRjXcJ6WC9yLrx7+5V1IL9VW+AltFnFG+N9Dp467Q==", 939 | "dev": true 940 | }, 941 | "imurmurhash": { 942 | "version": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 943 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 944 | "dev": true 945 | }, 946 | "inflight": { 947 | "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 948 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 949 | "dev": true, 950 | "requires": { 951 | "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 952 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 953 | } 954 | }, 955 | "inherits": { 956 | "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 957 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 958 | "dev": true 959 | }, 960 | "ioredis": { 961 | "version": "3.2.2", 962 | "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-3.2.2.tgz", 963 | "integrity": "sha512-g+ShTQYLsCcOUkNOK6CCEZbj3aRDVPw3WOwXk+LxlUKvuS9ujEqP2MppBHyRVYrNNFW/vcPaTBUZ2ctGNSiOCA==", 964 | "requires": { 965 | "bluebird": "3.5.1", 966 | "cluster-key-slot": "1.0.8", 967 | "debug": "2.6.9", 968 | "denque": "1.2.3", 969 | "flexbuffer": "0.0.6", 970 | "lodash.assign": "4.2.0", 971 | "lodash.bind": "4.2.1", 972 | "lodash.clone": "4.5.0", 973 | "lodash.clonedeep": "4.5.0", 974 | "lodash.defaults": "4.2.0", 975 | "lodash.difference": "4.5.0", 976 | "lodash.flatten": "4.4.0", 977 | "lodash.foreach": "4.5.0", 978 | "lodash.isempty": "4.4.0", 979 | "lodash.keys": "4.2.0", 980 | "lodash.noop": "3.0.1", 981 | "lodash.partial": "4.2.1", 982 | "lodash.pick": "4.4.0", 983 | "lodash.sample": "4.2.1", 984 | "lodash.shuffle": "4.2.0", 985 | "lodash.values": "4.3.0", 986 | "redis-commands": "1.3.5", 987 | "redis-parser": "2.6.0" 988 | } 989 | }, 990 | "is-arrayish": { 991 | "version": "0.2.1", 992 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 993 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 994 | "dev": true 995 | }, 996 | "is-builtin-module": { 997 | "version": "1.0.0", 998 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 999 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 1000 | "dev": true, 1001 | "requires": { 1002 | "builtin-modules": "1.1.1" 1003 | } 1004 | }, 1005 | "is-my-json-valid": { 1006 | "version": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", 1007 | "integrity": "sha512-6AFGaggK+pZhYW+jXVPxaDgMuZvq0HbinaSrA9ecxKwg1WVKpchZRs0nRkvMiv+hIOFYeyLQ75RVs6Qs+KFk8Q==", 1008 | "dev": true, 1009 | "requires": { 1010 | "generate-function": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", 1011 | "generate-object-property": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", 1012 | "jsonpointer": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", 1013 | "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" 1014 | } 1015 | }, 1016 | "is-path-cwd": { 1017 | "version": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", 1018 | "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", 1019 | "dev": true 1020 | }, 1021 | "is-path-in-cwd": { 1022 | "version": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", 1023 | "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", 1024 | "dev": true, 1025 | "requires": { 1026 | "is-path-inside": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz" 1027 | } 1028 | }, 1029 | "is-path-inside": { 1030 | "version": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", 1031 | "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", 1032 | "dev": true, 1033 | "requires": { 1034 | "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" 1035 | } 1036 | }, 1037 | "is-promise": { 1038 | "version": "2.1.0", 1039 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1040 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1041 | "dev": true 1042 | }, 1043 | "is-property": { 1044 | "version": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", 1045 | "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", 1046 | "dev": true 1047 | }, 1048 | "is-resolvable": { 1049 | "version": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", 1050 | "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", 1051 | "dev": true, 1052 | "requires": { 1053 | "tryit": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz" 1054 | } 1055 | }, 1056 | "isarray": { 1057 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1058 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1059 | "dev": true 1060 | }, 1061 | "js-tokens": { 1062 | "version": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", 1063 | "integrity": "sha512-uGx5mrUJTDuSk2T4NendihsPTPR4Pgu06OYD5bEvFSXX4MZfGSy7tL6nlYWyJUAqQYo/3xkKLyIQzIqDx4UCDg==", 1064 | "dev": true 1065 | }, 1066 | "js-yaml": { 1067 | "version": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.4.tgz", 1068 | "integrity": "sha512-bgjcVwQFrFX7lpj97N1cLRCEUrXKdRqLWwvoKVFep3Qg5RAuYw78NeThxDekWvmuE1tg+0Ke49RshU1ZcXCHmA==", 1069 | "dev": true, 1070 | "requires": { 1071 | "argparse": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", 1072 | "esprima": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz" 1073 | } 1074 | }, 1075 | "jschardet": { 1076 | "version": "1.4.2", 1077 | "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.4.2.tgz", 1078 | "integrity": "sha1-KqEH8UKvQSHRRWWdRPUIMJYeaZo=", 1079 | "dev": true 1080 | }, 1081 | "json-stable-stringify": { 1082 | "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 1083 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 1084 | "dev": true, 1085 | "requires": { 1086 | "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" 1087 | } 1088 | }, 1089 | "json3": { 1090 | "version": "3.3.2", 1091 | "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", 1092 | "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", 1093 | "dev": true 1094 | }, 1095 | "jsonify": { 1096 | "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1097 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1098 | "dev": true 1099 | }, 1100 | "jsonpointer": { 1101 | "version": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", 1102 | "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", 1103 | "dev": true 1104 | }, 1105 | "levn": { 1106 | "version": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1107 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1108 | "dev": true, 1109 | "requires": { 1110 | "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1111 | "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" 1112 | } 1113 | }, 1114 | "load-json-file": { 1115 | "version": "2.0.0", 1116 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", 1117 | "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", 1118 | "dev": true, 1119 | "requires": { 1120 | "graceful-fs": "4.1.11", 1121 | "parse-json": "2.2.0", 1122 | "pify": "2.3.0", 1123 | "strip-bom": "3.0.0" 1124 | }, 1125 | "dependencies": { 1126 | "graceful-fs": { 1127 | "version": "4.1.11", 1128 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1129 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 1130 | "dev": true 1131 | }, 1132 | "pify": { 1133 | "version": "2.3.0", 1134 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1135 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1136 | "dev": true 1137 | } 1138 | } 1139 | }, 1140 | "locate-path": { 1141 | "version": "2.0.0", 1142 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1143 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1144 | "dev": true, 1145 | "requires": { 1146 | "p-locate": "2.0.0", 1147 | "path-exists": "3.0.0" 1148 | }, 1149 | "dependencies": { 1150 | "path-exists": { 1151 | "version": "3.0.0", 1152 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1153 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1154 | "dev": true 1155 | } 1156 | } 1157 | }, 1158 | "lodash._baseassign": { 1159 | "version": "3.2.0", 1160 | "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", 1161 | "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", 1162 | "dev": true, 1163 | "requires": { 1164 | "lodash._basecopy": "3.0.1", 1165 | "lodash.keys": "3.1.2" 1166 | }, 1167 | "dependencies": { 1168 | "lodash.keys": { 1169 | "version": "3.1.2", 1170 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 1171 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 1172 | "dev": true, 1173 | "requires": { 1174 | "lodash._getnative": "3.9.1", 1175 | "lodash.isarguments": "3.1.0", 1176 | "lodash.isarray": "3.0.4" 1177 | } 1178 | } 1179 | } 1180 | }, 1181 | "lodash._basecopy": { 1182 | "version": "3.0.1", 1183 | "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 1184 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 1185 | "dev": true 1186 | }, 1187 | "lodash._basecreate": { 1188 | "version": "3.0.3", 1189 | "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", 1190 | "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", 1191 | "dev": true 1192 | }, 1193 | "lodash._getnative": { 1194 | "version": "3.9.1", 1195 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 1196 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 1197 | "dev": true 1198 | }, 1199 | "lodash._isiterateecall": { 1200 | "version": "3.0.9", 1201 | "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 1202 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 1203 | "dev": true 1204 | }, 1205 | "lodash.assign": { 1206 | "version": "4.2.0", 1207 | "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", 1208 | "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" 1209 | }, 1210 | "lodash.bind": { 1211 | "version": "4.2.1", 1212 | "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz", 1213 | "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=" 1214 | }, 1215 | "lodash.clone": { 1216 | "version": "4.5.0", 1217 | "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", 1218 | "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" 1219 | }, 1220 | "lodash.clonedeep": { 1221 | "version": "4.5.0", 1222 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 1223 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" 1224 | }, 1225 | "lodash.cond": { 1226 | "version": "4.5.2", 1227 | "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", 1228 | "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", 1229 | "dev": true 1230 | }, 1231 | "lodash.create": { 1232 | "version": "3.1.1", 1233 | "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", 1234 | "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", 1235 | "dev": true, 1236 | "requires": { 1237 | "lodash._baseassign": "3.2.0", 1238 | "lodash._basecreate": "3.0.3", 1239 | "lodash._isiterateecall": "3.0.9" 1240 | } 1241 | }, 1242 | "lodash.defaults": { 1243 | "version": "4.2.0", 1244 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", 1245 | "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" 1246 | }, 1247 | "lodash.difference": { 1248 | "version": "4.5.0", 1249 | "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", 1250 | "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" 1251 | }, 1252 | "lodash.flatten": { 1253 | "version": "4.4.0", 1254 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", 1255 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" 1256 | }, 1257 | "lodash.foreach": { 1258 | "version": "4.5.0", 1259 | "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", 1260 | "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" 1261 | }, 1262 | "lodash.isarguments": { 1263 | "version": "3.1.0", 1264 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 1265 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 1266 | "dev": true 1267 | }, 1268 | "lodash.isarray": { 1269 | "version": "3.0.4", 1270 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 1271 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 1272 | "dev": true 1273 | }, 1274 | "lodash.isempty": { 1275 | "version": "4.4.0", 1276 | "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", 1277 | "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" 1278 | }, 1279 | "lodash.keys": { 1280 | "version": "4.2.0", 1281 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", 1282 | "integrity": "sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU=" 1283 | }, 1284 | "lodash.noop": { 1285 | "version": "3.0.1", 1286 | "resolved": "https://registry.npmjs.org/lodash.noop/-/lodash.noop-3.0.1.tgz", 1287 | "integrity": "sha1-OBiPTWUKOkdCWEObluxFsyYXEzw=" 1288 | }, 1289 | "lodash.partial": { 1290 | "version": "4.2.1", 1291 | "resolved": "https://registry.npmjs.org/lodash.partial/-/lodash.partial-4.2.1.tgz", 1292 | "integrity": "sha1-SfPYz9qjv/izqR0SfpIyRUGJYdQ=" 1293 | }, 1294 | "lodash.pick": { 1295 | "version": "4.4.0", 1296 | "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", 1297 | "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" 1298 | }, 1299 | "lodash.sample": { 1300 | "version": "4.2.1", 1301 | "resolved": "https://registry.npmjs.org/lodash.sample/-/lodash.sample-4.2.1.tgz", 1302 | "integrity": "sha1-XkKRsMdT+hq+sKq4+ynfG2bwf20=" 1303 | }, 1304 | "lodash.shuffle": { 1305 | "version": "4.2.0", 1306 | "resolved": "https://registry.npmjs.org/lodash.shuffle/-/lodash.shuffle-4.2.0.tgz", 1307 | "integrity": "sha1-FFtQU8+HX29cKjP0i26ZSMbse0s=" 1308 | }, 1309 | "lodash.unescape": { 1310 | "version": "4.0.1", 1311 | "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", 1312 | "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=", 1313 | "dev": true 1314 | }, 1315 | "lodash.values": { 1316 | "version": "4.3.0", 1317 | "resolved": "https://registry.npmjs.org/lodash.values/-/lodash.values-4.3.0.tgz", 1318 | "integrity": "sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=" 1319 | }, 1320 | "methods": { 1321 | "version": "1.1.2", 1322 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1323 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 1324 | "dev": true 1325 | }, 1326 | "mime": { 1327 | "version": "1.6.0", 1328 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1329 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 1330 | "dev": true 1331 | }, 1332 | "mime-db": { 1333 | "version": "1.33.0", 1334 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 1335 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", 1336 | "dev": true 1337 | }, 1338 | "mime-types": { 1339 | "version": "2.1.18", 1340 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 1341 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 1342 | "dev": true, 1343 | "requires": { 1344 | "mime-db": "1.33.0" 1345 | } 1346 | }, 1347 | "mimic-fn": { 1348 | "version": "1.1.0", 1349 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", 1350 | "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", 1351 | "dev": true 1352 | }, 1353 | "minimatch": { 1354 | "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1355 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", 1356 | "dev": true, 1357 | "requires": { 1358 | "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" 1359 | } 1360 | }, 1361 | "minimist": { 1362 | "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1363 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1364 | "dev": true 1365 | }, 1366 | "mkdirp": { 1367 | "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1368 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1369 | "dev": true, 1370 | "requires": { 1371 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 1372 | } 1373 | }, 1374 | "mocha": { 1375 | "version": "3.4.2", 1376 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.4.2.tgz", 1377 | "integrity": "sha1-0O9NMyEm2/GNDWQMmzgt1IvpdZQ=", 1378 | "dev": true, 1379 | "requires": { 1380 | "browser-stdout": "1.3.0", 1381 | "commander": "2.9.0", 1382 | "debug": "2.6.0", 1383 | "diff": "3.2.0", 1384 | "escape-string-regexp": "1.0.5", 1385 | "glob": "7.1.1", 1386 | "growl": "1.9.2", 1387 | "json3": "3.3.2", 1388 | "lodash.create": "3.1.1", 1389 | "mkdirp": "0.5.1", 1390 | "supports-color": "3.1.2" 1391 | }, 1392 | "dependencies": { 1393 | "balanced-match": { 1394 | "version": "1.0.0", 1395 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1396 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1397 | "dev": true 1398 | }, 1399 | "brace-expansion": { 1400 | "version": "1.1.11", 1401 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1402 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1403 | "dev": true, 1404 | "requires": { 1405 | "balanced-match": "1.0.0", 1406 | "concat-map": "0.0.1" 1407 | } 1408 | }, 1409 | "concat-map": { 1410 | "version": "0.0.1", 1411 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1412 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1413 | "dev": true 1414 | }, 1415 | "debug": { 1416 | "version": "2.6.0", 1417 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz", 1418 | "integrity": "sha1-vFlryr52F/Edn6FTYe3tVgi4SZs=", 1419 | "dev": true, 1420 | "requires": { 1421 | "ms": "0.7.2" 1422 | } 1423 | }, 1424 | "escape-string-regexp": { 1425 | "version": "1.0.5", 1426 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1427 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1428 | "dev": true 1429 | }, 1430 | "fs.realpath": { 1431 | "version": "1.0.0", 1432 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1433 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1434 | "dev": true 1435 | }, 1436 | "glob": { 1437 | "version": "7.1.1", 1438 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", 1439 | "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", 1440 | "dev": true, 1441 | "requires": { 1442 | "fs.realpath": "1.0.0", 1443 | "inflight": "1.0.6", 1444 | "inherits": "2.0.3", 1445 | "minimatch": "3.0.4", 1446 | "once": "1.4.0", 1447 | "path-is-absolute": "1.0.1" 1448 | } 1449 | }, 1450 | "inflight": { 1451 | "version": "1.0.6", 1452 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1453 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1454 | "dev": true, 1455 | "requires": { 1456 | "once": "1.4.0", 1457 | "wrappy": "1.0.2" 1458 | } 1459 | }, 1460 | "inherits": { 1461 | "version": "2.0.3", 1462 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1463 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1464 | "dev": true 1465 | }, 1466 | "minimatch": { 1467 | "version": "3.0.4", 1468 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1469 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1470 | "dev": true, 1471 | "requires": { 1472 | "brace-expansion": "1.1.11" 1473 | } 1474 | }, 1475 | "minimist": { 1476 | "version": "0.0.8", 1477 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1478 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1479 | "dev": true 1480 | }, 1481 | "mkdirp": { 1482 | "version": "0.5.1", 1483 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1484 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1485 | "dev": true, 1486 | "requires": { 1487 | "minimist": "0.0.8" 1488 | } 1489 | }, 1490 | "ms": { 1491 | "version": "0.7.2", 1492 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", 1493 | "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", 1494 | "dev": true 1495 | }, 1496 | "once": { 1497 | "version": "1.4.0", 1498 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1499 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1500 | "dev": true, 1501 | "requires": { 1502 | "wrappy": "1.0.2" 1503 | } 1504 | }, 1505 | "path-is-absolute": { 1506 | "version": "1.0.1", 1507 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1508 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1509 | "dev": true 1510 | }, 1511 | "supports-color": { 1512 | "version": "3.1.2", 1513 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", 1514 | "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", 1515 | "dev": true, 1516 | "requires": { 1517 | "has-flag": "1.0.0" 1518 | } 1519 | }, 1520 | "wrappy": { 1521 | "version": "1.0.2", 1522 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1523 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1524 | "dev": true 1525 | } 1526 | } 1527 | }, 1528 | "ms": { 1529 | "version": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1530 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1531 | "dev": true 1532 | }, 1533 | "natural-compare": { 1534 | "version": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1535 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1536 | "dev": true 1537 | }, 1538 | "normalize-package-data": { 1539 | "version": "2.4.0", 1540 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 1541 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 1542 | "dev": true, 1543 | "requires": { 1544 | "hosted-git-info": "2.6.0", 1545 | "is-builtin-module": "1.0.0", 1546 | "semver": "5.5.0", 1547 | "validate-npm-package-license": "3.0.3" 1548 | } 1549 | }, 1550 | "object-assign": { 1551 | "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1552 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1553 | "dev": true 1554 | }, 1555 | "once": { 1556 | "version": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 1557 | "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", 1558 | "dev": true, 1559 | "requires": { 1560 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1561 | } 1562 | }, 1563 | "optionator": { 1564 | "version": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", 1565 | "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", 1566 | "dev": true, 1567 | "requires": { 1568 | "deep-is": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 1569 | "fast-levenshtein": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1570 | "levn": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1571 | "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1572 | "type-check": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1573 | "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" 1574 | } 1575 | }, 1576 | "os-tmpdir": { 1577 | "version": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1578 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1579 | "dev": true 1580 | }, 1581 | "p-limit": { 1582 | "version": "1.2.0", 1583 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", 1584 | "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", 1585 | "dev": true, 1586 | "requires": { 1587 | "p-try": "1.0.0" 1588 | } 1589 | }, 1590 | "p-locate": { 1591 | "version": "2.0.0", 1592 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1593 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1594 | "dev": true, 1595 | "requires": { 1596 | "p-limit": "1.2.0" 1597 | } 1598 | }, 1599 | "p-try": { 1600 | "version": "1.0.0", 1601 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1602 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 1603 | "dev": true 1604 | }, 1605 | "parse-json": { 1606 | "version": "2.2.0", 1607 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1608 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1609 | "dev": true, 1610 | "requires": { 1611 | "error-ex": "1.3.1" 1612 | } 1613 | }, 1614 | "path-exists": { 1615 | "version": "2.1.0", 1616 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 1617 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 1618 | "dev": true, 1619 | "requires": { 1620 | "pinkie-promise": "2.0.1" 1621 | }, 1622 | "dependencies": { 1623 | "pinkie": { 1624 | "version": "2.0.4", 1625 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1626 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1627 | "dev": true 1628 | }, 1629 | "pinkie-promise": { 1630 | "version": "2.0.1", 1631 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1632 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1633 | "dev": true, 1634 | "requires": { 1635 | "pinkie": "2.0.4" 1636 | } 1637 | } 1638 | } 1639 | }, 1640 | "path-is-absolute": { 1641 | "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1642 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1643 | "dev": true 1644 | }, 1645 | "path-is-inside": { 1646 | "version": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 1647 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 1648 | "dev": true 1649 | }, 1650 | "path-parse": { 1651 | "version": "1.0.5", 1652 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 1653 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 1654 | "dev": true 1655 | }, 1656 | "path-type": { 1657 | "version": "2.0.0", 1658 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", 1659 | "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", 1660 | "dev": true, 1661 | "requires": { 1662 | "pify": "2.3.0" 1663 | }, 1664 | "dependencies": { 1665 | "pify": { 1666 | "version": "2.3.0", 1667 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1668 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1669 | "dev": true 1670 | } 1671 | } 1672 | }, 1673 | "pify": { 1674 | "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1675 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1676 | "dev": true 1677 | }, 1678 | "pinkie": { 1679 | "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1680 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1681 | "dev": true 1682 | }, 1683 | "pinkie-promise": { 1684 | "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1685 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1686 | "dev": true, 1687 | "requires": { 1688 | "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" 1689 | } 1690 | }, 1691 | "pkg-dir": { 1692 | "version": "1.0.0", 1693 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", 1694 | "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", 1695 | "dev": true, 1696 | "requires": { 1697 | "find-up": "1.1.2" 1698 | } 1699 | }, 1700 | "prelude-ls": { 1701 | "version": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1702 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1703 | "dev": true 1704 | }, 1705 | "process-nextick-args": { 1706 | "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1707 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 1708 | "dev": true 1709 | }, 1710 | "qs": { 1711 | "version": "6.5.1", 1712 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", 1713 | "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", 1714 | "dev": true 1715 | }, 1716 | "read-pkg": { 1717 | "version": "2.0.0", 1718 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", 1719 | "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", 1720 | "dev": true, 1721 | "requires": { 1722 | "load-json-file": "2.0.0", 1723 | "normalize-package-data": "2.4.0", 1724 | "path-type": "2.0.0" 1725 | } 1726 | }, 1727 | "read-pkg-up": { 1728 | "version": "2.0.0", 1729 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", 1730 | "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", 1731 | "dev": true, 1732 | "requires": { 1733 | "find-up": "2.1.0", 1734 | "read-pkg": "2.0.0" 1735 | }, 1736 | "dependencies": { 1737 | "find-up": { 1738 | "version": "2.1.0", 1739 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1740 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1741 | "dev": true, 1742 | "requires": { 1743 | "locate-path": "2.0.0" 1744 | } 1745 | } 1746 | } 1747 | }, 1748 | "readable-stream": { 1749 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", 1750 | "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", 1751 | "dev": true, 1752 | "requires": { 1753 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1754 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1755 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1756 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1757 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", 1758 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", 1759 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1760 | } 1761 | }, 1762 | "redis-commands": { 1763 | "version": "1.3.5", 1764 | "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.5.tgz", 1765 | "integrity": "sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA==" 1766 | }, 1767 | "redis-messaging-manager": { 1768 | "version": "1.0.3", 1769 | "resolved": "https://registry.npmjs.org/redis-messaging-manager/-/redis-messaging-manager-1.0.3.tgz", 1770 | "integrity": "sha512-zJlgE4qcae8nqhWtz4MhZdmzE2P6ItUQllk+2KXFF/hvLjhfKElh5BS6njRvPcgYNwvSHU/EbfE107PajvGXxQ==", 1771 | "requires": { 1772 | "ioredis": "3.2.2", 1773 | "rxjs": "5.5.10" 1774 | } 1775 | }, 1776 | "redis-parser": { 1777 | "version": "2.6.0", 1778 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz", 1779 | "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=" 1780 | }, 1781 | "require-uncached": { 1782 | "version": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", 1783 | "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", 1784 | "dev": true, 1785 | "requires": { 1786 | "caller-path": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", 1787 | "resolve-from": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz" 1788 | } 1789 | }, 1790 | "resolve": { 1791 | "version": "1.7.1", 1792 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", 1793 | "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", 1794 | "dev": true, 1795 | "requires": { 1796 | "path-parse": "1.0.5" 1797 | } 1798 | }, 1799 | "resolve-from": { 1800 | "version": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", 1801 | "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", 1802 | "dev": true 1803 | }, 1804 | "rimraf": { 1805 | "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", 1806 | "integrity": "sha512-5QIcndZ8am2WyseL6lln/utl51SwRBQs/at+zi1UnhsnPyZcAID+g0PZrKdb+kJn2fo/CwgyJweR8sP36Jer5g==", 1807 | "dev": true, 1808 | "requires": { 1809 | "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" 1810 | } 1811 | }, 1812 | "rx-lite": { 1813 | "version": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", 1814 | "integrity": "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==", 1815 | "dev": true 1816 | }, 1817 | "rx-lite-aggregates": { 1818 | "version": "4.0.8", 1819 | "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", 1820 | "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", 1821 | "dev": true, 1822 | "requires": { 1823 | "rx-lite": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz" 1824 | } 1825 | }, 1826 | "rxjs": { 1827 | "version": "5.5.10", 1828 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", 1829 | "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", 1830 | "requires": { 1831 | "symbol-observable": "1.0.1" 1832 | } 1833 | }, 1834 | "safe-buffer": { 1835 | "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", 1836 | "integrity": "sha512-cr7dZWLwOeaFBLTIuZeYdkfO7UzGIKhjYENJFAxUOMKWGaWDm2nJM2rzxNRm5Owu0DH3ApwNo6kx5idXZfb/Iw==", 1837 | "dev": true 1838 | }, 1839 | "semver": { 1840 | "version": "5.5.0", 1841 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 1842 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 1843 | "dev": true 1844 | }, 1845 | "signal-exit": { 1846 | "version": "3.0.2", 1847 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1848 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1849 | "dev": true 1850 | }, 1851 | "spdx-correct": { 1852 | "version": "3.0.0", 1853 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", 1854 | "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", 1855 | "dev": true, 1856 | "requires": { 1857 | "spdx-expression-parse": "3.0.0", 1858 | "spdx-license-ids": "3.0.0" 1859 | } 1860 | }, 1861 | "spdx-exceptions": { 1862 | "version": "2.1.0", 1863 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", 1864 | "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", 1865 | "dev": true 1866 | }, 1867 | "spdx-expression-parse": { 1868 | "version": "3.0.0", 1869 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 1870 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 1871 | "dev": true, 1872 | "requires": { 1873 | "spdx-exceptions": "2.1.0", 1874 | "spdx-license-ids": "3.0.0" 1875 | } 1876 | }, 1877 | "spdx-license-ids": { 1878 | "version": "3.0.0", 1879 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", 1880 | "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", 1881 | "dev": true 1882 | }, 1883 | "sprintf-js": { 1884 | "version": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1885 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1886 | "dev": true 1887 | }, 1888 | "string_decoder": { 1889 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", 1890 | "integrity": "sha512-ZHS/JKflyPCvJT+8a8OJS/bXK3ckSErTMh0B3/ElQd2KgMB4368ABudiQRXKWpr3MTBETp4ajjIMKCXcife/Aw==", 1891 | "dev": true, 1892 | "requires": { 1893 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz" 1894 | } 1895 | }, 1896 | "strip-ansi": { 1897 | "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1898 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1899 | "dev": true, 1900 | "requires": { 1901 | "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" 1902 | } 1903 | }, 1904 | "strip-bom": { 1905 | "version": "3.0.0", 1906 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1907 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1908 | "dev": true 1909 | }, 1910 | "strip-json-comments": { 1911 | "version": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1912 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1913 | "dev": true 1914 | }, 1915 | "superagent": { 1916 | "version": "3.8.2", 1917 | "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.2.tgz", 1918 | "integrity": "sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==", 1919 | "dev": true, 1920 | "requires": { 1921 | "component-emitter": "1.2.1", 1922 | "cookiejar": "2.1.1", 1923 | "debug": "3.1.0", 1924 | "extend": "3.0.1", 1925 | "form-data": "2.3.2", 1926 | "formidable": "1.2.1", 1927 | "methods": "1.1.2", 1928 | "mime": "1.6.0", 1929 | "qs": "6.5.1", 1930 | "readable-stream": "2.3.6" 1931 | }, 1932 | "dependencies": { 1933 | "core-util-is": { 1934 | "version": "1.0.2", 1935 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1936 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 1937 | "dev": true 1938 | }, 1939 | "debug": { 1940 | "version": "3.1.0", 1941 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 1942 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 1943 | "dev": true, 1944 | "requires": { 1945 | "ms": "2.0.0" 1946 | } 1947 | }, 1948 | "inherits": { 1949 | "version": "2.0.3", 1950 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1951 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1952 | "dev": true 1953 | }, 1954 | "isarray": { 1955 | "version": "1.0.0", 1956 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1957 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1958 | "dev": true 1959 | }, 1960 | "ms": { 1961 | "version": "2.0.0", 1962 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1963 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1964 | "dev": true 1965 | }, 1966 | "process-nextick-args": { 1967 | "version": "2.0.0", 1968 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 1969 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 1970 | "dev": true 1971 | }, 1972 | "readable-stream": { 1973 | "version": "2.3.6", 1974 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 1975 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 1976 | "dev": true, 1977 | "requires": { 1978 | "core-util-is": "1.0.2", 1979 | "inherits": "2.0.3", 1980 | "isarray": "1.0.0", 1981 | "process-nextick-args": "2.0.0", 1982 | "safe-buffer": "5.1.1", 1983 | "string_decoder": "1.1.1", 1984 | "util-deprecate": "1.0.2" 1985 | } 1986 | }, 1987 | "safe-buffer": { 1988 | "version": "5.1.1", 1989 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1990 | "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", 1991 | "dev": true 1992 | }, 1993 | "string_decoder": { 1994 | "version": "1.1.1", 1995 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1996 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1997 | "dev": true, 1998 | "requires": { 1999 | "safe-buffer": "5.1.1" 2000 | } 2001 | }, 2002 | "util-deprecate": { 2003 | "version": "1.0.2", 2004 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2005 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2006 | "dev": true 2007 | } 2008 | } 2009 | }, 2010 | "supertest": { 2011 | "version": "3.0.0", 2012 | "resolved": "https://registry.npmjs.org/supertest/-/supertest-3.0.0.tgz", 2013 | "integrity": "sha1-jUu2j9GDDuBwM7HFpamkAhyWUpY=", 2014 | "dev": true, 2015 | "requires": { 2016 | "methods": "1.1.2", 2017 | "superagent": "3.8.2" 2018 | } 2019 | }, 2020 | "supports-color": { 2021 | "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2022 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2023 | "dev": true 2024 | }, 2025 | "symbol-observable": { 2026 | "version": "1.0.1", 2027 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", 2028 | "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" 2029 | }, 2030 | "text-table": { 2031 | "version": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2032 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2033 | "dev": true 2034 | }, 2035 | "through": { 2036 | "version": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2037 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 2038 | "dev": true 2039 | }, 2040 | "tmp": { 2041 | "version": "0.0.31", 2042 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", 2043 | "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", 2044 | "dev": true, 2045 | "requires": { 2046 | "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" 2047 | } 2048 | }, 2049 | "tryit": { 2050 | "version": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", 2051 | "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", 2052 | "dev": true 2053 | }, 2054 | "type-check": { 2055 | "version": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 2056 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 2057 | "dev": true, 2058 | "requires": { 2059 | "prelude-ls": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" 2060 | } 2061 | }, 2062 | "typedarray": { 2063 | "version": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 2064 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 2065 | "dev": true 2066 | }, 2067 | "typescript": { 2068 | "version": "2.8.1", 2069 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz", 2070 | "integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==", 2071 | "dev": true 2072 | }, 2073 | "typescript-eslint-parser": { 2074 | "version": "3.0.0", 2075 | "resolved": "https://registry.npmjs.org/typescript-eslint-parser/-/typescript-eslint-parser-3.0.0.tgz", 2076 | "integrity": "sha1-3QQ1swOryEFGTALQAYTXs5vUiLU=", 2077 | "dev": true, 2078 | "requires": { 2079 | "lodash.unescape": "4.0.1", 2080 | "semver": "5.3.0" 2081 | }, 2082 | "dependencies": { 2083 | "semver": { 2084 | "version": "5.3.0", 2085 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", 2086 | "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", 2087 | "dev": true 2088 | } 2089 | } 2090 | }, 2091 | "util-deprecate": { 2092 | "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2093 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2094 | "dev": true 2095 | }, 2096 | "validate-npm-package-license": { 2097 | "version": "3.0.3", 2098 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", 2099 | "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", 2100 | "dev": true, 2101 | "requires": { 2102 | "spdx-correct": "3.0.0", 2103 | "spdx-expression-parse": "3.0.0" 2104 | } 2105 | }, 2106 | "wordwrap": { 2107 | "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", 2108 | "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", 2109 | "dev": true 2110 | }, 2111 | "wrappy": { 2112 | "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2113 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2114 | "dev": true 2115 | }, 2116 | "write": { 2117 | "version": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", 2118 | "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", 2119 | "dev": true, 2120 | "requires": { 2121 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" 2122 | } 2123 | }, 2124 | "xtend": { 2125 | "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 2126 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 2127 | "dev": true 2128 | } 2129 | } 2130 | } 2131 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "redis-messaging-manager-examples", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "tsc", 8 | "dev": "tsc --watch & nodemon dist", 9 | "test": "tsc && mocha dist/**/*.spec.js", 10 | "lint": "eslint src --ext ts", 11 | "tsc": "tsc" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC", 16 | "dependencies": { 17 | "redis-messaging-manager": "^1.5.0" 18 | }, 19 | "devDependencies": { 20 | "@types/bluebird": "^3.5.20", 21 | "@types/express": "^4.11.1", 22 | "@types/ioredis": "^3.2.7", 23 | "@types/mocha": "2.2.41", 24 | "@types/node": "7.0.22", 25 | "eslint": "4.0.0", 26 | "eslint-config-airbnb-base": "11.2.0", 27 | "eslint-plugin-import": "2.3.0", 28 | "eslint-plugin-promise": "3.5.0", 29 | "mocha": "3.4.2", 30 | "supertest": "3.0.0", 31 | "typescript": "^2.7.1", 32 | "typescript-eslint-parser": "3.0.0" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # redis-messaging-manager-examples 2 | 3 | ## Examples for using [redis-mesagging-manager](https://github.com/tomyitav/redis-messaging-manager) library. 4 | 5 | ## Installation 6 | 7 | Clone the repository, and run `npm install` 8 | 9 | ``` 10 | git clone https://github.com/tomyitav/redis-messaging-manager-examples.git 11 | npm install 12 | tsc 13 | ``` 14 | 15 | ### Basic setup 16 | 17 | Make sure a redis broker instance is up on localhost. You can configure 18 | a different ip address in messenger.ts file 19 | 20 | ### Creating PubsubManager instance 21 | 22 | ```js 23 | import {PubsubManager} from 'redis-messaging-manager'; 24 | 25 | let messenger = new PubsubManager({ 26 | host: 'localhost' 27 | }); 28 | export default messenger; 29 | ``` 30 | 31 | ### receiver demo 32 | 33 | The following code snippet shows how to subscribe to a topic, (or channel) 34 | named "redis" 35 | 36 | ```js 37 | import messenger from "../messenger"; 38 | 39 | console.log('consuming messages..!'); 40 | messenger.consume('redis') 41 | .subscribe(msg => { 42 | console.log('Got message- ', msg); 43 | }); 44 | ``` 45 | 46 | Run command: 47 | 48 | ```bash 49 | node dist\basic-pubsub\receiver.js 50 | ``` 51 | 52 | ### Running publisher 53 | 54 | This is how we publish a message on the channel "redis": 55 | 56 | ```js 57 | import messenger from '../messenger'; 58 | 59 | messenger.publish('redis', 'Hello redis messenger!'); 60 | ``` 61 | 62 | Run command: 63 | 64 | ```bash 65 | node dist\basic-pubsub\publisher.js 66 | ``` 67 | 68 | And the message will now be published to the receiver. 69 | 70 | ### Publishing a bulk of messages 71 | 72 | Publishing multiple messages on a channel is supported in ```redis-messaging-manager``` 73 | by using ```publishBulk```. This is implemented by using Redis Pipeline 74 | functionality to boost performance. 75 | 76 | ```js 77 | import messenger from '../messenger'; 78 | 79 | let bulkOfMessages: Array = [ 80 | "hello redis 1", 81 | "hello redis 2", 82 | "hello redis 3", 83 | "hello redis 4", 84 | "hello redis 5" 85 | ] 86 | 87 | messenger.publishBulk('redis', bulkOfMessages); 88 | ``` 89 | 90 | Run command: 91 | 92 | ```bash 93 | node dist\basic-pubsub\publish-bulk.js 94 | ``` 95 | 96 | Now all 5 Messages from the publisher will appear in the receiver console. 97 | 98 | ### Subscribe to server events 99 | 100 | By using the ```getServerEventStream``` method, we get an Observable that 101 | acts as a stream of events from the Redis server instance. 102 | 103 | ```js 104 | import messenger from '../messenger'; 105 | 106 | messenger.getServerEventStream('error') 107 | .subscribe(() => { 108 | console.log('Got error event'); 109 | }) 110 | ``` 111 | 112 | Run command: 113 | 114 | ```bash 115 | node dist\events\event-listener.js 116 | ``` 117 | 118 | 119 | -------------------------------------------------------------------------------- /src/basic-pubsub/publish-bulk.ts: -------------------------------------------------------------------------------- 1 | import messenger from '../messenger'; 2 | 3 | let bulkOfMessages: Array = [ 4 | "hello redis 1", 5 | "hello redis 2", 6 | "hello redis 3", 7 | "hello redis 4", 8 | "hello redis 5" 9 | ] 10 | 11 | messenger.publishBulk('redis', bulkOfMessages); -------------------------------------------------------------------------------- /src/basic-pubsub/publisher.ts: -------------------------------------------------------------------------------- 1 | import messenger from '../messenger'; 2 | 3 | messenger.publish('redis', 'Hello redis messenger!'); -------------------------------------------------------------------------------- /src/basic-pubsub/receiver.ts: -------------------------------------------------------------------------------- 1 | import messenger from "../messenger"; 2 | 3 | console.log('consuming messages..!'); 4 | messenger.consume('redis') 5 | .subscribe(msg => { 6 | console.log('Got message- ', msg); 7 | }); -------------------------------------------------------------------------------- /src/events/event-listener.ts: -------------------------------------------------------------------------------- 1 | import messenger from '../messenger'; 2 | 3 | messenger.getServerEventStream('error') 4 | .subscribe(() => { 5 | console.log('Got error event'); 6 | }) 7 | messenger.getServerEventStream('connect') 8 | .subscribe(() => { 9 | console.log('Got connect event'); 10 | }) 11 | messenger.getServerEventStream('reconnecting') 12 | .subscribe(() => { 13 | console.log('Got reconnecting event'); 14 | }) 15 | -------------------------------------------------------------------------------- /src/messenger.ts: -------------------------------------------------------------------------------- 1 | import {PubsubManager} from 'redis-messaging-manager'; 2 | 3 | let messenger = new PubsubManager({ 4 | host: 'localhost' 5 | }); 6 | export default messenger; -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "outDir": "dist", 6 | "sourceMap": true, 7 | "experimentalDecorators": true, 8 | "emitDecoratorMetadata": true, 9 | "lib": [ 10 | "es2017", 11 | "dom", 12 | "esnext.asynciterable" 13 | ] 14 | }, 15 | "files": [ 16 | "./node_modules/@types/mocha/index.d.ts", 17 | "./node_modules/@types/node/index.d.ts" 18 | ], 19 | "include": [ 20 | "src/**/*.ts" 21 | ], 22 | "exclude": [ 23 | "node_modules" 24 | ] 25 | } 26 | --------------------------------------------------------------------------------