utilHelper.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. function requireUtil() {
  2. try {
  3. // eslint-disable-next-line no-restricted-modules
  4. return require("util");
  5. } catch (e) {
  6. return null;
  7. }
  8. }
  9. // for v10.12.0+
  10. function lookupCustomInspectSymbol() {
  11. return Symbol.for("nodejs.util.inspect.custom");
  12. }
  13. // for older node environments
  14. function tryReadingCustomSymbolFromUtilInspect(options) {
  15. const _requireUtil = options.requireUtil || requireUtil;
  16. const util = _requireUtil();
  17. return util ? util.inspect.custom : null;
  18. }
  19. exports.getUtilInspect = function getUtilInspect(fallback, options = {}) {
  20. const _requireUtil = options.requireUtil || requireUtil;
  21. const util = _requireUtil();
  22. return function inspect(value, showHidden, depth) {
  23. return util ? util.inspect(value, showHidden, depth) : fallback(value);
  24. };
  25. };
  26. exports.getCustomInspectSymbol = function getCustomInspectSymbol(options = {}) {
  27. const _lookupCustomInspectSymbol =
  28. options.lookupCustomInspectSymbol || lookupCustomInspectSymbol;
  29. // get custom inspect symbol for node environments
  30. return (
  31. _lookupCustomInspectSymbol() ||
  32. tryReadingCustomSymbolFromUtilInspect(options)
  33. );
  34. };