diff --git a/extensions/admin-tool-ext-win/src/test/stubs.ts b/extensions/admin-tool-ext-win/src/test/stubs.ts index b0aeecc0ae..61f5ce3a9e 100644 --- a/extensions/admin-tool-ext-win/src/test/stubs.ts +++ b/extensions/admin-tool-ext-win/src/test/stubs.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as azdata from 'azdata'; import * as vscode from 'vscode'; @@ -26,7 +24,7 @@ export class ExtHostObjectExplorerNodeStub implements azdata.objectexplorer.Obje public metadata: azdata.ObjectMetadata; public errorMessage: string; - constructor(nodeName: string, nodeSchema: string, nodeType, parent: azdata.objectexplorer.ObjectExplorerNode) { + constructor(nodeName: string, nodeSchema: string, nodeType: string, parent: azdata.objectexplorer.ObjectExplorerNode) { this.parent = parent; this.nodeType = nodeType; this.metadata = { metadataType: undefined, metadataTypeName: undefined, name: nodeName, schema: nodeSchema, urn: undefined }; @@ -65,4 +63,4 @@ export class ExtHostObjectExplorerNodeStub implements azdata.objectexplorer.Obje createChild(nodeName: string, nodeSchema: string, nodeType: string): ExtHostObjectExplorerNodeStub { return new ExtHostObjectExplorerNodeStub(nodeName, nodeSchema, nodeType, this); } -} \ No newline at end of file +} diff --git a/extensions/admin-tool-ext-win/src/test/utils.test.ts b/extensions/admin-tool-ext-win/src/test/utils.test.ts index edd54a1403..f534f4e93d 100644 --- a/extensions/admin-tool-ext-win/src/test/utils.test.ts +++ b/extensions/admin-tool-ext-win/src/test/utils.test.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as should from 'should'; import 'mocha'; diff --git a/extensions/admin-tool-ext-win/src/utils.ts b/extensions/admin-tool-ext-win/src/utils.ts index 40a5268670..4f76e9a0df 100644 --- a/extensions/admin-tool-ext-win/src/utils.ts +++ b/extensions/admin-tool-ext-win/src/utils.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; export interface IPackageInfo { name: string; @@ -10,7 +9,7 @@ export interface IPackageInfo { aiKey: string; } -export function getPackageInfo(packageJson: any): IPackageInfo { +export function getPackageInfo(packageJson: any): IPackageInfo | undefined { if (packageJson) { return { name: packageJson.name, @@ -18,6 +17,7 @@ export function getPackageInfo(packageJson: any): IPackageInfo { aiKey: packageJson.aiKey }; } + return undefined; } /** @@ -58,4 +58,4 @@ export function getTelemetryErrorType(msg: string): string { else { return 'Other'; } -} \ No newline at end of file +} diff --git a/extensions/admin-tool-ext-win/tsconfig.json b/extensions/admin-tool-ext-win/tsconfig.json index b7e9c66b48..70ad587350 100644 --- a/extensions/admin-tool-ext-win/tsconfig.json +++ b/extensions/admin-tool-ext-win/tsconfig.json @@ -13,9 +13,7 @@ "experimentalDecorators": true, "moduleResolution": "node", "strict": false, - "noImplicitAny": false, "noUnusedParameters": false, - "noImplicitReturns": false, }, "exclude": [ "node_modules" diff --git a/extensions/agent/src/agentUtils.ts b/extensions/agent/src/agentUtils.ts index 9160be2f7a..c45fb9b1c4 100644 --- a/extensions/agent/src/agentUtils.ts +++ b/extensions/agent/src/agentUtils.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as azdata from 'azdata'; import { promises as fs } from 'fs'; @@ -28,7 +26,7 @@ export class AgentUtils { return AgentUtils._agentService; } - public static async getDatabases(ownerUri: string): Promise { + public static async getDatabases(ownerUri: string): Promise { if (!AgentUtils._connectionService) { let currentConnection = await azdata.connection.getCurrentConnection(); this._connectionService = azdata.dataprotocol.getProvider(currentConnection.providerId, azdata.DataProviderType.ConnectionProvider); @@ -37,6 +35,7 @@ export class AgentUtils { if (result && result.databaseNames && result.databaseNames.length > 0) { return result.databaseNames; } + return undefined; }); } diff --git a/extensions/agent/src/data/alertData.ts b/extensions/agent/src/data/alertData.ts index 3b8529d3b6..d485ca71c5 100644 --- a/extensions/agent/src/data/alertData.ts +++ b/extensions/agent/src/data/alertData.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as vscode from 'vscode'; @@ -148,4 +147,4 @@ export class AlertData implements IAgentDialogData { return azdata.AlertType.sqlServerEvent; } } -} \ No newline at end of file +} diff --git a/extensions/agent/src/data/jobData.ts b/extensions/agent/src/data/jobData.ts index 9492ffd33e..ba44ef68bb 100644 --- a/extensions/agent/src/data/jobData.ts +++ b/extensions/agent/src/data/jobData.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; @@ -195,4 +194,4 @@ export class JobData implements IAgentDialogData { startStepId: this.startStepId }; } -} \ No newline at end of file +} diff --git a/extensions/agent/src/data/jobStepData.ts b/extensions/agent/src/data/jobStepData.ts index 0057487252..264971b7e6 100644 --- a/extensions/agent/src/data/jobStepData.ts +++ b/extensions/agent/src/data/jobStepData.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; @@ -269,4 +268,4 @@ export class JobStepData implements IAgentDialogData { return JobStepDialog.NextStep; } } -} \ No newline at end of file +} diff --git a/extensions/agent/src/data/notebookData.ts b/extensions/agent/src/data/notebookData.ts index 2faaf0ca10..1321233b7a 100644 --- a/extensions/agent/src/data/notebookData.ts +++ b/extensions/agent/src/data/notebookData.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; diff --git a/extensions/agent/src/data/operatorData.ts b/extensions/agent/src/data/operatorData.ts index 198404d3cb..00bcddde44 100644 --- a/extensions/agent/src/data/operatorData.ts +++ b/extensions/agent/src/data/operatorData.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import { AgentUtils } from '../agentUtils'; diff --git a/extensions/agent/src/data/pickScheduleData.ts b/extensions/agent/src/data/pickScheduleData.ts index 555053e7d4..f62438e93a 100644 --- a/extensions/agent/src/data/pickScheduleData.ts +++ b/extensions/agent/src/data/pickScheduleData.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import { AgentUtils } from '../agentUtils'; @@ -21,7 +20,7 @@ export class PickScheduleData implements IAgentDialogData { this.jobName = jobName; } - public async initialize(): Promise { + public async initialize(): Promise { let agentService = await AgentUtils.getAgentService(); try { let result = await agentService.getJobSchedules(this.ownerUri); @@ -30,6 +29,7 @@ export class PickScheduleData implements IAgentDialogData { this.schedules = result.schedules; return this.schedules; } + return undefined; } catch (error) { throw error; } diff --git a/extensions/agent/src/data/proxyData.ts b/extensions/agent/src/data/proxyData.ts index cf5f3e7f26..70aeb58f11 100644 --- a/extensions/agent/src/data/proxyData.ts +++ b/extensions/agent/src/data/proxyData.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; diff --git a/extensions/agent/src/data/scheduleData.ts b/extensions/agent/src/data/scheduleData.ts index 19814bf067..1903d728f0 100644 --- a/extensions/agent/src/data/scheduleData.ts +++ b/extensions/agent/src/data/scheduleData.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import { AgentUtils } from '../agentUtils'; diff --git a/extensions/agent/src/dialogs/agentDialog.ts b/extensions/agent/src/dialogs/agentDialog.ts index a9ac17b35d..b6b17f7b73 100644 --- a/extensions/agent/src/dialogs/agentDialog.ts +++ b/extensions/agent/src/dialogs/agentDialog.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; @@ -31,9 +30,9 @@ export abstract class AgentDialog { return this.model.dialogMode; } - protected abstract async updateModel(); + protected abstract async updateModel(): Promise; - protected abstract async initializeDialog(dialog: azdata.window.Dialog); + protected abstract async initializeDialog(dialog: azdata.window.Dialog): Promise; public async openDialog(dialogName?: string) { if (!this._isOpen) { @@ -87,4 +86,4 @@ export abstract class AgentDialog { public get isOpen(): boolean { return this._isOpen; } -} \ No newline at end of file +} diff --git a/extensions/agent/src/dialogs/alertDialog.ts b/extensions/agent/src/dialogs/alertDialog.ts index 762a4c8b84..4cbfdd6a02 100644 --- a/extensions/agent/src/dialogs/alertDialog.ts +++ b/extensions/agent/src/dialogs/alertDialog.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; import { AgentDialog } from './agentDialog'; @@ -112,7 +110,6 @@ export class AlertDialog extends AgentDialog { private static readonly IncludeErrorInEmailCheckBoxLabel: string = localize('alertDialog.IncludeErrorInEmail', "Include alert error text in e-mail"); private static readonly IncludeErrorInPagerCheckBoxLabel: string = localize('alertDialog.IncludeErrorInPager', "Include alert error text in pager"); private static readonly AdditionalMessageTextBoxLabel: string = localize('alertDialog.AdditionalNotification', "Additional notification message to send"); - private static readonly DelayBetweenResponsesTextBoxLabel: string = localize('alertDialog.DelayBetweenResponse', "Delay between responses"); private static readonly DelayMinutesTextBoxLabel: string = localize('alertDialog.DelayMinutes', "Delay Minutes"); private static readonly DelaySecondsTextBoxLabel: string = localize('alertDialog.DelaySeconds', "Delay Seconds"); @@ -526,7 +523,7 @@ export class AlertDialog extends AgentDialog { return severityNumber; } - protected updateModel() { + protected async updateModel(): Promise { this.model.name = this.nameTextBox.value; this.model.isEnabled = this.enabledCheckBox.checked; this.model.jobId = this.jobId; diff --git a/extensions/agent/src/dialogs/jobDialog.ts b/extensions/agent/src/dialogs/jobDialog.ts index 03e51a71f3..f29d6c4587 100644 --- a/extensions/agent/src/dialogs/jobDialog.ts +++ b/extensions/agent/src/dialogs/jobDialog.ts @@ -2,7 +2,7 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; + import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; import { JobData } from '../data/jobData'; @@ -59,7 +59,6 @@ export class JobDialog extends AgentDialog { // Schedules tab strings private readonly SchedulesTopLabelString: string = localize('jobDialog.schedulesaLabel', "Schedules list"); private readonly PickScheduleButtonString: string = localize('jobDialog.pickSchedule', "Pick Schedule"); - private readonly ScheduleNameLabelString: string = localize('jobDialog.scheduleNameLabel', "Schedule Name"); // Alerts tab strings private readonly AlertsTopLabelString: string = localize('jobDialog.alertsList', "Alerts list"); @@ -98,7 +97,6 @@ export class JobDialog extends AgentDialog { private removeScheduleButton: azdata.ButtonComponent; // Notifications tab controls - private notificationsTabTopLabel: azdata.TextComponent; private emailCheckBox: azdata.CheckBoxComponent; private emailOperatorDropdown: azdata.DropDownComponent; private emailConditionDropdown: azdata.DropDownComponent; @@ -549,7 +547,6 @@ export class JobDialog extends AgentDialog { private initializeNotificationsTab() { this.notificationsTab.registerContent(async view => { - this.notificationsTabTopLabel = view.modelBuilder.text().withProperties({ value: this.NotificationsTabTopLabelString }).component(); this.emailCheckBox = view.modelBuilder.checkBox().withProperties({ label: this.EmailCheckBoxString, width: 80 @@ -652,10 +649,10 @@ export class JobDialog extends AgentDialog { }); } - private convertStepsToData(jobSteps: azdata.AgentJobStepInfo[]): any[][] { - let result = []; + private convertStepsToData(jobSteps: azdata.AgentJobStepInfo[]): Array[] { + let result: Array[] = []; jobSteps.forEach(jobStep => { - let cols = []; + let cols: Array = []; cols.push(jobStep.id); cols.push(jobStep.stepName); cols.push(JobStepData.convertToSubSystemDisplayName(jobStep.subSystem)); @@ -666,8 +663,8 @@ export class JobDialog extends AgentDialog { return result; } - private convertSchedulesToData(jobSchedules: azdata.AgentJobScheduleInfo[]): any[][] { - let result = []; + private convertSchedulesToData(jobSchedules: azdata.AgentJobScheduleInfo[]): Array[] { + let result: Array[] = []; jobSchedules.forEach(schedule => { let cols = []; cols.push(schedule.id); @@ -678,8 +675,8 @@ export class JobDialog extends AgentDialog { return result; } - private convertAlertsToData(alerts: azdata.AgentAlertInfo[]): any[][] { - let result = []; + private convertAlertsToData(alerts: azdata.AgentAlertInfo[]): Array[] { + let result: Array[] = []; alerts.forEach(alert => { let cols = []; cols.push(alert.name); @@ -690,7 +687,7 @@ export class JobDialog extends AgentDialog { return result; } - protected updateModel() { + protected async updateModel(): Promise { this.model.name = this.nameTextBox.value; this.model.owner = this.ownerTextBox.value; this.model.enabled = this.enabledCheckBox.checked; diff --git a/extensions/agent/src/dialogs/jobStepDialog.ts b/extensions/agent/src/dialogs/jobStepDialog.ts index 4eb390d141..a99b2c1f0c 100644 --- a/extensions/agent/src/dialogs/jobStepDialog.ts +++ b/extensions/agent/src/dialogs/jobStepDialog.ts @@ -2,16 +2,15 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; + import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; -import * as vscode from 'vscode'; import { JobStepData } from '../data/jobStepData'; import { AgentUtils } from '../agentUtils'; import { JobData } from '../data/jobData'; import { AgentDialog } from './agentDialog'; import { AgentDialogMode } from '../interfaces'; -const path = require('path'); +import * as path from 'path'; const localize = nls.loadMessageBundle(); @@ -153,7 +152,7 @@ export class JobStepDialog extends AgentDialog { this.dialog.content = [this.generalTab, this.advancedTab]; } - private createCommands(view, queryProvider: azdata.QueryProvider) { + private createCommands(view: azdata.ModelView, queryProvider: azdata.QueryProvider) { this.openButton = view.modelBuilder.button() .withProperties({ label: this.OpenCommandText, @@ -396,9 +395,9 @@ export class JobStepDialog extends AgentDialog { }); } - private createRetryCounters(view) { + private createRetryCounters(view: azdata.ModelView) { this.retryAttemptsBox = view.modelBuilder.inputBox() - .withValidation(component => component.value >= 0) + .withValidation(component => Number(component.value) >= 0) .withProperties({ inputType: 'number', width: '100%', @@ -406,7 +405,7 @@ export class JobStepDialog extends AgentDialog { }) .component(); this.retryIntervalBox = view.modelBuilder.inputBox() - .withValidation(component => component.value >= 0) + .withValidation(component => Number(component.value) >= 0) .withProperties({ inputType: 'number', width: '100%', @@ -491,7 +490,7 @@ export class JobStepDialog extends AgentDialog { azdata.window.openDialog(this.fileBrowserDialog); } - private createTSQLOptions(view) { + private createTSQLOptions(view: azdata.ModelView) { this.outputFileBrowserButton = view.modelBuilder.button() .withProperties({ width: '20px', label: '...' }).component(); this.outputFileBrowserButton.onDidClick(() => this.openFileBrowserDialog()); @@ -536,7 +535,7 @@ export class JobStepDialog extends AgentDialog { return outputFileForm; } - protected updateModel() { + protected async updateModel(): Promise { this.model.stepName = this.nameTextBox.value; if (!this.model.stepName || this.model.stepName.length === 0) { this.dialog.message = this.dialog.message = { text: this.BlankStepNameErrorText }; diff --git a/extensions/agent/src/dialogs/notebookDialog.ts b/extensions/agent/src/dialogs/notebookDialog.ts index a31bcd87aa..4cae1b7353 100644 --- a/extensions/agent/src/dialogs/notebookDialog.ts +++ b/extensions/agent/src/dialogs/notebookDialog.ts @@ -2,7 +2,7 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; + import * as nls from 'vscode-nls'; import * as path from 'path'; import * as azdata from 'azdata'; @@ -17,7 +17,6 @@ const localize = nls.loadMessageBundle(); const CreateDialogTitle: string = localize('notebookDialog.newJob', "New Notebook Job"); const EditDialogTitle: string = localize('notebookDialog.editJob', "Edit Notebook Job"); const GeneralTabText: string = localize('notebookDialog.general', "General"); -const BlankJobNameErrorText: string = localize('notebookDialog.blankJobNameError', "The name of the job cannot be blank."); // Notebook details strings const NotebookDetailsSeparatorTitle: string = localize('notebookDialog.notebookSection', "Notebook Details"); @@ -33,7 +32,6 @@ const OwnerTextBoxLabel: string = localize('notebookDialog.owner', "Owner"); const SchedulesTopLabelString: string = localize('notebookDialog.schedulesaLabel', "Schedules list"); const PickScheduleButtonString: string = localize('notebookDialog.pickSchedule', "Pick Schedule"); const RemoveScheduleButtonString: string = localize('notebookDialog.removeSchedule', "Remove Schedule"); -const ScheduleNameLabelString: string = localize('notebookDialog.scheduleNameLabel', "Schedule Name"); const DescriptionTextBoxLabel: string = localize('notebookDialog.description', "Description"); // Event Name strings @@ -69,7 +67,6 @@ export class NotebookDialog extends AgentDialog { private isEdit: boolean = false; // Job objects - private steps: azdata.AgentJobStepInfo[]; private schedules: azdata.AgentJobScheduleInfo[]; constructor(ownerUri: string, options: NotebookDialogOptions = undefined) { @@ -77,7 +74,6 @@ export class NotebookDialog extends AgentDialog { ownerUri, new NotebookData(ownerUri, options), options.notebookInfo ? EditDialogTitle : CreateDialogTitle); - this.steps = this.model.jobSteps ? this.model.jobSteps : []; this.schedules = this.model.jobSchedules ? this.model.jobSchedules : []; this.isEdit = options.notebookInfo ? true : false; this.dialogName = this.isEdit ? EditJobDialogEvent : NewJobDialogEvent; @@ -280,10 +276,6 @@ export class NotebookDialog extends AgentDialog { else { this.templateFilePathBox.required = true; } - let idx: number = undefined; - if (this.model.category && this.model.category !== '') { - idx = this.model.jobCategories.indexOf(this.model.category); - } this.descriptionTextBox.value = this.model.description; this.openTemplateFileButton.onDidClick(e => { }); @@ -298,14 +290,8 @@ export class NotebookDialog extends AgentDialog { } - private createRowContainer(view: azdata.ModelView): azdata.FlexBuilder { - return view.modelBuilder.flexContainer().withLayout({ - flexFlow: 'row', - justifyContent: 'space-between' - }); - } - private convertSchedulesToData(jobSchedules: azdata.AgentJobScheduleInfo[]): any[][] { - let result = []; + private convertSchedulesToData(jobSchedules: azdata.AgentJobScheduleInfo[]): Array[] { + let result: Array[] = []; jobSchedules.forEach(schedule => { let cols = []; cols.push(schedule.id); @@ -316,7 +302,7 @@ export class NotebookDialog extends AgentDialog { return result; } - protected updateModel() { + protected async updateModel(): Promise { this.model.name = this.nameTextBox.value; this.model.owner = this.ownerTextBox.value; this.model.description = this.descriptionTextBox.value; diff --git a/extensions/agent/src/dialogs/operatorDialog.ts b/extensions/agent/src/dialogs/operatorDialog.ts index aca066e31b..5907511837 100644 --- a/extensions/agent/src/dialogs/operatorDialog.ts +++ b/extensions/agent/src/dialogs/operatorDialog.ts @@ -3,10 +3,7 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as azdata from 'azdata'; -import * as vscode from 'vscode'; import { OperatorData } from '../data/operatorData'; import * as nls from 'vscode-nls'; import { AgentDialog } from './agentDialog'; @@ -409,7 +406,7 @@ export class OperatorDialog extends AgentDialog { }); } - protected updateModel() { + protected async updateModel(): Promise { this.model.name = this.nameTextBox.value; this.model.enabled = this.enabledCheckBox.checked; this.model.emailAddress = this.emailNameTextBox.value; diff --git a/extensions/agent/src/dialogs/pickScheduleDialog.ts b/extensions/agent/src/dialogs/pickScheduleDialog.ts index 23c6e5c8c9..9d7f6f37bb 100644 --- a/extensions/agent/src/dialogs/pickScheduleDialog.ts +++ b/extensions/agent/src/dialogs/pickScheduleDialog.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; import * as vscode from 'vscode'; diff --git a/extensions/agent/src/dialogs/proxyDialog.ts b/extensions/agent/src/dialogs/proxyDialog.ts index ce44494f5c..90a658ee98 100644 --- a/extensions/agent/src/dialogs/proxyDialog.ts +++ b/extensions/agent/src/dialogs/proxyDialog.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; import { AgentDialog } from './agentDialog'; @@ -34,7 +32,6 @@ export class ProxyDialog extends AgentDialog { private static readonly SSASCommandLabel: string = localize('createProxy.SSASCommandLabel', "SQL Server Analysis Services Command"); private static readonly SSISPackageLabel: string = localize('createProxy.SSISPackage', "SQL Server Integration Services Package"); private static readonly PowerShellLabel: string = localize('createProxy.PowerShell', "PowerShell"); - private static readonly SubSystemHeadingLabel: string = localize('createProxy.subSystemHeading', "Active to the following subsytems"); private readonly NewProxyDialog = 'NewProxyDialogOpened'; private readonly EditProxyDialog = 'EditProxyDialogOpened'; @@ -189,7 +186,7 @@ export class ProxyDialog extends AgentDialog { label: ProxyDialog.PowerShellLabel }).component(); - let checkBoxContainer = view.modelBuilder.groupContainer() + view.modelBuilder.groupContainer() .withItems([this.operatingSystemCheckBox, this.replicationSnapshotCheckBox, this.replicationTransactionLogCheckBox, this.replicationDistributorCheckBox, this.replicationMergeCheckbox, this.replicationQueueReaderCheckbox, this.sqlQueryCheckBox, this.sqlCommandCheckBox, this.sqlIntegrationServicesPackageCheckbox, @@ -217,7 +214,7 @@ export class ProxyDialog extends AgentDialog { } - protected updateModel() { + protected async updateModel(): Promise { this.model.accountName = this.proxyNameTextBox.value; this.model.credentialName = this.credentialNameDropDown.value as string; this.model.credentialId = this.credentials.find( diff --git a/extensions/agent/src/dialogs/scheduleDialog.ts b/extensions/agent/src/dialogs/scheduleDialog.ts index 66645d9e54..87e4698c7a 100644 --- a/extensions/agent/src/dialogs/scheduleDialog.ts +++ b/extensions/agent/src/dialogs/scheduleDialog.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; import * as vscode from 'vscode'; @@ -92,4 +91,4 @@ export class ScheduleDialog { this.model.selectedSchedule = this.model.schedules[selectedRow]; } } -} \ No newline at end of file +} diff --git a/extensions/agent/src/mainController.ts b/extensions/agent/src/mainController.ts index 147425eb15..f94f882d7f 100644 --- a/extensions/agent/src/mainController.ts +++ b/extensions/agent/src/mainController.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; @@ -36,7 +35,6 @@ export class MainController { protected _context: vscode.ExtensionContext; private jobDialog: JobDialog; - private jobStepDialog: JobStepDialog; private alertDialog: AlertDialog; private operatorDialog: OperatorDialog; private proxyDialog: ProxyDialog; @@ -204,13 +202,6 @@ export class MainController { connection = await azdata.connection.openConnectionDialog(); } else { - let sqlConnectionsPresent: boolean; - for (let i = 0; i < connections.length; i++) { - if (connections[i].providerName === 'MSSQL') { - sqlConnectionsPresent = true; - break; - } - } let connectionNames: azdata.connection.Connection[] = []; let connectionDisplayString: string[] = []; for (let i = 0; i < connections.length; i++) { diff --git a/extensions/agent/src/test/agentServiceTests/agent.test.ts b/extensions/agent/src/test/agentServiceTests/agent.test.ts index c064c0802d..9136c22cc1 100644 --- a/extensions/agent/src/test/agentServiceTests/agent.test.ts +++ b/extensions/agent/src/test/agentServiceTests/agent.test.ts @@ -2,16 +2,13 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as should from 'should'; import * as TypeMoq from 'typemoq'; import 'mocha'; import * as azdata from 'azdata'; -import { JobData } from '../../data/jobData'; const testOwnerUri = 'agent://testuri'; -let mockJobData: TypeMoq.IMock; let mockAgentService: TypeMoq.IMock; describe('Agent extension create job objects', function (): void { @@ -37,7 +34,6 @@ describe('Agent extension create job objects', function (): void { should.strictEqual(createJobResult, undefined); createJobResult = mockAgentService.object.createJob(testOwnerUri, TypeMoq.It.isAny()); should.notEqual(createJobResult, undefined); - mockJobData = TypeMoq.Mock.ofType(JobData, TypeMoq.MockBehavior.Loose, false, [TypeMoq.It.isAnyString(), undefined, mockAgentService]); }); it('Create Alert Data', async () => { diff --git a/extensions/agent/src/test/agentServiceTests/agentEnums.test.ts b/extensions/agent/src/test/agentServiceTests/agentEnums.test.ts index 62ae33d3e9..8e050e4c11 100644 --- a/extensions/agent/src/test/agentServiceTests/agentEnums.test.ts +++ b/extensions/agent/src/test/agentServiceTests/agentEnums.test.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import 'mocha'; import * as should from 'should'; diff --git a/extensions/agent/tsconfig.json b/extensions/agent/tsconfig.json index 03bec7f781..a5c97be534 100644 --- a/extensions/agent/tsconfig.json +++ b/extensions/agent/tsconfig.json @@ -10,10 +10,7 @@ "experimentalDecorators": true, "moduleResolution": "node", "strict": false, - "noImplicitAny": false, - "noUnusedParameters": false, - "noImplicitReturns": false, - "noUnusedLocals": false, + "noUnusedParameters": false }, "exclude": [ "node_modules" diff --git a/extensions/big-data-cluster/package.json b/extensions/big-data-cluster/package.json index 2dc346065b..34ddaab457 100644 --- a/extensions/big-data-cluster/package.json +++ b/extensions/big-data-cluster/package.json @@ -159,6 +159,7 @@ }, "devDependencies": { "@types/kerberos": "^1.1.0", + "@types/request": "^2.48.3", "vscode": "^1.1.36" } } diff --git a/extensions/big-data-cluster/src/bigDataCluster/dialog/addControllerDialog.ts b/extensions/big-data-cluster/src/bigDataCluster/dialog/addControllerDialog.ts index 8626ad958a..7f32d100dd 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/dialog/addControllerDialog.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/dialog/addControllerDialog.ts @@ -3,17 +3,15 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as azdata from 'azdata'; import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; import { ClusterController, ControllerError } from '../controller/clusterControllerApi'; import { ControllerTreeDataProvider } from '../tree/controllerTreeDataProvider'; -import { TreeNode } from '../tree/treeNode'; import { AuthType } from '../constants'; import { ManageControllerCommand } from '../../extension'; import { BdcDashboardOptions } from './bdcDashboardModel'; +import { ControllerNode } from '../tree/controllerTreeNode'; const localize = nls.loadMessageBundle(); @@ -33,7 +31,7 @@ export class AddControllerDialogModel { private _authTypes: azdata.CategoryValue[]; constructor( public treeDataProvider: ControllerTreeDataProvider, - public node?: TreeNode, + public node?: ControllerNode, public prefilledUrl?: string, public prefilledAuth?: azdata.CategoryValue, public prefilledUsername?: string, diff --git a/extensions/big-data-cluster/src/bigDataCluster/dialog/bdcDashboard.ts b/extensions/big-data-cluster/src/bigDataCluster/dialog/bdcDashboard.ts index dfd8686636..756869719c 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/dialog/bdcDashboard.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/dialog/bdcDashboard.ts @@ -192,7 +192,7 @@ export class BdcDashboard extends BdcDashboardPage { * @param serviceName The name of the service to switch to the tab of */ public switchToServiceTab(serviceName: string): void { - const tabPageMapping = this.serviceTabPageMapping[serviceName]; + const tabPageMapping = this.serviceTabPageMapping.get(serviceName); if (!tabPageMapping) { return; } @@ -213,7 +213,7 @@ export class BdcDashboard extends BdcDashboardPage { if (services) { // Add a nav item for each service services.forEach(s => { - const existingTabPage = this.serviceTabPageMapping[s.serviceName]; + const existingTabPage = this.serviceTabPageMapping.get(s.serviceName); if (existingTabPage) { // We've already created the tab and page for this service, just update the tab health status dot existingTabPage.navTab.dot.value = getHealthStatusDot(s.healthStatus); @@ -221,7 +221,7 @@ export class BdcDashboard extends BdcDashboardPage { // New service - create the page and tab const navItem = createServiceNavTab(this.modelView.modelBuilder, s); const serviceStatusPage = new BdcServiceStatusPage(s.serviceName, this.model, this.modelView).container; - this.serviceTabPageMapping[s.serviceName] = { navTab: navItem, servicePage: serviceStatusPage }; + this.serviceTabPageMapping.set(s.serviceName, { navTab: navItem, servicePage: serviceStatusPage }); navItem.div.onDidClick(() => { this.switchToServiceTab(s.serviceName); }); diff --git a/extensions/big-data-cluster/src/bigDataCluster/dialog/bdcServiceStatusPage.ts b/extensions/big-data-cluster/src/bigDataCluster/dialog/bdcServiceStatusPage.ts index 18ee6db7d1..2421370abd 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/dialog/bdcServiceStatusPage.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/dialog/bdcServiceStatusPage.ts @@ -79,7 +79,7 @@ export class BdcServiceStatusPage extends BdcDashboardPage { private createResourceNavTabs(resources: ResourceStatusModel[]) { let tabIndex = this.createdTabs.size; resources.forEach(resource => { - const existingTab: ServiceTab = this.createdTabs[resource.resourceName]; + const existingTab: ServiceTab = this.createdTabs.get(resource.resourceName); if (existingTab) { // We already created this tab so just update the status existingTab.dot.value = getHealthStatusDot(resource.healthStatus); @@ -87,7 +87,7 @@ export class BdcServiceStatusPage extends BdcDashboardPage { // New tab - create and add to the end of the container const currentIndex = tabIndex++; const resourceHeaderTab = createResourceHeaderTab(this.modelView.modelBuilder, resource); - this.createdTabs[resource.resourceName] = resourceHeaderTab; + this.createdTabs.set(resource.resourceName, resourceHeaderTab); const resourceStatusPage: azdata.FlexContainer = new BdcDashboardResourceStatusPage(this.model, this.modelView, this.serviceName, resource.resourceName).container; resourceHeaderTab.div.onDidClick(() => { // Don't need to do anything if this is already the currently selected tab diff --git a/extensions/big-data-cluster/src/bigDataCluster/dialog/mountHdfsDialog.ts b/extensions/big-data-cluster/src/bigDataCluster/dialog/mountHdfsDialog.ts index 234712a22c..ac76d90cf6 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/dialog/mountHdfsDialog.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/dialog/mountHdfsDialog.ts @@ -22,7 +22,7 @@ function convertCredsToJson(creds: string): { credentials: {} } { if (!creds) { return undefined; } - let credObj = { 'credentials': {} }; + let credObj: { 'credentials': { [key: string]: any } } = { 'credentials': {} }; let pairs = creds.split(','); let validPairs: string[] = []; for (let i = 0; i < pairs.length; i++) { diff --git a/extensions/big-data-cluster/src/bigDataCluster/tree/addControllerNode.ts b/extensions/big-data-cluster/src/bigDataCluster/tree/addControllerNode.ts index 28d5e34078..8349647259 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/tree/addControllerNode.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/tree/addControllerNode.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; import * as vscode from 'vscode'; diff --git a/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeChangeHandler.ts b/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeChangeHandler.ts index 2fc7e30472..a220148d94 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeChangeHandler.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeChangeHandler.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import { TreeNode } from './treeNode'; export interface IControllerTreeChangeHandler { diff --git a/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeDataProvider.ts b/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeDataProvider.ts index c28c8028fa..e639a6c9c0 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeDataProvider.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/tree/controllerTreeDataProvider.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as vscode from 'vscode'; import * as azdata from 'azdata'; import { TreeNode } from './treeNode'; @@ -77,7 +75,7 @@ export class ControllerTreeDataProvider implements vscode.TreeDataProvider isControllerMatch(e, url, auth, username)); - let deleted = undefined; + let deleted: ControllerNode[] | undefined; if (index >= 0) { deleted = nodes.splice(index, 1); } return deleted; } - private getExistingControllerNode(url: string, auth: AuthType, username: string): ControllerNode { + private getExistingControllerNode(url: string, auth: AuthType, username: string): ControllerNode | undefined { if (!url || !username) { return undefined; } @@ -169,7 +167,7 @@ export class ControllerNode extends ControllerTreeNode { this.description = description; } - public async getChildren(): Promise { + public async getChildren(): Promise { if (this.children && this.children.length > 0) { this.clearChildren(); } @@ -178,11 +176,12 @@ export class ControllerNode extends ControllerTreeNode { vscode.commands.executeCommand('bigDataClusters.command.addController', this); return this.children as ControllerTreeNode[]; } + return undefined; } - public static toIpAndPort(url: string): string { + public static toIpAndPort(url: string): string | undefined { if (!url) { - return; + return undefined; } return url.trim().replace(/ /g, '').replace(/^.+\:\/\//, ''); } @@ -245,4 +244,3 @@ export class ControllerNode extends ControllerTreeNode { function isControllerMatch(node: ControllerNode, url: string, auth: string, username: string): unknown { return node.url === url && node.auth === auth && node.username === username; } - diff --git a/extensions/big-data-cluster/src/bigDataCluster/tree/loadingControllerNode.ts b/extensions/big-data-cluster/src/bigDataCluster/tree/loadingControllerNode.ts index bfdce7077b..6fd00b4842 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/tree/loadingControllerNode.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/tree/loadingControllerNode.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; import * as vscode from 'vscode'; diff --git a/extensions/big-data-cluster/src/bigDataCluster/tree/treeNode.ts b/extensions/big-data-cluster/src/bigDataCluster/tree/treeNode.ts index fa6177e32b..f10c15297e 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/tree/treeNode.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/tree/treeNode.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as azdata from 'azdata'; import * as vscode from 'vscode'; import { generateGuid } from '../utils'; diff --git a/extensions/big-data-cluster/src/bigDataCluster/utils.ts b/extensions/big-data-cluster/src/bigDataCluster/utils.ts index 7456df17a0..7b07980c2d 100644 --- a/extensions/big-data-cluster/src/bigDataCluster/utils.ts +++ b/extensions/big-data-cluster/src/bigDataCluster/utils.ts @@ -73,7 +73,7 @@ export function showErrorMessage(error: any, prefixText?: string): void { * Mappings of the different expected state values to their localized friendly names. * These are defined in aris/projects/controller/src/Microsoft.SqlServer.Controller/StateMachines */ -const stateToDisplayTextMap = { +const stateToDisplayTextMap: { [key: string]: string } = { // K8sScaledSetStateMachine 'creating': localize('state.creating', "Creating"), 'waiting': localize('state.waiting', "Waiting"), @@ -287,5 +287,3 @@ export function getIgnoreSslVerificationConfigSetting(): boolean { } return true; } - - diff --git a/extensions/big-data-cluster/src/extension.ts b/extensions/big-data-cluster/src/extension.ts index 71990f6252..39aaf998b3 100644 --- a/extensions/big-data-cluster/src/extension.ts +++ b/extensions/big-data-cluster/src/extension.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as vscode from 'vscode'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; @@ -156,14 +154,14 @@ async function lookupController(explorerContext?: azdata.ObjectExplorerContext): } function addBdcController(treeDataProvider: ControllerTreeDataProvider, node?: TreeNode): void { - let model = new AddControllerDialogModel(treeDataProvider, node); + let model = new AddControllerDialogModel(treeDataProvider, node as ControllerNode); let dialog = new AddControllerDialog(model); dialog.showDialog(); } -async function deleteBdcController(treeDataProvider: ControllerTreeDataProvider, node: TreeNode): Promise { +async function deleteBdcController(treeDataProvider: ControllerTreeDataProvider, node: TreeNode): Promise { if (!node && !(node instanceof ControllerNode)) { - return; + return undefined; } let controllerNode = node as ControllerNode; diff --git a/extensions/big-data-cluster/tsconfig.json b/extensions/big-data-cluster/tsconfig.json index 6d42ccdfe5..95a516e4d1 100644 --- a/extensions/big-data-cluster/tsconfig.json +++ b/extensions/big-data-cluster/tsconfig.json @@ -15,10 +15,7 @@ "./node_modules/@types" ], "strict": false, - "noImplicitAny": false, "noUnusedParameters": false, - "noImplicitReturns": false, - "noUnusedLocals": false, }, "exclude": [ "node_modules" diff --git a/extensions/big-data-cluster/yarn.lock b/extensions/big-data-cluster/yarn.lock index 4fcf744f53..2008de4b03 100644 --- a/extensions/big-data-cluster/yarn.lock +++ b/extensions/big-data-cluster/yarn.lock @@ -2,11 +2,36 @@ # yarn lockfile v1 +"@types/caseless@*": + version "0.12.2" + resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" + integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== + "@types/kerberos@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@types/kerberos/-/kerberos-1.1.0.tgz#fb1e5bc4f7272d152f67714deb100d5de7cb3e48" integrity sha512-ixpV6PSSMnIVpMNCLQ0gWguC2+pBxc0LeUCv9Ugj54opVSVFXfPNYP6sMa7UHvicYGDXAyHQSAzQC8VYEIgdFQ== +"@types/node@*": + version "12.12.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.6.tgz#a47240c10d86a9a57bb0c633f0b2e0aea9ce9253" + integrity sha512-FjsYUPzEJdGXjwKqSpE0/9QEh6kzhTAeObA54rn6j3rR4C/mzpI9L0KNfoeASSPMMdxIsoJuCLDWcM/rVjIsSA== + +"@types/request@^2.48.3": + version "2.48.3" + resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.3.tgz#970b8ed2317568c390361d29c555a95e74bd6135" + integrity sha512-3Wo2jNYwqgXcIz/rrq18AdOZUQB8cQ34CXZo+LUwPJNpvRAL86+Kc2wwI8mqpz9Cr1V+enIox5v+WZhy/p3h8w== + dependencies: + "@types/caseless" "*" + "@types/node" "*" + "@types/tough-cookie" "*" + form-data "^2.5.0" + +"@types/tough-cookie@*": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.5.tgz#9da44ed75571999b65c37b60c9b2b88db54c585d" + integrity sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg== + agent-base@4, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -285,6 +310,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" diff --git a/extensions/cms/src/apiWrapper.ts b/extensions/cms/src/apiWrapper.ts index 66093e5f76..9294dd12d8 100644 --- a/extensions/cms/src/apiWrapper.ts +++ b/extensions/cms/src/apiWrapper.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as vscode from 'vscode'; import * as azdata from 'azdata'; @@ -116,7 +115,7 @@ export class ApiWrapper { public openTextDocument(uri: vscode.Uri): Thenable; public openTextDocument(options: { language?: string; content?: string; }): Thenable; - public openTextDocument(uriOrOptions): Thenable { + public openTextDocument(uriOrOptions: any): Thenable { return vscode.workspace.openTextDocument(uriOrOptions); } diff --git a/extensions/cms/src/cmsResource/cmsResourceCommands.ts b/extensions/cms/src/cmsResource/cmsResourceCommands.ts index 6b2f792514..1ab061ecd4 100644 --- a/extensions/cms/src/cmsResource/cmsResourceCommands.ts +++ b/extensions/cms/src/cmsResource/cmsResourceCommands.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; import { AppContext } from '../appContext'; @@ -180,4 +179,3 @@ export function refreshCommand(appContext: AppContext, tree: CmsResourceTreeProv tree.notifyNodeChanged(node); }); } - diff --git a/extensions/cms/src/cmsResource/commands.ts b/extensions/cms/src/cmsResource/commands.ts index e9b14fa7bc..cd747ecb56 100644 --- a/extensions/cms/src/cmsResource/commands.ts +++ b/extensions/cms/src/cmsResource/commands.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import { AppContext } from '../appContext'; import { CmsResourceTreeProvider } from './tree/treeProvider'; import { diff --git a/extensions/cms/src/cmsResource/constants.ts b/extensions/cms/src/cmsResource/constants.ts index 6f5ff53b73..a6f77cb27c 100644 --- a/extensions/cms/src/cmsResource/constants.ts +++ b/extensions/cms/src/cmsResource/constants.ts @@ -3,12 +3,10 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - export enum CmsResourceItemType { cmsMessageNodeContainer = 'cms.resource.itemType.cmsMessageNodeContainer', cmsEmptyNodeContainer = 'cms.resource.itemType.cmsEmptyNodeContainer', cmsNodeContainer = 'cms.resource.itemType.databaseServerContainer', registeredServer = 'cms.resource.itemType.databaseServer', serverGroup = 'cms.resource.itemType.serverGroup' -} \ No newline at end of file +} diff --git a/extensions/cms/src/cmsResource/messageTreeNode.ts b/extensions/cms/src/cmsResource/messageTreeNode.ts index bc9c241ba8..285f4a25d1 100644 --- a/extensions/cms/src/cmsResource/messageTreeNode.ts +++ b/extensions/cms/src/cmsResource/messageTreeNode.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import { TreeItem, TreeItemCollapsibleState } from 'vscode'; import { NodeInfo } from 'azdata'; diff --git a/extensions/cms/src/cmsResource/tree/baseTreeNodes.ts b/extensions/cms/src/cmsResource/tree/baseTreeNodes.ts index 78c623d536..cad2e8a6a1 100644 --- a/extensions/cms/src/cmsResource/tree/baseTreeNodes.ts +++ b/extensions/cms/src/cmsResource/tree/baseTreeNodes.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import { AppContext } from '../../appContext'; import { TreeNode } from '../treeNode'; @@ -45,4 +44,4 @@ export interface ICmsResourceNodeInfo { description: string; ownerUri: string; connection: azdata.connection.Connection; -} \ No newline at end of file +} diff --git a/extensions/cms/src/cmsResource/tree/cmsResourceEmptyTreeNode.ts b/extensions/cms/src/cmsResource/tree/cmsResourceEmptyTreeNode.ts index 11a9c0072a..44a790759d 100644 --- a/extensions/cms/src/cmsResource/tree/cmsResourceEmptyTreeNode.ts +++ b/extensions/cms/src/cmsResource/tree/cmsResourceEmptyTreeNode.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import { TreeItem, TreeItemCollapsibleState } from 'vscode'; import { NodeInfo } from 'azdata'; import * as nls from 'vscode-nls'; diff --git a/extensions/cms/src/cmsResource/tree/cmsResourceTreeNode.ts b/extensions/cms/src/cmsResource/tree/cmsResourceTreeNode.ts index 4f5032e978..2745339482 100644 --- a/extensions/cms/src/cmsResource/tree/cmsResourceTreeNode.ts +++ b/extensions/cms/src/cmsResource/tree/cmsResourceTreeNode.ts @@ -3,10 +3,9 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; -import { TreeItemCollapsibleState, TreeItem } from 'vscode'; +import { TreeItemCollapsibleState } from 'vscode'; import { AppContext } from '../../appContext'; import { TreeNode } from '../treeNode'; import { CmsResourceTreeNodeBase } from './baseTreeNodes'; diff --git a/extensions/cms/src/cmsResource/tree/registeredServerTreeNode.ts b/extensions/cms/src/cmsResource/tree/registeredServerTreeNode.ts index 2082049b93..dc16491c64 100644 --- a/extensions/cms/src/cmsResource/tree/registeredServerTreeNode.ts +++ b/extensions/cms/src/cmsResource/tree/registeredServerTreeNode.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import { TreeItemCollapsibleState } from 'vscode'; import { TreeNode } from '../treeNode'; @@ -27,8 +26,8 @@ export class RegisteredServerTreeNode extends CmsResourceTreeNodeBase { super(name, description, ownerUri, appContext, treeChangeHandler, parent); } - public async getChildren(): Promise { - return; + public async getChildren(): Promise { + return undefined; } public getTreeItem(): azdata.TreeItem | Promise { @@ -37,8 +36,8 @@ export class RegisteredServerTreeNode extends CmsResourceTreeNodeBase { connectionName: this.name ? this.name : this.serverName, serverName: this.serverName, databaseName: '', - userName: undefined, - password: undefined, + userName: undefined as string, + password: undefined as string, authenticationType: 'Integrated', savePassword: false, groupFullName: '', diff --git a/extensions/cms/src/cmsResource/tree/serverGroupTreeNode.ts b/extensions/cms/src/cmsResource/tree/serverGroupTreeNode.ts index f7f4cd6e01..4fc7d419cf 100644 --- a/extensions/cms/src/cmsResource/tree/serverGroupTreeNode.ts +++ b/extensions/cms/src/cmsResource/tree/serverGroupTreeNode.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import { TreeItem, TreeItemCollapsibleState } from 'vscode'; import * as azdata from 'azdata'; import { TreeNode } from '../treeNode'; @@ -33,7 +31,7 @@ export class ServerGroupTreeNode extends CmsResourceTreeNodeBase { } public getChildren(): TreeNode[] | Promise { try { - let nodes = []; + let nodes: TreeNode[] = []; return this.appContext.cmsUtils.getRegisteredServers(this.ownerUri, this.relativePath).then((result) => { if (result) { if (result.registeredServersList) { diff --git a/extensions/cms/src/cmsResource/tree/treeChangeHandler.ts b/extensions/cms/src/cmsResource/tree/treeChangeHandler.ts index fa0ba36af3..3fe53e16c2 100644 --- a/extensions/cms/src/cmsResource/tree/treeChangeHandler.ts +++ b/extensions/cms/src/cmsResource/tree/treeChangeHandler.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import { TreeNode } from '../treeNode'; export interface ICmsResourceTreeChangeHandler { diff --git a/extensions/cms/src/cmsResource/tree/treeProvider.ts b/extensions/cms/src/cmsResource/tree/treeProvider.ts index 7046d306f3..3316417466 100644 --- a/extensions/cms/src/cmsResource/tree/treeProvider.ts +++ b/extensions/cms/src/cmsResource/tree/treeProvider.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import { TreeDataProvider, EventEmitter, Event, TreeItem } from 'vscode'; import { AppContext } from '../../appContext'; import * as nls from 'vscode-nls'; @@ -14,7 +13,6 @@ import { CmsResourceEmptyTreeNode } from './cmsResourceEmptyTreeNode'; import { ICmsResourceTreeChangeHandler } from './treeChangeHandler'; import { CmsResourceMessageTreeNode } from '../messageTreeNode'; import { CmsResourceTreeNode } from './cmsResourceTreeNode'; -import { ICmsResourceNodeInfo } from './baseTreeNodes'; export class CmsResourceTreeProvider implements TreeDataProvider, ICmsResourceTreeChangeHandler { @@ -38,7 +36,7 @@ export class CmsResourceTreeProvider implements TreeDataProvider, ICms // to determine whether the system has been initialized. const cachedServers = this._appContext.cmsUtils.getSavedServers(); if (cachedServers && cachedServers.length > 0) { - const servers = []; + const servers: CmsResourceTreeNode[] = []; cachedServers.forEach(async (server) => { servers.push(new CmsResourceTreeNode( server.name, diff --git a/extensions/cms/src/cmsResource/treeNode.ts b/extensions/cms/src/cmsResource/treeNode.ts index 560a5dcb5a..18f13d254b 100644 --- a/extensions/cms/src/cmsResource/treeNode.ts +++ b/extensions/cms/src/cmsResource/treeNode.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as azdata from 'azdata'; import * as vscode from 'vscode'; diff --git a/extensions/cms/src/cmsUtils.ts b/extensions/cms/src/cmsUtils.ts index f6c0ea8475..f44fb6aa12 100644 --- a/extensions/cms/src/cmsUtils.ts +++ b/extensions/cms/src/cmsUtils.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as nls from 'vscode-nls'; import * as vscode from 'vscode'; import * as azdata from 'azdata'; @@ -89,12 +88,13 @@ export class CmsUtils { return this._cmsService; } - public async getRegisteredServers(ownerUri: string, relativePath: string): Promise { + public async getRegisteredServers(ownerUri: string, relativePath: string): Promise { const cmsService = await this.getCmsService(); const result = await cmsService.getRegisteredServers(ownerUri, relativePath); if (result && result.registeredServersList && result.registeredServersList) { return result; } + return undefined; } public async createCmsServer(connection: azdata.connection.Connection, @@ -166,7 +166,7 @@ export class CmsUtils { } public async addRegisteredServer(relativePath: string, ownerUri: string, - parentServerName?: string): Promise { + parentServerName?: string): Promise { let provider = await this.getCmsService(); // Initial profile to disallow SQL Login without // changing provider. @@ -200,6 +200,7 @@ export class CmsUtils { return result; } } + return undefined; } public async removeRegisteredServer(registeredServerName: string, relativePath: string, ownerUri: string): Promise { @@ -232,7 +233,7 @@ export class CmsUtils { return this._credentialProvider; } - public async makeConnection(initialConnectionProfile?: azdata.IConnectionProfile): Promise { + public async makeConnection(initialConnectionProfile?: azdata.IConnectionProfile): Promise { if (!initialConnectionProfile) { initialConnectionProfile = { connectionName: undefined, @@ -261,6 +262,7 @@ export class CmsUtils { } return connection; } + return undefined; } // Static Functions diff --git a/extensions/cms/src/controllers/cmsResourceController.ts b/extensions/cms/src/controllers/cmsResourceController.ts index f39b82df09..13e555855c 100644 --- a/extensions/cms/src/controllers/cmsResourceController.ts +++ b/extensions/cms/src/controllers/cmsResourceController.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import ControllerBase from './controllerBase'; import { CmsResourceTreeProvider } from '../cmsResource/tree/treeProvider'; import { registerCmsResourceCommands } from '../cmsResource/commands'; diff --git a/extensions/cms/src/controllers/controllerBase.ts b/extensions/cms/src/controllers/controllerBase.ts index 15e31972b4..a548c795af 100644 --- a/extensions/cms/src/controllers/controllerBase.ts +++ b/extensions/cms/src/controllers/controllerBase.ts @@ -3,8 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; - import * as vscode from 'vscode'; import { AppContext } from '../appContext'; @@ -31,4 +29,3 @@ export default abstract class ControllerBase implements vscode.Disposable { this.deactivate(); } } - diff --git a/extensions/cms/src/test/cmsResource/tree/treeProvider.test.ts b/extensions/cms/src/test/cmsResource/tree/treeProvider.test.ts index bfcff87a8d..418d63b2f1 100644 --- a/extensions/cms/src/test/cmsResource/tree/treeProvider.test.ts +++ b/extensions/cms/src/test/cmsResource/tree/treeProvider.test.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import 'mocha'; import * as vscode from 'vscode'; import * as should from 'should'; @@ -13,7 +12,6 @@ import { ApiWrapper } from '../../../apiWrapper'; import { CmsResourceTreeProvider } from '../../../cmsResource/tree/treeProvider'; import { CmsResourceMessageTreeNode } from '../../../cmsResource/messageTreeNode'; import { CmsResourceEmptyTreeNode } from '../../../cmsResource/tree/cmsResourceEmptyTreeNode'; -import { CmsResourceTreeNode } from '../../../cmsResource/tree/cmsResourceTreeNode'; import { CmsUtils } from '../../../cmsUtils'; // Mock services diff --git a/extensions/cms/tsconfig.json b/extensions/cms/tsconfig.json index c18d75fe69..08c65e88cf 100644 --- a/extensions/cms/tsconfig.json +++ b/extensions/cms/tsconfig.json @@ -15,10 +15,7 @@ "moduleResolution": "node", "declaration": false, "strict": false, - "noImplicitAny": false, "noUnusedParameters": false, - "noImplicitReturns": false, - "noUnusedLocals": false, }, "exclude": [ "node_modules" diff --git a/extensions/dacpac/src/wizard/api/basePage.ts b/extensions/dacpac/src/wizard/api/basePage.ts index eb601b59a8..a4857f1303 100644 --- a/extensions/dacpac/src/wizard/api/basePage.ts +++ b/extensions/dacpac/src/wizard/api/basePage.ts @@ -43,9 +43,9 @@ export abstract class BasePage { * Sets up a navigation validator. * This will be called right before onPageEnter(). */ - public abstract setupNavigationValidator(); + public abstract setupNavigationValidator(): void; - protected async getServerValues(): Promise<{ connection, displayName, name }[]> { + protected async getServerValues(): Promise<{ connection: azdata.connection.ConnectionProfile, displayName: string, name: string }[]> { let cons = await azdata.connection.getConnections(/* activeConnectionsOnly */ true); // This user has no active connections ABORT MISSION if (!cons || cons.length === 0) { @@ -105,7 +105,7 @@ export abstract class BasePage { return values; } - protected async getDatabaseValues(): Promise<{ displayName, name }[]> { + protected async getDatabaseValues(): Promise<{ displayName: string, name: string }[]> { let idx = -1; let count = -1; let values = (await azdata.connection.listDatabases(this.model.server.connectionId)).map(db => { diff --git a/extensions/dacpac/src/wizard/api/dacFxConfigPage.ts b/extensions/dacpac/src/wizard/api/dacFxConfigPage.ts index ce205c43cf..b7f272c1fa 100644 --- a/extensions/dacpac/src/wizard/api/dacFxConfigPage.ts +++ b/extensions/dacpac/src/wizard/api/dacFxConfigPage.ts @@ -2,7 +2,6 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; @@ -38,7 +37,7 @@ export abstract class DacFxConfigPage extends BasePage { this.view = view; } - public setupNavigationValidator() { + public setupNavigationValidator(): void { this.instance.registerNavigationValidator(() => { return true; }); @@ -198,4 +197,3 @@ export abstract class DacFxConfigPage extends BasePage { interface ConnectionDropdownValue extends azdata.CategoryValue { connection: azdata.connection.ConnectionProfile; } - diff --git a/extensions/dacpac/src/wizard/dataTierApplicationWizard.ts b/extensions/dacpac/src/wizard/dataTierApplicationWizard.ts index 862b77dd6b..6889265110 100644 --- a/extensions/dacpac/src/wizard/dataTierApplicationWizard.ts +++ b/extensions/dacpac/src/wizard/dataTierApplicationWizard.ts @@ -2,7 +2,7 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; + import * as vscode from 'vscode'; import * as nls from 'vscode-nls'; import * as azdata from 'azdata'; diff --git a/extensions/dacpac/src/wizard/pages/dacFxSummaryPage.ts b/extensions/dacpac/src/wizard/pages/dacFxSummaryPage.ts index e9e753558f..cd1642b89f 100644 --- a/extensions/dacpac/src/wizard/pages/dacFxSummaryPage.ts +++ b/extensions/dacpac/src/wizard/pages/dacFxSummaryPage.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; import { DacFxDataModel } from '../api/models'; @@ -65,7 +64,7 @@ export class DacFxSummaryPage extends BasePage { return true; } - public setupNavigationValidator() { + public setupNavigationValidator(): void { this.instance.registerNavigationValidator(() => { if (this.loader.loading) { return false; diff --git a/extensions/dacpac/src/wizard/pages/deployConfigPage.ts b/extensions/dacpac/src/wizard/pages/deployConfigPage.ts index 33423d84a1..9470107f64 100644 --- a/extensions/dacpac/src/wizard/pages/deployConfigPage.ts +++ b/extensions/dacpac/src/wizard/pages/deployConfigPage.ts @@ -3,16 +3,13 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; import * as vscode from 'vscode'; import * as path from 'path'; -import * as os from 'os'; import { DacFxDataModel } from '../api/models'; import { DataTierApplicationWizard, DeployOperationPath, Operation, DeployNewOperationPath, PageName } from '../dataTierApplicationWizard'; import { DacFxConfigPage } from '../api/dacFxConfigPage'; -import { DacFxSummaryPage } from './dacFxSummaryPage'; const localize = nls.loadMessageBundle(); diff --git a/extensions/dacpac/src/wizard/pages/extractConfigPage.ts b/extensions/dacpac/src/wizard/pages/extractConfigPage.ts index ebdf3b716c..aba6b1b0be 100644 --- a/extensions/dacpac/src/wizard/pages/extractConfigPage.ts +++ b/extensions/dacpac/src/wizard/pages/extractConfigPage.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; import * as vscode from 'vscode'; @@ -60,7 +59,7 @@ export class ExtractConfigPage extends DacFxConfigPage { return true; } - public setupNavigationValidator() { + public setupNavigationValidator(): void { this.instance.registerNavigationValidator(() => { if (this.databaseLoader.loading) { return false; diff --git a/extensions/dacpac/src/wizard/pages/importConfigPage.ts b/extensions/dacpac/src/wizard/pages/importConfigPage.ts index b6751fc3e6..98e74e09e5 100644 --- a/extensions/dacpac/src/wizard/pages/importConfigPage.ts +++ b/extensions/dacpac/src/wizard/pages/importConfigPage.ts @@ -3,12 +3,10 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; import * as vscode from 'vscode'; import * as path from 'path'; -import * as os from 'os'; import { DacFxDataModel } from '../api/models'; import { DataTierApplicationWizard } from '../dataTierApplicationWizard'; import { DacFxConfigPage } from '../api/dacFxConfigPage'; diff --git a/extensions/dacpac/src/wizard/pages/selectOperationpage.ts b/extensions/dacpac/src/wizard/pages/selectOperationpage.ts index 09740f7ee9..675067effd 100644 --- a/extensions/dacpac/src/wizard/pages/selectOperationpage.ts +++ b/extensions/dacpac/src/wizard/pages/selectOperationpage.ts @@ -3,7 +3,6 @@ * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -'use strict'; import * as azdata from 'azdata'; import * as nls from 'vscode-nls'; import { DacFxDataModel } from '../api/models'; @@ -177,7 +176,7 @@ export class SelectOperationPage extends BasePage { this.instance.wizard.addPage(summaryPage.wizardPage, index); } - public setupNavigationValidator() { + public setupNavigationValidator(): void { this.instance.registerNavigationValidator(() => { return true; }); diff --git a/extensions/dacpac/tsconfig.json b/extensions/dacpac/tsconfig.json index d9fbb41ead..971db11d01 100644 --- a/extensions/dacpac/tsconfig.json +++ b/extensions/dacpac/tsconfig.json @@ -3,10 +3,6 @@ "compilerOptions": { "outDir": "./out", "strict": false, - "alwaysStrict": false, - "noImplicitAny": false, - "noImplicitReturns": false, - "noUnusedLocals": false, "noUnusedParameters": false }, "include": [