UNPKG

promise-faker

Version:

Provides promise-like APIs but runs synchronously. This module is useful for controlling flows.

47 lines (36 loc) 1.17 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _fakePromise = require('./fake-promise'); class Promise { constructor(callback) { if (typeof callback !== 'function') { throw new TypeError(`Promise resolver ${callback} is not a function`); } const p = new _fakePromise.FakePromise(); const result = (0, _fakePromise.tryCatch)(callback, value => p[_fakePromise.RESOLVE](value), error => p[_fakePromise.REJECT](error)); // resolve or reject already called if (!p[_fakePromise.PENDING]) { return p; } // not called, but there is an error if (result[_fakePromise.REJECTED]) { return result; } // Promise<pending> return p; } } exports.default = Promise; const { resolve } = _fakePromise.FakePromise; const all = tasks => tasks.map(task => resolve(task, true)); const define = (object, key, value) => Object.defineProperty(object, key, { value }); define(Promise, 'resolve', resolve); define(Promise, 'reject', _fakePromise.FakePromise.reject); define(Promise, 'all', tasks => (0, _fakePromise.tryCatch)(all, tasks)); module.exports = exports['default'];