UNPKG

@type-r/models

Version:

The serializable type system for JS and TypeScript

57 lines (56 loc) 2.99 kB
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; }