diff --git a/server.js b/server.js index feaa683..8993041 100644 --- a/server.js +++ b/server.js @@ -105,7 +105,7 @@ function parseLogLines(data) { logLines.forEach((line, index) => { if (line.trim() !== '') { try { - let unescapedLine = line.replace(/\\\\"/g, '\\"'); + let unescapedLine = line.replace(/\\\\"/g, '"'); unescapedLine = unescapedLine.replace(/\\n/g, '\n'); unescapedLine = unescapedLine.replace(/\\t/g, '\t'); unescapedLine = unescapedLine.replace(/\\r/g, '\r'); @@ -113,7 +113,22 @@ function parseLogLines(data) { unescapedLine = unescapedLine.replace(/\\&/g, '&'); unescapedLine = unescapedLine.replace(/\\b/g, '\b'); unescapedLine = unescapedLine.replace(/\\f/g, '\f'); - const parsedLog = JSON.parse(unescapedLine, (key, value) => { + // Remove the wrapping quotes from the JSON string + unescapedLine = unescapedLine.replace(/^"|"$/g, ''); + // Replace escaped double quotes with unescaped double quotes + unescapedLine = unescapedLine.replace(/\\"/g, '"'); + // Replace escaped backslashes with a single backslash + unescapedLine = unescapedLine.replace(/\\\\/g, '\\'); + // Now parse the JSON + const parsedLog = JSON.parse(unescapedLine); + validLogs.push(parsedLog); + } catch (parseError) { + console.error(`Error parsing log line at index ${index}: ${parseError.message}`); + } + } + }); + + return validLogs; if (typeof value === 'string') { try { return JSON.parse(value);