src/private/PackageNameHelpers.ps1

# Test if the $Name contains any wildcard characters
function Test-WildcardPattern {
    [CmdletBinding()]
    [OutputType([bool])]
    param (
        [Parameter(Mandatory=$true)]
        [ValidateNotNull()]
        $Name
    )

    [System.Management.Automation.WildcardPattern]::ContainsWildcardCharacters($Name)
}

function Test-PackageName {
    [CmdletBinding()]
    [OutputType([bool])]
    param (
        [Parameter(Mandatory=$true)]
        [string]
        $PackageName,

        [Parameter(Mandatory=$true)]
        [string]
        $RequestedName
    )

    $nameRegex='^.*'+($RequestedName.TrimStart('*')).TrimEnd('.')+'.*$'

    # Return true if the package name returned from WinGet matched what we were expecting
    ($PackageName -match $nameRegex) -and (
        ($RequestedName -eq $PackageName) -or (Test-WildcardPattern -name $RequestedName)
    )
}