├── .editorconfig ├── .eslintrc ├── .gitignore ├── LICENSE ├── README.md ├── bin ├── run └── run.cmd ├── data └── devices.csv ├── package-lock.json ├── package.json ├── screenrecording └── EasyAndroidEmulator_Demo.gif ├── src └── index.js └── test ├── index.test.js └── mocha.opts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | 10 | [*.md] 11 | trim_trailing_whitespace = false 12 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "oclif" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *-debug.log 2 | *-error.log 3 | /.nyc_output 4 | /dist 5 | /tmp 6 | /yarn.lock 7 | node_modules 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Chrisvin Jem 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | EasyAndroidEmulator 2 | =================== 3 | 4 | [![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io) 5 | [![Version](https://img.shields.io/npm/v/easy-android-emulator.svg)](https://npmjs.org/package/easy-android-emulator) 6 | [![Downloads/week](https://img.shields.io/npm/dw/easy-android-emulator.svg)](https://npmjs.org/package/easy-android-emulator) 7 | [![License](https://img.shields.io/npm/l/easy-android-emulator.svg)](https://github.com/Chrisvin/easy-android-emulator/blob/master/package.json) 8 | 9 |

10 | 11 | Create and run android emulators in a quick & easy manner with just device name/model. 12 | Use the various flags to customize the emulator as per your requirements. 13 | 14 | ## Setting up the dependency 15 | ### Install using npm 16 | ```sh-session 17 | $ npm install easy-android-emulator -g 18 | ``` 19 | 20 | ### `sdkmanager`, `avdmanager` & `emulator` need to be accessible via command line 21 | Refer to [Setup tutorial article](https://www.androidcentral.com/installing-android-sdk-windows-mac-and-linux-tutorial) if needed. 22 | 23 | ## Usage 24 | ### Just call `emulate` to emulate the default device 25 | ```sh-session 26 | $ emulate 27 | ``` 28 | ### Pass in Device Name or Model as the argument to emulate specific device 29 | ```sh-session 30 | $ emulate "Pixel 4 XL" 31 | ``` 32 | 33 | Details of the device are automatically fetched, but if needed, they can be customized using the appropriate flags. 34 | 35 | ## Flags 36 | | Flag | Description | 37 | | :--- | :--- | 38 | | -h, --help | show CLI help | 39 | | --version | show CLI version | 40 | | -v, --verbose | show verbose logs | 41 | | -n, --name | name of the AVD to be (created &) used | 42 | | -p, --persist | persist the created avd (makes it faster for subsequent runs) | 43 | | -f, --force | force recreation of the emulator avd | 44 | | --android | set the android API level for the AVD (Use along with -f flag if AVD already exists) | 45 | | --abi | set the preferred ABI for the AVD (Use along with -f flag if AVD already exists) | 46 | | -r, --resolution | set the resolution of the AVD (Use along with -f flag if AVD already exists). Eg: -r 1080x2160 | 47 | | -d, --density | set the density of the AVD (Use along with -f flag if AVD already exists). Eg: -d 440 | 48 | 49 | ## Examples 50 | 51 | 1. Create emulator with Samsung Galaxy M51 Specs, but with 800x1280 resolution & 240 density, which is persisted for future reuse. 52 | ```sh-session 53 | $ emulate m51 -r 800x1280 -d 240 -p 54 | ``` 55 | 56 | 2. Create emulator with Pixel 4 Specs, but with android API 25 and x86_64 ABI. (With verbose logs) 57 | ```sh-session 58 | $ emulate "Pixel 4" --android 25 --abi x86_64 -v 59 | ``` 60 | 61 | ## Bugs and Feedback 62 | For bugs, questions and discussions please use the [Github Issues](https://github.com/Chrisvin/EasyAndroidEmulator/issues). 63 | 64 | ## License 65 | ``` 66 | MIT License 67 | 68 | Copyright (c) 2020 Jem 69 | 70 | Permission is hereby granted, free of charge, to any person obtaining a copy 71 | of this software and associated documentation files (the "Software"), to deal 72 | in the Software without restriction, including without limitation the rights 73 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 74 | copies of the Software, and to permit persons to whom the Software is 75 | furnished to do so, subject to the following conditions: 76 | 77 | The above copyright notice and this permission notice shall be included in all 78 | copies or substantial portions of the Software. 79 | 80 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 81 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 82 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 83 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 84 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 85 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 86 | SOFTWARE. 87 | ``` 88 | -------------------------------------------------------------------------------- /bin/run: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | require('..').run() 4 | .catch(require('@oclif/errors/handle')) 5 | -------------------------------------------------------------------------------- /bin/run.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | node "%~dp0\run" %* 4 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "easy-android-emulator", 3 | "version": "1.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.10.4", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", 10 | "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.10.4" 14 | } 15 | }, 16 | "@babel/generator": { 17 | "version": "7.11.6", 18 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", 19 | "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", 20 | "dev": true, 21 | "requires": { 22 | "@babel/types": "^7.11.5", 23 | "jsesc": "^2.5.1", 24 | "source-map": "^0.5.0" 25 | } 26 | }, 27 | "@babel/helper-function-name": { 28 | "version": "7.10.4", 29 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", 30 | "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", 31 | "dev": true, 32 | "requires": { 33 | "@babel/helper-get-function-arity": "^7.10.4", 34 | "@babel/template": "^7.10.4", 35 | "@babel/types": "^7.10.4" 36 | } 37 | }, 38 | "@babel/helper-get-function-arity": { 39 | "version": "7.10.4", 40 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", 41 | "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", 42 | "dev": true, 43 | "requires": { 44 | "@babel/types": "^7.10.4" 45 | } 46 | }, 47 | "@babel/helper-split-export-declaration": { 48 | "version": "7.11.0", 49 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", 50 | "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", 51 | "dev": true, 52 | "requires": { 53 | "@babel/types": "^7.11.0" 54 | } 55 | }, 56 | "@babel/helper-validator-identifier": { 57 | "version": "7.10.4", 58 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", 59 | "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", 60 | "dev": true 61 | }, 62 | "@babel/highlight": { 63 | "version": "7.10.4", 64 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", 65 | "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", 66 | "dev": true, 67 | "requires": { 68 | "@babel/helper-validator-identifier": "^7.10.4", 69 | "chalk": "^2.0.0", 70 | "js-tokens": "^4.0.0" 71 | }, 72 | "dependencies": { 73 | "ansi-styles": { 74 | "version": "3.2.1", 75 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 76 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 77 | "dev": true, 78 | "requires": { 79 | "color-convert": "^1.9.0" 80 | } 81 | }, 82 | "chalk": { 83 | "version": "2.4.2", 84 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 85 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 86 | "dev": true, 87 | "requires": { 88 | "ansi-styles": "^3.2.1", 89 | "escape-string-regexp": "^1.0.5", 90 | "supports-color": "^5.3.0" 91 | } 92 | }, 93 | "color-convert": { 94 | "version": "1.9.3", 95 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 96 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 97 | "dev": true, 98 | "requires": { 99 | "color-name": "1.1.3" 100 | } 101 | }, 102 | "color-name": { 103 | "version": "1.1.3", 104 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 105 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 106 | "dev": true 107 | }, 108 | "escape-string-regexp": { 109 | "version": "1.0.5", 110 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 111 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 112 | "dev": true 113 | }, 114 | "supports-color": { 115 | "version": "5.5.0", 116 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 117 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 118 | "dev": true, 119 | "requires": { 120 | "has-flag": "^3.0.0" 121 | } 122 | } 123 | } 124 | }, 125 | "@babel/parser": { 126 | "version": "7.11.5", 127 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", 128 | "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", 129 | "dev": true 130 | }, 131 | "@babel/template": { 132 | "version": "7.10.4", 133 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", 134 | "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", 135 | "dev": true, 136 | "requires": { 137 | "@babel/code-frame": "^7.10.4", 138 | "@babel/parser": "^7.10.4", 139 | "@babel/types": "^7.10.4" 140 | } 141 | }, 142 | "@babel/traverse": { 143 | "version": "7.11.5", 144 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", 145 | "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", 146 | "dev": true, 147 | "requires": { 148 | "@babel/code-frame": "^7.10.4", 149 | "@babel/generator": "^7.11.5", 150 | "@babel/helper-function-name": "^7.10.4", 151 | "@babel/helper-split-export-declaration": "^7.11.0", 152 | "@babel/parser": "^7.11.5", 153 | "@babel/types": "^7.11.5", 154 | "debug": "^4.1.0", 155 | "globals": "^11.1.0", 156 | "lodash": "^4.17.19" 157 | } 158 | }, 159 | "@babel/types": { 160 | "version": "7.11.5", 161 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", 162 | "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", 163 | "dev": true, 164 | "requires": { 165 | "@babel/helper-validator-identifier": "^7.10.4", 166 | "lodash": "^4.17.19", 167 | "to-fast-properties": "^2.0.0" 168 | } 169 | }, 170 | "@nodelib/fs.scandir": { 171 | "version": "2.1.3", 172 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", 173 | "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", 174 | "requires": { 175 | "@nodelib/fs.stat": "2.0.3", 176 | "run-parallel": "^1.1.9" 177 | } 178 | }, 179 | "@nodelib/fs.stat": { 180 | "version": "2.0.3", 181 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", 182 | "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==" 183 | }, 184 | "@nodelib/fs.walk": { 185 | "version": "1.2.4", 186 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", 187 | "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", 188 | "requires": { 189 | "@nodelib/fs.scandir": "2.1.3", 190 | "fastq": "^1.6.0" 191 | } 192 | }, 193 | "@oclif/command": { 194 | "version": "1.8.0", 195 | "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.0.tgz", 196 | "integrity": "sha512-5vwpq6kbvwkQwKqAoOU3L72GZ3Ta8RRrewKj9OJRolx28KLJJ8Dg9Rf7obRwt5jQA9bkYd8gqzMTrI7H3xLfaw==", 197 | "requires": { 198 | "@oclif/config": "^1.15.1", 199 | "@oclif/errors": "^1.3.3", 200 | "@oclif/parser": "^3.8.3", 201 | "@oclif/plugin-help": "^3", 202 | "debug": "^4.1.1", 203 | "semver": "^7.3.2" 204 | } 205 | }, 206 | "@oclif/config": { 207 | "version": "1.17.0", 208 | "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.17.0.tgz", 209 | "integrity": "sha512-Lmfuf6ubjQ4ifC/9bz1fSCHc6F6E653oyaRXxg+lgT4+bYf9bk+nqrUpAbrXyABkCqgIBiFr3J4zR/kiFdE1PA==", 210 | "requires": { 211 | "@oclif/errors": "^1.3.3", 212 | "@oclif/parser": "^3.8.0", 213 | "debug": "^4.1.1", 214 | "globby": "^11.0.1", 215 | "is-wsl": "^2.1.1", 216 | "tslib": "^2.0.0" 217 | }, 218 | "dependencies": { 219 | "tslib": { 220 | "version": "2.0.1", 221 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", 222 | "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" 223 | } 224 | } 225 | }, 226 | "@oclif/dev-cli": { 227 | "version": "1.22.2", 228 | "resolved": "https://registry.npmjs.org/@oclif/dev-cli/-/dev-cli-1.22.2.tgz", 229 | "integrity": "sha512-c7633R37RxrQIpwqPKxjNRm6/jb1yuG8fd16hmNz9Nw+/MUhEtQtKHSCe9ScH8n5M06l6LEo4ldk9LEGtpaWwA==", 230 | "dev": true, 231 | "requires": { 232 | "@oclif/command": "^1.5.13", 233 | "@oclif/config": "^1.12.12", 234 | "@oclif/errors": "^1.2.2", 235 | "@oclif/plugin-help": "^2.1.6", 236 | "cli-ux": "^5.2.1", 237 | "debug": "^4.1.1", 238 | "fs-extra": "^7.0.1", 239 | "github-slugger": "^1.2.1", 240 | "lodash": "^4.17.11", 241 | "normalize-package-data": "^2.5.0", 242 | "qqjs": "^0.3.10", 243 | "tslib": "^1.9.3" 244 | }, 245 | "dependencies": { 246 | "@oclif/plugin-help": { 247 | "version": "2.2.3", 248 | "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-2.2.3.tgz", 249 | "integrity": "sha512-bGHUdo5e7DjPJ0vTeRBMIrfqTRDBfyR5w0MP41u0n3r7YG5p14lvMmiCXxi6WDaP2Hw5nqx3PnkAIntCKZZN7g==", 250 | "dev": true, 251 | "requires": { 252 | "@oclif/command": "^1.5.13", 253 | "chalk": "^2.4.1", 254 | "indent-string": "^4.0.0", 255 | "lodash.template": "^4.4.0", 256 | "string-width": "^3.0.0", 257 | "strip-ansi": "^5.0.0", 258 | "widest-line": "^2.0.1", 259 | "wrap-ansi": "^4.0.0" 260 | }, 261 | "dependencies": { 262 | "chalk": { 263 | "version": "2.4.2", 264 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 265 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 266 | "dev": true, 267 | "requires": { 268 | "ansi-styles": "^3.2.1", 269 | "escape-string-regexp": "^1.0.5", 270 | "supports-color": "^5.3.0" 271 | } 272 | } 273 | } 274 | }, 275 | "ansi-regex": { 276 | "version": "4.1.0", 277 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 278 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 279 | "dev": true 280 | }, 281 | "ansi-styles": { 282 | "version": "3.2.1", 283 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 284 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 285 | "dev": true, 286 | "requires": { 287 | "color-convert": "^1.9.0" 288 | } 289 | }, 290 | "color-convert": { 291 | "version": "1.9.3", 292 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 293 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 294 | "dev": true, 295 | "requires": { 296 | "color-name": "1.1.3" 297 | } 298 | }, 299 | "color-name": { 300 | "version": "1.1.3", 301 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 302 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 303 | "dev": true 304 | }, 305 | "emoji-regex": { 306 | "version": "7.0.3", 307 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 308 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 309 | "dev": true 310 | }, 311 | "escape-string-regexp": { 312 | "version": "1.0.5", 313 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 314 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 315 | "dev": true 316 | }, 317 | "is-fullwidth-code-point": { 318 | "version": "2.0.0", 319 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 320 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 321 | "dev": true 322 | }, 323 | "string-width": { 324 | "version": "3.1.0", 325 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 326 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 327 | "dev": true, 328 | "requires": { 329 | "emoji-regex": "^7.0.1", 330 | "is-fullwidth-code-point": "^2.0.0", 331 | "strip-ansi": "^5.1.0" 332 | } 333 | }, 334 | "strip-ansi": { 335 | "version": "5.2.0", 336 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 337 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 338 | "dev": true, 339 | "requires": { 340 | "ansi-regex": "^4.1.0" 341 | } 342 | }, 343 | "supports-color": { 344 | "version": "5.5.0", 345 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 346 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 347 | "dev": true, 348 | "requires": { 349 | "has-flag": "^3.0.0" 350 | } 351 | }, 352 | "widest-line": { 353 | "version": "2.0.1", 354 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", 355 | "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", 356 | "dev": true, 357 | "requires": { 358 | "string-width": "^2.1.1" 359 | }, 360 | "dependencies": { 361 | "ansi-regex": { 362 | "version": "3.0.0", 363 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 364 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 365 | "dev": true 366 | }, 367 | "string-width": { 368 | "version": "2.1.1", 369 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 370 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 371 | "dev": true, 372 | "requires": { 373 | "is-fullwidth-code-point": "^2.0.0", 374 | "strip-ansi": "^4.0.0" 375 | } 376 | }, 377 | "strip-ansi": { 378 | "version": "4.0.0", 379 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 380 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 381 | "dev": true, 382 | "requires": { 383 | "ansi-regex": "^3.0.0" 384 | } 385 | } 386 | } 387 | }, 388 | "wrap-ansi": { 389 | "version": "4.0.0", 390 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", 391 | "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", 392 | "dev": true, 393 | "requires": { 394 | "ansi-styles": "^3.2.0", 395 | "string-width": "^2.1.1", 396 | "strip-ansi": "^4.0.0" 397 | }, 398 | "dependencies": { 399 | "ansi-regex": { 400 | "version": "3.0.0", 401 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 402 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 403 | "dev": true 404 | }, 405 | "string-width": { 406 | "version": "2.1.1", 407 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 408 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 409 | "dev": true, 410 | "requires": { 411 | "is-fullwidth-code-point": "^2.0.0", 412 | "strip-ansi": "^4.0.0" 413 | } 414 | }, 415 | "strip-ansi": { 416 | "version": "4.0.0", 417 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 418 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 419 | "dev": true, 420 | "requires": { 421 | "ansi-regex": "^3.0.0" 422 | } 423 | } 424 | } 425 | } 426 | } 427 | }, 428 | "@oclif/errors": { 429 | "version": "1.3.3", 430 | "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.3.tgz", 431 | "integrity": "sha512-EJR6AIOEkt/NnARNIVAskPDVtdhtO5TTNXmhDrGqMoWVsr0R6DkkLrMyq95BmHvlVWM1nduoq4fQPuCyuF2jaA==", 432 | "requires": { 433 | "clean-stack": "^3.0.0", 434 | "fs-extra": "^9.0.1", 435 | "indent-string": "^4.0.0", 436 | "strip-ansi": "^6.0.0", 437 | "wrap-ansi": "^7.0.0" 438 | }, 439 | "dependencies": { 440 | "fs-extra": { 441 | "version": "9.0.1", 442 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", 443 | "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", 444 | "requires": { 445 | "at-least-node": "^1.0.0", 446 | "graceful-fs": "^4.2.0", 447 | "jsonfile": "^6.0.1", 448 | "universalify": "^1.0.0" 449 | } 450 | } 451 | } 452 | }, 453 | "@oclif/linewrap": { 454 | "version": "1.0.0", 455 | "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", 456 | "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==" 457 | }, 458 | "@oclif/parser": { 459 | "version": "3.8.5", 460 | "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.5.tgz", 461 | "integrity": "sha512-yojzeEfmSxjjkAvMRj0KzspXlMjCfBzNRPkWw8ZwOSoNWoJn+OCS/m/S+yfV6BvAM4u2lTzX9Y5rCbrFIgkJLg==", 462 | "requires": { 463 | "@oclif/errors": "^1.2.2", 464 | "@oclif/linewrap": "^1.0.0", 465 | "chalk": "^2.4.2", 466 | "tslib": "^1.9.3" 467 | }, 468 | "dependencies": { 469 | "ansi-styles": { 470 | "version": "3.2.1", 471 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 472 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 473 | "requires": { 474 | "color-convert": "^1.9.0" 475 | } 476 | }, 477 | "chalk": { 478 | "version": "2.4.2", 479 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 480 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 481 | "requires": { 482 | "ansi-styles": "^3.2.1", 483 | "escape-string-regexp": "^1.0.5", 484 | "supports-color": "^5.3.0" 485 | } 486 | }, 487 | "color-convert": { 488 | "version": "1.9.3", 489 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 490 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 491 | "requires": { 492 | "color-name": "1.1.3" 493 | } 494 | }, 495 | "color-name": { 496 | "version": "1.1.3", 497 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 498 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 499 | }, 500 | "escape-string-regexp": { 501 | "version": "1.0.5", 502 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 503 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 504 | }, 505 | "supports-color": { 506 | "version": "5.5.0", 507 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 508 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 509 | "requires": { 510 | "has-flag": "^3.0.0" 511 | } 512 | } 513 | } 514 | }, 515 | "@oclif/plugin-help": { 516 | "version": "3.2.0", 517 | "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-3.2.0.tgz", 518 | "integrity": "sha512-7jxtpwVWAVbp1r46ZnTK/uF+FeZc6y4p1XcGaIUuPAp7wx6NJhIRN/iMT9UfNFX/Cz7mq+OyJz+E+i0zrik86g==", 519 | "requires": { 520 | "@oclif/command": "^1.5.20", 521 | "@oclif/config": "^1.15.1", 522 | "chalk": "^2.4.1", 523 | "indent-string": "^4.0.0", 524 | "lodash.template": "^4.4.0", 525 | "string-width": "^4.2.0", 526 | "strip-ansi": "^6.0.0", 527 | "widest-line": "^3.1.0", 528 | "wrap-ansi": "^4.0.0" 529 | }, 530 | "dependencies": { 531 | "ansi-regex": { 532 | "version": "3.0.0", 533 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 534 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" 535 | }, 536 | "ansi-styles": { 537 | "version": "3.2.1", 538 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 539 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 540 | "requires": { 541 | "color-convert": "^1.9.0" 542 | } 543 | }, 544 | "chalk": { 545 | "version": "2.4.2", 546 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 547 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 548 | "requires": { 549 | "ansi-styles": "^3.2.1", 550 | "escape-string-regexp": "^1.0.5", 551 | "supports-color": "^5.3.0" 552 | } 553 | }, 554 | "color-convert": { 555 | "version": "1.9.3", 556 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 557 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 558 | "requires": { 559 | "color-name": "1.1.3" 560 | } 561 | }, 562 | "color-name": { 563 | "version": "1.1.3", 564 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 565 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 566 | }, 567 | "escape-string-regexp": { 568 | "version": "1.0.5", 569 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 570 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 571 | }, 572 | "is-fullwidth-code-point": { 573 | "version": "2.0.0", 574 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 575 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 576 | }, 577 | "supports-color": { 578 | "version": "5.5.0", 579 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 580 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 581 | "requires": { 582 | "has-flag": "^3.0.0" 583 | } 584 | }, 585 | "wrap-ansi": { 586 | "version": "4.0.0", 587 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-4.0.0.tgz", 588 | "integrity": "sha512-uMTsj9rDb0/7kk1PbcbCcwvHUxp60fGDB/NNXpVa0Q+ic/e7y5+BwTxKfQ33VYgDppSwi/FBzpetYzo8s6tfbg==", 589 | "requires": { 590 | "ansi-styles": "^3.2.0", 591 | "string-width": "^2.1.1", 592 | "strip-ansi": "^4.0.0" 593 | }, 594 | "dependencies": { 595 | "string-width": { 596 | "version": "2.1.1", 597 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 598 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 599 | "requires": { 600 | "is-fullwidth-code-point": "^2.0.0", 601 | "strip-ansi": "^4.0.0" 602 | } 603 | }, 604 | "strip-ansi": { 605 | "version": "4.0.0", 606 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 607 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 608 | "requires": { 609 | "ansi-regex": "^3.0.0" 610 | } 611 | } 612 | } 613 | } 614 | } 615 | }, 616 | "@oclif/screen": { 617 | "version": "1.0.4", 618 | "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-1.0.4.tgz", 619 | "integrity": "sha512-60CHpq+eqnTxLZQ4PGHYNwUX572hgpMHGPtTWMjdTMsAvlm69lZV/4ly6O3sAYkomo4NggGcomrDpBe34rxUqw==" 620 | }, 621 | "@oclif/test": { 622 | "version": "1.2.7", 623 | "resolved": "https://registry.npmjs.org/@oclif/test/-/test-1.2.7.tgz", 624 | "integrity": "sha512-1I8KQkOgScw18mr0zcly/OJjDW+kZnnmGXELaVBF69EZVzVgjE+Mz3EU1W29wf2rB7e8BqqtNrHzzoFu4oDuTw==", 625 | "dev": true, 626 | "requires": { 627 | "fancy-test": "^1.4.3" 628 | } 629 | }, 630 | "@types/chai": { 631 | "version": "4.2.12", 632 | "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.12.tgz", 633 | "integrity": "sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ==", 634 | "dev": true 635 | }, 636 | "@types/color-name": { 637 | "version": "1.1.1", 638 | "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", 639 | "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" 640 | }, 641 | "@types/glob": { 642 | "version": "7.1.3", 643 | "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", 644 | "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", 645 | "dev": true, 646 | "requires": { 647 | "@types/minimatch": "*", 648 | "@types/node": "*" 649 | } 650 | }, 651 | "@types/lodash": { 652 | "version": "4.14.161", 653 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.161.tgz", 654 | "integrity": "sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA==", 655 | "dev": true 656 | }, 657 | "@types/minimatch": { 658 | "version": "3.0.3", 659 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", 660 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", 661 | "dev": true 662 | }, 663 | "@types/node": { 664 | "version": "14.11.2", 665 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.2.tgz", 666 | "integrity": "sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==", 667 | "dev": true 668 | }, 669 | "@types/sinon": { 670 | "version": "9.0.6", 671 | "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.6.tgz", 672 | "integrity": "sha512-j3GK0fiHgn8fe7sqOpInMjm0A2Tary1NBZ8gbI/sZ0C0JxYeO+nh8H0/pW/0l94vNWcH1FnZOZu/cOvIfNZTrg==", 673 | "dev": true, 674 | "requires": { 675 | "@types/sinonjs__fake-timers": "*" 676 | } 677 | }, 678 | "@types/sinonjs__fake-timers": { 679 | "version": "6.0.2", 680 | "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz", 681 | "integrity": "sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg==", 682 | "dev": true 683 | }, 684 | "acorn": { 685 | "version": "6.4.1", 686 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", 687 | "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", 688 | "dev": true 689 | }, 690 | "acorn-jsx": { 691 | "version": "5.3.1", 692 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", 693 | "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", 694 | "dev": true 695 | }, 696 | "ajv": { 697 | "version": "6.12.5", 698 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", 699 | "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", 700 | "dev": true, 701 | "requires": { 702 | "fast-deep-equal": "^3.1.1", 703 | "fast-json-stable-stringify": "^2.0.0", 704 | "json-schema-traverse": "^0.4.1", 705 | "uri-js": "^4.2.2" 706 | } 707 | }, 708 | "ansi-escapes": { 709 | "version": "4.3.1", 710 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", 711 | "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", 712 | "requires": { 713 | "type-fest": "^0.11.0" 714 | } 715 | }, 716 | "ansi-regex": { 717 | "version": "5.0.0", 718 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 719 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" 720 | }, 721 | "ansi-styles": { 722 | "version": "4.2.1", 723 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", 724 | "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", 725 | "requires": { 726 | "@types/color-name": "^1.1.1", 727 | "color-convert": "^2.0.1" 728 | } 729 | }, 730 | "ansicolors": { 731 | "version": "0.3.2", 732 | "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", 733 | "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=" 734 | }, 735 | "append-transform": { 736 | "version": "1.0.0", 737 | "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", 738 | "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", 739 | "dev": true, 740 | "requires": { 741 | "default-require-extensions": "^2.0.0" 742 | } 743 | }, 744 | "archy": { 745 | "version": "1.0.0", 746 | "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 747 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 748 | "dev": true 749 | }, 750 | "argparse": { 751 | "version": "1.0.10", 752 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 753 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 754 | "requires": { 755 | "sprintf-js": "~1.0.2" 756 | } 757 | }, 758 | "array-union": { 759 | "version": "2.1.0", 760 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 761 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" 762 | }, 763 | "assertion-error": { 764 | "version": "1.1.0", 765 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 766 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 767 | "dev": true 768 | }, 769 | "astral-regex": { 770 | "version": "1.0.0", 771 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 772 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 773 | "dev": true 774 | }, 775 | "at-least-node": { 776 | "version": "1.0.0", 777 | "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", 778 | "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" 779 | }, 780 | "balanced-match": { 781 | "version": "1.0.0", 782 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 783 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 784 | }, 785 | "base64-js": { 786 | "version": "1.3.1", 787 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 788 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", 789 | "dev": true 790 | }, 791 | "bl": { 792 | "version": "4.0.3", 793 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", 794 | "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", 795 | "dev": true, 796 | "requires": { 797 | "buffer": "^5.5.0", 798 | "inherits": "^2.0.4", 799 | "readable-stream": "^3.4.0" 800 | } 801 | }, 802 | "brace-expansion": { 803 | "version": "1.1.11", 804 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 805 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 806 | "requires": { 807 | "balanced-match": "^1.0.0", 808 | "concat-map": "0.0.1" 809 | } 810 | }, 811 | "braces": { 812 | "version": "3.0.2", 813 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 814 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 815 | "requires": { 816 | "fill-range": "^7.0.1" 817 | } 818 | }, 819 | "browser-stdout": { 820 | "version": "1.3.1", 821 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 822 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 823 | "dev": true 824 | }, 825 | "buffer": { 826 | "version": "5.6.0", 827 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", 828 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", 829 | "dev": true, 830 | "requires": { 831 | "base64-js": "^1.0.2", 832 | "ieee754": "^1.1.4" 833 | } 834 | }, 835 | "caching-transform": { 836 | "version": "3.0.2", 837 | "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz", 838 | "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==", 839 | "dev": true, 840 | "requires": { 841 | "hasha": "^3.0.0", 842 | "make-dir": "^2.0.0", 843 | "package-hash": "^3.0.0", 844 | "write-file-atomic": "^2.4.2" 845 | }, 846 | "dependencies": { 847 | "make-dir": { 848 | "version": "2.1.0", 849 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 850 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 851 | "dev": true, 852 | "requires": { 853 | "pify": "^4.0.1", 854 | "semver": "^5.6.0" 855 | } 856 | }, 857 | "semver": { 858 | "version": "5.7.1", 859 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 860 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 861 | "dev": true 862 | }, 863 | "write-file-atomic": { 864 | "version": "2.4.3", 865 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", 866 | "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", 867 | "dev": true, 868 | "requires": { 869 | "graceful-fs": "^4.1.11", 870 | "imurmurhash": "^0.1.4", 871 | "signal-exit": "^3.0.2" 872 | } 873 | } 874 | } 875 | }, 876 | "callsites": { 877 | "version": "3.1.0", 878 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 879 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 880 | "dev": true 881 | }, 882 | "camelcase": { 883 | "version": "5.3.1", 884 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 885 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", 886 | "dev": true 887 | }, 888 | "cardinal": { 889 | "version": "2.1.1", 890 | "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", 891 | "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=", 892 | "requires": { 893 | "ansicolors": "~0.3.2", 894 | "redeyed": "~2.1.0" 895 | } 896 | }, 897 | "chai": { 898 | "version": "4.2.0", 899 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 900 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 901 | "dev": true, 902 | "requires": { 903 | "assertion-error": "^1.1.0", 904 | "check-error": "^1.0.2", 905 | "deep-eql": "^3.0.1", 906 | "get-func-name": "^2.0.0", 907 | "pathval": "^1.1.0", 908 | "type-detect": "^4.0.5" 909 | } 910 | }, 911 | "chalk": { 912 | "version": "4.1.0", 913 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 914 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 915 | "requires": { 916 | "ansi-styles": "^4.1.0", 917 | "supports-color": "^7.1.0" 918 | } 919 | }, 920 | "chardet": { 921 | "version": "0.7.0", 922 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 923 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 924 | "dev": true 925 | }, 926 | "check-error": { 927 | "version": "1.0.2", 928 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 929 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 930 | "dev": true 931 | }, 932 | "chownr": { 933 | "version": "1.1.4", 934 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 935 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", 936 | "dev": true 937 | }, 938 | "clean-regexp": { 939 | "version": "1.0.0", 940 | "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", 941 | "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=", 942 | "dev": true, 943 | "requires": { 944 | "escape-string-regexp": "^1.0.5" 945 | }, 946 | "dependencies": { 947 | "escape-string-regexp": { 948 | "version": "1.0.5", 949 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 950 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 951 | "dev": true 952 | } 953 | } 954 | }, 955 | "clean-stack": { 956 | "version": "3.0.0", 957 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.0.tgz", 958 | "integrity": "sha512-RHxtgFvXsRQ+1AM7dlozLDY7ssmvUUh0XEnfnyhYgJTO6beNZHBogiaCwGM9Q3rFrUkYxOtsZRC0zAturg5bjg==", 959 | "requires": { 960 | "escape-string-regexp": "4.0.0" 961 | } 962 | }, 963 | "cli-cursor": { 964 | "version": "2.1.0", 965 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", 966 | "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", 967 | "dev": true, 968 | "requires": { 969 | "restore-cursor": "^2.0.0" 970 | } 971 | }, 972 | "cli-progress": { 973 | "version": "3.8.2", 974 | "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.8.2.tgz", 975 | "integrity": "sha512-qRwBxLldMSfxB+YGFgNRaj5vyyHe1yMpVeDL79c+7puGujdKJHQHydgqXDcrkvQgJ5U/d3lpf6vffSoVVUftVQ==", 976 | "requires": { 977 | "colors": "^1.1.2", 978 | "string-width": "^4.2.0" 979 | } 980 | }, 981 | "cli-ux": { 982 | "version": "5.5.0", 983 | "resolved": "https://registry.npmjs.org/cli-ux/-/cli-ux-5.5.0.tgz", 984 | "integrity": "sha512-aXoHgEOtkem8sJmQrU/jXsojCq8uOp8++9lybCbt9mFDyPouSNawSdoPjuM00PPaSPCJThvY0VNYOQNd6gGQCA==", 985 | "requires": { 986 | "@oclif/command": "^1.6.0", 987 | "@oclif/errors": "^1.2.1", 988 | "@oclif/linewrap": "^1.0.0", 989 | "@oclif/screen": "^1.0.3", 990 | "ansi-escapes": "^4.3.0", 991 | "ansi-styles": "^4.2.0", 992 | "cardinal": "^2.1.1", 993 | "chalk": "^4.1.0", 994 | "clean-stack": "^3.0.0", 995 | "cli-progress": "^3.4.0", 996 | "extract-stack": "^2.0.0", 997 | "fs-extra": "^9.0.1", 998 | "hyperlinker": "^1.0.0", 999 | "indent-string": "^4.0.0", 1000 | "is-wsl": "^2.2.0", 1001 | "js-yaml": "^3.13.1", 1002 | "lodash": "^4.17.11", 1003 | "natural-orderby": "^2.0.1", 1004 | "object-treeify": "^1.1.4", 1005 | "password-prompt": "^1.1.2", 1006 | "semver": "^7.3.2", 1007 | "string-width": "^4.2.0", 1008 | "strip-ansi": "^6.0.0", 1009 | "supports-color": "^7.1.0", 1010 | "supports-hyperlinks": "^2.1.0", 1011 | "tslib": "^2.0.0" 1012 | }, 1013 | "dependencies": { 1014 | "chalk": { 1015 | "version": "4.1.0", 1016 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 1017 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 1018 | "requires": { 1019 | "ansi-styles": "^4.1.0", 1020 | "supports-color": "^7.1.0" 1021 | } 1022 | }, 1023 | "fs-extra": { 1024 | "version": "9.0.1", 1025 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", 1026 | "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", 1027 | "requires": { 1028 | "at-least-node": "^1.0.0", 1029 | "graceful-fs": "^4.2.0", 1030 | "jsonfile": "^6.0.1", 1031 | "universalify": "^1.0.0" 1032 | } 1033 | }, 1034 | "has-flag": { 1035 | "version": "4.0.0", 1036 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1037 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1038 | }, 1039 | "supports-color": { 1040 | "version": "7.2.0", 1041 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1042 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1043 | "requires": { 1044 | "has-flag": "^4.0.0" 1045 | } 1046 | }, 1047 | "tslib": { 1048 | "version": "2.0.1", 1049 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", 1050 | "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" 1051 | } 1052 | } 1053 | }, 1054 | "cli-width": { 1055 | "version": "2.2.1", 1056 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", 1057 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", 1058 | "dev": true 1059 | }, 1060 | "cliui": { 1061 | "version": "5.0.0", 1062 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 1063 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 1064 | "dev": true, 1065 | "requires": { 1066 | "string-width": "^3.1.0", 1067 | "strip-ansi": "^5.2.0", 1068 | "wrap-ansi": "^5.1.0" 1069 | }, 1070 | "dependencies": { 1071 | "ansi-regex": { 1072 | "version": "4.1.0", 1073 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1074 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1075 | "dev": true 1076 | }, 1077 | "ansi-styles": { 1078 | "version": "3.2.1", 1079 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1080 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1081 | "dev": true, 1082 | "requires": { 1083 | "color-convert": "^1.9.0" 1084 | } 1085 | }, 1086 | "color-convert": { 1087 | "version": "1.9.3", 1088 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1089 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1090 | "dev": true, 1091 | "requires": { 1092 | "color-name": "1.1.3" 1093 | } 1094 | }, 1095 | "color-name": { 1096 | "version": "1.1.3", 1097 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1098 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1099 | "dev": true 1100 | }, 1101 | "emoji-regex": { 1102 | "version": "7.0.3", 1103 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1104 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 1105 | "dev": true 1106 | }, 1107 | "is-fullwidth-code-point": { 1108 | "version": "2.0.0", 1109 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1110 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1111 | "dev": true 1112 | }, 1113 | "string-width": { 1114 | "version": "3.1.0", 1115 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1116 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1117 | "dev": true, 1118 | "requires": { 1119 | "emoji-regex": "^7.0.1", 1120 | "is-fullwidth-code-point": "^2.0.0", 1121 | "strip-ansi": "^5.1.0" 1122 | } 1123 | }, 1124 | "strip-ansi": { 1125 | "version": "5.2.0", 1126 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1127 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1128 | "dev": true, 1129 | "requires": { 1130 | "ansi-regex": "^4.1.0" 1131 | } 1132 | }, 1133 | "wrap-ansi": { 1134 | "version": "5.1.0", 1135 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1136 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1137 | "dev": true, 1138 | "requires": { 1139 | "ansi-styles": "^3.2.0", 1140 | "string-width": "^3.0.0", 1141 | "strip-ansi": "^5.0.0" 1142 | } 1143 | } 1144 | } 1145 | }, 1146 | "color-convert": { 1147 | "version": "2.0.1", 1148 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1149 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1150 | "requires": { 1151 | "color-name": "~1.1.4" 1152 | } 1153 | }, 1154 | "color-name": { 1155 | "version": "1.1.4", 1156 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1157 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1158 | }, 1159 | "colors": { 1160 | "version": "1.4.0", 1161 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 1162 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" 1163 | }, 1164 | "commander": { 1165 | "version": "2.15.1", 1166 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 1167 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", 1168 | "dev": true 1169 | }, 1170 | "commondir": { 1171 | "version": "1.0.1", 1172 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 1173 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", 1174 | "dev": true 1175 | }, 1176 | "concat-map": { 1177 | "version": "0.0.1", 1178 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1179 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 1180 | }, 1181 | "content-type": { 1182 | "version": "1.0.4", 1183 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1184 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 1185 | "dev": true 1186 | }, 1187 | "convert-source-map": { 1188 | "version": "1.7.0", 1189 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 1190 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 1191 | "dev": true, 1192 | "requires": { 1193 | "safe-buffer": "~5.1.1" 1194 | }, 1195 | "dependencies": { 1196 | "safe-buffer": { 1197 | "version": "5.1.2", 1198 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1199 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1200 | "dev": true 1201 | } 1202 | } 1203 | }, 1204 | "cp-file": { 1205 | "version": "6.2.0", 1206 | "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz", 1207 | "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==", 1208 | "dev": true, 1209 | "requires": { 1210 | "graceful-fs": "^4.1.2", 1211 | "make-dir": "^2.0.0", 1212 | "nested-error-stacks": "^2.0.0", 1213 | "pify": "^4.0.1", 1214 | "safe-buffer": "^5.0.1" 1215 | }, 1216 | "dependencies": { 1217 | "make-dir": { 1218 | "version": "2.1.0", 1219 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 1220 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 1221 | "dev": true, 1222 | "requires": { 1223 | "pify": "^4.0.1", 1224 | "semver": "^5.6.0" 1225 | } 1226 | }, 1227 | "semver": { 1228 | "version": "5.7.1", 1229 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1230 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1231 | "dev": true 1232 | } 1233 | } 1234 | }, 1235 | "cross-spawn": { 1236 | "version": "6.0.5", 1237 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 1238 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 1239 | "requires": { 1240 | "nice-try": "^1.0.4", 1241 | "path-key": "^2.0.1", 1242 | "semver": "^5.5.0", 1243 | "shebang-command": "^1.2.0", 1244 | "which": "^1.2.9" 1245 | }, 1246 | "dependencies": { 1247 | "semver": { 1248 | "version": "5.7.1", 1249 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1250 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1251 | } 1252 | } 1253 | }, 1254 | "debug": { 1255 | "version": "4.2.0", 1256 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", 1257 | "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", 1258 | "requires": { 1259 | "ms": "2.1.2" 1260 | } 1261 | }, 1262 | "decamelize": { 1263 | "version": "1.2.0", 1264 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 1265 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 1266 | "dev": true 1267 | }, 1268 | "deep-eql": { 1269 | "version": "3.0.1", 1270 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 1271 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 1272 | "dev": true, 1273 | "requires": { 1274 | "type-detect": "^4.0.0" 1275 | } 1276 | }, 1277 | "deep-is": { 1278 | "version": "0.1.3", 1279 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 1280 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 1281 | "dev": true 1282 | }, 1283 | "default-require-extensions": { 1284 | "version": "2.0.0", 1285 | "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", 1286 | "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", 1287 | "dev": true, 1288 | "requires": { 1289 | "strip-bom": "^3.0.0" 1290 | }, 1291 | "dependencies": { 1292 | "strip-bom": { 1293 | "version": "3.0.0", 1294 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 1295 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 1296 | "dev": true 1297 | } 1298 | } 1299 | }, 1300 | "detect-indent": { 1301 | "version": "6.0.0", 1302 | "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", 1303 | "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", 1304 | "dev": true 1305 | }, 1306 | "diff": { 1307 | "version": "3.5.0", 1308 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 1309 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", 1310 | "dev": true 1311 | }, 1312 | "dir-glob": { 1313 | "version": "3.0.1", 1314 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 1315 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 1316 | "requires": { 1317 | "path-type": "^4.0.0" 1318 | } 1319 | }, 1320 | "doctrine": { 1321 | "version": "3.0.0", 1322 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 1323 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 1324 | "dev": true, 1325 | "requires": { 1326 | "esutils": "^2.0.2" 1327 | } 1328 | }, 1329 | "emoji-regex": { 1330 | "version": "8.0.0", 1331 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1332 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1333 | }, 1334 | "end-of-stream": { 1335 | "version": "1.4.4", 1336 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1337 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1338 | "dev": true, 1339 | "requires": { 1340 | "once": "^1.4.0" 1341 | } 1342 | }, 1343 | "error-ex": { 1344 | "version": "1.3.2", 1345 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1346 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1347 | "dev": true, 1348 | "requires": { 1349 | "is-arrayish": "^0.2.1" 1350 | } 1351 | }, 1352 | "es6-error": { 1353 | "version": "4.1.1", 1354 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 1355 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 1356 | "dev": true 1357 | }, 1358 | "escape-string-regexp": { 1359 | "version": "4.0.0", 1360 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1361 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" 1362 | }, 1363 | "eslint": { 1364 | "version": "5.16.0", 1365 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", 1366 | "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", 1367 | "dev": true, 1368 | "requires": { 1369 | "@babel/code-frame": "^7.0.0", 1370 | "ajv": "^6.9.1", 1371 | "chalk": "^2.1.0", 1372 | "cross-spawn": "^6.0.5", 1373 | "debug": "^4.0.1", 1374 | "doctrine": "^3.0.0", 1375 | "eslint-scope": "^4.0.3", 1376 | "eslint-utils": "^1.3.1", 1377 | "eslint-visitor-keys": "^1.0.0", 1378 | "espree": "^5.0.1", 1379 | "esquery": "^1.0.1", 1380 | "esutils": "^2.0.2", 1381 | "file-entry-cache": "^5.0.1", 1382 | "functional-red-black-tree": "^1.0.1", 1383 | "glob": "^7.1.2", 1384 | "globals": "^11.7.0", 1385 | "ignore": "^4.0.6", 1386 | "import-fresh": "^3.0.0", 1387 | "imurmurhash": "^0.1.4", 1388 | "inquirer": "^6.2.2", 1389 | "js-yaml": "^3.13.0", 1390 | "json-stable-stringify-without-jsonify": "^1.0.1", 1391 | "levn": "^0.3.0", 1392 | "lodash": "^4.17.11", 1393 | "minimatch": "^3.0.4", 1394 | "mkdirp": "^0.5.1", 1395 | "natural-compare": "^1.4.0", 1396 | "optionator": "^0.8.2", 1397 | "path-is-inside": "^1.0.2", 1398 | "progress": "^2.0.0", 1399 | "regexpp": "^2.0.1", 1400 | "semver": "^5.5.1", 1401 | "strip-ansi": "^4.0.0", 1402 | "strip-json-comments": "^2.0.1", 1403 | "table": "^5.2.3", 1404 | "text-table": "^0.2.0" 1405 | }, 1406 | "dependencies": { 1407 | "ansi-regex": { 1408 | "version": "3.0.0", 1409 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 1410 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 1411 | "dev": true 1412 | }, 1413 | "ansi-styles": { 1414 | "version": "3.2.1", 1415 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1416 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1417 | "dev": true, 1418 | "requires": { 1419 | "color-convert": "^1.9.0" 1420 | } 1421 | }, 1422 | "chalk": { 1423 | "version": "2.4.2", 1424 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1425 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1426 | "dev": true, 1427 | "requires": { 1428 | "ansi-styles": "^3.2.1", 1429 | "escape-string-regexp": "^1.0.5", 1430 | "supports-color": "^5.3.0" 1431 | } 1432 | }, 1433 | "color-convert": { 1434 | "version": "1.9.3", 1435 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1436 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1437 | "dev": true, 1438 | "requires": { 1439 | "color-name": "1.1.3" 1440 | } 1441 | }, 1442 | "color-name": { 1443 | "version": "1.1.3", 1444 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1445 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1446 | "dev": true 1447 | }, 1448 | "escape-string-regexp": { 1449 | "version": "1.0.5", 1450 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1451 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1452 | "dev": true 1453 | }, 1454 | "ignore": { 1455 | "version": "4.0.6", 1456 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1457 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1458 | "dev": true 1459 | }, 1460 | "semver": { 1461 | "version": "5.7.1", 1462 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1463 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1464 | "dev": true 1465 | }, 1466 | "strip-ansi": { 1467 | "version": "4.0.0", 1468 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 1469 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 1470 | "dev": true, 1471 | "requires": { 1472 | "ansi-regex": "^3.0.0" 1473 | } 1474 | }, 1475 | "supports-color": { 1476 | "version": "5.5.0", 1477 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1478 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1479 | "dev": true, 1480 | "requires": { 1481 | "has-flag": "^3.0.0" 1482 | } 1483 | } 1484 | } 1485 | }, 1486 | "eslint-ast-utils": { 1487 | "version": "1.1.0", 1488 | "resolved": "https://registry.npmjs.org/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz", 1489 | "integrity": "sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==", 1490 | "dev": true, 1491 | "requires": { 1492 | "lodash.get": "^4.4.2", 1493 | "lodash.zip": "^4.2.0" 1494 | } 1495 | }, 1496 | "eslint-config-oclif": { 1497 | "version": "3.1.0", 1498 | "resolved": "https://registry.npmjs.org/eslint-config-oclif/-/eslint-config-oclif-3.1.0.tgz", 1499 | "integrity": "sha512-Tqgy43cNXsSdhTLWW4RuDYGFhV240sC4ISSv/ZiUEg/zFxExSEUpRE6J+AGnkKY9dYwIW4C9b2YSUVv8z/miMA==", 1500 | "dev": true, 1501 | "requires": { 1502 | "eslint-config-xo-space": "^0.20.0", 1503 | "eslint-plugin-mocha": "^5.2.0", 1504 | "eslint-plugin-node": "^7.0.1", 1505 | "eslint-plugin-unicorn": "^6.0.1" 1506 | } 1507 | }, 1508 | "eslint-config-xo": { 1509 | "version": "0.24.2", 1510 | "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.24.2.tgz", 1511 | "integrity": "sha512-ivQ7qISScW6gfBp+p31nQntz1rg34UCybd3uvlngcxt5Utsf4PMMi9QoAluLFcPUM5Tvqk4JGraR9qu3msKPKQ==", 1512 | "dev": true 1513 | }, 1514 | "eslint-config-xo-space": { 1515 | "version": "0.20.0", 1516 | "resolved": "https://registry.npmjs.org/eslint-config-xo-space/-/eslint-config-xo-space-0.20.0.tgz", 1517 | "integrity": "sha512-bOsoZA8M6v1HviDUIGVq1fLVnSu3mMZzn85m2tqKb73tSzu4GKD4Jd2Py4ZKjCgvCbRRByEB5HPC3fTMnnJ1uw==", 1518 | "dev": true, 1519 | "requires": { 1520 | "eslint-config-xo": "^0.24.0" 1521 | } 1522 | }, 1523 | "eslint-plugin-es": { 1524 | "version": "1.4.1", 1525 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", 1526 | "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", 1527 | "dev": true, 1528 | "requires": { 1529 | "eslint-utils": "^1.4.2", 1530 | "regexpp": "^2.0.1" 1531 | } 1532 | }, 1533 | "eslint-plugin-mocha": { 1534 | "version": "5.3.0", 1535 | "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz", 1536 | "integrity": "sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==", 1537 | "dev": true, 1538 | "requires": { 1539 | "ramda": "^0.26.1" 1540 | } 1541 | }, 1542 | "eslint-plugin-node": { 1543 | "version": "7.0.1", 1544 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", 1545 | "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", 1546 | "dev": true, 1547 | "requires": { 1548 | "eslint-plugin-es": "^1.3.1", 1549 | "eslint-utils": "^1.3.1", 1550 | "ignore": "^4.0.2", 1551 | "minimatch": "^3.0.4", 1552 | "resolve": "^1.8.1", 1553 | "semver": "^5.5.0" 1554 | }, 1555 | "dependencies": { 1556 | "ignore": { 1557 | "version": "4.0.6", 1558 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1559 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1560 | "dev": true 1561 | }, 1562 | "semver": { 1563 | "version": "5.7.1", 1564 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1565 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1566 | "dev": true 1567 | } 1568 | } 1569 | }, 1570 | "eslint-plugin-unicorn": { 1571 | "version": "6.0.1", 1572 | "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-6.0.1.tgz", 1573 | "integrity": "sha512-hjy9LhTdtL7pz8WTrzS0CGXRkWK3VAPLDjihofj8JC+uxQLfXm0WwZPPPB7xKmcjRyoH+jruPHOCrHNEINpG/Q==", 1574 | "dev": true, 1575 | "requires": { 1576 | "clean-regexp": "^1.0.0", 1577 | "eslint-ast-utils": "^1.0.0", 1578 | "import-modules": "^1.1.0", 1579 | "lodash.camelcase": "^4.1.1", 1580 | "lodash.kebabcase": "^4.0.1", 1581 | "lodash.snakecase": "^4.0.1", 1582 | "lodash.upperfirst": "^4.2.0", 1583 | "safe-regex": "^1.1.0" 1584 | } 1585 | }, 1586 | "eslint-scope": { 1587 | "version": "4.0.3", 1588 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", 1589 | "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", 1590 | "dev": true, 1591 | "requires": { 1592 | "esrecurse": "^4.1.0", 1593 | "estraverse": "^4.1.1" 1594 | } 1595 | }, 1596 | "eslint-utils": { 1597 | "version": "1.4.3", 1598 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 1599 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 1600 | "dev": true, 1601 | "requires": { 1602 | "eslint-visitor-keys": "^1.1.0" 1603 | } 1604 | }, 1605 | "eslint-visitor-keys": { 1606 | "version": "1.3.0", 1607 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 1608 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 1609 | "dev": true 1610 | }, 1611 | "espree": { 1612 | "version": "5.0.1", 1613 | "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", 1614 | "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", 1615 | "dev": true, 1616 | "requires": { 1617 | "acorn": "^6.0.7", 1618 | "acorn-jsx": "^5.0.0", 1619 | "eslint-visitor-keys": "^1.0.0" 1620 | } 1621 | }, 1622 | "esprima": { 1623 | "version": "4.0.1", 1624 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 1625 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 1626 | }, 1627 | "esquery": { 1628 | "version": "1.3.1", 1629 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", 1630 | "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", 1631 | "dev": true, 1632 | "requires": { 1633 | "estraverse": "^5.1.0" 1634 | }, 1635 | "dependencies": { 1636 | "estraverse": { 1637 | "version": "5.2.0", 1638 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1639 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1640 | "dev": true 1641 | } 1642 | } 1643 | }, 1644 | "esrecurse": { 1645 | "version": "4.3.0", 1646 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 1647 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 1648 | "dev": true, 1649 | "requires": { 1650 | "estraverse": "^5.2.0" 1651 | }, 1652 | "dependencies": { 1653 | "estraverse": { 1654 | "version": "5.2.0", 1655 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 1656 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 1657 | "dev": true 1658 | } 1659 | } 1660 | }, 1661 | "estraverse": { 1662 | "version": "4.3.0", 1663 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 1664 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 1665 | "dev": true 1666 | }, 1667 | "esutils": { 1668 | "version": "2.0.3", 1669 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1670 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1671 | "dev": true 1672 | }, 1673 | "execa": { 1674 | "version": "0.10.0", 1675 | "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", 1676 | "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", 1677 | "dev": true, 1678 | "requires": { 1679 | "cross-spawn": "^6.0.0", 1680 | "get-stream": "^3.0.0", 1681 | "is-stream": "^1.1.0", 1682 | "npm-run-path": "^2.0.0", 1683 | "p-finally": "^1.0.0", 1684 | "signal-exit": "^3.0.0", 1685 | "strip-eof": "^1.0.0" 1686 | }, 1687 | "dependencies": { 1688 | "get-stream": { 1689 | "version": "3.0.0", 1690 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", 1691 | "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", 1692 | "dev": true 1693 | } 1694 | } 1695 | }, 1696 | "external-editor": { 1697 | "version": "3.1.0", 1698 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 1699 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 1700 | "dev": true, 1701 | "requires": { 1702 | "chardet": "^0.7.0", 1703 | "iconv-lite": "^0.4.24", 1704 | "tmp": "^0.0.33" 1705 | }, 1706 | "dependencies": { 1707 | "tmp": { 1708 | "version": "0.0.33", 1709 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1710 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1711 | "dev": true, 1712 | "requires": { 1713 | "os-tmpdir": "~1.0.2" 1714 | } 1715 | } 1716 | } 1717 | }, 1718 | "extract-stack": { 1719 | "version": "2.0.0", 1720 | "resolved": "https://registry.npmjs.org/extract-stack/-/extract-stack-2.0.0.tgz", 1721 | "integrity": "sha512-AEo4zm+TenK7zQorGK1f9mJ8L14hnTDi2ZQPR+Mub1NX8zimka1mXpV5LpH8x9HoUmFSHZCfLHqWvp0Y4FxxzQ==" 1722 | }, 1723 | "fancy-test": { 1724 | "version": "1.4.9", 1725 | "resolved": "https://registry.npmjs.org/fancy-test/-/fancy-test-1.4.9.tgz", 1726 | "integrity": "sha512-Tro3lkXPX438G3t2N9BDgD3ac5iUhNnxIE8tg/KL6z7eZ5GOCexs7fDEMacduqvJWPvsRlmyQ69V1jiTVcqkXQ==", 1727 | "dev": true, 1728 | "requires": { 1729 | "@types/chai": "*", 1730 | "@types/lodash": "*", 1731 | "@types/node": "*", 1732 | "@types/sinon": "*", 1733 | "lodash": "^4.17.13", 1734 | "mock-stdin": "^1.0.0", 1735 | "stdout-stderr": "^0.1.9" 1736 | } 1737 | }, 1738 | "fast-deep-equal": { 1739 | "version": "3.1.3", 1740 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1741 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 1742 | "dev": true 1743 | }, 1744 | "fast-glob": { 1745 | "version": "3.2.4", 1746 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", 1747 | "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", 1748 | "requires": { 1749 | "@nodelib/fs.stat": "^2.0.2", 1750 | "@nodelib/fs.walk": "^1.2.3", 1751 | "glob-parent": "^5.1.0", 1752 | "merge2": "^1.3.0", 1753 | "micromatch": "^4.0.2", 1754 | "picomatch": "^2.2.1" 1755 | } 1756 | }, 1757 | "fast-json-stable-stringify": { 1758 | "version": "2.1.0", 1759 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 1760 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 1761 | "dev": true 1762 | }, 1763 | "fast-levenshtein": { 1764 | "version": "2.0.6", 1765 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 1766 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 1767 | "dev": true 1768 | }, 1769 | "fastq": { 1770 | "version": "1.8.0", 1771 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", 1772 | "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", 1773 | "requires": { 1774 | "reusify": "^1.0.4" 1775 | } 1776 | }, 1777 | "figures": { 1778 | "version": "2.0.0", 1779 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", 1780 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", 1781 | "dev": true, 1782 | "requires": { 1783 | "escape-string-regexp": "^1.0.5" 1784 | }, 1785 | "dependencies": { 1786 | "escape-string-regexp": { 1787 | "version": "1.0.5", 1788 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1789 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1790 | "dev": true 1791 | } 1792 | } 1793 | }, 1794 | "file-entry-cache": { 1795 | "version": "5.0.1", 1796 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 1797 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 1798 | "dev": true, 1799 | "requires": { 1800 | "flat-cache": "^2.0.1" 1801 | } 1802 | }, 1803 | "fill-range": { 1804 | "version": "7.0.1", 1805 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1806 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1807 | "requires": { 1808 | "to-regex-range": "^5.0.1" 1809 | } 1810 | }, 1811 | "find-cache-dir": { 1812 | "version": "2.1.0", 1813 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", 1814 | "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", 1815 | "dev": true, 1816 | "requires": { 1817 | "commondir": "^1.0.1", 1818 | "make-dir": "^2.0.0", 1819 | "pkg-dir": "^3.0.0" 1820 | }, 1821 | "dependencies": { 1822 | "find-up": { 1823 | "version": "3.0.0", 1824 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 1825 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 1826 | "dev": true, 1827 | "requires": { 1828 | "locate-path": "^3.0.0" 1829 | } 1830 | }, 1831 | "locate-path": { 1832 | "version": "3.0.0", 1833 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 1834 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 1835 | "dev": true, 1836 | "requires": { 1837 | "p-locate": "^3.0.0", 1838 | "path-exists": "^3.0.0" 1839 | } 1840 | }, 1841 | "make-dir": { 1842 | "version": "2.1.0", 1843 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 1844 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 1845 | "dev": true, 1846 | "requires": { 1847 | "pify": "^4.0.1", 1848 | "semver": "^5.6.0" 1849 | } 1850 | }, 1851 | "p-locate": { 1852 | "version": "3.0.0", 1853 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 1854 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 1855 | "dev": true, 1856 | "requires": { 1857 | "p-limit": "^2.0.0" 1858 | } 1859 | }, 1860 | "path-exists": { 1861 | "version": "3.0.0", 1862 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 1863 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 1864 | "dev": true 1865 | }, 1866 | "pkg-dir": { 1867 | "version": "3.0.0", 1868 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", 1869 | "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", 1870 | "dev": true, 1871 | "requires": { 1872 | "find-up": "^3.0.0" 1873 | } 1874 | }, 1875 | "semver": { 1876 | "version": "5.7.1", 1877 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1878 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1879 | "dev": true 1880 | } 1881 | } 1882 | }, 1883 | "find-up": { 1884 | "version": "4.1.0", 1885 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1886 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1887 | "dev": true, 1888 | "requires": { 1889 | "locate-path": "^5.0.0", 1890 | "path-exists": "^4.0.0" 1891 | } 1892 | }, 1893 | "flat-cache": { 1894 | "version": "2.0.1", 1895 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 1896 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 1897 | "dev": true, 1898 | "requires": { 1899 | "flatted": "^2.0.0", 1900 | "rimraf": "2.6.3", 1901 | "write": "1.0.3" 1902 | }, 1903 | "dependencies": { 1904 | "rimraf": { 1905 | "version": "2.6.3", 1906 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1907 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1908 | "dev": true, 1909 | "requires": { 1910 | "glob": "^7.1.3" 1911 | } 1912 | } 1913 | } 1914 | }, 1915 | "flatted": { 1916 | "version": "2.0.2", 1917 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 1918 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 1919 | "dev": true 1920 | }, 1921 | "foreground-child": { 1922 | "version": "1.5.6", 1923 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz", 1924 | "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", 1925 | "dev": true, 1926 | "requires": { 1927 | "cross-spawn": "^4", 1928 | "signal-exit": "^3.0.0" 1929 | }, 1930 | "dependencies": { 1931 | "cross-spawn": { 1932 | "version": "4.0.2", 1933 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", 1934 | "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", 1935 | "dev": true, 1936 | "requires": { 1937 | "lru-cache": "^4.0.1", 1938 | "which": "^1.2.9" 1939 | } 1940 | } 1941 | } 1942 | }, 1943 | "fs-constants": { 1944 | "version": "1.0.0", 1945 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1946 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", 1947 | "dev": true 1948 | }, 1949 | "fs-extra": { 1950 | "version": "7.0.1", 1951 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", 1952 | "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", 1953 | "dev": true, 1954 | "requires": { 1955 | "graceful-fs": "^4.1.2", 1956 | "jsonfile": "^4.0.0", 1957 | "universalify": "^0.1.0" 1958 | }, 1959 | "dependencies": { 1960 | "jsonfile": { 1961 | "version": "4.0.0", 1962 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1963 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 1964 | "dev": true, 1965 | "requires": { 1966 | "graceful-fs": "^4.1.6" 1967 | } 1968 | }, 1969 | "universalify": { 1970 | "version": "0.1.2", 1971 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1972 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 1973 | "dev": true 1974 | } 1975 | } 1976 | }, 1977 | "fs.realpath": { 1978 | "version": "1.0.0", 1979 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1980 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 1981 | }, 1982 | "functional-red-black-tree": { 1983 | "version": "1.0.1", 1984 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 1985 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 1986 | "dev": true 1987 | }, 1988 | "get-caller-file": { 1989 | "version": "2.0.5", 1990 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1991 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1992 | "dev": true 1993 | }, 1994 | "get-func-name": { 1995 | "version": "2.0.0", 1996 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 1997 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 1998 | "dev": true 1999 | }, 2000 | "get-stream": { 2001 | "version": "5.2.0", 2002 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 2003 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 2004 | "dev": true, 2005 | "requires": { 2006 | "pump": "^3.0.0" 2007 | } 2008 | }, 2009 | "github-slugger": { 2010 | "version": "1.3.0", 2011 | "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.3.0.tgz", 2012 | "integrity": "sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==", 2013 | "dev": true, 2014 | "requires": { 2015 | "emoji-regex": ">=6.0.0 <=6.1.1" 2016 | }, 2017 | "dependencies": { 2018 | "emoji-regex": { 2019 | "version": "6.1.1", 2020 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz", 2021 | "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4=", 2022 | "dev": true 2023 | } 2024 | } 2025 | }, 2026 | "glob": { 2027 | "version": "7.1.6", 2028 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 2029 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 2030 | "requires": { 2031 | "fs.realpath": "^1.0.0", 2032 | "inflight": "^1.0.4", 2033 | "inherits": "2", 2034 | "minimatch": "^3.0.4", 2035 | "once": "^1.3.0", 2036 | "path-is-absolute": "^1.0.0" 2037 | } 2038 | }, 2039 | "glob-parent": { 2040 | "version": "5.1.1", 2041 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", 2042 | "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", 2043 | "requires": { 2044 | "is-glob": "^4.0.1" 2045 | } 2046 | }, 2047 | "globals": { 2048 | "version": "11.12.0", 2049 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 2050 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 2051 | "dev": true 2052 | }, 2053 | "globby": { 2054 | "version": "11.0.1", 2055 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", 2056 | "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", 2057 | "requires": { 2058 | "array-union": "^2.1.0", 2059 | "dir-glob": "^3.0.1", 2060 | "fast-glob": "^3.1.1", 2061 | "ignore": "^5.1.4", 2062 | "merge2": "^1.3.0", 2063 | "slash": "^3.0.0" 2064 | } 2065 | }, 2066 | "graceful-fs": { 2067 | "version": "4.2.4", 2068 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 2069 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 2070 | }, 2071 | "growl": { 2072 | "version": "1.10.5", 2073 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 2074 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", 2075 | "dev": true 2076 | }, 2077 | "has-flag": { 2078 | "version": "3.0.0", 2079 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 2080 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 2081 | }, 2082 | "hasha": { 2083 | "version": "3.0.0", 2084 | "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", 2085 | "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", 2086 | "dev": true, 2087 | "requires": { 2088 | "is-stream": "^1.0.1" 2089 | } 2090 | }, 2091 | "he": { 2092 | "version": "1.1.1", 2093 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 2094 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 2095 | "dev": true 2096 | }, 2097 | "hosted-git-info": { 2098 | "version": "2.8.8", 2099 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", 2100 | "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", 2101 | "dev": true 2102 | }, 2103 | "html-escaper": { 2104 | "version": "2.0.2", 2105 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 2106 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 2107 | "dev": true 2108 | }, 2109 | "http-call": { 2110 | "version": "5.3.0", 2111 | "resolved": "https://registry.npmjs.org/http-call/-/http-call-5.3.0.tgz", 2112 | "integrity": "sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==", 2113 | "dev": true, 2114 | "requires": { 2115 | "content-type": "^1.0.4", 2116 | "debug": "^4.1.1", 2117 | "is-retry-allowed": "^1.1.0", 2118 | "is-stream": "^2.0.0", 2119 | "parse-json": "^4.0.0", 2120 | "tunnel-agent": "^0.6.0" 2121 | }, 2122 | "dependencies": { 2123 | "is-stream": { 2124 | "version": "2.0.0", 2125 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", 2126 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", 2127 | "dev": true 2128 | } 2129 | } 2130 | }, 2131 | "hyperlinker": { 2132 | "version": "1.0.0", 2133 | "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", 2134 | "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==" 2135 | }, 2136 | "iconv-lite": { 2137 | "version": "0.4.24", 2138 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2139 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2140 | "dev": true, 2141 | "requires": { 2142 | "safer-buffer": ">= 2.1.2 < 3" 2143 | } 2144 | }, 2145 | "ieee754": { 2146 | "version": "1.1.13", 2147 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 2148 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", 2149 | "dev": true 2150 | }, 2151 | "ignore": { 2152 | "version": "5.1.8", 2153 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", 2154 | "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" 2155 | }, 2156 | "import-fresh": { 2157 | "version": "3.2.1", 2158 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 2159 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 2160 | "dev": true, 2161 | "requires": { 2162 | "parent-module": "^1.0.0", 2163 | "resolve-from": "^4.0.0" 2164 | } 2165 | }, 2166 | "import-modules": { 2167 | "version": "1.1.0", 2168 | "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-1.1.0.tgz", 2169 | "integrity": "sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw=", 2170 | "dev": true 2171 | }, 2172 | "imurmurhash": { 2173 | "version": "0.1.4", 2174 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2175 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 2176 | "dev": true 2177 | }, 2178 | "indent-string": { 2179 | "version": "4.0.0", 2180 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 2181 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" 2182 | }, 2183 | "inflight": { 2184 | "version": "1.0.6", 2185 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2186 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 2187 | "requires": { 2188 | "once": "^1.3.0", 2189 | "wrappy": "1" 2190 | } 2191 | }, 2192 | "inherits": { 2193 | "version": "2.0.4", 2194 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2195 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2196 | }, 2197 | "inquirer": { 2198 | "version": "6.5.2", 2199 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", 2200 | "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", 2201 | "dev": true, 2202 | "requires": { 2203 | "ansi-escapes": "^3.2.0", 2204 | "chalk": "^2.4.2", 2205 | "cli-cursor": "^2.1.0", 2206 | "cli-width": "^2.0.0", 2207 | "external-editor": "^3.0.3", 2208 | "figures": "^2.0.0", 2209 | "lodash": "^4.17.12", 2210 | "mute-stream": "0.0.7", 2211 | "run-async": "^2.2.0", 2212 | "rxjs": "^6.4.0", 2213 | "string-width": "^2.1.0", 2214 | "strip-ansi": "^5.1.0", 2215 | "through": "^2.3.6" 2216 | }, 2217 | "dependencies": { 2218 | "ansi-escapes": { 2219 | "version": "3.2.0", 2220 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 2221 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", 2222 | "dev": true 2223 | }, 2224 | "ansi-regex": { 2225 | "version": "3.0.0", 2226 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", 2227 | "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", 2228 | "dev": true 2229 | }, 2230 | "ansi-styles": { 2231 | "version": "3.2.1", 2232 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2233 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2234 | "dev": true, 2235 | "requires": { 2236 | "color-convert": "^1.9.0" 2237 | } 2238 | }, 2239 | "chalk": { 2240 | "version": "2.4.2", 2241 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2242 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2243 | "dev": true, 2244 | "requires": { 2245 | "ansi-styles": "^3.2.1", 2246 | "escape-string-regexp": "^1.0.5", 2247 | "supports-color": "^5.3.0" 2248 | } 2249 | }, 2250 | "color-convert": { 2251 | "version": "1.9.3", 2252 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2253 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2254 | "dev": true, 2255 | "requires": { 2256 | "color-name": "1.1.3" 2257 | } 2258 | }, 2259 | "color-name": { 2260 | "version": "1.1.3", 2261 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2262 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 2263 | "dev": true 2264 | }, 2265 | "escape-string-regexp": { 2266 | "version": "1.0.5", 2267 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2268 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 2269 | "dev": true 2270 | }, 2271 | "is-fullwidth-code-point": { 2272 | "version": "2.0.0", 2273 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2274 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2275 | "dev": true 2276 | }, 2277 | "string-width": { 2278 | "version": "2.1.1", 2279 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", 2280 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", 2281 | "dev": true, 2282 | "requires": { 2283 | "is-fullwidth-code-point": "^2.0.0", 2284 | "strip-ansi": "^4.0.0" 2285 | }, 2286 | "dependencies": { 2287 | "strip-ansi": { 2288 | "version": "4.0.0", 2289 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", 2290 | "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", 2291 | "dev": true, 2292 | "requires": { 2293 | "ansi-regex": "^3.0.0" 2294 | } 2295 | } 2296 | } 2297 | }, 2298 | "strip-ansi": { 2299 | "version": "5.2.0", 2300 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2301 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2302 | "dev": true, 2303 | "requires": { 2304 | "ansi-regex": "^4.1.0" 2305 | }, 2306 | "dependencies": { 2307 | "ansi-regex": { 2308 | "version": "4.1.0", 2309 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 2310 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 2311 | "dev": true 2312 | } 2313 | } 2314 | }, 2315 | "supports-color": { 2316 | "version": "5.5.0", 2317 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2318 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2319 | "dev": true, 2320 | "requires": { 2321 | "has-flag": "^3.0.0" 2322 | } 2323 | } 2324 | } 2325 | }, 2326 | "interpret": { 2327 | "version": "1.4.0", 2328 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", 2329 | "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" 2330 | }, 2331 | "is-arrayish": { 2332 | "version": "0.2.1", 2333 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 2334 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 2335 | "dev": true 2336 | }, 2337 | "is-docker": { 2338 | "version": "2.1.1", 2339 | "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", 2340 | "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==" 2341 | }, 2342 | "is-extglob": { 2343 | "version": "2.1.1", 2344 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2345 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 2346 | }, 2347 | "is-fullwidth-code-point": { 2348 | "version": "3.0.0", 2349 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 2350 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 2351 | }, 2352 | "is-glob": { 2353 | "version": "4.0.1", 2354 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 2355 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 2356 | "requires": { 2357 | "is-extglob": "^2.1.1" 2358 | } 2359 | }, 2360 | "is-number": { 2361 | "version": "7.0.0", 2362 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2363 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 2364 | }, 2365 | "is-plain-obj": { 2366 | "version": "2.1.0", 2367 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 2368 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 2369 | "dev": true 2370 | }, 2371 | "is-retry-allowed": { 2372 | "version": "1.2.0", 2373 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", 2374 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", 2375 | "dev": true 2376 | }, 2377 | "is-stream": { 2378 | "version": "1.1.0", 2379 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 2380 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 2381 | "dev": true 2382 | }, 2383 | "is-typedarray": { 2384 | "version": "1.0.0", 2385 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 2386 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", 2387 | "dev": true 2388 | }, 2389 | "is-wsl": { 2390 | "version": "2.2.0", 2391 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", 2392 | "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", 2393 | "requires": { 2394 | "is-docker": "^2.0.0" 2395 | } 2396 | }, 2397 | "isexe": { 2398 | "version": "2.0.0", 2399 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2400 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" 2401 | }, 2402 | "istanbul-lib-coverage": { 2403 | "version": "2.0.5", 2404 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", 2405 | "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", 2406 | "dev": true 2407 | }, 2408 | "istanbul-lib-hook": { 2409 | "version": "2.0.7", 2410 | "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", 2411 | "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", 2412 | "dev": true, 2413 | "requires": { 2414 | "append-transform": "^1.0.0" 2415 | } 2416 | }, 2417 | "istanbul-lib-instrument": { 2418 | "version": "3.3.0", 2419 | "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", 2420 | "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", 2421 | "dev": true, 2422 | "requires": { 2423 | "@babel/generator": "^7.4.0", 2424 | "@babel/parser": "^7.4.3", 2425 | "@babel/template": "^7.4.0", 2426 | "@babel/traverse": "^7.4.3", 2427 | "@babel/types": "^7.4.0", 2428 | "istanbul-lib-coverage": "^2.0.5", 2429 | "semver": "^6.0.0" 2430 | }, 2431 | "dependencies": { 2432 | "semver": { 2433 | "version": "6.3.0", 2434 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2435 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2436 | "dev": true 2437 | } 2438 | } 2439 | }, 2440 | "istanbul-lib-report": { 2441 | "version": "2.0.8", 2442 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", 2443 | "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", 2444 | "dev": true, 2445 | "requires": { 2446 | "istanbul-lib-coverage": "^2.0.5", 2447 | "make-dir": "^2.1.0", 2448 | "supports-color": "^6.1.0" 2449 | }, 2450 | "dependencies": { 2451 | "make-dir": { 2452 | "version": "2.1.0", 2453 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 2454 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 2455 | "dev": true, 2456 | "requires": { 2457 | "pify": "^4.0.1", 2458 | "semver": "^5.6.0" 2459 | } 2460 | }, 2461 | "semver": { 2462 | "version": "5.7.1", 2463 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2464 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2465 | "dev": true 2466 | }, 2467 | "supports-color": { 2468 | "version": "6.1.0", 2469 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 2470 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 2471 | "dev": true, 2472 | "requires": { 2473 | "has-flag": "^3.0.0" 2474 | } 2475 | } 2476 | } 2477 | }, 2478 | "istanbul-lib-source-maps": { 2479 | "version": "3.0.6", 2480 | "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", 2481 | "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", 2482 | "dev": true, 2483 | "requires": { 2484 | "debug": "^4.1.1", 2485 | "istanbul-lib-coverage": "^2.0.5", 2486 | "make-dir": "^2.1.0", 2487 | "rimraf": "^2.6.3", 2488 | "source-map": "^0.6.1" 2489 | }, 2490 | "dependencies": { 2491 | "make-dir": { 2492 | "version": "2.1.0", 2493 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 2494 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 2495 | "dev": true, 2496 | "requires": { 2497 | "pify": "^4.0.1", 2498 | "semver": "^5.6.0" 2499 | } 2500 | }, 2501 | "rimraf": { 2502 | "version": "2.7.1", 2503 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 2504 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 2505 | "dev": true, 2506 | "requires": { 2507 | "glob": "^7.1.3" 2508 | } 2509 | }, 2510 | "semver": { 2511 | "version": "5.7.1", 2512 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2513 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2514 | "dev": true 2515 | }, 2516 | "source-map": { 2517 | "version": "0.6.1", 2518 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2519 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2520 | "dev": true 2521 | } 2522 | } 2523 | }, 2524 | "istanbul-reports": { 2525 | "version": "2.2.7", 2526 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", 2527 | "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", 2528 | "dev": true, 2529 | "requires": { 2530 | "html-escaper": "^2.0.0" 2531 | } 2532 | }, 2533 | "js-tokens": { 2534 | "version": "4.0.0", 2535 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2536 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2537 | "dev": true 2538 | }, 2539 | "js-yaml": { 2540 | "version": "3.14.0", 2541 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", 2542 | "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", 2543 | "requires": { 2544 | "argparse": "^1.0.7", 2545 | "esprima": "^4.0.0" 2546 | } 2547 | }, 2548 | "jsesc": { 2549 | "version": "2.5.2", 2550 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 2551 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 2552 | "dev": true 2553 | }, 2554 | "json-parse-better-errors": { 2555 | "version": "1.0.2", 2556 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 2557 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 2558 | "dev": true 2559 | }, 2560 | "json-parse-even-better-errors": { 2561 | "version": "2.3.1", 2562 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 2563 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", 2564 | "dev": true 2565 | }, 2566 | "json-schema-traverse": { 2567 | "version": "0.4.1", 2568 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2569 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2570 | "dev": true 2571 | }, 2572 | "json-stable-stringify-without-jsonify": { 2573 | "version": "1.0.1", 2574 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2575 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 2576 | "dev": true 2577 | }, 2578 | "jsonfile": { 2579 | "version": "6.0.1", 2580 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", 2581 | "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", 2582 | "requires": { 2583 | "graceful-fs": "^4.1.6", 2584 | "universalify": "^1.0.0" 2585 | } 2586 | }, 2587 | "levn": { 2588 | "version": "0.3.0", 2589 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 2590 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 2591 | "dev": true, 2592 | "requires": { 2593 | "prelude-ls": "~1.1.2", 2594 | "type-check": "~0.3.2" 2595 | } 2596 | }, 2597 | "lines-and-columns": { 2598 | "version": "1.1.6", 2599 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", 2600 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", 2601 | "dev": true 2602 | }, 2603 | "load-json-file": { 2604 | "version": "6.2.0", 2605 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", 2606 | "integrity": "sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==", 2607 | "dev": true, 2608 | "requires": { 2609 | "graceful-fs": "^4.1.15", 2610 | "parse-json": "^5.0.0", 2611 | "strip-bom": "^4.0.0", 2612 | "type-fest": "^0.6.0" 2613 | }, 2614 | "dependencies": { 2615 | "parse-json": { 2616 | "version": "5.1.0", 2617 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", 2618 | "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", 2619 | "dev": true, 2620 | "requires": { 2621 | "@babel/code-frame": "^7.0.0", 2622 | "error-ex": "^1.3.1", 2623 | "json-parse-even-better-errors": "^2.3.0", 2624 | "lines-and-columns": "^1.1.6" 2625 | } 2626 | }, 2627 | "type-fest": { 2628 | "version": "0.6.0", 2629 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", 2630 | "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", 2631 | "dev": true 2632 | } 2633 | } 2634 | }, 2635 | "locate-path": { 2636 | "version": "5.0.0", 2637 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 2638 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 2639 | "dev": true, 2640 | "requires": { 2641 | "p-locate": "^4.1.0" 2642 | } 2643 | }, 2644 | "lodash": { 2645 | "version": "4.17.20", 2646 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 2647 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 2648 | }, 2649 | "lodash._reinterpolate": { 2650 | "version": "3.0.0", 2651 | "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 2652 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" 2653 | }, 2654 | "lodash.camelcase": { 2655 | "version": "4.3.0", 2656 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 2657 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", 2658 | "dev": true 2659 | }, 2660 | "lodash.flattendeep": { 2661 | "version": "4.4.0", 2662 | "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", 2663 | "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", 2664 | "dev": true 2665 | }, 2666 | "lodash.get": { 2667 | "version": "4.4.2", 2668 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 2669 | "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", 2670 | "dev": true 2671 | }, 2672 | "lodash.kebabcase": { 2673 | "version": "4.1.1", 2674 | "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", 2675 | "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", 2676 | "dev": true 2677 | }, 2678 | "lodash.snakecase": { 2679 | "version": "4.1.1", 2680 | "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", 2681 | "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=", 2682 | "dev": true 2683 | }, 2684 | "lodash.template": { 2685 | "version": "4.5.0", 2686 | "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", 2687 | "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", 2688 | "requires": { 2689 | "lodash._reinterpolate": "^3.0.0", 2690 | "lodash.templatesettings": "^4.0.0" 2691 | } 2692 | }, 2693 | "lodash.templatesettings": { 2694 | "version": "4.2.0", 2695 | "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", 2696 | "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", 2697 | "requires": { 2698 | "lodash._reinterpolate": "^3.0.0" 2699 | } 2700 | }, 2701 | "lodash.upperfirst": { 2702 | "version": "4.3.1", 2703 | "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", 2704 | "integrity": "sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984=", 2705 | "dev": true 2706 | }, 2707 | "lodash.zip": { 2708 | "version": "4.2.0", 2709 | "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", 2710 | "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", 2711 | "dev": true 2712 | }, 2713 | "lru-cache": { 2714 | "version": "4.1.5", 2715 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", 2716 | "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", 2717 | "dev": true, 2718 | "requires": { 2719 | "pseudomap": "^1.0.2", 2720 | "yallist": "^2.1.2" 2721 | } 2722 | }, 2723 | "make-dir": { 2724 | "version": "3.1.0", 2725 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 2726 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 2727 | "dev": true, 2728 | "requires": { 2729 | "semver": "^6.0.0" 2730 | }, 2731 | "dependencies": { 2732 | "semver": { 2733 | "version": "6.3.0", 2734 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2735 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 2736 | "dev": true 2737 | } 2738 | } 2739 | }, 2740 | "merge-source-map": { 2741 | "version": "1.1.0", 2742 | "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", 2743 | "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", 2744 | "dev": true, 2745 | "requires": { 2746 | "source-map": "^0.6.1" 2747 | }, 2748 | "dependencies": { 2749 | "source-map": { 2750 | "version": "0.6.1", 2751 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2752 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2753 | "dev": true 2754 | } 2755 | } 2756 | }, 2757 | "merge2": { 2758 | "version": "1.4.1", 2759 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2760 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 2761 | }, 2762 | "micromatch": { 2763 | "version": "4.0.2", 2764 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", 2765 | "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", 2766 | "requires": { 2767 | "braces": "^3.0.1", 2768 | "picomatch": "^2.0.5" 2769 | } 2770 | }, 2771 | "mimic-fn": { 2772 | "version": "1.2.0", 2773 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", 2774 | "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", 2775 | "dev": true 2776 | }, 2777 | "minimatch": { 2778 | "version": "3.0.4", 2779 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 2780 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 2781 | "requires": { 2782 | "brace-expansion": "^1.1.7" 2783 | } 2784 | }, 2785 | "minimist": { 2786 | "version": "1.2.5", 2787 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 2788 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 2789 | "dev": true 2790 | }, 2791 | "mkdirp": { 2792 | "version": "0.5.5", 2793 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 2794 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 2795 | "dev": true, 2796 | "requires": { 2797 | "minimist": "^1.2.5" 2798 | } 2799 | }, 2800 | "mkdirp-classic": { 2801 | "version": "0.5.3", 2802 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 2803 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", 2804 | "dev": true 2805 | }, 2806 | "mocha": { 2807 | "version": "5.2.0", 2808 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", 2809 | "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", 2810 | "dev": true, 2811 | "requires": { 2812 | "browser-stdout": "1.3.1", 2813 | "commander": "2.15.1", 2814 | "debug": "3.1.0", 2815 | "diff": "3.5.0", 2816 | "escape-string-regexp": "1.0.5", 2817 | "glob": "7.1.2", 2818 | "growl": "1.10.5", 2819 | "he": "1.1.1", 2820 | "minimatch": "3.0.4", 2821 | "mkdirp": "0.5.1", 2822 | "supports-color": "5.4.0" 2823 | }, 2824 | "dependencies": { 2825 | "debug": { 2826 | "version": "3.1.0", 2827 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 2828 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 2829 | "dev": true, 2830 | "requires": { 2831 | "ms": "2.0.0" 2832 | } 2833 | }, 2834 | "escape-string-regexp": { 2835 | "version": "1.0.5", 2836 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2837 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 2838 | "dev": true 2839 | }, 2840 | "glob": { 2841 | "version": "7.1.2", 2842 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 2843 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 2844 | "dev": true, 2845 | "requires": { 2846 | "fs.realpath": "^1.0.0", 2847 | "inflight": "^1.0.4", 2848 | "inherits": "2", 2849 | "minimatch": "^3.0.4", 2850 | "once": "^1.3.0", 2851 | "path-is-absolute": "^1.0.0" 2852 | } 2853 | }, 2854 | "minimist": { 2855 | "version": "0.0.8", 2856 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 2857 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 2858 | "dev": true 2859 | }, 2860 | "mkdirp": { 2861 | "version": "0.5.1", 2862 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2863 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 2864 | "dev": true, 2865 | "requires": { 2866 | "minimist": "0.0.8" 2867 | } 2868 | }, 2869 | "ms": { 2870 | "version": "2.0.0", 2871 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2872 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 2873 | "dev": true 2874 | }, 2875 | "supports-color": { 2876 | "version": "5.4.0", 2877 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 2878 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 2879 | "dev": true, 2880 | "requires": { 2881 | "has-flag": "^3.0.0" 2882 | } 2883 | } 2884 | } 2885 | }, 2886 | "mock-stdin": { 2887 | "version": "1.0.0", 2888 | "resolved": "https://registry.npmjs.org/mock-stdin/-/mock-stdin-1.0.0.tgz", 2889 | "integrity": "sha512-tukRdb9Beu27t6dN+XztSRHq9J0B/CoAOySGzHfn8UTfmqipA5yNT/sDUEyYdAV3Hpka6Wx6kOMxuObdOex60Q==", 2890 | "dev": true 2891 | }, 2892 | "ms": { 2893 | "version": "2.1.2", 2894 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2895 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 2896 | }, 2897 | "mute-stream": { 2898 | "version": "0.0.7", 2899 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", 2900 | "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", 2901 | "dev": true 2902 | }, 2903 | "natural-compare": { 2904 | "version": "1.4.0", 2905 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2906 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 2907 | "dev": true 2908 | }, 2909 | "natural-orderby": { 2910 | "version": "2.0.3", 2911 | "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-2.0.3.tgz", 2912 | "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==" 2913 | }, 2914 | "nested-error-stacks": { 2915 | "version": "2.1.0", 2916 | "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", 2917 | "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", 2918 | "dev": true 2919 | }, 2920 | "nice-try": { 2921 | "version": "1.0.5", 2922 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 2923 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" 2924 | }, 2925 | "normalize-package-data": { 2926 | "version": "2.5.0", 2927 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 2928 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 2929 | "dev": true, 2930 | "requires": { 2931 | "hosted-git-info": "^2.1.4", 2932 | "resolve": "^1.10.0", 2933 | "semver": "2 || 3 || 4 || 5", 2934 | "validate-npm-package-license": "^3.0.1" 2935 | }, 2936 | "dependencies": { 2937 | "semver": { 2938 | "version": "5.7.1", 2939 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2940 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2941 | "dev": true 2942 | } 2943 | } 2944 | }, 2945 | "npm-run-path": { 2946 | "version": "2.0.2", 2947 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", 2948 | "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", 2949 | "dev": true, 2950 | "requires": { 2951 | "path-key": "^2.0.0" 2952 | } 2953 | }, 2954 | "nyc": { 2955 | "version": "14.1.1", 2956 | "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz", 2957 | "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==", 2958 | "dev": true, 2959 | "requires": { 2960 | "archy": "^1.0.0", 2961 | "caching-transform": "^3.0.2", 2962 | "convert-source-map": "^1.6.0", 2963 | "cp-file": "^6.2.0", 2964 | "find-cache-dir": "^2.1.0", 2965 | "find-up": "^3.0.0", 2966 | "foreground-child": "^1.5.6", 2967 | "glob": "^7.1.3", 2968 | "istanbul-lib-coverage": "^2.0.5", 2969 | "istanbul-lib-hook": "^2.0.7", 2970 | "istanbul-lib-instrument": "^3.3.0", 2971 | "istanbul-lib-report": "^2.0.8", 2972 | "istanbul-lib-source-maps": "^3.0.6", 2973 | "istanbul-reports": "^2.2.4", 2974 | "js-yaml": "^3.13.1", 2975 | "make-dir": "^2.1.0", 2976 | "merge-source-map": "^1.1.0", 2977 | "resolve-from": "^4.0.0", 2978 | "rimraf": "^2.6.3", 2979 | "signal-exit": "^3.0.2", 2980 | "spawn-wrap": "^1.4.2", 2981 | "test-exclude": "^5.2.3", 2982 | "uuid": "^3.3.2", 2983 | "yargs": "^13.2.2", 2984 | "yargs-parser": "^13.0.0" 2985 | }, 2986 | "dependencies": { 2987 | "find-up": { 2988 | "version": "3.0.0", 2989 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 2990 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 2991 | "dev": true, 2992 | "requires": { 2993 | "locate-path": "^3.0.0" 2994 | } 2995 | }, 2996 | "locate-path": { 2997 | "version": "3.0.0", 2998 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 2999 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 3000 | "dev": true, 3001 | "requires": { 3002 | "p-locate": "^3.0.0", 3003 | "path-exists": "^3.0.0" 3004 | } 3005 | }, 3006 | "make-dir": { 3007 | "version": "2.1.0", 3008 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", 3009 | "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", 3010 | "dev": true, 3011 | "requires": { 3012 | "pify": "^4.0.1", 3013 | "semver": "^5.6.0" 3014 | } 3015 | }, 3016 | "p-locate": { 3017 | "version": "3.0.0", 3018 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 3019 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 3020 | "dev": true, 3021 | "requires": { 3022 | "p-limit": "^2.0.0" 3023 | } 3024 | }, 3025 | "path-exists": { 3026 | "version": "3.0.0", 3027 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 3028 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 3029 | "dev": true 3030 | }, 3031 | "rimraf": { 3032 | "version": "2.7.1", 3033 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 3034 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 3035 | "dev": true, 3036 | "requires": { 3037 | "glob": "^7.1.3" 3038 | } 3039 | }, 3040 | "semver": { 3041 | "version": "5.7.1", 3042 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3043 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 3044 | "dev": true 3045 | } 3046 | } 3047 | }, 3048 | "object-treeify": { 3049 | "version": "1.1.28", 3050 | "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.28.tgz", 3051 | "integrity": "sha512-FoBGZexpq9jJr6mDgV8wv711vreKyzRcw65TKeXzHh98+TNmPZfGYznpel3WceM869WsnSCyUuK46rPUG9+Rpg==" 3052 | }, 3053 | "once": { 3054 | "version": "1.4.0", 3055 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3056 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3057 | "requires": { 3058 | "wrappy": "1" 3059 | } 3060 | }, 3061 | "onetime": { 3062 | "version": "2.0.1", 3063 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", 3064 | "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", 3065 | "dev": true, 3066 | "requires": { 3067 | "mimic-fn": "^1.0.0" 3068 | } 3069 | }, 3070 | "optionator": { 3071 | "version": "0.8.3", 3072 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 3073 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 3074 | "dev": true, 3075 | "requires": { 3076 | "deep-is": "~0.1.3", 3077 | "fast-levenshtein": "~2.0.6", 3078 | "levn": "~0.3.0", 3079 | "prelude-ls": "~1.1.2", 3080 | "type-check": "~0.3.2", 3081 | "word-wrap": "~1.2.3" 3082 | } 3083 | }, 3084 | "os-homedir": { 3085 | "version": "1.0.2", 3086 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 3087 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 3088 | "dev": true 3089 | }, 3090 | "os-tmpdir": { 3091 | "version": "1.0.2", 3092 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 3093 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 3094 | "dev": true 3095 | }, 3096 | "p-finally": { 3097 | "version": "1.0.0", 3098 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 3099 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", 3100 | "dev": true 3101 | }, 3102 | "p-limit": { 3103 | "version": "2.3.0", 3104 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 3105 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 3106 | "dev": true, 3107 | "requires": { 3108 | "p-try": "^2.0.0" 3109 | } 3110 | }, 3111 | "p-locate": { 3112 | "version": "4.1.0", 3113 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 3114 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 3115 | "dev": true, 3116 | "requires": { 3117 | "p-limit": "^2.2.0" 3118 | } 3119 | }, 3120 | "p-try": { 3121 | "version": "2.2.0", 3122 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 3123 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", 3124 | "dev": true 3125 | }, 3126 | "package-hash": { 3127 | "version": "3.0.0", 3128 | "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", 3129 | "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", 3130 | "dev": true, 3131 | "requires": { 3132 | "graceful-fs": "^4.1.15", 3133 | "hasha": "^3.0.0", 3134 | "lodash.flattendeep": "^4.4.0", 3135 | "release-zalgo": "^1.0.0" 3136 | } 3137 | }, 3138 | "parent-module": { 3139 | "version": "1.0.1", 3140 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3141 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3142 | "dev": true, 3143 | "requires": { 3144 | "callsites": "^3.0.0" 3145 | } 3146 | }, 3147 | "parse-json": { 3148 | "version": "4.0.0", 3149 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 3150 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 3151 | "dev": true, 3152 | "requires": { 3153 | "error-ex": "^1.3.1", 3154 | "json-parse-better-errors": "^1.0.1" 3155 | } 3156 | }, 3157 | "password-prompt": { 3158 | "version": "1.1.2", 3159 | "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", 3160 | "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", 3161 | "requires": { 3162 | "ansi-escapes": "^3.1.0", 3163 | "cross-spawn": "^6.0.5" 3164 | }, 3165 | "dependencies": { 3166 | "ansi-escapes": { 3167 | "version": "3.2.0", 3168 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", 3169 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" 3170 | } 3171 | } 3172 | }, 3173 | "path-exists": { 3174 | "version": "4.0.0", 3175 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3176 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3177 | "dev": true 3178 | }, 3179 | "path-is-absolute": { 3180 | "version": "1.0.1", 3181 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3182 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 3183 | }, 3184 | "path-is-inside": { 3185 | "version": "1.0.2", 3186 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", 3187 | "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", 3188 | "dev": true 3189 | }, 3190 | "path-key": { 3191 | "version": "2.0.1", 3192 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 3193 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" 3194 | }, 3195 | "path-parse": { 3196 | "version": "1.0.6", 3197 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 3198 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" 3199 | }, 3200 | "path-type": { 3201 | "version": "4.0.0", 3202 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 3203 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 3204 | }, 3205 | "pathval": { 3206 | "version": "1.1.0", 3207 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 3208 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", 3209 | "dev": true 3210 | }, 3211 | "picomatch": { 3212 | "version": "2.2.2", 3213 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", 3214 | "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" 3215 | }, 3216 | "pify": { 3217 | "version": "4.0.1", 3218 | "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", 3219 | "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", 3220 | "dev": true 3221 | }, 3222 | "pkg-dir": { 3223 | "version": "4.2.0", 3224 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 3225 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 3226 | "dev": true, 3227 | "requires": { 3228 | "find-up": "^4.0.0" 3229 | } 3230 | }, 3231 | "prelude-ls": { 3232 | "version": "1.1.2", 3233 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 3234 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 3235 | "dev": true 3236 | }, 3237 | "progress": { 3238 | "version": "2.0.3", 3239 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 3240 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 3241 | "dev": true 3242 | }, 3243 | "pseudomap": { 3244 | "version": "1.0.2", 3245 | "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", 3246 | "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", 3247 | "dev": true 3248 | }, 3249 | "pump": { 3250 | "version": "3.0.0", 3251 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 3252 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 3253 | "dev": true, 3254 | "requires": { 3255 | "end-of-stream": "^1.1.0", 3256 | "once": "^1.3.1" 3257 | } 3258 | }, 3259 | "punycode": { 3260 | "version": "2.1.1", 3261 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3262 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3263 | "dev": true 3264 | }, 3265 | "qqjs": { 3266 | "version": "0.3.11", 3267 | "resolved": "https://registry.npmjs.org/qqjs/-/qqjs-0.3.11.tgz", 3268 | "integrity": "sha512-pB2X5AduTl78J+xRSxQiEmga1jQV0j43jOPs/MTgTLApGFEOn6NgdE2dEjp7nvDtjkIOZbvFIojAiYUx6ep3zg==", 3269 | "dev": true, 3270 | "requires": { 3271 | "chalk": "^2.4.1", 3272 | "debug": "^4.1.1", 3273 | "execa": "^0.10.0", 3274 | "fs-extra": "^6.0.1", 3275 | "get-stream": "^5.1.0", 3276 | "glob": "^7.1.2", 3277 | "globby": "^10.0.1", 3278 | "http-call": "^5.1.2", 3279 | "load-json-file": "^6.2.0", 3280 | "pkg-dir": "^4.2.0", 3281 | "tar-fs": "^2.0.0", 3282 | "tmp": "^0.1.0", 3283 | "write-json-file": "^4.1.1" 3284 | }, 3285 | "dependencies": { 3286 | "ansi-styles": { 3287 | "version": "3.2.1", 3288 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 3289 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 3290 | "dev": true, 3291 | "requires": { 3292 | "color-convert": "^1.9.0" 3293 | } 3294 | }, 3295 | "chalk": { 3296 | "version": "2.4.2", 3297 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 3298 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 3299 | "dev": true, 3300 | "requires": { 3301 | "ansi-styles": "^3.2.1", 3302 | "escape-string-regexp": "^1.0.5", 3303 | "supports-color": "^5.3.0" 3304 | } 3305 | }, 3306 | "color-convert": { 3307 | "version": "1.9.3", 3308 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 3309 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 3310 | "dev": true, 3311 | "requires": { 3312 | "color-name": "1.1.3" 3313 | } 3314 | }, 3315 | "color-name": { 3316 | "version": "1.1.3", 3317 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 3318 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 3319 | "dev": true 3320 | }, 3321 | "escape-string-regexp": { 3322 | "version": "1.0.5", 3323 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 3324 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 3325 | "dev": true 3326 | }, 3327 | "fs-extra": { 3328 | "version": "6.0.1", 3329 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-6.0.1.tgz", 3330 | "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==", 3331 | "dev": true, 3332 | "requires": { 3333 | "graceful-fs": "^4.1.2", 3334 | "jsonfile": "^4.0.0", 3335 | "universalify": "^0.1.0" 3336 | } 3337 | }, 3338 | "globby": { 3339 | "version": "10.0.2", 3340 | "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", 3341 | "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", 3342 | "dev": true, 3343 | "requires": { 3344 | "@types/glob": "^7.1.1", 3345 | "array-union": "^2.1.0", 3346 | "dir-glob": "^3.0.1", 3347 | "fast-glob": "^3.0.3", 3348 | "glob": "^7.1.3", 3349 | "ignore": "^5.1.1", 3350 | "merge2": "^1.2.3", 3351 | "slash": "^3.0.0" 3352 | } 3353 | }, 3354 | "jsonfile": { 3355 | "version": "4.0.0", 3356 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 3357 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 3358 | "dev": true, 3359 | "requires": { 3360 | "graceful-fs": "^4.1.6" 3361 | } 3362 | }, 3363 | "supports-color": { 3364 | "version": "5.5.0", 3365 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 3366 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 3367 | "dev": true, 3368 | "requires": { 3369 | "has-flag": "^3.0.0" 3370 | } 3371 | }, 3372 | "universalify": { 3373 | "version": "0.1.2", 3374 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 3375 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 3376 | "dev": true 3377 | } 3378 | } 3379 | }, 3380 | "ramda": { 3381 | "version": "0.26.1", 3382 | "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", 3383 | "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", 3384 | "dev": true 3385 | }, 3386 | "read-pkg": { 3387 | "version": "3.0.0", 3388 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 3389 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 3390 | "dev": true, 3391 | "requires": { 3392 | "load-json-file": "^4.0.0", 3393 | "normalize-package-data": "^2.3.2", 3394 | "path-type": "^3.0.0" 3395 | }, 3396 | "dependencies": { 3397 | "load-json-file": { 3398 | "version": "4.0.0", 3399 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 3400 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 3401 | "dev": true, 3402 | "requires": { 3403 | "graceful-fs": "^4.1.2", 3404 | "parse-json": "^4.0.0", 3405 | "pify": "^3.0.0", 3406 | "strip-bom": "^3.0.0" 3407 | } 3408 | }, 3409 | "path-type": { 3410 | "version": "3.0.0", 3411 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 3412 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 3413 | "dev": true, 3414 | "requires": { 3415 | "pify": "^3.0.0" 3416 | } 3417 | }, 3418 | "pify": { 3419 | "version": "3.0.0", 3420 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 3421 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 3422 | "dev": true 3423 | }, 3424 | "strip-bom": { 3425 | "version": "3.0.0", 3426 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 3427 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 3428 | "dev": true 3429 | } 3430 | } 3431 | }, 3432 | "read-pkg-up": { 3433 | "version": "4.0.0", 3434 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", 3435 | "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", 3436 | "dev": true, 3437 | "requires": { 3438 | "find-up": "^3.0.0", 3439 | "read-pkg": "^3.0.0" 3440 | }, 3441 | "dependencies": { 3442 | "find-up": { 3443 | "version": "3.0.0", 3444 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 3445 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 3446 | "dev": true, 3447 | "requires": { 3448 | "locate-path": "^3.0.0" 3449 | } 3450 | }, 3451 | "locate-path": { 3452 | "version": "3.0.0", 3453 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 3454 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 3455 | "dev": true, 3456 | "requires": { 3457 | "p-locate": "^3.0.0", 3458 | "path-exists": "^3.0.0" 3459 | } 3460 | }, 3461 | "p-locate": { 3462 | "version": "3.0.0", 3463 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 3464 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 3465 | "dev": true, 3466 | "requires": { 3467 | "p-limit": "^2.0.0" 3468 | } 3469 | }, 3470 | "path-exists": { 3471 | "version": "3.0.0", 3472 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 3473 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 3474 | "dev": true 3475 | } 3476 | } 3477 | }, 3478 | "readable-stream": { 3479 | "version": "3.6.0", 3480 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 3481 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 3482 | "dev": true, 3483 | "requires": { 3484 | "inherits": "^2.0.3", 3485 | "string_decoder": "^1.1.1", 3486 | "util-deprecate": "^1.0.1" 3487 | } 3488 | }, 3489 | "rechoir": { 3490 | "version": "0.6.2", 3491 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 3492 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 3493 | "requires": { 3494 | "resolve": "^1.1.6" 3495 | } 3496 | }, 3497 | "redeyed": { 3498 | "version": "2.1.1", 3499 | "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", 3500 | "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=", 3501 | "requires": { 3502 | "esprima": "~4.0.0" 3503 | } 3504 | }, 3505 | "regexpp": { 3506 | "version": "2.0.1", 3507 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 3508 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 3509 | "dev": true 3510 | }, 3511 | "release-zalgo": { 3512 | "version": "1.0.0", 3513 | "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", 3514 | "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", 3515 | "dev": true, 3516 | "requires": { 3517 | "es6-error": "^4.0.1" 3518 | } 3519 | }, 3520 | "require-directory": { 3521 | "version": "2.1.1", 3522 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3523 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 3524 | "dev": true 3525 | }, 3526 | "require-main-filename": { 3527 | "version": "2.0.0", 3528 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 3529 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", 3530 | "dev": true 3531 | }, 3532 | "resolve": { 3533 | "version": "1.17.0", 3534 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", 3535 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", 3536 | "requires": { 3537 | "path-parse": "^1.0.6" 3538 | } 3539 | }, 3540 | "resolve-from": { 3541 | "version": "4.0.0", 3542 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3543 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3544 | "dev": true 3545 | }, 3546 | "restore-cursor": { 3547 | "version": "2.0.0", 3548 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", 3549 | "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", 3550 | "dev": true, 3551 | "requires": { 3552 | "onetime": "^2.0.0", 3553 | "signal-exit": "^3.0.2" 3554 | } 3555 | }, 3556 | "ret": { 3557 | "version": "0.1.15", 3558 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 3559 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 3560 | "dev": true 3561 | }, 3562 | "reusify": { 3563 | "version": "1.0.4", 3564 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 3565 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 3566 | }, 3567 | "rimraf": { 3568 | "version": "3.0.2", 3569 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 3570 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 3571 | "dev": true, 3572 | "requires": { 3573 | "glob": "^7.1.3" 3574 | } 3575 | }, 3576 | "run-async": { 3577 | "version": "2.4.1", 3578 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 3579 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 3580 | "dev": true 3581 | }, 3582 | "run-parallel": { 3583 | "version": "1.1.9", 3584 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", 3585 | "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" 3586 | }, 3587 | "rxjs": { 3588 | "version": "6.6.3", 3589 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", 3590 | "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", 3591 | "dev": true, 3592 | "requires": { 3593 | "tslib": "^1.9.0" 3594 | } 3595 | }, 3596 | "safe-buffer": { 3597 | "version": "5.2.1", 3598 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3599 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3600 | "dev": true 3601 | }, 3602 | "safe-regex": { 3603 | "version": "1.1.0", 3604 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 3605 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 3606 | "dev": true, 3607 | "requires": { 3608 | "ret": "~0.1.10" 3609 | } 3610 | }, 3611 | "safer-buffer": { 3612 | "version": "2.1.2", 3613 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3614 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3615 | "dev": true 3616 | }, 3617 | "semver": { 3618 | "version": "7.3.2", 3619 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", 3620 | "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" 3621 | }, 3622 | "set-blocking": { 3623 | "version": "2.0.0", 3624 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 3625 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 3626 | "dev": true 3627 | }, 3628 | "shebang-command": { 3629 | "version": "1.2.0", 3630 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3631 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3632 | "requires": { 3633 | "shebang-regex": "^1.0.0" 3634 | } 3635 | }, 3636 | "shebang-regex": { 3637 | "version": "1.0.0", 3638 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3639 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" 3640 | }, 3641 | "shelljs": { 3642 | "version": "0.8.4", 3643 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", 3644 | "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", 3645 | "requires": { 3646 | "glob": "^7.0.0", 3647 | "interpret": "^1.0.0", 3648 | "rechoir": "^0.6.2" 3649 | } 3650 | }, 3651 | "signal-exit": { 3652 | "version": "3.0.3", 3653 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 3654 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 3655 | "dev": true 3656 | }, 3657 | "slash": { 3658 | "version": "3.0.0", 3659 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 3660 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" 3661 | }, 3662 | "slice-ansi": { 3663 | "version": "2.1.0", 3664 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 3665 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 3666 | "dev": true, 3667 | "requires": { 3668 | "ansi-styles": "^3.2.0", 3669 | "astral-regex": "^1.0.0", 3670 | "is-fullwidth-code-point": "^2.0.0" 3671 | }, 3672 | "dependencies": { 3673 | "ansi-styles": { 3674 | "version": "3.2.1", 3675 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 3676 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 3677 | "dev": true, 3678 | "requires": { 3679 | "color-convert": "^1.9.0" 3680 | } 3681 | }, 3682 | "color-convert": { 3683 | "version": "1.9.3", 3684 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 3685 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 3686 | "dev": true, 3687 | "requires": { 3688 | "color-name": "1.1.3" 3689 | } 3690 | }, 3691 | "color-name": { 3692 | "version": "1.1.3", 3693 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 3694 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 3695 | "dev": true 3696 | }, 3697 | "is-fullwidth-code-point": { 3698 | "version": "2.0.0", 3699 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 3700 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 3701 | "dev": true 3702 | } 3703 | } 3704 | }, 3705 | "sort-keys": { 3706 | "version": "4.0.0", 3707 | "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-4.0.0.tgz", 3708 | "integrity": "sha512-hlJLzrn/VN49uyNkZ8+9b+0q9DjmmYcYOnbMQtpkLrYpPwRApDPZfmqbUfJnAA3sb/nRib+nDot7Zi/1ER1fuA==", 3709 | "dev": true, 3710 | "requires": { 3711 | "is-plain-obj": "^2.0.0" 3712 | } 3713 | }, 3714 | "source-map": { 3715 | "version": "0.5.7", 3716 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 3717 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 3718 | "dev": true 3719 | }, 3720 | "spawn-wrap": { 3721 | "version": "1.4.3", 3722 | "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz", 3723 | "integrity": "sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==", 3724 | "dev": true, 3725 | "requires": { 3726 | "foreground-child": "^1.5.6", 3727 | "mkdirp": "^0.5.0", 3728 | "os-homedir": "^1.0.1", 3729 | "rimraf": "^2.6.2", 3730 | "signal-exit": "^3.0.2", 3731 | "which": "^1.3.0" 3732 | }, 3733 | "dependencies": { 3734 | "rimraf": { 3735 | "version": "2.7.1", 3736 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 3737 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 3738 | "dev": true, 3739 | "requires": { 3740 | "glob": "^7.1.3" 3741 | } 3742 | } 3743 | } 3744 | }, 3745 | "spdx-correct": { 3746 | "version": "3.1.1", 3747 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", 3748 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", 3749 | "dev": true, 3750 | "requires": { 3751 | "spdx-expression-parse": "^3.0.0", 3752 | "spdx-license-ids": "^3.0.0" 3753 | } 3754 | }, 3755 | "spdx-exceptions": { 3756 | "version": "2.3.0", 3757 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", 3758 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", 3759 | "dev": true 3760 | }, 3761 | "spdx-expression-parse": { 3762 | "version": "3.0.1", 3763 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 3764 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 3765 | "dev": true, 3766 | "requires": { 3767 | "spdx-exceptions": "^2.1.0", 3768 | "spdx-license-ids": "^3.0.0" 3769 | } 3770 | }, 3771 | "spdx-license-ids": { 3772 | "version": "3.0.6", 3773 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", 3774 | "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", 3775 | "dev": true 3776 | }, 3777 | "sprintf-js": { 3778 | "version": "1.0.3", 3779 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3780 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 3781 | }, 3782 | "stdout-stderr": { 3783 | "version": "0.1.13", 3784 | "resolved": "https://registry.npmjs.org/stdout-stderr/-/stdout-stderr-0.1.13.tgz", 3785 | "integrity": "sha512-Xnt9/HHHYfjZ7NeQLvuQDyL1LnbsbddgMFKCuaQKwGCdJm8LnstZIXop+uOY36UR1UXXoHXfMbC1KlVdVd2JLA==", 3786 | "dev": true, 3787 | "requires": { 3788 | "debug": "^4.1.1", 3789 | "strip-ansi": "^6.0.0" 3790 | } 3791 | }, 3792 | "string-width": { 3793 | "version": "4.2.0", 3794 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 3795 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 3796 | "requires": { 3797 | "emoji-regex": "^8.0.0", 3798 | "is-fullwidth-code-point": "^3.0.0", 3799 | "strip-ansi": "^6.0.0" 3800 | } 3801 | }, 3802 | "string_decoder": { 3803 | "version": "1.3.0", 3804 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 3805 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 3806 | "dev": true, 3807 | "requires": { 3808 | "safe-buffer": "~5.2.0" 3809 | } 3810 | }, 3811 | "strip-ansi": { 3812 | "version": "6.0.0", 3813 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 3814 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 3815 | "requires": { 3816 | "ansi-regex": "^5.0.0" 3817 | } 3818 | }, 3819 | "strip-bom": { 3820 | "version": "4.0.0", 3821 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", 3822 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", 3823 | "dev": true 3824 | }, 3825 | "strip-eof": { 3826 | "version": "1.0.0", 3827 | "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", 3828 | "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", 3829 | "dev": true 3830 | }, 3831 | "strip-json-comments": { 3832 | "version": "2.0.1", 3833 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 3834 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 3835 | "dev": true 3836 | }, 3837 | "supports-color": { 3838 | "version": "7.2.0", 3839 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3840 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3841 | "requires": { 3842 | "has-flag": "^4.0.0" 3843 | }, 3844 | "dependencies": { 3845 | "has-flag": { 3846 | "version": "4.0.0", 3847 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3848 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 3849 | } 3850 | } 3851 | }, 3852 | "supports-hyperlinks": { 3853 | "version": "2.1.0", 3854 | "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz", 3855 | "integrity": "sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==", 3856 | "requires": { 3857 | "has-flag": "^4.0.0", 3858 | "supports-color": "^7.0.0" 3859 | }, 3860 | "dependencies": { 3861 | "has-flag": { 3862 | "version": "4.0.0", 3863 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3864 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 3865 | }, 3866 | "supports-color": { 3867 | "version": "7.2.0", 3868 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3869 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3870 | "requires": { 3871 | "has-flag": "^4.0.0" 3872 | } 3873 | } 3874 | } 3875 | }, 3876 | "table": { 3877 | "version": "5.4.6", 3878 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 3879 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 3880 | "dev": true, 3881 | "requires": { 3882 | "ajv": "^6.10.2", 3883 | "lodash": "^4.17.14", 3884 | "slice-ansi": "^2.1.0", 3885 | "string-width": "^3.0.0" 3886 | }, 3887 | "dependencies": { 3888 | "ansi-regex": { 3889 | "version": "4.1.0", 3890 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 3891 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 3892 | "dev": true 3893 | }, 3894 | "emoji-regex": { 3895 | "version": "7.0.3", 3896 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 3897 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 3898 | "dev": true 3899 | }, 3900 | "is-fullwidth-code-point": { 3901 | "version": "2.0.0", 3902 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 3903 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 3904 | "dev": true 3905 | }, 3906 | "string-width": { 3907 | "version": "3.1.0", 3908 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 3909 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 3910 | "dev": true, 3911 | "requires": { 3912 | "emoji-regex": "^7.0.1", 3913 | "is-fullwidth-code-point": "^2.0.0", 3914 | "strip-ansi": "^5.1.0" 3915 | } 3916 | }, 3917 | "strip-ansi": { 3918 | "version": "5.2.0", 3919 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3920 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3921 | "dev": true, 3922 | "requires": { 3923 | "ansi-regex": "^4.1.0" 3924 | } 3925 | } 3926 | } 3927 | }, 3928 | "tar-fs": { 3929 | "version": "2.1.0", 3930 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz", 3931 | "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==", 3932 | "dev": true, 3933 | "requires": { 3934 | "chownr": "^1.1.1", 3935 | "mkdirp-classic": "^0.5.2", 3936 | "pump": "^3.0.0", 3937 | "tar-stream": "^2.0.0" 3938 | } 3939 | }, 3940 | "tar-stream": { 3941 | "version": "2.1.4", 3942 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", 3943 | "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", 3944 | "dev": true, 3945 | "requires": { 3946 | "bl": "^4.0.3", 3947 | "end-of-stream": "^1.4.1", 3948 | "fs-constants": "^1.0.0", 3949 | "inherits": "^2.0.3", 3950 | "readable-stream": "^3.1.1" 3951 | } 3952 | }, 3953 | "test-exclude": { 3954 | "version": "5.2.3", 3955 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", 3956 | "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", 3957 | "dev": true, 3958 | "requires": { 3959 | "glob": "^7.1.3", 3960 | "minimatch": "^3.0.4", 3961 | "read-pkg-up": "^4.0.0", 3962 | "require-main-filename": "^2.0.0" 3963 | } 3964 | }, 3965 | "text-table": { 3966 | "version": "0.2.0", 3967 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 3968 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 3969 | "dev": true 3970 | }, 3971 | "through": { 3972 | "version": "2.3.8", 3973 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 3974 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 3975 | "dev": true 3976 | }, 3977 | "tmp": { 3978 | "version": "0.1.0", 3979 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", 3980 | "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", 3981 | "dev": true, 3982 | "requires": { 3983 | "rimraf": "^2.6.3" 3984 | }, 3985 | "dependencies": { 3986 | "rimraf": { 3987 | "version": "2.7.1", 3988 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 3989 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 3990 | "dev": true, 3991 | "requires": { 3992 | "glob": "^7.1.3" 3993 | } 3994 | } 3995 | } 3996 | }, 3997 | "to-fast-properties": { 3998 | "version": "2.0.0", 3999 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 4000 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 4001 | "dev": true 4002 | }, 4003 | "to-regex-range": { 4004 | "version": "5.0.1", 4005 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 4006 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 4007 | "requires": { 4008 | "is-number": "^7.0.0" 4009 | } 4010 | }, 4011 | "tslib": { 4012 | "version": "1.13.0", 4013 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", 4014 | "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" 4015 | }, 4016 | "tunnel-agent": { 4017 | "version": "0.6.0", 4018 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 4019 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 4020 | "dev": true, 4021 | "requires": { 4022 | "safe-buffer": "^5.0.1" 4023 | } 4024 | }, 4025 | "type-check": { 4026 | "version": "0.3.2", 4027 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 4028 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 4029 | "dev": true, 4030 | "requires": { 4031 | "prelude-ls": "~1.1.2" 4032 | } 4033 | }, 4034 | "type-detect": { 4035 | "version": "4.0.8", 4036 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 4037 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 4038 | "dev": true 4039 | }, 4040 | "type-fest": { 4041 | "version": "0.11.0", 4042 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", 4043 | "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==" 4044 | }, 4045 | "typedarray-to-buffer": { 4046 | "version": "3.1.5", 4047 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 4048 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 4049 | "dev": true, 4050 | "requires": { 4051 | "is-typedarray": "^1.0.0" 4052 | } 4053 | }, 4054 | "universalify": { 4055 | "version": "1.0.0", 4056 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", 4057 | "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" 4058 | }, 4059 | "uri-js": { 4060 | "version": "4.4.0", 4061 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", 4062 | "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", 4063 | "dev": true, 4064 | "requires": { 4065 | "punycode": "^2.1.0" 4066 | } 4067 | }, 4068 | "util-deprecate": { 4069 | "version": "1.0.2", 4070 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 4071 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 4072 | "dev": true 4073 | }, 4074 | "uuid": { 4075 | "version": "3.4.0", 4076 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", 4077 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", 4078 | "dev": true 4079 | }, 4080 | "validate-npm-package-license": { 4081 | "version": "3.0.4", 4082 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 4083 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 4084 | "dev": true, 4085 | "requires": { 4086 | "spdx-correct": "^3.0.0", 4087 | "spdx-expression-parse": "^3.0.0" 4088 | } 4089 | }, 4090 | "which": { 4091 | "version": "1.3.1", 4092 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 4093 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 4094 | "requires": { 4095 | "isexe": "^2.0.0" 4096 | } 4097 | }, 4098 | "which-module": { 4099 | "version": "2.0.0", 4100 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 4101 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", 4102 | "dev": true 4103 | }, 4104 | "widest-line": { 4105 | "version": "3.1.0", 4106 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 4107 | "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 4108 | "requires": { 4109 | "string-width": "^4.0.0" 4110 | } 4111 | }, 4112 | "word-wrap": { 4113 | "version": "1.2.3", 4114 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 4115 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 4116 | "dev": true 4117 | }, 4118 | "wrap-ansi": { 4119 | "version": "7.0.0", 4120 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 4121 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 4122 | "requires": { 4123 | "ansi-styles": "^4.0.0", 4124 | "string-width": "^4.1.0", 4125 | "strip-ansi": "^6.0.0" 4126 | } 4127 | }, 4128 | "wrappy": { 4129 | "version": "1.0.2", 4130 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4131 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 4132 | }, 4133 | "write": { 4134 | "version": "1.0.3", 4135 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 4136 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 4137 | "dev": true, 4138 | "requires": { 4139 | "mkdirp": "^0.5.1" 4140 | } 4141 | }, 4142 | "write-file-atomic": { 4143 | "version": "3.0.3", 4144 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 4145 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 4146 | "dev": true, 4147 | "requires": { 4148 | "imurmurhash": "^0.1.4", 4149 | "is-typedarray": "^1.0.0", 4150 | "signal-exit": "^3.0.2", 4151 | "typedarray-to-buffer": "^3.1.5" 4152 | } 4153 | }, 4154 | "write-json-file": { 4155 | "version": "4.3.0", 4156 | "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-4.3.0.tgz", 4157 | "integrity": "sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==", 4158 | "dev": true, 4159 | "requires": { 4160 | "detect-indent": "^6.0.0", 4161 | "graceful-fs": "^4.1.15", 4162 | "is-plain-obj": "^2.0.0", 4163 | "make-dir": "^3.0.0", 4164 | "sort-keys": "^4.0.0", 4165 | "write-file-atomic": "^3.0.0" 4166 | } 4167 | }, 4168 | "y18n": { 4169 | "version": "4.0.0", 4170 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", 4171 | "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", 4172 | "dev": true 4173 | }, 4174 | "yallist": { 4175 | "version": "2.1.2", 4176 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", 4177 | "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", 4178 | "dev": true 4179 | }, 4180 | "yargs": { 4181 | "version": "13.3.2", 4182 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", 4183 | "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", 4184 | "dev": true, 4185 | "requires": { 4186 | "cliui": "^5.0.0", 4187 | "find-up": "^3.0.0", 4188 | "get-caller-file": "^2.0.1", 4189 | "require-directory": "^2.1.1", 4190 | "require-main-filename": "^2.0.0", 4191 | "set-blocking": "^2.0.0", 4192 | "string-width": "^3.0.0", 4193 | "which-module": "^2.0.0", 4194 | "y18n": "^4.0.0", 4195 | "yargs-parser": "^13.1.2" 4196 | }, 4197 | "dependencies": { 4198 | "ansi-regex": { 4199 | "version": "4.1.0", 4200 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 4201 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 4202 | "dev": true 4203 | }, 4204 | "emoji-regex": { 4205 | "version": "7.0.3", 4206 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 4207 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 4208 | "dev": true 4209 | }, 4210 | "find-up": { 4211 | "version": "3.0.0", 4212 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 4213 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 4214 | "dev": true, 4215 | "requires": { 4216 | "locate-path": "^3.0.0" 4217 | } 4218 | }, 4219 | "is-fullwidth-code-point": { 4220 | "version": "2.0.0", 4221 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 4222 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 4223 | "dev": true 4224 | }, 4225 | "locate-path": { 4226 | "version": "3.0.0", 4227 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 4228 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 4229 | "dev": true, 4230 | "requires": { 4231 | "p-locate": "^3.0.0", 4232 | "path-exists": "^3.0.0" 4233 | } 4234 | }, 4235 | "p-locate": { 4236 | "version": "3.0.0", 4237 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 4238 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 4239 | "dev": true, 4240 | "requires": { 4241 | "p-limit": "^2.0.0" 4242 | } 4243 | }, 4244 | "path-exists": { 4245 | "version": "3.0.0", 4246 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 4247 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", 4248 | "dev": true 4249 | }, 4250 | "string-width": { 4251 | "version": "3.1.0", 4252 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 4253 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 4254 | "dev": true, 4255 | "requires": { 4256 | "emoji-regex": "^7.0.1", 4257 | "is-fullwidth-code-point": "^2.0.0", 4258 | "strip-ansi": "^5.1.0" 4259 | } 4260 | }, 4261 | "strip-ansi": { 4262 | "version": "5.2.0", 4263 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 4264 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 4265 | "dev": true, 4266 | "requires": { 4267 | "ansi-regex": "^4.1.0" 4268 | } 4269 | } 4270 | } 4271 | }, 4272 | "yargs-parser": { 4273 | "version": "13.1.2", 4274 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", 4275 | "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", 4276 | "dev": true, 4277 | "requires": { 4278 | "camelcase": "^5.0.0", 4279 | "decamelize": "^1.2.0" 4280 | } 4281 | } 4282 | } 4283 | } 4284 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "easy-android-emulator", 3 | "description": "Create and run android emulators in a quick & easy manner with just device name/model.", 4 | "version": "1.1.0", 5 | "author": "Chrisvin Jem Peniel", 6 | "bin": { 7 | "emulate": "./bin/run" 8 | }, 9 | "bugs": "https://github.com/Chrisvin/EasyAndroidEmulator/issues", 10 | "dependencies": { 11 | "@oclif/command": "^1.8.0", 12 | "@oclif/config": "^1.17.0", 13 | "@oclif/plugin-help": "^3.2.0", 14 | "chalk": "^4.1.0", 15 | "cli-ux": "^5.5.0", 16 | "shelljs": "^0.8.4" 17 | }, 18 | "devDependencies": { 19 | "@oclif/dev-cli": "^1.22.2", 20 | "@oclif/test": "^1.2.7", 21 | "chai": "^4.2.0", 22 | "eslint": "^5.16.0", 23 | "eslint-config-oclif": "^3.1.0", 24 | "mocha": "^5.2.0", 25 | "nyc": "^14.1.1", 26 | "rimraf": "^3.0.2" 27 | }, 28 | "engines": { 29 | "node": ">=8.0.0" 30 | }, 31 | "files": [ 32 | "/bin", 33 | "/src", 34 | "/data/devices.csv" 35 | ], 36 | "homepage": "https://github.com/Chrisvin/EasyAndroidEmulator", 37 | "keywords": [ 38 | "oclif" 39 | ], 40 | "license": "MIT", 41 | "main": "src/index.js", 42 | "oclif": { 43 | "bin": "emulate" 44 | }, 45 | "repository": "Chrisvin/EasyAndroidEmulator", 46 | "scripts": { 47 | "posttest": "eslint .", 48 | "prepack": "oclif-dev readme", 49 | "test": "nyc mocha --forbid-only \"test/**/*.test.js\"", 50 | "version": "oclif-dev readme && git add README.md" 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /screenrecording/EasyAndroidEmulator_Demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Chrisvin/EasyAndroidEmulator/7d1a852f6d65703ec0cf51ed231da570996bd7a2/screenrecording/EasyAndroidEmulator_Demo.gif -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const {Command, flags} = require('@oclif/command') 2 | const {cli} = require('cli-ux') 3 | const chalk = require('chalk') 4 | const shell = require('shelljs') 5 | 6 | class EasyAndroidEmulatorCommand extends Command { 7 | async run() { 8 | const {flags} = this.parse(EasyAndroidEmulatorCommand) 9 | const {args} = this.parse(EasyAndroidEmulatorCommand) 10 | var device = args.device 11 | let verbose = flags.verbose 12 | let persistAvd = flags.persist 13 | let forceAvd = flags.force 14 | 15 | // STEPS: 16 | // 0. If no device name or model is given, prompt if Pixel 3 XL device should be used instead? 17 | // 1. Parse CSV to get specs for the model (will need to check based on both device name & model) 18 | // 2. Once spec is found, Check if suitable emulator is already available, 19 | // 3. If so, directly start the emulator (i.e. skip steps 4, 5 & 7) 20 | // (NOTE: Since the emulator already exists, it was persisted, do NOT delete it) 21 | // 4. If not, then download required SDKs using `sdkmanager` (if they're not already there). 22 | // 5. Once SDKs are ready, create the emulator using `avdmanager`. 23 | // 6. Start the emulator using `emulator`. 24 | // 7. Unless the user has choosen to persist the avd, delete the avd using `avdmanager` 25 | 26 | if (!device) { 27 | let shouldProceed = await cli.confirm('Device not specified, Create emulator with ' + chalk.green('Pixel 3 XL') + ' specs? (y/n)') 28 | if (!shouldProceed) { 29 | return 30 | } 31 | device = 'Pixel 3 XL' 32 | } 33 | 34 | shell.echo() 35 | 36 | cli.action.start('Getting device specs for ' + chalk.greenBright.underline.bold(`${device}`)) 37 | let deviceDetail = await findDeviceDetails(device) 38 | let deviceDetails = deviceDetail.split(',') 39 | if (deviceDetails.length < 9) { 40 | cli.action.stop(chalk.red('Failed\n')) 41 | shell.echo(chalk.red('Failed to determine suitable specs for ') + chalk.greenBright.underline.bold(`${device}`)) 42 | shell.echo(chalk.redBright('Try again with different device.')) 43 | return 44 | } 45 | cli.action.stop(chalk.green('Specs determined\n')) 46 | 47 | let deviceManufacturer = deviceDetails[0] 48 | let deviceName = deviceDetails[1] 49 | let deviceModel = deviceDetails[2] 50 | let rams = deviceDetails[3].split('-') 51 | let ram = rams[rams.length - 1] 52 | let resolution = flags.resolution || deviceDetails[6] 53 | let density = flags.density || deviceDetails[7] 54 | let preferredAbi = flags.abi || deviceDetails[8].split(';').pop() || 'x86' 55 | let androidVersion = flags.android || deviceDetails[9].split(';').pop() 56 | 57 | let avdName = flags.name || `${deviceName.replace(/ /g, '_')}_API_${androidVersion}` 58 | 59 | shell.echo('Specs for ' + chalk.greenBright.bold(`${deviceName} (${deviceModel}) `) + '-') 60 | shell.echo('Android Version: ' + chalk.greenBright.bold(`${androidVersion}`)) 61 | shell.echo('Preferred ABI: ' + chalk.greenBright.bold(`${preferredAbi}`)) 62 | shell.echo('Screen Resolution: ' + chalk.greenBright.bold(`${resolution}`)) 63 | shell.echo('Screen Density: ' + chalk.greenBright.bold(`${density}\n`)) 64 | 65 | shell.echo('AVD Name: ' + chalk.greenBright.bold(`${avdName}\n`)) 66 | 67 | var isAvdAvailable = await checkForEmulator(avdName) 68 | if (isAvdAvailable === true && forceAvd) { 69 | cli.action.start(chalk.red('Deleting existing AVD')) 70 | await deleteEmulator(avdName, verbose) 71 | cli.action.stop(chalk.red('Done')) 72 | shell.echo() 73 | isAvdAvailable = false 74 | } 75 | 76 | if (isAvdAvailable === true) { 77 | shell.echo('AVD available\n') 78 | } else { 79 | shell.echo('AVD unavailable, creating new AVD\n') 80 | 81 | cli.action.start('Determining most suitable system image') 82 | let systemImage = await findSystemImage(androidVersion, preferredAbi, verbose) 83 | cli.action.stop(chalk.green('Determined\n')) 84 | this.log(chalk.greenBright.bold(`${systemImage}`)) 85 | shell.echo() 86 | 87 | cli.action.start('Setting up system image for AVD') 88 | await downloadSystemImage(systemImage, verbose) 89 | cli.action.stop(chalk.green('Finished')) 90 | shell.echo() 91 | 92 | cli.action.start('Creating AVD for emulator') 93 | await createEmulator(avdName, systemImage, verbose) 94 | cli.action.stop(chalk.green('AVD created')) 95 | shell.echo() 96 | 97 | cli.action.start('Configuring the AVD setup') 98 | await configureEmulator(avdName, resolution, density) 99 | cli.action.stop(chalk.green('Done')) 100 | shell.echo() 101 | } 102 | 103 | cli.action.start('Running the emulator') 104 | await startEmulator(avdName, verbose) 105 | cli.action.stop(chalk.green('Emulator closed')) 106 | shell.echo() 107 | 108 | if (isAvdAvailable !== true && persistAvd !== true) { 109 | cli.action.start(chalk.red('Deleting the emulator')) 110 | await deleteEmulator(avdName, verbose) 111 | cli.action.stop(chalk.red('Done')) 112 | shell.echo() 113 | } 114 | } 115 | } 116 | 117 | /** 118 | * Find the details of the device 119 | * @param {String} device Device name or model 120 | */ 121 | async function findDeviceDetails(device) { 122 | // Without comma after ${device} , it might result in partial match. 123 | // Example: Searching for "Pixel 4" might result in "Pixel 4 XL" 124 | return shell.grep('-i', `${device},`, `${__dirname}/../data/devices.csv`) 125 | } 126 | 127 | /** 128 | * Finds the most suitable system image given the android version & preferred ABI. 129 | * @param {String} androidVersion Android version for the AVD 130 | * @param {String} preferredAbi Preferred ABI for the AVD 131 | * @param {Boolean} verbose Whether shell results should be verbose (printed on screen) or silent 132 | */ 133 | async function findSystemImage(androidVersion, preferredAbi, verbose) { 134 | checkShellCommand('sdkmanager') 135 | 136 | var images = [''] 137 | if (shell.which('find')) { 138 | // Probably a windows system 139 | let {stdout} = await execute(`sdkmanager --list --verbose | find "${androidVersion}"`, verbose) 140 | images = stdout.toString().split('\n') 141 | } else if (shell.which('grep')) { 142 | // Probably unix based system 143 | let {stdout} = await execute(`sdkmanager --list --verbose | grep "${androidVersion}"`, verbose) 144 | images = stdout.toString().split('\n') 145 | } else { 146 | // Filter out suitable system images using android version as filter 147 | let {stdout} = await execute('sdkmanager --list --verbose', verbose) 148 | images = stdout.toString().split('\n').filter(function (str) { 149 | return str.includes(androidVersion) 150 | }) 151 | } 152 | return getSuitableSystemImage(images, preferredAbi) 153 | } 154 | 155 | /** 156 | * @param {Array} images Array of system image strings 157 | * @param {String} preferredAbi The preferred ABI for the system image 158 | * @return {String} The most suitable system image, from the given array of images. 159 | */ 160 | function getSuitableSystemImage(images, preferredAbi) { 161 | var resultImage = '' 162 | images.forEach(function (line) { 163 | if (line.includes('system-images;')) { 164 | if (line.includes(`${preferredAbi}`)) { 165 | if (!resultImage.includes(`${preferredAbi}`) || line.includes('default') || line.includes('google_apis') || line.includes('google_apis_playstore')) { 166 | resultImage = line 167 | } 168 | } else if (resultImage === '') { 169 | if (line.includes('default') || line.includes('google_apis') || line.includes('google_apis_playstore')) { 170 | resultImage = line 171 | } 172 | } 173 | } 174 | }) 175 | return resultImage 176 | } 177 | 178 | /** 179 | * Downloads the system image through `sdkmanager`. 180 | * @param {String} systemImage Image of the system for the AVD 181 | * @param {Boolean} verbose Whether shell results should be verbose (printed on screen) or silent 182 | */ 183 | async function downloadSystemImage(systemImage, verbose) { 184 | checkShellCommand('sdkmanager') 185 | return execute(`sdkmanager --install "${systemImage}"`, verbose) 186 | } 187 | 188 | /** 189 | * Creates Emulator AVD with the given name & system image. 190 | * @param {String} avdName Name of the AVD 191 | * @param {String} systemImage Image of the system for the AVD 192 | * @param {Boolean} verbose Whether shell results should be verbose (printed on screen) or silent 193 | */ 194 | async function createEmulator(avdName, systemImage, verbose) { 195 | checkShellCommand('avdmanager') 196 | 197 | let words = systemImage.split(';') 198 | let abi = words.pop() 199 | let tag = words.pop() 200 | return execute(`echo no | avdmanager --verbose create avd --force --name "${avdName}" --package "${systemImage}" --tag "${tag}" --abi "${abi}"`, verbose) 201 | } 202 | 203 | /** 204 | * Deletes the AVD with the given name 205 | * @param {String} avdName Name of the AVD 206 | * @param {Boolean} verbose Whether shell results should be verbose (printed on screen) or silent 207 | */ 208 | async function deleteEmulator(avdName, verbose) { 209 | checkShellCommand('avdmanager') 210 | return execute(`avdmanager --verbose delete avd --name "${avdName}"`, verbose) 211 | } 212 | 213 | /** 214 | * Configure the emulator avd by modifying the content in config.ini file 215 | * @param {String} avdName Name of the AVD 216 | * @param {String} resolution Resolution of the emulator 217 | * @param {String} density Screen density of the emulator 218 | */ 219 | async function configureEmulator(avdName, resolution, density) { 220 | var userName = '' 221 | if (shell.which('id')) { 222 | let {stdout} = await execute('id -un') 223 | userName = stdout.toString().trim() 224 | } else if (shell.which('whoami')) { 225 | let {stdout} = await execute('whoami') 226 | userName = stdout.toString().split('\\').pop().trim() 227 | } else { 228 | let {stdout} = await execute('echo %USERNAME%') 229 | userName = stdout.toString().trim() 230 | } 231 | 232 | var configLocation = '' 233 | if (shell.which('grep')) { 234 | configLocation = `~\\.android\\avd\\${avdName}.avd\\config.ini` 235 | } else { 236 | configLocation = `C:\\Users\\${userName}\\.android\\avd\\${avdName}.avd\\config.ini` 237 | } 238 | return execute(`echo skin.name=${resolution} >> ${configLocation} | echo hw.lcd.density=${density} >> ${configLocation} | echo hw.mainKeys=yes >> ${configLocation} | echo hw.keyboard=yes >> ${configLocation}`) 239 | } 240 | 241 | /** 242 | * Checks if AVD with given name is already available 243 | * @param {String} avdName Name of the AVD 244 | */ 245 | async function checkForEmulator(avdName) { 246 | checkShellCommand('avdmanager') 247 | 248 | let {stdout} = await execute('emulator -list-avds') 249 | let avds = stdout.toString().split('\r\n') 250 | var result = false 251 | avds.forEach(function (line) { 252 | if (line === avdName) { 253 | result = true 254 | } 255 | }) 256 | return result 257 | } 258 | 259 | /** 260 | * Starts the emulator with the given AVD name & resolution. 261 | * @param {String} avdName Name of the AVD 262 | * @param {Boolean} verbose Whether shell results should be verbose (printed on screen) or silent 263 | */ 264 | async function startEmulator(avdName, verbose) { 265 | checkShellCommand('emulator') 266 | return execute(`emulator @${avdName} &`, verbose) 267 | } 268 | 269 | /** 270 | * Checks if the given command is available & can be called via shellJS. 271 | * @param {String} command command to check for availability 272 | */ 273 | function checkShellCommand(command) { 274 | if (!shell.which(`${command}`)) { 275 | shell.echo(`Sorry, this scrip requires ${command}`) 276 | shell.exit(1) 277 | } 278 | } 279 | 280 | /** 281 | * Execute shell commands. 282 | * @param {String} cmd Command to be executed 283 | * @param {Boolean} isVerbose Whether shell results should be verbose (printed on screen) or silent 284 | * @param {Boolean} isAsync Whether command should be executed asynchronously 285 | * @return {Object} { stdout: String, stderr: String } 286 | */ 287 | async function execute(cmd, isVerbose = false, isAsync = false) { 288 | return new Promise(function (resolve, reject) { 289 | shell.exec(cmd, {silent: !isVerbose, async: isAsync}, (err, stdout, stderr) => { 290 | if (err) { 291 | if (!isVerbose) { 292 | shell.echo( 293 | chalk.red('-----\n') + 294 | chalk.redBright('Error occured, run in verbose mode to get more details.\n') + 295 | chalk.red('-----\n') 296 | ) 297 | } 298 | reject(err) 299 | } else { 300 | resolve({stdout, stderr}) 301 | } 302 | }) 303 | }) 304 | } 305 | 306 | EasyAndroidEmulatorCommand.description = `Create and run android emulators with just device name/model. 307 | Create and run android emulators in a quick & easy manner with just device name/model. Use the various flags to customize the emulator as per your requirements. 308 | ` 309 | 310 | EasyAndroidEmulatorCommand.args = [ 311 | { 312 | name: 'device', 313 | description: 'Device name or model', 314 | required: false, 315 | }, 316 | ] 317 | 318 | EasyAndroidEmulatorCommand.flags = { 319 | // add --version flag to show CLI version 320 | version: flags.version(), 321 | // add --help flag to show CLI version 322 | help: flags.help({char: 'h'}), 323 | // add --verbose or -v flag to show verbose logs 324 | verbose: flags.boolean({ 325 | char: 'v', 326 | description: 'show verbose logs', 327 | required: false, 328 | default: false, 329 | }), 330 | // add --persist or -p flag to persist avd 331 | persist: flags.boolean({ 332 | char: 'p', 333 | description: 'persist the created avd (makes it faster for subsequent runs)', 334 | required: false, 335 | default: false, 336 | }), 337 | // add --name or -n flag to name the AVD 338 | name: flags.string({ 339 | char: 'n', 340 | description: 'name of the AVD to be (created &) used', 341 | required: false, 342 | }), 343 | // add --force or -f flag to force recreation of the AVD (if it's already available) 344 | force: flags.boolean({ 345 | char: 'f', 346 | description: 'force recreation of the emulator avd', 347 | required: false, 348 | default: false, 349 | }), 350 | // add -android flag to set the android API level for the AVD (Use along with -f flag if AVD already exists) 351 | android: flags.integer({ 352 | description: 'set the android API level for the AVD (Use along with -f flag if AVD already exists)', 353 | required: false, 354 | }), 355 | // add -abi flag to set the preferred ABI for the AVD (Use along with -f flag if AVD already exists) 356 | abi: flags.string({ 357 | description: 'set the preferred ABI for the AVD (Use along with -f flag if AVD already exists)', 358 | required: false, 359 | }), 360 | // add --resolution or -r to set the resolution of the AVD (Use along with -f flag if AVD already exists) 361 | resolution: flags.string({ 362 | char: 'r', 363 | description: 'set the resolution of the AVD (Use along with -f flag if AVD already exists). Eg: -r 1080x2160', 364 | required: false, 365 | }), 366 | // add --density or -d to set the density of the AVD (Use along with -f flag if AVD already exists) 367 | density: flags.integer({ 368 | char: 'd', 369 | description: 'set the density of the AVD (Use along with -f flag if AVD already exists). Eg: -d 440', 370 | required: false, 371 | }), 372 | } 373 | 374 | module.exports = EasyAndroidEmulatorCommand 375 | -------------------------------------------------------------------------------- /test/index.test.js: -------------------------------------------------------------------------------- 1 | const {expect, test} = require('@oclif/test') 2 | const cmd = require('..') 3 | 4 | describe('EasyAndroidEmulator', () => { 5 | test 6 | .stdout() 7 | .do(() => cmd.run([])) 8 | .it('runs hello', ctx => { 9 | expect(ctx.stdout).to.contain('hello world') 10 | }) 11 | 12 | test 13 | .stdout() 14 | .do(() => cmd.run(['--name', 'jeff'])) 15 | .it('runs hello --name jeff', ctx => { 16 | expect(ctx.stdout).to.contain('hello jeff') 17 | }) 18 | }) 19 | -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- 1 | --recursive 2 | --reporter spec 3 | --timeout 5000 4 | --------------------------------------------------------------------------------