, normalized: ?string} */ public static function validateUrlString(?string $urlValue, bool $forceDomainOverride = false): array { $errors = []; if ($urlValue === null || $urlValue === '') { return ['errors' => [], 'normalized' => null]; } $urls = str($urlValue) ->replaceStart(',', '') ->replaceEnd(',', '') ->trim() ->explode(',') ->map(fn ($url) => trim((string) $url)) ->filter(); $errors = ValidationPatterns::validateApplicationDomains($urls->implode(',')); $duplicates = $urls->duplicates()->unique()->values(); if ($duplicates->isNotEmpty() && ! $forceDomainOverride) { $errors[] = 'The current request contains duplicate URLs: '.implode(', ', $duplicates->toArray()).'. Use force_domain_override=true to proceed.'; } if (count($errors) > 0) { return ['errors' => $errors, 'normalized' => null]; } $normalized = $urls ->map(fn ($u) => str($u)->lower()->value()) ->unique() ->filter(fn ($u) => filled($u)) ->implode(','); return ['errors' => [], 'normalized' => $normalized !== '' ? $normalized : null]; } }