1.0.0 • Published 8 years ago

promise-modules-list v1.0.0

Weekly downloads
1
License
CC0-1.0
Repository
-
Last release
8 years ago

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