Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

maybe-promise-factory

Package Overview
Dependencies
Maintainers
2
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

maybe-promise-factory

The maybePromiseFactory normalizes synchronous values and asynchronous values by always returning a Promise.

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
2
Weekly downloads
 
Created
Source

maybe-promise-factory

The maybePromiseFactory normalizes synchronous values and asynchronous values by always returning a Promise.

  • The factory uses the ES6 Promise implementation by default but can use other Promise implementations.
  • The returned maybePromise function accepts an argument and converts it to a promise if it is another type of value.
  • If it is passed a function, it invokes it and applies the same rules to the result of the function to promisify it.
  • If the invoked function throws an exception, it is caught and a rejected Promise is returned.

Installation

Install with npm install maybe-promise-factory.

Usage Examples

const maybePromise = require('maybe-promise-factory')();

// If passed a non-Promise value, coerces it into an immediately-resolved Promise.
maybePromise(42).then(res => console.log(res)); // 42
// If passed a Promise, simply returns the Promise.
maybePromise(new Promise(resolve => resolve(42))).then(res => console.log(res)); // 42

// If passed a function, invokes the function. If the function returns a non-Promise value,
// coerces the result into an immediately-resolved Promise.
maybePromise(syncSum.bind(null, 1, 2)).then(res => console.log(res)); // 3
// If passed a function, invokes the function. Thrown exceptions are caught and the Promise
// is rejected with the exception.
maybePromise(syncSum.bind(null, 1, 'x').catch(err => console.error(err)); // TypeError

function syncSum (a, b) {
  if (typeof a === 'number' && typeof b === 'number') {
    return a + b;
  } else {
    throw new TypeError('Invaild arguments passed to syncSum');
  }
}

// If passed a function, invokes the function. If the function returns a Promise, simply
// returns the Promise.
maybePromise(asyncSum.bind(null, 1, 2)).then(res => console.log(res)); // 3
maybePromise(asyncSum.bind(null, 1, 'x').catch(err => console.error(err)); // TypeError

function asyncSum (a, b) {
  return new Promise((resolve, reject) => {
    if (typeof a === 'number' && typeof b === 'number') {
      resolve(a + b);
    } else {
      reject(new TypeError('Invalid arguments passed to asyncSum'));
    }
  });
}

// Using other Promise implementations
const Bluebird = require('bluebird');
const maybePromise = require('maybe-promise-factory')(Bluebird);

Testing

Tests are written with Mocha and Should. They can be run with npm test.

Keywords

FAQs

Package last updated on 12 May 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc