From 6446de02868c5790108bd539e5c6acf4482d291b Mon Sep 17 00:00:00 2001 From: matt rice Date: Fri, 24 Oct 2025 06:18:00 -0700 Subject: [PATCH] Attempt to build unified extension.ts for browser/node --- wasm-language-server/bin/esbuild.js | 10 ++++++++-- wasm-language-server/client/bin/esbuild.js | 10 ++++++++-- wasm-language-server/client/package.json | 6 +++--- wasm-language-server/client/src/extension.ts | 13 +++++++++++-- wasm-language-server/package.json | 2 +- 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/wasm-language-server/bin/esbuild.js b/wasm-language-server/bin/esbuild.js index 6964069541..3f6982e3d5 100644 --- a/wasm-language-server/bin/esbuild.js +++ b/wasm-language-server/bin/esbuild.js @@ -16,6 +16,9 @@ const sharedWebOptions = { target: 'es2020', platform: 'browser', sourcemap: true, + define: { + 'IS_DESKTOP': 'false' + } }; /** @type BuildOptions */ @@ -33,12 +36,15 @@ const sharedDesktopOptions = { target: 'es2020', platform: 'node', sourcemap: true, + define: { + 'IS_DESKTOP': 'true' + } }; /** @type BuildOptions */ const desktopOptions = { entryPoints: ['client/src/extension.ts'], - outfile: 'client/dist/desktop/extension.js', + outfile: 'client/out/extension.js', format: 'cjs', ...sharedDesktopOptions, }; @@ -68,4 +74,4 @@ createContexts().then(contexts => { } }).then(() => { return undefined; }).catch(console.error); } -}).catch(console.error); \ No newline at end of file +}).catch(console.error); diff --git a/wasm-language-server/client/bin/esbuild.js b/wasm-language-server/client/bin/esbuild.js index 28035cbd42..c6613f6f58 100644 --- a/wasm-language-server/client/bin/esbuild.js +++ b/wasm-language-server/client/bin/esbuild.js @@ -16,6 +16,9 @@ const sharedWebOptions = { target: 'es2020', platform: 'browser', sourcemap: true, + define: { + 'IS_DESKTOP': 'false' + } }; /** @type BuildOptions */ @@ -33,12 +36,15 @@ const sharedDesktopOptions = { target: 'es2020', platform: 'node', sourcemap: true, + define: { + 'IS_DESKTOP': 'true' + } }; /** @type BuildOptions */ const desktopOptions = { entryPoints: ['src/extension.ts'], - outfile: 'dist/desktop/extension.js', + outfile: 'out/extension.js', format: 'cjs', ...sharedDesktopOptions, }; @@ -68,4 +74,4 @@ createContexts().then(contexts => { } }).then(() => { return undefined; }).catch(console.error); } -}).catch(console.error); \ No newline at end of file +}).catch(console.error); diff --git a/wasm-language-server/client/package.json b/wasm-language-server/client/package.json index 24ae3f1e04..de52a6c70d 100644 --- a/wasm-language-server/client/package.json +++ b/wasm-language-server/client/package.json @@ -29,9 +29,9 @@ "@types/node": "^22" }, "scripts": { - "compile": "tsc -b", + "compile": "npm run esbuild", "watch": "tsc -b -w", "lint": "eslint", - "esbuild": "^0.25.0" + "esbuild": "node ./bin/esbuild.js" } -} \ No newline at end of file +} diff --git a/wasm-language-server/client/src/extension.ts b/wasm-language-server/client/src/extension.ts index 7bd3d76b6e..914a8f8694 100644 --- a/wasm-language-server/client/src/extension.ts +++ b/wasm-language-server/client/src/extension.ts @@ -3,8 +3,17 @@ * Licensed under the MIT License. See License.txt in the project root for license information. * ------------------------------------------------------------------------------------------ */ +// declared in esbuild.js +declare const IS_DESKTOP: boolean; + import { ExtensionContext, Uri, window, workspace, commands } from 'vscode'; -import { LanguageClient, LanguageClientOptions, ServerOptions, RequestType } from 'vscode-languageclient/node'; +import { LanguageClient, ServerOptions, RequestType, LanguageClientOptions } from 'vscode-languageclient'; +if (IS_DESKTOP) { + require('vscode-languageclient/node'); +} else { + require('vscode-languageclient/browser'); +} + import { Wasm, ProcessOptions } from '@vscode/wasm-wasi/v1'; import { createStdioOptions, createUriConverters, startServer } from '@vscode/wasm-wasi-lsp'; @@ -63,4 +72,4 @@ export async function activate(context: ExtensionContext) { export function deactivate() { return client.stop(); -} \ No newline at end of file +} diff --git a/wasm-language-server/package.json b/wasm-language-server/package.json index d9d45a76e2..e06b212005 100644 --- a/wasm-language-server/package.json +++ b/wasm-language-server/package.json @@ -54,4 +54,4 @@ "esbuild": "node ./bin/esbuild.js", "serve": "serve --cors -l 5000 --ssl-cert $HOME/certs/localhost.pem --ssl-key $HOME/certs/localhost-key.pem" } -} \ No newline at end of file +}