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: 3 months 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 (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-04-01T12:40:09.000Z (3 months ago)
- Last Synced: 2025-04-03T11:07:14.668Z (3 months 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.78 MB
- Stars: 76
- 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
---
[](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/build.yml)
[](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/tests.yml)
[](https://github.com/0xTheProDev/Operational-Transformation/actions/workflows/deploy.yml)
[](https://github.com/0xTheProDev/Operational-Transformation/security/code-scanning)[](https://github.com/sponsors/0xTheProDev)
[](https://lerna.js.org)
[](https://webpack.js.org)
[](https://jestjs.io)
[](https://codecov.io/github/0xTheProDev/Operational-Transformation)
[](https://www.typescriptlang.org)
[](https://prettier.io)
[](LICENSE)
[](https://github.com/0xTheProDev/Operational-Transformation/issues)
[](https://github.com/0xTheProDev/Operational-Transformation/issues?q=is%3Aissue+is%3Aclosed)
[](https://github.com/0xTheProDev/Operational-Transformation/pulls)
[](https://github.com/0xTheProDev/Operational-Transformation/pulls?q=is%3Apr+is%3Aclosed)
[](https://github.com/0xTheProDev/Operational-Transformation/graphs/contributors)
[](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.