Merge VS Code 1.30.1 (#4092)

This commit is contained in:
Matt Irvine
2019-02-21 17:17:23 -08:00
committed by GitHub
parent a764a481f3
commit 826856c390
11465 changed files with 119542 additions and 255338 deletions

View File

@@ -7,12 +7,12 @@
import * as extHostApi from 'vs/workbench/api/node/extHost.api.impl';
import { TrieMap } from 'sql/base/common/map';
import { TPromise } from 'vs/base/common/winjs.base';
import { IInitData, IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
import { IInitData, IExtHostContext, IMainContext } from 'vs/workbench/api/node/extHost.protocol';
import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
import { realpath } from 'fs';
import * as extHostTypes from 'vs/workbench/api/node/extHostTypes';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import * as sqlops from 'sqlops';
import * as vscode from 'vscode';
@@ -39,10 +39,12 @@ import { ExtHostQueryEditor } from 'sql/workbench/api/node/extHostQueryEditor';
import { ExtHostBackgroundTaskManagement } from './extHostBackgroundTaskManagement';
import { ExtHostNotebook } from 'sql/workbench/api/node/extHostNotebook';
import { ExtHostNotebookDocumentsAndEditors } from 'sql/workbench/api/node/extHostNotebookDocumentsAndEditors';
import { ExtHostStorage } from 'vs/workbench/api/node/extHostStorage';
import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/node/extensionDescriptionRegistry';
import { ExtHostExtensionManagement } from 'sql/workbench/api/node/extHostExtensionManagement';
export interface ISqlExtensionApiFactory {
vsCodeFactory(extension: IExtensionDescription): typeof vscode;
vsCodeFactory(extension: IExtensionDescription, registry: ExtensionDescriptionRegistry): typeof vscode;
sqlopsFactory(extension: IExtensionDescription): typeof sqlops;
}
@@ -51,13 +53,14 @@ export interface ISqlExtensionApiFactory {
*/
export function createApiFactory(
initData: IInitData,
rpcProtocol: IExtHostContext,
rpcProtocol: IMainContext,
extHostWorkspace: ExtHostWorkspace,
extHostConfiguration: ExtHostConfiguration,
extensionService: ExtHostExtensionService,
logService: ExtHostLogService
logService: ExtHostLogService,
extHostStorage: ExtHostStorage
): ISqlExtensionApiFactory {
let vsCodeFactory = extHostApi.createApiFactory(initData, rpcProtocol, extHostWorkspace, extHostConfiguration, extensionService, logService);
let vsCodeFactory = extHostApi.createApiFactory(initData, rpcProtocol, extHostWorkspace, extHostConfiguration, extensionService, logService, extHostStorage);
// Addressable instances
const extHostAccountManagement = rpcProtocol.set(SqlExtHostContext.ExtHostAccountManagement, new ExtHostAccountManagement(rpcProtocol));
@@ -373,11 +376,11 @@ export function createApiFactory(
const modelViewDialog: typeof sqlops.window.modelviewdialog = {
createDialog(title: string, dialogName?: string): sqlops.window.modelviewdialog.Dialog {
console.warn('the method sqlops.window.modelviewdialog.createDialog has been deprecated, replace it with sqlops.window.createModelViewDialog');
return extHostModelViewDialog.createDialog(title, dialogName, extension.extensionLocation);
return extHostModelViewDialog.createDialog(title, dialogName, extension);
},
createTab(title: string): sqlops.window.modelviewdialog.DialogTab {
console.warn('the method sqlops.window.modelviewdialog.createTab has been deprecated, replace it with sqlops.window.createTab');
return extHostModelViewDialog.createTab(title, extension.extensionLocation);
return extHostModelViewDialog.createTab(title, extension);
},
createButton(label: string): sqlops.window.modelviewdialog.Button {
console.warn('the method sqlops.window.modelviewdialog.createButton has been deprecated, replace it with sqlops.window.createButton');
@@ -412,10 +415,10 @@ export function createApiFactory(
return extHostModalDialogs.createDialog(name);
},
createModelViewDialog(title: string, dialogName?: string): sqlops.window.Dialog {
return extHostModelViewDialog.createDialog(title, dialogName, extension.extensionLocation);
return extHostModelViewDialog.createDialog(title, dialogName, extension);
},
createTab(title: string): sqlops.window.DialogTab {
return extHostModelViewDialog.createTab(title, extension.extensionLocation);
return extHostModelViewDialog.createTab(title, extension);
},
createButton(label: string): sqlops.window.Button {
return extHostModelViewDialog.createButton(label);
@@ -449,7 +452,7 @@ export function createApiFactory(
onDidOpenDashboard: extHostDashboard.onDidOpenDashboard,
onDidChangeToDashboard: extHostDashboard.onDidChangeToDashboard,
createModelViewEditor(title: string, options?: sqlops.ModelViewEditorOptions): sqlops.workspace.ModelViewEditor {
return extHostModelViewDialog.createModelViewEditor(title, extension.extensionLocation, options);
return extHostModelViewDialog.createModelViewEditor(title, extension, options);
}
};
@@ -461,7 +464,7 @@ export function createApiFactory(
const ui = {
registerModelViewProvider(modelViewId: string, handler: (view: sqlops.ModelView) => void): void {
extHostModelView.$registerProvider(modelViewId, handler, extension.extensionLocation);
extHostModelView.$registerProvider(modelViewId, handler, extension);
}
};
@@ -553,19 +556,19 @@ export function createApiFactory(
};
}
export function initializeExtensionApi(extensionService: ExtHostExtensionService, apiFactory: ISqlExtensionApiFactory): TPromise<void> {
return createExtensionPathIndex(extensionService).then(trie => defineAPI(apiFactory, trie));
export function initializeExtensionApi(extensionService: ExtHostExtensionService, apiFactory: ISqlExtensionApiFactory, extensionRegistry: ExtensionDescriptionRegistry): TPromise<void> {
return createExtensionPathIndex(extensionService, extensionRegistry).then(trie => defineAPI(apiFactory, trie, extensionRegistry));
}
function createExtensionPathIndex(extensionService: ExtHostExtensionService): TPromise<TrieMap<IExtensionDescription>> {
function createExtensionPathIndex(extensionService: ExtHostExtensionService, extensionRegistry: ExtensionDescriptionRegistry): Promise<TrieMap<IExtensionDescription>> {
// create trie to enable fast 'filename -> extension id' look up
const trie = new TrieMap<IExtensionDescription>(TrieMap.PathSplitter);
const extensions = extensionService.getAllExtensionDescriptions().map(ext => {
const extensions = extensionRegistry.getAllExtensionDescriptions().map(ext => {
if (!ext.main) {
return undefined;
}
return new TPromise((resolve, reject) => {
return new Promise((resolve, reject) => {
realpath(ext.extensionLocation.fsPath, (err, path) => {
if (err) {
reject(err);
@@ -577,10 +580,10 @@ function createExtensionPathIndex(extensionService: ExtHostExtensionService): TP
});
});
return TPromise.join(extensions).then(() => trie);
return Promise.all(extensions).then(() => trie);
}
function defineAPI(factory: ISqlExtensionApiFactory, extensionPaths: TrieMap<IExtensionDescription>): void {
function defineAPI(factory: ISqlExtensionApiFactory, extensionPaths: TrieMap<IExtensionDescription>, extensionRegistry: ExtensionDescriptionRegistry): void {
type ApiImpl = typeof vscode | typeof sqlops;
// each extension is meant to get its own api implementation
@@ -622,7 +625,7 @@ function defineAPI(factory: ISqlExtensionApiFactory, extensionPaths: TrieMap<IEx
// TODO look into de-duplicating this code
node_module._load = function load(request, parent, isMain) {
if (request === 'vscode') {
return getModuleFactory(extApiImpl, (ext) => factory.vsCodeFactory(ext),
return getModuleFactory(extApiImpl, (ext) => factory.vsCodeFactory(ext, extensionRegistry),
defaultApiImpl,
(impl) => defaultApiImpl = <typeof vscode>impl,
parent);