ExpressionCache.psm1

# ExpressionCache.psm1

# --- Module state (shared across all files) ---
$script:Config = $null
$script:RegisteredStorageProviders = @()

$utilitiesFolder = (Join-Path $PSScriptRoot 'Utilities')
# --- Load Utilities ---
Get-ChildItem -Path $utilitiesFolder -Filter *.ps1 -ErrorAction SilentlyContinue |
  Sort-Object Name |
  ForEach-Object { . $_.FullName }

$providersFolder = (Join-Path $PSScriptRoot 'Providers')
# --- Load Providers ---
Get-ChildItem -Path $providersFolder -Filter *.ps1 -ErrorAction SilentlyContinue |
  Sort-Object Name |
  ForEach-Object { . $_.FullName }

$publicFolder = Join-Path $PSScriptRoot 'Public'
# --- Load Public ---
if (Test-Path $publicFolder) {
  $publicFiles = Get-ChildItem -Path $publicFolder -Filter *.ps1 -ErrorAction SilentlyContinue | Sort-Object Name
  foreach ($f in $publicFiles) { . $f.FullName }
  Export-ModuleMember -Function $publicFiles.BaseName
}

$ExecutionContext.SessionState.Module.OnRemove = {
}