mediawiki-extensions-Gadgets/includes/Content/schema.json
Siddharth VP 0c61a5a468 Specify all source pages in a single array in JSON definitions
As this repo is not used anywhere in production, there is no backward
compatibility. Any scripts, styles, datas specified in existing
definition pages will get ignored.

Gadget::getJSON() no longer checks isPackaged() – that is now left
for callers - only relevant one is in GadgetRLModule. That was done
because validationWarnings() method needs the JSON page list even for
non-package gadgets.

Bug: T353174
Change-Id: Ic820bc4632981369c72f822fb8b9b7195930eaa6
2023-12-16 14:31:09 +05:30

106 lines
2.5 KiB
JSON

{
"$schema": "http://json-schema.org/schema#",
"description": "Gadget definition schema",
"type": "object",
"additionalProperties": false,
"properties": {
"settings": {
"type": "object",
"additionalProperties": false,
"properties": {
"rights": {
"description": "The rights required to be able to enable/load this gadget",
"type": "array",
"items": {
"type": "string"
}
},
"default": {
"description": "Whether this gadget is enabled by default",
"type": "boolean",
"default": false
},
"package": {
"description": "Whether this is gadget a packaged ResourceLoader module",
"type": "boolean",
"default": false
},
"hidden": {
"description": "Whether this gadget is hidden from preferences",
"type": "boolean",
"default": false
},
"targets": {
"description": "List of ResourceLoader targets the module can run on",
"type": "array",
"items": {
"type": "string"
},
"default": [ "desktop" ]
},
"skins": {
"description": "Skins supported by this gadget; empty or true if all skins are supported",
"type": [ "array", "boolean" ],
"items": {
"type": "string"
}
},
"actions": {
"description": "Page actions on which to load the gadget",
"type": "array",
"items": {
"type": "string"
}
},
"namespaces": {
"description": "Page namespaces in which to load the gadget",
"type": "array",
"items": {
"type": "number"
}
},
"contentModels": {
"description": "Content models on which the gadget is supported",
"type": "array",
"items": {
"type": "string"
}
},
"category": {
"description": "Key of the category this gadget belongs to",
"type": "string",
"default": ""
},
"supportsUrlLoad": {
"description": "Whether this gadget supports ?withgadget query parameter",
"type": "boolean",
"default": false
},
"requiresES6": {
"description": "Whether this gadget requires ES6",
"type": "boolean",
"default": false
}
}
},
"module": {
"type": "object",
"additionalProperties": false,
"properties": {
"pages": {
"type": "array",
"description": "List of JS/CSS/JSON pages included in this gadget"
},
"dependencies": {
"type": "array",
"description": "ResourceLoader modules this gadget depends upon"
},
"messages": {
"type": "array",
"description": "Messages this gadget depends upon"
}
}
}
}
}