https://github.com/seangenabe/promise-modules-list
A list of Promise packages on npm.
https://github.com/seangenabe/promise-modules-list
Last synced: 4 months ago
JSON representation
A list of Promise packages on npm.
- Host: GitHub
- URL: https://github.com/seangenabe/promise-modules-list
- Owner: seangenabe
- Created: 2016-08-06T11:52:17.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-06-02T13:49:12.000Z (over 7 years ago)
- Last Synced: 2025-03-26T06:32:30.297Z (7 months ago)
- Language: JavaScript
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Contributing: contributing.md
Awesome Lists containing this project
README
[](https://www.npmjs.com/package/promise-modules-list)
[](https://david-dm.org/seangenabe/promise-modules-list#info=devDependencies)## 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.```json
{
"q": [
"aplus",
"feature",
"b",
"d"
]
}
``````javascript
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.
* **native** - ECMAScript 2015 Promise
* **aplus** - [Promises/A+](https://promisesaplus.com/) by the Promises/A+ organization
* **a** - CommonJS [Promises/A](http://wiki.commonjs.org/wiki/Promises/A)
* **b** - CommonJS [Promises/B](http://wiki.commonjs.org/wiki/Promises/B)
* **d** - CommonJS [Promises/D](http://wiki.commonjs.org/wiki/Promises/D)
* **implementation-unknown** - Implementation unknownNote: 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