├── .gitignore ├── README.md ├── bin └── gcp-docs ├── img └── command.png ├── output └── products.json ├── package-lock.json ├── package.json └── src ├── cli.js └── main.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | #PDFs 9 | *.pdf 10 | 11 | # Runtime data 12 | pids 13 | *.pid 14 | *.seed 15 | *.pid.lock 16 | 17 | # Directory for instrumented libs generated by jscoverage/JSCover 18 | lib-cov 19 | 20 | # Coverage directory used by tools like istanbul 21 | coverage 22 | 23 | # nyc test coverage 24 | .nyc_output 25 | 26 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 27 | .grunt 28 | 29 | # Bower dependency directory (https://bower.io/) 30 | bower_components 31 | 32 | # node-waf configuration 33 | .lock-wscript 34 | 35 | # Compiled binary addons (https://nodejs.org/api/addons.html) 36 | build/Release 37 | 38 | # Dependency directories 39 | node_modules/ 40 | jspm_packages/ 41 | 42 | #Output directory 43 | output/ 44 | 45 | # TypeScript v1 declaration files 46 | typings/ 47 | 48 | # Optional npm cache directory 49 | .npm 50 | 51 | # Optional eslint cache 52 | .eslintcache 53 | 54 | # Optional REPL history 55 | .node_repl_history 56 | 57 | # Output of 'npm pack' 58 | *.tgz 59 | 60 | # Yarn Integrity file 61 | .yarn-integrity 62 | 63 | # dotenv environment variables file 64 | .env 65 | 66 | .vscode 67 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gcp-docs 2 | Download Google Cloud Platform's docs in PDF format 3 | 4 | ### Installing gcp-docs 5 | ``` 6 | npm link 7 | ``` 8 | 9 | ### Running gcp-docs 10 | 11 | ![gcp-docs] (https://github.com/monotosh-k/gcp-docs/blob/master/img/command.png) 12 | 13 | ``` 14 | gcp-docs 15 | ? Enter name of GCP product pubsub 16 | ? Enter name of sub-product(optional) 17 | ? Enter path to save pdf file ./ 18 | ? Select language for sample code (Use arrow keys) 19 | ❯ C# 20 | Go 21 | Java 22 | Node.js 23 | PHP 24 | Python 25 | ``` -------------------------------------------------------------------------------- /bin/gcp-docs: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require = require('esm')(module /*, options*/); 4 | require('../src/cli').cli(process.argv); -------------------------------------------------------------------------------- /img/command.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/monotosh-k/gcp-docs/2dfccf8c06f58de974b5734cf3f421ecdb18f4e5/img/command.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gcp-docs", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@samverschueren/stream-to-observable": { 8 | "version": "0.3.0", 9 | "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz", 10 | "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==", 11 | "requires": { 12 | "any-observable": "0.3.0" 13 | } 14 | }, 15 | "@types/node": { 16 | "version": "12.0.10", 17 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.10.tgz", 18 | "integrity": "sha512-LcsGbPomWsad6wmMNv7nBLw7YYYyfdYcz6xryKYQhx89c3XXan+8Q6AJ43G5XDIaklaVkK3mE4fCb0SBvMiPSQ==" 19 | }, 20 | "agent-base": { 21 | "version": "4.3.0", 22 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", 23 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", 24 | "requires": { 25 | "es6-promisify": "5.0.0" 26 | } 27 | }, 28 | "ansi-escapes": { 29 | "version": "3.2.0", 30 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 31 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" 32 | }, 33 | "ansi-regex": { 34 | "version": "4.1.0", 35 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 36 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 37 | }, 38 | "ansi-styles": { 39 | "version": "3.2.1", 40 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 41 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 42 | "requires": { 43 | "color-convert": "1.9.3" 44 | } 45 | }, 46 | "any-observable": { 47 | "version": "0.3.0", 48 | "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", 49 | "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==" 50 | }, 51 | "arg": { 52 | "version": "4.1.0", 53 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", 54 | "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" 55 | }, 56 | "array-find-index": { 57 | "version": "1.0.2", 58 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", 59 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" 60 | }, 61 | "arrify": { 62 | "version": "1.0.1", 63 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 64 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" 65 | }, 66 | "async-limiter": { 67 | "version": "1.0.0", 68 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", 69 | "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" 70 | }, 71 | "balanced-match": { 72 | "version": "1.0.0", 73 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 74 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 75 | }, 76 | "boolbase": { 77 | "version": "1.0.0", 78 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", 79 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" 80 | }, 81 | "brace-expansion": { 82 | "version": "1.1.11", 83 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 84 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 85 | "requires": { 86 | "balanced-match": "1.0.0", 87 | "concat-map": "0.0.1" 88 | } 89 | }, 90 | "buffer-from": { 91 | "version": "1.1.1", 92 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 93 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 94 | }, 95 | "camelcase": { 96 | "version": "4.1.0", 97 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", 98 | "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" 99 | }, 100 | "camelcase-keys": { 101 | "version": "4.2.0", 102 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", 103 | "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", 104 | "requires": { 105 | "camelcase": "4.1.0", 106 | "map-obj": "2.0.0", 107 | "quick-lru": "1.1.0" 108 | } 109 | }, 110 | "chalk": { 111 | "version": "2.4.2", 112 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 113 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 114 | "requires": { 115 | "ansi-styles": "3.2.1", 116 | "escape-string-regexp": "1.0.5", 117 | "supports-color": "5.5.0" 118 | } 119 | }, 120 | "chardet": { 121 | "version": "0.7.0", 122 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 123 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 124 | }, 125 | "cheerio": { 126 | "version": "1.0.0-rc.3", 127 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", 128 | "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", 129 | "requires": { 130 | "css-select": "1.2.0", 131 | "dom-serializer": "0.1.1", 132 | "entities": "1.1.2", 133 | "htmlparser2": "3.10.1", 134 | "lodash": "4.17.11", 135 | "parse5": "3.0.3" 136 | } 137 | }, 138 | "cli-cursor": { 139 | "version": "2.1.0", 140 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 141 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 142 | "requires": { 143 | "restore-cursor": "2.0.0" 144 | } 145 | }, 146 | "cli-truncate": { 147 | "version": "0.2.1", 148 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", 149 | "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", 150 | "requires": { 151 | "slice-ansi": "0.0.4", 152 | "string-width": "1.0.2" 153 | } 154 | }, 155 | "cli-width": { 156 | "version": "2.2.0", 157 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 158 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" 159 | }, 160 | "code-point-at": { 161 | "version": "1.1.0", 162 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 163 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 164 | }, 165 | "color-convert": { 166 | "version": "1.9.3", 167 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 168 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 169 | "requires": { 170 | "color-name": "1.1.3" 171 | } 172 | }, 173 | "color-name": { 174 | "version": "1.1.3", 175 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 176 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 177 | }, 178 | "concat-map": { 179 | "version": "0.0.1", 180 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 181 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 182 | }, 183 | "concat-stream": { 184 | "version": "1.6.2", 185 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 186 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 187 | "requires": { 188 | "buffer-from": "1.1.1", 189 | "inherits": "2.0.4", 190 | "readable-stream": "2.3.6", 191 | "typedarray": "0.0.6" 192 | }, 193 | "dependencies": { 194 | "readable-stream": { 195 | "version": "2.3.6", 196 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 197 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 198 | "requires": { 199 | "core-util-is": "1.0.2", 200 | "inherits": "2.0.4", 201 | "isarray": "1.0.0", 202 | "process-nextick-args": "2.0.1", 203 | "safe-buffer": "5.1.2", 204 | "string_decoder": "1.1.1", 205 | "util-deprecate": "1.0.2" 206 | } 207 | }, 208 | "string_decoder": { 209 | "version": "1.1.1", 210 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 211 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 212 | "requires": { 213 | "safe-buffer": "5.1.2" 214 | } 215 | } 216 | } 217 | }, 218 | "core-util-is": { 219 | "version": "1.0.2", 220 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 221 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 222 | }, 223 | "css-select": { 224 | "version": "1.2.0", 225 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", 226 | "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", 227 | "requires": { 228 | "boolbase": "1.0.0", 229 | "css-what": "2.1.3", 230 | "domutils": "1.5.1", 231 | "nth-check": "1.0.2" 232 | } 233 | }, 234 | "css-what": { 235 | "version": "2.1.3", 236 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", 237 | "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" 238 | }, 239 | "currently-unhandled": { 240 | "version": "0.4.1", 241 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", 242 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", 243 | "requires": { 244 | "array-find-index": "1.0.2" 245 | } 246 | }, 247 | "date-fns": { 248 | "version": "1.30.1", 249 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", 250 | "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" 251 | }, 252 | "debug": { 253 | "version": "4.1.1", 254 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 255 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 256 | "requires": { 257 | "ms": "2.1.2" 258 | } 259 | }, 260 | "decamelize": { 261 | "version": "1.2.0", 262 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 263 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 264 | }, 265 | "decamelize-keys": { 266 | "version": "1.1.0", 267 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", 268 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", 269 | "requires": { 270 | "decamelize": "1.2.0", 271 | "map-obj": "1.0.1" 272 | }, 273 | "dependencies": { 274 | "map-obj": { 275 | "version": "1.0.1", 276 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", 277 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" 278 | } 279 | } 280 | }, 281 | "define-properties": { 282 | "version": "1.1.3", 283 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 284 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 285 | "requires": { 286 | "object-keys": "1.1.1" 287 | } 288 | }, 289 | "dom-serializer": { 290 | "version": "0.1.1", 291 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", 292 | "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", 293 | "requires": { 294 | "domelementtype": "1.3.1", 295 | "entities": "1.1.2" 296 | } 297 | }, 298 | "domelementtype": { 299 | "version": "1.3.1", 300 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 301 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" 302 | }, 303 | "domhandler": { 304 | "version": "2.4.2", 305 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", 306 | "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", 307 | "requires": { 308 | "domelementtype": "1.3.1" 309 | } 310 | }, 311 | "domutils": { 312 | "version": "1.5.1", 313 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 314 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 315 | "requires": { 316 | "dom-serializer": "0.1.1", 317 | "domelementtype": "1.3.1" 318 | } 319 | }, 320 | "elegant-spinner": { 321 | "version": "1.0.1", 322 | "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", 323 | "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" 324 | }, 325 | "entities": { 326 | "version": "1.1.2", 327 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", 328 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" 329 | }, 330 | "error-ex": { 331 | "version": "1.3.2", 332 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 333 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 334 | "requires": { 335 | "is-arrayish": "0.2.1" 336 | } 337 | }, 338 | "es-abstract": { 339 | "version": "1.13.0", 340 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", 341 | "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", 342 | "requires": { 343 | "es-to-primitive": "1.2.0", 344 | "function-bind": "1.1.1", 345 | "has": "1.0.3", 346 | "is-callable": "1.1.4", 347 | "is-regex": "1.0.4", 348 | "object-keys": "1.1.1" 349 | } 350 | }, 351 | "es-to-primitive": { 352 | "version": "1.2.0", 353 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 354 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 355 | "requires": { 356 | "is-callable": "1.1.4", 357 | "is-date-object": "1.0.1", 358 | "is-symbol": "1.0.2" 359 | } 360 | }, 361 | "es6-promise": { 362 | "version": "4.2.8", 363 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 364 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" 365 | }, 366 | "es6-promisify": { 367 | "version": "5.0.0", 368 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 369 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", 370 | "requires": { 371 | "es6-promise": "4.2.8" 372 | } 373 | }, 374 | "escape-string-regexp": { 375 | "version": "1.0.5", 376 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 377 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 378 | }, 379 | "esm": { 380 | "version": "3.2.25", 381 | "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", 382 | "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" 383 | }, 384 | "external-editor": { 385 | "version": "3.0.3", 386 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", 387 | "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", 388 | "requires": { 389 | "chardet": "0.7.0", 390 | "iconv-lite": "0.4.24", 391 | "tmp": "0.0.33" 392 | } 393 | }, 394 | "extract-zip": { 395 | "version": "1.6.7", 396 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", 397 | "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", 398 | "requires": { 399 | "concat-stream": "1.6.2", 400 | "debug": "2.6.9", 401 | "mkdirp": "0.5.1", 402 | "yauzl": "2.4.1" 403 | }, 404 | "dependencies": { 405 | "debug": { 406 | "version": "2.6.9", 407 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 408 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 409 | "requires": { 410 | "ms": "2.0.0" 411 | } 412 | }, 413 | "fd-slicer": { 414 | "version": "1.0.1", 415 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", 416 | "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", 417 | "requires": { 418 | "pend": "1.2.0" 419 | } 420 | }, 421 | "ms": { 422 | "version": "2.0.0", 423 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 424 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 425 | }, 426 | "yauzl": { 427 | "version": "2.4.1", 428 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", 429 | "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", 430 | "requires": { 431 | "fd-slicer": "1.0.1" 432 | } 433 | } 434 | } 435 | }, 436 | "figures": { 437 | "version": "2.0.0", 438 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 439 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 440 | "requires": { 441 | "escape-string-regexp": "1.0.5" 442 | } 443 | }, 444 | "find-up": { 445 | "version": "2.1.0", 446 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", 447 | "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", 448 | "requires": { 449 | "locate-path": "2.0.0" 450 | } 451 | }, 452 | "fs.realpath": { 453 | "version": "1.0.0", 454 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 455 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 456 | }, 457 | "function-bind": { 458 | "version": "1.1.1", 459 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 460 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 461 | }, 462 | "get-hrefs": { 463 | "version": "4.0.0", 464 | "resolved": "https://registry.npmjs.org/get-hrefs/-/get-hrefs-4.0.0.tgz", 465 | "integrity": "sha512-j4CRoQmwEgkZAihe39KXuQQvdBha6C33jtXYdo3NdazXWC2ayzF3ferToBIsWPHzvoe39emY0D32BGXCYf7WtQ==", 466 | "requires": { 467 | "cheerio": "1.0.0-rc.3", 468 | "get-stdin": "6.0.0", 469 | "meow": "5.0.0", 470 | "normalize-url": "4.3.0" 471 | } 472 | }, 473 | "get-stdin": { 474 | "version": "6.0.0", 475 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 476 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==" 477 | }, 478 | "glob": { 479 | "version": "7.1.4", 480 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", 481 | "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", 482 | "requires": { 483 | "fs.realpath": "1.0.0", 484 | "inflight": "1.0.6", 485 | "inherits": "2.0.4", 486 | "minimatch": "3.0.4", 487 | "once": "1.4.0", 488 | "path-is-absolute": "1.0.1" 489 | } 490 | }, 491 | "graceful-fs": { 492 | "version": "4.2.0", 493 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", 494 | "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" 495 | }, 496 | "has": { 497 | "version": "1.0.3", 498 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 499 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 500 | "requires": { 501 | "function-bind": "1.1.1" 502 | } 503 | }, 504 | "has-ansi": { 505 | "version": "2.0.0", 506 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 507 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 508 | "requires": { 509 | "ansi-regex": "2.1.1" 510 | }, 511 | "dependencies": { 512 | "ansi-regex": { 513 | "version": "2.1.1", 514 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 515 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 516 | } 517 | } 518 | }, 519 | "has-flag": { 520 | "version": "3.0.0", 521 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 522 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 523 | }, 524 | "has-symbols": { 525 | "version": "1.0.0", 526 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 527 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" 528 | }, 529 | "hosted-git-info": { 530 | "version": "2.7.1", 531 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", 532 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" 533 | }, 534 | "htmlparser2": { 535 | "version": "3.10.1", 536 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", 537 | "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", 538 | "requires": { 539 | "domelementtype": "1.3.1", 540 | "domhandler": "2.4.2", 541 | "domutils": "1.5.1", 542 | "entities": "1.1.2", 543 | "inherits": "2.0.4", 544 | "readable-stream": "3.4.0" 545 | } 546 | }, 547 | "https-proxy-agent": { 548 | "version": "2.2.1", 549 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", 550 | "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", 551 | "requires": { 552 | "agent-base": "4.3.0", 553 | "debug": "3.2.6" 554 | }, 555 | "dependencies": { 556 | "debug": { 557 | "version": "3.2.6", 558 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 559 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 560 | "requires": { 561 | "ms": "2.1.2" 562 | } 563 | } 564 | } 565 | }, 566 | "hummus": { 567 | "version": "1.0.104", 568 | "resolved": "https://registry.npmjs.org/hummus/-/hummus-1.0.104.tgz", 569 | "integrity": "sha512-dOKbHZeH1egC6cLEggr/93eRE6OdXVfpjqDrhErMIFvIkEwhnihe/oSHVBJiVlabc5WoIexe7TkAL7jeFJP4fg==", 570 | "requires": { 571 | "node-pre-gyp": "0.10.3" 572 | }, 573 | "dependencies": { 574 | "abbrev": { 575 | "version": "1.1.1", 576 | "bundled": true 577 | }, 578 | "ansi-regex": { 579 | "version": "2.1.1", 580 | "bundled": true 581 | }, 582 | "aproba": { 583 | "version": "1.2.0", 584 | "bundled": true 585 | }, 586 | "are-we-there-yet": { 587 | "version": "1.1.5", 588 | "bundled": true, 589 | "requires": { 590 | "delegates": "1.0.0", 591 | "readable-stream": "2.3.6" 592 | } 593 | }, 594 | "balanced-match": { 595 | "version": "1.0.0", 596 | "bundled": true 597 | }, 598 | "brace-expansion": { 599 | "version": "1.1.11", 600 | "bundled": true, 601 | "requires": { 602 | "balanced-match": "1.0.0", 603 | "concat-map": "0.0.1" 604 | } 605 | }, 606 | "chownr": { 607 | "version": "1.1.1", 608 | "bundled": true 609 | }, 610 | "code-point-at": { 611 | "version": "1.1.0", 612 | "bundled": true 613 | }, 614 | "concat-map": { 615 | "version": "0.0.1", 616 | "bundled": true 617 | }, 618 | "console-control-strings": { 619 | "version": "1.1.0", 620 | "bundled": true 621 | }, 622 | "core-util-is": { 623 | "version": "1.0.2", 624 | "bundled": true 625 | }, 626 | "debug": { 627 | "version": "2.6.9", 628 | "bundled": true, 629 | "requires": { 630 | "ms": "2.0.0" 631 | } 632 | }, 633 | "deep-extend": { 634 | "version": "0.6.0", 635 | "bundled": true 636 | }, 637 | "delegates": { 638 | "version": "1.0.0", 639 | "bundled": true 640 | }, 641 | "detect-libc": { 642 | "version": "1.0.3", 643 | "bundled": true 644 | }, 645 | "fs-minipass": { 646 | "version": "1.2.5", 647 | "bundled": true, 648 | "requires": { 649 | "minipass": "2.3.5" 650 | } 651 | }, 652 | "fs.realpath": { 653 | "version": "1.0.0", 654 | "bundled": true 655 | }, 656 | "gauge": { 657 | "version": "2.7.4", 658 | "bundled": true, 659 | "requires": { 660 | "aproba": "1.2.0", 661 | "console-control-strings": "1.1.0", 662 | "has-unicode": "2.0.1", 663 | "object-assign": "4.1.1", 664 | "signal-exit": "3.0.2", 665 | "string-width": "1.0.2", 666 | "strip-ansi": "3.0.1", 667 | "wide-align": "1.1.3" 668 | } 669 | }, 670 | "glob": { 671 | "version": "7.1.3", 672 | "bundled": true, 673 | "requires": { 674 | "fs.realpath": "1.0.0", 675 | "inflight": "1.0.6", 676 | "inherits": "2.0.3", 677 | "minimatch": "3.0.4", 678 | "once": "1.4.0", 679 | "path-is-absolute": "1.0.1" 680 | } 681 | }, 682 | "has-unicode": { 683 | "version": "2.0.1", 684 | "bundled": true 685 | }, 686 | "iconv-lite": { 687 | "version": "0.4.24", 688 | "bundled": true, 689 | "requires": { 690 | "safer-buffer": "2.1.2" 691 | } 692 | }, 693 | "ignore-walk": { 694 | "version": "3.0.1", 695 | "bundled": true, 696 | "requires": { 697 | "minimatch": "3.0.4" 698 | } 699 | }, 700 | "inflight": { 701 | "version": "1.0.6", 702 | "bundled": true, 703 | "requires": { 704 | "once": "1.4.0", 705 | "wrappy": "1.0.2" 706 | } 707 | }, 708 | "inherits": { 709 | "version": "2.0.3", 710 | "bundled": true 711 | }, 712 | "ini": { 713 | "version": "1.3.5", 714 | "bundled": true 715 | }, 716 | "is-fullwidth-code-point": { 717 | "version": "1.0.0", 718 | "bundled": true, 719 | "requires": { 720 | "number-is-nan": "1.0.1" 721 | } 722 | }, 723 | "isarray": { 724 | "version": "1.0.0", 725 | "bundled": true 726 | }, 727 | "minimatch": { 728 | "version": "3.0.4", 729 | "bundled": true, 730 | "requires": { 731 | "brace-expansion": "1.1.11" 732 | } 733 | }, 734 | "minimist": { 735 | "version": "0.0.8", 736 | "bundled": true 737 | }, 738 | "minipass": { 739 | "version": "2.3.5", 740 | "bundled": true, 741 | "requires": { 742 | "safe-buffer": "5.1.2", 743 | "yallist": "3.0.3" 744 | } 745 | }, 746 | "minizlib": { 747 | "version": "1.1.1", 748 | "bundled": true, 749 | "requires": { 750 | "minipass": "2.3.5" 751 | } 752 | }, 753 | "mkdirp": { 754 | "version": "0.5.1", 755 | "bundled": true, 756 | "requires": { 757 | "minimist": "0.0.8" 758 | } 759 | }, 760 | "ms": { 761 | "version": "2.0.0", 762 | "bundled": true 763 | }, 764 | "needle": { 765 | "version": "2.2.4", 766 | "bundled": true, 767 | "requires": { 768 | "debug": "2.6.9", 769 | "iconv-lite": "0.4.24", 770 | "sax": "1.2.4" 771 | }, 772 | "dependencies": { 773 | "sax": { 774 | "version": "1.2.4", 775 | "bundled": true 776 | } 777 | } 778 | }, 779 | "node-pre-gyp": { 780 | "version": "0.10.3", 781 | "bundled": true, 782 | "requires": { 783 | "detect-libc": "1.0.3", 784 | "mkdirp": "0.5.1", 785 | "needle": "2.2.4", 786 | "nopt": "4.0.1", 787 | "npm-packlist": "1.1.12", 788 | "npmlog": "4.1.2", 789 | "rc": "1.2.8", 790 | "rimraf": "2.6.2", 791 | "semver": "5.6.0", 792 | "tar": "4.4.8" 793 | } 794 | }, 795 | "nopt": { 796 | "version": "4.0.1", 797 | "bundled": true, 798 | "requires": { 799 | "abbrev": "1.1.1", 800 | "osenv": "0.1.5" 801 | } 802 | }, 803 | "npm-bundled": { 804 | "version": "1.0.5", 805 | "bundled": true 806 | }, 807 | "npm-packlist": { 808 | "version": "1.1.12", 809 | "bundled": true, 810 | "requires": { 811 | "ignore-walk": "3.0.1", 812 | "npm-bundled": "1.0.5" 813 | } 814 | }, 815 | "npmlog": { 816 | "version": "4.1.2", 817 | "bundled": true, 818 | "requires": { 819 | "are-we-there-yet": "1.1.5", 820 | "console-control-strings": "1.1.0", 821 | "gauge": "2.7.4", 822 | "set-blocking": "2.0.0" 823 | } 824 | }, 825 | "number-is-nan": { 826 | "version": "1.0.1", 827 | "bundled": true 828 | }, 829 | "object-assign": { 830 | "version": "4.1.1", 831 | "bundled": true 832 | }, 833 | "once": { 834 | "version": "1.4.0", 835 | "bundled": true, 836 | "requires": { 837 | "wrappy": "1.0.2" 838 | } 839 | }, 840 | "os-homedir": { 841 | "version": "1.0.2", 842 | "bundled": true 843 | }, 844 | "os-tmpdir": { 845 | "version": "1.0.2", 846 | "bundled": true 847 | }, 848 | "osenv": { 849 | "version": "0.1.5", 850 | "bundled": true, 851 | "requires": { 852 | "os-homedir": "1.0.2", 853 | "os-tmpdir": "1.0.2" 854 | } 855 | }, 856 | "path-is-absolute": { 857 | "version": "1.0.1", 858 | "bundled": true 859 | }, 860 | "process-nextick-args": { 861 | "version": "2.0.0", 862 | "bundled": true 863 | }, 864 | "rc": { 865 | "version": "1.2.8", 866 | "bundled": true, 867 | "requires": { 868 | "deep-extend": "0.6.0", 869 | "ini": "1.3.5", 870 | "minimist": "1.2.0", 871 | "strip-json-comments": "2.0.1" 872 | }, 873 | "dependencies": { 874 | "minimist": { 875 | "version": "1.2.0", 876 | "bundled": true 877 | } 878 | } 879 | }, 880 | "readable-stream": { 881 | "version": "2.3.6", 882 | "bundled": true, 883 | "requires": { 884 | "core-util-is": "1.0.2", 885 | "inherits": "2.0.3", 886 | "isarray": "1.0.0", 887 | "process-nextick-args": "2.0.0", 888 | "safe-buffer": "5.1.2", 889 | "string_decoder": "1.1.1", 890 | "util-deprecate": "1.0.2" 891 | } 892 | }, 893 | "rimraf": { 894 | "version": "2.6.2", 895 | "bundled": true, 896 | "requires": { 897 | "glob": "7.1.3" 898 | } 899 | }, 900 | "safe-buffer": { 901 | "version": "5.1.2", 902 | "bundled": true 903 | }, 904 | "safer-buffer": { 905 | "version": "2.1.2", 906 | "bundled": true 907 | }, 908 | "semver": { 909 | "version": "5.6.0", 910 | "bundled": true 911 | }, 912 | "set-blocking": { 913 | "version": "2.0.0", 914 | "bundled": true 915 | }, 916 | "signal-exit": { 917 | "version": "3.0.2", 918 | "bundled": true 919 | }, 920 | "string-width": { 921 | "version": "1.0.2", 922 | "bundled": true, 923 | "requires": { 924 | "code-point-at": "1.1.0", 925 | "is-fullwidth-code-point": "1.0.0", 926 | "strip-ansi": "3.0.1" 927 | } 928 | }, 929 | "string_decoder": { 930 | "version": "1.1.1", 931 | "bundled": true, 932 | "requires": { 933 | "safe-buffer": "5.1.2" 934 | } 935 | }, 936 | "strip-ansi": { 937 | "version": "3.0.1", 938 | "bundled": true, 939 | "requires": { 940 | "ansi-regex": "2.1.1" 941 | } 942 | }, 943 | "strip-json-comments": { 944 | "version": "2.0.1", 945 | "bundled": true 946 | }, 947 | "tar": { 948 | "version": "4.4.8", 949 | "bundled": true, 950 | "requires": { 951 | "chownr": "1.1.1", 952 | "fs-minipass": "1.2.5", 953 | "minipass": "2.3.5", 954 | "minizlib": "1.1.1", 955 | "mkdirp": "0.5.1", 956 | "safe-buffer": "5.1.2", 957 | "yallist": "3.0.3" 958 | } 959 | }, 960 | "util-deprecate": { 961 | "version": "1.0.2", 962 | "bundled": true 963 | }, 964 | "wide-align": { 965 | "version": "1.1.3", 966 | "bundled": true, 967 | "requires": { 968 | "string-width": "1.0.2" 969 | } 970 | }, 971 | "wrappy": { 972 | "version": "1.0.2", 973 | "bundled": true 974 | }, 975 | "yallist": { 976 | "version": "3.0.3", 977 | "bundled": true 978 | } 979 | } 980 | }, 981 | "iconv-lite": { 982 | "version": "0.4.24", 983 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 984 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 985 | "requires": { 986 | "safer-buffer": "2.1.2" 987 | } 988 | }, 989 | "indent-string": { 990 | "version": "3.2.0", 991 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", 992 | "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" 993 | }, 994 | "inflight": { 995 | "version": "1.0.6", 996 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 997 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 998 | "requires": { 999 | "once": "1.4.0", 1000 | "wrappy": "1.0.2" 1001 | } 1002 | }, 1003 | "inherits": { 1004 | "version": "2.0.4", 1005 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1006 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1007 | }, 1008 | "inquirer": { 1009 | "version": "6.4.1", 1010 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", 1011 | "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", 1012 | "requires": { 1013 | "ansi-escapes": "3.2.0", 1014 | "chalk": "2.4.2", 1015 | "cli-cursor": "2.1.0", 1016 | "cli-width": "2.2.0", 1017 | "external-editor": "3.0.3", 1018 | "figures": "2.0.0", 1019 | "lodash": "4.17.11", 1020 | "mute-stream": "0.0.7", 1021 | "run-async": "2.3.0", 1022 | "rxjs": "6.5.2", 1023 | "string-width": "2.1.1", 1024 | "strip-ansi": "5.2.0", 1025 | "through": "2.3.8" 1026 | }, 1027 | "dependencies": { 1028 | "ansi-regex": { 1029 | "version": "3.0.0", 1030 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1031 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 1032 | }, 1033 | "string-width": { 1034 | "version": "2.1.1", 1035 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1036 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1037 | "requires": { 1038 | "is-fullwidth-code-point": "2.0.0", 1039 | "strip-ansi": "4.0.0" 1040 | }, 1041 | "dependencies": { 1042 | "strip-ansi": { 1043 | "version": "4.0.0", 1044 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1045 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1046 | "requires": { 1047 | "ansi-regex": "3.0.0" 1048 | } 1049 | } 1050 | } 1051 | } 1052 | } 1053 | }, 1054 | "is-arguments": { 1055 | "version": "1.0.4", 1056 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", 1057 | "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==" 1058 | }, 1059 | "is-arrayish": { 1060 | "version": "0.2.1", 1061 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1062 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" 1063 | }, 1064 | "is-callable": { 1065 | "version": "1.1.4", 1066 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1067 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" 1068 | }, 1069 | "is-date-object": { 1070 | "version": "1.0.1", 1071 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1072 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" 1073 | }, 1074 | "is-fullwidth-code-point": { 1075 | "version": "2.0.0", 1076 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1077 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 1078 | }, 1079 | "is-generator-function": { 1080 | "version": "1.0.7", 1081 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.7.tgz", 1082 | "integrity": "sha512-YZc5EwyO4f2kWCax7oegfuSr9mFz1ZvieNYBEjmukLxgXfBUbxAWGVF7GZf0zidYtoBl3WvC07YK0wT76a+Rtw==" 1083 | }, 1084 | "is-observable": { 1085 | "version": "1.1.0", 1086 | "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", 1087 | "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", 1088 | "requires": { 1089 | "symbol-observable": "1.2.0" 1090 | } 1091 | }, 1092 | "is-plain-obj": { 1093 | "version": "1.1.0", 1094 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", 1095 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" 1096 | }, 1097 | "is-promise": { 1098 | "version": "2.1.0", 1099 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1100 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" 1101 | }, 1102 | "is-regex": { 1103 | "version": "1.0.4", 1104 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1105 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1106 | "requires": { 1107 | "has": "1.0.3" 1108 | } 1109 | }, 1110 | "is-stream": { 1111 | "version": "1.1.0", 1112 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1113 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 1114 | }, 1115 | "is-symbol": { 1116 | "version": "1.0.2", 1117 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1118 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1119 | "requires": { 1120 | "has-symbols": "1.0.0" 1121 | } 1122 | }, 1123 | "isarray": { 1124 | "version": "1.0.0", 1125 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1126 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1127 | }, 1128 | "json-parse-better-errors": { 1129 | "version": "1.0.2", 1130 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1131 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" 1132 | }, 1133 | "listr": { 1134 | "version": "0.14.3", 1135 | "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", 1136 | "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", 1137 | "requires": { 1138 | "@samverschueren/stream-to-observable": "0.3.0", 1139 | "is-observable": "1.1.0", 1140 | "is-promise": "2.1.0", 1141 | "is-stream": "1.1.0", 1142 | "listr-silent-renderer": "1.1.1", 1143 | "listr-update-renderer": "0.5.0", 1144 | "listr-verbose-renderer": "0.5.0", 1145 | "p-map": "2.1.0", 1146 | "rxjs": "6.5.2" 1147 | } 1148 | }, 1149 | "listr-silent-renderer": { 1150 | "version": "1.1.1", 1151 | "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", 1152 | "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=" 1153 | }, 1154 | "listr-update-renderer": { 1155 | "version": "0.5.0", 1156 | "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", 1157 | "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", 1158 | "requires": { 1159 | "chalk": "1.1.3", 1160 | "cli-truncate": "0.2.1", 1161 | "elegant-spinner": "1.0.1", 1162 | "figures": "1.7.0", 1163 | "indent-string": "3.2.0", 1164 | "log-symbols": "1.0.2", 1165 | "log-update": "2.3.0", 1166 | "strip-ansi": "3.0.1" 1167 | }, 1168 | "dependencies": { 1169 | "ansi-regex": { 1170 | "version": "2.1.1", 1171 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1172 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 1173 | }, 1174 | "ansi-styles": { 1175 | "version": "2.2.1", 1176 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1177 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 1178 | }, 1179 | "chalk": { 1180 | "version": "1.1.3", 1181 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1182 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1183 | "requires": { 1184 | "ansi-styles": "2.2.1", 1185 | "escape-string-regexp": "1.0.5", 1186 | "has-ansi": "2.0.0", 1187 | "strip-ansi": "3.0.1", 1188 | "supports-color": "2.0.0" 1189 | } 1190 | }, 1191 | "figures": { 1192 | "version": "1.7.0", 1193 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", 1194 | "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", 1195 | "requires": { 1196 | "escape-string-regexp": "1.0.5", 1197 | "object-assign": "4.1.1" 1198 | } 1199 | }, 1200 | "strip-ansi": { 1201 | "version": "3.0.1", 1202 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1203 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1204 | "requires": { 1205 | "ansi-regex": "2.1.1" 1206 | } 1207 | }, 1208 | "supports-color": { 1209 | "version": "2.0.0", 1210 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1211 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 1212 | } 1213 | } 1214 | }, 1215 | "listr-verbose-renderer": { 1216 | "version": "0.5.0", 1217 | "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", 1218 | "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", 1219 | "requires": { 1220 | "chalk": "2.4.2", 1221 | "cli-cursor": "2.1.0", 1222 | "date-fns": "1.30.1", 1223 | "figures": "2.0.0" 1224 | } 1225 | }, 1226 | "load-json-file": { 1227 | "version": "4.0.0", 1228 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 1229 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 1230 | "requires": { 1231 | "graceful-fs": "4.2.0", 1232 | "parse-json": "4.0.0", 1233 | "pify": "3.0.0", 1234 | "strip-bom": "3.0.0" 1235 | } 1236 | }, 1237 | "locate-path": { 1238 | "version": "2.0.0", 1239 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", 1240 | "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", 1241 | "requires": { 1242 | "p-locate": "2.0.0", 1243 | "path-exists": "3.0.0" 1244 | } 1245 | }, 1246 | "lodash": { 1247 | "version": "4.17.11", 1248 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", 1249 | "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" 1250 | }, 1251 | "log-symbols": { 1252 | "version": "1.0.2", 1253 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", 1254 | "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", 1255 | "requires": { 1256 | "chalk": "1.1.3" 1257 | }, 1258 | "dependencies": { 1259 | "ansi-regex": { 1260 | "version": "2.1.1", 1261 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1262 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 1263 | }, 1264 | "ansi-styles": { 1265 | "version": "2.2.1", 1266 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1267 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 1268 | }, 1269 | "chalk": { 1270 | "version": "1.1.3", 1271 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1272 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1273 | "requires": { 1274 | "ansi-styles": "2.2.1", 1275 | "escape-string-regexp": "1.0.5", 1276 | "has-ansi": "2.0.0", 1277 | "strip-ansi": "3.0.1", 1278 | "supports-color": "2.0.0" 1279 | } 1280 | }, 1281 | "strip-ansi": { 1282 | "version": "3.0.1", 1283 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1284 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1285 | "requires": { 1286 | "ansi-regex": "2.1.1" 1287 | } 1288 | }, 1289 | "supports-color": { 1290 | "version": "2.0.0", 1291 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1292 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 1293 | } 1294 | } 1295 | }, 1296 | "log-update": { 1297 | "version": "2.3.0", 1298 | "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", 1299 | "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=", 1300 | "requires": { 1301 | "ansi-escapes": "3.2.0", 1302 | "cli-cursor": "2.1.0", 1303 | "wrap-ansi": "3.0.1" 1304 | } 1305 | }, 1306 | "loud-rejection": { 1307 | "version": "1.6.0", 1308 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", 1309 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", 1310 | "requires": { 1311 | "currently-unhandled": "0.4.1", 1312 | "signal-exit": "3.0.2" 1313 | } 1314 | }, 1315 | "map-obj": { 1316 | "version": "2.0.0", 1317 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", 1318 | "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" 1319 | }, 1320 | "meow": { 1321 | "version": "5.0.0", 1322 | "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", 1323 | "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", 1324 | "requires": { 1325 | "camelcase-keys": "4.2.0", 1326 | "decamelize-keys": "1.1.0", 1327 | "loud-rejection": "1.6.0", 1328 | "minimist-options": "3.0.2", 1329 | "normalize-package-data": "2.5.0", 1330 | "read-pkg-up": "3.0.0", 1331 | "redent": "2.0.0", 1332 | "trim-newlines": "2.0.0", 1333 | "yargs-parser": "10.1.0" 1334 | } 1335 | }, 1336 | "mime": { 1337 | "version": "2.4.4", 1338 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", 1339 | "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" 1340 | }, 1341 | "minimatch": { 1342 | "version": "3.0.4", 1343 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1344 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1345 | "requires": { 1346 | "brace-expansion": "1.1.11" 1347 | } 1348 | }, 1349 | "minimist": { 1350 | "version": "0.0.8", 1351 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1352 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 1353 | }, 1354 | "minimist-options": { 1355 | "version": "3.0.2", 1356 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", 1357 | "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", 1358 | "requires": { 1359 | "arrify": "1.0.1", 1360 | "is-plain-obj": "1.1.0" 1361 | } 1362 | }, 1363 | "mkdirp": { 1364 | "version": "0.5.1", 1365 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1366 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1367 | "requires": { 1368 | "minimist": "0.0.8" 1369 | } 1370 | }, 1371 | "ms": { 1372 | "version": "2.1.2", 1373 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1374 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1375 | }, 1376 | "mute-stream": { 1377 | "version": "0.0.7", 1378 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 1379 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" 1380 | }, 1381 | "normalize-package-data": { 1382 | "version": "2.5.0", 1383 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1384 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1385 | "requires": { 1386 | "hosted-git-info": "2.7.1", 1387 | "resolve": "1.11.1", 1388 | "semver": "5.7.0", 1389 | "validate-npm-package-license": "3.0.4" 1390 | } 1391 | }, 1392 | "normalize-url": { 1393 | "version": "4.3.0", 1394 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", 1395 | "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==" 1396 | }, 1397 | "nth-check": { 1398 | "version": "1.0.2", 1399 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", 1400 | "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", 1401 | "requires": { 1402 | "boolbase": "1.0.0" 1403 | } 1404 | }, 1405 | "number-is-nan": { 1406 | "version": "1.0.1", 1407 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1408 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 1409 | }, 1410 | "object-assign": { 1411 | "version": "4.1.1", 1412 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1413 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1414 | }, 1415 | "object-keys": { 1416 | "version": "1.1.1", 1417 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1418 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1419 | }, 1420 | "object.entries": { 1421 | "version": "1.1.0", 1422 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", 1423 | "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", 1424 | "requires": { 1425 | "define-properties": "1.1.3", 1426 | "es-abstract": "1.13.0", 1427 | "function-bind": "1.1.1", 1428 | "has": "1.0.3" 1429 | } 1430 | }, 1431 | "once": { 1432 | "version": "1.4.0", 1433 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1434 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1435 | "requires": { 1436 | "wrappy": "1.0.2" 1437 | } 1438 | }, 1439 | "onetime": { 1440 | "version": "2.0.1", 1441 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 1442 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 1443 | "requires": { 1444 | "mimic-fn": "1.2.0" 1445 | }, 1446 | "dependencies": { 1447 | "mimic-fn": { 1448 | "version": "1.2.0", 1449 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 1450 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" 1451 | } 1452 | } 1453 | }, 1454 | "os-tmpdir": { 1455 | "version": "1.0.2", 1456 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1457 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 1458 | }, 1459 | "p-limit": { 1460 | "version": "1.3.0", 1461 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", 1462 | "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", 1463 | "requires": { 1464 | "p-try": "1.0.0" 1465 | } 1466 | }, 1467 | "p-locate": { 1468 | "version": "2.0.0", 1469 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", 1470 | "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", 1471 | "requires": { 1472 | "p-limit": "1.3.0" 1473 | } 1474 | }, 1475 | "p-map": { 1476 | "version": "2.1.0", 1477 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", 1478 | "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" 1479 | }, 1480 | "p-try": { 1481 | "version": "1.0.0", 1482 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", 1483 | "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" 1484 | }, 1485 | "parse-json": { 1486 | "version": "4.0.0", 1487 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 1488 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 1489 | "requires": { 1490 | "error-ex": "1.3.2", 1491 | "json-parse-better-errors": "1.0.2" 1492 | } 1493 | }, 1494 | "parse5": { 1495 | "version": "3.0.3", 1496 | "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", 1497 | "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", 1498 | "requires": { 1499 | "@types/node": "12.0.10" 1500 | } 1501 | }, 1502 | "path": { 1503 | "version": "0.12.7", 1504 | "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", 1505 | "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", 1506 | "requires": { 1507 | "process": "0.11.10", 1508 | "util": "0.10.4" 1509 | }, 1510 | "dependencies": { 1511 | "inherits": { 1512 | "version": "2.0.3", 1513 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1514 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1515 | }, 1516 | "util": { 1517 | "version": "0.10.4", 1518 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", 1519 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", 1520 | "requires": { 1521 | "inherits": "2.0.3" 1522 | } 1523 | } 1524 | } 1525 | }, 1526 | "path-exists": { 1527 | "version": "3.0.0", 1528 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1529 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 1530 | }, 1531 | "path-is-absolute": { 1532 | "version": "1.0.1", 1533 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1534 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 1535 | }, 1536 | "path-parse": { 1537 | "version": "1.0.6", 1538 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1539 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 1540 | }, 1541 | "path-type": { 1542 | "version": "3.0.0", 1543 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 1544 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 1545 | "requires": { 1546 | "pify": "3.0.0" 1547 | } 1548 | }, 1549 | "pend": { 1550 | "version": "1.2.0", 1551 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1552 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 1553 | }, 1554 | "pify": { 1555 | "version": "3.0.0", 1556 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1557 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 1558 | }, 1559 | "process": { 1560 | "version": "0.11.10", 1561 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1562 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 1563 | }, 1564 | "process-nextick-args": { 1565 | "version": "2.0.1", 1566 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1567 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1568 | }, 1569 | "progress": { 1570 | "version": "2.0.3", 1571 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1572 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1573 | }, 1574 | "proxy-from-env": { 1575 | "version": "1.0.0", 1576 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", 1577 | "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" 1578 | }, 1579 | "puppeteer": { 1580 | "version": "1.18.1", 1581 | "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-1.18.1.tgz", 1582 | "integrity": "sha512-luUy0HPSuWPsPZ1wAp6NinE0zgetWtudf5zwZ6dHjMWfYpTQcmKveFRox7VBNhQ98OjNA9PQ9PzQyX8k/KrxTg==", 1583 | "requires": { 1584 | "debug": "4.1.1", 1585 | "extract-zip": "1.6.7", 1586 | "https-proxy-agent": "2.2.1", 1587 | "mime": "2.4.4", 1588 | "progress": "2.0.3", 1589 | "proxy-from-env": "1.0.0", 1590 | "rimraf": "2.6.3", 1591 | "ws": "6.2.1" 1592 | } 1593 | }, 1594 | "q": { 1595 | "version": "1.5.1", 1596 | "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", 1597 | "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" 1598 | }, 1599 | "quick-lru": { 1600 | "version": "1.1.0", 1601 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", 1602 | "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" 1603 | }, 1604 | "read-pkg": { 1605 | "version": "3.0.0", 1606 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 1607 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 1608 | "requires": { 1609 | "load-json-file": "4.0.0", 1610 | "normalize-package-data": "2.5.0", 1611 | "path-type": "3.0.0" 1612 | } 1613 | }, 1614 | "read-pkg-up": { 1615 | "version": "3.0.0", 1616 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", 1617 | "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", 1618 | "requires": { 1619 | "find-up": "2.1.0", 1620 | "read-pkg": "3.0.0" 1621 | } 1622 | }, 1623 | "readable-stream": { 1624 | "version": "3.4.0", 1625 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", 1626 | "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", 1627 | "requires": { 1628 | "inherits": "2.0.4", 1629 | "string_decoder": "1.2.0", 1630 | "util-deprecate": "1.0.2" 1631 | } 1632 | }, 1633 | "redent": { 1634 | "version": "2.0.0", 1635 | "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", 1636 | "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", 1637 | "requires": { 1638 | "indent-string": "3.2.0", 1639 | "strip-indent": "2.0.0" 1640 | } 1641 | }, 1642 | "resolve": { 1643 | "version": "1.11.1", 1644 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", 1645 | "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", 1646 | "requires": { 1647 | "path-parse": "1.0.6" 1648 | } 1649 | }, 1650 | "restore-cursor": { 1651 | "version": "2.0.0", 1652 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 1653 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 1654 | "requires": { 1655 | "onetime": "2.0.1", 1656 | "signal-exit": "3.0.2" 1657 | } 1658 | }, 1659 | "rimraf": { 1660 | "version": "2.6.3", 1661 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1662 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1663 | "requires": { 1664 | "glob": "7.1.4" 1665 | } 1666 | }, 1667 | "run-async": { 1668 | "version": "2.3.0", 1669 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 1670 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 1671 | "requires": { 1672 | "is-promise": "2.1.0" 1673 | } 1674 | }, 1675 | "rxjs": { 1676 | "version": "6.5.2", 1677 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", 1678 | "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", 1679 | "requires": { 1680 | "tslib": "1.10.0" 1681 | } 1682 | }, 1683 | "safe-buffer": { 1684 | "version": "5.1.2", 1685 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1686 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1687 | }, 1688 | "safer-buffer": { 1689 | "version": "2.1.2", 1690 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1691 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1692 | }, 1693 | "semver": { 1694 | "version": "5.7.0", 1695 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 1696 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" 1697 | }, 1698 | "signal-exit": { 1699 | "version": "3.0.2", 1700 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1701 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 1702 | }, 1703 | "slice-ansi": { 1704 | "version": "0.0.4", 1705 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", 1706 | "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" 1707 | }, 1708 | "spdx-correct": { 1709 | "version": "3.1.0", 1710 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 1711 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 1712 | "requires": { 1713 | "spdx-expression-parse": "3.0.0", 1714 | "spdx-license-ids": "3.0.4" 1715 | } 1716 | }, 1717 | "spdx-exceptions": { 1718 | "version": "2.2.0", 1719 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 1720 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" 1721 | }, 1722 | "spdx-expression-parse": { 1723 | "version": "3.0.0", 1724 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 1725 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 1726 | "requires": { 1727 | "spdx-exceptions": "2.2.0", 1728 | "spdx-license-ids": "3.0.4" 1729 | } 1730 | }, 1731 | "spdx-license-ids": { 1732 | "version": "3.0.4", 1733 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", 1734 | "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" 1735 | }, 1736 | "string-width": { 1737 | "version": "1.0.2", 1738 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 1739 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 1740 | "requires": { 1741 | "code-point-at": "1.1.0", 1742 | "is-fullwidth-code-point": "1.0.0", 1743 | "strip-ansi": "3.0.1" 1744 | }, 1745 | "dependencies": { 1746 | "ansi-regex": { 1747 | "version": "2.1.1", 1748 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1749 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 1750 | }, 1751 | "is-fullwidth-code-point": { 1752 | "version": "1.0.0", 1753 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1754 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1755 | "requires": { 1756 | "number-is-nan": "1.0.1" 1757 | } 1758 | }, 1759 | "strip-ansi": { 1760 | "version": "3.0.1", 1761 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1762 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1763 | "requires": { 1764 | "ansi-regex": "2.1.1" 1765 | } 1766 | } 1767 | } 1768 | }, 1769 | "string_decoder": { 1770 | "version": "1.2.0", 1771 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", 1772 | "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", 1773 | "requires": { 1774 | "safe-buffer": "5.1.2" 1775 | } 1776 | }, 1777 | "strip-ansi": { 1778 | "version": "5.2.0", 1779 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1780 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1781 | "requires": { 1782 | "ansi-regex": "4.1.0" 1783 | } 1784 | }, 1785 | "strip-bom": { 1786 | "version": "3.0.0", 1787 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1788 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" 1789 | }, 1790 | "strip-indent": { 1791 | "version": "2.0.0", 1792 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", 1793 | "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" 1794 | }, 1795 | "supports-color": { 1796 | "version": "5.5.0", 1797 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1798 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1799 | "requires": { 1800 | "has-flag": "3.0.0" 1801 | } 1802 | }, 1803 | "symbol-observable": { 1804 | "version": "1.2.0", 1805 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", 1806 | "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" 1807 | }, 1808 | "through": { 1809 | "version": "2.3.8", 1810 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1811 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1812 | }, 1813 | "tmp": { 1814 | "version": "0.0.33", 1815 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1816 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1817 | "requires": { 1818 | "os-tmpdir": "1.0.2" 1819 | } 1820 | }, 1821 | "trim-newlines": { 1822 | "version": "2.0.0", 1823 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", 1824 | "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=" 1825 | }, 1826 | "tslib": { 1827 | "version": "1.10.0", 1828 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 1829 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" 1830 | }, 1831 | "typedarray": { 1832 | "version": "0.0.6", 1833 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1834 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 1835 | }, 1836 | "underscore": { 1837 | "version": "1.12.1", 1838 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", 1839 | "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" 1840 | }, 1841 | "util": { 1842 | "version": "0.12.0", 1843 | "resolved": "https://registry.npmjs.org/util/-/util-0.12.0.tgz", 1844 | "integrity": "sha512-pPSOFl7VLhZ7LO/SFABPraZEEurkJUWSMn3MuA/r3WQZc+Z1fqou2JqLSOZbCLl73EUIxuUVX8X4jkX2vfJeAA==", 1845 | "requires": { 1846 | "inherits": "2.0.3", 1847 | "is-arguments": "1.0.4", 1848 | "is-generator-function": "1.0.7", 1849 | "object.entries": "1.1.0", 1850 | "safe-buffer": "5.1.2" 1851 | }, 1852 | "dependencies": { 1853 | "inherits": { 1854 | "version": "2.0.3", 1855 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1856 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1857 | } 1858 | } 1859 | }, 1860 | "util-deprecate": { 1861 | "version": "1.0.2", 1862 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1863 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1864 | }, 1865 | "validate-npm-package-license": { 1866 | "version": "3.0.4", 1867 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 1868 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 1869 | "requires": { 1870 | "spdx-correct": "3.1.0", 1871 | "spdx-expression-parse": "3.0.0" 1872 | } 1873 | }, 1874 | "wrap-ansi": { 1875 | "version": "3.0.1", 1876 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", 1877 | "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", 1878 | "requires": { 1879 | "string-width": "2.1.1", 1880 | "strip-ansi": "4.0.0" 1881 | }, 1882 | "dependencies": { 1883 | "ansi-regex": { 1884 | "version": "3.0.0", 1885 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1886 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 1887 | }, 1888 | "string-width": { 1889 | "version": "2.1.1", 1890 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 1891 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 1892 | "requires": { 1893 | "is-fullwidth-code-point": "2.0.0", 1894 | "strip-ansi": "4.0.0" 1895 | } 1896 | }, 1897 | "strip-ansi": { 1898 | "version": "4.0.0", 1899 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1900 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1901 | "requires": { 1902 | "ansi-regex": "3.0.0" 1903 | } 1904 | } 1905 | } 1906 | }, 1907 | "wrappy": { 1908 | "version": "1.0.2", 1909 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1910 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1911 | }, 1912 | "ws": { 1913 | "version": "6.2.1", 1914 | "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", 1915 | "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", 1916 | "requires": { 1917 | "async-limiter": "1.0.0" 1918 | } 1919 | }, 1920 | "yargs-parser": { 1921 | "version": "10.1.0", 1922 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", 1923 | "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", 1924 | "requires": { 1925 | "camelcase": "4.1.0" 1926 | } 1927 | } 1928 | } 1929 | } 1930 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "gcp-docs", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "src/main.js", 6 | "author": "", 7 | "license": "ISC", 8 | "scripts": { 9 | "start": "gcp-docs" 10 | }, 11 | "bin": { 12 | "gcp-docs": "bin/gcp-docs" 13 | }, 14 | "dependencies": { 15 | "arg": "^4.1.0", 16 | "chalk": "^2.4.2", 17 | "cheerio": "^1.0.0-rc.3", 18 | "esm": "^3.2.25", 19 | "get-hrefs": "^4.0.0", 20 | "hummus": "^1.0.104", 21 | "inquirer": "^6.4.1", 22 | "listr": "^0.14.3", 23 | "path": "^0.12.7", 24 | "puppeteer": "^1.18.1", 25 | "q": "^1.5.1", 26 | "rimraf": "^2.6.3", 27 | "underscore": "^1.12.1", 28 | "util": "^0.12.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/cli.js: -------------------------------------------------------------------------------- 1 | import arg from 'arg'; 2 | import inquirer from 'inquirer'; 3 | import fs from 'fs'; 4 | import { downloadDocs } from './main' 5 | 6 | function parseArgumentsIntoOptions(rawArgs) { 7 | const args = arg({ 8 | '--save': String, 9 | '-s': '--save', 10 | '--fileName': String, 11 | '-f': '--fileName', 12 | '--language': String, 13 | '-l': '--language', 14 | '--subProduct': String, 15 | '-u': '--subProduct' 16 | }, 17 | { 18 | argv: rawArgs.slice(2) 19 | }); 20 | 21 | return { 22 | product: args._[0], 23 | subProduct: args['--subProduct'] || '', 24 | pathToSave: args['--save'] , 25 | fileName: args['--fileName'], 26 | language: args['--language'] 27 | } 28 | } 29 | 30 | async function promptForMissingOptions(options){ 31 | const questions = []; 32 | if(!options.product){ 33 | questions.push({ 34 | name: 'product', 35 | message: 'Enter name of GCP product', 36 | validate: (input) => { 37 | if(!input){ 38 | return 'You need to provide name of GCP product'; 39 | } 40 | 41 | if(!options.fileName){ 42 | options.fileName = `${input}.pdf` 43 | } 44 | return true; 45 | } 46 | }); 47 | } 48 | 49 | if(!options.subProduct){ 50 | questions.push({ 51 | name: 'subProduct', 52 | message: 'Enter name of sub-product(optional)', 53 | default: '' 54 | }) 55 | } 56 | 57 | if(!options.pathToSave){ 58 | questions.push({ 59 | name: 'pathToSave', 60 | message: 'Enter path to save pdf file', 61 | default: './pdf/', 62 | validate: (input) => { 63 | if(!fs.existsSync(input)){ 64 | return `Dir ${input} doesn't exist` 65 | } 66 | 67 | return true; 68 | } 69 | }) 70 | } 71 | 72 | if(!options.language){ 73 | questions.push({ 74 | type: 'list', 75 | name: 'language', 76 | message: 'Select language for sample code', 77 | choices: ['C#', 'Go', 'Java', 'Node.js', 'PHP', 'Python'], 78 | default: 'C#' 79 | }) 80 | } 81 | 82 | const answers = await inquirer.prompt(questions); 83 | let product = options.product || answers.product; 84 | return{ 85 | ...options, 86 | product: product, 87 | subProduct: options.subProduct || answers.subProduct, 88 | fileName: options.fileName || `${product}.pdf`, 89 | pathToSave: options.pathToSave || answers.pathToSave, 90 | language: options.language || answers.language 91 | } 92 | } 93 | 94 | export async function cli(args) { 95 | let options = parseArgumentsIntoOptions(args); 96 | options = await promptForMissingOptions(options); 97 | await downloadDocs(options); 98 | } -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import puppeteer from 'puppeteer'; 2 | import fs from 'fs'; 3 | import cheerio from 'cheerio'; 4 | import _ from 'underscore'; 5 | import getHrefs from 'get-hrefs'; 6 | import path from 'path'; 7 | //import PDFMerge from 'pdf-merge'; 8 | import hummus from 'hummus'; 9 | import rimraf from 'rimraf'; 10 | import { 11 | promisify 12 | } from 'util'; 13 | import chalk from 'chalk'; 14 | import {exec} from 'child_process'; 15 | // import Listr from 'listr'; 16 | 17 | const readFile = promisify(fs.readFile); 18 | const writeFile = promisify(fs.writeFile); 19 | 20 | async function saveNavLinks(options) { 21 | const url = `https://cloud.google.com/${options.product}/docs/${options.subProduct}`; 22 | let browser; 23 | let product = { 24 | 'name': options.product 25 | }; 26 | const pathToOutputJson = path.join(__dirname, '/../output/products.json'); 27 | 28 | browser = await puppeteer.launch(); 29 | const page = await browser.newPage(); 30 | const response = await page.goto(url); 31 | if (!response.ok()) { 32 | await browser.close(); 33 | throw new Error(`${chalk.red.bold('ERROR')} No GCP product for ${options.product}`); 34 | } 35 | const buffer = await response.buffer(); 36 | const html = buffer.toString('utf8'); 37 | 38 | let $ = cheerio.load(html); 39 | let links = _.uniq(_.reject(getHrefs($('ul.devsite-nav-expandable').html()), (o) => { 40 | return o.indexOf('cloud.google.com') < 0 || 41 | o.indexOf('ref') > 0; 42 | })); 43 | console.log(`${chalk.yellow.bold('INFO')} Found ${links.length} links`); 44 | 45 | product.links = links; 46 | product.count = links.length; 47 | 48 | let data = await readFile(pathToOutputJson, 'utf8'); 49 | let jsonData = JSON.parse(data); 50 | let existing = _.find(jsonData.products, (a) => { 51 | return a.name === options.product 52 | }); 53 | if (existing) { 54 | existing.links = product.links; 55 | existing.count = product.count; 56 | } else { 57 | jsonData.products.push(product); 58 | } 59 | 60 | await writeFile(pathToOutputJson, JSON.stringify(jsonData)); 61 | await browser.close(); 62 | return product; 63 | } 64 | 65 | async function downloadAndMergePdf(options) { 66 | let browser; 67 | const pathToOutputJson = path.join(__dirname, '/../output/products.json'); 68 | let data = await readFile(pathToOutputJson, 'utf8'); 69 | let jsonData = JSON.parse(data); 70 | let existing = _.find(jsonData.products, (a) => { 71 | return a.name === options.product 72 | }); 73 | if (!existing || !existing.links) { 74 | await browser.close(); 75 | throw new Error(`${chalk.red.bold('ERROR')} No links found`); 76 | } 77 | 78 | if (!fs.existsSync(`${options.pathToSave}/${options.product}`)) { 79 | fs.mkdirSync(`${options.pathToSave}/${options.product}`); 80 | } 81 | 82 | browser = await puppeteer.launch(); 83 | let files = [], 84 | indx = 0; 85 | 86 | let promises = []; 87 | for (const element of existing.links) { 88 | let urlParts = element.split("/"); 89 | let pathToSave = `${options.pathToSave}/${options.product}/${indx}-${urlParts[urlParts.length - 1]}.pdf`; 90 | promises.push(downloadSingle(browser, element, pathToSave, options.language)); 91 | indx++; 92 | } 93 | 94 | let results = await Promise.all(promises); 95 | for (let result of results) { 96 | if(result){ 97 | files.push(result); 98 | } 99 | } 100 | 101 | let pdfwriter = hummus.createWriter(path.join(options.pathToSave, options.fileName)); 102 | files.forEach((file)=>{ 103 | if(fs.existsSync(file)){ 104 | pdfwriter.appendPDFPagesFromPDF(file); 105 | } 106 | }); 107 | pdfwriter.end(); 108 | console.log(`${chalk.green.bold('DONE')} Saved file at ${path.join(options.pathToSave, options.fileName)}`); 109 | 110 | await browser.close(); 111 | 112 | rimraf(path.join(options.pathToSave, options.product), (err)=>{ 113 | if(err) console.log(`${chalk.red.bold('ERROR')} ${err}`); 114 | }); 115 | 116 | const openFileCommand = process.platform === 'win32' ? '' : ' open'; 117 | exec(`${openFileCommand} ${path.join(options.pathToSave, options.fileName)}`, (error, stdout, stderr) => { 118 | if (error) { 119 | // console.error(`exec error: ${error}`); 120 | return; 121 | } 122 | }); 123 | } 124 | 125 | async function downloadSingle(browser, url, pathToSave, language) { 126 | try { 127 | let lanSelectorId = language === "C#" ? language : language.toLowerCase(); 128 | const page = await browser.newPage(); 129 | await page.goto(url, { 130 | timeout: 0, 131 | waitUntil: "networkidle0" 132 | }); 133 | // if(!page.$(`h3.kd-tabbutton [kd-data-id="code-sample:${lanSelectorId}"]`)){ 134 | // console.log(`Found ${lanSelectorId}`); 135 | // await page.click(`h3.kd-tabbutton [kd-data-id="code-sample:${lanSelectorId}"]`); 136 | // } 137 | const cards = await page.$('#cloud-site .card .card-showcase'); 138 | if(cards){ 139 | console.log(`${chalk.yellow.bold('INFO')} Excluding ${url}`); 140 | return; 141 | } 142 | 143 | const survey = await page.$('.survey.show'); 144 | if(survey){ 145 | await page.evaluate((sel) => { 146 | let elements = document.querySelectorAll(sel); 147 | for(var i=0; i< elements.length; i++){ 148 | elements[i].parentNode.removeChild(elements[i]); 149 | } 150 | }, '.survey.show') 151 | } 152 | 153 | await page.pdf({ 154 | path: pathToSave, 155 | format: 'Letter', 156 | scale: 0.8 157 | }); 158 | 159 | await page.close(); 160 | console.log(`${chalk.green.bold('DONE')} Saving ${chalk.cyan(url)}`); 161 | return pathToSave; 162 | } catch (err) { 163 | console.log(err); 164 | } 165 | } 166 | 167 | 168 | 169 | export async function downloadDocs(options) { 170 | await saveNavLinks(options); 171 | await downloadAndMergePdf(options); 172 | // const tasks = new Listr( 173 | // [{ 174 | // title: `Get navigation links for ${options.product}`, 175 | // task: () => saveNavLinks(options) 176 | // }, 177 | // { 178 | // title: 'Save page as pdf and merge', 179 | // task: () => downloadAndMergePdf(options), 180 | // } 181 | // ], { 182 | // exitOnError: true 183 | // }); 184 | // await tasks.run(); 185 | return true; 186 | } --------------------------------------------------------------------------------