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",