UNPKG

cerebral-http-bugfix-1210

Version:
145 lines (112 loc) 4.92 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpProviderError = undefined; var _HttpProviderError = require('./HttpProviderError'); Object.defineProperty(exports, 'HttpProviderError', { enumerable: true, get: function get() { return _interopRequireDefault(_HttpProviderError).default; } }); exports.default = HttpProviderFactory; var _cerebral = require('cerebral'); var _request = require('./request'); var _request2 = _interopRequireDefault(_request); var _utils = require('./utils'); var _fileUpload = require('./fileUpload'); var _fileUpload2 = _interopRequireDefault(_fileUpload); var _DEFAULT_OPTIONS = require('./DEFAULT_OPTIONS'); var _DEFAULT_OPTIONS2 = _interopRequireDefault(_DEFAULT_OPTIONS); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function HttpProviderFactory(passedOptions) { var moduleOptions = (0, _utils.mergeWith)({}, _DEFAULT_OPTIONS2.default); if (typeof passedOptions === 'function') { moduleOptions = passedOptions(moduleOptions); } else if (passedOptions) { moduleOptions = (0, _utils.mergeWith)(passedOptions, _DEFAULT_OPTIONS2.default); } var requests = {}; function createAbortablePromise(url, cb) { return new Promise(function (resolve, reject) { requests[url] = { resolve: resolve, reject: reject, // eslint-disable-next-line standard/no-callback-literal xhr: cb(function (payload) { delete requests[url]; resolve(payload); }, function (error) { delete requests[url]; reject(error); }) }; }); } function requestService(options) { options = (0, _utils.mergeWith)(options, moduleOptions); if (typeof options.onProgress === 'string') { options.onProgress = this.context.controller.getSignal(options.onProgress); } options.method = options.method.toUpperCase(); return createAbortablePromise(options.url, function (resolve, reject) { return (0, _request2.default)(options, (0, _utils.createResponse)(options, resolve, reject)); }); } return (0, _cerebral.Provider)({ request: requestService, get: function get(url, passedQuery) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var query = passedQuery || options.query; options.url = query && Object.keys(query).length ? url + '?' + (0, _utils.urlEncode)(query) : url; options.method = 'GET'; return requestService.call(this, options); }, post: function post(url, body) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; options.url = options.query && Object.keys(options.query).length ? url + '?' + (0, _utils.urlEncode)(options.query) : url; options.method = 'POST'; options.body = body; return requestService.call(this, options); }, put: function put(url, body) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; options.url = options.query && Object.keys(options.query).length ? url + '?' + (0, _utils.urlEncode)(options.query) : url; options.method = 'PUT'; options.body = body; return requestService.call(this, options); }, patch: function patch(url, body) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; options.url = options.query && Object.keys(options.query).length ? url + '?' + (0, _utils.urlEncode)(options.query) : url; options.method = 'PATCH'; options.body = body; return requestService.call(this, options); }, delete: function _delete(url, query) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; options.url = options.query && Object.keys(options.query).length ? url + '?' + (0, _utils.urlEncode)(options.query) : url; options.method = 'DELETE'; return requestService.call(this, options); }, updateOptions: function updateOptions(newOptions) { moduleOptions = (0, _utils.mergeWith)(newOptions, moduleOptions); }, abort: function abort(regexp) { var matchingUrls = Object.keys(requests).filter(function (url) { return Boolean(url.match(new RegExp(regexp))); }); matchingUrls.forEach(function (url) { requests[url].xhr.abort(); }); }, uploadFile: function uploadFile(url, files) { var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; options.url = moduleOptions.baseUrl + url; options.onProgress = typeof options.onProgress === 'string' ? this.context.controller.getSignal(options.onProgress) : options.onProgress; return new _fileUpload2.default(options).send(files); } }); } //# sourceMappingURL=index.js.map