refactor: use a destructor to shorten the calls (#2376)

This commit is contained in:
Nikolay Vitkov
2026-07-16 13:50:44 +02:00
committed by GitHub
parent 8432cb97a2
commit 77e1d3f961
3 changed files with 35 additions and 33 deletions
+3 -3
View File
@@ -53,6 +53,8 @@ import {stableIdSymbol} from './utils/id.js';
import {paginate} from './utils/pagination.js';
import type {WaitForEventsResult} from './WaitForHelper.js';
const {formatBytesToKb} = DevTools.I18n.ByteUtilities;
export type DataFormat = 'default' | 'toon' | 'gcf';
interface TraceInsightData {
@@ -1073,9 +1075,7 @@ Call ${handleDialog.name} to handle it before continuing.`);
response.push(`Objects: ${aggregateData.objectCount}`);
response.push(
`Total shallow size: ${DevTools.I18n.ByteUtilities.formatBytesToKb(
aggregateData.totalSelfSize,
)}`,
`Total shallow size: ${formatBytesToKb(aggregateData.totalSelfSize)}`,
);
structuredContent.heapSnapshot = structuredContent.heapSnapshot || {};
structuredContent.heapSnapshot.aggregateStats = {
+17 -17
View File
@@ -13,6 +13,8 @@ import type {
import {DevTools} from '../third_party/index.js';
import {stableIdSymbol} from '../utils/id.js';
const {formatBytesToKb} = DevTools.I18n.ByteUtilities;
export interface FormattedSnapshotEntry {
className: string;
id?: number;
@@ -72,7 +74,7 @@ export class HeapSnapshotFormatter {
for (const item of items) {
if (isNodeLike(item)) {
lines.push(
`${item.id},${item.name},${item.type},${item.distance},${DevTools.I18n.ByteUtilities.formatBytesToKb(item.selfSize)},${DevTools.I18n.ByteUtilities.formatBytesToKb(item.retainedSize)}`,
`${item.id},${item.name},${item.type},${item.distance},${formatBytesToKb(item.selfSize)},${formatBytesToKb(item.retainedSize)}`,
);
} else if (isEdgeLike(item)) {
lines.push(
@@ -116,7 +118,7 @@ export class HeapSnapshotFormatter {
lines.push('nodeId,nodeName,selfSize,retainedSize');
for (const node of dominators) {
lines.push(
`${node.nodeId},${node.nodeName},${DevTools.I18n.ByteUtilities.formatBytesToKb(node.selfSize)},${DevTools.I18n.ByteUtilities.formatBytesToKb(node.retainedSize)}`,
`${node.nodeId},${node.nodeName},${formatBytesToKb(node.selfSize)},${formatBytesToKb(node.retainedSize)}`,
);
}
return lines.join('\n');
@@ -131,7 +133,7 @@ export class HeapSnapshotFormatter {
const nodeIds = group.nodes.map(n => `@${n.id}`).join(' ');
const truncated = group.truncated ?? false;
lines.push(
`${JSON.stringify(group.value)},${group.count},${DevTools.I18n.ByteUtilities.formatBytesToKb(group.totalSelfSize)},${DevTools.I18n.ByteUtilities.formatBytesToKb(group.totalRetainedSize)},${truncated},${nodeIds}`,
`${JSON.stringify(group.value)},${group.count},${formatBytesToKb(group.totalSelfSize)},${formatBytesToKb(group.totalRetainedSize)},${truncated},${nodeIds}`,
);
}
return lines.join('\n');
@@ -147,14 +149,12 @@ export class HeapSnapshotFormatter {
);
for (const nc of sortedContexts) {
lines.push(
`${nc.nodeId},${nc.nodeName},${DevTools.I18n.ByteUtilities.formatBytesToKb(nc.selfSize)},${DevTools.I18n.ByteUtilities.formatBytesToKb(nc.retainedSize)},${DevTools.I18n.ByteUtilities.formatBytesToKb(nc.attributedSize)}`,
`${nc.nodeId},${nc.nodeName},${formatBytesToKb(nc.selfSize)},${formatBytesToKb(nc.retainedSize)},${formatBytesToKb(nc.attributedSize)}`,
);
}
lines.push(`Shared Size: ${formatBytesToKb(sizes.sharedSize)}`);
lines.push(
`Shared Size: ${DevTools.I18n.ByteUtilities.formatBytesToKb(sizes.sharedSize)}`,
);
lines.push(
`Unattributed Size: ${DevTools.I18n.ByteUtilities.formatBytesToKb(sizes.noAttributionSize)}`,
`Unattributed Size: ${formatBytesToKb(sizes.noAttributionSize)}`,
);
return lines.join('\n');
}
@@ -171,7 +171,7 @@ export class HeapSnapshotFormatter {
for (const info of sorted) {
const id = info[stableIdSymbol] ?? '';
lines.push(
`${id},${info.name},${info.count},${DevTools.I18n.ByteUtilities.formatBytesToKb(info.self)},${DevTools.I18n.ByteUtilities.formatBytesToKb(info.maxRet)}`,
`${id},${info.name},${info.count},${formatBytesToKb(info.self)},${formatBytesToKb(info.maxRet)}`,
);
}
@@ -184,8 +184,8 @@ export class HeapSnapshotFormatter {
id: info[stableIdSymbol],
className: info.name,
count: info.count,
selfSize: DevTools.I18n.ByteUtilities.formatBytesToKb(info.self),
retainedSize: DevTools.I18n.ByteUtilities.formatBytesToKb(info.maxRet),
selfSize: formatBytesToKb(info.self),
retainedSize: formatBytesToKb(info.maxRet),
}));
}
@@ -209,7 +209,7 @@ export class HeapSnapshotFormatter {
let index = 0;
for (const diff of diffs) {
lines.push(
`${index},${diff.className},${diff.addedCount},${diff.removedCount},${diff.countDelta},${DevTools.I18n.ByteUtilities.formatBytesToKb(diff.addedSize)},${DevTools.I18n.ByteUtilities.formatBytesToKb(diff.removedSize)},${DevTools.I18n.ByteUtilities.formatBytesToKb(diff.sizeDelta)}`,
`${index},${diff.className},${diff.addedCount},${diff.removedCount},${diff.countDelta},${formatBytesToKb(diff.addedSize)},${formatBytesToKb(diff.removedSize)},${formatBytesToKb(diff.sizeDelta)}`,
);
index++;
}
@@ -232,12 +232,12 @@ export class HeapSnapshotFormatter {
for (let i = 0; i < addedIds.length; i++) {
lines.push(
` + @${addedIds[i]} (self_size: ${DevTools.I18n.ByteUtilities.formatBytesToKb(addedSelfSizes[i])})`,
` + @${addedIds[i]} (self_size: ${formatBytesToKb(addedSelfSizes[i])})`,
);
}
for (let i = 0; i < deletedIds.length; i++) {
lines.push(
` - @${deletedIds[i]} (self_size: ${DevTools.I18n.ByteUtilities.formatBytesToKb(deletedSelfSizes[i])})`,
` - @${deletedIds[i]} (self_size: ${formatBytesToKb(deletedSelfSizes[i])})`,
);
}
@@ -252,8 +252,8 @@ export class HeapSnapshotFormatter {
`name: ${info.name}`,
`type: ${info.type}`,
`detachedness: ${formatDOMLinkState(info.detachedness)}`,
`selfSize: ${DevTools.I18n.ByteUtilities.formatBytesToKb(info.selfSize)}`,
`retainedSize: ${DevTools.I18n.ByteUtilities.formatBytesToKb(info.retainedSize)}`,
`selfSize: ${formatBytesToKb(info.selfSize)}`,
`retainedSize: ${formatBytesToKb(info.retainedSize)}`,
`distance: ${info.distance}`,
`edgeCount: ${info.edgeCount}`,
`retainerCount: ${info.retainerCount}`,
@@ -281,6 +281,6 @@ function formatSignedCount(n: number): string {
}
function formatSignedSize(bytes: number): string {
const formatted = DevTools.I18n.ByteUtilities.formatBytesToKb(bytes);
const formatted = formatBytesToKb(bytes);
return bytes > 0 ? `+${formatted}` : formatted;
}
+15 -13
View File
@@ -11,6 +11,8 @@ import {HeapSnapshotFormatter} from '../../src/formatters/HeapSnapshotFormatter.
import {DevTools} from '../../src/third_party/index.js';
import {stableIdSymbol} from '../../src/utils/id.js';
const {formatBytesToKb} = DevTools.I18n.ByteUtilities;
describe('HeapSnapshotFormatter', () => {
DevTools.I18n.DevToolsLocale.DevToolsLocale.instance({
create: true,
@@ -62,15 +64,15 @@ describe('HeapSnapshotFormatter', () => {
id: 1,
className: 'ObjectA',
count: 10,
selfSize: DevTools.I18n.ByteUtilities.formatBytesToKb(100),
retainedSize: DevTools.I18n.ByteUtilities.formatBytesToKb(1000),
selfSize: formatBytesToKb(100),
retainedSize: formatBytesToKb(1000),
},
{
id: 2,
className: 'ObjectB',
count: 5,
selfSize: DevTools.I18n.ByteUtilities.formatBytesToKb(50),
retainedSize: DevTools.I18n.ByteUtilities.formatBytesToKb(500),
selfSize: formatBytesToKb(50),
retainedSize: formatBytesToKb(500),
},
]);
});
@@ -146,7 +148,7 @@ describe('HeapSnapshotFormatter', () => {
const result = HeapSnapshotFormatter.formatDiffSummary(summarized);
const expected = [
'index,className,addedCount,removedCount,countDelta,addedSize,removedSize,sizeDelta',
`0,Balanced,1,1,0,${DevTools.I18n.ByteUtilities.formatBytesToKb(100)},${DevTools.I18n.ByteUtilities.formatBytesToKb(100)},${DevTools.I18n.ByteUtilities.formatBytesToKb(0)}`,
`0,Balanced,1,1,0,${formatBytesToKb(100)},${formatBytesToKb(100)},${formatBytesToKb(0)}`,
].join('\n');
assert.strictEqual(result, expected);
@@ -175,8 +177,8 @@ describe('HeapSnapshotFormatter', () => {
};
const formatted = HeapSnapshotFormatter.formatDiffDetails(details);
const formatted120 = DevTools.I18n.ByteUtilities.formatBytesToKb(120);
const formatted60 = DevTools.I18n.ByteUtilities.formatBytesToKb(60);
const formatted120 = formatBytesToKb(120);
const formatted60 = formatBytesToKb(60);
const expected = [
`MyClass: # new: 2, # deleted: 1, # delta: +1, alloc size: +${formatted120}, freed size: +${formatted60}, size delta: +${formatted60}`,
@@ -278,8 +280,8 @@ describe('HeapSnapshotFormatter', () => {
const result = HeapSnapshotFormatter.formatDominators(mockDominators);
const expected = [
'nodeId,nodeName,selfSize,retainedSize',
`10,ClassA,${DevTools.I18n.ByteUtilities.formatBytesToKb(100)},${DevTools.I18n.ByteUtilities.formatBytesToKb(1000)}`,
`20,ClassB,${DevTools.I18n.ByteUtilities.formatBytesToKb(50)},${DevTools.I18n.ByteUtilities.formatBytesToKb(500)}`,
`10,ClassA,${formatBytesToKb(100)},${formatBytesToKb(1000)}`,
`20,ClassB,${formatBytesToKb(50)},${formatBytesToKb(500)}`,
].join('\n');
assert.strictEqual(result, expected);
@@ -323,10 +325,10 @@ describe('HeapSnapshotFormatter', () => {
const result = HeapSnapshotFormatter.formatNativeContextSizes(mockSizes);
const expected = [
'nodeId,nodeName,selfSize,retainedSize,attributedSize',
`20,system / NativeContext / https://example.com,${DevTools.I18n.ByteUtilities.formatBytesToKb(200)},${DevTools.I18n.ByteUtilities.formatBytesToKb(5000)},${DevTools.I18n.ByteUtilities.formatBytesToKb(2000)}`,
`10,system / NativeContext,${DevTools.I18n.ByteUtilities.formatBytesToKb(100)},${DevTools.I18n.ByteUtilities.formatBytesToKb(1000)},${DevTools.I18n.ByteUtilities.formatBytesToKb(500)}`,
`Shared Size: ${DevTools.I18n.ByteUtilities.formatBytesToKb(300)}`,
`Unattributed Size: ${DevTools.I18n.ByteUtilities.formatBytesToKb(400)}`,
`20,system / NativeContext / https://example.com,${formatBytesToKb(200)},${formatBytesToKb(5000)},${formatBytesToKb(2000)}`,
`10,system / NativeContext,${formatBytesToKb(100)},${formatBytesToKb(1000)},${formatBytesToKb(500)}`,
`Shared Size: ${formatBytesToKb(300)}`,
`Unattributed Size: ${formatBytesToKb(400)}`,
].join('\n');
assert.strictEqual(result, expected);