@@ -24237,7 +24237,7 @@ async function fetchPackageMetadata(packageName, version) {
24237
24237
metaCache.set(cacheKey, result);
24238
24238
return result;
24239
24239
}
24240
- async function calculateTotalDependencySizeIncrease(newVersions) {
24240
+ async function calculateTotalDependencySizeIncrease(newVersions, removedVersions ) {
24241
24241
let totalSize = 0;
24242
24242
const processedPackages = /* @__PURE__ */ new Set();
24243
24243
const packageSizes = /* @__PURE__ */ new Map();
@@ -24259,6 +24259,26 @@ async function calculateTotalDependencySizeIncrease(newVersions) {
24259
24259
return null;
24260
24260
}
24261
24261
}
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
+ }
24262
24282
return { totalSize, packageSizes };
24263
24283
}
24264
24284
var dependencyTypeMap = {
@@ -24541,19 +24561,54 @@ var core5 = __toESM(require_core(), 1);
24541
24561
// src/common.ts
24542
24562
function formatBytes(bytes) {
24543
24563
if (bytes === 0) return "0 B";
24564
+ const absBytes = Math.abs(bytes);
24544
24565
const k = 1e3;
24545
24566
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]}`;
24548
24570
}
24549
24571
24550
24572
// 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) {
24553
24602
return;
24554
24603
}
24555
24604
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
+ );
24557
24612
if (sizeData !== null && sizeData.totalSize >= threshold) {
24558
24613
const packageRows = Array.from(sizeData.packageSizes.entries()).sort(([, a], [, b]) => b - a).map(([pkg, size]) => `| ${pkg} | ${formatBytes(size)} |`).join("\n");
24559
24614
messages.push(
@@ -24728,21 +24783,7 @@ async function run() {
24728
24783
baseDeps
24729
24784
);
24730
24785
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);
24746
24787
await scanForProvenance(messages, currentDeps, baseDeps);
24747
24788
const basePackagesPattern = core7.getInput("base-packages");
24748
24789
const sourcePackagesPattern = core7.getInput("source-packages");
0 commit comments