Sources/Console/Set-Trigger.ps1

<#
.SYNOPSIS
    Sets an `HX-Trigger` header on the HTTP response.
.INPUTS
    The client-side events to trigger.
#>

function Set-Trigger {
    [CmdletBinding(DefaultParameterSetName = "InputObject")]
    [OutputType([void])]
    param (
        # The client-side events to trigger.
        [Parameter(Mandatory, ParameterSetName = "InputObject", Position = 1, ValueFromPipeline)]
        [hashtable] $InputObject,

        # The names of client-side events to trigger.
        [Parameter(Mandatory, ParameterSetName = "Name", Position = 1)]
        [string[]] $Name,

        # Value indicating whether to trigger client-side events after the settle step.
        [switch] $AfterSettle,

        # Value indicating whether to trigger client-side events after the swap step.
        [switch] $AfterSwap,

        # Value indicating whether to convert all enumerations to their string representation.
        [switch] $EnumsAsStrings
    )

    process {
        $header = $AfterSettle ? "HX-Trigger-After-Settle" : ($AfterSwap ? "HX-Trigger-After-Swap" : "HX-Trigger")
        $trigger = $InputObject ? $InputObject : ($Name -join ", ")
        Set-PodeHeader $header (ConvertTo-Json $trigger -Compress -Depth 5 -EnumsAsStrings:$EnumsAsStrings -EscapeHandling EscapeNonAscii)
    }
}