Package Exports
- @ceramicnetwork/rpc-postmessage
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@ceramicnetwork/rpc-postmessage) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
postMessage RPC
RPC utilities using postMessage
Installation
npm install @ceramicnetwork/rpc-postmessageUsage
import { serveCrossOrigin } from '@ceramicnetwork/rpc-postmessage'
type Methods = {
foo: { result: string }
}
const server = serveCrossOrigin<Methods>(window, {
allowedOrigin: ['https://foo.bar', 'http://localhost'], // Allow messages from these origins
ownOrigin: 'http://localhost', // Server messages will be sent using this origin
methods: {
foo: () => 'bar',
},
})
// Stop server when done
server.unsubscribe()Types
ErrorPayload
type ErrorPayload<Message, Error = any> = {
type: 'error'
message: Message
error: Error
}RequestPayload
Uses RPCMethods and RPCRequest
type RequestPayload<Message, Methods extends RPCMethods, K extends keyof Methods> = {
type: 'request'
message: Message
request: RPCRequest<Methods, K>
}HandledPayload
Uses RPCMethods, RPCRequest and RPCResponse
type HandledPayload<Message, Methods extends RPCMethods, K extends keyof Methods> = {
type: 'handled'
message: Message
request: RPCRequest<Methods, K>
response: RPCResponse<Methods, K> | null
}ResponsePayload
Uses RPCMethods, RPCRequest and RPCResponse
type ResponsePayload<Message, Methods extends RPCMethods, K extends keyof Methods> = {
type: 'response'
message: Message
request: RPCRequest<Methods, K>
response: RPCResponse<Methods, K>
}OutPayload
Uses RPCMethods, RPCRequest and RPCResponse
type OutPayload<Message, Methods extends RPCMethods, K extends keyof Methods, Error = any> =
| ErrorPayload<Message, Error>
| HandledPayload<Message, Methods, K>
| ResponsePayload<Message, Methods, K>ServerOptions
Uses RPCMethods, HandlerMethods and HandlerOptions
type type ServerOptions<Context, Methods extends RPCMethods> = HandlerOptions<
Context,
Methods
> & {
target: PostMessageTarget
methods: HandlerMethods<Context, Methods>
}CrossOriginServerOptions
export type CrossOriginServerOptions<
Methods extends RPCMethods,
Namespace extends string = string,
Message = IncomingMessage<Wrapped<RPCRequest<Methods, keyof Methods>, Namespace>>
> = ServerOptions<Message, Methods> & {
namespace: Namespace
filter?: string | Array<string> | MessageFilter
sendResponse?: (payload: ResponsePayload<Message, Methods, keyof Methods>) => void
}WrappedClientTransport
type WrappedClientTransport<
Methods extends RPCMethods,
Namespace extends string,
Incoming = IncomingMessage<Wrapped<RPCResponse<Methods, keyof Methods>, Namespace>>,
Outgoing = Wrapped<RPCRequest<Methods, keyof Methods>, Namespace>
> = TransportSubject<Incoming, Outgoing>APIs
serveSameOrigin()
Receives requests and sends responses on the provided target
Type parameters
Arguments
Returns Subscription
createCrossOriginRequestHandlerOperator()
Type parameters
Methods extends RPCMethodsNamespace extends string = stringMessage = IncomingMessage<Wrapped<RPCRequest<Methods, keyof Methods>, Namespace>>
Arguments
methods: HandlerMethods<Message, Methods>namespace: Namespaceoptions?: HandlerOptions<Message, Methods> = {}
Returns OperatorFunction<Message, OutPayload<Message, Methods, keyof Methods>>
createCrossOriginServer()
Type parameters
Methods extends RPCMethodsNamespace extends string = stringRequest = Wrapped<RPCRequest<Methods, keyof Methods>, Namespace>
Arguments
Returns Observable<OutPayload<IncomingMessage<Request>, Methods, keyof Methods>>
createCrossOriginSendRequest()
Type parameters
Methods extends RPCMethodsNamespace extends string = string
Arguments
transport: WrappedClientTransport<Methods, Namespace>namespace: Namespaceoptions?: UnwrapObservableOptions
Returns SendRequestFunc<Methods>
createCrossOriginClient()
Type parameters
Methods extends RPCMethodsNamespace extends string = string
Arguments
transport: WrappedClientTransport<Methods, Namespace>namespace: Namespaceoptions?: UnwrapObservableOptions
Returns RPCClient<Methods>
License
Apache-2.0 OR MIT