Skip to content

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

License

Notifications You must be signed in to change notification settings

0xTheProDev/Operational-Transformation

Folders and files

NameName
Last commit message
Last commit date
Nov 20, 2024
Mar 1, 2024
Apr 7, 2025
Apr 7, 2025
Apr 7, 2025
Aug 15, 2021
Sep 27, 2021
Mar 1, 2024
Jan 1, 2024
Dec 29, 2021
Feb 22, 2024
Mar 9, 2024
Oct 10, 2024
Jan 13, 2023
Jan 13, 2023
Sep 18, 2021
Jul 24, 2021
Jan 1, 2024
Feb 22, 2024
Jan 1, 2024
Jul 14, 2024
Apr 11, 2025
Apr 11, 2025
Jan 1, 2024
Sep 18, 2021
Sep 16, 2021
Dec 29, 2021

Repository files navigation

Operational Transformation

@otjs


Build Tests Deployment Code Quality

Sponsor Version Built With Tested With Code Coverage Typed With Styled With License Open Issues Closed Issues Open Pulls Closed Pulls Contributors Activity

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 to manage workspaces and publishing of individual packages, where as Pnpm is used as package manager to symlink and install External Dependencies.

  • To install using Pnpm (recommended):

    pnpm install -r
  • To install using Lerna:

    lerna bootstrap

Testing

We are using Jest 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) is used for coverage reporting.

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

    pnpm test
  • To run unit tests in CI environment, run:

    pnpm test:ci
  • To run integration tests in CI environment, run:

    pnpm test:firebase
    pnpm test:monaco
  • To merge all the individual code coverage report and generate final test coverage report, run:

    pnpm run coverage
  • To convert generated final coverage report into more human readable form (such as lcov), run:

    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 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 to track progress over Code Coverage and CodeQL for Code Quality Analysis.

Reporting a Bug

Head on to Discussion section to report a bug or to ask for any feature. Use this template 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 for more details.

Contributing

See Contributing Guidelines.

License

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

The Pro Dev