@@ -24237,7 +24237,7 @@ async function fetchPackageMetadata(packageName, version) {
2423724237 metaCache.set(cacheKey, result);
2423824238 return result;
2423924239}
24240- async function calculateTotalDependencySizeIncrease(newVersions) {
24240+ async function calculateTotalDependencySizeIncrease(newVersions, removedVersions ) {
2424124241 let totalSize = 0;
2424224242 const processedPackages = /* @__PURE__ */ new Set();
2424324243 const packageSizes = /* @__PURE__ */ new Map();
@@ -24259,6 +24259,26 @@ async function calculateTotalDependencySizeIncrease(newVersions) {
2425924259 return null;
2426024260 }
2426124261 }
24262+ for (const dep of removedVersions) {
24263+ const packageKey = `${dep.name}@${dep.version}`;
24264+ if (processedPackages.has(packageKey)) {
24265+ continue;
24266+ }
24267+ try {
24268+ const metadata = await fetchPackageMetadata(dep.name, dep.version);
24269+ if (!metadata || metadata.dist?.unpackedSize === void 0) {
24270+ return null;
24271+ }
24272+ totalSize -= metadata.dist.unpackedSize;
24273+ packageSizes.set(packageKey, -metadata.dist.unpackedSize);
24274+ processedPackages.add(packageKey);
24275+ core2.info(
24276+ `Subtracted ${metadata.dist.unpackedSize} bytes for ${packageKey}`
24277+ );
24278+ } catch {
24279+ return null;
24280+ }
24281+ }
2426224282 return { totalSize, packageSizes };
2426324283}
2426424284var dependencyTypeMap = {
@@ -24541,19 +24561,54 @@ var core5 = __toESM(require_core(), 1);
2454124561// src/common.ts
2454224562function formatBytes(bytes) {
2454324563 if (bytes === 0) return "0 B";
24564+ const absBytes = Math.abs(bytes);
2454424565 const k = 1e3;
2454524566 const sizes = ["B", "kB", "MB", "GB"];
24546- const i = Math.floor(Math.log(bytes) / Math.log(k));
24547- return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`;
24567+ const i = Math.floor(Math.log(absBytes) / Math.log(k));
24568+ const byteValue = parseFloat((absBytes / Math.pow(k, i)).toFixed(1));
24569+ return `${bytes < 0 ? -byteValue : byteValue} ${sizes[i]}`;
2454824570}
2454924571
2455024572// src/checks/dependency-size.ts
24551- async function scanForDependencySize(messages, threshold, newVersions) {
24552- if (newVersions.length === 0) {
24573+ async function scanForDependencySize(messages, threshold, currentDeps, baseDeps) {
24574+ const newVersions = [];
24575+ const removedVersions = [];
24576+ for (const [packageName, currentVersionSet] of currentDeps) {
24577+ const baseVersionSet = baseDeps.get(packageName);
24578+ for (const version of currentVersionSet) {
24579+ if (!baseVersionSet || !baseVersionSet.has(version)) {
24580+ newVersions.push({
24581+ name: packageName,
24582+ version,
24583+ isNewPackage: !baseVersionSet
24584+ });
24585+ }
24586+ }
24587+ }
24588+ for (const [packageName, baseVersionSet] of baseDeps) {
24589+ const currentVersionSet = currentDeps.get(packageName);
24590+ for (const version of baseVersionSet) {
24591+ if (!currentVersionSet || !currentVersionSet.has(version)) {
24592+ removedVersions.push({
24593+ name: packageName,
24594+ version
24595+ });
24596+ }
24597+ }
24598+ }
24599+ core5.info(`Found ${newVersions.length} new package versions`);
24600+ core5.info(`Found ${removedVersions.length} removed package versions.`);
24601+ if (newVersions.length === 0 && removedVersions.length === 0) {
2455324602 return;
2455424603 }
2455524604 try {
24556- const sizeData = await calculateTotalDependencySizeIncrease(newVersions);
24605+ const sizeData = await calculateTotalDependencySizeIncrease(
24606+ newVersions,
24607+ removedVersions
24608+ );
24609+ core5.info(
24610+ `Total dependency size increase: ${sizeData ? formatBytes(sizeData.totalSize) : "unknown"}`
24611+ );
2455724612 if (sizeData !== null && sizeData.totalSize >= threshold) {
2455824613 const packageRows = Array.from(sizeData.packageSizes.entries()).sort(([, a], [, b]) => b - a).map(([pkg, size]) => `| ${pkg} | ${formatBytes(size)} |`).join("\n");
2455924614 messages.push(
@@ -24728,21 +24783,7 @@ async function run() {
2472824783 baseDeps
2472924784 );
2473024785 scanForDuplicates(messages, duplicateThreshold, currentDeps, lockfilePath);
24731- const newVersions = [];
24732- for (const [packageName, currentVersionSet] of currentDeps) {
24733- const baseVersionSet = baseDeps.get(packageName);
24734- for (const version of currentVersionSet) {
24735- if (!baseVersionSet || !baseVersionSet.has(version)) {
24736- newVersions.push({
24737- name: packageName,
24738- version,
24739- isNewPackage: !baseVersionSet
24740- });
24741- }
24742- }
24743- }
24744- core7.info(`Found ${newVersions.length} new package versions`);
24745- await scanForDependencySize(messages, sizeThreshold, newVersions);
24786+ await scanForDependencySize(messages, sizeThreshold, currentDeps, baseDeps);
2474624787 await scanForProvenance(messages, currentDeps, baseDeps);
2474724788 const basePackagesPattern = core7.getInput("base-packages");
2474824789 const sourcePackagesPattern = core7.getInput("source-packages");
0 commit comments