UNPKG

@platform/http

Version:
89 lines (88 loc) 4.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var rxjs_1 = require("rxjs"); var operators_1 = require("rxjs/operators"); var fetch_1 = require("./fetch"); var http_fetcher_1 = require("./http.fetcher"); exports.create = function (options) { if (options === void 0) { options = {}; } var mergeOptions = function (methodOptions) { if (methodOptions === void 0) { methodOptions = {}; } var args = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, options), methodOptions), { headers: tslib_1.__assign(tslib_1.__assign({}, options.headers), methodOptions.headers) }); var _a = args.mode, mode = _a === void 0 ? 'cors' : _a, headers = args.headers; return { mode: mode, headers: headers }; }; var invoke = function (method, args) { var _a = mergeOptions(args.options), mode = _a.mode, headers = _a.headers; var url = args.url, data = args.data; return http_fetcher_1.fetcher({ method: method, url: url, mode: mode, headers: headers, data: data, fire: fire, fetch: options.fetch || fetch_1.fetch }); }; var _events$ = new rxjs_1.Subject(); var fire = function (e) { return _events$.next(e); }; var events$ = _events$.pipe(operators_1.share()); var before$ = _events$.pipe(operators_1.filter(function (e) { return e.type === 'HTTP/before'; }), operators_1.map(function (e) { return e.payload; }), operators_1.share()); var after$ = _events$.pipe(operators_1.filter(function (e) { return e.type === 'HTTP/after'; }), operators_1.map(function (e) { return e.payload; }), operators_1.share()); var http = { create: function (options) { if (options === void 0) { options = {}; } var headers = tslib_1.__assign(tslib_1.__assign({}, http.headers), options.headers); return exports.create(tslib_1.__assign(tslib_1.__assign({}, options), { headers: headers })); }, events$: events$, before$: before$, after$: after$, get headers() { return tslib_1.__assign({}, options.headers); }, head: function (url, options) { if (options === void 0) { options = {}; } return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2, invoke('HEAD', { url: url, options: options })]; }); }); }, get: function (url, options) { if (options === void 0) { options = {}; } return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2, invoke('GET', { url: url, options: options })]; }); }); }, put: function (url, data, options) { if (options === void 0) { options = {}; } return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2, invoke('PUT', { url: url, data: data, options: options })]; }); }); }, post: function (url, data, options) { if (options === void 0) { options = {}; } return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2, invoke('POST', { url: url, data: data, options: options })]; }); }); }, patch: function (url, data, options) { if (options === void 0) { options = {}; } return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2, invoke('PATCH', { url: url, data: data, options: options })]; }); }); }, delete: function (url, data, options) { if (options === void 0) { options = {}; } return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2, invoke('DELETE', { url: url, data: data, options: options })]; }); }); }, }; return http; };