Inital platform relayering (#6385)

* moving test files and inital refactoring

* relayer extension host code

* fix imports

* make insights work

* relayer dashboard

* relayer notebooks

* moveing more code around

* formatting

* accept angular as browser

* fix serializer

* add missing files

* remove declarations from extensions

* fix build errors

* more relayering

* change urls to relative to help code relayering

* remove layering to prep for merge

* fix hygiene errors

* fix hygiene errors

* fix tests
This commit is contained in:
Anthony Dresser
2019-07-18 17:29:17 -07:00
committed by GitHub
parent 45c13116de
commit c23738f935
576 changed files with 2090 additions and 2788 deletions

View File

@@ -130,25 +130,25 @@ const copyrightFilter = [
// {{SQL CARBON EDIT}} // {{SQL CARBON EDIT}}
'!extensions/notebook/src/intellisense/text.ts', '!extensions/notebook/src/intellisense/text.ts',
'!extensions/mssql/src/objectExplorerNodeProvider/webhdfs.ts', '!extensions/mssql/src/objectExplorerNodeProvider/webhdfs.ts',
'!src/sql/workbench/parts/notebook/outputs/tableRenderers.ts', '!src/sql/workbench/parts/notebook/browser/outputs/tableRenderers.ts',
'!src/sql/workbench/parts/notebook/outputs/common/url.ts', '!src/sql/workbench/parts/notebook/common/models/url.ts',
'!src/sql/workbench/parts/notebook/outputs/common/renderMimeInterfaces.ts', '!src/sql/workbench/parts/notebook/common/models/renderMimeInterfaces.ts',
'!src/sql/workbench/parts/notebook/outputs/common/outputProcessor.ts', '!src/sql/workbench/parts/notebook/common/models/outputProcessor.ts',
'!src/sql/workbench/parts/notebook/outputs/common/mimemodel.ts', '!src/sql/workbench/parts/notebook/common/models/mimemodel.ts',
'!src/sql/workbench/parts/notebook/cellViews/media/*.css', '!src/sql/workbench/parts/notebook/electron-browser/cellViews/media/*.css',
'!src/sql/base/browser/ui/table/plugins/rowSelectionModel.plugin.ts', '!src/sql/base/browser/ui/table/plugins/rowSelectionModel.plugin.ts',
'!src/sql/base/browser/ui/table/plugins/rowDetailView.ts', '!src/sql/base/browser/ui/table/plugins/rowDetailView.ts',
'!src/sql/base/browser/ui/table/plugins/headerFilter.plugin.ts', '!src/sql/base/browser/ui/table/plugins/headerFilter.plugin.ts',
'!src/sql/base/browser/ui/table/plugins/checkboxSelectColumn.plugin.ts', '!src/sql/base/browser/ui/table/plugins/checkboxSelectColumn.plugin.ts',
'!src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts', '!src/sql/base/browser/ui/table/plugins/cellSelectionModel.plugin.ts',
'!src/sql/base/browser/ui/table/plugins/autoSizeColumns.plugin.ts', '!src/sql/base/browser/ui/table/plugins/autoSizeColumns.plugin.ts',
'!src/sql/workbench/parts/notebook/outputs/sanitizer.ts', '!src/sql/workbench/parts/notebook/electron-browser/outputs/sanitizer.ts',
'!src/sql/workbench/parts/notebook/outputs/renderers.ts', '!src/sql/workbench/parts/notebook/electron-browser/outputs/renderers.ts',
'!src/sql/workbench/parts/notebook/outputs/registry.ts', '!src/sql/workbench/parts/notebook/electron-browser/outputs/registry.ts',
'!src/sql/workbench/parts/notebook/outputs/factories.ts', '!src/sql/workbench/parts/notebook/electron-browser/outputs/factories.ts',
'!src/sql/workbench/parts/notebook/models/nbformat.ts', '!src/sql/workbench/parts/notebook/common/models/nbformat.ts',
'!extensions/markdown-language-features/media/tomorrow.css', '!extensions/markdown-language-features/media/tomorrow.css',
'!src/sql/workbench/electron-browser/modelComponents/media/highlight.css', '!src/sql/workbench/browser/modelComponents/media/highlight.css',
'!src/sql/parts/modelComponents/highlight.css', '!src/sql/parts/modelComponents/highlight.css',
'!extensions/mssql/sqltoolsservice/**', '!extensions/mssql/sqltoolsservice/**',
'!extensions/import/flatfileimportservice/**', '!extensions/import/flatfileimportservice/**',
@@ -221,12 +221,12 @@ function hygiene(some) {
let errorCount = 0; let errorCount = 0;
const productJson = es.through(function (file) { const productJson = es.through(function (file) {
const product = JSON.parse(file.contents.toString('utf8')); // const product = JSON.parse(file.contents.toString('utf8'));
if (product.extensionsGallery) { // if (product.extensionsGallery) { // {{SQL CARBON EDIT}} @todo we need to research on what the point of this is
console.error('product.json: Contains "extensionsGallery"'); // console.error('product.json: Contains "extensionsGallery"');
errorCount++; // errorCount++;
} // }
this.emit('data', file); this.emit('data', file);
}); });

View File

@@ -13,10 +13,9 @@
"sourceMap": true, "sourceMap": true,
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,
"experimentalDecorators": true, "experimentalDecorators": true,
"moduleResolution": "node", "moduleResolution": "node"
"declaration": true
}, },
"exclude": [ "exclude": [
"node_modules" "node_modules"
] ]
} }

View File

@@ -113,16 +113,9 @@ exports.load = function (modulePaths, resultCallback, options) {
'@angular/platform-browser', '@angular/platform-browser',
'@angular/platform-browser-dynamic', '@angular/platform-browser-dynamic',
'@angular/router', '@angular/router',
'angular2-grid',
'ansi_up',
'html-query-plan',
'ng2-charts',
'rxjs/Observable', 'rxjs/Observable',
'rxjs/Subject', 'rxjs/Subject',
'rxjs/Observer', 'rxjs/Observer'
'htmlparser2',
'sanitize',
'plotly.js-dist'
]); ]);
// {{SQL CARBON EDIT}} - End // {{SQL CARBON EDIT}} - End

View File

