Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/0xtheprodev/operational-transformation

A collection of Algorithms to Synchronise changes across multiple clients using Operational Transformation
https://github.com/0xtheprodev/operational-transformation

ace-editor collaborative-editing distributed-database eventual-consistency firebase hacktoberfest monaco-editor operational-transformation typescript

Last synced: 4 days ago
JSON representation

A collection of Algorithms to Synchronise changes across multiple clients using Operational Transformation

Awesome Lists containing this project

README

        

# Operational Transformation



@otjs

---

[![Build](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/build.yml/badge.svg)](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/build.yml)
[![Tests](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/tests.yml/badge.svg)](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/tests.yml)
[![Deployment](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/deploy.yml/badge.svg?branch=v0.2.2)](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/deploy.yml)
[![Code Quality](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/quality.yml/badge.svg)](https://github.com/0xTheProDev/Operational-Transformation/security/code-scanning)

[![Sponsor](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#white)](https://github.com/sponsors/0xTheProDev)
[![Version](https://img.shields.io/github/lerna-json/v/0xTheProDev/Operational-Transformation?style=for-the-badge)](https://lerna.js.org)
[![Built With](https://img.shields.io/badge/built%20with-webpack-green?style=for-the-badge)](https://webpack.js.org)
[![Tested With](https://img.shields.io/badge/tested%20with-jest-yellowgreen?style=for-the-badge)](https://jestjs.io)
[![Code Coverage](https://img.shields.io/codecov/c/github/0xTheProDev/Operational-Transformation?style=for-the-badge&token=R0T5YH3XX3)](https://codecov.io/github/0xTheProDev/Operational-Transformation)
[![Typed With](https://img.shields.io/badge/typed%20with-TypeScript-blue?style=for-the-badge)](https://www.typescriptlang.org)
[![Styled With](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=for-the-badge&label=styled%20with)](https://prettier.io)
[![License](https://img.shields.io/badge/license-MIT-yellow?style=for-the-badge)](LICENSE)
[![Open Issues](https://img.shields.io/github/issues-raw/0xTheProDev/Operational-Transformation?style=for-the-badge)](https://github.com/0xTheProDev/Operational-Transformation/issues)
[![Closed Issues](https://img.shields.io/github/issues-closed-raw/0xTheProDev/Operational-Transformation?style=for-the-badge)](https://github.com/0xTheProDev/Operational-Transformation/issues?q=is%3Aissue+is%3Aclosed)
[![Open Pulls](https://img.shields.io/github/issues-pr-raw/0xTheProDev/Operational-Transformation?style=for-the-badge)](https://github.com/0xTheProDev/Operational-Transformation/pulls)
[![Closed Pulls](https://img.shields.io/github/issues-pr-closed-raw/0xTheProDev/Operational-Transformation?style=for-the-badge)](https://github.com/0xTheProDev/Operational-Transformation/pulls?q=is%3Apr+is%3Aclosed)
[![Contributors](https://img.shields.io/github/contributors/0xTheProDev/Operational-Transformation?style=for-the-badge)](https://github.com/0xTheProDev/Operational-Transformation/graphs/contributors)
[![Activity](https://img.shields.io/github/last-commit/0xTheProDev/Operational-Transformation?style=for-the-badge&label=most%20recent%20activity)](https://github.com/0xTheProDev/Operational-Transformation/pulse)

## Description

> Collection of Operation Transformation Algorithms and their respective clients to integrate with any existing system.



Package
Version
Downloads
Third-party Dependency




ace





firebase-ace








firebase-monaco








firebase-plaintext





monaco





plaintext


-


plaintext-editor


-


state-machine


-


types
-
-
-


utils
-
-
-

### Deprecated Packages



Package
Version
Downloads




plaintext




plaintext-editor




state-machine



## Installation

This repository uses monorepo architecture for hosting packages. We are using [Lerna](https://lerna.js.org) to manage workspaces and publishing of individual packages, where as [Pnpm](https://pnpm.io) is used as package manager to symlink and install External Dependencies.

- To install using Pnpm _(recommended)_:

```sh
pnpm install -r
```

- To install using Lerna:

```sh
lerna bootstrap
```

## Testing

We are using [Jest](https://jestjs.io) extensively to form our Unit Test Suite as well as Integration Test Suites, along with test environment, stubs and test runner. [Nyc _(formerly known as Istanbul)_](https://istanbul.js.org/) is used for coverage reporting.

- To run all the unit test suites in local dev environment, run the following after dependencies have been installed:

```sh
pnpm test
```

- To run unit tests in CI environment, run:

```sh
pnpm test:ci
```

- To run integration tests in CI environment, run:

```sh
pnpm test:firebase
pnpm test:monaco
```

- To merge all the individual code coverage report and generate final test coverage report, run:

```sh
pnpm run coverage
```

- To convert generated final coverage report into more human readable form _(such as **lcov**)_, run:

```sh
pnpm run coverage:dev
```

### Integration Tests

This package only provides a functional layer on top of your existing dependencies and does not ship any additional bundle. To make sure our implementation and integrations are up-to-date, we have a comprehensive set of Integration Test Suite living in [**tests**](./__tests__) directory.

### Editor Integration

Most of the popular editors and IDEs have extensions to help with Code Coverage details. These tools often read `lcov` reports and not `json` format. So one must convert them into `lcov` using last command described above to make it work with the editor of their choice.

### Metrics and Tracking

We are using [codecov.io](https://about.codecov.io) to track progress over Code Coverage and [CodeQL](https://codeql.github.com) for Code Quality Analysis.

## Reporting a Bug

Head on to [**Discussion**](https://github.com/0xTheProDev/Operational-Transformation/discussions) section to report a bug or to ask for any feature. Use this [template](https://github.com/0xTheProDev/Operational-Transformation/discussions/30) to make it structural and helpful for the maintainer and the contributors. Feel to add your queries about using this library as well under _Q & A_ section of it. Remember, do not create any Issues by yourself, maintainers of this repository will open one if deemed necessary.

## Changelog

See [CHANGELOG](CHANGELOG.md) for more details.

## Contributing

See [Contributing Guidelines](.github/CONTRIBUTING.md).

## License

This project is licensed under the terms of the MIT license, see [LICENSE](LICENSE) for more details.


The Pro Dev