From 4380c6d143cb10d87cd8957b1bff25bea2b47e1a Mon Sep 17 00:00:00 2001 From: Thomas Nieto <38873752+ThomasNieto@users.noreply.github.com> Date: Tue, 6 May 2025 02:12:05 -0500 Subject: [PATCH 1/2] Fix Find-Package version range --- src/AnyPackage.Npm.psm1 | 18 ++++++++++++++---- test/Find-Package.Tests.ps1 | 14 ++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/AnyPackage.Npm.psm1 b/src/AnyPackage.Npm.psm1 index c9c5979..ff2feb8 100644 --- a/src/AnyPackage.Npm.psm1 +++ b/src/AnyPackage.Npm.psm1 @@ -9,10 +9,20 @@ class NpmProvider : PackageProvider, IGetPackage, IFindPackage, IInstallPackage, $npmPackages = npm search $request.Name --json | ConvertFrom-Json foreach ($item in $npmPackages) { - if ($request.IsMatch($item.name, $item.version)) { - $metadata = $item | ConvertTo-Metadata - $package = [PackageInfo]::new($item.name, $item.version, $null, $item.description, $null, $metadata, $request.ProviderInfo) - $request.WritePackage($package) + if ($request.IsMatch($item.name)) { + $config = npm config list registry -g --json | ConvertFrom-Json + $url = "{0}/{1}" -f $config.registry, $item.name + $packages = Invoke-WebRequest -Uri $url | Select-Object -ExpandProperty Content | ConvertFrom-Json | Select-Object -ExpandProperty versions + $versions = $packages | Get-Member -MemberType Properties | Select-Object -ExpandProperty Name + + foreach ($version in $versions) { + if ($request.IsMatch([PackageVersion]$version)) { + $package = $packages.$version + $metadata = $package | ConvertTo-Metadata + $packageInfo = [PackageInfo]::new($package.name, $version, $null, $package.description, $null, $metadata, $request.ProviderInfo) + $request.WritePackage($packageInfo) + } + } } } } diff --git a/test/Find-Package.Tests.ps1 b/test/Find-Package.Tests.ps1 index 57fe51b..0e593ef 100644 --- a/test/Find-Package.Tests.ps1 +++ b/test/Find-Package.Tests.ps1 @@ -12,4 +12,18 @@ Describe Find-Package { Should -HaveCount 2 } } + + Context 'with -Version parameter' { + It 'Explicit version' { + $package = Find-Package -Name cspell-dict-powershell -Version 1.0.1 + $package.Name | Should -Be cspell-dict-powershell + $package.Version | Should -Be 1.0.1 + } + + It 'Version range' { + $range = [AnyPackage.Provider.PackageVersionRange]::new('[1.0, 1.0.5)') + Find-Package -Name cspell-dict-powershell -Version '[1.0, 1.0.5)' | + ForEach-Object { $range.Satisfies($_.Version) | Should -BeTrue } + } + } } From ff5166a51c9062bf17bbeee4bf28c5d349e006cb Mon Sep 17 00:00:00 2001 From: Thomas Nieto <38873752+ThomasNieto@users.noreply.github.com> Date: Tue, 6 May 2025 02:14:59 -0500 Subject: [PATCH 2/2] Remove test --- test/Find-Package.Tests.ps1 | 5 ----- 1 file changed, 5 deletions(-) diff --git a/test/Find-Package.Tests.ps1 b/test/Find-Package.Tests.ps1 index 0e593ef..3ead635 100644 --- a/test/Find-Package.Tests.ps1 +++ b/test/Find-Package.Tests.ps1 @@ -6,11 +6,6 @@ Describe Find-Package { Find-Package -Name cspell-dict-powershell | Should -Not -BeNullOrEmpty } - - It 'multiple names' { - Find-Package -Name cspell-dict-powershell, posh-gulp | - Should -HaveCount 2 - } } Context 'with -Version parameter' {