diff options
author | Casper Beyer <caspervonb@pm.me> | 2020-10-12 03:52:20 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-11 21:52:20 +0200 |
commit | 86dc55134ef25c1bc4f8db6c3c0dc635c1660ea4 (patch) | |
tree | 710c6888247463210f5388231f9742d87cdd2654 /cli/rt/02_console.js | |
parent | 08f3ae92d3935559a5134bc5da900d3784142bf3 (diff) |
fix(cli/console): only inspect getters with option (#7830)
Diffstat (limited to 'cli/rt/02_console.js')
-rw-r--r-- | cli/rt/02_console.js | 83 |
1 files changed, 63 insertions, 20 deletions
diff --git a/cli/rt/02_console.js b/cli/rt/02_console.js index 72192eda4..363a95d90 100644 --- a/cli/rt/02_console.js +++ b/cli/rt/02_console.js @@ -157,6 +157,7 @@ iterableLimit: 100, showProxy: false, colors: false, + getters: false, }; const DEFAULT_INDENT = " "; // Default indent string @@ -760,31 +761,73 @@ const red = maybeColor(colors.red, inspectOptions); for (const key of stringKeys) { - let propertyValue; - let error = null; - try { - propertyValue = value[key]; - } catch (error_) { - error = error_; + if (inspectOptions.getters) { + let propertyValue; + let error = null; + try { + propertyValue = value[key]; + } catch (error_) { + error = error_; + } + const inspectedValue = error == null + ? inspectValueWithQuotes( + propertyValue, + ctx, + level + 1, + inspectOptions, + ) + : red(`[Thrown ${error.name}: ${error.message}]`); + entries.push(`${maybeQuoteString(key)}: ${inspectedValue}`); + } else { + let descriptor = Object.getOwnPropertyDescriptor(value, key); + if (descriptor.get !== undefined && descriptor.set !== undefined) { + entries.push(`${maybeQuoteString(key)}: [Getter/Setter]`); + } else if (descriptor.get !== undefined) { + entries.push(`${maybeQuoteString(key)}: [Getter]`); + } else { + entries.push( + `${maybeQuoteString(key)}: ${ + inspectValueWithQuotes(value[key], ctx, level + 1, inspectOptions) + }`, + ); + } } - const inspectedValue = error == null - ? inspectValueWithQuotes(propertyValue, ctx, level + 1, inspectOptions) - : red(`[Thrown ${error.name}: ${error.message}]`); - entries.push(`${maybeQuoteString(key)}: ${inspectedValue}`); } + for (const key of symbolKeys) { - let propertyValue; - let error; - try { - propertyValue = value[key]; - } catch (error_) { - error = error_; + if (inspectOptions.getters) { + let propertyValue; + let error; + try { + propertyValue = value[key]; + } catch (error_) { + error = error_; + } + const inspectedValue = error == null + ? inspectValueWithQuotes( + propertyValue, + ctx, + level + 1, + inspectOptions, + ) + : red(`Thrown ${error.name}: ${error.message}`); + entries.push(`[${maybeQuoteSymbol(key)}]: ${inspectedValue}`); + } else { + let descriptor = Object.getOwnPropertyDescriptor(value, key); + if (descriptor.get !== undefined && descriptor.set !== undefined) { + entries.push(`[${maybeQuoteSymbol(key)}]: [Getter/Setter]`); + } else if (descriptor.get !== undefined) { + entries.push(`[${maybeQuoteSymbol(key)}]: [Getter]`); + } else { + entries.push( + `[${maybeQuoteSymbol(key)}]: ${ + inspectValueWithQuotes(value[key], ctx, level + 1, inspectOptions) + }`, + ); + } } - const inspectedValue = error == null - ? inspectValueWithQuotes(propertyValue, ctx, level + 1, inspectOptions) - : red(`Thrown ${error.name}: ${error.message}`); - entries.push(`[${maybeQuoteSymbol(key)}]: ${inspectedValue}`); } + // Making sure color codes are ignored when calculating the total length const totalLength = entries.length + level + colors.stripColor(entries.join("")).length; |