Pin dependency policy exceptions to versions
This commit is contained in:
+7
-3
@@ -30,7 +30,7 @@ export async function checkProject(options, injected = {}) {
|
||||
|
||||
try {
|
||||
const project = await readProject(projectPath);
|
||||
const lockInspection = inspectLock(project.lock, options.policy);
|
||||
const lockInspection = inspectLock(project.lock, options.policy, dependencies.now());
|
||||
report.lockfile = { lockfileVersion: project.lock.lockfileVersion, registryEntries: lockInspection.registryEntries };
|
||||
report.failures.push(...lockInspection.failures.map((message) => `lockfile: ${message}`));
|
||||
|
||||
@@ -47,8 +47,12 @@ export async function checkProject(options, injected = {}) {
|
||||
const packed = JSON.parse(pack.result.stdout)[0];
|
||||
packageResult.tarballSizeBytes = packed.size;
|
||||
packageResult.unpackedSizeBytes = packed.unpackedSize;
|
||||
if (!Number.isFinite(packed.size) || packed.size > options.policy.maxTarballSizeBytes) packageResult.failures.push(`tarball size ${packed.size ?? "unknown"} exceeds ${options.policy.maxTarballSizeBytes}`);
|
||||
if (!Number.isFinite(packed.unpackedSize) || packed.unpackedSize > options.policy.maxUnpackedSizeBytes) packageResult.failures.push(`unpacked size ${packed.unpackedSize ?? "unknown"} exceeds ${options.policy.maxUnpackedSizeBytes}`);
|
||||
const archiveException = options.policy.archiveSizeExceptions[item.name];
|
||||
const archiveExceptionValid = archiveException?.version === item.version && Date.parse(archiveException.expiresAt) > dependencies.now();
|
||||
const tarballLimit = archiveExceptionValid ? archiveException.maxTarballSizeBytes ?? options.policy.maxTarballSizeBytes : options.policy.maxTarballSizeBytes;
|
||||
const unpackedLimit = archiveExceptionValid ? archiveException.maxUnpackedSizeBytes ?? options.policy.maxUnpackedSizeBytes : options.policy.maxUnpackedSizeBytes;
|
||||
if (!Number.isFinite(packed.size) || packed.size > tarballLimit) packageResult.failures.push(`tarball size ${packed.size ?? "unknown"} exceeds ${tarballLimit}`);
|
||||
if (!Number.isFinite(packed.unpackedSize) || packed.unpackedSize > unpackedLimit) packageResult.failures.push(`unpacked size ${packed.unpackedSize ?? "unknown"} exceeds ${unpackedLimit}`);
|
||||
} catch {
|
||||
packageResult.failures.push("npm pack returned invalid JSON evidence");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user