function typof(v: unknown) { var s = Object.prototype.toString.call(v) return s.substring(8, s.length - 1) } function isDebugMode() { // @ts-expect-error return typeof __channelId__ === 'string' && __channelId__ } function jsonStringifyReplacer(key: string, value: unknown) { switch (typof(value)) { case 'Function': return 'function() { [native code] }' default: return value } } type LogType = 'log' | 'info' | 'warn' | 'error' // export function log(type: LogType) { // for ( // var _len = arguments.length, // args = new Array(_len > 1 ? _len - 1 : 0), // _key = 1; // _key < _len; // _key++ // ) { // args[_key - 1] = arguments[_key] // } // console[type].apply(console, args) // } export default function formatLog() { for ( var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++ ) { args[_key] = arguments[_key] } var type = args.shift() as LogType if (isDebugMode()) { args.push(args.pop().replace('at ', 'uni-app:///')) return console[type].apply(console, args) } var msgs = args.map(function (v) { var type = Object.prototype.toString.call(v).toLowerCase() if (type === '[object object]' || type === '[object array]') { try { v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---' } catch (e) { v = type } } else { if (v === null) { v = '---NULL---' } else if (v === undefined) { v = '---UNDEFINED---' } else { var vType = typof(v).toUpperCase() if (vType === 'NUMBER' || vType === 'BOOLEAN') { v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---' } else { v = String(v) } } } return v }) var msg = '' if (msgs.length > 1) { var lastMsg = msgs.pop() msg = msgs.join('---COMMA---') if (lastMsg.indexOf(' at ') === 0) { msg += lastMsg } else { msg += '---COMMA---' + lastMsg } } else { msg = msgs[0] } console[type](msg) }