From 05a17a534ee5e762bf31ef7f152fd8a54516c5c7 Mon Sep 17 00:00:00 2001 From: Arshad Yaseen Date: Sun, 9 Jun 2024 09:57:36 +0530 Subject: [PATCH] Improve types --- src/classes/config.ts | 2 +- src/classes/copilot.ts | 2 +- src/classes/local-code-prediction-engine.ts | 2 +- src/constants/common.ts | 2 +- src/constants/completion.ts | 2 +- src/editor.tsx | 4 ++-- src/helpers/contextual-filter.ts | 2 +- src/helpers/get-completion.ts | 9 +++---- src/helpers/local-prediction/index.ts | 2 +- src/helpers/local-prediction/javascript.ts | 3 +++ src/helpers/prompt.ts | 4 ++-- src/hooks/use-start-completion.ts | 4 ++-- src/themes.ts | 2 +- src/types/common.ts | 20 +--------------- src/types/completion.ts | 26 +++++++++++++++++++-- src/types/copilot.ts | 2 +- src/types/editor-props.ts | 2 +- src/utils/completion/common.ts | 2 +- src/utils/completion/syntax-parser.ts | 4 ++-- src/utils/completion/validate-completion.ts | 2 +- 20 files changed, 51 insertions(+), 47 deletions(-) diff --git a/src/classes/config.ts b/src/classes/config.ts index 9377d6d2..bbca21df 100644 --- a/src/classes/config.ts +++ b/src/classes/config.ts @@ -1,5 +1,5 @@ import {DEFAULT_COMPLETION_MODEL} from '../constants/completion'; -import {CompletionModel} from '../types/completion'; +import type {CompletionModel} from '../types/completion'; /** * Configuration class to store the following: diff --git a/src/classes/copilot.ts b/src/classes/copilot.ts index 05ee7e9f..72ecadad 100644 --- a/src/classes/copilot.ts +++ b/src/classes/copilot.ts @@ -4,7 +4,7 @@ import { GROQ_API_ENDPOINT, } from '../constants/completion'; import {generateSystemPrompt, generateUserPrompt} from '../helpers/prompt'; -import { +import type { CompletionRequest, CompletionResponse, GroqCompletion, diff --git a/src/classes/local-code-prediction-engine.ts b/src/classes/local-code-prediction-engine.ts index 718d63d6..302f1a2a 100644 --- a/src/classes/local-code-prediction-engine.ts +++ b/src/classes/local-code-prediction-engine.ts @@ -1,5 +1,5 @@ import predictions from '../helpers/local-prediction'; -import {LocalPredictionSnippets} from '../types/completion'; +import type {LocalPredictionSnippets} from '../types/completion'; export class LocalCodePredictionEngine { private predictions: Map; diff --git a/src/constants/common.ts b/src/constants/common.ts index 8b2f2d22..cc1e6722 100644 --- a/src/constants/common.ts +++ b/src/constants/common.ts @@ -1,4 +1,4 @@ -import {EditorBuiltInTheme, EditorOptions} from '../types/common'; +import type {EditorBuiltInTheme, EditorOptions} from '../types/common'; export const EDITOR_DEFAULT_OPTIONS: EditorOptions = { scrollBeyondLastColumn: 0, diff --git a/src/constants/completion.ts b/src/constants/completion.ts index 9e2d58a4..f87e34f5 100644 --- a/src/constants/completion.ts +++ b/src/constants/completion.ts @@ -1,4 +1,4 @@ -import {CompletionModel} from '../types/completion'; +import type {CompletionModel} from '../types/completion'; export const COMPLETION_MODEL_IDS: Record = { llama: 'llama3-70b-8192', diff --git a/src/editor.tsx b/src/editor.tsx index b054994b..f196c40c 100644 --- a/src/editor.tsx +++ b/src/editor.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import {Monaco, Editor as MonacoEditor} from '@monaco-editor/react'; +import {Editor as MonacoEditor, type Monaco} from '@monaco-editor/react'; import { EDITOR_BUILT_IN_THEMES, @@ -13,7 +13,7 @@ import type { EditorOptions, StandaloneCodeEditor, } from './types/common'; -import EditorProps from './types/editor-props'; +import type EditorProps from './types/editor-props'; import {deepMerge} from './utils/common'; const Editor = ({ diff --git a/src/helpers/contextual-filter.ts b/src/helpers/contextual-filter.ts index 15328627..f94f7dce 100644 --- a/src/helpers/contextual-filter.ts +++ b/src/helpers/contextual-filter.ts @@ -4,7 +4,7 @@ import { FILTER_LANGUAGE_MAP, FILTER_WEIGHTS, } from '../constants/contextual-filter'; -import {ContextualFilterContext} from '../types/completion'; +import type {ContextualFilterContext} from '../types/completion'; import {getLastLineLength} from '../utils/completion/common'; class ContextualFilterManager { diff --git a/src/helpers/get-completion.ts b/src/helpers/get-completion.ts index de71f1bb..b8f66966 100644 --- a/src/helpers/get-completion.ts +++ b/src/helpers/get-completion.ts @@ -1,12 +1,9 @@ -import { - EditorModel, - EditorPosition, - FetchCompletionItemParams, -} from '../types/common'; -import { +import type {EditorModel, EditorPosition} from '../types/common'; +import type { CompletionMetadata, CompletionRequest, CompletionResponse, + FetchCompletionItemParams, } from '../types/completion'; import { determineCompletionMode, diff --git a/src/helpers/local-prediction/index.ts b/src/helpers/local-prediction/index.ts index cb48190e..fc4156a3 100644 --- a/src/helpers/local-prediction/index.ts +++ b/src/helpers/local-prediction/index.ts @@ -1,4 +1,4 @@ -import {LocalPrediction} from '../../types/completion'; +import type {LocalPrediction} from '../../types/completion'; import javascript from './javascript'; export default [ diff --git a/src/helpers/local-prediction/javascript.ts b/src/helpers/local-prediction/javascript.ts index 21a5ce05..dadb28f6 100644 --- a/src/helpers/local-prediction/javascript.ts +++ b/src/helpers/local-prediction/javascript.ts @@ -10,4 +10,7 @@ export default { 'async (': ') => {\n\t$1\n}$0', 'async =>': ' {\n\t$1\n}$0', ') =>': ' {', + '=>': ' {', + 'new M': 'ap', + 'new W': 'eakMap', }; diff --git a/src/helpers/prompt.ts b/src/helpers/prompt.ts index 6613cb16..dfc7faa0 100644 --- a/src/helpers/prompt.ts +++ b/src/helpers/prompt.ts @@ -1,5 +1,5 @@ -import {CompletionMetadata, CompletionMode} from '../types/completion'; -import {Technologies} from '../types/editor-props'; +import type {CompletionMetadata, CompletionMode} from '../types/completion'; +import type {Technologies} from '../types/editor-props'; import {joinWithAnd} from '../utils/common'; const CURSOR_PLACEHOLDER = '<>'; diff --git a/src/hooks/use-start-completion.ts b/src/hooks/use-start-completion.ts index c3c9a994..1dbaed52 100644 --- a/src/hooks/use-start-completion.ts +++ b/src/hooks/use-start-completion.ts @@ -7,8 +7,8 @@ import { computeCompletionCacheKey, fetchCompletionItem, } from '../helpers/get-completion'; -import {EditorInlineCompletion} from '../types/common'; -import { +import type {EditorInlineCompletion} from '../types/common'; +import type { CompletionSpeed, Endpoint, ExternalContext, diff --git a/src/themes.ts b/src/themes.ts index 4a2b3a54..a07bd8ed 100644 --- a/src/themes.ts +++ b/src/themes.ts @@ -1,4 +1,4 @@ -import {EditorThemeData} from './types/common'; +import type {EditorThemeData} from './types/common'; interface CustomThemeCollection { [key: string]: EditorThemeData; diff --git a/src/types/common.ts b/src/types/common.ts index 935ef21c..cb9815ed 100644 --- a/src/types/common.ts +++ b/src/types/common.ts @@ -1,13 +1,6 @@ import {Theme} from '@monaco-editor/react'; import * as monaco from 'monaco-editor'; -import { - Endpoint, - ExternalContext, - Filename, - Technologies, -} from './editor-props'; - export type EditorOptions = monaco.editor.IEditorOptions; export type StandaloneCodeEditor = monaco.editor.IStandaloneCodeEditor; export type EditorModel = monaco.editor.ITextModel; @@ -16,15 +9,4 @@ export type EditorRange = monaco.IRange; export type EditorInlineCompletion = monaco.languages.InlineCompletion; export type EditorThemeData = monaco.editor.IStandaloneThemeData; export type EditorBuiltInTheme = Theme; - -export interface FetchCompletionItemParams { - code: string; - language: string; - endpoint: Endpoint; - filename: Filename | undefined; - technologies: Technologies | undefined; - externalContext: ExternalContext | undefined; - model: EditorModel; - position: EditorPosition; - token: monaco.CancellationToken; -} +export type EditorCompletionCancellationToken = monaco.CancellationToken; diff --git a/src/types/completion.ts b/src/types/completion.ts index 0c25e12d..913cb229 100644 --- a/src/types/completion.ts +++ b/src/types/completion.ts @@ -1,9 +1,19 @@ -import { +import type { ChatCompletion, ChatCompletionCreateParamsBase, } from 'groq-sdk/resources/chat/completions'; -import {ExternalContext, Filename, Technologies} from './editor-props'; +import type { + EditorCompletionCancellationToken, + EditorModel, + EditorPosition, +} from './common'; +import type { + Endpoint, + ExternalContext, + Filename, + Technologies, +} from './editor-props'; export type CompletionModel = 'llama'; @@ -49,3 +59,15 @@ export interface ContextualFilterContext { }; prefix?: string; } + +export interface FetchCompletionItemParams { + code: string; + language: string; + endpoint: Endpoint; + filename: Filename | undefined; + technologies: Technologies | undefined; + externalContext: ExternalContext | undefined; + model: EditorModel; + position: EditorPosition; + token: EditorCompletionCancellationToken; +} diff --git a/src/types/copilot.ts b/src/types/copilot.ts index 7e969f6b..a4732acf 100644 --- a/src/types/copilot.ts +++ b/src/types/copilot.ts @@ -1,4 +1,4 @@ -import {CompletionModel} from './completion'; +import type {CompletionModel} from './completion'; export interface CopilotOptions { model: CompletionModel | undefined; diff --git a/src/types/editor-props.ts b/src/types/editor-props.ts index f6a8cb57..071d451c 100644 --- a/src/types/editor-props.ts +++ b/src/types/editor-props.ts @@ -1,6 +1,6 @@ import type {EditorProps as MonacoEditorProps} from '@monaco-editor/react'; -import {EditorBuiltInTheme} from './common'; +import type {EditorBuiltInTheme} from './common'; /** * Themes available for the Monacopilot diff --git a/src/utils/completion/common.ts b/src/utils/completion/common.ts index bf696408..a93a058e 100644 --- a/src/utils/completion/common.ts +++ b/src/utils/completion/common.ts @@ -1,4 +1,4 @@ -import {EditorPosition} from '../../types/common'; +import type {EditorPosition} from '../../types/common'; export const getCharAtPosition = (line: string, position: number) => line[position] || ''; diff --git a/src/utils/completion/syntax-parser.ts b/src/utils/completion/syntax-parser.ts index 3cb97faf..41e9bbb3 100644 --- a/src/utils/completion/syntax-parser.ts +++ b/src/utils/completion/syntax-parser.ts @@ -1,5 +1,5 @@ -import {EditorModel, EditorPosition} from '../../types/common'; -import {CompletionMode} from '../../types/completion'; +import type {EditorModel, EditorPosition} from '../../types/common'; +import type {CompletionMode} from '../../types/completion'; import {getCharAtPosition} from './common'; export const isAfterCursorWhitespace = ( diff --git a/src/utils/completion/validate-completion.ts b/src/utils/completion/validate-completion.ts index e48c7a77..32dac61e 100644 --- a/src/utils/completion/validate-completion.ts +++ b/src/utils/completion/validate-completion.ts @@ -1,6 +1,6 @@ import {CONTEXTUAL_FILTER_ACCEPT_THRESHOLD} from '../../constants/contextual-filter'; import {getContextualFilterScore} from '../../helpers/contextual-filter'; -import {EditorModel, EditorPosition} from '../../types/common'; +import type {EditorModel, EditorPosition} from '../../types/common'; import { getCodeBeforeAndAfterCursor, isAfterCursorWhitespace,