* SPDX-License-Identifier: AGPL-3.0-or-later */ namespace KTXF\Resource\Provider\Node; /** * Abstract Node Properties Base Class * * Provides common implementation for node properties * * @since 2025.05.01 */ abstract class NodePropertiesBaseAbstract implements NodePropertiesBaseInterface { protected string $type = 'resource.data'; protected array $data = []; public function __construct(array $data) { if (!isset($data[static::PROPERTY_TYPE])) { $data[static::PROPERTY_TYPE] = $this->type; } if (!isset($data[static::PROPERTY_SCHEMA])) { $data[static::PROPERTY_SCHEMA] = 1; } $this->data = $data; } /** * @inheritDoc */ public function jsonSerialize(): array { return $this->data; } /** * @inheritDoc */ public function type(): string { return $this->data[static::PROPERTY_TYPE]; } /** * @inheritDoc */ public function schema(): int { return $this->data[static::PROPERTY_SCHEMA]; } }