summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cli/js/web/console.ts37
-rw-r--r--cli/tests/unit/console_test.ts32
2 files changed, 51 insertions, 18 deletions
diff --git a/cli/js/web/console.ts b/cli/js/web/console.ts
index 69c9d3137..622181030 100644
--- a/cli/js/web/console.ts
+++ b/cli/js/web/console.ts
@@ -842,27 +842,33 @@ export class Console {
resultData = data!;
}
+ let hasPrimitives = false;
Object.keys(resultData).forEach((k, idx): void => {
const value: unknown = resultData[k]!;
-
- if (value !== null && typeof value === "object") {
- Object.entries(value as { [key: string]: unknown }).forEach(
- ([k, v]): void => {
- if (properties && !properties.includes(k)) {
- return;
+ const primitive =
+ value === null ||
+ (typeof value !== "function" && typeof value !== "object");
+ if (properties === undefined && primitive) {
+ hasPrimitives = true;
+ values.push(stringifyValue(value));
+ } else {
+ const valueObj = (value as { [key: string]: unknown }) || {};
+ const keys = properties || Object.keys(valueObj);
+ for (const k of keys) {
+ if (primitive || !valueObj.hasOwnProperty(k)) {
+ if (objectValues[k]) {
+ // fill with blanks for idx to avoid misplacing from later values
+ objectValues[k].push("");
}
-
+ } else {
if (objectValues[k]) {
- objectValues[k].push(stringifyValue(v));
+ objectValues[k].push(stringifyValue(valueObj[k]));
} else {
- objectValues[k] = createColumn(v, idx);
+ objectValues[k] = createColumn(valueObj[k], idx);
}
}
- );
-
+ }
values.push("");
- } else {
- values.push(stringifyValue(value));
}
indexKeys.push(k);
@@ -872,10 +878,7 @@ export class Console {
const bodyValues = Object.values(objectValues);
const header = [
indexKey,
- ...(properties || [
- ...headerKeys,
- !isMap && values.length > 0 && valuesKey,
- ]),
+ ...(properties || [...headerKeys, !isMap && hasPrimitives && valuesKey]),
].filter(Boolean) as string[];
const body = [indexKeys, ...bodyValues, values];
diff --git a/cli/tests/unit/console_test.ts b/cli/tests/unit/console_test.ts
index 35985dc1c..98e43c739 100644
--- a/cli/tests/unit/console_test.ts
+++ b/cli/tests/unit/console_test.ts
@@ -571,7 +571,7 @@ unitTest(function consoleTestStringifyIterable() {
`[ <4 empty items>, 0, 0, <4 empty items> ]`
);
- /* TODO(ry) Fix this test
+ /* TODO(ry) Fix this test
const lWithEmptyEl = Array(200);
lWithEmptyEl.fill(0, 50, 80);
assertEquals(
@@ -1073,6 +1073,36 @@ unitTest(function consoleTable(): void {
`
);
});
+ mockConsole((console, out): void => {
+ console.table([
+ [1, 2],
+ [3, 4],
+ ]);
+ assertEquals(
+ stripColor(out.toString()),
+ `┌───────┬───┬───┐
+│ (idx) │ 0 │ 1 │
+├───────┼───┼───┤
+│ 0 │ 1 │ 2 │
+│ 1 │ 3 │ 4 │
+└───────┴───┴───┘
+`
+ );
+ });
+ mockConsole((console, out): void => {
+ console.table({ 1: { a: 4, b: 5 }, 2: null, 3: { b: 6, c: 7 } }, ["b"]);
+ assertEquals(
+ stripColor(out.toString()),
+ `┌───────┬───┐
+│ (idx) │ b │
+├───────┼───┤
+│ 1 │ 5 │
+│ 2 │ │
+│ 3 │ 6 │
+└───────┴───┘
+`
+ );
+ });
});
// console.log(Error) test