From dd7a9635a6c6a3084e3a9411d73fa458508f42e4 Mon Sep 17 00:00:00 2001 From: Timothee Legros <62490329+timolegros@users.noreply.github.com> Date: Fri, 5 Jan 2024 22:47:58 +0100 Subject: [PATCH] Fix prerendering for Googlebot (#6170) * update + set up prerender * yarn.lock * use chromium * yarn.lock * revert chromium + setup prerender.io * remove chromium * try using 127.0.0.1 * prerender in-memory cache * prerender debugging log * prerender token * prerender token * yarn.lock * prerender only when NODE_ENV=production * prerender only on commonwealth.im * yarn.lock --- packages/commonwealth/package.json | 3 +- packages/commonwealth/server.ts | 17 +- packages/commonwealth/server/config.ts | 2 + .../server/scripts/setupPrerenderService.ts | 35 --- yarn.lock | 221 ++---------------- 5 files changed, 33 insertions(+), 245 deletions(-) delete mode 100644 packages/commonwealth/server/scripts/setupPrerenderService.ts diff --git a/packages/commonwealth/package.json b/packages/commonwealth/package.json index 9d3bab2f1c0..c410228a59a 100644 --- a/packages/commonwealth/package.json +++ b/packages/commonwealth/package.json @@ -180,8 +180,7 @@ "passport-jwt": "^4.0.0", "passport-magic": "^1.0.0", "path-browserify": "^1.0.1", - "prerender": "^5.6.0", - "prerender-node": "^3.2.5", + "prerender-node": "^3.7.0", "process": "^0.11.10", "quill": "^1.3.7", "quill-image-drop-and-paste": "^1.0.4", diff --git a/packages/commonwealth/server.ts b/packages/commonwealth/server.ts index a6b9c032662..4f5b799c011 100644 --- a/packages/commonwealth/server.ts +++ b/packages/commonwealth/server.ts @@ -28,10 +28,12 @@ import * as v8 from 'v8'; import setupErrorHandlers from '../common-common/src/scripts/setupErrorHandlers'; import { DATABASE_CLEAN_HOUR, + PRERENDER_TOKEN, RABBITMQ_URI, REDIS_URL, ROLLBAR_ENV, ROLLBAR_SERVER_TOKEN, + SERVER_URL, SESSION_SECRET, TBC_BALANCE_TTL_SECONDS, VULTR_IP, @@ -45,7 +47,6 @@ import setupAPI from './server/routing/router'; import { sendBatchedNotificationEmails } from './server/scripts/emails'; import setupAppRoutes from './server/scripts/setupAppRoutes'; import expressStatsdInit from './server/scripts/setupExpressStats'; -import setupPrerenderServer from './server/scripts/setupPrerenderService'; import setupServer from './server/scripts/setupServer'; import BanCache from './server/util/banCheckCache'; import setupCosmosProxy from './server/util/cosmosProxy'; @@ -103,7 +104,6 @@ async function main() { process.exit(rc); } - const WITH_PRERENDER = process.env.WITH_PRERENDER; const NO_PRERENDER = process.env.NO_PRERENDER || NO_CLIENT_SERVER; const SequelizeStore = SessionSequelizeStore(session.Store); @@ -196,7 +196,10 @@ async function main() { app.use(sessionParser); app.use(passport.initialize()); app.use(passport.session()); - app.use(prerenderNode.set('prerenderServiceUrl', 'http://localhost:3000')); + + if (!DEV && !NO_PRERENDER && SERVER_URL.includes('commonwealth.im')) { + app.use(prerenderNode.set('prerenderToken', PRERENDER_TOKEN)); + } }; const templateFile = (() => { @@ -209,14 +212,6 @@ async function main() { const sendFile = (res) => res.sendFile(`${__dirname}/build/index.html`); - // Only run prerender in DEV environment if the WITH_PRERENDER flag is provided. - // On the other hand, run prerender by default on production. - if (DEV) { - if (WITH_PRERENDER) setupPrerenderServer(); - } else { - if (!NO_PRERENDER) setupPrerenderServer(); - } - setupMiddleware(); setupPassport(models); diff --git a/packages/commonwealth/server/config.ts b/packages/commonwealth/server/config.ts index 053a5438ccd..0e94110ad1a 100644 --- a/packages/commonwealth/server/config.ts +++ b/packages/commonwealth/server/config.ts @@ -131,3 +131,5 @@ export const MEMBERSHIP_REFRESH_TTL_SECONDS = process.env export const TBC_BALANCE_TTL_SECONDS = process.env.TBC_BALANCE_TTL_SECONDS ? parseInt(process.env.TBC_BALANCE_TTL_SECONDS, 10) : 300; + +export const PRERENDER_TOKEN = process.env.PRERENDER_TOKEN; diff --git a/packages/commonwealth/server/scripts/setupPrerenderService.ts b/packages/commonwealth/server/scripts/setupPrerenderService.ts deleted file mode 100644 index a16fbe29c52..00000000000 --- a/packages/commonwealth/server/scripts/setupPrerenderService.ts +++ /dev/null @@ -1,35 +0,0 @@ -import fs from 'fs'; -import prerender from 'prerender'; - -const run = (server) => { - server.use(prerender.sendPrerenderHeader()); - // server.use(prerender.blockResources()); - server.use(prerender.removeScriptTags()); - server.use(prerender.httpHeaders()); - - server.start(); -}; - -const setupPrerenderServer = () => { - const isMac = process.platform === 'darwin'; - const isLinux = process.platform === 'linux'; - if (isLinux) { - if (fs.existsSync('/app/.apt/usr/bin/google-chrome')) { - const server = prerender({ - chromeLocation: '/app/.apt/usr/bin/google-chrome', - port: 3000, - }); - return run(server); - } - } else if (isMac) { - const server = prerender({ - chromeLocation: - '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', - port: 3000, - }); - return run(server); - } - return run(prerender()); -}; - -export default setupPrerenderServer; diff --git a/yarn.lock b/yarn.lock index ab38bae37e5..4783326a9db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8044,22 +8044,6 @@ bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.18.3, body-parser@~1.18.3: - version "1.18.3" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz" - integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - body-parser@1.19.0, body-parser@^1.16.0: version "1.19.0" resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz" @@ -8714,14 +8698,6 @@ chromatic@^6.17.4: "@types/webpack-env" "^1.17.0" snyk-nodejs-lockfile-parser "^1.49.0" -chrome-remote-interface@~0.25.7: - version "0.25.7" - resolved "https://registry.npmjs.org/chrome-remote-interface/-/chrome-remote-interface-0.25.7.tgz" - integrity sha512-6zI6LbR2IiGmduFZededaerEr9hHXabxT/L+fRrdq65a0CfyLMzpq0BKuZiqN0Upqcacsb6q2POj7fmobwBsEA== - dependencies: - commander "2.11.x" - ws "3.3.x" - chrome-trace-event@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz" @@ -9023,11 +8999,6 @@ command-line-args@^4.0.7: find-replace "^1.0.3" typical "^2.6.1" -commander@2.11.x: - version "2.11.0" - resolved "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz" - integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== - commander@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" @@ -9080,7 +9051,7 @@ compressible@~2.0.16: dependencies: mime-db ">= 1.43.0 < 2" -compression@^1.7.4, compression@~1.7.3: +compression@^1.7.4: version "1.7.4" resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== @@ -9159,11 +9130,6 @@ constants-browserify@^1.0.0: resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - content-disposition@0.5.3: version "0.5.3" resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" @@ -11856,42 +11822,6 @@ express@^4.17.3, express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" -express@~4.16.3: - version "4.16.4" - resolved "https://registry.npmjs.org/express/-/express-4.16.4.tgz" - integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== - dependencies: - accepts "~1.3.5" - array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" - content-type "~1.0.4" - cookie "0.3.1" - 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.1" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" - safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" - utils-merge "1.0.1" - vary "~1.1.2" - ext@^1.1.2: version "1.4.0" resolved "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz" @@ -12094,19 +12024,6 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" - unpipe "~1.0.0" - finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -13186,11 +13103,6 @@ he@1.2.0, he@^1.2.0: resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -he@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/he/-/he-1.1.1.tgz" - integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= - hex-color-regex@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz" @@ -13354,16 +13266,6 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@1.7.2: version "1.7.2" resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz" @@ -13467,13 +13369,6 @@ husky@^8.0.0: resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -16082,11 +15977,6 @@ mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.34: dependencies: mime-db "1.52.0" -mime@1.4.1: - version "1.4.1" - resolved "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" @@ -18718,24 +18608,10 @@ prepend-http@^1.0.1: resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= -prerender-node@^3.2.5: - version "3.2.5" - resolved "https://registry.npmjs.org/prerender-node/-/prerender-node-3.2.5.tgz" - integrity sha512-8vV2kXkYp82mgOqNbcQUBEzVEreB0khNxsASiHVRLfK9PR60mHg2m33QHe/TcOrr0XRsBFYK4j8FgmLMah9ZXw== - dependencies: - request "^2.88.0" - -prerender@^5.6.0: - version "5.6.0" - resolved "https://registry.npmjs.org/prerender/-/prerender-5.6.0.tgz" - integrity sha512-QEV79PHs4t0Pm+oiEOznRJHJrYQq8kjy/UzmvJWxGccWQERpvqeDgqnpG5E3NcGGAqhqrSCn45YTWpAxRv5bNA== - dependencies: - body-parser "~1.18.3" - chrome-remote-interface "~0.25.7" - compression "~1.7.3" - express "~4.16.3" - he "~1.1.1" - valid-url "~1.0.9" +prerender-node@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/prerender-node/-/prerender-node-3.7.0.tgz#30de48138b52ceb2f70da7cf0401f2c3a05ec99f" + integrity sha512-FuhXsH0RIjxMbR/K/+S6lpnFu+lgkYd7Vy9qTob2Tp7h7p7n1NYmslPpCEz8xLYwIMgbU9vrTOoxXy5/gRY8mA== prettier-plugin-organize-imports@^3.2.3: version "3.2.3" @@ -18957,7 +18833,7 @@ protons-runtime@^5.0.0: protobufjs "^7.0.0" uint8arraylist "^2.4.3" -proxy-addr@~2.0.4, proxy-addr@~2.0.5: +proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz" integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== @@ -19092,11 +18968,6 @@ qs@6.11.0, qs@^6.10.3, qs@^6.7.0: dependencies: side-channel "^1.0.4" -qs@6.5.2, qs@~6.5.2: - version "6.5.2" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - qs@6.7.0: version "6.7.0" resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz" @@ -19131,6 +19002,11 @@ qs@^6.9.4: dependencies: side-channel "^1.0.4" +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + query-string@6.13.5: version "6.13.5" resolved "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz" @@ -19304,7 +19180,7 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: +range-parser@^1.2.0, range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== @@ -19349,16 +19225,6 @@ rate-limiter-flexible@^2.3.11, rate-limiter-flexible@^2.3.9: resolved "https://registry.yarnpkg.com/rate-limiter-flexible/-/rate-limiter-flexible-2.4.2.tgz#2a219cc473f015142fd8fb599371223d730decbd" integrity sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw== -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - raw-body@2.4.0: version "2.4.0" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz" @@ -20379,25 +20245,6 @@ semver@^7.5.1, semver@^7.5.4: dependencies: lru-cache "^6.0.0" -send@0.16.2: - version "0.16.2" - resolved "https://registry.npmjs.org/send/-/send-0.16.2.tgz" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== - 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.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - send@0.17.1: version "0.17.1" resolved "https://registry.npmjs.org/send/-/send-0.17.1.tgz" @@ -20521,16 +20368,6 @@ serve-favicon@^2.5.0: parseurl "~1.3.2" safe-buffer "5.1.1" -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - serve-static@1.14.1: version "1.14.1" resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz" @@ -20581,11 +20418,6 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" @@ -21073,16 +20905,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - std-env@^3.4.3: version "3.6.0" resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.6.0.tgz#94807562bddc68fa90f2e02c5fd5b6865bb4e98e" @@ -22465,7 +22292,7 @@ type-fest@^2.12.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== -type-is@^1.6.15, type-is@~1.6.16, type-is@~1.6.17, type-is@~1.6.18: +type-is@^1.6.15, type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -23086,7 +22913,7 @@ v8-to-istanbul@^9.0.0: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" -valid-url@^1.0.9, valid-url@~1.0.9: +valid-url@^1.0.9: version "1.0.9" resolved "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz" integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= @@ -23844,15 +23671,6 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@3.3.x, ws@^3.0.0: - version "3.3.3" - resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" @@ -23863,6 +23681,15 @@ ws@7.5.3, ws@^7, ws@^7.3.1: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + ws@^7.4.5, ws@^7.4.6: version "7.5.5" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881"