diff --git a/eng/common/scripts/Verify-Links.ps1 b/eng/common/scripts/Verify-Links.ps1 index fe04a9b1db2a..d0ac61d79542 100644 --- a/eng/common/scripts/Verify-Links.ps1 +++ b/eng/common/scripts/Verify-Links.ps1 @@ -120,6 +120,9 @@ function ProcessLink([System.Uri]$linkUri) { # See comment in function below for details. return ProcessCratesIoLink $linkUri $matches['path'] } + elseif ($linkUri -match '^https?://(www\.)?npmjs\.com/package/.+') { + return ProcessNpmLink $linkUri + } else { return ProcessStandardLink $linkUri } @@ -157,6 +160,14 @@ function ProcessCratesIoLink([System.Uri]$linkUri, $path) { return $true } +function ProcessNpmLink([System.Uri]$linkUri) { + # npmjs.com started using Cloudflare which returns 403 and we need to instead check the registry api for existence checks + # https://github.com/orgs/community/discussions/174098#discussioncomment-14461226 + $apiUrl = $linkUri.ToString() -replace '^https?://(?:www\.)?npmjs\.com/package/(.*)/v', 'https://registry.npmjs.org/$1' + + return ProcessStandardLink ([System.Uri]$apiUrl) +} + function ProcessStandardLink([System.Uri]$linkUri) { $headRequestSucceeded = $true try {