@wranggle/storage-remote

Relay storage methods to a different window/process using @wranggle/rpc

Usage no npm install needed!

<script type="module">
  import wranggleStorageRemote from 'https://cdn.skypack.dev/@wranggle/storage-remote';
</script>

README

Remote Store

This package contains two classes:

  • RemoteRelayAdapter is a persistence adapter, letting you use WranggleStorage in a window/process different from the one actually storing your data. It behaves like normal, transparently sending data requests over @wranggle/rpc to a different window/process, the one that has the actual store.

  • RpcStorageListener listens for and serves requests sent by another window/process.

RemoteRelayAdapter

RemoteRelayAdapter is a WranggleStorage persistence adapter. It is not bundled in the @wranggle/storage-node or @wranggle/storage-web packages, but otherwise behaves like any other store.

You can create it using the remote shortcut:

import { RemoteRelayAdapter } from '@wranggle/storage-remote';
const rpcOpts = {
  channel: 'main-data',
  transport: 'chrome'
}
const store = new WranggleStorage({ remote:  rpcOpts });    

The other window/process must set its corresponding rpcOpts (eg, channel and transport) such that they can communicate over @wranggle/rpc.

RpcStorageListener

RpcStorageListener sets up a @wranggle/rpc request handler to respond to data method requests sent by a RemoteRelayAdapter in a different window/process.

You create it with an existing WranggleStorage instance, plus rpcOpts that can communicate with the other window/process. Eg:

import { RpcStorageListener } from '@wranggle/storage-remote';
const listener = new RpcStorageListener(someExistingStore, {
  channel: 'main-data',
  transport: 'chrome'            
});

Methods

  • stopTransport