debug: nop,
};
+/**
+ * Populates any absent logger levels.
+ * @param {Object} logger
+ */
const ensureLoggerLevels = (logger = {}) => {
for (const level in nullLogger) {
if (! (level in 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,
};