Steps to replicate the issue (include links if applicable):
- Provide the following schema in a provider:
ExampleSchema.php
<?php namespace CommunityConfigurationExample\Schemas; use MediaWiki\Extension\CommunityConfiguration\Schema\JsonSchema; use MediaWiki\Extension\CommunityConfiguration\Schemas\MediaWiki\MediaWikiDefinitions; class ExampleSchema extends JsonSchema { public const CCExamplePageTitles = [ self::REF => [ 'class' => MediaWikiDefinitions::class, 'field' => 'PageTitles' ], ]; }
MediaWikiDefinitions.php
<?php namespace MediaWiki\Extension\CommunityConfiguration\Schemas\MediaWiki; use MediaWiki\Extension\CommunityConfiguration\Schema\JsonSchema; // phpcs:disable Generic.NamingConventions.UpperCaseConstantName.ClassConstantNotUpperCase class MediaWikiDefinitions extends JsonSchema { public const PageTitle = [ self::TYPE => self::TYPE_STRING ]; public const PageTitles = [ self::TYPE => self::TYPE_ARRAY, self::ITEMS => [ self::REF => [ 'class' => self::class, 'field' => 'PageTitle' ] ] ]; }
config.json
{ "CCExamplePageTitles": ["A"] }
What happens?:
The serialized schema has de-normalized references in array items properties (and any definition which references another schema):
{ "$schema": "https://json-schema.org/draft-04/schema#", "$id": "CommunityConfigurationExample/Schemas/ExampleSchema/1.0.0", "additionalProperties": false, "type": "object", "properties": { "CCExamplePageTitles": { "$ref": "#/$defs/MediaWiki.Extension.CommunityConfiguration.Schemas.MediaWiki.MediaWikiDefinitions::PageTitles", "default": null } }, "$defs": { "MediaWiki.Extension.CommunityConfiguration.Schemas.MediaWiki.MediaWikiDefinitions::PageTitles": { "type": "array", "items": { // Should be a full path "$ref": { "class": "MediaWiki\\Extension\\CommunityConfiguration\\Schemas\\MediaWiki\\MediaWikiDefinitions", "field": "PageTitle" } } } } }
What should have happened instead?:
$ref should have an absolute URI as its reference: #/$defs/MediaWiki.Extension.CommunityConfiguration.Schemas.MediaWiki.MediaWikiDefinitions::PageTitle
Software version (on Special:Version page; skip for WMF-hosted wikis like Wikipedia):
Other information (browser name/version, screenshots, etc.):