The Wayback Machine - https://web.archive.org/web/20201214153457/https://github.com/zaclummys/gesco
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

gesco npm version npm downloads

Easy data manipulation to get, emit, set, compute and observe.

Installing

$ npm install gesco

API

gesco.get<T = any>(path: PathLike): T

Get the value stored in the path.

gesco.get('foo.bar');

gesco.delete(path: PathLike, silently: boolean = false)

Delete the value stored in the path. See silence.

gesco.delete('foo.bar');

gesco.emit<T = any>(path: PathLike: callback?: EmitCallback<T>)

Bubbles the value changes. See bubbles.

gesco.emit('foo.bar')
gesco.emit('foo', foo => {
    foo.push('bar');
})

Since changing a property directly or using array methods won't bubble, this allows you to indicate to Gesco that there has been a change/transformation. Use callback to perform operations like that.


gesco.set<T = any>(path: PathLike, value: any, silently: boolean = false): void

Stores a value in the path. See silence.

gesco.set('foo', 'bar');

gesco.observe<T = any>(from: PathLike, callback: ObserverCallback<T>): void

Observe the path and the descending paths.

gesco.observe('foo.bar', bar => {
    console.log('bar has changed:', bar);
});

gesco.compute<T = any>(to: PathLike, from: PathLike, callback: ComputerCallback<T>): void

Compute the path and the descending paths.

gesco.compute('newBar', 'foo.bar', bar => bar.toUpperCase());

gesco.link(from: PathLike, to: PathLike, bidirectional: boolean = false)

Links two different paths.

gesco.link('path1', 'path2');

Bubbles

This term refers to triggering the direct and indirect observers/computers of a path.

The methods set, delete and emit bubble the value changes automatically when invoked.

Silence

This term refers to prevent bubbling the value changes.

Propagation

When a value is changed, the change propagates to the path itself and its descendants. For example, changing foo will trigger:

  • foo
  • foo.bar
  • foo.bar.quux

License

MIT © Isaac Ferreira zaclummys@gmail.com

About

Easy data manipulation to get, emit, set, compute and observe

Topics

Resources

License

Packages

No packages published
You can’t perform that action at this time.