Private/Helper/Build-ExtensionsPayload.ps1

function Build-ExtensionsPayload {
    param(
        [string]$Json,
        [string]$ScriptsPath,
        [string]$StylesPath,
        [switch]$EncapsulateStyles
    )

    # Get all available extensions by scanning the ScriptsPath for .js files
    $AvailableExtensions = (Get-ChildItem -Path $ScriptsPath -Filter *.js | ForEach-Object { $_.BaseName })

    # An empty array to hold the extensions that need to be loaded
    $ExtensionsToLoad = [System.Collections.ArrayList]@()

    # Test each available extension to see if it's referenced in the JSON by its element type
    foreach ($Extension in $AvailableExtensions) {
        if ($Json -match [regex]::escape($Extension)) {
            [void]($ExtensionsToLoad.Add($Extension))
        }
    }

    $ReturnPayload = @{
        Scripts = ''
        Styles  = ''
    }

    #Load all the mandatory extensions

    #Get all the mandatory js files
    $MandatoryScripts = (Get-ChildItem -Path "$ScriptsPath\.." -Filter "*.mandatory.js" -Recurse)
    foreach ($Script in $MandatoryScripts) {
        Write-Verbose "Loading mandatory extension script: $($Script.FullName)"
        $ScriptContent = Get-Content -Path $Script.FullName -Raw
        $ReturnPayload.Scripts += "`n`n// Mandatory Extension: $($Script.BaseName)`n" + $ScriptContent
    }
    #Get all the mandatory css files
    $MandatoryStyles = (Get-ChildItem -Path "$StylesPath\.." -Filter "*.mandatory.css")
    foreach ($Style in $MandatoryStyles) {
        $StyleContent = Get-Content -Path $Style.FullName -Raw
        $ReturnPayload.Styles += "`n/* Mandatory Extension: $($Style.BaseName) */`n" + $StyleContent
    }


    foreach ($Extension in $ExtensionsToLoad) {
        #Get the file content
        $ExtensionPath = "$ScriptsPath\$Extension.js"

        # Add the script content to the payload
        if (Test-Path -Path $ExtensionPath) {
            $ExtensionContent = Get-Content -Path $ExtensionPath -Raw
            $ReturnPayload.Scripts += "`n`n// Extension: $Extension`n" + $ExtensionContent
        }

        # Add the CSS content to the payload
        $ExtensionCssPath = "$StylesPath\$Extension.css"
        if (Test-Path -Path $ExtensionCssPath) {
            $ExtensionCssContent = Get-Content -Path $ExtensionCssPath -Raw
            $ReturnPayload.Styles += "`n/* Extension: $Extension */`n" + $ExtensionCssContent
        }
    }

    if ($EncapsulateStyles) {
        $ReturnPayload.Styles = "<style type='text/css'>$($ReturnPayload.Styles)</style>"
    }

    return $ReturnPayload
}