diff --git a/components/ee/payment-endpoint/package.json b/components/ee/payment-endpoint/package.json index 685a28cde12aef..e9ef2e2fda6d6d 100644 --- a/components/ee/payment-endpoint/package.json +++ b/components/ee/payment-endpoint/package.json @@ -9,12 +9,12 @@ "@gitpod/gitpod-protocol": "0.1.5", "@octokit/rest": "18.5.6", "@octokit/webhooks": "9.17.0", - "body-parser": "^1.19.0", + "body-parser": "^1.19.2", "chargebee": "^2.4.6", - "express": "^4.17.1", + "express": "^4.17.3", "inversify": "^5.0.1", "jsonwebtoken": "^8.5.0", - "node-fetch": "^2.6.1", + "node-fetch": "^2.6.7", "passport": "^0.4.0", "passport-http": "^0.3.0", "reflect-metadata": "^0.1.13", @@ -24,7 +24,7 @@ "@types/body-parser": "^1.16.5", "@types/chai": "^4.2.2", "@types/jsonwebtoken": "^8.3.2", - "@types/node-fetch": "^2.5.0", + "@types/node-fetch": "^2.6.1", "@types/passport-http": "^0.3.0", "chai": "^4.1.2", "mocha": "^5.0.0", diff --git a/components/gitpod-protocol/package.json b/components/gitpod-protocol/package.json index b4dddb9f943f89..e1036808a7c56c 100644 --- a/components/gitpod-protocol/package.json +++ b/components/gitpod-protocol/package.json @@ -41,7 +41,7 @@ "@types/react": "17.0.32", "ajv": "^6.5.4", "analytics-node": "^4.0.1", - "cookie": "^0.4.1", + "cookie": "^0.4.2", "inversify": "^5.1.1", "jaeger-client": "^3.18.1", "js-yaml": "^3.10.0", diff --git a/components/server/ee/src/user/eligibility-service.ts b/components/server/ee/src/user/eligibility-service.ts index e9cc15dc8a02f1..dd3d22d6509048 100644 --- a/components/server/ee/src/user/eligibility-service.ts +++ b/components/server/ee/src/user/eligibility-service.ts @@ -96,6 +96,7 @@ export class EligibilityService { const logCtx = { userId: user.id }; try { const rawResponse = await fetch("https://education.github.com/api/user", { + timeout: 5000, headers: { "Authorization": `token ${token}`, "faculty-check-preview": "true" diff --git a/components/server/ee/src/workspace/gitpod-server-impl.ts b/components/server/ee/src/workspace/gitpod-server-impl.ts index c016da403f6060..fe0b039bc6cdd6 100644 --- a/components/server/ee/src/workspace/gitpod-server-impl.ts +++ b/components/server/ee/src/workspace/gitpod-server-impl.ts @@ -25,7 +25,7 @@ import { AccountStatementProvider } from "../user/account-statement-provider"; import { GithubUpgradeURL, PlanCoupon } from "@gitpod/gitpod-protocol/lib/payment-protocol"; import { AssigneeIdentityIdentifier, TeamSubscription, TeamSubscriptionSlot, TeamSubscriptionSlotResolved } from "@gitpod/gitpod-protocol/lib/team-subscription-protocol"; import { Plans } from "@gitpod/gitpod-protocol/lib/plans"; -import pThrottle, { ThrottledFunction } from "p-throttle"; +import * as pThrottle from "p-throttle"; import { formatDate } from "@gitpod/gitpod-protocol/lib/util/date-time"; import { FindUserByIdentityStrResult } from "../../../src/user/user-service"; import { Accounting, AccountService, SubscriptionService, TeamSubscriptionService } from "@gitpod/gitpod-payment-endpoint/lib/accounting"; @@ -1198,7 +1198,8 @@ export class GitpodServerEEImpl extends GitpodServerImpl { } } - protected readonly findAssigneeThrottled: ThrottledFunction = pThrottle(async (logCtx: LogContext, identityStr: string): Promise => { + protected readonly findAssigneeThrottler = pThrottle({ limit: 1, interval: 1000 }); + protected readonly findAssigneeThrottled: pThrottle.ThrottledFunction = this.findAssigneeThrottler(async (logCtx: LogContext, identityStr: string): Promise => { let assigneeInfo = undefined; try { assigneeInfo = await this.userService.findUserByIdentityStr(identityStr); @@ -1209,7 +1210,7 @@ export class GitpodServerEEImpl extends GitpodServerImpl { throw new ResponseError(ErrorCodes.TEAM_SUBSCRIPTION_ASSIGNMENT_FAILED, `Gitpod user not found`, { msg: `Gitpod user not found` }); } return assigneeInfo; - }, 1, 1000); + }); protected async findAssignee(logCtx: LogContext, identityStr: string) { return await this.findAssigneeThrottled(logCtx, identityStr); diff --git a/components/server/package.json b/components/server/package.json index 154f8f40f1a1aa..249db039f63c4d 100644 --- a/components/server/package.json +++ b/components/server/package.json @@ -46,13 +46,13 @@ "amqplib": "^0.8.0", "base-64": "^1.0.0", "bitbucket": "^2.7.0", - "body-parser": "^1.18.2", - "cookie": "^0.4.1", - "cookie-parser": "^1.4.5", + "body-parser": "^1.19.2", + "cookie": "^0.4.2", + "cookie-parser": "^1.4.6", "cors": "^2.8.4", "deep-equal": "^2.0.5", "deepmerge": "^4.2.2", - "express": "^4.16.1", + "express": "^4.17.3", "express-http-proxy": "^1.0.7", "express-mysql-session": "^2.1.0", "express-session": "^1.15.6", @@ -65,16 +65,16 @@ "lodash.debounce": "^4.0.8", "longjohn": "^0.2.12", "minio": "^7.0.12", - "node-fetch": "^2.6.1", + "node-fetch": "^2.6.7", "opentracing": "^0.14.4", - "p-throttle": "^3.0.0", + "p-throttle": "^4.1.1", "passport": "^0.4.1", "passport-dummy": "^0.0.1", "passport-gitlab2": "5.0.0", "passport-http": "^0.3.0", "probot": "12.1.1", "prom-client": "^13.2.0", - "rate-limiter-flexible": "^2.2.1", + "rate-limiter-flexible": "^2.3.6", "reflect-metadata": "^0.1.10", "swot-js": "^1.0.3", "uuid": "^8.3.2", @@ -103,7 +103,7 @@ "@types/minio": "^7.0.10", "@types/mocha": "^2.2.45", "@types/node": "^16.11.0", - "@types/node-fetch": "^2.5.12", + "@types/node-fetch": "^2.6.1", "@types/passport": "^1.0.7", "@types/passport-oauth2": "^1.4.11", "@types/uuid": "^8.3.1", diff --git a/components/server/src/auth/generic-auth-provider.ts b/components/server/src/auth/generic-auth-provider.ts index e66e5f58d81cf0..6052c3e2dfd2fe 100644 --- a/components/server/src/auth/generic-auth-provider.ts +++ b/components/server/src/auth/generic-auth-provider.ts @@ -194,6 +194,7 @@ export class GenericAuthProvider implements AuthProvider { this.readAuthUserSetup = async (accessToken: string, tokenResponse: object) => { try { const fetchResult = await fetch(configURL, { + timeout: 10000, method: "POST", headers: { "Accept": "application/json", diff --git a/components/server/src/bitbucket-server/bitbucket-server-api.ts b/components/server/src/bitbucket-server/bitbucket-server-api.ts index b5835f8421d26a..b12fb41e1e993e 100644 --- a/components/server/src/bitbucket-server/bitbucket-server-api.ts +++ b/components/server/src/bitbucket-server/bitbucket-server-api.ts @@ -20,6 +20,7 @@ export class BitbucketServerApi { const token = (await this.tokenHelper.getTokenWithScopes(user, [])).value; const fullUrl = `${this.baseUrl}${urlPath}`; const response = await fetch(fullUrl, { + timeout: 10000, method: 'GET', headers: { 'Content-Type': 'application/json', diff --git a/components/server/src/bitbucket-server/bitbucket-server-auth-provider.ts b/components/server/src/bitbucket-server/bitbucket-server-auth-provider.ts index a164f50f00fde9..5f1b67293f250e 100644 --- a/components/server/src/bitbucket-server/bitbucket-server-auth-provider.ts +++ b/components/server/src/bitbucket-server/bitbucket-server-auth-provider.ts @@ -56,6 +56,7 @@ export class BitbucketServerAuthProvider extends GenericAuthProvider { protected readAuthUserSetup = async (accessToken: string, _tokenResponse: object) => { try { const fetchResult = await fetch(`https://${this.params.host}/plugins/servlet/applinks/whoami`, { + timeout: 10000, headers: { "Authorization": `Bearer ${accessToken}`, } diff --git a/components/server/src/code-sync/code-sync-service.ts b/components/server/src/code-sync/code-sync-service.ts index 001df19ab2b785..690a02f0e145ed 100644 --- a/components/server/src/code-sync/code-sync-service.ts +++ b/components/server/src/code-sync/code-sync-service.ts @@ -191,6 +191,7 @@ export class CodeSyncService { const blobsClient = this.blobsProvider.getDefault(); const urlResponse = await util.promisify(blobsClient.downloadUrl.bind(blobsClient))(request); const response = await fetch(urlResponse.getUrl(), { + timeout: 10000, headers: { 'content-type': contentType } @@ -241,6 +242,7 @@ export class CodeSyncService { const url = urlResponse.getUrl(); const content = req.body as string; const response = await fetch(url, { + timeout: 10000, method: 'PUT', body: content, headers: { diff --git a/components/server/src/github/api.ts b/components/server/src/github/api.ts index ef4bcd1853a542..b52c84ce986476 100644 --- a/components/server/src/github/api.ts +++ b/components/server/src/github/api.ts @@ -46,6 +46,7 @@ export class GitHubGraphQlEndpoint { `https://raw.githubusercontent.com/${org}/${name}/${commitish}/${path}` : `https://${host}/${org}/${name}/raw/${commitish}/${path}`; const response = await fetch(urlString, { + timeout: 15000, method: 'GET', headers: { 'Content-Type': 'application/json', @@ -82,6 +83,7 @@ export class GitHubGraphQlEndpoint { async runQueryWithToken(token: string, request: object): Promise> { const response = await fetch(this.baseURLv4, { + timeout: 15000, method: 'POST', body: JSON.stringify(request), headers: { @@ -92,7 +94,7 @@ export class GitHubGraphQlEndpoint { if (!response.ok) { throw Error(response.statusText); } - const result: QueryResult = await response.json(); + const result = await response.json() as QueryResult; if (!result.data && result.errors) { const error = new Error(JSON.stringify({ request, diff --git a/components/server/src/gitlab/gitlab-token-validator.ts b/components/server/src/gitlab/gitlab-token-validator.ts index 326a7b9ba95d88..b15061b1205fc9 100644 --- a/components/server/src/gitlab/gitlab-token-validator.ts +++ b/components/server/src/gitlab/gitlab-token-validator.ts @@ -22,6 +22,7 @@ export class GitLabTokenValidator implements IGitTokenValidator { query: `query {project(fullPath: "${repoFullName}") { visibility, userPermissions{ pushCode } } } ` }; const response = await fetch(`https://${host}/api/graphql`, { + timeout: 5000, method: "POST", body: JSON.stringify(request), headers: { @@ -31,7 +32,7 @@ export class GitLabTokenValidator implements IGitTokenValidator { }); if (response.ok) { found = true; - const json = await response.json(); + const json = await response.json() as any; const project = json.data && json.data.project; if (project) { isPrivateRepo = project.visibility !== "public"; diff --git a/components/server/src/init.ts b/components/server/src/init.ts index 3f3ccd003fc00d..e1bd58e035a132 100644 --- a/components/server/src/init.ts +++ b/components/server/src/init.ts @@ -77,7 +77,7 @@ process.on("SIGUSR1", () => { if (!err) { const filename = path.join(os.tmpdir(), Date.now() + '.cpuprofile'); console.log('preparing cpuprofile: ' + filename); - fs.promises.writeFile(filename, JSON.stringify(profile)); + fs.promises.writeFile(filename, JSON.stringify(profile)).catch(err => console.error("error writing cpuprofile", err)); } else { console.error('failed to cpuprofile: ', err); } diff --git a/components/server/src/workspace/config-provider.ts b/components/server/src/workspace/config-provider.ts index 12c8cbbcdc2911..6e4554e75e2efb 100644 --- a/components/server/src/workspace/config-provider.ts +++ b/components/server/src/workspace/config-provider.ts @@ -312,7 +312,10 @@ export class ConfigProvider { try { const url = `https://raw.githubusercontent.com/gitpod-io/definitely-gp/master/${filePath}`; - const response = await fetch(url, { method: 'GET' }); + const response = await fetch(url, { + timeout: 10000, + method: 'GET', + }); let content; if (response.ok) { try { diff --git a/components/ws-manager-bridge/package.json b/components/ws-manager-bridge/package.json index 71958973ec1aa4..a1ba86a0f13c38 100644 --- a/components/ws-manager-bridge/package.json +++ b/components/ws-manager-bridge/package.json @@ -29,7 +29,7 @@ "@gitpod/ws-manager": "0.1.5", "@gitpod/ws-manager-bridge-api": "0.1.5", "amqplib": "^0.8.0", - "express": "^4.17.1", + "express": "^4.17.3", "inversify": "^5.0.1", "prom-client": "^13.2.0", "reflect-metadata": "^0.1.13" diff --git a/yarn.lock b/yarn.lock index 31b9133750661a..9cc856d197c0b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2966,10 +2966,10 @@ dependencies: "@types/node" "*" -"@types/node-fetch@^2.5.0", "@types/node-fetch@^2.5.12": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== +"@types/node-fetch@^2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" + integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== dependencies: "@types/node" "*" form-data "^3.0.0" @@ -3735,6 +3735,14 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -4696,7 +4704,7 @@ bn.js@^5.0.0, bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== -body-parser@1.19.0, body-parser@^1.18.2, body-parser@^1.19.0: +body-parser@1.19.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -4712,6 +4720,22 @@ body-parser@1.19.0, body-parser@^1.18.2, body-parser@^1.19.0: raw-body "2.4.0" type-is "~1.6.17" +body-parser@1.19.2, body-parser@^1.19.2: + version "1.19.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.9.7" + raw-body "2.4.3" + type-is "~1.6.18" + bonjour@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" @@ -5002,6 +5026,11 @@ bytes@3.1.0, bytes@^3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" @@ -5845,6 +5874,13 @@ content-disposition@0.5.3: dependencies: safe-buffer "5.1.2" +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" @@ -5869,12 +5905,12 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -cookie-parser@^1.4.5: - version "1.4.5" - resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.5.tgz#3e572d4b7c0c80f9c61daf604e4336831b5d1d49" - integrity sha512-f13bPUj/gG/5mDr+xLmSxxDsB9DQiTIfhJS/sqjrmfAWiAN+x2O4i/XguTL9yDZ+/IFDanJ+5x7hC4CXT9Tdzw== +cookie-parser@^1.4.6: + version "1.4.6" + resolved "https://registry.yarnpkg.com/cookie-parser/-/cookie-parser-1.4.6.tgz#3ac3a7d35a7a03bbc7e365073a26074824214594" + integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== dependencies: - cookie "0.4.0" + cookie "0.4.1" cookie-signature "1.0.6" cookie-signature@1.0.6: @@ -5892,6 +5928,11 @@ cookie@0.4.1, cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== +cookie@0.4.2, cookie@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + cookiejar@^2.1.0, cookiejar@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" @@ -7904,7 +7945,7 @@ express-session@1.17.2, express-session@^1.15.6: safe-buffer "5.2.1" uid-safe "~2.1.5" -express@^4.16.1, express@^4.17.1: +express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -7940,6 +7981,42 @@ express@^4.16.1, express@^4.17.1: utils-merge "1.0.1" vary "~1.1.2" +express@^4.17.3: + version "4.17.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.19.2" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.4.2" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.9.7" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + ext@^1.1.2: version "1.6.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" @@ -9217,6 +9294,17 @@ http-errors@1.7.3, http-errors@~1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + http-errors@~1.6.2: version "1.6.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" @@ -11618,7 +11706,7 @@ mime-types@^2.0.8, mime-types@^2.1.12, mime-types@^2.1.14, mime-types@^2.1.27, m dependencies: mime-db "1.50.0" -mime-types@~2.1.19: +mime-types@~2.1.19, mime-types@~2.1.34: version "2.1.34" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== @@ -11926,7 +12014,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: +ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -12016,6 +12104,11 @@ negotiator@0.6.2, negotiator@^0.6.2: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -12046,20 +12139,13 @@ node-emoji@^1.11.0: dependencies: lodash "^4.17.21" -node-fetch@^2.1.2: +node-fetch@^2.1.2, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.5: - version "2.6.6" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" - integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== - dependencies: - whatwg-url "^5.0.0" - node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -12657,10 +12743,10 @@ p-retry@^3.0.1: dependencies: retry "^0.12.0" -p-throttle@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-throttle/-/p-throttle-3.1.0.tgz#dee34ce4e77d7cc2dfdc1fea0daedccc64147214" - integrity sha512-rLo81NXBihs3GJQhq89IXa0Egj/sbW1zW8/qnyadOwUhIUrZSUvyGdQ46ISRKELFBkVvmMJ4JUqWki4oAh30Qw== +p-throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/p-throttle/-/p-throttle-4.1.1.tgz#80b1fbd358af40a8bfa1667f9dc8b72b714ad692" + integrity sha512-TuU8Ato+pRTPJoDzYD4s7ocJYcNSEZRvlxoq3hcPI2kZDZ49IQ1Wkj7/gDJc3X7XiEAAvRGtDzdXJI0tC3IL1g== p-try@^1.0.0: version "1.0.0" @@ -14275,7 +14361,7 @@ protobufjs@^6.10.0: "@types/node" ">=13.7.0" long "^4.0.0" -proxy-addr@~2.0.5: +proxy-addr@~2.0.5, proxy-addr@~2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== @@ -14391,6 +14477,11 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@6.9.7: + version "6.9.7" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== + qs@^6.5.1: version "6.10.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" @@ -14506,10 +14597,10 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -rate-limiter-flexible@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/rate-limiter-flexible/-/rate-limiter-flexible-2.3.3.tgz#1f119a2657eff037f1939aa3c17e6453822d635b" - integrity sha512-1LYLzApGP5snBf/VP/PEYpWRnPiCYlPA7nqXq9VawQCFZ9Uc2pYgeOjeyNuoNRO+tUzOQuEA5IISaltbiMU2tg== +rate-limiter-flexible@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/rate-limiter-flexible/-/rate-limiter-flexible-2.3.6.tgz#b1a2549dca91069c8a33d57c08a27262c0356c60" + integrity sha512-8DVFOe89rreyut/vzwBI7vgXJynyYoYnH5XogtAKs0F/neAbCTTglXxSJ7fZeZamcFXZDvMidCBvps4KM+1srw== raw-body@2.4.0: version "2.4.0" @@ -14521,6 +14612,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== + dependencies: + bytes "3.1.2" + http-errors "1.8.1" + iconv-lite "0.4.24" + unpipe "1.0.0" + raw-body@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" @@ -15478,6 +15579,25 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "1.8.1" + mime "1.6.0" + ms "2.1.3" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + serialize-javascript@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" @@ -15522,6 +15642,16 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.2" + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -15552,6 +15682,11 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -16759,6 +16894,11 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"