├── .gitattributes ├── .gitignore ├── .npmignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── bin └── contentful-clean-space.js ├── package-lock.json ├── package.json ├── src └── main.ts ├── tsconfig.json └── tslint.json /.gitattributes: -------------------------------------------------------------------------------- 1 | package.json text eol=lf 2 | package-lock.json text eol=lf 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | .vscode/ 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | 11 | # Runtime data 12 | pids 13 | *.pid 14 | *.seed 15 | *.pid.lock 16 | 17 | # Directory for instrumented libs generated by jscoverage/JSCover 18 | lib-cov 19 | 20 | # Coverage directory used by tools like istanbul 21 | coverage 22 | 23 | # nyc test coverage 24 | .nyc_output 25 | 26 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 27 | .grunt 28 | 29 | # Bower dependency directory (https://bower.io/) 30 | bower_components 31 | 32 | # node-waf configuration 33 | .lock-wscript 34 | 35 | # Compiled binary addons (https://nodejs.org/api/addons.html) 36 | build/Release 37 | 38 | # Dependency directories 39 | node_modules/ 40 | jspm_packages/ 41 | 42 | # Typescript v1 declaration files 43 | typings/ 44 | 45 | # Optional npm cache directory 46 | .npm 47 | 48 | # Optional eslint cache 49 | .eslintcache 50 | 51 | # Optional REPL history 52 | .node_repl_history 53 | 54 | # Output of 'npm pack' 55 | *.tgz 56 | 57 | # Yarn Integrity file 58 | .yarn-integrity 59 | 60 | # dotenv environment variables file 61 | .env 62 | 63 | # next.js build output 64 | .next 65 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | src/ 2 | build/**/*.js.map 3 | .vscode/ 4 | tsconfig.json 5 | tslint.json 6 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [Unreleased] 4 | 5 | ## [0.9.0] 6 | 7 | - Update deps 8 | - Require Node 12 9 | 10 | ## [0.8.0] 11 | 12 | - Drop support for Node 10 13 | 14 | ## [0.7.4] 15 | 16 | - Revert faulty ts-node usage 17 | 18 | ## [0.7.0] 19 | 20 | - Don't default to "master" environment any more as a safety measure agains unintended deletions 21 | - Fix assets deletion log messages 22 | - Log environment name on start 23 | 24 | ## [0.6.1] 25 | 26 | - remove outdated dep on ts-lint 27 | 28 | ## [0.6.0] 29 | 30 | - Add option to remove Assets/Media (contributed by [@anisval](https://github.com/anisval) 31 | - Update to latest contentful-manangement release 32 | 33 | ## [0.5.0] 34 | 35 | - Add env option to specify Contentful environment (contributed by @Ikstar) 36 | - Update dependencies 37 | 38 | ## [0.4.2] 39 | 40 | - Return exit code 1 when exception is thrown 41 | 42 | ## [0.4.1] 43 | 44 | - Improve README 45 | 46 | ## [0.4.0] 47 | 48 | - Add --content-types parameter to delete content types as well 49 | 50 | ## [0.3.0] 51 | 52 | - Prompt for confirmation before deleting all entries 53 | - New option `--yes` to override above confirmation 54 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Stephan Oehlert 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # contentful-clean-space 2 | 3 | Delete all entries from a contentful space. 4 | 5 | [Contentful CLI](https://github.com/contentful/contentful-cli) doesn't have a command to delete all entries from a space without deleting the space itself. However, this can be very useful, e.g. for user contract testing. 6 | 7 | ## Installation 8 | 9 | Using npm: 10 | 11 | ``` 12 | npm install -g contentful-clean-space 13 | ``` 14 | 15 | ## Usage 16 | 17 | ``` 18 | contentful-clean-space 19 | Options: 20 | --help Show help [boolean] 21 | --space-id Contentful space id [string] [required] 22 | --env Contentful environment [string] [required] 23 | --accesstoken Contentful access token [string] [required] 24 | --batch-size Number of parallel contentful requests 25 | [number] [default: 5] 26 | --content-types Delete content types as well [boolean] [default: false] 27 | --assets Delete assets as well [boolean] [default: false] 28 | -y, --yes Auto-confirm delete prompt [boolean] [default: false] 29 | -v, --verbose [boolean] [default: false] 30 | ``` 31 | 32 | All parameters can be provided from environment variables, too. To do that, just set an environment variable using UPPER_CASE casing. 33 | 34 | ## Example Usage 35 | 36 | To delete all entries, content types, as well as assets in the "master" environment, and without the safety prompt, use `contentful-clean-space --space-id [space id] --accesstoken [personal access token] --content-types=true --assets=true --env master --yes=true` 37 | -------------------------------------------------------------------------------- /bin/contentful-clean-space.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const index = require("../build/main"); 3 | 4 | (async () => { 5 | try { 6 | await index.main(); 7 | } 8 | catch (e) { 9 | console.log(e); 10 | process.exitCode = 1; 11 | } 12 | })(); 13 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "contentful-clean-space", 3 | "version": "0.9.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "contentful-clean-space", 9 | "version": "0.9.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "contentful-management": "^10.26.0", 13 | "inquirer": "^8.2.0", 14 | "progress": "^2.0.3", 15 | "yargs": "^17.3.1" 16 | }, 17 | "bin": { 18 | "contentful-clean-space": "bin/contentful-clean-space.js" 19 | }, 20 | "devDependencies": { 21 | "@types/inquirer": "8.2.0", 22 | "@types/progress": "^2.0.5", 23 | "@types/yargs": "^17.0.8", 24 | "prettier": "^2.8.1", 25 | "typescript": "^4.5.4" 26 | }, 27 | "engines": { 28 | "node": ">=12" 29 | } 30 | }, 31 | "node_modules/@types/inquirer": { 32 | "version": "8.2.0", 33 | "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.0.tgz", 34 | "integrity": "sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ==", 35 | "dev": true, 36 | "dependencies": { 37 | "@types/through": "*", 38 | "rxjs": "^7.2.0" 39 | } 40 | }, 41 | "node_modules/@types/json-patch": { 42 | "version": "0.0.30", 43 | "resolved": "https://registry.npmjs.org/@types/json-patch/-/json-patch-0.0.30.tgz", 44 | "integrity": "sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw==" 45 | }, 46 | "node_modules/@types/node": { 47 | "version": "11.13.0", 48 | "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.0.tgz", 49 | "integrity": "sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng==", 50 | "dev": true 51 | }, 52 | "node_modules/@types/progress": { 53 | "version": "2.0.5", 54 | "resolved": "https://registry.npmjs.org/@types/progress/-/progress-2.0.5.tgz", 55 | "integrity": "sha512-ZYYVc/kSMkhH9W/4dNK/sLNra3cnkfT2nJyOAIDY+C2u6w72wa0s1aXAezVtbTsnN8HID1uhXCrLwDE2ZXpplg==", 56 | "dev": true, 57 | "dependencies": { 58 | "@types/node": "*" 59 | } 60 | }, 61 | "node_modules/@types/through": { 62 | "version": "0.0.30", 63 | "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", 64 | "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", 65 | "dev": true, 66 | "dependencies": { 67 | "@types/node": "*" 68 | } 69 | }, 70 | "node_modules/@types/yargs": { 71 | "version": "17.0.8", 72 | "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.8.tgz", 73 | "integrity": "sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw==", 74 | "dev": true, 75 | "dependencies": { 76 | "@types/yargs-parser": "*" 77 | } 78 | }, 79 | "node_modules/@types/yargs-parser": { 80 | "version": "20.2.1", 81 | "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", 82 | "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", 83 | "dev": true 84 | }, 85 | "node_modules/ansi-escapes": { 86 | "version": "4.3.2", 87 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 88 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 89 | "dependencies": { 90 | "type-fest": "^0.21.3" 91 | }, 92 | "engines": { 93 | "node": ">=8" 94 | }, 95 | "funding": { 96 | "url": "https://github.com/sponsors/sindresorhus" 97 | } 98 | }, 99 | "node_modules/ansi-regex": { 100 | "version": "5.0.1", 101 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 102 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 103 | "engines": { 104 | "node": ">=8" 105 | } 106 | }, 107 | "node_modules/ansi-styles": { 108 | "version": "4.3.0", 109 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 110 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 111 | "dependencies": { 112 | "color-convert": "^2.0.1" 113 | }, 114 | "engines": { 115 | "node": ">=8" 116 | }, 117 | "funding": { 118 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 119 | } 120 | }, 121 | "node_modules/asynckit": { 122 | "version": "0.4.0", 123 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 124 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 125 | }, 126 | "node_modules/axios": { 127 | "version": "0.27.2", 128 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 129 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 130 | "dependencies": { 131 | "follow-redirects": "^1.14.9", 132 | "form-data": "^4.0.0" 133 | } 134 | }, 135 | "node_modules/base64-js": { 136 | "version": "1.5.1", 137 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 138 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 139 | "funding": [ 140 | { 141 | "type": "github", 142 | "url": "https://github.com/sponsors/feross" 143 | }, 144 | { 145 | "type": "patreon", 146 | "url": "https://www.patreon.com/feross" 147 | }, 148 | { 149 | "type": "consulting", 150 | "url": "https://feross.org/support" 151 | } 152 | ] 153 | }, 154 | "node_modules/bl": { 155 | "version": "4.1.0", 156 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 157 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 158 | "dependencies": { 159 | "buffer": "^5.5.0", 160 | "inherits": "^2.0.4", 161 | "readable-stream": "^3.4.0" 162 | } 163 | }, 164 | "node_modules/buffer": { 165 | "version": "5.7.1", 166 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 167 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 168 | "funding": [ 169 | { 170 | "type": "github", 171 | "url": "https://github.com/sponsors/feross" 172 | }, 173 | { 174 | "type": "patreon", 175 | "url": "https://www.patreon.com/feross" 176 | }, 177 | { 178 | "type": "consulting", 179 | "url": "https://feross.org/support" 180 | } 181 | ], 182 | "dependencies": { 183 | "base64-js": "^1.3.1", 184 | "ieee754": "^1.1.13" 185 | } 186 | }, 187 | "node_modules/call-bind": { 188 | "version": "1.0.2", 189 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 190 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 191 | "dependencies": { 192 | "function-bind": "^1.1.1", 193 | "get-intrinsic": "^1.0.2" 194 | }, 195 | "funding": { 196 | "url": "https://github.com/sponsors/ljharb" 197 | } 198 | }, 199 | "node_modules/chalk": { 200 | "version": "4.1.2", 201 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 202 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 203 | "dependencies": { 204 | "ansi-styles": "^4.1.0", 205 | "supports-color": "^7.1.0" 206 | }, 207 | "engines": { 208 | "node": ">=10" 209 | }, 210 | "funding": { 211 | "url": "https://github.com/chalk/chalk?sponsor=1" 212 | } 213 | }, 214 | "node_modules/chardet": { 215 | "version": "0.7.0", 216 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 217 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 218 | }, 219 | "node_modules/cli-cursor": { 220 | "version": "3.1.0", 221 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 222 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 223 | "dependencies": { 224 | "restore-cursor": "^3.1.0" 225 | }, 226 | "engines": { 227 | "node": ">=8" 228 | } 229 | }, 230 | "node_modules/cli-spinners": { 231 | "version": "2.6.1", 232 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", 233 | "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", 234 | "engines": { 235 | "node": ">=6" 236 | }, 237 | "funding": { 238 | "url": "https://github.com/sponsors/sindresorhus" 239 | } 240 | }, 241 | "node_modules/cli-width": { 242 | "version": "3.0.0", 243 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", 244 | "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", 245 | "engines": { 246 | "node": ">= 10" 247 | } 248 | }, 249 | "node_modules/cliui": { 250 | "version": "7.0.4", 251 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 252 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 253 | "dependencies": { 254 | "string-width": "^4.2.0", 255 | "strip-ansi": "^6.0.0", 256 | "wrap-ansi": "^7.0.0" 257 | } 258 | }, 259 | "node_modules/clone": { 260 | "version": "1.0.4", 261 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 262 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", 263 | "engines": { 264 | "node": ">=0.8" 265 | } 266 | }, 267 | "node_modules/color-convert": { 268 | "version": "2.0.1", 269 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 270 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 271 | "dependencies": { 272 | "color-name": "~1.1.4" 273 | }, 274 | "engines": { 275 | "node": ">=7.0.0" 276 | } 277 | }, 278 | "node_modules/color-name": { 279 | "version": "1.1.4", 280 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 281 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 282 | }, 283 | "node_modules/combined-stream": { 284 | "version": "1.0.8", 285 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 286 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 287 | "dependencies": { 288 | "delayed-stream": "~1.0.0" 289 | }, 290 | "engines": { 291 | "node": ">= 0.8" 292 | } 293 | }, 294 | "node_modules/contentful-management": { 295 | "version": "10.26.0", 296 | "resolved": "https://registry.npmjs.org/contentful-management/-/contentful-management-10.26.0.tgz", 297 | "integrity": "sha512-7POoSUwqv1vto4Ud0y878lMiuJYH/mfulLzN/EMAyEv92QesGPatVR9jhBDvCTpPSXEa86oVRA+phw+hz7Ih1w==", 298 | "dependencies": { 299 | "@types/json-patch": "0.0.30", 300 | "axios": "^0.27.1", 301 | "contentful-sdk-core": "^7.0.1", 302 | "fast-copy": "^3.0.0", 303 | "lodash.isplainobject": "^4.0.6" 304 | }, 305 | "engines": { 306 | "node": ">=14" 307 | } 308 | }, 309 | "node_modules/contentful-sdk-core": { 310 | "version": "7.0.4", 311 | "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-7.0.4.tgz", 312 | "integrity": "sha512-HwYdXmTsVh9rJOq+TA8CsY+vt6ivqkyJZpiEyVboZKIXAa83QmeVLAeBxK75+IiI9KpaPz7LCjVBXTGoTrhV7A==", 313 | "dependencies": { 314 | "fast-copy": "^2.1.7", 315 | "lodash.isplainobject": "^4.0.6", 316 | "lodash.isstring": "^4.0.1", 317 | "p-throttle": "^4.1.1", 318 | "qs": "^6.9.4" 319 | }, 320 | "engines": { 321 | "node": ">=12" 322 | } 323 | }, 324 | "node_modules/contentful-sdk-core/node_modules/fast-copy": { 325 | "version": "2.1.7", 326 | "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.1.7.tgz", 327 | "integrity": "sha512-ozrGwyuCTAy7YgFCua8rmqmytECYk/JYAMXcswOcm0qvGoE3tPb7ivBeIHTOK2DiapBhDZgacIhzhQIKU5TCfA==" 328 | }, 329 | "node_modules/defaults": { 330 | "version": "1.0.3", 331 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 332 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 333 | "dependencies": { 334 | "clone": "^1.0.2" 335 | } 336 | }, 337 | "node_modules/delayed-stream": { 338 | "version": "1.0.0", 339 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 340 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 341 | "engines": { 342 | "node": ">=0.4.0" 343 | } 344 | }, 345 | "node_modules/emoji-regex": { 346 | "version": "8.0.0", 347 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 348 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 349 | }, 350 | "node_modules/escalade": { 351 | "version": "3.1.1", 352 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 353 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 354 | "engines": { 355 | "node": ">=6" 356 | } 357 | }, 358 | "node_modules/escape-string-regexp": { 359 | "version": "1.0.5", 360 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 361 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 362 | "engines": { 363 | "node": ">=0.8.0" 364 | } 365 | }, 366 | "node_modules/external-editor": { 367 | "version": "3.1.0", 368 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 369 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 370 | "dependencies": { 371 | "chardet": "^0.7.0", 372 | "iconv-lite": "^0.4.24", 373 | "tmp": "^0.0.33" 374 | }, 375 | "engines": { 376 | "node": ">=4" 377 | } 378 | }, 379 | "node_modules/fast-copy": { 380 | "version": "3.0.0", 381 | "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.0.tgz", 382 | "integrity": "sha512-4HzS+9pQ5Yxtv13Lhs1Z1unMXamBdn5nA4bEi1abYpDNSpSp7ODYQ1KPMF6nTatfEzgH6/zPvXKU1zvHiUjWlA==" 383 | }, 384 | "node_modules/figures": { 385 | "version": "3.2.0", 386 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 387 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 388 | "dependencies": { 389 | "escape-string-regexp": "^1.0.5" 390 | }, 391 | "engines": { 392 | "node": ">=8" 393 | }, 394 | "funding": { 395 | "url": "https://github.com/sponsors/sindresorhus" 396 | } 397 | }, 398 | "node_modules/follow-redirects": { 399 | "version": "1.15.2", 400 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 401 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 402 | "funding": [ 403 | { 404 | "type": "individual", 405 | "url": "https://github.com/sponsors/RubenVerborgh" 406 | } 407 | ], 408 | "engines": { 409 | "node": ">=4.0" 410 | }, 411 | "peerDependenciesMeta": { 412 | "debug": { 413 | "optional": true 414 | } 415 | } 416 | }, 417 | "node_modules/form-data": { 418 | "version": "4.0.0", 419 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 420 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 421 | "dependencies": { 422 | "asynckit": "^0.4.0", 423 | "combined-stream": "^1.0.8", 424 | "mime-types": "^2.1.12" 425 | }, 426 | "engines": { 427 | "node": ">= 6" 428 | } 429 | }, 430 | "node_modules/function-bind": { 431 | "version": "1.1.1", 432 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 433 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 434 | }, 435 | "node_modules/get-caller-file": { 436 | "version": "2.0.5", 437 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 438 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 439 | "engines": { 440 | "node": "6.* || 8.* || >= 10.*" 441 | } 442 | }, 443 | "node_modules/get-intrinsic": { 444 | "version": "1.1.3", 445 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 446 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 447 | "dependencies": { 448 | "function-bind": "^1.1.1", 449 | "has": "^1.0.3", 450 | "has-symbols": "^1.0.3" 451 | }, 452 | "funding": { 453 | "url": "https://github.com/sponsors/ljharb" 454 | } 455 | }, 456 | "node_modules/has": { 457 | "version": "1.0.3", 458 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 459 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 460 | "dependencies": { 461 | "function-bind": "^1.1.1" 462 | }, 463 | "engines": { 464 | "node": ">= 0.4.0" 465 | } 466 | }, 467 | "node_modules/has-flag": { 468 | "version": "4.0.0", 469 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 470 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 471 | "engines": { 472 | "node": ">=8" 473 | } 474 | }, 475 | "node_modules/has-symbols": { 476 | "version": "1.0.3", 477 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 478 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 479 | "engines": { 480 | "node": ">= 0.4" 481 | }, 482 | "funding": { 483 | "url": "https://github.com/sponsors/ljharb" 484 | } 485 | }, 486 | "node_modules/iconv-lite": { 487 | "version": "0.4.24", 488 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 489 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 490 | "dependencies": { 491 | "safer-buffer": ">= 2.1.2 < 3" 492 | }, 493 | "engines": { 494 | "node": ">=0.10.0" 495 | } 496 | }, 497 | "node_modules/ieee754": { 498 | "version": "1.2.1", 499 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 500 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 501 | "funding": [ 502 | { 503 | "type": "github", 504 | "url": "https://github.com/sponsors/feross" 505 | }, 506 | { 507 | "type": "patreon", 508 | "url": "https://www.patreon.com/feross" 509 | }, 510 | { 511 | "type": "consulting", 512 | "url": "https://feross.org/support" 513 | } 514 | ] 515 | }, 516 | "node_modules/inherits": { 517 | "version": "2.0.4", 518 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 519 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 520 | }, 521 | "node_modules/inquirer": { 522 | "version": "8.2.0", 523 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", 524 | "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", 525 | "dependencies": { 526 | "ansi-escapes": "^4.2.1", 527 | "chalk": "^4.1.1", 528 | "cli-cursor": "^3.1.0", 529 | "cli-width": "^3.0.0", 530 | "external-editor": "^3.0.3", 531 | "figures": "^3.0.0", 532 | "lodash": "^4.17.21", 533 | "mute-stream": "0.0.8", 534 | "ora": "^5.4.1", 535 | "run-async": "^2.4.0", 536 | "rxjs": "^7.2.0", 537 | "string-width": "^4.1.0", 538 | "strip-ansi": "^6.0.0", 539 | "through": "^2.3.6" 540 | }, 541 | "engines": { 542 | "node": ">=8.0.0" 543 | } 544 | }, 545 | "node_modules/inquirer/node_modules/rxjs": { 546 | "version": "7.4.0", 547 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", 548 | "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", 549 | "dependencies": { 550 | "tslib": "~2.1.0" 551 | } 552 | }, 553 | "node_modules/inquirer/node_modules/tslib": { 554 | "version": "2.1.0", 555 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", 556 | "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" 557 | }, 558 | "node_modules/is-fullwidth-code-point": { 559 | "version": "3.0.0", 560 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 561 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 562 | "engines": { 563 | "node": ">=8" 564 | } 565 | }, 566 | "node_modules/is-interactive": { 567 | "version": "1.0.0", 568 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", 569 | "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", 570 | "engines": { 571 | "node": ">=8" 572 | } 573 | }, 574 | "node_modules/is-unicode-supported": { 575 | "version": "0.1.0", 576 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 577 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", 578 | "engines": { 579 | "node": ">=10" 580 | }, 581 | "funding": { 582 | "url": "https://github.com/sponsors/sindresorhus" 583 | } 584 | }, 585 | "node_modules/lodash": { 586 | "version": "4.17.21", 587 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 588 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 589 | }, 590 | "node_modules/lodash.isplainobject": { 591 | "version": "4.0.6", 592 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 593 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 594 | }, 595 | "node_modules/lodash.isstring": { 596 | "version": "4.0.1", 597 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 598 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" 599 | }, 600 | "node_modules/log-symbols": { 601 | "version": "4.1.0", 602 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 603 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 604 | "dependencies": { 605 | "chalk": "^4.1.0", 606 | "is-unicode-supported": "^0.1.0" 607 | }, 608 | "engines": { 609 | "node": ">=10" 610 | }, 611 | "funding": { 612 | "url": "https://github.com/sponsors/sindresorhus" 613 | } 614 | }, 615 | "node_modules/mime-db": { 616 | "version": "1.52.0", 617 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 618 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 619 | "engines": { 620 | "node": ">= 0.6" 621 | } 622 | }, 623 | "node_modules/mime-types": { 624 | "version": "2.1.35", 625 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 626 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 627 | "dependencies": { 628 | "mime-db": "1.52.0" 629 | }, 630 | "engines": { 631 | "node": ">= 0.6" 632 | } 633 | }, 634 | "node_modules/mimic-fn": { 635 | "version": "2.1.0", 636 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 637 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 638 | "engines": { 639 | "node": ">=6" 640 | } 641 | }, 642 | "node_modules/mute-stream": { 643 | "version": "0.0.8", 644 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 645 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 646 | }, 647 | "node_modules/object-inspect": { 648 | "version": "1.12.2", 649 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 650 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 651 | "funding": { 652 | "url": "https://github.com/sponsors/ljharb" 653 | } 654 | }, 655 | "node_modules/onetime": { 656 | "version": "5.1.2", 657 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 658 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 659 | "dependencies": { 660 | "mimic-fn": "^2.1.0" 661 | }, 662 | "engines": { 663 | "node": ">=6" 664 | }, 665 | "funding": { 666 | "url": "https://github.com/sponsors/sindresorhus" 667 | } 668 | }, 669 | "node_modules/ora": { 670 | "version": "5.4.1", 671 | "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", 672 | "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", 673 | "dependencies": { 674 | "bl": "^4.1.0", 675 | "chalk": "^4.1.0", 676 | "cli-cursor": "^3.1.0", 677 | "cli-spinners": "^2.5.0", 678 | "is-interactive": "^1.0.0", 679 | "is-unicode-supported": "^0.1.0", 680 | "log-symbols": "^4.1.0", 681 | "strip-ansi": "^6.0.0", 682 | "wcwidth": "^1.0.1" 683 | }, 684 | "engines": { 685 | "node": ">=10" 686 | }, 687 | "funding": { 688 | "url": "https://github.com/sponsors/sindresorhus" 689 | } 690 | }, 691 | "node_modules/os-tmpdir": { 692 | "version": "1.0.2", 693 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 694 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 695 | "engines": { 696 | "node": ">=0.10.0" 697 | } 698 | }, 699 | "node_modules/p-throttle": { 700 | "version": "4.1.1", 701 | "resolved": "https://registry.npmjs.org/p-throttle/-/p-throttle-4.1.1.tgz", 702 | "integrity": "sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g==", 703 | "engines": { 704 | "node": ">=10" 705 | }, 706 | "funding": { 707 | "url": "https://github.com/sponsors/sindresorhus" 708 | } 709 | }, 710 | "node_modules/prettier": { 711 | "version": "2.8.1", 712 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", 713 | "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", 714 | "dev": true, 715 | "bin": { 716 | "prettier": "bin-prettier.js" 717 | }, 718 | "engines": { 719 | "node": ">=10.13.0" 720 | }, 721 | "funding": { 722 | "url": "https://github.com/prettier/prettier?sponsor=1" 723 | } 724 | }, 725 | "node_modules/progress": { 726 | "version": "2.0.3", 727 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 728 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 729 | "engines": { 730 | "node": ">=0.4.0" 731 | } 732 | }, 733 | "node_modules/qs": { 734 | "version": "6.11.0", 735 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 736 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 737 | "dependencies": { 738 | "side-channel": "^1.0.4" 739 | }, 740 | "engines": { 741 | "node": ">=0.6" 742 | }, 743 | "funding": { 744 | "url": "https://github.com/sponsors/ljharb" 745 | } 746 | }, 747 | "node_modules/readable-stream": { 748 | "version": "3.6.0", 749 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 750 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 751 | "dependencies": { 752 | "inherits": "^2.0.3", 753 | "string_decoder": "^1.1.1", 754 | "util-deprecate": "^1.0.1" 755 | }, 756 | "engines": { 757 | "node": ">= 6" 758 | } 759 | }, 760 | "node_modules/require-directory": { 761 | "version": "2.1.1", 762 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 763 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 764 | "engines": { 765 | "node": ">=0.10.0" 766 | } 767 | }, 768 | "node_modules/restore-cursor": { 769 | "version": "3.1.0", 770 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 771 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 772 | "dependencies": { 773 | "onetime": "^5.1.0", 774 | "signal-exit": "^3.0.2" 775 | }, 776 | "engines": { 777 | "node": ">=8" 778 | } 779 | }, 780 | "node_modules/run-async": { 781 | "version": "2.4.1", 782 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 783 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 784 | "engines": { 785 | "node": ">=0.12.0" 786 | } 787 | }, 788 | "node_modules/rxjs": { 789 | "version": "7.3.0", 790 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", 791 | "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", 792 | "dev": true, 793 | "dependencies": { 794 | "tslib": "~2.1.0" 795 | } 796 | }, 797 | "node_modules/rxjs/node_modules/tslib": { 798 | "version": "2.1.0", 799 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", 800 | "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", 801 | "dev": true 802 | }, 803 | "node_modules/safe-buffer": { 804 | "version": "5.2.1", 805 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 806 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 807 | "funding": [ 808 | { 809 | "type": "github", 810 | "url": "https://github.com/sponsors/feross" 811 | }, 812 | { 813 | "type": "patreon", 814 | "url": "https://www.patreon.com/feross" 815 | }, 816 | { 817 | "type": "consulting", 818 | "url": "https://feross.org/support" 819 | } 820 | ] 821 | }, 822 | "node_modules/safer-buffer": { 823 | "version": "2.1.2", 824 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 825 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 826 | }, 827 | "node_modules/side-channel": { 828 | "version": "1.0.4", 829 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 830 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 831 | "dependencies": { 832 | "call-bind": "^1.0.0", 833 | "get-intrinsic": "^1.0.2", 834 | "object-inspect": "^1.9.0" 835 | }, 836 | "funding": { 837 | "url": "https://github.com/sponsors/ljharb" 838 | } 839 | }, 840 | "node_modules/signal-exit": { 841 | "version": "3.0.5", 842 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", 843 | "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" 844 | }, 845 | "node_modules/string_decoder": { 846 | "version": "1.3.0", 847 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 848 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 849 | "dependencies": { 850 | "safe-buffer": "~5.2.0" 851 | } 852 | }, 853 | "node_modules/string-width": { 854 | "version": "4.2.0", 855 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 856 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 857 | "dependencies": { 858 | "emoji-regex": "^8.0.0", 859 | "is-fullwidth-code-point": "^3.0.0", 860 | "strip-ansi": "^6.0.0" 861 | }, 862 | "engines": { 863 | "node": ">=8" 864 | } 865 | }, 866 | "node_modules/string-width/node_modules/strip-ansi": { 867 | "version": "6.0.0", 868 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 869 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 870 | "dependencies": { 871 | "ansi-regex": "^5.0.0" 872 | }, 873 | "engines": { 874 | "node": ">=8" 875 | } 876 | }, 877 | "node_modules/strip-ansi": { 878 | "version": "6.0.0", 879 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 880 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 881 | "dependencies": { 882 | "ansi-regex": "^5.0.0" 883 | }, 884 | "engines": { 885 | "node": ">=8" 886 | } 887 | }, 888 | "node_modules/supports-color": { 889 | "version": "7.2.0", 890 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 891 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 892 | "dependencies": { 893 | "has-flag": "^4.0.0" 894 | }, 895 | "engines": { 896 | "node": ">=8" 897 | } 898 | }, 899 | "node_modules/through": { 900 | "version": "2.3.8", 901 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 902 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 903 | }, 904 | "node_modules/tmp": { 905 | "version": "0.0.33", 906 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 907 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 908 | "dependencies": { 909 | "os-tmpdir": "~1.0.2" 910 | }, 911 | "engines": { 912 | "node": ">=0.6.0" 913 | } 914 | }, 915 | "node_modules/type-fest": { 916 | "version": "0.21.3", 917 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 918 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 919 | "engines": { 920 | "node": ">=10" 921 | }, 922 | "funding": { 923 | "url": "https://github.com/sponsors/sindresorhus" 924 | } 925 | }, 926 | "node_modules/typescript": { 927 | "version": "4.9.4", 928 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", 929 | "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", 930 | "dev": true, 931 | "bin": { 932 | "tsc": "bin/tsc", 933 | "tsserver": "bin/tsserver" 934 | }, 935 | "engines": { 936 | "node": ">=4.2.0" 937 | } 938 | }, 939 | "node_modules/util-deprecate": { 940 | "version": "1.0.2", 941 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 942 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 943 | }, 944 | "node_modules/wcwidth": { 945 | "version": "1.0.1", 946 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 947 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 948 | "dependencies": { 949 | "defaults": "^1.0.3" 950 | } 951 | }, 952 | "node_modules/wrap-ansi": { 953 | "version": "7.0.0", 954 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 955 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 956 | "dependencies": { 957 | "ansi-styles": "^4.0.0", 958 | "string-width": "^4.1.0", 959 | "strip-ansi": "^6.0.0" 960 | }, 961 | "engines": { 962 | "node": ">=10" 963 | }, 964 | "funding": { 965 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 966 | } 967 | }, 968 | "node_modules/y18n": { 969 | "version": "5.0.8", 970 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 971 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 972 | "engines": { 973 | "node": ">=10" 974 | } 975 | }, 976 | "node_modules/yargs": { 977 | "version": "17.3.1", 978 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", 979 | "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", 980 | "dependencies": { 981 | "cliui": "^7.0.2", 982 | "escalade": "^3.1.1", 983 | "get-caller-file": "^2.0.5", 984 | "require-directory": "^2.1.1", 985 | "string-width": "^4.2.3", 986 | "y18n": "^5.0.5", 987 | "yargs-parser": "^21.0.0" 988 | }, 989 | "engines": { 990 | "node": ">=12" 991 | } 992 | }, 993 | "node_modules/yargs-parser": { 994 | "version": "21.0.0", 995 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", 996 | "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", 997 | "engines": { 998 | "node": ">=12" 999 | } 1000 | }, 1001 | "node_modules/yargs/node_modules/string-width": { 1002 | "version": "4.2.3", 1003 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1004 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1005 | "dependencies": { 1006 | "emoji-regex": "^8.0.0", 1007 | "is-fullwidth-code-point": "^3.0.0", 1008 | "strip-ansi": "^6.0.1" 1009 | }, 1010 | "engines": { 1011 | "node": ">=8" 1012 | } 1013 | }, 1014 | "node_modules/yargs/node_modules/strip-ansi": { 1015 | "version": "6.0.1", 1016 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1017 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1018 | "dependencies": { 1019 | "ansi-regex": "^5.0.1" 1020 | }, 1021 | "engines": { 1022 | "node": ">=8" 1023 | } 1024 | } 1025 | }, 1026 | "dependencies": { 1027 | "@types/inquirer": { 1028 | "version": "8.2.0", 1029 | "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.0.tgz", 1030 | "integrity": "sha512-BNoMetRf3gmkpAlV5we+kxyZTle7YibdOntIZbU5pyIfMdcwy784KfeZDAcuyMznkh5OLa17RVXZOGA5LTlkgQ==", 1031 | "dev": true, 1032 | "requires": { 1033 | "@types/through": "*", 1034 | "rxjs": "^7.2.0" 1035 | } 1036 | }, 1037 | "@types/json-patch": { 1038 | "version": "0.0.30", 1039 | "resolved": "https://registry.npmjs.org/@types/json-patch/-/json-patch-0.0.30.tgz", 1040 | "integrity": "sha512-MhCUjojzDhVLnZnxwPwa+rETFRDQ0ffjxYdrqOP6TBO2O0/Z64PV5tNeYApo4bc4y4frbWOrRwv/eEkXlI13Rw==" 1041 | }, 1042 | "@types/node": { 1043 | "version": "11.13.0", 1044 | "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.0.tgz", 1045 | "integrity": "sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng==", 1046 | "dev": true 1047 | }, 1048 | "@types/progress": { 1049 | "version": "2.0.5", 1050 | "resolved": "https://registry.npmjs.org/@types/progress/-/progress-2.0.5.tgz", 1051 | "integrity": "sha512-ZYYVc/kSMkhH9W/4dNK/sLNra3cnkfT2nJyOAIDY+C2u6w72wa0s1aXAezVtbTsnN8HID1uhXCrLwDE2ZXpplg==", 1052 | "dev": true, 1053 | "requires": { 1054 | "@types/node": "*" 1055 | } 1056 | }, 1057 | "@types/through": { 1058 | "version": "0.0.30", 1059 | "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", 1060 | "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", 1061 | "dev": true, 1062 | "requires": { 1063 | "@types/node": "*" 1064 | } 1065 | }, 1066 | "@types/yargs": { 1067 | "version": "17.0.8", 1068 | "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.8.tgz", 1069 | "integrity": "sha512-wDeUwiUmem9FzsyysEwRukaEdDNcwbROvQ9QGRKaLI6t+IltNzbn4/i4asmB10auvZGQCzSQ6t0GSczEThlUXw==", 1070 | "dev": true, 1071 | "requires": { 1072 | "@types/yargs-parser": "*" 1073 | } 1074 | }, 1075 | "@types/yargs-parser": { 1076 | "version": "20.2.1", 1077 | "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", 1078 | "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", 1079 | "dev": true 1080 | }, 1081 | "ansi-escapes": { 1082 | "version": "4.3.2", 1083 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 1084 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 1085 | "requires": { 1086 | "type-fest": "^0.21.3" 1087 | } 1088 | }, 1089 | "ansi-regex": { 1090 | "version": "5.0.1", 1091 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1092 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1093 | }, 1094 | "ansi-styles": { 1095 | "version": "4.3.0", 1096 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1097 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1098 | "requires": { 1099 | "color-convert": "^2.0.1" 1100 | } 1101 | }, 1102 | "asynckit": { 1103 | "version": "0.4.0", 1104 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1105 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 1106 | }, 1107 | "axios": { 1108 | "version": "0.27.2", 1109 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 1110 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 1111 | "requires": { 1112 | "follow-redirects": "^1.14.9", 1113 | "form-data": "^4.0.0" 1114 | } 1115 | }, 1116 | "base64-js": { 1117 | "version": "1.5.1", 1118 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1119 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 1120 | }, 1121 | "bl": { 1122 | "version": "4.1.0", 1123 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", 1124 | "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", 1125 | "requires": { 1126 | "buffer": "^5.5.0", 1127 | "inherits": "^2.0.4", 1128 | "readable-stream": "^3.4.0" 1129 | } 1130 | }, 1131 | "buffer": { 1132 | "version": "5.7.1", 1133 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1134 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1135 | "requires": { 1136 | "base64-js": "^1.3.1", 1137 | "ieee754": "^1.1.13" 1138 | } 1139 | }, 1140 | "call-bind": { 1141 | "version": "1.0.2", 1142 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1143 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1144 | "requires": { 1145 | "function-bind": "^1.1.1", 1146 | "get-intrinsic": "^1.0.2" 1147 | } 1148 | }, 1149 | "chalk": { 1150 | "version": "4.1.2", 1151 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1152 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1153 | "requires": { 1154 | "ansi-styles": "^4.1.0", 1155 | "supports-color": "^7.1.0" 1156 | } 1157 | }, 1158 | "chardet": { 1159 | "version": "0.7.0", 1160 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 1161 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" 1162 | }, 1163 | "cli-cursor": { 1164 | "version": "3.1.0", 1165 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 1166 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 1167 | "requires": { 1168 | "restore-cursor": "^3.1.0" 1169 | } 1170 | }, 1171 | "cli-spinners": { 1172 | "version": "2.6.1", 1173 | "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", 1174 | "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" 1175 | }, 1176 | "cli-width": { 1177 | "version": "3.0.0", 1178 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", 1179 | "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" 1180 | }, 1181 | "cliui": { 1182 | "version": "7.0.4", 1183 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1184 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1185 | "requires": { 1186 | "string-width": "^4.2.0", 1187 | "strip-ansi": "^6.0.0", 1188 | "wrap-ansi": "^7.0.0" 1189 | } 1190 | }, 1191 | "clone": { 1192 | "version": "1.0.4", 1193 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", 1194 | "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" 1195 | }, 1196 | "color-convert": { 1197 | "version": "2.0.1", 1198 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1199 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1200 | "requires": { 1201 | "color-name": "~1.1.4" 1202 | } 1203 | }, 1204 | "color-name": { 1205 | "version": "1.1.4", 1206 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1207 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1208 | }, 1209 | "combined-stream": { 1210 | "version": "1.0.8", 1211 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1212 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1213 | "requires": { 1214 | "delayed-stream": "~1.0.0" 1215 | } 1216 | }, 1217 | "contentful-management": { 1218 | "version": "10.26.0", 1219 | "resolved": "https://registry.npmjs.org/contentful-management/-/contentful-management-10.26.0.tgz", 1220 | "integrity": "sha512-7POoSUwqv1vto4Ud0y878lMiuJYH/mfulLzN/EMAyEv92QesGPatVR9jhBDvCTpPSXEa86oVRA+phw+hz7Ih1w==", 1221 | "requires": { 1222 | "@types/json-patch": "0.0.30", 1223 | "axios": "^0.27.1", 1224 | "contentful-sdk-core": "^7.0.1", 1225 | "fast-copy": "^3.0.0", 1226 | "lodash.isplainobject": "^4.0.6" 1227 | } 1228 | }, 1229 | "contentful-sdk-core": { 1230 | "version": "7.0.4", 1231 | "resolved": "https://registry.npmjs.org/contentful-sdk-core/-/contentful-sdk-core-7.0.4.tgz", 1232 | "integrity": "sha512-HwYdXmTsVh9rJOq+TA8CsY+vt6ivqkyJZpiEyVboZKIXAa83QmeVLAeBxK75+IiI9KpaPz7LCjVBXTGoTrhV7A==", 1233 | "requires": { 1234 | "fast-copy": "^2.1.7", 1235 | "lodash.isplainobject": "^4.0.6", 1236 | "lodash.isstring": "^4.0.1", 1237 | "p-throttle": "^4.1.1", 1238 | "qs": "^6.9.4" 1239 | }, 1240 | "dependencies": { 1241 | "fast-copy": { 1242 | "version": "2.1.7", 1243 | "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-2.1.7.tgz", 1244 | "integrity": "sha512-ozrGwyuCTAy7YgFCua8rmqmytECYk/JYAMXcswOcm0qvGoE3tPb7ivBeIHTOK2DiapBhDZgacIhzhQIKU5TCfA==" 1245 | } 1246 | } 1247 | }, 1248 | "defaults": { 1249 | "version": "1.0.3", 1250 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 1251 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 1252 | "requires": { 1253 | "clone": "^1.0.2" 1254 | } 1255 | }, 1256 | "delayed-stream": { 1257 | "version": "1.0.0", 1258 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1259 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 1260 | }, 1261 | "emoji-regex": { 1262 | "version": "8.0.0", 1263 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1264 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1265 | }, 1266 | "escalade": { 1267 | "version": "3.1.1", 1268 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1269 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 1270 | }, 1271 | "escape-string-regexp": { 1272 | "version": "1.0.5", 1273 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1274 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 1275 | }, 1276 | "external-editor": { 1277 | "version": "3.1.0", 1278 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 1279 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 1280 | "requires": { 1281 | "chardet": "^0.7.0", 1282 | "iconv-lite": "^0.4.24", 1283 | "tmp": "^0.0.33" 1284 | } 1285 | }, 1286 | "fast-copy": { 1287 | "version": "3.0.0", 1288 | "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.0.tgz", 1289 | "integrity": "sha512-4HzS+9pQ5Yxtv13Lhs1Z1unMXamBdn5nA4bEi1abYpDNSpSp7ODYQ1KPMF6nTatfEzgH6/zPvXKU1zvHiUjWlA==" 1290 | }, 1291 | "figures": { 1292 | "version": "3.2.0", 1293 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 1294 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 1295 | "requires": { 1296 | "escape-string-regexp": "^1.0.5" 1297 | } 1298 | }, 1299 | "follow-redirects": { 1300 | "version": "1.15.2", 1301 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1302 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 1303 | }, 1304 | "form-data": { 1305 | "version": "4.0.0", 1306 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1307 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1308 | "requires": { 1309 | "asynckit": "^0.4.0", 1310 | "combined-stream": "^1.0.8", 1311 | "mime-types": "^2.1.12" 1312 | } 1313 | }, 1314 | "function-bind": { 1315 | "version": "1.1.1", 1316 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1317 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1318 | }, 1319 | "get-caller-file": { 1320 | "version": "2.0.5", 1321 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1322 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 1323 | }, 1324 | "get-intrinsic": { 1325 | "version": "1.1.3", 1326 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 1327 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 1328 | "requires": { 1329 | "function-bind": "^1.1.1", 1330 | "has": "^1.0.3", 1331 | "has-symbols": "^1.0.3" 1332 | } 1333 | }, 1334 | "has": { 1335 | "version": "1.0.3", 1336 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1337 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1338 | "requires": { 1339 | "function-bind": "^1.1.1" 1340 | } 1341 | }, 1342 | "has-flag": { 1343 | "version": "4.0.0", 1344 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1345 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1346 | }, 1347 | "has-symbols": { 1348 | "version": "1.0.3", 1349 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1350 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1351 | }, 1352 | "iconv-lite": { 1353 | "version": "0.4.24", 1354 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1355 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1356 | "requires": { 1357 | "safer-buffer": ">= 2.1.2 < 3" 1358 | } 1359 | }, 1360 | "ieee754": { 1361 | "version": "1.2.1", 1362 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1363 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1364 | }, 1365 | "inherits": { 1366 | "version": "2.0.4", 1367 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1368 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1369 | }, 1370 | "inquirer": { 1371 | "version": "8.2.0", 1372 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz", 1373 | "integrity": "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==", 1374 | "requires": { 1375 | "ansi-escapes": "^4.2.1", 1376 | "chalk": "^4.1.1", 1377 | "cli-cursor": "^3.1.0", 1378 | "cli-width": "^3.0.0", 1379 | "external-editor": "^3.0.3", 1380 | "figures": "^3.0.0", 1381 | "lodash": "^4.17.21", 1382 | "mute-stream": "0.0.8", 1383 | "ora": "^5.4.1", 1384 | "run-async": "^2.4.0", 1385 | "rxjs": "^7.2.0", 1386 | "string-width": "^4.1.0", 1387 | "strip-ansi": "^6.0.0", 1388 | "through": "^2.3.6" 1389 | }, 1390 | "dependencies": { 1391 | "rxjs": { 1392 | "version": "7.4.0", 1393 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz", 1394 | "integrity": "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==", 1395 | "requires": { 1396 | "tslib": "~2.1.0" 1397 | } 1398 | }, 1399 | "tslib": { 1400 | "version": "2.1.0", 1401 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", 1402 | "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" 1403 | } 1404 | } 1405 | }, 1406 | "is-fullwidth-code-point": { 1407 | "version": "3.0.0", 1408 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1409 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 1410 | }, 1411 | "is-interactive": { 1412 | "version": "1.0.0", 1413 | "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", 1414 | "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" 1415 | }, 1416 | "is-unicode-supported": { 1417 | "version": "0.1.0", 1418 | "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", 1419 | "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" 1420 | }, 1421 | "lodash": { 1422 | "version": "4.17.21", 1423 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1424 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1425 | }, 1426 | "lodash.isplainobject": { 1427 | "version": "4.0.6", 1428 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1429 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 1430 | }, 1431 | "lodash.isstring": { 1432 | "version": "4.0.1", 1433 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1434 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" 1435 | }, 1436 | "log-symbols": { 1437 | "version": "4.1.0", 1438 | "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", 1439 | "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", 1440 | "requires": { 1441 | "chalk": "^4.1.0", 1442 | "is-unicode-supported": "^0.1.0" 1443 | } 1444 | }, 1445 | "mime-db": { 1446 | "version": "1.52.0", 1447 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1448 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1449 | }, 1450 | "mime-types": { 1451 | "version": "2.1.35", 1452 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1453 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1454 | "requires": { 1455 | "mime-db": "1.52.0" 1456 | } 1457 | }, 1458 | "mimic-fn": { 1459 | "version": "2.1.0", 1460 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1461 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" 1462 | }, 1463 | "mute-stream": { 1464 | "version": "0.0.8", 1465 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1466 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" 1467 | }, 1468 | "object-inspect": { 1469 | "version": "1.12.2", 1470 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 1471 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 1472 | }, 1473 | "onetime": { 1474 | "version": "5.1.2", 1475 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1476 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1477 | "requires": { 1478 | "mimic-fn": "^2.1.0" 1479 | } 1480 | }, 1481 | "ora": { 1482 | "version": "5.4.1", 1483 | "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", 1484 | "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", 1485 | "requires": { 1486 | "bl": "^4.1.0", 1487 | "chalk": "^4.1.0", 1488 | "cli-cursor": "^3.1.0", 1489 | "cli-spinners": "^2.5.0", 1490 | "is-interactive": "^1.0.0", 1491 | "is-unicode-supported": "^0.1.0", 1492 | "log-symbols": "^4.1.0", 1493 | "strip-ansi": "^6.0.0", 1494 | "wcwidth": "^1.0.1" 1495 | } 1496 | }, 1497 | "os-tmpdir": { 1498 | "version": "1.0.2", 1499 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1500 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 1501 | }, 1502 | "p-throttle": { 1503 | "version": "4.1.1", 1504 | "resolved": "https://registry.npmjs.org/p-throttle/-/p-throttle-4.1.1.tgz", 1505 | "integrity": "sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g==" 1506 | }, 1507 | "prettier": { 1508 | "version": "2.8.1", 1509 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", 1510 | "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", 1511 | "dev": true 1512 | }, 1513 | "progress": { 1514 | "version": "2.0.3", 1515 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1516 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1517 | }, 1518 | "qs": { 1519 | "version": "6.11.0", 1520 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1521 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1522 | "requires": { 1523 | "side-channel": "^1.0.4" 1524 | } 1525 | }, 1526 | "readable-stream": { 1527 | "version": "3.6.0", 1528 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1529 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1530 | "requires": { 1531 | "inherits": "^2.0.3", 1532 | "string_decoder": "^1.1.1", 1533 | "util-deprecate": "^1.0.1" 1534 | } 1535 | }, 1536 | "require-directory": { 1537 | "version": "2.1.1", 1538 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1539 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 1540 | }, 1541 | "restore-cursor": { 1542 | "version": "3.1.0", 1543 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1544 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1545 | "requires": { 1546 | "onetime": "^5.1.0", 1547 | "signal-exit": "^3.0.2" 1548 | } 1549 | }, 1550 | "run-async": { 1551 | "version": "2.4.1", 1552 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 1553 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" 1554 | }, 1555 | "rxjs": { 1556 | "version": "7.3.0", 1557 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", 1558 | "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", 1559 | "dev": true, 1560 | "requires": { 1561 | "tslib": "~2.1.0" 1562 | }, 1563 | "dependencies": { 1564 | "tslib": { 1565 | "version": "2.1.0", 1566 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", 1567 | "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", 1568 | "dev": true 1569 | } 1570 | } 1571 | }, 1572 | "safe-buffer": { 1573 | "version": "5.2.1", 1574 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1575 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1576 | }, 1577 | "safer-buffer": { 1578 | "version": "2.1.2", 1579 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1580 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1581 | }, 1582 | "side-channel": { 1583 | "version": "1.0.4", 1584 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1585 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1586 | "requires": { 1587 | "call-bind": "^1.0.0", 1588 | "get-intrinsic": "^1.0.2", 1589 | "object-inspect": "^1.9.0" 1590 | } 1591 | }, 1592 | "signal-exit": { 1593 | "version": "3.0.5", 1594 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.5.tgz", 1595 | "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" 1596 | }, 1597 | "string_decoder": { 1598 | "version": "1.3.0", 1599 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1600 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1601 | "requires": { 1602 | "safe-buffer": "~5.2.0" 1603 | } 1604 | }, 1605 | "string-width": { 1606 | "version": "4.2.0", 1607 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", 1608 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", 1609 | "requires": { 1610 | "emoji-regex": "^8.0.0", 1611 | "is-fullwidth-code-point": "^3.0.0", 1612 | "strip-ansi": "^6.0.0" 1613 | }, 1614 | "dependencies": { 1615 | "strip-ansi": { 1616 | "version": "6.0.0", 1617 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1618 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1619 | "requires": { 1620 | "ansi-regex": "^5.0.0" 1621 | } 1622 | } 1623 | } 1624 | }, 1625 | "strip-ansi": { 1626 | "version": "6.0.0", 1627 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1628 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1629 | "requires": { 1630 | "ansi-regex": "^5.0.0" 1631 | } 1632 | }, 1633 | "supports-color": { 1634 | "version": "7.2.0", 1635 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1636 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1637 | "requires": { 1638 | "has-flag": "^4.0.0" 1639 | } 1640 | }, 1641 | "through": { 1642 | "version": "2.3.8", 1643 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1644 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1645 | }, 1646 | "tmp": { 1647 | "version": "0.0.33", 1648 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1649 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1650 | "requires": { 1651 | "os-tmpdir": "~1.0.2" 1652 | } 1653 | }, 1654 | "type-fest": { 1655 | "version": "0.21.3", 1656 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 1657 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" 1658 | }, 1659 | "typescript": { 1660 | "version": "4.9.4", 1661 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", 1662 | "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", 1663 | "dev": true 1664 | }, 1665 | "util-deprecate": { 1666 | "version": "1.0.2", 1667 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1668 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1669 | }, 1670 | "wcwidth": { 1671 | "version": "1.0.1", 1672 | "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", 1673 | "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", 1674 | "requires": { 1675 | "defaults": "^1.0.3" 1676 | } 1677 | }, 1678 | "wrap-ansi": { 1679 | "version": "7.0.0", 1680 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1681 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1682 | "requires": { 1683 | "ansi-styles": "^4.0.0", 1684 | "string-width": "^4.1.0", 1685 | "strip-ansi": "^6.0.0" 1686 | } 1687 | }, 1688 | "y18n": { 1689 | "version": "5.0.8", 1690 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1691 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" 1692 | }, 1693 | "yargs": { 1694 | "version": "17.3.1", 1695 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", 1696 | "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", 1697 | "requires": { 1698 | "cliui": "^7.0.2", 1699 | "escalade": "^3.1.1", 1700 | "get-caller-file": "^2.0.5", 1701 | "require-directory": "^2.1.1", 1702 | "string-width": "^4.2.3", 1703 | "y18n": "^5.0.5", 1704 | "yargs-parser": "^21.0.0" 1705 | }, 1706 | "dependencies": { 1707 | "string-width": { 1708 | "version": "4.2.3", 1709 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1710 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1711 | "requires": { 1712 | "emoji-regex": "^8.0.0", 1713 | "is-fullwidth-code-point": "^3.0.0", 1714 | "strip-ansi": "^6.0.1" 1715 | } 1716 | }, 1717 | "strip-ansi": { 1718 | "version": "6.0.1", 1719 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1720 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1721 | "requires": { 1722 | "ansi-regex": "^5.0.1" 1723 | } 1724 | } 1725 | } 1726 | }, 1727 | "yargs-parser": { 1728 | "version": "21.0.0", 1729 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", 1730 | "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==" 1731 | } 1732 | } 1733 | } 1734 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "contentful-clean-space", 3 | "version": "0.9.0", 4 | "description": "Removes content from a contentful space.", 5 | "engines": { 6 | "node": ">=12" 7 | }, 8 | "bin": { 9 | "contentful-clean-space": "./bin/contentful-clean-space.js" 10 | }, 11 | "scripts": { 12 | "build": "node ./node_modules/typescript/bin/tsc --outDir ./build", 13 | "test": "echo \"Error: no test specified\" && exit 1", 14 | "prettier:write": "prettier --write ./src" 15 | }, 16 | "author": "Stephan Oehlert ([ 100 | { 101 | type: "confirm", 102 | name: "yes", 103 | message: `Do you really want to delete all entries from space ${spaceId}:${environment}?`, 104 | }, 105 | ]); 106 | return prompt.yes; 107 | } 108 | 109 | async function promptForContentTypesConfirmation( 110 | spaceId: string, 111 | environment: string 112 | ) { 113 | const prompt = await inquirer.prompt<{ yes: boolean }>([ 114 | { 115 | type: "confirm", 116 | name: "yes", 117 | message: `Do you really want to delete all content types from space ${spaceId}:${environment}?`, 118 | }, 119 | ]); 120 | return prompt.yes; 121 | } 122 | 123 | async function promptForAssetsConfirmation( 124 | spaceId: string, 125 | environment: string 126 | ) { 127 | const prompt = await inquirer.prompt<{ yes: boolean }>([ 128 | { 129 | type: "confirm", 130 | name: "yes", 131 | message: `Do you really want to delete all assets/media from space ${spaceId}:${environment}?`, 132 | }, 133 | ]); 134 | return prompt.yes; 135 | } 136 | 137 | async function deleteEntries( 138 | contentfulSpace: Space, 139 | batchSize: number, 140 | verbose: boolean, 141 | environment: string 142 | ) { 143 | const selectedEnvironment = await contentfulSpace.getEnvironment(environment); 144 | const entriesMetadata = await selectedEnvironment.getEntries({ 145 | include: 0, 146 | limit: 0, 147 | }); 148 | let totalEntries = entriesMetadata.total; 149 | console.log(`Deleting ${totalEntries} entries`); 150 | 151 | // tslint:disable-next-line:max-line-length 152 | const entriesProgressBar = new ProgressBar( 153 | "Deleting entries [:bar], rate: :rate/s, done: :percent, time left: :etas", 154 | { total: totalEntries } 155 | ); 156 | do { 157 | const entries = await selectedEnvironment.getEntries({ 158 | include: 0, 159 | limit: batchSize, 160 | }); 161 | totalEntries = entries.total; 162 | 163 | const promises: Array> = []; 164 | for (const entry of entries.items) { 165 | const promise = unpublishAndDeleteEntry( 166 | entry, 167 | entriesProgressBar, 168 | verbose 169 | ); 170 | promises.push(promise); 171 | } 172 | await Promise.all(promises); 173 | } while (totalEntries > batchSize); 174 | } 175 | 176 | async function unpublishAndDeleteEntry( 177 | entry: Entry | Asset, 178 | progressBar: ProgressBar, 179 | verbose: boolean 180 | ) { 181 | try { 182 | if (entry.isPublished()) { 183 | if (verbose) console.log(`Unpublishing entry "${entry.sys.id}"`); 184 | await entry.unpublish(); 185 | } 186 | if (verbose) console.log(`Deleting entry '${entry.sys.id}"`); 187 | await entry.delete(); 188 | } catch (e) { 189 | console.log(e); 190 | // Continue if something went wrong with Contentful 191 | } finally { 192 | progressBar.tick(); 193 | } 194 | } 195 | 196 | async function deleteContentTypes( 197 | contentfulSpace: Space, 198 | batchSize: number, 199 | verbose: boolean, 200 | environment: string 201 | ) { 202 | const selectedEnvironment = await contentfulSpace.getEnvironment(environment); 203 | const contentTypesMetadata = await selectedEnvironment.getContentTypes({ 204 | include: 0, 205 | limit: 0, 206 | }); 207 | let totalContentTypes = contentTypesMetadata.total; 208 | console.log(`Deleting ${totalContentTypes} content types`); 209 | 210 | // tslint:disable-next-line:max-line-length 211 | const contentTypesProgressBar = new ProgressBar( 212 | "Deleting content types [:bar], rate: :rate/s, done: :percent, time left: :etas", 213 | { total: totalContentTypes } 214 | ); 215 | do { 216 | const contentTypes = await selectedEnvironment.getContentTypes({ 217 | include: 0, 218 | limit: batchSize, 219 | }); 220 | totalContentTypes = contentTypes.total; 221 | 222 | const promises: Array> = []; 223 | for (const contentType of contentTypes.items) { 224 | const promise = unpublishAndDeleteContentType( 225 | contentType, 226 | contentTypesProgressBar, 227 | verbose 228 | ); 229 | promises.push(promise); 230 | } 231 | await Promise.all(promises); 232 | } while (totalContentTypes > batchSize); 233 | } 234 | 235 | async function unpublishAndDeleteContentType( 236 | contentType: ContentType, 237 | progressBar: ProgressBar, 238 | verbose: boolean 239 | ) { 240 | try { 241 | if (contentType.isPublished()) { 242 | if (verbose) 243 | console.log(`Unpublishing content type "${contentType.sys.id}"`); 244 | await contentType.unpublish(); 245 | } 246 | if (verbose) console.log(`Deleting content type '${contentType.sys.id}"`); 247 | await contentType.delete(); 248 | } catch (e) { 249 | console.log(e); 250 | // Continue if something went wrong with Contentful 251 | } finally { 252 | progressBar.tick(); 253 | } 254 | } 255 | 256 | async function deleteAssets( 257 | contentfulSpace: Space, 258 | batchSize: number, 259 | verbose: boolean, 260 | environment: string 261 | ) { 262 | const selectedEnvironment = await contentfulSpace.getEnvironment(environment); 263 | const assetsMetadata = await selectedEnvironment.getAssets({ 264 | include: 0, 265 | limit: 0, 266 | }); 267 | let totalAssets = assetsMetadata.total; 268 | console.log(`Deleting ${totalAssets} assets/media`); 269 | 270 | // tslint:disable-next-line:max-line-length 271 | const entriesProgressBar = new ProgressBar( 272 | "Deleting assets [:bar], rate: :rate/s, done: :percent, time left: :etas", 273 | { total: totalAssets } 274 | ); 275 | do { 276 | const assets = await selectedEnvironment.getAssets({ 277 | include: 0, 278 | limit: batchSize, 279 | }); 280 | totalAssets = assets.total; 281 | 282 | const promises: Array> = []; 283 | for (const asset of assets.items) { 284 | const promise = unpublishAndDeleteEntry( 285 | asset, 286 | entriesProgressBar, 287 | verbose 288 | ); 289 | promises.push(promise); 290 | } 291 | await Promise.all(promises); 292 | } while (totalAssets > batchSize); 293 | } 294 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "target": "es2017", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */ 5 | "module": "commonjs", /* Specify module code generation: 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ 6 | "lib": ["es2017", "dom"], /* Specify library files to be included in the compilation: */ 7 | // "allowJs": true, /* Allow javascript files to be compiled. */ 8 | // "checkJs": true, /* Report errors in .js files. */ 9 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 10 | // "declaration": true, /* Generates corresponding '.d.ts' file. */ 11 | "sourceMap": true, /* Generates corresponding '.map' file. */ 12 | // "outFile": "./", /* Concatenate and emit output to single file. */ 13 | // "outDir": "./", /* Redirect output structure to the directory. */ 14 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 15 | // "removeComments": true, /* Do not emit comments to output. */ 16 | // "noEmit": true, /* Do not emit outputs. */ 17 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */ 18 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 19 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 20 | 21 | /* Strict Type-Checking Options */ 22 | "strict": true /* Enable all strict type-checking options. */ 23 | // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ 24 | // "strictNullChecks": true, /* Enable strict null checks. */ 25 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ 26 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ 27 | 28 | /* Additional Checks */ 29 | // "noUnusedLocals": true, /* Report errors on unused locals. */ 30 | // "noUnusedParameters": true, /* Report errors on unused parameters. */ 31 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ 32 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ 33 | 34 | /* Module Resolution Options */ 35 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ 36 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ 37 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 38 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 39 | // "typeRoots": [], /* List of folders to include type definitions from. */ 40 | // "types": [], /* Type declaration files to be included in compilation. */ 41 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ 42 | 43 | /* Source Map Options */ 44 | // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 45 | // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */ 46 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 47 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 48 | 49 | /* Experimental Options */ 50 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ 51 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ 52 | } 53 | } -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": [ 4 | "tslint:recommended" 5 | ], 6 | "jsRules": {}, 7 | "rules": { 8 | "trailing-comma": false, 9 | "no-console": false, 10 | "curly": false, 11 | "no-string-literal": false 12 | }, 13 | "rulesDirectory": [] 14 | } --------------------------------------------------------------------------------