vulcain-corejs
Version:
Vulcain micro-service framework
127 lines (126 loc) • 3.41 kB
TypeScript
import 'reflect-metadata';
import { RequestContext } from '../servers/requestContext';
export interface ModelOptions {
name?: string;
extends?: string;
description?: string;
bind?: ((data) => any) | boolean;
validate?: (entity, ctx?: RequestContext) => string;
storageName?: string;
hasSensibleData?: boolean;
}
export declare function Model(options?: ModelOptions): (target: Function) => void;
/**
* Property definition
*
* @export
* @interface PropertyOptions
*/
export interface PropertyOptions {
/**
* Base type
*
* @type {string} - a valid base type
* @memberOf PropertyOptions
*/
type: string;
/**
* List of values for 'enum' type
*
* @type {string[]} - An array of values
* @memberOf PropertyOptions
*/
values?: string[];
/**
* True is this property is required
*
* @type {boolean}
* @memberOf PropertyOptions
*/
required?: boolean;
/**
* Property description
*
* @type {string}
* @memberOf PropertyOptions
*/
description?: string;
/**
* Item type property of type 'ArrayOf'
*
* @type {string} - A valid type for all elements of the array
* @memberOf PropertyOptions
*/
item?: string;
/**
* Entity key - Only one property by entity can be define.
*
* @type {boolean}
* @memberOf PropertyOptions
*/
isKey?: boolean;
/**
* Used to create an unique index key - Supports multiple property keys
*
* @type {boolean}
* @memberOf PropertyOptions
*/
unique?: boolean;
/**
* List of validators - Do not use directly, use @Validator instead
*
* @type {Array<any>}
* @memberOf PropertyOptions
*/
validators?: Array<any>;
/**
* Function to transform an input value. If null or false, the value are ignored.
*
*
* @memberOf PropertyOptions
*/
bind?: ((val, entity) => any) | boolean;
/**
* Provide a way to check if a validation should be done.
* validation are skipped, if the function returns false.
*
* @memberOf PropertyOptions
*/
dependsOn?: (entity) => boolean;
/**
* Custom validation. This validation runs after all others validators
*
*
* @memberOf PropertyOptions
*/
validate?: (val, ctx?: RequestContext) => string;
/**
* Define if the property contains sensible data.
* Sensible datas are obfuscated and are removed from get request.
* This behavior only works with built-in provider and command.
*
* @type {boolean}
* @memberOf PropertyOptions
*/
sensible?: boolean;
/**
* Default value
*
* @memberOf PropertyOptions
*/
defaultValue?: any;
}
export declare function Property(info: PropertyOptions): (target: any, key: any) => void;
export declare function Validator(name: string, info?: any): (target: any, key: any) => void;
export interface ReferenceOptions {
item: string;
cardinality: 'one' | 'many';
required?: boolean;
description?: string;
bind?: ((val) => any) | boolean;
dependsOn?: (entity) => boolean;
validate?: (val, ctx?: RequestContext) => string;
validators?: Array<any>;
type?: string;
}
export declare function Reference(info: ReferenceOptions): (target: any, key: any) => void;