AssertRuleRegistry.ts 766 B

12345678910111213141516171819202122232425262728293031
  1. import type {AssertRule} from "~/types/interfaces";
  2. import { MaxAssert } from './MaxAssert';
  3. import { NullableAssert } from './NullableAssert';
  4. import { TypeAssert } from './TypeAssert';
  5. export class AssertRuleRegistry {
  6. private rules: AssertRule[] = [];
  7. constructor() {
  8. this.rules = [
  9. new MaxAssert(),
  10. new NullableAssert(),
  11. new TypeAssert(),
  12. ];
  13. }
  14. getValidators(asserts: Record<string, any>): ((value: any) => true | string)[] {
  15. const allRules: ((value: any) => true | string)[] = [];
  16. for (const key in asserts) {
  17. const criteria = asserts[key];
  18. const rule = this.rules.find(r => r.supports(key));
  19. if (rule) {
  20. allRules.push(rule.createRule(criteria));
  21. }
  22. }
  23. return allRules;
  24. }
  25. }