PowerShell.Map.psm1

# PowerShell.Map Module
# This script module is loaded as a nested module for cleanup purposes only.
# The binary module (PowerShell.Map.dll) is loaded as RootModule.

# Module cleanup - stop server when module is removed
$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = {
    # Suppress all error messages during cleanup
    $ErrorActionPreference = 'SilentlyContinue'
    
    try {
        $server = [PowerShell.Map.Server.MapServer]::Instance
        $server.Stop()
        Write-Verbose "Map server stopped during module cleanup"
    }
    catch [System.ObjectDisposedException] {
        # HttpListener already disposed - this is expected when called multiple times
        Write-Verbose "Map server already stopped (ObjectDisposedException caught)"
    }
    catch {
        # Silently ignore all other errors during cleanup
        # No warning message to keep output clean
    }
    finally {
        # Clear any errors that may have been added to $Error
        $Error.Clear()
    }
}