map(function (string $file): array { $manifest = json_decode((string) file_get_contents($file), true) ?: []; return [ 'name' => $manifest['name'] ?? basename(dirname($file)), 'version' => $manifest['version'] ?? 'unknown', 'description' => $manifest['description'] ?? '', 'requires' => $manifest['requires'] ?? [], ]; }) ->sortBy('name') ->values(); return view('developer::admin.index', compact('modules')); } }