$filters * @return array> */ public function execute(array $filters = [], int $limit = 100, int $offset = 0): array { return $this->repository->findAll($filters, $limit, $offset); } /** * @return array|null */ public function findById(int $id): ?array { return $this->repository->findById($id); } /** * @return array */ public function getStatistics(): array { return $this->repository->getStatistics(); } /** * @return array{directories: array, namespaces: array} */ public function getFilterOptions(): array { return [ 'directories' => $this->repository->getDistinctDirectories(), 'namespaces' => $this->repository->getDistinctNamespaces(), ]; } /** * @return array{scan_id: string, files_scanned: int, files_with_errors: int, total_classes: int, total_functions: int, duration_ms: int} */ public function runScan(string $triggeredBy = 'web'): array { return $this->scanner->scan(null, $triggeredBy); } public function getLatestScanId(): ?string { return $this->repository->getLatestScanId(); } /** * Find files that depend on a given FQCN. * * @return array */ public function findDependents(string $fqcn): array { return $this->repository->findDependents($fqcn); } /** * Get global graph data for entire project. * * @return array{nodes: array>, links: array>, stats: array} */ public function getGlobalGraphData(): array { return $this->repository->getGlobalGraphData(); } }