> */ private const RUNNERS = [ 'sherlock' => SherlockRunner::class, 'crtsh' => CrtShRunner::class, 'whois' => WhoisRunner::class, 'ip-api' => IpApiRunner::class, 'theharvester' => TheHarvesterRunner::class, 'holehe' => HoleheRunner::class, ]; public function has(string $sourceKey): bool { return isset(self::RUNNERS[$sourceKey]); } public function resolve(string $sourceKey): Runner { if (! $this->has($sourceKey)) { throw new RunnerException("No runner registered for source [{$sourceKey}]."); } return app(self::RUNNERS[$sourceKey]); } }