X-Git-Url: http://git.squeep.com/?p=squeep-api-dingus;a=blobdiff_plain;f=lib%2Fcommon.js;h=ff68e9d7ac7b5ea5258ce1aab70cb99f991d037f;hp=284427a7bd769742eafda2838b66275951a25de3;hb=c980310d2de988d5f4e3c932eb77ebe83daa27b9;hpb=29837f0eeb9fcb4c53426e5bd89e9bdf7e9d961b diff --git a/lib/common.js b/lib/common.js index 284427a..ff68e9d 100644 --- a/lib/common.js +++ b/lib/common.js @@ -227,6 +227,10 @@ const nullLogger = { debug: nop, }; +/** + * Populates any absent logger levels. + * @param {Object} logger + */ const ensureLoggerLevels = (logger = {}) => { for (const level in nullLogger) { if (! (level in logger)) { @@ -236,22 +240,43 @@ const ensureLoggerLevels = (logger = {}) => { return logger; }; +/** + * Merges folded header lines + * @param {String[]} lines + */ +const unfoldHeaderLines = (lines) => { + const foldedLineRE = /^(\t| +)(.*)$/; + if (lines) { + lines.reduceRight((_, line, idx) => { + const result = foldedLineRE.exec(line); + if (result && idx) { + const prevIdx = idx - 1; + const mergedLine = `${lines[prevIdx]} ${result[2]}`; + lines.splice(prevIdx, 2, mergedLine); + return mergedLine; + } + }, null); + } + return lines; +}; + module.exports = { + ensureLoggerLevels, fileScope, generateETag, get, handlerLogData, - isClientCached, httpStatusCodeClass, + isClientCached, mergeDeep, mergeEnum, nop, nullLogger, - ensureLoggerLevels, pick, requestId, requestLogData, responseLogData, setOptions, splitFirst, + unfoldHeaderLines, };