> */ public const CLASSES = [ DiviPages::class, DiviLibraryStore::class, DiviRoles::class, DiviThemeBuilder::class, DesignSystemReader::class, DesignSystemWriter::class, GlobalColorsAdapter::class, GlobalVariablesAdapter::class, ThemeOptionsAdapter::class, FontCatalog::class, FontInstaller::class, DiviModules::class, DynamicContentMap::class, ]; /** @return array, Manifest> */ public static function manifests(): array { $manifests = []; foreach (self::CLASSES as $class) { $manifests[$class] = $class::manifest(); } return $manifests; } /** @return list Every Divi call of every manifest, each symbol once (the first entry wins). */ public static function calls(): array { $calls = []; foreach (self::manifests() as $manifest) { foreach ($manifest->calls as $call) { $calls[ltrim($call->symbol, '\\')] ??= $call; } } return array_values($calls); } /** @return list */ public static function mirrors(): array { $mirrors = []; foreach (self::manifests() as $manifest) { array_push($mirrors, ...$manifest->mirrors); } return $mirrors; } }