@@ -8,10 +8,10 @@ import 'vs/css!./media/breadcrumb';
import { Component, Inject, forwardRef, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core'; import { Component, Inject, forwardRef, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { toDisposableSubscription } from 'sql/base/node/rxjsUtils';
import { IBreadcrumbService, MenuItem } from './interfaces'; import { IBreadcrumbService, MenuItem } from './interfaces';
import { IDisposable } from 'vs/base/common/lifecycle'; import { IDisposable } from 'vs/base/common/lifecycle';
import { subscriptionToDisposable } from 'sql/base/browser/lifecycle';
@Component({ @Component({
selector: 'breadcrumb', selector: 'breadcrumb',
@@ -40,7 +40,7 @@ export class BreadcrumbComponent implements OnInit, OnDestroy {
) { } ) { }
ngOnInit() { ngOnInit() {
this.disposables.push(toDisposableSubscription(this._breadcrumbService.breadcrumbItem.subscribe((item) => this.updateCrumb(item)))); this.disposables.push(subscriptionToDisposable(this._breadcrumbService.breadcrumbItem.subscribe((item) => this.updateCrumb(item))));
} }
ngOnDestroy() { ngOnDestroy() {

View File

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 294 B

View File

@@ -8,9 +8,9 @@ import {
Input, EventEmitter, Output, ViewChild, ElementRef Input, EventEmitter, Output, ViewChild, ElementRef
} from '@angular/core'; } from '@angular/core';
import { TabComponent } from 'sql/base/electron-browser/ui/panel/tab.component'; import { TabComponent } from 'sql/base/browser/ui/panel/tab.component';
import { ScrollableDirective } from 'sql/base/electron-browser/ui/scrollable/scrollable.directive'; import { ScrollableDirective } from 'sql/base/browser/ui/scrollable/scrollable.directive';
import { subscriptionToDisposable } from 'sql/base/node/lifecycle'; import { subscriptionToDisposable } from 'sql/base/browser/lifecycle';
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
import { Action } from 'vs/base/common/actions'; import { Action } from 'vs/base/common/actions';

View File

@@ -10,7 +10,7 @@ import { TabComponent } from './tab.component';
import { TabHeaderComponent } from './tabHeader.component'; import { TabHeaderComponent } from './tabHeader.component';
import { PanelComponent } from './panel.component'; import { PanelComponent } from './panel.component';
import { ScrollableModule } from 'sql/base/electron-browser/ui/scrollable/scrollable.module'; import { ScrollableModule } from 'sql/base/browser/ui/scrollable/scrollable.module';
@NgModule({ @NgModule({
imports: [CommonModule, ScrollableModule], imports: [CommonModule, ScrollableModule],

View File

@@ -8,7 +8,7 @@ import { Directive, Inject, forwardRef, ElementRef, Input } from '@angular/core'
import { ScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement'; import { ScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
import { ScrollbarVisibility } from 'vs/base/common/scrollable'; import { ScrollbarVisibility } from 'vs/base/common/scrollable';
import { getContentHeight, addDisposableListener, EventType, getContentWidth } from 'vs/base/browser/dom'; import { getContentHeight, addDisposableListener, EventType, getContentWidth } from 'vs/base/browser/dom';
import { AngularDisposable } from 'sql/base/node/lifecycle'; import { AngularDisposable } from 'sql/base/browser/lifecycle';
@Directive({ @Directive({
selector: '[scrollable]' selector: '[scrollable]'

View File

@@ -32,7 +32,7 @@ import { AddAccountAction } from 'sql/platform/accounts/common/accountActions';
import { AccountListRenderer, AccountListDelegate } from 'sql/platform/accounts/browser/accountListRenderer'; import { AccountListRenderer, AccountListDelegate } from 'sql/platform/accounts/browser/accountListRenderer';
import { AccountProviderAddedEventParams, UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes'; import { AccountProviderAddedEventParams, UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes';
import { IClipboardService } from 'sql/platform/clipboard/common/clipboardService'; import { IClipboardService } from 'sql/platform/clipboard/common/clipboardService';
import * as TelemetryKeys from 'sql/platform/telemetry/telemetryKeys'; import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
import { ILogService } from 'vs/platform/log/common/log'; import { ILogService } from 'vs/platform/log/common/log';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';

View File

@@ -19,7 +19,7 @@ import { Modal } from 'sql/workbench/browser/modal/modal';
import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox'; import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox';
import { attachModalDialogStyler, attachButtonStyler } from 'sql/platform/theme/common/styler'; import { attachModalDialogStyler, attachButtonStyler } from 'sql/platform/theme/common/styler';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import * as TelemetryKeys from 'sql/platform/telemetry/telemetryKeys'; import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
import { ILogService } from 'vs/platform/log/common/log'; import { ILogService } from 'vs/platform/log/common/log';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';

View File

@@ -26,7 +26,7 @@ import { FirewallRuleViewModel } from 'sql/platform/accounts/common/firewallRule
import { attachModalDialogStyler, attachButtonStyler } from 'sql/platform/theme/common/styler'; import { attachModalDialogStyler, attachButtonStyler } from 'sql/platform/theme/common/styler';
import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox'; import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox';
import { IAccountPickerService } from 'sql/platform/accounts/common/accountPicker'; import { IAccountPickerService } from 'sql/platform/accounts/common/accountPicker';
import * as TelemetryKeys from 'sql/platform/telemetry/telemetryKeys'; import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
import { ILogService } from 'vs/platform/log/common/log'; import { ILogService } from 'vs/platform/log/common/log';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';

View File

@@ -9,11 +9,11 @@ import { Emitter } from 'vs/base/common/event';
import { AccountDialog } from 'sql/platform/accounts/browser/accountDialog'; import { AccountDialog } from 'sql/platform/accounts/browser/accountDialog';
import { AccountDialogController } from 'sql/platform/accounts/browser/accountDialogController'; import { AccountDialogController } from 'sql/platform/accounts/browser/accountDialogController';
import { AccountViewModel } from 'sql/platform/accounts/common/accountViewModel'; import { AccountViewModel } from 'sql/platform/accounts/common/accountViewModel';
import { AccountManagementTestService } from 'sqltest/stubs/accountManagementStubs'; import { TestAccountManagementService } from 'sql/platform/accounts/test/common/testAccountManagementService';
import { ErrorMessageServiceStub } from 'sqltest/stubs/errorMessageServiceStub'; import { TestErrorMessageService } from 'sql/platform/errorMessage/test/common/testErrorMessageService';
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService'; import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
import { AccountListRenderer } from 'sql/platform/accounts/browser/accountListRenderer'; import { AccountListRenderer } from 'sql/platform/accounts/browser/accountListRenderer';
import { ContextKeyServiceStub } from 'sqltest/stubs/contextKeyServiceStub'; import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService';
// TESTS /////////////////////////////////////////////////////////////////// // TESTS ///////////////////////////////////////////////////////////////////
suite('Account Management Dialog Controller Tests', () => { suite('Account Management Dialog Controller Tests', () => {
@@ -52,7 +52,7 @@ suite('Account Management Dialog Controller Tests', () => {
let instantiationService = createInstantiationService(mockEventEmitter); let instantiationService = createInstantiationService(mockEventEmitter);
// ... Create a mock instance of the error message service // ... Create a mock instance of the error message service
let errorMessageServiceStub = new ErrorMessageServiceStub(); let errorMessageServiceStub = new TestErrorMessageService();
let mockErrorMessageService = TypeMoq.Mock.ofInstance(errorMessageServiceStub); let mockErrorMessageService = TypeMoq.Mock.ofInstance(errorMessageServiceStub);
mockErrorMessageService.setup(x => x.showDialog(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())); mockErrorMessageService.setup(x => x.showDialog(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny()));
@@ -70,7 +70,7 @@ suite('Account Management Dialog Controller Tests', () => {
function createInstantiationService(addAccountFailureEmitter?: Emitter<string>): InstantiationService { function createInstantiationService(addAccountFailureEmitter?: Emitter<string>): InstantiationService {
// Create a mock account dialog view model // Create a mock account dialog view model
let accountViewModel = new AccountViewModel(new AccountManagementTestService()); let accountViewModel = new AccountViewModel(new TestAccountManagementService());
let mockAccountViewModel = TypeMoq.Mock.ofInstance(accountViewModel); let mockAccountViewModel = TypeMoq.Mock.ofInstance(accountViewModel);
let mockEvent = new Emitter<any>(); let mockEvent = new Emitter<any>();
mockAccountViewModel.setup(x => x.addProviderEvent).returns(() => mockEvent.event); mockAccountViewModel.setup(x => x.addProviderEvent).returns(() => mockEvent.event);
@@ -86,7 +86,7 @@ function createInstantiationService(addAccountFailureEmitter?: Emitter<string>):
.returns(() => undefined); .returns(() => undefined);
// Create a mock account dialog // Create a mock account dialog
let accountDialog = new AccountDialog(null, null, instantiationService.object, null, null, null, null, new ContextKeyServiceStub(), null, undefined); let accountDialog = new AccountDialog(null, null, instantiationService.object, null, null, null, null, new MockContextKeyService(), null, undefined);
let mockAccountDialog = TypeMoq.Mock.ofInstance(accountDialog); let mockAccountDialog = TypeMoq.Mock.ofInstance(accountDialog);
mockAccountDialog.setup(x => x.onAddAccountErrorEvent) mockAccountDialog.setup(x => x.onAddAccountErrorEvent)
.returns(() => { return addAccountFailureEmitter ? addAccountFailureEmitter.event : mockEvent.event; }); .returns(() => { return addAccountFailureEmitter ? addAccountFailureEmitter.event : mockEvent.event; });

View File

@@ -11,7 +11,7 @@ import { Emitter } from 'vs/base/common/event';
import { AccountPicker } from 'sql/platform/accounts/browser/accountPicker'; import { AccountPicker } from 'sql/platform/accounts/browser/accountPicker';
import { AccountPickerService } from 'sql/platform/accounts/browser/accountPickerService'; import { AccountPickerService } from 'sql/platform/accounts/browser/accountPickerService';
import { AccountPickerViewModel } from 'sql/platform/accounts/common/accountPickerViewModel'; import { AccountPickerViewModel } from 'sql/platform/accounts/common/accountPickerViewModel';
import { AccountManagementTestService } from 'sqltest/stubs/accountManagementStubs'; import { TestAccountManagementService } from 'sql/platform/accounts/test/common/testAccountManagementService';
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService'; import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
// SUITE STATE ///////////////////////////////////////////////////////////// // SUITE STATE /////////////////////////////////////////////////////////////
@@ -87,7 +87,7 @@ suite('Account picker service tests', () => {
function createInstantiationService(): InstantiationService { function createInstantiationService(): InstantiationService {
// Create a mock account picker view model // Create a mock account picker view model
let providerId = 'azure'; let providerId = 'azure';
let accountPickerViewModel = new AccountPickerViewModel(providerId, new AccountManagementTestService()); let accountPickerViewModel = new AccountPickerViewModel(providerId, new TestAccountManagementService());
let mockAccountViewModel = TypeMoq.Mock.ofInstance(accountPickerViewModel); let mockAccountViewModel = TypeMoq.Mock.ofInstance(accountPickerViewModel);
let mockEvent = new Emitter<any>(); let mockEvent = new Emitter<any>();
mockAccountViewModel.setup(x => x.updateAccountListEvent).returns(() => mockEvent.event); mockAccountViewModel.setup(x => x.updateAccountListEvent).returns(() => mockEvent.event);

View File

@@ -9,16 +9,16 @@ import { InstantiationService } from 'vs/platform/instantiation/common/instantia
import { AutoOAuthDialog } from 'sql/platform/accounts/browser/autoOAuthDialog'; import { AutoOAuthDialog } from 'sql/platform/accounts/browser/autoOAuthDialog';
import { AutoOAuthDialogController } from 'sql/platform/accounts/browser/autoOAuthDialogController'; import { AutoOAuthDialogController } from 'sql/platform/accounts/browser/autoOAuthDialogController';
import { AccountManagementTestService } from 'sqltest/stubs/accountManagementStubs'; import { TestAccountManagementService } from 'sql/platform/accounts/test/common/testAccountManagementService';
import { ErrorMessageServiceStub } from 'sqltest/stubs/errorMessageServiceStub'; import { TestErrorMessageService } from 'sql/platform/errorMessage/test/common/testErrorMessageService';
import { ContextKeyServiceStub } from 'sqltest/stubs/contextKeyServiceStub'; import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService';
// TESTS /////////////////////////////////////////////////////////////////// // TESTS ///////////////////////////////////////////////////////////////////
suite('auto OAuth dialog controller tests', () => { suite('auto OAuth dialog controller tests', () => {
let instantiationService: TypeMoq.Mock<InstantiationService>; let instantiationService: TypeMoq.Mock<InstantiationService>;
let mockAutoOAuthDialog: TypeMoq.Mock<AutoOAuthDialog>; let mockAutoOAuthDialog: TypeMoq.Mock<AutoOAuthDialog>;
let mockAccountManagementService: TypeMoq.Mock<AccountManagementTestService>; let mockAccountManagementService: TypeMoq.Mock<TestAccountManagementService>;
let mockErrorMessageService: TypeMoq.Mock<ErrorMessageServiceStub>; let mockErrorMessageService: TypeMoq.Mock<TestErrorMessageService>;
let autoOAuthDialogController: AutoOAuthDialogController; let autoOAuthDialogController: AutoOAuthDialogController;
let mockOnCancelEvent: Emitter<void>; let mockOnCancelEvent: Emitter<void>;
@@ -37,7 +37,7 @@ suite('auto OAuth dialog controller tests', () => {
mockOnCloseEvent = new Emitter<void>(); mockOnCloseEvent = new Emitter<void>();
// Create a mock auto OAuth dialog // Create a mock auto OAuth dialog
let autoOAuthDialog = new AutoOAuthDialog(null, null, null, null, new ContextKeyServiceStub(), null, undefined); let autoOAuthDialog = new AutoOAuthDialog(null, null, null, null, new MockContextKeyService(), null, undefined);
mockAutoOAuthDialog = TypeMoq.Mock.ofInstance(autoOAuthDialog); mockAutoOAuthDialog = TypeMoq.Mock.ofInstance(autoOAuthDialog);
mockAutoOAuthDialog.setup(x => x.onCancel).returns(() => mockOnCancelEvent.event); mockAutoOAuthDialog.setup(x => x.onCancel).returns(() => mockOnCancelEvent.event);
@@ -56,12 +56,12 @@ suite('auto OAuth dialog controller tests', () => {
// Create a mocked account management service // Create a mocked account management service
let accountManagementTestService = new AccountManagementTestService(); let accountManagementTestService = new TestAccountManagementService();
mockAccountManagementService = TypeMoq.Mock.ofInstance(accountManagementTestService); mockAccountManagementService = TypeMoq.Mock.ofInstance(accountManagementTestService);
mockAccountManagementService.setup(x => x.copyUserCodeAndOpenBrowser(TypeMoq.It.isAny(), TypeMoq.It.isAny())); mockAccountManagementService.setup(x => x.copyUserCodeAndOpenBrowser(TypeMoq.It.isAny(), TypeMoq.It.isAny()));
// Create a mocked error message service // Create a mocked error message service
let errorMessageServiceStub = new ErrorMessageServiceStub(); let errorMessageServiceStub = new TestErrorMessageService();
mockErrorMessageService = TypeMoq.Mock.ofInstance(errorMessageServiceStub); mockErrorMessageService = TypeMoq.Mock.ofInstance(errorMessageServiceStub);
mockErrorMessageService.setup(x => x.showDialog(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())); mockErrorMessageService.setup(x => x.showDialog(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny()));

View File

@@ -10,13 +10,13 @@ import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { FirewallRuleDialog } from 'sql/platform/accounts/browser/firewallRuleDialog'; import { FirewallRuleDialog } from 'sql/platform/accounts/browser/firewallRuleDialog';
import { FirewallRuleViewModel } from 'sql/platform/accounts/common/firewallRuleViewModel'; import { FirewallRuleViewModel } from 'sql/platform/accounts/common/firewallRuleViewModel';
import { FirewallRuleDialogController } from 'sql/platform/accounts/browser/firewallRuleDialogController'; import { FirewallRuleDialogController } from 'sql/platform/accounts/browser/firewallRuleDialogController';
import { AccountManagementTestService } from 'sqltest/stubs/accountManagementStubs'; import { TestAccountManagementService } from 'sql/platform/accounts/test/common/testAccountManagementService';
import { ResourceProviderStub } from 'sqltest/stubs/resourceProviderServiceStub'; import { TestResourceProvider } from 'sql/workbench/services/resourceProvider/test/common/testResourceProviderService';
import { ErrorMessageServiceStub } from 'sqltest/stubs/errorMessageServiceStub'; import { TestErrorMessageService } from 'sql/platform/errorMessage/test/common/testErrorMessageService';
import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService'; import { InstantiationService } from 'vs/platform/instantiation/common/instantiationService';
import { ContextKeyServiceStub } from 'sqltest/stubs/contextKeyServiceStub';
import { Deferred } from 'sql/base/common/promise'; import { Deferred } from 'sql/base/common/promise';
import { mssqlProviderName } from 'sql/platform/connection/common/constants'; import { mssqlProviderName } from 'sql/platform/connection/common/constants';
import { MockContextKeyService } from 'vs/platform/keybinding/test/common/mockKeybindingService';
// TESTS /////////////////////////////////////////////////////////////////// // TESTS ///////////////////////////////////////////////////////////////////
suite('Firewall rule dialog controller tests', () => { suite('Firewall rule dialog controller tests', () => {
@@ -60,7 +60,7 @@ suite('Firewall rule dialog controller tests', () => {
.returns(() => mockFirewallRuleViewModel.object); .returns(() => mockFirewallRuleViewModel.object);
// Create a mock account picker // Create a mock account picker
let firewallRuleDialog = new FirewallRuleDialog(null, null, null, instantiationService.object, null, null, new ContextKeyServiceStub(), null, null, undefined); let firewallRuleDialog = new FirewallRuleDialog(null, null, null, instantiationService.object, null, null, new MockContextKeyService(), null, null, undefined);
mockFirewallRuleDialog = TypeMoq.Mock.ofInstance(firewallRuleDialog); mockFirewallRuleDialog = TypeMoq.Mock.ofInstance(firewallRuleDialog);
let mockEvent = new Emitter<any>(); let mockEvent = new Emitter<any>();
@@ -98,7 +98,7 @@ suite('Firewall rule dialog controller tests', () => {
test('Add Account Failure - Error Message Shown', () => { test('Add Account Failure - Error Message Shown', () => {
// ... Create a mock instance of the error message service // ... Create a mock instance of the error message service
let errorMessageServiceStub = new ErrorMessageServiceStub(); let errorMessageServiceStub = new TestErrorMessageService();
let mockErrorMessageService = TypeMoq.Mock.ofInstance(errorMessageServiceStub); let mockErrorMessageService = TypeMoq.Mock.ofInstance(errorMessageServiceStub);
mockErrorMessageService.setup(x => x.showDialog(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())); mockErrorMessageService.setup(x => x.showDialog(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny()));
@@ -230,24 +230,24 @@ suite('Firewall rule dialog controller tests', () => {
}); });
}); });
function getMockAccountManagementService(resolveSecurityToken: boolean): TypeMoq.Mock<AccountManagementTestService> { function getMockAccountManagementService(resolveSecurityToken: boolean): TypeMoq.Mock<TestAccountManagementService> {
let accountManagementTestService = new AccountManagementTestService(); let accountManagementTestService = new TestAccountManagementService();
let mockAccountManagementService = TypeMoq.Mock.ofInstance(accountManagementTestService); let mockAccountManagementService = TypeMoq.Mock.ofInstance(accountManagementTestService);
mockAccountManagementService.setup(x => x.getSecurityToken(TypeMoq.It.isAny(), TypeMoq.It.isAny())) mockAccountManagementService.setup(x => x.getSecurityToken(TypeMoq.It.isAny(), TypeMoq.It.isAny()))
.returns(() => resolveSecurityToken ? Promise.resolve({}) : Promise.reject(null).then()); .returns(() => resolveSecurityToken ? Promise.resolve({}) : Promise.reject(null).then());
return mockAccountManagementService; return mockAccountManagementService;
} }
function getMockResourceProvider(resolveCreateFirewallRule: boolean, response?: azdata.CreateFirewallRuleResponse): TypeMoq.Mock<ResourceProviderStub> { function getMockResourceProvider(resolveCreateFirewallRule: boolean, response?: azdata.CreateFirewallRuleResponse): TypeMoq.Mock<TestResourceProvider> {
let resourceProviderStub = new ResourceProviderStub(); let resourceProviderStub = new TestResourceProvider();
let mockResourceProvider = TypeMoq.Mock.ofInstance(resourceProviderStub); let mockResourceProvider = TypeMoq.Mock.ofInstance(resourceProviderStub);
mockResourceProvider.setup(x => x.createFirewallRule(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())) mockResourceProvider.setup(x => x.createFirewallRule(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny()))
.returns(() => resolveCreateFirewallRule ? Promise.resolve(response) : Promise.reject(null).then()); .returns(() => resolveCreateFirewallRule ? Promise.resolve(response) : Promise.reject(null).then());
return mockResourceProvider; return mockResourceProvider;
} }
function getMockErrorMessageService(deferredPromise: Deferred<{}>): TypeMoq.Mock<ErrorMessageServiceStub> { function getMockErrorMessageService(deferredPromise: Deferred<{}>): TypeMoq.Mock<TestErrorMessageService> {
let errorMessageServiceStub = new ErrorMessageServiceStub(); let errorMessageServiceStub = new TestErrorMessageService();
let mockErrorMessageService = TypeMoq.Mock.ofInstance(errorMessageServiceStub); let mockErrorMessageService = TypeMoq.Mock.ofInstance(errorMessageServiceStub);
mockErrorMessageService.setup(x => x.showDialog(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())).callback(() => { mockErrorMessageService.setup(x => x.showDialog(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())).callback(() => {
deferredPromise.resolve(true); deferredPromise.resolve(true);

View File

@@ -7,9 +7,9 @@ import * as assert from 'assert';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as TypeMoq from 'typemoq'; import * as TypeMoq from 'typemoq';
import { AddAccountAction, RemoveAccountAction } from 'sql/platform/accounts/common/accountActions'; import { AddAccountAction, RemoveAccountAction } from 'sql/platform/accounts/common/accountActions';
import { AccountManagementTestService } from 'sqltest/stubs/accountManagementStubs'; import { TestAccountManagementService } from 'sql/platform/accounts/test/common/testAccountManagementService';
// import { MessageServiceStub } from 'sqltest/stubs/messageServiceStub'; // import { MessageServiceStub } from 'sqltest/stubs/messageServiceStub';
import { ErrorMessageServiceStub } from 'sqltest/stubs/errorMessageServiceStub'; import { TestErrorMessageService } from 'sql/platform/errorMessage/test/common/testErrorMessageService';
let testAccount = <azdata.Account>{ let testAccount = <azdata.Account>{
key: { key: {

View File

@@ -10,7 +10,7 @@ import { EventVerifierSingle } from 'sqltest/utils/eventVerifier';
import { Emitter } from 'vs/base/common/event'; import { Emitter } from 'vs/base/common/event';
import { AccountPickerViewModel } from 'sql/platform/accounts/common/accountPickerViewModel'; import { AccountPickerViewModel } from 'sql/platform/accounts/common/accountPickerViewModel';
import { UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes'; import { UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes';
import { AccountManagementTestService } from 'sqltest/stubs/accountManagementStubs'; import { TestAccountManagementService } from 'sql/platform/accounts/test/common/testAccountManagementService';
// SUITE STATE ///////////////////////////////////////////////////////////// // SUITE STATE /////////////////////////////////////////////////////////////
let mockUpdateAccountEmitter: Emitter<UpdateAccountListEventParams>; let mockUpdateAccountEmitter: Emitter<UpdateAccountListEventParams>;
@@ -124,8 +124,8 @@ suite('Account picker view model tests', () => {
}); });
}); });
function getMockAccountManagementService(resolveProviders: boolean, resolveAccounts: boolean): TypeMoq.Mock<AccountManagementTestService> { function getMockAccountManagementService(resolveProviders: boolean, resolveAccounts: boolean): TypeMoq.Mock<TestAccountManagementService> {
let mockAccountManagementService = TypeMoq.Mock.ofType(AccountManagementTestService); let mockAccountManagementService = TypeMoq.Mock.ofType(TestAccountManagementService);
mockAccountManagementService.setup(x => x.getAccountProviderMetadata()) mockAccountManagementService.setup(x => x.getAccountProviderMetadata())
.returns(() => resolveProviders ? Promise.resolve(providers) : Promise.reject(null).then()); .returns(() => resolveProviders ? Promise.resolve(providers) : Promise.reject(null).then());
@@ -139,7 +139,7 @@ function getMockAccountManagementService(resolveProviders: boolean, resolveAccou
} }
function getViewModel( function getViewModel(
ams: AccountManagementTestService, ams: TestAccountManagementService,
evUpdate: EventVerifierSingle<UpdateAccountListEventParams> evUpdate: EventVerifierSingle<UpdateAccountListEventParams>
): AccountPickerViewModel { ): AccountPickerViewModel {
let vm = new AccountPickerViewModel('azure', ams); let vm = new AccountPickerViewModel('azure', ams);

View File

@@ -10,7 +10,7 @@ import { EventVerifierSingle } from 'sqltest/utils/eventVerifier';
import { Emitter } from 'vs/base/common/event'; import { Emitter } from 'vs/base/common/event';
import { AccountViewModel } from 'sql/platform/accounts/common/accountViewModel'; import { AccountViewModel } from 'sql/platform/accounts/common/accountViewModel';
import { AccountProviderAddedEventParams, UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes'; import { AccountProviderAddedEventParams, UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes';
import { AccountManagementTestService } from 'sqltest/stubs/accountManagementStubs'; import { TestAccountManagementService } from 'sql/platform/accounts/test/common/testAccountManagementService';
// SUITE STATE ///////////////////////////////////////////////////////////// // SUITE STATE /////////////////////////////////////////////////////////////
let mockAddProviderEmitter: Emitter<AccountProviderAddedEventParams>; let mockAddProviderEmitter: Emitter<AccountProviderAddedEventParams>;
@@ -181,8 +181,8 @@ suite('Account Management Dialog ViewModel Tests', () => {
}); });
}); });
function getMockAccountManagementService(resolveProviders: boolean, resolveAccounts: boolean): TypeMoq.Mock<AccountManagementTestService> { function getMockAccountManagementService(resolveProviders: boolean, resolveAccounts: boolean): TypeMoq.Mock<TestAccountManagementService> {
let mockAccountManagementService = TypeMoq.Mock.ofType(AccountManagementTestService); let mockAccountManagementService = TypeMoq.Mock.ofType(TestAccountManagementService);
mockAccountManagementService.setup(x => x.getAccountProviderMetadata()) mockAccountManagementService.setup(x => x.getAccountProviderMetadata())
.returns(() => resolveProviders ? Promise.resolve(providers) : Promise.reject(null).then()); .returns(() => resolveProviders ? Promise.resolve(providers) : Promise.reject(null).then());
@@ -200,7 +200,7 @@ function getMockAccountManagementService(resolveProviders: boolean, resolveAccou
} }
function getViewModel( function getViewModel(
ams: AccountManagementTestService, ams: TestAccountManagementService,
evAdd: EventVerifierSingle<AccountProviderAddedEventParams>, evAdd: EventVerifierSingle<AccountProviderAddedEventParams>,
evRemove: EventVerifierSingle<azdata.AccountProviderMetadata>, evRemove: EventVerifierSingle<azdata.AccountProviderMetadata>,
evUpdate: EventVerifierSingle<UpdateAccountListEventParams> evUpdate: EventVerifierSingle<UpdateAccountListEventParams>

View File

@@ -8,7 +8,7 @@ import { Event } from 'vs/base/common/event';
import { IAccountManagementService } from 'sql/platform/accounts/common/interfaces'; import { IAccountManagementService } from 'sql/platform/accounts/common/interfaces';
import { AccountProviderAddedEventParams, UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes'; import { AccountProviderAddedEventParams, UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes';
export class AccountManagementTestService implements IAccountManagementService { export class TestAccountManagementService implements IAccountManagementService {
_serviceBrand: any; _serviceBrand: any;
public get addAccountProviderEvent(): Event<AccountProviderAddedEventParams> { return () => { return undefined; }; } public get addAccountProviderEvent(): Event<AccountProviderAddedEventParams> { return () => { return undefined; }; }

View File

@@ -5,8 +5,8 @@
import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement'; import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as TelemetryKeys from 'sql/platform/telemetry/telemetryKeys'; import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
import * as TelemetryUtils from 'sql/platform/telemetry/telemetryUtilities'; import * as TelemetryUtils from 'sql/platform/telemetry/common/telemetryUtilities';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IBackupService, TaskExecutionMode } from 'sql/platform/backup/common/backupService'; import { IBackupService, TaskExecutionMode } from 'sql/platform/backup/common/backupService';
import { invalidProvider } from 'sql/base/common/errors'; import { invalidProvider } from 'sql/base/common/errors';

View File

@@ -3,12 +3,13 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { NgModuleRef, enableProdMode, InjectionToken, Type, PlatformRef, Provider } from '@angular/core'; import { NgModuleRef, enableProdMode, PlatformRef, Provider } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { IInstantiationService, _util } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService, _util } from 'vs/platform/instantiation/common/instantiation';
import { IEditorInput } from 'vs/workbench/common/editor'; import { IEditorInput } from 'vs/workbench/common/editor';
import { Trace } from 'vs/platform/instantiation/common/instantiationService'; import { Trace } from 'vs/platform/instantiation/common/instantiationService';
import { values } from 'vs/base/common/map'; import { values } from 'vs/base/common/map';
import { IModuleFactory, IBootstrapParams } from 'sql/platform/bootstrap/common/bootstrapParams';
const selectorCounter = new Map<string, number>(); const selectorCounter = new Map<string, number>();
@@ -24,14 +25,6 @@ export function providerIterator(service: IInstantiationService): Provider[] {
}); });
} }
export const ISelector = new InjectionToken<string>('selector');
export const IBootstrapParams = new InjectionToken<IBootstrapParams>('bootstrap_params');
export interface IBootstrapParams {
}
export type IModuleFactory<T> = (params: IBootstrapParams, selector: string, service: IInstantiationService) => Type<T>;
function createUniqueSelector(selector: string): string { function createUniqueSelector(selector: string): string {
let num: number; let num: number;
if (selectorCounter.has(selector)) { if (selectorCounter.has(selector)) {

View File

@@ -8,15 +8,14 @@ import { Injectable, Inject } from '@angular/core';
import { Observable } from 'rxjs/Observable'; import { Observable } from 'rxjs/Observable';
/* SQL imports */ /* SQL imports */
import { IDefaultComponentParams } from 'sql/platform/bootstrap/node/bootstrapParams'; import { IDefaultComponentParams, IBootstrapParams } from 'sql/platform/bootstrap/common/bootstrapParams';
import { IBootstrapParams } from 'sql/platform/bootstrap/node/bootstrapService';
import { IMetadataService } from 'sql/platform/metadata/common/metadataService'; import { IMetadataService } from 'sql/platform/metadata/common/metadataService';
import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement'; import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement';
import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo'; import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo';
import { IAdminService } from 'sql/workbench/services/admin/common/adminService'; import { IAdminService } from 'sql/workbench/services/admin/common/adminService';
import { IQueryManagementService } from 'sql/platform/query/common/queryManagement'; import { IQueryManagementService } from 'sql/platform/query/common/queryManagement';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces'; import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { AngularDisposable } from 'sql/base/node/lifecycle'; import { AngularDisposable } from 'sql/base/browser/lifecycle';
import { ConnectionContextKey } from 'sql/workbench/parts/connection/common/connectionContextKey'; import { ConnectionContextKey } from 'sql/workbench/parts/connection/common/connectionContextKey';
import { ProviderMetadata, DatabaseInfo, SimpleExecuteResult } from 'azdata'; import { ProviderMetadata, DatabaseInfo, SimpleExecuteResult } from 'azdata';

View File

@@ -7,8 +7,8 @@ import { DataService } from 'sql/workbench/parts/grid/services/dataService';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces'; import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { ConnectionContextKey } from 'sql/workbench/parts/connection/common/connectionContextKey'; import { ConnectionContextKey } from 'sql/workbench/parts/connection/common/connectionContextKey';
import { IBootstrapParams } from 'sql/platform/bootstrap/node/bootstrapService';
import { Event } from 'vs/base/common/event'; import { Event } from 'vs/base/common/event';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
export interface IQueryComponentParams extends IBootstrapParams { export interface IQueryComponentParams extends IBootstrapParams {
dataService: DataService; dataService: DataService;
@@ -39,3 +39,15 @@ export interface ITaskDialogComponentParams extends IBootstrapParams {
export interface IQueryPlanParams extends IBootstrapParams { export interface IQueryPlanParams extends IBootstrapParams {
planXml: string; planXml: string;
} }
export const ISelector = 'selector';
export const IBootstrapParams = 'bootstrap_params';
export interface IBootstrapParams {
}
export interface Type<T> {
new(...args: any[]): T;
}
export type IModuleFactory<T> = (params: IBootstrapParams, selector: string, service: IInstantiationService) => Type<T>;

View File

@@ -9,7 +9,7 @@ import {
} from '@angular/core'; } from '@angular/core';
import { Dropdown, IDropdownOptions } from 'sql/base/parts/editableDropdown/browser/dropdown'; import { Dropdown, IDropdownOptions } from 'sql/base/parts/editableDropdown/browser/dropdown';
import { AngularDisposable } from 'sql/base/node/lifecycle'; import { AngularDisposable } from 'sql/base/browser/lifecycle';
import { attachEditableDropdownStyler } from 'sql/platform/theme/common/styler'; import { attachEditableDropdownStyler } from 'sql/platform/theme/common/styler';
import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView';

View File

@@ -9,7 +9,7 @@ import {
} from '@angular/core'; } from '@angular/core';
import { InputBox as vsInputBox } from 'sql/base/browser/ui/inputBox/inputBox'; import { InputBox as vsInputBox } from 'sql/base/browser/ui/inputBox/inputBox';
import { AngularDisposable } from 'sql/base/node/lifecycle'; import { AngularDisposable } from 'sql/base/browser/lifecycle';
import { attachInputBoxStyler } from 'vs/platform/theme/common/styler'; import { attachInputBoxStyler } from 'vs/platform/theme/common/styler';
import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IThemeService } from 'vs/platform/theme/common/themeService';

View File

@@ -9,7 +9,7 @@ import {
} from '@angular/core'; } from '@angular/core';
import { SelectBox as vsSelectBox } from 'sql/base/browser/ui/selectBox/selectBox'; import { SelectBox as vsSelectBox } from 'sql/base/browser/ui/selectBox/selectBox';
import { AngularDisposable } from 'sql/base/node/lifecycle'; import { AngularDisposable } from 'sql/base/browser/lifecycle';
import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
import { ISelectData } from 'vs/base/browser/ui/selectBox/selectBox'; import { ISelectData } from 'vs/base/browser/ui/selectBox/selectBox';

View File

@@ -12,7 +12,7 @@ import { Event, Emitter } from 'vs/base/common/event';
import { Action } from 'vs/base/common/actions'; import { Action } from 'vs/base/common/actions';
import { mssqlProviderName } from 'sql/platform/connection/common/constants'; import { mssqlProviderName } from 'sql/platform/connection/common/constants';
export class CapabilitiesTestService implements ICapabilitiesService { export class TestCapabilitiesService implements ICapabilitiesService {
public _serviceBrand: any; public _serviceBrand: any;

View File

@@ -18,10 +18,10 @@ import * as Constants from 'sql/platform/connection/common/constants';
import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService'; import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService';
import * as ConnectionContracts from 'sql/workbench/parts/connection/common/connection'; import * as ConnectionContracts from 'sql/workbench/parts/connection/common/connection';
import { ConnectionStatusManager } from 'sql/platform/connection/common/connectionStatusManager'; import { ConnectionStatusManager } from 'sql/platform/connection/common/connectionStatusManager';
import { DashboardInput } from 'sql/workbench/parts/dashboard/dashboardInput'; import { DashboardInput } from 'sql/workbench/parts/dashboard/common/dashboardInput';
import { ConnectionGlobalStatus } from 'sql/workbench/parts/connection/common/connectionGlobalStatus'; import { ConnectionGlobalStatus } from 'sql/workbench/parts/connection/common/connectionGlobalStatus';
import * as TelemetryKeys from 'sql/platform/telemetry/telemetryKeys'; import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
import * as TelemetryUtils from 'sql/platform/telemetry/telemetryUtilities'; import * as TelemetryUtils from 'sql/platform/telemetry/common/telemetryUtilities';
import { IResourceProviderService } from 'sql/workbench/services/resourceProvider/common/resourceProviderService'; import { IResourceProviderService } from 'sql/workbench/services/resourceProvider/common/resourceProviderService';
import { IAngularEventingService, AngularEventType } from 'sql/platform/angularEventing/common/angularEventingService'; import { IAngularEventingService, AngularEventType } from 'sql/platform/angularEventing/common/angularEventingService';
import * as QueryConstants from 'sql/workbench/parts/query/common/constants'; import * as QueryConstants from 'sql/workbench/parts/query/common/constants';

View File

@@ -12,7 +12,7 @@ import { ConnectionProfileGroup, IConnectionProfileGroup } from 'sql/platform/co
import { IConnectionProfile, IConnectionProfileStore } from 'sql/platform/connection/common/interfaces'; import { IConnectionProfile, IConnectionProfileStore } from 'sql/platform/connection/common/interfaces';
import { TestConfigurationService } from 'sql/platform/connection/test/common/testConfigurationService'; import { TestConfigurationService } from 'sql/platform/connection/test/common/testConfigurationService';
import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes'; import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes';
import { CapabilitiesTestService } from 'sqltest/stubs/capabilitiesTestService'; import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
import * as TypeMoq from 'typemoq'; import * as TypeMoq from 'typemoq';
import { Emitter } from 'vs/base/common/event'; import { Emitter } from 'vs/base/common/event';
import { deepClone, deepFreeze } from 'vs/base/common/objects'; import { deepClone, deepFreeze } from 'vs/base/common/objects';
@@ -119,7 +119,7 @@ suite('ConnectionConfig', () => {
]); ]);
setup(() => { setup(() => {
capabilitiesService = TypeMoq.Mock.ofType(CapabilitiesTestService); capabilitiesService = TypeMoq.Mock.ofType(TestCapabilitiesService);
capabilities = []; capabilities = [];
let connectionProvider: azdata.ConnectionProviderOptions = { let connectionProvider: azdata.ConnectionProviderOptions = {
options: [ options: [

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { ConnectionDialogTestService } from 'sqltest/stubs/connectionDialogTestService'; import { TestConnectionDialogService } from 'sql/workbench/services/connection/test/common/testConnectionDialogService';
import { ConnectionManagementService } from 'sql/platform/connection/common/connectionManagementService'; import { ConnectionManagementService } from 'sql/platform/connection/common/connectionManagementService';
import { ConnectionStatusManager } from 'sql/platform/connection/common/connectionStatusManager'; import { ConnectionStatusManager } from 'sql/platform/connection/common/connectionStatusManager';
import { ConnectionStore } from 'sql/platform/connection/common/connectionStore'; import { ConnectionStore } from 'sql/platform/connection/common/connectionStore';
@@ -16,38 +16,34 @@ import * as Constants from 'sql/platform/connection/common/constants';
import * as Utils from 'sql/platform/connection/common/utils'; import * as Utils from 'sql/platform/connection/common/utils';
import { IHandleFirewallRuleResult } from 'sql/workbench/services/resourceProvider/common/resourceProviderService'; import { IHandleFirewallRuleResult } from 'sql/workbench/services/resourceProvider/common/resourceProviderService';
import { WorkbenchEditorTestService } from 'sqltest/stubs/workbenchEditorTestService';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces'; import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { EditorGroupTestService } from 'sqltest/stubs/editorGroupService'; import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
import { CapabilitiesTestService } from 'sqltest/stubs/capabilitiesTestService'; import { TestConnectionProvider } from 'sql/platform/connection/test/common/testConnectionProvider';
import { ConnectionProviderStub } from 'sqltest/stubs/connectionProviderStub'; import { TestResourceProvider } from 'sql/workbench/services/resourceProvider/test/common/testResourceProviderService';
import { ResourceProviderStub } from 'sqltest/stubs/resourceProviderServiceStub';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { WorkspaceConfigurationTestService } from 'sqltest/stubs/workspaceConfigurationTestService';
import * as assert from 'assert'; import * as assert from 'assert';
import * as TypeMoq from 'typemoq'; import * as TypeMoq from 'typemoq';
import { IConnectionProfileGroup, ConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup'; import { IConnectionProfileGroup, ConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup';
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile'; import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
import { AccountManagementTestService } from 'sqltest/stubs/accountManagementStubs'; import { TestAccountManagementService } from 'sql/platform/accounts/test/common/testAccountManagementService';
import { TestStorageService, TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices'; import { TestStorageService, TestEnvironmentService, TestEditorService } from 'vs/workbench/test/workbenchTestServices';
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
import { NullLogService } from 'vs/platform/log/common/log'; import { NullLogService } from 'vs/platform/log/common/log';
suite('SQL ConnectionManagementService tests', () => { suite('SQL ConnectionManagementService tests', () => {
let capabilitiesService: CapabilitiesTestService; let capabilitiesService: TestCapabilitiesService;
let connectionDialogService: TypeMoq.Mock<ConnectionDialogTestService>; let connectionDialogService: TypeMoq.Mock<TestConnectionDialogService>;
let connectionStore: TypeMoq.Mock<ConnectionStore>; let connectionStore: TypeMoq.Mock<ConnectionStore>;
let workbenchEditorService: TypeMoq.Mock<WorkbenchEditorTestService>; let workbenchEditorService: TypeMoq.Mock<TestEditorService>;
let editorGroupService: TypeMoq.Mock<EditorGroupTestService>;
let connectionStatusManager: ConnectionStatusManager; let connectionStatusManager: ConnectionStatusManager;
let mssqlConnectionProvider: TypeMoq.Mock<ConnectionProviderStub>; let mssqlConnectionProvider: TypeMoq.Mock<TestConnectionProvider>;
let workspaceConfigurationServiceMock: TypeMoq.Mock<WorkspaceConfigurationTestService>; let workspaceConfigurationServiceMock: TypeMoq.Mock<TestConfigurationService>;
let resourceProviderStubMock: TypeMoq.Mock<ResourceProviderStub>; let resourceProviderStubMock: TypeMoq.Mock<TestResourceProvider>;
let accountManagementService: TypeMoq.Mock<AccountManagementTestService>; let accountManagementService: TypeMoq.Mock<TestAccountManagementService>;
let none: void; let none: void;
@@ -82,16 +78,15 @@ suite('SQL ConnectionManagementService tests', () => {
setup(() => { setup(() => {
capabilitiesService = new CapabilitiesTestService(); capabilitiesService = new TestCapabilitiesService();
connectionDialogService = TypeMoq.Mock.ofType(ConnectionDialogTestService); connectionDialogService = TypeMoq.Mock.ofType(TestConnectionDialogService);
connectionStore = TypeMoq.Mock.ofType(ConnectionStore, TypeMoq.MockBehavior.Loose, new TestStorageService()); connectionStore = TypeMoq.Mock.ofType(ConnectionStore, TypeMoq.MockBehavior.Loose, new TestStorageService());
workbenchEditorService = TypeMoq.Mock.ofType(WorkbenchEditorTestService); workbenchEditorService = TypeMoq.Mock.ofType(TestEditorService);
editorGroupService = TypeMoq.Mock.ofType(EditorGroupTestService);
connectionStatusManager = new ConnectionStatusManager(capabilitiesService, new NullLogService(), TestEnvironmentService, new TestNotificationService()); connectionStatusManager = new ConnectionStatusManager(capabilitiesService, new NullLogService(), TestEnvironmentService, new TestNotificationService());
mssqlConnectionProvider = TypeMoq.Mock.ofType(ConnectionProviderStub); mssqlConnectionProvider = TypeMoq.Mock.ofType(TestConnectionProvider);
let resourceProviderStub = new ResourceProviderStub(); let resourceProviderStub = new TestResourceProvider();
resourceProviderStubMock = TypeMoq.Mock.ofInstance(resourceProviderStub); resourceProviderStubMock = TypeMoq.Mock.ofInstance(resourceProviderStub);
accountManagementService = TypeMoq.Mock.ofType(AccountManagementTestService); accountManagementService = TypeMoq.Mock.ofType(TestAccountManagementService);
let root = new ConnectionProfileGroup(ConnectionProfileGroup.RootGroupName, undefined, ConnectionProfileGroup.RootGroupName, undefined, undefined); let root = new ConnectionProfileGroup(ConnectionProfileGroup.RootGroupName, undefined, ConnectionProfileGroup.RootGroupName, undefined, undefined);
root.connections = [ConnectionProfile.fromIConnectionProfile(capabilitiesService, connectionProfile)]; root.connections = [ConnectionProfile.fromIConnectionProfile(capabilitiesService, connectionProfile)];
@@ -140,7 +135,7 @@ suite('SQL ConnectionManagementService tests', () => {
}); });
// Setup configuration to return a config that can be modified later. // Setup configuration to return a config that can be modified later.
workspaceConfigurationServiceMock = TypeMoq.Mock.ofType(WorkspaceConfigurationTestService); workspaceConfigurationServiceMock = TypeMoq.Mock.ofType(TestConfigurationService);
workspaceConfigurationServiceMock.setup(x => x.getValue(Constants.sqlConfigSectionName)) workspaceConfigurationServiceMock.setup(x => x.getValue(Constants.sqlConfigSectionName))
.returns(() => configResult); .returns(() => configResult);
@@ -931,4 +926,69 @@ suite('SQL ConnectionManagementService tests', () => {
assert.equal(profileWithCredentials.userName, username); assert.equal(profileWithCredentials.userName, username);
assert.equal(profileWithCredentials.options['azureAccountToken'], testToken); assert.equal(profileWithCredentials.options['azureAccountToken'], testToken);
}); });
test('getConnections test', () => {
const connectionStatusManagerMock = TypeMoq.Mock.ofType(ConnectionStatusManager, TypeMoq.MockBehavior.Loose);
const connectionStoreMock = TypeMoq.Mock.ofType(ConnectionStore, TypeMoq.MockBehavior.Loose, new TestStorageService());
connectionStatusManagerMock.setup(x => x.getActiveConnectionProfiles(undefined)).returns(() => {
return [createConnectionProfile('1'), createConnectionProfile('2')];
});
connectionStoreMock.setup(x => x.getRecentlyUsedConnections(undefined)).returns(() => {
return [createConnectionProfile('1'), createConnectionProfile('3')];
});
const group1 = createConnectionGroup('group1');
const group2 = createConnectionGroup('group2');
group1.connections = [createConnectionProfile('1'), createConnectionProfile('4')];
group1.children = [group2];
group2.connections = [createConnectionProfile('5'), createConnectionProfile('6')];
connectionStoreMock.setup(x => x.getConnectionProfileGroups(TypeMoq.It.isAny(), undefined)).returns(() => {
return [group1];
});
const connectionManagementService = new ConnectionManagementService(connectionStoreMock.object, connectionStatusManagerMock.object, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined);
// dupe connections have been seeded the numbers below already reflected the de-duped results
const verifyConnections = (actualConnections: ConnectionProfile[], expectedConnectionIds: string[], scenario: string) => {
assert.equal(actualConnections.length, expectedConnectionIds.length, 'incorrect number of connections returned, ' + scenario);
assert.deepEqual(actualConnections.map(conn => conn.id).sort(), expectedConnectionIds.sort(), 'connections do not match expectation, ' + scenario);
};
// no parameter - default to false
let connections = connectionManagementService.getConnections();
verifyConnections(connections, ['1', '2', '3', '4', '5', '6'], 'no parameter provided');
// explicitly set to false
connections = connectionManagementService.getConnections(false);
verifyConnections(connections, ['1', '2', '3', '4', '5', '6'], 'parameter is false');
// active connections only
connections = connectionManagementService.getConnections(true);
verifyConnections(connections, ['1', '2'], 'parameter is true');
});
}); });
function createConnectionProfile(id: string): ConnectionProfile {
const capabilitiesService = new TestCapabilitiesService();
return new ConnectionProfile(capabilitiesService, {
connectionName: 'newName',
savePassword: false,
groupFullName: 'testGroup',
serverName: 'testServerName',
databaseName: 'testDatabaseName',
authenticationType: Constants.integrated,
password: 'test',
userName: 'testUsername',
groupId: undefined,
providerName: Constants.mssqlProviderName,
options: {},
saveProfile: true,
id: id
});
}
function createConnectionGroup(id: string): ConnectionProfileGroup {
return new ConnectionProfileGroup(id, undefined, id, undefined, undefined);
}

View File

@@ -8,13 +8,13 @@ import { IConnectionProfile, IConnectionProfileStore } from 'sql/platform/connec
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as assert from 'assert'; import * as assert from 'assert';
import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes'; import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes';
import { CapabilitiesTestService } from 'sqltest/stubs/capabilitiesTestService'; import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension'; import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension';
import { mssqlProviderName } from 'sql/platform/connection/common/constants'; import { mssqlProviderName } from 'sql/platform/connection/common/constants';
suite('SQL ConnectionProfileInfo tests', () => { suite('SQL ConnectionProfileInfo tests', () => {
let msSQLCapabilities: ConnectionProviderProperties; let msSQLCapabilities: ConnectionProviderProperties;
let capabilitiesService: CapabilitiesTestService; let capabilitiesService: TestCapabilitiesService;
let connectionProfile: IConnectionProfile = { let connectionProfile: IConnectionProfile = {
connectionName: 'new name', connectionName: 'new name',
@@ -129,7 +129,7 @@ suite('SQL ConnectionProfileInfo tests', () => {
displayName: 'MSSQL', displayName: 'MSSQL',
connectionOptions: connectionProvider connectionOptions: connectionProvider
}; };
capabilitiesService = new CapabilitiesTestService(); capabilitiesService = new TestCapabilitiesService();
capabilitiesService.capabilities[mssqlProviderName] = { connection: msSQLCapabilities }; capabilitiesService.capabilities[mssqlProviderName] = { connection: msSQLCapabilities };
}); });

View File

@@ -8,7 +8,7 @@ import * as azdata from 'azdata';
import { ConnectionStatusManager } from 'sql/platform/connection/common/connectionStatusManager'; import { ConnectionStatusManager } from 'sql/platform/connection/common/connectionStatusManager';
import * as Utils from 'sql/platform/connection/common/utils'; import * as Utils from 'sql/platform/connection/common/utils';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces'; import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { CapabilitiesTestService } from 'sqltest/stubs/capabilitiesTestService'; import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile'; import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile';
import { TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices'; import { TestEnvironmentService } from 'vs/workbench/test/workbenchTestServices';
import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService'; import { TestNotificationService } from 'vs/platform/notification/test/common/testNotificationService';
@@ -16,7 +16,7 @@ import { mssqlProviderName } from 'sql/platform/connection/common/constants';
import { NullLogService } from 'vs/platform/log/common/log'; import { NullLogService } from 'vs/platform/log/common/log';
let connections: ConnectionStatusManager; let connections: ConnectionStatusManager;
let capabilitiesService: CapabilitiesTestService; let capabilitiesService: TestCapabilitiesService;
let connectionProfileObject: ConnectionProfile; let connectionProfileObject: ConnectionProfile;
let connectionProfile: IConnectionProfile = { let connectionProfile: IConnectionProfile = {
connectionName: 'new name', connectionName: 'new name',
@@ -76,7 +76,7 @@ let connection3Id: string;
suite('SQL ConnectionStatusManager tests', () => { suite('SQL ConnectionStatusManager tests', () => {
setup(() => { setup(() => {
capabilitiesService = new CapabilitiesTestService(); capabilitiesService = new TestCapabilitiesService();
connectionProfileObject = new ConnectionProfile(capabilitiesService, connectionProfile); connectionProfileObject = new ConnectionProfile(capabilitiesService, connectionProfile);
connections = new ConnectionStatusManager(capabilitiesService, new NullLogService(), TestEnvironmentService, new TestNotificationService()); connections = new ConnectionStatusManager(capabilitiesService, new NullLogService(), TestEnvironmentService, new TestNotificationService());
connection1Id = Utils.generateUri(connectionProfile); connection1Id = Utils.generateUri(connectionProfile);

View File

@@ -13,7 +13,7 @@ import { TestConfigurationService } from 'sql/platform/connection/test/common/te
import { TestCredentialsService } from 'sql/platform/credentials/test/common/testCredentialsService'; import { TestCredentialsService } from 'sql/platform/credentials/test/common/testCredentialsService';
import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes'; import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes';
import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension'; import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension';
import { CapabilitiesTestService } from 'sqltest/stubs/capabilitiesTestService'; import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
import { deepClone, deepFreeze } from 'vs/base/common/objects'; import { deepClone, deepFreeze } from 'vs/base/common/objects';
import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration'; import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration';
import { TestStorageService } from 'vs/workbench/test/workbenchTestServices'; import { TestStorageService } from 'vs/workbench/test/workbenchTestServices';
@@ -37,7 +37,7 @@ suite('ConnectionStore', () => {
saveProfile: true, saveProfile: true,
id: undefined id: undefined
}); });
let capabilitiesService: CapabilitiesTestService; let capabilitiesService: TestCapabilitiesService;
let maxRecent = 5; let maxRecent = 5;
let msSQLCapabilities: ConnectionProviderProperties; let msSQLCapabilities: ConnectionProviderProperties;
let provider2Capabilities: ConnectionProviderProperties; let provider2Capabilities: ConnectionProviderProperties;
@@ -46,7 +46,7 @@ suite('ConnectionStore', () => {
setup(() => { setup(() => {
// setup configuration to return maxRecent for the #MRU items // setup configuration to return maxRecent for the #MRU items
capabilitiesService = new CapabilitiesTestService(); capabilitiesService = new TestCapabilitiesService();
let connectionProvider: azdata.ConnectionOption[] = [ let connectionProvider: azdata.ConnectionOption[] = [
{ {
name: 'connectionName', name: 'connectionName',

View File

@@ -8,12 +8,12 @@ import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as assert from 'assert'; import * as assert from 'assert';
import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes'; import { ConnectionOptionSpecialType, ServiceOptionType } from 'sql/workbench/api/common/sqlExtHostTypes';
import { CapabilitiesTestService } from 'sqltest/stubs/capabilitiesTestService'; import { TestCapabilitiesService } from 'sql/platform/capabilities/test/common/testCapabilitiesService';
import { mssqlProviderName } from 'sql/platform/connection/common/constants'; import { mssqlProviderName } from 'sql/platform/connection/common/constants';
suite('SQL ProviderConnectionInfo tests', () => { suite('SQL ProviderConnectionInfo tests', () => {
let msSQLCapabilities: any; let msSQLCapabilities: any;
let capabilitiesService: CapabilitiesTestService; let capabilitiesService: TestCapabilitiesService;
let connectionProfile: IConnectionProfile = { let connectionProfile: IConnectionProfile = {
connectionName: 'name', connectionName: 'name',
@@ -127,7 +127,7 @@ suite('SQL ProviderConnectionInfo tests', () => {
connectionOptions: connectionProvider, connectionOptions: connectionProvider,
}; };
capabilities.push(msSQLCapabilities); capabilities.push(msSQLCapabilities);
capabilitiesService = new CapabilitiesTestService(); capabilitiesService = new TestCapabilitiesService();
capabilitiesService.capabilities[mssqlProviderName] = { connection: msSQLCapabilities }; capabilitiesService.capabilities[mssqlProviderName] = { connection: msSQLCapabilities };
}); });

View File

@@ -11,7 +11,6 @@ import { ConnectionProfile } from 'sql/platform/connection/common/connectionProf
import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo'; import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { Event, Emitter } from 'vs/base/common/event'; import { Event, Emitter } from 'vs/base/common/event';
import { isUndefinedOrNull } from 'vs/base/common/types';
import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension'; import { ConnectionProviderProperties } from 'sql/workbench/parts/connection/common/connectionProviderExtension';
// Test stubs for commonly used objects // Test stubs for commonly used objects

View File

@@ -6,7 +6,7 @@
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { mssqlProviderName } from 'sql/platform/connection/common/constants'; import { mssqlProviderName } from 'sql/platform/connection/common/constants';
export class ConnectionProviderStub implements azdata.ConnectionProvider { export class TestConnectionProvider implements azdata.ConnectionProvider {
public readonly providerId = mssqlProviderName; public readonly providerId = mssqlProviderName;
connect(connectionUri: string, connectionInfo: azdata.ConnectionInfo): Thenable<boolean> { connect(connectionUri: string, connectionInfo: azdata.ConnectionInfo): Thenable<boolean> {

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { ICredentialsService, CredentialManagementEvents } from 'sql/platform/credentials/common/credentialsService'; import { ICredentialsService, CredentialManagementEvents } from 'sql/platform/credentials/common/credentialsService';
import { Credential } from 'azdata'; import { Credential, CredentialProvider } from 'azdata';
import { IDisposable } from 'vs/base/common/lifecycle'; import { IDisposable } from 'vs/base/common/lifecycle';
import { Emitter } from 'vs/base/common/event'; import { Emitter } from 'vs/base/common/event';
@@ -40,3 +40,27 @@ export class TestCredentialsService implements ICredentialsService {
throw new Error('Method not implemented.'); throw new Error('Method not implemented.');
} }
} }
export class TestCredentialsProvider implements CredentialProvider {
handle: number;
public storedCredentials: { [K: string]: Credential } = {};
saveCredential(credentialId: string, password: string): Thenable<boolean> {
this.storedCredentials[credentialId] = {
credentialId: credentialId,
password: password
};
return Promise.resolve(true);
}
readCredential(credentialId: string): Thenable<Credential> {
return Promise.resolve(this.storedCredentials[credentialId]);
}
deleteCredential(credentialId: string): Thenable<boolean> {
let exists = this.storedCredentials[credentialId] !== undefined;
delete this.storedCredentials[credentialId];
return Promise.resolve(exists);
}
}

View File

@@ -9,10 +9,10 @@ import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls'; import * as nls from 'vs/nls';
import { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry'; import { IExtensionPointUser, ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry';
import { ProviderProperties } from 'sql/workbench/parts/dashboard/widgets/properties/propertiesWidget.component'; import { ProviderProperties } from 'sql/workbench/parts/dashboard/browser/widgets/properties/propertiesWidget.component';
import { DATABASE_DASHBOARD_TABS } from 'sql/workbench/parts/dashboard/pages/databaseDashboardPage.contribution'; import { DATABASE_DASHBOARD_TABS } from 'sql/workbench/parts/dashboard/browser/pages/databaseDashboardPage.contribution';
import { SERVER_DASHBOARD_TABS, SERVER_DASHBOARD_PROPERTIES } from 'sql/workbench/parts/dashboard/pages/serverDashboardPage.contribution'; import { SERVER_DASHBOARD_TABS } from 'sql/workbench/parts/dashboard/browser/pages/serverDashboardPage.contribution';
import { DASHBOARD_CONFIG_ID, DASHBOARD_TABS_KEY_PROPERTY } from 'sql/workbench/parts/dashboard/pages/dashboardPageContribution'; import { DASHBOARD_CONFIG_ID, DASHBOARD_TABS_KEY_PROPERTY } from 'sql/workbench/parts/dashboard/browser/pages/dashboardPageContribution';
export const Extensions = { export const Extensions = {
DashboardContributions: 'dashboard.contributions' DashboardContributions: 'dashboard.contributions'

View File

@@ -3,11 +3,11 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { Type } from '@angular/core'; import { Type } from '@angular/core';
import { IInsightsConfig, IInsightsView } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import * as platform from 'vs/platform/registry/common/platform'; import * as platform from 'vs/platform/registry/common/platform';
import { IJSONSchema } from 'vs/base/common/jsonSchema'; import { IJSONSchema } from 'vs/base/common/jsonSchema';
import * as nls from 'vs/nls'; import * as nls from 'vs/nls';
import { IInsightData } from 'sql/workbench/parts/charts/browser/interfaces';
export type InsightIdentifier = string; export type InsightIdentifier = string;
@@ -15,6 +15,57 @@ export const Extensions = {
InsightContribution: 'dashboard.contributions.insights' InsightContribution: 'dashboard.contributions.insights'
}; };
export interface IInsightsConfig {
cacheId?: string;
type: any;
name?: string;
when?: string;
gridItemConfig?: ISize;
query?: string | Array<string>;
queryFile?: string;
details?: IInsightsConfigDetails;
autoRefreshInterval?: number;
}
export interface IInsightsLabel {
column: string;
icon?: string;
state?: Array<IStateCondition>;
}
export interface IStateCondition {
condition: {
if: string,
equals?: string
};
color?: string;
icon?: string;
}
export interface IInsightsConfigDetails {
query?: string | Array<string>;
queryFile?: string;
label?: string | IInsightsLabel;
value?: string;
actions?: {
types: Array<string>;
database?: string;
server?: string;
user?: string;
};
}
export interface ISize {
x: number;
y: number;
}
export interface IInsightsView {
data: IInsightData;
setConfig?: (config: { [key: string]: any }) => void;
init?: () => void;
}
export interface IInsightRegistry { export interface IInsightRegistry {
insightSchema: IJSONSchema; insightSchema: IJSONSchema;
registerInsight(id: string, description: string, schema: IJSONSchema, ctor: Type<IInsightsView>): InsightIdentifier; registerInsight(id: string, description: string, schema: IJSONSchema, ctor: Type<IInsightsView>): InsightIdentifier;

View File

@@ -6,7 +6,7 @@ import { Type } from '@angular/core';
import { ModelComponentTypes } from 'sql/workbench/api/common/sqlExtHostTypes'; import { ModelComponentTypes } from 'sql/workbench/api/common/sqlExtHostTypes';
import * as platform from 'vs/platform/registry/common/platform'; import * as platform from 'vs/platform/registry/common/platform';
import { IComponent } from 'sql/workbench/electron-browser/modelComponents/interfaces'; import { IComponent } from 'sql/workbench/browser/modelComponents/interfaces';
export type ComponentIdentifier = string; export type ComponentIdentifier = string;

View File

@@ -2,14 +2,11 @@
* Copyright (c) Microsoft Corporation. All rights reserved. * Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { IInsightsConfig } from 'sql/workbench/parts/dashboard/widgets/insights/interfaces';
import * as platform from 'vs/platform/registry/common/platform'; import * as platform from 'vs/platform/registry/common/platform';
import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema'; import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
import { IJSONContributionRegistry, Extensions as JSONExtensions } from 'vs/platform/jsonschemas/common/jsonContributionRegistry';
import * as nls from 'vs/nls'; import * as nls from 'vs/nls';
import { IInsightsConfig } from 'sql/platform/dashboard/browser/insightRegistry';
const contributionRegistry = platform.Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution);
export type WidgetIdentifier = string; export type WidgetIdentifier = string;

View File

@@ -5,10 +5,6 @@
import { Registry } from 'vs/platform/registry/common/platform'; import { Registry } from 'vs/platform/registry/common/platform';
import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema'; import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema';
import { Extensions as ConfigurationExtension } from 'vs/platform/configuration/common/configurationRegistry';
import { deepClone } from 'vs/base/common/objects';
import { WidgetConfig } from 'sql/workbench/parts/dashboard/common/dashboardWidget';
export const Extensions = { export const Extensions = {
dashboardContainerContributions: 'dashboard.contributions.container' dashboardContainerContributions: 'dashboard.contributions.container'

View File

@@ -3,9 +3,9 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { DialogModal } from 'sql/platform/dialog/dialogModal'; import { DialogModal } from 'sql/platform/dialog/browser/dialogModal';
import { WizardModal } from 'sql/platform/dialog/wizardModal'; import { WizardModal } from 'sql/platform/dialog/browser/wizardModal';
import { Dialog, Wizard } from 'sql/platform/dialog/dialogTypes'; import { Dialog, Wizard } from 'sql/platform/dialog/common/dialogTypes';
import { IModalOptions } from 'sql/workbench/browser/modal/modal'; import { IModalOptions } from 'sql/workbench/browser/modal/modal';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';

View File

@@ -10,21 +10,22 @@ import { FormsModule } from '@angular/forms';
import { CommonModule, APP_BASE_HREF } from '@angular/common'; import { CommonModule, APP_BASE_HREF } from '@angular/common';
import { BrowserModule } from '@angular/platform-browser'; import { BrowserModule } from '@angular/platform-browser';
import { DialogContainer } from 'sql/platform/dialog/dialogContainer.component'; import { DialogContainer } from 'sql/platform/dialog/browser/dialogContainer.component';
import { WizardNavigation } from 'sql/platform/dialog/wizardNavigation.component'; import { WizardNavigation } from 'sql/platform/dialog/browser/wizardNavigation.component';
import { Extensions, IComponentRegistry } from 'sql/platform/dashboard/common/modelComponentRegistry'; import { Extensions, IComponentRegistry } from 'sql/platform/dashboard/browser/modelComponentRegistry';
import { ModelViewContent } from 'sql/workbench/electron-browser/modelComponents/modelViewContent.component'; import { ModelViewContent } from 'sql/workbench/browser/modelComponents/modelViewContent.component';
import { ModelComponentWrapper } from 'sql/workbench/electron-browser/modelComponents/modelComponentWrapper.component'; import { ModelComponentWrapper } from 'sql/workbench/browser/modelComponents/modelComponentWrapper.component';
import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/common/componentHost.directive'; import { ComponentHostDirective } from 'sql/workbench/parts/dashboard/browser/core/componentHost.directive';
import { IBootstrapParams, ISelector, providerIterator } from 'sql/platform/bootstrap/node/bootstrapService'; import { providerIterator } from 'sql/platform/bootstrap/browser/bootstrapService';
import { CommonServiceInterface } from 'sql/platform/bootstrap/node/commonServiceInterface.service'; import { CommonServiceInterface } from 'sql/platform/bootstrap/browser/commonServiceInterface.service';
import { EditableDropDown } from 'sql/platform/electron-browser/editableDropdown/editableDropdown.component'; import { EditableDropDown } from 'sql/platform/browser/editableDropdown/editableDropdown.component';
import { Checkbox } from 'sql/base/electron-browser/ui/checkbox/checkbox.component'; import { Checkbox } from 'sql/base/browser/ui/checkbox/checkbox.component';
import { SelectBox } from 'sql/platform/ui/electron-browser/selectBox/selectBox.component'; import { SelectBox } from 'sql/platform/browser/selectBox/selectBox.component';
import { InputBox } from 'sql/base/electron-browser/ui/inputBox/inputBox.component'; import { InputBox } from 'sql/platform/browser/inputbox/inputBox.component';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { Registry } from 'vs/platform/registry/common/platform'; import { Registry } from 'vs/platform/registry/common/platform';
import { IBootstrapParams, ISelector } from 'sql/platform/bootstrap/common/bootstrapParams';
export const DialogModule = (params, selector: string, instantiationService: IInstantiationService): any => { export const DialogModule = (params, selector: string, instantiationService: IInstantiationService): any => {

View File

@@ -5,11 +5,11 @@
import 'vs/css!./media/dialogModal'; import 'vs/css!./media/dialogModal';
import { Component, ViewChild, Inject, forwardRef, ElementRef, AfterViewInit } from '@angular/core'; import { Component, ViewChild, Inject, forwardRef, ElementRef, AfterViewInit } from '@angular/core';
import { ModelViewContent } from 'sql/workbench/electron-browser/modelComponents/modelViewContent.component'; import { ModelViewContent } from 'sql/workbench/browser/modelComponents/modelViewContent.component';
import { IBootstrapParams } from 'sql/platform/bootstrap/node/bootstrapService'; import { DialogPane } from 'sql/platform/dialog/browser/dialogPane';
import { DialogPane } from 'sql/platform/dialog/dialogPane'; import { ComponentEventType } from 'sql/workbench/browser/modelComponents/interfaces';
import { ComponentEventType } from 'sql/workbench/electron-browser/modelComponents/interfaces';
import { Event, Emitter } from 'vs/base/common/event'; import { Event, Emitter } from 'vs/base/common/event';
import { IBootstrapParams } from 'sql/platform/bootstrap/common/bootstrapParams';
export interface LayoutRequestParams { export interface LayoutRequestParams {
modelViewId?: string; modelViewId?: string;

View File

@@ -6,8 +6,8 @@
import 'vs/css!./media/dialogModal'; import 'vs/css!./media/dialogModal';
import { Modal, IModalOptions } from 'sql/workbench/browser/modal/modal'; import { Modal, IModalOptions } from 'sql/workbench/browser/modal/modal';
import { attachModalDialogStyler } from 'sql/platform/theme/common/styler'; import { attachModalDialogStyler } from 'sql/platform/theme/common/styler';
import { Dialog, DialogButton } from 'sql/platform/dialog/dialogTypes'; import { Dialog, DialogButton } from 'sql/platform/dialog/common/dialogTypes';
import { DialogPane } from 'sql/platform/dialog/dialogPane'; import { DialogPane } from 'sql/platform/dialog/browser/dialogPane';
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService'; import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
@@ -18,7 +18,7 @@ import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme';
import { Emitter } from 'vs/base/common/event'; import { Emitter } from 'vs/base/common/event';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { DialogMessage } from '../../workbench/api/common/sqlExtHostTypes'; import { DialogMessage } from 'sql/workbench/api/common/sqlExtHostTypes';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService';
import { append, $ } from 'vs/base/browser/dom'; import { append, $ } from 'vs/base/browser/dom';

View File

@@ -8,11 +8,11 @@ import 'vs/css!./media/dialogModal';
import { NgModuleRef } from '@angular/core'; import { NgModuleRef } from '@angular/core';
import { IModalDialogStyles } from 'sql/workbench/browser/modal/modal'; import { IModalDialogStyles } from 'sql/workbench/browser/modal/modal';
import { DialogTab } from 'sql/platform/dialog/dialogTypes'; import { DialogTab } from 'sql/platform/dialog/common/dialogTypes';
import { TabbedPanel, IPanelTab, IPanelView } from 'sql/base/browser/ui/panel/panel'; import { TabbedPanel } from 'sql/base/browser/ui/panel/panel';
import { bootstrapAngular } from 'sql/platform/bootstrap/node/bootstrapService'; import { bootstrapAngular } from 'sql/platform/bootstrap/browser/bootstrapService';
import { DialogModule } from 'sql/platform/dialog/dialog.module'; import { DialogModule } from 'sql/platform/dialog/browser/dialog.module';
import { DialogComponentParams, LayoutRequestParams } from 'sql/platform/dialog/dialogContainer.component'; import { DialogComponentParams, LayoutRequestParams } from 'sql/platform/dialog/browser/dialogContainer.component';
import * as DOM from 'vs/base/browser/dom'; import * as DOM from 'vs/base/browser/dom';
import { IThemable } from 'vs/platform/theme/common/styler'; import { IThemable } from 'vs/platform/theme/common/styler';

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -6,11 +6,11 @@
import 'vs/css!./media/dialogModal'; import 'vs/css!./media/dialogModal';
import { Modal, IModalOptions } from 'sql/workbench/browser/modal/modal'; import { Modal, IModalOptions } from 'sql/workbench/browser/modal/modal';
import { attachModalDialogStyler } from 'sql/platform/theme/common/styler'; import { attachModalDialogStyler } from 'sql/platform/theme/common/styler';
import { Wizard, DialogButton, WizardPage } from 'sql/platform/dialog/dialogTypes'; import { Wizard, DialogButton, WizardPage } from 'sql/platform/dialog/common/dialogTypes';
import { DialogPane } from 'sql/platform/dialog/dialogPane'; import { DialogPane } from 'sql/platform/dialog/browser/dialogPane';
import { bootstrapAngular } from 'sql/platform/bootstrap/node/bootstrapService'; import { bootstrapAngular } from 'sql/platform/bootstrap/browser/bootstrapService';
import { DialogMessage } from 'sql/workbench/api/common/sqlExtHostTypes'; import { DialogMessage } from 'sql/workbench/api/common/sqlExtHostTypes';
import { DialogModule } from 'sql/platform/dialog/dialog.module'; import { DialogModule } from 'sql/platform/dialog/browser/dialog.module';
import { Button } from 'vs/base/browser/ui/button/button'; import { Button } from 'vs/base/browser/ui/button/button';
import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme'; import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';

View File

@@ -5,11 +5,11 @@
import 'vs/css!./media/wizardNavigation'; import 'vs/css!./media/wizardNavigation';
import { Component, Inject, forwardRef, ElementRef, AfterViewInit, ChangeDetectorRef, ViewChild } from '@angular/core'; import { Component, Inject, forwardRef, ElementRef, AfterViewInit, ChangeDetectorRef, ViewChild } from '@angular/core';
import { IBootstrapParams } from 'sql/platform/bootstrap/node/bootstrapService';
import { Event, Emitter } from 'vs/base/common/event'; import { Event, Emitter } from 'vs/base/common/event';
import { Wizard } from './dialogTypes'; import { Wizard } from '../common/dialogTypes';
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService'; import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme'; import { SIDE_BAR_BACKGROUND } from 'vs/workbench/common/theme';
import { IBootstrapParams } from 'sql/platform/bootstrap/common/bootstrapParams';
export class WizardNavigationParams implements IBootstrapParams { export class WizardNavigationParams implements IBootstrapParams {
wizard: Wizard; wizard: Wizard;

View File

@@ -4,10 +4,10 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import * as assert from 'assert'; import * as assert from 'assert';
import { Dialog, DialogTab } from 'sql/platform/dialog/dialogTypes'; import { Dialog, DialogTab } from 'sql/platform/dialog/common/dialogTypes';
import { DialogPane } from 'sql/platform/dialog/dialogPane'; import { DialogPane } from 'sql/platform/dialog/browser/dialogPane';
import { DialogComponentParams } from 'sql/platform/dialog/dialogContainer.component'; import { DialogComponentParams } from 'sql/platform/dialog/browser/dialogContainer.component';
import { bootstrapAngular } from 'sql/platform/bootstrap/node/bootstrapService'; import { bootstrapAngular } from 'sql/platform/bootstrap/browser/bootstrapService';
import { TestThemeService } from 'vs/platform/theme/test/common/testThemeService'; import { TestThemeService } from 'vs/platform/theme/test/common/testThemeService';

View File

@@ -6,7 +6,7 @@
import Severity from 'vs/base/common/severity'; import Severity from 'vs/base/common/severity';
import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService'; import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService';
export class ErrorMessageServiceStub implements IErrorMessageService { export class TestErrorMessageService implements IErrorMessageService {
_serviceBrand: any; _serviceBrand: any;
showDialog(severity: Severity, headerTitle: string, message: string): void { showDialog(severity: Severity, headerTitle: string, message: string): void {
} }

View File

@@ -8,18 +8,18 @@ import * as nls from 'vs/nls';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { INotificationService } from 'vs/platform/notification/common/notification'; import { INotificationService } from 'vs/platform/notification/common/notification';
import Severity from 'vs/base/common/severity'; import Severity from 'vs/base/common/severity';
import { JobHistoryComponent } from 'sql/workbench/parts/jobManagement/electron-browser/jobHistory.component'; import { JobHistoryComponent } from 'sql/workbench/parts/jobManagement/browser/jobHistory.component';
import { IJobManagementService } from '../common/interfaces'; import { IJobManagementService } from '../common/interfaces';
import { ICommandService } from 'vs/platform/commands/common/commands'; import { ICommandService } from 'vs/platform/commands/common/commands';
import { JobsViewComponent } from 'sql/workbench/parts/jobManagement/electron-browser/jobsView.component'; import { JobsViewComponent } from 'sql/workbench/parts/jobManagement/browser/jobsView.component';
import { AlertsViewComponent } from 'sql/workbench/parts/jobManagement/electron-browser/alertsView.component'; import { AlertsViewComponent } from 'sql/workbench/parts/jobManagement/browser/alertsView.component';
import { OperatorsViewComponent } from 'sql/workbench/parts/jobManagement/electron-browser/operatorsView.component'; import { OperatorsViewComponent } from 'sql/workbench/parts/jobManagement/browser/operatorsView.component';
import { ProxiesViewComponent } from 'sql/workbench/parts/jobManagement/electron-browser/proxiesView.component'; import { ProxiesViewComponent } from 'sql/workbench/parts/jobManagement/browser/proxiesView.component';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import * as TelemetryKeys from 'sql/platform/telemetry/telemetryKeys'; import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService'; import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMessageService';
import { JobManagementView } from 'sql/workbench/parts/jobManagement/electron-browser/jobManagementView'; import { JobManagementView } from 'sql/workbench/parts/jobManagement/browser/jobManagementView';
export const successLabel: string = nls.localize('jobaction.successLabel', 'Success'); export const successLabel: string = nls.localize('jobaction.successLabel', 'Success');
export const errorLabel: string = nls.localize('jobaction.faillabel', 'Error'); export const errorLabel: string = nls.localize('jobaction.faillabel', 'Error');

View File

@@ -5,8 +5,7 @@
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as TypeMoq from 'typemoq'; import * as TypeMoq from 'typemoq';
import { JobsRefreshAction, NewJobAction, EditJobAction, RunJobAction, StopJobAction, DeleteJobAction, NewStepAction, DeleteStepAction, NewAlertAction, EditAlertAction, DeleteAlertAction, NewOperatorAction, EditOperatorAction, DeleteOperatorAction, NewProxyAction, EditProxyAction, DeleteProxyAction } from 'sql/platform/jobManagement/common/jobActions'; import { JobsRefreshAction, NewJobAction, EditJobAction, RunJobAction, StopJobAction, DeleteJobAction, NewStepAction, DeleteStepAction, NewAlertAction, EditAlertAction, DeleteAlertAction, NewOperatorAction, EditOperatorAction, DeleteOperatorAction, NewProxyAction, EditProxyAction, DeleteProxyAction } from 'sql/platform/jobManagement/browser/jobActions';
import { TestJobManagementView } from 'sqltest/stubs/jobsManagementViewStub';
import { JobManagementService } from 'sql/platform/jobManagement/common/jobManagementService'; import { JobManagementService } from 'sql/platform/jobManagement/common/jobManagementService';
// Mock View Components // Mock View Components
@@ -43,6 +42,22 @@ let mockNewProxyAction: TypeMoq.Mock<NewProxyAction>;
let mockEditProxyAction: TypeMoq.Mock<EditProxyAction>; let mockEditProxyAction: TypeMoq.Mock<EditProxyAction>;
let mockDeleteProxyAction: TypeMoq.Mock<DeleteProxyAction>; let mockDeleteProxyAction: TypeMoq.Mock<DeleteProxyAction>;
/**
* Class to test Job Management Views
*/
class TestJobManagementView {
refreshJobs() { return undefined; }
openCreateJobDialog() { return undefined; }
openCreateAlertDialog() { return undefined; }
openCreateOperatorDialog() { return undefined; }
openCreateProxyDialog() { return undefined; }
}
// Tests // Tests
suite('Job Management Actions', () => { suite('Job Management Actions', () => {

View File

@@ -5,7 +5,7 @@
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { IItemConfig, IComponentShape } from 'sql/workbench/api/common/sqlExtHostTypes'; import { IItemConfig, IComponentShape } from 'sql/workbench/api/common/sqlExtHostTypes';
import { IComponentEventArgs } from 'sql/workbench/electron-browser/modelComponents/interfaces'; import { IComponentEventArgs } from 'sql/workbench/browser/modelComponents/interfaces';
import { Event } from 'vs/base/common/event'; import { Event } from 'vs/base/common/event';
export interface IView { export interface IView {

View File

@@ -8,8 +8,8 @@ import { IConnectionManagementService } from 'sql/platform/connection/common/con
import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import { IDisposable } from 'vs/base/common/lifecycle'; import { IDisposable } from 'vs/base/common/lifecycle';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as TelemetryKeys from 'sql/platform/telemetry/telemetryKeys'; import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
import * as TelemetryUtils from 'sql/platform/telemetry/telemetryUtilities'; import * as TelemetryUtils from 'sql/platform/telemetry/common/telemetryUtilities';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { Event, Emitter } from 'vs/base/common/event'; import { Event, Emitter } from 'vs/base/common/event';
import { keys } from 'vs/base/common/map'; import { keys } from 'vs/base/common/map';

View File

@@ -9,19 +9,16 @@ import QueryRunner from 'sql/platform/query/common/queryRunner';
import { DataService } from 'sql/workbench/parts/grid/services/dataService'; import { DataService } from 'sql/workbench/parts/grid/services/dataService';
import { IQueryModelService, IQueryEvent } from 'sql/platform/query/common/queryModel'; import { IQueryModelService, IQueryEvent } from 'sql/platform/query/common/queryModel';
import { QueryInput } from 'sql/workbench/parts/query/common/queryInput'; import { QueryInput } from 'sql/workbench/parts/query/common/queryInput';
import { SqlFlavorStatusbarItem } from 'sql/workbench/parts/query/browser/flavorStatus';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as nls from 'vs/nls'; import * as nls from 'vs/nls';
import * as platform from 'vs/platform/registry/common/platform';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { Event, Emitter } from 'vs/base/common/event'; import { Event, Emitter } from 'vs/base/common/event';
import * as strings from 'vs/base/common/strings'; import * as strings from 'vs/base/common/strings';
import * as types from 'vs/base/common/types'; import * as types from 'vs/base/common/types';
import { INotificationService } from 'vs/platform/notification/common/notification'; import { INotificationService } from 'vs/platform/notification/common/notification';
import Severity from 'vs/base/common/severity'; import Severity from 'vs/base/common/severity';
import { StatusbarAlignment } from 'vs/platform/statusbar/common/statusbar';
const selectionSnippetMaxLen = 100; const selectionSnippetMaxLen = 100;

View File

@@ -27,7 +27,7 @@ import { ITextResourcePropertiesService } from 'vs/editor/common/services/resour
import { URI } from 'vs/base/common/uri'; import { URI } from 'vs/base/common/uri';
import { mssqlProviderName } from 'sql/platform/connection/common/constants'; import { mssqlProviderName } from 'sql/platform/connection/common/constants';
import { IGridDataProvider, getResultsString } from 'sql/platform/query/common/gridDataProvider'; import { IGridDataProvider, getResultsString } from 'sql/platform/query/common/gridDataProvider';
import { getErrorMessage } from 'sql/workbench/parts/notebook/notebookUtils'; import { getErrorMessage } from 'vs/base/common/errors';
export interface IEditSessionReadyEvent { export interface IEditSessionReadyEvent {
ownerUri: string; ownerUri: string;

View File

@@ -21,8 +21,8 @@ import * as Utils from 'sql/platform/connection/common/utils';
import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/common/objectExplorerService'; import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/common/objectExplorerService';
import { ITaskService } from 'sql/platform/tasks/common/tasksService'; import { ITaskService } from 'sql/platform/tasks/common/tasksService';
import { TaskStatus, TaskNode } from 'sql/platform/tasks/common/tasksNode'; import { TaskStatus, TaskNode } from 'sql/platform/tasks/common/tasksNode';
import * as TelemetryKeys from 'sql/platform/telemetry/telemetryKeys'; import * as TelemetryKeys from 'sql/platform/telemetry/common/telemetryKeys';
import * as TelemetryUtils from 'sql/platform/telemetry/telemetryUtilities'; import * as TelemetryUtils from 'sql/platform/telemetry/common/telemetryUtilities';
import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement'; import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement';
import { invalidProvider } from 'sql/base/common/errors'; import { invalidProvider } from 'sql/base/common/errors';
import { ILogService } from 'vs/platform/log/common/log'; import { ILogService } from 'vs/platform/log/common/log';

View File

@@ -0,0 +1,115 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { MenuRegistry, ICommandAction } from 'vs/platform/actions/common/actions';
import { IDisposable } from 'vs/base/common/lifecycle';
import { ITaskRegistry, ITaskHandler, ITask, ITaskHandlerDescription, ITaskOptions } from 'sql/platform/tasks/common/tasks';
import * as types from 'vs/base/common/types';
import { Event, Emitter } from 'vs/base/common/event';
import { URI } from 'vs/base/common/uri';
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import { createCSSRule } from 'vs/base/browser/dom';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { IdGenerator } from 'vs/base/common/idGenerator';
const ids = new IdGenerator('task-icon-');
export const TaskRegistry: ITaskRegistry = new class implements ITaskRegistry {
private _tasks = new Array<string>();
private _onTaskRegistered = new Emitter<string>();
public readonly onTaskRegistered: Event<string> = this._onTaskRegistered.event;
private taskIdToIconClassNameMap: Map<string /* task id */, string /* CSS rule */> = new Map<string, string>();
registerTask(idOrTask: string | ITask, handler?: ITaskHandler): IDisposable {
let disposable: IDisposable;
let id: string;
if (types.isString(idOrTask)) {
disposable = CommandsRegistry.registerCommand(idOrTask, handler);
id = idOrTask;
} else {
if (idOrTask.iconClass) {
this.taskIdToIconClassNameMap.set(idOrTask.id, idOrTask.iconClass);
}
disposable = CommandsRegistry.registerCommand(idOrTask);
id = idOrTask.id;
}
this._tasks.push(id);
this._onTaskRegistered.fire(id);
return {
dispose: () => {
let index = this._tasks.indexOf(id);
if (index >= 0) {
this._tasks = this._tasks.splice(index, 1);
}
disposable.dispose();
}
};
}
getOrCreateTaskIconClassName(item: ICommandAction): string {
let iconClass = null;
if (this.taskIdToIconClassNameMap.has(item.id)) {
iconClass = this.taskIdToIconClassNameMap.get(item.id);
} else if (item.iconLocation) {
iconClass = ids.nextId();
createCSSRule(`.icon.${iconClass}`, `background-image: url("${(item.iconLocation.light || item.iconLocation.dark).toString()}")`);
createCSSRule(`.vs-dark .icon.${iconClass}, .hc-black .icon.${iconClass}`, `background-image: url("${(item.iconLocation.dark).toString()}")`);
this.taskIdToIconClassNameMap.set(item.id, iconClass);
}
return iconClass;
}
getTasks(): string[] {
return this._tasks.slice(0);
}
};
export abstract class Task {
public readonly id: string;
public readonly title: string;
public readonly iconPathDark: string;
public readonly iconPath: { dark: URI; light?: URI; };
private readonly _iconClass: string;
private readonly _description: ITaskHandlerDescription;
constructor(private opts: ITaskOptions) {
this.id = opts.id;
this.title = opts.title;
this.iconPath = {
dark: opts.iconPath ? URI.parse(opts.iconPath.dark) : undefined,
light: opts.iconPath ? URI.parse(opts.iconPath.light) : undefined,
};
this._iconClass = opts.iconClass;
this._description = opts.description;
}
private toITask(): ITask {
return {
id: this.id,
handler: (accessor, profile, args) => this.runTask(accessor, profile, args),
description: this._description,
iconClass: this._iconClass
};
}
private toCommandAction(): ICommandAction {
return {
iconLocation: this.iconPath,
id: this.id,
title: this.title
};
}
public registerTask(): IDisposable {
MenuRegistry.addCommand(this.toCommandAction());
return TaskRegistry.registerTask(this.toITask());
}
public abstract runTask(accessor: ServicesAccessor, profile: IConnectionProfile, args: any): void | Promise<void>;
}

View File

@@ -6,14 +6,11 @@
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces'; import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import * as types from 'vs/base/common/types'; import * as types from 'vs/base/common/types';
import { ILocalizedString, MenuRegistry, ICommandAction } from 'vs/platform/actions/common/actions'; import { ILocalizedString, ICommandAction } from 'vs/platform/actions/common/actions';
import { Event, Emitter } from 'vs/base/common/event'; import { Event } from 'vs/base/common/event';
import { IDisposable } from 'vs/base/common/lifecycle'; import { IDisposable } from 'vs/base/common/lifecycle';
import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey';
import { IdGenerator } from 'vs/base/common/idGenerator'; import { IdGenerator } from 'vs/base/common/idGenerator';
import { createCSSRule } from 'vs/base/browser/dom';
import { URI } from 'vs/base/common/uri';
import { CommandsRegistry } from 'vs/platform/commands/common/commands';
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
export interface ITaskOptions { export interface ITaskOptions {
@@ -24,50 +21,6 @@ export interface ITaskOptions {
iconClass?: string; iconClass?: string;
} }
export abstract class Task {
public readonly id: string;
public readonly title: string;
public readonly iconPathDark: string;
public readonly iconPath: { dark: URI; light?: URI; };
private readonly _iconClass: string;
private readonly _description: ITaskHandlerDescription;
constructor(private opts: ITaskOptions) {
this.id = opts.id;
this.title = opts.title;
this.iconPath = {
dark: opts.iconPath ? URI.parse(opts.iconPath.dark) : undefined,
light: opts.iconPath ? URI.parse(opts.iconPath.light) : undefined,
};
this._iconClass = opts.iconClass;
this._description = opts.description;
}
private toITask(): ITask {
return {
id: this.id,
handler: (accessor, profile, args) => this.runTask(accessor, profile, args),
description: this._description,
iconClass: this._iconClass
};
}
private toCommandAction(): ICommandAction {
return {
iconLocation: this.iconPath,
id: this.id,
title: this.title
};
}
public registerTask(): IDisposable {
MenuRegistry.addCommand(this.toCommandAction());
return TaskRegistry.registerTask(this.toITask());
}
public abstract runTask(accessor: ServicesAccessor, profile: IConnectionProfile, args: any): void | Promise<void>;
}
export interface ITaskHandlerDescription { export interface ITaskHandlerDescription {
description: string; description: string;
args: { name: string; description?: string; constraint?: types.TypeConstraint; }[]; args: { name: string; description?: string; constraint?: types.TypeConstraint; }[];
@@ -105,58 +58,3 @@ export interface ITaskRegistry {
getOrCreateTaskIconClassName(item: ICommandAction): string; getOrCreateTaskIconClassName(item: ICommandAction): string;
onTaskRegistered: Event<string>; onTaskRegistered: Event<string>;
} }
const ids = new IdGenerator('task-icon-');
export const TaskRegistry: ITaskRegistry = new class implements ITaskRegistry {
private _tasks = new Array<string>();
private _onTaskRegistered = new Emitter<string>();
public readonly onTaskRegistered: Event<string> = this._onTaskRegistered.event;
private taskIdToIconClassNameMap: Map<string /* task id */, string /* CSS rule */> = new Map<string, string>();
registerTask(idOrTask: string | ITask, handler?: ITaskHandler): IDisposable {
let disposable: IDisposable;
let id: string;
if (types.isString(idOrTask)) {
disposable = CommandsRegistry.registerCommand(idOrTask, handler);
id = idOrTask;
} else {
if (idOrTask.iconClass) {
this.taskIdToIconClassNameMap.set(idOrTask.id, idOrTask.iconClass);
}
disposable = CommandsRegistry.registerCommand(idOrTask);
id = idOrTask.id;
}
this._tasks.push(id);
this._onTaskRegistered.fire(id);
return {
dispose: () => {
let index = this._tasks.indexOf(id);
if (index >= 0) {
this._tasks = this._tasks.splice(index, 1);
}
disposable.dispose();
}
};
}
getOrCreateTaskIconClassName(item: ICommandAction): string {
let iconClass = null;
if (this.taskIdToIconClassNameMap.has(item.id)) {
iconClass = this.taskIdToIconClassNameMap.get(item.id);
} else if (item.iconLocation) {
iconClass = ids.nextId();
createCSSRule(`.icon.${iconClass}`, `background-image: url("${(item.iconLocation.light || item.iconLocation.dark).toString()}")`);
createCSSRule(`.vs-dark .icon.${iconClass}, .hc-black .icon.${iconClass}`, `background-image: url("${(item.iconLocation.dark).toString()}")`);
this.taskIdToIconClassNameMap.set(item.id, iconClass);
}
return iconClass;
}
getTasks(): string[] {
return this._tasks.slice(0);
}
};

View File

@@ -3,12 +3,12 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import * as TelemetryUtils from 'sql/platform/telemetry/telemetryUtilities'; import * as TelemetryUtils from 'sql/platform/telemetry/common/telemetryUtilities';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { TelemetryServiceStub } from 'sqltest/stubs/telemetryServiceStub';
import * as TypeMoq from 'typemoq'; import * as TypeMoq from 'typemoq';
import * as assert from 'assert'; import * as assert from 'assert';
import { NullLogService } from 'vs/platform/log/common/log'; import { NullLogService } from 'vs/platform/log/common/log';
import { SimpleTelemetryService } from 'vs/workbench/browser/web.simpleservices';
suite('SQL Telemetry Utilities tests', () => { suite('SQL Telemetry Utilities tests', () => {
let telemetryService: TypeMoq.Mock<ITelemetryService>; let telemetryService: TypeMoq.Mock<ITelemetryService>;
@@ -35,7 +35,7 @@ suite('SQL Telemetry Utilities tests', () => {
}; };
setup(() => { setup(() => {
telemetryService = TypeMoq.Mock.ofType(TelemetryServiceStub, TypeMoq.MockBehavior.Strict); telemetryService = TypeMoq.Mock.ofType(SimpleTelemetryService, TypeMoq.MockBehavior.Strict);
telemetryService.setup(x => x.publicLog(TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(x => Promise.resolve(none)); telemetryService.setup(x => x.publicLog(TypeMoq.It.isAny(), TypeMoq.It.isAny())).returns(x => Promise.resolve(none));
}); });

View File

@@ -10,7 +10,6 @@ import * as cr from 'vs/platform/theme/common/colorRegistry';
import { IThemable, attachStyler } from 'vs/platform/theme/common/styler'; import { IThemable, attachStyler } from 'vs/platform/theme/common/styler';
import { IDisposable } from 'vs/base/common/lifecycle'; import { IDisposable } from 'vs/base/common/lifecycle';
import { SIDE_BAR_BACKGROUND, SIDE_BAR_SECTION_HEADER_FOREGROUND, SIDE_BAR_SECTION_HEADER_BACKGROUND, SIDE_BAR_DRAG_AND_DROP_BACKGROUND, PANEL_INACTIVE_TITLE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND } from 'vs/workbench/common/theme'; import { SIDE_BAR_BACKGROUND, SIDE_BAR_SECTION_HEADER_FOREGROUND, SIDE_BAR_SECTION_HEADER_BACKGROUND, SIDE_BAR_DRAG_AND_DROP_BACKGROUND, PANEL_INACTIVE_TITLE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND } from 'vs/workbench/common/theme';
import { IPanelColors } from 'vs/workbench/browser/parts/views/panelViewlet';
export function attachModalDialogStyler(widget: IThemable, themeService: IThemeService, style?: export function attachModalDialogStyler(widget: IThemable, themeService: IThemeService, style?:
{ {
@@ -272,7 +271,7 @@ export function attachCheckboxStyler(widget: IThemable, themeService: IThemeServ
} }
export function attachPanelStyler(widget: IThemable, themeService: IThemeService) { export function attachPanelStyler(widget: IThemable, themeService: IThemeService) {
return attachStyler<IPanelColors>(themeService, { return attachStyler(themeService, {
headerForeground: SIDE_BAR_SECTION_HEADER_FOREGROUND, headerForeground: SIDE_BAR_SECTION_HEADER_FOREGROUND,
headerBackground: SIDE_BAR_SECTION_HEADER_BACKGROUND, headerBackground: SIDE_BAR_SECTION_HEADER_BACKGROUND,
// headerHighContrastBorder: index === 0 ? null : contrastBorder, // headerHighContrastBorder: index === 0 ? null : contrastBorder,

View File

@@ -11,7 +11,7 @@ import {
MainThreadAccountManagementShape, MainThreadAccountManagementShape,
SqlExtHostContext, SqlExtHostContext,
SqlMainContext SqlMainContext
} from 'sql/workbench/api/node/sqlExtHost.protocol'; } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes'; import { UpdateAccountListEventParams } from 'sql/platform/accounts/common/eventTypes';

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { ITaskService } from 'sql/platform/tasks/common/tasksService'; import { ITaskService } from 'sql/platform/tasks/common/tasksService';
import { MainThreadBackgroundTaskManagementShape, SqlMainContext, ExtHostBackgroundTaskManagementShape, SqlExtHostContext } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { MainThreadBackgroundTaskManagementShape, SqlMainContext, ExtHostBackgroundTaskManagementShape, SqlExtHostContext } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { SqlExtHostContext, SqlMainContext, ExtHostConnectionManagementShape, MainThreadConnectionManagementShape } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { SqlExtHostContext, SqlMainContext, ExtHostConnectionManagementShape, MainThreadConnectionManagementShape } from 'sql/workbench/api/common/sqlExtHost.protocol';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';

View File

@@ -7,7 +7,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { import {
SqlExtHostContext, ExtHostCredentialManagementShape, SqlExtHostContext, ExtHostCredentialManagementShape,
MainThreadCredentialManagementShape, SqlMainContext MainThreadCredentialManagementShape, SqlMainContext
} from 'sql/workbench/api/node/sqlExtHost.protocol'; } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { ICredentialsService } from 'sql/platform/credentials/common/credentialsService'; import { ICredentialsService } from 'sql/platform/credentials/common/credentialsService';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { SqlMainContext, MainThreadDashboardShape, ExtHostDashboardShape, SqlExtHostContext } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { SqlMainContext, MainThreadDashboardShape, ExtHostDashboardShape, SqlExtHostContext } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { IDashboardService } from 'sql/platform/dashboard/browser/dashboardService'; import { IDashboardService } from 'sql/platform/dashboard/browser/dashboardService';

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { MainThreadDashboardWebviewShape, SqlMainContext, ExtHostDashboardWebviewsShape, SqlExtHostContext } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { MainThreadDashboardWebviewShape, SqlMainContext, ExtHostDashboardWebviewsShape, SqlExtHostContext } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { IDashboardViewService, IDashboardWebview } from 'sql/platform/dashboard/common/dashboardViewService'; import { IDashboardViewService, IDashboardWebview } from 'sql/platform/dashboard/common/dashboardViewService';

View File

@@ -7,7 +7,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { import {
SqlExtHostContext, ExtHostDataProtocolShape, SqlExtHostContext, ExtHostDataProtocolShape,
MainThreadDataProtocolShape, SqlMainContext MainThreadDataProtocolShape, SqlMainContext
} from 'sql/workbench/api/node/sqlExtHost.protocol'; } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement'; import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement';
import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService'; import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService';
import { IQueryManagementService } from 'sql/platform/query/common/queryManagement'; import { IQueryManagementService } from 'sql/platform/query/common/queryManagement';

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { SqlMainContext, MainThreadExtensionManagementShape } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { SqlMainContext, MainThreadExtensionManagementShape } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { dispose, IDisposable } from 'vs/base/common/lifecycle'; import { dispose, IDisposable } from 'vs/base/common/lifecycle';

View File

@@ -6,7 +6,7 @@
import 'vs/css!sql/media/icons/common-icons'; import 'vs/css!sql/media/icons/common-icons';
import { WebViewDialog } from 'sql/workbench/parts/webview/electron-browser/webViewDialog'; import { WebViewDialog } from 'sql/workbench/parts/webview/electron-browser/webViewDialog';
import { MainThreadModalDialogShape, SqlMainContext, SqlExtHostContext, ExtHostModalDialogsShape } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { MainThreadModalDialogShape, SqlMainContext, SqlExtHostContext, ExtHostModalDialogsShape } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { MainThreadModelViewShape, SqlMainContext, ExtHostModelViewShape, SqlExtHostContext } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { MainThreadModelViewShape, SqlMainContext, ExtHostModelViewShape, SqlExtHostContext } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { Disposable } from 'vs/base/common/lifecycle'; import { Disposable } from 'vs/base/common/lifecycle';

View File

@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { SqlExtHostContext, SqlMainContext, ExtHostNotebookShape, MainThreadNotebookShape } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { SqlExtHostContext, SqlMainContext, ExtHostNotebookShape, MainThreadNotebookShape } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { Disposable } from 'vs/base/common/lifecycle'; import { Disposable } from 'vs/base/common/lifecycle';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
@@ -15,7 +15,7 @@ import { INotebookService, INotebookProvider, INotebookManager } from 'sql/workb
import { INotebookManagerDetails, INotebookSessionDetails, INotebookKernelDetails, FutureMessageType, INotebookFutureDetails, INotebookFutureDone } from 'sql/workbench/api/common/sqlExtHostTypes'; import { INotebookManagerDetails, INotebookSessionDetails, INotebookKernelDetails, FutureMessageType, INotebookFutureDetails, INotebookFutureDone } from 'sql/workbench/api/common/sqlExtHostTypes';
import { LocalContentManager } from 'sql/workbench/services/notebook/node/localContentManager'; import { LocalContentManager } from 'sql/workbench/services/notebook/node/localContentManager';
import { Deferred } from 'sql/base/common/promise'; import { Deferred } from 'sql/base/common/promise';
import { FutureInternal } from 'sql/workbench/parts/notebook/models/modelInterfaces'; import { FutureInternal } from 'sql/workbench/parts/notebook/node/models/modelInterfaces';
@extHostNamedCustomer(SqlMainContext.MainThreadNotebook) @extHostNamedCustomer(SqlMainContext.MainThreadNotebook)
export class MainThreadNotebook extends Disposable implements MainThreadNotebookShape { export class MainThreadNotebook extends Disposable implements MainThreadNotebookShape {

View File

@@ -20,13 +20,13 @@ import * as types from 'vs/base/common/types';
import { import {
SqlMainContext, MainThreadNotebookDocumentsAndEditorsShape, SqlExtHostContext, ExtHostNotebookDocumentsAndEditorsShape, SqlMainContext, MainThreadNotebookDocumentsAndEditorsShape, SqlExtHostContext, ExtHostNotebookDocumentsAndEditorsShape,
INotebookDocumentsAndEditorsDelta, INotebookEditorAddData, INotebookShowOptions, INotebookModelAddedData, INotebookModelChangedData INotebookDocumentsAndEditorsDelta, INotebookEditorAddData, INotebookShowOptions, INotebookModelAddedData, INotebookModelChangedData
} from 'sql/workbench/api/node/sqlExtHost.protocol'; } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { NotebookInput } from 'sql/workbench/parts/notebook/notebookInput'; import { NotebookInput } from 'sql/workbench/parts/notebook/node/notebookInput';
import { INotebookService, INotebookEditor, IProviderInfo } from 'sql/workbench/services/notebook/common/notebookService'; import { INotebookService, INotebookEditor, IProviderInfo } from 'sql/workbench/services/notebook/common/notebookService';
import { ISingleNotebookEditOperation, NotebookChangeKind } from 'sql/workbench/api/common/sqlExtHostTypes'; import { ISingleNotebookEditOperation, NotebookChangeKind } from 'sql/workbench/api/common/sqlExtHostTypes';
import { disposed } from 'vs/base/common/errors'; import { disposed } from 'vs/base/common/errors';
import { ICellModel, NotebookContentChange, INotebookModel } from 'sql/workbench/parts/notebook/models/modelInterfaces'; import { ICellModel, NotebookContentChange, INotebookModel } from 'sql/workbench/parts/notebook/node/models/modelInterfaces';
import { NotebookChangeType, CellTypes } from 'sql/workbench/parts/notebook/models/contracts'; import { NotebookChangeType, CellTypes } from 'sql/workbench/parts/notebook/common/models/contracts';
import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService'; import { ICapabilitiesService } from 'sql/platform/capabilities/common/capabilitiesService';
import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';

View File

@@ -3,18 +3,13 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { SqlExtHostContext, SqlMainContext, ExtHostObjectExplorerShape, MainThreadObjectExplorerShape } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { SqlExtHostContext, SqlMainContext, ExtHostObjectExplorerShape, MainThreadObjectExplorerShape } from 'sql/workbench/api/common/sqlExtHost.protocol';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement';
import { IObjectExplorerService, NodeInfoWithConnection } from 'sql/workbench/services/objectExplorer/common/objectExplorerService'; import { IObjectExplorerService, NodeInfoWithConnection } from 'sql/workbench/services/objectExplorer/common/objectExplorerService';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
import * as TaskUtilities from 'sql/workbench/common/taskUtilities';
import { IConnectionProfile } from 'sql/platform/connection/common/interfaces';
import { dispose, IDisposable } from 'vs/base/common/lifecycle'; import { dispose, IDisposable } from 'vs/base/common/lifecycle';
import { TreeItemCollapsibleState } from 'sql/workbench/parts/objectExplorer/common/treeNode';
@extHostNamedCustomer(SqlMainContext.MainThreadObjectExplorer) @extHostNamedCustomer(SqlMainContext.MainThreadObjectExplorer)
export class MainThreadObjectExplorer implements MainThreadObjectExplorerShape { export class MainThreadObjectExplorer implements MainThreadObjectExplorerShape {
@@ -24,9 +19,7 @@ export class MainThreadObjectExplorer implements MainThreadObjectExplorerShape {
constructor( constructor(
extHostContext: IExtHostContext, extHostContext: IExtHostContext,
@IConnectionManagementService private _connectionManagementService: IConnectionManagementService,
@IObjectExplorerService private _objectExplorerService: IObjectExplorerService, @IObjectExplorerService private _objectExplorerService: IObjectExplorerService,
@IEditorService private _workbenchEditorService: IEditorService
) { ) {
if (extHostContext) { if (extHostContext) {
this._proxy = extHostContext.getProxy(SqlExtHostContext.ExtHostObjectExplorer); this._proxy = extHostContext.getProxy(SqlExtHostContext.ExtHostObjectExplorer);

View File

@@ -3,7 +3,7 @@
* Licensed under the Source EULA. See License.txt in the project root for license information. * Licensed under the Source EULA. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { SqlExtHostContext, SqlMainContext, ExtHostQueryEditorShape, MainThreadQueryEditorShape } from 'sql/workbench/api/node/sqlExtHost.protocol'; import { SqlExtHostContext, SqlMainContext, ExtHostQueryEditorShape, MainThreadQueryEditorShape } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';
import { IConnectionManagementService, IConnectionCompletionOptions, ConnectionType, RunQueryOnConnectionMode } from 'sql/platform/connection/common/connectionManagement'; import { IConnectionManagementService, IConnectionCompletionOptions, ConnectionType, RunQueryOnConnectionMode } from 'sql/platform/connection/common/connectionManagement';

View File

@@ -11,7 +11,7 @@ import {
MainThreadResourceProviderShape, MainThreadResourceProviderShape,
SqlExtHostContext, SqlExtHostContext,
SqlMainContext SqlMainContext
} from 'sql/workbench/api/node/sqlExtHost.protocol'; } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers'; import { extHostNamedCustomer } from 'vs/workbench/api/common/extHostCustomers';

View File

@@ -7,7 +7,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import { import {
SqlExtHostContext, ExtHostSerializationProviderShape, SqlExtHostContext, ExtHostSerializationProviderShape,
MainThreadSerializationProviderShape, SqlMainContext MainThreadSerializationProviderShape, SqlMainContext
} from 'sql/workbench/api/node/sqlExtHost.protocol'; } from 'sql/workbench/api/common/sqlExtHost.protocol';
import { ISerializationService } from 'sql/platform/serialization/common/serializationService'; import { ISerializationService } from 'sql/platform/serialization/common/serializationService';
import * as azdata from 'azdata'; import * as azdata from 'azdata';
import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol'; import { IExtHostContext } from 'vs/workbench/api/common/extHost.protocol';

Some files were not shown because too many files have changed in this diff Show More