PromucFlow_constructor/app/client/src/utils/ValidationFactory.ts

41 lines
1.1 KiB
TypeScript
Raw Normal View History

2019-11-19 12:44:58 +00:00
import { WidgetType } from "constants/WidgetConstants";
import WidgetFactory from "./WidgetFactory";
2019-11-22 13:12:39 +00:00
import {
ValidationResponse,
ValidationType,
Validator,
} from "../constants/WidgetValidation";
2019-11-19 12:44:58 +00:00
// TODO: need to be strict about what the key can be
export type WidgetPropertyValidationType = Record<string, ValidationType>;
class ValidationFactory {
static validationMap: Map<ValidationType, Validator> = new Map();
static registerValidator(
validationType: ValidationType,
validator: Validator,
) {
this.validationMap.set(validationType, validator);
}
static validateWidgetProperty(
widgetType: WidgetType,
property: string,
value: any,
2019-11-22 13:12:39 +00:00
): ValidationResponse {
2019-11-19 12:44:58 +00:00
const propertyValidationTypes = WidgetFactory.getWidgetPropertyValidationMap(
widgetType,
);
const validationType = propertyValidationTypes[property];
const validator = this.validationMap.get(validationType);
if (validator) {
2019-11-22 13:12:39 +00:00
return validator(value);
} else {
return { isValid: true, parsed: value };
2019-11-19 12:44:58 +00:00
}
}
}
export default ValidationFactory;