/**
* Build Graph of Outgoing and Incoming connections for given assets.
*
* @param WebAssetItem[] $assets Asset instances
*
* @return array
*
* @since 4.0.0
*/
protected function getConnectionsGraph(array $assets) : array
{
$graphOutgoing = [];
$graphIncoming = [];
foreach ($assets as $asset) {
$name = $asset->getName();
// Initialise an array for outgoing nodes of the asset
$graphOutgoing[$name] = [];
// Initialise an array for incoming nodes of the asset
if (!\array_key_exists($name, $graphIncoming)) {
$graphIncoming[$name] = [];
}
// Collect an outgoing/incoming nodes
foreach ($asset->getDependencies() as $depName) {
$graphOutgoing[$name][$depName] = $depName;
$graphIncoming[$depName][$name] = $name;
}
}
return ['outgoing' => $graphOutgoing, 'incoming' => $graphIncoming];
}