2022-02-16 11:20:17 +08:00

537 lines
10 KiB
JSON

{
"$id": "@ali/low-code-component-protocol-schema",
"description": "json schema for low code component protocol",
"allOf": [
{
"$ref": "#/definitions/BasicSection"
},
{
"$ref": "#/definitions/PropsSection"
},
{
"$ref": "#/definitions/ConfigureSection"
}
],
"definitions": {
"BasicSection": {
"type": "object",
"properties": {
"componentName": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"docUrl": {
"type": "string"
},
"screenshot": {
"type": "string"
},
"icon": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"devMode": {
"enum": [
"proCode",
"lowCode"
]
},
"npm": {
"$ref": "#/definitions/Npm"
}
},
"required": [
"componentName",
"title",
"npm",
"docUrl",
"screenshot"
]
},
"PropsSection": {
"type": "object",
"properties": {
"props": {
"type": "array",
"items": {
"properties": {
"name": {
"type": "string"
},
"propType": {
"$ref": "#/definitions/PropType"
},
"description": {
"type": "string"
},
"defaultValue": {}
},
"required": [
"name",
"propType"
]
}
}
}
},
"ConfigureSection": {
"type": "object",
"properties": {
"configure": {
"type": "object",
"properties": {
"props": {
"type": "array",
"items": {
"$ref": "#/definitions/ConfigureProp"
}
},
"styles": {
"type": "object",
"properties": {}
},
"events": {
"type": "object",
"properties": {}
},
"component": {
"$ref": "#/definitions/ConfigureComponent"
}
}
}
}
},
"Npm": {
"type": "object",
"properties": {
"package": {
"type": "string"
},
"exportName": {
"type": "string"
},
"subName": {
"type": "string"
},
"main": {
"type": "string"
},
"destructuring": {
"type": "boolean"
},
"version": {
"type": "string"
}
},
"required": [
"package",
"exportName",
"subName",
"main",
"destructuring",
"version"
]
},
"PropType": {
"oneOf": [
{
"$ref": "#/definitions/BasicType"
},
{
"$ref": "#/definitions/RequiredType"
},
{
"$ref": "#/definitions/ComplexType"
}
]
},
"BasicType": {
"type": "string",
"enum": [
"array",
"bool",
"func",
"number",
"object",
"string",
"node",
"element",
"any"
]
},
"RequiredType": {
"type": "object",
"properties": {
"type": {
"$ref": "#/definitions/BasicType"
},
"isRequired": {
"type": "boolean"
}
},
"additionalProperties": false,
"required": [
"type"
]
},
"ComplexType": {
"oneOf": [
{
"$ref": "#/definitions/OneOf"
},
{
"$ref": "#/definitions/OneOfType"
},
{
"$ref": "#/definitions/ArrayOf"
},
{
"$ref": "#/definitions/ObjectOf"
},
{
"$ref": "#/definitions/Shape"
},
{
"$ref": "#/definitions/Exact"
}
]
},
"OneOf": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"enum": [
"oneOf"
]
},
"value": {
"type": "array",
"items": {
"type": "string"
}
},
"isRequired": {
"type": "boolean"
}
}
},
"OneOfType": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"enum": [
"oneOfType"
]
},
"value": {
"type": "array",
"items": {
"$ref": "#/definitions/PropType"
}
},
"isRequired": {
"type": "boolean"
}
}
},
"ArrayOf": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"enum": [
"arrayOf"
]
},
"value": {
"$ref": "#/definitions/PropType"
},
"isRequired": {
"type": "boolean"
}
}
},
"ObjectOf": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"enum": [
"objectOf"
]
},
"value": {
"$ref": "#/definitions/PropType"
},
"isRequired": {
"type": "boolean"
}
}
},
"Shape": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"enum": [
"shape"
]
},
"value": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"propType": {
"$ref": "#/definitions/PropType"
}
},
"additionalProperties": false
}
},
"isRequired": {
"type": "boolean"
}
}
},
"ShapeItem": {
"type": "object",
"required": [
"name",
"propType"
],
"properties": {
"name": {
"type": "string"
},
"propType": {
"$ref": "#/definitions/PropType"
},
"isRequired": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Exact": {
"type": "object",
"required": [
"type",
"value"
],
"properties": {
"type": {
"type": "string",
"enum": [
"exact"
]
},
"value": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"propType": {
"$ref": "#/definitions/PropType"
}
},
"additionalProperties": false
}
},
"isRequired": {
"type": "boolean"
}
}
},
"ConfigureProp": {
"type": "object",
"allOf": [
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"extraProps": {
"type": "object",
"properties": {}
}
}
},
{
"oneOf": [
{
"$ref": "#/definitions/ConfigureFieldProp"
},
{
"$ref": "#/definitions/ConfigureGroupProp"
}
]
}
]
},
"ConfigureFieldProp": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"field"
]
},
"name": {
"type": "string"
},
"setter": {
"$ref": "#/definitions/ConfigureFieldSetter"
}
}
},
"ConfigureFieldSetter": {
"type": "object",
"required": [
"componentName"
],
"properties": {
"componentName": {
"type": "string",
"enum": [
"List",
"Object",
"Function",
"Node",
"Mixin",
"Expression",
"Switch",
"Number",
"Input",
"TextArea",
"Date",
"DateYear",
"DateMonth",
"DateRange",
"ColorPicker",
"CodeEditor",
"Select",
"RadioGroup"
]
},
"props": {
"type": "object",
"properties": {}
}
}
},
"ConfigureGroupProp": {
"type": "object",
"required": [
"type",
"items"
],
"properties": {
"type": {
"type": "string",
"enum": [
"group"
]
},
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/ConfigureProp"
}
}
}
},
"ConfigureComponent": {
"type": "object",
"properties": {
"isContainer": {
"type": "boolean"
},
"isModal": {
"type": "boolean"
},
"descriptor": {
"type": "string"
},
"nestingRule": {
"type": "object",
"properties": {
"childWhitelist": {
"type": "array",
"items": {
"type": "string"
}
},
"parentWhitelist": {
"type": "array",
"items": {
"type": "string"
}
},
"descendantBlacklist": {
"type": "array",
"items": {
"type": "string"
}
},
"ancestorWhitelist": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"isNullNode": {
"type": "boolean"
},
"isLayout": {
"type": "boolean"
}
}
}
}
}