diff --git a/lib/buffer.js b/lib/buffer.js index 83deacd1fb0ce1..dc7f5c7cdb829b 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -38,6 +38,13 @@ const { kStringMaxLength } = internalBinding('buffer'); const { isAnyArrayBuffer } = internalBinding('types'); +const { + getOwnNonIndexProperties, + propertyFilter: { + ALL_PROPERTIES, + ONLY_ENUMERABLE + } +} = internalBinding('util'); const { customInspectSymbol, isInsideNodeModules, @@ -51,6 +58,11 @@ const { const { pendingDeprecation } = internalBinding('config'); +const { + formatProperty, + kObjectType +} = require('internal/util/inspect'); + const { ERR_BUFFER_OUT_OF_BOUNDS, ERR_OUT_OF_RANGE, @@ -670,10 +682,20 @@ Buffer.prototype.equals = function equals(otherBuffer) { Buffer.prototype[customInspectSymbol] = function inspect(recurseTimes, ctx) { const max = exports.INSPECT_MAX_BYTES; const actualMax = Math.min(max, this.length); - let str = this.hexSlice(0, actualMax).replace(/(.{2})/g, '$1 ').trim(); const remaining = this.length - max; + let str = this.hexSlice(0, actualMax).replace(/(.{2})/g, '$1 ').trim(); if (remaining > 0) str += ` ... ${remaining} more byte${remaining > 1 ? 's' : ''}`; + // Inspect special properties as well, if possible. + if (ctx) { + const filter = ctx.showHidden ? ALL_PROPERTIES : ONLY_ENUMERABLE; + str += getOwnNonIndexProperties(this, filter).reduce((str, key) => { + // Using `formatProperty()` expects an indentationLvl to be set. + ctx.indentationLvl = 0; + str += `, ${formatProperty(ctx, this, recurseTimes, key, kObjectType)}`; + return str; + }, ''); + } return `<${this.constructor.name} ${str}>`; }; Buffer.prototype.inspect = Buffer.prototype[customInspectSymbol]; diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index 4697829fba2756..c9e36b98927b8d 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -1220,5 +1220,7 @@ function reduceToSingleString(ctx, output, base, braces) { } module.exports = { - inspect + inspect, + formatProperty, + kObjectType }; diff --git a/test/parallel/test-buffer-inspect.js b/test/parallel/test-buffer-inspect.js index 9f91de700c7878..9230d7b089dd16 100644 --- a/test/parallel/test-buffer-inspect.js +++ b/test/parallel/test-buffer-inspect.js @@ -55,4 +55,4 @@ assert.strictEqual(util.inspect(b), expected); assert.strictEqual(util.inspect(s), expected); b.inspect = undefined; -assert.strictEqual(util.inspect(b), expected); +assert.strictEqual(util.inspect(b), '');