Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/0xtheprodev/operational-transformation
- Owner: 0xTheProDev
- License: other
- Created: 2021-07-04T06:04:31.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-17T12:07:55.000Z (5 days ago)
- Last Synced: 2025-01-17T21:34:42.591Z (4 days ago)
- Topics: ace-editor, collaborative-editing, distributed-database, eventual-consistency, firebase, hacktoberfest, monaco-editor, operational-transformation, typescript
- Language: TypeScript
- Homepage: https://ot.js.org
- Size: 2.1 MB
- Stars: 71
- Watchers: 2
- Forks: 11
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# Operational Transformation
---
[![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.