summaryrefslogtreecommitdiff
path: root/lib/util.js
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2018-03-09 14:57:19 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2018-03-25 03:21:26 +0200
commit0fbd4b1d021ed5fcd95210047a9e1d2addefe51a (patch)
tree20838b14515c45430c91146d350574b6c037f1b0 /lib/util.js
parenta101631db0ce9b2f707dc371158134c115e71541 (diff)
downloadandroid-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.js29
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) {