diff --git a/build/lib/mangle/index.js b/build/lib/mangle/index.js index 14137c0db31..bb6b414e845 100644 --- a/build/lib/mangle/index.js +++ b/build/lib/mangle/index.js @@ -5,6 +5,7 @@ *--------------------------------------------------------------------------------------------*/ Object.defineProperty(exports, "__esModule", { value: true }); exports.Mangler = void 0; +const v8 = require("node:v8"); const fs = require("fs"); const path = require("path"); const process_1 = require("process"); @@ -293,19 +294,17 @@ const skippedExportMangledSymbols = [ class DeclarationData { fileName; node; - service; replacementName; - constructor(fileName, node, service, fileIdents) { + constructor(fileName, node, fileIdents) { this.fileName = fileName; this.node = node; - this.service = service; // Todo: generate replacement names based on usage count, with more used names getting shorter identifiers this.replacementName = fileIdents.next(); } - get locations() { + getLocations(service) { if (ts.isVariableDeclaration(this.node)) { // If the const aliases any types, we need to rename those too - const definitionResult = this.service.getDefinitionAndBoundSpan(this.fileName, this.node.name.getStart()); + const definitionResult = service.getDefinitionAndBoundSpan(this.fileName, this.node.name.getStart()); if (definitionResult?.definitions && definitionResult.definitions.length > 1) { return definitionResult.definitions.map(x => ({ fileName: x.fileName, offset: x.textSpan.start })); } @@ -404,7 +403,7 @@ class Mangler { if (isInAmbientContext(node)) { return; } - this.allExportedSymbols.add(new DeclarationData(node.getSourceFile().fileName, node, service, fileIdents)); + this.allExportedSymbols.add(new DeclarationData(node.getSourceFile().fileName, node, fileIdents)); } } ts.forEachChild(node, visit); @@ -528,7 +527,7 @@ class Mangler { continue; } const newText = data.replacementName; - for (const { fileName, offset } of data.locations) { + for (const { fileName, offset } of data.getLocations(service)) { queueRename(fileName, offset, newText); } } @@ -615,7 +614,7 @@ class Mangler { } service.dispose(); this.renameWorkerPool.terminate(); - this.log(`Done: ${savedBytes / 1000}kb saved, memory-usage: ${JSON.stringify(process.memoryUsage())}`); + this.log(`Done: ${savedBytes / 1000}kb saved, memory-usage: ${JSON.stringify(v8.getHeapStatistics())}`); return result; } } diff --git a/build/lib/mangle/index.ts b/build/lib/mangle/index.ts index ec023535975..4a7544f162b 100644 --- a/build/lib/mangle/index.ts +++ b/build/lib/mangle/index.ts @@ -3,6 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import * as v8 from 'node:v8'; import * as fs from 'fs'; import * as path from 'path'; import { argv } from 'process'; @@ -338,17 +339,16 @@ class DeclarationData { constructor( readonly fileName: string, readonly node: ts.FunctionDeclaration | ts.ClassDeclaration | ts.EnumDeclaration | ts.VariableDeclaration, - private readonly service: ts.LanguageService, fileIdents: ShortIdent, ) { // Todo: generate replacement names based on usage count, with more used names getting shorter identifiers this.replacementName = fileIdents.next(); } - get locations(): Iterable<{ fileName: string; offset: number }> { + getLocations(service: ts.LanguageService): Iterable<{ fileName: string; offset: number }> { if (ts.isVariableDeclaration(this.node)) { // If the const aliases any types, we need to rename those too - const definitionResult = this.service.getDefinitionAndBoundSpan(this.fileName, this.node.name.getStart()); + const definitionResult = service.getDefinitionAndBoundSpan(this.fileName, this.node.name.getStart()); if (definitionResult?.definitions && definitionResult.definitions.length > 1) { return definitionResult.definitions.map(x => ({ fileName: x.fileName, offset: x.textSpan.start })); } @@ -471,7 +471,7 @@ export class Mangler { return; } - this.allExportedSymbols.add(new DeclarationData(node.getSourceFile().fileName, node, service, fileIdents)); + this.allExportedSymbols.add(new DeclarationData(node.getSourceFile().fileName, node, fileIdents)); } } @@ -620,7 +620,7 @@ export class Mangler { } const newText = data.replacementName; - for (const { fileName, offset } of data.locations) { + for (const { fileName, offset } of data.getLocations(service)) { queueRename(fileName, offset, newText); } } @@ -723,7 +723,8 @@ export class Mangler { service.dispose(); this.renameWorkerPool.terminate(); - this.log(`Done: ${savedBytes / 1000}kb saved, memory-usage: ${JSON.stringify(process.memoryUsage())}`); + + this.log(`Done: ${savedBytes / 1000}kb saved, memory-usage: ${JSON.stringify(v8.getHeapStatistics())}`); return result; } }