* Here are some replacers for rendering peculiar entities as JSON suitable for logging.
*/
-const http = require('http');
-
-/**
- * @typedef {Object} ReplacerResult
- * @property {Boolean} replaced
- * @property {*} value
- */
-
-
-/**
- * template for replacers
- * @param {String} _key
- * @param {*} value
- * @returns {ReplacerResult}
- */
-/* istanbul ignore next */
-function _replacer(_key, value) {
- let replaced = false;
-
- if (undefined) { // eslint-disable-line no-constant-condition
- replaced = true;
-
- const newValue = Object.assign({}, value);
-
- value = newValue;
- }
- return { replaced, value };
-}
-
+const http = require('node:http');
/**
* Convert any Error to a plain Object.
* @param {String} _key
* @param {*} value
- * @returns {ReplacerResult}
+ * @returns {Object}
*/
function replacerError(_key, value) {
- let replaced = false;
if (value instanceof Error) {
- replaced = true;
const newValue = {};
Object.getOwnPropertyNames(value).forEach((propertyName) => newValue[propertyName] = value[propertyName]); // eslint-disable-line security/detect-object-injection
value = newValue;
}
- return { replaced, value };
+ return value;
}
* Convert any BigInt type to a String.
* @param {String} _key
* @param {*} value
- * @returns {ReplacerResult}
+ * @returns {String}
*/
function replacerBigInt(_key, value) {
- let replaced = false;
if (typeof value === 'bigint') {
- replaced = true;
value = value.toString();
}
- return { replaced, value };
+ return value;
}
* this object.
* @param {String} _key
* @param {*} value
- * @returns {ReplacerResult}
+ * @returns {Object}
*/
function replacerHttpIncomingMessage(_key, value) {
- let replaced = false;
if (value instanceof http.IncomingMessage) {
- replaced = true;
const newValue = {};
[
'method',
}
value = newValue;
}
- return { replaced, value };
+ return value;
}
* Convert any ServerResponse or OutgoingMessage to a subset Object.
* @param {String} _key
* @param {*} value
- * @returns {ReplacerResult}
+ * @returns {Object}
*/
function replacerHttpServerResponse(_key, value) {
- let replaced = false;
if (value instanceof http.OutgoingMessage || value instanceof http.ServerResponse) {
- replaced = true;
const newValue = {};
[
'statusCode',
'statusMessage',
- ].forEach((property) => newValue[property] = value[property]); // eslint-disable-line security/detect-object-injection
+ ].forEach((property) => newValue[property] = value[property]); // eslint-disable-line security/detect-object-injection
newValue.headers = value.getHeaders();
value = newValue;
}
- return { replaced, value };
+ return value;
}