@aspectus/superagent-fetch
Version:
Custom fetcher that adapts [superagent](https://github.com/visionmedia/superagent) library to the default Fetch API.
56 lines (47 loc) • 2.1 kB
JavaScript
/*!
* superagent-fetch v0.10.10
* (c) 2020 Alex Tkachenko
* Released under the MIT License.
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var ramda = require('ramda');
var superagent = _interopDefault(require('superagent'));
var cancellablePromiseProxy = _interopDefault(require('@aspectus/cancellable-promise-proxy'));
var progressPromiseProxy = _interopDefault(require('@aspectus/progress-promise-proxy'));
var FOLLOW_REDIRECT = 'follow';
var nullHandler = function nullHandler() {
return null;
};
function createRequestFromFetch(agent, url) {
var init = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var _init$method = init.method,
method = _init$method === void 0 ? 'GET' : _init$method,
_init$headers = init.headers,
headers = _init$headers === void 0 ? {} : _init$headers,
_init$redirect = init.redirect,
redirect = _init$redirect === void 0 ? FOLLOW_REDIRECT : _init$redirect,
body = init.body;
return agent(method, url).set(headers).redirects(redirect === FOLLOW_REDIRECT ? 5 : 0).send(body);
}
function makeRequest(agent, proxy, resource) {
var init = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
var request = createRequestFromFetch(agent, resource, init); // HACK: Forcing progress handling in superagent.
// With empty progress handlers list it would not subscribe on actual
// progress event at all.
request.on('progress', nullHandler);
return proxy(new Promise(function (resolve, reject) {
return request.then(resolve, reject);
}), {
request: request,
cancelController: request,
progressEmitter: request
});
}
var baseProxy = ramda.compose(cancellablePromiseProxy, progressPromiseProxy);
var main = ramda.partial(makeRequest, [superagent, baseProxy]);
exports.baseProxy = baseProxy;
exports.createRequestFromFetch = createRequestFromFetch;
exports.default = main;
exports.makeRequest = makeRequest;