UNPKG

@ngx-resource/handler-fetch

Version:
137 lines 10.8 kB
import * as tslib_1 from "tslib"; var _a; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { ResourceHandler, ResourceRequestMethod, ResourceResponseBodyType } from '@ngx-resource/core'; /** @type {?} */ export var REQUEST_METHOD_MAP = (_a = {}, _a[ResourceRequestMethod.Get] = 'GET', _a[ResourceRequestMethod.Post] = 'POST', _a[ResourceRequestMethod.Put] = 'PUT', _a[ResourceRequestMethod.Patch] = 'PATCH', _a[ResourceRequestMethod.Delete] = 'DELETE', _a[ResourceRequestMethod.Options] = 'OPTIONS', _a[ResourceRequestMethod.Head] = 'HEAD', _a); var ResourceHandlerFetch = /** @class */ (function (_super) { tslib_1.__extends(ResourceHandlerFetch, _super); function ResourceHandlerFetch() { return _super !== null && _super.apply(this, arguments) || this; } /** * @param {?} req * @return {?} */ ResourceHandlerFetch.prototype.handle = /** * @param {?} req * @return {?} */ function (req) { var _this = this; /** @type {?} */ var url = this.createUrl(req); /** @type {?} */ var requestInit = this.createRequestInit(req); return { promise: fetch(url, requestInit).then((/** * @param {?} res * @return {?} */ function (res) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: _a = { headers: res.headers, status: res.status }; return [4 /*yield*/, this.getBody(req, res)]; case 1: return [2 /*return*/, (_a.body = _b.sent(), _a)]; } }); }); })), }; }; /** * @private * @param {?} req * @return {?} */ ResourceHandlerFetch.prototype.createUrl = /** * @private * @param {?} req * @return {?} */ function (req) { var url = req.url; if (typeof url !== 'string') { throw new Error('Url us missing'); } if (req.query) { /** @type {?} */ var queryGroups = []; for (var key in req.query) { if (req.query.hasOwnProperty(key)) { queryGroups.push('key=' + encodeURIComponent(req.query[key])); } } if (queryGroups.length) { url += (url.indexOf('?') > -1 ? '&' : '?') + queryGroups.join('&'); } } return url; }; /** * @private * @param {?} req * @return {?} */ ResourceHandlerFetch.prototype.createRequestInit = /** * @private * @param {?} req * @return {?} */ function (req) { /** @type {?} */ var requestInit = {}; req.method = req.method || ResourceRequestMethod.Get; requestInit.method = REQUEST_METHOD_MAP[req.method]; requestInit.headers = req.headers; if (req.method !== ResourceRequestMethod.Get && req.body) { requestInit.body = req.body; } return requestInit; }; /** * @private * @param {?} req * @param {?} res * @return {?} */ ResourceHandlerFetch.prototype.getBody = /** * @private * @param {?} req * @param {?} res * @return {?} */ function (req, res) { switch (req.responseBodyType) { case ResourceResponseBodyType.ArrayBuffer: return res.arrayBuffer(); case ResourceResponseBodyType.Blob: return res.blob(); case ResourceResponseBodyType.Json: return res.json(); case ResourceResponseBodyType.Text: default: return res.text(); } }; return ResourceHandlerFetch; }(ResourceHandler)); export { ResourceHandlerFetch }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VIYW5kbGVyRmV0Y2guanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Abmd4LXJlc291cmNlL2hhbmRsZXItZmV0Y2gvIiwic291cmNlcyI6WyJsaWIvUmVzb3VyY2VIYW5kbGVyRmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUdMLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsd0JBQXdCLEVBQ3pCLE1BQU0sb0JBQW9CLENBQUM7O0FBRTVCLE1BQU0sS0FBTyxrQkFBa0I7SUFDN0IsR0FBQyxxQkFBcUIsQ0FBQyxHQUFHLElBQUcsS0FBSztJQUNsQyxHQUFDLHFCQUFxQixDQUFDLElBQUksSUFBRyxNQUFNO0lBQ3BDLEdBQUMscUJBQXFCLENBQUMsR0FBRyxJQUFHLEtBQUs7SUFDbEMsR0FBQyxxQkFBcUIsQ0FBQyxLQUFLLElBQUcsT0FBTztJQUN0QyxHQUFDLHFCQUFxQixDQUFDLE1BQU0sSUFBRyxRQUFRO0lBQ3hDLEdBQUMscUJBQXFCLENBQUMsT0FBTyxJQUFHLFNBQVM7SUFDMUMsR0FBQyxxQkFBcUIsQ0FBQyxJQUFJLElBQUcsTUFBTTtPQUNyQztBQUVEO0lBQTBDLGdEQUFlO0lBQXpEOztJQStFQSxDQUFDOzs7OztJQTdFQyxxQ0FBTTs7OztJQUFOLFVBQU8sR0FBcUI7UUFBNUIsaUJBY0M7O1lBWk8sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDOztZQUN6QixXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQztRQUUvQyxPQUFPO1lBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSTs7OztZQUFDLFVBQU8sR0FBYTs7Ozs7O2dDQUV0RCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87Z0NBQ3BCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTs7NEJBQ1oscUJBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUE7Z0NBSHBDLHVCQUdFLE9BQUksR0FBRSxTQUE0QjtxQ0FDbEM7OztpQkFDSCxFQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7Ozs7OztJQUVPLHdDQUFTOzs7OztJQUFqQixVQUFrQixHQUFxQjtRQUVoQyxJQUFBLGFBQUc7UUFFUixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7O2dCQUVQLFdBQVcsR0FBYSxFQUFFO1lBRWhDLEtBQUssSUFBTSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRTtnQkFDM0IsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDakMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQy9EO2FBQ0Y7WUFFRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3RCLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRTtTQUVGO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzs7Ozs7SUFFTyxnREFBaUI7Ozs7O0lBQXpCLFVBQTBCLEdBQXFCOztZQUN2QyxXQUFXLEdBQWdCLEVBQUU7UUFFbkMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQztRQUVyRCxXQUFXLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxXQUFXLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFFbEMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLHFCQUFxQixDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ3hELFdBQVcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztTQUM3QjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Ozs7Ozs7SUFFTyxzQ0FBTzs7Ozs7O0lBQWYsVUFBZ0IsR0FBcUIsRUFBRSxHQUFhO1FBQ2xELFFBQVEsR0FBRyxDQUFDLGdCQUFnQixFQUFFO1lBQzVCLEtBQUssd0JBQXdCLENBQUMsV0FBVztnQkFDdkMsT0FBTyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFM0IsS0FBSyx3QkFBd0IsQ0FBQyxJQUFJO2dCQUNoQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVwQixLQUFLLHdCQUF3QixDQUFDLElBQUk7Z0JBQ2hDLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBRXBCLEtBQUssd0JBQXdCLENBQUMsSUFBSSxDQUFDO1lBQ25DO2dCQUNFLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1NBRXJCO0lBQ0gsQ0FBQztJQUdILDJCQUFDO0FBQUQsQ0FBQyxBQS9FRCxDQUEwQyxlQUFlLEdBK0V4RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElSZXNvdXJjZUhhbmRsZXJSZXNwb25zZSxcbiAgSVJlc291cmNlUmVxdWVzdCxcbiAgUmVzb3VyY2VIYW5kbGVyLFxuICBSZXNvdXJjZVJlcXVlc3RNZXRob2QsXG4gIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZVxufSBmcm9tICdAbmd4LXJlc291cmNlL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgUkVRVUVTVF9NRVRIT0RfTUFQID0ge1xuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLkdldF06ICdHRVQnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLlBvc3RdOiAnUE9TVCcsXG4gIFtSZXNvdXJjZVJlcXVlc3RNZXRob2QuUHV0XTogJ1BVVCcsXG4gIFtSZXNvdXJjZVJlcXVlc3RNZXRob2QuUGF0Y2hdOiAnUEFUQ0gnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLkRlbGV0ZV06ICdERUxFVEUnLFxuICBbUmVzb3VyY2VSZXF1ZXN0TWV0aG9kLk9wdGlvbnNdOiAnT1BUSU9OUycsXG4gIFtSZXNvdXJjZVJlcXVlc3RNZXRob2QuSGVhZF06ICdIRUFEJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZUhhbmRsZXJGZXRjaCBleHRlbmRzIFJlc291cmNlSGFuZGxlciB7XG5cbiAgaGFuZGxlKHJlcTogSVJlc291cmNlUmVxdWVzdCk6IElSZXNvdXJjZUhhbmRsZXJSZXNwb25zZSB7XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmNyZWF0ZVVybChyZXEpO1xuICAgIGNvbnN0IHJlcXVlc3RJbml0ID0gdGhpcy5jcmVhdGVSZXF1ZXN0SW5pdChyZXEpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByb21pc2U6IGZldGNoKHVybCwgcmVxdWVzdEluaXQpLnRoZW4oYXN5bmMgKHJlczogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWFkZXJzOiByZXMuaGVhZGVycyxcbiAgICAgICAgICBzdGF0dXM6IHJlcy5zdGF0dXMsXG4gICAgICAgICAgYm9keTogYXdhaXQgdGhpcy5nZXRCb2R5KHJlcSwgcmVzKVxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVXJsKHJlcTogSVJlc291cmNlUmVxdWVzdCk6IHN0cmluZyB7XG5cbiAgICBsZXQge3VybH0gPSByZXE7XG5cbiAgICBpZiAodHlwZW9mIHVybCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVXJsIHVzIG1pc3NpbmcnKTtcbiAgICB9XG5cbiAgICBpZiAocmVxLnF1ZXJ5KSB7XG5cbiAgICAgIGNvbnN0IHF1ZXJ5R3JvdXBzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXEucXVlcnkpIHtcbiAgICAgICAgaWYgKHJlcS5xdWVyeS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgcXVlcnlHcm91cHMucHVzaCgna2V5PScgKyBlbmNvZGVVUklDb21wb25lbnQocmVxLnF1ZXJ5W2tleV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocXVlcnlHcm91cHMubGVuZ3RoKSB7XG4gICAgICAgIHVybCArPSAodXJsLmluZGV4T2YoJz8nKSA+IC0xID8gJyYnIDogJz8nKSArIHF1ZXJ5R3JvdXBzLmpvaW4oJyYnKTtcbiAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlcXVlc3RJbml0KHJlcTogSVJlc291cmNlUmVxdWVzdCk6IFJlcXVlc3RJbml0IHtcbiAgICBjb25zdCByZXF1ZXN0SW5pdDogUmVxdWVzdEluaXQgPSB7fTtcblxuICAgIHJlcS5tZXRob2QgPSByZXEubWV0aG9kIHx8IFJlc291cmNlUmVxdWVzdE1ldGhvZC5HZXQ7XG5cbiAgICByZXF1ZXN0SW5pdC5tZXRob2QgPSBSRVFVRVNUX01FVEhPRF9NQVBbcmVxLm1ldGhvZF07XG4gICAgcmVxdWVzdEluaXQuaGVhZGVycyA9IHJlcS5oZWFkZXJzO1xuXG4gICAgaWYgKHJlcS5tZXRob2QgIT09IFJlc291cmNlUmVxdWVzdE1ldGhvZC5HZXQgJiYgcmVxLmJvZHkpIHtcbiAgICAgIHJlcXVlc3RJbml0LmJvZHkgPSByZXEuYm9keTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVxdWVzdEluaXQ7XG4gIH1cblxuICBwcml2YXRlIGdldEJvZHkocmVxOiBJUmVzb3VyY2VSZXF1ZXN0LCByZXM6IFJlc3BvbnNlKTogYW55IHtcbiAgICBzd2l0Y2ggKHJlcS5yZXNwb25zZUJvZHlUeXBlKSB7XG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5BcnJheUJ1ZmZlcjpcbiAgICAgICAgcmV0dXJuIHJlcy5hcnJheUJ1ZmZlcigpO1xuXG4gICAgICBjYXNlIFJlc291cmNlUmVzcG9uc2VCb2R5VHlwZS5CbG9iOlxuICAgICAgICByZXR1cm4gcmVzLmJsb2IoKTtcblxuICAgICAgY2FzZSBSZXNvdXJjZVJlc3BvbnNlQm9keVR5cGUuSnNvbjpcbiAgICAgICAgcmV0dXJuIHJlcy5qc29uKCk7XG5cbiAgICAgIGNhc2UgUmVzb3VyY2VSZXNwb25zZUJvZHlUeXBlLlRleHQ6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVzLnRleHQoKTtcblxuICAgIH1cbiAgfVxuXG5cbn1cbiJdfQ==