UNPKG

ngx-http-configure

Version:

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

140 lines (133 loc) 4.03 kB
import { HttpParams } from '@angular/common/http'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const HTTP_OPTIONS_KEYS = [ 'headers', 'observe', 'params', 'reportProgress', 'responseType', 'withCredentials', ]; /** @type {?} */ const 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 = '') { return Object.keys(options).reduce((/** * @param {?} acc * @param {?} key * @return {?} */ (acc, key) => { if (predicate(key)) { /** @type {?} */ const prefixedKey = `${keyPrefix}${key}`; /** @type {?} */ let value = options[key]; if (value instanceof HttpParams) { value = value.keys().reduce((/** * @param {?} p * @param {?} k * @return {?} */ (p, k) => (Object.assign({}, p, { [k]: value.get(k) }))), {}); } acc[prefixedKey] = value; } 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 {?} */ const safeOptions = filterOptions(options, (/** * @param {?} key * @return {?} */ (key) => HTTP_OPTIONS_KEYS.includes(key))); /** @type {?} */ const extraParams = filterOptions(options, (/** * @param {?} key * @return {?} */ (key) => !HTTP_OPTIONS_KEYS.includes(key)), HTTP_OPTION_PREFIX); safeOptions.params = Object.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 {?} */ key => Array.isArray(selector) ? selector.map((/** * @param {?} sel * @return {?} */ sel => `${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 {?} */ const predicate = selectorPredicate(selector); const { config, params } = request.params.keys().reduce((/** * @param {?} acc * @param {?} key * @return {?} */ (acc, key) => { /** @type {?} */ const value = request.params.get(key); if (key.startsWith(HTTP_OPTION_PREFIX) && predicate(key)) { /** @type {?} */ const unprefixedKey = key.replace(HTTP_OPTION_PREFIX, ''); acc.config[unprefixedKey] = value; } else { acc.params = acc.params.set(key, value); } return acc; }), { config: {}, params: new HttpParams() }); return { config, request: request.clone({ params }) }; } export { configure, reconfigure }; //# sourceMappingURL=ngx-http-configure.js.map