@type-r/models
Version:
The serializable type system for JS and TypeScript
57 lines (56 loc) • 2.99 kB
TypeScript
import { IOEndpoint } from '../../io-tools';
import { LogLevel, Logger } from '@type-r/mixture';
import { TransactionOptions } from '../../transactions';
import { AttributesContainer, AttributeUpdatePipeline, ModelTransaction } from '../updates';
export declare type Transform = (this: AnyType, next: any, prev: any, record: AttributesContainer, options: TransactionOptions) => any;
export declare type ChangeHandler = (this: AnyType, next: any, prev: any, record: AttributesContainer, options: TransactionOptions) => void;
export interface AttributeOptions {
_metatype?: typeof AnyType;
validate?: (record: AttributesContainer, value: any, key: string) => any;
isRequired?: boolean;
changeEvents?: boolean;
endpoint?: IOEndpoint;
type?: Function;
value?: any;
hasCustomDefault?: boolean;
parse?: Parse;
toJSON?: AttributeToJSON;
getHooks?: GetHook[];
transforms?: Transform[];
changeHandlers?: ChangeHandler[];
_onChange?: ChangeAttrHandler;
}
export declare type Parse = (value: any, key?: string) => any;
export declare type GetHook = (value: any, key?: string) => any;
export declare type AttributeToJSON = (value: any, key?: string) => any;
export declare type AttributeParse = (value: any, key?: string) => any;
export declare type ChangeAttrHandler = ((value: any, attr?: string) => void) | string;
export declare class AnyType implements AttributeUpdatePipeline {
name: string;
static create: (options: AttributeOptions, name: string) => AnyType;
canBeUpdated(prev: any, next: any, options: TransactionOptions): any;
transform(next: any, prev: any, model: AttributesContainer, options: TransactionOptions): any;
convert(next: any, prev: any, model: AttributesContainer, options: TransactionOptions): any;
isChanged(a: any, b: any): boolean;
handleChange(next: any, prev: any, model: AttributesContainer, options: TransactionOptions): void;
create(): any;
clone(value: any, record: AttributesContainer): any;
dispose(record: AttributesContainer, value: any): void;
validate(record: AttributesContainer, value: any, key: string): any;
toJSON(value: any, key: any, options?: object): any;
isMutableType(): boolean;
createPropertyDescriptor(): PropertyDescriptor | void;
value: any;
static defaultValue: any;
type: Function;
initialize(name: string, options: TransactionOptions): void;
options: AttributeOptions;
doInit(value: any, record: AttributesContainer, options: TransactionOptions): any;
doUpdate(value: any, record: AttributesContainer, options: TransactionOptions, nested?: ModelTransaction[]): boolean;
propagateChanges: boolean;
protected _log(level: LogLevel, code: string, text: string, value: any, record: AttributesContainer, logger: Logger): void;
defaultValue(): any;
constructor(name: string, a_options: AttributeOptions);
getHook: (value: any, key: string) => any;
get: (value: any, key: string) => any;
}