ngx-http-configure
Version:
Angular (6+) helpers for configure HTTP interceptors and services.
179 lines (166 loc) • 6.59 kB
JavaScript
(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