UNPKG

bottender-compose

Version:

An utility library for bottender and higher-order handlers

50 lines (43 loc) 1.17 kB
"use strict"; const { isValidTemplate, compileTemplate } = require('./utils'); function createLoggerAction(fn, name) { return (...args) => { const Action = (context, props) => fn(...args.map(arg => { if (typeof arg === 'function') { return arg(context, props); } if (typeof arg === 'string' && isValidTemplate(arg)) { return compileTemplate(arg)(context); } return arg; })); const firstArg = args[0]; const actionName = firstArg && typeof firstArg === 'string' ? `${name}(${firstArg.length > 15 ? `${firstArg.slice(0, 15)}...` : args})` : name; Object.defineProperty(Action, 'name', { value: actionName }); return Action; }; } function createLogger(adapter) { return { log: createLoggerAction(adapter.log, 'Log'), info: createLoggerAction(adapter.info, 'Info'), warn: createLoggerAction(adapter.warn, 'Warn'), error: createLoggerAction(adapter.error, 'Error') }; } const { log, info, warn, error } = createLogger(console); exports.log = log; exports.info = info; exports.warn = warn; exports.error = error; exports.createLogger = createLogger;