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;
|