@lcap/asl
Version:
NetEase Application Specific Language
122 lines (121 loc) • 3.2 kB
TypeScript
declare type integer = number;
export interface BaseSchema {
type?: string;
format?: string;
name?: string;
description?: string;
required?: boolean;
nullable?: boolean;
}
export interface BooleanSchema extends BaseSchema {
type: 'boolean';
defaultValue?: boolean;
}
export interface IntegerSchema extends BaseSchema {
type: 'integer';
format?: 'byte' | 'short' | 'int' | 'long';
defaultValue?: integer;
minimum?: integer;
maximum?: integer;
}
export interface NumberSchema extends BaseSchema {
type: 'number';
format?: 'float' | 'double' | 'decimal';
defaultValue?: number;
minimum?: number;
maximum?: number;
}
export interface StringSchema extends BaseSchema {
type: 'string';
format?: 'byte' | 'binary' | 'blob' | 'uuid' | 'date' | 'time' | 'date-time' | 'enum' | 'password' | 'phone-number' | 'email';
defaultValue?: string;
minLength?: number;
maxLength?: number;
}
export interface ArraySchema extends BaseSchema {
type: 'array';
items: Schema;
}
export interface SetSchema extends BaseSchema {
type: 'set';
items: Schema;
}
export interface MapSchema extends BaseSchema {
type: 'map';
key: Schema;
value: Schema;
}
export interface ObjectSchema extends BaseSchema {
type: 'object';
propertyList: Array<Schema>;
}
export interface EnumItemSchema {
label: string;
value: string;
}
export interface EnumSchema extends BaseSchema {
type: 'enum';
enumItemList: Array<EnumItemSchema>;
}
/**
* 明确一下:有 $ref 时,没有 type;有 type 时,没有 $ref。两者互斥!
*/
export interface RefSchema extends BaseSchema {
$ref: string;
/**
* 当前这一版先用 isArray 来处理数组类型
*/
isArray?: boolean;
}
export interface BasicSchema extends BaseSchema {
type: 'boolean' | 'integer' | 'number' | 'string';
format?: string;
defaultValue?: any;
minimum?: integer;
maximum?: integer;
}
export interface BasicRefSchema extends BaseSchema {
type?: 'boolean' | 'integer' | 'number' | 'string' | 'array' | 'set' | 'map' | 'object' | 'enum' | string;
format?: string;
defaultValue?: any;
minimum?: integer;
maximum?: integer;
$ref?: string;
isArray?: boolean;
}
export interface Schema extends BaseSchema {
id?: string;
type?: 'boolean' | 'integer' | 'number' | 'string' | 'array' | 'set' | 'map' | 'object' | 'enum' | string;
format?: string;
defaultValue?: any;
minimum?: integer;
maximum?: integer;
items?: Schema;
propertyList?: Array<Schema>;
typeKey?: string;
typeName?: string;
typeParamValue?: Schema;
typeParams?: Array<Schema>;
typeInstantiation?: Schema;
typeParamName?: string;
/**
* @deprecated
* 在后续的迭代中去掉它
*/
properties?: {
[name: string]: Schema;
};
enumItemList?: Array<EnumItemSchema>;
relationship?: string;
/**
* @deprecated
* 在后续的迭代中去掉它
*/
enumItems?: {
[name: string]: string;
};
$ref?: string;
isArray?: boolean;
isLeaf?: boolean;
}
export default Schema;