1. /**
  2. * Splits log entries into an array of objects for hypothesis validation,
  3. * with basic input validation.
  4. *
  5. * @param {string} logData - A string containing log entries, one per line.
  6. * @param {string} delimiter - The delimiter separating fields within each log entry (e.g., comma, pipe).
  7. * @returns {Array<object>} - An array of objects, where each object represents a log entry
  8. * and contains its fields. Returns an empty array if logData is invalid.
  9. */
  10. function parseLogData(logData, delimiter = ',') {
  11. if (typeof logData !== 'string' || logData.length === 0) {
  12. console.warn("Invalid logData: Must be a non-empty string.");
  13. return [];
  14. }
  15. const lines = logData.split('\n');
  16. const parsedData = [];
  17. for (const line of lines) {
  18. if (!line.trim()) continue; // Skip empty lines
  19. const fields = line.split(delimiter).map(field => field.trim());
  20. if (fields.length < 2) { // Require at least two fields (e.g., timestamp, message)
  21. console.warn(`Skipping invalid line: ${line}. Insufficient fields.`);
  22. continue;
  23. }
  24. const entry = {};
  25. entry.timestamp = fields[0]; // Assuming first field is timestamp
  26. entry.message = fields.slice(1).join(delimiter); // Remaining fields as message
  27. //Basic validation (example: checking for non-empty message)
  28. if (!entry.message) {
  29. console.warn(`Skipping entry: ${line}. Empty message.`);
  30. continue;
  31. }
  32. parsedData.push(entry);
  33. }
  34. return parsedData;
  35. }

Add your comment