* 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>
46 lines
1.3 KiB
TypeScript
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 || '')
|
|
}
|
|
}
|
|
}
|