Skip to content
vic

crcn/mesh.js

utility library for async iterable iterators

crcn/mesh.js.json
{
"createdAt": "2015-03-25T23:26:47Z",
"defaultBranch": "master",
"description": "utility library for async iterable iterators",
"fullName": "crcn/mesh.js",
"homepage": "http://mesh.js.org",
"language": "JavaScript",
"name": "mesh.js",
"pushedAt": "2018-12-22T16:28:21Z",
"stargazersCount": 1004,
"topics": [],
"updatedAt": "2025-07-02T23:32:37Z",
"url": "https://github.com/crcn/mesh.js"
}

⚠️ This library is no longer maintained, and should not be used in production applications.

Section titled “⚠️ This library is no longer maintained, and should not be used in production applications.”

Build Status Coverage Status Join the chat at https://gitter.im/crcn/mesh.js

Mesh is a utility library for async iterable iterators.

This library was originally created to handle complex data flows, and unify how applications communicate internally and externally. It also serves as a single channel for all communication which makes it more easy to control & reason about how your application is passing around data asynchronously.

Mesh provides a set of higher order functions that you can use to build your data flows out. Here’s an example of that:

import { when, wrapAsyncIterableIterator, fallback } from "mesh";
import {
DS_FIND,
DS_INSERT,
DS_REMOVE,
DS_UPDATE,
dataStore,
DSFindMessage,
whenCollection,
DSInsertMessage,
DSRemoveMessage,
DSUpdateMessage,
} from "mesh-ds";
const insertTodoItem = (message: DSInsertMessage) => (
wrapAsnycIterableIterator(fetch('/api/todos', {
method: 'POST',
body: message.data
}))
);
const insert = fallback(
whenCollection('todos', insertTodoItem),
// more collections below
// whenCollection('users', insertUser),
// whenCollection('items', insertItem),
);
const dsDispatch = dataStore({
[DS_INSERT] : insert,
// other operations - similar code to insert
//[DS_REMOVE] : remove,
//[DS_UPDATE] : update,
//[DS_FIND] : find
});

NPM: npm install mesh
Bower: bower install mesh

  • Documentation
  • [Examples]!(./examples)
  • Modules
    • Data Store Adapters
      • [in-memory data store bus]!(./packages/mesh-memory-ds-bus)
      • [mongodb bus]!(./packages/mesh-mongo-ds-bus)
      • [lokijs bus]!(./packages/mesh-loki-ds-bus) - lokijs in-memory adapter
      • [local storate bus]!(./packages/mesh-local-storage-ds-bus) - local storage DS adapter
      • [array bus]!(./packages/mesh-collection-bus) - persist DS operations to an array collection
    • Realtime Protocol Adapters
      • [socket.io bus]!(./packages/mesh-socket-io-bus)
      • [webrtc bus]!(./packages/mesh-webrtc-bus)
    • Other Adapters
      • [http bus]!(./packages/mesh-http-bus) - HTTP request bus
    • Other Busses
      • [upsert ds action]!(./packages/mesh-webrtc-bus) - adds upsert (insert/update) action for DS busses
      • [tailable bus]!(./packages/mesh-tailable-bus) - adds ability to listen for all executed operations
      • [remote protocol adapter bus]!(./packages/mesh-remote-bus) - adapter bus for any realtime protocol
  • Discuss
  • Companies using Mesh
  • Articles