├── .gitignore ├── Procfile ├── index.html ├── package-lock.json ├── package.json └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: node server.js 2 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Document 8 | 9 | 10 |

Rap Names API

11 |

Please use https://rapper-api-100devs-class39.herokuapp.com/api/rapper-name

12 | 13 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rap-names-api", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "version": "1.0.0", 9 | "license": "ISC", 10 | "dependencies": { 11 | "cors": "^2.8.5", 12 | "express": "^4.18.1" 13 | } 14 | }, 15 | "node_modules/accepts": { 16 | "version": "1.3.8", 17 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 18 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 19 | "dependencies": { 20 | "mime-types": "~2.1.34", 21 | "negotiator": "0.6.3" 22 | }, 23 | "engines": { 24 | "node": ">= 0.6" 25 | } 26 | }, 27 | "node_modules/array-flatten": { 28 | "version": "1.1.1", 29 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 30 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 31 | }, 32 | "node_modules/body-parser": { 33 | "version": "1.20.0", 34 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", 35 | "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", 36 | "dependencies": { 37 | "bytes": "3.1.2", 38 | "content-type": "~1.0.4", 39 | "debug": "2.6.9", 40 | "depd": "2.0.0", 41 | "destroy": "1.2.0", 42 | "http-errors": "2.0.0", 43 | "iconv-lite": "0.4.24", 44 | "on-finished": "2.4.1", 45 | "qs": "6.10.3", 46 | "raw-body": "2.5.1", 47 | "type-is": "~1.6.18", 48 | "unpipe": "1.0.0" 49 | }, 50 | "engines": { 51 | "node": ">= 0.8", 52 | "npm": "1.2.8000 || >= 1.4.16" 53 | } 54 | }, 55 | "node_modules/bytes": { 56 | "version": "3.1.2", 57 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 58 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 59 | "engines": { 60 | "node": ">= 0.8" 61 | } 62 | }, 63 | "node_modules/call-bind": { 64 | "version": "1.0.2", 65 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 66 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 67 | "dependencies": { 68 | "function-bind": "^1.1.1", 69 | "get-intrinsic": "^1.0.2" 70 | }, 71 | "funding": { 72 | "url": "https://github.com/sponsors/ljharb" 73 | } 74 | }, 75 | "node_modules/content-disposition": { 76 | "version": "0.5.4", 77 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 78 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 79 | "dependencies": { 80 | "safe-buffer": "5.2.1" 81 | }, 82 | "engines": { 83 | "node": ">= 0.6" 84 | } 85 | }, 86 | "node_modules/content-type": { 87 | "version": "1.0.4", 88 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 89 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 90 | "engines": { 91 | "node": ">= 0.6" 92 | } 93 | }, 94 | "node_modules/cookie": { 95 | "version": "0.5.0", 96 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 97 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 98 | "engines": { 99 | "node": ">= 0.6" 100 | } 101 | }, 102 | "node_modules/cookie-signature": { 103 | "version": "1.0.6", 104 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 105 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 106 | }, 107 | "node_modules/cors": { 108 | "version": "2.8.5", 109 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 110 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 111 | "dependencies": { 112 | "object-assign": "^4", 113 | "vary": "^1" 114 | }, 115 | "engines": { 116 | "node": ">= 0.10" 117 | } 118 | }, 119 | "node_modules/debug": { 120 | "version": "2.6.9", 121 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 122 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 123 | "dependencies": { 124 | "ms": "2.0.0" 125 | } 126 | }, 127 | "node_modules/depd": { 128 | "version": "2.0.0", 129 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 130 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 131 | "engines": { 132 | "node": ">= 0.8" 133 | } 134 | }, 135 | "node_modules/destroy": { 136 | "version": "1.2.0", 137 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 138 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 139 | "engines": { 140 | "node": ">= 0.8", 141 | "npm": "1.2.8000 || >= 1.4.16" 142 | } 143 | }, 144 | "node_modules/ee-first": { 145 | "version": "1.1.1", 146 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 147 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 148 | }, 149 | "node_modules/encodeurl": { 150 | "version": "1.0.2", 151 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 152 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 153 | "engines": { 154 | "node": ">= 0.8" 155 | } 156 | }, 157 | "node_modules/escape-html": { 158 | "version": "1.0.3", 159 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 160 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 161 | }, 162 | "node_modules/etag": { 163 | "version": "1.8.1", 164 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 165 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 166 | "engines": { 167 | "node": ">= 0.6" 168 | } 169 | }, 170 | "node_modules/express": { 171 | "version": "4.18.1", 172 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", 173 | "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", 174 | "dependencies": { 175 | "accepts": "~1.3.8", 176 | "array-flatten": "1.1.1", 177 | "body-parser": "1.20.0", 178 | "content-disposition": "0.5.4", 179 | "content-type": "~1.0.4", 180 | "cookie": "0.5.0", 181 | "cookie-signature": "1.0.6", 182 | "debug": "2.6.9", 183 | "depd": "2.0.0", 184 | "encodeurl": "~1.0.2", 185 | "escape-html": "~1.0.3", 186 | "etag": "~1.8.1", 187 | "finalhandler": "1.2.0", 188 | "fresh": "0.5.2", 189 | "http-errors": "2.0.0", 190 | "merge-descriptors": "1.0.1", 191 | "methods": "~1.1.2", 192 | "on-finished": "2.4.1", 193 | "parseurl": "~1.3.3", 194 | "path-to-regexp": "0.1.7", 195 | "proxy-addr": "~2.0.7", 196 | "qs": "6.10.3", 197 | "range-parser": "~1.2.1", 198 | "safe-buffer": "5.2.1", 199 | "send": "0.18.0", 200 | "serve-static": "1.15.0", 201 | "setprototypeof": "1.2.0", 202 | "statuses": "2.0.1", 203 | "type-is": "~1.6.18", 204 | "utils-merge": "1.0.1", 205 | "vary": "~1.1.2" 206 | }, 207 | "engines": { 208 | "node": ">= 0.10.0" 209 | } 210 | }, 211 | "node_modules/finalhandler": { 212 | "version": "1.2.0", 213 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 214 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 215 | "dependencies": { 216 | "debug": "2.6.9", 217 | "encodeurl": "~1.0.2", 218 | "escape-html": "~1.0.3", 219 | "on-finished": "2.4.1", 220 | "parseurl": "~1.3.3", 221 | "statuses": "2.0.1", 222 | "unpipe": "~1.0.0" 223 | }, 224 | "engines": { 225 | "node": ">= 0.8" 226 | } 227 | }, 228 | "node_modules/forwarded": { 229 | "version": "0.2.0", 230 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 231 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 232 | "engines": { 233 | "node": ">= 0.6" 234 | } 235 | }, 236 | "node_modules/fresh": { 237 | "version": "0.5.2", 238 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 239 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 240 | "engines": { 241 | "node": ">= 0.6" 242 | } 243 | }, 244 | "node_modules/function-bind": { 245 | "version": "1.1.1", 246 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 247 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 248 | }, 249 | "node_modules/get-intrinsic": { 250 | "version": "1.1.1", 251 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 252 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 253 | "dependencies": { 254 | "function-bind": "^1.1.1", 255 | "has": "^1.0.3", 256 | "has-symbols": "^1.0.1" 257 | }, 258 | "funding": { 259 | "url": "https://github.com/sponsors/ljharb" 260 | } 261 | }, 262 | "node_modules/has": { 263 | "version": "1.0.3", 264 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 265 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 266 | "dependencies": { 267 | "function-bind": "^1.1.1" 268 | }, 269 | "engines": { 270 | "node": ">= 0.4.0" 271 | } 272 | }, 273 | "node_modules/has-symbols": { 274 | "version": "1.0.3", 275 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 276 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 277 | "engines": { 278 | "node": ">= 0.4" 279 | }, 280 | "funding": { 281 | "url": "https://github.com/sponsors/ljharb" 282 | } 283 | }, 284 | "node_modules/http-errors": { 285 | "version": "2.0.0", 286 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 287 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 288 | "dependencies": { 289 | "depd": "2.0.0", 290 | "inherits": "2.0.4", 291 | "setprototypeof": "1.2.0", 292 | "statuses": "2.0.1", 293 | "toidentifier": "1.0.1" 294 | }, 295 | "engines": { 296 | "node": ">= 0.8" 297 | } 298 | }, 299 | "node_modules/iconv-lite": { 300 | "version": "0.4.24", 301 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 302 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 303 | "dependencies": { 304 | "safer-buffer": ">= 2.1.2 < 3" 305 | }, 306 | "engines": { 307 | "node": ">=0.10.0" 308 | } 309 | }, 310 | "node_modules/inherits": { 311 | "version": "2.0.4", 312 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 313 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 314 | }, 315 | "node_modules/ipaddr.js": { 316 | "version": "1.9.1", 317 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 318 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 319 | "engines": { 320 | "node": ">= 0.10" 321 | } 322 | }, 323 | "node_modules/media-typer": { 324 | "version": "0.3.0", 325 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 326 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 327 | "engines": { 328 | "node": ">= 0.6" 329 | } 330 | }, 331 | "node_modules/merge-descriptors": { 332 | "version": "1.0.1", 333 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 334 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 335 | }, 336 | "node_modules/methods": { 337 | "version": "1.1.2", 338 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 339 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 340 | "engines": { 341 | "node": ">= 0.6" 342 | } 343 | }, 344 | "node_modules/mime": { 345 | "version": "1.6.0", 346 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 347 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 348 | "bin": { 349 | "mime": "cli.js" 350 | }, 351 | "engines": { 352 | "node": ">=4" 353 | } 354 | }, 355 | "node_modules/mime-db": { 356 | "version": "1.52.0", 357 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 358 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 359 | "engines": { 360 | "node": ">= 0.6" 361 | } 362 | }, 363 | "node_modules/mime-types": { 364 | "version": "2.1.35", 365 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 366 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 367 | "dependencies": { 368 | "mime-db": "1.52.0" 369 | }, 370 | "engines": { 371 | "node": ">= 0.6" 372 | } 373 | }, 374 | "node_modules/ms": { 375 | "version": "2.0.0", 376 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 377 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 378 | }, 379 | "node_modules/negotiator": { 380 | "version": "0.6.3", 381 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 382 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 383 | "engines": { 384 | "node": ">= 0.6" 385 | } 386 | }, 387 | "node_modules/object-assign": { 388 | "version": "4.1.1", 389 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 390 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 391 | "engines": { 392 | "node": ">=0.10.0" 393 | } 394 | }, 395 | "node_modules/object-inspect": { 396 | "version": "1.12.2", 397 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 398 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 399 | "funding": { 400 | "url": "https://github.com/sponsors/ljharb" 401 | } 402 | }, 403 | "node_modules/on-finished": { 404 | "version": "2.4.1", 405 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 406 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 407 | "dependencies": { 408 | "ee-first": "1.1.1" 409 | }, 410 | "engines": { 411 | "node": ">= 0.8" 412 | } 413 | }, 414 | "node_modules/parseurl": { 415 | "version": "1.3.3", 416 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 417 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 418 | "engines": { 419 | "node": ">= 0.8" 420 | } 421 | }, 422 | "node_modules/path-to-regexp": { 423 | "version": "0.1.7", 424 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 425 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 426 | }, 427 | "node_modules/proxy-addr": { 428 | "version": "2.0.7", 429 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 430 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 431 | "dependencies": { 432 | "forwarded": "0.2.0", 433 | "ipaddr.js": "1.9.1" 434 | }, 435 | "engines": { 436 | "node": ">= 0.10" 437 | } 438 | }, 439 | "node_modules/qs": { 440 | "version": "6.10.3", 441 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 442 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 443 | "dependencies": { 444 | "side-channel": "^1.0.4" 445 | }, 446 | "engines": { 447 | "node": ">=0.6" 448 | }, 449 | "funding": { 450 | "url": "https://github.com/sponsors/ljharb" 451 | } 452 | }, 453 | "node_modules/range-parser": { 454 | "version": "1.2.1", 455 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 456 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 457 | "engines": { 458 | "node": ">= 0.6" 459 | } 460 | }, 461 | "node_modules/raw-body": { 462 | "version": "2.5.1", 463 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 464 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 465 | "dependencies": { 466 | "bytes": "3.1.2", 467 | "http-errors": "2.0.0", 468 | "iconv-lite": "0.4.24", 469 | "unpipe": "1.0.0" 470 | }, 471 | "engines": { 472 | "node": ">= 0.8" 473 | } 474 | }, 475 | "node_modules/safe-buffer": { 476 | "version": "5.2.1", 477 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 478 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 479 | "funding": [ 480 | { 481 | "type": "github", 482 | "url": "https://github.com/sponsors/feross" 483 | }, 484 | { 485 | "type": "patreon", 486 | "url": "https://www.patreon.com/feross" 487 | }, 488 | { 489 | "type": "consulting", 490 | "url": "https://feross.org/support" 491 | } 492 | ] 493 | }, 494 | "node_modules/safer-buffer": { 495 | "version": "2.1.2", 496 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 497 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 498 | }, 499 | "node_modules/send": { 500 | "version": "0.18.0", 501 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 502 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 503 | "dependencies": { 504 | "debug": "2.6.9", 505 | "depd": "2.0.0", 506 | "destroy": "1.2.0", 507 | "encodeurl": "~1.0.2", 508 | "escape-html": "~1.0.3", 509 | "etag": "~1.8.1", 510 | "fresh": "0.5.2", 511 | "http-errors": "2.0.0", 512 | "mime": "1.6.0", 513 | "ms": "2.1.3", 514 | "on-finished": "2.4.1", 515 | "range-parser": "~1.2.1", 516 | "statuses": "2.0.1" 517 | }, 518 | "engines": { 519 | "node": ">= 0.8.0" 520 | } 521 | }, 522 | "node_modules/send/node_modules/ms": { 523 | "version": "2.1.3", 524 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 525 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 526 | }, 527 | "node_modules/serve-static": { 528 | "version": "1.15.0", 529 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 530 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 531 | "dependencies": { 532 | "encodeurl": "~1.0.2", 533 | "escape-html": "~1.0.3", 534 | "parseurl": "~1.3.3", 535 | "send": "0.18.0" 536 | }, 537 | "engines": { 538 | "node": ">= 0.8.0" 539 | } 540 | }, 541 | "node_modules/setprototypeof": { 542 | "version": "1.2.0", 543 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 544 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 545 | }, 546 | "node_modules/side-channel": { 547 | "version": "1.0.4", 548 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 549 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 550 | "dependencies": { 551 | "call-bind": "^1.0.0", 552 | "get-intrinsic": "^1.0.2", 553 | "object-inspect": "^1.9.0" 554 | }, 555 | "funding": { 556 | "url": "https://github.com/sponsors/ljharb" 557 | } 558 | }, 559 | "node_modules/statuses": { 560 | "version": "2.0.1", 561 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 562 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 563 | "engines": { 564 | "node": ">= 0.8" 565 | } 566 | }, 567 | "node_modules/toidentifier": { 568 | "version": "1.0.1", 569 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 570 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 571 | "engines": { 572 | "node": ">=0.6" 573 | } 574 | }, 575 | "node_modules/type-is": { 576 | "version": "1.6.18", 577 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 578 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 579 | "dependencies": { 580 | "media-typer": "0.3.0", 581 | "mime-types": "~2.1.24" 582 | }, 583 | "engines": { 584 | "node": ">= 0.6" 585 | } 586 | }, 587 | "node_modules/unpipe": { 588 | "version": "1.0.0", 589 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 590 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 591 | "engines": { 592 | "node": ">= 0.8" 593 | } 594 | }, 595 | "node_modules/utils-merge": { 596 | "version": "1.0.1", 597 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 598 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 599 | "engines": { 600 | "node": ">= 0.4.0" 601 | } 602 | }, 603 | "node_modules/vary": { 604 | "version": "1.1.2", 605 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 606 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 607 | "engines": { 608 | "node": ">= 0.8" 609 | } 610 | } 611 | }, 612 | "dependencies": { 613 | "accepts": { 614 | "version": "1.3.8", 615 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 616 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 617 | "requires": { 618 | "mime-types": "~2.1.34", 619 | "negotiator": "0.6.3" 620 | } 621 | }, 622 | "array-flatten": { 623 | "version": "1.1.1", 624 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 625 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 626 | }, 627 | "body-parser": { 628 | "version": "1.20.0", 629 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", 630 | "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", 631 | "requires": { 632 | "bytes": "3.1.2", 633 | "content-type": "~1.0.4", 634 | "debug": "2.6.9", 635 | "depd": "2.0.0", 636 | "destroy": "1.2.0", 637 | "http-errors": "2.0.0", 638 | "iconv-lite": "0.4.24", 639 | "on-finished": "2.4.1", 640 | "qs": "6.10.3", 641 | "raw-body": "2.5.1", 642 | "type-is": "~1.6.18", 643 | "unpipe": "1.0.0" 644 | } 645 | }, 646 | "bytes": { 647 | "version": "3.1.2", 648 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 649 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 650 | }, 651 | "call-bind": { 652 | "version": "1.0.2", 653 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 654 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 655 | "requires": { 656 | "function-bind": "^1.1.1", 657 | "get-intrinsic": "^1.0.2" 658 | } 659 | }, 660 | "content-disposition": { 661 | "version": "0.5.4", 662 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 663 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 664 | "requires": { 665 | "safe-buffer": "5.2.1" 666 | } 667 | }, 668 | "content-type": { 669 | "version": "1.0.4", 670 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 671 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 672 | }, 673 | "cookie": { 674 | "version": "0.5.0", 675 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 676 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 677 | }, 678 | "cookie-signature": { 679 | "version": "1.0.6", 680 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 681 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 682 | }, 683 | "cors": { 684 | "version": "2.8.5", 685 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 686 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 687 | "requires": { 688 | "object-assign": "^4", 689 | "vary": "^1" 690 | } 691 | }, 692 | "debug": { 693 | "version": "2.6.9", 694 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 695 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 696 | "requires": { 697 | "ms": "2.0.0" 698 | } 699 | }, 700 | "depd": { 701 | "version": "2.0.0", 702 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 703 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 704 | }, 705 | "destroy": { 706 | "version": "1.2.0", 707 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 708 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 709 | }, 710 | "ee-first": { 711 | "version": "1.1.1", 712 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 713 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 714 | }, 715 | "encodeurl": { 716 | "version": "1.0.2", 717 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 718 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 719 | }, 720 | "escape-html": { 721 | "version": "1.0.3", 722 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 723 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 724 | }, 725 | "etag": { 726 | "version": "1.8.1", 727 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 728 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 729 | }, 730 | "express": { 731 | "version": "4.18.1", 732 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", 733 | "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", 734 | "requires": { 735 | "accepts": "~1.3.8", 736 | "array-flatten": "1.1.1", 737 | "body-parser": "1.20.0", 738 | "content-disposition": "0.5.4", 739 | "content-type": "~1.0.4", 740 | "cookie": "0.5.0", 741 | "cookie-signature": "1.0.6", 742 | "debug": "2.6.9", 743 | "depd": "2.0.0", 744 | "encodeurl": "~1.0.2", 745 | "escape-html": "~1.0.3", 746 | "etag": "~1.8.1", 747 | "finalhandler": "1.2.0", 748 | "fresh": "0.5.2", 749 | "http-errors": "2.0.0", 750 | "merge-descriptors": "1.0.1", 751 | "methods": "~1.1.2", 752 | "on-finished": "2.4.1", 753 | "parseurl": "~1.3.3", 754 | "path-to-regexp": "0.1.7", 755 | "proxy-addr": "~2.0.7", 756 | "qs": "6.10.3", 757 | "range-parser": "~1.2.1", 758 | "safe-buffer": "5.2.1", 759 | "send": "0.18.0", 760 | "serve-static": "1.15.0", 761 | "setprototypeof": "1.2.0", 762 | "statuses": "2.0.1", 763 | "type-is": "~1.6.18", 764 | "utils-merge": "1.0.1", 765 | "vary": "~1.1.2" 766 | } 767 | }, 768 | "finalhandler": { 769 | "version": "1.2.0", 770 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 771 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 772 | "requires": { 773 | "debug": "2.6.9", 774 | "encodeurl": "~1.0.2", 775 | "escape-html": "~1.0.3", 776 | "on-finished": "2.4.1", 777 | "parseurl": "~1.3.3", 778 | "statuses": "2.0.1", 779 | "unpipe": "~1.0.0" 780 | } 781 | }, 782 | "forwarded": { 783 | "version": "0.2.0", 784 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 785 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 786 | }, 787 | "fresh": { 788 | "version": "0.5.2", 789 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 790 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 791 | }, 792 | "function-bind": { 793 | "version": "1.1.1", 794 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 795 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 796 | }, 797 | "get-intrinsic": { 798 | "version": "1.1.1", 799 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 800 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 801 | "requires": { 802 | "function-bind": "^1.1.1", 803 | "has": "^1.0.3", 804 | "has-symbols": "^1.0.1" 805 | } 806 | }, 807 | "has": { 808 | "version": "1.0.3", 809 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 810 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 811 | "requires": { 812 | "function-bind": "^1.1.1" 813 | } 814 | }, 815 | "has-symbols": { 816 | "version": "1.0.3", 817 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 818 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 819 | }, 820 | "http-errors": { 821 | "version": "2.0.0", 822 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 823 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 824 | "requires": { 825 | "depd": "2.0.0", 826 | "inherits": "2.0.4", 827 | "setprototypeof": "1.2.0", 828 | "statuses": "2.0.1", 829 | "toidentifier": "1.0.1" 830 | } 831 | }, 832 | "iconv-lite": { 833 | "version": "0.4.24", 834 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 835 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 836 | "requires": { 837 | "safer-buffer": ">= 2.1.2 < 3" 838 | } 839 | }, 840 | "inherits": { 841 | "version": "2.0.4", 842 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 843 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 844 | }, 845 | "ipaddr.js": { 846 | "version": "1.9.1", 847 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 848 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 849 | }, 850 | "media-typer": { 851 | "version": "0.3.0", 852 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 853 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 854 | }, 855 | "merge-descriptors": { 856 | "version": "1.0.1", 857 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 858 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 859 | }, 860 | "methods": { 861 | "version": "1.1.2", 862 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 863 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 864 | }, 865 | "mime": { 866 | "version": "1.6.0", 867 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 868 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 869 | }, 870 | "mime-db": { 871 | "version": "1.52.0", 872 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 873 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 874 | }, 875 | "mime-types": { 876 | "version": "2.1.35", 877 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 878 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 879 | "requires": { 880 | "mime-db": "1.52.0" 881 | } 882 | }, 883 | "ms": { 884 | "version": "2.0.0", 885 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 886 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 887 | }, 888 | "negotiator": { 889 | "version": "0.6.3", 890 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 891 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 892 | }, 893 | "object-assign": { 894 | "version": "4.1.1", 895 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 896 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 897 | }, 898 | "object-inspect": { 899 | "version": "1.12.2", 900 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 901 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 902 | }, 903 | "on-finished": { 904 | "version": "2.4.1", 905 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 906 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 907 | "requires": { 908 | "ee-first": "1.1.1" 909 | } 910 | }, 911 | "parseurl": { 912 | "version": "1.3.3", 913 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 914 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 915 | }, 916 | "path-to-regexp": { 917 | "version": "0.1.7", 918 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 919 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 920 | }, 921 | "proxy-addr": { 922 | "version": "2.0.7", 923 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 924 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 925 | "requires": { 926 | "forwarded": "0.2.0", 927 | "ipaddr.js": "1.9.1" 928 | } 929 | }, 930 | "qs": { 931 | "version": "6.10.3", 932 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", 933 | "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", 934 | "requires": { 935 | "side-channel": "^1.0.4" 936 | } 937 | }, 938 | "range-parser": { 939 | "version": "1.2.1", 940 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 941 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 942 | }, 943 | "raw-body": { 944 | "version": "2.5.1", 945 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 946 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 947 | "requires": { 948 | "bytes": "3.1.2", 949 | "http-errors": "2.0.0", 950 | "iconv-lite": "0.4.24", 951 | "unpipe": "1.0.0" 952 | } 953 | }, 954 | "safe-buffer": { 955 | "version": "5.2.1", 956 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 957 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 958 | }, 959 | "safer-buffer": { 960 | "version": "2.1.2", 961 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 962 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 963 | }, 964 | "send": { 965 | "version": "0.18.0", 966 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 967 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 968 | "requires": { 969 | "debug": "2.6.9", 970 | "depd": "2.0.0", 971 | "destroy": "1.2.0", 972 | "encodeurl": "~1.0.2", 973 | "escape-html": "~1.0.3", 974 | "etag": "~1.8.1", 975 | "fresh": "0.5.2", 976 | "http-errors": "2.0.0", 977 | "mime": "1.6.0", 978 | "ms": "2.1.3", 979 | "on-finished": "2.4.1", 980 | "range-parser": "~1.2.1", 981 | "statuses": "2.0.1" 982 | }, 983 | "dependencies": { 984 | "ms": { 985 | "version": "2.1.3", 986 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 987 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 988 | } 989 | } 990 | }, 991 | "serve-static": { 992 | "version": "1.15.0", 993 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 994 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 995 | "requires": { 996 | "encodeurl": "~1.0.2", 997 | "escape-html": "~1.0.3", 998 | "parseurl": "~1.3.3", 999 | "send": "0.18.0" 1000 | } 1001 | }, 1002 | "setprototypeof": { 1003 | "version": "1.2.0", 1004 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1005 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1006 | }, 1007 | "side-channel": { 1008 | "version": "1.0.4", 1009 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1010 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1011 | "requires": { 1012 | "call-bind": "^1.0.0", 1013 | "get-intrinsic": "^1.0.2", 1014 | "object-inspect": "^1.9.0" 1015 | } 1016 | }, 1017 | "statuses": { 1018 | "version": "2.0.1", 1019 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1020 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1021 | }, 1022 | "toidentifier": { 1023 | "version": "1.0.1", 1024 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1025 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1026 | }, 1027 | "type-is": { 1028 | "version": "1.6.18", 1029 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1030 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1031 | "requires": { 1032 | "media-typer": "0.3.0", 1033 | "mime-types": "~2.1.24" 1034 | } 1035 | }, 1036 | "unpipe": { 1037 | "version": "1.0.0", 1038 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1039 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1040 | }, 1041 | "utils-merge": { 1042 | "version": "1.0.1", 1043 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1044 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1045 | }, 1046 | "vary": { 1047 | "version": "1.1.2", 1048 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1049 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1050 | } 1051 | } 1052 | } 1053 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rap-names-api", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "cors": "^2.8.5", 13 | "express": "^4.18.1" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = express() 3 | const cors = require('cors') 4 | const PORT = 8000 5 | 6 | app.use(cors()) 7 | 8 | const rappers = { 9 | '21 savage': { 10 | 'age': 29, 11 | 'birthName': 'Shéyaa Bin Abraham-Joseph', 12 | 'birthLocation': 'London, England' 13 | }, 14 | 'chance the rapper':{ 15 | 'age': 29, 16 | 'birthName': 'Chancelor Bennett', 17 | 'birthLocation': 'Chicago, Illinois' 18 | }, 19 | 'unknown':{ 20 | 'age': 0, 21 | 'birthName': 'unknown', 22 | 'birthLocation': 'unknown' 23 | } 24 | } 25 | app.get('/', (request, response)=>{ 26 | response.sendFile(__dirname + '/index.html') 27 | }) 28 | 29 | app.get('/api/:name',(request,response)=>{ 30 | const rapperName = request.params.name.toLowerCase() 31 | 32 | if( rappers[rapperName] ){ 33 | response.json(rappers[rapperName]) 34 | }else{ 35 | response.json(rappers['unknown']) 36 | } 37 | 38 | }) 39 | 40 | app.listen(process.env.PORT || PORT, ()=>{ 41 | console.log(`The server is now running on port ${PORT}! Betta Go Catch It!`) 42 | }) --------------------------------------------------------------------------------