$this->type]; if ($this->description !== null) { $array['description'] = $this->description; } return $array; } /** * Validate a value against this type definition. */ public function validate(mixed $value, string $path = ''): void { if (! is_array($value)) { throw RecordValidationException::invalidType($path, 'cid-link (object with $link)', gettype($value)); } if (! isset($value['$link'])) { throw RecordValidationException::invalidValue($path, 'must contain $link property'); } $link = $value['$link']; if (! is_string($link)) { throw RecordValidationException::invalidValue($path, '$link must be a string'); } // Basic CID validation if (! preg_match('/^[a-zA-Z0-9]+$/', $link)) { throw RecordValidationException::invalidValue($path, '$link must be a valid CID'); } } }