| 123456789101112131415161718192021222324252627282930 |
- import type { AssertRule } from '~/types/interfaces'
- import { MaxAssert } from './MaxAssert'
- import { NullableAssert } from './NullableAssert'
- import { TypeAssert } from './TypeAssert'
- import { PositiveAssert } from './PositiveAssert'
- export class AssertRuleRegistry {
- private rules: AssertRule[] = []
- constructor() {
- this.rules = [new MaxAssert(), new NullableAssert(), new TypeAssert(), new PositiveAssert()]
- }
- getValidators(
- asserts: Record<string, unknown>,
- ): ((value: unknown) => true | string)[] {
- const allRules: ((value: unknown) => true | string)[] = []
- for (const key in asserts) {
- const criteria = asserts[key]
- const rule = this.rules.find((r) => r.supports(key))
- if (rule) {
- allRules.push(rule.createRule(criteria))
- }
- }
- return allRules
- }
- }
|