diff --git a/.eslintignore b/.eslintignore index f8d1587bb..53b52922b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -113,13 +113,10 @@ src/Explorer/Tree/ConflictId.ts src/Explorer/Tree/DocumentId.ts src/Explorer/Tree/ObjectId.ts src/Explorer/Tree/ResourceTokenCollection.ts -src/Explorer/Tree/StoredProcedure.ts -src/Explorer/Tree/TreeComponents.ts src/Explorer/WaitsForTemplateViewModel.ts src/GitHub/GitHubClient.test.ts src/GitHub/GitHubClient.ts src/Index.ts -src/Platform/Hosted/Authorization.ts src/ReactDevTools.ts src/Shared/Constants.ts src/Shared/DefaultExperienceUtility.test.ts diff --git a/src/Explorer/Tree/StoredProcedure.ts b/src/Explorer/Tree/StoredProcedure.ts index 215035ffe..7035e38e8 100644 --- a/src/Explorer/Tree/StoredProcedure.ts +++ b/src/Explorer/Tree/StoredProcedure.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-irregular-whitespace */ import { Resource, StoredProcedureDefinition } from "@azure/cosmos"; import * as ko from "knockout"; import * as Constants from "../../Common/Constants"; @@ -15,7 +16,7 @@ import { NewStoredProcedureTab } from "../Tabs/StoredProcedureTab/StoredProcedur import TabsBase from "../Tabs/TabsBase"; import { useSelectedNode } from "../useSelectedNode"; -const sampleStoredProcedureBody: string = `// SAMPLE STORED PROCEDURE +const sampleStoredProcedureBody = `// SAMPLE STORED PROCEDURE function sample(prefix) { var collection = getContext().getCollection(); @@ -63,7 +64,8 @@ export default class StoredProcedure { this.isExecuteEnabled = userContext.features.executeSproc; } - public static create(source: ViewModels.Collection, event: MouseEvent) { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public static create(source: ViewModels.Collection, _event: MouseEvent): void { const id = useTabs.getState().getTabs(ViewModels.CollectionTabKind.StoredProcedures).length + 1; const storedProcedure = { id: "", @@ -89,7 +91,7 @@ export default class StoredProcedure { useTabs.getState().activateNewTab(storedProcedureTab); } - public select() { + public select(): void { useSelectedNode.getState().setSelectedNode(this); TelemetryProcessor.trace(Action.SelectItem, ActionModifiers.Mark, { description: "Stored procedure node", @@ -98,7 +100,7 @@ export default class StoredProcedure { }); } - public open = () => { + public open = (): void => { this.select(); const storedProcedureTabs: NewStoredProcedureTab[] = useTabs @@ -138,7 +140,7 @@ export default class StoredProcedure { useTabs.getState().activateNewTab(storedProcedureTab); } }; - public delete() { + public delete(): void { useDialog.getState().showOkCancelModalDialog( "Confirm delete", "Are you sure you want to delete the stored procedure?", @@ -149,7 +151,8 @@ export default class StoredProcedure { useTabs.getState().closeTabsByComparator((tab: TabsBase) => tab.node && tab.node.rid === this.rid); this.collection.children.remove(this); }, - (reason) => {} + // eslint-disable-next-line @typescript-eslint/no-empty-function + () => {} ); }, "Cancel", diff --git a/src/Platform/Hosted/Authorization.ts b/src/Platform/Hosted/Authorization.ts index bebe9ddf4..5ff27fcfd 100644 --- a/src/Platform/Hosted/Authorization.ts +++ b/src/Platform/Hosted/Authorization.ts @@ -4,28 +4,27 @@ import * as DataModels from "../../Contracts/DataModels"; import { DefaultExperienceUtility } from "../../Shared/DefaultExperienceUtility"; import { userContext } from "../../UserContext"; -export default class AuthHeadersUtil { - public static async generateEncryptedToken(readOnly: boolean = false): Promise { - const url = configContext.BACKEND_ENDPOINT + "/api/tokens/generateToken" + AuthHeadersUtil._generateResourceUrl(); - const headers: any = { authorization: userContext.authorizationToken }; - headers[Constants.HttpHeaders.getReadOnlyKey] = readOnly; +export const generateEncryptedToken = async (readOnly = false): Promise => { + const url = configContext.BACKEND_ENDPOINT + "/api/tokens/generateToken" + _generateResourceUrl(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const headers: any = { authorization: userContext.authorizationToken }; + headers[Constants.HttpHeaders.getReadOnlyKey] = readOnly; - const response = await fetch(url, { method: "POST", headers }); - const result = await response.json(); - // This API has a quirk where the response must be parsed to JSON twice - return JSON.parse(result); - } + const response = await fetch(url, { method: "POST", headers }); + const result = await response.json(); + // This API has a quirk where the response must be parsed to JSON twice + return JSON.parse(result); +}; - private static _generateResourceUrl(): string { - const { databaseAccount, resourceGroup, subscriptionId } = userContext; - const apiKind: DataModels.ApiKind = DefaultExperienceUtility.getApiKindFromDefaultExperience(userContext.apiType); - const accountEndpoint = databaseAccount?.properties?.documentEndpoint || ""; - const sid = subscriptionId || ""; - const rg = resourceGroup || ""; - const dba = databaseAccount?.name || ""; - const resourceUrl = encodeURIComponent(accountEndpoint); - const rid = ""; - const rtype = ""; - return `?resourceUrl=${resourceUrl}&rid=${rid}&rtype=${rtype}&sid=${sid}&rg=${rg}&dba=${dba}&api=${apiKind}`; - } -} +export const _generateResourceUrl = (): string => { + const { databaseAccount, resourceGroup, subscriptionId } = userContext; + const apiKind: DataModels.ApiKind = DefaultExperienceUtility.getApiKindFromDefaultExperience(userContext.apiType); + const accountEndpoint = databaseAccount?.properties?.documentEndpoint || ""; + const sid = subscriptionId || ""; + const rg = resourceGroup || ""; + const dba = databaseAccount?.name || ""; + const resourceUrl = encodeURIComponent(accountEndpoint); + const rid = ""; + const rtype = ""; + return `?resourceUrl=${resourceUrl}&rid=${rid}&rtype=${rtype}&sid=${sid}&rg=${rg}&dba=${dba}&api=${apiKind}`; +}; diff --git a/src/hooks/useFullScreenURLs.tsx b/src/hooks/useFullScreenURLs.tsx index a83cd859a..64296fc0f 100644 --- a/src/hooks/useFullScreenURLs.tsx +++ b/src/hooks/useFullScreenURLs.tsx @@ -1,6 +1,6 @@ import { useEffect, useState } from "react"; import { GenerateTokenResponse } from "../Contracts/DataModels"; -import AuthHeadersUtil from "../Platform/Hosted/Authorization"; +import * as AuthHeadersUtil from "../Platform/Hosted/Authorization"; export function useFullScreenURLs(): GenerateTokenResponse | undefined { const [state, setState] = useState();