Skip to content

Commit f1a5fec

Browse files
committed
fix: only use linux/x64 optional dependencies
1 parent 4f0fc9a commit f1a5fec

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

src/checks/dependency-size.ts

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
import * as core from '@actions/core';
2-
import {calculateTotalDependencySizeIncrease} from '../npm.js';
2+
import {type ParsedLockFile, traverse} from 'lockparse';
3+
import {
4+
calculateTotalDependencySizeIncrease,
5+
fetchPackageMetadata
6+
} from '../npm.js';
37
import {formatBytes} from '../common.js';
48

59
export async function scanForDependencySize(
610
messages: string[],
711
threshold: number,
812
currentDeps: Map<string, Set<string>>,
9-
baseDeps: Map<string, Set<string>>
13+
baseDeps: Map<string, Set<string>>,
14+
currentLockFile: ParsedLockFile
1015
): Promise<void> {
1116
const newVersions: Array<{
1217
name: string;
@@ -17,6 +22,37 @@ export async function scanForDependencySize(
1722
name: string;
1823
version: string;
1924
}> = [];
25+
const skippedVersions = new Map<string, Set<string>>();
26+
const allOptionalVersions = new Map<string, Set<string>>();
27+
28+
for (const pkg of currentLockFile.packages) {
29+
traverse(pkg, {
30+
optionalDependency: (node) => {
31+
const entry = allOptionalVersions.get(node.name) ?? new Set<string>();
32+
entry.add(node.version);
33+
allOptionalVersions.set(node.name, entry);
34+
}
35+
});
36+
}
37+
38+
for (const [pkg, versions] of allOptionalVersions) {
39+
for (const version of versions) {
40+
const pkgMeta = await fetchPackageMetadata(pkg, version);
41+
if (
42+
pkgMeta &&
43+
((pkgMeta.os &&
44+
pkgMeta.os.length > 0 &&
45+
!pkgMeta.os.includes('linux')) ||
46+
(pkgMeta.cpu &&
47+
pkgMeta.cpu.length > 0 &&
48+
!pkgMeta.cpu.includes('x64')))
49+
) {
50+
const entry = skippedVersions.get(pkg) ?? new Set<string>();
51+
entry.add(version);
52+
skippedVersions.set(pkg, entry);
53+
}
54+
}
55+
}
2056

2157
for (const [packageName, currentVersionSet] of currentDeps) {
2258
const baseVersionSet = baseDeps.get(packageName);

src/npm.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import type {PackageJson} from 'pkg-types';
44
export interface PackageMetadata {
55
name: string;
66
version: string;
7+
os?: string[];
8+
cpu?: string[];
79
dist?: {
810
unpackedSize?: number;
911
attestations?: {

0 commit comments

Comments
 (0)