mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 10:58:30 -05:00
Finish up no-unsafe-assignment fixes in azurecore (#22836)
* Finish up no-unsafe-assignment fixes in azurecore * Add link to typings * Remove unused * Ignore webpack file
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
**/extensions/**/*.d.ts
|
**/extensions/**/*.d.ts
|
||||||
**/extensions/**/build/**
|
**/extensions/**/build/**
|
||||||
**/extensions/**/colorize-fixtures/**
|
**/extensions/**/colorize-fixtures/**
|
||||||
|
**/extensions/azurecore/extension.webpack.config.js
|
||||||
**/extensions/css-language-features/server/test/pathCompletionFixtures/**
|
**/extensions/css-language-features/server/test/pathCompletionFixtures/**
|
||||||
**/extensions/html-language-features/server/lib/jquery.d.ts
|
**/extensions/html-language-features/server/lib/jquery.d.ts
|
||||||
**/extensions/html-language-features/server/src/test/pathCompletionFixtures/**
|
**/extensions/html-language-features/server/src/test/pathCompletionFixtures/**
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
// Disabled until the issues can be fixed
|
// Disabled until the issues can be fixed
|
||||||
"@typescript-eslint/explicit-function-return-type": ["off"]
|
"@typescript-eslint/explicit-function-return-type": ["off"],
|
||||||
|
"@typescript-eslint/no-unsafe-assignment": "error"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import { HttpClient } from './httpClient';
|
|||||||
import { getProxyEnabledHttpClient, getTenantIgnoreList, updateTenantIgnoreList } from '../../utils';
|
import { getProxyEnabledHttpClient, getTenantIgnoreList, updateTenantIgnoreList } from '../../utils';
|
||||||
import { errorToPromptFailedResult } from './networkUtils';
|
import { errorToPromptFailedResult } from './networkUtils';
|
||||||
import { MsalCachePluginProvider } from '../utils/msalCachePlugin';
|
import { MsalCachePluginProvider } from '../utils/msalCachePlugin';
|
||||||
|
import { AzureListOperationResponse, ErrorResponseBodyWithError, isErrorResponseBody as isErrorResponseBodyWithError } from '../../azureResource/utils';
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
export abstract class AzureAuth implements vscode.Disposable {
|
export abstract class AzureAuth implements vscode.Disposable {
|
||||||
@@ -482,7 +483,7 @@ export abstract class AzureAuth implements vscode.Disposable {
|
|||||||
Logger.verbose(`Fetching tenants with uri: ${tenantUri}`);
|
Logger.verbose(`Fetching tenants with uri: ${tenantUri}`);
|
||||||
let tenantList: string[] = [];
|
let tenantList: string[] = [];
|
||||||
|
|
||||||
const tenantResponse = await this.httpClient.sendGetRequestAsync<any>(tenantUri, {
|
const tenantResponse = await this.httpClient.sendGetRequestAsync<AzureListOperationResponse<TenantResponse[]> | ErrorResponseBodyWithError>(tenantUri, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'Authorization': `Bearer ${token}`
|
'Authorization': `Bearer ${token}`
|
||||||
@@ -490,9 +491,9 @@ export abstract class AzureAuth implements vscode.Disposable {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const data = tenantResponse.data;
|
const data = tenantResponse.data;
|
||||||
if (data.error) {
|
if (isErrorResponseBodyWithError(data)) {
|
||||||
Logger.error(`Error fetching tenants :${data.error.code} - ${data.error.message}`);
|
Logger.error(`Error fetching tenants :${data.error?.code} - ${data.error?.message}`);
|
||||||
throw new Error(`${data.error.code} - ${data.error.message}`);
|
throw new Error(`${data.error?.code} - ${data.error?.message}`);
|
||||||
}
|
}
|
||||||
const tenants: Tenant[] = data.value.map((tenantInfo: TenantResponse) => {
|
const tenants: Tenant[] = data.value.map((tenantInfo: TenantResponse) => {
|
||||||
if (tenantInfo.displayName) {
|
if (tenantInfo.displayName) {
|
||||||
|
|||||||
@@ -233,10 +233,14 @@ const networkRequestViaProxy = <T>(
|
|||||||
|
|
||||||
// check if the value of the header is supposed to be a JSON object
|
// check if the value of the header is supposed to be a JSON object
|
||||||
try {
|
try {
|
||||||
|
// TODO: Investigate this - https://github.com/microsoft/azuredatastudio/issues/22835
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||||
const object = JSON.parse(headerValue);
|
const object = JSON.parse(headerValue);
|
||||||
|
|
||||||
// if it is, then convert it from a string to a JSON object
|
// if it is, then convert it from a string to a JSON object
|
||||||
if (object && (typeof object === 'object')) {
|
if (object && (typeof object === 'object')) {
|
||||||
|
// TODO: Investigate this - https://github.com/microsoft/azuredatastudio/issues/22835
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
||||||
headerValue = object;
|
headerValue = object;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
@@ -20,14 +20,33 @@ import * as Constants from '../constants';
|
|||||||
import { getProxyEnabledHttpClient } from '../utils';
|
import { getProxyEnabledHttpClient } from '../utils';
|
||||||
import { HttpClient } from '../account-provider/auths/httpClient';
|
import { HttpClient } from '../account-provider/auths/httpClient';
|
||||||
import { NetworkRequestOptions } from '@azure/msal-common';
|
import { NetworkRequestOptions } from '@azure/msal-common';
|
||||||
|
import { ErrorResponseBody } from '@azure/arm-subscriptions/esm/models';
|
||||||
|
|
||||||
const localize = nls.loadMessageBundle();
|
const localize = nls.loadMessageBundle();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specialized version of the ErrorResponseBody that is required to have the error
|
||||||
|
* information for easier typing support, without it how do we know it's an error
|
||||||
|
* response?
|
||||||
|
* https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/subscription/arm-subscriptions/src/models/index.ts#L180
|
||||||
|
*/
|
||||||
|
export type ErrorResponseBodyWithError = Required<ErrorResponseBody>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the body object given is an error response, that is has a non-undefined
|
||||||
|
* property named error which contains detailed about the error.
|
||||||
|
* @param body The body object to check
|
||||||
|
* @returns True if the body is an ErrorResponseBodyWithError
|
||||||
|
*/
|
||||||
|
export function isErrorResponseBody(body: any): body is ErrorResponseBodyWithError {
|
||||||
|
return 'error' in body && body.error;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shape of list operation responses
|
* Shape of list operation responses
|
||||||
* e.g. https://learn.microsoft.com/en-us/rest/api/storagerp/srp_json_list_operations#response-body
|
* e.g. https://learn.microsoft.com/en-us/rest/api/storagerp/srp_json_list_operations#response-body
|
||||||
*/
|
*/
|
||||||
declare type AzureListOperationResponse<T> = {
|
export declare type AzureListOperationResponse<T> = {
|
||||||
value: T;
|
value: T;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user