| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import LogParser from 'libs/latex-log-parser'
- import ruleset from './HumanReadableLogsRules'
- export default {
- parse(rawLog, options) {
- let parsedLogEntries
- if (typeof rawLog === 'string') {
- parsedLogEntries = LogParser.parse(rawLog, options)
- } else {
- parsedLogEntries = rawLog
- }
- const _getRule = function(logMessage) {
- for (let rule of ruleset) {
- if (rule.regexToMatch.test(logMessage)) {
- return rule
- }
- }
- }
- const seenErrorTypes = {} // keep track of types of errors seen
- for (let entry of parsedLogEntries.all) {
- const ruleDetails = _getRule(entry.message)
- if (ruleDetails != null) {
- var type
- if (ruleDetails.ruleId != null) {
- entry.ruleId = ruleDetails.ruleId
- } else if (ruleDetails.regexToMatch != null) {
- entry.ruleId = `hint_${ruleDetails.regexToMatch
- .toString()
- .replace(/\s/g, '_')
- .slice(1, -1)}`
- }
- if (ruleDetails.newMessage != null) {
- entry.message = entry.message.replace(
- ruleDetails.regexToMatch,
- ruleDetails.newMessage
- )
- }
- // suppress any entries that are known to cascade from previous error types
- if (ruleDetails.cascadesFrom != null) {
- for (type of ruleDetails.cascadesFrom) {
- if (seenErrorTypes[type]) {
- entry.suppressed = true
- }
- }
- }
- // record the types of errors seen
- if (ruleDetails.types != null) {
- for (type of ruleDetails.types) {
- seenErrorTypes[type] = true
- }
- }
- if (ruleDetails.humanReadableHint != null) {
- entry.humanReadableHint = ruleDetails.humanReadableHint
- }
- if (ruleDetails.humanReadableHintComponent != null) {
- entry.humanReadableHintComponent =
- ruleDetails.humanReadableHintComponent
- }
- if (ruleDetails.extraInfoURL != null) {
- entry.extraInfoURL = ruleDetails.extraInfoURL
- }
- }
- }
- // filter out the suppressed errors (from the array entries in parsedLogEntries)
- for (let key in parsedLogEntries) {
- const errors = parsedLogEntries[key]
- if (typeof errors === 'object' && errors.length > 0) {
- parsedLogEntries[key] = Array.from(errors).filter(
- err => !err.suppressed
- )
- }
- }
- return parsedLogEntries
- }
- }
|