From 0f67f7cd94ce99acb6daaea3ba019da8f2ddcbcb Mon Sep 17 00:00:00 2001 From: Musale Martin Date: Wed, 29 May 2024 19:19:21 +0300 Subject: [PATCH 1/6] fix: remove character escape in json response formatting Signed-off-by: Musale Martin --- src/app/views/common/monaco/util/format-json.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/views/common/monaco/util/format-json.ts b/src/app/views/common/monaco/util/format-json.ts index f34ac2193e..27f43c8248 100644 --- a/src/app/views/common/monaco/util/format-json.ts +++ b/src/app/views/common/monaco/util/format-json.ts @@ -15,7 +15,7 @@ export function formatJsonStringForAllBrowsers( * 3. format the string (works for all browsers) */ try { - body = JSON.stringify(body).replace(/(?:\\[rnt]|[\r\n\t]+)+/g, ''); + body = JSON.stringify(body); body = JSON.parse(body); } catch (error) { telemetry.trackException( From 5f469a2db9315da3d9f0a47ce48964ad0226f898 Mon Sep 17 00:00:00 2001 From: Musale Martin Date: Mon, 26 Aug 2024 16:02:02 +0300 Subject: [PATCH 2/6] Fix types for useRef and remove deprecated code Signed-off-by: Musale Martin --- .../query-input/auto-complete/AutoComplete.tsx | 7 +++---- .../query-runner/query-input/auto-complete/use-previous.ts | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx b/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx index 9ddd5d9be8..79a5c66e32 100644 --- a/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx +++ b/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx @@ -1,4 +1,4 @@ -import { getTheme, ITextFieldProps, KeyCodes, mergeStyles, Text, TextField } from '@fluentui/react'; +import { getTheme, ITextField, ITextFieldProps, KeyCodes, mergeStyles, Text, TextField } from '@fluentui/react'; import { useContext, useEffect, useRef, useState } from 'react'; import { delimiters, getLastDelimiterInUrl, getSuggestions, SignContext } from '../../../../../modules/suggestions'; @@ -24,8 +24,7 @@ const AutoComplete = (props: IAutoCompleteProps) => { const dispatch = useAppDispatch(); const validation = useContext(ValidationContext); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const focusRef = useRef(null); + const focusRef = useRef(null); let element: HTMLDivElement | null | undefined = null; @@ -99,7 +98,7 @@ const AutoComplete = (props: IAutoCompleteProps) => { }; const onKeyDown = (event: React.KeyboardEvent) => { - switch (event.keyCode) { + switch (parseInt(event.code, 10)) { case KeyCodes.enter: event.preventDefault(); handleEnterKeyPressed(); diff --git a/src/app/views/query-runner/query-input/auto-complete/use-previous.ts b/src/app/views/query-runner/query-input/auto-complete/use-previous.ts index 80bca8bf8a..c525a62ba3 100644 --- a/src/app/views/query-runner/query-input/auto-complete/use-previous.ts +++ b/src/app/views/query-runner/query-input/auto-complete/use-previous.ts @@ -1,7 +1,7 @@ import { useRef, useEffect } from 'react'; const usePrevious = (value: string) => { - const reference = useRef(null); + const reference = useRef(''); useEffect(() => { reference.current = value; }); From d84cf4133fbedda9765e6ed2d8a146b2a100c18a Mon Sep 17 00:00:00 2001 From: Musale Martin Date: Mon, 26 Aug 2024 18:06:38 +0300 Subject: [PATCH 3/6] Use the string values for switch cases Signed-off-by: Musale Martin --- .../query-input/auto-complete/AutoComplete.tsx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx b/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx index 79a5c66e32..b5707ce2c1 100644 --- a/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx +++ b/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx @@ -98,34 +98,35 @@ const AutoComplete = (props: IAutoCompleteProps) => { }; const onKeyDown = (event: React.KeyboardEvent) => { - switch (parseInt(event.code, 10)) { - case KeyCodes.enter: + const keyCode = event.code + switch (keyCode) { + case 'Enter': event.preventDefault(); handleEnterKeyPressed(); break; - case KeyCodes.tab: + case 'Tab': if (shouldShowSuggestions) { event.preventDefault(); handleTabKeyPressed(); } break; - case KeyCodes.up: + case 'ArrowUp': event.preventDefault(); handleUpKeyPressed(); break; - case KeyCodes.down: + case 'ArrowDown': event.preventDefault(); handleDownKeyPressed(); break; - case KeyCodes.escape: + case 'Escape': handleEscapeKeyPressed(); break; - case KeyCodes.backspace: + case 'Backspace': setBackspacing(true); break; From b06b2c2c0b11eb8699267a7feeb18ec26b52913a Mon Sep 17 00:00:00 2001 From: Musale Martin Date: Mon, 26 Aug 2024 18:08:00 +0300 Subject: [PATCH 4/6] Remove unused import Signed-off-by: Musale Martin --- .../query-runner/query-input/auto-complete/AutoComplete.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx b/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx index b5707ce2c1..ea67faf227 100644 --- a/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx +++ b/src/app/views/query-runner/query-input/auto-complete/AutoComplete.tsx @@ -1,4 +1,4 @@ -import { getTheme, ITextField, ITextFieldProps, KeyCodes, mergeStyles, Text, TextField } from '@fluentui/react'; +import { getTheme, ITextField, ITextFieldProps, mergeStyles, Text, TextField } from '@fluentui/react'; import { useContext, useEffect, useRef, useState } from 'react'; import { delimiters, getLastDelimiterInUrl, getSuggestions, SignContext } from '../../../../../modules/suggestions'; From a7a181f138d62663bf3a9e25f3c51fc71656128d Mon Sep 17 00:00:00 2001 From: Musale Martin Date: Mon, 26 Aug 2024 20:08:19 +0300 Subject: [PATCH 5/6] Fetch all children in a segment Signed-off-by: Musale Martin --- src/app/utils/resources/resources-filter.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/app/utils/resources/resources-filter.ts b/src/app/utils/resources/resources-filter.ts index a30f0f18ea..5bac7bca0b 100644 --- a/src/app/utils/resources/resources-filter.ts +++ b/src/app/utils/resources/resources-filter.ts @@ -35,7 +35,19 @@ function getMatchingResourceForUrl(url: string, resources: IResource[]): IResour return node; } +const getResourceFromURL = (url: string, resource: IResource): IResource | null =>{ + url.split('/').filter(u=>u!=='').forEach((segment:string)=>{ + const foundResource = resource?.children?.find(res=>return res.segment === segment); + if(foundResource){ + console.log(`Found ${segment}`) + resource = foundResource + } + }) + return resource; +} + export { searchResources, - getMatchingResourceForUrl + getMatchingResourceForUrl, + getResourceFromURL } From 01ae75ff535632e4dd7fabbfe59a25289c5b20c5 Mon Sep 17 00:00:00 2001 From: Musale Martin Date: Mon, 26 Aug 2024 20:11:30 +0300 Subject: [PATCH 6/6] Clean up Signed-off-by: Musale Martin --- src/app/utils/query-url-sanitization.ts | 2 +- src/app/utils/resources/resources-filter.ts | 3 +-- src/modules/suggestions/suggestions.ts | 8 +++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/app/utils/query-url-sanitization.ts b/src/app/utils/query-url-sanitization.ts index 1d46e11fe6..0c814a5d06 100644 --- a/src/app/utils/query-url-sanitization.ts +++ b/src/app/utils/query-url-sanitization.ts @@ -58,7 +58,7 @@ export function sanitizeGraphAPISandboxUrl(url: string): string { export function sanitizeQueryUrl(url: string): string { try { return sanitizedQueryUrl(url); - } catch (e: any) { + } catch (e: unknown) { return ''; } } diff --git a/src/app/utils/resources/resources-filter.ts b/src/app/utils/resources/resources-filter.ts index 5bac7bca0b..ecb2e95802 100644 --- a/src/app/utils/resources/resources-filter.ts +++ b/src/app/utils/resources/resources-filter.ts @@ -37,9 +37,8 @@ function getMatchingResourceForUrl(url: string, resources: IResource[]): IResour const getResourceFromURL = (url: string, resource: IResource): IResource | null =>{ url.split('/').filter(u=>u!=='').forEach((segment:string)=>{ - const foundResource = resource?.children?.find(res=>return res.segment === segment); + const foundResource = resource?.children?.find(res=> res.segment === segment); if(foundResource){ - console.log(`Found ${segment}`) resource = foundResource } }) diff --git a/src/modules/suggestions/suggestions.ts b/src/modules/suggestions/suggestions.ts index 33abb2132b..42feb02568 100644 --- a/src/modules/suggestions/suggestions.ts +++ b/src/modules/suggestions/suggestions.ts @@ -1,8 +1,6 @@ import { ISuggestions, SignContext } from '.'; import { parseOpenApiResponse } from '../../app/utils/open-api-parser'; -import { - getMatchingResourceForUrl -} from '../../app/utils/resources/resources-filter'; +import { getResourceFromURL } from '../../app/utils/resources/resources-filter'; import { IOpenApiParseContent, IOpenApiResponse, IParsedOpenApiResponse } from '../../types/open-api'; import { IRequestOptions } from '../../types/request'; import { IResource } from '../../types/resources'; @@ -12,7 +10,6 @@ class Suggestions implements ISuggestions { public async getSuggestions(url: string, api: string, version: string, context: SignContext, resources?: IResource): Promise { - if (context === 'paths') { const resourceOptions = await this.getSuggestionsFromResources(url, resources!); if (resourceOptions) { @@ -43,7 +40,8 @@ class Suggestions implements ISuggestions { if (!url) { return this.createOpenApiResponse(resources.children, url); } else { - const matching = getMatchingResourceForUrl(url, resources.children); + // const matching = getMatchingResourceForUrl(url, resources.children); + const matching = getResourceFromURL(url, resources) if (matching && matching.children && matching.children.length > 0) { return this.createOpenApiResponse(matching.children, url) }