| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | /** * @class PromiseAdapter * @description * Adapter for the primary promise operations. * * Provides compatibility with promise libraries that cannot be recognized automatically, * via functions that implement the primary operations with promises: * *  - construct a new promise with a callback function *  - resolve a promise with some result data *  - reject a promise with a reason * * #### Example * * Below is an example of setting up a [client-side]{@tutorial client} adapter for AngularJS $q. * * ```js * const spexLib = require('spex'); // or include client-side spex.js * * const adapter = new spexLib.PromiseAdapter( *    cb => $q(cb), // creating a new promise; *    data => $q.when(data), // resolving a promise; *    reason => $q.reject(reason) // rejecting a promise; *    ); * * const spex = spexLib(adapter); * ``` * * @param {Function} create * A function that takes a callback parameter and returns a new promise object. * The callback parameter is expected to be `function(resolve, reject)`. * * Passing in anything other than a function will throw `Adapter requires a function to create a promise.` * * @param {Function} resolve * A function that takes an optional data parameter and resolves a promise with it. * * Passing in anything other than a function will throw `Adapter requires a function to resolve a promise.` * * @param {Function} reject * A function that takes an optional error parameter and rejects a promise with it. * * Passing in anything other than a function will throw `Adapter requires a function to reject a promise.` * * @see {@tutorial client} * */class PromiseAdapter {    constructor(create, resolve, reject) {        this.create = create;        this.resolve = resolve;        this.reject = reject;        if (typeof create !== 'function') {            throw new TypeError('Adapter requires a function to create a promise.');        }        if (typeof resolve !== 'function') {            throw new TypeError('Adapter requires a function to resolve a promise.');        }        if (typeof reject !== 'function') {            throw new TypeError('Adapter requires a function to reject a promise.');        }    }}module.exports = PromiseAdapter;
 |