import { readFileSync, writeFileSync } from 'node:fs';
const LOCK_FILE = 'package-lock.json';
function isRegistryUrl(resolved) {
return typeof resolved === 'string' && /^https?:/.test(resolved);
}
function stripPackages(packages) {
let count = 0;
for (const entry of Object.values(packages)) {
if (isRegistryUrl(entry.resolved)) {
delete entry.resolved;
count += 1;
}
}
return count;
}
function stripDependencies(dependencies) {
let count = 0;
for (const entry of Object.values(dependencies)) {
if (isRegistryUrl(entry.resolved)) {
delete entry.resolved;
count += 1;
}
if (entry.dependencies) {
count += stripDependencies(entry.dependencies);
}
}
return count;
}
const lock = JSON.parse(readFileSync(LOCK_FILE, 'utf8'));
let count = 0;
if (lock.packages) {
count += stripPackages(lock.packages);
}
if (lock.dependencies) {
count += stripDependencies(lock.dependencies);
}
if (count === 0) {
process.exit(0);
}
writeFileSync(LOCK_FILE, `${JSON.stringify(lock, null, 2)}\n`);
process.exit(1);