listContents($folder);; foreach ($contents as $object) { if ($object['type'] == 'file' && Str::endsWith($object['basename'], '.yaml')) { $group = Yaml::parseFile($object['path']); $callback($group); } } } public static function doesGroupContainEndpoint(array $group, EndpointData $endpoint): bool { return boolval(Arr::first($group['endpoints'], fn(EndpointData $e) => $e->endpointId() === $endpoint->endpointId())); } /** * @param array[] $endpoints * * @return array[] */ public static function groupEndpoints(array $endpoints): array { $groupedEndpoints = collect($endpoints) ->groupBy('metadata.groupName') ->sortKeys(SORT_NATURAL); return $groupedEndpoints->map(fn(Collection $group) => [ 'name' => $group[0]->metadata->groupName, 'description' => Arr::first($group, function ($endpointData) { return $endpointData->metadata->groupDescription !== ''; })->metadata->groupDescription ?? '', 'endpoints' => $group->map(fn($endpointData) => $endpointData->forOutput())->all(), ])->all(); } }