JSON utilities. Libraries for collaborative editing with OT and CRDT approaches. This package consists of multiple self-contained libraries:
json-binary
— JSON serializer and parser withUint8Array
binary data support.json-brand
— TypeScript branded type for JSON.json-clone
— JSON deep cloning methods.json-expression
— implementation of JSON Expression language.json-pack
— Fastest MessagePack codec implementation in JavaScript.json-equal
— Fastest JSON deep equal implementations in JavaScript.- Documentation 🚀
- Reference 🤖
json-patch
— Implementation of JSON Patch+ mutation operations.json-patch-ot
— Implementation of Operational Transformations for JSON Patch+ operations.- Documentation 🚀
- Reference 🤖
json-crdt
— CRDT implementation for JSON type.json-crdt-patch
— JSON type CRDT operation specification and implementation.- Documentation 🚀
- Specification 🤔
- Binary snapshot encoding 🧬
- Reference 🤖
json-rx
— Implementation of JSON-Rx protocol for server and browser.- Documentation 🚀
- Specification 🤔
- Reference 🤖
binary-rx
— Implementation of Binary-Rx protocol (a binary version of JSON-Rx).- Documentation 🚀
- Specification 🤔
- Reference 🤖
json-pointer
— utilities for locating data in a JSON document using JSON Pointer.json-cli
— CLI utilities and functional testing suites.json-random
— generate random JSON value.json-size
— calculate the size of serialized JSON object.json-type
— JSON schema builder.json-type-serializer
— fastjson-type
JSON and MessagePack serializer code generators.json-type-validator
— fastjson-type
schema validator.util
—base64
— fast isomorphic configurable Base64 encoder.
To reduce your browser-side bundle size import directly from the library you use.
import from 'json-joy/{lib,es2020,es6,esm}/<library>';
For example:
import {deepEqual} from 'json-joy/lib/json-equal`;
All libraries can be imported from one of the below folders:
lib
— ES5 compiled CommonJS code.es2020
— ES2020 compiled CommonJS code.es6
— ES6 compiled CommonJS code.esm
— latest TypeScript compiler supported EcmaScript modules code.
Run all tests locally:
yarn build
yarn test:all
Read more about testing in Testing README.
Use Angular-type semantic commit messages
for commit messages. Those are used in determining the version bump of the
library for the next release. Optional, you can use git-cz
for that:
npx git-cz