From dfc6469c9d8484295084ab9c0dbdee9062fb68e3 Mon Sep 17 00:00:00 2001 From: Charles Gagnon Date: Thu, 23 Mar 2023 16:49:48 -0700 Subject: [PATCH] Enable strict null in MSSQL extension (#22433) --- extensions/mssql/src/credentialstore/contracts.ts | 9 +++++++-- .../src/credentialstore/sqlCredentialService.ts | 12 ++++++++---- extensions/mssql/src/features.ts | 2 +- .../ui/objectManagementDialogBase.ts | 2 +- extensions/mssql/src/util/dataCache.ts | 2 +- extensions/mssql/tsconfig.json | 3 +-- 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/extensions/mssql/src/credentialstore/contracts.ts b/extensions/mssql/src/credentialstore/contracts.ts index 1260b204da..4695021c16 100644 --- a/extensions/mssql/src/credentialstore/contracts.ts +++ b/extensions/mssql/src/credentialstore/contracts.ts @@ -8,9 +8,14 @@ import { Credential } from 'azdata'; // --------------------------------- < Read Credential Request > ------------------------------------------------- +// We don't need to include the actual password field when making read/delete requests, so for now just +// creating a custom type here to avoid issues with strict null checking until we can get STS updated +// to expect just the ID itself instead of the full credential object type +export type CredentialId = Omit; + // Read Credential request message callback declaration export namespace ReadCredentialRequest { - export const type = new RequestType('credential/read'); + export const type = new RequestType('credential/read'); } // --------------------------------- ------------------------------------------------- @@ -28,6 +33,6 @@ export namespace SaveCredentialRequest { // Delete Credential request message callback declaration export namespace DeleteCredentialRequest { - export const type = new RequestType('credential/delete'); + export const type = new RequestType('credential/delete'); } // --------------------------------- ------------------------------------------------- diff --git a/extensions/mssql/src/credentialstore/sqlCredentialService.ts b/extensions/mssql/src/credentialstore/sqlCredentialService.ts index c1a8f29bea..d3814fb04a 100644 --- a/extensions/mssql/src/credentialstore/sqlCredentialService.ts +++ b/extensions/mssql/src/credentialstore/sqlCredentialService.ts @@ -47,10 +47,10 @@ export class SqlCredentialService extends SqlOpsFeature { const password = await this._secretStorage.get(credentialId); return { credentialId: credentialId, - password: password + password: password || '' }; } - return this._client.sendRequest(Contracts.ReadCredentialRequest.type, { credentialId, password: undefined }); + return this._client.sendRequest(Contracts.ReadCredentialRequest.type, { credentialId }); }; let saveCredential = async (credentialId: string, password: string): Promise => { @@ -70,7 +70,7 @@ export class SqlCredentialService extends SqlOpsFeature { console.log('credential does not exist in native secret store'); } } - return this._client.sendRequest(Contracts.DeleteCredentialRequest.type, { credentialId, password: undefined }); + return this._client.sendRequest(Contracts.DeleteCredentialRequest.type, { credentialId }); }; return azdata.credentials.registerProvider({ @@ -87,7 +87,11 @@ export class SqlCredentialService extends SqlOpsFeature { initialize(capabilities: ServerCapabilities): void { } - protected registerProvider(options: any): Disposable { return undefined; } + protected registerProvider(options: any): Disposable { + return { + dispose: () => { } + } + } private constructor(context: AppContext, protected readonly client: SqlOpsDataClient) { super(client, SqlCredentialService.messagesTypes); diff --git a/extensions/mssql/src/features.ts b/extensions/mssql/src/features.ts index b0a106707f..4dfa955fa1 100644 --- a/extensions/mssql/src/features.ts +++ b/extensions/mssql/src/features.ts @@ -128,7 +128,7 @@ export class AccountFeature implements StaticFeature { } let params: contracts.TokenRefreshedParams = { token: securityToken.token, - expiresOn: securityToken.expiresOn, + expiresOn: securityToken.expiresOn!, uri: request.uri }; diff --git a/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts b/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts index f27b9d037f..bdaf704e80 100644 --- a/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts +++ b/extensions/mssql/src/objectManagement/ui/objectManagementDialogBase.ts @@ -102,7 +102,7 @@ export abstract class ObjectManagementDialogBase { millisecondsToLive: number; getValueFunction: (...args: any[]) => Promise; - cachedItem: T; + cachedItem: T | undefined; fetchDate: Date; constructor(getValueFunction: (...args: any[]) => Promise, secondsToLive: number) { diff --git a/extensions/mssql/tsconfig.json b/extensions/mssql/tsconfig.json index bda62ffc0d..53fe835f2f 100644 --- a/extensions/mssql/tsconfig.json +++ b/extensions/mssql/tsconfig.json @@ -3,8 +3,7 @@ "compilerOptions": { "outDir": "./out", "strict": false, - "noUnusedParameters": false, - "strictNullChecks": false + "noUnusedParameters": false }, "include": [ "src/**/*"