UNPKG

@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
/*! * superagent-fetch v0.10.10 * (c) 2020 Alex Tkachenko * Released under the MIT License. */ 'use strict'; 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;