UNPKG

@danielkalen/simplybind

Version:

Magically simple, framework-less one-way/two-way data binding for frontend/backend in ~5kb.

117 lines (86 loc) 1.93 kB
export var logLevel = { none: 0, error: 1, warn: 2, info: 3, debug: 4 }; var loggers = {}; var currentLevel = logLevel.none; var appenders = []; var slice = Array.prototype.slice; var loggerConstructionKey = {}; function log(logger, level, args) { var i = appenders.length; var current = void 0; args = slice.call(args); args.unshift(logger); while (i--) { current = appenders[i]; current[level].apply(current, args); } } function debug() { if (currentLevel < 4) { return; } log(this, 'debug', arguments); } function info() { if (currentLevel < 3) { return; } log(this, 'info', arguments); } function warn() { if (currentLevel < 2) { return; } log(this, 'warn', arguments); } function error() { if (currentLevel < 1) { return; } log(this, 'error', arguments); } function connectLogger(logger) { logger.debug = debug; logger.info = info; logger.warn = warn; logger.error = error; } function createLogger(id) { var logger = new Logger(id, loggerConstructionKey); if (appenders.length) { connectLogger(logger); } return logger; } export function getLogger(id) { return loggers[id] || (loggers[id] = createLogger(id)); } export function addAppender(appender) { appenders.push(appender); if (appenders.length === 1) { for (var key in loggers) { connectLogger(loggers[key]); } } } export function setLevel(level) { currentLevel = level; } export var Logger = function () { function Logger(id, key) { if (key !== loggerConstructionKey) { throw new Error('Cannot instantiate "Logger". Use "getLogger" instead.'); } this.id = id; } Logger.prototype.debug = function debug(message) {}; Logger.prototype.info = function info(message) {}; Logger.prototype.warn = function warn(message) {}; Logger.prototype.error = function error(message) {}; return Logger; }();