Files
modeling-app/src/editor/plugins/lsp/server.ts
Jess Frazelle 8b2bf00641 More lsp stuff / telemetry-prep (#1694)
* more text document stuff

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* backend for rename and create etc

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates for functions

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* cleanup

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* js future

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* utils

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* cleanup send and sync shit

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* save the client

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* store the users privacy settings

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* updates

Signed-off-by: Jess Frazelle <github@jessfraz.com>

* bump version

Signed-off-by: Jess Frazelle <github@jessfraz.com>

---------

Signed-off-by: Jess Frazelle <github@jessfraz.com>
2024-03-12 13:37:47 -07:00

46 lines
1.3 KiB
TypeScript

import { InitOutput, ServerConfig } from 'wasm-lib/pkg/wasm_lib'
import { FromServer, IntoServer } from './codec'
import { fileSystemManager } from 'lang/std/fileSystemManager'
import { copilotLspRun, initPromise, kclLspRun } from 'lang/wasm'
export default class Server {
readonly initOutput: InitOutput
readonly #intoServer: IntoServer
readonly #fromServer: FromServer
private constructor(
initOutput: InitOutput,
intoServer: IntoServer,
fromServer: FromServer
) {
this.initOutput = initOutput
this.#intoServer = intoServer
this.#fromServer = fromServer
}
static async initialize(
intoServer: IntoServer,
fromServer: FromServer
): Promise<Server> {
const initOutput = await initPromise
const server = new Server(initOutput, intoServer, fromServer)
return server
}
async start(type_: 'kcl' | 'copilot', token?: string): Promise<void> {
const config = new ServerConfig(
this.#intoServer,
this.#fromServer,
fileSystemManager
)
if (type_ === 'copilot') {
if (!token || token === '') {
throw new Error('auth token is required for copilot')
}
await copilotLspRun(config, token)
} else if (type_ === 'kcl') {
await kclLspRun(config, token || '')
}
}
}