diff --git a/packages/teleport/package.json b/packages/teleport/package.json index 859ac922b..c1c931f35 100644 --- a/packages/teleport/package.json +++ b/packages/teleport/package.json @@ -24,6 +24,7 @@ }, "devDependencies": { "@gravitational/build": "^1.0.0", + "@types/wicg-native-file-system": "^2020.6.0", "jest-canvas-mock": "^2.3.1" } } diff --git a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx index 779daab61..2dbd461f6 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.story.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.story.tsx @@ -46,7 +46,6 @@ const props: State = { permission: { state: '' }, errorText: '', }, - isRecording: false, tdpClient: fakeClient(), username: 'user', onWsOpen: () => {}, @@ -55,7 +54,6 @@ const props: State = { disconnected: false, setDisconnected: () => {}, setClipboardState: () => {}, - setIsRecording: () => {}, canShareDirectory: true, isSharingDirectory: false, setIsSharingDirectory: () => {}, @@ -113,7 +111,6 @@ export const ConnectedSettingsFalse = () => { permission: { state: '' }, errorText: '', }} - isRecording={false} onPngFrame={(ctx: CanvasRenderingContext2D) => { fillGray(ctx.canvas); }} @@ -140,7 +137,6 @@ export const ConnectedSettingsTrue = () => { permission: { state: 'granted' }, errorText: '', }} - isRecording={true} isSharingDirectory={true} onPngFrame={(ctx: CanvasRenderingContext2D) => { fillGray(ctx.canvas); diff --git a/packages/teleport/src/DesktopSession/DesktopSession.tsx b/packages/teleport/src/DesktopSession/DesktopSession.tsx index f759e16c3..14bd4c747 100644 --- a/packages/teleport/src/DesktopSession/DesktopSession.tsx +++ b/packages/teleport/src/DesktopSession/DesktopSession.tsx @@ -108,8 +108,6 @@ function Session(props: PropsWithChildren) { hostname, clipboardState, setClipboardState, - isRecording, - setIsRecording, canShareDirectory, isSharingDirectory, setIsSharingDirectory, @@ -144,6 +142,19 @@ function Session(props: PropsWithChildren) { !disconnected && clipboardSuccess; + const onShareDirectory = () => { + window + .showDirectoryPicker() + .then(sharedDirHandle => { + setIsSharingDirectory(true); + tdpClient.sharedDirectory = sharedDirHandle; + tdpClient.sendSharedDirectoryAnnounce(); + }) + .catch(() => { + setIsSharingDirectory(false); + }); + }; + return ( ) { ...prevState, enabled: false, })); - setIsRecording(false); setIsSharingDirectory(false); tdpClient.nuke(); }} userHost={`${username}@${hostname}`} clipboardSharingEnabled={clipboardSharingActive} - isRecording={isRecording} canShareDirectory={canShareDirectory} isSharingDirectory={isSharingDirectory} - onShareDirectory={() => { - setIsSharingDirectory(true); - }} + onShareDirectory={onShareDirectory} /> {props.children} diff --git a/packages/teleport/src/DesktopSession/TopBar.tsx b/packages/teleport/src/DesktopSession/TopBar.tsx index 3d485a1bb..6d5ac2aa7 100644 --- a/packages/teleport/src/DesktopSession/TopBar.tsx +++ b/packages/teleport/src/DesktopSession/TopBar.tsx @@ -24,7 +24,6 @@ export default function TopBar(props: Props) { const { userHost, clipboardSharingEnabled, - isRecording, onDisconnect, canShareDirectory, isSharingDirectory, @@ -70,19 +69,6 @@ export default function TopBar(props: Props) { : 'Clipboard Sharing Disabled' } /> - - - Recording - -
-
-
- Recording -
-
@@ -210,7 +181,7 @@ exports[`clipboard error 1`] = `
clipboard error @@ -230,13 +201,13 @@ exports[`connected settings false 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color 0.3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -258,20 +229,20 @@ exports[`connected settings false 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -283,12 +254,6 @@ exports[`connected settings false 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -330,14 +295,6 @@ exports[`connected settings false 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -419,13 +361,13 @@ exports[`connected settings true 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color 0.3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -447,20 +389,20 @@ exports[`connected settings true 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -472,12 +414,6 @@ exports[`connected settings true 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -519,14 +455,6 @@ exports[`connected settings true 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -608,13 +521,13 @@ exports[`connection error 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color 0.3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -636,20 +549,20 @@ exports[`connection error 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -661,12 +574,6 @@ exports[`connection error 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -708,15 +615,7 @@ exports[`connection error 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -739,7 +638,7 @@ exports[`connection error 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -776,33 +675,18 @@ exports[`connection error 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -810,7 +694,7 @@ exports[`connection error 1`] = `
some connection error @@ -823,7 +707,7 @@ exports[`connection error 1`] = ` `; exports[`disconnected 1`] = ` -.c13 { +.c11 { box-sizing: border-box; margin: 72px; text-align: center; @@ -836,13 +720,13 @@ exports[`disconnected 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color 0.3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -864,20 +748,20 @@ exports[`disconnected 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -889,7 +773,7 @@ exports[`disconnected 1`] = ` padding-right: 16px; } -.c10 { +.c12 { overflow: hidden; text-overflow: ellipsis; margin: 0px; @@ -936,14 +820,6 @@ exports[`disconnected 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -1011,10 +872,10 @@ exports[`disconnected 1`] = `
Session successfully disconnected
@@ -1034,13 +895,13 @@ exports[`fetch error 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color 0.3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1062,20 +923,20 @@ exports[`fetch error 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1087,12 +948,6 @@ exports[`fetch error 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1134,15 +989,7 @@ exports[`fetch error 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -1165,7 +1012,7 @@ exports[`fetch error 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -1202,33 +1049,18 @@ exports[`fetch error 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -1236,7 +1068,7 @@ exports[`fetch error 1`] = `
some fetch error @@ -1256,13 +1088,13 @@ exports[`unintended disconnect 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color 0.3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1284,20 +1116,20 @@ exports[`unintended disconnect 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1309,12 +1141,6 @@ exports[`unintended disconnect 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1356,15 +1182,7 @@ exports[`unintended disconnect 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} - -.c13 { +.c11 { display: flex; align-items: center; justify-content: center; @@ -1387,7 +1205,7 @@ exports[`unintended disconnect 1`] = ` min-width: 450px; } -.c13 a { +.c11 a { color: #FFFFFF; } @@ -1424,33 +1242,18 @@ exports[`unintended disconnect 1`] = ` style="color: rgba(255, 255, 255, 0.56);" title="Clipboard Sharing Disabled" /> -
-
-
- Recording -
-
@@ -1458,7 +1261,7 @@ exports[`unintended disconnect 1`] = `
Session disconnected for an unknown reason @@ -1471,7 +1274,7 @@ exports[`unintended disconnect 1`] = ` `; exports[`webauthn prompt 1`] = ` -.c13 { +.c11 { box-sizing: border-box; margin: 72px; text-align: center; @@ -1484,13 +1287,13 @@ exports[`webauthn prompt 1`] = ` color: #FFFFFF; } -.c12 { +.c10 { display: inline-block; transition: color 0.3s; color: #FFFFFF; } -.c11 { +.c9 { align-items: center; border: none; cursor: pointer; @@ -1512,20 +1315,20 @@ exports[`webauthn prompt 1`] = ` color: rgba(255,255,255,0.56); } -.c11 .c5 { +.c9 .c5 { color: inherit; } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:disabled { +.c9:disabled { color: rgba(255,255,255,0.3); } -.c11:hover, -.c11:focus { +.c9:hover, +.c9:focus { background: rgba(255,255,255,0.1); } @@ -1537,12 +1340,6 @@ exports[`webauthn prompt 1`] = ` padding-right: 16px; } -.c10 { - overflow: hidden; - text-overflow: ellipsis; - margin: 0px; -} - .c0 { box-sizing: border-box; display: flex; @@ -1584,14 +1381,6 @@ exports[`webauthn prompt 1`] = ` align-self: 'center'; } -.c9 { - width: 10px; - height: 10px; - border-radius: 10px; - margin-right: 6px; - vertical-align: text-bottom; -} -
-
-
-
- Recording -
-
@@ -1659,7 +1433,7 @@ exports[`webauthn prompt 1`] = `
setHostname(desktop.name)), userService.fetchUserContext().then(user => { setHasClipboardSharingEnabled(user.acl.clipboardSharingEnabled); - setIsRecording(user.acl.desktopSessionRecordingEnabled); setCanShareDirectory(user.acl.directorySharingEnabled); }), ]) @@ -140,6 +136,8 @@ export default function useDesktopSession() { clusterId, setTdpConnection, setWsConnection, + setClipboardState, + setIsSharingDirectory, enableClipboardSharing: clipboardState.enabled && clipboardState.permission.state === 'granted' && @@ -153,8 +151,6 @@ export default function useDesktopSession() { username, clipboardState, setClipboardState, - isRecording, - setIsRecording, canShareDirectory, isSharingDirectory, setIsSharingDirectory, diff --git a/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx b/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx index f9b143347..975110a9e 100644 --- a/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx +++ b/packages/teleport/src/DesktopSession/useTdpClientCanvas.tsx @@ -15,12 +15,13 @@ limitations under the License. */ import { useState, useEffect, useRef, Dispatch, SetStateAction } from 'react'; +import { Attempt } from 'shared/hooks/useAttemptNext'; import { TdpClient, ButtonState, ScrollAxis } from 'teleport/lib/tdp'; import { ClipboardData, PngFrame } from 'teleport/lib/tdp/codec'; -import { TopBarHeight } from './TopBar'; -import cfg from 'teleport/config'; import { getAccessToken, getHostName } from 'teleport/services/api'; -import { Attempt } from 'shared/hooks/useAttemptNext'; +import cfg from 'teleport/config'; +import { TopBarHeight } from './TopBar'; +import { ClipboardPermissionStatus } from './useClipboard'; export default function useTdpClientCanvas(props: Props) { const { @@ -29,6 +30,8 @@ export default function useTdpClientCanvas(props: Props) { clusterId, setTdpConnection, setWsConnection, + setClipboardState, + setIsSharingDirectory, enableClipboardSharing, } = props; const [tdpClient, setTdpClient] = useState(null); @@ -76,6 +79,11 @@ export default function useTdpClientCanvas(props: Props) { // Default TdpClientEvent.TDP_ERROR handler const onTdpError = (err: Error) => { + setIsSharingDirectory(false); + setClipboardState(prevState => ({ + ...prevState, + enabled: false, + })); setTdpConnection({ status: 'failed', statusText: err.message }); }; @@ -200,5 +208,13 @@ type Props = { clusterId: string; setTdpConnection: Dispatch>; setWsConnection: Dispatch>; + setClipboardState: Dispatch< + SetStateAction<{ + enabled: boolean; + permission: ClipboardPermissionStatus; + errorText: string; + }> + >; + setIsSharingDirectory: Dispatch>; enableClipboardSharing: boolean; }; diff --git a/packages/teleport/src/lib/tdp/client.ts b/packages/teleport/src/lib/tdp/client.ts index b7596baa6..12deae320 100644 --- a/packages/teleport/src/lib/tdp/client.ts +++ b/packages/teleport/src/lib/tdp/client.ts @@ -42,6 +42,8 @@ export default class Client extends EventEmitterWebAuthnSender { protected codec: Codec; protected socket: WebSocket | undefined; private socketAddr: string; + sharedDirectory: FileSystemDirectoryHandle | undefined; + private logger = Logger.create('TDPClient'); constructor(socketAddr: string) { @@ -223,6 +225,32 @@ export default class Client extends EventEmitterWebAuthnSender { this.send(msg); } + private sharedDirectoryReady() { + if (!this.sharedDirectory) { + this.handleError( + new Error( + 'attempted to use a shared directory before one was initialized' + ) + ); + return false; + } + + return true; + } + + sendSharedDirectoryAnnounce() { + if (!this.sharedDirectoryReady()) return; + this.socket.send( + this.codec.encodeSharedDirectoryAnnounce({ + completionId: 0, // This is always the first request. + // Hardcode directoryId for now since we only support sharing 1 directory. + // We're using 2 because the smartcard device is hardcoded to 1 in the backend. + directoryId: 2, + name: this.sharedDirectory.name, + }) + ); + } + resize(spec: ClientScreenSpec) { this.send(this.codec.encodeClientScreenSpec(spec)); } diff --git a/packages/teleport/src/lib/tdp/codec.ts b/packages/teleport/src/lib/tdp/codec.ts index da94af558..8217f12ed 100644 --- a/packages/teleport/src/lib/tdp/codec.ts +++ b/packages/teleport/src/lib/tdp/codec.ts @@ -37,6 +37,7 @@ export enum MessageType { MOUSE_WHEEL_SCROLL = 8, ERROR = 9, MFA_JSON = 10, + SHARED_DIRECTORY_ANNOUNCE = 11, } // 0 is left button, 1 is middle button, 2 is right button @@ -84,6 +85,13 @@ export type MfaJson = { jsonString: string; }; +// | message type (11) | completion_id uint32 | directory_id uint32 | name_length uint32 | name []byte | +export type SharedDirectoryAnnounce = { + completionId: number; + directoryId: number; + name: string; +}; + // TdaCodec provides an api for encoding and decoding teleport desktop access protocol messages [1] // Buffers in TdaCodec are manipulated as DataView's [2] in order to give us low level control // of endianness (defaults to big endian, which is what we want), as opposed to using *Array @@ -389,6 +397,31 @@ export default class Codec { return buffer; } + // | message type (11) | completion_id uint32 | directory_id uint32 | name_length uint32 | name []byte | + encodeSharedDirectoryAnnounce( + sharedDirAnnounce: SharedDirectoryAnnounce + ): Message { + const dataUtf8array = this.encoder.encode(sharedDirAnnounce.name); + + const bufLen = byteLength + 3 * uint32Length + dataUtf8array.length; + const buffer = new ArrayBuffer(bufLen); + const view = new DataView(buffer); + let offset = 0; + + view.setUint8(offset++, MessageType.SHARED_DIRECTORY_ANNOUNCE); + view.setUint32(offset, sharedDirAnnounce.completionId); + offset += uint32Length; + view.setUint32(offset, sharedDirAnnounce.directoryId); + offset += uint32Length; + view.setUint32(offset, dataUtf8array.length); + offset += uint32Length; + dataUtf8array.forEach(byte => { + view.setUint8(offset++, byte); + }); + + return buffer; + } + // decodeClipboardData decodes clipboard data decodeClipboardData(buffer: ArrayBuffer): ClipboardData { return { diff --git a/yarn.lock b/yarn.lock index 9f4d01106..f6cdca28a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3029,6 +3029,11 @@ tapable "^2.2.0" webpack "^5" +"@types/wicg-native-file-system@^2020.6.0": + version "2020.6.0" + resolved "https://registry.yarnpkg.com/@types/wicg-native-file-system/-/wicg-native-file-system-2020.6.0.tgz#63cbb7bac47bdb9eae4b0d66e63134b33e47e05d" + integrity sha512-M7n6jvHfUzUXDtf6UGpL6rVIddV7UzEYrvwZPORApeHvDGQnZJ79fXorLlDj8xJKyUemnEBohRd8yx09k9NBUw== + "@types/yargs-parser@*": version "20.2.1" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129" @@ -3416,11 +3421,6 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -3482,22 +3482,13 @@ address@1.1.2, address@^1.0.1: resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -agent-base@6, agent-base@^6.0.2: +agent-base@6: 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" -agentkeepalive@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -3723,14 +3714,6 @@ are-we-there-yet@^2.0.0: delegates "^1.0.0" readable-stream "^3.6.0" -are-we-there-yet@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz#ba20bd6b553e31d62fc8c31bd23d22b95734390d" - integrity sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -4564,7 +4547,7 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^15.0.5, cacache@^15.2.0: +cacache@^15.0.5: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== @@ -4943,7 +4926,7 @@ color-string@^1.6.0: color-name "^1.0.0" simple-swizzle "^0.2.2" -color-support@^1.1.2, color-support@^1.1.3: +color-support@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== @@ -5543,13 +5526,6 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: dependencies: ms "2.1.2" -debug@^4.3.3: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - decimal.js@^10.2.1: version "10.3.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" @@ -5687,7 +5663,7 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -depd@^1.1.2, depd@~1.1.2: +depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== @@ -6145,13 +6121,6 @@ encodeurl@^1.0.2, encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= -encoding@^0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -6216,11 +6185,6 @@ envinfo@^7.7.3: resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== -err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -7246,20 +7210,6 @@ gauge@^3.0.0: strip-ansi "^3.0.1 || ^4.0.0" wide-align "^1.1.2" -gauge@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" - integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.3" - console-control-strings "^1.1.0" - has-unicode "^2.0.1" - signal-exit "^3.0.7" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.5" - gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -7877,7 +7827,7 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: +http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== @@ -7980,13 +7930,6 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== - dependencies: - ms "^2.0.0" - iconv-corefoundation@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz#27c135470237f6f8d13462fa1f5eaf250523c29a" @@ -8389,11 +8332,6 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== - is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" @@ -9629,28 +9567,6 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" -make-fetch-happen@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.2.0" - http-cache-semantics "^4.1.0" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-lambda "^1.0.1" - lru-cache "^6.0.0" - minipass "^3.1.3" - minipass-collect "^1.0.2" - minipass-fetch "^1.3.2" - minipass-flush "^1.0.5" - minipass-pipeline "^1.2.4" - negotiator "^0.6.2" - promise-retry "^2.0.1" - socks-proxy-agent "^6.0.0" - ssri "^8.0.0" - makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -9928,11 +9844,16 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5, minimist@~0.0.1: +minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha512-iotkTvxc+TwOm5Ieim8VnSNvCDjCK9S8G3scJ50ZthspSxa7jx50jkhYduuAtAjvfDUwSgOwf8+If99AlOEhyw== + minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -9940,17 +9861,6 @@ minipass-collect@^1.0.2: dependencies: minipass "^3.0.0" -minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - minipass-flush@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" @@ -9958,20 +9868,13 @@ minipass-flush@^1.0.5: dependencies: minipass "^3.0.0" -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: +minipass-pipeline@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== dependencies: minipass "^3.0.0" -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - minipass@^3.0.0, minipass@^3.1.1: version "3.1.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" @@ -9979,14 +9882,7 @@ minipass@^3.0.0, minipass@^3.1.1: dependencies: yallist "^4.0.0" -minipass@^3.1.0, minipass@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== - dependencies: - yallist "^4.0.0" - -minizlib@^2.0.0, minizlib@^2.1.1: +minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== @@ -10064,7 +9960,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.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -10119,11 +10015,6 @@ 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.2: - 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" @@ -10171,22 +10062,6 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-gyp@8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-8.4.1.tgz#3d49308fc31f768180957d6b5746845fbd429937" - integrity sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.6" - make-fetch-happen "^9.1.0" - nopt "^5.0.0" - npmlog "^6.0.0" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.2" - which "^2.0.2" - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -10243,13 +10118,6 @@ node-releases@^2.0.1: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -10307,16 +10175,6 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" -npmlog@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" - integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== - dependencies: - are-we-there-yet "^3.0.0" - console-control-strings "^1.1.0" - gauge "^4.0.3" - set-blocking "^2.0.0" - nth-check@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" @@ -11193,14 +11051,6 @@ promise-inflight@^1.0.1: resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - promise.allsettled@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.5.tgz#2443f3d4b2aa8dfa560f6ac2aa6c4ea999d75f53" @@ -12088,11 +11938,6 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - retry@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -12489,11 +12334,6 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== -signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -12532,7 +12372,7 @@ slice-ansi@^1.0.0: dependencies: is-fullwidth-code-point "^2.0.0" -smart-buffer@^4.0.2, smart-buffer@^4.2.0: +smart-buffer@^4.0.2: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== @@ -12576,23 +12416,6 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" -socks-proxy-agent@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz#f6b5229cc0cbd6f2f202d9695f09d871e951c85e" - integrity sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ== - dependencies: - agent-base "^6.0.2" - debug "^4.3.3" - socks "^2.6.2" - -socks@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== - dependencies: - ip "^1.1.5" - smart-buffer "^4.2.0" - source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -12733,7 +12556,7 @@ ssri@^6.0.1: dependencies: figgy-pudding "^3.5.1" -ssri@^8.0.0, ssri@^8.0.1: +ssri@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== @@ -12838,7 +12661,7 @@ string-length@^4.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -13107,7 +12930,7 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^6.0.2, tar@^6.1.2: +tar@^6.0.2: version "6.1.11" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== @@ -14253,14 +14076,14 @@ which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1, which@^2.0.2: +which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" -wide-align@^1.1.2, wide-align@^1.1.5: +wide-align@^1.1.2: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==