TenantBaseline.psm1

if ($PSVersionTable.PSVersion -lt [version]'7.2') {
    throw 'TenantBaseline requires PowerShell 7.2 or later. Install PowerShell 7.2+ and re-import the module.'
}

# Module-scoped state
$script:TBApiBaseUri = 'https://graph.microsoft.com/beta/admin/configurationManagement'
$script:UTCMAppId = '03b07b79-c5bc-4b5e-9bfa-13acf4a99998'
$script:TBConnection = $null
$script:TBModuleRoot = $PSScriptRoot

# Dot-source all private functions
$privatePath = Join-Path -Path $PSScriptRoot -ChildPath 'Private'
if (Test-Path -Path $privatePath) {
    $privateFiles = Get-ChildItem -Path $privatePath -Filter '*.ps1' -Recurse -ErrorAction SilentlyContinue
    foreach ($file in $privateFiles) {
        try {
            . $file.FullName
        }
        catch {
            Write-Error -Message ("Failed to import private function '{0}': {1}" -f $file.FullName, $_)
        }
    }
}

# Dot-source all public functions (recursively through subdirectories)
$publicPath = Join-Path -Path $PSScriptRoot -ChildPath 'Public'
if (Test-Path -Path $publicPath) {
    $publicFiles = Get-ChildItem -Path $publicPath -Filter '*.ps1' -Recurse -ErrorAction SilentlyContinue
    foreach ($file in $publicFiles) {
        try {
            . $file.FullName
        }
        catch {
            Write-Error -Message ("Failed to import public function '{0}': {1}" -f $file.FullName, $_)
        }
    }
}