├── .gitignore ├── app.js ├── index2.js ├── manifest.json ├── package-lock.json ├── package.json └── server └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | document.getElementById("login").innerHTML = "SEND HEADERS TO TASK" 2 | -------------------------------------------------------------------------------- /index2.js: -------------------------------------------------------------------------------- 1 | 2 | const filter = {"urls": ["*://*.target.com/*"]} 3 | const extraInfoSpec = ["requestHeaders"] 4 | 5 | 6 | /** 7 | * @param {Array} headerArray - Formatted header array 8 | */ 9 | const sendToTask = (headerArray) => { 10 | const req = new XMLHttpRequest(); 11 | const baseUrl = "http://localhost:3000/headers"; 12 | const data = JSON.stringify({"headerArray": headerArray}) 13 | 14 | req.open("POST", baseUrl, true); 15 | req.setRequestHeader("Content-type", "application/json"); 16 | req.send(data); 17 | 18 | req.addEventListener("readystatechange", function() { 19 | if (this.readyState === 4 && this.status == 200 && JSON.parse(this.response).success === true) { 20 | console.log("Headers Sent!") 21 | } 22 | }); 23 | 24 | } 25 | 26 | /** 27 | * @param {Object} headers - Unformatted header object 28 | * @param {string} ck - browser cookies 29 | * @returns {function sendToTask(headersObject)} 30 | */ 31 | const formatHeaders = (headers, ck) => { 32 | let headersObject = {} 33 | for(let i = 0; i < headers.length; i++) { 34 | headersObject[headers[i].name] = headers[i].value 35 | } 36 | headersObject["Cookie"] = ck.trim() 37 | return sendToTask(headersObject) 38 | } 39 | 40 | 41 | /** 42 | * 43 | * @param {Object} requestHeaders - unformatted request headers 44 | * @returns {function formatHeaders(requestHeaders, ck)} 45 | */ 46 | const getCookies = async (requestHeaders) => { 47 | await chrome.cookies.getAll({ domain: ".target.com" }, (cookies) => { 48 | let ck = ""; 49 | for (var i = 0; i < cookies.length; i++) { 50 | ck += `${cookies[i].name}=${cookies[i].value}; `; 51 | } 52 | return formatHeaders(requestHeaders, ck) 53 | }) 54 | } 55 | 56 | 57 | /** 58 | * @param {Object} request - Request Object 59 | * @returns {function getCookies(request.requestHeaders) { 60 | 61 | }} 62 | */ 63 | const callback = (request) => { 64 | if(request.url === "https://gsp.target.com/gsp/authentications/v1/credential_validations?client_id=ecom-web-1.0.0") { // checks if this is the login request(only one w shape headers) 65 | return getCookies(request.requestHeaders) // gets cookies 66 | } 67 | } 68 | 69 | 70 | /** 71 | * @param {Function} callback - Callback Function 72 | * @param {Object} filter - Filter Object(only listens to requests from target) 73 | * @param {Array} extraInfoSpec - specifies we want the requestHeaders 74 | */ 75 | chrome.webRequest.onSendHeaders.addListener(callback, filter, extraInfoSpec) -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "name": "Shape Header Harvester", 4 | "version": "1.0.0", 5 | "permissions": [ 6 | "tabs", 7 | "webRequest", 8 | "*://*.target.com/*", 9 | "webRequestBlocking", 10 | "cookies" 11 | ], 12 | "background": { 13 | "scripts": ["index2.js"] 14 | }, 15 | "content_scripts": [{ 16 | "js":["app.js"], 17 | "matches":["*://*.target.com/*"] 18 | }], 19 | "description": "Fetches Headers from Target", 20 | "content_security_policy": "script-src 'self' https://unpkg.com ; object-src 'self'" 21 | } 22 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shapeheader", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "body-parser": "^1.19.0", 9 | "express": "^4.17.1", 10 | "got": "^11.8.2" 11 | } 12 | }, 13 | "node_modules/@sindresorhus/is": { 14 | "version": "4.0.1", 15 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz", 16 | "integrity": "sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g==", 17 | "engines": { 18 | "node": ">=10" 19 | }, 20 | "funding": { 21 | "url": "https://github.com/sindresorhus/is?sponsor=1" 22 | } 23 | }, 24 | "node_modules/@szmarczak/http-timer": { 25 | "version": "4.0.5", 26 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", 27 | "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", 28 | "dependencies": { 29 | "defer-to-connect": "^2.0.0" 30 | }, 31 | "engines": { 32 | "node": ">=10" 33 | } 34 | }, 35 | "node_modules/@types/cacheable-request": { 36 | "version": "6.0.1", 37 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", 38 | "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", 39 | "dependencies": { 40 | "@types/http-cache-semantics": "*", 41 | "@types/keyv": "*", 42 | "@types/node": "*", 43 | "@types/responselike": "*" 44 | } 45 | }, 46 | "node_modules/@types/http-cache-semantics": { 47 | "version": "4.0.0", 48 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", 49 | "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" 50 | }, 51 | "node_modules/@types/keyv": { 52 | "version": "3.1.1", 53 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", 54 | "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", 55 | "dependencies": { 56 | "@types/node": "*" 57 | } 58 | }, 59 | "node_modules/@types/node": { 60 | "version": "15.12.4", 61 | "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.4.tgz", 62 | "integrity": "sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==" 63 | }, 64 | "node_modules/@types/responselike": { 65 | "version": "1.0.0", 66 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", 67 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 68 | "dependencies": { 69 | "@types/node": "*" 70 | } 71 | }, 72 | "node_modules/accepts": { 73 | "version": "1.3.7", 74 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 75 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 76 | "dependencies": { 77 | "mime-types": "~2.1.24", 78 | "negotiator": "0.6.2" 79 | }, 80 | "engines": { 81 | "node": ">= 0.6" 82 | } 83 | }, 84 | "node_modules/array-flatten": { 85 | "version": "1.1.1", 86 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 87 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 88 | }, 89 | "node_modules/body-parser": { 90 | "version": "1.19.0", 91 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 92 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 93 | "dependencies": { 94 | "bytes": "3.1.0", 95 | "content-type": "~1.0.4", 96 | "debug": "2.6.9", 97 | "depd": "~1.1.2", 98 | "http-errors": "1.7.2", 99 | "iconv-lite": "0.4.24", 100 | "on-finished": "~2.3.0", 101 | "qs": "6.7.0", 102 | "raw-body": "2.4.0", 103 | "type-is": "~1.6.17" 104 | }, 105 | "engines": { 106 | "node": ">= 0.8" 107 | } 108 | }, 109 | "node_modules/bytes": { 110 | "version": "3.1.0", 111 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 112 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", 113 | "engines": { 114 | "node": ">= 0.8" 115 | } 116 | }, 117 | "node_modules/cacheable-lookup": { 118 | "version": "5.0.4", 119 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", 120 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", 121 | "engines": { 122 | "node": ">=10.6.0" 123 | } 124 | }, 125 | "node_modules/cacheable-request": { 126 | "version": "7.0.2", 127 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", 128 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", 129 | "dependencies": { 130 | "clone-response": "^1.0.2", 131 | "get-stream": "^5.1.0", 132 | "http-cache-semantics": "^4.0.0", 133 | "keyv": "^4.0.0", 134 | "lowercase-keys": "^2.0.0", 135 | "normalize-url": "^6.0.1", 136 | "responselike": "^2.0.0" 137 | }, 138 | "engines": { 139 | "node": ">=8" 140 | } 141 | }, 142 | "node_modules/clone-response": { 143 | "version": "1.0.2", 144 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 145 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 146 | "dependencies": { 147 | "mimic-response": "^1.0.0" 148 | } 149 | }, 150 | "node_modules/content-disposition": { 151 | "version": "0.5.3", 152 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 153 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 154 | "dependencies": { 155 | "safe-buffer": "5.1.2" 156 | }, 157 | "engines": { 158 | "node": ">= 0.6" 159 | } 160 | }, 161 | "node_modules/content-type": { 162 | "version": "1.0.4", 163 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 164 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", 165 | "engines": { 166 | "node": ">= 0.6" 167 | } 168 | }, 169 | "node_modules/cookie": { 170 | "version": "0.4.0", 171 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 172 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", 173 | "engines": { 174 | "node": ">= 0.6" 175 | } 176 | }, 177 | "node_modules/cookie-signature": { 178 | "version": "1.0.6", 179 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 180 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 181 | }, 182 | "node_modules/debug": { 183 | "version": "2.6.9", 184 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 185 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 186 | "dependencies": { 187 | "ms": "2.0.0" 188 | } 189 | }, 190 | "node_modules/decompress-response": { 191 | "version": "6.0.0", 192 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 193 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 194 | "dependencies": { 195 | "mimic-response": "^3.1.0" 196 | }, 197 | "engines": { 198 | "node": ">=10" 199 | }, 200 | "funding": { 201 | "url": "https://github.com/sponsors/sindresorhus" 202 | } 203 | }, 204 | "node_modules/decompress-response/node_modules/mimic-response": { 205 | "version": "3.1.0", 206 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 207 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 208 | "engines": { 209 | "node": ">=10" 210 | }, 211 | "funding": { 212 | "url": "https://github.com/sponsors/sindresorhus" 213 | } 214 | }, 215 | "node_modules/defer-to-connect": { 216 | "version": "2.0.1", 217 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 218 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", 219 | "engines": { 220 | "node": ">=10" 221 | } 222 | }, 223 | "node_modules/depd": { 224 | "version": "1.1.2", 225 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 226 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 227 | "engines": { 228 | "node": ">= 0.6" 229 | } 230 | }, 231 | "node_modules/destroy": { 232 | "version": "1.0.4", 233 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 234 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 235 | }, 236 | "node_modules/ee-first": { 237 | "version": "1.1.1", 238 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 239 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 240 | }, 241 | "node_modules/encodeurl": { 242 | "version": "1.0.2", 243 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 244 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 245 | "engines": { 246 | "node": ">= 0.8" 247 | } 248 | }, 249 | "node_modules/end-of-stream": { 250 | "version": "1.4.4", 251 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 252 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 253 | "dependencies": { 254 | "once": "^1.4.0" 255 | } 256 | }, 257 | "node_modules/escape-html": { 258 | "version": "1.0.3", 259 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 260 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 261 | }, 262 | "node_modules/etag": { 263 | "version": "1.8.1", 264 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 265 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 266 | "engines": { 267 | "node": ">= 0.6" 268 | } 269 | }, 270 | "node_modules/express": { 271 | "version": "4.17.1", 272 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 273 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 274 | "dependencies": { 275 | "accepts": "~1.3.7", 276 | "array-flatten": "1.1.1", 277 | "body-parser": "1.19.0", 278 | "content-disposition": "0.5.3", 279 | "content-type": "~1.0.4", 280 | "cookie": "0.4.0", 281 | "cookie-signature": "1.0.6", 282 | "debug": "2.6.9", 283 | "depd": "~1.1.2", 284 | "encodeurl": "~1.0.2", 285 | "escape-html": "~1.0.3", 286 | "etag": "~1.8.1", 287 | "finalhandler": "~1.1.2", 288 | "fresh": "0.5.2", 289 | "merge-descriptors": "1.0.1", 290 | "methods": "~1.1.2", 291 | "on-finished": "~2.3.0", 292 | "parseurl": "~1.3.3", 293 | "path-to-regexp": "0.1.7", 294 | "proxy-addr": "~2.0.5", 295 | "qs": "6.7.0", 296 | "range-parser": "~1.2.1", 297 | "safe-buffer": "5.1.2", 298 | "send": "0.17.1", 299 | "serve-static": "1.14.1", 300 | "setprototypeof": "1.1.1", 301 | "statuses": "~1.5.0", 302 | "type-is": "~1.6.18", 303 | "utils-merge": "1.0.1", 304 | "vary": "~1.1.2" 305 | }, 306 | "engines": { 307 | "node": ">= 0.10.0" 308 | } 309 | }, 310 | "node_modules/finalhandler": { 311 | "version": "1.1.2", 312 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 313 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 314 | "dependencies": { 315 | "debug": "2.6.9", 316 | "encodeurl": "~1.0.2", 317 | "escape-html": "~1.0.3", 318 | "on-finished": "~2.3.0", 319 | "parseurl": "~1.3.3", 320 | "statuses": "~1.5.0", 321 | "unpipe": "~1.0.0" 322 | }, 323 | "engines": { 324 | "node": ">= 0.8" 325 | } 326 | }, 327 | "node_modules/forwarded": { 328 | "version": "0.2.0", 329 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 330 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 331 | "engines": { 332 | "node": ">= 0.6" 333 | } 334 | }, 335 | "node_modules/fresh": { 336 | "version": "0.5.2", 337 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 338 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 339 | "engines": { 340 | "node": ">= 0.6" 341 | } 342 | }, 343 | "node_modules/get-stream": { 344 | "version": "5.2.0", 345 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 346 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 347 | "dependencies": { 348 | "pump": "^3.0.0" 349 | }, 350 | "engines": { 351 | "node": ">=8" 352 | }, 353 | "funding": { 354 | "url": "https://github.com/sponsors/sindresorhus" 355 | } 356 | }, 357 | "node_modules/got": { 358 | "version": "11.8.2", 359 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", 360 | "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", 361 | "dependencies": { 362 | "@sindresorhus/is": "^4.0.0", 363 | "@szmarczak/http-timer": "^4.0.5", 364 | "@types/cacheable-request": "^6.0.1", 365 | "@types/responselike": "^1.0.0", 366 | "cacheable-lookup": "^5.0.3", 367 | "cacheable-request": "^7.0.1", 368 | "decompress-response": "^6.0.0", 369 | "http2-wrapper": "^1.0.0-beta.5.2", 370 | "lowercase-keys": "^2.0.0", 371 | "p-cancelable": "^2.0.0", 372 | "responselike": "^2.0.0" 373 | }, 374 | "engines": { 375 | "node": ">=10.19.0" 376 | }, 377 | "funding": { 378 | "url": "https://github.com/sindresorhus/got?sponsor=1" 379 | } 380 | }, 381 | "node_modules/http-cache-semantics": { 382 | "version": "4.1.0", 383 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 384 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 385 | }, 386 | "node_modules/http-errors": { 387 | "version": "1.7.2", 388 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 389 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 390 | "dependencies": { 391 | "depd": "~1.1.2", 392 | "inherits": "2.0.3", 393 | "setprototypeof": "1.1.1", 394 | "statuses": ">= 1.5.0 < 2", 395 | "toidentifier": "1.0.0" 396 | }, 397 | "engines": { 398 | "node": ">= 0.6" 399 | } 400 | }, 401 | "node_modules/http2-wrapper": { 402 | "version": "1.0.3", 403 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", 404 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 405 | "dependencies": { 406 | "quick-lru": "^5.1.1", 407 | "resolve-alpn": "^1.0.0" 408 | }, 409 | "engines": { 410 | "node": ">=10.19.0" 411 | } 412 | }, 413 | "node_modules/iconv-lite": { 414 | "version": "0.4.24", 415 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 416 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 417 | "dependencies": { 418 | "safer-buffer": ">= 2.1.2 < 3" 419 | }, 420 | "engines": { 421 | "node": ">=0.10.0" 422 | } 423 | }, 424 | "node_modules/inherits": { 425 | "version": "2.0.3", 426 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 427 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 428 | }, 429 | "node_modules/ipaddr.js": { 430 | "version": "1.9.1", 431 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 432 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 433 | "engines": { 434 | "node": ">= 0.10" 435 | } 436 | }, 437 | "node_modules/json-buffer": { 438 | "version": "3.0.1", 439 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 440 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 441 | }, 442 | "node_modules/keyv": { 443 | "version": "4.0.3", 444 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", 445 | "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", 446 | "dependencies": { 447 | "json-buffer": "3.0.1" 448 | } 449 | }, 450 | "node_modules/lowercase-keys": { 451 | "version": "2.0.0", 452 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 453 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 454 | "engines": { 455 | "node": ">=8" 456 | } 457 | }, 458 | "node_modules/media-typer": { 459 | "version": "0.3.0", 460 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 461 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 462 | "engines": { 463 | "node": ">= 0.6" 464 | } 465 | }, 466 | "node_modules/merge-descriptors": { 467 | "version": "1.0.1", 468 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 469 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 470 | }, 471 | "node_modules/methods": { 472 | "version": "1.1.2", 473 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 474 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 475 | "engines": { 476 | "node": ">= 0.6" 477 | } 478 | }, 479 | "node_modules/mime": { 480 | "version": "1.6.0", 481 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 482 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 483 | "bin": { 484 | "mime": "cli.js" 485 | }, 486 | "engines": { 487 | "node": ">=4" 488 | } 489 | }, 490 | "node_modules/mime-db": { 491 | "version": "1.48.0", 492 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", 493 | "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", 494 | "engines": { 495 | "node": ">= 0.6" 496 | } 497 | }, 498 | "node_modules/mime-types": { 499 | "version": "2.1.31", 500 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", 501 | "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", 502 | "dependencies": { 503 | "mime-db": "1.48.0" 504 | }, 505 | "engines": { 506 | "node": ">= 0.6" 507 | } 508 | }, 509 | "node_modules/mimic-response": { 510 | "version": "1.0.1", 511 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 512 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 513 | "engines": { 514 | "node": ">=4" 515 | } 516 | }, 517 | "node_modules/ms": { 518 | "version": "2.0.0", 519 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 520 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 521 | }, 522 | "node_modules/negotiator": { 523 | "version": "0.6.2", 524 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 525 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", 526 | "engines": { 527 | "node": ">= 0.6" 528 | } 529 | }, 530 | "node_modules/normalize-url": { 531 | "version": "6.1.0", 532 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 533 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", 534 | "engines": { 535 | "node": ">=10" 536 | }, 537 | "funding": { 538 | "url": "https://github.com/sponsors/sindresorhus" 539 | } 540 | }, 541 | "node_modules/on-finished": { 542 | "version": "2.3.0", 543 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 544 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 545 | "dependencies": { 546 | "ee-first": "1.1.1" 547 | }, 548 | "engines": { 549 | "node": ">= 0.8" 550 | } 551 | }, 552 | "node_modules/once": { 553 | "version": "1.4.0", 554 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 555 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 556 | "dependencies": { 557 | "wrappy": "1" 558 | } 559 | }, 560 | "node_modules/p-cancelable": { 561 | "version": "2.1.1", 562 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", 563 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", 564 | "engines": { 565 | "node": ">=8" 566 | } 567 | }, 568 | "node_modules/parseurl": { 569 | "version": "1.3.3", 570 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 571 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 572 | "engines": { 573 | "node": ">= 0.8" 574 | } 575 | }, 576 | "node_modules/path-to-regexp": { 577 | "version": "0.1.7", 578 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 579 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 580 | }, 581 | "node_modules/proxy-addr": { 582 | "version": "2.0.7", 583 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 584 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 585 | "dependencies": { 586 | "forwarded": "0.2.0", 587 | "ipaddr.js": "1.9.1" 588 | }, 589 | "engines": { 590 | "node": ">= 0.10" 591 | } 592 | }, 593 | "node_modules/pump": { 594 | "version": "3.0.0", 595 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 596 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 597 | "dependencies": { 598 | "end-of-stream": "^1.1.0", 599 | "once": "^1.3.1" 600 | } 601 | }, 602 | "node_modules/qs": { 603 | "version": "6.7.0", 604 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 605 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", 606 | "engines": { 607 | "node": ">=0.6" 608 | } 609 | }, 610 | "node_modules/quick-lru": { 611 | "version": "5.1.1", 612 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 613 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 614 | "engines": { 615 | "node": ">=10" 616 | }, 617 | "funding": { 618 | "url": "https://github.com/sponsors/sindresorhus" 619 | } 620 | }, 621 | "node_modules/range-parser": { 622 | "version": "1.2.1", 623 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 624 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 625 | "engines": { 626 | "node": ">= 0.6" 627 | } 628 | }, 629 | "node_modules/raw-body": { 630 | "version": "2.4.0", 631 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 632 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 633 | "dependencies": { 634 | "bytes": "3.1.0", 635 | "http-errors": "1.7.2", 636 | "iconv-lite": "0.4.24", 637 | "unpipe": "1.0.0" 638 | }, 639 | "engines": { 640 | "node": ">= 0.8" 641 | } 642 | }, 643 | "node_modules/resolve-alpn": { 644 | "version": "1.1.2", 645 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.1.2.tgz", 646 | "integrity": "sha512-8OyfzhAtA32LVUsJSke3auIyINcwdh5l3cvYKdKO0nvsYSKuiLfTM5i78PJswFPT8y6cPW+L1v6/hE95chcpDA==" 647 | }, 648 | "node_modules/responselike": { 649 | "version": "2.0.0", 650 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", 651 | "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", 652 | "dependencies": { 653 | "lowercase-keys": "^2.0.0" 654 | } 655 | }, 656 | "node_modules/safe-buffer": { 657 | "version": "5.1.2", 658 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 659 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 660 | }, 661 | "node_modules/safer-buffer": { 662 | "version": "2.1.2", 663 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 664 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 665 | }, 666 | "node_modules/send": { 667 | "version": "0.17.1", 668 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 669 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 670 | "dependencies": { 671 | "debug": "2.6.9", 672 | "depd": "~1.1.2", 673 | "destroy": "~1.0.4", 674 | "encodeurl": "~1.0.2", 675 | "escape-html": "~1.0.3", 676 | "etag": "~1.8.1", 677 | "fresh": "0.5.2", 678 | "http-errors": "~1.7.2", 679 | "mime": "1.6.0", 680 | "ms": "2.1.1", 681 | "on-finished": "~2.3.0", 682 | "range-parser": "~1.2.1", 683 | "statuses": "~1.5.0" 684 | }, 685 | "engines": { 686 | "node": ">= 0.8.0" 687 | } 688 | }, 689 | "node_modules/send/node_modules/ms": { 690 | "version": "2.1.1", 691 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 692 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 693 | }, 694 | "node_modules/serve-static": { 695 | "version": "1.14.1", 696 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 697 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 698 | "dependencies": { 699 | "encodeurl": "~1.0.2", 700 | "escape-html": "~1.0.3", 701 | "parseurl": "~1.3.3", 702 | "send": "0.17.1" 703 | }, 704 | "engines": { 705 | "node": ">= 0.8.0" 706 | } 707 | }, 708 | "node_modules/setprototypeof": { 709 | "version": "1.1.1", 710 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 711 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 712 | }, 713 | "node_modules/statuses": { 714 | "version": "1.5.0", 715 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 716 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 717 | "engines": { 718 | "node": ">= 0.6" 719 | } 720 | }, 721 | "node_modules/toidentifier": { 722 | "version": "1.0.0", 723 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 724 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", 725 | "engines": { 726 | "node": ">=0.6" 727 | } 728 | }, 729 | "node_modules/type-is": { 730 | "version": "1.6.18", 731 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 732 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 733 | "dependencies": { 734 | "media-typer": "0.3.0", 735 | "mime-types": "~2.1.24" 736 | }, 737 | "engines": { 738 | "node": ">= 0.6" 739 | } 740 | }, 741 | "node_modules/unpipe": { 742 | "version": "1.0.0", 743 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 744 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 745 | "engines": { 746 | "node": ">= 0.8" 747 | } 748 | }, 749 | "node_modules/utils-merge": { 750 | "version": "1.0.1", 751 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 752 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 753 | "engines": { 754 | "node": ">= 0.4.0" 755 | } 756 | }, 757 | "node_modules/vary": { 758 | "version": "1.1.2", 759 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 760 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 761 | "engines": { 762 | "node": ">= 0.8" 763 | } 764 | }, 765 | "node_modules/wrappy": { 766 | "version": "1.0.2", 767 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 768 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 769 | } 770 | }, 771 | "dependencies": { 772 | "@sindresorhus/is": { 773 | "version": "4.0.1", 774 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.1.tgz", 775 | "integrity": "sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g==" 776 | }, 777 | "@szmarczak/http-timer": { 778 | "version": "4.0.5", 779 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", 780 | "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", 781 | "requires": { 782 | "defer-to-connect": "^2.0.0" 783 | } 784 | }, 785 | "@types/cacheable-request": { 786 | "version": "6.0.1", 787 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", 788 | "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", 789 | "requires": { 790 | "@types/http-cache-semantics": "*", 791 | "@types/keyv": "*", 792 | "@types/node": "*", 793 | "@types/responselike": "*" 794 | } 795 | }, 796 | "@types/http-cache-semantics": { 797 | "version": "4.0.0", 798 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", 799 | "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" 800 | }, 801 | "@types/keyv": { 802 | "version": "3.1.1", 803 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", 804 | "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", 805 | "requires": { 806 | "@types/node": "*" 807 | } 808 | }, 809 | "@types/node": { 810 | "version": "15.12.4", 811 | "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.4.tgz", 812 | "integrity": "sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==" 813 | }, 814 | "@types/responselike": { 815 | "version": "1.0.0", 816 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", 817 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 818 | "requires": { 819 | "@types/node": "*" 820 | } 821 | }, 822 | "accepts": { 823 | "version": "1.3.7", 824 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 825 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 826 | "requires": { 827 | "mime-types": "~2.1.24", 828 | "negotiator": "0.6.2" 829 | } 830 | }, 831 | "array-flatten": { 832 | "version": "1.1.1", 833 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 834 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 835 | }, 836 | "body-parser": { 837 | "version": "1.19.0", 838 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 839 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 840 | "requires": { 841 | "bytes": "3.1.0", 842 | "content-type": "~1.0.4", 843 | "debug": "2.6.9", 844 | "depd": "~1.1.2", 845 | "http-errors": "1.7.2", 846 | "iconv-lite": "0.4.24", 847 | "on-finished": "~2.3.0", 848 | "qs": "6.7.0", 849 | "raw-body": "2.4.0", 850 | "type-is": "~1.6.17" 851 | } 852 | }, 853 | "bytes": { 854 | "version": "3.1.0", 855 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 856 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 857 | }, 858 | "cacheable-lookup": { 859 | "version": "5.0.4", 860 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", 861 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" 862 | }, 863 | "cacheable-request": { 864 | "version": "7.0.2", 865 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", 866 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", 867 | "requires": { 868 | "clone-response": "^1.0.2", 869 | "get-stream": "^5.1.0", 870 | "http-cache-semantics": "^4.0.0", 871 | "keyv": "^4.0.0", 872 | "lowercase-keys": "^2.0.0", 873 | "normalize-url": "^6.0.1", 874 | "responselike": "^2.0.0" 875 | } 876 | }, 877 | "clone-response": { 878 | "version": "1.0.2", 879 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 880 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 881 | "requires": { 882 | "mimic-response": "^1.0.0" 883 | } 884 | }, 885 | "content-disposition": { 886 | "version": "0.5.3", 887 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 888 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 889 | "requires": { 890 | "safe-buffer": "5.1.2" 891 | } 892 | }, 893 | "content-type": { 894 | "version": "1.0.4", 895 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 896 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 897 | }, 898 | "cookie": { 899 | "version": "0.4.0", 900 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 901 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 902 | }, 903 | "cookie-signature": { 904 | "version": "1.0.6", 905 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 906 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 907 | }, 908 | "debug": { 909 | "version": "2.6.9", 910 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 911 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 912 | "requires": { 913 | "ms": "2.0.0" 914 | } 915 | }, 916 | "decompress-response": { 917 | "version": "6.0.0", 918 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 919 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 920 | "requires": { 921 | "mimic-response": "^3.1.0" 922 | }, 923 | "dependencies": { 924 | "mimic-response": { 925 | "version": "3.1.0", 926 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 927 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 928 | } 929 | } 930 | }, 931 | "defer-to-connect": { 932 | "version": "2.0.1", 933 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 934 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" 935 | }, 936 | "depd": { 937 | "version": "1.1.2", 938 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 939 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 940 | }, 941 | "destroy": { 942 | "version": "1.0.4", 943 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 944 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 945 | }, 946 | "ee-first": { 947 | "version": "1.1.1", 948 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 949 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 950 | }, 951 | "encodeurl": { 952 | "version": "1.0.2", 953 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 954 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 955 | }, 956 | "end-of-stream": { 957 | "version": "1.4.4", 958 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 959 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 960 | "requires": { 961 | "once": "^1.4.0" 962 | } 963 | }, 964 | "escape-html": { 965 | "version": "1.0.3", 966 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 967 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 968 | }, 969 | "etag": { 970 | "version": "1.8.1", 971 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 972 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 973 | }, 974 | "express": { 975 | "version": "4.17.1", 976 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 977 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 978 | "requires": { 979 | "accepts": "~1.3.7", 980 | "array-flatten": "1.1.1", 981 | "body-parser": "1.19.0", 982 | "content-disposition": "0.5.3", 983 | "content-type": "~1.0.4", 984 | "cookie": "0.4.0", 985 | "cookie-signature": "1.0.6", 986 | "debug": "2.6.9", 987 | "depd": "~1.1.2", 988 | "encodeurl": "~1.0.2", 989 | "escape-html": "~1.0.3", 990 | "etag": "~1.8.1", 991 | "finalhandler": "~1.1.2", 992 | "fresh": "0.5.2", 993 | "merge-descriptors": "1.0.1", 994 | "methods": "~1.1.2", 995 | "on-finished": "~2.3.0", 996 | "parseurl": "~1.3.3", 997 | "path-to-regexp": "0.1.7", 998 | "proxy-addr": "~2.0.5", 999 | "qs": "6.7.0", 1000 | "range-parser": "~1.2.1", 1001 | "safe-buffer": "5.1.2", 1002 | "send": "0.17.1", 1003 | "serve-static": "1.14.1", 1004 | "setprototypeof": "1.1.1", 1005 | "statuses": "~1.5.0", 1006 | "type-is": "~1.6.18", 1007 | "utils-merge": "1.0.1", 1008 | "vary": "~1.1.2" 1009 | } 1010 | }, 1011 | "finalhandler": { 1012 | "version": "1.1.2", 1013 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1014 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1015 | "requires": { 1016 | "debug": "2.6.9", 1017 | "encodeurl": "~1.0.2", 1018 | "escape-html": "~1.0.3", 1019 | "on-finished": "~2.3.0", 1020 | "parseurl": "~1.3.3", 1021 | "statuses": "~1.5.0", 1022 | "unpipe": "~1.0.0" 1023 | } 1024 | }, 1025 | "forwarded": { 1026 | "version": "0.2.0", 1027 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 1028 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 1029 | }, 1030 | "fresh": { 1031 | "version": "0.5.2", 1032 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1033 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1034 | }, 1035 | "get-stream": { 1036 | "version": "5.2.0", 1037 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1038 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1039 | "requires": { 1040 | "pump": "^3.0.0" 1041 | } 1042 | }, 1043 | "got": { 1044 | "version": "11.8.2", 1045 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.2.tgz", 1046 | "integrity": "sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==", 1047 | "requires": { 1048 | "@sindresorhus/is": "^4.0.0", 1049 | "@szmarczak/http-timer": "^4.0.5", 1050 | "@types/cacheable-request": "^6.0.1", 1051 | "@types/responselike": "^1.0.0", 1052 | "cacheable-lookup": "^5.0.3", 1053 | "cacheable-request": "^7.0.1", 1054 | "decompress-response": "^6.0.0", 1055 | "http2-wrapper": "^1.0.0-beta.5.2", 1056 | "lowercase-keys": "^2.0.0", 1057 | "p-cancelable": "^2.0.0", 1058 | "responselike": "^2.0.0" 1059 | } 1060 | }, 1061 | "http-cache-semantics": { 1062 | "version": "4.1.0", 1063 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 1064 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 1065 | }, 1066 | "http-errors": { 1067 | "version": "1.7.2", 1068 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 1069 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 1070 | "requires": { 1071 | "depd": "~1.1.2", 1072 | "inherits": "2.0.3", 1073 | "setprototypeof": "1.1.1", 1074 | "statuses": ">= 1.5.0 < 2", 1075 | "toidentifier": "1.0.0" 1076 | } 1077 | }, 1078 | "http2-wrapper": { 1079 | "version": "1.0.3", 1080 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", 1081 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 1082 | "requires": { 1083 | "quick-lru": "^5.1.1", 1084 | "resolve-alpn": "^1.0.0" 1085 | } 1086 | }, 1087 | "iconv-lite": { 1088 | "version": "0.4.24", 1089 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1090 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1091 | "requires": { 1092 | "safer-buffer": ">= 2.1.2 < 3" 1093 | } 1094 | }, 1095 | "inherits": { 1096 | "version": "2.0.3", 1097 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1098 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1099 | }, 1100 | "ipaddr.js": { 1101 | "version": "1.9.1", 1102 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1103 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1104 | }, 1105 | "json-buffer": { 1106 | "version": "3.0.1", 1107 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1108 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 1109 | }, 1110 | "keyv": { 1111 | "version": "4.0.3", 1112 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", 1113 | "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", 1114 | "requires": { 1115 | "json-buffer": "3.0.1" 1116 | } 1117 | }, 1118 | "lowercase-keys": { 1119 | "version": "2.0.0", 1120 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 1121 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 1122 | }, 1123 | "media-typer": { 1124 | "version": "0.3.0", 1125 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1126 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1127 | }, 1128 | "merge-descriptors": { 1129 | "version": "1.0.1", 1130 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1131 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1132 | }, 1133 | "methods": { 1134 | "version": "1.1.2", 1135 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1136 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1137 | }, 1138 | "mime": { 1139 | "version": "1.6.0", 1140 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1141 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1142 | }, 1143 | "mime-db": { 1144 | "version": "1.48.0", 1145 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", 1146 | "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" 1147 | }, 1148 | "mime-types": { 1149 | "version": "2.1.31", 1150 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", 1151 | "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", 1152 | "requires": { 1153 | "mime-db": "1.48.0" 1154 | } 1155 | }, 1156 | "mimic-response": { 1157 | "version": "1.0.1", 1158 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 1159 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 1160 | }, 1161 | "ms": { 1162 | "version": "2.0.0", 1163 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1164 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1165 | }, 1166 | "negotiator": { 1167 | "version": "0.6.2", 1168 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1169 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1170 | }, 1171 | "normalize-url": { 1172 | "version": "6.1.0", 1173 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 1174 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" 1175 | }, 1176 | "on-finished": { 1177 | "version": "2.3.0", 1178 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1179 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1180 | "requires": { 1181 | "ee-first": "1.1.1" 1182 | } 1183 | }, 1184 | "once": { 1185 | "version": "1.4.0", 1186 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1187 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1188 | "requires": { 1189 | "wrappy": "1" 1190 | } 1191 | }, 1192 | "p-cancelable": { 1193 | "version": "2.1.1", 1194 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", 1195 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" 1196 | }, 1197 | "parseurl": { 1198 | "version": "1.3.3", 1199 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1200 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1201 | }, 1202 | "path-to-regexp": { 1203 | "version": "0.1.7", 1204 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1205 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 1206 | }, 1207 | "proxy-addr": { 1208 | "version": "2.0.7", 1209 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1210 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1211 | "requires": { 1212 | "forwarded": "0.2.0", 1213 | "ipaddr.js": "1.9.1" 1214 | } 1215 | }, 1216 | "pump": { 1217 | "version": "3.0.0", 1218 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1219 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1220 | "requires": { 1221 | "end-of-stream": "^1.1.0", 1222 | "once": "^1.3.1" 1223 | } 1224 | }, 1225 | "qs": { 1226 | "version": "6.7.0", 1227 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 1228 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 1229 | }, 1230 | "quick-lru": { 1231 | "version": "5.1.1", 1232 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 1233 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 1234 | }, 1235 | "range-parser": { 1236 | "version": "1.2.1", 1237 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1238 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1239 | }, 1240 | "raw-body": { 1241 | "version": "2.4.0", 1242 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 1243 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 1244 | "requires": { 1245 | "bytes": "3.1.0", 1246 | "http-errors": "1.7.2", 1247 | "iconv-lite": "0.4.24", 1248 | "unpipe": "1.0.0" 1249 | } 1250 | }, 1251 | "resolve-alpn": { 1252 | "version": "1.1.2", 1253 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.1.2.tgz", 1254 | "integrity": "sha512-8OyfzhAtA32LVUsJSke3auIyINcwdh5l3cvYKdKO0nvsYSKuiLfTM5i78PJswFPT8y6cPW+L1v6/hE95chcpDA==" 1255 | }, 1256 | "responselike": { 1257 | "version": "2.0.0", 1258 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", 1259 | "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", 1260 | "requires": { 1261 | "lowercase-keys": "^2.0.0" 1262 | } 1263 | }, 1264 | "safe-buffer": { 1265 | "version": "5.1.2", 1266 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1267 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1268 | }, 1269 | "safer-buffer": { 1270 | "version": "2.1.2", 1271 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1272 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1273 | }, 1274 | "send": { 1275 | "version": "0.17.1", 1276 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1277 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1278 | "requires": { 1279 | "debug": "2.6.9", 1280 | "depd": "~1.1.2", 1281 | "destroy": "~1.0.4", 1282 | "encodeurl": "~1.0.2", 1283 | "escape-html": "~1.0.3", 1284 | "etag": "~1.8.1", 1285 | "fresh": "0.5.2", 1286 | "http-errors": "~1.7.2", 1287 | "mime": "1.6.0", 1288 | "ms": "2.1.1", 1289 | "on-finished": "~2.3.0", 1290 | "range-parser": "~1.2.1", 1291 | "statuses": "~1.5.0" 1292 | }, 1293 | "dependencies": { 1294 | "ms": { 1295 | "version": "2.1.1", 1296 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1297 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 1298 | } 1299 | } 1300 | }, 1301 | "serve-static": { 1302 | "version": "1.14.1", 1303 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1304 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1305 | "requires": { 1306 | "encodeurl": "~1.0.2", 1307 | "escape-html": "~1.0.3", 1308 | "parseurl": "~1.3.3", 1309 | "send": "0.17.1" 1310 | } 1311 | }, 1312 | "setprototypeof": { 1313 | "version": "1.1.1", 1314 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1315 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1316 | }, 1317 | "statuses": { 1318 | "version": "1.5.0", 1319 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1320 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1321 | }, 1322 | "toidentifier": { 1323 | "version": "1.0.0", 1324 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1325 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1326 | }, 1327 | "type-is": { 1328 | "version": "1.6.18", 1329 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1330 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1331 | "requires": { 1332 | "media-typer": "0.3.0", 1333 | "mime-types": "~2.1.24" 1334 | } 1335 | }, 1336 | "unpipe": { 1337 | "version": "1.0.0", 1338 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1339 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1340 | }, 1341 | "utils-merge": { 1342 | "version": "1.0.1", 1343 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1344 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1345 | }, 1346 | "vary": { 1347 | "version": "1.1.2", 1348 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1349 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1350 | }, 1351 | "wrappy": { 1352 | "version": "1.0.2", 1353 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1354 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1355 | } 1356 | } 1357 | } 1358 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "body-parser": "^1.19.0", 4 | "express": "^4.17.1", 5 | "got": "^11.8.2" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /server/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const bodyParser = require('body-parser'); 3 | 4 | const app = express() 5 | 6 | const PORT = process.env.PORT || 3000; 7 | const headers = [] 8 | 9 | 10 | app.use(bodyParser.json()) 11 | app.use(express.urlencoded({extended: false})) 12 | app.use((req, res, next) => { 13 | res.append('Access-Control-Allow-Origin', ['*']); 14 | res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); 15 | res.append("Access-Control-Allow-Headers", "Content-Type") 16 | next(); 17 | }); 18 | 19 | 20 | app.post('/headers', (req, res) => { 21 | try { 22 | headers.push(req.body.headerArray) 23 | res.send({"success": true}) 24 | } catch(err) { 25 | res.send({"success": false, "error": err}) 26 | } 27 | }) 28 | 29 | app.get('/shape', (req, res) => { 30 | try { 31 | if(headers.length > 0) { 32 | res.send({"success": true, "headers": headers[0]}) 33 | headers.shift() 34 | } else { 35 | res.send({"success": true, "headers": null}) 36 | } 37 | } catch(err) { 38 | res.send({"success": false, "error": err, "headers": []}) 39 | } 40 | }) 41 | 42 | app.listen(PORT) 43 | --------------------------------------------------------------------------------