mirror of
https://github.com/AikidoSec/safe-chain.git
synced 2026-05-26 20:20:49 +00:00
37 lines
1 KiB
JavaScript
37 lines
1 KiB
JavaScript
import { resolvePackageVersion } from "../../../api/npmApi.js";
|
|
import { parsePackagesFromInstallArgs } from "../parsing/parsePackagesFromInstallArgs.js";
|
|
import { hasDryRunArg } from "../utils/npmCommands.js";
|
|
|
|
export function commandArgumentScanner(opts) {
|
|
const ignoreDryRun = opts?.ignoreDryRun ?? false;
|
|
|
|
return {
|
|
scan: (args) => scanDependencies(args),
|
|
shouldScan: (args) => shouldScanDependencies(args, ignoreDryRun),
|
|
};
|
|
}
|
|
function scanDependencies(args) {
|
|
return checkChangesFromArgs(args);
|
|
}
|
|
|
|
function shouldScanDependencies(args, ignoreDryRun) {
|
|
return ignoreDryRun || !hasDryRunArg(args);
|
|
}
|
|
|
|
export async function checkChangesFromArgs(args) {
|
|
const changes = [];
|
|
const packageUpdates = parsePackagesFromInstallArgs(args);
|
|
|
|
for (const packageUpdate of packageUpdates) {
|
|
var exactVersion = await resolvePackageVersion(
|
|
packageUpdate.name,
|
|
packageUpdate.version
|
|
);
|
|
if (exactVersion) {
|
|
packageUpdate.version = exactVersion;
|
|
}
|
|
|
|
changes.push({ ...packageUpdate, type: "add" });
|
|
}
|
|
return changes;
|
|
}
|