UNPKG

@platform/http

Version:
98 lines (97 loc) 4.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var common_1 = require("../common"); exports.fetcher = function (args) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { var timer, uid, url, method, data, fire, mode, headers, modifications, modify, before, respond, payload, _a, response, elapsed, ok, status_1, fetched, response, elapsed, ok, status_2; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: timer = common_1.time.timer(); uid = "req:" + common_1.id.shortid(); url = args.url, method = args.method, data = args.data, fire = args.fire, mode = args.mode, headers = args.headers; modifications = { headers: args.headers || {}, data: undefined, respond: undefined, }; modify = { header: function (key, value) { before.isModified = true; var headers = modifications.headers || {}; if (value) { headers[key] = value; } else { delete headers[key]; } modifications.headers = headers; }, headers: { merge: function (input) { before.isModified = true; modifications.headers = common_1.value.deleteEmpty(tslib_1.__assign(tslib_1.__assign({}, modifications.headers), input)); }, replace: function (input) { before.isModified = true; modifications.headers = common_1.value.deleteEmpty(input); }, }, }; before = { uid: uid, method: method, url: url, data: data, headers: headers, isModified: false, modify: modify, respond: function (input) { modifications.respond = input; }, }; fire({ type: 'HTTP/before', payload: before }); if (!modifications.respond) return [3, 5]; respond = modifications.respond; if (!(typeof respond === 'function')) return [3, 2]; return [4, respond()]; case 1: _a = _b.sent(); return [3, 3]; case 2: _a = respond; _b.label = 3; case 3: payload = _a; return [4, common_1.util.response.fromPayload(payload, modifications)]; case 4: response = _b.sent(); elapsed = timer.elapsed; ok = response.ok, status_1 = response.status; fire({ type: 'HTTP/after', payload: { uid: uid, method: method, url: url, ok: ok, status: status_1, response: response, elapsed: elapsed }, }); return [2, response]; case 5: return [4, args.fetch({ url: url, mode: mode, method: method, headers: modifications.headers || headers, data: data, })]; case 6: fetched = _b.sent(); return [4, common_1.util.response.fromFetch(fetched)]; case 7: response = _b.sent(); elapsed = timer.elapsed; ok = response.ok, status_2 = response.status; fire({ type: 'HTTP/after', payload: { uid: uid, method: method, url: url, ok: ok, status: status_2, response: response, elapsed: elapsed }, }); return [2, response]; } }); }); };