UNPKG

@travetto/schema

Version:

Data type registry for runtime validation, reflection and binding.

31 lines (26 loc) 812 B
import { DataUtil } from '../data.ts'; const InvalidSymbol = Symbol(); /** * Point Contract */ export class PointContract { /** * Validate we have an actual point */ static validateSchema(input: unknown): 'type' | undefined { const bound = this.bindSchema(input); return bound !== InvalidSymbol && bound && !isNaN(bound[0]) && !isNaN(bound[1]) ? undefined : 'type'; } /** * Convert to tuple of two numbers */ static bindSchema(input: unknown): [number, number] | typeof InvalidSymbol | undefined { if (Array.isArray(input) && input.length === 2) { const [a, b] = input.map(value => DataUtil.coerceType(value, Number, false)); return [a, b]; } else { return InvalidSymbol; } } } Object.defineProperty(PointContract, 'name', { value: 'Point' });