@v4fire/client
Version:
V4Fire client core library
79 lines (65 loc) • 1.6 kB
text/typescript
/*!
* V4Fire Client Core
* https://github.com/V4Fire/Client
*
* Released under the MIT license
* https://github.com/V4Fire/Client/blob/master/LICENSE
*/
import BaseError from 'core/error';
import { deprecated } from 'core/functools/deprecation';
import type iInput from 'super/i-input/i-input';
import type { ValidationError as InputValidationError } from 'super/i-input/i-input';
/**
* Class to wrap a validation error
*/
export default class ValidationError<D = undefined> extends BaseError {
/**
* Validation error type
*/
readonly type: string;
/**
* A component on which the error occurred
*/
readonly component: iInput;
/**
* Error details
*/
readonly details: InputValidationError<D>;
/**
* @deprecated
* @see [[ValidationError.component]]
*/
({renamedTo: 'component'})
get el(): iInput {
return this.component;
}
/**
* @deprecated
* @see [[ValidationError.details]]
*/
({renamedTo: 'details'})
get validator(): InputValidationError<D> {
return this.details;
}
/**
* @param component
* @param details - error details
*/
constructor(component: iInput, details: InputValidationError<D>) {
super();
this.type = details.error.name;
this.component = component;
this.details = details;
}
protected override format(): string {
const
parts = [this.details.msg];
const
head = `[${this.component.globalName ?? this.component.componentName}] [${this.type}]`,
body = parts.filter((p) => p != null).join(' ');
if (body.length > 0) {
return `${head} ${body}`;
}
return head;
}
}