{"version":3,"sources":["jsdelivr-header.js","/npm/analogging@1.1.0/index.js"],"names":[],"mappings":"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","file":"/npm/analogging@1.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/analogging@1.1.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.reset = exports.addAppender = exports.getAppender = exports.configure = exports.getLogger = exports.Logger = exports.MemoryAppender = exports.ConsoleAppender = exports.BaseAppender = exports.DefaultFormatter = exports.LogLevel = void 0;\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n    LogLevel[LogLevel[\"All\"] = 0] = \"All\";\r\n    LogLevel[LogLevel[\"Trace\"] = 1] = \"Trace\";\r\n    LogLevel[LogLevel[\"Debug\"] = 2] = \"Debug\";\r\n    LogLevel[LogLevel[\"Info\"] = 3] = \"Info\";\r\n    LogLevel[LogLevel[\"Warn\"] = 4] = \"Warn\";\r\n    LogLevel[LogLevel[\"Error\"] = 5] = \"Error\";\r\n    LogLevel[LogLevel[\"Fatal\"] = 6] = \"Fatal\";\r\n    LogLevel[LogLevel[\"None\"] = 7] = \"None\";\r\n})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));\r\n/**\r\n * Default IFormatter implementation. Writes a timestamp, the log level and user defined messages\r\n */\r\nclass DefaultFormatter {\r\n    format(logger, level, ...data) {\r\n        const ts = new Date();\r\n        const name = logger.name ? ` [${logger.name}]` : \"\";\r\n        return `[${ts.toISOString()}] [${LogLevel[level]}]${name}${this.getMessage(...data)}`;\r\n    }\r\n    getMessage(...data) {\r\n        return data.reduce((prev, cur) => {\r\n            return prev + \" \" + ((typeof cur === \"string\") ? cur : JSON.stringify(cur));\r\n        }, \"\");\r\n    }\r\n}\r\nexports.DefaultFormatter = DefaultFormatter;\r\nconst DEFAULT_FORMATTER = new DefaultFormatter();\r\n/**\r\n * Abstract base class for implementing IAppender\r\n */\r\nclass BaseAppender {\r\n    constructor(param1, param2) {\r\n        this._level = LogLevel.All;\r\n        if (typeof param1 === \"undefined\") {\r\n            this._formatter = DEFAULT_FORMATTER;\r\n        }\r\n        else if (typeof param1 === \"number\") {\r\n            this._level = param1;\r\n            this._formatter = param2 || DEFAULT_FORMATTER;\r\n        }\r\n        else {\r\n            this._formatter = param1 || DEFAULT_FORMATTER;\r\n        }\r\n    }\r\n    get formatter() {\r\n        return this._formatter;\r\n    }\r\n    get level() {\r\n        return this._level;\r\n    }\r\n    write(logger, level, ...data) {\r\n        if (this.level <= level) {\r\n            this.writeMessage(this.formatter.format(logger, level, ...data));\r\n        }\r\n    }\r\n}\r\nexports.BaseAppender = BaseAppender;\r\n/**\r\n * An appender that writes log messages to the console\r\n */\r\nclass ConsoleAppender extends BaseAppender {\r\n    writeMessage(message) {\r\n        console.log(message);\r\n    }\r\n}\r\nexports.ConsoleAppender = ConsoleAppender;\r\n/**\r\n * An appender that writes log messages to an array\r\n */\r\nclass MemoryAppender extends BaseAppender {\r\n    constructor() {\r\n        super(...arguments);\r\n        this._buffer = [];\r\n    }\r\n    get buffer() { return this._buffer; }\r\n    /** Clears the buffer */\r\n    reset() {\r\n        this._buffer = [];\r\n    }\r\n    writeMessage(message) {\r\n        this._buffer.push(message);\r\n    }\r\n}\r\nexports.MemoryAppender = MemoryAppender;\r\nclass Logger {\r\n    /**\r\n     * Creates a new Logger instance. Don't create one directly, use getLogger() instead.\r\n     * @param name Name of the logger\r\n     * @param level Optional level, if not defined will use default logger's level\r\n     * @param appender Optional list of appenders, if not defined will use default logger's appenders\r\n     */\r\n    constructor(name, level = getLogger().level, ...appender) {\r\n        this._name = name;\r\n        this._level = level;\r\n        this._appenders = appender;\r\n        if (this._appenders.length === 0) {\r\n            this._appenders.push(globalAppenders.get(\"\"));\r\n        }\r\n    }\r\n    addAppender(...appender) {\r\n        this._appenders.push(...appender);\r\n    }\r\n    get name() {\r\n        return this._name;\r\n    }\r\n    get level() {\r\n        return this._level;\r\n    }\r\n    get appenders() {\r\n        // return a copy\r\n        return this._appenders; //.slice();\r\n    }\r\n    /** Checks whether the logger is enabled for the trace level */\r\n    get isTraceEnabled() {\r\n        return (this.level <= LogLevel.Trace);\r\n    }\r\n    /** Checks whether the logger is enabled for the debug level */\r\n    get isDebugEnabled() {\r\n        return (this.level <= LogLevel.Debug);\r\n    }\r\n    /** Checks whether the logger is enabled for the info level */\r\n    get isInfoEnabled() {\r\n        return (this.level <= LogLevel.Info);\r\n    }\r\n    /** Checks whether the logger is enabled for the warn level */\r\n    get isWarnEnabled() {\r\n        return (this.level <= LogLevel.Warn);\r\n    }\r\n    /** Checks whether the logger is enabled for the error level */\r\n    get isErrorEnabled() {\r\n        return (this.level <= LogLevel.Error);\r\n    }\r\n    /** Checks whether the logger is enabled for the fatal level */\r\n    get isFatalEnabled() {\r\n        return (this.level <= LogLevel.Fatal);\r\n    }\r\n    /** Checks whether the logger is enabled for all levels */\r\n    get isAllEnabled() {\r\n        return (this.level <= LogLevel.All);\r\n    }\r\n    /** Checks whether the logger is turned off (level set to None) */\r\n    get isOff() {\r\n        return (this.level >= LogLevel.None);\r\n    }\r\n    /** Checks whether the logger is enabled for the specified level */\r\n    isEnabled(level) {\r\n        return this.level <= level;\r\n    }\r\n    /** Logs a message at the trace level */\r\n    trace(...data) {\r\n        this.log(LogLevel.Trace, ...data);\r\n    }\r\n    /** Logs a message at the debug level */\r\n    debug(...data) {\r\n        this.log(LogLevel.Debug, ...data);\r\n    }\r\n    /** Logs a message at the info level */\r\n    info(...data) {\r\n        this.log(LogLevel.Info, ...data);\r\n    }\r\n    /** Logs a message at the warn level */\r\n    warn(...data) {\r\n        this.log(LogLevel.Warn, ...data);\r\n    }\r\n    /** Logs a message at the error level */\r\n    error(...data) {\r\n        this.log(LogLevel.Error, ...data);\r\n    }\r\n    /** Logs a message at the fatal level */\r\n    fatal(...data) {\r\n        this.log(LogLevel.Fatal, ...data);\r\n    }\r\n    /** Logs a message at the specified level */\r\n    log(level, ...data) {\r\n        if (this.level <= level) {\r\n            this.writeToAppenders(level, ...data);\r\n        }\r\n    }\r\n    writeToAppenders(level, ...data) {\r\n        this._appenders.forEach(a => a.write(this, level, ...this.processData(...data)));\r\n    }\r\n    processData(...data) {\r\n        return data.map(value => (typeof value === \"function\") ? value() : value);\r\n    }\r\n}\r\nexports.Logger = Logger;\r\nconst globalLoggers = new Map();\r\nconst globalAppenders = new Map();\r\nlet defaultLogger;\r\nlet defaultAppender = new ConsoleAppender();\r\nfunction addLogger(name, level, ...appender) {\r\n    const logger = new Logger(name, level, ...appender);\r\n    globalLoggers.set(name, logger);\r\n    if (name === \"\") {\r\n        defaultLogger = logger;\r\n    }\r\n    return logger;\r\n}\r\nfunction getLogger(param1, level) {\r\n    const param1IsName = typeof param1 === \"string\";\r\n    const name = param1IsName ? param1 : \"\";\r\n    let logger = globalLoggers.get(name);\r\n    if (!logger) {\r\n        // If it doesn't exist add it\r\n        if (!defaultLogger) {\r\n            // Add the default logger if not exists\r\n            addLogger(\"\", LogLevel.All);\r\n        }\r\n        if (!param1IsName && typeof param1 === \"number\") {\r\n            level = param1;\r\n        }\r\n        else if (!Number.isFinite(level)) {\r\n            // If level not defined set to default level\r\n            level = defaultLogger.level;\r\n        }\r\n        logger = addLogger(name, level, ...defaultLogger.appenders);\r\n    }\r\n    return logger;\r\n}\r\nexports.getLogger = getLogger;\r\n/**\r\n * Configures AnaLog defaults at startup\r\n */\r\nfunction configure(config) {\r\n    if (config.appenders) {\r\n        config.appenders.forEach(appenderCfg => {\r\n            addAppender(appenderCfg.name, appenderCfg.appender);\r\n        });\r\n    }\r\n    config.loggers.forEach(logCfg => {\r\n        let appenders;\r\n        if (logCfg.appenders && logCfg.appenders.length) {\r\n            appenders = logCfg.appenders.map(appdr => typeof appdr === \"string\" ? globalAppenders.get(appdr) : appdr);\r\n        }\r\n        else if (defaultLogger) {\r\n            appenders = defaultLogger.appenders;\r\n        }\r\n        else {\r\n            appenders = [defaultAppender];\r\n        }\r\n        addLogger(logCfg.name, logCfg.level, ...appenders);\r\n    });\r\n}\r\nexports.configure = configure;\r\n/**\r\n * Gets a global appender by name\r\n */\r\nfunction getAppender(name) {\r\n    return globalAppenders.get(name);\r\n}\r\nexports.getAppender = getAppender;\r\n/**\r\n * Adds a global appender\r\n */\r\nfunction addAppender(name, appender) {\r\n    globalAppenders.set(name, appender);\r\n}\r\nexports.addAppender = addAppender;\r\n/**\r\n * Resets the AnaLog system back to nothing\r\n */\r\nfunction reset() {\r\n    globalLoggers.clear();\r\n    globalAppenders.clear();\r\n    globalAppenders.set(\"\", defaultAppender);\r\n    defaultLogger = undefined;\r\n}\r\nexports.reset = reset;\r\nreset();\r\n"]}