From 9a4740975add97899af07862baa5e022059bd771 Mon Sep 17 00:00:00 2001 From: Eric Amodio Date: Tue, 13 Jul 2021 01:43:32 -0400 Subject: [PATCH] Fixes live share support --- package.json | 11 ++- src/@types/vsls.d.ts | 93 +++++++++++++++++++++++ src/git/gitService.ts | 4 +- src/vsls/guest.ts | 2 +- src/vsls/host.ts | 2 +- src/vsls/vsls.ts | 37 +++++---- yarn.lock | 207 ++++++++++++++++---------------------------------- 7 files changed, 190 insertions(+), 166 deletions(-) create mode 100644 src/@types/vsls.d.ts diff --git a/package.json b/package.json index 73e54c2..41d6e9e 100644 --- a/package.json +++ b/package.json @@ -195,7 +195,7 @@ "onStartupFinished" ], "capabilities": { - "virtualWorkspaces": false, + "virtualWorkspaces": true, "untrustedWorkspaces": { "supported": "limited" } @@ -9703,8 +9703,7 @@ "iconv-lite": "0.6.3", "lodash-es": "4.17.21", "sortablejs": "1.13.0", - "vscode-codicons": "0.0.17", - "vsls": "1.0.3015" + "vscode-codicons": "0.0.17" }, "devDependencies": { "@types/chroma-js": "2.1.3", @@ -9712,8 +9711,8 @@ "@types/node": "14.17.4", "@types/sortablejs": "1.10.6", "@types/vscode": "1.57.0", - "@typescript-eslint/eslint-plugin": "4.28.2", - "@typescript-eslint/parser": "4.28.2", + "@typescript-eslint/eslint-plugin": "4.28.3", + "@typescript-eslint/parser": "4.28.3", "circular-dependency-plugin": "5.2.2", "clean-webpack-plugin": "3.0.0", "copy-webpack-plugin": "9.0.1", @@ -9738,7 +9737,7 @@ "terser-webpack-plugin": "5.1.4", "ts-loader": "9.2.3", "typescript": "4.4.0-beta", - "vsce": "1.95.0", + "vsce": "1.95.1", "webpack": "5.44.0", "webpack-bundle-analyzer": "4.4.2", "webpack-cli": "4.2.0" diff --git a/src/@types/vsls.d.ts b/src/@types/vsls.d.ts new file mode 100644 index 0000000..3060b75 --- /dev/null +++ b/src/@types/vsls.d.ts @@ -0,0 +1,93 @@ +import { CancellationToken, Disposable, Event, TreeDataProvider, Uri } from 'vscode'; + +export interface LiveShareExtension { + getApi(version: string): Promise; +} + +export interface LiveShare { + readonly session: Session; + readonly onDidChangeSession: Event; + + share(options?: ShareOptions): Promise; + shareService(name: string): Promise; + unshareService(name: string): Promise; + getSharedService(name: string): Promise; + convertLocalUriToShared(localUri: Uri): Uri; + convertSharedUriToLocal(sharedUri: Uri): Uri; + getContacts(emails: string[]): Promise; +} + +export const enum Access { + None = 0, + ReadOnly = 1, + ReadWrite = 3, + Owner = 0xff, +} + +export const enum Role { + None = 0, + Host = 1, + Guest = 2, +} + +export interface Session { + readonly id: string | null; + readonly role: Role; + readonly access: Access; +} + +export interface SessionChangeEvent { + readonly session: Session; +} + +export interface Contact { + readonly onDidChange: Event; + readonly id: string; + readonly email: string; + readonly displayName?: string; + readonly status?: string; + readonly avatarUri?: string; + + invite(options?: ContactInviteOptions): Promise; +} + +export interface Contacts { + readonly contacts: { [email: string]: Contact }; + dispose(): Promise; +} + +export interface ContactInviteOptions { + useEmail?: boolean; +} + +export interface SharedService { + readonly isServiceAvailable: boolean; + readonly onDidChangeIsServiceAvailable: Event; + + onRequest(name: string, handler: RequestHandler): void; + onNotify(name: string, handler: NotifyHandler): void; + notify(name: string, args: object): void; +} + +export interface SharedServiceProxy { + readonly isServiceAvailable: boolean; + readonly onDidChangeIsServiceAvailable: Event; + + onNotify(name: string, handler: NotifyHandler): void; + request(name: string, args: any[], cancellation?: CancellationToken): Promise; + notify(name: string, args: object): void; +} + +export interface SharedServiceProxyError extends Error {} + +export interface SharedServiceResponseError extends Error { + remoteStack?: string; +} + +export interface RequestHandler { + (args: any[], cancellation: CancellationToken): any | Promise; +} + +export interface NotifyHandler { + (args: object): void; +} diff --git a/src/git/gitService.ts b/src/git/gitService.ts index bca7c24..aa3c4a0 100644 --- a/src/git/gitService.ts +++ b/src/git/gitService.ts @@ -8,7 +8,6 @@ import { env, Event, EventEmitter, - Extension, extensions, ProgressLocation, Range, @@ -4275,10 +4274,9 @@ export class GitService implements Disposable { @log() static async getBuiltInGitApi(): Promise { try { - const extension = extensions.getExtension('vscode.git') as Extension; + const extension = extensions.getExtension('vscode.git'); if (extension != null) { const gitExtension = extension.isActive ? extension.exports : await extension.activate(); - return gitExtension.getAPI(1); } } catch {} diff --git a/src/vsls/guest.ts b/src/vsls/guest.ts index 7726f56..5885efe 100644 --- a/src/vsls/guest.ts +++ b/src/vsls/guest.ts @@ -1,6 +1,6 @@ 'use strict'; import { CancellationToken, Disposable, window, WorkspaceFolder } from 'vscode'; -import { LiveShare, SharedServiceProxy } from 'vsls'; +import type { LiveShare, SharedServiceProxy } from '../@types/vsls'; import { setEnabled } from '../extension'; import { GitCommandOptions, Repository, RepositoryChangeEvent } from '../git/git'; import { Logger } from '../logger'; diff --git a/src/vsls/host.ts b/src/vsls/host.ts index 5cdd32b..ad2e425 100644 --- a/src/vsls/host.ts +++ b/src/vsls/host.ts @@ -1,6 +1,6 @@ 'use strict'; import { CancellationToken, Disposable, Uri, workspace, WorkspaceFoldersChangeEvent } from 'vscode'; -import { LiveShare, SharedService } from 'vsls'; +import type { LiveShare, SharedService } from '../@types/vsls'; import { Container } from '../container'; import { git } from '../git/git'; import { GitUri } from '../git/gitUri'; diff --git a/src/vsls/vsls.ts b/src/vsls/vsls.ts index 2ca0536..3120281 100644 --- a/src/vsls/vsls.ts +++ b/src/vsls/vsls.ts @@ -1,6 +1,6 @@ 'use strict'; -import { Disposable, workspace } from 'vscode'; -import { getApi, LiveShare, Role, SessionChangeEvent } from 'vsls'; +import { Disposable, extensions, workspace } from 'vscode'; +import type { LiveShare, LiveShareExtension, SessionChangeEvent } from '../@types/vsls'; import { ContextKeys, DocumentSchemes, setContext } from '../constants'; import { Container } from '../container'; import { Logger } from '../logger'; @@ -40,7 +40,7 @@ export class VslsController implements Disposable { private _onReady: (() => void) | undefined; private _waitForReady: Promise | undefined; - private _api: Promise | undefined; + private _api: Promise | undefined; constructor() { void this.initialize(); @@ -60,7 +60,7 @@ export class VslsController implements Disposable { this._waitForReady = new Promise(resolve => (this._onReady = resolve)); } - this._api = getApi(); + this._api = this.getLiveShareApi(); const api = await this._api; if (api == null) { void setContext(ContextKeys.Vsls, false); @@ -83,6 +83,18 @@ export class VslsController implements Disposable { } } + private async getLiveShareApi(): Promise { + try { + const extension = extensions.getExtension('ms-vsliveshare.vsliveshare'); + if (extension != null) { + const liveshareExtension = extension.isActive ? extension.exports : await extension.activate(); + return (await liveshareExtension.getApi('1.0.3015')) ?? undefined; + } + } catch {} + + return undefined; + } + get isMaybeGuest() { return this._guest !== undefined || this._waitForReady !== undefined; } @@ -112,7 +124,7 @@ export class VslsController implements Disposable { 0: (emails: string[]) => `length=${emails.length}`, }, }) - async getContacts(emails: string[]) { + private async getContacts(emails: string[]) { const api = await this._api; if (api == null) return undefined; @@ -144,7 +156,7 @@ export class VslsController implements Disposable { @debug() @timeout(250) - maybeGetPresence(email: string | undefined) { + maybeGetPresence(email: string | undefined): Promise { return Container.vsls.getContactPresence(email); } @@ -178,23 +190,18 @@ export class VslsController implements Disposable { } private async onLiveShareSessionChanged(api: LiveShare, e: SessionChangeEvent) { - if (this._host !== undefined) { - this._host.dispose(); - } - - if (this._guest !== undefined) { - this._guest.dispose(); - } + this._host?.dispose(); + this._guest?.dispose(); switch (e.session.role) { - case Role.Host: + case 1 /*Role.Host*/: this.setReadonly(false); void setContext(ContextKeys.Vsls, 'host'); if (Container.config.liveshare.allowGuestAccess) { this._host = await VslsHostService.share(api); } break; - case Role.Guest: + case 2 /*Role.Guest*/: this.setReadonly(true); void setContext(ContextKeys.Vsls, 'guest'); this._guest = await VslsGuestService.connect(api); diff --git a/yarn.lock b/yarn.lock index 117efb9..153e229 100644 --- a/yarn.lock +++ b/yarn.lock @@ -59,17 +59,6 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== -"@microsoft/servicehub-framework@^2.6.74": - version "2.6.74" - resolved "https://registry.yarnpkg.com/@microsoft/servicehub-framework/-/servicehub-framework-2.6.74.tgz#7c45717adea4f6fe2bd0c8bbe572f42c64a13a83" - integrity sha512-QJ//zzvxffupIkzupnVbMYY5YDOP+g5FlG6x0Pl7svRyq8pAouiibckJJcZlMtsMypKWwAnVBKb9/sonEOsUxw== - dependencies: - await-semaphore "^0.1.3" - msgpack-lite "^0.1.26" - nerdbank-streams "2.5.60" - strict-event-emitter-types "^2.0.0" - vscode-jsonrpc "^4.0.0" - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -166,9 +155,9 @@ "@types/estree" "*" "@types/eslint@*": - version "7.2.14" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.14.tgz#088661518db0c3c23089ab45900b99dd9214b92a" - integrity sha512-pESyhSbUOskqrGcaN+bCXIQDyT5zTaRWfj5ZjjSlMatgGjIn3QQPfocAu4WSabUR7CGyLZ2CQaZyISOEX7/saw== + version "7.28.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" + integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -214,9 +203,9 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/node@*": - version "16.3.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.3.0.tgz#1836664e4fad13b51b07eb6e882a53925e6543c4" - integrity sha512-OydMCocGMGqw/1BnWbhtK+AtwyWTOigtrQlRe57OQmTNcI3HKlVI5FGlh+c4mSqInMPLynFrTlYjfajPu9O/eQ== + version "16.3.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.3.1.tgz#24691fa2b0c3ec8c0d34bfcfd495edac5593ebb4" + integrity sha512-N87VuQi7HEeRJkhzovao/JviiqKjDKMVKxKMfUvSKw+MbkbW8R0nA3fi/MQhhlxV2fQ+2ReM+/Nt4efdrJx3zA== "@types/node@14.17.4": version "14.17.4" @@ -276,73 +265,73 @@ anymatch "^3.0.0" source-map "^0.6.0" -"@typescript-eslint/eslint-plugin@4.28.2": - version "4.28.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.2.tgz#7a8320f00141666813d0ae43b49ee8244f7cf92a" - integrity sha512-PGqpLLzHSxq956rzNGasO3GsAPf2lY9lDUBXhS++SKonglUmJypaUtcKzRtUte8CV7nruwnDxtLUKpVxs0wQBw== +"@typescript-eslint/eslint-plugin@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.3.tgz#36cdcd9ca6f9e5cb49b9f61b970b1976708d084b" + integrity sha512-jW8sEFu1ZeaV8xzwsfi6Vgtty2jf7/lJmQmDkDruBjYAbx5DA8JtbcMnP0rNPUG+oH5GoQBTSp+9613BzuIpYg== dependencies: - "@typescript-eslint/experimental-utils" "4.28.2" - "@typescript-eslint/scope-manager" "4.28.2" + "@typescript-eslint/experimental-utils" "4.28.3" + "@typescript-eslint/scope-manager" "4.28.3" debug "^4.3.1" functional-red-black-tree "^1.0.1" regexpp "^3.1.0" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/experimental-utils@4.28.2": - version "4.28.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.2.tgz#4ebdec06a10888e9326e1d51d81ad52a361bd0b0" - integrity sha512-MwHPsL6qo98RC55IoWWP8/opTykjTp4JzfPu1VfO2Z0MshNP0UZ1GEV5rYSSnZSUI8VD7iHvtIPVGW5Nfh7klQ== +"@typescript-eslint/experimental-utils@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.3.tgz#976f8c1191b37105fd06658ed57ddfee4be361ca" + integrity sha512-zZYl9TnrxwEPi3FbyeX0ZnE8Hp7j3OCR+ELoUfbwGHGxWnHg9+OqSmkw2MoCVpZksPCZYpQzC559Ee9pJNHTQw== dependencies: "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.28.2" - "@typescript-eslint/types" "4.28.2" - "@typescript-eslint/typescript-estree" "4.28.2" + "@typescript-eslint/scope-manager" "4.28.3" + "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/typescript-estree" "4.28.3" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/parser@4.28.2": - version "4.28.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.2.tgz#6aff11bf4b91eb67ca7517962eede951e9e2a15d" - integrity sha512-Q0gSCN51eikAgFGY+gnd5p9bhhCUAl0ERMiDKrTzpSoMYRubdB8MJrTTR/BBii8z+iFwz8oihxd0RAdP4l8w8w== +"@typescript-eslint/parser@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.3.tgz#95f1d475c08268edffdcb2779993c488b6434b44" + integrity sha512-ZyWEn34bJexn/JNYvLQab0Mo5e+qqQNhknxmc8azgNd4XqspVYR5oHq9O11fLwdZMRcj4by15ghSlIEq+H5ltQ== dependencies: - "@typescript-eslint/scope-manager" "4.28.2" - "@typescript-eslint/types" "4.28.2" - "@typescript-eslint/typescript-estree" "4.28.2" + "@typescript-eslint/scope-manager" "4.28.3" + "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/typescript-estree" "4.28.3" debug "^4.3.1" -"@typescript-eslint/scope-manager@4.28.2": - version "4.28.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.2.tgz#451dce90303a3ce283750111495d34c9c204e510" - integrity sha512-MqbypNjIkJFEFuOwPWNDjq0nqXAKZvDNNs9yNseoGBB1wYfz1G0WHC2AVOy4XD7di3KCcW3+nhZyN6zruqmp2A== +"@typescript-eslint/scope-manager@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.3.tgz#c32ad4491b3726db1ba34030b59ea922c214e371" + integrity sha512-/8lMisZ5NGIzGtJB+QizQ5eX4Xd8uxedFfMBXOKuJGP0oaBBVEMbJVddQKDXyyB0bPlmt8i6bHV89KbwOelJiQ== dependencies: - "@typescript-eslint/types" "4.28.2" - "@typescript-eslint/visitor-keys" "4.28.2" + "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/visitor-keys" "4.28.3" -"@typescript-eslint/types@4.28.2": - version "4.28.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.2.tgz#e6b9e234e0e9a66c4d25bab881661e91478223b5" - integrity sha512-Gr15fuQVd93uD9zzxbApz3wf7ua3yk4ZujABZlZhaxxKY8ojo448u7XTm/+ETpy0V0dlMtj6t4VdDvdc0JmUhA== +"@typescript-eslint/types@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.3.tgz#8fffd436a3bada422c2c1da56060a0566a9506c7" + integrity sha512-kQFaEsQBQVtA9VGVyciyTbIg7S3WoKHNuOp/UF5RG40900KtGqfoiETWD/v0lzRXc+euVE9NXmfer9dLkUJrkA== -"@typescript-eslint/typescript-estree@4.28.2": - version "4.28.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.2.tgz#680129b2a285289a15e7c6108c84739adf3a798c" - integrity sha512-86lLstLvK6QjNZjMoYUBMMsULFw0hPHJlk1fzhAVoNjDBuPVxiwvGuPQq3fsBMCxuDJwmX87tM/AXoadhHRljg== +"@typescript-eslint/typescript-estree@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.3.tgz#253d7088100b2a38aefe3c8dd7bd1f8232ec46fb" + integrity sha512-YAb1JED41kJsqCQt1NcnX5ZdTA93vKFCMP4lQYG6CFxd0VzDJcKttRlMrlG+1qiWAw8+zowmHU1H0OzjWJzR2w== dependencies: - "@typescript-eslint/types" "4.28.2" - "@typescript-eslint/visitor-keys" "4.28.2" + "@typescript-eslint/types" "4.28.3" + "@typescript-eslint/visitor-keys" "4.28.3" debug "^4.3.1" globby "^11.0.3" is-glob "^4.0.1" semver "^7.3.5" tsutils "^3.21.0" -"@typescript-eslint/visitor-keys@4.28.2": - version "4.28.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.2.tgz#bf56a400857bb68b59b311e6d0a5fbef5c3b5130" - integrity sha512-aT2B4PLyyRDUVUafXzpZFoc0C9t0za4BJAKP5sgWIhG+jHECQZUEjuQSCIwZdiJJ4w4cgu5r3Kh20SOdtEBl0w== +"@typescript-eslint/visitor-keys@4.28.3": + version "4.28.3" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.3.tgz#26ac91e84b23529968361045829da80a4e5251c4" + integrity sha512-ri1OzcLnk1HH4gORmr1dllxDzzrN6goUIz/P4MHFV0YZJDCADPR3RvYNp0PW2SetKTThar6wlbFTL00hV2Q+fg== dependencies: - "@typescript-eslint/types" "4.28.2" + "@typescript-eslint/types" "4.28.3" eslint-visitor-keys "^2.0.0" "@webassemblyjs/ast@1.11.1": @@ -651,15 +640,10 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -await-semaphore@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" - integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== - -azure-devops-node-api@^10.2.2: - version "10.2.2" - resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz#9f557e622dd07bbaa9bd5e7e84e17c761e2151b2" - integrity sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow== +azure-devops-node-api@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz#b7ec4783230e1de8fc972b23effe7ed2ebac17ff" + integrity sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A== dependencies: tunnel "0.0.6" typed-rest-client "^1.8.4" @@ -854,21 +838,11 @@ camelcase@^2.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= -cancellationtoken@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cancellationtoken/-/cancellationtoken-2.2.0.tgz#a3d93cb8675f29dd1574a358b72adbde3da89aeb" - integrity sha512-uF4sHE5uh2VdEZtIRJKGoXAD9jm7bFY0tDRCzH4iLp262TOJ2lrtNHjMG2zc8H+GICOpELIpM7CGW5JeWnb3Hg== - caniuse-lite@^1.0.30001219: version "1.0.30001243" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001243.tgz#d9250155c91e872186671c523f3ae50cfc94a3aa" integrity sha512-vNxw9mkTBtkmLFnJRv/2rhs1yufpDfCkBZexG3Y0xdOH2Z/eE/85E4Dl5j1YUN34nZVsSp6vVRFQRrez9wJMRA== -caught@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/caught/-/caught-0.1.3.tgz#f63db0d65f1bacea7cb4852cd8f1d72166a2c8bf" - integrity sha512-DTWI84qfoqHEV5jHRpsKNnEisVCeuBDscXXaXyRLXC+4RD6rFftUNuTElcQ7LeO7w622pfzWkA1f6xu5qEAidw== - caw@^2.0.0, caw@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" @@ -1450,9 +1424,9 @@ duplexer@^0.1.2: integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== electron-to-chromium@^1.3.723: - version "1.3.771" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.771.tgz#c4aa601e6420e11926095f75fe803956a1b4bd81" - integrity sha512-zHMomTqkpnAD9W5rhXE1aiU3ogGFrqWzdvM4C6222SREiqsWQb2w0S7P2Ii44qCaGimmAP1z+OydllM438uJyA== + version "1.3.774" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.774.tgz#4d6661a23119e35151646c9543b346bb3beca423" + integrity sha512-Fggh17Q1yyv1uMzq8Qn1Ci58P50qcRXMXd2MBcB9sxo6rJxjUutWcNw8uCm3gFWMdcblBO6mDT5HzX/RVRRECA== emoji-regex@^8.0.0: version "8.0.0" @@ -1754,11 +1728,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -event-lite@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/event-lite/-/event-lite-0.1.2.tgz#838a3e0fdddef8cc90f128006c8e55a4e4e4c11b" - integrity sha512-HnSYx1BsJ87/p6swwzv+2v6B4X+uxUteoDfRxsAb1S1BePzQqOLevVmkdA15GHJVd9A9Ok6wygUR18Hu0YeV9g== - events@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -2357,7 +2326,7 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== -ieee754@^1.1.13, ieee754@^1.1.8: +ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -2456,11 +2425,6 @@ ini@^1.3.4: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -int64-buffer@^0.1.9: - version "0.1.10" - resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-0.1.10.tgz#277b228a87d95ad777d07c13832022406a473423" - integrity sha1-J3siiofZWtd30HwTgyAiQGpHNCM= - interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" @@ -2638,7 +2602,7 @@ is-utf8@^0.2.0: resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -isarray@^1.0.0, isarray@~1.0.0: +isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= @@ -3051,16 +3015,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msgpack-lite@^0.1.26: - version "0.1.26" - resolved "https://registry.yarnpkg.com/msgpack-lite/-/msgpack-lite-0.1.26.tgz#dd3c50b26f059f25e7edee3644418358e2a9ad89" - integrity sha1-3TxQsm8FnyXn7e42REGDWOKprYk= - dependencies: - event-lite "^0.1.1" - ieee754 "^1.1.8" - int64-buffer "^0.1.9" - isarray "^1.0.0" - mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -3081,16 +3035,6 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nerdbank-streams@2.5.60: - version "2.5.60" - resolved "https://registry.yarnpkg.com/nerdbank-streams/-/nerdbank-streams-2.5.60.tgz#455edb9a71070a0964a1b39eee5afb30ef826cd6" - integrity sha512-saQaMyTtVDAEc+S+BPXKM6K1AF3FyrorFSDzaCkdmtDe2kZzu1aYPQZNLmnxJhxbTcghYrEmYFFoaDxBDVadCw== - dependencies: - await-semaphore "^0.1.3" - cancellationtoken "^2.0.1" - caught "^0.1.3" - msgpack-lite "^0.1.26" - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -3173,9 +3117,9 @@ object-assign@^4.0.1, object-assign@^4.1.0: integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= object-inspect@^1.10.3, object-inspect@^1.9.0: - version "1.10.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" - integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -4129,11 +4073,6 @@ squeak@^1.0.0: console-stream "^0.1.1" lpad-align "^1.0.1" -strict-event-emitter-types@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-event-emitter-types/-/strict-event-emitter-types-2.0.0.tgz#05e15549cb4da1694478a53543e4e2f4abcf277f" - integrity sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA== - strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -4579,12 +4518,12 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -vsce@1.95.0: - version "1.95.0" - resolved "https://registry.yarnpkg.com/vsce/-/vsce-1.95.0.tgz#852a5f9c9c6c03c42e8096ffdb032a07260369ed" - integrity sha512-OiSrJRd9NT4t+MBVrTblHqo0pOGaoplHzEzSNOGnIsLxyRIqk4CYmoqUnjOrZf8DEalbALsFVTFbTJLeC1hAKA== +vsce@1.95.1: + version "1.95.1" + resolved "https://registry.yarnpkg.com/vsce/-/vsce-1.95.1.tgz#95b465c3188508eabc8af72f3e20b632dd71c0da" + integrity sha512-2v8g3ZtZkaOTscRjjCAtM3Au6YYWJtg9UNt1iyyWko7ZHejbt5raClcNzQ7/WYVLYhYHc+otHQifV0gCBREgNg== dependencies: - azure-devops-node-api "^10.2.2" + azure-devops-node-api "^11.0.1" chalk "^2.4.2" cheerio "^1.0.0-rc.9" commander "^6.1.0" @@ -4610,18 +4549,6 @@ vscode-codicons@0.0.17: resolved "https://registry.yarnpkg.com/vscode-codicons/-/vscode-codicons-0.0.17.tgz#5ab4f2015641adaa1a73136195ba916aebf8764d" integrity sha512-Hzclzhz9ouj5sfjDbXE78fciSGwDrlOMimkRIxFNy0pmHoexzLH1+OKTbrlR+Gz17C9ZCfX7Mlpq21jGsyhgSg== -vscode-jsonrpc@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-4.0.0.tgz#a7bf74ef3254d0a0c272fab15c82128e378b3be9" - integrity sha512-perEnXQdQOJMTDFNv+UF3h1Y0z4iSiaN9jIlb0OqIYgosPCZGYh/MCUlkFtV2668PL69lRDO32hmvL2yiidUYg== - -vsls@1.0.3015: - version "1.0.3015" - resolved "https://registry.yarnpkg.com/vsls/-/vsls-1.0.3015.tgz#346b034990aa2ff875c769fb7bf2abab085bb1d6" - integrity sha512-c+hG4X/aNdR4PM2nxUeooTEyDav8TQ8exfLSWIWp+h+us1jjhxGk2K+PDCrJxJmeIra/Ku4sdqMRv7P9hF6MRA== - dependencies: - "@microsoft/servicehub-framework" "^2.6.74" - watchpack@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.2.0.tgz#47d78f5415fe550ecd740f99fe2882323a58b1ce" @@ -4752,9 +4679,9 @@ wrappy@1: integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= ws@^7.3.1: - version "7.5.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.2.tgz#09cc8fea3bec1bc5ed44ef51b42f945be36900f6" - integrity sha512-lkF7AWRicoB9mAgjeKbGqVUekLnSNO4VjKVnuPHpQeOxZOErX6BPXwJk70nFslRCEEA8EVW7ZjKwXaP9N+1sKQ== + version "7.5.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" + integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== xtend@^4.0.0: version "4.0.2"