diff --git a/src/sql/azdata.d.ts b/src/sql/azdata.d.ts index 50914516a4..291875523c 100644 --- a/src/sql/azdata.d.ts +++ b/src/sql/azdata.d.ts @@ -2361,8 +2361,8 @@ declare module 'azdata' { } export interface FirewallRuleInfo { - startIpAddress: string; - endIpAddress: string; + startIpAddress?: string; + endIpAddress?: string; serverName: string; securityTokenMappings: {}; } diff --git a/src/sql/platform/connection/common/connectionManagement.ts b/src/sql/platform/connection/common/connectionManagement.ts index d8aba8c134..dfae757d86 100644 --- a/src/sql/platform/connection/common/connectionManagement.ts +++ b/src/sql/platform/connection/common/connectionManagement.ts @@ -6,7 +6,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { Event } from 'vs/base/common/event'; import * as azdata from 'azdata'; -import { IConnectionProfileGroup, ConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup'; +import { IConnectionProfileGroup, ConnectionProfileGroup, INewConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup'; import { ConnectionProfile } from 'sql/platform/connection/common/connectionProfile'; import { IConnectionProfile } from 'sql/platform/connection/common/interfaces'; import { ConnectionManagementInfo } from 'sql/platform/connection/common/connectionManagementInfo'; @@ -151,7 +151,7 @@ export interface IConnectionManagementService { getActiveConnections(providers?: string[]): ConnectionProfile[]; - saveProfileGroup(profile: IConnectionProfileGroup): Promise; + saveProfileGroup(profile: INewConnectionProfileGroup): Promise; changeGroupIdForConnectionGroup(source: IConnectionProfileGroup, target: IConnectionProfileGroup): Promise; diff --git a/src/sql/platform/connection/common/connectionProfileGroup.ts b/src/sql/platform/connection/common/connectionProfileGroup.ts index 6248b4956b..d7b0c7cfc3 100644 --- a/src/sql/platform/connection/common/connectionProfileGroup.ts +++ b/src/sql/platform/connection/common/connectionProfileGroup.ts @@ -9,14 +9,18 @@ import { isUndefinedOrNull } from 'vs/base/common/types'; import { assign } from 'vs/base/common/objects'; import { find } from 'vs/base/common/arrays'; -export interface IConnectionProfileGroup { - id: string; +export interface INewConnectionProfileGroup { + id?: string; parentId?: string; name: string; color?: string; description?: string; } +export interface IConnectionProfileGroup extends INewConnectionProfileGroup { + id: string; +} + export class ConnectionProfileGroup extends Disposable implements IConnectionProfileGroup { private _childGroups: ConnectionProfileGroup[] = []; diff --git a/src/sql/workbench/services/assessment/test/assessmentService.test.ts b/src/sql/workbench/services/assessment/test/assessmentService.test.ts index 9473811c7d..7215497686 100644 --- a/src/sql/workbench/services/assessment/test/assessmentService.test.ts +++ b/src/sql/workbench/services/assessment/test/assessmentService.test.ts @@ -12,7 +12,7 @@ suite('Assessment service tests', () => { }); test('Construction - Assessment service Initialization', () => { - let service = new AssessmentService(undefined); + let service = new AssessmentService(undefined!); assert(service); }); diff --git a/src/sql/workbench/services/bootstrap/browser/bootstrapService.ts b/src/sql/workbench/services/bootstrap/browser/bootstrapService.ts index 64248c51e5..9a59f7d3a2 100644 --- a/src/sql/workbench/services/bootstrap/browser/bootstrapService.ts +++ b/src/sql/workbench/services/bootstrap/browser/bootstrapService.ts @@ -29,7 +29,7 @@ export function providerIterator(service: IInstantiationService): Provider[] { function createUniqueSelector(selector: string): string { let num: number; if (selectorCounter.has(selector)) { - num = selectorCounter.get(selector); + num = selectorCounter.get(selector)!; } else { num = 0; } diff --git a/src/sql/workbench/services/bootstrap/browser/commonServiceInterface.service.ts b/src/sql/workbench/services/bootstrap/browser/commonServiceInterface.service.ts index 126951b35d..045c43f3ee 100644 --- a/src/sql/workbench/services/bootstrap/browser/commonServiceInterface.service.ts +++ b/src/sql/workbench/services/bootstrap/browser/commonServiceInterface.service.ts @@ -95,13 +95,13 @@ export class SingleQueryManagementService { */ @Injectable() export class CommonServiceInterface extends AngularDisposable { - protected _uri: string; + protected _uri!: string; /* Special Services */ - protected _singleMetadataService: SingleConnectionMetadataService; - protected _singleConnectionManagementService: SingleConnectionManagementService; - protected _singleAdminService: SingleAdminService; - protected _singleQueryManagementService: SingleQueryManagementService; + protected _singleMetadataService?: SingleConnectionMetadataService; + protected _singleConnectionManagementService?: SingleConnectionManagementService; + protected _singleAdminService?: SingleAdminService; + protected _singleQueryManagementService?: SingleQueryManagementService; public scopedContextKeyService: IContextKeyService; protected _connectionContextKey: ConnectionContextKey; @@ -114,36 +114,25 @@ export class CommonServiceInterface extends AngularDisposable { @Inject(IQueryManagementService) protected _queryManagementService: IQueryManagementService ) { super(); - // during testing there may not be params - if (this._params) { - this.scopedContextKeyService = this._params.scopedContextService; - this._connectionContextKey = this._params.connectionContextKey; - this.uri = this._params.ownerUri; - } + this.scopedContextKeyService = this._params.scopedContextService; + this._connectionContextKey = this._params.connectionContextKey; + this.uri = this._params.ownerUri; } public get metadataService(): SingleConnectionMetadataService { - return this._singleMetadataService; + return this._singleMetadataService!; } public get connectionManagementService(): SingleConnectionManagementService { - return this._singleConnectionManagementService; + return this._singleConnectionManagementService!; } public get adminService(): SingleAdminService { - return this._singleAdminService; + return this._singleAdminService!; } public get queryManagementService(): SingleQueryManagementService { - return this._singleQueryManagementService; - } - - protected setUri(uri: string) { - this._uri = uri; - this._singleMetadataService = new SingleConnectionMetadataService(this._metadataService, this._uri); - this._singleConnectionManagementService = new SingleConnectionManagementService(this._connectionManagementService, this._uri, this._connectionContextKey); - this._singleAdminService = new SingleAdminService(this._adminService, this._uri); - this._singleQueryManagementService = new SingleQueryManagementService(this._queryManagementService, this._uri); + return this._singleQueryManagementService!; } /** @@ -151,11 +140,15 @@ export class CommonServiceInterface extends AngularDisposable { * Inits all the services that depend on knowing a uri */ protected set uri(uri: string) { - this.setUri(uri); + this._uri = uri; + this._singleMetadataService = new SingleConnectionMetadataService(this._metadataService, this._uri); + this._singleConnectionManagementService = new SingleConnectionManagementService(this._connectionManagementService, this._uri, this._connectionContextKey); + this._singleAdminService = new SingleAdminService(this._adminService, this._uri); + this._singleQueryManagementService = new SingleQueryManagementService(this._queryManagementService, this._uri); } protected get uri(): string { - return this._uri; + return this._uri!; } /** @@ -163,7 +156,7 @@ export class CommonServiceInterface extends AngularDisposable { * In general don't use this, use specific services instances exposed publicly */ public getUnderlyingUri(): string { - return this._uri; + return this._uri!; } public getOriginalConnectionProfile(): IConnectionProfile { diff --git a/src/sql/workbench/services/connection/common/connectionContextKey.ts b/src/sql/workbench/services/connection/common/connectionContextKey.ts index d7e0fd8a9f..4f950941ec 100644 --- a/src/sql/workbench/services/connection/common/connectionContextKey.ts +++ b/src/sql/workbench/services/connection/common/connectionContextKey.ts @@ -43,7 +43,7 @@ export class ConnectionContextKey implements IContextKey { this._providerKey.set(value && value.providerName); this._serverKey.set(value && value.serverName); this._databaseKey.set(value && value.databaseName); - this._isQueryProviderKey.set(value && value.providerName && queryProviders.indexOf(value.providerName) !== -1); + this._isQueryProviderKey.set(!!value && !!value.providerName && queryProviders.indexOf(value.providerName) !== -1); } private setCanOpenInPortal(connectionProfile: IConnectionProfile): void { @@ -64,7 +64,7 @@ export class ConnectionContextKey implements IContextKey { this._canOpenInAzurePortal.reset(); } - public get(): IConnectionProfile { + public get(): IConnectionProfile | undefined { return this._connectionKey.get(); } } diff --git a/src/sql/workbench/services/dashboard/browser/newDashboardTabDialogImpl.ts b/src/sql/workbench/services/dashboard/browser/newDashboardTabDialogImpl.ts index 179cfc13fd..39230fc397 100644 --- a/src/sql/workbench/services/dashboard/browser/newDashboardTabDialogImpl.ts +++ b/src/sql/workbench/services/dashboard/browser/newDashboardTabDialogImpl.ts @@ -76,7 +76,7 @@ class ExtensionListRenderer implements IListRenderer; - private _extensionViewContainer: HTMLElement; - private _noExtensionViewContainer: HTMLElement; + private _addNewTabButton?: Button; + private _cancelButton?: Button; + private _extensionList?: List; + private _extensionViewContainer?: HTMLElement; + private _noExtensionViewContainer?: HTMLElement; private _viewModel: NewDashboardTabViewModel; @@ -139,7 +139,7 @@ export class NewDashboardTabDialog extends Modal { // MODAL OVERRIDE METHODS ////////////////////////////////////////////// protected layout(height?: number): void { - this._extensionList.layout(height); + this._extensionList!.layout(height); } public render() { @@ -188,8 +188,8 @@ export class NewDashboardTabDialog extends Modal { private registerListeners(): void { // Theme styler - this._register(attachButtonStyler(this._cancelButton, this._themeService)); - this._register(attachButtonStyler(this._addNewTabButton, this._themeService)); + this._register(attachButtonStyler(this._cancelButton!, this._themeService)); + this._register(attachButtonStyler(this._addNewTabButton!, this._themeService)); } /* Overwrite escape key behavior */ @@ -207,8 +207,8 @@ export class NewDashboardTabDialog extends Modal { } private addNewTabs() { - if (this._addNewTabButton.enabled) { - let selectedTabs = this._extensionList.getSelectedElements(); + if (this._addNewTabButton!.enabled) { + let selectedTabs = this._extensionList!.getSelectedElements(); this._onAddTabs.fire(selectedTabs); } } @@ -223,19 +223,19 @@ export class NewDashboardTabDialog extends Modal { } private onUpdateTabList(tabs: IDashboardUITab[]) { - this._extensionList.splice(0, this._extensionList.length, tabs); + this._extensionList!.splice(0, this._extensionList!.length, tabs); this.layout(); - if (this._extensionList.length > 0) { - this._extensionViewContainer.hidden = false; - this._noExtensionViewContainer.hidden = true; - this._extensionList.setSelection([0]); - this._extensionList.domFocus(); - this._addNewTabButton.enabled = true; + if (this._extensionList!.length > 0) { + this._extensionViewContainer!.hidden = false; + this._noExtensionViewContainer!.hidden = true; + this._extensionList!.setSelection([0]); + this._extensionList!.domFocus(); + this._addNewTabButton!.enabled = true; } else { - this._extensionViewContainer.hidden = true; - this._noExtensionViewContainer.hidden = false; - this._addNewTabButton.enabled = false; - this._cancelButton.focus(); + this._extensionViewContainer!.hidden = true; + this._noExtensionViewContainer!.hidden = false; + this._addNewTabButton!.enabled = false; + this._cancelButton!.focus(); } } diff --git a/src/sql/workbench/services/dashboard/browser/newDashboardTabDialogService.ts b/src/sql/workbench/services/dashboard/browser/newDashboardTabDialogService.ts index 64c261b38a..4eb0d2a3e3 100644 --- a/src/sql/workbench/services/dashboard/browser/newDashboardTabDialogService.ts +++ b/src/sql/workbench/services/dashboard/browser/newDashboardTabDialogService.ts @@ -15,8 +15,8 @@ export class NewDashboardTabDialogService implements INewDashboardTabDialogServi _serviceBrand: undefined; // MEMBER VARIABLES //////////////////////////////////////////////////// - private _addNewTabDialog: NewDashboardTabDialog; - private _uri: string; + private _addNewTabDialog?: NewDashboardTabDialog; + private _uri?: string; constructor( @IAngularEventingService private _angularEventService: IAngularEventingService, @@ -45,8 +45,8 @@ export class NewDashboardTabDialogService implements INewDashboardTabDialogServi // PRIVATE HELPERS ///////////////////////////////////////////////////// private handleOnAddTabs(selectedUiTabs: Array): void { let selectedTabs = selectedUiTabs.map(tab => tab.tabConfig); - this._angularEventService.sendAngularEvent(this._uri, AngularEventType.NEW_TABS, { dashboardTabs: selectedTabs }); - this._addNewTabDialog.close(); + this._angularEventService.sendAngularEvent(this._uri!, AngularEventType.NEW_TABS, { dashboardTabs: selectedTabs }); + this._addNewTabDialog!.close(); } private handleOnCancel(): void { } diff --git a/src/sql/workbench/services/errorMessage/browser/errorMessageDialog.ts b/src/sql/workbench/services/errorMessage/browser/errorMessageDialog.ts index 4d404b9d1e..a18571cc66 100644 --- a/src/sql/workbench/services/errorMessage/browser/errorMessageDialog.ts +++ b/src/sql/workbench/services/errorMessage/browser/errorMessageDialog.ts @@ -29,14 +29,14 @@ const maxActions = 1; export class ErrorMessageDialog extends Modal { - private _body: HTMLElement; - private _okButton: Button; - private _copyButton: Button; - private _actionButtons: Button[]; - private _actions: IAction[]; - private _severity: Severity; - private _message: string; - private _messageDetails: string; + private _body?: HTMLElement; + private _okButton?: Button; + private _copyButton?: Button; + private _actionButtons: Button[] = []; + private _actions: IAction[] = []; + private _severity?: Severity; + private _message?: string; + private _messageDetails?: string; private _okLabel: string; private _closeLabel: string; @@ -75,10 +75,12 @@ export class ErrorMessageDialog extends Modal { private createCopyButton() { let copyButtonLabel = localize('copyDetails', "Copy details"); - this._copyButton = this.addFooterButton(copyButtonLabel, () => this._clipboardService.writeText(this._messageDetails).catch(err => onUnexpectedError(err)), 'left'); - this._copyButton.icon = 'codicon scriptToClipboard'; - this._copyButton.element.title = copyButtonLabel; - this._register(attachButtonStyler(this._copyButton, this._themeService, { buttonBackground: SIDE_BAR_BACKGROUND, buttonHoverBackground: SIDE_BAR_BACKGROUND, buttonForeground: SIDE_BAR_FOREGROUND })); + if (this._messageDetails) { + this._copyButton = this.addFooterButton(copyButtonLabel, () => this._clipboardService.writeText(this._messageDetails!).catch(err => onUnexpectedError(err)), 'left'); + } + this._copyButton!.icon = 'codicon scriptToClipboard'; + this._copyButton!.element.title = copyButtonLabel; + this._register(attachButtonStyler(this._copyButton!, this._themeService, { buttonBackground: SIDE_BAR_BACKGROUND, buttonHoverBackground: SIDE_BAR_BACKGROUND, buttonForeground: SIDE_BAR_FOREGROUND })); } private createStandardButton(label: string, onSelect: () => void): Button { @@ -101,8 +103,8 @@ export class ErrorMessageDialog extends Modal { } private updateDialogBody(): void { - DOM.clearNode(this._body); - DOM.append(this._body, DOM.$('div.error-message')).innerText = this._message; + DOM.clearNode(this._body!); + DOM.append(this._body!, DOM.$('div.error-message')).innerText = this._message!; } private updateIconTitle(): void { @@ -138,15 +140,15 @@ export class ErrorMessageDialog extends Modal { this.hide(); } - public open(severity: Severity, headerTitle: string, message: string, messageDetails: string, actions: IAction[]) { + public open(severity: Severity, headerTitle: string, message: string, messageDetails?: string, actions?: IAction[]) { this._severity = severity; this._message = message; this.title = headerTitle; this._messageDetails = messageDetails; if (this._messageDetails) { - this._copyButton.element.style.visibility = 'visible'; + this._copyButton!.element.style.visibility = 'visible'; } else { - this._copyButton.element.style.visibility = 'hidden'; + this._copyButton!.element.style.visibility = 'hidden'; } this.resetActions(); if (actions && actions.length > 0) { @@ -156,14 +158,14 @@ export class ErrorMessageDialog extends Modal { button.label = actions[i].label; button.element.style.visibility = 'visible'; } - this._okButton.label = this._closeLabel; + this._okButton!.label = this._closeLabel; } else { - this._okButton.label = this._okLabel; + this._okButton!.label = this._okLabel; } this.updateIconTitle(); this.updateDialogBody(); this.show(); - this._okButton.focus(); + this._okButton!.focus(); } private resetActions(): void { diff --git a/src/sql/workbench/services/errorMessage/browser/errorMessageService.ts b/src/sql/workbench/services/errorMessage/browser/errorMessageService.ts index a2cb47841e..25af7b4103 100644 --- a/src/sql/workbench/services/errorMessage/browser/errorMessageService.ts +++ b/src/sql/workbench/services/errorMessage/browser/errorMessageService.ts @@ -15,7 +15,7 @@ export class ErrorMessageService implements IErrorMessageService { _serviceBrand: undefined; - private _errorDialog: ErrorMessageDialog; + private _errorDialog?: ErrorMessageDialog; private handleOnOk(): void { } @@ -28,7 +28,7 @@ export class ErrorMessageService implements IErrorMessageService { this.doShowDialog(severity, headerTitle, message, messageDetails, actions); } - private doShowDialog(severity: Severity, headerTitle: string, message: string, messageDetails: string, actions?: IAction[]): void { + private doShowDialog(severity: Severity, headerTitle: string, message: string, messageDetails?: string, actions?: IAction[]): void { if (!this._errorDialog) { this._errorDialog = this._instantiationService.createInstance(ErrorMessageDialog); this._errorDialog.onOk(() => this.handleOnOk()); @@ -40,17 +40,15 @@ export class ErrorMessageService implements IErrorMessageService { } private getDefaultTitle(severity: Severity) { - let defaultTitle: string; switch (severity) { case Severity.Error: - defaultTitle = localize('error', "Error"); - break; + return localize('error', "Error"); case Severity.Warning: - defaultTitle = localize('warning', "Warning"); - break; + return localize('warning', "Warning"); case Severity.Info: - defaultTitle = localize('info', "Info"); + return localize('info', "Info"); + case Severity.Ignore: + return localize('ignore', "Ignore"); } - return defaultTitle; } } diff --git a/src/sql/workbench/services/jobManagement/common/interfaces.ts b/src/sql/workbench/services/jobManagement/common/interfaces.ts index 91eab6863d..304158e172 100644 --- a/src/sql/workbench/services/jobManagement/common/interfaces.ts +++ b/src/sql/workbench/services/jobManagement/common/interfaces.ts @@ -41,8 +41,8 @@ export interface IJobManagementService { getTemplateNotebook(connectionUri: string, targetDatabase: string, jobId: string): Thenable; deleteNotebook(connectionUri: string, notebook: azdata.AgentNotebookInfo): Thenable; deleteMaterializedNotebook(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string): Thenable; - updateNotebookMaterializedName(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string, name: string); - updateNotebookMaterializedPin(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string, pin: boolean); + updateNotebookMaterializedName(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string, name: string): Promise; + updateNotebookMaterializedPin(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string, pin: boolean): Promise; getAlerts(connectionUri: string): Thenable; deleteAlert(connectionUri: string, alert: azdata.AgentAlertInfo): Thenable; @@ -56,11 +56,11 @@ export interface IJobManagementService { getCredentials(connectionUri: string): Thenable; jobAction(connectionUri: string, jobName: string, action: string): Thenable; - addToCache(server: string, cache: JobCacheObject | OperatorsCacheObject | NotebookCacheObject); + addToCache(server: string, cache: JobCacheObject | OperatorsCacheObject | NotebookCacheObject): void; jobCacheObjectMap: { [server: string]: JobCacheObject; }; notebookCacheObjectMap: { [server: string]: NotebookCacheObject; }; operatorsCacheObjectMap: { [server: string]: OperatorsCacheObject; }; alertsCacheObjectMap: { [server: string]: AlertsCacheObject; }; proxiesCacheObjectMap: { [server: string]: ProxiesCacheObject }; - addToCache(server: string, cache: JobCacheObject | ProxiesCacheObject | AlertsCacheObject | OperatorsCacheObject | NotebookCacheObject); + addToCache(server: string, cache: JobCacheObject | ProxiesCacheObject | AlertsCacheObject | OperatorsCacheObject | NotebookCacheObject): void; } diff --git a/src/sql/workbench/services/jobManagement/common/jobManagementService.ts b/src/sql/workbench/services/jobManagement/common/jobManagementService.ts index f8b2cc51bb..b7b6f166c6 100644 --- a/src/sql/workbench/services/jobManagement/common/jobManagementService.ts +++ b/src/sql/workbench/services/jobManagement/common/jobManagementService.ts @@ -34,32 +34,32 @@ export class JobManagementService implements IJobManagementService { } // Jobs - public getJobs(connectionUri: string): Thenable { + public getJobs(connectionUri: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getJobs(connectionUri); }); } - public deleteJob(connectionUri: string, job: azdata.AgentJobInfo): Thenable { + public deleteJob(connectionUri: string, job: azdata.AgentJobInfo): Promise { return this._runAction(connectionUri, (runner) => { return runner.deleteJob(connectionUri, job); }); } - public getJobHistory(connectionUri: string, jobID: string, jobName: string): Thenable { + public getJobHistory(connectionUri: string, jobID: string, jobName: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getJobHistory(connectionUri, jobID, jobName); }); } - public jobAction(connectionUri: string, jobName: string, action: string): Thenable { + public jobAction(connectionUri: string, jobName: string, action: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.jobAction(connectionUri, jobName, action); }); } // Steps - public deleteJobStep(connectionUri: string, stepInfo: azdata.AgentJobStepInfo): Thenable { + public deleteJobStep(connectionUri: string, stepInfo: azdata.AgentJobStepInfo): Promise { return this._runAction(connectionUri, (runner) => { return runner.deleteJobStep(connectionUri, stepInfo); }); @@ -71,100 +71,100 @@ export class JobManagementService implements IJobManagementService { } // Notebooks - public getNotebooks(connectionUri: string): Thenable { + public getNotebooks(connectionUri: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getNotebooks(connectionUri); }); } - public getNotebookHistory(connectionUri: string, jobID: string, jobName: string, targetDatabase: string): Thenable { + public getNotebookHistory(connectionUri: string, jobID: string, jobName: string, targetDatabase: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getNotebookHistory(connectionUri, jobID, jobName, targetDatabase); }); } - public getMaterialziedNotebook(connectionUri: string, targetDatabase: string, notebookMaterializedId: number): Thenable { + public getMaterialziedNotebook(connectionUri: string, targetDatabase: string, notebookMaterializedId: number): Promise { return this._runAction(connectionUri, (runner) => { return runner.getMaterializedNotebook(connectionUri, targetDatabase, notebookMaterializedId); }); } - public getTemplateNotebook(connectionUri: string, targetDatabase: string, jobId: string): Thenable { + public getTemplateNotebook(connectionUri: string, targetDatabase: string, jobId: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getTemplateNotebook(connectionUri, targetDatabase, jobId); }); } - public deleteNotebook(connectionUri: string, notebook: azdata.AgentNotebookInfo): Thenable { + public deleteNotebook(connectionUri: string, notebook: azdata.AgentNotebookInfo): Promise { return this._runAction(connectionUri, (runner) => { return runner.deleteNotebook(connectionUri, notebook); }); } - public deleteMaterializedNotebook(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string): Thenable { + public deleteMaterializedNotebook(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.deleteMaterializedNotebook(connectionUri, agentNotebookHistory, targetDatabase); }); } - public updateNotebookMaterializedName(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string, name: string): Thenable { + public updateNotebookMaterializedName(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string, name: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.updateNotebookMaterializedName(connectionUri, agentNotebookHistory, targetDatabase, name); }); } - public updateNotebookMaterializedPin(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string, pin: boolean): Thenable { + public updateNotebookMaterializedPin(connectionUri: string, agentNotebookHistory: azdata.AgentNotebookHistoryInfo, targetDatabase: string, pin: boolean): Promise { return this._runAction(connectionUri, (runner) => { return runner.updateNotebookMaterializedPin(connectionUri, agentNotebookHistory, targetDatabase, pin); }); } // Alerts - public getAlerts(connectionUri: string): Thenable { + public getAlerts(connectionUri: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getAlerts(connectionUri); }); } - public deleteAlert(connectionUri: string, alert: azdata.AgentAlertInfo): Thenable { + public deleteAlert(connectionUri: string, alert: azdata.AgentAlertInfo): Promise { return this._runAction(connectionUri, (runner) => { return runner.deleteAlert(connectionUri, alert); }); } // Operators - public getOperators(connectionUri: string): Thenable { + public getOperators(connectionUri: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getOperators(connectionUri); }); } - public deleteOperator(connectionUri: string, operator: azdata.AgentOperatorInfo): Thenable { + public deleteOperator(connectionUri: string, operator: azdata.AgentOperatorInfo): Promise { return this._runAction(connectionUri, (runner) => { return runner.deleteOperator(connectionUri, operator); }); } // Proxies - public getProxies(connectionUri: string): Thenable { + public getProxies(connectionUri: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getProxies(connectionUri); }); } - public deleteProxy(connectionUri: string, proxy: azdata.AgentProxyInfo): Thenable { + public deleteProxy(connectionUri: string, proxy: azdata.AgentProxyInfo): Promise { return this._runAction(connectionUri, (runner) => { return runner.deleteProxy(connectionUri, proxy); }); } - public getCredentials(connectionUri: string): Thenable { + public getCredentials(connectionUri: string): Promise { return this._runAction(connectionUri, (runner) => { return runner.getCredentials(connectionUri); }); } - private _runAction(uri: string, action: (handler: azdata.AgentServicesProvider) => Thenable): Thenable { + private _runAction(uri: string, action: (handler: azdata.AgentServicesProvider) => Thenable): Promise { let providerId: string = this._connectionService.getProviderIdFromUri(uri); if (!providerId) { @@ -172,7 +172,7 @@ export class JobManagementService implements IJobManagementService { } let handler = this._providers[providerId]; if (handler) { - return action(handler); + return Promise.resolve(action(handler)); } else { return Promise.reject(new Error(localize('noHandlerRegistered', "No Handler Registered"))); } @@ -228,9 +228,9 @@ export class JobCacheObject { private _jobAlerts: { [jobID: string]: azdata.AgentAlertInfo[]; } = {}; private _jobSchedules: { [jobID: string]: azdata.AgentJobScheduleInfo[]; } = {}; private _runCharts: { [jobID: string]: string[]; } = {}; - private _prevJobID: string; - private _serverName: string; - private _dataView: Slick.Data.DataView; + private _prevJobID?: string; + private _serverName?: string; + private _dataView?: Slick.Data.DataView; /* Getters */ public get jobs(): azdata.AgentJobInfo[] { @@ -241,7 +241,7 @@ export class JobCacheObject { return this._jobHistories; } - public get prevJobID(): string { + public get prevJobID(): string | undefined { return this._prevJobID; } @@ -249,11 +249,11 @@ export class JobCacheObject { return this._jobHistories[jobID]; } - public get serverName(): string { + public get serverName(): string | undefined { return this._serverName; } - public get dataView(): Slick.Data.DataView { + public get dataView(): Slick.Data.DataView | undefined { return this._dataView; } @@ -282,7 +282,7 @@ export class JobCacheObject { this._jobHistories = value; } - public set prevJobID(value: string) { + public set prevJobID(value: string | undefined) { this._prevJobID = value; } @@ -294,11 +294,11 @@ export class JobCacheObject { this._runCharts[jobID] = value; } - public set serverName(value: string) { + public set serverName(value: string | undefined) { this._serverName = value; } - public set dataView(value: Slick.Data.DataView) { + public set dataView(value: Slick.Data.DataView | undefined) { this._dataView = value; } @@ -324,9 +324,9 @@ export class NotebookCacheObject { private _jobSteps: { [jobID: string]: azdata.AgentJobStepInfo[]; } = {}; private _jobSchedules: { [jobID: string]: azdata.AgentJobScheduleInfo[]; } = {}; private _runCharts: { [jobID: string]: string[]; } = {}; - private _prevJobID: string; - private _serverName: string; - private _dataView: Slick.Data.DataView; + private _prevJobID?: string; + private _serverName?: string; + private _dataView?: Slick.Data.DataView; /* Getters */ public get notebooks(): azdata.AgentNotebookInfo[] { @@ -337,7 +337,7 @@ export class NotebookCacheObject { return this._notebookHistories; } - public get prevJobID(): string { + public get prevJobID(): string | undefined { return this._prevJobID; } @@ -345,11 +345,11 @@ export class NotebookCacheObject { return this._notebookHistories[jobID]; } - public get serverName(): string { + public get serverName(): string | undefined { return this._serverName; } - public get dataView(): Slick.Data.DataView { + public get dataView(): Slick.Data.DataView | undefined { return this._dataView; } @@ -374,7 +374,7 @@ export class NotebookCacheObject { this._notebookHistories = value; } - public set prevJobID(value: string) { + public set prevJobID(value: string | undefined) { this._prevJobID = value; } @@ -386,11 +386,11 @@ export class NotebookCacheObject { this._runCharts[jobID] = value; } - public set serverName(value: string) { + public set serverName(value: string | undefined) { this._serverName = value; } - public set dataView(value: Slick.Data.DataView) { + public set dataView(value: Slick.Data.DataView | undefined) { this._dataView = value; } @@ -408,33 +408,33 @@ export class NotebookCacheObject { */ export class OperatorsCacheObject { _serviceBrand: undefined; - private _operators: azdata.AgentOperatorInfo[]; - private _dataView: Slick.Data.DataView; - private _serverName: string; + private _operators?: azdata.AgentOperatorInfo[]; + private _dataView?: Slick.Data.DataView; + private _serverName?: string; /** Getters */ - public get operators(): azdata.AgentOperatorInfo[] { + public get operators(): azdata.AgentOperatorInfo[] | undefined { return this._operators; } - public get dataview(): Slick.Data.DataView { + public get dataview(): Slick.Data.DataView | undefined { return this._dataView; } - public get serverName(): string { + public get serverName(): string | undefined { return this._serverName; } /** Setters */ - public set operators(value: azdata.AgentOperatorInfo[]) { + public set operators(value: azdata.AgentOperatorInfo[] | undefined) { this._operators = value; } - public set dataview(value: Slick.Data.DataView) { + public set dataview(value: Slick.Data.DataView | undefined) { this._dataView = value; } - public set serverName(value: string) { + public set serverName(value: string | undefined) { this._serverName = value; } @@ -445,33 +445,33 @@ export class OperatorsCacheObject { */ export class AlertsCacheObject { _serviceBrand: undefined; - private _alerts: azdata.AgentAlertInfo[]; - private _dataView: Slick.Data.DataView; - private _serverName: string; + private _alerts?: azdata.AgentAlertInfo[]; + private _dataView?: Slick.Data.DataView; + private _serverName?: string; /** Getters */ - public get alerts(): azdata.AgentAlertInfo[] { + public get alerts(): azdata.AgentAlertInfo[] | undefined { return this._alerts; } - public get dataview(): Slick.Data.DataView { + public get dataview(): Slick.Data.DataView | undefined { return this._dataView; } - public get serverName(): string { + public get serverName(): string | undefined { return this._serverName; } /** Setters */ - public set alerts(value: azdata.AgentAlertInfo[]) { + public set alerts(value: azdata.AgentAlertInfo[] | undefined) { this._alerts = value; } - public set dataview(value: Slick.Data.DataView) { + public set dataview(value: Slick.Data.DataView | undefined) { this._dataView = value; } - public set serverName(value: string) { + public set serverName(value: string | undefined) { this._serverName = value; } } @@ -482,36 +482,36 @@ export class AlertsCacheObject { */ export class ProxiesCacheObject { _serviceBrand: undefined; - private _proxies: azdata.AgentProxyInfo[]; - private _dataView: Slick.Data.DataView; - private _serverName: string; + private _proxies?: azdata.AgentProxyInfo[]; + private _dataView?: Slick.Data.DataView; + private _serverName?: string; /** * Getters */ - public get proxies(): azdata.AgentProxyInfo[] { + public get proxies(): azdata.AgentProxyInfo[] | undefined { return this._proxies; } - public get dataview(): Slick.Data.DataView { + public get dataview(): Slick.Data.DataView | undefined { return this._dataView; } - public get serverName(): string { + public get serverName(): string | undefined { return this._serverName; } /** Setters */ - public set proxies(value: azdata.AgentProxyInfo[]) { + public set proxies(value: azdata.AgentProxyInfo[] | undefined) { this._proxies = value; } - public set dataview(value: Slick.Data.DataView) { + public set dataview(value: Slick.Data.DataView | undefined) { this._dataView = value; } - public set serverName(value: string) { + public set serverName(value: string | undefined) { this._serverName = value; } } diff --git a/src/sql/workbench/services/jobManagement/test/common/jobManagementService.test.ts b/src/sql/workbench/services/jobManagement/test/common/jobManagementService.test.ts index 63536d1b3e..13bbc67406 100644 --- a/src/sql/workbench/services/jobManagement/test/common/jobManagementService.test.ts +++ b/src/sql/workbench/services/jobManagement/test/common/jobManagementService.test.ts @@ -13,7 +13,7 @@ suite('Job Management service tests', () => { test('Construction - Job Service Initialization', () => { // ... Create instance of the service and reder account picker - let service = new JobManagementService(undefined); + let service = new JobManagementService(undefined!); assert(service); }); }); diff --git a/src/sql/workbench/services/queryHistory/common/queryHistoryInfo.ts b/src/sql/workbench/services/queryHistory/common/queryHistoryInfo.ts index cb94f50cbf..f6f3d12ff2 100644 --- a/src/sql/workbench/services/queryHistory/common/queryHistoryInfo.ts +++ b/src/sql/workbench/services/queryHistory/common/queryHistoryInfo.ts @@ -19,7 +19,7 @@ export class QueryHistoryInfo { public database: string; - public status: QueryStatus; + public status?: QueryStatus; public readonly id = generateUuid(); diff --git a/src/sql/workbench/services/queryHistory/common/queryHistoryServiceImpl.ts b/src/sql/workbench/services/queryHistory/common/queryHistoryServiceImpl.ts index f4a13867ec..a077ca94bc 100644 --- a/src/sql/workbench/services/queryHistory/common/queryHistoryServiceImpl.ts +++ b/src/sql/workbench/services/queryHistory/common/queryHistoryServiceImpl.ts @@ -26,7 +26,7 @@ export class QueryHistoryService extends Disposable implements IQueryHistoryServ private _infos: QueryHistoryInfo[] = []; private _onInfosUpdated: Emitter = new Emitter(); private _onQueryHistoryCaptureChanged: Emitter = new Emitter(); - private _captureEnabled; + private _captureEnabled: boolean; // EVENTS ////////////////////////////////////////////////////////////// public get onInfosUpdated(): Event { return this._onInfosUpdated.event; } public get onQueryHistoryCaptureChanged(): Event { return this._onQueryHistoryCaptureChanged.event; } @@ -50,29 +50,32 @@ export class QueryHistoryService extends Disposable implements IQueryHistoryServ this._register(_queryModelService.onQueryEvent((e: IQueryEvent) => { if (this._captureEnabled && e.type === 'queryStop') { const uri: URI = URI.parse(e.uri); - // VS Range is 1 based so offset values by 1. The endLine we get back from SqlToolsService is incremented - // by 1 from the original input range sent in as well so take that into account and don't modify - const text: string = e.queryInfo.range && e.queryInfo.range.length > 0 ? - _modelService.getModel(uri).getValueInRange(new Range( - e.queryInfo.range[0].startLineNumber, - e.queryInfo.range[0].startColumn, - e.queryInfo.range[0].endLineNumber, - e.queryInfo.range[0].endColumn)) : - // If no specific selection get the entire text - _modelService.getModel(uri).getValue(); + const model = _modelService.getModel(uri); + if (model) { + // VS Range is 1 based so offset values by 1. The endLine we get back from SqlToolsService is incremented + // by 1 from the original input range sent in as well so take that into account and don't modify + const text: string = e.queryInfo.range && e.queryInfo.range.length > 0 ? + model.getValueInRange(new Range( + e.queryInfo.range[0].startLineNumber, + e.queryInfo.range[0].startColumn, + e.queryInfo.range[0].endLineNumber, + e.queryInfo.range[0].endColumn)) : + // If no specific selection get the entire text + model.getValue(); - const newInfo = new QueryHistoryInfo(text, _connectionManagementService.getConnectionProfile(e.uri), new Date(), QueryStatus.Succeeded); + const newInfo = new QueryHistoryInfo(text, _connectionManagementService.getConnectionProfile(e.uri), new Date(), QueryStatus.Succeeded); - // icon as required (for now logic is if any message has error query has error) - let error: boolean = false; - e.queryInfo.messages.forEach(x => error = error || x.isError); - if (error) { - newInfo.status = QueryStatus.Failed; + // icon as required (for now logic is if any message has error query has error) + let error: boolean = false; + e.queryInfo.messages.forEach(x => error = error || x.isError); + if (error) { + newInfo.status = QueryStatus.Failed; + } + + // Append new node to beginning of array so the newest ones are at the top + this._infos.unshift(newInfo); + this._onInfosUpdated.fire(this._infos); } - - // Append new node to beginning of array so the newest ones are at the top - this._infos.unshift(newInfo); - this._onInfosUpdated.fire(this._infos); } })); } diff --git a/src/sql/workbench/services/resourceProvider/browser/firewallRuleDialog.ts b/src/sql/workbench/services/resourceProvider/browser/firewallRuleDialog.ts index e2c27ed48c..cb8d6df468 100644 --- a/src/sql/workbench/services/resourceProvider/browser/firewallRuleDialog.ts +++ b/src/sql/workbench/services/resourceProvider/browser/firewallRuleDialog.ts @@ -44,15 +44,15 @@ const LocalizedStrings = { export class FirewallRuleDialog extends Modal { public viewModel: FirewallRuleViewModel; - private _createButton: Button; - private _closeButton: Button; - private _fromRangeinputBox: InputBox; - private _toRangeinputBox: InputBox; + private _createButton?: Button; + private _closeButton?: Button; + private _fromRangeinputBox?: InputBox; + private _toRangeinputBox?: InputBox; - private _helpLink: HTMLElement; - private _IPAddressInput: HTMLElement; - private _subnetIPRangeInput: HTMLElement; - private _IPAddressElement: HTMLElement; + private _helpLink?: HTMLElement; + private _IPAddressInput?: HTMLElement; + private _subnetIPRangeInput?: HTMLElement; + private _IPAddressElement?: HTMLElement; // EVENTING //////////////////////////////////////////////////////////// private _onAddAccountErrorEmitter: Emitter; @@ -105,8 +105,8 @@ export class FirewallRuleDialog extends Modal { public render() { super.render(); attachModalDialogStyler(this, this._themeService); - this.backButton.onDidClick(() => this.cancel()); - this._register(attachButtonStyler(this.backButton, this._themeService, { buttonBackground: SIDE_BAR_BACKGROUND, buttonHoverBackground: SIDE_BAR_BACKGROUND })); + this.backButton!.onDidClick(() => this.cancel()); + this._register(attachButtonStyler(this.backButton!, this._themeService, { buttonBackground: SIDE_BAR_BACKGROUND, buttonHoverBackground: SIDE_BAR_BACKGROUND })); this._createButton = this.addFooterButton(localize('firewall.ok', "OK"), () => this.createFirewallRule()); this._closeButton = this.addFooterButton(localize('firewall.cancel', "Cancel"), () => this.cancel()); this.registerListeners(); @@ -138,7 +138,7 @@ export class FirewallRuleDialog extends Modal { }); this._accountPickerService.addAccountStartEvent(() => this.spinner = true); this._accountPickerService.onAccountSelectionChangeEvent((account) => this.onAccountSelectionChange(account)); - this._accountPickerService.onTenantSelectionChangeEvent((tenantId) => this.onTenantSelectionChange(tenantId)); + this._accountPickerService.onTenantSelectionChangeEvent((tenantId) => !!tenantId && this.onTenantSelectionChange(tenantId)); const azureAccountSection = DOM.append(body, DOM.$('.azure-account-section.new-section')); this._accountPickerService.renderAccountPicker(azureAccountSection); @@ -222,7 +222,7 @@ export class FirewallRuleDialog extends Modal { // Update theming that is specific to firewall rule flyout body private updateTheme(theme: IColorTheme): void { const linkColor = theme.getColor(buttonBackground); - const link = linkColor ? linkColor.toString() : null; + const link = linkColor ? linkColor.toString() : ''; if (this._helpLink) { this._helpLink.style.color = link; } @@ -230,18 +230,18 @@ export class FirewallRuleDialog extends Modal { private registerListeners(): void { // Theme styler - this._register(attachButtonStyler(this._createButton, this._themeService)); - this._register(attachButtonStyler(this._closeButton, this._themeService)); - this._register(attachInputBoxStyler(this._fromRangeinputBox, this._themeService)); - this._register(attachInputBoxStyler(this._toRangeinputBox, this._themeService)); + this._register(attachButtonStyler(this._createButton!, this._themeService)); + this._register(attachButtonStyler(this._closeButton!, this._themeService)); + this._register(attachInputBoxStyler(this._fromRangeinputBox!, this._themeService)); + this._register(attachInputBoxStyler(this._toRangeinputBox!, this._themeService)); // handler for from subnet ip range change events - this._register(this._fromRangeinputBox.onDidChange(IPAddress => { + this._register(this._fromRangeinputBox!.onDidChange(IPAddress => { this.fromRangeInputChanged(IPAddress); })); // handler for to subnet ip range change events - this._register(this._toRangeinputBox.onDidChange(IPAddress => { + this._register(this._toRangeinputBox!.onDidChange(IPAddress => { this.toRangeInputChanged(IPAddress); })); } @@ -274,8 +274,8 @@ export class FirewallRuleDialog extends Modal { } public createFirewallRule() { - if (this._createButton.enabled) { - this._createButton.enabled = false; + if (this._createButton!.enabled) { + this._createButton!.enabled = false; this.spinner = true; this._onCreateFirewallRule.fire(); } @@ -284,9 +284,9 @@ export class FirewallRuleDialog extends Modal { public onAccountSelectionChange(account: azdata.Account | undefined): void { this.viewModel.selectedAccount = account; if (account && !account.isStale) { - this._createButton.enabled = true; + this._createButton!.enabled = true; } else { - this._createButton.enabled = false; + this._createButton!.enabled = false; } } @@ -295,16 +295,16 @@ export class FirewallRuleDialog extends Modal { } public onServiceComplete() { - this._createButton.enabled = true; + this._createButton!.enabled = true; this.spinner = false; } public open() { - this._IPAddressInput.click(); + this._IPAddressInput!.click(); this.onAccountSelectionChange(this._accountPickerService.selectedAccount); - this._fromRangeinputBox.setPlaceHolder(this.viewModel.defaultFromSubnetIPRange); - this._toRangeinputBox.setPlaceHolder(this.viewModel.defaultToSubnetIPRange); - this._IPAddressElement.innerText = '(' + this.viewModel.defaultIPAddress + ')'; + this._fromRangeinputBox!.setPlaceHolder(this.viewModel!.defaultFromSubnetIPRange ?? ''); + this._toRangeinputBox!.setPlaceHolder(this.viewModel!.defaultToSubnetIPRange ?? ''); + this._IPAddressElement!.innerText = '(' + this.viewModel.defaultIPAddress ?? '' + ')'; this.show(); } diff --git a/src/sql/workbench/services/resourceProvider/browser/firewallRuleDialogController.ts b/src/sql/workbench/services/resourceProvider/browser/firewallRuleDialogController.ts index f7db8bd51b..fe2caa896e 100644 --- a/src/sql/workbench/services/resourceProvider/browser/firewallRuleDialogController.ts +++ b/src/sql/workbench/services/resourceProvider/browser/firewallRuleDialogController.ts @@ -17,13 +17,13 @@ import { IErrorMessageService } from 'sql/platform/errorMessage/common/errorMess export class FirewallRuleDialogController { - private _firewallRuleDialog: FirewallRuleDialog; - private _connection: IConnectionProfile; - private _resourceProviderId: string; + private _firewallRuleDialog?: FirewallRuleDialog; + private _connection?: IConnectionProfile; + private _resourceProviderId?: string; private _addAccountErrorTitle = localize('firewallDialog.addAccountErrorTitle', "Error adding account"); private _firewallRuleErrorTitle = localize('firewallRuleError', "Firewall rule error"); - private _deferredPromise: Deferred; + private _deferredPromise?: Deferred; constructor( @IInstantiationService private _instantiationService: IInstantiationService, @@ -58,29 +58,29 @@ export class FirewallRuleDialogController { } private async handleOnCreateFirewallRule(): Promise { - const resourceProviderId = this._resourceProviderId; + const resourceProviderId = this._resourceProviderId!; try { - const tenantId = this._firewallRuleDialog.viewModel.selectedTenantId; - const token = await this._accountManagementService.getAccountSecurityToken(this._firewallRuleDialog.viewModel.selectedAccount!, tenantId, AzureResource.ResourceManagement); + const tenantId = this._firewallRuleDialog!.viewModel.selectedTenantId!; + const token = await this._accountManagementService.getAccountSecurityToken(this._firewallRuleDialog!.viewModel.selectedAccount!, tenantId, AzureResource.ResourceManagement); const securityTokenMappings = { [tenantId]: token }; const firewallRuleInfo: azdata.FirewallRuleInfo = { - startIpAddress: this._firewallRuleDialog.viewModel.isIPAddressSelected ? this._firewallRuleDialog.viewModel.defaultIPAddress : this._firewallRuleDialog.viewModel.fromSubnetIPRange, - endIpAddress: this._firewallRuleDialog.viewModel.isIPAddressSelected ? this._firewallRuleDialog.viewModel.defaultIPAddress : this._firewallRuleDialog.viewModel.toSubnetIPRange, - serverName: this._connection.serverName, + startIpAddress: this._firewallRuleDialog!.viewModel.isIPAddressSelected ? this._firewallRuleDialog!.viewModel.defaultIPAddress : this._firewallRuleDialog!.viewModel.fromSubnetIPRange, + endIpAddress: this._firewallRuleDialog!.viewModel.isIPAddressSelected ? this._firewallRuleDialog!.viewModel.defaultIPAddress : this._firewallRuleDialog!.viewModel.toSubnetIPRange, + serverName: this._connection!.serverName, securityTokenMappings }; - const response = await this._resourceProviderService.createFirewallRule(this._firewallRuleDialog.viewModel.selectedAccount!, firewallRuleInfo, resourceProviderId); + const response = await this._resourceProviderService.createFirewallRule(this._firewallRuleDialog!.viewModel.selectedAccount!, firewallRuleInfo, resourceProviderId); if (response.result) { - this._firewallRuleDialog.close(); - this._deferredPromise.resolve(true); + this._firewallRuleDialog!.close(); + this._deferredPromise!.resolve(true); } else { this._errorMessageService.showDialog(Severity.Error, this._firewallRuleErrorTitle, response.errorMessage); } - this._firewallRuleDialog.onServiceComplete(); + this._firewallRuleDialog!.onServiceComplete(); } catch (e) { this.showError(e); } @@ -88,12 +88,12 @@ export class FirewallRuleDialogController { private showError(error: any): void { this._errorMessageService.showDialog(Severity.Error, this._firewallRuleErrorTitle, error); - this._firewallRuleDialog.onServiceComplete(); + this._firewallRuleDialog!.onServiceComplete(); // Note: intentionally not rejecting the promise as we want users to be able to choose a different account } private handleOnCancel(): void { - this._deferredPromise.resolve(false); + this._deferredPromise!.resolve(false); } } diff --git a/src/sql/workbench/services/resourceProvider/browser/resourceProviderService.ts b/src/sql/workbench/services/resourceProvider/browser/resourceProviderService.ts index ec6cf8ff16..5289b4074f 100644 --- a/src/sql/workbench/services/resourceProvider/browser/resourceProviderService.ts +++ b/src/sql/workbench/services/resourceProvider/browser/resourceProviderService.ts @@ -18,7 +18,7 @@ export class ResourceProviderService implements IResourceProviderService { public _serviceBrand: undefined; private _providers: { [handle: string]: azdata.ResourceProvider; } = Object.create(null); - private _firewallRuleDialogController: FirewallRuleDialogController; + private _firewallRuleDialogController?: FirewallRuleDialogController; constructor( @IAdsTelemetryService private _telemetryService: IAdsTelemetryService, diff --git a/src/sql/workbench/services/resourceProvider/common/resourceProviderService.ts b/src/sql/workbench/services/resourceProvider/common/resourceProviderService.ts index 40b9445913..2f5cc56561 100644 --- a/src/sql/workbench/services/resourceProvider/common/resourceProviderService.ts +++ b/src/sql/workbench/services/resourceProvider/common/resourceProviderService.ts @@ -14,8 +14,8 @@ export const IResourceProviderService = createDecorator x.createFirewallRule(TypeMoq.It.isAny(), TypeMoq.It.isAny(), TypeMoq.It.isAny())) - .returns(() => resolveCreateFirewallRule ? Promise.resolve(response) : Promise.reject(null)); + .returns(() => resolveCreateFirewallRule ? Promise.resolve(response!) : Promise.reject(null)); return mockResourceProvider; } diff --git a/src/sql/workbench/services/serverGroup/browser/serverGroupController.ts b/src/sql/workbench/services/serverGroup/browser/serverGroupController.ts index be27a1806d..1a38d554b3 100644 --- a/src/sql/workbench/services/serverGroup/browser/serverGroupController.ts +++ b/src/sql/workbench/services/serverGroup/browser/serverGroupController.ts @@ -12,7 +12,7 @@ import { IServerGroupController, IServerGroupDialogCallbacks } from 'sql/platfor import { IConnectionManagementService } from 'sql/platform/connection/common/connectionManagement'; import { ServerGroupDialog } from 'sql/workbench/services/serverGroup/browser/serverGroupDialog'; import { ServerGroupViewModel } from 'sql/workbench/services/serverGroup/common/serverGroupViewModel'; -import { ConnectionProfileGroup, IConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup'; +import { ConnectionProfileGroup, INewConnectionProfileGroup } from 'sql/platform/connection/common/connectionProfileGroup'; import { SERVER_GROUP_CONFIG, SERVER_GROUP_COLORS_CONFIG } from 'sql/workbench/services/serverGroup/common/interfaces'; export class ServerGroupController implements IServerGroupController { @@ -47,12 +47,11 @@ export class ServerGroupController implements IServerGroupController { }); } else { - let newGroup: IConnectionProfileGroup = { - name: this._viewModel.groupName, - id: undefined, + let newGroup: INewConnectionProfileGroup = { + name: viewModel.groupName, parentId: undefined, - color: this._viewModel.groupColor, - description: this._viewModel.groupDescription + color: viewModel.groupColor, + description: viewModel.groupDescription }; this.connectionManagementService.saveProfileGroup(newGroup).then(groupId => { if (this._callbacks) { diff --git a/src/tsconfig.vscode.json b/src/tsconfig.vscode.json index c801fd8f9a..ea79413397 100644 --- a/src/tsconfig.vscode.json +++ b/src/tsconfig.vscode.json @@ -30,69 +30,28 @@ "./sql/platform/**/*.ts", "./sql/workbench/common/**/*.ts", "./sql/workbench/services/accountManagement/**/*.ts", - ], - "exclude": [ - // "./vs/platform/workspaces/test/electron-main/workspacesMainService.test.ts", - // // sql services - // "./sql/workbench/services/accountManagement/**/*.ts", // 3101 errors - // "./sql/workbench/services/bootstrap/**/*.ts", // 3087 errors - // "./sql/workbench/services/connection/**/*.ts", // 3192 errors - // "./sql/workbench/services/dashboard/**/*.ts", // 57 errors - // "./sql/workbench/services/dialog/**/*.ts", // 3094 errors - // "./sql/workbench/services/errorMessage/**/*.ts", // 61 errors - // "./sql/workbench/services/fileBrowser/**/*.ts", // 3087 - // "./sql/workbench/services/insights/**/*.ts", // 3151 - // "./sql/workbench/services/jobManagement/**/*.ts", // 3132 - // "./sql/workbench/services/languageAssociation/**/*.ts", // 3087 - // "./sql/workbench/services/notebook/**/*.ts", // 3087 - // "./sql/workbench/services/objectExplorer/**/*.ts", // 3143 - // "./sql/workbench/services/profiler/**/*.ts", // 3087 - // "./sql/workbench/services/query/**/*.ts", // 3089 - // "./sql/workbench/services/queryEditor/**/*.ts", // 3087 - // "./sql/workbench/services/queryHistory/**/*.ts", // 3091 - // "./sql/workbench/services/resourceProvider/**/*.ts", // 70 - // "./sql/workbench/services/restore/**/*.ts", // 3100 - // "./sql/workbench/services/serverGroup/**/*.ts", // 49 - // // vs services - // "./vs/workbench/services/accessibility/**/*.ts", // 3087 - // "./vs/workbench/services/authentication/**/*.ts", // 3087 - // "./vs/workbench/services/backup/**/*.ts", // 3087 - // "./vs/workbench/services/bulkEdit/**/*.ts", // 3087 - // "./vs/workbench/services/configuration/**/*.ts", // 3087 - // "./vs/workbench/services/configurationResolver/**/*.ts", // 3087 - // "./vs/workbench/services/credentials/**/*.ts", // 3087 - // "./vs/workbench/services/dialogs/**/*.ts", // 3087 - // "./vs/workbench/services/editor/**/*.ts", // 3087 - // "./vs/workbench/services/electron/**/*.ts", // 3087 - // "./vs/workbench/services/environment/**/*.ts", // 3087 - // "./vs/workbench/services/extensionManagement/**/*.ts", // 3087 - // "./vs/workbench/services/extensions/**/*.ts", // 3287 - // "./vs/workbench/services/filesConfiguration/**/*.ts", // 3087 - // "./vs/workbench/services/history/**/*.ts", // 3087 - // "./vs/workbench/services/host/**/*.ts", // 3087 - // "./vs/workbench/services/keybinding/**/*.ts", // 3087 - // "./vs/workbench/services/label/**/*.ts", // 3087 - // "./vs/workbench/services/lifecycle/**/*.ts", // 3087 - // "./vs/workbench/services/output/**/*.ts", // 3087 - // "./vs/workbench/services/path/**/*.ts", // 3087 - // "./vs/workbench/services/preferences/**/*.ts", // 3087 - // "./vs/workbench/services/progress/**/*.ts", // 3087 - // "./vs/workbench/services/remote/**/*.ts", // 3087 - // "./vs/workbench/services/search/**/*.ts", // 3087 - // "./vs/workbench/services/sharedProcess/**/*.ts", // 3087 - // "./vs/workbench/services/telemetry/**/*.ts", // 3087 - // "./vs/workbench/services/textfile/**/*.ts", // 3087 - // "./vs/workbench/services/textmodelResolver/**/*.ts", // 3087 - // "./vs/workbench/services/textresourceProperties/**/*.ts", // 3087 - // "./vs/workbench/services/themes/**/*.ts", // 3087 - // "./vs/workbench/services/timer/**/*.ts", // 3087 - // "./vs/workbench/services/untitled/**/*.ts", // 3087 - // "./vs/workbench/services/update/**/*.ts", // 3087 - // "./vs/workbench/services/url/**/*.ts", // 3087 - // "./vs/workbench/services/userData/**/*.ts", // 3087 - // "./vs/workbench/services/viewlet/**/*.ts", // 3087 - // "./vs/workbench/services/views/**/*.ts", // 3087 - // "./vs/workbench/services/workingCopy/**/*.ts", // 3087 - // "./vs/workbench/services/workspaces/**/*.ts", // 3087 + "./sql/workbench/services/admin/**/*.ts", + "./sql/workbench/services/assessment/**/*.ts", + "./sql/workbench/services/bootstrap/**/*.ts", + // "./sql/workbench/services/connection/**/*.ts", + "./sql/workbench/services/dashboard/**/*.ts", + // "./sql/workbench/services/dialog/**/*.ts", + "./sql/workbench/services/editData/**/*.ts", + "./sql/workbench/services/errorMessage/**/*.ts", + // "./sql/workbench/services/fileBrowser/**/*.ts", + // "./sql/workbench/services/insights/**/*.ts", + "./sql/workbench/services/jobManagement/**/*.ts", + "./sql/workbench/services/languageAssociation/**/*.ts", + // "./sql/workbench/services/notebook/**/*.ts", 201 errors + // "./sql/workbench/services/objectExplorer/**/*.ts", 326 errors + // "./sql/workbench/services/profiler/**/*.ts", 66 errors + "./sql/workbench/services/progress/**/*.ts", + // "./sql/workbench/services/query/**/*.ts", + // "./sql/workbench/services/queryEditor/**/*.ts", + "./sql/workbench/services/queryHistory/**/*.ts", + "./sql/workbench/services/resourceProvider/**/*.ts", + // "./sql/workbench/services/restore/**/*.ts", 125 errors + "./sql/workbench/services/serverGroup/**/*.ts", + "./sql/workbench/services/tasks/**/*.ts", ] }