diff --git a/package.json b/package.json index 3f9ed39c1ab..197252fb3af 100644 --- a/package.json +++ b/package.json @@ -149,7 +149,7 @@ "pify": "3.0.0", "pino": "8.6.1", "protobufjs": "7.2.4", - "proxy-agent": "5.0.0", + "proxy-agent": "6.3.0", "qrcode-generator": "1.4.4", "quill": "1.3.7", "quill-delta": "4.0.1", diff --git a/patches/proxy-agent+6.3.0.patch b/patches/proxy-agent+6.3.0.patch new file mode 100644 index 00000000000..eec8d0f0e07 --- /dev/null +++ b/patches/proxy-agent+6.3.0.patch @@ -0,0 +1,12 @@ +diff --git a/node_modules/proxy-agent/dist/index.js b/node_modules/proxy-agent/dist/index.js +index 885d22a..2930652 100644 +--- a/node_modules/proxy-agent/dist/index.js ++++ b/node_modules/proxy-agent/dist/index.js +@@ -29,6 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); + exports.ProxyAgent = exports.proxies = void 0; + const http = __importStar(require("http")); + const https = __importStar(require("https")); ++const { URL } = __importStar(require("url")); + const lru_cache_1 = __importDefault(require("lru-cache")); + const agent_base_1 = require("agent-base"); + const debug_1 = __importDefault(require("debug")); diff --git a/patches/socks-proxy-agent+8.0.1.patch b/patches/socks-proxy-agent+8.0.1.patch new file mode 100644 index 00000000000..72d3bb81a40 --- /dev/null +++ b/patches/socks-proxy-agent+8.0.1.patch @@ -0,0 +1,22 @@ +diff --git a/node_modules/socks-proxy-agent/dist/index.js b/node_modules/socks-proxy-agent/dist/index.js +index 8189e01..e2dedf8 100644 +--- a/node_modules/socks-proxy-agent/dist/index.js ++++ b/node_modules/socks-proxy-agent/dist/index.js +@@ -33,6 +33,7 @@ const debug_1 = __importDefault(require("debug")); + const dns = __importStar(require("dns")); + const net = __importStar(require("net")); + const tls = __importStar(require("tls")); ++const { URL } = __importStar(require("url")); + const debug = (0, debug_1.default)('socks-proxy-agent'); + function parseSocksURL(url) { + let lookup = false; +@@ -127,6 +128,9 @@ class SocksProxyAgent extends agent_base_1.Agent { + }, + command: 'connect', + timeout: timeout ?? undefined, ++ socket_options: { ++ lookup: lookupFn, ++ }, + }; + const cleanup = (tlsSocket) => { + req.destroy(); diff --git a/ts/textsecure/SocketManager.ts b/ts/textsecure/SocketManager.ts index 92df88ddb6f..dd00a60e8a3 100644 --- a/ts/textsecure/SocketManager.ts +++ b/ts/textsecure/SocketManager.ts @@ -2,7 +2,6 @@ // SPDX-License-Identifier: AGPL-3.0-only import URL from 'url'; -import ProxyAgent from 'proxy-agent'; import type { RequestInit } from 'node-fetch'; import { Response, Headers } from 'node-fetch'; import type { connection as WebSocket } from 'websocket'; @@ -14,6 +13,7 @@ import { strictAssert } from '../util/assert'; import { BackOff, FIBONACCI_TIMEOUTS } from '../util/BackOff'; import * as durations from '../util/durations'; import { sleep } from '../util/sleep'; +import { createProxyAgent } from '../util/createProxyAgent'; import { SocketStatus } from '../types/SocketStatus'; import * as Errors from '../types/errors'; import * as Bytes from '../Bytes'; @@ -68,7 +68,7 @@ export class SocketManager extends EventListener { private credentials?: WebAPICredentials; - private readonly proxyAgent?: ReturnType; + private readonly proxyAgent?: ReturnType; private status = SocketStatus.CLOSED; @@ -84,7 +84,7 @@ export class SocketManager extends EventListener { super(); if (options.proxyUrl) { - this.proxyAgent = new ProxyAgent(options.proxyUrl); + this.proxyAgent = createProxyAgent(options.proxyUrl); } this.hasStoriesDisabled = options.hasStoriesDisabled; diff --git a/ts/textsecure/WebAPI.ts b/ts/textsecure/WebAPI.ts index ac1830e734d..61cdb2eb786 100644 --- a/ts/textsecure/WebAPI.ts +++ b/ts/textsecure/WebAPI.ts @@ -8,7 +8,6 @@ import type { Response } from 'node-fetch'; import fetch from 'node-fetch'; -import ProxyAgent from 'proxy-agent'; import type { Agent } from 'https'; import { escapeRegExp, isNumber, isString, isObject } from 'lodash'; import PQueue from 'p-queue'; @@ -29,6 +28,7 @@ import { toWebSafeBase64, fromWebSafeBase64 } from '../util/webSafeBase64'; import { getBasicAuth } from '../util/getBasicAuth'; import { isPnpEnabled } from '../util/isPnpEnabled'; import { createHTTPSAgent } from '../util/createHTTPSAgent'; +import { createProxyAgent } from '../util/createProxyAgent'; import type { SocketStatus } from '../types/SocketStatus'; import { VerificationTransport } from '../types/VerificationTransport'; import { toLogFormat } from '../types/errors'; @@ -117,7 +117,7 @@ const GET_ATTACHMENT_CHUNK_TIMEOUT = 10 * durations.SECOND; type AgentCacheType = { [name: string]: { timestamp: number; - agent: ReturnType | Agent; + agent: ReturnType | Agent; }; }; const agents: AgentCacheType = {}; @@ -256,7 +256,7 @@ async function _promiseAjax( } agents[cacheKey] = { agent: proxyUrl - ? new ProxyAgent(proxyUrl) + ? createProxyAgent(proxyUrl) : createHTTPSAgent({ keepAlive: !options.disableSessionResumption, maxCachedSessions: options.disableSessionResumption ? 0 : undefined, @@ -1360,7 +1360,7 @@ export function initialize({ let fetchForLinkPreviews: linkPreviewFetch.FetchFn; if (proxyUrl) { - const agent = new ProxyAgent(proxyUrl); + const agent = createProxyAgent(proxyUrl); fetchForLinkPreviews = (href, init) => fetch(href, { ...init, agent }); } else { fetchForLinkPreviews = fetch; diff --git a/ts/textsecure/WebSocket.ts b/ts/textsecure/WebSocket.ts index ec0a0a3057f..610a8ab08e0 100644 --- a/ts/textsecure/WebSocket.ts +++ b/ts/textsecure/WebSocket.ts @@ -1,7 +1,6 @@ // Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -import type ProxyAgent from 'proxy-agent'; import { client as WebSocketClient } from 'websocket'; import type { connection as WebSocket } from 'websocket'; @@ -10,6 +9,7 @@ import { strictAssert } from '../util/assert'; import { explodePromise } from '../util/explodePromise'; import { getUserAgent } from '../util/getUserAgent'; import * as durations from '../util/durations'; +import type { createProxyAgent } from '../util/createProxyAgent'; import { createHTTPSAgent } from '../util/createHTTPSAgent'; import * as log from '../logging/log'; import * as Timers from '../Timers'; @@ -28,7 +28,7 @@ export type ConnectOptionsType = Readonly<{ url: string; certificateAuthority?: string; version: string; - proxyAgent?: ReturnType; + proxyAgent?: ReturnType; timeout?: number; extraHeaders?: Record; diff --git a/ts/textsecure/cds/CDSBase.ts b/ts/textsecure/cds/CDSBase.ts index 5a39f8db047..d2ef09ed9cb 100644 --- a/ts/textsecure/cds/CDSBase.ts +++ b/ts/textsecure/cds/CDSBase.ts @@ -1,8 +1,6 @@ // Copyright 2022 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only -import ProxyAgent from 'proxy-agent'; - import type { CDSAuthType, CDSRequestOptionsType, @@ -11,6 +9,7 @@ import type { import type { LoggerType } from '../../types/Logging'; import { isOlderThan } from '../../util/timestamp'; import { HOUR } from '../../util/durations'; +import { createProxyAgent } from '../../util/createProxyAgent'; // It is 24 hours, but we don't want latency between server and client to be // count. @@ -31,14 +30,14 @@ export abstract class CDSBase< Options extends CDSBaseOptionsType = CDSBaseOptionsType > { protected readonly logger: LoggerType; - protected readonly proxyAgent?: ReturnType; + protected readonly proxyAgent?: ReturnType; protected cachedAuth?: CachedAuthType; constructor(protected readonly options: Options) { this.logger = options.logger; if (options.proxyUrl) { - this.proxyAgent = new ProxyAgent(options.proxyUrl); + this.proxyAgent = createProxyAgent(options.proxyUrl); } } diff --git a/ts/updater/got.ts b/ts/updater/got.ts index b38a272e055..6d2bbb21a9b 100644 --- a/ts/updater/got.ts +++ b/ts/updater/got.ts @@ -3,13 +3,13 @@ import type { StrictOptions as GotOptions } from 'got'; import config from 'config'; -import ProxyAgent from 'proxy-agent'; import { Agent as HTTPAgent } from 'http'; import * as packageJson from '../../package.json'; import { getUserAgent } from '../util/getUserAgent'; import * as durations from '../util/durations'; import { createHTTPSAgent } from '../util/createHTTPSAgent'; +import { createProxyAgent } from '../util/createProxyAgent'; export const GOT_CONNECT_TIMEOUT = durations.MINUTE; export const GOT_LOOKUP_TIMEOUT = durations.MINUTE; @@ -29,8 +29,8 @@ export function getGotOptions(): GotOptions { const proxyUrl = getProxyUrl(); const agent = proxyUrl ? { - http: new ProxyAgent(proxyUrl), - https: new ProxyAgent(proxyUrl), + http: createProxyAgent(proxyUrl), + https: createProxyAgent(proxyUrl), } : { http: new HTTPAgent(), diff --git a/ts/util/createHTTPSAgent.ts b/ts/util/createHTTPSAgent.ts index c99c5a17c2a..d6eac2fa338 100644 --- a/ts/util/createHTTPSAgent.ts +++ b/ts/util/createHTTPSAgent.ts @@ -1,4 +1,4 @@ -// Copyright 2013 Signal Messenger, LLC +// Copyright 2023 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import { Agent as HTTPSAgent } from 'https'; @@ -11,7 +11,10 @@ import { callbackify, promisify } from 'util'; import pTimeout from 'p-timeout'; import * as log from '../logging/log'; -import { electronLookup as electronLookupWithCb } from './dns'; +import { + electronLookup as electronLookupWithCb, + interleaveAddresses, +} from './dns'; import { strictAssert } from './assert'; import { parseIntOrThrow } from './parseIntOrThrow'; import { sleep } from './sleep'; @@ -50,44 +53,11 @@ export class Agent extends HTTPSAgent { ); const addresses = await electronLookup(host, { all: true }); - const firstAddr = addresses.find( - ({ family }) => family === 4 || family === 6 - ); - if (!firstAddr) { - throw new Error(`Agent.createConnection: failed to resolve ${host}`); - } - - const v4 = addresses.filter(({ family }) => family === 4); - const v6 = addresses.filter(({ family }) => family === 6); - - // Interleave addresses for Happy Eyeballs, but keep the first address - // type from the DNS response first in the list. - const interleaved = new Array(); - while (v4.length !== 0 || v6.length !== 0) { - const v4Entry = v4.pop(); - const v6Entry = v6.pop(); - - if (firstAddr.family === 4) { - if (v4Entry !== undefined) { - interleaved.push(v4Entry); - } - if (v6Entry !== undefined) { - interleaved.push(v6Entry); - } - } else { - if (v6Entry !== undefined) { - interleaved.push(v6Entry); - } - if (v4Entry !== undefined) { - interleaved.push(v4Entry); - } - } - } const start = Date.now(); const { socket, address, v4Attempts, v6Attempts } = await happyEyeballs({ - addrs: interleaved, + addresses, port, tlsOptions: { ca: options.ca, @@ -113,9 +83,10 @@ export class Agent extends HTTPSAgent { } export type HappyEyeballsOptions = Readonly<{ - addrs: ReadonlyArray; + addresses: ReadonlyArray; port?: number; - tlsOptions: ConnectionOptions; + connect?: typeof defaultConnect; + tlsOptions?: ConnectionOptions; }>; export type HappyEyeballsResult = Readonly<{ @@ -126,17 +97,19 @@ export type HappyEyeballsResult = Readonly<{ }>; export async function happyEyeballs({ - addrs, + addresses, port = 443, tlsOptions, + connect = defaultConnect, }: HappyEyeballsOptions): Promise { - const abortControllers = addrs.map(() => new AbortController()); - let v4Attempts = 0; let v6Attempts = 0; + const interleaved = interleaveAddresses(addresses); + const abortControllers = interleaved.map(() => new AbortController()); + const results = await Promise.allSettled( - addrs.map(async (addr, index) => { + interleaved.map(async (addr, index) => { const abortController = abortControllers[index]; if (index !== 0) { await sleep(index * DELAY_MS, abortController.signal); @@ -148,12 +121,16 @@ export async function happyEyeballs({ v6Attempts += 1; } - const socket = await connect({ - address: addr.address, - port, - tlsOptions, - abortSignal: abortController.signal, - }); + const socket = await pTimeout( + connect({ + address: addr.address, + port, + tlsOptions, + abortSignal: abortController.signal, + }), + CONNECT_TIMEOUT_MS, + 'createHTTPSAgent.connect: connection timed out' + ); if (abortController.signal.aborted) { throw new Error('Aborted'); @@ -179,7 +156,7 @@ export async function happyEyeballs({ return { socket, - address: addrs[index], + address: interleaved[index], v4Attempts, v6Attempts, }; @@ -197,45 +174,37 @@ export async function happyEyeballs({ throw results[0].reason; } -type DelayedConnectOptionsType = Readonly<{ +export type ConnectOptionsType = Readonly<{ port: number; address: string; - tlsOptions: ConnectionOptions; + tlsOptions?: ConnectionOptions; abortSignal?: AbortSignal; - timeout?: number; }>; -async function connect({ +async function defaultConnect({ port, address, tlsOptions, abortSignal, - timeout = CONNECT_TIMEOUT_MS, -}: DelayedConnectOptionsType): Promise { +}: ConnectOptionsType): Promise { const socket = tls.connect(port, address, { ...tlsOptions, signal: abortSignal, }); - return pTimeout( - (async () => { - const { promise: onHandshake, resolve, reject } = explodePromise(); + const { promise: onHandshake, resolve, reject } = explodePromise(); - socket.once('secureConnect', resolve); - socket.once('error', reject); + socket.once('secureConnect', resolve); + socket.once('error', reject); - try { - await onHandshake; - } finally { - socket.removeListener('secureConnect', resolve); - socket.removeListener('error', reject); - } + try { + await onHandshake; + } finally { + socket.removeListener('secureConnect', resolve); + socket.removeListener('error', reject); + } - return socket; - })(), - timeout, - 'createHTTPSAgent.connect: connection timed out' - ); + return socket; } export function createHTTPSAgent(options: AgentOptions = {}): Agent { diff --git a/ts/util/createProxyAgent.ts b/ts/util/createProxyAgent.ts new file mode 100644 index 00000000000..9e6347190e2 --- /dev/null +++ b/ts/util/createProxyAgent.ts @@ -0,0 +1,134 @@ +// Copyright 2023 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { ProxyAgent } from 'proxy-agent'; +import net from 'net'; +import { URL } from 'url'; +import type { LookupOneOptions, LookupAddress } from 'dns'; +import { lookup } from 'dns/promises'; + +import * as log from '../logging/log'; +import { happyEyeballs } from './createHTTPSAgent'; +import type { ConnectOptionsType } from './createHTTPSAgent'; +import { explodePromise } from './explodePromise'; +import { SECOND } from './durations'; +import { drop } from './drop'; + +// Warning threshold +const CONNECT_THRESHOLD_MS = SECOND; + +const SOCKS_PROTOCOLS = new Set([ + 'socks:', + 'socks4:', + 'socks4a:', + 'socks5:', + 'socks5h:', +]); + +export function createProxyAgent(proxyUrl: string): ProxyAgent { + const { port: portStr, hostname: proxyHost, protocol } = new URL(proxyUrl); + let defaultPort: number | undefined; + if (protocol === 'http:') { + defaultPort = 80; + } else if (protocol === 'https:') { + defaultPort = 443; + } else if (SOCKS_PROTOCOLS.has(protocol)) { + defaultPort = 1080; + } + const port = portStr ? parseInt(portStr, 10) : defaultPort; + + async function happyLookup( + host: string, + opts: LookupOneOptions + ): Promise { + if (opts.all) { + throw new Error('createProxyAgent: all=true lookup is not supported'); + } + + const addresses = await lookup(host, { all: true }); + + // SOCKS 4/5 resolve target host before sending it to the proxy. + if (host !== proxyHost) { + const idx = Math.floor(Math.random() * addresses.length); + return addresses[idx]; + } + + const start = Date.now(); + + const { socket, address, v4Attempts, v6Attempts } = await happyEyeballs({ + addresses, + port, + connect, + }); + + const duration = Date.now() - start; + const logLine = + `createProxyAgent.lookup(${host}): connected to ` + + `IPv${address.family} addr after ${duration}ms ` + + `(attempts v4=${v4Attempts} v6=${v6Attempts})`; + + if (v4Attempts + v6Attempts > 1 || duration > CONNECT_THRESHOLD_MS) { + log.warn(logLine); + } else { + log.info(logLine); + } + + // Sadly we can't return socket to proxy-agent + socket.destroy(); + + return address; + } + + async function happyLookupWithCallback( + host: string, + opts: LookupOneOptions, + callback: ( + err: NodeJS.ErrnoException | null, + address: string, + family: number + ) => void + ): Promise { + try { + const { address, family } = await happyLookup(host, opts); + callback(null, address, family); + } catch (error) { + callback(error, '', -1); + } + } + + return new ProxyAgent({ + lookup: + port !== undefined + ? (...args) => drop(happyLookupWithCallback(...args)) + : undefined, + getProxyForUrl() { + return proxyUrl; + }, + }); +} + +async function connect({ + port, + address, + abortSignal, +}: ConnectOptionsType): Promise { + const socket = net.connect({ + port, + host: address, + signal: abortSignal, + }); + + const { promise: onConnect, resolve, reject } = explodePromise(); + + socket.once('connect', resolve); + socket.once('error', reject); + + try { + await onConnect; + } finally { + socket.removeListener('connect', resolve); + socket.removeListener('error', reject); + } + + return socket; +} diff --git a/ts/util/dns.ts b/ts/util/dns.ts index 22a5e90aa8c..f1e5cdfb273 100644 --- a/ts/util/dns.ts +++ b/ts/util/dns.ts @@ -111,5 +111,45 @@ function lookupAll( drop(run()); } +export function interleaveAddresses( + addresses: ReadonlyArray +): Array { + const firstAddr = addresses.find( + ({ family }) => family === 4 || family === 6 + ); + if (!firstAddr) { + throw new Error('interleaveAddresses: no addresses to interleave'); + } + + const v4 = addresses.filter(({ family }) => family === 4); + const v6 = addresses.filter(({ family }) => family === 6); + + // Interleave addresses for Happy Eyeballs, but keep the first address + // type from the DNS response first in the list. + const interleaved = new Array(); + while (v4.length !== 0 || v6.length !== 0) { + const v4Entry = v4.pop(); + const v6Entry = v6.pop(); + + if (firstAddr.family === 4) { + if (v4Entry !== undefined) { + interleaved.push(v4Entry); + } + if (v6Entry !== undefined) { + interleaved.push(v6Entry); + } + } else { + if (v6Entry !== undefined) { + interleaved.push(v6Entry); + } + if (v4Entry !== undefined) { + interleaved.push(v4Entry); + } + } + } + + return interleaved; +} + // Note: `nodeLookup` has a complicated type due to compatibility requirements. export const electronLookup = lookupAll as typeof nodeLookup; diff --git a/ts/util/lint/exceptions.json b/ts/util/lint/exceptions.json index 3135a71422f..897c41b9ada 100644 --- a/ts/util/lint/exceptions.json +++ b/ts/util/lint/exceptions.json @@ -621,6 +621,13 @@ "reasonCategory": "testCode", "updated": "2022-06-23T23:21:04.555Z" }, + { + "rule": "eval", + "path": "node_modules/@tootallnate/quickjs-emscripten/dist/context.js", + "line": " * Like [`eval(code)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Description).", + "reasonCategory": "falseMatch", + "updated": "2023-08-29T19:25:52.732Z" + }, { "rule": "eval", "path": "node_modules/agentkeepalive/node_modules/depd/index.js", @@ -696,13 +703,6 @@ "reasonCategory": "usageTrusted", "updated": "2023-04-20T16:43:40.643Z" }, - { - "rule": "thenify-multiArgs", - "path": "node_modules/make-dir/node_modules/pify/index.js", - "line": "\t\tif (options.multiArgs) {", - "reasonCategory": "usageTrusted", - "updated": "2023-08-21T18:28:53.361Z" - }, { "rule": "DOM-outerHTML", "path": "node_modules/domutils/node_modules/dom-serializer/lib/esm/index.js", @@ -1133,6 +1133,13 @@ "reasonCategory": "notExercisedByOurApp", "updated": "2023-06-29T17:01:25.145Z" }, + { + "rule": "thenify-multiArgs", + "path": "node_modules/make-dir/node_modules/pify/index.js", + "line": "\t\tif (options.multiArgs) {", + "reasonCategory": "usageTrusted", + "updated": "2023-08-21T18:28:53.361Z" + }, { "rule": "DOM-innerHTML", "path": "node_modules/min-document/serialize.js", @@ -1199,13 +1206,6 @@ "reasonCategory": "falseMatch", "updated": "2022-06-04T00:50:49.405Z" }, - { - "rule": "eval", - "path": "node_modules/pac-proxy-agent/node_modules/depd/index.js", - "line": " var deprecatedfn = eval('(function (' + args + ') {\\n' +", - "reasonCategory": "usageTrusted", - "updated": "2022-12-13T00:55:48.389Z" - }, { "rule": "DOM-innerHTML", "path": "node_modules/parse-entities/decode-entity.browser.js", @@ -1935,22 +1935,6 @@ "reasonCategory": "usageTrusted", "updated": "2022-06-16T23:23:32.306Z" }, - { - "rule": "eval", - "path": "node_modules/vm2/lib/nodevm.js", - "line": "\t * @param {boolean} [options.eval=true] - Allow the dynamic evaluation of code via eval(code) or Function(code)().
", - "reasonCategory": "falseMatch", - "updated": "2022-02-16T15:30:35.122Z", - "reasonDetail": "falseMatch" - }, - { - "rule": "eval", - "path": "node_modules/vm2/lib/vm.js", - "line": "\t * @param {boolean} [options.eval=true] - Allow the dynamic evaluation of code via eval(code) or Function(code)().
", - "reasonCategory": "falseMatch", - "updated": "2022-02-16T15:30:35.122Z", - "reasonDetail": "This is a comment." - }, { "rule": "eval", "path": "node_modules/workerpool/dist/worker.js", diff --git a/yarn.lock b/yarn.lock index 6c72eba96aa..a82758edb82 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4825,16 +4825,16 @@ dependencies: "@babel/runtime" "^7.12.5" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -6114,11 +6114,6 @@ acorn-walk@^7.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - acorn@^6.4.1: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" @@ -6129,7 +6124,7 @@ acorn@^7.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.5.0, acorn@^8.7.0, acorn@^8.7.1, acorn@^8.8.0: +acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: version "8.8.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== @@ -6151,13 +6146,20 @@ agent-base@4, agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" -agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" +agent-base@^7.0.1, agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + agentkeepalive@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" @@ -6632,7 +6634,7 @@ ast-types-flow@^0.0.7: resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= -ast-types@^0.13.2: +ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== @@ -6987,6 +6989,11 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" +basic-ftp@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.3.tgz#b14c0fe8111ce001ec913686434fe0c2fb461228" + integrity sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g== + batch-processor@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" @@ -7360,11 +7367,6 @@ bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" -bytes@3.1.0: - version "3.1.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" @@ -8624,10 +8626,10 @@ dashdash@1.14.1: dependencies: assert-plus "^1.0.0" -data-uri-to-buffer@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" - integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-uri-to-buffer@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-5.0.1.tgz#db89a9e279c2ffe74f50637a59a32fb23b3e4d7c" + integrity sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg== date-now@^0.1.4: version "0.1.4" @@ -8822,15 +8824,14 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -degenerator@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.1.tgz#7ef78ec0c8577a544477308ddf1d2d6e88d51f5b" - integrity sha512-LFsIFEeLPlKvAKXu7j3ssIG6RT0TbI7/GhsqrI0DnHASEQjXQ0LUSYcjJteGgRGmZbl1TnMSxpNQIAiJ7Du5TQ== +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== dependencies: - ast-types "^0.13.2" - escodegen "^1.8.1" - esprima "^4.0.0" - vm2 "^3.9.3" + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" delayed-stream@~1.0.0: version "1.0.0" @@ -9660,7 +9661,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.13.0, escodegen@^1.8.1: +escodegen@^1.13.0: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -9684,6 +9685,17 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" +escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + eslint-config-airbnb-base@^15.0.0: version "15.0.0" resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" @@ -10381,11 +10393,6 @@ file-uri-to-path@1.0.0: resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -file-uri-to-path@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" - integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== - filelist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" @@ -10817,14 +10824,6 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -ftp@^0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - integrity sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0= - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -10977,17 +10976,15 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" -get-uri@3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" - integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== +get-uri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.1.tgz#cff2ba8d456c3513a04b70c45de4dbcca5b1527c" + integrity sha512-7ZqONUVqaabogsYNWlYj0t3YZaL6dhuEueZXGF+/YVmf6dHmaFg8/6psJKqhx9QykIDKzpGcy2cn4oV4YC7V/Q== dependencies: - "@tootallnate/once" "1" - data-uri-to-buffer "3" - debug "4" - file-uri-to-path "2" + basic-ftp "^5.0.2" + data-uri-to-buffer "^5.0.1" + debug "^4.3.4" fs-extra "^8.1.0" - ftp "^0.3.10" get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" @@ -11734,17 +11731,6 @@ http-errors@1.6.2: setprototypeof "1.0.3" statuses ">= 1.3.1 < 2" -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -11778,15 +11764,6 @@ http-proxy-agent@^2.1.0: agent-base "4" debug "3.1.0" -http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -11796,6 +11773,14 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" +http-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" + integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + http-proxy-middleware@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" @@ -11828,14 +11813,6 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" -https-proxy-agent@5, https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - https-proxy-agent@^2.2.1: version "2.2.4" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" @@ -11844,6 +11821,14 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + https-proxy-agent@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -11852,6 +11837,14 @@ https-proxy-agent@^5.0.1: agent-base "6" debug "4" +https-proxy-agent@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz#0277e28f13a07d45c663633841e20a40aaafe0ab" + integrity sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ== + dependencies: + agent-base "^7.0.2" + debug "4" + human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -12126,6 +12119,11 @@ ip@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" +ip@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" @@ -13448,6 +13446,11 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" +lru-cache@^7.14.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + lru-cache@^7.7.1: version "7.8.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.8.0.tgz#649aaeb294a56297b5cbc5d70f198dcc5ebe5747" @@ -14463,7 +14466,7 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== -netmask@^2.0.1: +netmask@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== @@ -15204,29 +15207,28 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.0.0.tgz#85080bb87c64688fa47996fe8f7dfbe8211760b1" integrity sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== -pac-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" - integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== +pac-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.0.tgz#db42120c64292685dafaf2bd921e223c56bfb13b" + integrity sha512-t4tRAMx0uphnZrio0S0Jw9zg3oDbz1zVhQ/Vy18FjLfP1XOLNUEjaVxYCYRI6NS+BsMBXKIzV6cTLOkO9AtywA== dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - get-uri "3" - http-proxy-agent "^4.0.1" - https-proxy-agent "5" - pac-resolver "^5.0.0" - raw-body "^2.2.0" - socks-proxy-agent "5" + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.0.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + pac-resolver "^7.0.0" + socks-proxy-agent "^8.0.1" -pac-resolver@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.0.tgz#1d717a127b3d7a9407a16d6e1b012b13b9ba8dc0" - integrity sha512-H+/A6KitiHNNW+bxBKREk2MCGSxljfqRX76NjummWEYIat7ldVXRU3dhRIE3iXZ0nvGBk6smv3nntxKkzRL8NA== +pac-resolver@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.0.tgz#79376f1ca26baf245b96b34c339d79bff25e900c" + integrity sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg== dependencies: - degenerator "^3.0.1" - ip "^1.1.5" - netmask "^2.0.1" + degenerator "^5.0.0" + ip "^1.1.8" + netmask "^2.0.2" pako@~1.0.5: version "1.0.6" @@ -16089,21 +16091,21 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-agent@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" - integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== +proxy-agent@6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.0.tgz#72f7bb20eb06049db79f7f86c49342c34f9ba08d" + integrity sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og== dependencies: - agent-base "^6.0.0" - debug "4" - http-proxy-agent "^4.0.0" - https-proxy-agent "^5.0.0" - lru-cache "^5.1.1" - pac-proxy-agent "^5.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^5.0.0" + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.0" + lru-cache "^7.14.1" + pac-proxy-agent "^7.0.0" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.1" -proxy-from-env@^1.0.0: +proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== @@ -16304,16 +16306,6 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-loader@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" @@ -16757,15 +16749,6 @@ read-pkg@^5.2.0: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" @@ -17655,11 +17638,6 @@ setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" -setprototypeof@1.1.1: - version "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" @@ -17798,6 +17776,11 @@ smart-buffer@^4.1.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -17834,15 +17817,6 @@ sockjs@^0.3.24: uuid "^8.3.2" websocket-driver "^0.7.4" -socks-proxy-agent@5, socks-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" - integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== - dependencies: - agent-base "6" - debug "4" - socks "^2.3.3" - socks-proxy-agent@^6.1.1: version "6.1.1" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" @@ -17852,7 +17826,16 @@ socks-proxy-agent@^6.1.1: debug "^4.3.1" socks "^2.6.1" -socks@^2.3.3, socks@^2.6.1: +socks-proxy-agent@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.1.tgz#ffc5859a66dac89b0c4dab90253b96705f3e7120" + integrity sha512-59EjPbbgg8U3x62hhKOFVAmySQUcfRQ4C7Q/D5sEHnZTQRrQlNKINks44DMR1gwXp0p4LaVIeccX2KHTTcHVqQ== + dependencies: + agent-base "^7.0.1" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== @@ -17860,6 +17843,14 @@ socks@^2.3.3, socks@^2.6.1: ip "^1.1.5" smart-buffer "^4.1.0" +socks@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" + integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== + dependencies: + ip "^2.0.0" + smart-buffer "^4.2.0" + sonic-boom@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-3.2.0.tgz#ce9f2de7557e68be2e52c8df6d9b052e7d348143" @@ -18057,7 +18048,7 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2": +"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -18235,10 +18226,6 @@ string_decoder@^1.0.0, string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -18920,11 +18907,6 @@ toggle-selection@^1.0.6: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= -toidentifier@1.0.0: - version "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" @@ -19629,14 +19611,6 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== -vm2@^3.9.3: - version "3.9.19" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.19.tgz#be1e1d7a106122c6c492b4d51c2e8b93d3ed6a4a" - integrity sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - warning@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" @@ -20103,10 +20077,6 @@ xmlcreate@^2.0.4: resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - xtend@^4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"