├── .eslintrc.json ├── .github └── workflows │ ├── build.yml │ └── publish.yml ├── .gitignore ├── .npmignore ├── .prettier.config.js ├── LICENSE ├── README.md ├── bin └── htpasswd ├── package-lock.json ├── package.json ├── src ├── htpasswd.js ├── processor.js └── utils.js └── test ├── newline.js ├── processor.js └── utils.js /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "prettier", 4 | "eslint:recommended", 5 | "plugin:node/recommended" 6 | ], 7 | "parserOptions": { 8 | // Only ESLint 6.2.0 and later support ES2020. 9 | "ecmaVersion": 2020 10 | }, 11 | "env": { 12 | "node": true, 13 | "mocha": true 14 | }, 15 | "plugins": [ 16 | "prettier" 17 | ], 18 | "rules": { 19 | "prettier/prettier": "error", 20 | "node/exports-style": ["error", "module.exports"], 21 | "node/file-extension-in-import": ["error", "always"], 22 | "node/prefer-global/buffer": ["error", "always"], 23 | "node/prefer-global/console": ["error", "always"], 24 | "node/prefer-global/process": ["error", "always"], 25 | "node/prefer-global/url-search-params": ["error", "always"], 26 | "node/prefer-global/url": ["error", "always"], 27 | "node/prefer-promises/dns": "error", 28 | "node/prefer-promises/fs": "error" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | strategy: 11 | matrix: 12 | node-version: [16.x, 18.x] 13 | 14 | steps: 15 | - uses: actions/checkout@v3 16 | - name: Use Node.js ${{ matrix.node-version }} 17 | uses: actions/setup-node@v3 18 | with: 19 | node-version: ${{ matrix.node-version }} 20 | - run: npm install 21 | - run: npm run build --if-present 22 | - run: npm test 23 | env: 24 | CI: true 25 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: publish 2 | 3 | on: 4 | push: 5 | tags: 6 | - '*' 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - uses: actions/setup-node@v3 14 | with: 15 | node-version: 16 16 | - run: npm ci 17 | - run: npm test 18 | 19 | publish-npm: 20 | needs: build 21 | runs-on: ubuntu-latest 22 | steps: 23 | - uses: actions/checkout@v3 24 | - uses: actions/setup-node@v3 25 | with: 26 | node-version: 16 27 | registry-url: https://registry.npmjs.org/ 28 | - run: npm ci 29 | - run: npm publish 30 | env: 31 | NODE_AUTH_TOKEN: ${{secrets.npm_token}} 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .project 3 | .idea 4 | htpasswd.iml 5 | .settings 6 | gensrc -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | node_modules 3 | .project 4 | *.iml 5 | .idea 6 | .settings 7 | _site 8 | test 9 | examples 10 | .travis.yml 11 | data 12 | .github 13 | .eslintrc.json 14 | .prettier.config.js -------------------------------------------------------------------------------- /.prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | tabWidth: 2, 3 | semi: true, 4 | singleQuote: true, 5 | trailingComma: 'es5', 6 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) Gevorg Harutyunyan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | 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, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # htpasswd 2 | 3 | CLI tool for managing HTTP Basic Authentication password file. 4 | 5 | Basically, this is a Node.js implementation of Apache's [`htpasswd`](https://httpd.apache.org/docs/2.4/programs/htpasswd.html) utility. 6 | 7 | [![build](https://github.com/gevorg/htpasswd/workflows/build/badge.svg)](https://github.com/gevorg/htpasswd/actions/workflows/build.yml) 8 | 9 | ## Installation 10 | 11 | Via git (or downloaded tarball): 12 | 13 | ```bash 14 | $ git clone git@github.com:gevorg/htpasswd.git 15 | ``` 16 | Via [npm](http://npmjs.org/): 17 | 18 | ```bash 19 | $ npm install -g htpasswd 20 | ``` 21 | ## Usage 22 | 23 | ```bash 24 | $ htpasswd [-cimBpsDv] [ -C cost ] passwordfile username 25 | $ htpasswd -b[cmBpsDv] [ -C cost ] passwordfile username password 26 | 27 | $ htpasswd -n[imBps] [ -C cost ] username 28 | $ htpasswd -nb[mBps] [ -C cost ] username password 29 | ``` 30 | 31 | ## Options 32 | 33 | - `-b` - Use the password from the command line rather than prompting for it. This option should be used with extreme care, since the password is clearly visible on the command line. For script use see the -i option. 34 | - `-i` - Read the password from stdin without verification (for script usage). 35 | - `-c` - Create a new file. 36 | - `-n` - Don't update file; display results on stdout. 37 | - `-m` - Use MD5 encryption for passwords. This is the default. 38 | - `-B` - Use bcrypt encryption for passwords. This is currently considered to be very secure. 39 | - `-C` - This flag is only allowed in combination with -B (bcrypt encryption). It sets the computing time used for the bcrypt algorithm (higher is more secure but slower, default: 5, valid: 4 to 31). 40 | - `-d` - Use crypt() encryption for passwords. This algorithm limits the password length to 8 characters. This algorithm is insecure by today's standards. 41 | - `-s` - Use SHA encryption for passwords. This algorithm is insecure by today's standards. 42 | - `-p` - Do not encrypt the password (plaintext). 43 | - `-D` - Delete the specified user. 44 | - `-v` - Verify password. Verify that the given password matches the password of the user stored in the specified htpasswd file. 45 | 46 | ## Running tests 47 | 48 | It uses [mocha](https://mochajs.org/), so just run following command in package directory: 49 | 50 | ```bash 51 | $ npm test 52 | ``` 53 | 54 | ## License 55 | 56 | The MIT License (MIT) 57 | -------------------------------------------------------------------------------- /bin/htpasswd: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var settings = require('../package.json'); 4 | require("../src/htpasswd")(settings.version, process.argv); -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "htpasswd", 3 | "version": "2.4.6", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "htpasswd", 9 | "version": "2.4.6", 10 | "license": "MIT", 11 | "dependencies": { 12 | "apache-crypt": "^1.1.2", 13 | "apache-md5": "^1.0.6", 14 | "bcryptjs": "^2.3.0", 15 | "commander": "^2.9.0", 16 | "prompt": "^1.0.0" 17 | }, 18 | "bin": { 19 | "htpasswd": "bin/htpasswd" 20 | }, 21 | "devDependencies": { 22 | "chai": "^4.2.0", 23 | "eslint": "^6.8.0", 24 | "eslint-config-prettier": "^6.10.0", 25 | "eslint-plugin-node": "^11.0.0", 26 | "eslint-plugin-prettier": "^3.1.2", 27 | "mocha": "^10.2.0", 28 | "prettier": "^1.19.1" 29 | }, 30 | "engines": { 31 | "node": ">=8" 32 | } 33 | }, 34 | "node_modules/@babel/code-frame": { 35 | "version": "7.8.3", 36 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", 37 | "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", 38 | "dev": true, 39 | "dependencies": { 40 | "@babel/highlight": "^7.8.3" 41 | } 42 | }, 43 | "node_modules/@babel/highlight": { 44 | "version": "7.8.3", 45 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", 46 | "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", 47 | "dev": true, 48 | "dependencies": { 49 | "chalk": "^2.0.0", 50 | "esutils": "^2.0.2", 51 | "js-tokens": "^4.0.0" 52 | } 53 | }, 54 | "node_modules/acorn": { 55 | "version": "7.1.1", 56 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", 57 | "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", 58 | "dev": true, 59 | "bin": { 60 | "acorn": "bin/acorn" 61 | }, 62 | "engines": { 63 | "node": ">=0.4.0" 64 | } 65 | }, 66 | "node_modules/acorn-jsx": { 67 | "version": "5.1.0", 68 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", 69 | "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", 70 | "dev": true 71 | }, 72 | "node_modules/ajv": { 73 | "version": "6.12.6", 74 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 75 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 76 | "dev": true, 77 | "dependencies": { 78 | "fast-deep-equal": "^3.1.1", 79 | "fast-json-stable-stringify": "^2.0.0", 80 | "json-schema-traverse": "^0.4.1", 81 | "uri-js": "^4.2.2" 82 | }, 83 | "funding": { 84 | "type": "github", 85 | "url": "https://github.com/sponsors/epoberezkin" 86 | } 87 | }, 88 | "node_modules/ansi-colors": { 89 | "version": "4.1.1", 90 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 91 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 92 | "dev": true, 93 | "engines": { 94 | "node": ">=6" 95 | } 96 | }, 97 | "node_modules/ansi-escapes": { 98 | "version": "4.3.0", 99 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", 100 | "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", 101 | "dev": true, 102 | "dependencies": { 103 | "type-fest": "^0.8.1" 104 | }, 105 | "engines": { 106 | "node": ">=8" 107 | } 108 | }, 109 | "node_modules/ansi-regex": { 110 | "version": "5.0.1", 111 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 112 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 113 | "dev": true, 114 | "engines": { 115 | "node": ">=8" 116 | } 117 | }, 118 | "node_modules/ansi-styles": { 119 | "version": "3.2.1", 120 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 121 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 122 | "dev": true, 123 | "dependencies": { 124 | "color-convert": "^1.9.0" 125 | }, 126 | "engines": { 127 | "node": ">=4" 128 | } 129 | }, 130 | "node_modules/anymatch": { 131 | "version": "3.1.3", 132 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 133 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 134 | "dev": true, 135 | "dependencies": { 136 | "normalize-path": "^3.0.0", 137 | "picomatch": "^2.0.4" 138 | }, 139 | "engines": { 140 | "node": ">= 8" 141 | } 142 | }, 143 | "node_modules/apache-crypt": { 144 | "version": "1.2.3", 145 | "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.3.tgz", 146 | "integrity": "sha512-NUNPHfU0Qh42YkFijlzXdPNOB1iXFVe5sR1F2HOg6yEQu+SivESFE7HoTDfhQGDG6iI4c6TWX+yhj+46uhMH7A==", 147 | "dependencies": { 148 | "unix-crypt-td-js": "^1.1.4" 149 | }, 150 | "engines": { 151 | "node": ">=8" 152 | } 153 | }, 154 | "node_modules/apache-md5": { 155 | "version": "1.1.5", 156 | "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.5.tgz", 157 | "integrity": "sha512-sbLEIMQrkV7RkIruqTPXxeCMkAAycv4yzTkBzRgOR1BrR5UB7qZtupqxkersTJSf0HZ3sbaNRrNV80TnnM7cUw==", 158 | "engines": { 159 | "node": ">=8" 160 | } 161 | }, 162 | "node_modules/argparse": { 163 | "version": "1.0.10", 164 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 165 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 166 | "dev": true, 167 | "dependencies": { 168 | "sprintf-js": "~1.0.2" 169 | } 170 | }, 171 | "node_modules/assertion-error": { 172 | "version": "1.1.0", 173 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 174 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 175 | "dev": true, 176 | "engines": { 177 | "node": "*" 178 | } 179 | }, 180 | "node_modules/astral-regex": { 181 | "version": "1.0.0", 182 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 183 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 184 | "dev": true, 185 | "engines": { 186 | "node": ">=4" 187 | } 188 | }, 189 | "node_modules/async": { 190 | "version": "0.9.2", 191 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 192 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" 193 | }, 194 | "node_modules/balanced-match": { 195 | "version": "1.0.0", 196 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 197 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 198 | }, 199 | "node_modules/bcryptjs": { 200 | "version": "2.4.3", 201 | "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", 202 | "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" 203 | }, 204 | "node_modules/binary-extensions": { 205 | "version": "2.2.0", 206 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 207 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 208 | "dev": true, 209 | "engines": { 210 | "node": ">=8" 211 | } 212 | }, 213 | "node_modules/brace-expansion": { 214 | "version": "1.1.11", 215 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 216 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 217 | "dependencies": { 218 | "balanced-match": "^1.0.0", 219 | "concat-map": "0.0.1" 220 | } 221 | }, 222 | "node_modules/braces": { 223 | "version": "3.0.2", 224 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 225 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 226 | "dev": true, 227 | "dependencies": { 228 | "fill-range": "^7.0.1" 229 | }, 230 | "engines": { 231 | "node": ">=8" 232 | } 233 | }, 234 | "node_modules/browser-stdout": { 235 | "version": "1.3.1", 236 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 237 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 238 | "dev": true 239 | }, 240 | "node_modules/callsites": { 241 | "version": "3.1.0", 242 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 243 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 244 | "dev": true, 245 | "engines": { 246 | "node": ">=6" 247 | } 248 | }, 249 | "node_modules/camelcase": { 250 | "version": "6.3.0", 251 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 252 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 253 | "dev": true, 254 | "engines": { 255 | "node": ">=10" 256 | }, 257 | "funding": { 258 | "url": "https://github.com/sponsors/sindresorhus" 259 | } 260 | }, 261 | "node_modules/chai": { 262 | "version": "4.2.0", 263 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 264 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 265 | "dev": true, 266 | "dependencies": { 267 | "assertion-error": "^1.1.0", 268 | "check-error": "^1.0.2", 269 | "deep-eql": "^3.0.1", 270 | "get-func-name": "^2.0.0", 271 | "pathval": "^1.1.0", 272 | "type-detect": "^4.0.5" 273 | }, 274 | "engines": { 275 | "node": ">=4" 276 | } 277 | }, 278 | "node_modules/chalk": { 279 | "version": "2.4.2", 280 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 281 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 282 | "dev": true, 283 | "dependencies": { 284 | "ansi-styles": "^3.2.1", 285 | "escape-string-regexp": "^1.0.5", 286 | "supports-color": "^5.3.0" 287 | }, 288 | "engines": { 289 | "node": ">=4" 290 | } 291 | }, 292 | "node_modules/chardet": { 293 | "version": "0.7.0", 294 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 295 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 296 | "dev": true 297 | }, 298 | "node_modules/check-error": { 299 | "version": "1.0.2", 300 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 301 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 302 | "dev": true, 303 | "engines": { 304 | "node": "*" 305 | } 306 | }, 307 | "node_modules/chokidar": { 308 | "version": "3.5.3", 309 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 310 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 311 | "dev": true, 312 | "funding": [ 313 | { 314 | "type": "individual", 315 | "url": "https://paulmillr.com/funding/" 316 | } 317 | ], 318 | "dependencies": { 319 | "anymatch": "~3.1.2", 320 | "braces": "~3.0.2", 321 | "glob-parent": "~5.1.2", 322 | "is-binary-path": "~2.1.0", 323 | "is-glob": "~4.0.1", 324 | "normalize-path": "~3.0.0", 325 | "readdirp": "~3.6.0" 326 | }, 327 | "engines": { 328 | "node": ">= 8.10.0" 329 | }, 330 | "optionalDependencies": { 331 | "fsevents": "~2.3.2" 332 | } 333 | }, 334 | "node_modules/cli-cursor": { 335 | "version": "3.1.0", 336 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 337 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 338 | "dev": true, 339 | "dependencies": { 340 | "restore-cursor": "^3.1.0" 341 | }, 342 | "engines": { 343 | "node": ">=8" 344 | } 345 | }, 346 | "node_modules/cli-width": { 347 | "version": "2.2.0", 348 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 349 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 350 | "dev": true 351 | }, 352 | "node_modules/cliui": { 353 | "version": "7.0.4", 354 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 355 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 356 | "dev": true, 357 | "dependencies": { 358 | "string-width": "^4.2.0", 359 | "strip-ansi": "^6.0.0", 360 | "wrap-ansi": "^7.0.0" 361 | } 362 | }, 363 | "node_modules/cliui/node_modules/strip-ansi": { 364 | "version": "6.0.1", 365 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 366 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 367 | "dev": true, 368 | "dependencies": { 369 | "ansi-regex": "^5.0.1" 370 | }, 371 | "engines": { 372 | "node": ">=8" 373 | } 374 | }, 375 | "node_modules/color-convert": { 376 | "version": "1.9.3", 377 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 378 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 379 | "dev": true, 380 | "dependencies": { 381 | "color-name": "1.1.3" 382 | } 383 | }, 384 | "node_modules/color-name": { 385 | "version": "1.1.3", 386 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 387 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 388 | "dev": true 389 | }, 390 | "node_modules/colors": { 391 | "version": "1.4.0", 392 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 393 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", 394 | "engines": { 395 | "node": ">=0.1.90" 396 | } 397 | }, 398 | "node_modules/commander": { 399 | "version": "2.20.3", 400 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 401 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 402 | }, 403 | "node_modules/concat-map": { 404 | "version": "0.0.1", 405 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 406 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 407 | }, 408 | "node_modules/cross-spawn": { 409 | "version": "6.0.5", 410 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 411 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 412 | "dev": true, 413 | "dependencies": { 414 | "nice-try": "^1.0.4", 415 | "path-key": "^2.0.1", 416 | "semver": "^5.5.0", 417 | "shebang-command": "^1.2.0", 418 | "which": "^1.2.9" 419 | }, 420 | "engines": { 421 | "node": ">=4.8" 422 | } 423 | }, 424 | "node_modules/cross-spawn/node_modules/semver": { 425 | "version": "5.7.1", 426 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 427 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 428 | "dev": true, 429 | "bin": { 430 | "semver": "bin/semver" 431 | } 432 | }, 433 | "node_modules/cycle": { 434 | "version": "1.0.3", 435 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 436 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", 437 | "engines": { 438 | "node": ">=0.4.0" 439 | } 440 | }, 441 | "node_modules/debug": { 442 | "version": "4.3.4", 443 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 444 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 445 | "dev": true, 446 | "dependencies": { 447 | "ms": "2.1.2" 448 | }, 449 | "engines": { 450 | "node": ">=6.0" 451 | }, 452 | "peerDependenciesMeta": { 453 | "supports-color": { 454 | "optional": true 455 | } 456 | } 457 | }, 458 | "node_modules/decamelize": { 459 | "version": "4.0.0", 460 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 461 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 462 | "dev": true, 463 | "engines": { 464 | "node": ">=10" 465 | }, 466 | "funding": { 467 | "url": "https://github.com/sponsors/sindresorhus" 468 | } 469 | }, 470 | "node_modules/deep-eql": { 471 | "version": "3.0.1", 472 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 473 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 474 | "dev": true, 475 | "dependencies": { 476 | "type-detect": "^4.0.0" 477 | }, 478 | "engines": { 479 | "node": ">=0.12" 480 | } 481 | }, 482 | "node_modules/deep-equal": { 483 | "version": "0.2.2", 484 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", 485 | "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" 486 | }, 487 | "node_modules/deep-is": { 488 | "version": "0.1.3", 489 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 490 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 491 | "dev": true 492 | }, 493 | "node_modules/diff": { 494 | "version": "5.0.0", 495 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 496 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 497 | "dev": true, 498 | "engines": { 499 | "node": ">=0.3.1" 500 | } 501 | }, 502 | "node_modules/doctrine": { 503 | "version": "3.0.0", 504 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 505 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 506 | "dev": true, 507 | "dependencies": { 508 | "esutils": "^2.0.2" 509 | }, 510 | "engines": { 511 | "node": ">=6.0.0" 512 | } 513 | }, 514 | "node_modules/emoji-regex": { 515 | "version": "8.0.0", 516 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 517 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 518 | "dev": true 519 | }, 520 | "node_modules/escalade": { 521 | "version": "3.1.1", 522 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 523 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 524 | "dev": true, 525 | "engines": { 526 | "node": ">=6" 527 | } 528 | }, 529 | "node_modules/escape-string-regexp": { 530 | "version": "1.0.5", 531 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 532 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 533 | "dev": true, 534 | "engines": { 535 | "node": ">=0.8.0" 536 | } 537 | }, 538 | "node_modules/eslint": { 539 | "version": "6.8.0", 540 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", 541 | "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", 542 | "dev": true, 543 | "dependencies": { 544 | "@babel/code-frame": "^7.0.0", 545 | "ajv": "^6.10.0", 546 | "chalk": "^2.1.0", 547 | "cross-spawn": "^6.0.5", 548 | "debug": "^4.0.1", 549 | "doctrine": "^3.0.0", 550 | "eslint-scope": "^5.0.0", 551 | "eslint-utils": "^1.4.3", 552 | "eslint-visitor-keys": "^1.1.0", 553 | "espree": "^6.1.2", 554 | "esquery": "^1.0.1", 555 | "esutils": "^2.0.2", 556 | "file-entry-cache": "^5.0.1", 557 | "functional-red-black-tree": "^1.0.1", 558 | "glob-parent": "^5.0.0", 559 | "globals": "^12.1.0", 560 | "ignore": "^4.0.6", 561 | "import-fresh": "^3.0.0", 562 | "imurmurhash": "^0.1.4", 563 | "inquirer": "^7.0.0", 564 | "is-glob": "^4.0.0", 565 | "js-yaml": "^3.13.1", 566 | "json-stable-stringify-without-jsonify": "^1.0.1", 567 | "levn": "^0.3.0", 568 | "lodash": "^4.17.14", 569 | "minimatch": "^3.0.4", 570 | "mkdirp": "^0.5.1", 571 | "natural-compare": "^1.4.0", 572 | "optionator": "^0.8.3", 573 | "progress": "^2.0.0", 574 | "regexpp": "^2.0.1", 575 | "semver": "^6.1.2", 576 | "strip-ansi": "^5.2.0", 577 | "strip-json-comments": "^3.0.1", 578 | "table": "^5.2.3", 579 | "text-table": "^0.2.0", 580 | "v8-compile-cache": "^2.0.3" 581 | }, 582 | "bin": { 583 | "eslint": "bin/eslint.js" 584 | }, 585 | "engines": { 586 | "node": "^8.10.0 || ^10.13.0 || >=11.10.1" 587 | } 588 | }, 589 | "node_modules/eslint-config-prettier": { 590 | "version": "6.10.0", 591 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", 592 | "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", 593 | "dev": true, 594 | "dependencies": { 595 | "get-stdin": "^6.0.0" 596 | }, 597 | "bin": { 598 | "eslint-config-prettier-check": "bin/cli.js" 599 | } 600 | }, 601 | "node_modules/eslint-plugin-es": { 602 | "version": "3.0.0", 603 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", 604 | "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", 605 | "dev": true, 606 | "dependencies": { 607 | "eslint-utils": "^2.0.0", 608 | "regexpp": "^3.0.0" 609 | }, 610 | "engines": { 611 | "node": ">=8.10.0" 612 | } 613 | }, 614 | "node_modules/eslint-plugin-es/node_modules/eslint-utils": { 615 | "version": "2.0.0", 616 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", 617 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", 618 | "dev": true, 619 | "dependencies": { 620 | "eslint-visitor-keys": "^1.1.0" 621 | }, 622 | "engines": { 623 | "node": ">=6" 624 | } 625 | }, 626 | "node_modules/eslint-plugin-es/node_modules/regexpp": { 627 | "version": "3.0.0", 628 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", 629 | "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", 630 | "dev": true, 631 | "engines": { 632 | "node": ">=8" 633 | } 634 | }, 635 | "node_modules/eslint-plugin-node": { 636 | "version": "11.0.0", 637 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz", 638 | "integrity": "sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==", 639 | "dev": true, 640 | "dependencies": { 641 | "eslint-plugin-es": "^3.0.0", 642 | "eslint-utils": "^2.0.0", 643 | "ignore": "^5.1.1", 644 | "minimatch": "^3.0.4", 645 | "resolve": "^1.10.1", 646 | "semver": "^6.1.0" 647 | }, 648 | "engines": { 649 | "node": ">=8.10.0" 650 | } 651 | }, 652 | "node_modules/eslint-plugin-node/node_modules/eslint-utils": { 653 | "version": "2.0.0", 654 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", 655 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", 656 | "dev": true, 657 | "dependencies": { 658 | "eslint-visitor-keys": "^1.1.0" 659 | }, 660 | "engines": { 661 | "node": ">=6" 662 | } 663 | }, 664 | "node_modules/eslint-plugin-node/node_modules/ignore": { 665 | "version": "5.1.4", 666 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", 667 | "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", 668 | "dev": true, 669 | "engines": { 670 | "node": ">= 4" 671 | } 672 | }, 673 | "node_modules/eslint-plugin-prettier": { 674 | "version": "3.1.2", 675 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", 676 | "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", 677 | "dev": true, 678 | "dependencies": { 679 | "prettier-linter-helpers": "^1.0.0" 680 | }, 681 | "engines": { 682 | "node": ">=6.0.0" 683 | } 684 | }, 685 | "node_modules/eslint-scope": { 686 | "version": "5.0.0", 687 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", 688 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", 689 | "dev": true, 690 | "dependencies": { 691 | "esrecurse": "^4.1.0", 692 | "estraverse": "^4.1.1" 693 | }, 694 | "engines": { 695 | "node": ">=8.0.0" 696 | } 697 | }, 698 | "node_modules/eslint-utils": { 699 | "version": "1.4.3", 700 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 701 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 702 | "dev": true, 703 | "dependencies": { 704 | "eslint-visitor-keys": "^1.1.0" 705 | }, 706 | "engines": { 707 | "node": ">=6" 708 | } 709 | }, 710 | "node_modules/eslint-visitor-keys": { 711 | "version": "1.1.0", 712 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 713 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 714 | "dev": true, 715 | "engines": { 716 | "node": ">=4" 717 | } 718 | }, 719 | "node_modules/espree": { 720 | "version": "6.1.2", 721 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", 722 | "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", 723 | "dev": true, 724 | "dependencies": { 725 | "acorn": "^7.1.0", 726 | "acorn-jsx": "^5.1.0", 727 | "eslint-visitor-keys": "^1.1.0" 728 | }, 729 | "engines": { 730 | "node": ">=6.0.0" 731 | } 732 | }, 733 | "node_modules/esprima": { 734 | "version": "4.0.1", 735 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 736 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 737 | "dev": true, 738 | "bin": { 739 | "esparse": "bin/esparse.js", 740 | "esvalidate": "bin/esvalidate.js" 741 | }, 742 | "engines": { 743 | "node": ">=4" 744 | } 745 | }, 746 | "node_modules/esquery": { 747 | "version": "1.0.1", 748 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 749 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 750 | "dev": true, 751 | "dependencies": { 752 | "estraverse": "^4.0.0" 753 | }, 754 | "engines": { 755 | "node": ">=0.6" 756 | } 757 | }, 758 | "node_modules/esrecurse": { 759 | "version": "4.2.1", 760 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 761 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 762 | "dev": true, 763 | "dependencies": { 764 | "estraverse": "^4.1.0" 765 | }, 766 | "engines": { 767 | "node": ">=4.0" 768 | } 769 | }, 770 | "node_modules/estraverse": { 771 | "version": "4.3.0", 772 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 773 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 774 | "dev": true, 775 | "engines": { 776 | "node": ">=4.0" 777 | } 778 | }, 779 | "node_modules/esutils": { 780 | "version": "2.0.3", 781 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 782 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 783 | "dev": true, 784 | "engines": { 785 | "node": ">=0.10.0" 786 | } 787 | }, 788 | "node_modules/external-editor": { 789 | "version": "3.1.0", 790 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 791 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 792 | "dev": true, 793 | "dependencies": { 794 | "chardet": "^0.7.0", 795 | "iconv-lite": "^0.4.24", 796 | "tmp": "^0.0.33" 797 | }, 798 | "engines": { 799 | "node": ">=4" 800 | } 801 | }, 802 | "node_modules/eyes": { 803 | "version": "0.1.8", 804 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 805 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", 806 | "engines": { 807 | "node": "> 0.1.90" 808 | } 809 | }, 810 | "node_modules/fast-deep-equal": { 811 | "version": "3.1.1", 812 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 813 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 814 | "dev": true 815 | }, 816 | "node_modules/fast-diff": { 817 | "version": "1.2.0", 818 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 819 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 820 | "dev": true 821 | }, 822 | "node_modules/fast-json-stable-stringify": { 823 | "version": "2.1.0", 824 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 825 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 826 | "dev": true 827 | }, 828 | "node_modules/fast-levenshtein": { 829 | "version": "2.0.6", 830 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 831 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 832 | "dev": true 833 | }, 834 | "node_modules/figures": { 835 | "version": "3.1.0", 836 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", 837 | "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", 838 | "dev": true, 839 | "dependencies": { 840 | "escape-string-regexp": "^1.0.5" 841 | }, 842 | "engines": { 843 | "node": ">=8" 844 | } 845 | }, 846 | "node_modules/file-entry-cache": { 847 | "version": "5.0.1", 848 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 849 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 850 | "dev": true, 851 | "dependencies": { 852 | "flat-cache": "^2.0.1" 853 | }, 854 | "engines": { 855 | "node": ">=4" 856 | } 857 | }, 858 | "node_modules/fill-range": { 859 | "version": "7.0.1", 860 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 861 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 862 | "dev": true, 863 | "dependencies": { 864 | "to-regex-range": "^5.0.1" 865 | }, 866 | "engines": { 867 | "node": ">=8" 868 | } 869 | }, 870 | "node_modules/find-up": { 871 | "version": "5.0.0", 872 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 873 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 874 | "dev": true, 875 | "dependencies": { 876 | "locate-path": "^6.0.0", 877 | "path-exists": "^4.0.0" 878 | }, 879 | "engines": { 880 | "node": ">=10" 881 | }, 882 | "funding": { 883 | "url": "https://github.com/sponsors/sindresorhus" 884 | } 885 | }, 886 | "node_modules/flat": { 887 | "version": "5.0.2", 888 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 889 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 890 | "dev": true, 891 | "bin": { 892 | "flat": "cli.js" 893 | } 894 | }, 895 | "node_modules/flat-cache": { 896 | "version": "2.0.1", 897 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 898 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 899 | "dev": true, 900 | "dependencies": { 901 | "flatted": "^2.0.0", 902 | "rimraf": "2.6.3", 903 | "write": "1.0.3" 904 | }, 905 | "engines": { 906 | "node": ">=4" 907 | } 908 | }, 909 | "node_modules/flat-cache/node_modules/rimraf": { 910 | "version": "2.6.3", 911 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 912 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 913 | "dev": true, 914 | "dependencies": { 915 | "glob": "^7.1.3" 916 | }, 917 | "bin": { 918 | "rimraf": "bin.js" 919 | } 920 | }, 921 | "node_modules/flatted": { 922 | "version": "2.0.1", 923 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", 924 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", 925 | "dev": true 926 | }, 927 | "node_modules/fs.realpath": { 928 | "version": "1.0.0", 929 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 930 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 931 | }, 932 | "node_modules/fsevents": { 933 | "version": "2.3.2", 934 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 935 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 936 | "dev": true, 937 | "hasInstallScript": true, 938 | "optional": true, 939 | "os": [ 940 | "darwin" 941 | ], 942 | "engines": { 943 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 944 | } 945 | }, 946 | "node_modules/functional-red-black-tree": { 947 | "version": "1.0.1", 948 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 949 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 950 | "dev": true 951 | }, 952 | "node_modules/get-caller-file": { 953 | "version": "2.0.5", 954 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 955 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 956 | "dev": true, 957 | "engines": { 958 | "node": "6.* || 8.* || >= 10.*" 959 | } 960 | }, 961 | "node_modules/get-func-name": { 962 | "version": "2.0.0", 963 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 964 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 965 | "dev": true, 966 | "engines": { 967 | "node": "*" 968 | } 969 | }, 970 | "node_modules/get-stdin": { 971 | "version": "6.0.0", 972 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 973 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", 974 | "dev": true, 975 | "engines": { 976 | "node": ">=4" 977 | } 978 | }, 979 | "node_modules/glob": { 980 | "version": "7.2.0", 981 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 982 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 983 | "dependencies": { 984 | "fs.realpath": "^1.0.0", 985 | "inflight": "^1.0.4", 986 | "inherits": "2", 987 | "minimatch": "^3.0.4", 988 | "once": "^1.3.0", 989 | "path-is-absolute": "^1.0.0" 990 | }, 991 | "engines": { 992 | "node": "*" 993 | }, 994 | "funding": { 995 | "url": "https://github.com/sponsors/isaacs" 996 | } 997 | }, 998 | "node_modules/glob-parent": { 999 | "version": "5.1.2", 1000 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1001 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1002 | "dev": true, 1003 | "dependencies": { 1004 | "is-glob": "^4.0.1" 1005 | }, 1006 | "engines": { 1007 | "node": ">= 6" 1008 | } 1009 | }, 1010 | "node_modules/globals": { 1011 | "version": "12.3.0", 1012 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", 1013 | "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", 1014 | "dev": true, 1015 | "dependencies": { 1016 | "type-fest": "^0.8.1" 1017 | }, 1018 | "engines": { 1019 | "node": ">=8" 1020 | } 1021 | }, 1022 | "node_modules/has-flag": { 1023 | "version": "3.0.0", 1024 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1025 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1026 | "dev": true, 1027 | "engines": { 1028 | "node": ">=4" 1029 | } 1030 | }, 1031 | "node_modules/he": { 1032 | "version": "1.2.0", 1033 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1034 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1035 | "dev": true, 1036 | "bin": { 1037 | "he": "bin/he" 1038 | } 1039 | }, 1040 | "node_modules/i": { 1041 | "version": "0.3.7", 1042 | "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", 1043 | "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==", 1044 | "engines": { 1045 | "node": ">=0.4" 1046 | } 1047 | }, 1048 | "node_modules/iconv-lite": { 1049 | "version": "0.4.24", 1050 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1051 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1052 | "dev": true, 1053 | "dependencies": { 1054 | "safer-buffer": ">= 2.1.2 < 3" 1055 | }, 1056 | "engines": { 1057 | "node": ">=0.10.0" 1058 | } 1059 | }, 1060 | "node_modules/ignore": { 1061 | "version": "4.0.6", 1062 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 1063 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 1064 | "dev": true, 1065 | "engines": { 1066 | "node": ">= 4" 1067 | } 1068 | }, 1069 | "node_modules/import-fresh": { 1070 | "version": "3.2.1", 1071 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 1072 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 1073 | "dev": true, 1074 | "dependencies": { 1075 | "parent-module": "^1.0.0", 1076 | "resolve-from": "^4.0.0" 1077 | }, 1078 | "engines": { 1079 | "node": ">=6" 1080 | } 1081 | }, 1082 | "node_modules/imurmurhash": { 1083 | "version": "0.1.4", 1084 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1085 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 1086 | "dev": true, 1087 | "engines": { 1088 | "node": ">=0.8.19" 1089 | } 1090 | }, 1091 | "node_modules/inflight": { 1092 | "version": "1.0.6", 1093 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1094 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1095 | "dependencies": { 1096 | "once": "^1.3.0", 1097 | "wrappy": "1" 1098 | } 1099 | }, 1100 | "node_modules/inherits": { 1101 | "version": "2.0.4", 1102 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1103 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1104 | }, 1105 | "node_modules/inquirer": { 1106 | "version": "7.0.4", 1107 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", 1108 | "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", 1109 | "dev": true, 1110 | "dependencies": { 1111 | "ansi-escapes": "^4.2.1", 1112 | "chalk": "^2.4.2", 1113 | "cli-cursor": "^3.1.0", 1114 | "cli-width": "^2.0.0", 1115 | "external-editor": "^3.0.3", 1116 | "figures": "^3.0.0", 1117 | "lodash": "^4.17.15", 1118 | "mute-stream": "0.0.8", 1119 | "run-async": "^2.2.0", 1120 | "rxjs": "^6.5.3", 1121 | "string-width": "^4.1.0", 1122 | "strip-ansi": "^5.1.0", 1123 | "through": "^2.3.6" 1124 | }, 1125 | "engines": { 1126 | "node": ">=6.0.0" 1127 | } 1128 | }, 1129 | "node_modules/is-binary-path": { 1130 | "version": "2.1.0", 1131 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1132 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1133 | "dev": true, 1134 | "dependencies": { 1135 | "binary-extensions": "^2.0.0" 1136 | }, 1137 | "engines": { 1138 | "node": ">=8" 1139 | } 1140 | }, 1141 | "node_modules/is-extglob": { 1142 | "version": "2.1.1", 1143 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1144 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1145 | "dev": true, 1146 | "engines": { 1147 | "node": ">=0.10.0" 1148 | } 1149 | }, 1150 | "node_modules/is-fullwidth-code-point": { 1151 | "version": "3.0.0", 1152 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1153 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1154 | "dev": true, 1155 | "engines": { 1156 | "node": ">=8" 1157 | } 1158 | }, 1159 | "node_modules/is-glob": { 1160 | "version": "4.0.1", 1161 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1162 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1163 | "dev": true, 1164 | "dependencies": { 1165 | "is-extglob": "^2.1.1" 1166 | }, 1167 | "engines": { 1168 | "node": ">=0.10.0" 1169 | } 1170 | }, 1171 | "node_modules/is-number": { 1172 | "version": "7.0.0", 1173 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1174 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1175 | "dev": true, 1176 | "engines": { 1177 | "node": ">=0.12.0" 1178 | } 1179 | }, 1180 | "node_modules/is-plain-obj": { 1181 | "version": "2.1.0", 1182 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 1183 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 1184 | "dev": true, 1185 | "engines": { 1186 | "node": ">=8" 1187 | } 1188 | }, 1189 | "node_modules/is-promise": { 1190 | "version": "2.1.0", 1191 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 1192 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 1193 | "dev": true 1194 | }, 1195 | "node_modules/is-unicode-supported": { 1196 | "version": "0.1.0", 1197 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1198 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 1199 | "dev": true, 1200 | "engines": { 1201 | "node": ">=10" 1202 | }, 1203 | "funding": { 1204 | "url": "https://github.com/sponsors/sindresorhus" 1205 | } 1206 | }, 1207 | "node_modules/isexe": { 1208 | "version": "2.0.0", 1209 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1210 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1211 | "dev": true 1212 | }, 1213 | "node_modules/isstream": { 1214 | "version": "0.1.2", 1215 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 1216 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 1217 | }, 1218 | "node_modules/js-tokens": { 1219 | "version": "4.0.0", 1220 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1221 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1222 | "dev": true 1223 | }, 1224 | "node_modules/js-yaml": { 1225 | "version": "3.13.1", 1226 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 1227 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 1228 | "dev": true, 1229 | "dependencies": { 1230 | "argparse": "^1.0.7", 1231 | "esprima": "^4.0.0" 1232 | }, 1233 | "bin": { 1234 | "js-yaml": "bin/js-yaml.js" 1235 | } 1236 | }, 1237 | "node_modules/json-schema-traverse": { 1238 | "version": "0.4.1", 1239 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1240 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1241 | "dev": true 1242 | }, 1243 | "node_modules/json-stable-stringify-without-jsonify": { 1244 | "version": "1.0.1", 1245 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1246 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1247 | "dev": true 1248 | }, 1249 | "node_modules/levn": { 1250 | "version": "0.3.0", 1251 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1252 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1253 | "dev": true, 1254 | "dependencies": { 1255 | "prelude-ls": "~1.1.2", 1256 | "type-check": "~0.3.2" 1257 | }, 1258 | "engines": { 1259 | "node": ">= 0.8.0" 1260 | } 1261 | }, 1262 | "node_modules/locate-path": { 1263 | "version": "6.0.0", 1264 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1265 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1266 | "dev": true, 1267 | "dependencies": { 1268 | "p-locate": "^5.0.0" 1269 | }, 1270 | "engines": { 1271 | "node": ">=10" 1272 | }, 1273 | "funding": { 1274 | "url": "https://github.com/sponsors/sindresorhus" 1275 | } 1276 | }, 1277 | "node_modules/lodash": { 1278 | "version": "4.17.21", 1279 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1280 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1281 | "dev": true 1282 | }, 1283 | "node_modules/log-symbols": { 1284 | "version": "4.1.0", 1285 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1286 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1287 | "dev": true, 1288 | "dependencies": { 1289 | "chalk": "^4.1.0", 1290 | "is-unicode-supported": "^0.1.0" 1291 | }, 1292 | "engines": { 1293 | "node": ">=10" 1294 | }, 1295 | "funding": { 1296 | "url": "https://github.com/sponsors/sindresorhus" 1297 | } 1298 | }, 1299 | "node_modules/log-symbols/node_modules/ansi-styles": { 1300 | "version": "4.3.0", 1301 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1302 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1303 | "dev": true, 1304 | "dependencies": { 1305 | "color-convert": "^2.0.1" 1306 | }, 1307 | "engines": { 1308 | "node": ">=8" 1309 | }, 1310 | "funding": { 1311 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1312 | } 1313 | }, 1314 | "node_modules/log-symbols/node_modules/chalk": { 1315 | "version": "4.1.2", 1316 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1317 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1318 | "dev": true, 1319 | "dependencies": { 1320 | "ansi-styles": "^4.1.0", 1321 | "supports-color": "^7.1.0" 1322 | }, 1323 | "engines": { 1324 | "node": ">=10" 1325 | }, 1326 | "funding": { 1327 | "url": "https://github.com/chalk/chalk?sponsor=1" 1328 | } 1329 | }, 1330 | "node_modules/log-symbols/node_modules/color-convert": { 1331 | "version": "2.0.1", 1332 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1333 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1334 | "dev": true, 1335 | "dependencies": { 1336 | "color-name": "~1.1.4" 1337 | }, 1338 | "engines": { 1339 | "node": ">=7.0.0" 1340 | } 1341 | }, 1342 | "node_modules/log-symbols/node_modules/color-name": { 1343 | "version": "1.1.4", 1344 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1345 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1346 | "dev": true 1347 | }, 1348 | "node_modules/log-symbols/node_modules/has-flag": { 1349 | "version": "4.0.0", 1350 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1351 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1352 | "dev": true, 1353 | "engines": { 1354 | "node": ">=8" 1355 | } 1356 | }, 1357 | "node_modules/log-symbols/node_modules/supports-color": { 1358 | "version": "7.2.0", 1359 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1360 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1361 | "dev": true, 1362 | "dependencies": { 1363 | "has-flag": "^4.0.0" 1364 | }, 1365 | "engines": { 1366 | "node": ">=8" 1367 | } 1368 | }, 1369 | "node_modules/mimic-fn": { 1370 | "version": "2.1.0", 1371 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1372 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1373 | "dev": true, 1374 | "engines": { 1375 | "node": ">=6" 1376 | } 1377 | }, 1378 | "node_modules/minimatch": { 1379 | "version": "3.1.2", 1380 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1381 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1382 | "dependencies": { 1383 | "brace-expansion": "^1.1.7" 1384 | }, 1385 | "engines": { 1386 | "node": "*" 1387 | } 1388 | }, 1389 | "node_modules/minimist": { 1390 | "version": "1.2.6", 1391 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1392 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 1393 | }, 1394 | "node_modules/mkdirp": { 1395 | "version": "0.5.5", 1396 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1397 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1398 | "dependencies": { 1399 | "minimist": "^1.2.5" 1400 | }, 1401 | "bin": { 1402 | "mkdirp": "bin/cmd.js" 1403 | } 1404 | }, 1405 | "node_modules/mocha": { 1406 | "version": "10.2.0", 1407 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", 1408 | "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", 1409 | "dev": true, 1410 | "dependencies": { 1411 | "ansi-colors": "4.1.1", 1412 | "browser-stdout": "1.3.1", 1413 | "chokidar": "3.5.3", 1414 | "debug": "4.3.4", 1415 | "diff": "5.0.0", 1416 | "escape-string-regexp": "4.0.0", 1417 | "find-up": "5.0.0", 1418 | "glob": "7.2.0", 1419 | "he": "1.2.0", 1420 | "js-yaml": "4.1.0", 1421 | "log-symbols": "4.1.0", 1422 | "minimatch": "5.0.1", 1423 | "ms": "2.1.3", 1424 | "nanoid": "3.3.3", 1425 | "serialize-javascript": "6.0.0", 1426 | "strip-json-comments": "3.1.1", 1427 | "supports-color": "8.1.1", 1428 | "workerpool": "6.2.1", 1429 | "yargs": "16.2.0", 1430 | "yargs-parser": "20.2.4", 1431 | "yargs-unparser": "2.0.0" 1432 | }, 1433 | "bin": { 1434 | "_mocha": "bin/_mocha", 1435 | "mocha": "bin/mocha.js" 1436 | }, 1437 | "engines": { 1438 | "node": ">= 14.0.0" 1439 | }, 1440 | "funding": { 1441 | "type": "opencollective", 1442 | "url": "https://opencollective.com/mochajs" 1443 | } 1444 | }, 1445 | "node_modules/mocha/node_modules/argparse": { 1446 | "version": "2.0.1", 1447 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 1448 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 1449 | "dev": true 1450 | }, 1451 | "node_modules/mocha/node_modules/brace-expansion": { 1452 | "version": "2.0.1", 1453 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1454 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1455 | "dev": true, 1456 | "dependencies": { 1457 | "balanced-match": "^1.0.0" 1458 | } 1459 | }, 1460 | "node_modules/mocha/node_modules/escape-string-regexp": { 1461 | "version": "4.0.0", 1462 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 1463 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 1464 | "dev": true, 1465 | "engines": { 1466 | "node": ">=10" 1467 | }, 1468 | "funding": { 1469 | "url": "https://github.com/sponsors/sindresorhus" 1470 | } 1471 | }, 1472 | "node_modules/mocha/node_modules/has-flag": { 1473 | "version": "4.0.0", 1474 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1475 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1476 | "dev": true, 1477 | "engines": { 1478 | "node": ">=8" 1479 | } 1480 | }, 1481 | "node_modules/mocha/node_modules/js-yaml": { 1482 | "version": "4.1.0", 1483 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1484 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1485 | "dev": true, 1486 | "dependencies": { 1487 | "argparse": "^2.0.1" 1488 | }, 1489 | "bin": { 1490 | "js-yaml": "bin/js-yaml.js" 1491 | } 1492 | }, 1493 | "node_modules/mocha/node_modules/minimatch": { 1494 | "version": "5.0.1", 1495 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 1496 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 1497 | "dev": true, 1498 | "dependencies": { 1499 | "brace-expansion": "^2.0.1" 1500 | }, 1501 | "engines": { 1502 | "node": ">=10" 1503 | } 1504 | }, 1505 | "node_modules/mocha/node_modules/ms": { 1506 | "version": "2.1.3", 1507 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1508 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1509 | "dev": true 1510 | }, 1511 | "node_modules/mocha/node_modules/supports-color": { 1512 | "version": "8.1.1", 1513 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1514 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1515 | "dev": true, 1516 | "dependencies": { 1517 | "has-flag": "^4.0.0" 1518 | }, 1519 | "engines": { 1520 | "node": ">=10" 1521 | }, 1522 | "funding": { 1523 | "url": "https://github.com/chalk/supports-color?sponsor=1" 1524 | } 1525 | }, 1526 | "node_modules/ms": { 1527 | "version": "2.1.2", 1528 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1529 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1530 | "dev": true 1531 | }, 1532 | "node_modules/mute-stream": { 1533 | "version": "0.0.8", 1534 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1535 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 1536 | }, 1537 | "node_modules/nanoid": { 1538 | "version": "3.3.3", 1539 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 1540 | "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 1541 | "dev": true, 1542 | "bin": { 1543 | "nanoid": "bin/nanoid.cjs" 1544 | }, 1545 | "engines": { 1546 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1547 | } 1548 | }, 1549 | "node_modules/natural-compare": { 1550 | "version": "1.4.0", 1551 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1552 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1553 | "dev": true 1554 | }, 1555 | "node_modules/ncp": { 1556 | "version": "1.0.1", 1557 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", 1558 | "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=", 1559 | "bin": { 1560 | "ncp": "bin/ncp" 1561 | } 1562 | }, 1563 | "node_modules/nice-try": { 1564 | "version": "1.0.5", 1565 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1566 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1567 | "dev": true 1568 | }, 1569 | "node_modules/normalize-path": { 1570 | "version": "3.0.0", 1571 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1572 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1573 | "dev": true, 1574 | "engines": { 1575 | "node": ">=0.10.0" 1576 | } 1577 | }, 1578 | "node_modules/once": { 1579 | "version": "1.4.0", 1580 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1581 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1582 | "dependencies": { 1583 | "wrappy": "1" 1584 | } 1585 | }, 1586 | "node_modules/onetime": { 1587 | "version": "5.1.0", 1588 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 1589 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 1590 | "dev": true, 1591 | "dependencies": { 1592 | "mimic-fn": "^2.1.0" 1593 | }, 1594 | "engines": { 1595 | "node": ">=6" 1596 | } 1597 | }, 1598 | "node_modules/optionator": { 1599 | "version": "0.8.3", 1600 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1601 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1602 | "dev": true, 1603 | "dependencies": { 1604 | "deep-is": "~0.1.3", 1605 | "fast-levenshtein": "~2.0.6", 1606 | "levn": "~0.3.0", 1607 | "prelude-ls": "~1.1.2", 1608 | "type-check": "~0.3.2", 1609 | "word-wrap": "~1.2.3" 1610 | }, 1611 | "engines": { 1612 | "node": ">= 0.8.0" 1613 | } 1614 | }, 1615 | "node_modules/os-tmpdir": { 1616 | "version": "1.0.2", 1617 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1618 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1619 | "dev": true, 1620 | "engines": { 1621 | "node": ">=0.10.0" 1622 | } 1623 | }, 1624 | "node_modules/p-limit": { 1625 | "version": "3.1.0", 1626 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1627 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1628 | "dev": true, 1629 | "dependencies": { 1630 | "yocto-queue": "^0.1.0" 1631 | }, 1632 | "engines": { 1633 | "node": ">=10" 1634 | }, 1635 | "funding": { 1636 | "url": "https://github.com/sponsors/sindresorhus" 1637 | } 1638 | }, 1639 | "node_modules/p-locate": { 1640 | "version": "5.0.0", 1641 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1642 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1643 | "dev": true, 1644 | "dependencies": { 1645 | "p-limit": "^3.0.2" 1646 | }, 1647 | "engines": { 1648 | "node": ">=10" 1649 | }, 1650 | "funding": { 1651 | "url": "https://github.com/sponsors/sindresorhus" 1652 | } 1653 | }, 1654 | "node_modules/parent-module": { 1655 | "version": "1.0.1", 1656 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1657 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1658 | "dev": true, 1659 | "dependencies": { 1660 | "callsites": "^3.0.0" 1661 | }, 1662 | "engines": { 1663 | "node": ">=6" 1664 | } 1665 | }, 1666 | "node_modules/path-exists": { 1667 | "version": "4.0.0", 1668 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1669 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1670 | "dev": true, 1671 | "engines": { 1672 | "node": ">=8" 1673 | } 1674 | }, 1675 | "node_modules/path-is-absolute": { 1676 | "version": "1.0.1", 1677 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1678 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1679 | "engines": { 1680 | "node": ">=0.10.0" 1681 | } 1682 | }, 1683 | "node_modules/path-key": { 1684 | "version": "2.0.1", 1685 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1686 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1687 | "dev": true, 1688 | "engines": { 1689 | "node": ">=4" 1690 | } 1691 | }, 1692 | "node_modules/path-parse": { 1693 | "version": "1.0.7", 1694 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1695 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1696 | "dev": true 1697 | }, 1698 | "node_modules/pathval": { 1699 | "version": "1.1.1", 1700 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 1701 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 1702 | "dev": true, 1703 | "engines": { 1704 | "node": "*" 1705 | } 1706 | }, 1707 | "node_modules/picomatch": { 1708 | "version": "2.3.1", 1709 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1710 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1711 | "dev": true, 1712 | "engines": { 1713 | "node": ">=8.6" 1714 | }, 1715 | "funding": { 1716 | "url": "https://github.com/sponsors/jonschlinkert" 1717 | } 1718 | }, 1719 | "node_modules/pkginfo": { 1720 | "version": "0.4.1", 1721 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", 1722 | "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", 1723 | "engines": { 1724 | "node": ">= 0.4.0" 1725 | } 1726 | }, 1727 | "node_modules/prelude-ls": { 1728 | "version": "1.1.2", 1729 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1730 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1731 | "dev": true, 1732 | "engines": { 1733 | "node": ">= 0.8.0" 1734 | } 1735 | }, 1736 | "node_modules/prettier": { 1737 | "version": "1.19.1", 1738 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", 1739 | "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", 1740 | "dev": true, 1741 | "bin": { 1742 | "prettier": "bin-prettier.js" 1743 | }, 1744 | "engines": { 1745 | "node": ">=4" 1746 | } 1747 | }, 1748 | "node_modules/prettier-linter-helpers": { 1749 | "version": "1.0.0", 1750 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 1751 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 1752 | "dev": true, 1753 | "dependencies": { 1754 | "fast-diff": "^1.1.2" 1755 | }, 1756 | "engines": { 1757 | "node": ">=6.0.0" 1758 | } 1759 | }, 1760 | "node_modules/progress": { 1761 | "version": "2.0.3", 1762 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1763 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1764 | "dev": true, 1765 | "engines": { 1766 | "node": ">=0.4.0" 1767 | } 1768 | }, 1769 | "node_modules/prompt": { 1770 | "version": "1.0.0", 1771 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz", 1772 | "integrity": "sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=", 1773 | "dependencies": { 1774 | "colors": "^1.1.2", 1775 | "pkginfo": "0.x.x", 1776 | "read": "1.0.x", 1777 | "revalidator": "0.1.x", 1778 | "utile": "0.3.x", 1779 | "winston": "2.1.x" 1780 | }, 1781 | "engines": { 1782 | "node": ">= 0.6.6" 1783 | } 1784 | }, 1785 | "node_modules/punycode": { 1786 | "version": "2.1.1", 1787 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1788 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1789 | "dev": true, 1790 | "engines": { 1791 | "node": ">=6" 1792 | } 1793 | }, 1794 | "node_modules/randombytes": { 1795 | "version": "2.1.0", 1796 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 1797 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 1798 | "dev": true, 1799 | "dependencies": { 1800 | "safe-buffer": "^5.1.0" 1801 | } 1802 | }, 1803 | "node_modules/read": { 1804 | "version": "1.0.7", 1805 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 1806 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", 1807 | "dependencies": { 1808 | "mute-stream": "~0.0.4" 1809 | }, 1810 | "engines": { 1811 | "node": ">=0.8" 1812 | } 1813 | }, 1814 | "node_modules/readdirp": { 1815 | "version": "3.6.0", 1816 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1817 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1818 | "dev": true, 1819 | "dependencies": { 1820 | "picomatch": "^2.2.1" 1821 | }, 1822 | "engines": { 1823 | "node": ">=8.10.0" 1824 | } 1825 | }, 1826 | "node_modules/regexpp": { 1827 | "version": "2.0.1", 1828 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 1829 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 1830 | "dev": true, 1831 | "engines": { 1832 | "node": ">=6.5.0" 1833 | } 1834 | }, 1835 | "node_modules/require-directory": { 1836 | "version": "2.1.1", 1837 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1838 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1839 | "dev": true, 1840 | "engines": { 1841 | "node": ">=0.10.0" 1842 | } 1843 | }, 1844 | "node_modules/resolve": { 1845 | "version": "1.15.0", 1846 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", 1847 | "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", 1848 | "dev": true, 1849 | "dependencies": { 1850 | "path-parse": "^1.0.6" 1851 | } 1852 | }, 1853 | "node_modules/resolve-from": { 1854 | "version": "4.0.0", 1855 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1856 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1857 | "dev": true, 1858 | "engines": { 1859 | "node": ">=4" 1860 | } 1861 | }, 1862 | "node_modules/restore-cursor": { 1863 | "version": "3.1.0", 1864 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1865 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1866 | "dev": true, 1867 | "dependencies": { 1868 | "onetime": "^5.1.0", 1869 | "signal-exit": "^3.0.2" 1870 | }, 1871 | "engines": { 1872 | "node": ">=8" 1873 | } 1874 | }, 1875 | "node_modules/revalidator": { 1876 | "version": "0.1.8", 1877 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", 1878 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=", 1879 | "engines": { 1880 | "node": ">= 0.4.0" 1881 | } 1882 | }, 1883 | "node_modules/rimraf": { 1884 | "version": "2.7.1", 1885 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 1886 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 1887 | "dependencies": { 1888 | "glob": "^7.1.3" 1889 | }, 1890 | "bin": { 1891 | "rimraf": "bin.js" 1892 | } 1893 | }, 1894 | "node_modules/run-async": { 1895 | "version": "2.3.0", 1896 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 1897 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 1898 | "dev": true, 1899 | "dependencies": { 1900 | "is-promise": "^2.1.0" 1901 | }, 1902 | "engines": { 1903 | "node": ">=0.12.0" 1904 | } 1905 | }, 1906 | "node_modules/rxjs": { 1907 | "version": "6.5.4", 1908 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", 1909 | "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", 1910 | "dev": true, 1911 | "dependencies": { 1912 | "tslib": "^1.9.0" 1913 | }, 1914 | "engines": { 1915 | "npm": ">=2.0.0" 1916 | } 1917 | }, 1918 | "node_modules/safe-buffer": { 1919 | "version": "5.2.1", 1920 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1921 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1922 | "dev": true, 1923 | "funding": [ 1924 | { 1925 | "type": "github", 1926 | "url": "https://github.com/sponsors/feross" 1927 | }, 1928 | { 1929 | "type": "patreon", 1930 | "url": "https://www.patreon.com/feross" 1931 | }, 1932 | { 1933 | "type": "consulting", 1934 | "url": "https://feross.org/support" 1935 | } 1936 | ] 1937 | }, 1938 | "node_modules/safer-buffer": { 1939 | "version": "2.1.2", 1940 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1941 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1942 | "dev": true 1943 | }, 1944 | "node_modules/semver": { 1945 | "version": "6.3.0", 1946 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1947 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1948 | "dev": true, 1949 | "bin": { 1950 | "semver": "bin/semver.js" 1951 | } 1952 | }, 1953 | "node_modules/serialize-javascript": { 1954 | "version": "6.0.0", 1955 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 1956 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 1957 | "dev": true, 1958 | "dependencies": { 1959 | "randombytes": "^2.1.0" 1960 | } 1961 | }, 1962 | "node_modules/shebang-command": { 1963 | "version": "1.2.0", 1964 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1965 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1966 | "dev": true, 1967 | "dependencies": { 1968 | "shebang-regex": "^1.0.0" 1969 | }, 1970 | "engines": { 1971 | "node": ">=0.10.0" 1972 | } 1973 | }, 1974 | "node_modules/shebang-regex": { 1975 | "version": "1.0.0", 1976 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1977 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1978 | "dev": true, 1979 | "engines": { 1980 | "node": ">=0.10.0" 1981 | } 1982 | }, 1983 | "node_modules/signal-exit": { 1984 | "version": "3.0.2", 1985 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 1986 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 1987 | "dev": true 1988 | }, 1989 | "node_modules/slice-ansi": { 1990 | "version": "2.1.0", 1991 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1992 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1993 | "dev": true, 1994 | "dependencies": { 1995 | "ansi-styles": "^3.2.0", 1996 | "astral-regex": "^1.0.0", 1997 | "is-fullwidth-code-point": "^2.0.0" 1998 | }, 1999 | "engines": { 2000 | "node": ">=6" 2001 | } 2002 | }, 2003 | "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { 2004 | "version": "2.0.0", 2005 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2006 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2007 | "dev": true, 2008 | "engines": { 2009 | "node": ">=4" 2010 | } 2011 | }, 2012 | "node_modules/sprintf-js": { 2013 | "version": "1.0.3", 2014 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 2015 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 2016 | "dev": true 2017 | }, 2018 | "node_modules/stack-trace": { 2019 | "version": "0.0.10", 2020 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 2021 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", 2022 | "engines": { 2023 | "node": "*" 2024 | } 2025 | }, 2026 | "node_modules/string-width": { 2027 | "version": "4.2.0", 2028 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 2029 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 2030 | "dev": true, 2031 | "dependencies": { 2032 | "emoji-regex": "^8.0.0", 2033 | "is-fullwidth-code-point": "^3.0.0", 2034 | "strip-ansi": "^6.0.0" 2035 | }, 2036 | "engines": { 2037 | "node": ">=8" 2038 | } 2039 | }, 2040 | "node_modules/string-width/node_modules/strip-ansi": { 2041 | "version": "6.0.0", 2042 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2043 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 2044 | "dev": true, 2045 | "dependencies": { 2046 | "ansi-regex": "^5.0.0" 2047 | }, 2048 | "engines": { 2049 | "node": ">=8" 2050 | } 2051 | }, 2052 | "node_modules/strip-ansi": { 2053 | "version": "5.2.0", 2054 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 2055 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 2056 | "dev": true, 2057 | "dependencies": { 2058 | "ansi-regex": "^4.1.0" 2059 | }, 2060 | "engines": { 2061 | "node": ">=6" 2062 | } 2063 | }, 2064 | "node_modules/strip-ansi/node_modules/ansi-regex": { 2065 | "version": "4.1.1", 2066 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 2067 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", 2068 | "dev": true, 2069 | "engines": { 2070 | "node": ">=6" 2071 | } 2072 | }, 2073 | "node_modules/strip-json-comments": { 2074 | "version": "3.1.1", 2075 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2076 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2077 | "dev": true, 2078 | "engines": { 2079 | "node": ">=8" 2080 | }, 2081 | "funding": { 2082 | "url": "https://github.com/sponsors/sindresorhus" 2083 | } 2084 | }, 2085 | "node_modules/supports-color": { 2086 | "version": "5.5.0", 2087 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2088 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2089 | "dev": true, 2090 | "dependencies": { 2091 | "has-flag": "^3.0.0" 2092 | }, 2093 | "engines": { 2094 | "node": ">=4" 2095 | } 2096 | }, 2097 | "node_modules/table": { 2098 | "version": "5.4.6", 2099 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 2100 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 2101 | "dev": true, 2102 | "dependencies": { 2103 | "ajv": "^6.10.2", 2104 | "lodash": "^4.17.14", 2105 | "slice-ansi": "^2.1.0", 2106 | "string-width": "^3.0.0" 2107 | }, 2108 | "engines": { 2109 | "node": ">=6.0.0" 2110 | } 2111 | }, 2112 | "node_modules/table/node_modules/emoji-regex": { 2113 | "version": "7.0.3", 2114 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 2115 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 2116 | "dev": true 2117 | }, 2118 | "node_modules/table/node_modules/is-fullwidth-code-point": { 2119 | "version": "2.0.0", 2120 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 2121 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 2122 | "dev": true, 2123 | "engines": { 2124 | "node": ">=4" 2125 | } 2126 | }, 2127 | "node_modules/table/node_modules/string-width": { 2128 | "version": "3.1.0", 2129 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 2130 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 2131 | "dev": true, 2132 | "dependencies": { 2133 | "emoji-regex": "^7.0.1", 2134 | "is-fullwidth-code-point": "^2.0.0", 2135 | "strip-ansi": "^5.1.0" 2136 | }, 2137 | "engines": { 2138 | "node": ">=6" 2139 | } 2140 | }, 2141 | "node_modules/text-table": { 2142 | "version": "0.2.0", 2143 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2144 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 2145 | "dev": true 2146 | }, 2147 | "node_modules/through": { 2148 | "version": "2.3.8", 2149 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 2150 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 2151 | "dev": true 2152 | }, 2153 | "node_modules/tmp": { 2154 | "version": "0.0.33", 2155 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 2156 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 2157 | "dev": true, 2158 | "dependencies": { 2159 | "os-tmpdir": "~1.0.2" 2160 | }, 2161 | "engines": { 2162 | "node": ">=0.6.0" 2163 | } 2164 | }, 2165 | "node_modules/to-regex-range": { 2166 | "version": "5.0.1", 2167 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2168 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2169 | "dev": true, 2170 | "dependencies": { 2171 | "is-number": "^7.0.0" 2172 | }, 2173 | "engines": { 2174 | "node": ">=8.0" 2175 | } 2176 | }, 2177 | "node_modules/tslib": { 2178 | "version": "1.10.0", 2179 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 2180 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", 2181 | "dev": true 2182 | }, 2183 | "node_modules/type-check": { 2184 | "version": "0.3.2", 2185 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 2186 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 2187 | "dev": true, 2188 | "dependencies": { 2189 | "prelude-ls": "~1.1.2" 2190 | }, 2191 | "engines": { 2192 | "node": ">= 0.8.0" 2193 | } 2194 | }, 2195 | "node_modules/type-detect": { 2196 | "version": "4.0.8", 2197 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 2198 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 2199 | "dev": true, 2200 | "engines": { 2201 | "node": ">=4" 2202 | } 2203 | }, 2204 | "node_modules/type-fest": { 2205 | "version": "0.8.1", 2206 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 2207 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 2208 | "dev": true, 2209 | "engines": { 2210 | "node": ">=8" 2211 | } 2212 | }, 2213 | "node_modules/unix-crypt-td-js": { 2214 | "version": "1.1.4", 2215 | "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", 2216 | "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==" 2217 | }, 2218 | "node_modules/uri-js": { 2219 | "version": "4.2.2", 2220 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 2221 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 2222 | "dev": true, 2223 | "dependencies": { 2224 | "punycode": "^2.1.0" 2225 | } 2226 | }, 2227 | "node_modules/utile": { 2228 | "version": "0.3.0", 2229 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz", 2230 | "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=", 2231 | "dependencies": { 2232 | "async": "~0.9.0", 2233 | "deep-equal": "~0.2.1", 2234 | "i": "0.3.x", 2235 | "mkdirp": "0.x.x", 2236 | "ncp": "1.0.x", 2237 | "rimraf": "2.x.x" 2238 | }, 2239 | "engines": { 2240 | "node": ">= 0.8.0" 2241 | } 2242 | }, 2243 | "node_modules/v8-compile-cache": { 2244 | "version": "2.1.0", 2245 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 2246 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", 2247 | "dev": true 2248 | }, 2249 | "node_modules/which": { 2250 | "version": "1.3.1", 2251 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2252 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2253 | "dev": true, 2254 | "dependencies": { 2255 | "isexe": "^2.0.0" 2256 | }, 2257 | "bin": { 2258 | "which": "bin/which" 2259 | } 2260 | }, 2261 | "node_modules/winston": { 2262 | "version": "2.1.1", 2263 | "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz", 2264 | "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=", 2265 | "dependencies": { 2266 | "async": "~1.0.0", 2267 | "colors": "1.0.x", 2268 | "cycle": "1.0.x", 2269 | "eyes": "0.1.x", 2270 | "isstream": "0.1.x", 2271 | "pkginfo": "0.3.x", 2272 | "stack-trace": "0.0.x" 2273 | }, 2274 | "engines": { 2275 | "node": ">= 0.8.0" 2276 | } 2277 | }, 2278 | "node_modules/winston/node_modules/async": { 2279 | "version": "1.0.0", 2280 | "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", 2281 | "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" 2282 | }, 2283 | "node_modules/winston/node_modules/colors": { 2284 | "version": "1.0.3", 2285 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 2286 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", 2287 | "engines": { 2288 | "node": ">=0.1.90" 2289 | } 2290 | }, 2291 | "node_modules/winston/node_modules/pkginfo": { 2292 | "version": "0.3.1", 2293 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", 2294 | "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=", 2295 | "engines": { 2296 | "node": ">= 0.4.0" 2297 | } 2298 | }, 2299 | "node_modules/word-wrap": { 2300 | "version": "1.2.4", 2301 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", 2302 | "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", 2303 | "dev": true, 2304 | "engines": { 2305 | "node": ">=0.10.0" 2306 | } 2307 | }, 2308 | "node_modules/workerpool": { 2309 | "version": "6.2.1", 2310 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 2311 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 2312 | "dev": true 2313 | }, 2314 | "node_modules/wrap-ansi": { 2315 | "version": "7.0.0", 2316 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2317 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2318 | "dev": true, 2319 | "dependencies": { 2320 | "ansi-styles": "^4.0.0", 2321 | "string-width": "^4.1.0", 2322 | "strip-ansi": "^6.0.0" 2323 | }, 2324 | "engines": { 2325 | "node": ">=10" 2326 | }, 2327 | "funding": { 2328 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2329 | } 2330 | }, 2331 | "node_modules/wrap-ansi/node_modules/ansi-styles": { 2332 | "version": "4.3.0", 2333 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2334 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2335 | "dev": true, 2336 | "dependencies": { 2337 | "color-convert": "^2.0.1" 2338 | }, 2339 | "engines": { 2340 | "node": ">=8" 2341 | }, 2342 | "funding": { 2343 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2344 | } 2345 | }, 2346 | "node_modules/wrap-ansi/node_modules/color-convert": { 2347 | "version": "2.0.1", 2348 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2349 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2350 | "dev": true, 2351 | "dependencies": { 2352 | "color-name": "~1.1.4" 2353 | }, 2354 | "engines": { 2355 | "node": ">=7.0.0" 2356 | } 2357 | }, 2358 | "node_modules/wrap-ansi/node_modules/color-name": { 2359 | "version": "1.1.4", 2360 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2361 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2362 | "dev": true 2363 | }, 2364 | "node_modules/wrap-ansi/node_modules/strip-ansi": { 2365 | "version": "6.0.1", 2366 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2367 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2368 | "dev": true, 2369 | "dependencies": { 2370 | "ansi-regex": "^5.0.1" 2371 | }, 2372 | "engines": { 2373 | "node": ">=8" 2374 | } 2375 | }, 2376 | "node_modules/wrappy": { 2377 | "version": "1.0.2", 2378 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2379 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 2380 | }, 2381 | "node_modules/write": { 2382 | "version": "1.0.3", 2383 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 2384 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 2385 | "dev": true, 2386 | "dependencies": { 2387 | "mkdirp": "^0.5.1" 2388 | }, 2389 | "engines": { 2390 | "node": ">=4" 2391 | } 2392 | }, 2393 | "node_modules/y18n": { 2394 | "version": "5.0.8", 2395 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2396 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2397 | "dev": true, 2398 | "engines": { 2399 | "node": ">=10" 2400 | } 2401 | }, 2402 | "node_modules/yargs": { 2403 | "version": "16.2.0", 2404 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2405 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2406 | "dev": true, 2407 | "dependencies": { 2408 | "cliui": "^7.0.2", 2409 | "escalade": "^3.1.1", 2410 | "get-caller-file": "^2.0.5", 2411 | "require-directory": "^2.1.1", 2412 | "string-width": "^4.2.0", 2413 | "y18n": "^5.0.5", 2414 | "yargs-parser": "^20.2.2" 2415 | }, 2416 | "engines": { 2417 | "node": ">=10" 2418 | } 2419 | }, 2420 | "node_modules/yargs-parser": { 2421 | "version": "20.2.4", 2422 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 2423 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 2424 | "dev": true, 2425 | "engines": { 2426 | "node": ">=10" 2427 | } 2428 | }, 2429 | "node_modules/yargs-unparser": { 2430 | "version": "2.0.0", 2431 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 2432 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 2433 | "dev": true, 2434 | "dependencies": { 2435 | "camelcase": "^6.0.0", 2436 | "decamelize": "^4.0.0", 2437 | "flat": "^5.0.2", 2438 | "is-plain-obj": "^2.1.0" 2439 | }, 2440 | "engines": { 2441 | "node": ">=10" 2442 | } 2443 | }, 2444 | "node_modules/yocto-queue": { 2445 | "version": "0.1.0", 2446 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2447 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2448 | "dev": true, 2449 | "engines": { 2450 | "node": ">=10" 2451 | }, 2452 | "funding": { 2453 | "url": "https://github.com/sponsors/sindresorhus" 2454 | } 2455 | } 2456 | }, 2457 | "dependencies": { 2458 | "@babel/code-frame": { 2459 | "version": "7.8.3", 2460 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", 2461 | "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", 2462 | "dev": true, 2463 | "requires": { 2464 | "@babel/highlight": "^7.8.3" 2465 | } 2466 | }, 2467 | "@babel/highlight": { 2468 | "version": "7.8.3", 2469 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", 2470 | "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", 2471 | "dev": true, 2472 | "requires": { 2473 | "chalk": "^2.0.0", 2474 | "esutils": "^2.0.2", 2475 | "js-tokens": "^4.0.0" 2476 | } 2477 | }, 2478 | "acorn": { 2479 | "version": "7.1.1", 2480 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", 2481 | "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", 2482 | "dev": true 2483 | }, 2484 | "acorn-jsx": { 2485 | "version": "5.1.0", 2486 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", 2487 | "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", 2488 | "dev": true 2489 | }, 2490 | "ajv": { 2491 | "version": "6.12.6", 2492 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2493 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2494 | "dev": true, 2495 | "requires": { 2496 | "fast-deep-equal": "^3.1.1", 2497 | "fast-json-stable-stringify": "^2.0.0", 2498 | "json-schema-traverse": "^0.4.1", 2499 | "uri-js": "^4.2.2" 2500 | } 2501 | }, 2502 | "ansi-colors": { 2503 | "version": "4.1.1", 2504 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 2505 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", 2506 | "dev": true 2507 | }, 2508 | "ansi-escapes": { 2509 | "version": "4.3.0", 2510 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", 2511 | "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", 2512 | "dev": true, 2513 | "requires": { 2514 | "type-fest": "^0.8.1" 2515 | } 2516 | }, 2517 | "ansi-regex": { 2518 | "version": "5.0.1", 2519 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2520 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2521 | "dev": true 2522 | }, 2523 | "ansi-styles": { 2524 | "version": "3.2.1", 2525 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 2526 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 2527 | "dev": true, 2528 | "requires": { 2529 | "color-convert": "^1.9.0" 2530 | } 2531 | }, 2532 | "anymatch": { 2533 | "version": "3.1.3", 2534 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 2535 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 2536 | "dev": true, 2537 | "requires": { 2538 | "normalize-path": "^3.0.0", 2539 | "picomatch": "^2.0.4" 2540 | } 2541 | }, 2542 | "apache-crypt": { 2543 | "version": "1.2.3", 2544 | "resolved": "https://registry.npmjs.org/apache-crypt/-/apache-crypt-1.2.3.tgz", 2545 | "integrity": "sha512-NUNPHfU0Qh42YkFijlzXdPNOB1iXFVe5sR1F2HOg6yEQu+SivESFE7HoTDfhQGDG6iI4c6TWX+yhj+46uhMH7A==", 2546 | "requires": { 2547 | "unix-crypt-td-js": "^1.1.4" 2548 | } 2549 | }, 2550 | "apache-md5": { 2551 | "version": "1.1.5", 2552 | "resolved": "https://registry.npmjs.org/apache-md5/-/apache-md5-1.1.5.tgz", 2553 | "integrity": "sha512-sbLEIMQrkV7RkIruqTPXxeCMkAAycv4yzTkBzRgOR1BrR5UB7qZtupqxkersTJSf0HZ3sbaNRrNV80TnnM7cUw==" 2554 | }, 2555 | "argparse": { 2556 | "version": "1.0.10", 2557 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 2558 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 2559 | "dev": true, 2560 | "requires": { 2561 | "sprintf-js": "~1.0.2" 2562 | } 2563 | }, 2564 | "assertion-error": { 2565 | "version": "1.1.0", 2566 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 2567 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", 2568 | "dev": true 2569 | }, 2570 | "astral-regex": { 2571 | "version": "1.0.0", 2572 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 2573 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 2574 | "dev": true 2575 | }, 2576 | "async": { 2577 | "version": "0.9.2", 2578 | "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", 2579 | "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" 2580 | }, 2581 | "balanced-match": { 2582 | "version": "1.0.0", 2583 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 2584 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 2585 | }, 2586 | "bcryptjs": { 2587 | "version": "2.4.3", 2588 | "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", 2589 | "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" 2590 | }, 2591 | "binary-extensions": { 2592 | "version": "2.2.0", 2593 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 2594 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 2595 | "dev": true 2596 | }, 2597 | "brace-expansion": { 2598 | "version": "1.1.11", 2599 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2600 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2601 | "requires": { 2602 | "balanced-match": "^1.0.0", 2603 | "concat-map": "0.0.1" 2604 | } 2605 | }, 2606 | "braces": { 2607 | "version": "3.0.2", 2608 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 2609 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 2610 | "dev": true, 2611 | "requires": { 2612 | "fill-range": "^7.0.1" 2613 | } 2614 | }, 2615 | "browser-stdout": { 2616 | "version": "1.3.1", 2617 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 2618 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", 2619 | "dev": true 2620 | }, 2621 | "callsites": { 2622 | "version": "3.1.0", 2623 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2624 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2625 | "dev": true 2626 | }, 2627 | "camelcase": { 2628 | "version": "6.3.0", 2629 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", 2630 | "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", 2631 | "dev": true 2632 | }, 2633 | "chai": { 2634 | "version": "4.2.0", 2635 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 2636 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 2637 | "dev": true, 2638 | "requires": { 2639 | "assertion-error": "^1.1.0", 2640 | "check-error": "^1.0.2", 2641 | "deep-eql": "^3.0.1", 2642 | "get-func-name": "^2.0.0", 2643 | "pathval": "^1.1.0", 2644 | "type-detect": "^4.0.5" 2645 | } 2646 | }, 2647 | "chalk": { 2648 | "version": "2.4.2", 2649 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 2650 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 2651 | "dev": true, 2652 | "requires": { 2653 | "ansi-styles": "^3.2.1", 2654 | "escape-string-regexp": "^1.0.5", 2655 | "supports-color": "^5.3.0" 2656 | } 2657 | }, 2658 | "chardet": { 2659 | "version": "0.7.0", 2660 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 2661 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 2662 | "dev": true 2663 | }, 2664 | "check-error": { 2665 | "version": "1.0.2", 2666 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 2667 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 2668 | "dev": true 2669 | }, 2670 | "chokidar": { 2671 | "version": "3.5.3", 2672 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 2673 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 2674 | "dev": true, 2675 | "requires": { 2676 | "anymatch": "~3.1.2", 2677 | "braces": "~3.0.2", 2678 | "fsevents": "~2.3.2", 2679 | "glob-parent": "~5.1.2", 2680 | "is-binary-path": "~2.1.0", 2681 | "is-glob": "~4.0.1", 2682 | "normalize-path": "~3.0.0", 2683 | "readdirp": "~3.6.0" 2684 | } 2685 | }, 2686 | "cli-cursor": { 2687 | "version": "3.1.0", 2688 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 2689 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 2690 | "dev": true, 2691 | "requires": { 2692 | "restore-cursor": "^3.1.0" 2693 | } 2694 | }, 2695 | "cli-width": { 2696 | "version": "2.2.0", 2697 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", 2698 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", 2699 | "dev": true 2700 | }, 2701 | "cliui": { 2702 | "version": "7.0.4", 2703 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 2704 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 2705 | "dev": true, 2706 | "requires": { 2707 | "string-width": "^4.2.0", 2708 | "strip-ansi": "^6.0.0", 2709 | "wrap-ansi": "^7.0.0" 2710 | }, 2711 | "dependencies": { 2712 | "strip-ansi": { 2713 | "version": "6.0.1", 2714 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2715 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2716 | "dev": true, 2717 | "requires": { 2718 | "ansi-regex": "^5.0.1" 2719 | } 2720 | } 2721 | } 2722 | }, 2723 | "color-convert": { 2724 | "version": "1.9.3", 2725 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 2726 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 2727 | "dev": true, 2728 | "requires": { 2729 | "color-name": "1.1.3" 2730 | } 2731 | }, 2732 | "color-name": { 2733 | "version": "1.1.3", 2734 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 2735 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 2736 | "dev": true 2737 | }, 2738 | "colors": { 2739 | "version": "1.4.0", 2740 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", 2741 | "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" 2742 | }, 2743 | "commander": { 2744 | "version": "2.20.3", 2745 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 2746 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 2747 | }, 2748 | "concat-map": { 2749 | "version": "0.0.1", 2750 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2751 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 2752 | }, 2753 | "cross-spawn": { 2754 | "version": "6.0.5", 2755 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 2756 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 2757 | "dev": true, 2758 | "requires": { 2759 | "nice-try": "^1.0.4", 2760 | "path-key": "^2.0.1", 2761 | "semver": "^5.5.0", 2762 | "shebang-command": "^1.2.0", 2763 | "which": "^1.2.9" 2764 | }, 2765 | "dependencies": { 2766 | "semver": { 2767 | "version": "5.7.1", 2768 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 2769 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 2770 | "dev": true 2771 | } 2772 | } 2773 | }, 2774 | "cycle": { 2775 | "version": "1.0.3", 2776 | "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", 2777 | "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" 2778 | }, 2779 | "debug": { 2780 | "version": "4.3.4", 2781 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2782 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2783 | "dev": true, 2784 | "requires": { 2785 | "ms": "2.1.2" 2786 | } 2787 | }, 2788 | "decamelize": { 2789 | "version": "4.0.0", 2790 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", 2791 | "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", 2792 | "dev": true 2793 | }, 2794 | "deep-eql": { 2795 | "version": "3.0.1", 2796 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 2797 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 2798 | "dev": true, 2799 | "requires": { 2800 | "type-detect": "^4.0.0" 2801 | } 2802 | }, 2803 | "deep-equal": { 2804 | "version": "0.2.2", 2805 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz", 2806 | "integrity": "sha1-hLdFiW80xoTpjyzg5Cq69Du6AX0=" 2807 | }, 2808 | "deep-is": { 2809 | "version": "0.1.3", 2810 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 2811 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 2812 | "dev": true 2813 | }, 2814 | "diff": { 2815 | "version": "5.0.0", 2816 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", 2817 | "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", 2818 | "dev": true 2819 | }, 2820 | "doctrine": { 2821 | "version": "3.0.0", 2822 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 2823 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 2824 | "dev": true, 2825 | "requires": { 2826 | "esutils": "^2.0.2" 2827 | } 2828 | }, 2829 | "emoji-regex": { 2830 | "version": "8.0.0", 2831 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2832 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2833 | "dev": true 2834 | }, 2835 | "escalade": { 2836 | "version": "3.1.1", 2837 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 2838 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 2839 | "dev": true 2840 | }, 2841 | "escape-string-regexp": { 2842 | "version": "1.0.5", 2843 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2844 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 2845 | "dev": true 2846 | }, 2847 | "eslint": { 2848 | "version": "6.8.0", 2849 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", 2850 | "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", 2851 | "dev": true, 2852 | "requires": { 2853 | "@babel/code-frame": "^7.0.0", 2854 | "ajv": "^6.10.0", 2855 | "chalk": "^2.1.0", 2856 | "cross-spawn": "^6.0.5", 2857 | "debug": "^4.0.1", 2858 | "doctrine": "^3.0.0", 2859 | "eslint-scope": "^5.0.0", 2860 | "eslint-utils": "^1.4.3", 2861 | "eslint-visitor-keys": "^1.1.0", 2862 | "espree": "^6.1.2", 2863 | "esquery": "^1.0.1", 2864 | "esutils": "^2.0.2", 2865 | "file-entry-cache": "^5.0.1", 2866 | "functional-red-black-tree": "^1.0.1", 2867 | "glob-parent": "^5.0.0", 2868 | "globals": "^12.1.0", 2869 | "ignore": "^4.0.6", 2870 | "import-fresh": "^3.0.0", 2871 | "imurmurhash": "^0.1.4", 2872 | "inquirer": "^7.0.0", 2873 | "is-glob": "^4.0.0", 2874 | "js-yaml": "^3.13.1", 2875 | "json-stable-stringify-without-jsonify": "^1.0.1", 2876 | "levn": "^0.3.0", 2877 | "lodash": "^4.17.14", 2878 | "minimatch": "^3.0.4", 2879 | "mkdirp": "^0.5.1", 2880 | "natural-compare": "^1.4.0", 2881 | "optionator": "^0.8.3", 2882 | "progress": "^2.0.0", 2883 | "regexpp": "^2.0.1", 2884 | "semver": "^6.1.2", 2885 | "strip-ansi": "^5.2.0", 2886 | "strip-json-comments": "^3.0.1", 2887 | "table": "^5.2.3", 2888 | "text-table": "^0.2.0", 2889 | "v8-compile-cache": "^2.0.3" 2890 | } 2891 | }, 2892 | "eslint-config-prettier": { 2893 | "version": "6.10.0", 2894 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.10.0.tgz", 2895 | "integrity": "sha512-AtndijGte1rPILInUdHjvKEGbIV06NuvPrqlIEaEaWtbtvJh464mDeyGMdZEQMsGvC0ZVkiex1fSNcC4HAbRGg==", 2896 | "dev": true, 2897 | "requires": { 2898 | "get-stdin": "^6.0.0" 2899 | } 2900 | }, 2901 | "eslint-plugin-es": { 2902 | "version": "3.0.0", 2903 | "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", 2904 | "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", 2905 | "dev": true, 2906 | "requires": { 2907 | "eslint-utils": "^2.0.0", 2908 | "regexpp": "^3.0.0" 2909 | }, 2910 | "dependencies": { 2911 | "eslint-utils": { 2912 | "version": "2.0.0", 2913 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", 2914 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", 2915 | "dev": true, 2916 | "requires": { 2917 | "eslint-visitor-keys": "^1.1.0" 2918 | } 2919 | }, 2920 | "regexpp": { 2921 | "version": "3.0.0", 2922 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", 2923 | "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", 2924 | "dev": true 2925 | } 2926 | } 2927 | }, 2928 | "eslint-plugin-node": { 2929 | "version": "11.0.0", 2930 | "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz", 2931 | "integrity": "sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==", 2932 | "dev": true, 2933 | "requires": { 2934 | "eslint-plugin-es": "^3.0.0", 2935 | "eslint-utils": "^2.0.0", 2936 | "ignore": "^5.1.1", 2937 | "minimatch": "^3.0.4", 2938 | "resolve": "^1.10.1", 2939 | "semver": "^6.1.0" 2940 | }, 2941 | "dependencies": { 2942 | "eslint-utils": { 2943 | "version": "2.0.0", 2944 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", 2945 | "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", 2946 | "dev": true, 2947 | "requires": { 2948 | "eslint-visitor-keys": "^1.1.0" 2949 | } 2950 | }, 2951 | "ignore": { 2952 | "version": "5.1.4", 2953 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", 2954 | "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", 2955 | "dev": true 2956 | } 2957 | } 2958 | }, 2959 | "eslint-plugin-prettier": { 2960 | "version": "3.1.2", 2961 | "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", 2962 | "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", 2963 | "dev": true, 2964 | "requires": { 2965 | "prettier-linter-helpers": "^1.0.0" 2966 | } 2967 | }, 2968 | "eslint-scope": { 2969 | "version": "5.0.0", 2970 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", 2971 | "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", 2972 | "dev": true, 2973 | "requires": { 2974 | "esrecurse": "^4.1.0", 2975 | "estraverse": "^4.1.1" 2976 | } 2977 | }, 2978 | "eslint-utils": { 2979 | "version": "1.4.3", 2980 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 2981 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 2982 | "dev": true, 2983 | "requires": { 2984 | "eslint-visitor-keys": "^1.1.0" 2985 | } 2986 | }, 2987 | "eslint-visitor-keys": { 2988 | "version": "1.1.0", 2989 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", 2990 | "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", 2991 | "dev": true 2992 | }, 2993 | "espree": { 2994 | "version": "6.1.2", 2995 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", 2996 | "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", 2997 | "dev": true, 2998 | "requires": { 2999 | "acorn": "^7.1.0", 3000 | "acorn-jsx": "^5.1.0", 3001 | "eslint-visitor-keys": "^1.1.0" 3002 | } 3003 | }, 3004 | "esprima": { 3005 | "version": "4.0.1", 3006 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 3007 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 3008 | "dev": true 3009 | }, 3010 | "esquery": { 3011 | "version": "1.0.1", 3012 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", 3013 | "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", 3014 | "dev": true, 3015 | "requires": { 3016 | "estraverse": "^4.0.0" 3017 | } 3018 | }, 3019 | "esrecurse": { 3020 | "version": "4.2.1", 3021 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", 3022 | "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", 3023 | "dev": true, 3024 | "requires": { 3025 | "estraverse": "^4.1.0" 3026 | } 3027 | }, 3028 | "estraverse": { 3029 | "version": "4.3.0", 3030 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 3031 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 3032 | "dev": true 3033 | }, 3034 | "esutils": { 3035 | "version": "2.0.3", 3036 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 3037 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 3038 | "dev": true 3039 | }, 3040 | "external-editor": { 3041 | "version": "3.1.0", 3042 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 3043 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 3044 | "dev": true, 3045 | "requires": { 3046 | "chardet": "^0.7.0", 3047 | "iconv-lite": "^0.4.24", 3048 | "tmp": "^0.0.33" 3049 | } 3050 | }, 3051 | "eyes": { 3052 | "version": "0.1.8", 3053 | "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", 3054 | "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" 3055 | }, 3056 | "fast-deep-equal": { 3057 | "version": "3.1.1", 3058 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", 3059 | "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", 3060 | "dev": true 3061 | }, 3062 | "fast-diff": { 3063 | "version": "1.2.0", 3064 | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", 3065 | "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", 3066 | "dev": true 3067 | }, 3068 | "fast-json-stable-stringify": { 3069 | "version": "2.1.0", 3070 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 3071 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 3072 | "dev": true 3073 | }, 3074 | "fast-levenshtein": { 3075 | "version": "2.0.6", 3076 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 3077 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 3078 | "dev": true 3079 | }, 3080 | "figures": { 3081 | "version": "3.1.0", 3082 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", 3083 | "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", 3084 | "dev": true, 3085 | "requires": { 3086 | "escape-string-regexp": "^1.0.5" 3087 | } 3088 | }, 3089 | "file-entry-cache": { 3090 | "version": "5.0.1", 3091 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 3092 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 3093 | "dev": true, 3094 | "requires": { 3095 | "flat-cache": "^2.0.1" 3096 | } 3097 | }, 3098 | "fill-range": { 3099 | "version": "7.0.1", 3100 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 3101 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 3102 | "dev": true, 3103 | "requires": { 3104 | "to-regex-range": "^5.0.1" 3105 | } 3106 | }, 3107 | "find-up": { 3108 | "version": "5.0.0", 3109 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 3110 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 3111 | "dev": true, 3112 | "requires": { 3113 | "locate-path": "^6.0.0", 3114 | "path-exists": "^4.0.0" 3115 | } 3116 | }, 3117 | "flat": { 3118 | "version": "5.0.2", 3119 | "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", 3120 | "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", 3121 | "dev": true 3122 | }, 3123 | "flat-cache": { 3124 | "version": "2.0.1", 3125 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 3126 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 3127 | "dev": true, 3128 | "requires": { 3129 | "flatted": "^2.0.0", 3130 | "rimraf": "2.6.3", 3131 | "write": "1.0.3" 3132 | }, 3133 | "dependencies": { 3134 | "rimraf": { 3135 | "version": "2.6.3", 3136 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 3137 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 3138 | "dev": true, 3139 | "requires": { 3140 | "glob": "^7.1.3" 3141 | } 3142 | } 3143 | } 3144 | }, 3145 | "flatted": { 3146 | "version": "2.0.1", 3147 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", 3148 | "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", 3149 | "dev": true 3150 | }, 3151 | "fs.realpath": { 3152 | "version": "1.0.0", 3153 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 3154 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 3155 | }, 3156 | "fsevents": { 3157 | "version": "2.3.2", 3158 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 3159 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 3160 | "dev": true, 3161 | "optional": true 3162 | }, 3163 | "functional-red-black-tree": { 3164 | "version": "1.0.1", 3165 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 3166 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 3167 | "dev": true 3168 | }, 3169 | "get-caller-file": { 3170 | "version": "2.0.5", 3171 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 3172 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 3173 | "dev": true 3174 | }, 3175 | "get-func-name": { 3176 | "version": "2.0.0", 3177 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 3178 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 3179 | "dev": true 3180 | }, 3181 | "get-stdin": { 3182 | "version": "6.0.0", 3183 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", 3184 | "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", 3185 | "dev": true 3186 | }, 3187 | "glob": { 3188 | "version": "7.2.0", 3189 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", 3190 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", 3191 | "requires": { 3192 | "fs.realpath": "^1.0.0", 3193 | "inflight": "^1.0.4", 3194 | "inherits": "2", 3195 | "minimatch": "^3.0.4", 3196 | "once": "^1.3.0", 3197 | "path-is-absolute": "^1.0.0" 3198 | } 3199 | }, 3200 | "glob-parent": { 3201 | "version": "5.1.2", 3202 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 3203 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 3204 | "dev": true, 3205 | "requires": { 3206 | "is-glob": "^4.0.1" 3207 | } 3208 | }, 3209 | "globals": { 3210 | "version": "12.3.0", 3211 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", 3212 | "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", 3213 | "dev": true, 3214 | "requires": { 3215 | "type-fest": "^0.8.1" 3216 | } 3217 | }, 3218 | "has-flag": { 3219 | "version": "3.0.0", 3220 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 3221 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 3222 | "dev": true 3223 | }, 3224 | "he": { 3225 | "version": "1.2.0", 3226 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 3227 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 3228 | "dev": true 3229 | }, 3230 | "i": { 3231 | "version": "0.3.7", 3232 | "resolved": "https://registry.npmjs.org/i/-/i-0.3.7.tgz", 3233 | "integrity": "sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==" 3234 | }, 3235 | "iconv-lite": { 3236 | "version": "0.4.24", 3237 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 3238 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 3239 | "dev": true, 3240 | "requires": { 3241 | "safer-buffer": ">= 2.1.2 < 3" 3242 | } 3243 | }, 3244 | "ignore": { 3245 | "version": "4.0.6", 3246 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 3247 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 3248 | "dev": true 3249 | }, 3250 | "import-fresh": { 3251 | "version": "3.2.1", 3252 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", 3253 | "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", 3254 | "dev": true, 3255 | "requires": { 3256 | "parent-module": "^1.0.0", 3257 | "resolve-from": "^4.0.0" 3258 | } 3259 | }, 3260 | "imurmurhash": { 3261 | "version": "0.1.4", 3262 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 3263 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 3264 | "dev": true 3265 | }, 3266 | "inflight": { 3267 | "version": "1.0.6", 3268 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 3269 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 3270 | "requires": { 3271 | "once": "^1.3.0", 3272 | "wrappy": "1" 3273 | } 3274 | }, 3275 | "inherits": { 3276 | "version": "2.0.4", 3277 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 3278 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 3279 | }, 3280 | "inquirer": { 3281 | "version": "7.0.4", 3282 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", 3283 | "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", 3284 | "dev": true, 3285 | "requires": { 3286 | "ansi-escapes": "^4.2.1", 3287 | "chalk": "^2.4.2", 3288 | "cli-cursor": "^3.1.0", 3289 | "cli-width": "^2.0.0", 3290 | "external-editor": "^3.0.3", 3291 | "figures": "^3.0.0", 3292 | "lodash": "^4.17.15", 3293 | "mute-stream": "0.0.8", 3294 | "run-async": "^2.2.0", 3295 | "rxjs": "^6.5.3", 3296 | "string-width": "^4.1.0", 3297 | "strip-ansi": "^5.1.0", 3298 | "through": "^2.3.6" 3299 | } 3300 | }, 3301 | "is-binary-path": { 3302 | "version": "2.1.0", 3303 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 3304 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 3305 | "dev": true, 3306 | "requires": { 3307 | "binary-extensions": "^2.0.0" 3308 | } 3309 | }, 3310 | "is-extglob": { 3311 | "version": "2.1.1", 3312 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 3313 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 3314 | "dev": true 3315 | }, 3316 | "is-fullwidth-code-point": { 3317 | "version": "3.0.0", 3318 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3319 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3320 | "dev": true 3321 | }, 3322 | "is-glob": { 3323 | "version": "4.0.1", 3324 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 3325 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 3326 | "dev": true, 3327 | "requires": { 3328 | "is-extglob": "^2.1.1" 3329 | } 3330 | }, 3331 | "is-number": { 3332 | "version": "7.0.0", 3333 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 3334 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 3335 | "dev": true 3336 | }, 3337 | "is-plain-obj": { 3338 | "version": "2.1.0", 3339 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", 3340 | "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", 3341 | "dev": true 3342 | }, 3343 | "is-promise": { 3344 | "version": "2.1.0", 3345 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", 3346 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", 3347 | "dev": true 3348 | }, 3349 | "is-unicode-supported": { 3350 | "version": "0.1.0", 3351 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 3352 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 3353 | "dev": true 3354 | }, 3355 | "isexe": { 3356 | "version": "2.0.0", 3357 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 3358 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 3359 | "dev": true 3360 | }, 3361 | "isstream": { 3362 | "version": "0.1.2", 3363 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", 3364 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" 3365 | }, 3366 | "js-tokens": { 3367 | "version": "4.0.0", 3368 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 3369 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 3370 | "dev": true 3371 | }, 3372 | "js-yaml": { 3373 | "version": "3.13.1", 3374 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 3375 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 3376 | "dev": true, 3377 | "requires": { 3378 | "argparse": "^1.0.7", 3379 | "esprima": "^4.0.0" 3380 | } 3381 | }, 3382 | "json-schema-traverse": { 3383 | "version": "0.4.1", 3384 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 3385 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 3386 | "dev": true 3387 | }, 3388 | "json-stable-stringify-without-jsonify": { 3389 | "version": "1.0.1", 3390 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 3391 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 3392 | "dev": true 3393 | }, 3394 | "levn": { 3395 | "version": "0.3.0", 3396 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 3397 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 3398 | "dev": true, 3399 | "requires": { 3400 | "prelude-ls": "~1.1.2", 3401 | "type-check": "~0.3.2" 3402 | } 3403 | }, 3404 | "locate-path": { 3405 | "version": "6.0.0", 3406 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 3407 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 3408 | "dev": true, 3409 | "requires": { 3410 | "p-locate": "^5.0.0" 3411 | } 3412 | }, 3413 | "lodash": { 3414 | "version": "4.17.21", 3415 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 3416 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 3417 | "dev": true 3418 | }, 3419 | "log-symbols": { 3420 | "version": "4.1.0", 3421 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 3422 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 3423 | "dev": true, 3424 | "requires": { 3425 | "chalk": "^4.1.0", 3426 | "is-unicode-supported": "^0.1.0" 3427 | }, 3428 | "dependencies": { 3429 | "ansi-styles": { 3430 | "version": "4.3.0", 3431 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 3432 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 3433 | "dev": true, 3434 | "requires": { 3435 | "color-convert": "^2.0.1" 3436 | } 3437 | }, 3438 | "chalk": { 3439 | "version": "4.1.2", 3440 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 3441 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 3442 | "dev": true, 3443 | "requires": { 3444 | "ansi-styles": "^4.1.0", 3445 | "supports-color": "^7.1.0" 3446 | } 3447 | }, 3448 | "color-convert": { 3449 | "version": "2.0.1", 3450 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 3451 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 3452 | "dev": true, 3453 | "requires": { 3454 | "color-name": "~1.1.4" 3455 | } 3456 | }, 3457 | "color-name": { 3458 | "version": "1.1.4", 3459 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 3460 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 3461 | "dev": true 3462 | }, 3463 | "has-flag": { 3464 | "version": "4.0.0", 3465 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3466 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3467 | "dev": true 3468 | }, 3469 | "supports-color": { 3470 | "version": "7.2.0", 3471 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3472 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3473 | "dev": true, 3474 | "requires": { 3475 | "has-flag": "^4.0.0" 3476 | } 3477 | } 3478 | } 3479 | }, 3480 | "mimic-fn": { 3481 | "version": "2.1.0", 3482 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 3483 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 3484 | "dev": true 3485 | }, 3486 | "minimatch": { 3487 | "version": "3.1.2", 3488 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 3489 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 3490 | "requires": { 3491 | "brace-expansion": "^1.1.7" 3492 | } 3493 | }, 3494 | "minimist": { 3495 | "version": "1.2.6", 3496 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 3497 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 3498 | }, 3499 | "mkdirp": { 3500 | "version": "0.5.5", 3501 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 3502 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 3503 | "requires": { 3504 | "minimist": "^1.2.5" 3505 | } 3506 | }, 3507 | "mocha": { 3508 | "version": "10.2.0", 3509 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", 3510 | "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", 3511 | "dev": true, 3512 | "requires": { 3513 | "ansi-colors": "4.1.1", 3514 | "browser-stdout": "1.3.1", 3515 | "chokidar": "3.5.3", 3516 | "debug": "4.3.4", 3517 | "diff": "5.0.0", 3518 | "escape-string-regexp": "4.0.0", 3519 | "find-up": "5.0.0", 3520 | "glob": "7.2.0", 3521 | "he": "1.2.0", 3522 | "js-yaml": "4.1.0", 3523 | "log-symbols": "4.1.0", 3524 | "minimatch": "5.0.1", 3525 | "ms": "2.1.3", 3526 | "nanoid": "3.3.3", 3527 | "serialize-javascript": "6.0.0", 3528 | "strip-json-comments": "3.1.1", 3529 | "supports-color": "8.1.1", 3530 | "workerpool": "6.2.1", 3531 | "yargs": "16.2.0", 3532 | "yargs-parser": "20.2.4", 3533 | "yargs-unparser": "2.0.0" 3534 | }, 3535 | "dependencies": { 3536 | "argparse": { 3537 | "version": "2.0.1", 3538 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 3539 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 3540 | "dev": true 3541 | }, 3542 | "brace-expansion": { 3543 | "version": "2.0.1", 3544 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 3545 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 3546 | "dev": true, 3547 | "requires": { 3548 | "balanced-match": "^1.0.0" 3549 | } 3550 | }, 3551 | "escape-string-regexp": { 3552 | "version": "4.0.0", 3553 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 3554 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 3555 | "dev": true 3556 | }, 3557 | "has-flag": { 3558 | "version": "4.0.0", 3559 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 3560 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 3561 | "dev": true 3562 | }, 3563 | "js-yaml": { 3564 | "version": "4.1.0", 3565 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 3566 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 3567 | "dev": true, 3568 | "requires": { 3569 | "argparse": "^2.0.1" 3570 | } 3571 | }, 3572 | "minimatch": { 3573 | "version": "5.0.1", 3574 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", 3575 | "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", 3576 | "dev": true, 3577 | "requires": { 3578 | "brace-expansion": "^2.0.1" 3579 | } 3580 | }, 3581 | "ms": { 3582 | "version": "2.1.3", 3583 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 3584 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 3585 | "dev": true 3586 | }, 3587 | "supports-color": { 3588 | "version": "8.1.1", 3589 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 3590 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 3591 | "dev": true, 3592 | "requires": { 3593 | "has-flag": "^4.0.0" 3594 | } 3595 | } 3596 | } 3597 | }, 3598 | "ms": { 3599 | "version": "2.1.2", 3600 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 3601 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 3602 | "dev": true 3603 | }, 3604 | "mute-stream": { 3605 | "version": "0.0.8", 3606 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 3607 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 3608 | }, 3609 | "nanoid": { 3610 | "version": "3.3.3", 3611 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", 3612 | "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", 3613 | "dev": true 3614 | }, 3615 | "natural-compare": { 3616 | "version": "1.4.0", 3617 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 3618 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 3619 | "dev": true 3620 | }, 3621 | "ncp": { 3622 | "version": "1.0.1", 3623 | "resolved": "https://registry.npmjs.org/ncp/-/ncp-1.0.1.tgz", 3624 | "integrity": "sha1-0VNn5cuHQyuhF9K/gP30Wuz7QkY=" 3625 | }, 3626 | "nice-try": { 3627 | "version": "1.0.5", 3628 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 3629 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 3630 | "dev": true 3631 | }, 3632 | "normalize-path": { 3633 | "version": "3.0.0", 3634 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 3635 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 3636 | "dev": true 3637 | }, 3638 | "once": { 3639 | "version": "1.4.0", 3640 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 3641 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 3642 | "requires": { 3643 | "wrappy": "1" 3644 | } 3645 | }, 3646 | "onetime": { 3647 | "version": "5.1.0", 3648 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", 3649 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", 3650 | "dev": true, 3651 | "requires": { 3652 | "mimic-fn": "^2.1.0" 3653 | } 3654 | }, 3655 | "optionator": { 3656 | "version": "0.8.3", 3657 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 3658 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 3659 | "dev": true, 3660 | "requires": { 3661 | "deep-is": "~0.1.3", 3662 | "fast-levenshtein": "~2.0.6", 3663 | "levn": "~0.3.0", 3664 | "prelude-ls": "~1.1.2", 3665 | "type-check": "~0.3.2", 3666 | "word-wrap": "~1.2.3" 3667 | } 3668 | }, 3669 | "os-tmpdir": { 3670 | "version": "1.0.2", 3671 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 3672 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 3673 | "dev": true 3674 | }, 3675 | "p-limit": { 3676 | "version": "3.1.0", 3677 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 3678 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 3679 | "dev": true, 3680 | "requires": { 3681 | "yocto-queue": "^0.1.0" 3682 | } 3683 | }, 3684 | "p-locate": { 3685 | "version": "5.0.0", 3686 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 3687 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 3688 | "dev": true, 3689 | "requires": { 3690 | "p-limit": "^3.0.2" 3691 | } 3692 | }, 3693 | "parent-module": { 3694 | "version": "1.0.1", 3695 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 3696 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 3697 | "dev": true, 3698 | "requires": { 3699 | "callsites": "^3.0.0" 3700 | } 3701 | }, 3702 | "path-exists": { 3703 | "version": "4.0.0", 3704 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 3705 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 3706 | "dev": true 3707 | }, 3708 | "path-is-absolute": { 3709 | "version": "1.0.1", 3710 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 3711 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 3712 | }, 3713 | "path-key": { 3714 | "version": "2.0.1", 3715 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 3716 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 3717 | "dev": true 3718 | }, 3719 | "path-parse": { 3720 | "version": "1.0.7", 3721 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 3722 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 3723 | "dev": true 3724 | }, 3725 | "pathval": { 3726 | "version": "1.1.1", 3727 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", 3728 | "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", 3729 | "dev": true 3730 | }, 3731 | "picomatch": { 3732 | "version": "2.3.1", 3733 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3734 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3735 | "dev": true 3736 | }, 3737 | "pkginfo": { 3738 | "version": "0.4.1", 3739 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", 3740 | "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=" 3741 | }, 3742 | "prelude-ls": { 3743 | "version": "1.1.2", 3744 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 3745 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 3746 | "dev": true 3747 | }, 3748 | "prettier": { 3749 | "version": "1.19.1", 3750 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", 3751 | "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", 3752 | "dev": true 3753 | }, 3754 | "prettier-linter-helpers": { 3755 | "version": "1.0.0", 3756 | "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", 3757 | "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", 3758 | "dev": true, 3759 | "requires": { 3760 | "fast-diff": "^1.1.2" 3761 | } 3762 | }, 3763 | "progress": { 3764 | "version": "2.0.3", 3765 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 3766 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 3767 | "dev": true 3768 | }, 3769 | "prompt": { 3770 | "version": "1.0.0", 3771 | "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.0.0.tgz", 3772 | "integrity": "sha1-jlcSPDlquYiJf7Mn/Trtw+c15P4=", 3773 | "requires": { 3774 | "colors": "^1.1.2", 3775 | "pkginfo": "0.x.x", 3776 | "read": "1.0.x", 3777 | "revalidator": "0.1.x", 3778 | "utile": "0.3.x", 3779 | "winston": "2.1.x" 3780 | } 3781 | }, 3782 | "punycode": { 3783 | "version": "2.1.1", 3784 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 3785 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 3786 | "dev": true 3787 | }, 3788 | "randombytes": { 3789 | "version": "2.1.0", 3790 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 3791 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 3792 | "dev": true, 3793 | "requires": { 3794 | "safe-buffer": "^5.1.0" 3795 | } 3796 | }, 3797 | "read": { 3798 | "version": "1.0.7", 3799 | "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", 3800 | "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", 3801 | "requires": { 3802 | "mute-stream": "~0.0.4" 3803 | } 3804 | }, 3805 | "readdirp": { 3806 | "version": "3.6.0", 3807 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3808 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3809 | "dev": true, 3810 | "requires": { 3811 | "picomatch": "^2.2.1" 3812 | } 3813 | }, 3814 | "regexpp": { 3815 | "version": "2.0.1", 3816 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 3817 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 3818 | "dev": true 3819 | }, 3820 | "require-directory": { 3821 | "version": "2.1.1", 3822 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3823 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3824 | "dev": true 3825 | }, 3826 | "resolve": { 3827 | "version": "1.15.0", 3828 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", 3829 | "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", 3830 | "dev": true, 3831 | "requires": { 3832 | "path-parse": "^1.0.6" 3833 | } 3834 | }, 3835 | "resolve-from": { 3836 | "version": "4.0.0", 3837 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 3838 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 3839 | "dev": true 3840 | }, 3841 | "restore-cursor": { 3842 | "version": "3.1.0", 3843 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 3844 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 3845 | "dev": true, 3846 | "requires": { 3847 | "onetime": "^5.1.0", 3848 | "signal-exit": "^3.0.2" 3849 | } 3850 | }, 3851 | "revalidator": { 3852 | "version": "0.1.8", 3853 | "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", 3854 | "integrity": "sha1-/s5hv6DBtSoga9axgZgYS91SOjs=" 3855 | }, 3856 | "rimraf": { 3857 | "version": "2.7.1", 3858 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 3859 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 3860 | "requires": { 3861 | "glob": "^7.1.3" 3862 | } 3863 | }, 3864 | "run-async": { 3865 | "version": "2.3.0", 3866 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", 3867 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", 3868 | "dev": true, 3869 | "requires": { 3870 | "is-promise": "^2.1.0" 3871 | } 3872 | }, 3873 | "rxjs": { 3874 | "version": "6.5.4", 3875 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", 3876 | "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", 3877 | "dev": true, 3878 | "requires": { 3879 | "tslib": "^1.9.0" 3880 | } 3881 | }, 3882 | "safe-buffer": { 3883 | "version": "5.2.1", 3884 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3885 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 3886 | "dev": true 3887 | }, 3888 | "safer-buffer": { 3889 | "version": "2.1.2", 3890 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3891 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3892 | "dev": true 3893 | }, 3894 | "semver": { 3895 | "version": "6.3.0", 3896 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 3897 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 3898 | "dev": true 3899 | }, 3900 | "serialize-javascript": { 3901 | "version": "6.0.0", 3902 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", 3903 | "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", 3904 | "dev": true, 3905 | "requires": { 3906 | "randombytes": "^2.1.0" 3907 | } 3908 | }, 3909 | "shebang-command": { 3910 | "version": "1.2.0", 3911 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 3912 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 3913 | "dev": true, 3914 | "requires": { 3915 | "shebang-regex": "^1.0.0" 3916 | } 3917 | }, 3918 | "shebang-regex": { 3919 | "version": "1.0.0", 3920 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 3921 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 3922 | "dev": true 3923 | }, 3924 | "signal-exit": { 3925 | "version": "3.0.2", 3926 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 3927 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", 3928 | "dev": true 3929 | }, 3930 | "slice-ansi": { 3931 | "version": "2.1.0", 3932 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 3933 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 3934 | "dev": true, 3935 | "requires": { 3936 | "ansi-styles": "^3.2.0", 3937 | "astral-regex": "^1.0.0", 3938 | "is-fullwidth-code-point": "^2.0.0" 3939 | }, 3940 | "dependencies": { 3941 | "is-fullwidth-code-point": { 3942 | "version": "2.0.0", 3943 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 3944 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 3945 | "dev": true 3946 | } 3947 | } 3948 | }, 3949 | "sprintf-js": { 3950 | "version": "1.0.3", 3951 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 3952 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 3953 | "dev": true 3954 | }, 3955 | "stack-trace": { 3956 | "version": "0.0.10", 3957 | "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", 3958 | "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" 3959 | }, 3960 | "string-width": { 3961 | "version": "4.2.0", 3962 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 3963 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 3964 | "dev": true, 3965 | "requires": { 3966 | "emoji-regex": "^8.0.0", 3967 | "is-fullwidth-code-point": "^3.0.0", 3968 | "strip-ansi": "^6.0.0" 3969 | }, 3970 | "dependencies": { 3971 | "strip-ansi": { 3972 | "version": "6.0.0", 3973 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 3974 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 3975 | "dev": true, 3976 | "requires": { 3977 | "ansi-regex": "^5.0.0" 3978 | } 3979 | } 3980 | } 3981 | }, 3982 | "strip-ansi": { 3983 | "version": "5.2.0", 3984 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 3985 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 3986 | "dev": true, 3987 | "requires": { 3988 | "ansi-regex": "^4.1.0" 3989 | }, 3990 | "dependencies": { 3991 | "ansi-regex": { 3992 | "version": "4.1.1", 3993 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", 3994 | "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", 3995 | "dev": true 3996 | } 3997 | } 3998 | }, 3999 | "strip-json-comments": { 4000 | "version": "3.1.1", 4001 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 4002 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 4003 | "dev": true 4004 | }, 4005 | "supports-color": { 4006 | "version": "5.5.0", 4007 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 4008 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 4009 | "dev": true, 4010 | "requires": { 4011 | "has-flag": "^3.0.0" 4012 | } 4013 | }, 4014 | "table": { 4015 | "version": "5.4.6", 4016 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 4017 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 4018 | "dev": true, 4019 | "requires": { 4020 | "ajv": "^6.10.2", 4021 | "lodash": "^4.17.14", 4022 | "slice-ansi": "^2.1.0", 4023 | "string-width": "^3.0.0" 4024 | }, 4025 | "dependencies": { 4026 | "emoji-regex": { 4027 | "version": "7.0.3", 4028 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 4029 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 4030 | "dev": true 4031 | }, 4032 | "is-fullwidth-code-point": { 4033 | "version": "2.0.0", 4034 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 4035 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 4036 | "dev": true 4037 | }, 4038 | "string-width": { 4039 | "version": "3.1.0", 4040 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 4041 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 4042 | "dev": true, 4043 | "requires": { 4044 | "emoji-regex": "^7.0.1", 4045 | "is-fullwidth-code-point": "^2.0.0", 4046 | "strip-ansi": "^5.1.0" 4047 | } 4048 | } 4049 | } 4050 | }, 4051 | "text-table": { 4052 | "version": "0.2.0", 4053 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 4054 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 4055 | "dev": true 4056 | }, 4057 | "through": { 4058 | "version": "2.3.8", 4059 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 4060 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 4061 | "dev": true 4062 | }, 4063 | "tmp": { 4064 | "version": "0.0.33", 4065 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 4066 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 4067 | "dev": true, 4068 | "requires": { 4069 | "os-tmpdir": "~1.0.2" 4070 | } 4071 | }, 4072 | "to-regex-range": { 4073 | "version": "5.0.1", 4074 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 4075 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 4076 | "dev": true, 4077 | "requires": { 4078 | "is-number": "^7.0.0" 4079 | } 4080 | }, 4081 | "tslib": { 4082 | "version": "1.10.0", 4083 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", 4084 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", 4085 | "dev": true 4086 | }, 4087 | "type-check": { 4088 | "version": "0.3.2", 4089 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 4090 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 4091 | "dev": true, 4092 | "requires": { 4093 | "prelude-ls": "~1.1.2" 4094 | } 4095 | }, 4096 | "type-detect": { 4097 | "version": "4.0.8", 4098 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 4099 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", 4100 | "dev": true 4101 | }, 4102 | "type-fest": { 4103 | "version": "0.8.1", 4104 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 4105 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 4106 | "dev": true 4107 | }, 4108 | "unix-crypt-td-js": { 4109 | "version": "1.1.4", 4110 | "resolved": "https://registry.npmjs.org/unix-crypt-td-js/-/unix-crypt-td-js-1.1.4.tgz", 4111 | "integrity": "sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==" 4112 | }, 4113 | "uri-js": { 4114 | "version": "4.2.2", 4115 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", 4116 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", 4117 | "dev": true, 4118 | "requires": { 4119 | "punycode": "^2.1.0" 4120 | } 4121 | }, 4122 | "utile": { 4123 | "version": "0.3.0", 4124 | "resolved": "https://registry.npmjs.org/utile/-/utile-0.3.0.tgz", 4125 | "integrity": "sha1-E1LDQOuCDk2N26A5pPv6oy7U7zo=", 4126 | "requires": { 4127 | "async": "~0.9.0", 4128 | "deep-equal": "~0.2.1", 4129 | "i": "0.3.x", 4130 | "mkdirp": "0.x.x", 4131 | "ncp": "1.0.x", 4132 | "rimraf": "2.x.x" 4133 | } 4134 | }, 4135 | "v8-compile-cache": { 4136 | "version": "2.1.0", 4137 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", 4138 | "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", 4139 | "dev": true 4140 | }, 4141 | "which": { 4142 | "version": "1.3.1", 4143 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 4144 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 4145 | "dev": true, 4146 | "requires": { 4147 | "isexe": "^2.0.0" 4148 | } 4149 | }, 4150 | "winston": { 4151 | "version": "2.1.1", 4152 | "resolved": "https://registry.npmjs.org/winston/-/winston-2.1.1.tgz", 4153 | "integrity": "sha1-PJNJ0ZYgf9G9/51LxD73JRDjoS4=", 4154 | "requires": { 4155 | "async": "~1.0.0", 4156 | "colors": "1.0.x", 4157 | "cycle": "1.0.x", 4158 | "eyes": "0.1.x", 4159 | "isstream": "0.1.x", 4160 | "pkginfo": "0.3.x", 4161 | "stack-trace": "0.0.x" 4162 | }, 4163 | "dependencies": { 4164 | "async": { 4165 | "version": "1.0.0", 4166 | "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", 4167 | "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" 4168 | }, 4169 | "colors": { 4170 | "version": "1.0.3", 4171 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", 4172 | "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" 4173 | }, 4174 | "pkginfo": { 4175 | "version": "0.3.1", 4176 | "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", 4177 | "integrity": "sha1-Wyn2qB9wcXFC4J52W76rl7T4HiE=" 4178 | } 4179 | } 4180 | }, 4181 | "word-wrap": { 4182 | "version": "1.2.4", 4183 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", 4184 | "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", 4185 | "dev": true 4186 | }, 4187 | "workerpool": { 4188 | "version": "6.2.1", 4189 | "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", 4190 | "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", 4191 | "dev": true 4192 | }, 4193 | "wrap-ansi": { 4194 | "version": "7.0.0", 4195 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 4196 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 4197 | "dev": true, 4198 | "requires": { 4199 | "ansi-styles": "^4.0.0", 4200 | "string-width": "^4.1.0", 4201 | "strip-ansi": "^6.0.0" 4202 | }, 4203 | "dependencies": { 4204 | "ansi-styles": { 4205 | "version": "4.3.0", 4206 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 4207 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 4208 | "dev": true, 4209 | "requires": { 4210 | "color-convert": "^2.0.1" 4211 | } 4212 | }, 4213 | "color-convert": { 4214 | "version": "2.0.1", 4215 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 4216 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 4217 | "dev": true, 4218 | "requires": { 4219 | "color-name": "~1.1.4" 4220 | } 4221 | }, 4222 | "color-name": { 4223 | "version": "1.1.4", 4224 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 4225 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 4226 | "dev": true 4227 | }, 4228 | "strip-ansi": { 4229 | "version": "6.0.1", 4230 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4231 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4232 | "dev": true, 4233 | "requires": { 4234 | "ansi-regex": "^5.0.1" 4235 | } 4236 | } 4237 | } 4238 | }, 4239 | "wrappy": { 4240 | "version": "1.0.2", 4241 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 4242 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 4243 | }, 4244 | "write": { 4245 | "version": "1.0.3", 4246 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 4247 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 4248 | "dev": true, 4249 | "requires": { 4250 | "mkdirp": "^0.5.1" 4251 | } 4252 | }, 4253 | "y18n": { 4254 | "version": "5.0.8", 4255 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4256 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 4257 | "dev": true 4258 | }, 4259 | "yargs": { 4260 | "version": "16.2.0", 4261 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 4262 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 4263 | "dev": true, 4264 | "requires": { 4265 | "cliui": "^7.0.2", 4266 | "escalade": "^3.1.1", 4267 | "get-caller-file": "^2.0.5", 4268 | "require-directory": "^2.1.1", 4269 | "string-width": "^4.2.0", 4270 | "y18n": "^5.0.5", 4271 | "yargs-parser": "^20.2.2" 4272 | } 4273 | }, 4274 | "yargs-parser": { 4275 | "version": "20.2.4", 4276 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", 4277 | "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", 4278 | "dev": true 4279 | }, 4280 | "yargs-unparser": { 4281 | "version": "2.0.0", 4282 | "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", 4283 | "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", 4284 | "dev": true, 4285 | "requires": { 4286 | "camelcase": "^6.0.0", 4287 | "decamelize": "^4.0.0", 4288 | "flat": "^5.0.2", 4289 | "is-plain-obj": "^2.1.0" 4290 | } 4291 | }, 4292 | "yocto-queue": { 4293 | "version": "0.1.0", 4294 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 4295 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 4296 | "dev": true 4297 | } 4298 | } 4299 | } 4300 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "htpasswd", 3 | "description": "Node.js package for HTTP Basic Authentication password file utility.", 4 | "version": "2.4.6", 5 | "author": "Gevorg Harutyunyan (http://github.com/gevorg)", 6 | "maintainers": [ 7 | { 8 | "name": "gevorg", 9 | "email": "gevorg.ha@gmail.com" 10 | } 11 | ], 12 | "homepage": "http://github.com/gevorg/htpasswd", 13 | "repository": { 14 | "type": "git", 15 | "url": "http://github.com/gevorg/htpasswd.git" 16 | }, 17 | "bin": { 18 | "htpasswd": "./bin/htpasswd" 19 | }, 20 | "licenses": [ 21 | { 22 | "type": "MIT", 23 | "url": "http://github.com/gevorg/htpasswd/blob/master/LICENSE" 24 | } 25 | ], 26 | "license": "MIT", 27 | "bugs": { 28 | "url": "http://github.com/gevorg/htpasswd/issues" 29 | }, 30 | "dependencies": { 31 | "apache-crypt": "^1.1.2", 32 | "apache-md5": "^1.0.6", 33 | "bcryptjs": "^2.3.0", 34 | "commander": "^2.9.0", 35 | "prompt": "^1.0.0" 36 | }, 37 | "devDependencies": { 38 | "chai": "^4.2.0", 39 | "eslint": "^6.8.0", 40 | "eslint-config-prettier": "^6.10.0", 41 | "eslint-plugin-node": "^11.0.0", 42 | "eslint-plugin-prettier": "^3.1.2", 43 | "mocha": "^10.2.0", 44 | "prettier": "^1.19.1" 45 | }, 46 | "engines": { 47 | "node": ">=8" 48 | }, 49 | "scripts": { 50 | "test": "mocha", 51 | "pretest": "eslint --ignore-path .gitignore ." 52 | }, 53 | "keywords": [ 54 | "htpasswd", 55 | "http", 56 | "basic", 57 | "access", 58 | "authentication" 59 | ] 60 | } 61 | -------------------------------------------------------------------------------- /src/htpasswd.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | // Importing modules. 4 | const program = require("commander"); 5 | const processor = require("./processor"); 6 | 7 | // Parses and processes command line arguments. 8 | module.exports = (version, args) => { 9 | // Setup. 10 | program 11 | .version(version) 12 | .usage("[options] [passwordfile] username [password]") 13 | .option( 14 | "-b, --batch", 15 | "Use the password from the command line rather than prompting for it. This option should be used with extreme care, since the password is clearly visible on the command line. For script use see the -i option." 16 | ) 17 | .option( 18 | "-i, --stdin", 19 | "Read the password from stdin without verification (for script usage)." 20 | ) 21 | .option("-c, --create", "Create a new file.") 22 | .option("-n, --nofile", "Don't update file; display results on stdout.") 23 | .option( 24 | "-m, --md5", 25 | "Use MD5 encryption for passwords. This is the default." 26 | ) 27 | .option( 28 | "-B, --bcrypt", 29 | "Use bcrypt encryption for passwords. This is currently considered to be very secure." 30 | ) 31 | .option( 32 | "-C, --cost", 33 | "This flag is only allowed in combination with -B (bcrypt encryption). It sets the computing time used for the bcrypt algorithm (higher is more secure but slower, default: 5, valid: 4 to 31)." 34 | ) 35 | .option( 36 | "-d, --crypt", 37 | "Use crypt() encryption for passwords. This algorithm limits the password length to 8 characters. This algorithm is insecure by today's standards." 38 | ) 39 | .option( 40 | "-s, --sha", 41 | "Use SHA encryption for passwords. This algorithm is insecure by today's standards." 42 | ) 43 | .option("-p, --plaintext", "Do not encrypt the password (plaintext).") 44 | .option("-D, --delete", "Delete the specified user.") 45 | .option( 46 | "-v, --verify", 47 | "Verify password. Verify that the given password matches the password of the user stored in the specified htpasswd file." 48 | ); 49 | 50 | // Help option. 51 | program.on("--help", () => { 52 | console.log(` 53 | Examples: 54 | 55 | htpasswd [-cimBpsDv] [ -C cost ] passwordfile username 56 | htpasswd -b[cmBpsDv] [ -C cost ] passwordfile username password 57 | 58 | htpasswd -n[imBps] [ -C cost ] username 59 | htpasswd -nb[mBps] [ -C cost ] username password 60 | 61 | `); 62 | }); 63 | 64 | // Parse options. 65 | program.parse(args); 66 | 67 | // Process program output. 68 | processor.exec(program); 69 | }; 70 | -------------------------------------------------------------------------------- /src/processor.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | // Utils. 4 | const utils = require("./utils"); 5 | 6 | // FS. 7 | const fs = require("fs"); 8 | 9 | // Prompt module. 10 | const prompt = require("prompt"); 11 | 12 | // Export object. 13 | const processor = {}; 14 | 15 | // Validates input arguments. 16 | processor.validate = program => { 17 | // Only username is required. 18 | let expectedArgs = 1; 19 | 20 | if (program.batch) { 21 | ++expectedArgs; 22 | } 23 | 24 | if (!program.nofile) { 25 | ++expectedArgs; 26 | } 27 | 28 | if (program.cost) { 29 | program.cost = +program.args[0]; 30 | program.args = program.args.slice(1); 31 | } 32 | 33 | // Validate argument count. 34 | return program.args.length === expectedArgs; 35 | }; 36 | 37 | // Sync file with new data. 38 | processor.syncFile = program => { 39 | const passwordFile = program.args[0]; 40 | const username = program.args[1]; 41 | const password = program.args[2]; 42 | 43 | // Hash encode. 44 | const hash = utils.encode(program); 45 | 46 | // Collector params. 47 | let found = false; 48 | let newLines = []; 49 | 50 | if (!program.create) { 51 | if (!fs.existsSync(passwordFile)) { 52 | console.error( 53 | `Cannot modify file ${passwordFile}; use '-c' to create it.` 54 | ); 55 | return; 56 | } 57 | 58 | const lines = fs.readFileSync(passwordFile, "UTF-8").split("\n"); 59 | 60 | // Loop lines. 61 | lines.forEach(line => { 62 | if (line.indexOf(`${username}:`) === 0) { 63 | found = true; 64 | 65 | if (program.verify) { 66 | // For verification we need existing data. 67 | let hash = line.split(":")[1]; 68 | if (utils.verify(hash, password)) { 69 | console.log(`Password for user ${username} correct.`); 70 | } else { 71 | console.log("Password verification failed."); 72 | } 73 | } else if (program.delete) { 74 | console.log(`Deleting password for user ${username}.`); 75 | } else { 76 | // Updating password. 77 | newLines.push(`${username}:${hash}`); 78 | console.log(`Updating password for user ${username}.`); 79 | } 80 | } else if (line) { 81 | newLines.push(line); 82 | } 83 | }); 84 | } 85 | 86 | if (!program.verify) { 87 | if (!found) { 88 | if (program.delete) { 89 | console.error(`User ${username} not found.`); 90 | } else { 91 | newLines.push(`${username}:${hash}`); 92 | console.log(`Adding password for user ${username}.`); 93 | } 94 | } 95 | 96 | // Write data. 97 | fs.writeFileSync(passwordFile, newLines.join("\n") + "\n", "UTF-8"); 98 | } 99 | }; 100 | 101 | // Finalizes processing by printing output or changing password file. 102 | processor.finalize = program => { 103 | if (program.nofile) { 104 | const username = program.args[0]; 105 | const hash = utils.encode(program); 106 | 107 | // Print to stdout. 108 | console.log(`${username}:${hash}`); 109 | } else { 110 | try { 111 | processor.syncFile(program); 112 | } catch (err) { 113 | console.error(err.message); 114 | } 115 | } 116 | }; 117 | 118 | // Read password from stdin. 119 | function readPasswordStdIn(program) { 120 | let password = ""; 121 | 122 | // Reading pass. 123 | process.stdin.on("data", function(chunk) { 124 | password += chunk; 125 | }); 126 | 127 | // Finished reading. 128 | process.stdin.on("end", function() { 129 | program.args.push(password); 130 | processor.finalize(program); 131 | }); 132 | } 133 | 134 | // Read password. 135 | function readPassword(program) { 136 | // Prepare prompt. 137 | prompt.message = ""; 138 | prompt.delimiter = ""; 139 | 140 | const passportOption = [ 141 | { name: "password", description: "New password:", hidden: true } 142 | ]; 143 | const rePassportOption = [ 144 | { name: "rePassword", description: "Re-type new password:", hidden: true } 145 | ]; 146 | 147 | // Try to read password. 148 | prompt.get(passportOption, function(err, result) { 149 | if (!err) { 150 | const password = result.password; 151 | setTimeout(function() { 152 | prompt.get(rePassportOption, function(err, result) { 153 | if (!err && password == result.rePassword) { 154 | program.args.push(password); 155 | processor.finalize(program); 156 | } else { 157 | console.error("\nPassword verification error."); 158 | } 159 | }); 160 | }, 50); 161 | } else { 162 | console.error("\nPassword verification error."); 163 | } 164 | }); 165 | } 166 | 167 | // Processing command. 168 | processor.exec = program => { 169 | if (processor.validate(program)) { 170 | if (program.stdin) { 171 | readPasswordStdIn(program); 172 | } else if (!program.batch && !program.delete) { 173 | readPassword(program); 174 | } else { 175 | processor.finalize(program); 176 | } 177 | } else { 178 | program.help(); 179 | } 180 | }; 181 | 182 | // Export processor. 183 | module.exports = processor; 184 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | // Importing crypto module. 4 | const crypto = require("crypto"); 5 | 6 | // Importing apache-md5 module. 7 | const md5 = require("apache-md5"); 8 | 9 | // Importing apache-crypt module. 10 | const crypt = require("apache-crypt"); 11 | 12 | // Bcrypt. 13 | const bcrypt = require("bcryptjs"); 14 | 15 | // Export object. 16 | const utils = {}; 17 | 18 | // Generates sha1 hash of password. 19 | utils.sha1 = password => { 20 | let hash = crypto.createHash("sha1"); 21 | hash.update(password); 22 | 23 | return hash.digest("base64"); 24 | }; 25 | 26 | // Verifies if password is correct. 27 | utils.verify = (hash, password) => { 28 | if (hash.substr(0, 5) === "{SHA}") { 29 | hash = hash.substr(5); 30 | return utils.sha1(password) === hash; 31 | } else if (hash.substr(0, 6) === "$apr1$" || hash.substr(0, 3) === "$1$") { 32 | return md5(password, hash) === hash; 33 | } else if (hash.substr(0, 4) === "$2y$" || hash.substr(0, 4) === "$2a$") { 34 | return bcrypt.compareSync(password, hash); 35 | } else { 36 | return hash === password || crypt(password, hash) === hash; 37 | } 38 | }; 39 | 40 | // Encodes password hash for output. 41 | utils.encode = program => { 42 | if (!program.delete) { 43 | // Get username and password. 44 | let password = program.args[program.args.length - 1]; 45 | 46 | // Encode. 47 | if (!program.plaintext) { 48 | if (program.crypt) { 49 | password = crypt(password); 50 | } else if (program.sha) { 51 | password = "{SHA}" + utils.sha1(password); 52 | } else if (program.bcrypt) { 53 | let cost = program.cost ? program.cost : 5; 54 | let salt = bcrypt.genSaltSync(cost); 55 | 56 | password = bcrypt.hashSync(password, salt); 57 | } else { 58 | password = md5(password); 59 | } 60 | } 61 | 62 | // Return it. 63 | return password; 64 | } 65 | }; 66 | 67 | // Export. 68 | module.exports = utils; 69 | -------------------------------------------------------------------------------- /test/newline.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | // Expect module. 4 | const expect = require("chai").expect; 5 | 6 | // FS. 7 | const fs = require("fs"); 8 | 9 | // Utils 10 | describe("newline", () => { 11 | // Tests for sha1. 12 | describe("#check", () => { 13 | it("line endings should be linux style", done => { 14 | // eslint-disable-next-line node/prefer-promises/fs 15 | fs.readFile(__dirname + "/../bin/htpasswd", (err, data) => { 16 | expect(-1 === data.toString().indexOf("\n\r")).to.true; 17 | done(); 18 | }); 19 | }); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /test/processor.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | // FS. 4 | const fs = require("fs"); 5 | 6 | // Expect module. 7 | const expect = require("chai").expect; 8 | 9 | // Source. 10 | const processor = require("../src/processor"); 11 | 12 | // Processor. 13 | describe("processor", () => { 14 | // Tests for exec. 15 | describe("#exec", () => { 16 | afterEach(() => { 17 | if (fs.existsSync("password.txt")) { 18 | fs.unlinkSync("password.txt"); 19 | } 20 | }); 21 | 22 | it("console output", done => { 23 | const program = { 24 | batch: true, 25 | nofile: true, 26 | sha: true, 27 | args: ["mary", "pass12"] 28 | }; 29 | 30 | const preservedLog = console.log; 31 | console.log = function() { 32 | console.log = preservedLog; 33 | console.log.apply(console, arguments); 34 | 35 | expect(arguments[0]).to.equal("mary:{SHA}TgXU+mQ5o9ryuFPj3xhY1C6GHfE="); 36 | done(); 37 | }; 38 | 39 | // Source. 40 | processor.exec(program); 41 | }); 42 | 43 | it("successful password verification", done => { 44 | fs.writeFileSync("password.txt", "detka:milaya\n", "UTF-8"); 45 | const program = { 46 | batch: true, 47 | verify: true, 48 | plain: true, 49 | args: ["password.txt", "detka", "milaya"] 50 | }; 51 | 52 | const preservedLog = console.log; 53 | console.log = function() { 54 | console.log = preservedLog; 55 | console.log.apply(console, arguments); 56 | 57 | expect(arguments[0]).to.equal("Password for user detka correct."); 58 | done(); 59 | }; 60 | 61 | // Source. 62 | processor.exec(program); 63 | }); 64 | 65 | it("failed password verification", done => { 66 | fs.writeFileSync("password.txt", "detka:nemilaya\n", "UTF-8"); 67 | const program = { 68 | batch: true, 69 | verify: true, 70 | plain: true, 71 | args: ["password.txt", "detka", "milaya"] 72 | }; 73 | 74 | const preservedLog = console.log; 75 | console.log = function() { 76 | console.log = preservedLog; 77 | console.log.apply(console, arguments); 78 | 79 | expect(arguments[0]).to.equal("Password verification failed."); 80 | done(); 81 | }; 82 | 83 | // Source. 84 | processor.exec(program); 85 | }); 86 | 87 | it("file create", () => { 88 | const program = { 89 | batch: true, 90 | sha: true, 91 | create: true, 92 | args: ["password.txt", "gevorg", "sho"] 93 | }; 94 | 95 | // Source. 96 | processor.exec(program); 97 | 98 | const fileData = fs.readFileSync("password.txt", "UTF-8"); 99 | expect(fileData).to.equal("gevorg:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n"); 100 | }); 101 | 102 | it("file update", () => { 103 | fs.writeFileSync( 104 | "password.txt", 105 | "mihrdat:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n", 106 | "UTF-8" 107 | ); 108 | const program = { 109 | batch: true, 110 | sha: true, 111 | args: ["password.txt", "mihrdat", "king"] 112 | }; 113 | 114 | // Source. 115 | processor.exec(program); 116 | 117 | const fileData = fs.readFileSync("password.txt", "UTF-8"); 118 | expect(fileData).to.equal("mihrdat:{SHA}SBkC7BTq8/z+xr6CvWpjuXKsUX8=\n"); 119 | }); 120 | 121 | it("file delete", () => { 122 | fs.writeFileSync( 123 | "password.txt", 124 | "urmia:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n", 125 | "UTF-8" 126 | ); 127 | const program = { delete: true, args: ["password.txt", "urmia"] }; 128 | 129 | // Source. 130 | processor.exec(program); 131 | 132 | const fileData = fs.readFileSync("password.txt", "UTF-8"); 133 | expect(fileData).to.equal("\n"); 134 | }); 135 | 136 | it("file delete not existing", done => { 137 | fs.writeFileSync( 138 | "password.txt", 139 | "urmia:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n", 140 | "UTF-8" 141 | ); 142 | const program = { delete: true, args: ["password.txt", "sonya"] }; 143 | 144 | const preservedLog = console.log; 145 | console.error = function() { 146 | console.error = preservedLog; 147 | console.error.apply(console, arguments); 148 | 149 | expect(arguments[0]).to.equal("User sonya not found."); 150 | done(); 151 | }; 152 | 153 | // Source. 154 | processor.exec(program); 155 | }); 156 | 157 | it("file add", () => { 158 | const initData = "mihrdat:{SHA}NSjjR5VzkksaQNgdEKs0MqPtStI=\n"; 159 | fs.writeFileSync("password.txt", initData, "UTF-8"); 160 | 161 | const program = { 162 | sha: true, 163 | batch: true, 164 | args: ["password.txt", "tigran", "thegreat"] 165 | }; 166 | 167 | // Source. 168 | processor.exec(program); 169 | 170 | const fileData = fs.readFileSync("password.txt", "UTF-8"); 171 | expect(fileData).to.equal( 172 | `${initData}tigran:{SHA}1cYTTawbHcKifj2Yn6MC8bDq7Dc=\n` 173 | ); 174 | }); 175 | 176 | it("file add, not existing", done => { 177 | const program = { 178 | batch: true, 179 | args: ["password.txt", "tigran", "thegreat"] 180 | }; 181 | 182 | const preservedLog = console.log; 183 | console.error = function() { 184 | console.error = preservedLog; 185 | console.error.apply(console, arguments); 186 | 187 | expect(arguments[0]).to.equal( 188 | "Cannot modify file password.txt; use '-c' to create it." 189 | ); 190 | done(); 191 | }; 192 | 193 | // Source. 194 | processor.exec(program); 195 | }); 196 | 197 | it("help", done => { 198 | const program = { 199 | args: ["klara"], 200 | help: function() { 201 | done(); 202 | } 203 | }; 204 | 205 | // Source. 206 | processor.exec(program); 207 | }); 208 | }); 209 | 210 | // Tests for validate. 211 | describe("#validate", () => { 212 | it("username", () => { 213 | // Source. 214 | const valid = processor.validate({ nofile: true, args: ["natalya"] }); 215 | 216 | // Expectation. 217 | expect(valid).to.be.true; 218 | }); 219 | 220 | it("username, password", () => { 221 | // Source. 222 | const valid = processor.validate({ 223 | nofile: true, 224 | batch: true, 225 | args: ["kiara", "superPass"] 226 | }); 227 | 228 | // Expectation. 229 | expect(valid).to.be.true; 230 | }); 231 | 232 | it("username, password, file", () => { 233 | // Source. 234 | const valid = processor.validate({ 235 | batch: true, 236 | args: ["pass.txt", "anna", "userPass"] 237 | }); 238 | 239 | // Expectation. 240 | expect(valid).to.be.true; 241 | }); 242 | 243 | it("missing password", () => { 244 | // Source. 245 | const valid = processor.validate({ 246 | batch: true, 247 | args: ["super.txt", "rita"] 248 | }); 249 | 250 | // Expectation. 251 | expect(valid).to.be.false; 252 | }); 253 | 254 | it("missing file", () => { 255 | // Source. 256 | const valid = processor.validate({ args: ["rita"] }); 257 | 258 | // Expectation. 259 | expect(valid).to.be.false; 260 | }); 261 | 262 | it("valid cost argument", () => { 263 | let program = { 264 | cost: true, 265 | batch: true, 266 | nofile: true, 267 | args: ["11", "valod", "ssss"] 268 | }; 269 | 270 | // Source. 271 | const valid = processor.validate(program); 272 | 273 | // Expectation. 274 | expect(valid).to.be.true; 275 | expect(program.cost).to.equal(11); 276 | expect(program.args.length).to.equal(2); 277 | }); 278 | 279 | it("invalid cost argument", () => { 280 | let program = { 281 | cost: false, 282 | batch: true, 283 | nofile: true, 284 | args: ["11", "valod", "ssss"] 285 | }; 286 | 287 | // Source. 288 | const valid = processor.validate(program); 289 | 290 | // Expectation. 291 | expect(valid).to.be.false; 292 | }); 293 | }); 294 | }); 295 | -------------------------------------------------------------------------------- /test/utils.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | // Expect module. 4 | const expect = require("chai").expect; 5 | 6 | // Source. 7 | const utils = require("../src/utils"); 8 | 9 | // Importing apache-md5 module. 10 | const md5 = require("apache-md5"); 11 | 12 | // Importing apache-crypt module. 13 | const crypt = require("apache-crypt"); 14 | 15 | // Utils 16 | describe("utils", () => { 17 | // Tests for sha1. 18 | describe("#sha1", () => { 19 | it("hash should be correct", () => { 20 | // Source. 21 | const hash = utils.sha1("devochka"); 22 | 23 | // Expectation. 24 | expect(hash).equal("deWaCTR7rOMysgZN3EgtgAaTzPs="); 25 | }); 26 | }); 27 | 28 | // Tests for encode. 29 | describe("#encode", () => { 30 | it("delete option", () => { 31 | // Source. 32 | const encoded = utils.encode({ delete: true }); 33 | 34 | // Expectation. 35 | expect(encoded).to.be.undefined; 36 | }); 37 | 38 | it("plain option", () => { 39 | // Source. 40 | const encoded = utils.encode({ 41 | plaintext: true, 42 | args: ["olga", "chexova111"] 43 | }); 44 | 45 | // Expectation. 46 | expect(encoded).to.equal("chexova111"); 47 | }); 48 | 49 | it("sha1 option", () => { 50 | // Source. 51 | const encoded = utils.encode({ sha: true, args: ["olga", "chexova111"] }); 52 | 53 | // Expectation. 54 | expect(encoded).to.equal("{SHA}Iv8c5zqtbvxiwFTxcEI6CteSx48="); 55 | }); 56 | 57 | it("crypt option", () => { 58 | // Source. 59 | const encoded = utils.encode({ 60 | crypt: true, 61 | args: ["olga", "chexova111"] 62 | }); 63 | 64 | // Expectation. 65 | expect(encoded).to.equal(crypt("chexova111", encoded)); 66 | }); 67 | 68 | it("md5 option", () => { 69 | // Source. 70 | const encoded = utils.encode({ args: ["kia", "siara"] }); 71 | 72 | // Expectation. 73 | expect(encoded).to.equal(md5("siara", encoded)); 74 | }); 75 | }); 76 | 77 | // Tests for verify. 78 | describe("#verify", () => { 79 | it("correct plain pass", function() { 80 | // Source. 81 | const result = utils.verify("plainPassword", "plainPassword"); 82 | 83 | // Expectation. 84 | expect(result).to.be.true; 85 | }); 86 | 87 | it("wrong plain pass", () => { 88 | // Source. 89 | const result = utils.verify("plainWrongPassword", "plainPassword"); 90 | 91 | // Expectation. 92 | expect(result).to.be.false; 93 | }); 94 | 95 | it("correct sha1 pass", () => { 96 | // Source. 97 | const result = utils.verify("{SHA}hGJRiZy8gBpNMHvs1UOTqIrRU20=", "hanna"); 98 | 99 | // Expectation. 100 | expect(result).to.be.true; 101 | }); 102 | 103 | it("wrong sha1 pass", () => { 104 | // Source. 105 | const result = utils.verify( 106 | "{SHA}hGJRiZy8gBpNMHvs1UOTqIrRU20=", 107 | "bannana" 108 | ); 109 | 110 | // Expectation. 111 | expect(result).to.be.false; 112 | }); 113 | 114 | it("correct crypt pass", () => { 115 | // Source. 116 | const result = utils.verify("hVmhA.naUQQ3I", "raya"); 117 | 118 | // Expectation. 119 | expect(result).to.be.true; 120 | }); 121 | 122 | it("wrong crypt pass", () => { 123 | // Source. 124 | const result = utils.verify("hVmhA.naUQQ3I", "serob"); 125 | 126 | // Expectation. 127 | expect(result).to.be.false; 128 | }); 129 | 130 | it("correct MD5 pass", () => { 131 | // Source. 132 | const result = utils.verify( 133 | "$apr1$Ny3hkBdz$UReNPq7yEH6Y/D/FXUPwI/", 134 | "mia" 135 | ); 136 | 137 | // Expectation. 138 | expect(result).to.be.true; 139 | }); 140 | 141 | it("wrong MD5 pass", () => { 142 | // Source. 143 | const result = utils.verify( 144 | "$apr1$Ny3hkBdz$UReNPq7yEH6Y/D/FXUPwI/", 145 | "leo" 146 | ); 147 | 148 | // Expectation. 149 | expect(result).to.be.false; 150 | }); 151 | 152 | it("correct short MD5 pass", () => { 153 | // Source. 154 | const result = utils.verify("$1$Ny3hkBdz$BpVVFK6YBnrFYJtmeyrrH0", "mia"); 155 | 156 | // Expectation. 157 | expect(result).to.be.true; 158 | }); 159 | 160 | it("wrong short MD5 pass", () => { 161 | // Source. 162 | const result = utils.verify("$1$Ny3hkBdz$UReNPq7yEH6Y/D/FXUPwI/", "leo"); 163 | 164 | // Expectation. 165 | expect(result).to.be.false; 166 | }); 167 | 168 | it("correct bcrypt pass", () => { 169 | // Source. 170 | const result = utils.verify( 171 | "$2y$05$c4WoMPo3SXsafkva.HHa6uXQZWr7oboPiC2bT/r7q1BB8I2s0BRqC", 172 | "myPassword" 173 | ); 174 | 175 | // Expectation. 176 | expect(result).to.be.true; 177 | }); 178 | 179 | it("correct old bcrypt pass", () => { 180 | // Source. 181 | const result = utils.verify( 182 | "$2a$05$c4WoMPo3SXsafkva.HHa6uXQZWr7oboPiC2bT/r7q1BB8I2s0BRqC", 183 | "myPassword" 184 | ); 185 | 186 | // Expectation. 187 | expect(result).to.be.true; 188 | }); 189 | 190 | it("wrong bcrypt pass", () => { 191 | // Source. 192 | const result = utils.verify( 193 | "$2a$05$c4WoMPo3SXsafkva.HHa6uXQZWr7oboPiC2bT/r7q1BB8I2s0BRqC", 194 | "notMyPassword" 195 | ); 196 | 197 | // Expectation. 198 | expect(result).to.be.false; 199 | }); 200 | }); 201 | }); 202 | --------------------------------------------------------------------------------