0.6.1 • Published 4 years ago
@ceramicnetwork/rpc-window v0.6.1
window RPC
RPC utilities using browser windows
Installation
npm install @ceramicnetwork/rpc-windowUsage
Server
import { createServer } from '@ceramicnetwork/rpc-window'
type Methods = {
foo: { result: string }
}
const methods = { foo: () => 'bar' }
const server = createServer<Methods>('test', methods).subscribe()
// Stop server when done
server.unsubscribe()Client
import { createClient } from '@ceramicnetwork/rpc-window'
type Methods = {
foo: { result: string }
}
// Client is in a frame and the server is listening on the parent window
const client = createClient<Methods>('test', window.parent)
await client.request('foo') // 'bar'Types
ClientOptions
Uses UnwrapObservableOptions from @ceramicnetwork/transport-subject and PostMessageTransportOptions from @ceramicnetwork/transport-postmessage
type ClientOptions = UnwrapObservableOptions & PostMessageTransportOptionsIncomingRequest
Uses RPCMethods, RPCRequest, IncomingMessage from @ceramicnetwork/transport-postmessage and Wrapped from @ceramicnetwork/transport-subject
type IncomingRequest<
Methods extends RPCMethods,
Namespace extends string = string
> = IncomingMessage<Wrapped<RPCRequest<Methods, keyof Methods>, Namespace>>ServerPayload
Uses RPCMethods, HandledPayload from @ceramicnetwork/rpc-postmessage and IncomingRequest
type ServerPayload<Methods extends RPCMethods, Namespace extends string> = HandledPayload<
IncomingRequest<Methods, Namespace>,
Methods,
keyof Methods
>APIs
createServer()
Type parameters
Methods extends RPCMethodsNamespace extends string = string
Arguments
namespace: Namespacemethods: HandlerMethods<IncomingRequest<Methods, Namespace>, Methods>target?: Window = window
Returns Observable<ServerPayload<Methods, Namespace>>
createClient()
Type parameters
Methods extends RPCMethodsNamespace extends string = string
Arguments
namespace: Namespacetarget?: Window = windowoptions?: ClientOptions
Returns RPCClient<Methods>
License
Apache-2.0 OR MIT