M365.Toolkit.psm1

#Requires -Version 5.1

# Dot-source all Private and Public function scripts
$SourceRoot = Join-Path $PSScriptRoot 'src'
$Private = @(Get-ChildItem -Path (Join-Path $SourceRoot 'Private') -Filter '*.ps1' -Recurse -ErrorAction Stop)
$Public  = @(Get-ChildItem -Path (Join-Path $SourceRoot 'Public')  -Filter '*.ps1' -Recurse -ErrorAction Stop)

foreach ($file in @($Private + $Public)) {
    try {
        . $file.FullName
    }
    catch {
        Write-Error -Message "Failed to import function $($file.FullName): $_"
    }
}

# Only the functions in Public\ are exported to consumers of the module.
Export-ModuleMember -Function $Public.BaseName

# SIG # Begin signature block
# MIIHMAYJKoZIhvcNAQcCoIIHITCCBx0CAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCA+7Hc0CL0m9sS8
# 3/s5+SXyuBt3/oryZRSnZdwDhzPMTqCCBBwwggQYMIICgKADAgECAhBH6tQY1Crt
# r02dueiKibmNMA0GCSqGSIb3DQEBCwUAMCQxIjAgBgNVBAMMGU0zNjUuVG9vbGtp
# dCBDb2RlIFNpZ25pbmcwHhcNMjYwNzE2MTY1NjE0WhcNMjcwNzE2MTcwNjEzWjAk
# MSIwIAYDVQQDDBlNMzY1LlRvb2xraXQgQ29kZSBTaWduaW5nMIIBojANBgkqhkiG
# 9w0BAQEFAAOCAY8AMIIBigKCAYEAxQCBRWJ923yIy73AwGWtFvfBL/dZHvwCBO05
# dJopbkHGcCqifl9R21PXr5OIjcEFv16ObYL23cPwZaNKCiejuiU32MHwidYHU1k5
# AzFpjwW2uwjeA7Hip3cURwoeOH/LzNa/xNTBRiO70M7gunZCm+FixDcPKf66Tvb1
# iM6pbOFmJvzbGjFqKM6mQRofaCPU89SHW5y43HyZNdiWsJTN4TsWj96Rps4fKhh2
# gToexqi0GhLHhLtVQ8ZxMic6w0C9sCWhYBl3kw1OJdaa/MVBdVAXDOIL0HIG8jOa
# l1x67U1LihXEw1hdc3YabhvSYZ5ZXPV1AZ2z6+Qa0EL9XlJWqBkn0rO6sZB1IkOo
# gfeTxVuI6SjhqpW6QrAFFJzb81qd0dDWmmuVka1yoWEic7naZpDfuh3JZPOUilE1
# Wv3qhBDYN5qg1qXeh0RMosR8rMfKjE8CFvsB7LTibom+22in1x16vmIiv9ep5HNc
# eS0hRa/84+vmXQ8R6hN8x+oWbG8NAgMBAAGjRjBEMA4GA1UdDwEB/wQEAwIHgDAT
# BgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUu9RWiOCtUYtlrLgwzVDsor7P
# p88wDQYJKoZIhvcNAQELBQADggGBAKJksJX6tgjdng//9wRM2ztQn8breDnY/Zki
# 8iXrC94sqCYoYg1lT0pVHZq1ZHpdUNh/xQnjP9asbIqgUt0YiCIASCONV2nM2wyK
# VjrvxaC08xefuHiO/R6Uc9sDW38mID+gDoAmswmB9JV5qm+j8b4hw3vcwuUe3nla
# 5bn3YoKXLY4/YJjHNA62TmhYNfs7iwdk2vyH/dCvD35LdBhP/y2ChmOxzI1aSp4L
# c65zCFVDPzw1IED/5q9NM48QUVDgVAX6VNuocjXZpWd7fHf7KFLRJSExXtaYQCdk
# hBSITzd5WBT2opKF02TrTyc5h1zCTr6HU+1Eqr92fvEGfqk4yYSt4plyqbm6Unnq
# gEgwDqlgm9ZNA8hzorcoxSetVVZ8z+50KB55JRTENZ/5kOJWzPtoIA+PdmFvg3wU
# jQHhO6C32rdVUk+j1hI1zL6sR8gYn5VmLPVjfs49yKf+2t3iDsaYVRNawOqHrMZj
# g59c2M2hT5D6krLsI8r3F/t3YfHbKjGCAmowggJmAgEBMDgwJDEiMCAGA1UEAwwZ
# TTM2NS5Ub29sa2l0IENvZGUgU2lnbmluZwIQR+rUGNQq7a9Nnbnoiom5jTANBglg
# hkgBZQMEAgEFAKCBhDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3
# DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEV
# MC8GCSqGSIb3DQEJBDEiBCBmyegsaOBFWlavXtwV0dVgTa8xMLBpNIW5sjW7ptzS
# /TANBgkqhkiG9w0BAQEFAASCAYChndzTnWkvW5N2HJSvMQweq7+vVOpdsjttS9ju
# DqspuJkyxMYA0qHHGzQxB6vRcDkvXWnUQdxAv+ebHtJBMRWHuYT7+4boEz+bLVkd
# Eu1kL5n0cnPChM0+WNss77Uw+FjbF0ppnAaLsdRTgInvdTcSLxvkzhYi35hn5gLf
# KMrsRo8TGOe8q8GvJyU7KuoHHrX276hn5GEa4gUAMIhaDEVOAy8HeAQAQnOTzAse
# XuH/0CbVaYBwTgm2eLZMv7WfMMok1lU2JXFctQIwnVGoRyFSo/Aj9yx+0TYq0z+O
# yT1I2qm8Xj/p/NWV4Tua75te6NmvNc8LGkunXWMciPs2rexIIJkjOf25L/vpBCkV
# U3HZIbfwVsbOrEMgHrOIG0ATQlIBJCns1GHtXifrdM7DQHUDNxMs0yaTtv0I7WYM
# 4/zksEXjTDYY5ao8bQ5BZv61oBuy+PE1FWNY9t7w+6JrDK5kvVBjbN/HX9b7PkSk
# b57jy1CHWGbLcLl+Rg+x9a3JwN0=
# SIG # End signature block