diff --git a/actions-languageserver/src/index.ts b/actions-languageserver/src/index.ts index e4ae531..c823c83 100644 --- a/actions-languageserver/src/index.ts +++ b/actions-languageserver/src/index.ts @@ -1,7 +1,26 @@ -import {createConnection} from "vscode-languageserver/node"; +import {Connection} from "vscode-languageserver"; +import { + BrowserMessageReader, + BrowserMessageWriter, + createConnection as createBrowserConnection +} from "vscode-languageserver/browser"; +import {createConnection as createNodeConnection} from "vscode-languageserver/node"; import {initConnection} from "./connection"; -// By default create node connection -const connection = createConnection(); -initConnection(connection); +/** Helper function determining whether we are executing with node runtime */ +function isNode(): boolean { + return typeof process !== "undefined" && process.versions?.node != null; +} + +function getConnection(): Connection { + if (isNode()) { + return createNodeConnection(); + } else { + const messageReader = new BrowserMessageReader(self); + const messageWriter = new BrowserMessageWriter(self); + return createBrowserConnection(messageReader, messageWriter); + } +} + +initConnection(getConnection()); diff --git a/actions-languageserver/tsconfig.json b/actions-languageserver/tsconfig.json index 93b16aa..d2faef8 100644 --- a/actions-languageserver/tsconfig.json +++ b/actions-languageserver/tsconfig.json @@ -7,7 +7,8 @@ "forceConsistentCasingInFileNames": true, "sourceMap": true, "strict": true, - "moduleResolution": "node" + "moduleResolution": "node", + "lib": ["es6", "webworker"] }, "watchOptions": { "watchFile": "useFsEvents", diff --git a/browser-playground/src/service-worker/service-worker.ts b/browser-playground/src/service-worker/service-worker.ts index 202ce2d..5cb35c1 100644 --- a/browser-playground/src/service-worker/service-worker.ts +++ b/browser-playground/src/service-worker/service-worker.ts @@ -1,10 +1 @@ -import {BrowserMessageReader, BrowserMessageWriter, createConnection} from "vscode-languageserver/browser.js"; - -import {initConnection} from "@github/actions-languageserver/connection"; - -const messageReader = new BrowserMessageReader(self); -const messageWriter = new BrowserMessageWriter(self); - -const connection = createConnection(messageReader, messageWriter); - -initConnection(connection); +import "@github/actions-languageserver";