uTools-quickcommand/plugin/lib/beautifyLog.js
2022-04-27 13:13:09 +08:00

46 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let itemPropCaches = [];
let parseEveryItem = item => {
if (typeof item === "undefined") return "undefined"
if (typeof item === "number") return item
if (typeof item !== "object") return item.toString()
if (Buffer.isBuffer(item)) {
var bufferString = `[Buffer ${item.slice(0, 50).toString('hex').match(/\w{1,2}/g).join(" ")}`;
if (item.length > 50) bufferString += `...${(item.length / 1000).toFixed(2)} kb `;
return bufferString + ']'
}
if (item instanceof ArrayBuffer) return `ArrayBuffer(${item.byteLength})`;
if (item instanceof Blob) return `Blob { size: ${item.size}, type: "${item.type}" }`;
try {
var result = item.constructor();
for (const key in item) {
if (typeof item[key] === 'function') result[key] = liteFuntcion(item[key])
else if (typeof item[key] === 'object') {
if (itemPropCaches.includes(item[key])) result[key] = `[Circular]`
else {
itemPropCaches.push(item[key]);
result[key] = parseEveryItem(item[key])
}
} else {
result[key] = item[key] || 'undefined'
}
}
itemPropCaches = []
return result
} catch (error) {
console.log(error);
return item.toString()
}
}
let liteFuntcion = fn => {
return `[Function: ${fn.name ? fn.name : '(anonymous)'}]`
}
let beautifyLog = item => {
let result = parseEveryItem(item)
return typeof result === 'object' ? JSON.stringify(result, null, 2) : result
}
module.exports = beautifyLog;