Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/orbitdb-archive/crdts
A library of Conflict-Free Replicated Data Types for JavaScript
https://github.com/orbitdb-archive/crdts
conflict-resolution crdt crdts data-structures distributed p2p
Last synced: about 1 month ago
JSON representation
A library of Conflict-Free Replicated Data Types for JavaScript
- Host: GitHub
- URL: https://github.com/orbitdb-archive/crdts
- Owner: orbitdb-archive
- License: mit
- Archived: true
- Created: 2016-04-20T16:41:11.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2023-03-10T01:46:30.000Z (almost 2 years ago)
- Last Synced: 2024-11-14T08:58:26.901Z (about 1 month ago)
- Topics: conflict-resolution, crdt, crdts, data-structures, distributed, p2p
- Language: JavaScript
- Homepage:
- Size: 166 KB
- Stars: 214
- Watchers: 11
- Forks: 16
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Authors: AUTHORS
Awesome Lists containing this project
- awesome-list - crdts - Free Replicated Data Types for JavaScript | orbitdb | 157 | (JavaScript)
README
# CRDTs
[![npm version](https://badge.fury.io/js/crdts.svg)](https://www.npmjs.com/package/crdts)
[![CircleCI](https://circleci.com/gh/orbitdb/crdts.svg?style=shield)](https://circleci.com/gh/orbitdb/crdts)
[![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg)](https://gitter.im/orbitdb/Lobby) [![Matrix](https://img.shields.io/badge/matrix-%23orbitdb%3Apermaweb.io-blue.svg)](https://riot.permaweb.io/#/room/#orbitdb:permaweb.io)> A library of Conflict-Free Replicated Data Types for JavaScript.
***Work In Progress***
This module provides a set of Conflict-Free Replicated Data Types for your JavaScript programs. All CRDTs in this library, except G-Counter, are currently operation-based.
CRDTs implemented in this module:
- [G-Counter](https://github.com/orbitdb/crdts/blob/master/src/G-Counter.js)
- [PN-Counter](https://github.com/orbitdb/crdts/blob/master/src/PN-Counter.js)
- [G-Set](https://github.com/orbitdb/crdts/blob/master/src/G-Set.js)
- [2P-Set](https://github.com/orbitdb/crdts/blob/master/src/2P-Set.js)
- [OR-Set](https://github.com/orbitdb/crdts/blob/master/src/OR-Set.js)
- [LWW-Set](https://github.com/orbitdb/crdts/blob/master/src/LWW-Set.js)## Install
This module uses [npm](https://www.npmjs.com/) and [node](https://nodejs.org/en/).
To install, run:
```sh
$ npm install crdts
```## Usage
```javascript
import { GCounter, PNCounter, GSet, TwoPSet, ORSet, LWWSet, GSet, ORSet, LWWSet } from 'crdts'
```See the [source code for each CRDT](https://github.com/orbitdb/crdts/blob/master/src) for the APIs and [tests](https://github.com/orbitdb/crdts/blob/master/test/) for usage examples.
## Inheritance
```
+-----------++-----------++----------++---------++------------++------------+
Data Type | OR-Set || LWW-Set || 2P-Set || G-Set || G-Counter || PN-Counter |
+-----------++-----------++----------++---------++------------++------------+
Base Class | CmRDT-Set | -- |
|-----------------------------------------------+---------------------------+
CRDT Type | Operation-Based | State-based |
+-----------------------------------------------+---------------------------+
```## CRDTs Research
To learn more about CRDTs, check out this research:
- ["A comprehensive study of Convergent and Commutative Replicated Data Types"](http://hal.upmc.fr/inria-00555588/document) paper
- [CRDTs on Wikipedia](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type#Known_CRDTs)
- [IPFS's CRDT research group](https://github.com/ipfs/research-CRDT)## Contribute
If you think this could be better, please [open an issue](https://github.com/orbitdb/crdts/issues/new)!
Please note that all interactions in [@OrbitDB](https://github.com/OrbitDB) fall under our [Code of Conduct](CODE_OF_CONDUCT.md).
## License
[MIT](LICENSE) © 2017-2019 Haja Networks Oy