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

352 lines
7.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$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
PropsSection:
type: object
required:
- props
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:
oneOf:
- type: string
- type: number
- type: boolean
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: {} # 暂未校验每个控件的props待控件入料后获取真实属性
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