@webhare/rpc

0.507.1 • Public • Published

WebHare RPC client

Webhare RPC services are built to integrate into WebHare front- and backend apps

@webhare/rpc library exposes a rpc function which takes a service name (which is resolved to a URL using WebHare's service naming conventions) or the full URL to the typed RPC service to invoke. You can then directly invoke any API offered by the service direcly on the returned client object. Internally the service is implemented as a Proxy which will construct a function to call the named remote API for any property requested.

The client can be configured using the options parameter to rpc or per call by using withOptions.

To execute RPC calls, construct the service using the type of the API you will be invoking. This call is automatically typesafe:

import { rpc } from "@webhare/rpc";
const result = await rpc("mymodule:myapi").myfunction(param1, param2);

If you can't use the autogenerated types you can explicitly specify the shape of the API you'e calling as a type parameter to rpc:

import { rpc } from "@webhare/rpc";
import type { testAPI } from '@mod-webhare_testsuite/js/rpcservice';

const client = rpc<typeof testAPI>("mymodule:myapi");
const result = await client.myfunction(param1, param2);

You can pass options such as debug and signal (for abort) as the options parameter to rpc, but you can also change these for just one call:

const client = rpc("mymodule:myapi", {timeout: 500});
let result2 = await client.withOptions({debug: true}).myfunction(param1, param2);

The actual service name (mymodule:myapi) is determinated by the backend developer. See https://www.webhare.dev/manuals/typescript/jsonrpc/ for more information on setting services.

Using rpc-client outside WebHare

Install: npm install @webhare/rpc

And use it. JavaScript:

const { rpc } = require ("@webhare/rpc");

async function main() {
  const client = rpc("https://your.webhare.dev/.wh/rpc/webhare_testsuite/testapi/");
  console.log(await client.echo(1, 2, 3));
}
main();

or TypeScript:

import { rpc } from "@webhare/rpc";

const client = rpc<any>("https://webhare.moe.sf.webhare.dev/.wh/rpc/webhare_testsuite/testapi/");
console.log(await client.echo(1, 2, 3));

(But ideally you would then also supply a type definition for rpc to get full TypeScript support)

Publication source

The source code for @webhare/rpc is part of the WebHare Platform

Readme

Keywords

Package Sidebar

Install

npm i @webhare/rpc

Weekly Downloads

3

Version

0.507.1

License

MIT

Unpacked Size

14.8 kB

Total Files

4

Last publish

Collaborators

  • unilynx
  • webharerob
  • webharebv
  • krisbreuker