astro-ghostcms/.pnpm-store/v3/files/dd/2150c940dab801ef322b3ae4a19...

145 lines
4.0 KiB
Plaintext

import { format as format$1, plugins } from 'pretty-format';
import * as loupe from 'loupe';
const {
AsymmetricMatcher,
DOMCollection,
DOMElement,
Immutable,
ReactElement,
ReactTestComponent
} = plugins;
const PLUGINS = [
ReactTestComponent,
ReactElement,
DOMElement,
DOMCollection,
Immutable,
AsymmetricMatcher
];
function stringify(object, maxDepth = 10, { maxLength, ...options } = {}) {
const MAX_LENGTH = maxLength ?? 1e4;
let result;
try {
result = format$1(object, {
maxDepth,
escapeString: false,
// min: true,
plugins: PLUGINS,
...options
});
} catch {
result = format$1(object, {
callToJSON: false,
maxDepth,
escapeString: false,
// min: true,
plugins: PLUGINS,
...options
});
}
return result.length >= MAX_LENGTH && maxDepth > 1 ? stringify(object, Math.floor(maxDepth / 2)) : result;
}
const formatRegExp = /%[sdjifoOcj%]/g;
function format(...args) {
if (typeof args[0] !== "string") {
const objects = [];
for (let i2 = 0; i2 < args.length; i2++)
objects.push(inspect(args[i2], { depth: 0, colors: false, compact: 3 }));
return objects.join(" ");
}
const len = args.length;
let i = 1;
const template = args[0];
let str = String(template).replace(formatRegExp, (x) => {
if (x === "%%")
return "%";
if (i >= len)
return x;
switch (x) {
case "%s": {
const value = args[i++];
if (typeof value === "bigint")
return `${value.toString()}n`;
if (typeof value === "number" && value === 0 && 1 / value < 0)
return "-0";
if (typeof value === "object" && value !== null)
return inspect(value, { depth: 0, colors: false, compact: 3 });
return String(value);
}
case "%d": {
const value = args[i++];
if (typeof value === "bigint")
return `${value.toString()}n`;
return Number(value).toString();
}
case "%i": {
const value = args[i++];
if (typeof value === "bigint")
return `${value.toString()}n`;
return Number.parseInt(String(value)).toString();
}
case "%f":
return Number.parseFloat(String(args[i++])).toString();
case "%o":
return inspect(args[i++], { showHidden: true, showProxy: true });
case "%O":
return inspect(args[i++]);
case "%c": {
i++;
return "";
}
case "%j":
try {
return JSON.stringify(args[i++]);
} catch (err) {
const m = err.message;
if (
// chromium
m.includes("circular structure") || m.includes("cyclic structures") || m.includes("cyclic object")
)
return "[Circular]";
throw err;
}
default:
return x;
}
});
for (let x = args[i]; i < len; x = args[++i]) {
if (x === null || typeof x !== "object")
str += ` ${x}`;
else
str += ` ${inspect(x)}`;
}
return str;
}
function inspect(obj, options = {}) {
if (options.truncate === 0)
options.truncate = Number.POSITIVE_INFINITY;
return loupe.inspect(obj, options);
}
function objDisplay(obj, options = {}) {
if (typeof options.truncate === "undefined")
options.truncate = 40;
const str = inspect(obj, options);
const type = Object.prototype.toString.call(obj);
if (options.truncate && str.length >= options.truncate) {
if (type === "[object Function]") {
const fn = obj;
return !fn.name || fn.name === "" ? "[Function]" : `[Function: ${fn.name}]`;
} else if (type === "[object Array]") {
return `[ Array(${obj.length}) ]`;
} else if (type === "[object Object]") {
const keys = Object.keys(obj);
const kstr = keys.length > 2 ? `${keys.splice(0, 2).join(", ")}, ...` : keys.join(", ");
return `{ Object (${kstr}) }`;
} else {
return str;
}
}
return str;
}
export { format as f, inspect as i, objDisplay as o, stringify as s };