@anexia/ngx-interceptor-tools
Version:
This library provides a toolset for common http interceptor tasks, like request matching.
60 lines (51 loc) • 1.74 kB
JavaScript
function sanitizeUrlOrFragment(urlOrFragment) {
return String(urlOrFragment)
.replace(/[:\/&?]/g, '')
.trim();
}
const URL_WITH_PARAMS_SELECTOR = (request) => {
return sanitizeUrlOrFragment(request.urlWithParams);
};
const URL_SELECTOR = (request) => {
return sanitizeUrlOrFragment(request.url);
};
class RegExMatcher {
constructor(patterns, selector = URL_WITH_PARAMS_SELECTOR) {
this.patterns = patterns;
this.selector = selector;
if (patterns.length === 0) {
throw new Error('RegExMatcher provided patterns are empty.');
}
}
match(request) {
const selector = this.selector ? this.selector(request) : '';
return Boolean(this.patterns.filter(pattern => Boolean(pattern.test(selector))).length);
}
}
class UrlFragmentMatcher {
constructor(urlFragments, selector = URL_WITH_PARAMS_SELECTOR) {
this.urlFragments = urlFragments;
this.selector = selector;
}
match(request) {
const selector = this.selector(request);
return Boolean(this.urlFragments.filter(fragment => selector.indexOf(fragment) !== -1).length);
}
}
function requestBodySerializer(request, bodyParams) {
const postBody = [];
bodyParams.forEach(param => {
if (request.body.hasOwnProperty(param)) {
postBody.push(request.body[param]);
}
});
return [postBody.join('_')].join('_');
}
/*
* Public API Surface of ngx-interceptor-tools
*/
/**
* Generated bundle index. Do not edit.
*/
export { RegExMatcher, URL_SELECTOR, URL_WITH_PARAMS_SELECTOR, UrlFragmentMatcher, requestBodySerializer, sanitizeUrlOrFragment };
//# sourceMappingURL=anexia-ngx-interceptor-tools.js.map