├── .gitignore ├── .prettierrc ├── local.html ├── package-lock.json ├── package.json ├── src ├── auth-server.ts ├── constants.ts ├── html_pages.ts ├── resource-server.ts ├── shared.ts └── types.ts ├── tsconfig.json └── webpack.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | src/private* 2 | dist/* 3 | node_modules/* 4 | *.lock 5 | node/* 6 | src/notes/* -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "" 3 | } -------------------------------------------------------------------------------- /local.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 23 | 24 | 25 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oauth-server", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/jsonwebtoken": { 8 | "version": "7.2.8", 9 | "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-7.2.8.tgz", 10 | "integrity": "sha512-XENN3YzEB8D6TiUww0O8SRznzy1v+77lH7UmuN54xq/IHIsyWjWOzZuFFTtoiRuaE782uAoRwBe/wwow+vQXZw==", 11 | "requires": { 12 | "@types/node": "10.11.7" 13 | } 14 | }, 15 | "@types/node": { 16 | "version": "10.11.7", 17 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.11.7.tgz", 18 | "integrity": "sha512-yOxFfkN9xUFLyvWaeYj90mlqTJ41CsQzWKS3gXdOMOyPVacUsymejKxJ4/pMW7exouubuEeZLJawGgcNGYlTeg==" 19 | }, 20 | "@types/simple-oauth2": { 21 | "version": "2.2.0", 22 | "resolved": "https://registry.npmjs.org/@types/simple-oauth2/-/simple-oauth2-2.2.0.tgz", 23 | "integrity": "sha512-MevfFMWQsGQOvl1bmMih4p6SDeRpTItMI/PHlRUy7B9/RdspC8wLr03/P2WtXaACRBpc5KxVJTBEm1N53VOXog==" 24 | }, 25 | "@webassemblyjs/ast": { 26 | "version": "1.7.8", 27 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.8.tgz", 28 | "integrity": "sha512-dOrtdtEyB8sInpl75yLPNksY4sRl0j/+t6aHyB/YA+ab9hV3Fo7FmG12FHzP+2MvWVAJtDb+6eXR5EZbZJ+uVg==", 29 | "dev": true, 30 | "requires": { 31 | "@webassemblyjs/helper-module-context": "1.7.8", 32 | "@webassemblyjs/helper-wasm-bytecode": "1.7.8", 33 | "@webassemblyjs/wast-parser": "1.7.8" 34 | } 35 | }, 36 | "@webassemblyjs/floating-point-hex-parser": { 37 | "version": "1.7.8", 38 | "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.8.tgz", 39 | "integrity": "sha512-kn2zNKGsbql5i56VAgRYkpG+VazqHhQQZQycT2uXAazrAEDs23gy+Odkh5VblybjnwX2/BITkDtNmSO76hdIvQ==", 40 | "dev": true 41 | }, 42 | "@webassemblyjs/helper-api-error": { 43 | "version": "1.7.8", 44 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.8.tgz", 45 | "integrity": "sha512-xUwxDXsd1dUKArJEP5wWM5zxgCSwZApSOJyP1XO7M8rNUChUDblcLQ4FpzTpWG2YeylMwMl1MlP5Ztryiz1x4g==", 46 | "dev": true 47 | }, 48 | "@webassemblyjs/helper-buffer": { 49 | "version": "1.7.8", 50 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.8.tgz", 51 | "integrity": "sha512-WXiIMnuvuwlhWvVOm8xEXU9DnHaa3AgAU0ZPfvY8vO1cSsmYb2WbGbHnMLgs43vXnA7XAob9b56zuZaMkxpCBg==", 52 | "dev": true 53 | }, 54 | "@webassemblyjs/helper-code-frame": { 55 | "version": "1.7.8", 56 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.8.tgz", 57 | "integrity": "sha512-TLQxyD9qGOIdX5LPQOPo0Ernd88U5rHkFb8WAjeMIeA0sPjCHeVPaGqUGGIXjUcblUkjuDAc07bruCcNHUrHDA==", 58 | "dev": true, 59 | "requires": { 60 | "@webassemblyjs/wast-printer": "1.7.8" 61 | } 62 | }, 63 | "@webassemblyjs/helper-fsm": { 64 | "version": "1.7.8", 65 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.8.tgz", 66 | "integrity": "sha512-TjK0CnD8hAPkV5mbSp5aWl6SO1+H3WFcjWtixWoy8EMA99YnNzYhpc/WSYWhf7yrhpzkq5tZB0tvLK3Svr3IXA==", 67 | "dev": true 68 | }, 69 | "@webassemblyjs/helper-module-context": { 70 | "version": "1.7.8", 71 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.8.tgz", 72 | "integrity": "sha512-uCutAKR7Nm0VsFixcvnB4HhAyHouNbj0Dx1p7eRjFjXGGZ+N7ftTaG1ZbWCasAEbtwGj54LP8+lkBZdTCPmLGg==", 73 | "dev": true 74 | }, 75 | "@webassemblyjs/helper-wasm-bytecode": { 76 | "version": "1.7.8", 77 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.8.tgz", 78 | "integrity": "sha512-AdCCE3BMW6V34WYaKUmPgVHa88t2Z14P4/0LjLwuGkI0X6pf7nzp0CehzVVk51cKm2ymVXjl9dCG+gR1yhITIQ==", 79 | "dev": true 80 | }, 81 | "@webassemblyjs/helper-wasm-section": { 82 | "version": "1.7.8", 83 | "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.8.tgz", 84 | "integrity": "sha512-BkBhYQuzyl4hgTGOKo87Vdw6f9nj8HhI7WYpI0MCC5qFa5ahrAPOGgyETVdnRbv+Rjukl9MxxfDmVcVC435lDg==", 85 | "dev": true, 86 | "requires": { 87 | "@webassemblyjs/ast": "1.7.8", 88 | "@webassemblyjs/helper-buffer": "1.7.8", 89 | "@webassemblyjs/helper-wasm-bytecode": "1.7.8", 90 | "@webassemblyjs/wasm-gen": "1.7.8" 91 | } 92 | }, 93 | "@webassemblyjs/ieee754": { 94 | "version": "1.7.8", 95 | "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.8.tgz", 96 | "integrity": "sha512-tOarWChdG1a3y1yqCX0JMDKzrat5tQe4pV6K/TX19BcXsBLYxFQOL1DEDa5KG9syeyvCrvZ+i1+Mv1ExngvktQ==", 97 | "dev": true, 98 | "requires": { 99 | "@xtuc/ieee754": "1.2.0" 100 | } 101 | }, 102 | "@webassemblyjs/leb128": { 103 | "version": "1.7.8", 104 | "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.8.tgz", 105 | "integrity": "sha512-GCYeGPgUFWJiZuP4NICbcyUQNxNLJIf476Ei+K+jVuuebtLpfvwkvYT6iTUE7oZYehhkor4Zz2g7SJ/iZaPudQ==", 106 | "dev": true, 107 | "requires": { 108 | "@xtuc/long": "4.2.1" 109 | } 110 | }, 111 | "@webassemblyjs/utf8": { 112 | "version": "1.7.8", 113 | "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.8.tgz", 114 | "integrity": "sha512-9X+f0VV+xNXW2ujfIRSXBJENGE6Qh7bNVKqu3yDjTFB3ar3nsThsGBBKdTG58aXOm2iUH6v28VIf88ymPXODHA==", 115 | "dev": true 116 | }, 117 | "@webassemblyjs/wasm-edit": { 118 | "version": "1.7.8", 119 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.8.tgz", 120 | "integrity": "sha512-6D3Hm2gFixrfyx9XjSON4ml1FZTugqpkIz5Awvrou8fnpyprVzcm4X8pyGRtA2Piixjl3DqmX/HB1xdWyE097A==", 121 | "dev": true, 122 | "requires": { 123 | "@webassemblyjs/ast": "1.7.8", 124 | "@webassemblyjs/helper-buffer": "1.7.8", 125 | "@webassemblyjs/helper-wasm-bytecode": "1.7.8", 126 | "@webassemblyjs/helper-wasm-section": "1.7.8", 127 | "@webassemblyjs/wasm-gen": "1.7.8", 128 | "@webassemblyjs/wasm-opt": "1.7.8", 129 | "@webassemblyjs/wasm-parser": "1.7.8", 130 | "@webassemblyjs/wast-printer": "1.7.8" 131 | } 132 | }, 133 | "@webassemblyjs/wasm-gen": { 134 | "version": "1.7.8", 135 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.8.tgz", 136 | "integrity": "sha512-a7O/wE6eBeVKKUYgpMK7NOHmMADD85rSXLe3CqrWRDwWff5y3cSVbzpN6Qv3z6C4hdkpq9qyij1Ga1kemOZGvQ==", 137 | "dev": true, 138 | "requires": { 139 | "@webassemblyjs/ast": "1.7.8", 140 | "@webassemblyjs/helper-wasm-bytecode": "1.7.8", 141 | "@webassemblyjs/ieee754": "1.7.8", 142 | "@webassemblyjs/leb128": "1.7.8", 143 | "@webassemblyjs/utf8": "1.7.8" 144 | } 145 | }, 146 | "@webassemblyjs/wasm-opt": { 147 | "version": "1.7.8", 148 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.8.tgz", 149 | "integrity": "sha512-3lbQ0PT81NHCdi1sR/7+SNpZadM4qYcTSr62nFFAA7e5lFwJr14M1Gi+A/Y3PgcDWOHYjsaNGPpPU0H03N6Blg==", 150 | "dev": true, 151 | "requires": { 152 | "@webassemblyjs/ast": "1.7.8", 153 | "@webassemblyjs/helper-buffer": "1.7.8", 154 | "@webassemblyjs/wasm-gen": "1.7.8", 155 | "@webassemblyjs/wasm-parser": "1.7.8" 156 | } 157 | }, 158 | "@webassemblyjs/wasm-parser": { 159 | "version": "1.7.8", 160 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.8.tgz", 161 | "integrity": "sha512-rZ/zlhp9DHR/05zh1MbAjT2t624sjrPP/OkJCjXqzm7ynH+nIdNcn9Ixc+qzPMFXhIrk0rBoQ3to6sEIvHh9jQ==", 162 | "dev": true, 163 | "requires": { 164 | "@webassemblyjs/ast": "1.7.8", 165 | "@webassemblyjs/helper-api-error": "1.7.8", 166 | "@webassemblyjs/helper-wasm-bytecode": "1.7.8", 167 | "@webassemblyjs/ieee754": "1.7.8", 168 | "@webassemblyjs/leb128": "1.7.8", 169 | "@webassemblyjs/utf8": "1.7.8" 170 | } 171 | }, 172 | "@webassemblyjs/wast-parser": { 173 | "version": "1.7.8", 174 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.8.tgz", 175 | "integrity": "sha512-Q/zrvtUvzWuSiJMcSp90fi6gp2nraiHXjTV2VgAluVdVapM4gy1MQn7akja2p6eSBDQpKJPJ6P4TxRkghRS5dg==", 176 | "dev": true, 177 | "requires": { 178 | "@webassemblyjs/ast": "1.7.8", 179 | "@webassemblyjs/floating-point-hex-parser": "1.7.8", 180 | "@webassemblyjs/helper-api-error": "1.7.8", 181 | "@webassemblyjs/helper-code-frame": "1.7.8", 182 | "@webassemblyjs/helper-fsm": "1.7.8", 183 | "@xtuc/long": "4.2.1" 184 | } 185 | }, 186 | "@webassemblyjs/wast-printer": { 187 | "version": "1.7.8", 188 | "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.8.tgz", 189 | "integrity": "sha512-GllIthRtwTxRDAURRNXscu7Napzmdf1jt1gpiZiK/QN4fH0lSGs3OTmvdfsMNP7tqI4B3ZtfaaWRlNIQug6Xyg==", 190 | "dev": true, 191 | "requires": { 192 | "@webassemblyjs/ast": "1.7.8", 193 | "@webassemblyjs/wast-parser": "1.7.8", 194 | "@xtuc/long": "4.2.1" 195 | } 196 | }, 197 | "@xtuc/ieee754": { 198 | "version": "1.2.0", 199 | "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", 200 | "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", 201 | "dev": true 202 | }, 203 | "@xtuc/long": { 204 | "version": "4.2.1", 205 | "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", 206 | "integrity": "sha512-FZdkNBDqBRHKQ2MEbSC17xnPFOhZxeJ2YGSfr2BKf3sujG49Qe3bB+rGCwQfIaA7WHnGeGkSijX4FuBCdrzW/g==", 207 | "dev": true 208 | }, 209 | "acorn": { 210 | "version": "5.7.3", 211 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", 212 | "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", 213 | "dev": true 214 | }, 215 | "acorn-dynamic-import": { 216 | "version": "3.0.0", 217 | "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", 218 | "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", 219 | "dev": true, 220 | "requires": { 221 | "acorn": "5.7.3" 222 | } 223 | }, 224 | "ajv": { 225 | "version": "6.5.4", 226 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz", 227 | "integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==", 228 | "dev": true, 229 | "requires": { 230 | "fast-deep-equal": "2.0.1", 231 | "fast-json-stable-stringify": "2.0.0", 232 | "json-schema-traverse": "0.4.1", 233 | "uri-js": "4.2.2" 234 | } 235 | }, 236 | "ajv-keywords": { 237 | "version": "3.2.0", 238 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", 239 | "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", 240 | "dev": true 241 | }, 242 | "ansi-regex": { 243 | "version": "3.0.0", 244 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 245 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 246 | "dev": true 247 | }, 248 | "ansi-styles": { 249 | "version": "3.2.1", 250 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 251 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 252 | "dev": true, 253 | "requires": { 254 | "color-convert": "1.9.3" 255 | } 256 | }, 257 | "anymatch": { 258 | "version": "2.0.0", 259 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", 260 | "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", 261 | "dev": true, 262 | "requires": { 263 | "micromatch": "3.1.10", 264 | "normalize-path": "2.1.1" 265 | } 266 | }, 267 | "aproba": { 268 | "version": "1.2.0", 269 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 270 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", 271 | "dev": true 272 | }, 273 | "arr-diff": { 274 | "version": "4.0.0", 275 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 276 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 277 | "dev": true 278 | }, 279 | "arr-flatten": { 280 | "version": "1.1.0", 281 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 282 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 283 | "dev": true 284 | }, 285 | "arr-union": { 286 | "version": "3.1.0", 287 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 288 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 289 | "dev": true 290 | }, 291 | "array-unique": { 292 | "version": "0.3.2", 293 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 294 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 295 | "dev": true 296 | }, 297 | "asn1.js": { 298 | "version": "4.10.1", 299 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", 300 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", 301 | "dev": true, 302 | "requires": { 303 | "bn.js": "4.11.8", 304 | "inherits": "2.0.3", 305 | "minimalistic-assert": "1.0.1" 306 | } 307 | }, 308 | "assert": { 309 | "version": "1.4.1", 310 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", 311 | "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", 312 | "dev": true, 313 | "requires": { 314 | "util": "0.10.3" 315 | }, 316 | "dependencies": { 317 | "inherits": { 318 | "version": "2.0.1", 319 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 320 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", 321 | "dev": true 322 | }, 323 | "util": { 324 | "version": "0.10.3", 325 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 326 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 327 | "dev": true, 328 | "requires": { 329 | "inherits": "2.0.1" 330 | } 331 | } 332 | } 333 | }, 334 | "assign-symbols": { 335 | "version": "1.0.0", 336 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 337 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 338 | "dev": true 339 | }, 340 | "async-each": { 341 | "version": "1.0.1", 342 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 343 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 344 | "dev": true 345 | }, 346 | "atob": { 347 | "version": "2.1.2", 348 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 349 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 350 | "dev": true 351 | }, 352 | "awesome-typescript-loader": { 353 | "version": "5.2.1", 354 | "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-5.2.1.tgz", 355 | "integrity": "sha512-slv66OAJB8orL+UUaTI3pKlLorwIvS4ARZzYR9iJJyGsEgOqueMfOMdKySWzZ73vIkEe3fcwFgsKMg4d8zyb1g==", 356 | "dev": true, 357 | "requires": { 358 | "chalk": "2.4.1", 359 | "enhanced-resolve": "4.1.0", 360 | "loader-utils": "1.1.0", 361 | "lodash": "4.17.11", 362 | "micromatch": "3.1.10", 363 | "mkdirp": "0.5.1", 364 | "source-map-support": "0.5.9", 365 | "webpack-log": "1.2.0" 366 | } 367 | }, 368 | "balanced-match": { 369 | "version": "1.0.0", 370 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 371 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 372 | "dev": true 373 | }, 374 | "base": { 375 | "version": "0.11.2", 376 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 377 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 378 | "dev": true, 379 | "requires": { 380 | "cache-base": "1.0.1", 381 | "class-utils": "0.3.6", 382 | "component-emitter": "1.2.1", 383 | "define-property": "1.0.0", 384 | "isobject": "3.0.1", 385 | "mixin-deep": "1.3.1", 386 | "pascalcase": "0.1.1" 387 | }, 388 | "dependencies": { 389 | "define-property": { 390 | "version": "1.0.0", 391 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 392 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 393 | "dev": true, 394 | "requires": { 395 | "is-descriptor": "1.0.2" 396 | } 397 | }, 398 | "is-accessor-descriptor": { 399 | "version": "1.0.0", 400 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 401 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 402 | "dev": true, 403 | "requires": { 404 | "kind-of": "6.0.2" 405 | } 406 | }, 407 | "is-data-descriptor": { 408 | "version": "1.0.0", 409 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 410 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 411 | "dev": true, 412 | "requires": { 413 | "kind-of": "6.0.2" 414 | } 415 | }, 416 | "is-descriptor": { 417 | "version": "1.0.2", 418 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 419 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 420 | "dev": true, 421 | "requires": { 422 | "is-accessor-descriptor": "1.0.0", 423 | "is-data-descriptor": "1.0.0", 424 | "kind-of": "6.0.2" 425 | } 426 | } 427 | } 428 | }, 429 | "base64-js": { 430 | "version": "1.3.0", 431 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", 432 | "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", 433 | "dev": true 434 | }, 435 | "big.js": { 436 | "version": "3.2.0", 437 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", 438 | "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", 439 | "dev": true 440 | }, 441 | "binary-extensions": { 442 | "version": "1.12.0", 443 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", 444 | "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", 445 | "dev": true 446 | }, 447 | "bluebird": { 448 | "version": "3.5.2", 449 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", 450 | "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", 451 | "dev": true 452 | }, 453 | "bn.js": { 454 | "version": "4.11.8", 455 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", 456 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", 457 | "dev": true 458 | }, 459 | "boom": { 460 | "version": "7.2.0", 461 | "resolved": "https://registry.npmjs.org/boom/-/boom-7.2.0.tgz", 462 | "integrity": "sha1-K/8kpVVldn/ehp7ICDF+sQxI6WY=", 463 | "requires": { 464 | "hoek": "5.0.4" 465 | } 466 | }, 467 | "brace-expansion": { 468 | "version": "1.1.11", 469 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 470 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 471 | "dev": true, 472 | "requires": { 473 | "balanced-match": "1.0.0", 474 | "concat-map": "0.0.1" 475 | } 476 | }, 477 | "braces": { 478 | "version": "2.3.2", 479 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 480 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 481 | "dev": true, 482 | "requires": { 483 | "arr-flatten": "1.1.0", 484 | "array-unique": "0.3.2", 485 | "extend-shallow": "2.0.1", 486 | "fill-range": "4.0.0", 487 | "isobject": "3.0.1", 488 | "repeat-element": "1.1.3", 489 | "snapdragon": "0.8.2", 490 | "snapdragon-node": "2.1.1", 491 | "split-string": "3.1.0", 492 | "to-regex": "3.0.2" 493 | }, 494 | "dependencies": { 495 | "extend-shallow": { 496 | "version": "2.0.1", 497 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 498 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 499 | "dev": true, 500 | "requires": { 501 | "is-extendable": "0.1.1" 502 | } 503 | } 504 | } 505 | }, 506 | "brorand": { 507 | "version": "1.1.0", 508 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 509 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", 510 | "dev": true 511 | }, 512 | "browserify-aes": { 513 | "version": "1.2.0", 514 | "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 515 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 516 | "dev": true, 517 | "requires": { 518 | "buffer-xor": "1.0.3", 519 | "cipher-base": "1.0.4", 520 | "create-hash": "1.2.0", 521 | "evp_bytestokey": "1.0.3", 522 | "inherits": "2.0.3", 523 | "safe-buffer": "5.1.2" 524 | } 525 | }, 526 | "browserify-cipher": { 527 | "version": "1.0.1", 528 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 529 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 530 | "dev": true, 531 | "requires": { 532 | "browserify-aes": "1.2.0", 533 | "browserify-des": "1.0.2", 534 | "evp_bytestokey": "1.0.3" 535 | } 536 | }, 537 | "browserify-des": { 538 | "version": "1.0.2", 539 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 540 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 541 | "dev": true, 542 | "requires": { 543 | "cipher-base": "1.0.4", 544 | "des.js": "1.0.0", 545 | "inherits": "2.0.3", 546 | "safe-buffer": "5.1.2" 547 | } 548 | }, 549 | "browserify-rsa": { 550 | "version": "4.0.1", 551 | "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", 552 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", 553 | "dev": true, 554 | "requires": { 555 | "bn.js": "4.11.8", 556 | "randombytes": "2.0.6" 557 | } 558 | }, 559 | "browserify-sign": { 560 | "version": "4.0.4", 561 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", 562 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", 563 | "dev": true, 564 | "requires": { 565 | "bn.js": "4.11.8", 566 | "browserify-rsa": "4.0.1", 567 | "create-hash": "1.2.0", 568 | "create-hmac": "1.1.7", 569 | "elliptic": "6.4.1", 570 | "inherits": "2.0.3", 571 | "parse-asn1": "5.1.1" 572 | } 573 | }, 574 | "browserify-zlib": { 575 | "version": "0.2.0", 576 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 577 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 578 | "dev": true, 579 | "requires": { 580 | "pako": "1.0.6" 581 | } 582 | }, 583 | "buffer": { 584 | "version": "4.9.1", 585 | "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", 586 | "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", 587 | "dev": true, 588 | "requires": { 589 | "base64-js": "1.3.0", 590 | "ieee754": "1.1.12", 591 | "isarray": "1.0.0" 592 | } 593 | }, 594 | "buffer-equal-constant-time": { 595 | "version": "1.0.1", 596 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 597 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" 598 | }, 599 | "buffer-from": { 600 | "version": "1.1.1", 601 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 602 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 603 | "dev": true 604 | }, 605 | "buffer-xor": { 606 | "version": "1.0.3", 607 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 608 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", 609 | "dev": true 610 | }, 611 | "builtin-status-codes": { 612 | "version": "3.0.0", 613 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 614 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", 615 | "dev": true 616 | }, 617 | "cacache": { 618 | "version": "10.0.4", 619 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", 620 | "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", 621 | "dev": true, 622 | "requires": { 623 | "bluebird": "3.5.2", 624 | "chownr": "1.1.1", 625 | "glob": "7.1.3", 626 | "graceful-fs": "4.1.11", 627 | "lru-cache": "4.1.3", 628 | "mississippi": "2.0.0", 629 | "mkdirp": "0.5.1", 630 | "move-concurrently": "1.0.1", 631 | "promise-inflight": "1.0.1", 632 | "rimraf": "2.6.2", 633 | "ssri": "5.3.0", 634 | "unique-filename": "1.1.1", 635 | "y18n": "4.0.0" 636 | } 637 | }, 638 | "cache-base": { 639 | "version": "1.0.1", 640 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 641 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 642 | "dev": true, 643 | "requires": { 644 | "collection-visit": "1.0.0", 645 | "component-emitter": "1.2.1", 646 | "get-value": "2.0.6", 647 | "has-value": "1.0.0", 648 | "isobject": "3.0.1", 649 | "set-value": "2.0.0", 650 | "to-object-path": "0.3.0", 651 | "union-value": "1.0.0", 652 | "unset-value": "1.0.0" 653 | } 654 | }, 655 | "camelcase": { 656 | "version": "4.1.0", 657 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 658 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", 659 | "dev": true 660 | }, 661 | "chalk": { 662 | "version": "2.4.1", 663 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", 664 | "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", 665 | "dev": true, 666 | "requires": { 667 | "ansi-styles": "3.2.1", 668 | "escape-string-regexp": "1.0.5", 669 | "supports-color": "5.5.0" 670 | } 671 | }, 672 | "chokidar": { 673 | "version": "2.0.4", 674 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", 675 | "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", 676 | "dev": true, 677 | "requires": { 678 | "anymatch": "2.0.0", 679 | "async-each": "1.0.1", 680 | "braces": "2.3.2", 681 | "fsevents": "1.2.4", 682 | "glob-parent": "3.1.0", 683 | "inherits": "2.0.3", 684 | "is-binary-path": "1.0.1", 685 | "is-glob": "4.0.0", 686 | "lodash.debounce": "4.0.8", 687 | "normalize-path": "2.1.1", 688 | "path-is-absolute": "1.0.1", 689 | "readdirp": "2.2.1", 690 | "upath": "1.1.0" 691 | } 692 | }, 693 | "chownr": { 694 | "version": "1.1.1", 695 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", 696 | "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", 697 | "dev": true 698 | }, 699 | "chrome-trace-event": { 700 | "version": "1.0.0", 701 | "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", 702 | "integrity": "sha512-xDbVgyfDTT2piup/h8dK/y4QZfJRSa73bw1WZ8b4XM1o7fsFubUVGYcE+1ANtOzJJELGpYoG2961z0Z6OAld9A==", 703 | "dev": true, 704 | "requires": { 705 | "tslib": "1.9.3" 706 | } 707 | }, 708 | "cipher-base": { 709 | "version": "1.0.4", 710 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 711 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 712 | "dev": true, 713 | "requires": { 714 | "inherits": "2.0.3", 715 | "safe-buffer": "5.1.2" 716 | } 717 | }, 718 | "class-utils": { 719 | "version": "0.3.6", 720 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 721 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 722 | "dev": true, 723 | "requires": { 724 | "arr-union": "3.1.0", 725 | "define-property": "0.2.5", 726 | "isobject": "3.0.1", 727 | "static-extend": "0.1.2" 728 | }, 729 | "dependencies": { 730 | "define-property": { 731 | "version": "0.2.5", 732 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 733 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 734 | "dev": true, 735 | "requires": { 736 | "is-descriptor": "0.1.6" 737 | } 738 | } 739 | } 740 | }, 741 | "cliui": { 742 | "version": "4.1.0", 743 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", 744 | "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", 745 | "dev": true, 746 | "requires": { 747 | "string-width": "2.1.1", 748 | "strip-ansi": "4.0.0", 749 | "wrap-ansi": "2.1.0" 750 | } 751 | }, 752 | "code-point-at": { 753 | "version": "1.1.0", 754 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 755 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 756 | "dev": true 757 | }, 758 | "collection-visit": { 759 | "version": "1.0.0", 760 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 761 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 762 | "dev": true, 763 | "requires": { 764 | "map-visit": "1.0.0", 765 | "object-visit": "1.0.1" 766 | } 767 | }, 768 | "color-convert": { 769 | "version": "1.9.3", 770 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 771 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 772 | "dev": true, 773 | "requires": { 774 | "color-name": "1.1.3" 775 | } 776 | }, 777 | "color-name": { 778 | "version": "1.1.3", 779 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 780 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 781 | "dev": true 782 | }, 783 | "commander": { 784 | "version": "2.13.0", 785 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", 786 | "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", 787 | "dev": true 788 | }, 789 | "commondir": { 790 | "version": "1.0.1", 791 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 792 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 793 | "dev": true 794 | }, 795 | "component-emitter": { 796 | "version": "1.2.1", 797 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 798 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 799 | "dev": true 800 | }, 801 | "concat-map": { 802 | "version": "0.0.1", 803 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 804 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 805 | "dev": true 806 | }, 807 | "concat-stream": { 808 | "version": "1.6.2", 809 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 810 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 811 | "dev": true, 812 | "requires": { 813 | "buffer-from": "1.1.1", 814 | "inherits": "2.0.3", 815 | "readable-stream": "2.3.6", 816 | "typedarray": "0.0.6" 817 | } 818 | }, 819 | "console-browserify": { 820 | "version": "1.1.0", 821 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 822 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 823 | "dev": true, 824 | "requires": { 825 | "date-now": "0.1.4" 826 | } 827 | }, 828 | "constants-browserify": { 829 | "version": "1.0.0", 830 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 831 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", 832 | "dev": true 833 | }, 834 | "copy-concurrently": { 835 | "version": "1.0.5", 836 | "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", 837 | "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", 838 | "dev": true, 839 | "requires": { 840 | "aproba": "1.2.0", 841 | "fs-write-stream-atomic": "1.0.10", 842 | "iferr": "0.1.5", 843 | "mkdirp": "0.5.1", 844 | "rimraf": "2.6.2", 845 | "run-queue": "1.0.3" 846 | } 847 | }, 848 | "copy-descriptor": { 849 | "version": "0.1.1", 850 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 851 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 852 | "dev": true 853 | }, 854 | "core-util-is": { 855 | "version": "1.0.2", 856 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 857 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 858 | "dev": true 859 | }, 860 | "create-ecdh": { 861 | "version": "4.0.3", 862 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", 863 | "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", 864 | "dev": true, 865 | "requires": { 866 | "bn.js": "4.11.8", 867 | "elliptic": "6.4.1" 868 | } 869 | }, 870 | "create-hash": { 871 | "version": "1.2.0", 872 | "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 873 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 874 | "dev": true, 875 | "requires": { 876 | "cipher-base": "1.0.4", 877 | "inherits": "2.0.3", 878 | "md5.js": "1.3.5", 879 | "ripemd160": "2.0.2", 880 | "sha.js": "2.4.11" 881 | } 882 | }, 883 | "create-hmac": { 884 | "version": "1.1.7", 885 | "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 886 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 887 | "dev": true, 888 | "requires": { 889 | "cipher-base": "1.0.4", 890 | "create-hash": "1.2.0", 891 | "inherits": "2.0.3", 892 | "ripemd160": "2.0.2", 893 | "safe-buffer": "5.1.2", 894 | "sha.js": "2.4.11" 895 | } 896 | }, 897 | "cross-spawn": { 898 | "version": "6.0.5", 899 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 900 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 901 | "dev": true, 902 | "requires": { 903 | "nice-try": "1.0.5", 904 | "path-key": "2.0.1", 905 | "semver": "5.6.0", 906 | "shebang-command": "1.2.0", 907 | "which": "1.3.1" 908 | } 909 | }, 910 | "crypto-browserify": { 911 | "version": "3.12.0", 912 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 913 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 914 | "dev": true, 915 | "requires": { 916 | "browserify-cipher": "1.0.1", 917 | "browserify-sign": "4.0.4", 918 | "create-ecdh": "4.0.3", 919 | "create-hash": "1.2.0", 920 | "create-hmac": "1.1.7", 921 | "diffie-hellman": "5.0.3", 922 | "inherits": "2.0.3", 923 | "pbkdf2": "3.0.17", 924 | "public-encrypt": "4.0.3", 925 | "randombytes": "2.0.6", 926 | "randomfill": "1.0.4" 927 | } 928 | }, 929 | "cyclist": { 930 | "version": "0.2.2", 931 | "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", 932 | "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", 933 | "dev": true 934 | }, 935 | "d": { 936 | "version": "1.0.0", 937 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", 938 | "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", 939 | "dev": true, 940 | "requires": { 941 | "es5-ext": "0.10.46" 942 | } 943 | }, 944 | "date-fns": { 945 | "version": "1.29.0", 946 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", 947 | "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" 948 | }, 949 | "date-now": { 950 | "version": "0.1.4", 951 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 952 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", 953 | "dev": true 954 | }, 955 | "debug": { 956 | "version": "2.6.9", 957 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 958 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 959 | "dev": true, 960 | "requires": { 961 | "ms": "2.0.0" 962 | }, 963 | "dependencies": { 964 | "ms": { 965 | "version": "2.0.0", 966 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 967 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 968 | "dev": true 969 | } 970 | } 971 | }, 972 | "decamelize": { 973 | "version": "2.0.0", 974 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", 975 | "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", 976 | "dev": true, 977 | "requires": { 978 | "xregexp": "4.0.0" 979 | } 980 | }, 981 | "decode-uri-component": { 982 | "version": "0.2.0", 983 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 984 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 985 | "dev": true 986 | }, 987 | "define-properties": { 988 | "version": "1.1.3", 989 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 990 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 991 | "dev": true, 992 | "requires": { 993 | "object-keys": "1.0.12" 994 | } 995 | }, 996 | "define-property": { 997 | "version": "2.0.2", 998 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 999 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 1000 | "dev": true, 1001 | "requires": { 1002 | "is-descriptor": "1.0.2", 1003 | "isobject": "3.0.1" 1004 | }, 1005 | "dependencies": { 1006 | "is-accessor-descriptor": { 1007 | "version": "1.0.0", 1008 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1009 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1010 | "dev": true, 1011 | "requires": { 1012 | "kind-of": "6.0.2" 1013 | } 1014 | }, 1015 | "is-data-descriptor": { 1016 | "version": "1.0.0", 1017 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1018 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1019 | "dev": true, 1020 | "requires": { 1021 | "kind-of": "6.0.2" 1022 | } 1023 | }, 1024 | "is-descriptor": { 1025 | "version": "1.0.2", 1026 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1027 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1028 | "dev": true, 1029 | "requires": { 1030 | "is-accessor-descriptor": "1.0.0", 1031 | "is-data-descriptor": "1.0.0", 1032 | "kind-of": "6.0.2" 1033 | } 1034 | } 1035 | } 1036 | }, 1037 | "des.js": { 1038 | "version": "1.0.0", 1039 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", 1040 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", 1041 | "dev": true, 1042 | "requires": { 1043 | "inherits": "2.0.3", 1044 | "minimalistic-assert": "1.0.1" 1045 | } 1046 | }, 1047 | "diffie-hellman": { 1048 | "version": "5.0.3", 1049 | "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 1050 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 1051 | "dev": true, 1052 | "requires": { 1053 | "bn.js": "4.11.8", 1054 | "miller-rabin": "4.0.1", 1055 | "randombytes": "2.0.6" 1056 | } 1057 | }, 1058 | "domain-browser": { 1059 | "version": "1.2.0", 1060 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1061 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", 1062 | "dev": true 1063 | }, 1064 | "duplexify": { 1065 | "version": "3.6.1", 1066 | "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", 1067 | "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", 1068 | "dev": true, 1069 | "requires": { 1070 | "end-of-stream": "1.4.1", 1071 | "inherits": "2.0.3", 1072 | "readable-stream": "2.3.6", 1073 | "stream-shift": "1.0.0" 1074 | } 1075 | }, 1076 | "ecdsa-sig-formatter": { 1077 | "version": "1.0.10", 1078 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", 1079 | "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", 1080 | "requires": { 1081 | "safe-buffer": "5.1.2" 1082 | } 1083 | }, 1084 | "elliptic": { 1085 | "version": "6.4.1", 1086 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", 1087 | "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", 1088 | "dev": true, 1089 | "requires": { 1090 | "bn.js": "4.11.8", 1091 | "brorand": "1.1.0", 1092 | "hash.js": "1.1.5", 1093 | "hmac-drbg": "1.0.1", 1094 | "inherits": "2.0.3", 1095 | "minimalistic-assert": "1.0.1", 1096 | "minimalistic-crypto-utils": "1.0.1" 1097 | } 1098 | }, 1099 | "emojis-list": { 1100 | "version": "2.1.0", 1101 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 1102 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", 1103 | "dev": true 1104 | }, 1105 | "end-of-stream": { 1106 | "version": "1.4.1", 1107 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", 1108 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", 1109 | "dev": true, 1110 | "requires": { 1111 | "once": "1.4.0" 1112 | } 1113 | }, 1114 | "enhanced-resolve": { 1115 | "version": "4.1.0", 1116 | "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", 1117 | "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", 1118 | "dev": true, 1119 | "requires": { 1120 | "graceful-fs": "4.1.11", 1121 | "memory-fs": "0.4.1", 1122 | "tapable": "1.1.0" 1123 | } 1124 | }, 1125 | "errno": { 1126 | "version": "0.1.7", 1127 | "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", 1128 | "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", 1129 | "dev": true, 1130 | "requires": { 1131 | "prr": "1.0.1" 1132 | } 1133 | }, 1134 | "es5-ext": { 1135 | "version": "0.10.46", 1136 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", 1137 | "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", 1138 | "dev": true, 1139 | "requires": { 1140 | "es6-iterator": "2.0.3", 1141 | "es6-symbol": "3.1.1", 1142 | "next-tick": "1.0.0" 1143 | } 1144 | }, 1145 | "es6-iterator": { 1146 | "version": "2.0.3", 1147 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 1148 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 1149 | "dev": true, 1150 | "requires": { 1151 | "d": "1.0.0", 1152 | "es5-ext": "0.10.46", 1153 | "es6-symbol": "3.1.1" 1154 | } 1155 | }, 1156 | "es6-symbol": { 1157 | "version": "3.1.1", 1158 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", 1159 | "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", 1160 | "dev": true, 1161 | "requires": { 1162 | "d": "1.0.0", 1163 | "es5-ext": "0.10.46" 1164 | } 1165 | }, 1166 | "escape-string-regexp": { 1167 | "version": "1.0.5", 1168 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1169 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1170 | "dev": true 1171 | }, 1172 | "eslint-scope": { 1173 | "version": "4.0.0", 1174 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", 1175 | "integrity": "sha512-1G6UTDi7Jc1ELFwnR58HV4fK9OQK4S6N985f166xqXxpjU6plxFISJa2Ba9KCQuFa8RCnj/lSFJbHo7UFDBnUA==", 1176 | "dev": true, 1177 | "requires": { 1178 | "esrecurse": "4.2.1", 1179 | "estraverse": "4.2.0" 1180 | } 1181 | }, 1182 | "esrecurse": { 1183 | "version": "4.2.1", 1184 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 1185 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 1186 | "dev": true, 1187 | "requires": { 1188 | "estraverse": "4.2.0" 1189 | } 1190 | }, 1191 | "estraverse": { 1192 | "version": "4.2.0", 1193 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", 1194 | "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", 1195 | "dev": true 1196 | }, 1197 | "events": { 1198 | "version": "1.1.1", 1199 | "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", 1200 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", 1201 | "dev": true 1202 | }, 1203 | "evp_bytestokey": { 1204 | "version": "1.0.3", 1205 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 1206 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 1207 | "dev": true, 1208 | "requires": { 1209 | "md5.js": "1.3.5", 1210 | "safe-buffer": "5.1.2" 1211 | } 1212 | }, 1213 | "execa": { 1214 | "version": "0.10.0", 1215 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", 1216 | "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", 1217 | "dev": true, 1218 | "requires": { 1219 | "cross-spawn": "6.0.5", 1220 | "get-stream": "3.0.0", 1221 | "is-stream": "1.1.0", 1222 | "npm-run-path": "2.0.2", 1223 | "p-finally": "1.0.0", 1224 | "signal-exit": "3.0.2", 1225 | "strip-eof": "1.0.0" 1226 | } 1227 | }, 1228 | "expand-brackets": { 1229 | "version": "2.1.4", 1230 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 1231 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 1232 | "dev": true, 1233 | "requires": { 1234 | "debug": "2.6.9", 1235 | "define-property": "0.2.5", 1236 | "extend-shallow": "2.0.1", 1237 | "posix-character-classes": "0.1.1", 1238 | "regex-not": "1.0.2", 1239 | "snapdragon": "0.8.2", 1240 | "to-regex": "3.0.2" 1241 | }, 1242 | "dependencies": { 1243 | "define-property": { 1244 | "version": "0.2.5", 1245 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1246 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1247 | "dev": true, 1248 | "requires": { 1249 | "is-descriptor": "0.1.6" 1250 | } 1251 | }, 1252 | "extend-shallow": { 1253 | "version": "2.0.1", 1254 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1255 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1256 | "dev": true, 1257 | "requires": { 1258 | "is-extendable": "0.1.1" 1259 | } 1260 | } 1261 | } 1262 | }, 1263 | "extend-shallow": { 1264 | "version": "3.0.2", 1265 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 1266 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 1267 | "dev": true, 1268 | "requires": { 1269 | "assign-symbols": "1.0.0", 1270 | "is-extendable": "1.0.1" 1271 | }, 1272 | "dependencies": { 1273 | "is-extendable": { 1274 | "version": "1.0.1", 1275 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1276 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1277 | "dev": true, 1278 | "requires": { 1279 | "is-plain-object": "2.0.4" 1280 | } 1281 | } 1282 | } 1283 | }, 1284 | "extglob": { 1285 | "version": "2.0.4", 1286 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 1287 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 1288 | "dev": true, 1289 | "requires": { 1290 | "array-unique": "0.3.2", 1291 | "define-property": "1.0.0", 1292 | "expand-brackets": "2.1.4", 1293 | "extend-shallow": "2.0.1", 1294 | "fragment-cache": "0.2.1", 1295 | "regex-not": "1.0.2", 1296 | "snapdragon": "0.8.2", 1297 | "to-regex": "3.0.2" 1298 | }, 1299 | "dependencies": { 1300 | "define-property": { 1301 | "version": "1.0.0", 1302 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1303 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1304 | "dev": true, 1305 | "requires": { 1306 | "is-descriptor": "1.0.2" 1307 | } 1308 | }, 1309 | "extend-shallow": { 1310 | "version": "2.0.1", 1311 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1312 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1313 | "dev": true, 1314 | "requires": { 1315 | "is-extendable": "0.1.1" 1316 | } 1317 | }, 1318 | "is-accessor-descriptor": { 1319 | "version": "1.0.0", 1320 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1321 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1322 | "dev": true, 1323 | "requires": { 1324 | "kind-of": "6.0.2" 1325 | } 1326 | }, 1327 | "is-data-descriptor": { 1328 | "version": "1.0.0", 1329 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1330 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1331 | "dev": true, 1332 | "requires": { 1333 | "kind-of": "6.0.2" 1334 | } 1335 | }, 1336 | "is-descriptor": { 1337 | "version": "1.0.2", 1338 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1339 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1340 | "dev": true, 1341 | "requires": { 1342 | "is-accessor-descriptor": "1.0.0", 1343 | "is-data-descriptor": "1.0.0", 1344 | "kind-of": "6.0.2" 1345 | } 1346 | } 1347 | } 1348 | }, 1349 | "fast-deep-equal": { 1350 | "version": "2.0.1", 1351 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", 1352 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", 1353 | "dev": true 1354 | }, 1355 | "fast-json-stable-stringify": { 1356 | "version": "2.0.0", 1357 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", 1358 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", 1359 | "dev": true 1360 | }, 1361 | "fill-range": { 1362 | "version": "4.0.0", 1363 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 1364 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 1365 | "dev": true, 1366 | "requires": { 1367 | "extend-shallow": "2.0.1", 1368 | "is-number": "3.0.0", 1369 | "repeat-string": "1.6.1", 1370 | "to-regex-range": "2.1.1" 1371 | }, 1372 | "dependencies": { 1373 | "extend-shallow": { 1374 | "version": "2.0.1", 1375 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1376 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1377 | "dev": true, 1378 | "requires": { 1379 | "is-extendable": "0.1.1" 1380 | } 1381 | } 1382 | } 1383 | }, 1384 | "find-cache-dir": { 1385 | "version": "1.0.0", 1386 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", 1387 | "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", 1388 | "dev": true, 1389 | "requires": { 1390 | "commondir": "1.0.1", 1391 | "make-dir": "1.3.0", 1392 | "pkg-dir": "2.0.0" 1393 | } 1394 | }, 1395 | "find-up": { 1396 | "version": "2.1.0", 1397 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 1398 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 1399 | "dev": true, 1400 | "requires": { 1401 | "locate-path": "2.0.0" 1402 | } 1403 | }, 1404 | "flush-write-stream": { 1405 | "version": "1.0.3", 1406 | "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", 1407 | "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", 1408 | "dev": true, 1409 | "requires": { 1410 | "inherits": "2.0.3", 1411 | "readable-stream": "2.3.6" 1412 | } 1413 | }, 1414 | "for-in": { 1415 | "version": "1.0.2", 1416 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 1417 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 1418 | "dev": true 1419 | }, 1420 | "fragment-cache": { 1421 | "version": "0.2.1", 1422 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 1423 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 1424 | "dev": true, 1425 | "requires": { 1426 | "map-cache": "0.2.2" 1427 | } 1428 | }, 1429 | "from2": { 1430 | "version": "2.3.0", 1431 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", 1432 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", 1433 | "dev": true, 1434 | "requires": { 1435 | "inherits": "2.0.3", 1436 | "readable-stream": "2.3.6" 1437 | } 1438 | }, 1439 | "fs-write-stream-atomic": { 1440 | "version": "1.0.10", 1441 | "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", 1442 | "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", 1443 | "dev": true, 1444 | "requires": { 1445 | "graceful-fs": "4.1.11", 1446 | "iferr": "0.1.5", 1447 | "imurmurhash": "0.1.4", 1448 | "readable-stream": "2.3.6" 1449 | } 1450 | }, 1451 | "fs.realpath": { 1452 | "version": "1.0.0", 1453 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1454 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 1455 | "dev": true 1456 | }, 1457 | "fsevents": { 1458 | "version": "1.2.4", 1459 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", 1460 | "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", 1461 | "dev": true, 1462 | "optional": true, 1463 | "requires": { 1464 | "nan": "2.11.1", 1465 | "node-pre-gyp": "0.10.0" 1466 | }, 1467 | "dependencies": { 1468 | "abbrev": { 1469 | "version": "1.1.1", 1470 | "bundled": true, 1471 | "dev": true, 1472 | "optional": true 1473 | }, 1474 | "ansi-regex": { 1475 | "version": "2.1.1", 1476 | "bundled": true, 1477 | "dev": true 1478 | }, 1479 | "aproba": { 1480 | "version": "1.2.0", 1481 | "bundled": true, 1482 | "dev": true, 1483 | "optional": true 1484 | }, 1485 | "are-we-there-yet": { 1486 | "version": "1.1.4", 1487 | "bundled": true, 1488 | "dev": true, 1489 | "optional": true, 1490 | "requires": { 1491 | "delegates": "1.0.0", 1492 | "readable-stream": "2.3.6" 1493 | } 1494 | }, 1495 | "balanced-match": { 1496 | "version": "1.0.0", 1497 | "bundled": true, 1498 | "dev": true 1499 | }, 1500 | "brace-expansion": { 1501 | "version": "1.1.11", 1502 | "bundled": true, 1503 | "dev": true, 1504 | "requires": { 1505 | "balanced-match": "1.0.0", 1506 | "concat-map": "0.0.1" 1507 | } 1508 | }, 1509 | "chownr": { 1510 | "version": "1.0.1", 1511 | "bundled": true, 1512 | "dev": true, 1513 | "optional": true 1514 | }, 1515 | "code-point-at": { 1516 | "version": "1.1.0", 1517 | "bundled": true, 1518 | "dev": true 1519 | }, 1520 | "concat-map": { 1521 | "version": "0.0.1", 1522 | "bundled": true, 1523 | "dev": true 1524 | }, 1525 | "console-control-strings": { 1526 | "version": "1.1.0", 1527 | "bundled": true, 1528 | "dev": true 1529 | }, 1530 | "core-util-is": { 1531 | "version": "1.0.2", 1532 | "bundled": true, 1533 | "dev": true, 1534 | "optional": true 1535 | }, 1536 | "debug": { 1537 | "version": "2.6.9", 1538 | "bundled": true, 1539 | "dev": true, 1540 | "optional": true, 1541 | "requires": { 1542 | "ms": "2.0.0" 1543 | } 1544 | }, 1545 | "deep-extend": { 1546 | "version": "0.5.1", 1547 | "bundled": true, 1548 | "dev": true, 1549 | "optional": true 1550 | }, 1551 | "delegates": { 1552 | "version": "1.0.0", 1553 | "bundled": true, 1554 | "dev": true, 1555 | "optional": true 1556 | }, 1557 | "detect-libc": { 1558 | "version": "1.0.3", 1559 | "bundled": true, 1560 | "dev": true, 1561 | "optional": true 1562 | }, 1563 | "fs-minipass": { 1564 | "version": "1.2.5", 1565 | "bundled": true, 1566 | "dev": true, 1567 | "optional": true, 1568 | "requires": { 1569 | "minipass": "2.2.4" 1570 | } 1571 | }, 1572 | "fs.realpath": { 1573 | "version": "1.0.0", 1574 | "bundled": true, 1575 | "dev": true, 1576 | "optional": true 1577 | }, 1578 | "gauge": { 1579 | "version": "2.7.4", 1580 | "bundled": true, 1581 | "dev": true, 1582 | "optional": true, 1583 | "requires": { 1584 | "aproba": "1.2.0", 1585 | "console-control-strings": "1.1.0", 1586 | "has-unicode": "2.0.1", 1587 | "object-assign": "4.1.1", 1588 | "signal-exit": "3.0.2", 1589 | "string-width": "1.0.2", 1590 | "strip-ansi": "3.0.1", 1591 | "wide-align": "1.1.2" 1592 | } 1593 | }, 1594 | "glob": { 1595 | "version": "7.1.2", 1596 | "bundled": true, 1597 | "dev": true, 1598 | "optional": true, 1599 | "requires": { 1600 | "fs.realpath": "1.0.0", 1601 | "inflight": "1.0.6", 1602 | "inherits": "2.0.3", 1603 | "minimatch": "3.0.4", 1604 | "once": "1.4.0", 1605 | "path-is-absolute": "1.0.1" 1606 | } 1607 | }, 1608 | "has-unicode": { 1609 | "version": "2.0.1", 1610 | "bundled": true, 1611 | "dev": true, 1612 | "optional": true 1613 | }, 1614 | "iconv-lite": { 1615 | "version": "0.4.21", 1616 | "bundled": true, 1617 | "dev": true, 1618 | "optional": true, 1619 | "requires": { 1620 | "safer-buffer": "2.1.2" 1621 | } 1622 | }, 1623 | "ignore-walk": { 1624 | "version": "3.0.1", 1625 | "bundled": true, 1626 | "dev": true, 1627 | "optional": true, 1628 | "requires": { 1629 | "minimatch": "3.0.4" 1630 | } 1631 | }, 1632 | "inflight": { 1633 | "version": "1.0.6", 1634 | "bundled": true, 1635 | "dev": true, 1636 | "optional": true, 1637 | "requires": { 1638 | "once": "1.4.0", 1639 | "wrappy": "1.0.2" 1640 | } 1641 | }, 1642 | "inherits": { 1643 | "version": "2.0.3", 1644 | "bundled": true, 1645 | "dev": true 1646 | }, 1647 | "ini": { 1648 | "version": "1.3.5", 1649 | "bundled": true, 1650 | "dev": true, 1651 | "optional": true 1652 | }, 1653 | "is-fullwidth-code-point": { 1654 | "version": "1.0.0", 1655 | "bundled": true, 1656 | "dev": true, 1657 | "requires": { 1658 | "number-is-nan": "1.0.1" 1659 | } 1660 | }, 1661 | "isarray": { 1662 | "version": "1.0.0", 1663 | "bundled": true, 1664 | "dev": true, 1665 | "optional": true 1666 | }, 1667 | "minimatch": { 1668 | "version": "3.0.4", 1669 | "bundled": true, 1670 | "dev": true, 1671 | "requires": { 1672 | "brace-expansion": "1.1.11" 1673 | } 1674 | }, 1675 | "minimist": { 1676 | "version": "0.0.8", 1677 | "bundled": true, 1678 | "dev": true 1679 | }, 1680 | "minipass": { 1681 | "version": "2.2.4", 1682 | "bundled": true, 1683 | "dev": true, 1684 | "requires": { 1685 | "safe-buffer": "5.1.1", 1686 | "yallist": "3.0.2" 1687 | } 1688 | }, 1689 | "minizlib": { 1690 | "version": "1.1.0", 1691 | "bundled": true, 1692 | "dev": true, 1693 | "optional": true, 1694 | "requires": { 1695 | "minipass": "2.2.4" 1696 | } 1697 | }, 1698 | "mkdirp": { 1699 | "version": "0.5.1", 1700 | "bundled": true, 1701 | "dev": true, 1702 | "requires": { 1703 | "minimist": "0.0.8" 1704 | } 1705 | }, 1706 | "ms": { 1707 | "version": "2.0.0", 1708 | "bundled": true, 1709 | "dev": true, 1710 | "optional": true 1711 | }, 1712 | "needle": { 1713 | "version": "2.2.0", 1714 | "bundled": true, 1715 | "dev": true, 1716 | "optional": true, 1717 | "requires": { 1718 | "debug": "2.6.9", 1719 | "iconv-lite": "0.4.21", 1720 | "sax": "1.2.4" 1721 | } 1722 | }, 1723 | "node-pre-gyp": { 1724 | "version": "0.10.0", 1725 | "bundled": true, 1726 | "dev": true, 1727 | "optional": true, 1728 | "requires": { 1729 | "detect-libc": "1.0.3", 1730 | "mkdirp": "0.5.1", 1731 | "needle": "2.2.0", 1732 | "nopt": "4.0.1", 1733 | "npm-packlist": "1.1.10", 1734 | "npmlog": "4.1.2", 1735 | "rc": "1.2.7", 1736 | "rimraf": "2.6.2", 1737 | "semver": "5.5.0", 1738 | "tar": "4.4.1" 1739 | } 1740 | }, 1741 | "nopt": { 1742 | "version": "4.0.1", 1743 | "bundled": true, 1744 | "dev": true, 1745 | "optional": true, 1746 | "requires": { 1747 | "abbrev": "1.1.1", 1748 | "osenv": "0.1.5" 1749 | } 1750 | }, 1751 | "npm-bundled": { 1752 | "version": "1.0.3", 1753 | "bundled": true, 1754 | "dev": true, 1755 | "optional": true 1756 | }, 1757 | "npm-packlist": { 1758 | "version": "1.1.10", 1759 | "bundled": true, 1760 | "dev": true, 1761 | "optional": true, 1762 | "requires": { 1763 | "ignore-walk": "3.0.1", 1764 | "npm-bundled": "1.0.3" 1765 | } 1766 | }, 1767 | "npmlog": { 1768 | "version": "4.1.2", 1769 | "bundled": true, 1770 | "dev": true, 1771 | "optional": true, 1772 | "requires": { 1773 | "are-we-there-yet": "1.1.4", 1774 | "console-control-strings": "1.1.0", 1775 | "gauge": "2.7.4", 1776 | "set-blocking": "2.0.0" 1777 | } 1778 | }, 1779 | "number-is-nan": { 1780 | "version": "1.0.1", 1781 | "bundled": true, 1782 | "dev": true 1783 | }, 1784 | "object-assign": { 1785 | "version": "4.1.1", 1786 | "bundled": true, 1787 | "dev": true, 1788 | "optional": true 1789 | }, 1790 | "once": { 1791 | "version": "1.4.0", 1792 | "bundled": true, 1793 | "dev": true, 1794 | "requires": { 1795 | "wrappy": "1.0.2" 1796 | } 1797 | }, 1798 | "os-homedir": { 1799 | "version": "1.0.2", 1800 | "bundled": true, 1801 | "dev": true, 1802 | "optional": true 1803 | }, 1804 | "os-tmpdir": { 1805 | "version": "1.0.2", 1806 | "bundled": true, 1807 | "dev": true, 1808 | "optional": true 1809 | }, 1810 | "osenv": { 1811 | "version": "0.1.5", 1812 | "bundled": true, 1813 | "dev": true, 1814 | "optional": true, 1815 | "requires": { 1816 | "os-homedir": "1.0.2", 1817 | "os-tmpdir": "1.0.2" 1818 | } 1819 | }, 1820 | "path-is-absolute": { 1821 | "version": "1.0.1", 1822 | "bundled": true, 1823 | "dev": true, 1824 | "optional": true 1825 | }, 1826 | "process-nextick-args": { 1827 | "version": "2.0.0", 1828 | "bundled": true, 1829 | "dev": true, 1830 | "optional": true 1831 | }, 1832 | "rc": { 1833 | "version": "1.2.7", 1834 | "bundled": true, 1835 | "dev": true, 1836 | "optional": true, 1837 | "requires": { 1838 | "deep-extend": "0.5.1", 1839 | "ini": "1.3.5", 1840 | "minimist": "1.2.0", 1841 | "strip-json-comments": "2.0.1" 1842 | }, 1843 | "dependencies": { 1844 | "minimist": { 1845 | "version": "1.2.0", 1846 | "bundled": true, 1847 | "dev": true, 1848 | "optional": true 1849 | } 1850 | } 1851 | }, 1852 | "readable-stream": { 1853 | "version": "2.3.6", 1854 | "bundled": true, 1855 | "dev": true, 1856 | "optional": true, 1857 | "requires": { 1858 | "core-util-is": "1.0.2", 1859 | "inherits": "2.0.3", 1860 | "isarray": "1.0.0", 1861 | "process-nextick-args": "2.0.0", 1862 | "safe-buffer": "5.1.1", 1863 | "string_decoder": "1.1.1", 1864 | "util-deprecate": "1.0.2" 1865 | } 1866 | }, 1867 | "rimraf": { 1868 | "version": "2.6.2", 1869 | "bundled": true, 1870 | "dev": true, 1871 | "optional": true, 1872 | "requires": { 1873 | "glob": "7.1.2" 1874 | } 1875 | }, 1876 | "safe-buffer": { 1877 | "version": "5.1.1", 1878 | "bundled": true, 1879 | "dev": true 1880 | }, 1881 | "safer-buffer": { 1882 | "version": "2.1.2", 1883 | "bundled": true, 1884 | "dev": true, 1885 | "optional": true 1886 | }, 1887 | "sax": { 1888 | "version": "1.2.4", 1889 | "bundled": true, 1890 | "dev": true, 1891 | "optional": true 1892 | }, 1893 | "semver": { 1894 | "version": "5.5.0", 1895 | "bundled": true, 1896 | "dev": true, 1897 | "optional": true 1898 | }, 1899 | "set-blocking": { 1900 | "version": "2.0.0", 1901 | "bundled": true, 1902 | "dev": true, 1903 | "optional": true 1904 | }, 1905 | "signal-exit": { 1906 | "version": "3.0.2", 1907 | "bundled": true, 1908 | "dev": true, 1909 | "optional": true 1910 | }, 1911 | "string-width": { 1912 | "version": "1.0.2", 1913 | "bundled": true, 1914 | "dev": true, 1915 | "requires": { 1916 | "code-point-at": "1.1.0", 1917 | "is-fullwidth-code-point": "1.0.0", 1918 | "strip-ansi": "3.0.1" 1919 | } 1920 | }, 1921 | "string_decoder": { 1922 | "version": "1.1.1", 1923 | "bundled": true, 1924 | "dev": true, 1925 | "optional": true, 1926 | "requires": { 1927 | "safe-buffer": "5.1.1" 1928 | } 1929 | }, 1930 | "strip-ansi": { 1931 | "version": "3.0.1", 1932 | "bundled": true, 1933 | "dev": true, 1934 | "requires": { 1935 | "ansi-regex": "2.1.1" 1936 | } 1937 | }, 1938 | "strip-json-comments": { 1939 | "version": "2.0.1", 1940 | "bundled": true, 1941 | "dev": true, 1942 | "optional": true 1943 | }, 1944 | "tar": { 1945 | "version": "4.4.1", 1946 | "bundled": true, 1947 | "dev": true, 1948 | "optional": true, 1949 | "requires": { 1950 | "chownr": "1.0.1", 1951 | "fs-minipass": "1.2.5", 1952 | "minipass": "2.2.4", 1953 | "minizlib": "1.1.0", 1954 | "mkdirp": "0.5.1", 1955 | "safe-buffer": "5.1.1", 1956 | "yallist": "3.0.2" 1957 | } 1958 | }, 1959 | "util-deprecate": { 1960 | "version": "1.0.2", 1961 | "bundled": true, 1962 | "dev": true, 1963 | "optional": true 1964 | }, 1965 | "wide-align": { 1966 | "version": "1.1.2", 1967 | "bundled": true, 1968 | "dev": true, 1969 | "optional": true, 1970 | "requires": { 1971 | "string-width": "1.0.2" 1972 | } 1973 | }, 1974 | "wrappy": { 1975 | "version": "1.0.2", 1976 | "bundled": true, 1977 | "dev": true 1978 | }, 1979 | "yallist": { 1980 | "version": "3.0.2", 1981 | "bundled": true, 1982 | "dev": true 1983 | } 1984 | } 1985 | }, 1986 | "function-bind": { 1987 | "version": "1.1.1", 1988 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1989 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1990 | "dev": true 1991 | }, 1992 | "get-caller-file": { 1993 | "version": "1.0.3", 1994 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", 1995 | "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", 1996 | "dev": true 1997 | }, 1998 | "get-stream": { 1999 | "version": "3.0.0", 2000 | "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 2001 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 2002 | "dev": true 2003 | }, 2004 | "get-value": { 2005 | "version": "2.0.6", 2006 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 2007 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 2008 | "dev": true 2009 | }, 2010 | "glob": { 2011 | "version": "7.1.3", 2012 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", 2013 | "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", 2014 | "dev": true, 2015 | "requires": { 2016 | "fs.realpath": "1.0.0", 2017 | "inflight": "1.0.6", 2018 | "inherits": "2.0.3", 2019 | "minimatch": "3.0.4", 2020 | "once": "1.4.0", 2021 | "path-is-absolute": "1.0.1" 2022 | } 2023 | }, 2024 | "glob-parent": { 2025 | "version": "3.1.0", 2026 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 2027 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 2028 | "dev": true, 2029 | "requires": { 2030 | "is-glob": "3.1.0", 2031 | "path-dirname": "1.0.2" 2032 | }, 2033 | "dependencies": { 2034 | "is-glob": { 2035 | "version": "3.1.0", 2036 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 2037 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 2038 | "dev": true, 2039 | "requires": { 2040 | "is-extglob": "2.1.1" 2041 | } 2042 | } 2043 | } 2044 | }, 2045 | "global-modules-path": { 2046 | "version": "2.3.0", 2047 | "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.0.tgz", 2048 | "integrity": "sha512-HchvMJNYh9dGSCy8pOQ2O8u/hoXaL+0XhnrwH0RyLiSXMMTl9W3N6KUU73+JFOg5PGjtzl6VZzUQsnrpm7Szag==", 2049 | "dev": true 2050 | }, 2051 | "graceful-fs": { 2052 | "version": "4.1.11", 2053 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 2054 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 2055 | "dev": true 2056 | }, 2057 | "has-flag": { 2058 | "version": "3.0.0", 2059 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2060 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 2061 | "dev": true 2062 | }, 2063 | "has-symbols": { 2064 | "version": "1.0.0", 2065 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 2066 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 2067 | "dev": true 2068 | }, 2069 | "has-value": { 2070 | "version": "1.0.0", 2071 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 2072 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 2073 | "dev": true, 2074 | "requires": { 2075 | "get-value": "2.0.6", 2076 | "has-values": "1.0.0", 2077 | "isobject": "3.0.1" 2078 | } 2079 | }, 2080 | "has-values": { 2081 | "version": "1.0.0", 2082 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 2083 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 2084 | "dev": true, 2085 | "requires": { 2086 | "is-number": "3.0.0", 2087 | "kind-of": "4.0.0" 2088 | }, 2089 | "dependencies": { 2090 | "kind-of": { 2091 | "version": "4.0.0", 2092 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 2093 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 2094 | "dev": true, 2095 | "requires": { 2096 | "is-buffer": "1.1.6" 2097 | } 2098 | } 2099 | } 2100 | }, 2101 | "hash-base": { 2102 | "version": "3.0.4", 2103 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", 2104 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", 2105 | "dev": true, 2106 | "requires": { 2107 | "inherits": "2.0.3", 2108 | "safe-buffer": "5.1.2" 2109 | } 2110 | }, 2111 | "hash.js": { 2112 | "version": "1.1.5", 2113 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", 2114 | "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", 2115 | "dev": true, 2116 | "requires": { 2117 | "inherits": "2.0.3", 2118 | "minimalistic-assert": "1.0.1" 2119 | } 2120 | }, 2121 | "hmac-drbg": { 2122 | "version": "1.0.1", 2123 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 2124 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 2125 | "dev": true, 2126 | "requires": { 2127 | "hash.js": "1.1.5", 2128 | "minimalistic-assert": "1.0.1", 2129 | "minimalistic-crypto-utils": "1.0.1" 2130 | } 2131 | }, 2132 | "hoek": { 2133 | "version": "5.0.4", 2134 | "resolved": "https://registry.npmjs.org/hoek/-/hoek-5.0.4.tgz", 2135 | "integrity": "sha512-Alr4ZQgoMlnere5FZJsIyfIjORBqZll5POhDsF4q64dPuJR6rNxXdDxtHSQq8OXRurhmx+PWYEE8bXRROY8h0w==" 2136 | }, 2137 | "https-browserify": { 2138 | "version": "1.0.0", 2139 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 2140 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", 2141 | "dev": true 2142 | }, 2143 | "ieee754": { 2144 | "version": "1.1.12", 2145 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", 2146 | "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", 2147 | "dev": true 2148 | }, 2149 | "iferr": { 2150 | "version": "0.1.5", 2151 | "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", 2152 | "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", 2153 | "dev": true 2154 | }, 2155 | "import-local": { 2156 | "version": "2.0.0", 2157 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", 2158 | "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", 2159 | "dev": true, 2160 | "requires": { 2161 | "pkg-dir": "3.0.0", 2162 | "resolve-cwd": "2.0.0" 2163 | }, 2164 | "dependencies": { 2165 | "find-up": { 2166 | "version": "3.0.0", 2167 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 2168 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 2169 | "dev": true, 2170 | "requires": { 2171 | "locate-path": "3.0.0" 2172 | } 2173 | }, 2174 | "locate-path": { 2175 | "version": "3.0.0", 2176 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2177 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 2178 | "dev": true, 2179 | "requires": { 2180 | "p-locate": "3.0.0", 2181 | "path-exists": "3.0.0" 2182 | } 2183 | }, 2184 | "p-limit": { 2185 | "version": "2.0.0", 2186 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", 2187 | "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", 2188 | "dev": true, 2189 | "requires": { 2190 | "p-try": "2.0.0" 2191 | } 2192 | }, 2193 | "p-locate": { 2194 | "version": "3.0.0", 2195 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 2196 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 2197 | "dev": true, 2198 | "requires": { 2199 | "p-limit": "2.0.0" 2200 | } 2201 | }, 2202 | "p-try": { 2203 | "version": "2.0.0", 2204 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", 2205 | "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", 2206 | "dev": true 2207 | }, 2208 | "pkg-dir": { 2209 | "version": "3.0.0", 2210 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", 2211 | "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", 2212 | "dev": true, 2213 | "requires": { 2214 | "find-up": "3.0.0" 2215 | } 2216 | } 2217 | } 2218 | }, 2219 | "imurmurhash": { 2220 | "version": "0.1.4", 2221 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2222 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2223 | "dev": true 2224 | }, 2225 | "indexof": { 2226 | "version": "0.0.1", 2227 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 2228 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", 2229 | "dev": true 2230 | }, 2231 | "inflight": { 2232 | "version": "1.0.6", 2233 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2234 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2235 | "dev": true, 2236 | "requires": { 2237 | "once": "1.4.0", 2238 | "wrappy": "1.0.2" 2239 | } 2240 | }, 2241 | "inherits": { 2242 | "version": "2.0.3", 2243 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2244 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 2245 | "dev": true 2246 | }, 2247 | "interpret": { 2248 | "version": "1.1.0", 2249 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", 2250 | "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", 2251 | "dev": true 2252 | }, 2253 | "invert-kv": { 2254 | "version": "2.0.0", 2255 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", 2256 | "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", 2257 | "dev": true 2258 | }, 2259 | "is-accessor-descriptor": { 2260 | "version": "0.1.6", 2261 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 2262 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 2263 | "dev": true, 2264 | "requires": { 2265 | "kind-of": "3.2.2" 2266 | }, 2267 | "dependencies": { 2268 | "kind-of": { 2269 | "version": "3.2.2", 2270 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2271 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2272 | "dev": true, 2273 | "requires": { 2274 | "is-buffer": "1.1.6" 2275 | } 2276 | } 2277 | } 2278 | }, 2279 | "is-binary-path": { 2280 | "version": "1.0.1", 2281 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 2282 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 2283 | "dev": true, 2284 | "requires": { 2285 | "binary-extensions": "1.12.0" 2286 | } 2287 | }, 2288 | "is-buffer": { 2289 | "version": "1.1.6", 2290 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 2291 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 2292 | "dev": true 2293 | }, 2294 | "is-data-descriptor": { 2295 | "version": "0.1.4", 2296 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 2297 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 2298 | "dev": true, 2299 | "requires": { 2300 | "kind-of": "3.2.2" 2301 | }, 2302 | "dependencies": { 2303 | "kind-of": { 2304 | "version": "3.2.2", 2305 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2306 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2307 | "dev": true, 2308 | "requires": { 2309 | "is-buffer": "1.1.6" 2310 | } 2311 | } 2312 | } 2313 | }, 2314 | "is-descriptor": { 2315 | "version": "0.1.6", 2316 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 2317 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 2318 | "dev": true, 2319 | "requires": { 2320 | "is-accessor-descriptor": "0.1.6", 2321 | "is-data-descriptor": "0.1.4", 2322 | "kind-of": "5.1.0" 2323 | }, 2324 | "dependencies": { 2325 | "kind-of": { 2326 | "version": "5.1.0", 2327 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 2328 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 2329 | "dev": true 2330 | } 2331 | } 2332 | }, 2333 | "is-extendable": { 2334 | "version": "0.1.1", 2335 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 2336 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 2337 | "dev": true 2338 | }, 2339 | "is-extglob": { 2340 | "version": "2.1.1", 2341 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2342 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 2343 | "dev": true 2344 | }, 2345 | "is-fullwidth-code-point": { 2346 | "version": "2.0.0", 2347 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2348 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2349 | "dev": true 2350 | }, 2351 | "is-glob": { 2352 | "version": "4.0.0", 2353 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", 2354 | "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", 2355 | "dev": true, 2356 | "requires": { 2357 | "is-extglob": "2.1.1" 2358 | } 2359 | }, 2360 | "is-number": { 2361 | "version": "3.0.0", 2362 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 2363 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 2364 | "dev": true, 2365 | "requires": { 2366 | "kind-of": "3.2.2" 2367 | }, 2368 | "dependencies": { 2369 | "kind-of": { 2370 | "version": "3.2.2", 2371 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2372 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2373 | "dev": true, 2374 | "requires": { 2375 | "is-buffer": "1.1.6" 2376 | } 2377 | } 2378 | } 2379 | }, 2380 | "is-plain-object": { 2381 | "version": "2.0.4", 2382 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 2383 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 2384 | "dev": true, 2385 | "requires": { 2386 | "isobject": "3.0.1" 2387 | } 2388 | }, 2389 | "is-stream": { 2390 | "version": "1.1.0", 2391 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 2392 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 2393 | "dev": true 2394 | }, 2395 | "is-windows": { 2396 | "version": "1.0.2", 2397 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 2398 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 2399 | "dev": true 2400 | }, 2401 | "is-wsl": { 2402 | "version": "1.1.0", 2403 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 2404 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", 2405 | "dev": true 2406 | }, 2407 | "isarray": { 2408 | "version": "1.0.0", 2409 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2410 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2411 | "dev": true 2412 | }, 2413 | "isemail": { 2414 | "version": "3.1.4", 2415 | "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.4.tgz", 2416 | "integrity": "sha512-yE/W5osEWuAGSLVixV9pAexhkbZzglmuhO2CxdHu7IBh7uzuZogQ4bk0lE26HoZ6HD4ZYfKRKilkNuCnuJIBJw==", 2417 | "requires": { 2418 | "punycode": "2.1.1" 2419 | } 2420 | }, 2421 | "isexe": { 2422 | "version": "2.0.0", 2423 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2424 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 2425 | "dev": true 2426 | }, 2427 | "isobject": { 2428 | "version": "3.0.1", 2429 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 2430 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 2431 | "dev": true 2432 | }, 2433 | "joi": { 2434 | "version": "13.7.0", 2435 | "resolved": "https://registry.npmjs.org/joi/-/joi-13.7.0.tgz", 2436 | "integrity": "sha512-xuY5VkHfeOYK3Hdi91ulocfuFopwgbSORmIwzcwHKESQhC7w1kD5jaVSPnqDxS2I8t3RZ9omCKAxNwXN5zG1/Q==", 2437 | "requires": { 2438 | "hoek": "5.0.4", 2439 | "isemail": "3.1.4", 2440 | "topo": "3.0.0" 2441 | } 2442 | }, 2443 | "joi-browser": { 2444 | "version": "13.4.0", 2445 | "resolved": "https://registry.npmjs.org/joi-browser/-/joi-browser-13.4.0.tgz", 2446 | "integrity": "sha512-TfzJd2JaJ/lg/gU+q5j9rLAjnfUNF9DUmXTP9w+GfmG79LjFOXFeM7hIFuXCBcZCivUDFwd9l1btTV9rhHumtQ==" 2447 | }, 2448 | "json-parse-better-errors": { 2449 | "version": "1.0.2", 2450 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 2451 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 2452 | "dev": true 2453 | }, 2454 | "json-schema-traverse": { 2455 | "version": "0.4.1", 2456 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2457 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2458 | "dev": true 2459 | }, 2460 | "json5": { 2461 | "version": "0.5.1", 2462 | "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", 2463 | "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", 2464 | "dev": true 2465 | }, 2466 | "jsonwebtoken": { 2467 | "version": "8.3.0", 2468 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz", 2469 | "integrity": "sha512-oge/hvlmeJCH+iIz1DwcO7vKPkNGJHhgkspk8OH3VKlw+mbi42WtD4ig1+VXRln765vxptAv+xT26Fd3cteqag==", 2470 | "requires": { 2471 | "jws": "3.1.5", 2472 | "lodash.includes": "4.3.0", 2473 | "lodash.isboolean": "3.0.3", 2474 | "lodash.isinteger": "4.0.4", 2475 | "lodash.isnumber": "3.0.3", 2476 | "lodash.isplainobject": "4.0.6", 2477 | "lodash.isstring": "4.0.1", 2478 | "lodash.once": "4.1.1", 2479 | "ms": "2.1.1" 2480 | } 2481 | }, 2482 | "jwa": { 2483 | "version": "1.1.6", 2484 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", 2485 | "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", 2486 | "requires": { 2487 | "buffer-equal-constant-time": "1.0.1", 2488 | "ecdsa-sig-formatter": "1.0.10", 2489 | "safe-buffer": "5.1.2" 2490 | } 2491 | }, 2492 | "jws": { 2493 | "version": "3.1.5", 2494 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", 2495 | "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", 2496 | "requires": { 2497 | "jwa": "1.1.6", 2498 | "safe-buffer": "5.1.2" 2499 | } 2500 | }, 2501 | "kind-of": { 2502 | "version": "6.0.2", 2503 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 2504 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 2505 | "dev": true 2506 | }, 2507 | "lcid": { 2508 | "version": "2.0.0", 2509 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", 2510 | "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", 2511 | "dev": true, 2512 | "requires": { 2513 | "invert-kv": "2.0.0" 2514 | } 2515 | }, 2516 | "loader-runner": { 2517 | "version": "2.3.1", 2518 | "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", 2519 | "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", 2520 | "dev": true 2521 | }, 2522 | "loader-utils": { 2523 | "version": "1.1.0", 2524 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", 2525 | "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", 2526 | "dev": true, 2527 | "requires": { 2528 | "big.js": "3.2.0", 2529 | "emojis-list": "2.1.0", 2530 | "json5": "0.5.1" 2531 | } 2532 | }, 2533 | "locate-path": { 2534 | "version": "2.0.0", 2535 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 2536 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 2537 | "dev": true, 2538 | "requires": { 2539 | "p-locate": "2.0.0", 2540 | "path-exists": "3.0.0" 2541 | } 2542 | }, 2543 | "lodash": { 2544 | "version": "4.17.11", 2545 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", 2546 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", 2547 | "dev": true 2548 | }, 2549 | "lodash.debounce": { 2550 | "version": "4.0.8", 2551 | "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", 2552 | "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", 2553 | "dev": true 2554 | }, 2555 | "lodash.includes": { 2556 | "version": "4.3.0", 2557 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 2558 | "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" 2559 | }, 2560 | "lodash.isboolean": { 2561 | "version": "3.0.3", 2562 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 2563 | "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" 2564 | }, 2565 | "lodash.isinteger": { 2566 | "version": "4.0.4", 2567 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 2568 | "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" 2569 | }, 2570 | "lodash.isnumber": { 2571 | "version": "3.0.3", 2572 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 2573 | "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" 2574 | }, 2575 | "lodash.isplainobject": { 2576 | "version": "4.0.6", 2577 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 2578 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" 2579 | }, 2580 | "lodash.isstring": { 2581 | "version": "4.0.1", 2582 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 2583 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" 2584 | }, 2585 | "lodash.once": { 2586 | "version": "4.1.1", 2587 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 2588 | "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" 2589 | }, 2590 | "log-symbols": { 2591 | "version": "2.2.0", 2592 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", 2593 | "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", 2594 | "dev": true, 2595 | "requires": { 2596 | "chalk": "2.4.1" 2597 | } 2598 | }, 2599 | "loglevelnext": { 2600 | "version": "1.0.5", 2601 | "resolved": "https://registry.npmjs.org/loglevelnext/-/loglevelnext-1.0.5.tgz", 2602 | "integrity": "sha512-V/73qkPuJmx4BcBF19xPBr+0ZRVBhc4POxvZTZdMeXpJ4NItXSJ/MSwuFT0kQJlCbXvdlZoQQ/418bS1y9Jh6A==", 2603 | "dev": true, 2604 | "requires": { 2605 | "es6-symbol": "3.1.1", 2606 | "object.assign": "4.1.0" 2607 | } 2608 | }, 2609 | "lru-cache": { 2610 | "version": "4.1.3", 2611 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", 2612 | "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", 2613 | "dev": true, 2614 | "requires": { 2615 | "pseudomap": "1.0.2", 2616 | "yallist": "2.1.2" 2617 | } 2618 | }, 2619 | "make-dir": { 2620 | "version": "1.3.0", 2621 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 2622 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 2623 | "dev": true, 2624 | "requires": { 2625 | "pify": "3.0.0" 2626 | } 2627 | }, 2628 | "map-age-cleaner": { 2629 | "version": "0.1.2", 2630 | "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", 2631 | "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", 2632 | "dev": true, 2633 | "requires": { 2634 | "p-defer": "1.0.0" 2635 | } 2636 | }, 2637 | "map-cache": { 2638 | "version": "0.2.2", 2639 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 2640 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 2641 | "dev": true 2642 | }, 2643 | "map-visit": { 2644 | "version": "1.0.0", 2645 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 2646 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 2647 | "dev": true, 2648 | "requires": { 2649 | "object-visit": "1.0.1" 2650 | } 2651 | }, 2652 | "md5.js": { 2653 | "version": "1.3.5", 2654 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 2655 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 2656 | "dev": true, 2657 | "requires": { 2658 | "hash-base": "3.0.4", 2659 | "inherits": "2.0.3", 2660 | "safe-buffer": "5.1.2" 2661 | } 2662 | }, 2663 | "mem": { 2664 | "version": "4.0.0", 2665 | "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", 2666 | "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", 2667 | "dev": true, 2668 | "requires": { 2669 | "map-age-cleaner": "0.1.2", 2670 | "mimic-fn": "1.2.0", 2671 | "p-is-promise": "1.1.0" 2672 | } 2673 | }, 2674 | "memory-fs": { 2675 | "version": "0.4.1", 2676 | "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", 2677 | "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", 2678 | "dev": true, 2679 | "requires": { 2680 | "errno": "0.1.7", 2681 | "readable-stream": "2.3.6" 2682 | } 2683 | }, 2684 | "micromatch": { 2685 | "version": "3.1.10", 2686 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 2687 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 2688 | "dev": true, 2689 | "requires": { 2690 | "arr-diff": "4.0.0", 2691 | "array-unique": "0.3.2", 2692 | "braces": "2.3.2", 2693 | "define-property": "2.0.2", 2694 | "extend-shallow": "3.0.2", 2695 | "extglob": "2.0.4", 2696 | "fragment-cache": "0.2.1", 2697 | "kind-of": "6.0.2", 2698 | "nanomatch": "1.2.13", 2699 | "object.pick": "1.3.0", 2700 | "regex-not": "1.0.2", 2701 | "snapdragon": "0.8.2", 2702 | "to-regex": "3.0.2" 2703 | } 2704 | }, 2705 | "miller-rabin": { 2706 | "version": "4.0.1", 2707 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 2708 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 2709 | "dev": true, 2710 | "requires": { 2711 | "bn.js": "4.11.8", 2712 | "brorand": "1.1.0" 2713 | } 2714 | }, 2715 | "mimic-fn": { 2716 | "version": "1.2.0", 2717 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 2718 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 2719 | "dev": true 2720 | }, 2721 | "minimalistic-assert": { 2722 | "version": "1.0.1", 2723 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 2724 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", 2725 | "dev": true 2726 | }, 2727 | "minimalistic-crypto-utils": { 2728 | "version": "1.0.1", 2729 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 2730 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", 2731 | "dev": true 2732 | }, 2733 | "minimatch": { 2734 | "version": "3.0.4", 2735 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2736 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2737 | "dev": true, 2738 | "requires": { 2739 | "brace-expansion": "1.1.11" 2740 | } 2741 | }, 2742 | "minimist": { 2743 | "version": "0.0.8", 2744 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2745 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2746 | "dev": true 2747 | }, 2748 | "mississippi": { 2749 | "version": "2.0.0", 2750 | "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", 2751 | "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", 2752 | "dev": true, 2753 | "requires": { 2754 | "concat-stream": "1.6.2", 2755 | "duplexify": "3.6.1", 2756 | "end-of-stream": "1.4.1", 2757 | "flush-write-stream": "1.0.3", 2758 | "from2": "2.3.0", 2759 | "parallel-transform": "1.1.0", 2760 | "pump": "2.0.1", 2761 | "pumpify": "1.5.1", 2762 | "stream-each": "1.2.3", 2763 | "through2": "2.0.3" 2764 | } 2765 | }, 2766 | "mixin-deep": { 2767 | "version": "1.3.1", 2768 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", 2769 | "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", 2770 | "dev": true, 2771 | "requires": { 2772 | "for-in": "1.0.2", 2773 | "is-extendable": "1.0.1" 2774 | }, 2775 | "dependencies": { 2776 | "is-extendable": { 2777 | "version": "1.0.1", 2778 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 2779 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 2780 | "dev": true, 2781 | "requires": { 2782 | "is-plain-object": "2.0.4" 2783 | } 2784 | } 2785 | } 2786 | }, 2787 | "mkdirp": { 2788 | "version": "0.5.1", 2789 | "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2790 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2791 | "dev": true, 2792 | "requires": { 2793 | "minimist": "0.0.8" 2794 | } 2795 | }, 2796 | "move-concurrently": { 2797 | "version": "1.0.1", 2798 | "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", 2799 | "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", 2800 | "dev": true, 2801 | "requires": { 2802 | "aproba": "1.2.0", 2803 | "copy-concurrently": "1.0.5", 2804 | "fs-write-stream-atomic": "1.0.10", 2805 | "mkdirp": "0.5.1", 2806 | "rimraf": "2.6.2", 2807 | "run-queue": "1.0.3" 2808 | } 2809 | }, 2810 | "ms": { 2811 | "version": "2.1.1", 2812 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 2813 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 2814 | }, 2815 | "nan": { 2816 | "version": "2.11.1", 2817 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", 2818 | "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", 2819 | "dev": true, 2820 | "optional": true 2821 | }, 2822 | "nanomatch": { 2823 | "version": "1.2.13", 2824 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 2825 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 2826 | "dev": true, 2827 | "requires": { 2828 | "arr-diff": "4.0.0", 2829 | "array-unique": "0.3.2", 2830 | "define-property": "2.0.2", 2831 | "extend-shallow": "3.0.2", 2832 | "fragment-cache": "0.2.1", 2833 | "is-windows": "1.0.2", 2834 | "kind-of": "6.0.2", 2835 | "object.pick": "1.3.0", 2836 | "regex-not": "1.0.2", 2837 | "snapdragon": "0.8.2", 2838 | "to-regex": "3.0.2" 2839 | } 2840 | }, 2841 | "neo-async": { 2842 | "version": "2.6.0", 2843 | "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", 2844 | "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", 2845 | "dev": true 2846 | }, 2847 | "next-tick": { 2848 | "version": "1.0.0", 2849 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 2850 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", 2851 | "dev": true 2852 | }, 2853 | "nice-try": { 2854 | "version": "1.0.5", 2855 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 2856 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 2857 | "dev": true 2858 | }, 2859 | "node-libs-browser": { 2860 | "version": "2.1.0", 2861 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", 2862 | "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", 2863 | "dev": true, 2864 | "requires": { 2865 | "assert": "1.4.1", 2866 | "browserify-zlib": "0.2.0", 2867 | "buffer": "4.9.1", 2868 | "console-browserify": "1.1.0", 2869 | "constants-browserify": "1.0.0", 2870 | "crypto-browserify": "3.12.0", 2871 | "domain-browser": "1.2.0", 2872 | "events": "1.1.1", 2873 | "https-browserify": "1.0.0", 2874 | "os-browserify": "0.3.0", 2875 | "path-browserify": "0.0.0", 2876 | "process": "0.11.10", 2877 | "punycode": "1.4.1", 2878 | "querystring-es3": "0.2.1", 2879 | "readable-stream": "2.3.6", 2880 | "stream-browserify": "2.0.1", 2881 | "stream-http": "2.8.3", 2882 | "string_decoder": "1.1.1", 2883 | "timers-browserify": "2.0.10", 2884 | "tty-browserify": "0.0.0", 2885 | "url": "0.11.0", 2886 | "util": "0.10.4", 2887 | "vm-browserify": "0.0.4" 2888 | }, 2889 | "dependencies": { 2890 | "punycode": { 2891 | "version": "1.4.1", 2892 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 2893 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", 2894 | "dev": true 2895 | } 2896 | } 2897 | }, 2898 | "normalize-path": { 2899 | "version": "2.1.1", 2900 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 2901 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 2902 | "dev": true, 2903 | "requires": { 2904 | "remove-trailing-separator": "1.1.0" 2905 | } 2906 | }, 2907 | "npm-run-path": { 2908 | "version": "2.0.2", 2909 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 2910 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 2911 | "dev": true, 2912 | "requires": { 2913 | "path-key": "2.0.1" 2914 | } 2915 | }, 2916 | "number-is-nan": { 2917 | "version": "1.0.1", 2918 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 2919 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 2920 | "dev": true 2921 | }, 2922 | "object-copy": { 2923 | "version": "0.1.0", 2924 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 2925 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 2926 | "dev": true, 2927 | "requires": { 2928 | "copy-descriptor": "0.1.1", 2929 | "define-property": "0.2.5", 2930 | "kind-of": "3.2.2" 2931 | }, 2932 | "dependencies": { 2933 | "define-property": { 2934 | "version": "0.2.5", 2935 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 2936 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 2937 | "dev": true, 2938 | "requires": { 2939 | "is-descriptor": "0.1.6" 2940 | } 2941 | }, 2942 | "kind-of": { 2943 | "version": "3.2.2", 2944 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2945 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2946 | "dev": true, 2947 | "requires": { 2948 | "is-buffer": "1.1.6" 2949 | } 2950 | } 2951 | } 2952 | }, 2953 | "object-keys": { 2954 | "version": "1.0.12", 2955 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", 2956 | "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", 2957 | "dev": true 2958 | }, 2959 | "object-visit": { 2960 | "version": "1.0.1", 2961 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 2962 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 2963 | "dev": true, 2964 | "requires": { 2965 | "isobject": "3.0.1" 2966 | } 2967 | }, 2968 | "object.assign": { 2969 | "version": "4.1.0", 2970 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 2971 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 2972 | "dev": true, 2973 | "requires": { 2974 | "define-properties": "1.1.3", 2975 | "function-bind": "1.1.1", 2976 | "has-symbols": "1.0.0", 2977 | "object-keys": "1.0.12" 2978 | } 2979 | }, 2980 | "object.pick": { 2981 | "version": "1.3.0", 2982 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 2983 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 2984 | "dev": true, 2985 | "requires": { 2986 | "isobject": "3.0.1" 2987 | } 2988 | }, 2989 | "once": { 2990 | "version": "1.4.0", 2991 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2992 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 2993 | "dev": true, 2994 | "requires": { 2995 | "wrappy": "1.0.2" 2996 | } 2997 | }, 2998 | "opn": { 2999 | "version": "5.4.0", 3000 | "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", 3001 | "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", 3002 | "dev": true, 3003 | "requires": { 3004 | "is-wsl": "1.1.0" 3005 | } 3006 | }, 3007 | "os-browserify": { 3008 | "version": "0.3.0", 3009 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 3010 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", 3011 | "dev": true 3012 | }, 3013 | "os-locale": { 3014 | "version": "3.0.1", 3015 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", 3016 | "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", 3017 | "dev": true, 3018 | "requires": { 3019 | "execa": "0.10.0", 3020 | "lcid": "2.0.0", 3021 | "mem": "4.0.0" 3022 | } 3023 | }, 3024 | "p-defer": { 3025 | "version": "1.0.0", 3026 | "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", 3027 | "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", 3028 | "dev": true 3029 | }, 3030 | "p-finally": { 3031 | "version": "1.0.0", 3032 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 3033 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 3034 | "dev": true 3035 | }, 3036 | "p-is-promise": { 3037 | "version": "1.1.0", 3038 | "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", 3039 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", 3040 | "dev": true 3041 | }, 3042 | "p-limit": { 3043 | "version": "1.3.0", 3044 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 3045 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 3046 | "dev": true, 3047 | "requires": { 3048 | "p-try": "1.0.0" 3049 | } 3050 | }, 3051 | "p-locate": { 3052 | "version": "2.0.0", 3053 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 3054 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 3055 | "dev": true, 3056 | "requires": { 3057 | "p-limit": "1.3.0" 3058 | } 3059 | }, 3060 | "p-try": { 3061 | "version": "1.0.0", 3062 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 3063 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", 3064 | "dev": true 3065 | }, 3066 | "pako": { 3067 | "version": "1.0.6", 3068 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", 3069 | "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", 3070 | "dev": true 3071 | }, 3072 | "parallel-transform": { 3073 | "version": "1.1.0", 3074 | "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", 3075 | "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", 3076 | "dev": true, 3077 | "requires": { 3078 | "cyclist": "0.2.2", 3079 | "inherits": "2.0.3", 3080 | "readable-stream": "2.3.6" 3081 | } 3082 | }, 3083 | "parse-asn1": { 3084 | "version": "5.1.1", 3085 | "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", 3086 | "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", 3087 | "dev": true, 3088 | "requires": { 3089 | "asn1.js": "4.10.1", 3090 | "browserify-aes": "1.2.0", 3091 | "create-hash": "1.2.0", 3092 | "evp_bytestokey": "1.0.3", 3093 | "pbkdf2": "3.0.17" 3094 | } 3095 | }, 3096 | "pascalcase": { 3097 | "version": "0.1.1", 3098 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 3099 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 3100 | "dev": true 3101 | }, 3102 | "path-browserify": { 3103 | "version": "0.0.0", 3104 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", 3105 | "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", 3106 | "dev": true 3107 | }, 3108 | "path-dirname": { 3109 | "version": "1.0.2", 3110 | "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 3111 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 3112 | "dev": true 3113 | }, 3114 | "path-exists": { 3115 | "version": "3.0.0", 3116 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 3117 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 3118 | "dev": true 3119 | }, 3120 | "path-is-absolute": { 3121 | "version": "1.0.1", 3122 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3123 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 3124 | "dev": true 3125 | }, 3126 | "path-key": { 3127 | "version": "2.0.1", 3128 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 3129 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 3130 | "dev": true 3131 | }, 3132 | "pbkdf2": { 3133 | "version": "3.0.17", 3134 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", 3135 | "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", 3136 | "dev": true, 3137 | "requires": { 3138 | "create-hash": "1.2.0", 3139 | "create-hmac": "1.1.7", 3140 | "ripemd160": "2.0.2", 3141 | "safe-buffer": "5.1.2", 3142 | "sha.js": "2.4.11" 3143 | } 3144 | }, 3145 | "pify": { 3146 | "version": "3.0.0", 3147 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 3148 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 3149 | "dev": true 3150 | }, 3151 | "pkg-dir": { 3152 | "version": "2.0.0", 3153 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", 3154 | "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", 3155 | "dev": true, 3156 | "requires": { 3157 | "find-up": "2.1.0" 3158 | } 3159 | }, 3160 | "posix-character-classes": { 3161 | "version": "0.1.1", 3162 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 3163 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 3164 | "dev": true 3165 | }, 3166 | "process": { 3167 | "version": "0.11.10", 3168 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 3169 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", 3170 | "dev": true 3171 | }, 3172 | "process-nextick-args": { 3173 | "version": "2.0.0", 3174 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 3175 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 3176 | "dev": true 3177 | }, 3178 | "promise-inflight": { 3179 | "version": "1.0.1", 3180 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", 3181 | "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", 3182 | "dev": true 3183 | }, 3184 | "prr": { 3185 | "version": "1.0.1", 3186 | "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", 3187 | "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", 3188 | "dev": true 3189 | }, 3190 | "pseudomap": { 3191 | "version": "1.0.2", 3192 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 3193 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 3194 | "dev": true 3195 | }, 3196 | "public-encrypt": { 3197 | "version": "4.0.3", 3198 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 3199 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 3200 | "dev": true, 3201 | "requires": { 3202 | "bn.js": "4.11.8", 3203 | "browserify-rsa": "4.0.1", 3204 | "create-hash": "1.2.0", 3205 | "parse-asn1": "5.1.1", 3206 | "randombytes": "2.0.6", 3207 | "safe-buffer": "5.1.2" 3208 | } 3209 | }, 3210 | "pump": { 3211 | "version": "2.0.1", 3212 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 3213 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 3214 | "dev": true, 3215 | "requires": { 3216 | "end-of-stream": "1.4.1", 3217 | "once": "1.4.0" 3218 | } 3219 | }, 3220 | "pumpify": { 3221 | "version": "1.5.1", 3222 | "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", 3223 | "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", 3224 | "dev": true, 3225 | "requires": { 3226 | "duplexify": "3.6.1", 3227 | "inherits": "2.0.3", 3228 | "pump": "2.0.1" 3229 | } 3230 | }, 3231 | "punycode": { 3232 | "version": "2.1.1", 3233 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3234 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 3235 | }, 3236 | "querystring": { 3237 | "version": "0.2.0", 3238 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 3239 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", 3240 | "dev": true 3241 | }, 3242 | "querystring-es3": { 3243 | "version": "0.2.1", 3244 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 3245 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", 3246 | "dev": true 3247 | }, 3248 | "randombytes": { 3249 | "version": "2.0.6", 3250 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", 3251 | "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", 3252 | "dev": true, 3253 | "requires": { 3254 | "safe-buffer": "5.1.2" 3255 | } 3256 | }, 3257 | "randomfill": { 3258 | "version": "1.0.4", 3259 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 3260 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 3261 | "dev": true, 3262 | "requires": { 3263 | "randombytes": "2.0.6", 3264 | "safe-buffer": "5.1.2" 3265 | } 3266 | }, 3267 | "readable-stream": { 3268 | "version": "2.3.6", 3269 | "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 3270 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 3271 | "dev": true, 3272 | "requires": { 3273 | "core-util-is": "1.0.2", 3274 | "inherits": "2.0.3", 3275 | "isarray": "1.0.0", 3276 | "process-nextick-args": "2.0.0", 3277 | "safe-buffer": "5.1.2", 3278 | "string_decoder": "1.1.1", 3279 | "util-deprecate": "1.0.2" 3280 | } 3281 | }, 3282 | "readdirp": { 3283 | "version": "2.2.1", 3284 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", 3285 | "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", 3286 | "dev": true, 3287 | "requires": { 3288 | "graceful-fs": "4.1.11", 3289 | "micromatch": "3.1.10", 3290 | "readable-stream": "2.3.6" 3291 | } 3292 | }, 3293 | "regex-not": { 3294 | "version": "1.0.2", 3295 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 3296 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 3297 | "dev": true, 3298 | "requires": { 3299 | "extend-shallow": "3.0.2", 3300 | "safe-regex": "1.1.0" 3301 | } 3302 | }, 3303 | "remove-trailing-separator": { 3304 | "version": "1.1.0", 3305 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 3306 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 3307 | "dev": true 3308 | }, 3309 | "repeat-element": { 3310 | "version": "1.1.3", 3311 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 3312 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 3313 | "dev": true 3314 | }, 3315 | "repeat-string": { 3316 | "version": "1.6.1", 3317 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 3318 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 3319 | "dev": true 3320 | }, 3321 | "require-directory": { 3322 | "version": "2.1.1", 3323 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3324 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3325 | "dev": true 3326 | }, 3327 | "require-main-filename": { 3328 | "version": "1.0.1", 3329 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", 3330 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", 3331 | "dev": true 3332 | }, 3333 | "resolve-cwd": { 3334 | "version": "2.0.0", 3335 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", 3336 | "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", 3337 | "dev": true, 3338 | "requires": { 3339 | "resolve-from": "3.0.0" 3340 | } 3341 | }, 3342 | "resolve-from": { 3343 | "version": "3.0.0", 3344 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", 3345 | "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", 3346 | "dev": true 3347 | }, 3348 | "resolve-url": { 3349 | "version": "0.2.1", 3350 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 3351 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 3352 | "dev": true 3353 | }, 3354 | "ret": { 3355 | "version": "0.1.15", 3356 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 3357 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 3358 | "dev": true 3359 | }, 3360 | "rimraf": { 3361 | "version": "2.6.2", 3362 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", 3363 | "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", 3364 | "dev": true, 3365 | "requires": { 3366 | "glob": "7.1.3" 3367 | } 3368 | }, 3369 | "ripemd160": { 3370 | "version": "2.0.2", 3371 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 3372 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 3373 | "dev": true, 3374 | "requires": { 3375 | "hash-base": "3.0.4", 3376 | "inherits": "2.0.3" 3377 | } 3378 | }, 3379 | "run-queue": { 3380 | "version": "1.0.3", 3381 | "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", 3382 | "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", 3383 | "dev": true, 3384 | "requires": { 3385 | "aproba": "1.2.0" 3386 | } 3387 | }, 3388 | "safe-buffer": { 3389 | "version": "5.1.2", 3390 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 3391 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 3392 | }, 3393 | "safe-regex": { 3394 | "version": "1.1.0", 3395 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 3396 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 3397 | "dev": true, 3398 | "requires": { 3399 | "ret": "0.1.15" 3400 | } 3401 | }, 3402 | "schema-utils": { 3403 | "version": "0.4.7", 3404 | "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", 3405 | "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", 3406 | "dev": true, 3407 | "requires": { 3408 | "ajv": "6.5.4", 3409 | "ajv-keywords": "3.2.0" 3410 | } 3411 | }, 3412 | "semver": { 3413 | "version": "5.6.0", 3414 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", 3415 | "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", 3416 | "dev": true 3417 | }, 3418 | "serialize-javascript": { 3419 | "version": "1.5.0", 3420 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", 3421 | "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", 3422 | "dev": true 3423 | }, 3424 | "set-blocking": { 3425 | "version": "2.0.0", 3426 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 3427 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 3428 | "dev": true 3429 | }, 3430 | "set-value": { 3431 | "version": "2.0.0", 3432 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", 3433 | "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", 3434 | "dev": true, 3435 | "requires": { 3436 | "extend-shallow": "2.0.1", 3437 | "is-extendable": "0.1.1", 3438 | "is-plain-object": "2.0.4", 3439 | "split-string": "3.1.0" 3440 | }, 3441 | "dependencies": { 3442 | "extend-shallow": { 3443 | "version": "2.0.1", 3444 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3445 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3446 | "dev": true, 3447 | "requires": { 3448 | "is-extendable": "0.1.1" 3449 | } 3450 | } 3451 | } 3452 | }, 3453 | "setimmediate": { 3454 | "version": "1.0.5", 3455 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 3456 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", 3457 | "dev": true 3458 | }, 3459 | "sha.js": { 3460 | "version": "2.4.11", 3461 | "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 3462 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 3463 | "dev": true, 3464 | "requires": { 3465 | "inherits": "2.0.3", 3466 | "safe-buffer": "5.1.2" 3467 | } 3468 | }, 3469 | "shebang-command": { 3470 | "version": "1.2.0", 3471 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3472 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3473 | "dev": true, 3474 | "requires": { 3475 | "shebang-regex": "1.0.0" 3476 | } 3477 | }, 3478 | "shebang-regex": { 3479 | "version": "1.0.0", 3480 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3481 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 3482 | "dev": true 3483 | }, 3484 | "signal-exit": { 3485 | "version": "3.0.2", 3486 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 3487 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 3488 | "dev": true 3489 | }, 3490 | "simple-oauth2": { 3491 | "version": "2.2.1", 3492 | "resolved": "https://registry.npmjs.org/simple-oauth2/-/simple-oauth2-2.2.1.tgz", 3493 | "integrity": "sha512-Ujn8tU9Nl4CLy5L6ksSL+kJ6eI61NyhLCUZPris6aHMGxnfAnqrYdmTN16VSEl9m5W9WPj1sXJvhoi6kihsaSA==", 3494 | "requires": { 3495 | "date-fns": "1.29.0", 3496 | "debug": "3.2.6", 3497 | "joi": "13.7.0", 3498 | "wreck": "14.1.0" 3499 | }, 3500 | "dependencies": { 3501 | "debug": { 3502 | "version": "3.2.6", 3503 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 3504 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 3505 | "requires": { 3506 | "ms": "2.1.1" 3507 | } 3508 | } 3509 | } 3510 | }, 3511 | "snapdragon": { 3512 | "version": "0.8.2", 3513 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 3514 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 3515 | "dev": true, 3516 | "requires": { 3517 | "base": "0.11.2", 3518 | "debug": "2.6.9", 3519 | "define-property": "0.2.5", 3520 | "extend-shallow": "2.0.1", 3521 | "map-cache": "0.2.2", 3522 | "source-map": "0.5.7", 3523 | "source-map-resolve": "0.5.2", 3524 | "use": "3.1.1" 3525 | }, 3526 | "dependencies": { 3527 | "define-property": { 3528 | "version": "0.2.5", 3529 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3530 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3531 | "dev": true, 3532 | "requires": { 3533 | "is-descriptor": "0.1.6" 3534 | } 3535 | }, 3536 | "extend-shallow": { 3537 | "version": "2.0.1", 3538 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3539 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3540 | "dev": true, 3541 | "requires": { 3542 | "is-extendable": "0.1.1" 3543 | } 3544 | } 3545 | } 3546 | }, 3547 | "snapdragon-node": { 3548 | "version": "2.1.1", 3549 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 3550 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 3551 | "dev": true, 3552 | "requires": { 3553 | "define-property": "1.0.0", 3554 | "isobject": "3.0.1", 3555 | "snapdragon-util": "3.0.1" 3556 | }, 3557 | "dependencies": { 3558 | "define-property": { 3559 | "version": "1.0.0", 3560 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 3561 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 3562 | "dev": true, 3563 | "requires": { 3564 | "is-descriptor": "1.0.2" 3565 | } 3566 | }, 3567 | "is-accessor-descriptor": { 3568 | "version": "1.0.0", 3569 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 3570 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 3571 | "dev": true, 3572 | "requires": { 3573 | "kind-of": "6.0.2" 3574 | } 3575 | }, 3576 | "is-data-descriptor": { 3577 | "version": "1.0.0", 3578 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 3579 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 3580 | "dev": true, 3581 | "requires": { 3582 | "kind-of": "6.0.2" 3583 | } 3584 | }, 3585 | "is-descriptor": { 3586 | "version": "1.0.2", 3587 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 3588 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 3589 | "dev": true, 3590 | "requires": { 3591 | "is-accessor-descriptor": "1.0.0", 3592 | "is-data-descriptor": "1.0.0", 3593 | "kind-of": "6.0.2" 3594 | } 3595 | } 3596 | } 3597 | }, 3598 | "snapdragon-util": { 3599 | "version": "3.0.1", 3600 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 3601 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 3602 | "dev": true, 3603 | "requires": { 3604 | "kind-of": "3.2.2" 3605 | }, 3606 | "dependencies": { 3607 | "kind-of": { 3608 | "version": "3.2.2", 3609 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3610 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3611 | "dev": true, 3612 | "requires": { 3613 | "is-buffer": "1.1.6" 3614 | } 3615 | } 3616 | } 3617 | }, 3618 | "source-list-map": { 3619 | "version": "2.0.1", 3620 | "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", 3621 | "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", 3622 | "dev": true 3623 | }, 3624 | "source-map": { 3625 | "version": "0.5.7", 3626 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3627 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3628 | "dev": true 3629 | }, 3630 | "source-map-resolve": { 3631 | "version": "0.5.2", 3632 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", 3633 | "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", 3634 | "dev": true, 3635 | "requires": { 3636 | "atob": "2.1.2", 3637 | "decode-uri-component": "0.2.0", 3638 | "resolve-url": "0.2.1", 3639 | "source-map-url": "0.4.0", 3640 | "urix": "0.1.0" 3641 | } 3642 | }, 3643 | "source-map-support": { 3644 | "version": "0.5.9", 3645 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", 3646 | "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", 3647 | "dev": true, 3648 | "requires": { 3649 | "buffer-from": "1.1.1", 3650 | "source-map": "0.6.1" 3651 | }, 3652 | "dependencies": { 3653 | "source-map": { 3654 | "version": "0.6.1", 3655 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3656 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3657 | "dev": true 3658 | } 3659 | } 3660 | }, 3661 | "source-map-url": { 3662 | "version": "0.4.0", 3663 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", 3664 | "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", 3665 | "dev": true 3666 | }, 3667 | "split-string": { 3668 | "version": "3.1.0", 3669 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 3670 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 3671 | "dev": true, 3672 | "requires": { 3673 | "extend-shallow": "3.0.2" 3674 | } 3675 | }, 3676 | "ssri": { 3677 | "version": "5.3.0", 3678 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", 3679 | "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", 3680 | "dev": true, 3681 | "requires": { 3682 | "safe-buffer": "5.1.2" 3683 | } 3684 | }, 3685 | "static-extend": { 3686 | "version": "0.1.2", 3687 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 3688 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 3689 | "dev": true, 3690 | "requires": { 3691 | "define-property": "0.2.5", 3692 | "object-copy": "0.1.0" 3693 | }, 3694 | "dependencies": { 3695 | "define-property": { 3696 | "version": "0.2.5", 3697 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 3698 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 3699 | "dev": true, 3700 | "requires": { 3701 | "is-descriptor": "0.1.6" 3702 | } 3703 | } 3704 | } 3705 | }, 3706 | "stream-browserify": { 3707 | "version": "2.0.1", 3708 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", 3709 | "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", 3710 | "dev": true, 3711 | "requires": { 3712 | "inherits": "2.0.3", 3713 | "readable-stream": "2.3.6" 3714 | } 3715 | }, 3716 | "stream-each": { 3717 | "version": "1.2.3", 3718 | "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", 3719 | "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", 3720 | "dev": true, 3721 | "requires": { 3722 | "end-of-stream": "1.4.1", 3723 | "stream-shift": "1.0.0" 3724 | } 3725 | }, 3726 | "stream-http": { 3727 | "version": "2.8.3", 3728 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 3729 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 3730 | "dev": true, 3731 | "requires": { 3732 | "builtin-status-codes": "3.0.0", 3733 | "inherits": "2.0.3", 3734 | "readable-stream": "2.3.6", 3735 | "to-arraybuffer": "1.0.1", 3736 | "xtend": "4.0.1" 3737 | } 3738 | }, 3739 | "stream-shift": { 3740 | "version": "1.0.0", 3741 | "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", 3742 | "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", 3743 | "dev": true 3744 | }, 3745 | "string-width": { 3746 | "version": "2.1.1", 3747 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 3748 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 3749 | "dev": true, 3750 | "requires": { 3751 | "is-fullwidth-code-point": "2.0.0", 3752 | "strip-ansi": "4.0.0" 3753 | } 3754 | }, 3755 | "string_decoder": { 3756 | "version": "1.1.1", 3757 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 3758 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 3759 | "dev": true, 3760 | "requires": { 3761 | "safe-buffer": "5.1.2" 3762 | } 3763 | }, 3764 | "strip-ansi": { 3765 | "version": "4.0.0", 3766 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 3767 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 3768 | "dev": true, 3769 | "requires": { 3770 | "ansi-regex": "3.0.0" 3771 | } 3772 | }, 3773 | "strip-eof": { 3774 | "version": "1.0.0", 3775 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 3776 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 3777 | "dev": true 3778 | }, 3779 | "supports-color": { 3780 | "version": "5.5.0", 3781 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3782 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3783 | "dev": true, 3784 | "requires": { 3785 | "has-flag": "3.0.0" 3786 | } 3787 | }, 3788 | "tapable": { 3789 | "version": "1.1.0", 3790 | "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", 3791 | "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==", 3792 | "dev": true 3793 | }, 3794 | "through2": { 3795 | "version": "2.0.3", 3796 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 3797 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 3798 | "dev": true, 3799 | "requires": { 3800 | "readable-stream": "2.3.6", 3801 | "xtend": "4.0.1" 3802 | } 3803 | }, 3804 | "timers-browserify": { 3805 | "version": "2.0.10", 3806 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", 3807 | "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", 3808 | "dev": true, 3809 | "requires": { 3810 | "setimmediate": "1.0.5" 3811 | } 3812 | }, 3813 | "to-arraybuffer": { 3814 | "version": "1.0.1", 3815 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 3816 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", 3817 | "dev": true 3818 | }, 3819 | "to-object-path": { 3820 | "version": "0.3.0", 3821 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 3822 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 3823 | "dev": true, 3824 | "requires": { 3825 | "kind-of": "3.2.2" 3826 | }, 3827 | "dependencies": { 3828 | "kind-of": { 3829 | "version": "3.2.2", 3830 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 3831 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 3832 | "dev": true, 3833 | "requires": { 3834 | "is-buffer": "1.1.6" 3835 | } 3836 | } 3837 | } 3838 | }, 3839 | "to-regex": { 3840 | "version": "3.0.2", 3841 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 3842 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 3843 | "dev": true, 3844 | "requires": { 3845 | "define-property": "2.0.2", 3846 | "extend-shallow": "3.0.2", 3847 | "regex-not": "1.0.2", 3848 | "safe-regex": "1.1.0" 3849 | } 3850 | }, 3851 | "to-regex-range": { 3852 | "version": "2.1.1", 3853 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 3854 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 3855 | "dev": true, 3856 | "requires": { 3857 | "is-number": "3.0.0", 3858 | "repeat-string": "1.6.1" 3859 | } 3860 | }, 3861 | "topo": { 3862 | "version": "3.0.0", 3863 | "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.0.tgz", 3864 | "integrity": "sha512-Tlu1fGlR90iCdIPURqPiufqAlCZYzLjHYVVbcFWDMcX7+tK8hdZWAfsMrD/pBul9jqHHwFjNdf1WaxA9vTRRhw==", 3865 | "requires": { 3866 | "hoek": "5.0.4" 3867 | } 3868 | }, 3869 | "tslib": { 3870 | "version": "1.9.3", 3871 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", 3872 | "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", 3873 | "dev": true 3874 | }, 3875 | "tty-browserify": { 3876 | "version": "0.0.0", 3877 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 3878 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", 3879 | "dev": true 3880 | }, 3881 | "typedarray": { 3882 | "version": "0.0.6", 3883 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 3884 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", 3885 | "dev": true 3886 | }, 3887 | "typescript": { 3888 | "version": "3.1.3", 3889 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.3.tgz", 3890 | "integrity": "sha512-+81MUSyX+BaSo+u2RbozuQk/UWx6hfG0a5gHu4ANEM4sU96XbuIyAB+rWBW1u70c6a5QuZfuYICn3s2UjuHUpA==", 3891 | "dev": true 3892 | }, 3893 | "uglify-es": { 3894 | "version": "3.3.9", 3895 | "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", 3896 | "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", 3897 | "dev": true, 3898 | "requires": { 3899 | "commander": "2.13.0", 3900 | "source-map": "0.6.1" 3901 | }, 3902 | "dependencies": { 3903 | "source-map": { 3904 | "version": "0.6.1", 3905 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3906 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3907 | "dev": true 3908 | } 3909 | } 3910 | }, 3911 | "uglifyjs-webpack-plugin": { 3912 | "version": "1.3.0", 3913 | "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", 3914 | "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", 3915 | "dev": true, 3916 | "requires": { 3917 | "cacache": "10.0.4", 3918 | "find-cache-dir": "1.0.0", 3919 | "schema-utils": "0.4.7", 3920 | "serialize-javascript": "1.5.0", 3921 | "source-map": "0.6.1", 3922 | "uglify-es": "3.3.9", 3923 | "webpack-sources": "1.3.0", 3924 | "worker-farm": "1.6.0" 3925 | }, 3926 | "dependencies": { 3927 | "source-map": { 3928 | "version": "0.6.1", 3929 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 3930 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 3931 | "dev": true 3932 | } 3933 | } 3934 | }, 3935 | "union-value": { 3936 | "version": "1.0.0", 3937 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", 3938 | "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", 3939 | "dev": true, 3940 | "requires": { 3941 | "arr-union": "3.1.0", 3942 | "get-value": "2.0.6", 3943 | "is-extendable": "0.1.1", 3944 | "set-value": "0.4.3" 3945 | }, 3946 | "dependencies": { 3947 | "extend-shallow": { 3948 | "version": "2.0.1", 3949 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 3950 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 3951 | "dev": true, 3952 | "requires": { 3953 | "is-extendable": "0.1.1" 3954 | } 3955 | }, 3956 | "set-value": { 3957 | "version": "0.4.3", 3958 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", 3959 | "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", 3960 | "dev": true, 3961 | "requires": { 3962 | "extend-shallow": "2.0.1", 3963 | "is-extendable": "0.1.1", 3964 | "is-plain-object": "2.0.4", 3965 | "to-object-path": "0.3.0" 3966 | } 3967 | } 3968 | } 3969 | }, 3970 | "unique-filename": { 3971 | "version": "1.1.1", 3972 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", 3973 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", 3974 | "dev": true, 3975 | "requires": { 3976 | "unique-slug": "2.0.1" 3977 | } 3978 | }, 3979 | "unique-slug": { 3980 | "version": "2.0.1", 3981 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", 3982 | "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", 3983 | "dev": true, 3984 | "requires": { 3985 | "imurmurhash": "0.1.4" 3986 | } 3987 | }, 3988 | "unset-value": { 3989 | "version": "1.0.0", 3990 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 3991 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 3992 | "dev": true, 3993 | "requires": { 3994 | "has-value": "0.3.1", 3995 | "isobject": "3.0.1" 3996 | }, 3997 | "dependencies": { 3998 | "has-value": { 3999 | "version": "0.3.1", 4000 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 4001 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 4002 | "dev": true, 4003 | "requires": { 4004 | "get-value": "2.0.6", 4005 | "has-values": "0.1.4", 4006 | "isobject": "2.1.0" 4007 | }, 4008 | "dependencies": { 4009 | "isobject": { 4010 | "version": "2.1.0", 4011 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 4012 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 4013 | "dev": true, 4014 | "requires": { 4015 | "isarray": "1.0.0" 4016 | } 4017 | } 4018 | } 4019 | }, 4020 | "has-values": { 4021 | "version": "0.1.4", 4022 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 4023 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 4024 | "dev": true 4025 | } 4026 | } 4027 | }, 4028 | "upath": { 4029 | "version": "1.1.0", 4030 | "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", 4031 | "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", 4032 | "dev": true 4033 | }, 4034 | "uri-js": { 4035 | "version": "4.2.2", 4036 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 4037 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 4038 | "dev": true, 4039 | "requires": { 4040 | "punycode": "2.1.1" 4041 | } 4042 | }, 4043 | "urix": { 4044 | "version": "0.1.0", 4045 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 4046 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 4047 | "dev": true 4048 | }, 4049 | "url": { 4050 | "version": "0.11.0", 4051 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 4052 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 4053 | "dev": true, 4054 | "requires": { 4055 | "punycode": "1.3.2", 4056 | "querystring": "0.2.0" 4057 | }, 4058 | "dependencies": { 4059 | "punycode": { 4060 | "version": "1.3.2", 4061 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 4062 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", 4063 | "dev": true 4064 | } 4065 | } 4066 | }, 4067 | "use": { 4068 | "version": "3.1.1", 4069 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 4070 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 4071 | "dev": true 4072 | }, 4073 | "util": { 4074 | "version": "0.10.4", 4075 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 4076 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 4077 | "dev": true, 4078 | "requires": { 4079 | "inherits": "2.0.3" 4080 | } 4081 | }, 4082 | "util-deprecate": { 4083 | "version": "1.0.2", 4084 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4085 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 4086 | "dev": true 4087 | }, 4088 | "uuid": { 4089 | "version": "3.3.2", 4090 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", 4091 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", 4092 | "dev": true 4093 | }, 4094 | "v8-compile-cache": { 4095 | "version": "2.0.2", 4096 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", 4097 | "integrity": "sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==", 4098 | "dev": true 4099 | }, 4100 | "vm-browserify": { 4101 | "version": "0.0.4", 4102 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", 4103 | "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", 4104 | "dev": true, 4105 | "requires": { 4106 | "indexof": "0.0.1" 4107 | } 4108 | }, 4109 | "watchpack": { 4110 | "version": "1.6.0", 4111 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", 4112 | "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", 4113 | "dev": true, 4114 | "requires": { 4115 | "chokidar": "2.0.4", 4116 | "graceful-fs": "4.1.11", 4117 | "neo-async": "2.6.0" 4118 | } 4119 | }, 4120 | "webpack": { 4121 | "version": "4.20.2", 4122 | "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.20.2.tgz", 4123 | "integrity": "sha512-75WFUMblcWYcocjSLlXCb71QuGyH7egdBZu50FtBGl2Nso8CK3Ej+J7bTZz2FPFq5l6fzCisD9modB7t30ikuA==", 4124 | "dev": true, 4125 | "requires": { 4126 | "@webassemblyjs/ast": "1.7.8", 4127 | "@webassemblyjs/helper-module-context": "1.7.8", 4128 | "@webassemblyjs/wasm-edit": "1.7.8", 4129 | "@webassemblyjs/wasm-parser": "1.7.8", 4130 | "acorn": "5.7.3", 4131 | "acorn-dynamic-import": "3.0.0", 4132 | "ajv": "6.5.4", 4133 | "ajv-keywords": "3.2.0", 4134 | "chrome-trace-event": "1.0.0", 4135 | "enhanced-resolve": "4.1.0", 4136 | "eslint-scope": "4.0.0", 4137 | "json-parse-better-errors": "1.0.2", 4138 | "loader-runner": "2.3.1", 4139 | "loader-utils": "1.1.0", 4140 | "memory-fs": "0.4.1", 4141 | "micromatch": "3.1.10", 4142 | "mkdirp": "0.5.1", 4143 | "neo-async": "2.6.0", 4144 | "node-libs-browser": "2.1.0", 4145 | "schema-utils": "0.4.7", 4146 | "tapable": "1.1.0", 4147 | "uglifyjs-webpack-plugin": "1.3.0", 4148 | "watchpack": "1.6.0", 4149 | "webpack-sources": "1.3.0" 4150 | } 4151 | }, 4152 | "webpack-cli": { 4153 | "version": "3.1.2", 4154 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.1.2.tgz", 4155 | "integrity": "sha512-Cnqo7CeqeSvC6PTdts+dywNi5CRlIPbLx1AoUPK2T6vC1YAugMG3IOoO9DmEscd+Dghw7uRlnzV1KwOe5IrtgQ==", 4156 | "dev": true, 4157 | "requires": { 4158 | "chalk": "2.4.1", 4159 | "cross-spawn": "6.0.5", 4160 | "enhanced-resolve": "4.1.0", 4161 | "global-modules-path": "2.3.0", 4162 | "import-local": "2.0.0", 4163 | "interpret": "1.1.0", 4164 | "loader-utils": "1.1.0", 4165 | "supports-color": "5.5.0", 4166 | "v8-compile-cache": "2.0.2", 4167 | "yargs": "12.0.2" 4168 | } 4169 | }, 4170 | "webpack-log": { 4171 | "version": "1.2.0", 4172 | "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-1.2.0.tgz", 4173 | "integrity": "sha512-U9AnICnu50HXtiqiDxuli5gLB5PGBo7VvcHx36jRZHwK4vzOYLbImqT4lwWwoMHdQWwEKw736fCHEekokTEKHA==", 4174 | "dev": true, 4175 | "requires": { 4176 | "chalk": "2.4.1", 4177 | "log-symbols": "2.2.0", 4178 | "loglevelnext": "1.0.5", 4179 | "uuid": "3.3.2" 4180 | } 4181 | }, 4182 | "webpack-sources": { 4183 | "version": "1.3.0", 4184 | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", 4185 | "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", 4186 | "dev": true, 4187 | "requires": { 4188 | "source-list-map": "2.0.1", 4189 | "source-map": "0.6.1" 4190 | }, 4191 | "dependencies": { 4192 | "source-map": { 4193 | "version": "0.6.1", 4194 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 4195 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 4196 | "dev": true 4197 | } 4198 | } 4199 | }, 4200 | "which": { 4201 | "version": "1.3.1", 4202 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 4203 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 4204 | "dev": true, 4205 | "requires": { 4206 | "isexe": "2.0.0" 4207 | } 4208 | }, 4209 | "which-module": { 4210 | "version": "2.0.0", 4211 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 4212 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 4213 | "dev": true 4214 | }, 4215 | "worker-farm": { 4216 | "version": "1.6.0", 4217 | "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", 4218 | "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", 4219 | "dev": true, 4220 | "requires": { 4221 | "errno": "0.1.7" 4222 | } 4223 | }, 4224 | "workers-preview": { 4225 | "version": "1.0.5", 4226 | "resolved": "https://registry.npmjs.org/workers-preview/-/workers-preview-1.0.5.tgz", 4227 | "integrity": "sha512-imgxd8lIDhwT8/EICvBBQEDIQLpR+i/I91rZITJvD/p26/5NZJfE96i/wrH/X1ettI5fwd9GKQRklrqe3Cg4fw==", 4228 | "dev": true, 4229 | "requires": { 4230 | "opn": "5.4.0" 4231 | } 4232 | }, 4233 | "wrap-ansi": { 4234 | "version": "2.1.0", 4235 | "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 4236 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 4237 | "dev": true, 4238 | "requires": { 4239 | "string-width": "1.0.2", 4240 | "strip-ansi": "3.0.1" 4241 | }, 4242 | "dependencies": { 4243 | "ansi-regex": { 4244 | "version": "2.1.1", 4245 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 4246 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 4247 | "dev": true 4248 | }, 4249 | "is-fullwidth-code-point": { 4250 | "version": "1.0.0", 4251 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 4252 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 4253 | "dev": true, 4254 | "requires": { 4255 | "number-is-nan": "1.0.1" 4256 | } 4257 | }, 4258 | "string-width": { 4259 | "version": "1.0.2", 4260 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 4261 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 4262 | "dev": true, 4263 | "requires": { 4264 | "code-point-at": "1.1.0", 4265 | "is-fullwidth-code-point": "1.0.0", 4266 | "strip-ansi": "3.0.1" 4267 | } 4268 | }, 4269 | "strip-ansi": { 4270 | "version": "3.0.1", 4271 | "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 4272 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 4273 | "dev": true, 4274 | "requires": { 4275 | "ansi-regex": "2.1.1" 4276 | } 4277 | } 4278 | } 4279 | }, 4280 | "wrappy": { 4281 | "version": "1.0.2", 4282 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4283 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 4284 | "dev": true 4285 | }, 4286 | "wreck": { 4287 | "version": "14.1.0", 4288 | "resolved": "https://registry.npmjs.org/wreck/-/wreck-14.1.0.tgz", 4289 | "integrity": "sha512-y/iwFhwdGoM8Hk1t1I4LbuLhM3curVD8STd5NcFI0c/4b4cQAMLcnCRxXX9sLQAggDC8dXYSaQNsT64hga6lvA==", 4290 | "requires": { 4291 | "boom": "7.2.0", 4292 | "hoek": "5.0.4" 4293 | } 4294 | }, 4295 | "xregexp": { 4296 | "version": "4.0.0", 4297 | "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", 4298 | "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", 4299 | "dev": true 4300 | }, 4301 | "xtend": { 4302 | "version": "4.0.1", 4303 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 4304 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 4305 | "dev": true 4306 | }, 4307 | "y18n": { 4308 | "version": "4.0.0", 4309 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 4310 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 4311 | "dev": true 4312 | }, 4313 | "yallist": { 4314 | "version": "2.1.2", 4315 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 4316 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 4317 | "dev": true 4318 | }, 4319 | "yargs": { 4320 | "version": "12.0.2", 4321 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", 4322 | "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", 4323 | "dev": true, 4324 | "requires": { 4325 | "cliui": "4.1.0", 4326 | "decamelize": "2.0.0", 4327 | "find-up": "3.0.0", 4328 | "get-caller-file": "1.0.3", 4329 | "os-locale": "3.0.1", 4330 | "require-directory": "2.1.1", 4331 | "require-main-filename": "1.0.1", 4332 | "set-blocking": "2.0.0", 4333 | "string-width": "2.1.1", 4334 | "which-module": "2.0.0", 4335 | "y18n": "4.0.0", 4336 | "yargs-parser": "10.1.0" 4337 | }, 4338 | "dependencies": { 4339 | "find-up": { 4340 | "version": "3.0.0", 4341 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 4342 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 4343 | "dev": true, 4344 | "requires": { 4345 | "locate-path": "3.0.0" 4346 | } 4347 | }, 4348 | "locate-path": { 4349 | "version": "3.0.0", 4350 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 4351 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 4352 | "dev": true, 4353 | "requires": { 4354 | "p-locate": "3.0.0", 4355 | "path-exists": "3.0.0" 4356 | } 4357 | }, 4358 | "p-limit": { 4359 | "version": "2.0.0", 4360 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", 4361 | "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", 4362 | "dev": true, 4363 | "requires": { 4364 | "p-try": "2.0.0" 4365 | } 4366 | }, 4367 | "p-locate": { 4368 | "version": "3.0.0", 4369 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 4370 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 4371 | "dev": true, 4372 | "requires": { 4373 | "p-limit": "2.0.0" 4374 | } 4375 | }, 4376 | "p-try": { 4377 | "version": "2.0.0", 4378 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", 4379 | "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", 4380 | "dev": true 4381 | } 4382 | } 4383 | }, 4384 | "yargs-parser": { 4385 | "version": "10.1.0", 4386 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", 4387 | "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", 4388 | "dev": true, 4389 | "requires": { 4390 | "camelcase": "4.1.0" 4391 | } 4392 | } 4393 | } 4394 | } 4395 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oauth-server", 3 | "version": "1.0.0", 4 | "description": "OAuth server implemented using a worker", 5 | "main": "index.ts", 6 | "scripts": { 7 | "test": "test", 8 | "build": "webpack", 9 | "build:watch": "webpack --watch", 10 | "preview": "workers-preview < dist/bundle.js", 11 | "cf": "webpack && workers-preview --preview-url 'https://error-backup.tk/oauth/home?code=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InNvbWV1c2VyQGV4LmNvbSIsImNsaWVudF9pZCI6InZpY3Rvcmlhc2NsaWVudCIsImlhdCI6MTU0Mzg1NDI3N30.pjH2ttUovM5GPaDFIOX4A8IDjZy22Xq9cy-NA5P9650&email=someuser@ex.com&client_id=victoriasclient' < dist/auth.js", 12 | "token": "webpack && workers-preview --preview-url 'https://missv.info/token/authorize?code=eyJhbGciOiJIUzI1NiJ9.ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmxiV0ZwYkNJNkluTnZiV1YxYzJWeVFHVjRMbU52YlNJc0ltbGtJam94TWpNc0luQjNaQ0k2SW5KbFlXeHNlUzFrZFcxaVpXUXRaRzkzYmkxd2QyUWlMQ0pwYm5OMFlXeHNJanA3SW05d2RHbHZibk1pT25zaVkyOXNiM0lpT2lKeVpXUWlmWDBzSW1saGRDSTZNVFUwTXpjNU9UTXpObjAuVmFhQV9NMDluWjd5bHZUOHphWENIWC01aElNTEhvYldRU0VSSEJsa0dROA.Rzi63zzGJ9GoVbq3wZRPnNGtzGda7Wz-O7ozqRee6MY' < dist/resource.js", 13 | "resource": "webpack && workers-preview --preview-url 'https://missv.info/token/resource?access_token=eyJhbGciOiJIUzI1NiJ9.ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmxiV0ZwYkNJNkluTnZiV1YxYzJWeVFHVjRMbU52YlNJc0ltbGtJam94TWpNc0luQjNaQ0k2SW5KbFlXeHNlUzFrZFcxaVpXUXRaRzkzYmkxd2QyUWlMQ0pwYm5OMFlXeHNJanA3SW05d2RHbHZibk1pT25zaVkyOXNiM0lpT2lKeVpXUWlmWDBzSW1saGRDSTZNVFUwTXpjNU9UTXpObjAuVmFhQV9NMDluWjd5bHZUOHphWENIWC01aElNTEhvYldRU0VSSEJsa0dROA.Rzi63zzGJ9GoVbq3wZRPnNGtzGda7Wz-O7ozqRee6MY' < dist/resource.js", 14 | "local": "webpack " 15 | }, 16 | "author": "bernard.victoria22@gmail.com", 17 | "license": "ISC", 18 | "dependencies": { 19 | "@types/jsonwebtoken": "^7.2.8", 20 | "@types/simple-oauth2": "^2.2.0", 21 | "joi-browser": "^13.4.0", 22 | "jsonwebtoken": "^8.3.0", 23 | "simple-oauth2": "^2.2.1" 24 | }, 25 | "devDependencies": { 26 | "awesome-typescript-loader": "^5.2.1", 27 | "typescript": "^3.1.3", 28 | "webpack": "^4.20.2", 29 | "webpack-cli": "^3.1.2", 30 | "workers-preview": "^1.0.6" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/auth-server.ts: -------------------------------------------------------------------------------- 1 | import * as jwt from "jsonwebtoken"; 2 | import { 3 | getCookie, 4 | getTokenFromRequest 5 | } from "./shared"; 6 | import { 7 | giveLoginPage, 8 | giveAcceptPage, 9 | errorRouteNotFoundResponse, 10 | giveGetResultsPage 11 | } from "./html_pages"; 12 | import { 13 | paths, 14 | init, 15 | credentials 16 | } from "./constants" 17 | import { factoryHookResponse, Session, factoryIError, factoryCodeResponse, factoryJWTPayload, factorySession } from "./types"; 18 | import { give403Page } from "./html_pages"; 19 | 20 | /* for authetication endpoints, the first part of the oauth flow */ 21 | addEventListener("fetch", (event: FetchEvent) => { 22 | const url = new URL(event.request.url); 23 | 24 | if (url.pathname.includes("/home")) 25 | return event.respondWith(giveLoginPageResponse(event.request)); 26 | if (url.pathname.includes("/callback")) 27 | return event.respondWith(sendtoAuthorize(event.request)); 28 | if (url.pathname.includes("/authorize")) 29 | return event.respondWith(giveLoginPageResponse(event.request)); 30 | if (url.pathname.includes("/code")) 31 | return event.respondWith(redirectCodeToConsumer(event.request)); 32 | return event.respondWith(errorRouteNotFoundResponse(event.request)); 33 | }); 34 | 35 | /* Ask resource/token server for the token using the code */ 36 | function requestToken(code: String) { 37 | return fetch( 38 | paths.token.token + "?code=" + code 39 | ); 40 | } 41 | 42 | // verifyUser checks if token or un/pwd combos were passed in 43 | // return {msg: "403"} if this doesn't match expected vallus 44 | // returns {msg: "" } if user didn't exist 45 | // return { email, token , pwd, msg} if legit 46 | export async function verifyUser(request: Request): Promise { 47 | let res = factoryHookResponse() 48 | let sess = factorySession() 49 | // first see if there was a token passed in meaning the user is signed in 50 | try { 51 | let token = getCookie(request.headers.get("cookie"), "token") 52 | if (!token) token = request.headers.get("Authorization").substring(7) 53 | if (!token) throw new Error("no token") 54 | let userInfo = jwt.decode(token) 55 | sess.email = userInfo.sub 56 | sess.token = token 57 | console.log("sess.email:", sess.email); 58 | 59 | // @ts-ignore 60 | let storedToken = await TOKENS.get(sess.email) 61 | // if (token != storedToken) return { email: "403", token: "403" } 62 | return sess 63 | } 64 | catch (e) { 65 | console.log("error with auth token", e); 66 | } 67 | try { 68 | let reqBody = await request.json() 69 | let un = reqBody.un 70 | let pwd = reqBody.pwd 71 | 72 | // @ts-ignore 73 | let storedPWD = await USERS.get(un) 74 | 75 | if (!storedPWD) { 76 | // case where user does not exist DNE 77 | return { email: un, token: "", "pwd": pwd, msg: "dne" } 78 | } 79 | try { 80 | //verify this password is the same as the encrypted one stored 81 | let oldPwd = jwt.verify(storedPWD, credentials.storage.secret) 82 | 83 | if (oldPwd != pwd) { 84 | res.errors.push(factoryIError({ message: "old password does not match" })) 85 | return { email: un, pwd: pwd, msg: "403", token: "" } 86 | } 87 | // @ts-ignore 88 | let token = await TOKENS.get(un) 89 | return { email: un, token: token, msg: "", pwd: "" } 90 | } 91 | catch (e) { 92 | console.log("couldn't verify passworks", e); 93 | } 94 | } 95 | catch (e) { 96 | console.log("couldn't get un or pwd", e); 97 | return { email: "403", token: "403", msg: "403", pwd: "" } 98 | } 99 | return { email: "403", token: "403", msg: "403", pwd: "" } 100 | } 101 | // check for the token only and store the code that will be returned 102 | export async function redirectCodeToConsumer(request: Request) { 103 | let { email, token, msg, pwd } = await verifyUser(request) 104 | 105 | if (msg == "403") return new Response(give403Page(), { status: 403 }) 106 | if (msg == "dne") return registerNewUser(email, pwd) 107 | let code = Math.random().toString(36).substring(2, 12) 108 | try { 109 | let req_url = new URL(request.url) 110 | let redirect_uri = new URL(encodeURI(req_url.searchParams.get("redirect_uri"))) 111 | // @ts-ignore 112 | await CODES.put(email, code) 113 | redirect_uri.searchParams.set("scope", "user.read"); 114 | redirect_uri.searchParams.set("state", "someState"); 115 | redirect_uri.searchParams.set("code", code); 116 | redirect_uri.searchParams.set("response_type", "code"); 117 | console.log(redirect_uri) 118 | return Response.redirect(redirect_uri.href, 302); 119 | } catch (e) { 120 | // @ts-ignore 121 | await CODES.delete(email, code) 122 | return new Response( 123 | JSON.stringify(factoryIError({ message: "error wth the URL passed in" + e})), 124 | { status: 500 }); 125 | } 126 | 127 | } 128 | export async function registerNewUser(email: string, pwd: string) { 129 | let res = factoryCodeResponse({ un: email }) 130 | let headers = new Headers(init.headers) 131 | try { 132 | 133 | //@ts-ignore 134 | let existingUser = await USERS.get(email) 135 | if (existingUser) { 136 | //return error user already registered 137 | res.errors.push(factoryIError({ message: "trying to register username that has an existing user " + email })) 138 | } 139 | // encrypt the pwd then store it 140 | let storedPWD = jwt.sign(pwd, credentials.storage.secret) 141 | let uJWTPayload = factoryJWTPayload({ sub: email }) 142 | let storedUserTok = jwt.sign(uJWTPayload, credentials.storage.secret) 143 | headers.append("set-cookie", "token=Bearer " + storedUserTok); 144 | let code = Math.random().toString(36).substring(2, 12) 145 | //@ts-ignore 146 | await USERS.put(email, storedPWD) 147 | // @ts-ignore 148 | await CODES.put(email, code) 149 | // @ts-ignore 150 | await TOKENS.put(email, storedUserTok) 151 | 152 | 153 | } 154 | catch (e) { 155 | res.errors.push(factoryIError({ message: " some error while trying to register " + e })) 156 | } 157 | return new Response(JSON.stringify(res)) 158 | } 159 | 160 | /* User Agent */ 161 | 162 | export async function giveLoginPageResponse(request: Request) { 163 | // check if a code was passed in 164 | let req_url = new URL(request.url); 165 | let code = req_url.searchParams.get("code"); 166 | let token = getTokenFromRequest(request) 167 | 168 | let headers = new Headers(Object.assign(init.headers, { 169 | "content-type": "text/html", 170 | })); 171 | 172 | let errors: string[] = [] 173 | if (token) { //they are already signed in 174 | let headers = Object.assign(init.headers, { 175 | "content-type": "text/html", 176 | }); 177 | return new Response(giveAcceptPage(request), { 178 | headers 179 | }); 180 | } 181 | if (code) { 182 | // call the token/resource server to ask for a token using the code 183 | // logging in with a code implies they accept 184 | try { 185 | let response = await requestToken(code) 186 | try { 187 | let responseJSON = await response.json() 188 | headers.append("set-cookie", "token=Bearer " + responseJSON.id_token); 189 | 190 | } 191 | catch (e) { 192 | errors.push("error parsing the JSON") 193 | errors.push(e) 194 | } 195 | 196 | } 197 | catch (e) { 198 | errors.push("error getting token") 199 | errors.push(e) 200 | } 201 | return new Response(giveGetResultsPage(request), init) 202 | } else { 203 | return new Response(giveLoginPage(request), { headers }); 204 | } 205 | } 206 | // sendtoAuthorize generates a URL to request for a code 207 | // then responds with a redirect to this URL 208 | async function sendtoAuthorize(request: Request) { 209 | let req_url = encodeURI(request.url) 210 | let authorizationUri = new URL(paths.auth.authorize); 211 | authorizationUri.searchParams.set("scope", "user.read"); 212 | authorizationUri.searchParams.set("state", "someState"); 213 | authorizationUri.searchParams.set("response_type", "code"); 214 | authorizationUri.searchParams.set("client_id", credentials.client.id); 215 | authorizationUri.searchParams.set("redirect_uri", paths.auth.home); 216 | 217 | console.log(authorizationUri.href); 218 | //http:// /oauth/authorize?response_type=code&client_id=vicsecret&redirect_uri=https%3A%2F%2Fmissv.info%2Foauth%2Fapp%2Fcallback&scope=user.read&state=someState 219 | return Response.redirect(authorizationUri.href, 302); 220 | } 221 | 222 | 223 | 224 | 225 | 226 | // MyWebpage 227 | // /login 228 | // Login->OauthProvider ?appId=123-mywebpage 229 | // OauthProvider 230 | // Makes sure user is logged in 231 | // Once logged in, redirect to callback url on MyWebpage 232 | // MyWebpage 233 | // /oauth/callback?token=alksdjf 234 | // Use nonce alksdjf to call to OauthProvider to get real token 235 | // Associate real token to current session 236 | -------------------------------------------------------------------------------- /src/constants.ts: -------------------------------------------------------------------------------- 1 | import { hosts } from "./private"; 2 | 3 | export const credentials = { 4 | client: { 5 | id: "victoriasclient", 6 | secret: "victoriassecret" 7 | }, 8 | storage: { 9 | secret: "somesecrettodecryptfromtheKV" 10 | } 11 | 12 | }; 13 | 14 | export const paths = { 15 | auth: { 16 | authorize: hosts.auth + "/authorize", 17 | callback: hosts.auth + "/callback", 18 | home: hosts.auth + "/home", 19 | login: hosts.auth + "/login", 20 | storeCode: hosts.auth + "/code", 21 | }, 22 | token: { 23 | resource: hosts.token + "/resource", 24 | token: hosts.token + "/authorize", 25 | } 26 | } 27 | // bogus user info 28 | export const userInfo = { 29 | email: "someuser@ex.com", 30 | id: 123, 31 | pwd: "really-dumbed-down-pwd", 32 | install: { 33 | options: { 34 | color: "red" 35 | } 36 | } 37 | }; 38 | export const init = { 39 | headers: { 40 | //to avoid cors issue is using different hosts for token and auth servers 41 | 'Access-Control-Allow-Origin': "*", 42 | 'Access-Control-Allow-Headers': "*", 43 | 'Access-Control-Allow-Credentials': 'true', 44 | 'Access-Control-Allow-Methods': 'GET,HEAD,PUT,POST,DELETE,PATCH', 45 | 46 | "content-type": "application/json" 47 | } 48 | }; 49 | -------------------------------------------------------------------------------- /src/html_pages.ts: -------------------------------------------------------------------------------- 1 | import { userInfo, credentials, paths, init } from "./constants" 2 | import { factoryHookResponse, factoryIError } from "./types"; 3 | 4 | 5 | export function giveOriginWarnPage() { 6 | return ` 7 | 8 | 9 | Warning this link wants to go to origin 10 | 11 | 12 | `; 13 | } 14 | export function give403Page() { 15 | return ` 16 | 17 | 18 | 403 unauthorized returned 19 | 20 | 21 | `; 22 | } 23 | export async function errorRouteNotFoundResponse(request: Request) { 24 | console.log("route not found"); 25 | 26 | let respBody = factoryHookResponse({ 27 | errors: [factoryIError({ message: "route not found on the token worker url: " + request.url})] 28 | }) 29 | return new Response(JSON.stringify(respBody), init) 30 | } 31 | export function giveAcceptPage(request: Request) { 32 | let req_url = new URL(request.url); 33 | let params = req_url.search 34 | let fetchCodeURL = paths.auth.storeCode + params 35 | return ` 36 | 37 | 39 | 40 | Accept 41 | 42 | 43 | `; 44 | } 45 | 46 | 47 | export function giveGetResultsPage(request: Request) { 48 | return ` 49 | 50 | 51 | 107 | 108 | 166 | 167 | 168 | 174 | 175 | 176 | 177 | 178 | `; 179 | } 180 | -------------------------------------------------------------------------------- /src/resource-server.ts: -------------------------------------------------------------------------------- 1 | import * as jwt from "jsonwebtoken"; 2 | import { getCookie, } from "./shared"; 3 | import { factoryTokenResponse, factoryJWTPayload, JWTPayload } from "./types" 4 | import { errorRouteNotFoundResponse, give403Page } from "./html_pages" 5 | import { HookResponse, factoryHookResponse, factoryIError, factoryCodeResponse } from "./types" 6 | import { credentials, init } from "./constants" 7 | 8 | 9 | /* for token and resource endpoints*/ 10 | addEventListener("fetch", (event: FetchEvent) => { 11 | const url = new URL(event.request.url); 12 | 13 | if (url.pathname.includes("/authorize")) 14 | return event.respondWith(giveToken(event.request)); 15 | if (url.pathname.includes("/resource")) 16 | return event.respondWith(giveResource(event.request)); 17 | if (url.pathname.includes("/hook")) 18 | return event.respondWith(giveInstall(event.request)); 19 | else return event.respondWith(errorRouteNotFoundResponse(event.request)); 20 | }); 21 | function getPersonalInstall(email: string) { 22 | //TODO: get the personalize install 23 | let resp: HookResponse = factoryHookResponse({}) 24 | return resp.install 25 | } 26 | function isExpired(token: JWTPayload): boolean { 27 | // check expiration 28 | if (token.exp - Math.round(Date.now() / 1000) < 0) 29 | return true 30 | return false 31 | } 32 | /* use the bearer token to get the resource */ 33 | export async function giveResource(request: Request) { 34 | var respBody: HookResponse = factoryHookResponse({}) 35 | let token = "" 36 | let decodedJWT = factoryJWTPayload() 37 | try { //validate request is who they claim 38 | token = getCookie(request.headers.get("cookie"), "token") 39 | if (!token) token = request.headers.get("Authorization").substring(7) 40 | let decodedJWT = jwt.verify(token, credentials.storage.secret) 41 | // @ts-ignore 42 | let storedToken = await TOKENS.get(decodedJWT.sub) 43 | if (isExpired(storedToken)) throw new Error("token is expired") /* TODO instead of throwing error send to refresh */ 44 | if (storedToken != token) throw new Error("token does not match what is stored") 45 | } 46 | catch (e) { 47 | respBody.errors.push(factoryIError({ message: e.message, type: "oauth" })) 48 | return new Response(JSON.stringify(respBody), init) 49 | } 50 | 51 | respBody.install = getPersonalInstall(decodedJWT.sub) 52 | return new Response(JSON.stringify(respBody), init) 53 | 54 | } 55 | /* use the bearer token to get the install */ 56 | export async function giveInstall(request: Request) { 57 | 58 | let token = "" 59 | let respBody: HookResponse = factoryHookResponse({}) 60 | try { 61 | let reqJSON = await request.json() 62 | respBody.proceed = true 63 | let modInstall = reqJSON.install 64 | modInstall.schema.properties.myTokenOption = { 65 | type: 'string', 66 | title: 'Token Option' 67 | } 68 | try { 69 | token = reqJSON.authentications.account.token.token 70 | } catch (e) { 71 | token = "there was no token" 72 | token = reqJSON 73 | } 74 | modInstall.options.myTokenOption = token 75 | 76 | respBody.install = modInstall 77 | // }) 78 | } catch (e) { 79 | respBody.errors.push(factoryIError({ 80 | type: "oauth", 81 | message: "Error getting the token from the request body" 82 | } 83 | )); 84 | } 85 | return new Response(JSON.stringify(respBody), init) 86 | } 87 | 88 | /* generate a token form the code passed in the query string */ 89 | export async function giveToken(request: Request) { 90 | let respBody = factoryTokenResponse() 91 | let req_url = new URL(request.url); 92 | let code = req_url.searchParams.get("code"); 93 | let email = req_url.searchParams.get("email"); 94 | 95 | if (!code) { 96 | try { 97 | // check request body for the code 98 | let reqBody = await request.text() 99 | 100 | let params = new URLSearchParams(reqBody) 101 | code = params.get('code') 102 | email = params.get('email') 103 | // code = reqBody.code || reqBody.metadata.code || reqBody.code[0] || reqBody.metadata.code[0] 104 | } 105 | catch (e) { 106 | respBody.errors.push(factoryIError({ message: "request sent didn't have code in the body " + e.message })) 107 | return new Response(JSON.stringify(respBody), init); 108 | } 109 | } 110 | 111 | let headers = new Headers(init.headers); 112 | 113 | if (code) { 114 | // @ts-ignore 115 | let storedCode = await CODES.get(email) 116 | if (storedCode && code != storedCode) return new Response(give403Page(), { status: 403 }) 117 | // @ts-ignore 118 | await CODES.put(email, code) 119 | let uJWTPayload = factoryJWTPayload({ sub: email }) 120 | let tokenJWT = jwt.sign(uJWTPayload, credentials.storage.secret); 121 | console.log(uJWTPayload); 122 | 123 | headers.append("set-cookie", "token=Bearer " + tokenJWT); 124 | // @ts-ignore 125 | await TOKENS.put(email, tokenJWT) 126 | 127 | respBody.access_token = tokenJWT 128 | respBody.token = tokenJWT 129 | // Other potential fields we could specify 130 | //"token_type": "bearer", 131 | // "expires_in": 2592000, 132 | // "refresh_token": tokenJWT, 133 | // "token": tokenJWT 134 | // "scope": "read", "uid": 100101, "info": { "name": "Mark E. Mark", "email": "mark@thefunkybunch.com" } 135 | } else { 136 | respBody.errors.push(factoryIError({ message: "there was no code sent to the authorize token url" })) 137 | } 138 | return new Response(JSON.stringify(respBody), { headers }); 139 | } 140 | -------------------------------------------------------------------------------- /src/shared.ts: -------------------------------------------------------------------------------- 1 | import * as jwt from "jsonwebtoken"; 2 | import { giveOriginWarnPage } from "./html_pages"; 3 | import { credentials } from "./constants" 4 | 5 | 6 | // export function checkToken( 7 | // request: Request, 8 | // clientSecret: string, 9 | // cliendID: string 10 | // ) /* Checks the auth header for the Bearer token then returns the decoded payload */{ 11 | // const url = new URL(request.url); 12 | // let token = request.headers.get("Authorization").substring(7); // string out "bearer " 13 | // let result = { 14 | // verified: false, 15 | // error: "", 16 | // }; 17 | // try { 18 | // const ver = jwt.verify(token, credentials.client.secret); 19 | // result.verified = true; 20 | 21 | // } catch (e) { 22 | // result.error = e; 23 | // } 24 | // return result; 25 | // } 26 | export function getCookie(cookieStr: String, cname: String) { 27 | var name = cname + "="; 28 | if( !cookieStr )return "" 29 | var ca = cookieStr.split(';'); 30 | for (var i = 0; i < ca.length; i++) { 31 | var c = ca[i]; 32 | while (c.charAt(0) == ' ') { 33 | c = c.substring(1); 34 | } 35 | if (c.indexOf(name) == 0) { 36 | return c.substring(name.length, c.length); 37 | } 38 | } 39 | } 40 | // export async function goingToOrigin(request: Request) { 41 | // let headers = new Headers({ 42 | // "content-type": "text/html" 43 | // }); 44 | // return new Response(giveOriginWarnPage(), { headers }); 45 | 46 | // } 47 | export function getTokenFromRequest(request: Request) { 48 | let token = getCookie(request.headers.get("cookie"), "token") 49 | if (!token) { 50 | try { 51 | token = request.headers.get("Authorization").substring(7) 52 | } catch (e) { 53 | console.log(e); 54 | } 55 | } 56 | return token 57 | } -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | import { Cloudflare } from "./private" 2 | import { resolve } from "url"; 3 | import { paths, userInfo } from "./constants"; 4 | export interface IError { 5 | type: string, 6 | message: string, 7 | fields: string[], 8 | } 9 | export interface Message { 10 | body: string, 11 | buttonText: string, 12 | buttonDestination: string, 13 | dismissButtonText: string, 14 | } 15 | export interface Worker { 16 | priority: number, 17 | src: string, 18 | } 19 | export interface Link { 20 | title: string, 21 | description: string, 22 | href: string, 23 | } 24 | export interface Permission { 25 | grantedByUserID: string, 26 | created: string, 27 | scope: string[], 28 | } 29 | 30 | export interface Permissions { 31 | [key: string]: Permission 32 | } 33 | export interface DNSRecord { 34 | iD: string 35 | type: string 36 | name: string 37 | content: string 38 | proxiable: boolean 39 | proxied: boolean 40 | tTL: number 41 | locked: boolean 42 | zoneID: string 43 | zoneName: string 44 | createdOn: Date 45 | modifiedOn: Date 46 | data: any 47 | meta: any 48 | priority: number 49 | } 50 | export interface Install { 51 | id: string, 52 | appId: string, 53 | versionTag: string, 54 | siteId: string, 55 | options?: any, 56 | schema?: any, 57 | private?: any, 58 | dNS: DNSRecord[], 59 | workers: Worker[], 60 | links: Link[], 61 | uRLPatterns: string[], 62 | pending: boolean, 63 | pastDue: boolean, 64 | installerUserId: string, 65 | subscriptionId: string, 66 | productId: string, 67 | amount: number, 68 | active: boolean, 69 | deactivatedAt?: string, 70 | refundedAt?: string, 71 | refundedAmount: number, 72 | refundId: string, 73 | deleted: boolean, 74 | metadata: any, 75 | permissions: Permissions, 76 | created?: string, 77 | } 78 | export interface HookResponse { 79 | proceed: boolean, 80 | errors?: IError[], 81 | message?: Message, 82 | install?: Install, 83 | } 84 | export interface CodeResponse { 85 | un: string, 86 | token?: string, 87 | code?: string, 88 | errors?: IError[], 89 | } 90 | export interface TokenResponse { 91 | access_token: string, 92 | token: string, 93 | expires_in: number, 94 | token_type?: string, 95 | refresh_token?: string, 96 | errors?: IError[], 97 | } 98 | export interface JWTPayload { 99 | version?: string, 100 | iss?: string, 101 | sub: string, 102 | type: string, 103 | aud?: string, 104 | kid?: string, 105 | exp: number, 106 | iat: number 107 | } 108 | export interface Session { 109 | email: string, 110 | token: string, 111 | msg: string, 112 | pwd: string 113 | } 114 | 115 | export class Namespace { 116 | id: string 117 | url: string 118 | headers: { [key: string]: string } 119 | 120 | constructor(id: string) { 121 | this.id = id 122 | this.url = Cloudflare.url + Cloudflare.account_id 123 | this.headers = { 124 | "X-Auth-Email": Cloudflare.api_email, 125 | "X-Auth-Key": Cloudflare.api_key, 126 | "Content-Type": "application/json", 127 | } 128 | } 129 | 130 | put(key: string, val: string): Promise { 131 | let init: RequestInit = { 132 | method: "PUT", 133 | body: JSON.stringify({ 134 | value: val 135 | }), 136 | headers: new Headers(this.headers) 137 | } 138 | console.log("herree"); 139 | 140 | return fetch(this.url + "/storage/kv/namespaces/" + this.id + "/values/" + key, init) 141 | } 142 | get(key: string): Promise { 143 | let init: RequestInit = { 144 | method: "GET", 145 | headers: new Headers(this.headers) 146 | } 147 | return fetch(this.url + "/storage/kv/namespaces/" + this.id + "/values/" + key, init) 148 | } 149 | } 150 | 151 | export function factoryIError(attrs: Partial = {}): IError { 152 | var error: IError = { 153 | type: '', 154 | fields: [], 155 | message: '' 156 | } 157 | return Object.assign(error, attrs) 158 | } 159 | export function factorySession(attrs: Partial = {}): Session { 160 | var sess: Session = { 161 | email: '', 162 | token: '', 163 | msg: '', 164 | pwd:'' 165 | } 166 | return Object.assign(sess, attrs) 167 | } 168 | export function factoryCodeResponse(attrs: Partial = {}): CodeResponse { 169 | var codeResp: CodeResponse = { 170 | errors: [], 171 | un: "" 172 | } 173 | return Object.assign(codeResp, attrs) 174 | } 175 | export function factoryTokenResponse(attrs: Partial = {}): TokenResponse { 176 | var tokenResp: TokenResponse = { 177 | errors: [], 178 | access_token: "", 179 | token: "", 180 | token_type: "bearer", 181 | expires_in: Math.round((Date.now() / 1000) + (5 * 24 * 60 * 60)), /* expire in 5 days */ 182 | 183 | } 184 | return Object.assign(tokenResp, attrs) 185 | } 186 | export function factoryJWTPayload(attrs: Partial = {}): JWTPayload { 187 | var JWTResp: JWTPayload = { 188 | iss: paths.token.token, 189 | sub: userInfo.email, 190 | type: "un/pwd", 191 | exp: Math.round((Date.now() / 1000) + ( 5 * 24 * 60 * 60)), /* expire in 5 days */ 192 | iat: Math.round( Date.now() / 1000) 193 | } 194 | return Object.assign(JWTResp, attrs) 195 | } 196 | export function factoryHookResponse(attrs: Partial = {}): HookResponse { 197 | var hookResp: HookResponse = { 198 | proceed: true, 199 | errors: [], 200 | install: factoryInstall({}), 201 | } 202 | return Object.assign(hookResp, attrs) 203 | } 204 | export function factoryInstall(attrs: Partial = {}): Install { 205 | var install: Install = { 206 | id: "", 207 | appId: "", 208 | versionTag: "", 209 | siteId: "", 210 | dNS: [], 211 | workers: [], 212 | links: [], 213 | uRLPatterns: [], 214 | pending: false, 215 | pastDue: false, 216 | installerUserId: "", 217 | subscriptionId: "", 218 | productId: "", 219 | amount: 0, 220 | active: false, 221 | refundedAmount: 0, 222 | refundId: "", 223 | deleted: false, 224 | metadata: {}, 225 | permissions: {}, 226 | } 227 | 228 | return Object.assign(install, attrs) 229 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "esnext", 5 | "lib": ["es2015", "webworker"], 6 | "jsx": "react", 7 | "noImplicitAny": true, 8 | "preserveConstEnums": true, 9 | "outDir": "./dist", 10 | "moduleResolution": "node" 11 | }, 12 | "include": ["src/*.ts", "src/**/*.ts", "src/*.tsx", "src/**/*.tsx"] 13 | } -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | module.exports = { 4 | entry: { 5 | auth: path.join(__dirname, "./src/auth-server.ts"), 6 | resource: path.join(__dirname, './src/resource-server.ts'), 7 | local: path.join(__dirname, './src/html_pages.ts'), 8 | }, 9 | 10 | output: { 11 | filename: "[name].js", 12 | path: path.join(__dirname, "dist") 13 | }, 14 | mode:"development", 15 | // mode: process.env.NODE_ENV || "development", 16 | 17 | watchOptions: { 18 | ignored: /node_modules|dist|\.js/g 19 | }, 20 | 21 | devtool: "none", 22 | 23 | resolve: { 24 | extensions: [".ts", ".tsx", ".js", ".json"], 25 | plugins: [], 26 | alias: { 27 | joi: "joi-browser" 28 | } 29 | }, 30 | 31 | module: { 32 | rules: [ 33 | { 34 | test: /\.tsx?$/, 35 | loader: "awesome-typescript-loader" 36 | } 37 | ] 38 | } 39 | }; 40 | --------------------------------------------------------------------------------