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

promise-modules-list

v1.0.0

Published

A list of Promise packages on npm.

Downloads

1

Readme

npm devDependency Status

Format

The list is a single object, in a JSON file, with packages / package-ish strings as keys and their tags as values.

The keys can be:

  • package: Just a reference to an npm package.
  • package-ish string: A string you pass into require which references a JS file inside a package. To distinguish these strings from package strings, just look for a slash / character.
{
  "q": [
    "aplus",
    "feature",
    "b",
    "d"
  ]
}
const promiseModulesList = require('promise-modules-list')
promiseModulesList.q // => ['export', 'a', 'aplus', 'feature', 'b' 'd']

Tag order is not significant!

Tags

Implementation

Tags according to the claimed implementation by the package.

Note: A returns a promise function. B and D do not export a Promise constructor.

Packages can have more than one of these tags if they implement them (depending on how awesome they are?). For example, many packages are compatible with both A+ and native. They can also be:

  • native-or - Will return the Promise when available in the environment. Must be first choice for tag inclusion. That is, if the package might consider the environment Promise second to last, it can't have this tag.
  • or-native - Will fall back to the Promise available to the environment. Usually used with packages that search for available Promise packages. Must be last choice for tag inclusion.
  • danger - This package mix-and-matches implementations depending on variables / the environment. Use with caution.

Retrieval method

How to retrieve the Promise from the package, assuming a CommonJS environment.

  • return - Returns the Promise constructor from the package, i.e. var Promise = require('...'). Ponyfills fall under this tag. Returns the promise function for Promises/A.
  • polyfill - Polyfills the environment, i.e. require('...')
  • export - Exports a Promise constructor from the package, i.e. var Promise = require('...').Promise
  • custom-export - Uses a different export name, i.e. var Promise = require('...')['...'].
  • nonstandard - Does not export a Promise constructor at all. 🙁

Additional features

  • feature - Adds functionality to either or both the prototype and the constructor Promise, in addition to the scope of the main claimed implementation. Trivial methods such as a polyfill method or debugging features are not considered.

Don't be confused when packages mention "native"!

When "native Promise" is mentioned, it might mean two things, which aren't necessarily mutually exclusive:

  • A Promise that implements the ECMAScript 2015 Promise specification.
  • The Promise in the environment, whether available without prior modifications or polyfilled, i.e. === global.Promise.

Draw on the context to make sure what meaning is intended!

License

CC0-1.0