3.0.7 • Published 8 days ago

mendoza v3.0.7

Weekly downloads
21,792
License
MIT
Repository
github
Last release
8 days ago

mendoza-js

npm stat npm version gzip size size

Mendoza decoder in TypeScript.

Installation

npm install mendoza

or

pnpm install mendoza

or

yarn add mendoza

Usage

Basic example:

import {applyPatch} from "mendoza"

let left = {…};
let patch = […];
let right = applyPatch(left, patch);

Incremental patcher:

import {incremental} from "mendoza"

const {Value, rebaseValue, wrap, unwrap, getType, applyPatch} = incremental

// Create an empty initial version:
const ROOT = wrap(null, null);

// Input of patches:
let patches = […];

// `origin` can be whatever you want to identify where a change comes from:
let origin = 0;

// Reference to the latest version:
let value = ROOT;

// Rebasing is for maintaing history across deleted versions:
let rebaseTarget;

for (let patch of patches) {
  // Apply the patch:
  let newValue = applyPatch(value, patch, origin);

  // Rebase if needed:
  if (rebaseTarget) {
    newValue = rebaseValue(rebaseTarget, newValue);
  }

  // If the document was deleted, store the previous version so we can rebase:
  if (getType(newValue) === "null") {
    rebaseTarget = value;
  } else {
    rebaseTarget = null;
  }

  value = newValue;
  origin++;
}

// Return the final full object:
console.log(unwrap(value));

License

MIT © Sanity.io

Release new version

Run the "CI & Release" workflow. Make sure to select the main branch and check "Release new version".

Semantic release will only release on configured branches, so it is safe to run release on any branch.