{"ast":null,"code":"/* eslint-disable no-console */\n/**\n * Logger used throughout the application to allow configuration of\n * the log level required for the messages.\n */\nexport class Logger {\n static _CheckLimit(message, limit) {\n let entry = Logger._LogLimitOutputs[message];\n if (!entry) {\n entry = {\n limit,\n current: 1\n };\n Logger._LogLimitOutputs[message] = entry;\n } else {\n entry.current++;\n }\n return entry.current <= entry.limit;\n }\n static _GenerateLimitMessage(message, level = 1) {\n const entry = Logger._LogLimitOutputs[message];\n if (!entry || !Logger.MessageLimitReached) {\n return;\n }\n const type = this._Levels[level];\n if (entry.current === entry.limit) {\n var _type$name;\n Logger[type.name](Logger.MessageLimitReached.replace(/%LIMIT%/g, \"\" + entry.limit).replace(/%TYPE%/g, (_type$name = type.name) !== null && _type$name !== void 0 ? _type$name : \"\"));\n }\n }\n static _AddLogEntry(entry) {\n Logger._LogCache = entry + Logger._LogCache;\n if (Logger.OnNewCacheEntry) {\n Logger.OnNewCacheEntry(entry);\n }\n }\n static _FormatMessage(message) {\n const padStr = i => i < 10 ? \"0\" + i : \"\" + i;\n const date = new Date();\n return \"[\" + padStr(date.getHours()) + \":\" + padStr(date.getMinutes()) + \":\" + padStr(date.getSeconds()) + \"]: \" + message;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n static _LogDisabled(message, limit) {\n // nothing to do\n }\n static _LogEnabled(level = 1, message, limit) {\n // take first message if array\n const msg = Array.isArray(message) ? message[0] : message;\n if (limit !== undefined && !Logger._CheckLimit(msg, limit)) {\n return;\n }\n const formattedMessage = Logger._FormatMessage(msg);\n const type = this._Levels[level];\n const optionals = Array.isArray(message) ? message.slice(1) : [];\n type.logFunc && type.logFunc(\"BJS - \" + formattedMessage, ...optionals);\n const entry = `