Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

automerge-simple-connection

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

automerge-simple-connection

This is a simpler, asynchronous, version of Automerge's [Connection](https://github.com/automerge/automerge/blob/master/src/connection.js) protocol, which is used to send and receive changes to Automerge documents.

  • 1.0.0
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
2
increased by100%
Maintainers
1
Weekly downloads
 
Created
Source

Automerge Simple Connection

This is a simpler, asynchronous, version of Automerge's Connection protocol, which is used to send and receive changes to Automerge documents.

Unlike the original Automerge Connection, this connection:

  • Supports asynchronous getting and setting documents however you want
  • Doesn't use hard-to-debug handlers
  • Is written in Typescript

Plus, this connector is interoperable with a peer who's using the original.

Install

npm install --save automerge-simple-connection

Usage

Setting up a Doc Store

Async Automerge Connection assumes you're implementing an AsyncDocStore class that satisfies this interface:

interface AsyncDocStore {
  getDoc<T>(docId: string): Promise<Doc<T>>;
  setDoc<T>(docId: string, doc: Doc<T>): Promise<Doc<T>>;
}

An in-memory example of such a store might just be:

import { AsyncDocStore } from "automerge-simple-connection";

class MyDocStore extends AsyncDocStore {
  _docs = {};

  getDoc(docId) {
    return _docs[docId];
  }

  setDoc(docId, doc) {
    _docs[docId] = doc;
    return doc;
  }
}

Setting up a sendMsg function

Then, you'll create a sendMsg function that takes a message and sends it over the network however you want. For example:

function sendMsg(msg) {
  myNetwork.send(JSON.stringify(msg));
}

Creating a connection

Finally, you'd create a Connection class and pass both your AsyncDocStore and your sendMsg function in.

import { Connection } from "automerge-simple-connection";

const connection = new Connection(new MyDocStore(), sendMsg);

Broadcasting changes

To let other clients know a document changed, just call the docChanged function:

connection.docChanged(myDocId, myDoc);

Why?

The goal of this library is to decouple Automerge Connection from DocSet, so you don't have to load every document into memory. That makes it easier to run a peer that offloads documents into a cache or database.

Because it doesn't use DocSets, it also doesn't use the handler pattern the original Automerge Connection uses. That makes debugging a lot easier since there's less "magic" about when things are sent across the wire.

FAQs

Package last updated on 24 Dec 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc