From 790a6a9024c3985eb062d6eb3e574c20285408fb Mon Sep 17 00:00:00 2001 From: TangRufus Date: Sun, 26 Oct 2025 20:00:24 +0000 Subject: [PATCH] Type hint `CopyrightFactory::make()` --- src/CopyrightFactory.php | 13 ++++++++----- src/RecordFactory.php | 10 ++++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/CopyrightFactory.php b/src/CopyrightFactory.php index 444fa98..9259fe2 100644 --- a/src/CopyrightFactory.php +++ b/src/CopyrightFactory.php @@ -9,12 +9,15 @@ class CopyrightFactory /** @var Copyright[] */ private array $cache = []; - public function make(mixed $data): ?Copyright // TODO! + /** + * @param array{ + * notice?: mixed, + * license?: mixed, + * license_url?: mixed + * } $data + */ + public function make(array $data): ?Copyright { - if (! is_array($data)) { - return null; - } - $key = hash( 'xxh3', json_encode($data, JSON_THROW_ON_ERROR) diff --git a/src/RecordFactory.php b/src/RecordFactory.php index b76a1b3..d4b22c1 100644 --- a/src/RecordFactory.php +++ b/src/RecordFactory.php @@ -113,9 +113,15 @@ private function makeReferences(array $data): array */ private function makeCopyrights(array $data): array { + $rawCopyrights = $data['copyrights'] ?? null; + if (! is_array($rawCopyrights)) { + return []; + } + $rawCopyrights = array_filter($rawCopyrights, static fn (mixed $s) => is_array($s)); + $copyrights = array_map( - fn (mixed $datum): ?Copyright => $this->copyrightFactory->make($datum), - (array) ($data['copyrights'] ?? []), + fn (array $datum): ?Copyright => $this->copyrightFactory->make($datum), + $rawCopyrights, ); $copyrights = array_filter($copyrights);