UNPKG

next

Version:

The React Framework

171 lines (169 loc) • 5.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { formatConsoleArgs: null, parseConsoleArgs: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { formatConsoleArgs: function() { return formatConsoleArgs; }, parseConsoleArgs: function() { return parseConsoleArgs; } }); const _interop_require_default = require("@swc/helpers/_/_interop_require_default"); const _iserror = /*#__PURE__*/ _interop_require_default._(require("../../lib/is-error")); function formatObject(arg, depth) { switch(typeof arg){ case 'object': if (arg === null) { return 'null'; } else if (Array.isArray(arg)) { let result = '['; if (depth < 1) { for(let i = 0; i < arg.length; i++){ if (result !== '[') { result += ','; } if (Object.prototype.hasOwnProperty.call(arg, i)) { result += formatObject(arg[i], depth + 1); } } } else { result += arg.length > 0 ? '...' : ''; } result += ']'; return result; } else if (arg instanceof Error) { return arg + ''; } else { const keys = Object.keys(arg); let result = '{'; if (depth < 1) { for(let i = 0; i < keys.length; i++){ const key = keys[i]; const desc = Object.getOwnPropertyDescriptor(arg, 'key'); if (desc && !desc.get && !desc.set) { const jsonKey = JSON.stringify(key); if (jsonKey !== '"' + key + '"') { result += jsonKey + ': '; } else { result += key + ': '; } result += formatObject(desc.value, depth + 1); } } } else { result += keys.length > 0 ? '...' : ''; } result += '}'; return result; } case 'string': return JSON.stringify(arg); default: return String(arg); } } function formatConsoleArgs(args) { let message; let idx; if (typeof args[0] === 'string') { message = args[0]; idx = 1; } else { message = ''; idx = 0; } let result = ''; let startQuote = false; for(let i = 0; i < message.length; ++i){ const char = message[i]; if (char !== '%' || i === message.length - 1 || idx >= args.length) { result += char; continue; } const code = message[++i]; switch(code){ case 'c': { // TODO: We should colorize with HTML instead of turning into a string. // Ignore for now. result = startQuote ? "" + result + "]" : "[" + result; startQuote = !startQuote; idx++; break; } case 'O': case 'o': { result += formatObject(args[idx++], 0); break; } case 'd': case 'i': { result += parseInt(args[idx++], 10); break; } case 'f': { result += parseFloat(args[idx++]); break; } case 's': { result += String(args[idx++]); break; } default: result += '%' + code; } } for(; idx < args.length; idx++){ result += (idx > 0 ? ' ' : '') + formatObject(args[idx], 0); } return result; } function parseConsoleArgs(args) { // See // https://github.com/facebook/react/blob/65a56d0e99261481c721334a3ec4561d173594cd/packages/react-devtools-shared/src/backend/flight/renderer.js#L88-L93 // // Logs replayed from the server look like this: // [ // "%c%s%c %o\n\n%s\n\n%s\n", // "background: #e6e6e6; ...", // " Server ", // can also be e.g. " Prerender " // "", // Error, // "The above error occurred in the <Page> component.", // ... // ] if (args.length > 3 && typeof args[0] === 'string' && args[0].startsWith('%c%s%c ') && typeof args[1] === 'string' && typeof args[2] === 'string' && typeof args[3] === 'string') { const environmentName = args[2]; const maybeError = args[4]; return { environmentName: environmentName.trim(), error: (0, _iserror.default)(maybeError) ? maybeError : null }; } return { environmentName: null, error: null }; } if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=console.js.map