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

shvua

v1.2.0

Published

A Promise/A+ compliant library, that allows you to extend your object's methods with promise-like API

Downloads

3

Readme

Promise.js

This library provides a Promises/A+ compatible Promise object, as well as providing a method for wrapping your object's methods with promise-like API.

The library is both CommonJS and AMD compatible.

Installation

npm install arieh-promise

Basic Usage

A Promise's constructor can either relieve a function or another promise as its parameters. In case a function was provided, that function would receive 2 parameters - a fulfill function and a reject function:

var promise = new Promise(function(fulfill, reject){
    var value = someOperation();

    if (value){
        fulfill(value);
    }else{
        reject('no value');
    }
});

If a promise was provided, the new Promise would fulfill/reject according to provided promise. If no parameter was provided, you can still fulfill/reject the promise via it's fulfill and reject methods.

Promise.extend

In addition to providing the basic implementation of the Promise API, this library also allows you to create chainable promise APIs for you objects.

For example - let's say we have the following object:

var obj = {
    async : function(){
        return new Promise(function(f,r){
            //some async operation
        });
    },
    setA : function(a){ this.a = a;}
};

Using Promise.extend, we can make obj's async method create a costume promise object that will provide a deffered access to obj's methods:

obj.Promise = Promise.extend(obj, ['setA']);
obj.async = function(){
    return new obj.Promise(function(f,r){
        //some async operation
    });
};

obj.async().setA('a');
obj.a; //undefined
//after async was completed:
obj.a; //'a'

What's cool about these new costume Promises is that all API points return new promises, so the same error handling mechanism governs them. This way:

obj.async()
   .then(function(){
      //do somthing
   })
   .setA('a')
   .then(fuction(){
      throw "test error";
   })
   .setA('b')
   .then(function(){}, function(e){
      console.log(obj.a);//a
      console.log(e);//test error
   });