summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChen Su <ghosind@gmail.com>2023-11-14 03:13:20 +0800
committerGitHub <noreply@github.com>2023-11-13 20:13:20 +0100
commit0209f7b46954d1b7bf923b4191e5a356ec09622c (patch)
tree9d7ade1586ac741a34442d9ebb673e1b42bce679
parentfe0d9e078f49c6c69d5b3a02044b8709eb302b68 (diff)
fix(ext/console): fix inspecting iterators error. (#20720)
Fixes #19776 and #20676.
-rw-r--r--ext/console/01_console.js13
-rw-r--r--ext/node/polyfills/internal/console/constructor.mjs13
-rw-r--r--ext/node/polyfills/internal_binding/util.ts15
3 files changed, 20 insertions, 21 deletions
diff --git a/ext/console/01_console.js b/ext/console/01_console.js
index 67c75f74d..b3624ea7c 100644
--- a/ext/console/01_console.js
+++ b/ext/console/01_console.js
@@ -136,6 +136,7 @@ const {
WeakSetPrototypeHas,
isNaN,
} = primordials;
+import { previewEntries } from "ext:deno_node/internal_binding/util.ts";
let noColor = () => false;
@@ -1493,9 +1494,7 @@ function getIteratorBraces(type, tag) {
const iteratorRegExp = new SafeRegExp(" Iterator] {$");
function formatIterator(braces, ctx, value, recurseTimes) {
- // TODO(wafuwafu13): Implement
- // const { 0: entries, 1: isKeyValue } = previewEntries(value, true);
- const { 0: entries, 1: isKeyValue } = value;
+ const { 0: entries, 1: isKeyValue } = previewEntries(value, true);
if (isKeyValue) {
// Mark entry iterators as such.
braces[0] = StringPrototypeReplace(
@@ -1704,16 +1703,12 @@ function formatWeakCollection(ctx) {
}
function formatWeakSet(ctx, value, recurseTimes) {
- // TODO(wafuwafu13): Implement
- // const entries = previewEntries(value);
- const entries = value;
+ const entries = previewEntries(value);
return formatSetIterInner(ctx, recurseTimes, entries, kWeak);
}
function formatWeakMap(ctx, value, recurseTimes) {
- // TODO(wafuwafu13): Implement
- // const entries = previewEntries(value);
- const entries = value;
+ const entries = previewEntries(value);
return formatMapIterInner(ctx, recurseTimes, entries, kWeak);
}
diff --git a/ext/node/polyfills/internal/console/constructor.mjs b/ext/node/polyfills/internal/console/constructor.mjs
index 5ea9eeb3a..afa18bb97 100644
--- a/ext/node/polyfills/internal/console/constructor.mjs
+++ b/ext/node/polyfills/internal/console/constructor.mjs
@@ -17,17 +17,7 @@ import {
validateInteger,
validateObject,
} from "ext:deno_node/internal/validators.mjs";
-const previewEntries = (iter, isKeyValue) => {
- if (isKeyValue) {
- const arr = [...iter];
- if (Array.isArray(arr[0]) && arr[0].length === 2) {
- return [[].concat(...arr), true];
- }
- return [arr, false];
- } else {
- return [...iter];
- }
-};
+import { previewEntries } from "ext:deno_node/internal_binding/util.ts";
import { Buffer } from "node:buffer";
const { isBuffer } = Buffer;
import {
@@ -475,7 +465,6 @@ const consoleMethods = {
// https://console.spec.whatwg.org/#table
table(tabularData, properties) {
- console.log("tabularData", tabularData);
if (properties !== undefined) {
validateArray(properties, "properties");
}
diff --git a/ext/node/polyfills/internal_binding/util.ts b/ext/node/polyfills/internal_binding/util.ts
index 38eeebee0..651fe9a4b 100644
--- a/ext/node/polyfills/internal_binding/util.ts
+++ b/ext/node/polyfills/internal_binding/util.ts
@@ -129,3 +129,18 @@ export function getOwnNonIndexProperties(
}
return result;
}
+
+export function previewEntries(
+ iter: Iterable<unknown>,
+ isKeyValue?: boolean,
+): Array<unknown | boolean> {
+ if (isKeyValue) {
+ const arr = [...iter];
+ if (Array.isArray(arr[0]) && arr[0].length === 2) {
+ return [([] as unknown[]).concat(...arr), true];
+ }
+ return [arr, false];
+ } else {
+ return [...iter];
+ }
+}