msw-snapshot
Version:
Transparently create an API cache for testing.
102 lines • 2.88 kB
JavaScript
/**
* Mask the specified object field.
*/
export function maskBody(body, specifiers) {
if (body instanceof FormData) {
return maskFormData(body, specifiers);
}
else if (body instanceof URLSearchParams) {
return maskURLSearchParams(body, specifiers);
}
else if (typeof body === 'object' && body) {
return maskJSON(body, specifiers);
}
else if (typeof body === 'string') {
// Special support for JSON-string.
try {
return JSON.stringify(maskJSON(JSON.parse(body), specifiers));
}
catch (e) {
}
}
return body;
}
/**
* Mask specified header fields.
*/
export function maskHeaders(headers, specifiers) {
var maskedHeaders = new Headers();
headers.forEach(function (val, key) {
if (!specifiers.some(function (specifier) { return matchField(specifier, key); })) {
maskedHeaders.append(key, val);
}
else {
maskedHeaders.append(key, '*****');
}
});
return maskedHeaders;
}
/**
* Mask specified search params.
*/
export function maskURLSearchParams(searchParams, specifiers) {
var maskedSearchParams = new URLSearchParams();
searchParams.forEach(function (value, key) {
if (!specifiers.some(function (specifier) { return matchField(specifier, key); })) {
maskedSearchParams.append(key, value);
}
else {
maskedSearchParams.append(key, '*****');
}
});
return maskedSearchParams;
}
/**
* Mask specified search params.
*/
export function maskJSON(json, specifiers) {
if (json === null || Array.isArray(json) || typeof json !== 'object') {
return json;
}
var maskedJSON = {};
var _loop_1 = function (key, val) {
if (!specifiers.some(function (specifier) { return matchField(specifier, key); })) {
maskedJSON[key] = maskJSON(val, specifiers);
}
else {
maskedJSON[key] = '*****';
}
};
for (var _i = 0, _a = Object.entries(json); _i < _a.length; _i++) {
var _b = _a[_i], key = _b[0], val = _b[1];
_loop_1(key, val);
}
return maskedJSON;
}
/**
* Mask specified form data.
*/
export function maskFormData(formData, specifiers) {
var maskedFormData = new FormData();
formData.forEach(function (value, key) {
if (!specifiers.some(function (specifier) { return matchField(specifier, key); })) {
maskedFormData.append(key, value);
}
else {
maskedFormData.append(key, '*****');
}
});
return maskedFormData;
}
/**
* Match the specified field.
*/
function matchField(specifier, field) {
if (typeof specifier === 'string') {
return specifier === field;
}
else {
return specifier.test(field);
}
}
//# sourceMappingURL=mask.js.map