UNPKG

ngx-http-configure

Version:

Angular (6+) helpers for configure HTTP interceptors and services.

179 lines (166 loc) 6.59 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common/http')) : typeof define === 'function' && define.amd ? define('ngx-http-configure', ['exports', '@angular/common/http'], factory) : (global = global || self, factory(global['ngx-http-configure'] = {}, global.ng.common.http)); }(this, (function (exports, http) { 'use strict'; /*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ var __assign = function() { __assign = Object.assign || function __assign(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var HTTP_OPTIONS_KEYS = [ 'headers', 'observe', 'params', 'reportProgress', 'responseType', 'withCredentials', ]; /** @type {?} */ var HTTP_OPTION_PREFIX = '~'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @template T * @param {?} options * @param {?} predicate * @param {?=} keyPrefix * @return {?} */ function filterOptions(options, predicate, keyPrefix) { if (keyPrefix === void 0) { keyPrefix = ''; } return Object.keys(options).reduce((/** * @param {?} acc * @param {?} key * @return {?} */ function (acc, key) { if (predicate(key)) { /** @type {?} */ var prefixedKey = "" + keyPrefix + key; /** @type {?} */ var value_1 = options[key]; if (value_1 instanceof http.HttpParams) { value_1 = value_1.keys().reduce((/** * @param {?} p * @param {?} k * @return {?} */ function (p, k) { var _a; return (__assign({}, p, (_a = {}, _a[k] = value_1.get(k), _a))); }), {}); } acc[prefixedKey] = value_1; } return acc; }), (/** @type {?} */ ({}))); } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Configure the http client options tu extend functionality and use in interceptors. * @param {?} options Set of extended http client options * @return {?} */ function configure(options) { /** @type {?} */ var safeOptions = filterOptions(options, (/** * @param {?} key * @return {?} */ function (key) { return HTTP_OPTIONS_KEYS.includes(key); })); /** @type {?} */ var extraParams = filterOptions(options, (/** * @param {?} key * @return {?} */ function (key) { return !HTTP_OPTIONS_KEYS.includes(key); }), HTTP_OPTION_PREFIX); safeOptions.params = __assign({}, safeOptions.params, extraParams); return safeOptions; } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @param {?} selector * @return {?} */ function selectorPredicate(selector) { return (/** * @param {?} key * @return {?} */ function (key) { return Array.isArray(selector) ? selector.map((/** * @param {?} sel * @return {?} */ function (sel) { return "" + HTTP_OPTION_PREFIX + sel; })).includes(key) : true; }); } /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * Re-configure a request previously configured with this library. * @param {?} request The current http request * @param {?=} selector Apply params to array else ignore this filters * @return {?} */ function reconfigure(request, selector) { /** @type {?} */ var predicate = selectorPredicate(selector); var _a = request.params.keys().reduce((/** * @param {?} acc * @param {?} key * @return {?} */ function (acc, key) { /** @type {?} */ var value = request.params.get(key); if (key.startsWith(HTTP_OPTION_PREFIX) && predicate(key)) { /** @type {?} */ var unprefixedKey = key.replace(HTTP_OPTION_PREFIX, ''); acc.config[unprefixedKey] = value; } else { acc.params = acc.params.set(key, value); } return acc; }), { config: {}, params: new http.HttpParams() }), config = _a.config, params = _a.params; return { config: config, request: request.clone({ params: params }) }; } exports.configure = configure; exports.reconfigure = reconfigure; Object.defineProperty(exports, '__esModule', { value: true }); }))); //# sourceMappingURL=ngx-http-configure.umd.js.map