typed-json-rpc

Strongly typed JSON-RPC module.

Usage

import { RPC, VSCodeIO } from 'https://deno.land/x/typed_json_rpc/mod.ts'

type TextDocumentDefinitionRequest = {
  method: 'textDocument/definition';
  params: vscode.TextDocumentPositionParams;
  result: vscode.Location | vscode.Location[];
};

const rpc = new RPC<{
  IncomingRequest: TextDocumentDefinitionRequest;
  OutgoingRequest: never;
  IncomingNotification: never;
  OutgoingNotification: never;
}>({
  io: new VSCodeIO({
    reader: Deno.stdin,
    writer: Deno.stdout,
  })
});

rpc.onRequest('textDocument/definition', params => {
  return await findDefinition(params);
});

rpc.start();