private/Get-FunnelDefinition.ps1

function Get-FunnelDefinition {
    param([Parameter(Mandatory = $true)][string]$Name)
    if ($script:FunnelCache.ContainsKey($Name)) { return $script:FunnelCache[$Name] }
    $userFile = Join-Path (Join-Path (Get-BucketsSystemPath) "funnels") "$Name.json"
    if (Test-Path $userFile) {
        $def = Get-Content -Path $userFile -Raw -Encoding UTF8 | ConvertFrom-Json
        if ($def.Filter -and -not $def.Transform) {
            $def | Add-Member -NotePropertyName Transform -NotePropertyValue $def.Filter
        }
        $script:FunnelCache[$Name] = $def
        return $def
    }
    $builtinFile = Join-Path $script:BuiltinFunnelsDir "$Name.json"
    if (Test-Path $builtinFile) {
        $def = Get-Content -Path $builtinFile -Raw -Encoding UTF8 | ConvertFrom-Json
        if ($def.Filter -and -not $def.Transform) {
            $def | Add-Member -NotePropertyName Transform -NotePropertyValue $def.Filter
        }
        $script:FunnelCache[$Name] = $def
        return $def
    }
    return $null
}