40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
|
function requireUtil() {
|
||
|
try {
|
||
|
// eslint-disable-next-line no-restricted-modules
|
||
|
return require("util");
|
||
|
} catch (e) {
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// for v10.12.0+
|
||
|
function lookupCustomInspectSymbol() {
|
||
|
return Symbol.for("nodejs.util.inspect.custom");
|
||
|
}
|
||
|
|
||
|
// for older node environments
|
||
|
function tryReadingCustomSymbolFromUtilInspect(options) {
|
||
|
const _requireUtil = options.requireUtil || requireUtil;
|
||
|
const util = _requireUtil();
|
||
|
return util ? util.inspect.custom : null;
|
||
|
}
|
||
|
|
||
|
exports.getUtilInspect = function getUtilInspect(fallback, options = {}) {
|
||
|
const _requireUtil = options.requireUtil || requireUtil;
|
||
|
const util = _requireUtil();
|
||
|
return function inspect(value, showHidden, depth) {
|
||
|
return util ? util.inspect(value, showHidden, depth) : fallback(value);
|
||
|
};
|
||
|
};
|
||
|
|
||
|
exports.getCustomInspectSymbol = function getCustomInspectSymbol(options = {}) {
|
||
|
const _lookupCustomInspectSymbol =
|
||
|
options.lookupCustomInspectSymbol || lookupCustomInspectSymbol;
|
||
|
|
||
|
// get custom inspect symbol for node environments
|
||
|
return (
|
||
|
_lookupCustomInspectSymbol() ||
|
||
|
tryReadingCustomSymbolFromUtilInspect(options)
|
||
|
);
|
||
|
};
|