UNPKG

mockm

Version:

Analog interface server, painless parallel development of front and back ends.

122 lines (94 loc) 3.65 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map")); var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each")); var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes")); var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice")); var _reverse = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reverse")); var _trim = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/trim")); var _padStart = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/pad-start")); require(`util`).inspect.defaultOptions.depth = null; // console.log 展开对象 const { inspect } = require(`util`); function print(...argList) { // 用于输出有用信息, 而不是调试信息 const resList = []; (0, _map.default)(argList).call(argList, item => { var _context; const type = isType(item); (0, _forEach.default)(_context = [[`undefined`, ``], [`string`, `number`, item], [`object`, `error`, `array`, inspect(item || ``, false, null, true)]]).call(_context, item2 => { var _context2; return (0, _includes.default)(_context2 = (0, _slice.default)(item2).call(item2, 0, -1)).call(_context2, type) && resList.push((0, _reverse.default)(item2).call(item2)[0]); }); }); console._log ? console._log(...resList) : console.log(...resList); } function logHelper(isUse = true) { // 重写 console.log 方法, 打印时附带日期, 所在行 if (isUse === false) { console.log = console._log ? console._log : console.log; return; } const log = console.log; console._log = log; console.log = (...arg) => { var _context3; const getStackTrace = () => { const obj = {}; Error.captureStackTrace(obj, getStackTrace); return obj.stack; }; const stack = getStackTrace() || ``; const matchResult = stack.match(/\s+at .*/g) || []; const line = (0, _trim.default)(_context3 = `${matchResult[1]}`.replace(/^\s+at /, ``)).call(_context3); if ( // 重写时忽略的调用栈路径 line.match(/node_modules/)) { log(...arg); return undefined; } else { log(dateFormat(`YYYY-MM-DD hh:mm:ss`, new Date())); log(`> ${line}`); log(...arg); } }; } /** * 时间格式化 * @param {string} fmt 格式 * @param {Date} date 时间对象 */ function dateFormat(fmt, date) { let ret; const opt = { 'Y+': date.getFullYear().toString(), // 年 'M+': (date.getMonth() + 1).toString(), // 月 'D+': date.getDate().toString(), // 日 'h+': date.getHours().toString(), // 时 'm+': date.getMinutes().toString(), // 分 's+': date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = new RegExp(`(${k})`).exec(fmt); if (ret) { var _context4; fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : (0, _padStart.default)(_context4 = opt[k]).call(_context4, ret[1].length, `0`)); } } return fmt; } function isType(data, type = undefined) { // 判断数据是否为 type, 或返回 type const dataType = Object.prototype.toString.call(data).match(/\s(.+)]/)[1].toLowerCase(); return type ? dataType === type.toLowerCase() : dataType; } module.exports = { logHelper, print };