blob: 086a9067f57466e3d7ec21eb59eb349f54a18c02 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { WebSocketServer } from "ws";
import { Server } from 'node:http';
import express from 'express';
import { getLocalDirectory, LanguageServerRunConfig, upgradeWsServer } from './server-commons.ts';
/** LSP server runner */
export const runLanguageServer = (
languageServerRunConfig: LanguageServerRunConfig
) => {
process.on('uncaughtException', err => {
console.error('Uncaught Exception: ', err.toString());
if (err.stack !== undefined) {
console.error(err.stack);
}
});
// create the express application
const app = express();
// server the static content, i.e. index.html
const dir = getLocalDirectory(import.meta.url);
app.use(express.static(dir));
// start the http server
const httpServer: Server = app.listen(languageServerRunConfig.serverPort);
const wss = new WebSocketServer(languageServerRunConfig.wsServerOptions);
// create the web socket
upgradeWsServer(languageServerRunConfig, {
server: httpServer,
wss
});
};