From 73f37ddb0381f677a10cc2ac775892b05a77ebcc Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sun, 13 Aug 2023 13:30:45 +0200 Subject: [PATCH] feat: add lsp to bun and remove experimental status --- frontend/src/lib/components/Editor.svelte | 54 +++++++++++++++---- frontend/src/lib/components/EditorBar.svelte | 3 ++ .../src/lib/components/ScriptBuilder.svelte | 29 +++------- .../src/lib/components/TestConnection.svelte | 14 +---- .../src/lib/components/icons/Mysql.svelte | 1 + frontend/src/lib/script_helpers.ts | 3 +- lsp/Dockerfile | 5 ++ lsp/pyls_launcher.py | 5 ++ 8 files changed, 67 insertions(+), 47 deletions(-) diff --git a/frontend/src/lib/components/Editor.svelte b/frontend/src/lib/components/Editor.svelte index b6740949a1..8503aa2dfc 100644 --- a/frontend/src/lib/components/Editor.svelte +++ b/frontend/src/lib/components/Editor.svelte @@ -26,7 +26,7 @@ import 'monaco-editor/esm/vs/language/typescript/monaco.contribution' import { MonacoLanguageClient, initServices } from 'monaco-languageclient' import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc' - import { CloseAction, ErrorAction, RequestType } from 'vscode-languageclient' + import { CloseAction, ErrorAction, RequestType, NotificationType } from 'vscode-languageclient' import { MonacoBinding } from 'y-monaco' import { dbSchema } from '$lib/stores' @@ -61,7 +61,8 @@ ruff: false, deno: false, go: false, - shellcheck: false + shellcheck: false, + bun: false } export let shouldBindKey: boolean = true export let fixedOverflowWidgets = true @@ -70,13 +71,11 @@ export let awareness: any | undefined = undefined export let folding = false - $: { - languages.typescript.typescriptDefaults.setModeConfiguration({ - completionItems: !deno, - definitions: !deno, - hovers: !deno - }) - } + languages.typescript.typescriptDefaults.setModeConfiguration({ + completionItems: false, + definitions: false, + hovers: false + }) const rHash = randomHash() $: filePath = computePath(path) @@ -103,7 +102,7 @@ let graphqlService: MonacoGraphQLAPI | undefined = undefined const uri = - lang == 'typescript' + lang == 'typescript' && deno ? `file:///${filePath ?? rHash}.${langToExt(lang)}` : `file:///tmp/monaco/${randomHash()}.${langToExt(lang)}` @@ -368,7 +367,13 @@ isTrusted: true }, workspaceFolder: - name != 'deno' + name == 'bun' + ? { + uri: vscode.Uri.parse('file:///tmp/monaco/'), + name: 'windmill', + index: 0 + } + : name != 'deno' ? { uri: vscode.Uri.parse(uri), name: 'windmill', @@ -473,6 +478,17 @@ } catch (err) { console.error(err) } + } else if (name == 'bun') { + await languageClient.sendNotification( + new NotificationType('workspace/didChangeConfiguration'), + { + settings: { + diagnostics: { + ignoredCodes: [2307] + } + } + } + ) } websocketAlive[name] = true @@ -552,6 +568,22 @@ ] } ) + } else if (lang === 'typescript' && !deno) { + await connectToLanguageServer( + `${wsProtocol}://${window.location.host}/ws/bun`, + 'bun', + {}, + (params, token, next) => { + return [ + { + diagnostics: { + ignoredCodes: [2307] + }, + enable: true + } + ] + } + ) } else if (lang === 'python') { await connectToLanguageServer( `${wsProtocol}://${window.location.host}/ws/pyright`, diff --git a/frontend/src/lib/components/EditorBar.svelte b/frontend/src/lib/components/EditorBar.svelte index f16e3e72a5..e5baf09355 100644 --- a/frontend/src/lib/components/EditorBar.svelte +++ b/frontend/src/lib/components/EditorBar.svelte @@ -51,6 +51,7 @@ deno: boolean go: boolean shellcheck: boolean + bun: false } export let iconOnly: boolean = false export let validCode: boolean = true @@ -495,6 +496,8 @@ {#if lang == 'deno'} (Deno) + {:else if lang == 'bun'} + (Bun) {:else if lang == 'go'} (Go) {:else if lang == 'python3'} diff --git a/frontend/src/lib/components/ScriptBuilder.svelte b/frontend/src/lib/components/ScriptBuilder.svelte index 8037e13565..ece39a01d7 100644 --- a/frontend/src/lib/components/ScriptBuilder.svelte +++ b/frontend/src/lib/components/ScriptBuilder.svelte @@ -61,21 +61,23 @@ const langs: [string, SupportedLanguage][] = [ ['TypeScript (Deno)', Script.language.DENO], - ['Python', Script.language.PYTHON3] + ['Python', Script.language.PYTHON3], + ['TypeScript (Bun)', Script.language.BUN] ] if (SCRIPT_SHOW_BASH) { langs.push(['Bash', Script.language.BASH]) } + if (SCRIPT_SHOW_GO) { + langs.push(['Go', Script.language.GO]) + } + langs.pu langs.push(['PostgreSQL', Script.language.POSTGRESQL]) langs.push(['MySQL', Script.language.MYSQL]) langs.push(['BigQuery', Script.language.BIGQUERY]) langs.push(['Snowflake', Script.language.SNOWFLAKE]) langs.push(['GraphQL', Script.language.GRAPHQL]) langs.push(['PowerShell', Script.language.POWERSHELL]) - if (SCRIPT_SHOW_GO) { - langs.push(['Go', Script.language.GO]) - } - langs.push(['REST', Script.language.NATIVETS]) + sh(['REST', Script.language.NATIVETS]) const scriptKindOptions: { value: Script.kind title: string @@ -366,23 +368,6 @@ > Docker -