{"version":3,"file":"fifo-logger.js","sources":["../node_modules/@lukeed/uuid/dist/index.mjs","../lib-esm/levels.js","../lib-esm/FifoLogger.js"],"sourcesContent":["var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","export const levels = {\n    values: {\n        fatal: 60,\n        error: 50,\n        warn: 40,\n        info: 30,\n        debug: 20,\n        trace: 10,\n        silent: 0,\n    },\n    labels: {\n        0: 'silent',\n        10: 'trace',\n        20: 'debug',\n        30: 'info',\n        40: 'warn',\n        50: 'error',\n        60: 'fatal',\n    },\n};\n//# sourceMappingURL=levels.js.map","import { v4 } from '@lukeed/uuid';\nimport { levels } from './levels';\n/**\n * A FIFO logger that stores the last events in an array.\n */\nexport class FifoLogger {\n    constructor(options = {}) {\n        this.lastID = { id: 0 };\n        this.initialOptions = options;\n        this.uuids = [v4()];\n        this.events = [];\n        this.level = options.level || 'info';\n        this.levelAsNumber = levels.values[this.level];\n        this.limit = options.limit ?? 1000;\n        this.bindings = options.bindings ?? {};\n        this.onChange = options.onChange;\n    }\n    setLevel(level) {\n        this.level = level;\n        this.levelAsNumber = levels.values[level];\n    }\n    setLimit(limit) {\n        this.limit = limit;\n        this.checkSize();\n    }\n    checkSize() {\n        if (this.events.length > this.limit) {\n            this.events.splice(0, this.events.length - this.limit);\n        }\n    }\n    /**\n     * Remove events from the current logger and its children.\n     * @param options\n     */\n    clear() {\n        for (let i = this.events.length - 1; i >= 0; i--) {\n            if (this.events[i].uuids.includes(this.uuids[0])) {\n                this.events.splice(i, 1);\n            }\n        }\n        this.onChange?.(undefined, this.events, { depth: this.uuids.length });\n    }\n    getLogs(options = {}) {\n        const { level, minLevel, includeChildren } = options;\n        let logs = this.events.slice();\n        if (includeChildren) {\n            logs = logs.filter((log) => log.uuids.includes(this.uuids[0]));\n        }\n        else {\n            logs = logs.filter((log) => log.uuids[0] === this.uuids[0]);\n        }\n        if (level) {\n            const levelNumber = Number(levels.values[level]);\n            if (Number.isNaN(levelNumber)) {\n                throw new Error('Invalid level');\n            }\n            logs = logs.filter((log) => log.level === levelNumber);\n        }\n        if (minLevel) {\n            const levelNumber = Number(levels.values[minLevel]);\n            if (Number.isNaN(levelNumber)) {\n                throw new Error('Invalid level');\n            }\n            logs = logs.filter((log) => log.level >= levelNumber);\n        }\n        return logs;\n    }\n    /**\n     * @param bindings: an object of key-value pairs to include in log lines as properties.\n     * @param options: an options object that will override child logger inherited options.\n     */\n    child(bindings) {\n        const newFifoLogger = new FifoLogger(this.initialOptions);\n        newFifoLogger.events = this.events;\n        newFifoLogger.uuids = [v4(), ...this.uuids];\n        newFifoLogger.lastID = this.lastID;\n        newFifoLogger.bindings = { ...this.bindings, ...bindings };\n        return newFifoLogger;\n    }\n    trace(value, message) {\n        addEvent(this, levels.values.trace, value, message);\n    }\n    debug(value, message) {\n        addEvent(this, levels.values.debug, value, message);\n    }\n    info(value, message) {\n        addEvent(this, levels.values.info, value, message);\n    }\n    warn(value, message) {\n        addEvent(this, levels.values.warn, value, message);\n    }\n    error(value, message) {\n        addEvent(this, levels.values.error, value, message);\n    }\n    fatal(value, message) {\n        addEvent(this, levels.values.fatal, value, message);\n    }\n}\nfunction addEvent(logger, level, value, message) {\n    if (level < logger.levelAsNumber)\n        return;\n    const event = {\n        id: ++logger.lastID.id,\n        level,\n        levelLabel: levels.labels[level],\n        time: Date.now(),\n        uuids: logger.uuids,\n    };\n    if (value instanceof Error) {\n        event.message = value.toString();\n        event.error = value;\n        event.meta = { ...logger.bindings };\n    }\n    else if (message !== undefined && typeof value === 'object') {\n        event.message = message;\n        event.meta = { ...logger.bindings, ...value };\n    }\n    else if (message === undefined && typeof value === 'string') {\n        event.message = value;\n        event.meta = { ...logger.bindings };\n    }\n    else {\n        throw new Error('Invalid arguments');\n    }\n    logger.events.push(event);\n    logger.checkSize();\n    if (logger.onChange) {\n        logger.onChange(event, logger.events, { depth: logger.uuids.length });\n    }\n}\n//# sourceMappingURL=FifoLogger.js.map"],"names":["IDX","HEX","BUFFER","toString","substring","v4","i","num","out","Array","Math","random","levels","values","fatal","error","warn","info","debug","trace","silent","labels","FifoLogger","constructor","options","arguments","length","undefined","lastID","id","initialOptions","uuids","events","level","levelAsNumber","limit","bindings","onChange","setLevel","setLimit","checkSize","splice","clear","includes","depth","getLogs","minLevel","includeChildren","logs","slice","filter","log","levelNumber","Number","isNaN","Error","child","newFifoLogger","value","message","addEvent","logger","event","levelLabel","time","Date","now","meta","push"],"mappings":"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"}