npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

easyobserve

v1.0.0

Published

easy-to-use observables via ES6 Proxy

Downloads

5

Readme

easyobserve: easy-to-use observables via ES6 Proxy

Easily create new observable objects, or observe an existing object. You can catch events using an observable's on method. Works for arrays as well.

Install

npm install easyobserve

Usage

Object Literal

Create

var observableObj = new Observable({});

Observe events

var foo = new Observable({});

foo.on('set', (target, prop, value)=>{
    console.log(`${prop} was set to ${value}`);
});

foo.bar = 'lulz';
// bar was set to lulz

Observe targeted events

var foo = new Observable({});

foo.on('set:bar', (target, prop, value)=>{
    console.log('bar was set');
});

foo.bar = 'lulz';
// bar was set

Array

Create

var observableArray = new Observable([]);

Observe events

var observableArray = new Observable([]);

foo.on('set', (target, prop, value)=>{
    console.log(`${prop} was set to ${value}`);
});

foo.push('lulz');
// 0 was set to lulz

Observe targeted events

var observableArray = new Observable([]);

foo.on('set:0', (target, prop, value)=>{
    console.log('0 was set');
});

foo.push('lulz');
// 0 was set to lulz

Constructor

Create Instance

function kitty(){}

kitty.prototype.meow = function(){
	console.log('meow');
};

var observableKitty = Observable(kitty);

observableKitty.on('create', ()=>{
    console.log('a kitty was born!');
});

// instances of observableKitty are observable as well
var fluffy = new observableKitty();
// a kitty was born!

Events

Non-specific

add

Adding an element or property.

set

Setting a value for an element or property.

update

Will be returned on the process' next tick. Returns alterations from previous cycle.

get

Fired when a property is retrieved. This can also be useful for deeper observations, such as when an array's length is called.

delete

Handle a delete event for a property or index.

Constructor-specific

create

Fired when an instance of an observable constructor is created. Note that the child instance will also be observable by default.