Skip to content

Proxies js objects and records all changes made on an object without modifying the object

License

Notifications You must be signed in to change notification settings

creately/sakota

Folders and files

NameName
Last commit message
Last commit date
Apr 9, 2019
Aug 10, 2023
Mar 16, 2021
Apr 9, 2019
Aug 21, 2018
Aug 10, 2023
Jul 30, 2018
Aug 10, 2023
Aug 10, 2023
Nov 6, 2018
May 14, 2021

Repository files navigation

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 },
// }

About

Proxies js objects and records all changes made on an object without modifying the object

Resources

License

Stars

Watchers

Forks

Packages

No packages published