diff --git a/packages/safe-chain/src/main.js b/packages/safe-chain/src/main.js index ea4fe0e..c46fc61 100644 --- a/packages/safe-chain/src/main.js +++ b/packages/safe-chain/src/main.js @@ -72,6 +72,19 @@ export async function main(args) { ); } + if (proxy.hasSuppressedVersions()) { + ui.writeInformation( + `${chalk.yellow( + "ℹ" + )} Safe-chain: Some package versions were suppressed due to minimum age requirement.` + ); + ui.writeInformation( + ` To disable this check, use: ${chalk.cyan( + "--safe-chain-skip-minimum-package-age" + )}` + ); + } + // Returning the exit code back to the caller allows the promise // to be awaited in the bin files and return the correct exit code return packageManagerResult.status; diff --git a/packages/safe-chain/src/registryProxy/interceptors/npm/modifyNpmInfo.js b/packages/safe-chain/src/registryProxy/interceptors/npm/modifyNpmInfo.js index 54269a8..2ad8a68 100644 --- a/packages/safe-chain/src/registryProxy/interceptors/npm/modifyNpmInfo.js +++ b/packages/safe-chain/src/registryProxy/interceptors/npm/modifyNpmInfo.js @@ -1,6 +1,8 @@ import { getMinimumPackageAgeHours } from "../../../config/settings.js"; import { ui } from "../../../environment/userInteraction.js"; +let hasSuppressedVersions = false; + /** * @param {NodeJS.Dict} headers */ @@ -100,6 +102,8 @@ export function modifyNpmInfoResponse(body, headers) { * @param {string} version */ function deleteVersionFromJson(json, version) { + hasSuppressedVersions = true; + ui.writeVerbose( `Safe-chain: ${version} is newer than ${getMinimumPackageAgeHours()} hours and was removed (minimumPackageAgeInHours setting).` ); @@ -152,3 +156,10 @@ function getMostRecentTag(tagList) { return current; } + +/** + * @returns {boolean} + */ +export function getHasSuppressedVersions() { + return hasSuppressedVersions; +} diff --git a/packages/safe-chain/src/registryProxy/registryProxy.js b/packages/safe-chain/src/registryProxy/registryProxy.js index beaa1ef..8169086 100644 --- a/packages/safe-chain/src/registryProxy/registryProxy.js +++ b/packages/safe-chain/src/registryProxy/registryProxy.js @@ -6,6 +6,7 @@ import { getCaCertPath } from "./certUtils.js"; import { ui } from "../environment/userInteraction.js"; import chalk from "chalk"; import { createInterceptorForUrl } from "./interceptors/createInterceptorForEcoSystem.js"; +import { getHasSuppressedVersions } from "./interceptors/npm/modifyNpmInfo.js"; const SERVER_STOP_TIMEOUT_MS = 1000; /** @@ -23,6 +24,7 @@ export function createSafeChainProxy() { startServer: () => startServer(server), stopServer: () => stopServer(server), verifyNoMaliciousPackages, + hasSuppressedVersions: getHasSuppressedVersions, }; }