Comparing version 1.0.0-pre-50 to 1.0.0-pre-51
@@ -1,14 +0,29 @@ | ||
import type { DryvValidationResult, DryvValidationSession } from '../core'; | ||
import { DryvObjectValidator, DryvOptions, DryvServerErrors, DryvServerValidationResponse, DryvValidator } from '../core'; | ||
export declare class DryvFieldValidator<TModel extends object, TParameters = any> extends DryvValidator<TModel, TParameters, DryvObjectValidator> { | ||
private _initialValue; | ||
constructor(model: TModel, session: DryvValidationSession<TModel, TParameters>, parent: DryvObjectValidator, options: DryvOptions, field: keyof TModel); | ||
get value(): any; | ||
set value(value: any); | ||
refreshDirty(): void; | ||
revert(): void; | ||
commit(): void; | ||
childValidators(): DryvValidator[]; | ||
validate(): Promise<DryvValidationResult>; | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean; | ||
import type { DryvValidationResult, DryvValidationSession } from '../core' | ||
import { | ||
DryvObjectValidator, | ||
DryvOptions, | ||
DryvServerErrors, | ||
DryvServerValidationResponse, | ||
DryvValidator | ||
} from '../core' | ||
export declare class DryvFieldValidator< | ||
TModel extends object, | ||
TParameters = any | ||
> extends DryvValidator<TModel, TParameters, DryvObjectValidator> { | ||
private _initialValue | ||
constructor( | ||
model: TModel, | ||
session: DryvValidationSession<TModel, TParameters>, | ||
parent: DryvObjectValidator, | ||
options: DryvOptions, | ||
field: keyof TModel | ||
) | ||
get value(): any | ||
set value(value: any) | ||
refreshDirty(): void | ||
revert(): void | ||
commit(): void | ||
listChildValidators(): DryvValidator[] | ||
validate(): Promise<DryvValidationResult> | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean | ||
} |
@@ -1,23 +0,33 @@ | ||
import type { DryvValidationResult, DryvValidationSession } from '../core'; | ||
import { DryvOptions, DryvValidatableObject } from '../core'; | ||
import { DryvValidator } from '../core/DryvValidator'; | ||
export declare class DryvObjectValidator<TModel extends object = any> extends DryvValidator<TModel, TModel, DryvObjectValidator> { | ||
private _ignoreChildChanges; | ||
private _unregister?; | ||
readonly fields: { | ||
[field: string | symbol | number]: DryvValidator | null; | ||
}; | ||
proxy: TModel; | ||
readonly transparentProxy: DryvValidatableObject<TModel>; | ||
private _isReverting; | ||
constructor(model: TModel, session: DryvValidationSession<TModel, any>, parent: DryvObjectValidator | undefined, options: DryvOptions, field?: keyof TModel); | ||
private updateModel; | ||
get value(): TModel; | ||
set value(value: TModel); | ||
childValidators(): DryvValidator[]; | ||
revert(): void; | ||
validate(): Promise<DryvValidationResult>; | ||
destroy(): void; | ||
refreshDirty(): void; | ||
private createValidator; | ||
import type { DryvValidationResult, DryvValidationSession } from '../core' | ||
import { DryvOptions, DryvEditingObject } from '../core' | ||
import { DryvValidator } from '../core/DryvValidator' | ||
export declare class DryvObjectValidator<TModel extends object = any> extends DryvValidator< | ||
TModel, | ||
TModel, | ||
DryvObjectValidator | ||
> { | ||
private _ignoreChildChanges | ||
private _unregister? | ||
readonly fields: { | ||
[field: string | symbol | number]: DryvValidator | null | ||
} | ||
proxy: TModel | ||
readonly editingProxy: DryvEditingObject<TModel> | ||
private _isReverting | ||
constructor( | ||
model: TModel, | ||
session: DryvValidationSession<TModel, any>, | ||
parent: DryvObjectValidator | undefined, | ||
options: DryvOptions, | ||
field?: keyof TModel | ||
) | ||
private updateModel | ||
get value(): TModel | ||
set value(value: TModel) | ||
listChildValidators(): DryvValidator[] | ||
revert(): void | ||
validate(): Promise<DryvValidationResult> | ||
destroy(): void | ||
refreshDirty(): void | ||
private createValidator | ||
} |
@@ -1,4 +0,4 @@ | ||
import { DryvObjectValidator, DryvValidatableObject } from '../core' | ||
export declare function dryvValidatableObject<TModel extends object>( | ||
import { DryvObjectValidator, DryvEditingObject } from '../core' | ||
export declare function dryvEditingObject<TModel extends object>( | ||
target: DryvObjectValidator<TModel> | ||
): DryvValidatableObject<TModel> | ||
): DryvEditingObject<TModel> |
@@ -1,2 +0,4 @@ | ||
import { DryvObjectValidator, DryvValidatableObject } from '../core'; | ||
export declare function dryvValidatableObject<TModel extends object>(validator: DryvObjectValidator<TModel>): DryvValidatableObject<TModel>; | ||
import { DryvObjectValidator, DryvEditingObject } from '../core' | ||
export declare function dryvEditingObject<TModel extends object>( | ||
validator: DryvObjectValidator<TModel> | ||
): DryvEditingObject<TModel> |
@@ -1,2 +0,4 @@ | ||
import { DryvObjectValidator, DryvValidatableObject } from '../core'; | ||
export declare function dryvObjectValidatorTransparentProxy<TModel extends object>(target: DryvObjectValidator<TModel>): DryvValidatableObject<TModel>; | ||
import { DryvObjectValidator, DryvEditingObject } from '../core' | ||
export declare function dryvObjectValidatorEditingProxy<TModel extends object>( | ||
target: DryvObjectValidator<TModel> | ||
): DryvEditingObject<TModel> |
@@ -1,2 +0,4 @@ | ||
import { DryvObjectValidator, DryvValidatableObject } from '../core'; | ||
export declare function dryvValidatableObject<TModel extends object>(validator: DryvObjectValidator<TModel>): DryvValidatableObject<TModel>; | ||
import { DryvObjectValidator, DryvEditingObject } from '../core' | ||
export declare function dryvEditingObject<TModel extends object>( | ||
validator: DryvObjectValidator<TModel> | ||
): DryvEditingObject<TModel> |
@@ -1,2 +0,9 @@ | ||
import type { DryvValidationSession, DryvOptions, DryvValidatableInternal } from './typings'; | ||
export declare function dryvValidatableValue<TModel extends object = any, TValue = any>(field: keyof TModel | undefined, parent: DryvValidatableInternal | undefined, session: DryvValidationSession<TModel> | undefined, options: DryvOptions, getter: () => TValue, setter: (value: TValue) => void): DryvValidatableInternal<TModel, TValue>; | ||
import type { DryvValidationSession, DryvOptions, DryvValidationInternal } from './typings' | ||
export declare function dryvValidationValue<TModel extends object = any, TValue = any>( | ||
field: keyof TModel | undefined, | ||
parent: DryvValidationInternal | undefined, | ||
session: DryvValidationSession<TModel> | undefined, | ||
options: DryvOptions, | ||
getter: () => TValue, | ||
setter: (value: TValue) => void | ||
): DryvValidationInternal<TModel, TValue> |
@@ -1,43 +0,60 @@ | ||
import { DryvOptions, DryvServerErrors, DryvServerValidationResponse, DryvValidationResult, DryvValidationResultType, DryvValidationSession } from '../core'; | ||
export declare abstract class DryvValidator<TModel extends object = any, TValue = any, TParent extends DryvValidator = any> { | ||
model: TModel; | ||
protected session: DryvValidationSession<TModel>; | ||
protected options: DryvOptions; | ||
readonly field: keyof TModel | undefined; | ||
private _parent?; | ||
private _path?; | ||
get isDirty(): boolean; | ||
protected set isDirty(value: boolean); | ||
get text(): string | null; | ||
set text(value: string | null); | ||
get group(): string | null; | ||
set group(value: string | null); | ||
get required(): boolean | null; | ||
set required(value: boolean | null); | ||
get groupShown(): boolean; | ||
set groupShown(value: boolean); | ||
get type(): DryvValidationResultType | null; | ||
set type(value: DryvValidationResultType | null); | ||
private _rootModel; | ||
private _rootValidator; | ||
private _reactive; | ||
get rootModel(): any; | ||
get rootValidator(): DryvValidator<TModel, any, any>; | ||
protected constructor(model: TModel, session: DryvValidationSession<TModel>, parent: TParent | undefined, options: DryvOptions, field?: keyof TModel | undefined); | ||
abstract get value(): TValue; | ||
abstract set value(value: TValue); | ||
abstract validate(): Promise<DryvValidationResult>; | ||
abstract refreshDirty(): void; | ||
revert(): void; | ||
commit(): void; | ||
protected abstract childValidators(): DryvValidator[]; | ||
get hasError(): boolean; | ||
get hasWarning(): boolean; | ||
get isSuccess(): boolean; | ||
get path(): string; | ||
get parent(): TParent | undefined | null; | ||
set parent(parent: TParent | undefined | null); | ||
clear(): void; | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean; | ||
toJSON(): any; | ||
import { | ||
DryvOptions, | ||
DryvServerErrors, | ||
DryvServerValidationResponse, | ||
DryvValidationResult, | ||
DryvValidationResultType, | ||
DryvValidationSession | ||
} from '../core' | ||
export declare abstract class DryvValidator< | ||
TModel extends object = any, | ||
TValue = any, | ||
TParent extends DryvValidator = any | ||
> { | ||
model: TModel | ||
protected session: DryvValidationSession<TModel> | ||
protected options: DryvOptions | ||
readonly field: keyof TModel | undefined | ||
private _parent? | ||
private _path? | ||
get isDirty(): boolean | ||
protected set isDirty(value: boolean) | ||
get text(): string | null | ||
set text(value: string | null) | ||
get group(): string | null | ||
set group(value: string | null) | ||
get required(): boolean | null | ||
set required(value: boolean | null) | ||
get groupShown(): boolean | ||
set groupShown(value: boolean) | ||
get type(): DryvValidationResultType | null | ||
set type(value: DryvValidationResultType | null) | ||
private _validationModel | ||
private _rootValidator | ||
private _reactive | ||
get validationModel(): any | ||
get rootValidator(): DryvValidator<TModel, any, any> | ||
protected constructor( | ||
model: TModel, | ||
session: DryvValidationSession<TModel>, | ||
parent: TParent | undefined, | ||
options: DryvOptions, | ||
field?: keyof TModel | undefined | ||
) | ||
abstract get value(): TValue | ||
abstract set value(value: TValue) | ||
abstract validate(): Promise<DryvValidationResult> | ||
abstract refreshDirty(): void | ||
revert(): void | ||
commit(): void | ||
protected abstract listChildValidators(): DryvValidator[] | ||
get hasError(): boolean | ||
get hasWarning(): boolean | ||
get isSuccess(): boolean | ||
get path(): string | ||
get parent(): TParent | undefined | null | ||
set parent(parent: TParent | undefined | null) | ||
clear(): void | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean | ||
toJSON(): any | ||
} |
@@ -1,2 +0,4 @@ | ||
import type { DryvValidatable } from './typings'; | ||
export declare function isDryvValidatable<TModel extends object, TValue>(model: TValue | DryvValidatable<TModel, TValue>): model is DryvValidatable<TModel, TValue>; | ||
import type { DryvEditingField } from './typings' | ||
export declare function isDryvValidation<TModel extends object, TValue>( | ||
model: TValue | DryvEditingField<TModel, TValue> | ||
): model is DryvEditingField<TModel, TValue> |
@@ -1,2 +0,2 @@ | ||
import type { DryvValidatable } from '../core/typings'; | ||
export declare function isDryvValidatableValue(model: any): model is DryvValidatable; | ||
import type { DryvEditingField } from '../core/typings' | ||
export declare function isDryvValidationValue(model: any): model is DryvEditingField |
@@ -109,3 +109,3 @@ import { DryvValidator } from '../core/DryvValidator' | ||
} | ||
export type DryvValidatableField<TValue = object> = { | ||
export type DryvValidationField<TValue = object> = { | ||
path: string | ||
@@ -123,6 +123,6 @@ type: DryvValidationResultType | null | ||
} | ||
export type DryvValidatableObject<TModel extends object> = { | ||
export type DryvEditingObject<TModel extends object> = { | ||
[Property in keyof TModel]: TModel[Property] extends object | ||
? DryvValidatableObject<TModel[Property]> | ||
: DryvValidatableField<TModel[Property]> | ||
? DryvEditingObject<TModel[Property]> | ||
: DryvValidationField<TModel[Property]> | ||
} |
@@ -1,11 +0,20 @@ | ||
import { DryvValidator } from '../../core/v2/DryvValidator'; | ||
import type { DryvValidationResult, DryvValidationSession } from '../../core'; | ||
import { DryvOptions, DryvServerErrors, DryvServerValidationResponse } from '../../core'; | ||
export declare class DryvFieldValidator<TModel extends object, TParameters = object> extends DryvValidator<TModel, TParameters> { | ||
constructor(model: TModel, session: DryvValidationSession<TModel, TParameters>, parent: DryvValidator, options: DryvOptions, field: keyof TModel); | ||
get value(): any; | ||
set value(value: any); | ||
childValidators(): DryvValidator[]; | ||
validate(): Promise<DryvValidationResult>; | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean; | ||
import { DryvValidator } from '../../core/v2/DryvValidator' | ||
import type { DryvValidationResult, DryvValidationSession } from '../../core' | ||
import { DryvOptions, DryvServerErrors, DryvServerValidationResponse } from '../../core' | ||
export declare class DryvFieldValidator< | ||
TModel extends object, | ||
TParameters = object | ||
> extends DryvValidator<TModel, TParameters> { | ||
constructor( | ||
model: TModel, | ||
session: DryvValidationSession<TModel, TParameters>, | ||
parent: DryvValidator, | ||
options: DryvOptions, | ||
field: keyof TModel | ||
) | ||
get value(): any | ||
set value(value: any) | ||
listChildValidators(): DryvValidator[] | ||
validate(): Promise<DryvValidationResult> | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean | ||
} |
@@ -1,19 +0,28 @@ | ||
import type { DryvValidationResult, DryvValidationSession } from '../../core'; | ||
import { DryvOptions } from '../../core'; | ||
import { DryvValidator } from '../../core/v2/DryvValidator'; | ||
export declare class DryvObjectValidator<TModel extends object, TParameters = object> extends DryvValidator<TModel, TParameters> { | ||
readonly fields: { | ||
[field: string | symbol | number]: DryvValidator | null; | ||
}; | ||
private unregister?; | ||
proxy: TModel; | ||
readonly transparentProxy: DryvObjectValidator<TModel, TParameters>; | ||
constructor(model: TModel, session: DryvValidationSession<TModel, TParameters>, parent: DryvValidator | undefined, options: DryvOptions, field?: keyof TModel); | ||
private updateModel; | ||
get value(): any; | ||
set value(value: any); | ||
childValidators(): DryvValidator[]; | ||
validate(): Promise<DryvValidationResult>; | ||
destroy(): void; | ||
private createValidator; | ||
import type { DryvValidationResult, DryvValidationSession } from '../../core' | ||
import { DryvOptions } from '../../core' | ||
import { DryvValidator } from '../../core/v2/DryvValidator' | ||
export declare class DryvObjectValidator< | ||
TModel extends object, | ||
TParameters = object | ||
> extends DryvValidator<TModel, TParameters> { | ||
readonly fields: { | ||
[field: string | symbol | number]: DryvValidator | null | ||
} | ||
private unregister? | ||
proxy: TModel | ||
readonly editingProxy: DryvObjectValidator<TModel, TParameters> | ||
constructor( | ||
model: TModel, | ||
session: DryvValidationSession<TModel, TParameters>, | ||
parent: DryvValidator | undefined, | ||
options: DryvOptions, | ||
field?: keyof TModel | ||
) | ||
private updateModel | ||
get value(): any | ||
set value(value: any) | ||
listChildValidators(): DryvValidator[] | ||
validate(): Promise<DryvValidationResult> | ||
destroy(): void | ||
private createValidator | ||
} |
import { DryvObjectValidator } from '../../core' | ||
export declare function dryvValidatableObject<TModel extends object, TParameters = object>( | ||
export declare function dryvEditingObject<TModel extends object, TParameters = object>( | ||
target: DryvObjectValidator<TModel, TParameters> | ||
): DryvObjectValidator<TModel, TParameters> |
@@ -1,38 +0,51 @@ | ||
import { DryvOptions, DryvServerErrors, DryvServerValidationResponse, DryvValidationResult, DryvValidationResultType, DryvValidationSession } from '../../core'; | ||
import { | ||
DryvOptions, | ||
DryvServerErrors, | ||
DryvServerValidationResponse, | ||
DryvValidationResult, | ||
DryvValidationResultType, | ||
DryvValidationSession | ||
} from '../../core' | ||
export declare abstract class DryvValidator<TModel extends object = any, TParameters = object> { | ||
model: TModel; | ||
protected session: DryvValidationSession<TModel, TParameters>; | ||
protected options: DryvOptions; | ||
readonly field: keyof TModel | undefined; | ||
private _parent?; | ||
private _path; | ||
get text(): string | null; | ||
set text(value: string | null); | ||
get group(): string | null; | ||
set group(value: string | null); | ||
get required(): boolean | null; | ||
set required(value: boolean | null); | ||
get groupShown(): boolean; | ||
set groupShown(value: boolean); | ||
get type(): DryvValidationResultType | null; | ||
set type(value: DryvValidationResultType | null); | ||
private _rootModel; | ||
private _rootValidator; | ||
private _reactive; | ||
get rootModel(): TModel; | ||
get rootValidator(): DryvValidator<any, object>; | ||
protected constructor(model: TModel, session: DryvValidationSession<TModel, TParameters>, parent: DryvValidator | undefined, options: DryvOptions, field?: keyof TModel | undefined); | ||
abstract get value(): any; | ||
abstract set value(value: any); | ||
abstract validate(): Promise<DryvValidationResult>; | ||
abstract childValidators(): DryvValidator[]; | ||
get hasError(): boolean; | ||
get hasWarning(): boolean; | ||
get isSuccess(): boolean; | ||
get path(): string | null; | ||
get parent(): DryvValidator | undefined | null; | ||
set parent(parent: DryvValidator | undefined | null); | ||
clear(): void; | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean; | ||
toJSON(): any; | ||
model: TModel | ||
protected session: DryvValidationSession<TModel, TParameters> | ||
protected options: DryvOptions | ||
readonly field: keyof TModel | undefined | ||
private _parent? | ||
private _path | ||
get text(): string | null | ||
set text(value: string | null) | ||
get group(): string | null | ||
set group(value: string | null) | ||
get required(): boolean | null | ||
set required(value: boolean | null) | ||
get groupShown(): boolean | ||
set groupShown(value: boolean) | ||
get type(): DryvValidationResultType | null | ||
set type(value: DryvValidationResultType | null) | ||
private _validationModel | ||
private _rootValidator | ||
private _reactive | ||
get validationModel(): TModel | ||
get rootValidator(): DryvValidator<any, object> | ||
protected constructor( | ||
model: TModel, | ||
session: DryvValidationSession<TModel, TParameters>, | ||
parent: DryvValidator | undefined, | ||
options: DryvOptions, | ||
field?: keyof TModel | undefined | ||
) | ||
abstract get value(): any | ||
abstract set value(value: any) | ||
abstract validate(): Promise<DryvValidationResult> | ||
abstract listChildValidators(): DryvValidator[] | ||
get hasError(): boolean | ||
get hasWarning(): boolean | ||
get isSuccess(): boolean | ||
get path(): string | null | ||
get parent(): DryvValidator | undefined | null | ||
set parent(parent: DryvValidator | undefined | null) | ||
clear(): void | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean | ||
toJSON(): any | ||
} |
@@ -5,2 +5,2 @@ import type { DryvValidationSession } from './DryvValidationSession'; | ||
import { DryvComplexValidator } from './DryvComplexValidator'; | ||
export declare function createValidator<TModel extends object>(parent: DryvComplexValidator, value: any, model: TModel | undefined, field: keyof TModel | undefined, session: DryvValidationSession, options: DryvOptions): DryvValidator | null; | ||
export declare function createValidator(parent: DryvComplexValidator, value: any, model: object | undefined, field: string | symbol | number | undefined, session: DryvValidationSession, options: DryvOptions): DryvValidator | null; |
@@ -5,5 +5,2 @@ import { DryvArrayValidator } from './DryvArrayValidator'; | ||
export function createValidator(parent, value, model, field, session, options) { | ||
if (Array.isArray(value)) { | ||
return new DryvArrayValidator(value, session, parent, options, field); | ||
} | ||
const type = typeof value; | ||
@@ -13,7 +10,19 @@ if (type === 'function') { | ||
} | ||
const path = field | ||
? parent.path | ||
? `${parent.path}.${String(field)}` | ||
: String(field) | ||
: parent.path; | ||
const validators = session.ruleSet.validators[path]; | ||
const hasReferenceField = validators === null || validators === void 0 ? void 0 : validators.find((v) => !!v.referenceField); | ||
if (Array.isArray(value)) { | ||
return new DryvArrayValidator(value, session, parent, options, field); | ||
} | ||
if (value instanceof Object) { | ||
return new DryvObjectValidator(value, session, parent, options, field); | ||
return hasReferenceField | ||
? new DryvFieldValidator(model, session, parent, options, field, value) | ||
: new DryvObjectValidator(value, session, parent, options, field); | ||
} | ||
return new DryvFieldValidator(model, session, parent, options, field); | ||
return new DryvFieldValidator(model, session, parent, options, field, value); | ||
} | ||
//# sourceMappingURL=CreateValidator.js.map | ||
//# sourceMappingURL=createValidator.js.map |
@@ -1,2 +0,2 @@ | ||
import { DryvValidatableArray, DryvValidationResult } from './'; | ||
import { ChildValidators, DryvEditingArray, DryvValidationResult, Refs, DryvValidationArray } from './'; | ||
import { DryvOptions } from './'; | ||
@@ -6,7 +6,7 @@ import { type DryvValidator } from './DryvValidator'; | ||
import { DryvComplexValidator } from './DryvComplexValidator'; | ||
export declare class DryvArrayValidator<TModel extends object = any> extends DryvComplexValidator<any, DryvValidatableArray<TModel>> { | ||
export declare class DryvArrayValidator<TModel = any> extends DryvComplexValidator<TModel[], DryvEditingArray<TModel>, DryvValidationArray<TModel>> { | ||
private readonly _refs; | ||
private _unregisterArray?; | ||
private readonly _items; | ||
constructor(model: TModel[], session: DryvValidationSession, parent: DryvComplexValidator | undefined, options: DryvOptions, field?: keyof any); | ||
constructor(model: TModel[], session: DryvValidationSession, parent: DryvComplexValidator | undefined, options: DryvOptions, field?: any); | ||
protected onParentChanged(): void; | ||
@@ -17,3 +17,4 @@ private updateArray; | ||
set value(value: TModel[]); | ||
childValidators(): DryvValidator[]; | ||
get childValidators(): ChildValidators; | ||
listChildValidators(): DryvValidator[]; | ||
validate(): Promise<DryvValidationResult>; | ||
@@ -23,6 +24,8 @@ onDestroy(): void; | ||
private updateItemIndexes; | ||
get refs(): object | any[]; | ||
get refs(): Refs; | ||
setRef(validator: DryvValidator, value: object | any[]): void; | ||
removeRef(validator: DryvValidator): void; | ||
getChildValue(child: DryvValidator): any; | ||
setChildValue(child: DryvValidator, value: any): any; | ||
toJSON(): any; | ||
} |
@@ -10,4 +10,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
}; | ||
import { createValidator } from './'; | ||
import { dryvValidatableArray, observableArrayProxy } from './internal'; | ||
import { createValidator, DryvFieldValidator } from './'; | ||
import { dryvEditingArray, dryvValidationArray, observableArrayProxy } from './internal'; | ||
import { DryvComplexValidator } from './DryvComplexValidator'; | ||
@@ -19,7 +19,8 @@ export class DryvArrayValidator extends DryvComplexValidator { | ||
this._items = options.reactiveWrapper([]); | ||
this.transparentProxy = dryvValidatableArray(this); | ||
this.editingProxy = dryvEditingArray(this); | ||
this.validationProxy = dryvValidationArray(this); | ||
this.updateArray(model); | ||
} | ||
onParentChanged() { | ||
this.rootModel = null; | ||
this.validationModel = null; | ||
} | ||
@@ -101,5 +102,8 @@ updateArray(model) { | ||
} | ||
childValidators() { | ||
get childValidators() { | ||
return this._items; | ||
} | ||
listChildValidators() { | ||
return this._items; | ||
} | ||
validate() { | ||
@@ -116,7 +120,12 @@ return __awaiter(this, void 0, void 0, function* () { | ||
createValidator(item) { | ||
return createValidator(this, item, undefined, undefined, this.session, this.options); | ||
return createValidator(this, item, this.model, undefined, this.session, this.options); | ||
} | ||
updateItemIndexes() { | ||
for (let i = 0; i < this._items.length; i++) { | ||
this._items[i].index = i; | ||
const item = this._items[i]; | ||
item.index = i; | ||
if (item instanceof DryvFieldValidator) { | ||
this.setChildValue(item, item.innerValue); | ||
this.setRef(item, item.reference); | ||
} | ||
} | ||
@@ -137,2 +146,10 @@ } | ||
} | ||
getChildValue(child) { | ||
return child.index === undefined ? undefined : this.model[child.index]; | ||
} | ||
setChildValue(child, value) { | ||
if (child.index !== undefined) { | ||
this.model[child.index] = value; | ||
} | ||
} | ||
toJSON() { | ||
@@ -139,0 +156,0 @@ return Object.assign(Object.assign({}, super.toJSON()), { _items: undefined }); |
import type { DryvValidationSession } from './'; | ||
import { DryvOptions } from './'; | ||
import { DryvValidator } from './DryvValidator'; | ||
export declare abstract class DryvComplexValidator<TModel extends object = any, TTransparentProxy = any> extends DryvValidator<TModel, TModel, DryvComplexValidator> { | ||
export type Refs = { | ||
[field in string | number | symbol]: object | undefined; | ||
}; | ||
export declare abstract class DryvComplexValidator<TModel extends object = any, TEditingProxy = any, TValidationProxy = any> extends DryvValidator<TModel, TModel, DryvComplexValidator, TEditingProxy, TValidationProxy> { | ||
private _ignoreChildChanges; | ||
private _isReverting; | ||
private _transparentProxy?; | ||
protected constructor(model: TModel, session: DryvValidationSession<TModel>, parent: DryvComplexValidator | undefined, options: DryvOptions, field?: keyof TModel); | ||
abstract get refs(): object | any[]; | ||
get transparentProxy(): TTransparentProxy; | ||
protected set transparentProxy(value: TTransparentProxy); | ||
abstract get refs(): Refs; | ||
abstract setRef(validator: DryvValidator, value: object): void; | ||
abstract removeRef(validator: DryvValidator): void; | ||
abstract getChildValue(child: DryvValidator): any; | ||
abstract setChildValue(child: DryvValidator, value: any): any; | ||
protected get isReverting(): boolean; | ||
abstract setRef(validator: DryvValidator, value: object | any[]): void; | ||
abstract removeRef(validator: DryvValidator): void; | ||
revert(): void; | ||
@@ -16,0 +18,0 @@ refreshDirty(): void; |
@@ -8,8 +8,2 @@ import { DryvValidator } from './DryvValidator'; | ||
} | ||
get transparentProxy() { | ||
return this._transparentProxy; | ||
} | ||
set transparentProxy(value) { | ||
this._transparentProxy = value; | ||
} | ||
get isReverting() { | ||
@@ -33,3 +27,3 @@ return this._isReverting; | ||
const wasDirty = this.isDirty; | ||
this.isDirty = this.childValidators().some((f) => f === null || f === void 0 ? void 0 : f.isDirty); | ||
this.isDirty = this.listChildValidators().some((f) => f === null || f === void 0 ? void 0 : f.isDirty); | ||
if (this.isDirty !== wasDirty) { | ||
@@ -40,5 +34,5 @@ (_a = this.parent) === null || _a === void 0 ? void 0 : _a.refreshDirty(); | ||
toJSON() { | ||
return Object.assign(Object.assign({}, super.toJSON()), { _reference: undefined, _ignoreChildChanges: undefined, _isReverting: undefined, _transparentProxy: undefined }); | ||
return Object.assign(Object.assign({}, super.toJSON()), { _reference: undefined, _ignoreChildChanges: undefined, _isReverting: undefined, _editingProxy: undefined }); | ||
} | ||
} | ||
//# sourceMappingURL=DryvComplexValidator.js.map |
@@ -6,7 +6,7 @@ import type { DryvValidationSession } from './' | ||
TModel extends object = any, | ||
TTransparentProxy = any | ||
TEditingProxy = any | ||
> extends DryvValidator<TModel, TModel, DryvComplexValidator> { | ||
private _ignoreChildChanges | ||
private _isReverting | ||
private _transparentProxy? | ||
private _editingProxy? | ||
protected constructor( | ||
@@ -19,4 +19,4 @@ model: TModel, | ||
) | ||
get transparentProxy(): TTransparentProxy | ||
protected set transparentProxy(value: TTransparentProxy) | ||
get editingProxy(): TEditingProxy | ||
protected set editingProxy(value: TEditingProxy) | ||
protected get isReverting(): boolean | ||
@@ -23,0 +23,0 @@ revert(): void |
@@ -1,22 +0,23 @@ | ||
import type { DryvValidationResult, DryvValidationSession } from './'; | ||
import { DryvOptions, DryvServerErrors, DryvServerValidationResponse, DryvValidator } from './'; | ||
import { DryvComplexValidator } from './DryvComplexValidator'; | ||
export declare class DryvFieldValidator<TModel extends object, TParameters = any> extends DryvValidator<TModel, TParameters, DryvComplexValidator> { | ||
import { ChildValidators, DryvValidationResult, DryvValidationSession, DryvOptions, DryvServerErrors, DryvServerValidationResponse, DryvValidator, DryvComplexValidator, DryvEditingField, DryvValidationField } from './'; | ||
export declare class DryvFieldValidator<TModel extends object = any, TValue = any> extends DryvValidator<TModel, TValue, DryvComplexValidator, DryvEditingField<TModel>, DryvValidationField<TModel>> { | ||
private _initialValue; | ||
private _referenceField?; | ||
private _reference; | ||
constructor(model: TModel, session: DryvValidationSession, parent: DryvComplexValidator, options: DryvOptions, field: keyof TModel); | ||
private _innerValue; | ||
referenceField?: string; | ||
constructor(model: TModel, session: DryvValidationSession, parent: DryvComplexValidator, options: DryvOptions, field: keyof TModel, value: TValue); | ||
get innerValue(): any; | ||
get reference(): any; | ||
private set reference(value); | ||
get value(): any; | ||
set value(value: any); | ||
get value(): TValue; | ||
set value(value: TValue); | ||
refreshDirty(): void; | ||
revert(): void; | ||
commit(): void; | ||
childValidators(): DryvValidator[]; | ||
get childValidators(): ChildValidators; | ||
listChildValidators(): DryvValidator[]; | ||
validate(): Promise<DryvValidationResult>; | ||
protected onParentChanged(): void; | ||
setValidationResult(response: DryvServerValidationResponse | DryvServerErrors): boolean; | ||
toString(): any; | ||
toString(): TValue; | ||
toJSON(): any; | ||
} |
@@ -11,7 +11,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
import { DryvValidator } from './'; | ||
import { dryvEditingField } from './internal'; | ||
import { dryvValidationField } from './internal/dryvValidationField'; | ||
export class DryvFieldValidator extends DryvValidator { | ||
constructor(model, session, parent, options, field) { | ||
constructor(model, session, parent, options, field, value) { | ||
super(model, session, parent, options, field); | ||
this._initialValue = model[field]; | ||
this.value = value; | ||
this._initialValue = this.value; | ||
this.editingProxy = dryvEditingField(this); | ||
this.validationProxy = dryvValidationField(this); | ||
} | ||
get innerValue() { | ||
return this._innerValue; | ||
} | ||
get reference() { | ||
@@ -24,3 +32,4 @@ return this._reference; | ||
get value() { | ||
return this.model[this.field]; | ||
var _a; | ||
return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getChildValue(this); | ||
} | ||
@@ -30,23 +39,28 @@ set value(value) { | ||
const oldValue = this.value; | ||
if (oldValue === value) { | ||
if (oldValue === value || | ||
(this.referenceField && | ||
value !== undefined && | ||
value === this.reference && | ||
oldValue === value[this.referenceField])) { | ||
return; | ||
} | ||
if (parent && this.field && this._referenceField) { | ||
if (typeof value === 'object') { | ||
const reference = value; | ||
const id = reference[this._referenceField]; | ||
if (id !== undefined) { | ||
value = id; | ||
if (parent) { | ||
this.reference = reference; | ||
parent.setRef(this, reference); | ||
} | ||
} | ||
if (!this.referenceField) { | ||
parent === null || parent === void 0 ? void 0 : parent.setChildValue(this, value); | ||
return; | ||
} | ||
if (value && typeof value === 'object') { | ||
const reference = value; | ||
const id = reference[this.referenceField]; | ||
if (id !== undefined) { | ||
value = id; | ||
this.reference = reference; | ||
parent === null || parent === void 0 ? void 0 : parent.setRef(this, reference); | ||
} | ||
else { | ||
this.reference = undefined; | ||
parent.removeRef(this); | ||
} | ||
} | ||
this.model[this.field] = value; | ||
else { | ||
this.reference = undefined; | ||
parent === null || parent === void 0 ? void 0 : parent.removeRef(this); | ||
} | ||
this._innerValue = value; | ||
parent === null || parent === void 0 ? void 0 : parent.setChildValue(this, value); | ||
} | ||
@@ -71,3 +85,6 @@ refreshDirty() { | ||
} | ||
childValidators() { | ||
get childValidators() { | ||
return {}; | ||
} | ||
listChildValidators() { | ||
return []; | ||
@@ -77,3 +94,3 @@ } | ||
return __awaiter(this, void 0, void 0, function* () { | ||
return this.session.validateField(this, this.rootModel); | ||
return this.session.validateField(this, this.validationModel); | ||
}); | ||
@@ -83,3 +100,3 @@ } | ||
var _a; | ||
this._referenceField = (_a = this.rules.validators.find((v) => !!v.referenceField)) === null || _a === void 0 ? void 0 : _a.referenceField; | ||
this.referenceField = (_a = this.rules.validators.find((v) => !!v.referenceField)) === null || _a === void 0 ? void 0 : _a.referenceField; | ||
} | ||
@@ -106,5 +123,5 @@ setValidationResult(response) { | ||
toJSON() { | ||
return Object.assign(Object.assign({}, super.toJSON()), { _referenceField: undefined, _reference: undefined, reference: this.reference }); | ||
return Object.assign(Object.assign({}, super.toJSON()), { _referenceField: undefined, _reference: undefined, _innerValue: undefined, reference: this.reference }); | ||
} | ||
} | ||
//# sourceMappingURL=DryvFieldValidator.js.map |
@@ -1,6 +0,6 @@ | ||
import { DryvValidationResult, DryvValidationSession } from './'; | ||
import { DryvOptions, DryvValidatableObject } from './typings'; | ||
import { ChildValidators, DryvValidationObject, DryvValidationResult, DryvValidationSession, Refs } from './'; | ||
import { DryvOptions, DryvEditingObject } from './typings'; | ||
import { DryvValidator } from './DryvValidator'; | ||
import { DryvComplexValidator } from './DryvComplexValidator'; | ||
export declare class DryvObjectValidator<TModel extends object = any> extends DryvComplexValidator<TModel, DryvValidatableObject<TModel>> { | ||
export declare class DryvObjectValidator<TModel extends object = any> extends DryvComplexValidator<TModel, DryvEditingObject<TModel>, DryvValidationObject<TModel>> { | ||
private _unregister?; | ||
@@ -15,8 +15,11 @@ private readonly _refs; | ||
set value(value: TModel); | ||
childValidators(): DryvValidator[]; | ||
get childValidators(): ChildValidators; | ||
listChildValidators(): DryvValidator[]; | ||
validate(): Promise<DryvValidationResult>; | ||
get refs(): object | any[]; | ||
get refs(): Refs; | ||
setRef(validator: DryvValidator, value: object | any[]): void; | ||
removeRef(validator: DryvValidator): void; | ||
getChildValue(child: DryvValidator): any; | ||
setChildValue(child: DryvValidator, value: any): any; | ||
onDestroy(): void; | ||
} |
@@ -11,3 +11,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
import { createValidator } from './'; | ||
import { dryvValidatableObject, observableProxy } from './internal'; | ||
import { dryvEditingObject, dryvValidationObject, observableObjectProxy } from './internal'; | ||
import { DryvComplexValidator } from './DryvComplexValidator'; | ||
@@ -19,3 +19,4 @@ export class DryvObjectValidator extends DryvComplexValidator { | ||
this.fields = {}; | ||
this.transparentProxy = dryvValidatableObject(this); | ||
this.editingProxy = dryvEditingObject(this); | ||
this.validationProxy = dryvValidationObject(this); | ||
this.updateModel(model); | ||
@@ -28,3 +29,3 @@ } | ||
Object.values(this.fields).forEach((field) => field === null || field === void 0 ? void 0 : field.destroy()); | ||
const { proxy, register, unregister } = observableProxy(model, this); | ||
const { proxy, register, unregister } = observableObjectProxy(model); | ||
this.model = proxy; | ||
@@ -59,3 +60,6 @@ for (const field in model) { | ||
} | ||
childValidators() { | ||
get childValidators() { | ||
return this.fields; | ||
} | ||
listChildValidators() { | ||
return Object.values(this.fields).filter((f) => !!f); | ||
@@ -81,2 +85,10 @@ } | ||
} | ||
getChildValue(child) { | ||
return !child.field ? undefined : this.model[child.field]; | ||
} | ||
setChildValue(child, value) { | ||
if (child.field) { | ||
this.model[child.field] = value; | ||
} | ||
} | ||
onDestroy() { | ||
@@ -83,0 +95,0 @@ if (this._unregister) { |
@@ -1,12 +0,17 @@ | ||
import { DryvOptions, DryvValidationRuleSet, DryvValidationSession } from './types'; | ||
import { DryvOptions, DryvValidationRuleSet, DryvValidationSession } from './types' | ||
export declare class DryvProxyHandler<TModel extends object = any> implements ProxyHandler<TModel> { | ||
private model; | ||
private session; | ||
private ruleSet; | ||
private options; | ||
private readonly _validatables; | ||
constructor(model: TModel, session: DryvValidationSession, ruleSet: DryvValidationRuleSet, options: DryvOptions); | ||
get(target: TModel, p: string | symbol, receiver: any): any; | ||
set(target: TModel, p: string | symbol, newValue: any, receiver: any): boolean; | ||
private setValidatables; | ||
private model | ||
private session | ||
private ruleSet | ||
private options | ||
private readonly _validatables | ||
constructor( | ||
model: TModel, | ||
session: DryvValidationSession, | ||
ruleSet: DryvValidationRuleSet, | ||
options: DryvOptions | ||
) | ||
get(target: TModel, p: string | symbol, receiver: any): any | ||
set(target: TModel, p: string | symbol, newValue: any, receiver: any): boolean | ||
private setValidations | ||
} |
@@ -1,2 +0,4 @@ | ||
import { DryvObjectValidator, DryvValidatableObject } from './'; | ||
export declare function dryvValidatableObject<TModel extends object>(validator: DryvObjectValidator<TModel>): DryvValidatableObject<TModel>; | ||
import { DryvObjectValidator, DryvEditingObject } from './' | ||
export declare function dryvEditingObject<TModel extends object>( | ||
validator: DryvObjectValidator<TModel> | ||
): DryvEditingObject<TModel> |
@@ -33,3 +33,3 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
if (yield this.runDisablers(objectValidator.rootModel, objectValidator)) { | ||
if (yield this.runDisablers(objectValidator.validationModel, objectValidator)) { | ||
objectValidator.clear(); | ||
@@ -48,5 +48,4 @@ return { | ||
try { | ||
const childValidators = objectValidator.childValidators(); | ||
const newValidationChain = this.startValidationChain(); | ||
const fieldResults = yield Promise.all(childValidators.map((v) => __awaiter(this, void 0, void 0, function* () { | ||
const fieldResults = yield Promise.all(objectValidator.listChildValidators().map((v) => __awaiter(this, void 0, void 0, function* () { | ||
const result = yield v.validate(); | ||
@@ -53,0 +52,0 @@ return Object.assign(Object.assign({}, result), { path: v.path }); |
import { DryvOptions, DryvServerErrors, DryvServerValidationResponse, DryvValidationResult, DryvValidationResultType, DryvValidationRule, DryvValidationSession } from './'; | ||
export declare abstract class DryvValidator<TModel extends object = any, TValue = any, TParent extends DryvValidator = any> { | ||
model: TModel; | ||
export type ChildValidators = { | ||
[field: string | symbol]: DryvValidator | undefined | null; | ||
} & (DryvValidator | undefined | null)[]; | ||
export declare abstract class DryvValidator<TModel extends object = any, TValue = any, TParent extends DryvValidator = any, TEditingProxy = any, TValidationProxy = any> { | ||
protected session: DryvValidationSession<TModel>; | ||
@@ -9,3 +11,9 @@ protected options: DryvOptions; | ||
private _index?; | ||
private _editingProxy?; | ||
private _validationProxy?; | ||
private _rules; | ||
get editingProxy(): TEditingProxy; | ||
protected set editingProxy(value: TEditingProxy); | ||
get validationProxy(): TValidationProxy; | ||
protected set validationProxy(value: TValidationProxy); | ||
get rules(): { | ||
@@ -29,5 +37,6 @@ validators: DryvValidationRule<TModel>[]; | ||
set type(value: DryvValidationResultType | null); | ||
private _rootModel; | ||
private _validationModel; | ||
private _rootValidator; | ||
private _reactive; | ||
private readonly _reactive; | ||
private _model; | ||
protected constructor(model: TModel, session: DryvValidationSession<TModel>, parent: TParent | undefined, options: DryvOptions, field?: keyof TModel | undefined); | ||
@@ -38,5 +47,8 @@ abstract get value(): TValue; | ||
abstract refreshDirty(): void; | ||
get model(): TModel; | ||
set model(value: TModel); | ||
revert(): void; | ||
commit(): void; | ||
abstract childValidators(): DryvValidator[]; | ||
abstract get childValidators(): ChildValidators; | ||
abstract listChildValidators(): DryvValidator[]; | ||
get hasError(): boolean; | ||
@@ -49,5 +61,6 @@ get hasWarning(): boolean; | ||
private set uniquePath(value); | ||
get rootModel(): any; | ||
protected set rootModel(value: any); | ||
get rootValidator(): DryvValidator<TModel, any, any>; | ||
get validationModel(): any; | ||
protected set validationModel(value: any); | ||
private set rootValidator(value); | ||
get rootValidator(): DryvValidator; | ||
get parent(): TParent | undefined | null; | ||
@@ -54,0 +67,0 @@ set parent(parent: TParent | undefined | null); |
export class DryvValidator { | ||
get editingProxy() { | ||
return this._editingProxy; | ||
} | ||
set editingProxy(value) { | ||
this._editingProxy = value; | ||
} | ||
get validationProxy() { | ||
return this._validationProxy; | ||
} | ||
set validationProxy(value) { | ||
this._validationProxy = value; | ||
} | ||
get rules() { | ||
@@ -43,3 +55,5 @@ return this._rules; | ||
set groupShown(value) { | ||
this._reactive.groupShown = value; | ||
if (this._reactive) { | ||
this._reactive.groupShown = value; | ||
} | ||
} | ||
@@ -53,3 +67,2 @@ get type() { | ||
constructor(model, session, parent, options, field = undefined) { | ||
this.model = model; | ||
this.session = session; | ||
@@ -62,2 +75,3 @@ this.options = options; | ||
}; | ||
this._validationModel = null; | ||
this._rootValidator = this; | ||
@@ -74,4 +88,14 @@ this._reactive = options.reactiveWrapper({ | ||
}); | ||
this.parent = parent; | ||
this._model = model; | ||
this._parent = parent; | ||
this.updateHierarchy(); | ||
this.onParentChanged(); | ||
} | ||
get model() { | ||
return this._model; | ||
} | ||
set model(value) { | ||
this._model = value; | ||
this.updateHierarchy(true); | ||
} | ||
revert() { | ||
@@ -83,3 +107,3 @@ this.type = null; | ||
this.isDirty = false; | ||
for (const validator of this.childValidators()) { | ||
for (const validator of this.listChildValidators()) { | ||
validator === null || validator === void 0 ? void 0 : validator.revert(); | ||
@@ -94,3 +118,3 @@ } | ||
this.isDirty = false; | ||
for (const validator of this.childValidators()) { | ||
for (const validator of this.listChildValidators()) { | ||
validator === null || validator === void 0 ? void 0 : validator.commit(); | ||
@@ -122,8 +146,11 @@ } | ||
} | ||
get rootModel() { | ||
return this._rootModel; | ||
get validationModel() { | ||
return this._validationModel; | ||
} | ||
set rootModel(value) { | ||
this._rootModel = value; | ||
set validationModel(value) { | ||
this._validationModel = value; | ||
} | ||
set rootValidator(value) { | ||
this._rootValidator = value; | ||
} | ||
get rootValidator() { | ||
@@ -146,8 +173,8 @@ return this._rootValidator; | ||
if (parent) { | ||
this._rootModel = (_a = parent.rootModel) !== null && _a !== void 0 ? _a : this.model; | ||
this._rootValidator = parent.rootValidator; | ||
this.validationModel = (_a = parent.validationModel) !== null && _a !== void 0 ? _a : this.validationProxy; | ||
this.rootValidator = parent.rootValidator; | ||
} | ||
else { | ||
this._rootModel = this.model; | ||
this._rootValidator = this; | ||
this.validationModel = this.validationProxy; | ||
this.rootValidator = this; | ||
} | ||
@@ -163,3 +190,3 @@ const path = [parent === null || parent === void 0 ? void 0 : parent.path, this.field].filter((x) => !!x).join('.'); | ||
if (cascade) { | ||
this.childValidators().forEach((v) => v.updateHierarchy(true)); | ||
this.listChildValidators().forEach((v) => v.updateHierarchy(true)); | ||
} | ||
@@ -171,10 +198,10 @@ } | ||
this.group = null; | ||
this.childValidators().forEach((v) => v.clear()); | ||
this.listChildValidators().forEach((v) => v.clear()); | ||
} | ||
setValidationResult(response) { | ||
return this.childValidators().reduce((acc, v) => v.setValidationResult(response) && acc, true); | ||
return this.listChildValidators().reduce((acc, v) => v.setValidationResult(response) && acc, true); | ||
} | ||
destroy() { | ||
this.onDestroy(); | ||
this.childValidators().forEach((v) => v.destroy()); | ||
this.listChildValidators().forEach((v) => v.destroy()); | ||
} | ||
@@ -184,5 +211,5 @@ onDestroy() { | ||
toJSON() { | ||
return Object.assign(Object.assign({}, this), { value: this.value, path: this.path, text: this.text, hasError: this.hasError, hasWarning: this.hasWarning, isSuccess: this.isSuccess, uniquePath: this.uniquePath, _parent: undefined, _path: undefined, _rootModel: undefined, _rootValidator: undefined, _reactive: undefined, _initialValue: undefined, _ignoreChildChanges: undefined, _isReverting: undefined, _uniquePath: undefined, _rules: undefined, rootValidator: undefined, rootModel: undefined, parent: undefined, model: undefined, session: undefined, options: undefined }); | ||
return Object.assign(Object.assign({}, this), { value: this.value, path: this.path, text: this.text, hasError: this.hasError, hasWarning: this.hasWarning, isSuccess: this.isSuccess, uniquePath: this.uniquePath, _index: undefined, _parent: undefined, _path: undefined, _validationModel: undefined, _rootValidator: undefined, _reactive: undefined, _initialValue: undefined, _ignoreChildChanges: undefined, _isReverting: undefined, _uniquePath: undefined, _rules: undefined, _model: undefined, rootValidator: undefined, validationModel: undefined, parent: undefined, model: undefined, session: undefined, options: undefined }); | ||
} | ||
} | ||
//# sourceMappingURL=DryvValidator.js.map |
@@ -6,2 +6,4 @@ export * from './DryvValidationSession'; | ||
export * from './DryvObjectValidator'; | ||
export * from './DryvArrayValidator'; | ||
export * from './DryvComplexValidator'; | ||
export * from './DryvValidator'; | ||
@@ -11,2 +13,2 @@ export * from './defaultDryvOptions'; | ||
export * from './DryvValidationSession'; | ||
export * from './CreateValidator'; | ||
export * from './createValidator'; |
@@ -6,2 +6,4 @@ export * from './DryvValidationSession'; | ||
export * from './DryvObjectValidator'; | ||
export * from './DryvArrayValidator'; | ||
export * from './DryvComplexValidator'; | ||
export * from './DryvValidator'; | ||
@@ -11,3 +13,3 @@ export * from './defaultDryvOptions'; | ||
export * from './DryvValidationSession'; | ||
export * from './CreateValidator'; | ||
export * from './createValidator'; | ||
//# sourceMappingURL=index.js.map |
@@ -1,3 +0,2 @@ | ||
import { DryvValidatableArray } from '../typings'; | ||
import { DryvArrayValidator } from '../DryvArrayValidator'; | ||
export declare function dryvValidatableArray<TModel extends object>(validator: DryvArrayValidator<TModel>): DryvValidatableArray<TModel>; | ||
export declare function dryvValidationArray<TModel extends object>(validator: DryvArrayValidator<TModel>): DryvArrayValidator<TModel>; |
@@ -1,23 +0,5 @@ | ||
import { DryvComplexValidator } from '../DryvComplexValidator'; | ||
export function dryvValidatableArray(validator) { | ||
return new Proxy(validator.childValidators(), new DryvTransparentArrayProxyHandler(validator)); | ||
import { DryvValidationArrayProxyHandler } from './DryvValidationArrayProxyHandler'; | ||
export function dryvValidationArray(validator) { | ||
return new Proxy(validator, new DryvValidationArrayProxyHandler()); | ||
} | ||
class DryvTransparentArrayProxyHandler { | ||
constructor(validator) { | ||
this.validator = validator; | ||
} | ||
get(target, prop) { | ||
if (!/^\d+$/.test(String(prop))) { | ||
const maybeFunction = this.validator.model[String(prop)]; | ||
if (typeof maybeFunction === 'function') { | ||
return maybeFunction.bind(this.validator.model); | ||
} | ||
} | ||
const value = target[prop]; | ||
return value instanceof DryvComplexValidator ? value.transparentProxy : value; | ||
} | ||
apply(target, thisArg, argArray) { | ||
return target[thisArg].apply(target, argArray); | ||
} | ||
} | ||
//# sourceMappingURL=dryvValidatableArray.js.map |
@@ -1,2 +0,2 @@ | ||
import { DryvObjectValidator, DryvValidatableObject } from '../.'; | ||
export declare function dryvValidatableObject<TModel extends object>(validator: DryvObjectValidator<TModel>): DryvValidatableObject<TModel>; | ||
import { DryvObjectValidator } from '../DryvObjectValidator'; | ||
export declare function dryvValidationObject<TModel extends object>(validator: DryvObjectValidator<TModel>): DryvObjectValidator<TModel>; |
@@ -1,40 +0,5 @@ | ||
import { DryvObjectValidator, DryvValidator } from '../.'; | ||
import { DryvComplexValidator } from '../DryvComplexValidator'; | ||
export function dryvValidatableObject(validator) { | ||
return new Proxy(validator, new DryvTransparentProxyHandler()); | ||
import { DryvValidationObjectProxyHandler } from '../internal/DryvValidationObjectProxyHandler'; | ||
export function dryvValidationObject(validator) { | ||
return new Proxy(validator, new DryvValidationObjectProxyHandler()); | ||
} | ||
class DryvTransparentProxyHandler { | ||
ownKeys(target) { | ||
return target.model ? Reflect.ownKeys(target.model) : []; | ||
} | ||
get(target, prop) { | ||
const innerValue = target.fields[prop]; | ||
return innerValue instanceof DryvComplexValidator ? innerValue.transparentProxy : innerValue; | ||
} | ||
set(target, prop, value, receiver) { | ||
const validator = target.fields[prop]; | ||
if (!(validator instanceof DryvValidator)) { | ||
return Reflect.set(target.fields, prop, value, receiver); | ||
} | ||
validator.value = value; | ||
return true; | ||
} | ||
has(target, key) { | ||
return !!target.fields[key]; | ||
} | ||
getOwnPropertyDescriptor(target, key) { | ||
if (!target.fields) | ||
return undefined; | ||
const value = target.fields[key]; | ||
const decriptor = Reflect.getOwnPropertyDescriptor(target.fields, key); | ||
return value | ||
? { | ||
value: value instanceof DryvObjectValidator ? value.transparentProxy : value, | ||
writable: value instanceof DryvObjectValidator ? false : decriptor === null || decriptor === void 0 ? void 0 : decriptor.writable, | ||
enumerable: decriptor === null || decriptor === void 0 ? void 0 : decriptor.enumerable, | ||
configurable: decriptor === null || decriptor === void 0 ? void 0 : decriptor.configurable | ||
} | ||
: undefined; | ||
} | ||
} | ||
//# sourceMappingURL=dryvValidatableObject.js.map |
export * from './getMemberByPath'; | ||
export * from './annotateValidator'; | ||
export * from './observableProxy'; | ||
export * from './observableObjectProxy'; | ||
export * from './observableArrayProxy'; | ||
export * from './getValidatorByPath'; | ||
export * from './dryvValidatableObject'; | ||
export { dryvValidatableArray } from '../internal/dryvValidatableArray'; | ||
export * from './dryvEditingObject'; | ||
export * from './dryvEditingArray'; | ||
export * from './ObservableArrayProxyHandler'; | ||
export * from './ObservableObjectProxyHandler'; | ||
export { dryvEditingField } from '../internal/dryvEditingField'; | ||
export { dryvValidationArray } from '../internal/dryvValidationArray'; | ||
export { dryvValidationObject } from '../internal/dryvValidationObject'; |
export * from './getMemberByPath'; | ||
export * from './annotateValidator'; | ||
export * from './observableProxy'; | ||
export * from './observableObjectProxy'; | ||
export * from './observableArrayProxy'; | ||
export * from './getValidatorByPath'; | ||
export * from './dryvValidatableObject'; | ||
export { dryvValidatableArray } from '../internal/dryvValidatableArray'; | ||
export * from './dryvEditingObject'; | ||
export * from './dryvEditingArray'; | ||
export * from './ObservableArrayProxyHandler'; | ||
export * from './ObservableObjectProxyHandler'; | ||
export { dryvEditingField } from '../internal/dryvEditingField'; | ||
export { dryvValidationArray } from '../internal/dryvValidationArray'; | ||
export { dryvValidationObject } from '../internal/dryvValidationObject'; | ||
//# sourceMappingURL=index.js.map |
@@ -0,1 +1,2 @@ | ||
import { ObservableArrayProxyHandler } from '../internal/ObservableArrayProxyHandler'; | ||
export function observableArrayProxy(model) { | ||
@@ -10,71 +11,2 @@ const proxyHandler = new ObservableArrayProxyHandler(model); | ||
} | ||
class ObservableArrayProxyHandler { | ||
constructor(array) { | ||
this.array = array; | ||
this._eventHandlers = new Map(); | ||
this._nextId = 0; | ||
} | ||
set(target, prop, value, receiver) { | ||
const result = Reflect.set(target, prop, value, receiver); | ||
if (prop === 'length' && value === 0) { | ||
this.clear(); | ||
} | ||
return result; | ||
} | ||
get(target, prop, receiver) { | ||
var _a, _b; | ||
return prop === 'push' || | ||
prop === 'pop' || | ||
prop === 'shift' || | ||
prop === 'unshift' || | ||
prop === 'splice' | ||
? (_b = (_a = this[prop]) === null || _a === void 0 ? void 0 : _a.bind(this)) !== null && _b !== void 0 ? _b : Reflect.get(target, prop, receiver) | ||
: Reflect.get(target, prop, receiver); | ||
} | ||
register(eventHandler) { | ||
this._eventHandlers.set(++this._nextId, eventHandler); | ||
return this._nextId; | ||
} | ||
unregister(id) { | ||
this._eventHandlers.delete(id); | ||
} | ||
clear() { | ||
const array = this.array; | ||
const items = [...array]; | ||
array.splice(0, array.length); | ||
this.fire({ action: 'remove', oldValue: items }); | ||
} | ||
push(...items) { | ||
const result = this.array.push(...items); | ||
this.fire({ action: 'append', newValue: items }); | ||
return result; | ||
} | ||
pop() { | ||
const item = this.array.pop(); | ||
if (item !== undefined) { | ||
this.fire({ action: 'remove', oldValue: [item] }); | ||
} | ||
} | ||
shift() { | ||
const item = this.array.shift(); | ||
if (item !== undefined) { | ||
this.fire({ action: 'remove', oldValue: [item] }); | ||
} | ||
} | ||
unshift(...items) { | ||
const result = this.array.unshift(...items); | ||
this.fire({ action: 'insert', newValue: items }); | ||
return result; | ||
} | ||
splice(start, deleteCount, ...items) { | ||
const deletedItems = this.array.splice(start, deleteCount, ...items); | ||
this.fire({ action: 'replace', oldValue: deletedItems, newValue: items }); | ||
return deletedItems; | ||
} | ||
fire(event) { | ||
for (const eventHandler of this._eventHandlers.values()) { | ||
eventHandler(event); | ||
} | ||
} | ||
} | ||
//# sourceMappingURL=observableArrayProxy.js.map |
@@ -1,1 +0,1 @@ | ||
export declare function isDryvValidatableProxy(item: any): any; | ||
export declare function isDryvValidationProxy(item: any): any |
@@ -1,1 +0,1 @@ | ||
export declare function isDryvValidatableProxyHandler(item: any): any; | ||
export declare function isDryvValidationProxyHandler(item: any): any |
@@ -16,3 +16,3 @@ export type DryvValidationState = 'error' | 'warning' | 'success' | string | undefined | ||
} | ||
export interface DryvValidatable<TModel = any, TValue = any> { | ||
export interface DryvEditingField<TModel = any, TValue = any> { | ||
get required(): boolean | ||
@@ -27,4 +27,4 @@ get message(): string | undefined | ||
set value(value: TValue | undefined) | ||
get parent(): DryvValidatable | undefined | ||
set parent(value: DryvValidatable | undefined) | ||
get parent(): DryvEditingField | undefined | ||
set parent(value: DryvEditingField | undefined) | ||
get error(): boolean | ||
@@ -46,3 +46,3 @@ get warning(): boolean | ||
validateField<TModel, TValue>( | ||
field: DryvValidatable<TModel, TValue> | ||
field: DryvEditingField<TModel, TValue> | ||
): Promise<DryvFieldValidationResult> | ||
@@ -49,0 +49,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import { DryvValidationSession, DryvValidator } from './.'; | ||
import { DryvFieldValidator, DryvValidationSession, DryvValidator } from './.'; | ||
export type DryvValidateFunctionResult = DryvFieldValidationResult | string | boolean | null | undefined | Promise<DryvFieldValidationResult | string | null | undefined>; | ||
@@ -76,24 +76,18 @@ export interface DryvValidationRule<TModel extends object> { | ||
} | ||
export type DryvValidatableField<TValue = object> = { | ||
path: string; | ||
type: DryvValidationResultType | null; | ||
text: string | null; | ||
group: string | null; | ||
groupShown: boolean; | ||
success: boolean; | ||
hasErrors: boolean; | ||
hasWarnings: boolean; | ||
warningHash: string | undefined | null; | ||
value: TValue; | ||
validate(): Promise<DryvValidationResult>; | ||
export type DryvEditingField<TModel = any> = NonNullable<TModel> extends Array<infer TItem> ? DryvEditingArray<TItem> : NonNullable<TModel> extends object ? DryvEditingObject<NonNullable<TModel>> : DryvFieldValidator<NonNullable<TModel>>; | ||
export type DryvEditingArray<TModel = any> = Array<NonNullable<TModel>> & { | ||
[index: number]: DryvEditingField<TModel>; | ||
}; | ||
export type DryvValidatable<TModel> = NonNullable<TModel> extends Array<infer TItem> ? DryvValidatableArray<TItem> : NonNullable<TModel> extends object ? DryvValidatableObject<NonNullable<TModel>> : DryvValidatableField<NonNullable<TModel>>; | ||
export type DryvValidatableArray<TModel = any> = Array<NonNullable<TModel>> & { | ||
[index: number]: DryvValidatable<TModel>; | ||
export type DryvEditingObject<TModel extends object> = { | ||
[Property in keyof TModel]: DryvEditingField<TModel[Property]>; | ||
}; | ||
export type DryvValidatableObject<TModel extends object> = { | ||
[Property in keyof TModel]: DryvValidatable<TModel[Property]>; | ||
export type DryvValidationField<TModel = any> = NonNullable<TModel> extends Array<infer TItem> ? DryvValidationArray<TItem> : NonNullable<TModel> extends object ? DryvValidationObject<NonNullable<TModel>> : TModel; | ||
export type DryvValidationArray<TModel = any> = Array<NonNullable<TModel>> & { | ||
[index: number]: DryvValidationField<TModel>; | ||
}; | ||
export type DryvValidationObject<TModel extends object> = { | ||
[Property in keyof TModel]: DryvValidationField<TModel[Property]>; | ||
}; | ||
export type DryvRefsModel<TModel extends object = any> = TModel & { | ||
$dryv: DryvValidator<TModel>; | ||
}; |
@@ -1,40 +0,58 @@ | ||
import { DryvFieldValidationResult, DryvOptions, DryvServerErrors, DryvServerValidationResponse, DryvValidatable, DryvValidationResult, DryvValidationRuleSet, DryvValidationSession, DryvValidationState } from './types'; | ||
export declare class Validatable<TModel = any, TValue = any> implements DryvValidatable<TModel, TValue> { | ||
protected model: TModel; | ||
protected session: DryvValidationSession; | ||
private ruleSet; | ||
private options; | ||
private _parent; | ||
private _group; | ||
private _message; | ||
private _required; | ||
private _groupShown; | ||
private _state; | ||
private readonly _fieldKey; | ||
private reactive; | ||
constructor(fieldKey: keyof TModel, model: TModel, session: DryvValidationSession, ruleSet: DryvValidationRuleSet, options: DryvOptions); | ||
get required(): boolean; | ||
set required(value: boolean); | ||
get message(): string | undefined; | ||
private set message(value); | ||
get path(): string; | ||
get group(): string | undefined; | ||
set group(value: string | undefined); | ||
get groupShown(): boolean; | ||
set groupShown(value: boolean); | ||
get state(): DryvValidationState; | ||
private set state(value); | ||
get fieldKey(): keyof TModel; | ||
get value(): TValue; | ||
set value(value: TValue); | ||
get parent(): DryvValidatable | undefined; | ||
set parent(value: DryvValidatable | undefined); | ||
get error(): boolean; | ||
get warning(): boolean; | ||
get success(): boolean; | ||
validate(): Promise<DryvValidationResult>; | ||
reset(): void; | ||
setValidationResults(response: DryvServerValidationResponse | DryvServerErrors): boolean; | ||
protected setFieldResults(fieldResult: DryvFieldValidationResult): void; | ||
private parentUpdated; | ||
import { | ||
DryvFieldValidationResult, | ||
DryvOptions, | ||
DryvServerErrors, | ||
DryvServerValidationResponse, | ||
DryvEditingField, | ||
DryvValidationResult, | ||
DryvValidationRuleSet, | ||
DryvValidationSession, | ||
DryvValidationState | ||
} from './types' | ||
export declare class Validation<TModel = any, TValue = any> | ||
implements DryvEditingField<TModel, TValue> | ||
{ | ||
protected model: TModel | ||
protected session: DryvValidationSession | ||
private ruleSet | ||
private options | ||
private _parent | ||
private _group | ||
private _message | ||
private _required | ||
private _groupShown | ||
private _state | ||
private readonly _fieldKey | ||
private reactive | ||
constructor( | ||
fieldKey: keyof TModel, | ||
model: TModel, | ||
session: DryvValidationSession, | ||
ruleSet: DryvValidationRuleSet, | ||
options: DryvOptions | ||
) | ||
get required(): boolean | ||
set required(value: boolean) | ||
get message(): string | undefined | ||
private set message(value) | ||
get path(): string | ||
get group(): string | undefined | ||
set group(value: string | undefined) | ||
get groupShown(): boolean | ||
set groupShown(value: boolean) | ||
get state(): DryvValidationState | ||
private set state(value) | ||
get fieldKey(): keyof TModel | ||
get value(): TValue | ||
set value(value: TValue) | ||
get parent(): DryvEditingField | undefined | ||
set parent(value: DryvEditingField | undefined) | ||
get error(): boolean | ||
get warning(): boolean | ||
get success(): boolean | ||
validate(): Promise<DryvValidationResult> | ||
reset(): void | ||
setValidationResults(response: DryvServerValidationResponse | DryvServerErrors): boolean | ||
protected setFieldResults(fieldResult: DryvFieldValidationResult): void | ||
private parentUpdated | ||
} |
@@ -1,6 +0,20 @@ | ||
import { DryvOptions, DryvValidationResult, DryvValidationRuleSet, DryvValidationSession } from './types'; | ||
import { Validatable } from './Validatable'; | ||
export declare class ValidatableObject<TModel extends object = any, TValue extends object = any> extends Validatable<TModel, TValue> { | ||
constructor(field: keyof TModel, model: TModel, session: DryvValidationSession, ruleSet: DryvValidationRuleSet, options: DryvOptions); | ||
validate(): Promise<DryvValidationResult>; | ||
import { | ||
DryvOptions, | ||
DryvValidationResult, | ||
DryvValidationRuleSet, | ||
DryvValidationSession | ||
} from './types' | ||
import { Validation } from './Validation' | ||
export declare class ValidationObject< | ||
TModel extends object = any, | ||
TValue extends object = any | ||
> extends Validation<TModel, TValue> { | ||
constructor( | ||
field: keyof TModel, | ||
model: TModel, | ||
session: DryvValidationSession, | ||
ruleSet: DryvValidationRuleSet, | ||
options: DryvOptions | ||
) | ||
validate(): Promise<DryvValidationResult> | ||
} |
@@ -1,17 +0,25 @@ | ||
import { DryvOptions, DryvValidationRuleSet, DryvValidationSession } from './types'; | ||
export declare class ValidatableProxyHandler<TModel extends object = any> implements ProxyHandler<TModel> { | ||
private model; | ||
private session; | ||
private ruleSet; | ||
private options; | ||
private parent?; | ||
private readonly _validatables; | ||
private readonly _objectProxies; | ||
private readonly _arrayProxies; | ||
constructor(model: TModel, session: DryvValidationSession, ruleSet: DryvValidationRuleSet, options: DryvOptions, parent?: any); | ||
get(target: TModel, p: string | symbol, receiver: any): any; | ||
set(target: TModel, p: string | symbol, newValue: any, receiver: any): boolean; | ||
private transformValue; | ||
private createValidatable; | ||
private isFieldExcluded; | ||
import { DryvOptions, DryvValidationRuleSet, DryvValidationSession } from './types' | ||
export declare class ValidationProxyHandler<TModel extends object = any> | ||
implements ProxyHandler<TModel> | ||
{ | ||
private model | ||
private session | ||
private ruleSet | ||
private options | ||
private parent? | ||
private readonly _validatables | ||
private readonly _objectProxies | ||
private readonly _arrayProxies | ||
constructor( | ||
model: TModel, | ||
session: DryvValidationSession, | ||
ruleSet: DryvValidationRuleSet, | ||
options: DryvOptions, | ||
parent?: any | ||
) | ||
get(target: TModel, p: string | symbol, receiver: any): any | ||
set(target: TModel, p: string | symbol, newValue: any, receiver: any): boolean | ||
private transformValue | ||
private createValidation | ||
private isFieldExcluded | ||
} |
@@ -1,6 +0,20 @@ | ||
import { DryvOptions, DryvValidationResult, DryvValidationRuleSet, DryvValidationSession } from './types'; | ||
import { Validatable } from './Validatable'; | ||
export declare class ValidatableValue<TModel extends object = any, TValue = any> extends Validatable<TModel, TValue> { | ||
constructor(field: keyof TModel, model: TModel, session: DryvValidationSession, ruleSet: DryvValidationRuleSet, options: DryvOptions); | ||
validate(): Promise<DryvValidationResult>; | ||
import { | ||
DryvOptions, | ||
DryvValidationResult, | ||
DryvValidationRuleSet, | ||
DryvValidationSession | ||
} from './types' | ||
import { Validation } from './Validation' | ||
export declare class ValidationValue<TModel extends object = any, TValue = any> extends Validation< | ||
TModel, | ||
TValue | ||
> { | ||
constructor( | ||
field: keyof TModel, | ||
model: TModel, | ||
session: DryvValidationSession, | ||
ruleSet: DryvValidationRuleSet, | ||
options: DryvOptions | ||
) | ||
validate(): Promise<DryvValidationResult> | ||
} |
{ | ||
"name": "dryvjs", | ||
"version": "1.0.0-pre-50", | ||
"version": "1.0.0-pre-51", | ||
"main": "dist/index.js", | ||
@@ -5,0 +5,0 @@ "types": "dist/index.d.ts", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
456496
335
6727
3