diff --git a/package.json b/package.json index 525b3d73..c6233f03 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "strict-event-emitter": "^0.2.8" }, "devDependencies": { - "@chainsafe/eslint-config": "^1.0.0", + "@chainsafe/eslint-config": "^1.1.0", "@ganache/console.log": "^0.2.0", "@jest/types": "^27.1.1", "@metamask/snap-types": "^0.23.0", @@ -76,7 +76,7 @@ "mocha": "^10.2.0", "playwright": "^1.29.2", "prettier": "^2.2.1", - "puppeteer": "14.0.0", + "puppeteer": "19.6.3", "solc": "0.5.2", "ts-node": "^10.9.1", "typescript": "~4.7", @@ -85,7 +85,7 @@ }, "peerDependencies": { "playwright": ">=1", - "puppeteer": ">13" + "puppeteer": ">19" }, "peerDependenciesMeta": { "puppeteer": { diff --git a/src/element.ts b/src/element.ts index f3ff5bb7..f8791f03 100644 --- a/src/element.ts +++ b/src/element.ts @@ -1,6 +1,6 @@ export interface DappeteerElementHandle< Source = unknown, - Element = HTMLElement + Element extends Node = HTMLElement > { $$(selector: string): Promise; evaluate(fn: (e: Element) => void | Promise): Promise; diff --git a/src/page.ts b/src/page.ts index f4df35a4..b8ab52d2 100644 --- a/src/page.ts +++ b/src/page.ts @@ -69,8 +69,8 @@ export interface DappeteerPage

{ waitForTimeout(timeout: number): Promise; - evaluate( - evaluateFn: (params: Unboxed) => Result, + evaluate( + evaluateFn: (params: Params) => Result | string, params?: Params ): Promise; diff --git a/src/playwright/page.ts b/src/playwright/page.ts index 2a062713..544d43a7 100644 --- a/src/playwright/page.ts +++ b/src/playwright/page.ts @@ -119,7 +119,7 @@ export class DPlaywrightPage implements DappeteerPage { } evaluate( - evaluateFn: (params?: Unboxed) => Result | Promise, + evaluateFn: (params?: Params) => Result | string, params?: Params ): Promise { //@ts-expect-error diff --git a/src/puppeteer/elements.ts b/src/puppeteer/elements.ts index 2238257c..feee07a4 100644 --- a/src/puppeteer/elements.ts +++ b/src/puppeteer/elements.ts @@ -2,13 +2,11 @@ import { ElementHandle } from "puppeteer"; import { DappeteerElementHandle } from "../element"; export class DPuppeteerElementHandle - implements DappeteerElementHandle> + implements DappeteerElementHandle> { - constructor(protected element: ElementHandle) {} + constructor(protected element: ElementHandle) {} - async $$( - selector: string - ): Promise[]> { + async $$(selector: string): Promise { return (await this.element.$$(selector)).map( (e) => new DPuppeteerElementHandle(e as ElementHandle) ); @@ -19,10 +17,10 @@ export class DPuppeteerElementHandle } evaluate(fn: (e: HTMLElement) => void | Promise): Promise { - return this.element.evaluate(async (e) => await fn(e)); + return this.element.evaluate(async (e) => await fn(e as HTMLElement)); } getSource(): ElementHandle { - return this.element; + return this.element as ElementHandle; } async type(value: string): Promise { diff --git a/src/puppeteer/page.ts b/src/puppeteer/page.ts index 58705fda..b05fc635 100644 --- a/src/puppeteer/page.ts +++ b/src/puppeteer/page.ts @@ -1,7 +1,14 @@ -import { Browser, ElementHandle, Page, WaitForOptions } from "puppeteer"; +import { + Browser, + ElementHandle, + EvaluateFunc, + NodeFor, + Page, + WaitForOptions, +} from "puppeteer"; import { DappeteerBrowser } from "../browser"; import { DappeteerElementHandle } from "../element"; -import { DappeteerPage, Response, Serializable, Unboxed } from "../page"; +import { DappeteerPage, Response, Serializable } from "../page"; import { DPuppeteerElementHandle } from "./elements"; export class DPupeteerPage implements DappeteerPage { @@ -21,11 +28,15 @@ export class DPupeteerPage implements DappeteerPage { return new DPuppeteerElementHandle(await this.page.$(selector)); } - $eval( - selector: string, - evalFn: (e: HTMLElement) => T | Promise - ): Promise { - return this.page.$eval(selector, evalFn) as Promise; + $eval< + Selector extends string, + Params extends unknown[], + Func extends EvaluateFunc<[ElementHandle>, ...Params]> + >(selector: Selector, evalFn: Func): Promise { + return this.page.$eval( + selector, + evalFn + ) as Promise; } $$eval( @@ -102,12 +113,9 @@ export class DPupeteerPage implements DappeteerPage { async waitForSelector( selector: string, opts?: Partial<{ visible: boolean; timeout: number; hidden: boolean }> - ): Promise>> { + ): Promise>> { return new DPuppeteerElementHandle( - (await this.page.waitForSelector( - selector, - opts - )) as ElementHandle + await this.page.waitForSelector(selector, opts) ); } @@ -124,9 +132,9 @@ export class DPupeteerPage implements DappeteerPage { async waitForXPath( xpath: string, opts?: Partial<{ visible: boolean; timeout: number }> - ): Promise> { + ): Promise>> { return new DPuppeteerElementHandle( - await this.page.waitForXPath(xpath, opts) + (await this.page.waitForXPath(xpath, opts)) as ElementHandle ); } @@ -134,18 +142,15 @@ export class DPupeteerPage implements DappeteerPage { return this.page.waitForTimeout(timeout); } - evaluate( - evaluateFn: (params?: Unboxed) => Result | Promise, + evaluate( + evaluateFn: (params?: Params) => Result | string, params?: Params ): Promise { - return this.page.evaluate( - evaluateFn, - params - ) as Promise; + return this.page.evaluate(evaluateFn, params) as Promise; } async waitForFunction( - pageFunction: (params?: Unboxed) => void | string, + pageFunction: () => {} | string, params?: Params ): Promise { await this.page.waitForFunction(pageFunction, {}, params); diff --git a/src/setup/puppeteer.ts b/src/setup/puppeteer.ts index 5b1a0c94..80dafc15 100644 --- a/src/setup/puppeteer.ts +++ b/src/setup/puppeteer.ts @@ -18,7 +18,7 @@ export async function launchPuppeteer( `--disable-extensions-except=${metamaskPath}`, `--load-extension=${metamaskPath}`, ...(options.puppeteerOptions?.args || []), - ...(options.headless ? ["--headless=chrome"] : []), + ...(options.headless ? ["--headless=new"] : []), ], }); const { DPuppeteerBrowser } = await import("../puppeteer"); diff --git a/src/snap/invokeSnap.ts b/src/snap/invokeSnap.ts index 29403797..6fa410a5 100644 --- a/src/snap/invokeSnap.ts +++ b/src/snap/invokeSnap.ts @@ -1,4 +1,4 @@ -import { DappeteerPage, Serializable, Unboxed } from "../page"; +import { DappeteerPage, Serializable } from "../page"; import { flaskOnly, isMetaMaskErrorObject } from "./utils"; export async function invokeSnap< @@ -13,7 +13,7 @@ export async function invokeSnap< flaskOnly(page); const result = await page.evaluate( - async (opts: { snapId: string; method: string; params: Unboxed

}) => { + async (opts: { snapId: string; method: string; params: P }) => { try { return await window.ethereum.request({ method: "wallet_invokeSnap", diff --git a/src/snap/utils.ts b/src/snap/utils.ts index 7f7b1b9c..07ab6e6b 100644 --- a/src/snap/utils.ts +++ b/src/snap/utils.ts @@ -40,7 +40,7 @@ function getWaitingPromise( page: DappeteerPage, selectorOrXpath: string, timeout: number -): Promise> { +): Promise { if (selectorOrXpath.startsWith("//")) { return page.waitForXPath(selectorOrXpath, { timeout }); } else { diff --git a/yarn.lock b/yarn.lock index 8c50fcaf..766d871a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,6 +10,13 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + "@babel/code-frame@^7.12.13": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" @@ -17,13 +24,6 @@ dependencies: "@babel/highlight" "^7.14.5" -"@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.19.3": version "7.19.3" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.19.3.tgz#707b939793f867f5a73b2666e6d9a3396eb03151" @@ -975,10 +975,10 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@chainsafe/eslint-config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@chainsafe/eslint-config/-/eslint-config-1.0.0.tgz#ba6c9c640f1b0aa6892d2b10ecf03480a2183851" - integrity sha512-fGIN3gS9FLQI8PefYxm+hgvv3831IQ6LRHlklzYjwgz9TPusPM7kfwH1qB/tcdqkqqjmuz3hnqJfMiG2x9h6nA== +"@chainsafe/eslint-config@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@chainsafe/eslint-config/-/eslint-config-1.1.0.tgz#78aa36b435e583ee8f0ab3752cd3aca54494d575" + integrity sha512-oWt8ur/LoHuJsMWnXivqYaWJ5fGZVpfjpIZbRAPxu8bFaVW/jdkuA5qcNHoMYJeXnCCAo/qpfn6cPGY0g/SNrA== dependencies: "@typescript-eslint/eslint-plugin" "^5.30.0" "@typescript-eslint/parser" "^5.30.0" @@ -2622,6 +2622,16 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cosmiconfig@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.0.0.tgz#e9feae014eab580f858f8a0288f38997a7bebe97" + integrity sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ== + dependencies: + import-fresh "^3.2.1" + js-yaml "^4.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + crc-32@^1.2.0: version "1.2.2" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" @@ -2821,10 +2831,10 @@ detective@^5.2.0: defined "^1.0.0" minimist "^1.2.6" -devtools-protocol@0.0.982423: - version "0.0.982423" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.982423.tgz#39ac3791d4c5b90ebb416d4384663b7b0cc44154" - integrity sha512-FnVW2nDbjGNw1uD/JRC+9U5768W7e1TfUwqbDTcSsAu1jXFjITSX8w3rkW5FEpHRMPPGpvNSmO1pOpqByiWscA== +devtools-protocol@0.0.1082910: + version "0.0.1082910" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1082910.tgz#d79490dc66ef23eb17a24423c9ce5ce661714a91" + integrity sha512-RqoZ2GmqaNxyx+99L/RemY5CkwG9D0WEfOKxekwCRXOGrDCep62ngezEJUVMq6rISYQ+085fJnWDQqGHlxVNww== diff@5.0.0: version "5.0.0" @@ -2913,6 +2923,13 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: dependencies: once "^1.4.0" +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + es-abstract@^1.18.0-next.1: version "1.18.0-next.2" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" @@ -3355,14 +3372,6 @@ find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -3823,6 +3832,11 @@ is-arguments@^1.0.4: dependencies: call-bind "^1.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -4280,6 +4294,11 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -4288,13 +4307,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -4760,13 +4772,6 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" @@ -4781,13 +4786,6 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -4800,11 +4798,6 @@ p-try@^1.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -4835,6 +4828,16 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + path-browserify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" @@ -4926,13 +4929,6 @@ picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -pkg-dir@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - playwright-core@1.29.2: version "1.29.2" resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.29.2.tgz#2e8347e7e8522409f22b244e600e703b64022406" @@ -5039,23 +5035,32 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer@14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-14.0.0.tgz#829e97b70fa81746bb88ec2d72f11a7429cc84ab" - integrity sha512-Aj/cySGBMWpUYEWV0YOcwyhq5lOxuuiGScgdj/OvslAm/ydoywiI8OzAIXT4HzKmNTmzm/fKKHHtcsQa/fFgdw== +puppeteer-core@19.6.3: + version "19.6.3" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-19.6.3.tgz#e3334fbb4ccb2c1ca6f4597e2f082de5a80599da" + integrity sha512-8MbhioSlkDaHkmolpQf9Z7ui7jplFfOFTnN8d5kPsCazRRTNIH6/bVxPskn0v5Gh9oqOBlknw0eHH0/OBQAxpQ== dependencies: cross-fetch "3.1.5" debug "4.3.4" - devtools-protocol "0.0.982423" + devtools-protocol "0.0.1082910" extract-zip "2.0.1" https-proxy-agent "5.0.1" - pkg-dir "4.2.0" - progress "2.0.3" proxy-from-env "1.1.0" rimraf "3.0.2" tar-fs "2.1.1" unbzip2-stream "1.4.3" - ws "8.6.0" + ws "8.11.0" + +puppeteer@19.6.3: + version "19.6.3" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-19.6.3.tgz#4edc7ea87f7e7e7b2885395326a6c9e5a222a10b" + integrity sha512-K03xTtGDwS6cBXX/EoqoZxglCUKcX2SLIl92fMnGMRjYpPGXoAV2yKEh3QXmXzKqfZXd8TxjjFww+tEttWv8kw== + dependencies: + cosmiconfig "8.0.0" + https-proxy-agent "5.0.1" + progress "2.0.3" + proxy-from-env "1.1.0" + puppeteer-core "19.6.3" querystring-es3@~0.2.0: version "0.2.1" @@ -6357,12 +6362,7 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -ws@8.6.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" - integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== - -ws@^8.8.1: +ws@8.11.0, ws@^8.8.1: version "8.11.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==