Skip to content

Latest commit

 

History

History
43 lines (31 loc) · 965 Bytes

readme.md

File metadata and controls

43 lines (31 loc) · 965 Bytes

SaKota

SaKota proxies js objects and records all changes made on an object without modifying the given object.

Getting Started

Install @creately/sakota module from npm.

npm install @creately/sakota

Wrap an existing object with a proxy and make some changes to the proxied object. It should reflect all changes made to the object without modifying the source.

import { Sakota } from '@creately/sakota'

const source = { x: 10, y: 20, c1: { x: 20, y: 30, z: 40 }}
const proxy = Sakota.create(source);

// make some changes
proxy.z = 30;
proxy.c1.y = 40;
delete proxy.c1.z;

console.log(source)
// { x: 10, y: 20, c1: { x: 20, y: 30, z: 40 }}

console.log(proxy)
// { x: 10, y: 20, z: 30, c1: { x: 20, y: 40 }}

Changes made to the object are all recorded as a MongoDB like modifier.

const changes = Sakota.changes(proxy);
console.log(changes)
// {
//     $set: { z: 30, 'c1.y': 40 },
//     $unset: { 'c1.z': true },
// }