@multiplayer-app/session-recorder-common
Version:
Multiplayer Fullstack Session Recorder - opentelemetry
147 lines • 3.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.sensitiveHeaders = exports.sensitiveFields = void 0;
const constants_base_1 = require("../constants/constants.base");
const MAX_DEPTH = 8;
exports.sensitiveFields = [
'password',
'pass',
'passwd',
'pwd',
'token',
'access_token',
'accessToken',
'refresh_token',
'refreshToken',
'secret',
'api_key',
'apiKey',
'authorization',
'auth_token',
'authToken',
'jwt',
'session_id',
'sessionId',
'sessionToken',
'client_secret',
'clientSecret',
'private_key',
'privateKey',
'public_key',
'publicKey',
'key',
'encryption_key',
'encryptionKey',
'credit_card',
'creditCard',
'card_number',
'cardNumber',
'cvv',
'cvc',
'ssn',
'sin',
'pin',
'security_code',
'securityCode',
'bank_account',
'bankAccount',
'iban',
'swift',
'bic',
'routing_number',
'routingNumber',
'license_key',
'licenseKey',
'otp',
'mfa_code',
'mfaCode',
'phone_number',
'phoneNumber',
'email',
'address',
'dob',
'tax_id',
'taxId',
'passport_number',
'passportNumber',
'driver_license',
'driverLicense',
'set-cookie',
'cookie',
'authorization',
'proxyAuthorization',
];
exports.sensitiveHeaders = [
'set-cookie',
'cookie',
'authorization',
'proxyAuthorization',
];
const maskAll = (value, depth = 0) => {
const type = typeof value;
const isObject = type === 'object';
let isArray = false;
if (Array.isArray(value)) {
isArray = true;
}
if (depth > MAX_DEPTH && (isObject || isArray)) {
return undefined;
}
if (isArray) {
return value.map((val) => maskAll(val, depth + 1), value);
}
if (isObject) {
for (const key in value) {
value[key] = maskAll(value[key], depth + 1);
}
return value;
}
if (type === 'string') {
return constants_base_1.MASK_PLACEHOLDER;
}
return value;
};
const maskSelected = (value, keysToMask) => {
const type = typeof value;
const isObject = type === 'object';
const _keysToMask = new Set(keysToMask);
if (Array.isArray(value)) {
return value.map((val) => maskSelected(val, keysToMask), value);
}
if (isObject) {
for (const key in value) {
if (_keysToMask.has(key)) {
value[key] = constants_base_1.MASK_PLACEHOLDER;
}
else {
value[key] = maskSelected(value[key], keysToMask);
}
}
return value;
}
if (type === 'string') {
return value;
}
return value;
};
exports.default = (keysToMask = []) => (value, span) => {
let payloadJson;
try {
payloadJson = JSON.parse(value);
}
catch (_a) {
payloadJson = value;
}
let maskedData;
if (keysToMask.length) {
maskedData = maskSelected(payloadJson, keysToMask);
}
else {
maskedData = maskAll(payloadJson);
}
if (typeof maskedData !== 'string') {
maskedData = JSON.stringify(maskedData);
}
return maskedData;
};
//# sourceMappingURL=mask.js.map
;