'v2', 'theme' => $outputConfig->theme, 'title' => $outputConfig->title, 'description' => $outputConfig->description, 'base_url' => $outputConfig->baseUrls[0] ?? null, 'type' => $outputConfig->type[0], $outputConfig->type[0] => self::translateKeys($outputConfig->type[1]), 'try_it_out' => self::translateKeys($outputConfig->tryItOut), 'postman' => self::translateKeys($outputConfig->postman), 'openapi' => self::translateKeys($outputConfig->openApi), 'intro_text' => $outputConfig->introText, 'example_languages' => $outputConfig->exampleLanguages, 'logo' => $outputConfig->logo, 'last_updated' => $outputConfig->lastUpdated, 'groups' => [ 'order' => $outputConfig->groupsOrder, 'default' => $extractingConfig->defaultGroup, ], 'examples' => [ 'faker_seed' => $extractingConfig->fakerSeedForExamples, 'models_source' => $extractingConfig->dataSourcesForExampleModels, ], 'routeMatcher' => $extractingConfig->routeMatcher, 'database_connections_to_transact' => $extractingConfig->databaseConnectionsToTransact, 'fractal' => [ 'serializer' => $extractingConfig->fractalSerializer, ], 'auth' => self::translateKeys($extractingConfig->auth), 'strategies' => $extractingConfig->strategies, 'routes' => static::generateRoutesConfig($extractingConfig->routes), ]; } protected static function generateRoutesConfig(Routes $routesConfig): array { return [ [ 'match' => [ 'prefixes' => $routesConfig->prefixes, 'domains' => $routesConfig->domains, 'versions' => $routesConfig->dingoVersions, ], 'include' => $routesConfig->alwaysInclude, 'exclude' => $routesConfig->alwaysExclude, ] ]; } protected static function translateKeys($array) { return Arr::mapWithKeys($array, function ($value, $key) { return [Str::snake($key) => $value]; }); } }