UNPKG

msw-snapshot

Version:

Transparently create an API cache for testing.

105 lines 2.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.maskBody = maskBody; exports.maskHeaders = maskHeaders; exports.maskURLSearchParams = maskURLSearchParams; exports.maskJSON = maskJSON; exports.maskFormData = maskFormData; /** * Mask the specified object field. */ 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. */ function maskHeaders(headers, specifiers) { const maskedHeaders = new Headers(); headers.forEach((val, key) => { if (!specifiers.some(specifier => matchField(specifier, key))) { maskedHeaders.append(key, val); } else { maskedHeaders.append(key, '*****'); } }); return maskedHeaders; } /** * Mask specified search params. */ function maskURLSearchParams(searchParams, specifiers) { const maskedSearchParams = new URLSearchParams(); searchParams.forEach((value, key) => { if (!specifiers.some(specifier => matchField(specifier, key))) { maskedSearchParams.append(key, value); } else { maskedSearchParams.append(key, '*****'); } }); return maskedSearchParams; } /** * Mask specified search params. */ function maskJSON(json, specifiers) { if (json === null || Array.isArray(json) || typeof json !== 'object') { return json; } const maskedJSON = {}; for (const [key, val] of Object.entries(json)) { if (!specifiers.some(specifier => matchField(specifier, key))) { maskedJSON[key] = maskJSON(val, specifiers); } else { maskedJSON[key] = '*****'; } } return maskedJSON; } /** * Mask specified form data. */ function maskFormData(formData, specifiers) { const maskedFormData = new FormData(); formData.forEach((value, key) => { if (!specifiers.some(specifier => 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