diff options
author | Ruben Bridgewater <ruben@bridgewater.de> | 2018-03-09 14:57:19 +0100 |
---|---|---|
committer | Ruben Bridgewater <ruben@bridgewater.de> | 2018-03-25 03:21:26 +0200 |
commit | 0fbd4b1d021ed5fcd95210047a9e1d2addefe51a (patch) | |
tree | 20838b14515c45430c91146d350574b6c037f1b0 /lib/util.js | |
parent | a101631db0ce9b2f707dc371158134c115e71541 (diff) | |
download | android-node-v8-0fbd4b1d021ed5fcd95210047a9e1d2addefe51a.tar.gz android-node-v8-0fbd4b1d021ed5fcd95210047a9e1d2addefe51a.tar.bz2 android-node-v8-0fbd4b1d021ed5fcd95210047a9e1d2addefe51a.zip |
util: improve iterator inspect output
1) So far extra keys on an (Set|Map)Iterator were ignored. Those
will now be visible.
2) Improve the performance of showing (Set|Map)Iterator by using
the cloned iterator instead of copying all entries first.
3) So far the output was strictly limited to up to 100 entries.
The limit will now depend on `maxArrayLength` instead (that
default is set to 100 as well) and the output indicates that
more entries exist than visible.
PR-URL: https://github.com/nodejs/node/pull/19259
Reviewed-By: Yosuke Furukawa <yosuke.furukawa@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib/util.js')
-rw-r--r-- | lib/util.js | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/lib/util.js b/lib/util.js index 2cf79bb5f0..774b185095 100644 --- a/lib/util.js +++ b/lib/util.js @@ -30,7 +30,10 @@ const { const { TextDecoder, TextEncoder } = require('internal/encoding'); const { isBuffer } = require('buffer').Buffer; -const { previewMapIterator, previewSetIterator } = require('internal/v8'); +const { + previewMapIterator, + previewSetIterator +} = require('internal/v8'); const { getPromiseDetails, @@ -836,25 +839,29 @@ function formatMap(ctx, value, recurseTimes, keys) { return output; } -function formatCollectionIterator(preview, ctx, value, recurseTimes, - visibleKeys, keys) { - const nextRecurseTimes = recurseTimes === null ? null : recurseTimes - 1; - const vals = preview(value, 100); +function formatCollectionIterator(preview, ctx, value, recurseTimes, keys) { const output = []; - for (const o of vals) { - output.push(formatValue(ctx, o, nextRecurseTimes)); + for (const entry of preview(value)) { + if (ctx.maxArrayLength === output.length) { + output.push('... more items'); + break; + } + output.push(formatValue(ctx, entry, recurseTimes)); + } + for (var n = 0; n < keys.length; n++) { + output.push(formatProperty(ctx, value, recurseTimes, keys[n], 0)); } return output; } -function formatMapIterator(ctx, value, recurseTimes, visibleKeys, keys) { +function formatMapIterator(ctx, value, recurseTimes, keys) { return formatCollectionIterator(previewMapIterator, ctx, value, recurseTimes, - visibleKeys, keys); + keys); } -function formatSetIterator(ctx, value, recurseTimes, visibleKeys, keys) { +function formatSetIterator(ctx, value, recurseTimes, keys) { return formatCollectionIterator(previewSetIterator, ctx, value, recurseTimes, - visibleKeys, keys); + keys); } function formatPromise(ctx, value, recurseTimes, keys) { |