.
This commit is contained in:
+177
@@ -0,0 +1,177 @@
|
||||
"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);
|
||||
case 'number':
|
||||
case 'bigint':
|
||||
case 'boolean':
|
||||
case 'symbol':
|
||||
case 'undefined':
|
||||
case 'function':
|
||||
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
|
||||
Reference in New Issue
Block a user