@arcanejs/diff

0.5.1 • Public • Published

@arcanejs/diff

NPM Version

This package provides an easy way to:

  • Create diffs by comparing objects
  • Update objects by applying diffs

This library is written in TypeScript, and produces diffs that are type-safe, and can only be applied to objects that match the type of the objects being compared.

This package is part of the arcanejs project, and is used to maintain a copy of a JSON tree in downstream clients in real-time via websockets.

Usage

import { diffJson, Diff } from '@arcanejs/diff/diff';
import { patchJson } from '@arcanejs/diff/patch';

type E = {
  foo: string;
  bar?: number[];
};

const a: E = { foo: 'bar' };
const b: E = { foo: 'baz', bar: [1] };

const diffA: Diff<E> = diffJson(a, b);

const resultA = patchJson(a, diffA);

console.log(resultB); // { foo: 'baz', bar: [1] }

const c = { baz: 'foo' };

const resultB = patchJson(c, diffA); // TypeScript Type Error: Property 'baz' is missing in type '{ foo: string; bar?: number[] | undefined; }' but required in type '{ baz: string; }'

/@arcanejs/diff/

    Package Sidebar

    Install

    npm i @arcanejs/diff

    Weekly Downloads

    3

    Version

    0.5.1

    License

    MIT

    Unpacked Size

    16.5 kB

    Total Files

    19

    Last publish

    Collaborators

    • s0