X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fcommon.js;h=6b72129223cf88e8248706afa5679f853eb5d5ae;hb=1b2868b99eba20b50d88a0d858bcd8c51c5b8f07;hp=60e0d20a24ef7008cc189b5103e03278ce6e7302;hpb=446a6e8fa160483e1c48a575e60a636c9f37927a;p=squeep-api-dingus diff --git a/lib/common.js b/lib/common.js index 60e0d20..6b72129 100644 --- a/lib/common.js +++ b/lib/common.js @@ -5,29 +5,10 @@ * Utility and miscellaneous functions. */ -const path = require('path'); -const crypto = require('crypto'); +const crypto = require('node:crypto'); const uuid = require('uuid'); const Enum = require('./enum'); - -/** - * @callback ScopeFn - * @param {String} scope - * @returns {String} - */ -/** - * Return a function which prefixes a provided scope with the most- - * relevant part of the filename, for use in logging. - * @param {String} filename - * @returns {ScopeFn} - */ -const fileScope = (filename) => { - let fScope = path.basename(filename, '.js'); - if (fScope === 'index') { - fScope = path.basename(path.dirname(filename)); - } - return (scope) => `${fScope}:${scope}`; -}; +const { fileScope } = require('@squeep/log-helper'); /** * Simple ETag from data. @@ -55,18 +36,6 @@ const generateETag = (_filePath, fileStat, fileData) => { */ const get = (obj, prop, def) => obj && prop && (prop in obj) ? obj[prop] : def; -/** - * @param {http.ClientRequest} req - * @param {http.ServerResponse} res - * @param {Object} ctx - * @deprecated after v1.2.5 (integrated into logger module) - */ -const handlerLogData = (req, res, ctx) => ({ - req: requestLogData(req), - res: responseLogData(res), - ctx, -}); - /** * Determine whether a client has already requested a resource, * based on If-Modified-Since and If-None-Match headers. @@ -171,71 +140,6 @@ const pick = (obj, props) => { return picked; }; -/** - * Return a subset of a request object, suitable for logging. - * Obscures sensitive header values. - * @param {http.ClientRequest} req - * @deprecated after v1.2.5 (integrated into logger module) - */ -const requestLogData = (req) => { - const data = pick(req, [ - 'method', - 'url', - 'httpVersion', - 'headers', - 'trailers', - ]); - scrubHeaderObject(data); - return data; -}; - - -/** - * Remove sensitive header data. - * @param {Object} data - * @param {Object} data.headers - * @deprecated after v1.2.5 (integrated into logger module) - */ -const scrubHeaderObject = (data) => { - if (data?.headers && 'authorization' in data.headers) { - data.headers = Object.assign({}, data.headers, { - authorization: obscureAuthorizationHeader(data.headers['authorization']), - }); - } -}; - - -/** - * Hide sensitive part of an Authorization header. - * @param {String} authHeader - * @returns {String} - * @deprecated after v1.2.5 (integrated into logger module) - */ -const obscureAuthorizationHeader = (authHeader) => { - if (!authHeader) { - return authHeader; - } - const space = authHeader.indexOf(' '); - // This blurs entire string if no space found, because -1. - return authHeader.slice(0, space + 1) + '*'.repeat(authHeader.length - (space + 1)); -}; - - -/** - * Return a subset of a response object, suitable for logging. - * @param {http.ServerResponse} res - * @deprecated after v1.2.5 (integrated into logger module) - */ -const responseLogData = (res) => { - const response = pick(res, [ - 'statusCode', - 'statusMessage', - ]); - response.headers = res.getHeaders(); - return response; -}; - - /** * Store all properties in defaultOptions on target from either options or defaultOptions. * @param {Object} target @@ -269,36 +173,6 @@ const requestId = () => { return uuid.v1(); }; -/** - * Do nothing. - */ -const nop = () => { /**/ }; - -/** - * A logger object which does nothing. - */ -const nullLogger = { - error: nop, - warn: nop, - info: nop, - log: nop, - debug: nop, -}; - -/** - * Populates any absent logger level functions on a logger object. - * @param {Object} logger - * @returns {Object} - */ -const ensureLoggerLevels = (logger = {}) => { - for (const level in nullLogger) { - if (! (level in logger)) { - logger[level] = nullLogger[level]; - } - } - return logger; -}; - /** * Merges folded header lines * @param {String[]} lines @@ -307,7 +181,7 @@ const ensureLoggerLevels = (logger = {}) => { const unfoldHeaderLines = (lines) => { const foldedLineRE = /^(\t| +)(.*)$/; if (lines) { - lines.reduceRight((_, line, idx) => { + lines.reduceRight((_, line, idx) => { // NOSONAR const result = foldedLineRE.exec(line); if (result && idx) { const prevIdx = idx - 1; @@ -321,23 +195,15 @@ const unfoldHeaderLines = (lines) => { }; module.exports = { - ensureLoggerLevels, fileScope, generateETag, get, - handlerLogData, httpStatusCodeClass, isClientCached, mergeDeep, mergeEnum, - nop, - nullLogger, - obscureAuthorizationHeader, pick, requestId, - requestLogData, - responseLogData, - scrubHeaderObject, setOptions, splitFirst, unfoldHeaderLines,