UNPKG

msw-snapshot

Version:

Transparently create an API cache for testing.

102 lines 2.88 kB
/** * 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