DllSpy.Format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
 
    <!-- InputSurface Table View (unified, used for mixed types) -->
    <View>
      <Name>DllSpy.Core.Contracts.InputSurface</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.HttpEndpoint</TypeName>
        <TypeName>DllSpy.Core.Contracts.SignalRMethod</TypeName>
        <TypeName>DllSpy.Core.Contracts.WcfOperation</TypeName>
        <TypeName>DllSpy.Core.Contracts.GrpcOperation</TypeName>
        <TypeName>DllSpy.Core.Contracts.RazorPageHandler</TypeName>
        <TypeName>DllSpy.Core.Contracts.BlazorRoute</TypeName>
        <TypeName>DllSpy.Core.Contracts.AzureFunction</TypeName>
        <TypeName>DllSpy.Core.Contracts.ODataEndpoint</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Method</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Route</Label>
            <Width>40</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Class</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Action</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>
                  switch ($_.SurfaceType.ToString()) {
                    'HttpEndpoint' { 'HTTP' }
                    'SignalRMethod' { 'SignalR' }
                    'WcfOperation' { 'WCF' }
                    'GrpcOperation' { 'gRPC' }
                    'RazorPage' { 'Razor' }
                    'BlazorComponent' { 'Blazor' }
                    'AzureFunction' { 'Func' }
                    'ODataEndpoint' { 'OData' }
                    default { $_.SurfaceType }
                  }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_ -is [DllSpy.Core.Contracts.HttpEndpoint]) { $_.HttpMethod }
                  elseif ($_ -is [DllSpy.Core.Contracts.ODataEndpoint]) { $_.HttpMethod }
                  elseif ($_ -is [DllSpy.Core.Contracts.RazorPageHandler]) { $_.HttpMethod }
                  elseif ($_ -is [DllSpy.Core.Contracts.AzureFunction]) { if ($_.HttpMethod) { $_.HttpMethod } else { 'ANY' } }
                  else { '' }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_ -is [DllSpy.Core.Contracts.HttpEndpoint]) { $_.Route }
                  elseif ($_ -is [DllSpy.Core.Contracts.ODataEndpoint]) { $_.Route }
                  elseif ($_ -is [DllSpy.Core.Contracts.RazorPageHandler]) {
                    if ($_.HandlerName) { "$($_.PageRoute)?handler=$($_.HandlerName)" }
                    else { $_.PageRoute }
                  }
                  elseif ($_ -is [DllSpy.Core.Contracts.SignalRMethod]) { $_.HubRoute }
                  elseif ($_ -is [DllSpy.Core.Contracts.WcfOperation]) { $_.ContractName }
                  elseif ($_ -is [DllSpy.Core.Contracts.GrpcOperation]) { $_.ServiceName }
                  elseif ($_ -is [DllSpy.Core.Contracts.BlazorRoute]) { $_.RouteTemplate }
                  elseif ($_ -is [DllSpy.Core.Contracts.AzureFunction]) { if ($_.Route) { $_.Route } else { $_.FunctionName } }
                  else { '' }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClassName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MethodName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- HttpEndpoint Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.HttpEndpoint</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.HttpEndpoint</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Method</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Route</Label>
            <Width>40</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Class</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Action</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>'HTTP'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>HttpMethod</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Route</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClassName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MethodName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- HttpEndpoint List View -->
    <View>
      <Name>DllSpy.Core.Contracts.HttpEndpoint.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.HttpEndpoint</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>HTTP Method</Label>
                <PropertyName>HttpMethod</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Route</Label>
                <PropertyName>Route</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Class</Label>
                <PropertyName>ClassName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Action</Label>
                <PropertyName>MethodName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Requires Auth</Label>
                <PropertyName>RequiresAuthorization</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Allow Anonymous</Label>
                <PropertyName>AllowAnonymous</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Roles</Label>
                <ScriptBlock>($_.Roles -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Policies</Label>
                <ScriptBlock>($_.Policies -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Return Type</Label>
                <PropertyName>ReturnType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Is Async</Label>
                <PropertyName>IsAsync</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Parameters</Label>
                <ScriptBlock>($_.Parameters | ForEach-Object { $_.ToString() }) -join '; '</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
    <!-- SignalRMethod Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.SignalRMethod</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.SignalRMethod</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Hub</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Method</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>HubRoute</Label>
            <Width>25</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Streaming</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>'SignalR'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>HubName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MethodName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>HubRoute</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.IsStreamingResult -and $_.AcceptsStreaming) { 'Both' }
                  elseif ($_.IsStreamingResult) { 'Result' }
                  elseif ($_.AcceptsStreaming) { 'Input' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- SignalRMethod List View -->
    <View>
      <Name>DllSpy.Core.Contracts.SignalRMethod.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.SignalRMethod</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Hub</Label>
                <PropertyName>HubName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Method</Label>
                <PropertyName>MethodName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Hub Route</Label>
                <PropertyName>HubRoute</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Streaming Result</Label>
                <PropertyName>IsStreamingResult</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Accepts Streaming</Label>
                <PropertyName>AcceptsStreaming</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Requires Auth</Label>
                <PropertyName>RequiresAuthorization</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Allow Anonymous</Label>
                <PropertyName>AllowAnonymous</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Roles</Label>
                <ScriptBlock>($_.Roles -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Policies</Label>
                <ScriptBlock>($_.Policies -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Return Type</Label>
                <PropertyName>ReturnType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Is Async</Label>
                <PropertyName>IsAsync</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Parameters</Label>
                <ScriptBlock>($_.Parameters | ForEach-Object { $_.ToString() }) -join '; '</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
    <!-- WcfOperation Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.WcfOperation</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.WcfOperation</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Contract</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Method</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Class</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>OneWay</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>'WCF'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ContractName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MethodName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClassName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.IsOneWay) { 'Yes' } else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- WcfOperation List View -->
    <View>
      <Name>DllSpy.Core.Contracts.WcfOperation.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.WcfOperation</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Contract</Label>
                <PropertyName>ContractName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Method</Label>
                <PropertyName>MethodName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Class</Label>
                <PropertyName>ClassName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Namespace</Label>
                <PropertyName>ServiceNamespace</PropertyName>
              </ListItem>
              <ListItem>
                <Label>One-Way</Label>
                <PropertyName>IsOneWay</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Requires Auth</Label>
                <PropertyName>RequiresAuthorization</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Allow Anonymous</Label>
                <PropertyName>AllowAnonymous</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Roles</Label>
                <ScriptBlock>($_.Roles -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Policies</Label>
                <ScriptBlock>($_.Policies -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Return Type</Label>
                <PropertyName>ReturnType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Is Async</Label>
                <PropertyName>IsAsync</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Parameters</Label>
                <ScriptBlock>($_.Parameters | ForEach-Object { $_.ToString() }) -join '; '</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
    <!-- GrpcOperation Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.GrpcOperation</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.GrpcOperation</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Service</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Method</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Class</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Streaming</Label>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>'gRPC'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ServiceName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MethodName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClassName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MethodType</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- GrpcOperation List View -->
    <View>
      <Name>DllSpy.Core.Contracts.GrpcOperation.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.GrpcOperation</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Service</Label>
                <PropertyName>ServiceName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Method</Label>
                <PropertyName>MethodName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Class</Label>
                <PropertyName>ClassName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Method Type</Label>
                <PropertyName>MethodType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Requires Auth</Label>
                <PropertyName>RequiresAuthorization</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Allow Anonymous</Label>
                <PropertyName>AllowAnonymous</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Roles</Label>
                <ScriptBlock>($_.Roles -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Policies</Label>
                <ScriptBlock>($_.Policies -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Return Type</Label>
                <PropertyName>ReturnType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Is Async</Label>
                <PropertyName>IsAsync</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Parameters</Label>
                <ScriptBlock>($_.Parameters | ForEach-Object { $_.ToString() }) -join '; '</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
    <!-- RazorPageHandler Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.RazorPageHandler</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.RazorPageHandler</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Method</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Route</Label>
            <Width>40</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Class</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Action</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>'Razor'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>HttpMethod</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.HandlerName) { "$($_.PageRoute)?handler=$($_.HandlerName)" }
                  else { $_.PageRoute }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClassName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MethodName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- RazorPageHandler List View -->
    <View>
      <Name>DllSpy.Core.Contracts.RazorPageHandler.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.RazorPageHandler</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>HTTP Method</Label>
                <PropertyName>HttpMethod</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Page Route</Label>
                <PropertyName>PageRoute</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Handler</Label>
                <PropertyName>HandlerName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Page Model</Label>
                <PropertyName>PageModelName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Class</Label>
                <PropertyName>ClassName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Action</Label>
                <PropertyName>MethodName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Requires Auth</Label>
                <PropertyName>RequiresAuthorization</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Allow Anonymous</Label>
                <PropertyName>AllowAnonymous</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Roles</Label>
                <ScriptBlock>($_.Roles -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Policies</Label>
                <ScriptBlock>($_.Policies -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Return Type</Label>
                <PropertyName>ReturnType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Is Async</Label>
                <PropertyName>IsAsync</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Parameters</Label>
                <ScriptBlock>($_.Parameters | ForEach-Object { $_.ToString() }) -join '; '</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
    <!-- BlazorRoute Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.BlazorRoute</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.BlazorRoute</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Route</Label>
            <Width>40</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Component</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Class</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>'Blazor'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>RouteTemplate</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ComponentName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClassName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- BlazorRoute List View -->
    <View>
      <Name>DllSpy.Core.Contracts.BlazorRoute.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.BlazorRoute</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Route</Label>
                <PropertyName>RouteTemplate</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Component</Label>
                <PropertyName>ComponentName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Class</Label>
                <PropertyName>ClassName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Requires Auth</Label>
                <PropertyName>RequiresAuthorization</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Allow Anonymous</Label>
                <PropertyName>AllowAnonymous</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Roles</Label>
                <ScriptBlock>($_.Roles -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Policies</Label>
                <ScriptBlock>($_.Policies -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Return Type</Label>
                <PropertyName>ReturnType</PropertyName>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
    <!-- AzureFunction Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.AzureFunction</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.AzureFunction</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Method</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Route</Label>
            <Width>30</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Function</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Class</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>AuthLevel</Label>
            <Width>12</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>'Func'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.HttpMethod) { $_.HttpMethod } else { 'ANY' }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.Route) { $_.Route } else { $_.FunctionName }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>FunctionName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClassName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>AuthorizationLevel</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- AzureFunction List View -->
    <View>
      <Name>DllSpy.Core.Contracts.AzureFunction.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.AzureFunction</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Function Name</Label>
                <PropertyName>FunctionName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>HTTP Method</Label>
                <ScriptBlock>if ($_.HttpMethod) { $_.HttpMethod } else { 'ANY' }</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Route</Label>
                <ScriptBlock>if ($_.Route) { $_.Route } else { $_.FunctionName }</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Authorization Level</Label>
                <PropertyName>AuthorizationLevel</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Class</Label>
                <PropertyName>ClassName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Action</Label>
                <PropertyName>MethodName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Requires Auth</Label>
                <PropertyName>RequiresAuthorization</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Allow Anonymous</Label>
                <PropertyName>AllowAnonymous</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Roles</Label>
                <ScriptBlock>($_.Roles -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Policies</Label>
                <ScriptBlock>($_.Policies -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Return Type</Label>
                <PropertyName>ReturnType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Is Async</Label>
                <PropertyName>IsAsync</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Parameters</Label>
                <ScriptBlock>($_.Parameters | ForEach-Object { $_.ToString() }) -join '; '</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
    <!-- ODataEndpoint Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.ODataEndpoint</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.ODataEndpoint</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Method</Label>
            <Width>8</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Route</Label>
            <Width>35</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>EntitySet</Label>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Action</Label>
            <Width>16</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Query</Label>
            <Width>6</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Auth</Label>
            <Width>6</Width>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <ScriptBlock>'OData'</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>HttpMethod</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Route</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>EntitySetName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>MethodName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>if ($_.HasEnableQuery) { 'Yes' } else { 'No' }</ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.RequiresAuthorization) { 'Yes' }
                  elseif ($_.AllowAnonymous) { 'Anon' }
                  else { 'No' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- ODataEndpoint List View -->
    <View>
      <Name>DllSpy.Core.Contracts.ODataEndpoint.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.ODataEndpoint</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>HTTP Method</Label>
                <PropertyName>HttpMethod</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Route</Label>
                <PropertyName>Route</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Entity Set</Label>
                <PropertyName>EntitySetName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Enable Query</Label>
                <PropertyName>HasEnableQuery</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Class</Label>
                <PropertyName>ClassName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Action</Label>
                <PropertyName>MethodName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Requires Auth</Label>
                <PropertyName>RequiresAuthorization</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Allow Anonymous</Label>
                <PropertyName>AllowAnonymous</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Roles</Label>
                <ScriptBlock>($_.Roles -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Policies</Label>
                <ScriptBlock>($_.Policies -join ', ')</ScriptBlock>
              </ListItem>
              <ListItem>
                <Label>Return Type</Label>
                <PropertyName>ReturnType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Is Async</Label>
                <PropertyName>IsAsync</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Parameters</Label>
                <ScriptBlock>($_.Parameters | ForEach-Object { $_.ToString() }) -join '; '</ScriptBlock>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
    <!-- SecurityIssue Table View -->
    <View>
      <Name>DllSpy.Core.Contracts.SecurityIssue</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.SecurityIssue</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Severity</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Type</Label>
            <Width>14</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Title</Label>
            <Width>35</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Surface</Label>
            <Width>35</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Description</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Severity</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>SurfaceType</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Title</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>SurfaceRoute</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Description</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
 
    <!-- SecurityIssue List View -->
    <View>
      <Name>DllSpy.Core.Contracts.SecurityIssue.List</Name>
      <ViewSelectedBy>
        <TypeName>DllSpy.Core.Contracts.SecurityIssue</TypeName>
      </ViewSelectedBy>
      <ListControl>
        <ListEntries>
          <ListEntry>
            <ListItems>
              <ListItem>
                <Label>Severity</Label>
                <PropertyName>Severity</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Surface Type</Label>
                <PropertyName>SurfaceType</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Title</Label>
                <PropertyName>Title</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Surface</Label>
                <PropertyName>SurfaceRoute</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Class</Label>
                <PropertyName>ClassName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Method</Label>
                <PropertyName>MethodName</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Description</Label>
                <PropertyName>Description</PropertyName>
              </ListItem>
              <ListItem>
                <Label>Recommendation</Label>
                <PropertyName>Recommendation</PropertyName>
              </ListItem>
            </ListItems>
          </ListEntry>
        </ListEntries>
      </ListControl>
    </View>
 
  </ViewDefinitions>
</Configuration>