Compare commits

..

1 Commits

Author SHA1 Message Date
sunilyadav840
7660a11c44 fixed eslint issue of StoreProcedure.ts and Authorization.ts 2021-10-12 10:31:22 +05:30
7 changed files with 77 additions and 78 deletions

View File

@@ -108,15 +108,15 @@ src/Explorer/Tabs/TabsBase.ts
src/Explorer/Tabs/TriggerTab.ts
src/Explorer/Tabs/UserDefinedFunctionTab.ts
src/Explorer/Tree/AccessibleVerticalList.ts
src/Explorer/Tree/Collection.ts
src/Explorer/Tree/ConflictId.ts
src/Explorer/Tree/DocumentId.ts
src/Explorer/Tree/ObjectId.ts
src/Explorer/Tree/StoredProcedure.ts
src/Explorer/Tree/TreeComponents.ts
src/Explorer/Tree/ResourceTokenCollection.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

View File

@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { Resource, StoredProcedureDefinition, TriggerDefinition, UserDefinedFunctionDefinition } from "@azure/cosmos";
import * as ko from "knockout";
import * as _ from "underscore";
@@ -152,27 +151,28 @@ export default class Collection implements ViewModels.Collection {
this.focusedSubnodeKind = ko.observable<ViewModels.CollectionTabKind>();
this.documentsFocused = ko.observable<boolean>();
this.documentsFocused.subscribe(() => {
this.documentsFocused.subscribe((focus) => {
console.log("Focus set on Documents: " + focus);
this.focusedSubnodeKind(ViewModels.CollectionTabKind.Documents);
});
this.settingsFocused = ko.observable<boolean>(false);
this.settingsFocused.subscribe(() => {
this.settingsFocused.subscribe((focus) => {
this.focusedSubnodeKind(ViewModels.CollectionTabKind.Settings);
});
this.storedProceduresFocused = ko.observable<boolean>(false);
this.storedProceduresFocused.subscribe(() => {
this.storedProceduresFocused.subscribe((focus) => {
this.focusedSubnodeKind(ViewModels.CollectionTabKind.StoredProcedures);
});
this.userDefinedFunctionsFocused = ko.observable<boolean>(false);
this.userDefinedFunctionsFocused.subscribe(() => {
this.userDefinedFunctionsFocused.subscribe((focus) => {
this.focusedSubnodeKind(ViewModels.CollectionTabKind.UserDefinedFunctions);
});
this.triggersFocused = ko.observable<boolean>(false);
this.triggersFocused.subscribe(() => {
this.triggersFocused.subscribe((focus) => {
this.focusedSubnodeKind(ViewModels.CollectionTabKind.Triggers);
});
@@ -224,7 +224,7 @@ export default class Collection implements ViewModels.Collection {
this.isOfferRead = false;
}
public expandCollapseCollection(): void {
public expandCollapseCollection() {
useSelectedNode.getState().setSelectedNode(this);
TelemetryProcessor.trace(Action.SelectItem, ActionModifiers.Mark, {
description: "Collection node",
@@ -247,7 +247,7 @@ export default class Collection implements ViewModels.Collection {
);
}
public collapseCollection(): void {
public collapseCollection() {
if (!this.isCollectionExpanded()) {
return;
}
@@ -326,7 +326,7 @@ export default class Collection implements ViewModels.Collection {
}
}
public onConflictsClick(): void {
public onConflictsClick() {
useSelectedNode.getState().setSelectedNode(this);
this.selectedSubnodeKind(ViewModels.CollectionTabKind.Conflicts);
TelemetryProcessor.trace(Action.SelectItem, ActionModifiers.Mark, {
@@ -344,7 +344,7 @@ export default class Collection implements ViewModels.Collection {
ViewModels.CollectionTabKind.Conflicts,
(tab) => tab.collection && tab.collection.databaseId === this.databaseId && tab.collection.id() === this.id()
) as ConflictsTab[];
const conflictsTab: ConflictsTab = conflictsTabs && conflictsTabs[0];
let conflictsTab: ConflictsTab = conflictsTabs && conflictsTabs[0];
if (conflictsTab) {
useTabs.getState().activateTab(conflictsTab);
@@ -373,7 +373,7 @@ export default class Collection implements ViewModels.Collection {
}
}
public onTableEntitiesClick(): void {
public onTableEntitiesClick() {
useSelectedNode.getState().setSelectedNode(this);
this.selectedSubnodeKind(ViewModels.CollectionTabKind.QueryTables);
TelemetryProcessor.trace(Action.SelectItem, ActionModifiers.Mark, {
@@ -428,7 +428,7 @@ export default class Collection implements ViewModels.Collection {
}
}
public onGraphDocumentsClick(): void {
public onGraphDocumentsClick() {
useSelectedNode.getState().setSelectedNode(this);
this.selectedSubnodeKind(ViewModels.CollectionTabKind.Graph);
TelemetryProcessor.trace(Action.SelectItem, ActionModifiers.Mark, {
@@ -481,7 +481,7 @@ export default class Collection implements ViewModels.Collection {
}
}
public onMongoDBDocumentsClick = (): void => {
public onMongoDBDocumentsClick = () => {
useSelectedNode.getState().setSelectedNode(this);
this.selectedSubnodeKind(ViewModels.CollectionTabKind.Documents);
TelemetryProcessor.trace(Action.SelectItem, ActionModifiers.Mark, {
@@ -527,7 +527,7 @@ export default class Collection implements ViewModels.Collection {
}
};
public onSchemaAnalyzerClick = async (): Promise<void> => {
public onSchemaAnalyzerClick = async () => {
useSelectedNode.getState().setSelectedNode(this);
this.selectedSubnodeKind(ViewModels.CollectionTabKind.SchemaAnalyzer);
const SchemaAnalyzerTab = await (await import("../Tabs/SchemaAnalyzerTab")).default;
@@ -604,7 +604,7 @@ export default class Collection implements ViewModels.Collection {
node: this,
};
const settingsTabV2 = matchingTabs && (matchingTabs[0] as CollectionSettingsTabV2);
let settingsTabV2 = matchingTabs && (matchingTabs[0] as CollectionSettingsTabV2);
this.launchSettingsTabV2(settingsTabV2, traceStartData, settingsTabOptions);
};
@@ -624,7 +624,7 @@ export default class Collection implements ViewModels.Collection {
}
};
public onNewQueryClick(source: any, event: MouseEvent, queryText?: string): void {
public onNewQueryClick(source: any, event: MouseEvent, queryText?: string) {
const collection: ViewModels.Collection = source.collection || source;
const id = useTabs.getState().getTabs(ViewModels.CollectionTabKind.Query).length + 1;
const title = "Query " + id;
@@ -653,8 +653,7 @@ export default class Collection implements ViewModels.Collection {
);
}
// eslint-disable-next-line @typescript-eslint/no-unused-vars
public onNewMongoQueryClick(source: any, event: MouseEvent, queryText?: string): void {
public onNewMongoQueryClick(source: any, event: MouseEvent, queryText?: string) {
const collection: ViewModels.Collection = source.collection || source;
const id = useTabs.getState().getTabs(ViewModels.CollectionTabKind.Query).length + 1;
@@ -686,7 +685,7 @@ export default class Collection implements ViewModels.Collection {
useTabs.getState().activateNewTab(newMongoQueryTab);
}
public onNewGraphClick(): void {
public onNewGraphClick() {
const id: number = useTabs.getState().getTabs(ViewModels.CollectionTabKind.Graph).length + 1;
const title: string = "Graph Query " + id;
@@ -716,7 +715,7 @@ export default class Collection implements ViewModels.Collection {
useTabs.getState().activateNewTab(graphTab);
}
public onNewMongoShellClick(): void {
public onNewMongoShellClick() {
const mongoShellTabs = useTabs.getState().getTabs(ViewModels.CollectionTabKind.MongoShell) as NewMongoShellTab[];
let index = 1;
@@ -741,15 +740,15 @@ export default class Collection implements ViewModels.Collection {
useTabs.getState().activateNewTab(mongoShellTab);
}
public onNewStoredProcedureClick(source: ViewModels.Collection, event: MouseEvent): void {
public onNewStoredProcedureClick(source: ViewModels.Collection, event: MouseEvent) {
StoredProcedure.create(source, event);
}
public onNewUserDefinedFunctionClick(source: ViewModels.Collection): void {
public onNewUserDefinedFunctionClick(source: ViewModels.Collection) {
UserDefinedFunction.create(source);
}
public onNewTriggerClick(source: ViewModels.Collection, event: MouseEvent): void {
public onNewTriggerClick(source: ViewModels.Collection, event: MouseEvent) {
Trigger.create(source, event);
}
@@ -789,7 +788,7 @@ export default class Collection implements ViewModels.Collection {
);
}
public expandCollapseStoredProcedures(): void {
public expandCollapseStoredProcedures() {
this.selectedSubnodeKind(ViewModels.CollectionTabKind.StoredProcedures);
if (this.isStoredProceduresExpanded()) {
this.collapseStoredProcedures();
@@ -803,7 +802,7 @@ export default class Collection implements ViewModels.Collection {
);
}
public expandStoredProcedures(): void {
public expandStoredProcedures() {
if (this.isStoredProceduresExpanded()) {
return;
}
@@ -834,7 +833,7 @@ export default class Collection implements ViewModels.Collection {
);
}
public collapseStoredProcedures(): void {
public collapseStoredProcedures() {
if (!this.isStoredProceduresExpanded()) {
return;
}
@@ -850,7 +849,7 @@ export default class Collection implements ViewModels.Collection {
});
}
public expandCollapseUserDefinedFunctions(): void {
public expandCollapseUserDefinedFunctions() {
this.selectedSubnodeKind(ViewModels.CollectionTabKind.UserDefinedFunctions);
if (this.isUserDefinedFunctionsExpanded()) {
this.collapseUserDefinedFunctions();
@@ -864,7 +863,7 @@ export default class Collection implements ViewModels.Collection {
);
}
public expandUserDefinedFunctions(): void {
public expandUserDefinedFunctions() {
if (this.isUserDefinedFunctionsExpanded()) {
return;
}
@@ -895,7 +894,7 @@ export default class Collection implements ViewModels.Collection {
);
}
public collapseUserDefinedFunctions(): void {
public collapseUserDefinedFunctions() {
if (!this.isUserDefinedFunctionsExpanded()) {
return;
}
@@ -911,7 +910,7 @@ export default class Collection implements ViewModels.Collection {
});
}
public expandCollapseTriggers(): void {
public expandCollapseTriggers() {
this.selectedSubnodeKind(ViewModels.CollectionTabKind.Triggers);
if (this.isTriggersExpanded()) {
this.collapseTriggers();
@@ -925,7 +924,7 @@ export default class Collection implements ViewModels.Collection {
);
}
public expandTriggers(): void {
public expandTriggers() {
if (this.isTriggersExpanded()) {
return;
}
@@ -957,7 +956,7 @@ export default class Collection implements ViewModels.Collection {
);
}
public collapseTriggers(): void {
public collapseTriggers() {
if (!this.isTriggersExpanded()) {
return;
}
@@ -973,7 +972,7 @@ export default class Collection implements ViewModels.Collection {
});
}
public loadStoredProcedures(): Promise<void> {
public loadStoredProcedures(): Promise<any> {
return readStoredProcedures(this.databaseId, this.id()).then((storedProcedures) => {
const storedProceduresNodes: ViewModels.TreeNode[] = storedProcedures.map(
(storedProcedure) => new StoredProcedure(this.container, this, storedProcedure)
@@ -984,7 +983,7 @@ export default class Collection implements ViewModels.Collection {
});
}
public loadUserDefinedFunctions(): Promise<void> {
public loadUserDefinedFunctions(): Promise<any> {
return readUserDefinedFunctions(this.databaseId, this.id()).then((userDefinedFunctions) => {
const userDefinedFunctionsNodes: ViewModels.TreeNode[] = userDefinedFunctions.map(
(udf) => new UserDefinedFunction(this.container, this, udf)
@@ -995,7 +994,7 @@ export default class Collection implements ViewModels.Collection {
});
}
public loadTriggers(): Promise<void> {
public loadTriggers(): Promise<any> {
return readTriggers(this.databaseId, this.id()).then((triggers) => {
const triggerNodes: ViewModels.TreeNode[] = triggers.map(
(trigger: SqlTriggerResource | TriggerDefinition) => new Trigger(this.container, this, trigger)
@@ -1006,12 +1005,12 @@ export default class Collection implements ViewModels.Collection {
});
}
public onDragOver(source: Collection, event: { originalEvent: DragEvent }): void {
public onDragOver(source: Collection, event: { originalEvent: DragEvent }) {
event.originalEvent.stopPropagation();
event.originalEvent.preventDefault();
}
public onDrop(source: Collection, event: { originalEvent: DragEvent }): void {
public onDrop(source: Collection, event: { originalEvent: DragEvent }) {
event.originalEvent.stopPropagation();
event.originalEvent.preventDefault();
this.uploadFiles(event.originalEvent.dataTransfer.files);
@@ -1029,7 +1028,7 @@ export default class Collection implements ViewModels.Collection {
}
return _.find(notifications, (notification: DataModels.Notification) => {
const throughputUpdateRegExp = new RegExp("Throughput update (.*) in progress");
const throughputUpdateRegExp: RegExp = new RegExp("Throughput update (.*) in progress");
return (
notification.kind === "message" &&
notification.collectionName === this.id() &&

View File

@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import * as ko from "knockout";
import * as DataModels from "../../Contracts/DataModels";
import { useDialog } from "../Controls/Dialog";
@@ -29,7 +28,7 @@ export default class DocumentId {
this.isDirty = ko.observable(false);
}
public click(): void {
public click() {
if (this.container.isEditorDirty()) {
useDialog
.getState()
@@ -46,7 +45,7 @@ export default class DocumentId {
}
}
public partitionKeyHeader() {
public partitionKeyHeader(): Object {
if (!this.partitionKeyProperty) {
return undefined;
}

View File

@@ -60,7 +60,7 @@ export default class ResourceTokenCollection implements ViewModels.CollectionBas
});
}
public collapseCollection(): void {
public collapseCollection() {
if (!this.isCollectionExpanded()) {
return;
}
@@ -76,8 +76,7 @@ export default class ResourceTokenCollection implements ViewModels.CollectionBas
});
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
public onNewQueryClick(source: any, event: MouseEvent, queryText?: string): void {
public onNewQueryClick(source: any, event: MouseEvent, queryText?: string) {
const collection: ViewModels.Collection = source.collection || source;
const id = useTabs.getState().getTabs(ViewModels.CollectionTabKind.Query).length + 1;
const title = "Query " + id;
@@ -106,7 +105,7 @@ export default class ResourceTokenCollection implements ViewModels.CollectionBas
);
}
public onDocumentDBDocumentsClick(): void {
public onDocumentDBDocumentsClick() {
useSelectedNode.getState().setSelectedNode(this);
this.selectedSubnodeKind(ViewModels.CollectionTabKind.Documents);
TelemetryProcessor.trace(Action.SelectItem, ActionModifiers.Mark, {

View File

@@ -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 = <StoredProcedureDefinition>{
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",

View File

@@ -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<DataModels.GenerateTokenResponse> {
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<DataModels.GenerateTokenResponse> => {
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}`;
};

View File

@@ -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<GenerateTokenResponse>();